{"version":3,"file":"fundamental-ngx-core-mobile-mode.mjs","sources":["../../../../libs/core/mobile-mode/mobile-mode.class.ts","../../../../libs/core/mobile-mode/fundamental-ngx-core-mobile-mode.ts"],"sourcesContent":["import { DestroyRef, Directive, ElementRef, InjectionToken, inject } from '@angular/core';\nimport { MOBILE_CONFIG_ERROR } from '@fundamental-ngx/cdk/utils';\nimport { DialogConfig, DialogRef, DialogService } from '@fundamental-ngx/core/dialog';\nimport { MobileMode } from './mobile-control.interface';\nimport { MobileModeConfig } from './mobile-mode-config';\n\nexport const MOBILE_MODE_CONFIG = new InjectionToken<MobileModeConfigToken>(\n    'Provides configuration for mobile control'\n);\n\nexport interface MobileModeConfigToken {\n    target: MobileModeControl;\n    config: MobileModeConfig;\n}\n\nexport enum MobileModeControl {\n    MENU = 'MENU',\n    SELECT = 'SELECT',\n    POPOVER = 'POPOVER',\n    COMBOBOX = 'COMBOBOX',\n    MULTI_INPUT = 'MULTI_INPUT',\n    MULTI_COMBOBOX = 'MULTI_COMBOBOX',\n    SEARCH_FIELD = 'SEARCH_FIELD',\n    DATE_PICKER = 'DATE_PICKER',\n    DATETIME_PICKER = 'DATETIME_PICKER'\n}\n\n@Directive()\nexport abstract class MobileModeBase<T extends MobileMode> {\n    /** @hidden */\n    dialogRef: DialogRef;\n\n    /** @hidden */\n    readonly dialogConfig?: DialogConfig;\n\n    /** @hidden */\n    readonly mobileConfig: MobileModeConfig;\n\n    /** @hidden */\n    protected readonly _destroyRef = inject(DestroyRef);\n\n    /** @hidden */\n    protected readonly _elementRef = inject(ElementRef);\n\n    /** @hidden */\n    protected readonly _dialogService = inject(DialogService);\n\n    /** @hidden */\n    private readonly _mobileModes = inject<MobileModeConfigToken[]>(MOBILE_MODE_CONFIG, { optional: true }) || [];\n\n    /** @hidden */\n    constructor(\n        protected _component: T,\n        protected readonly target: MobileModeControl\n    ) {\n        this.mobileConfig = this._getMobileModeConfig();\n        this.dialogConfig = this.mobileConfig.dialogConfig;\n    }\n\n    /** @hidden */\n    private _getMobileModeConfig(): MobileModeConfig {\n        const injectedConfig = this._mobileModes.find((mode) => mode.target === this.target);\n\n        // Handle both signal and plain property access for mobileConfig\n        const mobileConfigProp = this._component.mobileConfig;\n        const componentMobileConfig =\n            typeof mobileConfigProp === 'function' ? (mobileConfigProp as () => MobileModeConfig)() : mobileConfigProp;\n\n        if (injectedConfig || componentMobileConfig) {\n            return injectedConfig\n                ? this._mergeConfigs(injectedConfig.config || {}, componentMobileConfig || {})\n                : componentMobileConfig;\n        } else {\n            throw new Error(MOBILE_CONFIG_ERROR);\n        }\n    }\n\n    /** @hidden Merges two mobile mode configs, with config2 taking precedence. */\n    private _mergeConfigs(config1: MobileModeConfig, config2: MobileModeConfig): MobileModeConfig {\n        return {\n            ...config1,\n            ...config2,\n            dialogConfig: {\n                ...config1.dialogConfig,\n                ...config2.dialogConfig\n            }\n        };\n    }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;MAMa,kBAAkB,GAAG,IAAI,cAAc,CAChD,2CAA2C;IAQnC;AAAZ,CAAA,UAAY,iBAAiB,EAAA;AACzB,IAAA,iBAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,iBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,iBAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,iBAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACrB,IAAA,iBAAA,CAAA,aAAA,CAAA,GAAA,aAA2B;AAC3B,IAAA,iBAAA,CAAA,gBAAA,CAAA,GAAA,gBAAiC;AACjC,IAAA,iBAAA,CAAA,cAAA,CAAA,GAAA,cAA6B;AAC7B,IAAA,iBAAA,CAAA,aAAA,CAAA,GAAA,aAA2B;AAC3B,IAAA,iBAAA,CAAA,iBAAA,CAAA,GAAA,iBAAmC;AACvC,CAAC,EAVW,iBAAiB,KAAjB,iBAAiB,GAAA,EAAA,CAAA,CAAA;MAaP,cAAc,CAAA;;IAuBhC,WAAA,CACc,UAAa,EACJ,MAAyB,EAAA;QADlC,IAAA,CAAA,UAAU,GAAV,UAAU;QACD,IAAA,CAAA,MAAM,GAAN,MAAM;;AAdV,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;;AAGhC,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;;AAGhC,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,aAAa,CAAC;;AAGxC,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAA0B,kBAAkB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE;AAOzG,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,oBAAoB,EAAE;QAC/C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY;IACtD;;IAGQ,oBAAoB,GAAA;QACxB,MAAM,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC;;AAGpF,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY;AACrD,QAAA,MAAM,qBAAqB,GACvB,OAAO,gBAAgB,KAAK,UAAU,GAAI,gBAA2C,EAAE,GAAG,gBAAgB;AAE9G,QAAA,IAAI,cAAc,IAAI,qBAAqB,EAAE;AACzC,YAAA,OAAO;AACH,kBAAE,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,MAAM,IAAI,EAAE,EAAE,qBAAqB,IAAI,EAAE;kBAC3E,qBAAqB;QAC/B;aAAO;AACH,YAAA,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC;QACxC;IACJ;;IAGQ,aAAa,CAAC,OAAyB,EAAE,OAAyB,EAAA;QACtE,OAAO;AACH,YAAA,GAAG,OAAO;AACV,YAAA,GAAG,OAAO;AACV,YAAA,YAAY,EAAE;gBACV,GAAG,OAAO,CAAC,YAAY;gBACvB,GAAG,OAAO,CAAC;AACd;SACJ;IACL;8GA3DkB,cAAc,EAAA,IAAA,EAAA,SAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBADnC;;;AC3BD;;AAEG;;;;"}