{"version":3,"sources":["../../../../src/lib/AreComponent/Are.component.ts"],"names":[],"mappings":"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","file":"Are.component.mjs","sourcesContent":["import { A_Component, A_Context, A_Feature, A_Meta, A_TYPES__Ctor } from \"@adaas/a-concept\";\nimport { A_Frame } from \"@adaas/a-frame/core\";\nimport { A_Signal, A_SignalVector } from \"@adaas/a-utils/a-signal\";\nimport { AreSignals } from \"@adaas/are/signals/AreSignals.component\";\nimport { AreSignalsMeta } from \"@adaas/are/signals/AreSignals.meta\";\nimport { ArePropDefinition, AreConditionOptions } from \"./Are.types\";\nimport { AreMeta } from \"./Are.meta\";\nimport { AreFeatures, AreSignalFeatureKey } from \"./Are.constants\";\n\n\n@A_Frame.Define({\n    namespace: 'A-ARE',\n    description: 'Base component class for A-Concept Rendering Engine (ARE) components. It provides lifecycle decorators and methods for defining templates, styles, and data, facilitating the creation of dynamic and interactive UI components within the ARE framework.'\n})\n@A_Meta.Define(AreMeta)\nexport class Are extends A_Component {\n    /**\n     * Allows to apply Signal Vector as a condition for rendering the component. The component will be rendered only if at least one of the signals in the vector is active. This can be used to manage complex rendering logic and to optimize performance by ensuring that components are only rendered when necessary based on the defined conditions.\n     *\n     * By default a condition applies to EVERY root (outlet) in the\n     * application — this is the original, root-agnostic behavior. When an\n     * application renders multiple roots with different ids, an optional\n     * `root` target can be supplied to scope the condition to a single\n     * outlet: `@Are.Condition(vector, { root: 'my-outlet' })`. A root-scoped\n     * condition is only considered when matching for that exact root id and\n     * never leaks into other outlets.\n     *\n     * @param signals The signal vector (or array of signals) that activates the component.\n     * @param options Optional targeting. `root` scopes the condition to a single outlet id.\n     * @returns\n     */\n    static Condition(vector: A_SignalVector, options?: AreConditionOptions): <TTarget extends A_TYPES__Ctor<Are>>(target: TTarget) => TTarget\n    static Condition(vector: Array<A_Signal>, options?: AreConditionOptions): <TTarget extends A_TYPES__Ctor<Are>>(target: TTarget) => TTarget\n    static Condition(signals: Array<A_Signal> | A_SignalVector, options?: AreConditionOptions) {\n        return function <TTarget extends A_TYPES__Ctor<Are>>(\n            target: TTarget\n        ): TTarget {\n            // Store meta info on the target class itself for the Meta decorator to pick up\n            const componentMeta = A_Context.meta<AreMeta>(target);\n            const signalsMeta = A_Context.meta<AreSignalsMeta>(AreSignals);\n\n            let vector: A_SignalVector | undefined;\n\n            switch (true) {\n                case signals instanceof A_SignalVector:\n                    vector = signals;\n                    break;\n                case Array.isArray(signals):\n                    vector = new A_SignalVector(signals);\n                    break;\n                default:\n                    throw new Error('Invalid input for Are.Condition. Expected an array of A_Signal or an instance of A_SignalVector.');\n            }\n\n            if (vector) {\n                componentMeta.vector = vector;\n                signalsMeta.registerCondition(target, vector, options?.root);\n            }\n\n            return target;\n        };\n    }\n\n    //==================================================================================\n    //======================== LIFECYCLE DECORATORS ====================================\n    //==================================================================================\n    /**\n     * Allows to define a custom method for the component's template. This method should return a string representing the HTML template of the component. The template can include dynamic content and bindings that will be processed during rendering to create the final DOM structure for the component.\n     */\n    static get EventHandler() {\n        return (target: any, propertyKey: string, descriptor: PropertyDescriptor) => {\n            return A_Feature.Extend({\n                name: propertyKey,\n                scope: [target.constructor],\n            })(target, propertyKey, descriptor);\n        }\n    }\n    /**\n     * Allows to define a custom method for the component's template. This method should return a string representing the HTML template of the component. The template can include dynamic content and bindings that will be processed during rendering to create the final DOM structure for the component.\n     */\n    static get onBeforeInit() {\n        return (target: any, propertyKey: string, descriptor: PropertyDescriptor) => {\n            return A_Feature.Extend({\n                name: AreFeatures.onBeforeInit,\n                scope: [target.constructor],\n            })(target, propertyKey, descriptor);\n        }\n    }\n    /**\n     * Allows to define a custom method for the component's initialization logic. This method is called after the component is instantiated but before it is rendered, and can be used to set up any necessary state, perform data fetching, or execute any other logic that needs to happen before the component is rendered for the first time.\n     */\n    static get onAfterInit() {\n        return (target: any, propertyKey: string, descriptor: PropertyDescriptor) => {\n            return A_Feature.Extend({\n                name: AreFeatures.onAfterInit,\n                scope: [target.constructor],\n            })(target, propertyKey, descriptor);\n        }\n    }\n    /**\n     * Allows to define a custom method for the component's mounting logic. This method is called after the component has been rendered and added to the DOM, and can be used to perform any necessary setup or initialization that requires access to the DOM elements of the component. It can also be used to implement custom logic for handling specific features or behaviors of the component during the mounting process.\n     */\n    static get onBeforeMount() {\n        return (target: any, propertyKey: string, descriptor: PropertyDescriptor) => {\n            return A_Feature.Extend({\n                name: AreFeatures.onBeforeMount,\n                scope: [target.constructor],\n            })(target, propertyKey, descriptor);\n        }\n    }\n    /**\n     * Allows to define a custom method for the component's logic that should be executed after the component is mounted. This method is called after the component has been rendered and added to the DOM, and can be used to perform any necessary setup or initialization that requires access to the DOM elements of the component. It can also be used to implement custom logic for handling specific features or behaviors of the component during the post-mounting process.\n     */\n    static get onAfterMount() {\n        return (target: any, propertyKey: string, descriptor: PropertyDescriptor) => {\n            return A_Feature.Extend({\n                name: AreFeatures.onAfterMount,\n                scope: [target.constructor],\n            })(target, propertyKey, descriptor);\n        }\n    }\n    /**\n     * Allows to define a custom method for the component's unmounting logic. This method is called before the component is removed from the DOM, and can be used to perform any necessary cleanup or teardown, such as removing event listeners, canceling timers, or releasing any resources that were allocated during the component's lifecycle. It can also be used to implement custom logic for handling specific features or behaviors of the component during the unmounting process.\n     */\n    static get onBeforeUnmount() {\n        return (target: any, propertyKey: string, descriptor: PropertyDescriptor) => {\n            return A_Feature.Extend({\n                name: AreFeatures.onBeforeUnmount,\n                scope: [target.constructor],\n            })(target, propertyKey, descriptor);\n        }\n    }\n    /**\n     * Allows to define a custom method for the component's logic that should be executed after the component is unmounted. This method is called after the component has been removed from the DOM, and can be used to perform any necessary cleanup or teardown that needs to happen after the component is no longer in the DOM. It can also be used to implement custom logic for handling specific features or behaviors of the component during the post-unmounting process.\n     */\n    static get onAfterUnmount() {\n        return (target: any, propertyKey: string, descriptor: PropertyDescriptor) => {\n            return A_Feature.Extend({\n                name: AreFeatures.onAfterUnmount,\n                scope: [target.constructor],\n            })(target, propertyKey, descriptor);\n        }\n    }\n    /**\n     * Allows to define a custom method for the component's update logic. This method is called whenever the component's state changes and can be used to perform any necessary updates or side effects based on the new state. It can also be used to optimize performance by implementing custom logic for determining when the component should re-render based on specific state changes.\n     */\n    static get onBeforeUpdate() {\n        return (target: any, propertyKey: string, descriptor: PropertyDescriptor) => {\n            return A_Feature.Extend({\n                name: AreFeatures.onBeforeUpdate,\n                scope: [target.constructor],\n            })(target, propertyKey, descriptor);\n        }\n    }\n    /**\n     * Allows to define a custom method for the component's logic that should be executed after the component's state has been updated. This method is called after the component has re-rendered in response to state changes, and can be used to perform any necessary side effects or additional updates based on the new state. It can also be used to implement custom logic for handling specific features or behaviors of the component during the post-update process.\n     */\n    static get onAfterUpdate() {\n        return (target: any, propertyKey: string, descriptor: PropertyDescriptor) => {\n            return A_Feature.Extend({\n                name: AreFeatures.onAfterUpdate,\n                scope: [target.constructor],\n            })(target, propertyKey, descriptor);\n        }\n    }\n    /**\n     * Allows to define a custom method for the component's template. This method should return a string representing the HTML template of the component. The template can include dynamic content and bindings that will be processed during rendering to create the final DOM structure for the component.\n     */\n    static get Template() {\n        return (target: any, propertyKey: string, descriptor: PropertyDescriptor) => {\n            return A_Feature.Extend({\n                name: AreFeatures.onTemplate,\n                scope: [target.constructor],\n            })(target, propertyKey, descriptor);\n        }\n    }\n    /**\n     * Allows to define a custom method for the component's styles. This method should return a string representing the CSS styles of the component. The styles can include dynamic content and can be processed during rendering to apply the appropriate styles to the component's DOM elements.\n     */\n    static get Styles() {\n        return (target: any, propertyKey: string, descriptor: PropertyDescriptor) => {\n            return A_Feature.Extend({\n                name: AreFeatures.onStyles,\n                scope: [target.constructor],\n            })(target, propertyKey, descriptor);\n        }\n    }\n    /**\n     * Allows to define a custom method for the component's data. This method should return an object representing the initial state of the component. The data can include any properties that are needed to manage the component's state and can be reactive, allowing the component to re-render when the data changes.\n     */\n    static get Data() {\n        return (target: any, propertyKey: string, descriptor: PropertyDescriptor) => {\n            return A_Feature.Extend({\n                name: AreFeatures.onData,\n                scope: [target.constructor],\n            })(target, propertyKey, descriptor);\n        }\n    }\n    /**\n     * Allows to define a custom method for handling signals emitted by the component or other parts of the application.\n     *\n     * This decorator has two forms:\n     *\n     * 1. **Bare** — `@Are.Signal` — registers the method as a handler for the\n     *    generic `onSignal` feature. The handler is invoked for EVERY signal\n     *    vector dispatched to the component (this is the original, all-signals\n     *    behavior).\n     *\n     * 2. **Typed** — `@Are.Signal(MySignal)` — registers the method as a\n     *    handler that ONLY fires when the dispatched signal vector contains a\n     *    signal of the specified type. The matching signal instance is added\n     *    to the call scope so handlers can pull it directly via\n     *    `@A_Inject(MySignal) signal: MySignal` in addition to the usual\n     *    `@A_Inject(A_SignalVector) vector` access.\n     *\n     * Both forms can co-exist on the same component: the bare handler still\n     * fires on every vector, and any typed handler additionally fires once\n     * per matching signal in the same vector.\n     */\n    static Signal(target: any, propertyKey: string, descriptor: PropertyDescriptor): any;\n    static Signal<S extends A_Signal>(ctor: A_TYPES__Ctor<S>): MethodDecorator;\n    static Signal(...args: any[]): any {\n        // Bare usage: `@Are.Signal myMethod()` — invoked by the decorator\n        // runtime as (target, propertyKey, descriptor).\n        if (args.length >= 3 && typeof args[1] === 'string') {\n            const [target, propertyKey, descriptor] = args;\n            return A_Feature.Extend({\n                name: AreFeatures.onSignal,\n                scope: [target.constructor],\n            })(target, propertyKey, descriptor);\n        }\n\n        // Typed usage: `@Are.Signal(MySignal) myMethod()` — first invocation\n        // receives the signal constructor and must return a method decorator.\n        const ctor = args[0] as A_TYPES__Ctor<A_Signal> & { entity?: string; name: string };\n        const featureName = AreSignalFeatureKey(ctor);\n        return function (target: any, propertyKey: string, descriptor: PropertyDescriptor) {\n            return A_Feature.Extend({\n                name: featureName,\n                scope: [target.constructor],\n            })(target, propertyKey, descriptor);\n        };\n    }\n    // ==================================================================================\n    // ========================= COMPONENT PROPERTIES ===================================\n    // ==================================================================================\n    /**\n     * Props can be used to store any additional data or configuration for the component. They are not reactive by default but can be used in the component's methods and lifecycle hooks to manage state or pass information. Props can be defined as a simple object with key-value pairs, where keys are the prop names and values are the prop values. They can be accessed and modified within the component's methods to influence rendering or behavior based on the component's state or external inputs.\n     */\n    props: Record<string, ArePropDefinition> = {};\n\n\n    // ==================================================================================\n    // ========================= COMPONENT METHODS ======================================\n    // ==================================================================================\n    /**\n     * Returns the template string for the component\n     * \n     * Could be overridden to provide dynamic templates based on component state\n     * \n     * @returns \n     */\n    @Are.Template\n    template(\n        ...args: any[]\n    ): Promise<void> | void {\n\n    }\n\n    /**\n     * Returns the styles string for the component\n     *  \n     * Could be overridden to provide dynamic styles based on component state\n     * \n     * @returns \n     */\n    @Are.Styles\n    styles(\n        ...args: any[]\n    ): Promise<void> | void {\n\n    }\n\n    /**\n     * Returns the data object for the component\n     * \n     * Uses as the initial state of the component\n     * \n     * @returns \n     */\n    @Are.Data\n    data(\n        ...args: any[]\n    ): Promise<void> | void {\n\n    }\n}"]}