{"version":3,"sources":["../../../../src/lib/AreLifecycle/AreLifecycle.component.ts"],"names":["scene"],"mappings":"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","file":"AreLifecycle.component.mjs","sourcesContent":["import { A_Caller, A_Component, A_Dependency, A_Feature, A_Inject, A_Scope, A_TYPES__Entity_Constructor, A_TYPES__EntityFeatures } from \"@adaas/a-concept\";\nimport { A_Frame } from \"@adaas/a-frame/core\";\nimport { AreScene } from \"@adaas/are/scene/AreScene.context\";\nimport { AreNode } from \"@adaas/are/node/AreNode.entity\";\nimport { AreNodeFeatures } from \"@adaas/are/node/AreNode.constants\";\nimport { A_Logger } from \"@adaas/a-utils/a-logger\";\nimport { AreFeatures } from \"@adaas/are/component/Are.constants\";\nimport { AreStore } from \"@adaas/are/store/AreStore.context\";\nimport { AreAttribute } from \"@adaas/are/attribute/AreAttribute.entity\";\nimport { AreAttributeFeatures } from \"@adaas/are/attribute/AreAttribute.constants\";\nimport { AreContext } from \"@adaas/are/component/Are.context\";\n\n\n\n\n@A_Frame.Define({\n    namespace: 'A-ARE',\n    description: 'Handles the lifecycle of the AreNode and related entities such as interpolations, directives, attributes, and so on. It provides lifecycle hooks for initialization, mounting, updating, and unmounting of the nodes, allowing to manage the state and behavior of the nodes throughout their lifecycle in a structured and consistent way.'\n})\nexport class AreLifecycle extends A_Component {\n\n\n\n    static Init<T extends AreNode>(node: A_TYPES__Entity_Constructor<T>)\n    static Init<T extends AreAttribute>(attribute: A_TYPES__Entity_Constructor<T>)\n    static Init<T extends AreNode | AreAttribute>(param1: A_TYPES__Entity_Constructor<T>) {\n        return (target: any, propertyKey: string, descriptor: PropertyDescriptor) => {\n            return A_Feature.Extend({\n                name: param1.prototype instanceof AreNode\n                    ? AreNodeFeatures.onInit\n                    : AreAttributeFeatures.Init,\n                scope: [param1],\n                override: ['init']\n            })(target, propertyKey, descriptor);\n        }\n    }\n\n\n    /**\n     *  Handles before init lifecycle of the AreNode\n     * \n     * @param node \n     * @param scope \n     * @param scene \n     * @param feature \n     * @param args \n     */\n    @A_Feature.Extend({\n        name: AreNodeFeatures.onBeforeInit,\n        before: /.*/,\n        scope: [AreNode]\n    })\n    beforeInit(\n        @A_Inject(A_Caller) node: AreNode,\n        @A_Inject(A_Scope) scope: A_Scope,\n        @A_Inject(AreScene) scene: AreScene,\n        @A_Inject(A_Feature) feature: A_Feature,\n        ...args: any[]\n    ) {\n        const logger = scope.resolve<A_Logger>(A_Logger);\n\n        logger?.debug(`[Init -> Before] Component Trigger for <${node.aseid.entity}>  with aseid :{${node.aseid.toString()}}`);\n\n        if (node.component)\n            feature.chain(node.component, AreFeatures.onBeforeInit, node.scope);\n    }\n    /**\n     * Initializes the AreNode and prepares it for mounting \n     * \n     * @param node \n     * @param scope \n     * @param syntax \n     * @param feature \n     * @param logger \n     * @param args \n     */\n    @A_Feature.Extend({\n        name: AreNodeFeatures.onInit,\n        scope: [AreNode]\n    })\n    init(\n        @A_Inject(A_Caller) node: AreNode,\n        @A_Inject(A_Scope) scope: A_Scope,\n        @A_Inject(AreContext) context: AreContext,\n        @A_Inject(A_Logger) logger?: A_Logger,\n        ...args: any[]\n    ) {\n        context.startPerformance('AreLifecycle.init');\n\n        const newNodeScene = new AreScene(node.aseid);\n\n        scope.register(newNodeScene);\n\n        /**\n         * If Node has a custom component Defined\n         */\n        if (node.component) {\n            const newNodeStore = new AreStore(node.aseid);\n            scope.register(newNodeStore);\n\n\n            newNodeStore.loadExtensions(node.component);\n        }\n\n        context.endPerformance('AreLifecycle.init');\n    }\n    /**\n     * Handles after init lifecycle of the AreNode\n     * \n     * @param node \n     * @param scope \n     * @param scene \n     * @param feature \n     * @param args \n     */\n    @A_Feature.Extend({\n        name: AreNodeFeatures.onAfterInit,\n        after: /.*/,\n        scope: [AreNode]\n    })\n    afterInit(\n        /**\n         * Node to be mounted\n         */\n        @A_Inject(A_Caller) node: AreNode,\n        @A_Inject(A_Scope) scope: A_Scope,\n        @A_Inject(AreScene) scene: AreScene,\n        @A_Inject(A_Feature) feature: A_Feature,\n        ...args: any[]\n    ) {\n        const logger = scope.resolve<A_Logger>(A_Logger);\n\n        logger?.debug(`[Init -> After] Component Trigger for <${node.aseid.entity}>  with aseid :{${node.aseid.toString()}}`);\n\n        if (node.component)\n            feature.chain(node.component, AreFeatures.onAfterInit, node.scope);\n    }\n\n\n    // -----------------------------------------------------------------------------------------\n    // ----------------------------Are-Node Mount Section----------------------------------------\n    // -----------------------------------------------------------------------------------------\n    /**\n     *  Handles before mount lifecycle of the AreNode\n     * \n     * @param node \n     * @param scope \n     * @param scene \n     * @param feature \n     * @param args \n     */\n    @A_Feature.Extend({\n        name: AreNodeFeatures.onBeforeMount,\n        before: /.*/,\n        scope: [AreNode]\n    })\n    beforeMount(\n        @A_Inject(A_Caller) node: AreNode,\n        @A_Inject(A_Scope) scope: A_Scope,\n        @A_Inject(AreScene) scene: AreScene,\n        @A_Inject(A_Feature) feature: A_Feature,\n        ...args: any[]\n    ) {\n        const logger = scope.resolve<A_Logger>(A_Logger);\n\n        logger?.debug(`[Mount -> Before] Component Trigger for <${node.aseid.entity}>  with aseid :{${node.aseid.toString()}}`);\n\n        if (node.component)\n            feature.chain(node.component, AreFeatures.onBeforeMount, node.scope);\n    }\n    /**\n     * Mount the AreNode into the Host\n     * \n     * @param scope \n     * @param node \n     * @param scene \n     * @param logger \n     */\n    @A_Feature.Extend({\n        name: AreNodeFeatures.onMount,\n        scope: [AreNode]\n    })\n    mount(\n        /**\n         * Node to be mounted\n         */\n        @A_Inject(A_Caller) node: AreNode,\n        /**\n         * Node Content\n         */\n        @A_Inject(AreScene) scene: AreScene,\n\n        @A_Inject(A_Logger) logger?: A_Logger,\n        ...args: any[]\n    ) {\n\n        logger?.debug(`[Mount] Component Trigger for <${node.aseid.entity}>  with aseid :{${node.aseid.toString()}}`);\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\n            const scene = current.scene;\n\n            if (scene.isInactive)\n                continue;\n\n            // do update work on current\n            /**\n             * 1. First we need to get all changes to be applied and reverted during render operation\n             */\n            const { toApply, toRevert } = scene.changes\n\n            /**\n             * 2. Then we need to revert all instructions from scene\n             */\n            for (const instruction of toRevert) {\n                try {\n                    instruction.revert();\n                    scene.unApply(instruction);\n                } catch (error) {\n                    instruction.apply();\n                    scene.apply(instruction);\n                }\n            }\n            /**\n             * 3. Finally we should apply everything that needs to be applied\n             */\n            for (const instruction of toApply) {\n                try {\n                    /**\n                     * 3.1. if everything went well then just simply apply and attach to state this instruction\n                     */\n                    instruction.apply();\n                    scene.apply(instruction);\n                } catch (error) {\n                    /**\n                     * 2.2. if any error happened we simply revert the instruction and remove it from the state\n                     */\n                    instruction.revert();\n                    scene.unApply(instruction);\n                }\n            }\n\n            queue.push(...current.children)\n        }\n\n        // /**\n        //  * 1. We should simply run and render node itself.\n        //  */\n        // node.interpret();\n        // /**\n        //  * 2. Then go through all children of the node and mount the.\n        //  */\n        // for (let i = 0; i < node.children.length; i++) {\n        //     const child = node.children[i];\n        //     child.mount();\n        // }\n    }\n\n    /**\n     * Handles after mount lifecycle of the AreNode\n     * \n     * @param node \n     * @param scope \n     * @param scene \n     * @param feature \n     * @param args \n     */\n    @A_Feature.Extend({\n        name: AreNodeFeatures.onAfterMount,\n        after: /.*/,\n        scope: [AreNode]\n    })\n    afterMount(\n        /**\n         * Node to be mounted\n         */\n        @A_Inject(A_Caller) node: AreNode,\n        @A_Inject(A_Scope) scope: A_Scope,\n        @A_Inject(AreScene) scene: AreScene,\n        @A_Inject(A_Feature) feature: A_Feature,\n        ...args: any[]\n    ) {\n        const logger = scope.resolve<A_Logger>(A_Logger);\n\n        logger?.debug(`[Mount -> After] Component Trigger for <${node.aseid.entity}>  with aseid :{${node.aseid.toString()}}`);\n\n        if (node.component)\n            feature.chain(node.component, AreFeatures.onAfterMount, node.scope);\n    }\n\n\n\n    // -----------------------------------------------------------------------------------------\n    // ----------------------------Are-Node Update Section----------------------------------------\n    // -----------------------------------------------------------------------------------------\n    /**\n     * Handles before update lifecycle of the AreNode\n     * \n     * @param node \n     * @param scope \n     * @param scene \n     * @param feature \n     * @param args \n     */\n    @A_Feature.Extend({\n        name: AreNodeFeatures.onUpdate,\n        before: /.*/,\n        scope: [AreNode]\n    })\n    beforeUpdate(\n        @A_Inject(A_Caller) node: AreNode,\n        @A_Inject(A_Scope) scope: A_Scope,\n        @A_Inject(AreScene) scene: AreScene,\n        @A_Inject(A_Feature) feature: A_Feature,\n        ...args: any[]\n    ) {\n        const logger = scope.resolve<A_Logger>(A_Logger);\n\n        logger?.debug(`[Update -> Before] Component Trigger for <${node.aseid.entity}>  with aseid :{${node.aseid.toString()}}`);\n\n        if (node.component)\n            feature.chain(node.component, AreFeatures.onBeforeUpdate, node.scope);\n    }\n    /**\n     * Updates the AreNode in the AreScene\n     * \n     * @param node \n     * @param scene \n     * @param args \n     */\n    @A_Feature.Extend({\n        name: AreNodeFeatures.onUpdate,\n        scope: [AreNode]\n    })\n    update(\n        /**\n         * Node to be updated\n         */\n        @A_Inject(A_Caller) node: AreNode,\n\n        @A_Inject(AreContext) context: AreContext,\n\n        @A_Inject(A_Logger) logger?: A_Logger,\n\n        ...args: any[]\n    ) {\n\n        logger?.debug(`[Update] Component Trigger for <${node.aseid.entity}>  with aseid :{${node.aseid.toString()}}`);\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\n            const scene = current.scene;\n\n            if (scene.isInactive)\n                continue;\n\n            // do update work on current\n            /**\n             * 1. First we need to get all changes to be applied and reverted during render operation\n             */\n            const { toApply, toRevert } = scene.changes\n\n            /**\n             * 2. Then we need to revert all instructions from scene\n             */\n            for (const instruction of toRevert) {\n                try {\n                    instruction.revert();\n                    scene.unApply(instruction);\n                } catch (error) {\n                    instruction.apply();\n                    scene.apply(instruction);\n                }\n            }\n            /**\n             * 3. Finally we should apply everything that needs to be applied\n             */\n            for (const instruction of toApply) {\n                try {\n                    /**\n                     * 3.1. if everything went well then just simply apply and attach to state this instruction\n                     */\n                    instruction.apply();\n                    scene.apply(instruction);\n                } catch (error) {\n                    /**\n                     * 2.2. if any error happened we simply revert the instruction and remove it from the state\n                     */\n                    instruction.revert();\n                    scene.unApply(instruction);\n                }\n            }\n\n            queue.push(...current.children)\n        }\n\n        // /**\n        //  * 4. Render everything that changed \n        //  */\n        // node.interpret();\n        // /**\n        //  * 5. And finally go though all children of the node and update the. \n        //  */\n        // for (let i = 0; i < node.children.length; i++) {\n        //     const child = node.children[i];\n        //     child.update();\n        // }\n\n\n    }\n    /**\n     * Handles after update lifecycle of the AreNode\n     * \n     * @param node \n     * @param scope \n     * @param scene \n     * @param feature \n     * @param args \n     */\n    @A_Feature.Extend({\n        name: AreNodeFeatures.onUpdate,\n        after: /.*/,\n        scope: [AreNode]\n    })\n    afterUpdate(\n        @A_Inject(A_Caller) node: AreNode,\n        @A_Inject(A_Scope) scope: A_Scope,\n        @A_Inject(AreScene) scene: AreScene,\n        @A_Inject(A_Feature) feature: A_Feature,\n        ...args: any[]\n    ) {\n        const logger = scope.resolve<A_Logger>(A_Logger);\n\n        logger?.debug(`[Update -> After] Component Trigger for <${node.aseid.entity}>  with aseid :{${node.aseid.toString()}}`);\n\n\n        if (node.component)\n            feature.chain(node.component, AreFeatures.onAfterUpdate, node.scope);\n    }\n\n    // -----------------------------------------------------------------------------------------\n    // -------------------------Are-Node Unmount Section----------------------------------------\n    // -----------------------------------------------------------------------------------------\n    /**\n     * Handles before unmount lifecycle of the AreNode\n     * \n     * @param node \n     * @param scope \n     * @param scene \n     * @param feature \n     * @param args \n     */\n    @A_Feature.Extend({\n        name: AreNodeFeatures.onBeforeUnmount,\n        before: /.*/,\n        scope: [AreNode]\n    })\n    beforeUnmount(\n        @A_Inject(A_Caller) node: AreNode,\n        @A_Inject(A_Scope) scope: A_Scope,\n        @A_Inject(AreScene) scene: AreScene,\n        @A_Inject(A_Feature) feature: A_Feature,\n        ...args: any[]\n    ) {\n        const logger = scope.resolve<A_Logger>(A_Logger);\n\n        logger?.debug(`[Unmount -> Before] Component Trigger for <${node.aseid.entity}>  with aseid :{${node.aseid.toString()}}`);\n\n        if (node.component)\n            feature.chain(node.component, AreFeatures.onBeforeUnmount, node.scope);\n    }\n\n    /**\n     * Unmounts the AreNode from the Host\n     * \n     * @param node \n     * @param scene \n     * @param args \n     *  \n     */\n    @A_Feature.Extend({\n        name: AreNodeFeatures.onUnmount,\n        scope: [AreNode]\n    })\n    unmount(\n        @A_Inject(A_Caller) node: AreNode,\n        @A_Inject(AreScene) scene: AreScene,\n\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\n            const scene = current.scene;\n\n            /**\n             * 1. We have to revert all instructions related to this node and remove them from the state \n             */\n            const applied = [...scene.applied];\n\n            for (let i = applied.length - 1; i >= 0; i--) {\n                const instruction = applied[i];\n\n                try {\n                    instruction.revert();\n                    scene.unApply(instruction);\n                } catch (error) {\n                    scene.unApply(instruction);\n                }\n            }\n\n            queue.push(...current.children)\n        }\n    }\n\n    /**\n     * Handles after unmount lifecycle of the AreNode\n     * \n     * @param node \n     * @param scope \n     * @param scene \n     * @param feature \n     * @param args \n     */\n    @A_Feature.Extend({\n        name: AreNodeFeatures.onAfterUnmount,\n        after: /.*/,\n        scope: [AreNode]\n    })\n    afterUnmount(\n        @A_Inject(A_Caller) node: AreNode,\n        @A_Inject(A_Scope) scope: A_Scope,\n        @A_Inject(AreScene) scene: AreScene,\n        @A_Inject(A_Feature) feature: A_Feature,\n        ...args: any[]\n    ) {\n        const logger = scope.resolve<A_Logger>(A_Logger);\n\n        logger?.debug(`[Unmount -> After] Component Trigger for <${node.aseid.entity}>  with aseid :{${node.aseid.toString()}}`);\n\n        if (node.component)\n            feature.chain(node.component, AreFeatures.onAfterUnmount, node.scope);\n    }\n\n\n    // -----------------------------------------------------------------------------------------\n    // -------------------------Are-Node Destroy Section----------------------------------------\n    // -----------------------------------------------------------------------------------------\n    /**\n     * Handles before destroy lifecycle of the AreNode\n     * \n     * @param node \n     * @param scope \n     * @param scene \n     * @param feature \n     * @param args \n     */\n    @A_Feature.Extend({\n        name: AreNodeFeatures.onBeforeDestroy,\n        before: /.*/,\n        scope: [AreNode]\n    })\n    beforeDestroy(\n        @A_Inject(A_Caller) node: AreNode,\n        @A_Inject(A_Scope) scope: A_Scope,\n        @A_Inject(A_Feature) feature: A_Feature,\n        ...args: any[]\n    ) {\n        const logger = scope.resolve<A_Logger>(A_Logger);\n\n        logger?.debug(`[Destroy -> Before] Component Trigger for <${node.aseid.entity}>  with aseid :{${node.aseid.toString()}}`);\n\n        if (node.component)\n            feature.chain(node.component, AreFeatures.onBeforeDestroy, node.scope);\n    }\n\n    /**\n     * Destroys the AreNode from the Host\n     * \n     * @param node \n     * @param scene \n     * @param args \n     *  \n     */\n    @A_Feature.Extend({\n        name: A_TYPES__EntityFeatures.DESTROY,\n        scope: [AreNode]\n    })\n    destroy(\n        @A_Inject(A_Caller) node: AreNode,\n        @A_Inject(AreScene) scene: AreScene,\n\n        ...args: any[]\n    ) {\n\n    }\n\n    /**\n     * Handles after destroy lifecycle of the AreNode\n     * \n     * @param node \n     * @param scope \n     * @param scene \n     * @param feature \n     * @param args \n     */\n    @A_Feature.Extend({\n        name: AreNodeFeatures.onAfterDestroy,\n        after: /.*/,\n        scope: [AreNode]\n    })\n    afterDestroy(\n        @A_Inject(A_Caller) node: AreNode,\n        @A_Inject(A_Scope) scope: A_Scope,\n        @A_Inject(A_Feature) feature: A_Feature,\n        ...args: any[]\n    ) {\n        const logger = scope.resolve<A_Logger>(A_Logger);\n\n        logger?.debug(`[Destroy -> After] Component Trigger for <${node.aseid.entity}>  with aseid :{${node.aseid.toString()}}`);\n\n        if (node.component)\n            feature.chain(node.component, AreFeatures.onAfterDestroy, node.scope);\n    }\n}"]}