{"version":3,"file":"propertiesPlugin.cjs","sources":["../../src/devtool/propertiesPlugin.ts"],"sourcesContent":["import { type LayoutStyles } from '../core/style/layoutStyles';\n\nimport type { Container } from 'pixi.js';\nimport type { Properties, PropertiesEntry, PropertiesExtension } from '@pixi/devtools';\n\nfunction updateNodeFlex(props: Partial<LayoutStyles>, node: Container) {\n    node.layout = props;\n}\n\nfunction createPropertyEntry(propBase: string, label: string, section: string): Properties {\n    return {\n        prop: `layoutStyle.${propBase}`,\n        entry: { type: 'text', label, section },\n    };\n}\n\nconst properties = () =>\n    [\n        {\n            prop: 'layoutStyle._computedBounds',\n            entry: {\n                label: 'Computed Bounds',\n                section: 'Layout',\n                options: {\n                    inputs: [\n                        { disabled: true, label: 'left' },\n                        { disabled: true, label: 'top' },\n                        { disabled: true, label: 'width' },\n                        { disabled: true, label: 'height' },\n                    ],\n                },\n                type: 'vectorX',\n            },\n        },\n        // {\n        //     prop: 'layoutStyle._computedOverrides',\n        //     entry: {\n        //         label: 'Computed Overrides',\n        //         section: 'Layout',\n        //         options: {\n        //             inputs: [\n        //                 { disabled: true, label: 'x' },\n        //                 { disabled: true, label: 'y' },\n        //                 { disabled: true, label: 'ox' },\n        //                 { disabled: true, label: 'oy' },\n        //                 { disabled: true, label: 'sx' },\n        //                 { disabled: true, label: 'sy' },\n        //                 { disabled: true, label: 'origX' },\n        //                 { disabled: true, label: 'origY' },\n        //             ],\n        //         },\n        //         type: 'vectorX',\n        //     },\n        // },\n        createPropertyEntry('width', 'Width', 'Layout'),\n        createPropertyEntry('height', 'Height', 'Layout'),\n        createPropertyEntry('minWidth', 'Min Width', 'Layout'),\n        createPropertyEntry('maxWidth', 'Max Width', 'Layout'),\n        createPropertyEntry('minHeight', 'Min Height', 'Layout'),\n        createPropertyEntry('maxHeight', 'Max Height', 'Layout'),\n        createPropertyEntry('aspectRatio', 'Aspect Ratio', 'Layout'),\n\n        createPropertyEntry('padding', 'Padding', 'Layout'),\n        createPropertyEntry('paddingRight', 'Padding Right', 'Layout'),\n        createPropertyEntry('paddingTop', 'Padding Top', 'Layout'),\n        createPropertyEntry('paddingBottom', 'Padding Bottom', 'Layout'),\n        createPropertyEntry('paddingLeft', 'Padding Left', 'Layout'),\n\n        createPropertyEntry('margin', 'Margin', 'Layout'),\n        createPropertyEntry('marginTop', 'Margin Top', 'Layout'),\n        createPropertyEntry('marginRight', 'Margin Right', 'Layout'),\n        createPropertyEntry('marginBottom', 'Margin Bottom', 'Layout'),\n        createPropertyEntry('marginLeft', 'Margin Left', 'Layout'),\n\n        {\n            prop: 'layoutStyle.position',\n            entry: {\n                label: 'Position',\n                section: 'Layout',\n                type: 'select',\n                options: { options: ['relative', 'absolute'] },\n            },\n        },\n        createPropertyEntry('top', 'Top', 'Layout'),\n        createPropertyEntry('right', 'Right', 'Layout'),\n        createPropertyEntry('bottom', 'Bottom', 'Layout'),\n        createPropertyEntry('left', 'Left', 'Layout'),\n\n        createPropertyEntry('border', 'Border Width', 'Layout'),\n        createPropertyEntry('borderTop', 'Border Top', 'Layout'),\n        createPropertyEntry('borderRight', 'Border Right', 'Layout'),\n        createPropertyEntry('borderBottom', 'Border Bottom', 'Layout'),\n        createPropertyEntry('borderLeft', 'Border Left', 'Layout'),\n        createPropertyEntry('borderRadius', 'Border Radius', 'Layout'),\n        {\n            prop: 'layoutStyle.borderColor',\n            entry: { label: 'Border Color', section: 'Layout', type: 'color' },\n        },\n\n        {\n            prop: 'layoutStyle.alignContent',\n            entry: {\n                label: 'alignContent',\n                section: 'Layout',\n                type: 'select',\n                options: {\n                    options: [\n                        'flex-start',\n                        'flex-end',\n                        'center',\n                        'space-between',\n                        'space-around',\n                        'stretch',\n                        'auto',\n                        'baseline',\n                    ],\n                },\n            },\n        },\n        {\n            prop: 'layoutStyle.alignItems',\n            entry: {\n                label: 'alignItems',\n                section: 'Layout',\n                type: 'select',\n                options: {\n                    options: [\n                        'flex-start',\n                        'flex-end',\n                        'center',\n                        'space-between',\n                        'space-around',\n                        'stretch',\n                        'auto',\n                        'baseline',\n                    ],\n                },\n            },\n        },\n        {\n            prop: 'layoutStyle.alignSelf',\n            entry: {\n                label: 'alignSelf',\n                section: 'Layout',\n                type: 'select',\n                options: {\n                    options: [\n                        'flex-start',\n                        'flex-end',\n                        'center',\n                        'space-between',\n                        'space-around',\n                        'stretch',\n                        'auto',\n                        'baseline',\n                    ],\n                },\n            },\n        },\n        {\n            prop: 'layoutStyle.justifyContent',\n            entry: {\n                label: 'justifyContent',\n                section: 'Layout',\n                type: 'select',\n                options: {\n                    options: ['flex-start', 'flex-end', 'center', 'space-between', 'space-around', 'space-evenly'],\n                },\n            },\n        },\n\n        {\n            prop: 'layoutStyle.flexDirection',\n            entry: {\n                label: 'Flex Direction',\n                section: 'Layout',\n                type: 'select',\n                options: { options: ['row', 'row-reverse', 'column', 'column-reverse'] },\n            },\n        },\n        createPropertyEntry('flex', 'flex', 'Layout'),\n        createPropertyEntry('flexBasis', 'Flex Basis', 'Layout'),\n        createPropertyEntry('flexGrow', 'Flex Grow', 'Layout'),\n        createPropertyEntry('flexShrink', 'Flex Shrink', 'Layout'),\n        {\n            prop: 'layoutStyle.wrap',\n            entry: {\n                label: 'Flex Wrap',\n                section: 'Layout',\n                type: 'select',\n                options: { options: ['no-wrap', 'wrap', 'wrap-reverse'] },\n            },\n        },\n\n        createPropertyEntry('gap', 'Gap', 'Layout'),\n        createPropertyEntry('rowGap', 'Row Gap', 'Layout'),\n        createPropertyEntry('columnGap', 'Column Gap', 'Layout'),\n\n        {\n            prop: 'layoutStyle.overflow',\n            entry: {\n                label: 'Overflow',\n                section: 'Layout',\n                type: 'select',\n                options: {\n                    options: ['visible', 'hidden', 'scroll'],\n                },\n            },\n        },\n        {\n            prop: 'layoutStyle.backgroundColor',\n            entry: { label: 'Background Color', section: 'Layout', type: 'color' },\n        },\n\n        createPropertyEntry('transformOrigin', 'Transform Origin', 'Layout'),\n\n        {\n            prop: 'layoutStyle.objectFit',\n            entry: {\n                label: 'objectFit',\n                section: 'Layout',\n                type: 'select',\n                options: {\n                    options: ['fill', 'contain', 'cover', 'none', 'scale-down'],\n                },\n            },\n        },\n        { prop: 'layoutStyle.objectPosition', entry: { label: 'objectPosition', section: 'Layout', type: 'text' } },\n\n        {\n            prop: 'layoutStyle.applySizeDirectly',\n            entry: { label: 'applySizeDirectly', section: 'Layout', type: 'boolean' },\n        },\n        { prop: 'layoutStyle.isLeaf', entry: { label: 'isLeaf', section: 'Layout', type: 'boolean' } },\n\n        { prop: 'layoutStyle.debug', entry: { label: 'Debug', section: 'Layout', type: 'boolean' } },\n        { prop: 'layoutStyle.debugHeat', entry: { label: 'Debug Heat', section: 'Layout', type: 'boolean' } },\n        {\n            prop: 'layoutStyle.debugDrawMargin',\n            entry: { label: 'Debug Draw Margin', section: 'Layout', type: 'boolean' },\n        },\n        {\n            prop: 'layoutStyle.debugDrawPadding',\n            entry: { label: 'Debug Draw Padding', section: 'Layout', type: 'boolean' },\n        },\n        {\n            prop: 'layoutStyle.debugDrawBorder',\n            entry: { label: 'Debug Draw Border', section: 'Layout', type: 'boolean' },\n        },\n        { prop: 'layoutStyle.debugDrawFlex', entry: { label: 'Debug Draw Flex', section: 'Layout', type: 'boolean' } },\n        {\n            prop: 'layoutStyle.debugDrawContent',\n            entry: { label: 'Debug Draw Content', section: 'Layout', type: 'boolean' },\n        },\n\n        {\n            prop: 'layoutStyle._isDirty',\n            entry: { label: 'Is Dirty', section: 'Layout', type: 'boolean', options: { disabled: true } },\n        },\n        {\n            prop: 'layoutStyle._modificationCount',\n            entry: { label: 'Modification Count', section: 'Layout', type: 'number', options: { disabled: true } },\n        },\n        {\n            prop: 'layoutStyle.hasParent',\n            entry: { label: 'Has Parent', section: 'Layout', type: 'boolean', options: { disabled: true } },\n        },\n    ] as Properties[];\n\nexport const propertiesPlugin: PropertiesExtension = {\n    extension: {\n        name: 'layout-scene-properties',\n        type: 'sceneProperties',\n        priority: 2,\n    },\n    testNode(container: Container): boolean {\n        return !!container.layout;\n    },\n    testProp(prop: string): boolean {\n        return prop.startsWith('layoutStyle.');\n    },\n    setProperty(container: Container, prop: string, value: any): void {\n        const flexProp = prop.replace('layoutStyle.', '');\n\n        updateNodeFlex({ [flexProp]: value }, container);\n    },\n    getProperties(container: Container): PropertiesEntry[] {\n        const activeProps = properties().reduce((result, property) => {\n            const _flex = container.layout!.style;\n            const flexProp = property.prop.replace('layoutStyle.', '');\n            const propertyClone = { ...property };\n\n            let value: any = _flex[flexProp as keyof typeof _flex];\n\n            if (flexProp === '_computedBounds') {\n                const { left, top, width, height } = container.layout!._computedLayout;\n\n                value = [left, top, width, height];\n            } else if (flexProp === '_computedOverrides') {\n                const { x, y, offsetX, offsetY, scaleX, scaleY, originX, originY } =\n                    container.layout!._computedPixiLayout;\n\n                value = [x, y, offsetX, offsetY, scaleX, scaleY, originX, originY];\n            } else if (flexProp === '_isDirty') {\n                value = container.layout!._isDirty;\n            } else if (flexProp === 'hasParent') {\n                value = container.layout!.hasParent;\n            } else if (flexProp === '_modificationCount') {\n                value = container.layout!._modificationCount;\n            }\n\n            result.push({ ...propertyClone, value });\n\n            return result;\n        }, [] as PropertiesEntry[]);\n\n        return activeProps;\n    },\n};\n"],"names":[],"mappings":"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"}