{"version":3,"file":"index.mjs","sources":["../../../../../projects/components/widgets/input/base-form/src/base-form.component.ts","../../../../../projects/components/widgets/input/base-form/src/index.ts"],"sourcesContent":["import {AfterViewInit, Inject, Injectable, Injector, OnDestroy, Optional} from '@angular/core';\n\nimport {DataSource} from '@wm/core';\n\nimport {IWidgetConfig, StylableComponent, WidgetConfig} from '@wm/components/base';\nimport {has, set} from \"lodash-es\";\n\n@Injectable()\nexport abstract class BaseFormComponent extends StylableComponent implements AfterViewInit, OnDestroy {\n\n    private dataval;\n    private prevDatavalue;\n    protected binddatavalue: string;\n    private datavaluesource: any;\n\n    protected constructor(\n        protected inj: Injector,\n        @Inject(WidgetConfig) config: IWidgetConfig,\n        @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any,\n        initPromise?: Promise<any>\n    ) {\n        super(inj, config, explicitContext, initPromise);\n        this.binddatavalue = this.$element.attr('datavalue.bind');\n    }\n\n    set datavalue(datavalue) {\n        this.dataval = datavalue;\n    }\n\n    get datavalue() {\n        return this.dataval;\n    }\n\n    /**\n     * Responsible for updating the variable bound to the widget's datavalue property.\n     * @param value\n     */\n    updateBoundVariable(value) {\n        let binddatavalue = this.binddatavalue;\n\n        // return if the variable bound is not static.\n        if (this.datavaluesource && this.datavaluesource.execute(DataSource.Operation.IS_API_AWARE)) {\n            return;\n        } else if (this.datavaluesource && !this.datavaluesource.twoWayBinding) {\n                return;\n        }\n\n        // return if widget is bound.\n        if (!binddatavalue || binddatavalue.startsWith('Widgets.') || binddatavalue.startsWith('itemRef.currentItemWidgets')) {\n            return;\n        }\n\n        binddatavalue = binddatavalue.replace(/\\[\\$i\\]/g, '[0]');\n        binddatavalue = binddatavalue.replace(\n            /\\[(.*?)\\]/g,\n            (_match, key) => {\n                try {\n                    const value = eval(`this.viewParent.${key}`);\n                    if (typeof value === 'string' || typeof value === 'number')\n                     return `[${value}]`;\n                    else\n                     return '[0]'\n                } catch {\n                    return '[0]'; // fallback if evaluation fails\n                }\n            }\n        );\n\n\n        // In case of list widget context will be the listItem.\n        if (has(this.context, binddatavalue.split('.')[0]) && has(this.context, binddatavalue)) {\n            set(this.context, binddatavalue, value);\n        }\n        // Parent widget must update on custom widget datavalue change for bindings to work\n        else if (has(this.viewParent, binddatavalue) && this.viewParent.containerWidget?._isCustom) {\n            set(this.viewParent, binddatavalue, value);\n        } else if (has(this.viewParent, binddatavalue) && this.datavaluesource?.owner === \"Page\") {\n            set(this.viewParent, binddatavalue, value);\n        } else if (has(this.viewParent?.App, binddatavalue) && this.datavaluesource?.owner === \"App\") {\n            set(this.viewParent.App, binddatavalue, value);\n        }\n    }\n\n    protected invokeOnChange(value, $event?: Event) {\n        // invoke the event callback\n        if ($event) {\n            if (this.datavalue !== this.prevDatavalue) {\n                this.updateBoundVariable(value);\n                this.invokeEventCallback('change', {\n                    $event,\n                    newVal: value,\n                    oldVal: this.prevDatavalue\n                });\n            }\n        }\n        // update the previous value\n        this.prevDatavalue = value;\n    }\n\n    protected updatePrevDatavalue(val: any) {\n        this.prevDatavalue = val;\n    }\n    protected getPrevDataValue() {\n        return this.prevDatavalue;\n    }\n\n    private boundKeydownHandler: (event: JQuery.Event) => void;\n\n    ngAfterViewInit() {\n        super.ngAfterViewInit();\n\n// [WMS-18892]- stopping event propagation [for ArrowLeft, ArrowUp, ArrowRight, ArrowDown actions]  when form widgets or form is inside list widget\n        let parentElemList = $(this.nativeElement).parents();\n        if (parentElemList.closest('[wmList]').length) {\n            // MEMORY LEAK FIX: Store bound function reference for cleanup\n            this.boundKeydownHandler = function($event) {\n                if ($event.keyCode === 37 || $event.keyCode === 38 || $event.keyCode === 39 || $event.keyCode === 40) {\n                    $event.stopPropagation();\n                }\n            };\n            this.$element.keydown(this.boundKeydownHandler);\n        }\n    }\n\n    ngOnDestroy() {\n        // MEMORY LEAK FIX: Remove jQuery event listener\n        if (this.boundKeydownHandler) {\n            this.$element.off('keydown', this.boundKeydownHandler);\n            this.boundKeydownHandler = null;\n        }\n\n        // MEMORY LEAK FIX: Clear references\n        this.prevDatavalue = null;\n        this.datavaluesource = null;\n        this.binddatavalue = null;\n\n        super.ngOnDestroy();\n    }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}