{"version":3,"sources":["../../../../src/lib/AreTransformer/AreTransformer.component.ts"],"names":[],"mappings":";;;;;;;AAaO,IAAM,cAAA,GAAN,cAA6B,WAAA,CAAY;AAAA,EAM5C,SAAA,CACwB,IAAA,EACD,KAAA,EACC,KAAA,EAAA,GACjB,IAAA,EACL;AAEE,IAAA,MAAM,KAAA,GAAQ,CAAC,IAAI,CAAA;AACnB,IAAA,OAAO,KAAA,CAAM,SAAS,CAAA,EAAG;AACrB,MAAA,MAAM,OAAA,GAAU,MAAM,KAAA,EAAM;AAQ5B,MAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,OAAA,CAAQ,UAAA,CAAW,QAAQ,CAAA,EAAA,EAAK;AAEhD,QAAA,MAAM,SAAA,GAAY,OAAA,CAAQ,UAAA,CAAW,CAAC,CAAA;AACtC,QAAA,SAAA,CAAU,SAAA,EAAU;AAAA,MACxB;AAEA,MAAA,KAAA,CAAM,IAAA,CAAK,GAAG,OAAA,CAAQ,QAAQ,CAAA;AAAA,IAClC;AAAA,EAEJ;AACJ;AA3BI,eAAA,CAAA;AAAA,EAJC,UAAU,MAAA,CAAO;AAAA,IACd,MAAM,eAAA,CAAgB,WAAA;AAAA,IACtB,KAAA,EAAO,CAAC,OAAO;AAAA,GAClB,CAAA;AAAA,EAEI,4BAAS,QAAQ,CAAA,CAAA;AAAA,EACjB,4BAAS,OAAO,CAAA,CAAA;AAAA,EAChB,4BAAS,QAAQ,CAAA;AAAA,CAAA,EATb,cAAA,CAMT,SAAA,EAAA,WAAA,EAAA,CAAA,CAAA;AANS,cAAA,GAAN,eAAA,CAAA;AAAA,EAJN,QAAQ,MAAA,CAAO;AAAA,IACZ,SAAA,EAAW,OAAA;AAAA,IACX,WAAA,EAAa;AAAA,GAChB;AAAA,CAAA,EACY,cAAA,CAAA","file":"AreTransformer.component.mjs","sourcesContent":["import { A_Caller, A_Component, A_Feature, A_FormatterHelper, A_Inject, A_Scope } from \"@adaas/a-concept\";\nimport { A_Frame } from \"@adaas/a-frame/core\";\nimport { A_Logger } from \"@adaas/a-utils/a-logger\";\nimport { AreNode } from \"@adaas/are/node/AreNode.entity\";\nimport { AreNodeFeatures } from \"@adaas/are/node/AreNode.constants\";\nimport { AreScene } from \"@adaas/are/scene/AreScene.context\";\n\n\n\n@A_Frame.Define({\n    namespace: 'A-ARE',\n    description: 'Reshapes the AreNode tree before compilation without changing its abstraction level. Responsible for structural rewrites that would complicate the compiler if left unhandled — converting $for nodes into AreGroupNode, extracting AreText and AreInterpolation from raw text, sorting directives via TopologicalSorter, and flagging static nodes.'\n})\nexport class AreTransformer extends A_Component {\n\n    @A_Feature.Extend({\n        name: AreNodeFeatures.onTransform,\n        scope: [AreNode]\n    })\n    transform(\n        @A_Inject(A_Caller) node: AreNode,\n        @A_Inject(A_Scope) scope: A_Scope,\n        @A_Inject(AreScene) scene: AreScene,\n        ...args: any[]\n    ) {\n         // walk entire tree inside one feature — no recursive feature calls\n        const queue = [node]\n        while (queue.length > 0) {\n            const current = queue.shift()!\n            // const scene = current.scene;\n            // if (scene.isInactive)\n            //     continue;\n\n            /**\n             * 2. Prepare Instructions for directives and add then to render plan.\n             */\n            for (let i = 0; i < current.attributes.length; i++) {\n\n                const attribute = current.attributes[i];\n                attribute.transform();\n            }\n            \n            queue.push(...current.children)\n        }\n\n    }\n}"]}