{"version":3,"sources":["../../../src/engine/AreHTML.transformer.ts"],"names":[],"mappings":";;;;;;;;AAYO,IAAM,kBAAA,GAAN,cAAiC,cAAA,CAAe;AAAA,EAMnD,2BAAA,CACwB,SAAA,EACA,KAAA,EACC,OAAA,EACD,WACjB,IAAA,EACL;AACE,IAAA,KAAA,CAAM,MAAM,SAAS,CAAA;AAQrB,IAAA,IAAI,UAAU,SAAA,EAAW;AACrB,MAAA,OAAA,CAAQ,MAAM,SAAA,CAAU,SAAA,EAAW,qBAAqB,SAAA,EAAW,SAAA,CAAU,MAAM,KAAK,CAAA;AAAA,IAC5F,CAAA,MAAO;AACH,MAAA,MAAA,EAAQ,OAAA,CAAQ,CAAA,qDAAA,EAAwD,SAAA,CAAU,IAAI,CAAA,qDAAA,EAAwD,kBAAkB,YAAA,CAAa,SAAA,CAAU,IAAI,CAAC,CAAA,2BAAA,CAA6B,CAAA;AAAA,IAC7N;AAEA,IAAA,KAAA,CAAM,QAAQ,SAAS,CAAA;AAAA,EAC3B;AACJ;AAvBI,eAAA,CAAA;AAAA,EAJC,UAAU,MAAA,CAAO;AAAA,IACd,MAAM,oBAAA,CAAqB,SAAA;AAAA,IAC3B,KAAA,EAAO,CAAC,qBAAqB;AAAA,GAChC,CAAA;AAAA,EAEI,4BAAS,QAAQ,CAAA,CAAA;AAAA,EACjB,4BAAS,QAAQ,CAAA,CAAA;AAAA,EACjB,4BAAS,SAAS,CAAA,CAAA;AAAA,EAClB,4BAAS,QAAQ,CAAA;AAAA,CAAA,EAVb,kBAAA,CAMT,SAAA,EAAA,6BAAA,EAAA,CAAA,CAAA;AANS,kBAAA,GAAN,eAAA,CAAA;AAAA,EAJN,QAAQ,MAAA,CAAO;AAAA,IACZ,SAAA,EAAW,YAAA;AAAA,IACX,WAAA,EAAa;AAAA,GAChB;AAAA,CAAA,EACY,kBAAA,CAAA","file":"AreHTML.transformer.mjs","sourcesContent":["import { A_Caller, A_Feature, A_FormatterHelper, A_Inject, A_Scope } from \"@adaas/a-concept\";\nimport { A_Logger } from \"@adaas/a-utils/a-logger\";\nimport { AreAttributeFeatures, AreTransformer, AreStore } from \"@adaas/are\";\nimport { AreDirectiveAttribute } from \"@adaas/are-html/attributes/AreDirective.attribute\";\nimport { AreDirectiveFeatures } from \"@adaas/are-html/directive/AreDirective.constants\";\nimport { A_Frame } from \"@adaas/a-frame/core\";\n\n\n@A_Frame.Define({\n    namespace: 'a-are-html',\n    description: 'HTML-specific transformer extending AreTransformer. Handles directive-attribute structural rewrites before compilation — sorting directives by declared priority and expanding compound directive expressions — so the compiler receives a clean, ordered AreHTMLNode tree ready for instruction emission.'\n})\nexport class AreHTMLTransformer extends AreTransformer {\n\n    @A_Feature.Extend({\n        name: AreAttributeFeatures.Transform,\n        scope: [AreDirectiveAttribute],\n    })\n    transformDirectiveAttribute(\n        @A_Inject(A_Caller) directive: AreDirectiveAttribute,\n        @A_Inject(AreStore) store: AreStore,\n        @A_Inject(A_Feature) feature: A_Feature,\n        @A_Inject(A_Logger) logger?: A_Logger,\n        ...args: any[]\n    ) {\n        store.watch(directive);\n\n        /**\n         * 3. If the attribute is a directive, then we should find a component that is responsible for\n         *    the directive compiling logic, and call it. \n         *    In case component is not found we just want to log a warning, \n         *    since the directive may be handled by some parent component or simply is a mistake in the template.\n         */\n        if (directive.component) {\n            feature.chain(directive.component, AreDirectiveFeatures.Transform, directive.owner.scope);\n        } else {\n            logger?.warning(`Directive handler component not found for directive: ${directive.name}. Make sure to create a component named \"AreDirective${A_FormatterHelper.toPascalCase(directive.name)}\" to handle this directive.`);\n        }\n\n        store.unwatch(directive);\n    }\n}"]}