{"version":3,"file":"DebugRenderer.cjs","sources":["../../../src/core/debug/DebugRenderer.ts"],"sourcesContent":["import { BigPool, Container, Rectangle } from 'pixi.js';\nimport { type Layout } from '../Layout';\nimport { calculateRegions, type DebugRegions, DebugRegionType } from './calculateDebugRegions';\nimport { DebugNode, type DebugNodeRegion } from './DebugNode';\n\n/**\n * Main debug renderer for Yoga layout\n * Handles visualization of layout regions and flex properties\n */\nexport class DebugRenderer {\n    /** Container for all debug visuals */\n    public readonly holder = new Container();\n\n    /** Region data for each debug type */\n    private readonly regions: DebugRegions = new Map();\n\n    /** Color configuration for each region type */\n    private readonly colors: Record<DebugRegionType, string> = {\n        [DebugRegionType.Margin]: '#B68655',\n        [DebugRegionType.Padding]: '#BAC57F',\n        [DebugRegionType.Border]: '#E7C583',\n        [DebugRegionType.Content]: '#89B1BE',\n        [DebugRegionType.Flex]: '#6E28D9',\n    };\n\n    /** Global alpha value for all regions */\n    public alpha = 0.75;\n\n    constructor() {\n        // Initialize rectangles for all region types\n        Object.values(DebugRegionType).forEach((type) => {\n            this.regions.set(type, {\n                outer: new Rectangle(),\n                inner: new Rectangle(),\n            });\n        });\n\n        (this.holder as any).__devtoolIgnore = true;\n        (this.holder as any).__devtoolIgnoreChildren = true;\n        this.holder.eventMode = 'none';\n        this.holder.interactiveChildren = false;\n    }\n\n    /**\n     * Clean up previous render state\n     */\n    public reset(): void {\n        for (let i = this.holder.children.length - 1; i >= 0; i--) {\n            const child = this.holder.children[i] as DebugNode;\n\n            BigPool.return(child);\n        }\n    }\n\n    /**\n     * Render debug visuals for the given layout\n     */\n    public render(layout: Layout): void {\n        calculateRegions(layout, this.regions);\n        const regionData = Object.values(DebugRegionType).reduce(\n            (acc, type) => {\n                const region = this.regions.get(type);\n\n                if (!region) return acc;\n\n                const drawString = `debugDraw${type.charAt(0).toUpperCase()}${type.slice(1)}` as\n                    | 'debugDrawMargin'\n                    | 'debugDrawPadding'\n                    | 'debugDrawBorder'\n                    | 'debugDrawFlex'\n                    | 'debugDrawContent';\n\n                acc[type] = {\n                    ...region,\n                    color: this.colors[type],\n                    draw: layout._styles.custom[drawString] ?? true,\n                };\n\n                return acc;\n            },\n            {} as Record<DebugRegionType, DebugNodeRegion>,\n        );\n\n        const { left, top } = layout.computedLayout;\n        const pos = layout.target.getGlobalPosition();\n        const debugObject = BigPool.get(DebugNode, {\n            ...regionData,\n            target: { x: pos.x + left, y: pos.y + top },\n            alpha: this.alpha,\n            heat: {\n                invalidationCount: layout._modificationCount,\n                draw: layout._styles.custom.debugHeat !== false,\n            },\n            heatOnly: !layout._styles.custom.debug,\n        });\n\n        this.holder.addChildAt(debugObject, 0);\n    }\n\n    /**\n     * Clean up the debug renderer\n     */\n    public destroy(): void {\n        this.reset();\n        this.holder.destroy();\n        this.regions.clear();\n    }\n}\n"],"names":["Container","DebugRegionType","Rectangle","BigPool","calculateRegions","DebugNode"],"mappings":";;;;;;;;AASO,MAAM,cAAc;AAAA,EAmBvB,cAAc;AAjBE;AAAA,kCAAS,IAAIA,QAAAA,UAAU;AAGtB;AAAA,uDAA4B,IAAI;AAGhC;AAAA,kCAA0C;AAAA,MACvD,CAACC,sBAAAA,gBAAgB,MAAM,GAAG;AAAA,MAC1B,CAACA,sBAAAA,gBAAgB,OAAO,GAAG;AAAA,MAC3B,CAACA,sBAAAA,gBAAgB,MAAM,GAAG;AAAA,MAC1B,CAACA,sBAAAA,gBAAgB,OAAO,GAAG;AAAA,MAC3B,CAACA,sBAAAA,gBAAgB,IAAI,GAAG;AAAA,IAC5B;AAGO;AAAA,iCAAQ;AAIX,WAAO,OAAOA,sBAAAA,eAAe,EAAE,QAAQ,CAAC,SAAS;AACxC,WAAA,QAAQ,IAAI,MAAM;AAAA,QACnB,OAAO,IAAIC,QAAAA,UAAU;AAAA,QACrB,OAAO,IAAIA,QAAU,UAAA;AAAA,MAAA,CACxB;AAAA,IAAA,CACJ;AAEA,SAAK,OAAe,kBAAkB;AACtC,SAAK,OAAe,0BAA0B;AAC/C,SAAK,OAAO,YAAY;AACxB,SAAK,OAAO,sBAAsB;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA,EAM/B,QAAc;AACR,aAAA,IAAI,KAAK,OAAO,SAAS,SAAS,GAAG,KAAK,GAAG,KAAK;AACvD,YAAM,QAAQ,KAAK,OAAO,SAAS,CAAC;AAEpCC,cAAA,QAAQ,OAAO,KAAK;AAAA,IAAA;AAAA,EACxB;AAAA;AAAA;AAAA;AAAA,EAMG,OAAO,QAAsB;AACfC,2CAAA,QAAQ,KAAK,OAAO;AACrC,UAAM,aAAa,OAAO,OAAOH,sBAAAA,eAAe,EAAE;AAAA,MAC9C,CAAC,KAAK,SAAS;AACX,cAAM,SAAS,KAAK,QAAQ,IAAI,IAAI;AAEhC,YAAA,CAAC,OAAe,QAAA;AAEpB,cAAM,aAAa,YAAY,KAAK,OAAO,CAAC,EAAE,YAAY,CAAC,GAAG,KAAK,MAAM,CAAC,CAAC;AAO3E,YAAI,IAAI,IAAI;AAAA,UACR,GAAG;AAAA,UACH,OAAO,KAAK,OAAO,IAAI;AAAA,UACvB,MAAM,OAAO,QAAQ,OAAO,UAAU,KAAK;AAAA,QAC/C;AAEO,eAAA;AAAA,MACX;AAAA,MACA,CAAA;AAAA,IACJ;AAEA,UAAM,EAAE,MAAM,IAAI,IAAI,OAAO;AACvB,UAAA,MAAM,OAAO,OAAO,kBAAkB;AACtC,UAAA,cAAcE,QAAAA,QAAQ,IAAIE,qBAAW;AAAA,MACvC,GAAG;AAAA,MACH,QAAQ,EAAE,GAAG,IAAI,IAAI,MAAM,GAAG,IAAI,IAAI,IAAI;AAAA,MAC1C,OAAO,KAAK;AAAA,MACZ,MAAM;AAAA,QACF,mBAAmB,OAAO;AAAA,QAC1B,MAAM,OAAO,QAAQ,OAAO,cAAc;AAAA,MAC9C;AAAA,MACA,UAAU,CAAC,OAAO,QAAQ,OAAO;AAAA,IAAA,CACpC;AAEI,SAAA,OAAO,WAAW,aAAa,CAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA,EAMlC,UAAgB;AACnB,SAAK,MAAM;AACX,SAAK,OAAO,QAAQ;AACpB,SAAK,QAAQ,MAAM;AAAA,EAAA;AAE3B;;"}