@angular-architects/ngrx-toolkit 20.0.2 → 20.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/angular-architects-ngrx-toolkit-redux-connector.mjs +119 -0
- package/fesm2022/angular-architects-ngrx-toolkit-redux-connector.mjs.map +1 -0
- package/fesm2022/angular-architects-ngrx-toolkit.mjs +1789 -0
- package/fesm2022/angular-architects-ngrx-toolkit.mjs.map +1 -0
- package/index.d.ts +945 -0
- package/package.json +21 -4
- package/redux-connector/index.d.ts +59 -0
- package/eslint.config.cjs +0 -43
- package/jest.config.ts +0 -22
- package/ng-package.json +0 -7
- package/project.json +0 -37
- package/redux-connector/docs/README.md +0 -131
- package/redux-connector/index.ts +0 -6
- package/redux-connector/ng-package.json +0 -5
- package/redux-connector/src/lib/create-redux.ts +0 -102
- package/redux-connector/src/lib/model.ts +0 -89
- package/redux-connector/src/lib/rxjs-interop/redux-method.ts +0 -66
- package/redux-connector/src/lib/signal-redux-store.ts +0 -59
- package/redux-connector/src/lib/util.ts +0 -22
- package/src/index.ts +0 -43
- package/src/lib/assertions/assertions.ts +0 -9
- package/src/lib/devtools/features/with-disabled-name-indicies.ts +0 -31
- package/src/lib/devtools/features/with-glitch-tracking.ts +0 -35
- package/src/lib/devtools/features/with-mapper.ts +0 -34
- package/src/lib/devtools/internal/current-action-names.ts +0 -1
- package/src/lib/devtools/internal/default-tracker.ts +0 -60
- package/src/lib/devtools/internal/devtools-feature.ts +0 -37
- package/src/lib/devtools/internal/devtools-syncer.service.ts +0 -202
- package/src/lib/devtools/internal/glitch-tracker.service.ts +0 -61
- package/src/lib/devtools/internal/models.ts +0 -29
- package/src/lib/devtools/provide-devtools-config.ts +0 -32
- package/src/lib/devtools/rename-devtools-name.ts +0 -21
- package/src/lib/devtools/tests/action-name.spec.ts +0 -48
- package/src/lib/devtools/tests/basic.spec.ts +0 -111
- package/src/lib/devtools/tests/connecting.spec.ts +0 -37
- package/src/lib/devtools/tests/helpers.spec.ts +0 -43
- package/src/lib/devtools/tests/naming.spec.ts +0 -216
- package/src/lib/devtools/tests/provide-devtools-config.spec.ts +0 -25
- package/src/lib/devtools/tests/types.spec.ts +0 -19
- package/src/lib/devtools/tests/update-state.spec.ts +0 -29
- package/src/lib/devtools/tests/with-devtools.spec.ts +0 -5
- package/src/lib/devtools/tests/with-glitch-tracking.spec.ts +0 -272
- package/src/lib/devtools/tests/with-mapper.spec.ts +0 -69
- package/src/lib/devtools/update-state.ts +0 -38
- package/src/lib/devtools/with-dev-tools-stub.ts +0 -6
- package/src/lib/devtools/with-devtools.ts +0 -81
- package/src/lib/immutable-state/deep-freeze.ts +0 -43
- package/src/lib/immutable-state/is-dev-mode.ts +0 -6
- package/src/lib/immutable-state/tests/with-immutable-state.spec.ts +0 -278
- package/src/lib/immutable-state/with-immutable-state.ts +0 -150
- package/src/lib/shared/prettify.ts +0 -3
- package/src/lib/shared/signal-store-models.ts +0 -30
- package/src/lib/shared/throw-if-null.ts +0 -7
- package/src/lib/storage-sync/features/with-indexed-db.ts +0 -81
- package/src/lib/storage-sync/features/with-local-storage.ts +0 -58
- package/src/lib/storage-sync/internal/indexeddb.service.ts +0 -124
- package/src/lib/storage-sync/internal/local-storage.service.ts +0 -19
- package/src/lib/storage-sync/internal/models.ts +0 -62
- package/src/lib/storage-sync/internal/session-storage.service.ts +0 -18
- package/src/lib/storage-sync/tests/indexeddb.service.spec.ts +0 -99
- package/src/lib/storage-sync/tests/with-storage-async.spec.ts +0 -305
- package/src/lib/storage-sync/tests/with-storage-sync.spec.ts +0 -273
- package/src/lib/storage-sync/with-storage-sync.ts +0 -236
- package/src/lib/with-call-state.spec.ts +0 -42
- package/src/lib/with-call-state.ts +0 -195
- package/src/lib/with-conditional.spec.ts +0 -125
- package/src/lib/with-conditional.ts +0 -74
- package/src/lib/with-data-service.spec.ts +0 -564
- package/src/lib/with-data-service.ts +0 -433
- package/src/lib/with-feature-factory.spec.ts +0 -69
- package/src/lib/with-feature-factory.ts +0 -56
- package/src/lib/with-pagination.spec.ts +0 -135
- package/src/lib/with-pagination.ts +0 -373
- package/src/lib/with-redux.spec.ts +0 -258
- package/src/lib/with-redux.ts +0 -387
- package/src/lib/with-reset.spec.ts +0 -112
- package/src/lib/with-reset.ts +0 -62
- package/src/lib/with-undo-redo.spec.ts +0 -274
- package/src/lib/with-undo-redo.ts +0 -200
- package/src/test-setup.ts +0 -6
- package/tsconfig.json +0 -29
- package/tsconfig.lib.json +0 -17
- package/tsconfig.lib.prod.json +0 -9
- package/tsconfig.spec.json +0 -17
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"angular-architects-ngrx-toolkit.mjs","sources":["../tmp-esm2022/lib/devtools/internal/devtools-feature.js","../tmp-esm2022/lib/devtools/features/with-disabled-name-indicies.js","../tmp-esm2022/lib/shared/throw-if-null.js","../tmp-esm2022/lib/devtools/internal/glitch-tracker.service.js","../tmp-esm2022/lib/devtools/features/with-glitch-tracking.js","../tmp-esm2022/lib/devtools/features/with-mapper.js","../tmp-esm2022/lib/devtools/provide-devtools-config.js","../tmp-esm2022/lib/devtools/internal/default-tracker.js","../tmp-esm2022/lib/devtools/internal/current-action-names.js","../tmp-esm2022/lib/devtools/internal/devtools-syncer.service.js","../tmp-esm2022/lib/devtools/with-devtools.js","../tmp-esm2022/lib/devtools/rename-devtools-name.js","../tmp-esm2022/lib/devtools/update-state.js","../tmp-esm2022/lib/devtools/with-dev-tools-stub.js","../tmp-esm2022/lib/assertions/assertions.js","../tmp-esm2022/lib/with-redux.js","../tmp-esm2022/lib/with-call-state.js","../tmp-esm2022/lib/with-data-service.js","../tmp-esm2022/lib/with-pagination.js","../tmp-esm2022/lib/with-reset.js","../tmp-esm2022/lib/with-undo-redo.js","../tmp-esm2022/lib/immutable-state/deep-freeze.js","../tmp-esm2022/lib/immutable-state/is-dev-mode.js","../tmp-esm2022/lib/immutable-state/with-immutable-state.js","../tmp-esm2022/lib/storage-sync/internal/indexeddb.service.js","../tmp-esm2022/lib/storage-sync/internal/models.js","../tmp-esm2022/lib/storage-sync/features/with-indexed-db.js","../tmp-esm2022/lib/storage-sync/internal/local-storage.service.js","../tmp-esm2022/lib/storage-sync/internal/session-storage.service.js","../tmp-esm2022/lib/storage-sync/features/with-local-storage.js","../tmp-esm2022/lib/storage-sync/with-storage-sync.js","../tmp-esm2022/lib/with-conditional.js","../tmp-esm2022/lib/with-feature-factory.js","../tmp-esm2022/angular-architects-ngrx-toolkit.js"],"sourcesContent":["export const DEVTOOLS_FEATURE = Symbol('DEVTOOLS_FEATURE');\nexport function createDevtoolsFeature(options) {\n return {\n [DEVTOOLS_FEATURE]: true,\n ...options,\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2dG9vbHMtZmVhdHVyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmdyeC10b29sa2l0L3NyYy9saWIvZGV2dG9vbHMvaW50ZXJuYWwvZGV2dG9vbHMtZmVhdHVyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztBQTJCM0QsTUFBTSxVQUFVLHFCQUFxQixDQUNuQyxPQUF3QjtJQUV4QixPQUFPO1FBQ0wsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLElBQUk7UUFDeEIsR0FBRyxPQUFPO0tBQ1gsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUcmFja2VyIH0gZnJvbSAnLi9tb2RlbHMnO1xuXG5leHBvcnQgY29uc3QgREVWVE9PTFNfRkVBVFVSRSA9IFN5bWJvbCgnREVWVE9PTFNfRkVBVFVSRScpO1xuXG5leHBvcnQgdHlwZSBNYXBwZXIgPSAoc3RhdGU6IG9iamVjdCkgPT4gb2JqZWN0O1xuXG5leHBvcnQgdHlwZSBEZXZ0b29sc09wdGlvbnMgPSB7XG4gIGluZGV4TmFtZXM/OiBib29sZWFuOyAvLyBkZWZpbmVzIGlmIG5hbWVzIHNob3VsZCBiZSBpbmRleGVkLlxuICBtYXA/OiBNYXBwZXI7IC8vIGRlZmluZXMgYSBtYXBwZXIgZm9yIHRoZSBzdGF0ZS5cbiAgdHJhY2tlcj86IG5ldyAoKSA9PiBUcmFja2VyOyAvLyBkZWZpbmVzIGEgdHJhY2tlciBmb3IgdGhlIHN0YXRlXG59O1xuXG5leHBvcnQgdHlwZSBEZXZ0b29sc0lubmVyT3B0aW9ucyA9IHtcbiAgaW5kZXhOYW1lczogYm9vbGVhbjtcbiAgbWFwOiBNYXBwZXI7XG4gIHRyYWNrZXI6IFRyYWNrZXI7XG59O1xuXG4vKipcbiAqIEEgRGV2dG9vbHNGZWF0dXJlIGFkZHMgb3IgbW9kaWZpZXMgdGhlIGJlaGF2aW9yIG9mIHRoZVxuICogZGV2dG9vbHMgZXh0ZW5zaW9uLlxuICpcbiAqIFdlIHVzZSB0aGVtIChmdW5jdGlvbiBjYWxscykgaW5zdGVhZCBvZiBhIGNvbmZpZyBvYmplY3QsXG4gKiBiZWNhdXNlIG9mIHRyZWUtc2hha2luZy5cbiAqL1xuZXhwb3J0IHR5cGUgRGV2dG9vbHNGZWF0dXJlID0ge1xuICBbREVWVE9PTFNfRkVBVFVSRV06IHRydWU7XG59ICYgUGFydGlhbDxEZXZ0b29sc09wdGlvbnM+O1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRGV2dG9vbHNGZWF0dXJlKFxuICBvcHRpb25zOiBEZXZ0b29sc09wdGlvbnMsXG4pOiBEZXZ0b29sc0ZlYXR1cmUge1xuICByZXR1cm4ge1xuICAgIFtERVZUT09MU19GRUFUVVJFXTogdHJ1ZSxcbiAgICAuLi5vcHRpb25zLFxuICB9O1xufVxuIl19","import { createDevtoolsFeature } from '../internal/devtools-feature';\n/**\n * If multiple instances of the same SignalStore class\n * exist, their devtool names are indexed.\n *\n * For example:\n *\n * ```typescript\n * const Store = signalStore(\n * withDevtools('flights')\n * )\n *\n * const store1 = new Store(); // will show up as 'flights'\n * const store2 = new Store(); // will show up as 'flights-1'\n * ```\n *\n * With adding `withDisabledNameIndices` to the store:\n * ```typescript\n * const Store = signalStore(\n * withDevtools('flights', withDisabledNameIndices())\n * )\n *\n * const store1 = new Store(); // will show up as 'flights'\n * const store2 = new Store(); //💥 throws an error\n * ```\n *\n */\nexport function withDisabledNameIndices() {\n return createDevtoolsFeature({ indexNames: false });\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1kaXNhYmxlZC1uYW1lLWluZGljaWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ3J4LXRvb2xraXQvc3JjL2xpYi9kZXZ0b29scy9mZWF0dXJlcy93aXRoLWRpc2FibGVkLW5hbWUtaW5kaWNpZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFckU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F5Qkc7QUFDSCxNQUFNLFVBQVUsdUJBQXVCO0lBQ3JDLE9BQU8scUJBQXFCLENBQUMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztBQUN0RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlRGV2dG9vbHNGZWF0dXJlIH0gZnJvbSAnLi4vaW50ZXJuYWwvZGV2dG9vbHMtZmVhdHVyZSc7XG5cbi8qKlxuICogSWYgbXVsdGlwbGUgaW5zdGFuY2VzIG9mIHRoZSBzYW1lIFNpZ25hbFN0b3JlIGNsYXNzXG4gKiBleGlzdCwgdGhlaXIgZGV2dG9vbCBuYW1lcyBhcmUgaW5kZXhlZC5cbiAqXG4gKiBGb3IgZXhhbXBsZTpcbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBTdG9yZSA9IHNpZ25hbFN0b3JlKFxuICogICB3aXRoRGV2dG9vbHMoJ2ZsaWdodHMnKVxuICogKVxuICpcbiAqIGNvbnN0IHN0b3JlMSA9IG5ldyBTdG9yZSgpOyAvLyB3aWxsIHNob3cgdXAgYXMgJ2ZsaWdodHMnXG4gKiBjb25zdCBzdG9yZTIgPSBuZXcgU3RvcmUoKTsgLy8gd2lsbCBzaG93IHVwIGFzICdmbGlnaHRzLTEnXG4gKiBgYGBcbiAqXG4gKiBXaXRoIGFkZGluZyBgd2l0aERpc2FibGVkTmFtZUluZGljZXNgIHRvIHRoZSBzdG9yZTpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IFN0b3JlID0gc2lnbmFsU3RvcmUoXG4gKiAgIHdpdGhEZXZ0b29scygnZmxpZ2h0cycsIHdpdGhEaXNhYmxlZE5hbWVJbmRpY2VzKCkpXG4gKiApXG4gKlxuICogY29uc3Qgc3RvcmUxID0gbmV3IFN0b3JlKCk7IC8vIHdpbGwgc2hvdyB1cCBhcyAnZmxpZ2h0cydcbiAqIGNvbnN0IHN0b3JlMiA9IG5ldyBTdG9yZSgpOyAvL/CfkqUgdGhyb3dzIGFuIGVycm9yXG4gKiBgYGBcbiAqXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3aXRoRGlzYWJsZWROYW1lSW5kaWNlcygpIHtcbiAgcmV0dXJuIGNyZWF0ZURldnRvb2xzRmVhdHVyZSh7IGluZGV4TmFtZXM6IGZhbHNlIH0pO1xufVxuIl19","export function throwIfNull(obj) {\n if (obj === null || obj === undefined) {\n throw new Error('');\n }\n return obj;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhyb3ctaWYtbnVsbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmdyeC10b29sa2l0L3NyYy9saWIvc2hhcmVkL3Rocm93LWlmLW51bGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxVQUFVLFdBQVcsQ0FBSSxHQUFNO0lBQ25DLElBQUksR0FBRyxLQUFLLElBQUksSUFBSSxHQUFHLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDdEMsTUFBTSxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN0QixDQUFDO0lBRUQsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIHRocm93SWZOdWxsPFQ+KG9iajogVCk6IE5vbk51bGxhYmxlPFQ+IHtcbiAgaWYgKG9iaiA9PT0gbnVsbCB8fCBvYmogPT09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IG5ldyBFcnJvcignJyk7XG4gIH1cblxuICByZXR1cm4gb2JqO1xufVxuIl19","import { Injectable } from '@angular/core';\nimport { getState, watchState } from '@ngrx/signals';\nimport { throwIfNull } from '../../shared/throw-if-null';\nimport * as i0 from \"@angular/core\";\n/**\n * Internal Service used by {@link withGlitchTracking}. It does not rely\n * on `effect` as {@link DefaultTracker} does but uses the NgRx function\n * `watchState` to track all state changes.\n */\nexport class GlitchTrackerService {\n #stores = {};\n #callback;\n get stores() {\n return Object.entries(this.#stores).reduce((acc, [id, { store }]) => {\n acc[id] = store;\n return acc;\n }, {});\n }\n onChange(callback) {\n this.#callback = callback;\n }\n removeStore(id) {\n this.#stores = Object.entries(this.#stores).reduce((newStore, [storeId, value]) => {\n if (storeId !== id) {\n newStore[storeId] = value;\n }\n else {\n value.destroyWatcher();\n }\n return newStore;\n }, {});\n throwIfNull(this.#callback)({});\n }\n track(id, store) {\n const watcher = watchState(store, (state) => {\n throwIfNull(this.#callback)({ [id]: state });\n });\n this.#stores[id] = { destroyWatcher: watcher.destroy, store };\n }\n notifyRenamedStore(id) {\n if (Object.keys(this.#stores).includes(id) && this.#callback) {\n this.#callback({ [id]: getState(this.#stores[id].store) });\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: GlitchTrackerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: GlitchTrackerService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: GlitchTrackerService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xpdGNoLXRyYWNrZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmdyeC10b29sa2l0L3NyYy9saWIvZGV2dG9vbHMvaW50ZXJuYWwvZ2xpdGNoLXRyYWNrZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxRQUFRLEVBQWUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFRekQ7Ozs7R0FJRztBQUVILE1BQU0sT0FBTyxvQkFBb0I7SUFDL0IsT0FBTyxHQUFXLEVBQUUsQ0FBQztJQUNyQixTQUFTLENBQStEO0lBRXhFLElBQUksTUFBTTtRQUNSLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ2xFLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUM7WUFDaEIsT0FBTyxHQUFHLENBQUM7UUFDYixDQUFDLEVBQUUsRUFBbUIsQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFRCxRQUFRLENBQUMsUUFBd0Q7UUFDL0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUM7SUFDNUIsQ0FBQztJQUVELFdBQVcsQ0FBQyxFQUFVO1FBQ3BCLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUNoRCxDQUFDLFFBQVEsRUFBRSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFO1lBQzdCLElBQUksT0FBTyxLQUFLLEVBQUUsRUFBRSxDQUFDO2dCQUNuQixRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsS0FBSyxDQUFDO1lBQzVCLENBQUM7aUJBQU0sQ0FBQztnQkFDTixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDekIsQ0FBQztZQUNELE9BQU8sUUFBUSxDQUFDO1FBQ2xCLENBQUMsRUFDRCxFQUFZLENBQ2IsQ0FBQztRQUVGLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELEtBQUssQ0FBQyxFQUFVLEVBQUUsS0FBMEI7UUFDMUMsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQzFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDL0MsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsY0FBYyxFQUFFLE9BQU8sQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUM7SUFDaEUsQ0FBQztJQUVELGtCQUFrQixDQUFDLEVBQVU7UUFDM0IsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQzdELElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM3RCxDQUFDO0lBQ0gsQ0FBQzs4R0EzQ1Usb0JBQW9CO2tIQUFwQixvQkFBb0IsY0FEUCxNQUFNOzsyRkFDbkIsb0JBQW9CO2tCQURoQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGdldFN0YXRlLCBTdGF0ZVNvdXJjZSwgd2F0Y2hTdGF0ZSB9IGZyb20gJ0BuZ3J4L3NpZ25hbHMnO1xuaW1wb3J0IHsgdGhyb3dJZk51bGwgfSBmcm9tICcuLi8uLi9zaGFyZWQvdGhyb3ctaWYtbnVsbCc7XG5pbXBvcnQgeyBUcmFja2VyLCBUcmFja2VyU3RvcmVzIH0gZnJvbSAnLi9tb2RlbHMnO1xuXG50eXBlIFN0b3JlcyA9IFJlY29yZDxcbiAgc3RyaW5nLFxuICB7IGRlc3Ryb3lXYXRjaGVyOiAoKSA9PiB2b2lkOyBzdG9yZTogU3RhdGVTb3VyY2U8b2JqZWN0PiB9XG4+O1xuXG4vKipcbiAqIEludGVybmFsIFNlcnZpY2UgdXNlZCBieSB7QGxpbmsgd2l0aEdsaXRjaFRyYWNraW5nfS4gSXQgZG9lcyBub3QgcmVseVxuICogb24gYGVmZmVjdGAgYXMge0BsaW5rIERlZmF1bHRUcmFja2VyfSBkb2VzIGJ1dCB1c2VzIHRoZSBOZ1J4IGZ1bmN0aW9uXG4gKiBgd2F0Y2hTdGF0ZWAgdG8gdHJhY2sgYWxsIHN0YXRlIGNoYW5nZXMuXG4gKi9cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgR2xpdGNoVHJhY2tlclNlcnZpY2UgaW1wbGVtZW50cyBUcmFja2VyIHtcbiAgI3N0b3JlczogU3RvcmVzID0ge307XG4gICNjYWxsYmFjazogKChjaGFuZ2VkU3RhdGU6IFJlY29yZDxzdHJpbmcsIG9iamVjdD4pID0+IHZvaWQpIHwgdW5kZWZpbmVkO1xuXG4gIGdldCBzdG9yZXMoKSB7XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHRoaXMuI3N0b3JlcykucmVkdWNlKChhY2MsIFtpZCwgeyBzdG9yZSB9XSkgPT4ge1xuICAgICAgYWNjW2lkXSA9IHN0b3JlO1xuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCB7fSBhcyBUcmFja2VyU3RvcmVzKTtcbiAgfVxuXG4gIG9uQ2hhbmdlKGNhbGxiYWNrOiAoY2hhbmdlZFN0YXRlOiBSZWNvcmQ8c3RyaW5nLCBvYmplY3Q+KSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy4jY2FsbGJhY2sgPSBjYWxsYmFjaztcbiAgfVxuXG4gIHJlbW92ZVN0b3JlKGlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLiNzdG9yZXMgPSBPYmplY3QuZW50cmllcyh0aGlzLiNzdG9yZXMpLnJlZHVjZShcbiAgICAgIChuZXdTdG9yZSwgW3N0b3JlSWQsIHZhbHVlXSkgPT4ge1xuICAgICAgICBpZiAoc3RvcmVJZCAhPT0gaWQpIHtcbiAgICAgICAgICBuZXdTdG9yZVtzdG9yZUlkXSA9IHZhbHVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhbHVlLmRlc3Ryb3lXYXRjaGVyKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ld1N0b3JlO1xuICAgICAgfSxcbiAgICAgIHt9IGFzIFN0b3JlcyxcbiAgICApO1xuXG4gICAgdGhyb3dJZk51bGwodGhpcy4jY2FsbGJhY2spKHt9KTtcbiAgfVxuXG4gIHRyYWNrKGlkOiBzdHJpbmcsIHN0b3JlOiBTdGF0ZVNvdXJjZTxvYmplY3Q+KTogdm9pZCB7XG4gICAgY29uc3Qgd2F0Y2hlciA9IHdhdGNoU3RhdGUoc3RvcmUsIChzdGF0ZSkgPT4ge1xuICAgICAgdGhyb3dJZk51bGwodGhpcy4jY2FsbGJhY2spKHsgW2lkXTogc3RhdGUgfSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLiNzdG9yZXNbaWRdID0geyBkZXN0cm95V2F0Y2hlcjogd2F0Y2hlci5kZXN0cm95LCBzdG9yZSB9O1xuICB9XG5cbiAgbm90aWZ5UmVuYW1lZFN0b3JlKGlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoT2JqZWN0LmtleXModGhpcy4jc3RvcmVzKS5pbmNsdWRlcyhpZCkgJiYgdGhpcy4jY2FsbGJhY2spIHtcbiAgICAgIHRoaXMuI2NhbGxiYWNrKHsgW2lkXTogZ2V0U3RhdGUodGhpcy4jc3RvcmVzW2lkXS5zdG9yZSkgfSk7XG4gICAgfVxuICB9XG59XG4iXX0=","import { createDevtoolsFeature } from '../internal/devtools-feature';\nimport { GlitchTrackerService } from '../internal/glitch-tracker.service';\n/**\n * It tracks all state changes of the State, including intermediary updates\n * that are typically suppressed by Angular's glitch-free mechanism.\n *\n * This feature is especially useful for debugging.\n *\n * Example:\n *\n * ```typescript\n * const Store = signalStore(\n * { providedIn: 'root' },\n * withState({ count: 0 }),\n * withDevtools('counter', withGlitchTracking()),\n * withMethods((store) => ({\n * increase: () =>\n * patchState(store, (value) => ({ count: value.count + 1 })),\n * }))\n * );\n *\n * // would show up in the DevTools with value 0\n * const store = inject(Store);\n *\n * store.increase(); // would show up in the DevTools with value 1\n * store.increase(); // would show up in the DevTools with value 2\n * store.increase(); // would show up in the DevTools with value 3\n * ```\n *\n * Without `withGlitchTracking`, the DevTools would only show the final value of 3.\n */\nexport function withGlitchTracking() {\n return createDevtoolsFeature({ tracker: GlitchTrackerService });\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1nbGl0Y2gtdHJhY2tpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdG9vbGtpdC9zcmMvbGliL2RldnRvb2xzL2ZlYXR1cmVzL3dpdGgtZ2xpdGNoLXRyYWNraW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRTFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNEJHO0FBQ0gsTUFBTSxVQUFVLGtCQUFrQjtJQUNoQyxPQUFPLHFCQUFxQixDQUFDLEVBQUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLENBQUMsQ0FBQztBQUNsRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlRGV2dG9vbHNGZWF0dXJlIH0gZnJvbSAnLi4vaW50ZXJuYWwvZGV2dG9vbHMtZmVhdHVyZSc7XG5pbXBvcnQgeyBHbGl0Y2hUcmFja2VyU2VydmljZSB9IGZyb20gJy4uL2ludGVybmFsL2dsaXRjaC10cmFja2VyLnNlcnZpY2UnO1xuXG4vKipcbiAqIEl0IHRyYWNrcyBhbGwgc3RhdGUgY2hhbmdlcyBvZiB0aGUgU3RhdGUsIGluY2x1ZGluZyBpbnRlcm1lZGlhcnkgdXBkYXRlc1xuICogdGhhdCBhcmUgdHlwaWNhbGx5IHN1cHByZXNzZWQgYnkgQW5ndWxhcidzIGdsaXRjaC1mcmVlIG1lY2hhbmlzbS5cbiAqXG4gKiBUaGlzIGZlYXR1cmUgaXMgZXNwZWNpYWxseSB1c2VmdWwgZm9yIGRlYnVnZ2luZy5cbiAqXG4gKiBFeGFtcGxlOlxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IFN0b3JlID0gc2lnbmFsU3RvcmUoXG4gKiAgIHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0sXG4gKiAgIHdpdGhTdGF0ZSh7IGNvdW50OiAwIH0pLFxuICogICB3aXRoRGV2dG9vbHMoJ2NvdW50ZXInLCB3aXRoR2xpdGNoVHJhY2tpbmcoKSksXG4gKiAgIHdpdGhNZXRob2RzKChzdG9yZSkgPT4gKHtcbiAqICAgICBpbmNyZWFzZTogKCkgPT5cbiAqICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsICh2YWx1ZSkgPT4gKHsgY291bnQ6IHZhbHVlLmNvdW50ICsgMSB9KSksXG4gKiAgIH0pKVxuICogKTtcbiAqXG4gKiAvLyB3b3VsZCBzaG93IHVwIGluIHRoZSBEZXZUb29scyB3aXRoIHZhbHVlIDBcbiAqIGNvbnN0IHN0b3JlID0gaW5qZWN0KFN0b3JlKTtcbiAqXG4gKiBzdG9yZS5pbmNyZWFzZSgpOyAvLyB3b3VsZCBzaG93IHVwIGluIHRoZSBEZXZUb29scyB3aXRoIHZhbHVlIDFcbiAqIHN0b3JlLmluY3JlYXNlKCk7IC8vIHdvdWxkIHNob3cgdXAgaW4gdGhlIERldlRvb2xzIHdpdGggdmFsdWUgMlxuICogc3RvcmUuaW5jcmVhc2UoKTsgLy8gd291bGQgc2hvdyB1cCBpbiB0aGUgRGV2VG9vbHMgd2l0aCB2YWx1ZSAzXG4gKiBgYGBcbiAqXG4gKiBXaXRob3V0IGB3aXRoR2xpdGNoVHJhY2tpbmdgLCB0aGUgRGV2VG9vbHMgd291bGQgb25seSBzaG93IHRoZSBmaW5hbCB2YWx1ZSBvZiAzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gd2l0aEdsaXRjaFRyYWNraW5nKCkge1xuICByZXR1cm4gY3JlYXRlRGV2dG9vbHNGZWF0dXJlKHsgdHJhY2tlcjogR2xpdGNoVHJhY2tlclNlcnZpY2UgfSk7XG59XG4iXX0=","import { createDevtoolsFeature } from '../internal/devtools-feature';\n/**\n * Allows you to define a function to map the state.\n *\n * It is needed for huge states, that slows down the Devtools and where\n * you don't need to see the whole state or other reasons.\n *\n * Example:\n *\n * ```typescript\n * const initialState = {\n * id: 1,\n * email: 'john.list@host.com',\n * name: 'John List',\n * enteredPassword: ''\n * }\n *\n * const Store = signalStore(\n * withState(initialState),\n * withDevtools(\n * 'user',\n * withMapper(state => ({...state, enteredPassword: '***' }))\n * )\n * )\n * ```\n *\n * @param map function which maps the state\n */\nexport function withMapper(map) {\n return createDevtoolsFeature({ map: map });\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1tYXBwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdG9vbGtpdC9zcmMvbGliL2RldnRvb2xzL2ZlYXR1cmVzL3dpdGgtbWFwcGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxxQkFBcUIsRUFBVSxNQUFNLDhCQUE4QixDQUFDO0FBRTdFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTBCRztBQUNILE1BQU0sVUFBVSxVQUFVLENBQ3hCLEdBQThDO0lBRTlDLE9BQU8scUJBQXFCLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBYSxFQUFFLENBQUMsQ0FBQztBQUN2RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlRGV2dG9vbHNGZWF0dXJlLCBNYXBwZXIgfSBmcm9tICcuLi9pbnRlcm5hbC9kZXZ0b29scy1mZWF0dXJlJztcblxuLyoqXG4gKiBBbGxvd3MgeW91IHRvIGRlZmluZSBhIGZ1bmN0aW9uIHRvIG1hcCB0aGUgc3RhdGUuXG4gKlxuICogSXQgaXMgbmVlZGVkIGZvciBodWdlIHN0YXRlcywgdGhhdCBzbG93cyBkb3duIHRoZSBEZXZ0b29scyBhbmQgd2hlcmVcbiAqIHlvdSBkb24ndCBuZWVkIHRvIHNlZSB0aGUgd2hvbGUgc3RhdGUgb3Igb3RoZXIgcmVhc29ucy5cbiAqXG4gKiBFeGFtcGxlOlxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGluaXRpYWxTdGF0ZSA9IHtcbiAqICAgaWQ6IDEsXG4gKiAgIGVtYWlsOiAnam9obi5saXN0QGhvc3QuY29tJyxcbiAqICAgbmFtZTogJ0pvaG4gTGlzdCcsXG4gKiAgIGVudGVyZWRQYXNzd29yZDogJydcbiAqIH1cbiAqXG4gKiBjb25zdCBTdG9yZSA9IHNpZ25hbFN0b3JlKFxuICogICB3aXRoU3RhdGUoaW5pdGlhbFN0YXRlKSxcbiAqICAgd2l0aERldnRvb2xzKFxuICogICAgICd1c2VyJyxcbiAqICAgICB3aXRoTWFwcGVyKHN0YXRlID0+ICh7Li4uc3RhdGUsIGVudGVyZWRQYXNzd29yZDogJyoqKicgfSkpXG4gKiAgIClcbiAqIClcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBtYXAgZnVuY3Rpb24gd2hpY2ggbWFwcyB0aGUgc3RhdGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdpdGhNYXBwZXI8U3RhdGUgZXh0ZW5kcyBvYmplY3Q+KFxuICBtYXA6IChzdGF0ZTogU3RhdGUpID0+IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuKSB7XG4gIHJldHVybiBjcmVhdGVEZXZ0b29sc0ZlYXR1cmUoeyBtYXA6IG1hcCBhcyBNYXBwZXIgfSk7XG59XG4iXX0=","import { InjectionToken } from '@angular/core';\n/**\n * Provides the configuration options for connecting to the Redux DevTools Extension.\n */\nexport function provideDevtoolsConfig(config) {\n return {\n provide: REDUX_DEVTOOLS_CONFIG,\n useValue: config,\n };\n}\n/**\n * Injection token for the configuration options for connecting to the Redux DevTools Extension.\n */\nexport const REDUX_DEVTOOLS_CONFIG = new InjectionToken('ReduxDevtoolsConfig');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZS1kZXZ0b29scy1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdG9vbGtpdC9zcmMvbGliL2RldnRvb2xzL3Byb3ZpZGUtZGV2dG9vbHMtY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBRTlEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLHFCQUFxQixDQUNuQyxNQUEyQjtJQUUzQixPQUFPO1FBQ0wsT0FBTyxFQUFFLHFCQUFxQjtRQUM5QixRQUFRLEVBQUUsTUFBTTtLQUNqQixDQUFDO0FBQ0osQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxjQUFjLENBQ3JELHFCQUFxQixDQUN0QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4sIFZhbHVlUHJvdmlkZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBQcm92aWRlcyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBjb25uZWN0aW5nIHRvIHRoZSBSZWR1eCBEZXZUb29scyBFeHRlbnNpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlRGV2dG9vbHNDb25maWcoXG4gIGNvbmZpZzogUmVkdXhEZXZ0b29sc0NvbmZpZyxcbik6IFZhbHVlUHJvdmlkZXIge1xuICByZXR1cm4ge1xuICAgIHByb3ZpZGU6IFJFRFVYX0RFVlRPT0xTX0NPTkZJRyxcbiAgICB1c2VWYWx1ZTogY29uZmlnLFxuICB9O1xufVxuXG4vKipcbiAqIEluamVjdGlvbiB0b2tlbiBmb3IgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgY29ubmVjdGluZyB0byB0aGUgUmVkdXggRGV2VG9vbHMgRXh0ZW5zaW9uLlxuICovXG5leHBvcnQgY29uc3QgUkVEVVhfREVWVE9PTFNfQ09ORklHID0gbmV3IEluamVjdGlvblRva2VuPFJlZHV4RGV2dG9vbHNDb25maWc+KFxuICAnUmVkdXhEZXZ0b29sc0NvbmZpZycsXG4pO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGNvbm5lY3RpbmcgdG8gdGhlIFJlZHV4IERldlRvb2xzIEV4dGVuc2lvbi5cbiAqIEBleGFtcGxlXG4gKiBjb25zdCBkZXZUb29sc09wdGlvbnM6IFJlZHV4RGV2dG9vbHNDb25maWcgPSB7XG4gKiAgIG5hbWU6ICdNeSBBcHAnLFxuICogfTtcbiAqL1xuZXhwb3J0IHR5cGUgUmVkdXhEZXZ0b29sc0NvbmZpZyA9IHtcbiAgLyoqIE9wdGlvbmFsIG5hbWUgZm9yIHRoZSBkZXZ0b29scyBpbnN0YW5jZS4gSWYgZW1wdHksIFwiTmdSeCBTaWduYWxTdG9yZVwiIHdpbGwgYmUgdXNlZC4gKi9cbiAgbmFtZT86IHN0cmluZztcbn07XG4iXX0=","import { effect, Injectable, signal } from '@angular/core';\nimport { getState } from '@ngrx/signals';\nimport * as i0 from \"@angular/core\";\nexport class DefaultTracker {\n #stores = signal({}, ...(ngDevMode ? [{ debugName: \"#stores\" }] : []));\n get stores() {\n return this.#stores();\n }\n #trackCallback;\n #trackingEffect = effect(() => {\n if (this.#trackCallback === undefined) {\n throw new Error('no callback function defined');\n }\n const stores = this.#stores();\n const fullState = Object.entries(stores).reduce((acc, [id, store]) => {\n return { ...acc, [id]: getState(store) };\n }, {});\n this.#trackCallback(fullState);\n }, ...(ngDevMode ? [{ debugName: \"#trackingEffect\" }] : []));\n track(id, store) {\n this.#stores.update((value) => ({\n ...value,\n [id]: store,\n }));\n }\n onChange(callback) {\n this.#trackCallback = callback;\n }\n removeStore(id) {\n this.#stores.update((stores) => Object.entries(stores).reduce((newStore, [storeId, state]) => {\n if (storeId !== id) {\n newStore[storeId] = state;\n }\n return newStore;\n }, {}));\n }\n notifyRenamedStore(id) {\n if (this.#stores()[id]) {\n this.#stores.update((stores) => {\n return { ...stores };\n });\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: DefaultTracker, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: DefaultTracker, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: DefaultTracker, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC10cmFja2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ3J4LXRvb2xraXQvc3JjL2xpYi9kZXZ0b29scy9pbnRlcm5hbC9kZWZhdWx0LXRyYWNrZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNELE9BQU8sRUFBRSxRQUFRLEVBQWUsTUFBTSxlQUFlLENBQUM7O0FBSXRELE1BQU0sT0FBTyxjQUFjO0lBQ2hCLE9BQU8sR0FBRyxNQUFNLENBQWdCLEVBQUUsbURBQUMsQ0FBQztJQUU3QyxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQsY0FBYyxDQUErRDtJQUU3RSxlQUFlLEdBQUcsTUFBTSxDQUFDLEdBQUcsRUFBRTtRQUM1QixJQUFJLElBQUksQ0FBQyxjQUFjLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDdEMsTUFBTSxJQUFJLEtBQUssQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO1FBQ2xELENBQUM7UUFDRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFOUIsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQzdDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUU7WUFDbkIsT0FBTyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDM0MsQ0FBQyxFQUNELEVBQTRCLENBQzdCLENBQUM7UUFFRixJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2pDLENBQUMsMkRBQUMsQ0FBQztJQUVILEtBQUssQ0FBQyxFQUFVLEVBQUUsS0FBMEI7UUFDMUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDOUIsR0FBRyxLQUFLO1lBQ1IsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLO1NBQ1osQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDO0lBRUQsUUFBUSxDQUFDLFFBQXdEO1FBQy9ELElBQUksQ0FBQyxjQUFjLEdBQUcsUUFBUSxDQUFDO0lBQ2pDLENBQUM7SUFFRCxXQUFXLENBQUMsRUFBVTtRQUNwQixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQzdCLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUU7WUFDM0QsSUFBSSxPQUFPLEtBQUssRUFBRSxFQUFFLENBQUM7Z0JBQ25CLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxLQUFLLENBQUM7WUFDNUIsQ0FBQztZQUNELE9BQU8sUUFBUSxDQUFDO1FBQ2xCLENBQUMsRUFBRSxFQUFtQixDQUFDLENBQ3hCLENBQUM7SUFDSixDQUFDO0lBRUQsa0JBQWtCLENBQUMsRUFBVTtRQUMzQixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7Z0JBQzdCLE9BQU8sRUFBRSxHQUFHLE1BQU0sRUFBRSxDQUFDO1lBQ3ZCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7OEdBckRVLGNBQWM7a0hBQWQsY0FBYyxjQURELE1BQU07OzJGQUNuQixjQUFjO2tCQUQxQixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGVmZmVjdCwgSW5qZWN0YWJsZSwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBnZXRTdGF0ZSwgU3RhdGVTb3VyY2UgfSBmcm9tICdAbmdyeC9zaWduYWxzJztcbmltcG9ydCB7IFRyYWNrZXIsIFRyYWNrZXJTdG9yZXMgfSBmcm9tICcuL21vZGVscyc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgRGVmYXVsdFRyYWNrZXIgaW1wbGVtZW50cyBUcmFja2VyIHtcbiAgcmVhZG9ubHkgI3N0b3JlcyA9IHNpZ25hbDxUcmFja2VyU3RvcmVzPih7fSk7XG5cbiAgZ2V0IHN0b3JlcygpOiBUcmFja2VyU3RvcmVzIHtcbiAgICByZXR1cm4gdGhpcy4jc3RvcmVzKCk7XG4gIH1cblxuICAjdHJhY2tDYWxsYmFjazogdW5kZWZpbmVkIHwgKChjaGFuZ2VkU3RhdGU6IFJlY29yZDxzdHJpbmcsIG9iamVjdD4pID0+IHZvaWQpO1xuXG4gICN0cmFja2luZ0VmZmVjdCA9IGVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHRoaXMuI3RyYWNrQ2FsbGJhY2sgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdubyBjYWxsYmFjayBmdW5jdGlvbiBkZWZpbmVkJyk7XG4gICAgfVxuICAgIGNvbnN0IHN0b3JlcyA9IHRoaXMuI3N0b3JlcygpO1xuXG4gICAgY29uc3QgZnVsbFN0YXRlID0gT2JqZWN0LmVudHJpZXMoc3RvcmVzKS5yZWR1Y2UoXG4gICAgICAoYWNjLCBbaWQsIHN0b3JlXSkgPT4ge1xuICAgICAgICByZXR1cm4geyAuLi5hY2MsIFtpZF06IGdldFN0YXRlKHN0b3JlKSB9O1xuICAgICAgfSxcbiAgICAgIHt9IGFzIFJlY29yZDxzdHJpbmcsIG9iamVjdD4sXG4gICAgKTtcblxuICAgIHRoaXMuI3RyYWNrQ2FsbGJhY2soZnVsbFN0YXRlKTtcbiAgfSk7XG5cbiAgdHJhY2soaWQ6IHN0cmluZywgc3RvcmU6IFN0YXRlU291cmNlPG9iamVjdD4pOiB2b2lkIHtcbiAgICB0aGlzLiNzdG9yZXMudXBkYXRlKCh2YWx1ZSkgPT4gKHtcbiAgICAgIC4uLnZhbHVlLFxuICAgICAgW2lkXTogc3RvcmUsXG4gICAgfSkpO1xuICB9XG5cbiAgb25DaGFuZ2UoY2FsbGJhY2s6IChjaGFuZ2VkU3RhdGU6IFJlY29yZDxzdHJpbmcsIG9iamVjdD4pID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLiN0cmFja0NhbGxiYWNrID0gY2FsbGJhY2s7XG4gIH1cblxuICByZW1vdmVTdG9yZShpZDogc3RyaW5nKSB7XG4gICAgdGhpcy4jc3RvcmVzLnVwZGF0ZSgoc3RvcmVzKSA9PlxuICAgICAgT2JqZWN0LmVudHJpZXMoc3RvcmVzKS5yZWR1Y2UoKG5ld1N0b3JlLCBbc3RvcmVJZCwgc3RhdGVdKSA9PiB7XG4gICAgICAgIGlmIChzdG9yZUlkICE9PSBpZCkge1xuICAgICAgICAgIG5ld1N0b3JlW3N0b3JlSWRdID0gc3RhdGU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ld1N0b3JlO1xuICAgICAgfSwge30gYXMgVHJhY2tlclN0b3JlcyksXG4gICAgKTtcbiAgfVxuXG4gIG5vdGlmeVJlbmFtZWRTdG9yZShpZDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuI3N0b3JlcygpW2lkXSkge1xuICAgICAgdGhpcy4jc3RvcmVzLnVwZGF0ZSgoc3RvcmVzKSA9PiB7XG4gICAgICAgIHJldHVybiB7IC4uLnN0b3JlcyB9O1xuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG4iXX0=","export const currentActionNames = new Set();\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VycmVudC1hY3Rpb24tbmFtZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdG9vbGtpdC9zcmMvbGliL2RldnRvb2xzL2ludGVybmFsL2N1cnJlbnQtYWN0aW9uLW5hbWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLElBQUksR0FBRyxFQUFVLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgY3VycmVudEFjdGlvbk5hbWVzID0gbmV3IFNldDxzdHJpbmc+KCk7XG4iXX0=","import { isPlatformBrowser } from '@angular/common';\nimport { inject, Injectable, PLATFORM_ID } from '@angular/core';\nimport { throwIfNull } from '../../shared/throw-if-null';\nimport { REDUX_DEVTOOLS_CONFIG } from '../provide-devtools-config';\nimport { currentActionNames } from './current-action-names';\nimport * as i0 from \"@angular/core\";\nconst dummyConnection = {\n send: () => void true,\n};\n/**\n * A service provided by the root injector is\n * required because the synchronization runs\n * globally.\n *\n * The SignalStore could be provided in a component.\n * If the effect starts in the injection\n * context of the SignalStore, the complete sync\n * process would shut down once the component gets\n * destroyed.\n */\nexport class DevtoolsSyncer {\n /**\n * Stores all SignalStores that are connected to the\n * DevTools along their options, names and id.\n */\n #stores = {};\n #isBrowser = isPlatformBrowser(inject(PLATFORM_ID));\n #trackers = [];\n #devtoolsConfig = {\n name: 'NgRx SignalStore',\n ...inject(REDUX_DEVTOOLS_CONFIG, { optional: true }),\n };\n /**\n * Maintains the current states of all stores to avoid conflicts\n * between glitch-free and glitched trackers when used simultaneously.\n *\n * The challenge lies in ensuring that glitched trackers do not\n * interfere with the synchronization process of glitch-free trackers.\n * Specifically, glitched trackers could cause the synchronization to\n * read the current state of stores managed by glitch-free trackers.\n *\n * Therefore, the synchronization process doesn't read the state from\n * each store, but relies on #currentState.\n *\n * Please note, that here the key is the name and not the id.\n */\n #currentState = {};\n #currentId = 1;\n #connection = this.#isBrowser\n ? window.__REDUX_DEVTOOLS_EXTENSION__\n ? window.__REDUX_DEVTOOLS_EXTENSION__.connect(this.#devtoolsConfig)\n : dummyConnection\n : dummyConnection;\n constructor() {\n if (!this.#isBrowser) {\n return;\n }\n }\n ngOnDestroy() {\n currentActionNames.clear();\n }\n syncToDevTools(changedStatePerId) {\n const mappedChangedStatePerName = Object.entries(changedStatePerId).reduce((acc, [id, store]) => {\n const { options, name } = this.#stores[id];\n acc[name] = options.map(store);\n return acc;\n }, {});\n this.#currentState = {\n ...this.#currentState,\n ...mappedChangedStatePerName,\n };\n const names = Array.from(currentActionNames);\n const type = names.length ? names.join(', ') : 'Store Update';\n currentActionNames.clear();\n this.#connection.send({ type }, this.#currentState);\n }\n getNextId() {\n return String(this.#currentId++);\n }\n /**\n * Consumer provides the id. That is because we can only start\n * tracking the store in the init hook.\n * Unfortunately, methods for renaming having the final id\n * need to be defined already before.\n * That's why `withDevtools` requests first the id and\n * then registers itself later.\n */\n addStore(id, name, store, options) {\n let storeName = name;\n const names = Object.values(this.#stores).map((store) => store.name);\n if (names.includes(storeName)) {\n // const { options } = throwIfNull(\n // Object.values(this.#stores).find((store) => store.name === storeName)\n // );\n if (!options.indexNames) {\n throw new Error(`An instance of the store ${storeName} already exists. \\\nEnable automatic indexing via withDevTools('${storeName}', { indexNames: true }), or rename it upon instantiation.`);\n }\n }\n for (let i = 1; names.includes(storeName); i++) {\n storeName = `${name}-${i}`;\n }\n this.#stores[id] = { name: storeName, options };\n const tracker = options.tracker;\n if (!this.#trackers.includes(tracker)) {\n this.#trackers.push(tracker);\n }\n tracker.onChange((changedState) => this.syncToDevTools(changedState));\n tracker.track(id, store);\n }\n removeStore(id) {\n const name = this.#stores[id].name;\n this.#stores = Object.entries(this.#stores).reduce((newStore, [storeId, value]) => {\n if (storeId !== id) {\n newStore[storeId] = value;\n }\n return newStore;\n }, {});\n this.#currentState = Object.entries(this.#currentState).reduce((newState, [storeName, state]) => {\n if (storeName !== name) {\n newState[name] = state;\n }\n return newState;\n }, {});\n for (const tracker of this.#trackers) {\n tracker.removeStore(id);\n }\n }\n renameStore(oldName, newName) {\n const storeNames = Object.values(this.#stores).map((store) => store.name);\n const id = throwIfNull(Object.keys(this.#stores).find((id) => this.#stores[id].name === oldName));\n if (storeNames.includes(newName)) {\n throw new Error(`NgRx Toolkit/DevTools: cannot rename from ${oldName} to ${newName}. ${newName} is already assigned to another SignalStore instance.`);\n }\n this.#stores = Object.entries(this.#stores).reduce((newStore, [id, value]) => {\n if (value.name === oldName) {\n newStore[id] = { ...value, name: newName };\n }\n else {\n newStore[id] = value;\n }\n return newStore;\n }, {});\n // we don't rename in #currentState but wait for tracker to notify\n // us with a changed state that contains that name.\n this.#currentState = Object.entries(this.#currentState).reduce((newState, [storeName, state]) => {\n if (storeName !== oldName) {\n newState[storeName] = state;\n }\n return newState;\n }, {});\n this.#trackers.forEach((tracker) => tracker.notifyRenamedStore(id));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: DevtoolsSyncer, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: DevtoolsSyncer, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: DevtoolsSyncer, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2dG9vbHMtc3luY2VyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdG9vbGtpdC9zcmMvbGliL2RldnRvb2xzL2ludGVybmFsL2RldnRvb2xzLXN5bmNlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFhLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDekQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7O0FBSTVELE1BQU0sZUFBZSxHQUFlO0lBQ2xDLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxLQUFLLElBQUk7Q0FDdEIsQ0FBQztBQUVGOzs7Ozs7Ozs7O0dBVUc7QUFFSCxNQUFNLE9BQU8sY0FBYztJQUN6Qjs7O09BR0c7SUFDSCxPQUFPLEdBQWtCLEVBQUUsQ0FBQztJQUNuQixVQUFVLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDcEQsU0FBUyxHQUFHLEVBQWUsQ0FBQztJQUM1QixlQUFlLEdBQUc7UUFDekIsSUFBSSxFQUFFLGtCQUFrQjtRQUN4QixHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQztLQUNyRCxDQUFDO0lBRUY7Ozs7Ozs7Ozs7Ozs7T0FhRztJQUNILGFBQWEsR0FBMkIsRUFBRSxDQUFDO0lBQzNDLFVBQVUsR0FBRyxDQUFDLENBQUM7SUFFTixXQUFXLEdBQWUsSUFBSSxDQUFDLFVBQVU7UUFDaEQsQ0FBQyxDQUFD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QUFDLEVBQ0QsRUFBbUIsQ0FDcEIsQ0FBQztRQUVGLGtFQUFrRTtRQUNsRSxtREFBbUQ7UUFDbkQsSUFBSSxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxNQUFNLENBQzVELENBQUMsUUFBUSxFQUFFLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUU7WUFDL0IsSUFBSSxTQUFTLEtBQUssT0FBTyxFQUFFLENBQUM7Z0JBQzFCLFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxLQUFLLENBQUM7WUFDOUIsQ0FBQztZQUNELE9BQU8sUUFBUSxDQUFDO1FBQ2xCLENBQUMsRUFDRCxFQUE0QixDQUM3QixDQUFDO1FBRUYsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7OEdBL0tVLGNBQWM7a0hBQWQsY0FBYyxjQURELE1BQU07OzJGQUNuQixjQUFjO2tCQUQxQixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSwgT25EZXN0cm95LCBQTEFURk9STV9JRCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3RhdGVTb3VyY2UgfSBmcm9tICdAbmdyeC9zaWduYWxzJztcbmltcG9ydCB7IHRocm93SWZOdWxsIH0gZnJvbSAnLi4vLi4vc2hhcmVkL3Rocm93LWlmLW51bGwnO1xuaW1wb3J0IHsgUkVEVVhfREVWVE9PTFNfQ09ORklHIH0gZnJvbSAnLi4vcHJvdmlkZS1kZXZ0b29scy1jb25maWcnO1xuaW1wb3J0IHsgY3VycmVudEFjdGlvbk5hbWVzIH0gZnJvbSAnLi9jdXJyZW50LWFjdGlvbi1uYW1lcyc7XG5pbXBvcnQgeyBEZXZ0b29sc0lubmVyT3B0aW9ucyB9IGZyb20gJy4vZGV2dG9vbHMtZmVhdHVyZSc7XG5pbXBvcnQgeyBDb25uZWN0aW9uLCBTdG9yZVJlZ2lzdHJ5LCBUcmFja2VyIH0gZnJvbSAnLi9tb2RlbHMnO1xuXG5jb25zdCBkdW1teUNvbm5lY3Rpb246IENvbm5lY3Rpb24gPSB7XG4gIHNlbmQ6ICgpID0+IHZvaWQgdHJ1ZSxcbn07XG5cbi8qKlxuICogQSBzZXJ2aWNlIHByb3ZpZGVkIGJ5IHRoZSByb290IGluamVjdG9yIGlzXG4gKiByZXF1aXJlZCBiZWNhdXNlIHRoZSBzeW5jaHJvbml6YXRpb24gcnVuc1xuICogZ2xvYmFsbHkuXG4gKlxuICogVGhlIFNpZ25hbFN0b3JlIGNvdWxkIGJlIHByb3ZpZGVkIGluIGEgY29tcG9uZW50LlxuICogSWYgdGhlIGVmZmVjdCBzdGFydHMgaW4gdGhlIGluamVjdGlvblxuICogY29udGV4dCBvZiB0aGUgU2lnbmFsU3RvcmUsIHRoZSBjb21wbGV0ZSBzeW5jXG4gKiBwcm9jZXNzIHdvdWxkIHNodXQgZG93biBvbmNlIHRoZSBjb21wb25lbnQgZ2V0c1xuICogZGVzdHJveWVkLlxuICovXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIERldnRvb2xzU3luY2VyIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgLyoqXG4gICAqIFN0b3JlcyBhbGwgU2lnbmFsU3RvcmVzIHRoYXQgYXJlIGNvbm5lY3RlZCB0byB0aGVcbiAgICogRGV2VG9vbHMgYWxvbmcgdGhlaXIgb3B0aW9ucywgbmFtZXMgYW5kIGlkLlxuICAgKi9cbiAgI3N0b3JlczogU3RvcmVSZWdpc3RyeSA9IHt9O1xuICByZWFkb25seSAjaXNCcm93c2VyID0gaXNQbGF0Zm9ybUJyb3dzZXIoaW5qZWN0KFBMQVRGT1JNX0lEKSk7XG4gIHJlYWRvbmx5ICN0cmFja2VycyA9IFtdIGFzIFRyYWNrZXJbXTtcbiAgcmVhZG9ubHkgI2RldnRvb2xzQ29uZmlnID0ge1xuICAgIG5hbWU6ICdOZ1J4IFNpZ25hbFN0b3JlJyxcbiAgICAuLi5pbmplY3QoUkVEVVhfREVWVE9PTFNfQ09ORklHLCB7IG9wdGlvbmFsOiB0cnVlIH0pLFxuICB9O1xuXG4gIC8qKlxuICAgKiBNYWludGFpbnMgdGhlIGN1cnJlbnQgc3RhdGVzIG9mIGFsbCBzdG9yZXMgdG8gYXZvaWQgY29uZmxpY3RzXG4gICAqIGJldHdlZW4gZ2xpdGNoLWZyZWUgYW5kIGdsaXRjaGVkIHRyYWNrZXJzIHdoZW4gdXNlZCBzaW11bHRhbmVvdXNseS5cbiAgICpcbiAgICogVGhlIGNoYWxsZW5nZSBsaWVzIGluIGVuc3VyaW5nIHRoYXQgZ2xpdGNoZWQgdHJhY2tlcnMgZG8gbm90XG4gICAqIGludGVyZmVyZSB3aXRoIHRoZSBzeW5jaHJvbml6YXRpb24gcHJvY2VzcyBvZiBnbGl0Y2gtZnJlZSB0cmFja2Vycy5cbiAgICogU3BlY2lmaWNhbGx5LCBnbGl0Y2hlZCB0cmFja2VycyBjb3VsZCBjYXVzZSB0aGUgc3luY2hyb25pemF0aW9uIHRvXG4gICAqIHJlYWQgdGhlIGN1cnJlbnQgc3RhdGUgb2Ygc3RvcmVzIG1hbmFnZWQgYnkgZ2xpdGNoLWZyZWUgdHJhY2tlcnMuXG4gICAqXG4gICAqIFRoZXJlZm9yZSwgdGhlIHN5bmNocm9uaXphdGlvbiBwcm9jZXNzIGRvZXNuJ3QgcmVhZCB0aGUgc3RhdGUgZnJvbVxuICAgKiBlYWNoIHN0b3JlLCBidXQgcmVsaWVzIG9uICNjdXJyZW50U3RhdGUuXG4gICAqXG4gICAqIFBsZWFzZSBub3RlLCB0aGF0IGhlcmUgdGhlIGtleSBpcyB0aGUgbmFtZSBhbmQgbm90IHRoZSBpZC5cbiAgICovXG4gICNjdXJyZW50U3RhdGU6IFJlY29yZDxzdHJpbmcsIG9iamVjdD4gPSB7fTtcbiAgI2N1cnJlbnRJZCA9IDE7XG5cbiAgcmVhZG9ubHkgI2Nvbm5lY3Rpb246IENvbm5lY3Rpb24gPSB0aGlzLiNpc0Jyb3dzZXJcbiAgICA/IHdpbmRvdy5fX1JFRFVYX0RFVlRPT0xTX0VYVEVOU0lPTl9fXG4gICAgICA/IHdpbmRvdy5fX1JFRFVYX0RFVlRPT0xTX0VYVEVOU0lPTl9fLmNvbm5lY3QodGhpcy4jZGV2dG9vbHNDb25maWcpXG4gICAgICA6IGR1bW15Q29ubmVjdGlvblxuICAgIDogZHVtbXlDb25uZWN0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGlmICghdGhpcy4jaXNCcm93c2VyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgY3VycmVudEFjdGlvbk5hbWVzLmNsZWFyKCk7XG4gIH1cblxuICBzeW5jVG9EZXZUb29scyhjaGFuZ2VkU3RhdGVQZXJJZDogUmVjb3JkPHN0cmluZywgb2JqZWN0Pikge1xuICAgIGNvbnN0IG1hcHBlZENoYW5nZWRTdGF0ZVBlck5hbWUgPSBPYmplY3QuZW50cmllcyhjaGFuZ2VkU3RhdGVQZXJJZCkucmVkdWNlKFxuICAgICAgKGFjYywgW2lkLCBzdG9yZV0pID0+IHtcbiAgICAgICAgY29uc3QgeyBvcHRpb25zLCBuYW1lIH0gPSB0aGlzLiNzdG9yZXNbaWRdO1xuICAgICAgICBhY2NbbmFtZV0gPSBvcHRpb25zLm1hcChzdG9yZSk7XG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgICB9LFxuICAgICAge30gYXMgUmVjb3JkPHN0cmluZywgb2JqZWN0PixcbiAgICApO1xuICAgIHRoaXMuI2N1cnJlbnRTdGF0ZSA9IHtcbiAgICAgIC4uLnRoaXMuI2N1cnJlbnRTdGF0ZSxcbiAgICAgIC4uLm1hcHBlZENoYW5nZWRTdGF0ZVBlck5hbWUsXG4gICAgfTtcblxuICAgIGNvbnN0IG5hbWVzID0gQXJyYXkuZnJvbShjdXJyZW50QWN0aW9uTmFtZXMpO1xuICAgIGNvbnN0IHR5cGUgPSBuYW1lcy5sZW5ndGggPyBuYW1lcy5qb2luKCcsICcpIDogJ1N0b3JlIFVwZGF0ZSc7XG4gICAgY3VycmVudEFjdGlvbk5hbWVzLmNsZWFyKCk7XG5cbiAgICB0aGlzLiNjb25uZWN0aW9uLnNlbmQoeyB0eXBlIH0sIHRoaXMuI2N1cnJlbnRTdGF0ZSk7XG4gIH1cblxuICBnZXROZXh0SWQoKSB7XG4gICAgcmV0dXJuIFN0cmluZyh0aGlzLiNjdXJyZW50SWQrKyk7XG4gIH1cblxuICAvKipcbiAgICogQ29uc3VtZXIgcHJvdmlkZXMgdGhlIGlkLiBUaGF0IGlzIGJlY2F1c2Ugd2UgY2FuIG9ubHkgc3RhcnRcbiAgICogdHJhY2tpbmcgdGhlIHN0b3JlIGluIHRoZSBpbml0IGhvb2suXG4gICAqIFVuZm9ydHVuYXRlbHksIG1ldGhvZHMgZm9yIHJlbmFtaW5nIGhhdmluZyB0aGUgZmluYWwgaWRcbiAgICogbmVlZCB0byBiZSBkZWZpbmVkIGFscmVhZHkgYmVmb3JlLlxuICAgKiBUaGF0J3Mgd2h5IGB3aXRoRGV2dG9vbHNgIHJlcXVlc3RzIGZpcnN0IHRoZSBpZCBhbmRcbiAgICogdGhlbiByZWdpc3RlcnMgaXRzZWxmIGxhdGVyLlxuICAgKi9cbiAgYWRkU3RvcmUoXG4gICAgaWQ6IHN0cmluZyxcbiAgICBuYW1lOiBzdHJpbmcsXG4gICAgc3RvcmU6IFN0YXRlU291cmNlPG9iamVjdD4sXG4gICAgb3B0aW9uczogRGV2dG9vbHNJbm5lck9wdGlvbnMsXG4gICkge1xuICAgIGxldCBzdG9yZU5hbWUgPSBuYW1lO1xuICAgIGNvbnN0IG5hbWVzID0gT2JqZWN0LnZhbHVlcyh0aGlzLiNzdG9yZXMpLm1hcCgoc3RvcmUpID0+IHN0b3JlLm5hbWUpO1xuXG4gICAgaWYgKG5hbWVzLmluY2x1ZGVzKHN0b3JlTmFtZSkpIHtcbiAgICAgIC8vIGNvbnN0IHsgb3B0aW9ucyB9ID0gdGhyb3dJZk51bGwoXG4gICAgICAvLyAgIE9iamVjdC52YWx1ZXModGhpcy4jc3RvcmVzKS5maW5kKChzdG9yZSkgPT4gc3RvcmUubmFtZSA9PT0gc3RvcmVOYW1lKVxuICAgICAgLy8gKTtcbiAgICAgIGlmICghb3B0aW9ucy5pbmRleE5hbWVzKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQW4gaW5zdGFuY2Ugb2YgdGhlIHN0b3JlICR7c3RvcmVOYW1lfSBhbHJlYWR5IGV4aXN0cy4gXFxcbkVuYWJsZSBhdXRvbWF0aWMgaW5kZXhpbmcgdmlhIHdpdGhEZXZUb29scygnJHtzdG9yZU5hbWV9JywgeyBpbmRleE5hbWVzOiB0cnVlIH0pLCBvciByZW5hbWUgaXQgdXBvbiBpbnN0YW50aWF0aW9uLmApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSAxOyBuYW1lcy5pbmNsdWRlcyhzdG9yZU5hbWUpOyBpKyspIHtcbiAgICAgIHN0b3JlTmFtZSA9IGAke25hbWV9LSR7aX1gO1xuICAgIH1cbiAgICB0aGlzLiNzdG9yZXNbaWRdID0geyBuYW1lOiBzdG9yZU5hbWUsIG9wdGlvbnMgfTtcblxuICAgIGNvbnN0IHRyYWNrZXIgPSBvcHRpb25zLnRyYWNrZXI7XG4gICAgaWYgKCF0aGlzLiN0cmFja2Vycy5pbmNsdWRlcyh0cmFja2VyKSkge1xuICAgICAgdGhpcy4jdHJhY2tlcnMucHVzaCh0cmFja2VyKTtcbiAgICB9XG5cbiAgICB0cmFja2VyLm9uQ2hhbmdlKChjaGFuZ2VkU3RhdGUpID0+IHRoaXMuc3luY1RvRGV2VG9vbHMoY2hhbmdlZFN0YXRlKSk7XG4gICAgdHJhY2tlci50cmFjayhpZCwgc3RvcmUpO1xuICB9XG5cbiAgcmVtb3ZlU3RvcmUoaWQ6IHN0cmluZykge1xuICAgIGNvbnN0IG5hbWUgPSB0aGlzLiNzdG9yZXNbaWRdLm5hbWU7XG4gICAgdGhpcy4jc3RvcmVzID0gT2JqZWN0LmVudHJpZXModGhpcy4jc3RvcmVzKS5yZWR1Y2UoXG4gICAgICAobmV3U3RvcmUsIFtzdG9yZUlkLCB2YWx1ZV0pID0+IHtcbiAgICAgICAgaWYgKHN0b3JlSWQgIT09IGlkKSB7XG4gICAgICAgICAgbmV3U3RvcmVbc3RvcmVJZF0gPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3U3RvcmU7XG4gICAgICB9LFxuICAgICAge30gYXMgU3RvcmVSZWdpc3RyeSxcbiAgICApO1xuXG4gICAgdGhpcy4jY3VycmVudFN0YXRlID0gT2JqZWN0LmVudHJpZXModGhpcy4jY3VycmVudFN0YXRlKS5yZWR1Y2UoXG4gICAgICAobmV3U3RhdGUsIFtzdG9yZU5hbWUsIHN0YXRlXSkgPT4ge1xuICAgICAgICBpZiAoc3RvcmVOYW1lICE9PSBuYW1lKSB7XG4gICAgICAgICAgbmV3U3RhdGVbbmFtZV0gPSBzdGF0ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3U3RhdGU7XG4gICAgICB9LFxuICAgICAge30gYXMgUmVjb3JkPHN0cmluZywgb2JqZWN0PixcbiAgICApO1xuXG4gICAgZm9yIChjb25zdCB0cmFja2VyIG9mIHRoaXMuI3RyYWNrZXJzKSB7XG4gICAgICB0cmFja2VyLnJlbW92ZVN0b3JlKGlkKTtcbiAgICB9XG4gIH1cblxuICByZW5hbWVTdG9yZShvbGROYW1lOiBzdHJpbmcsIG5ld05hbWU6IHN0cmluZykge1xuICAgIGNvbnN0IHN0b3JlTmFtZXMgPSBPYmplY3QudmFsdWVzKHRoaXMuI3N0b3JlcykubWFwKChzdG9yZSkgPT4gc3RvcmUubmFtZSk7XG4gICAgY29uc3QgaWQgPSB0aHJvd0lmTnVsbChcbiAgICAgIE9iamVjdC5rZXlzKHRoaXMuI3N0b3JlcykuZmluZCgoaWQpID0+IHRoaXMuI3N0b3Jlc1tpZF0ubmFtZSA9PT0gb2xkTmFtZSksXG4gICAgKTtcbiAgICBpZiAoc3RvcmVOYW1lcy5pbmNsdWRlcyhuZXdOYW1lKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgTmdSeCBUb29sa2l0L0RldlRvb2xzOiBjYW5ub3QgcmVuYW1lIGZyb20gJHtvbGROYW1lfSB0byAke25ld05hbWV9LiAke25ld05hbWV9IGlzIGFscmVhZHkgYXNzaWduZWQgdG8gYW5vdGhlciBTaWduYWxTdG9yZSBpbnN0YW5jZS5gLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLiNzdG9yZXMgPSBPYmplY3QuZW50cmllcyh0aGlzLiNzdG9yZXMpLnJlZHVjZShcbiAgICAgIChuZXdTdG9yZSwgW2lkLCB2YWx1ZV0pID0+IHtcbiAgICAgICAgaWYgKHZhbHVlLm5hbWUgPT09IG9sZE5hbWUpIHtcbiAgICAgICAgICBuZXdTdG9yZVtpZF0gPSB7IC4uLnZhbHVlLCBuYW1lOiBuZXdOYW1lIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbmV3U3RvcmVbaWRdID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ld1N0b3JlO1xuICAgICAgfSxcbiAgICAgIHt9IGFzIFN0b3JlUmVnaXN0cnksXG4gICAgKTtcblxuICAgIC8vIHdlIGRvbid0IHJlbmFtZSBpbiAjY3VycmVudFN0YXRlIGJ1dCB3YWl0IGZvciB0cmFja2VyIHRvIG5vdGlmeVxuICAgIC8vIHVzIHdpdGggYSBjaGFuZ2VkIHN0YXRlIHRoYXQgY29udGFpbnMgdGhhdCBuYW1lLlxuICAgIHRoaXMuI2N1cnJlbnRTdGF0ZSA9IE9iamVjdC5lbnRyaWVzKHRoaXMuI2N1cnJlbnRTdGF0ZSkucmVkdWNlKFxuICAgICAgKG5ld1N0YXRlLCBbc3RvcmVOYW1lLCBzdGF0ZV0pID0+IHtcbiAgICAgICAgaWYgKHN0b3JlTmFtZSAhPT0gb2xkTmFtZSkge1xuICAgICAgICAgIG5ld1N0YXRlW3N0b3JlTmFtZV0gPSBzdGF0ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3U3RhdGU7XG4gICAgICB9LFxuICAgICAge30gYXMgUmVjb3JkPHN0cmluZywgb2JqZWN0PixcbiAgICApO1xuXG4gICAgdGhpcy4jdHJhY2tlcnMuZm9yRWFjaCgodHJhY2tlcikgPT4gdHJhY2tlci5ub3RpZnlSZW5hbWVkU3RvcmUoaWQpKTtcbiAgfVxufVxuIl19","import { inject, InjectionToken } from '@angular/core';\nimport { signalStoreFeature, withHooks, withMethods, } from '@ngrx/signals';\nimport { DefaultTracker } from './internal/default-tracker';\nimport { DevtoolsSyncer } from './internal/devtools-syncer.service';\nexport const renameDevtoolsMethodName = '___renameDevtoolsName';\nexport const uniqueDevtoolsId = '___uniqueDevtoolsId';\nconst EXISTING_NAMES = new InjectionToken('Array contain existing names for the signal stores', { factory: () => [], providedIn: 'root' });\n/**\n * Adds this store as a feature state to the Redux DevTools.\n *\n * By default, the action name is 'Store Update'. You can\n * change that via the {@link updateState} method, which has as second\n * parameter the action name.\n *\n * The standalone function {@link renameDevtoolsName} can rename\n * the store name.\n *\n * @param name name of the store as it should appear in the DevTools\n * @param features features to extend or modify the behavior of the Devtools\n */\nexport function withDevtools(name, ...features) {\n return signalStoreFeature(withMethods(() => {\n const syncer = inject(DevtoolsSyncer);\n const id = syncer.getNextId();\n // TODO: use withProps and symbols\n return {\n [renameDevtoolsMethodName]: (newName) => {\n syncer.renameStore(name, newName);\n },\n [uniqueDevtoolsId]: () => id,\n };\n }), withHooks((store) => {\n const syncer = inject(DevtoolsSyncer);\n const id = String(store[uniqueDevtoolsId]());\n return {\n onInit() {\n const id = String(store[uniqueDevtoolsId]());\n const finalOptions = {\n indexNames: !features.some((f) => f.indexNames === false),\n map: features.find((f) => f.map)?.map ?? ((state) => state),\n tracker: inject(features.find((f) => f.tracker)?.tracker || DefaultTracker),\n };\n syncer.addStore(id, name, store, finalOptions);\n },\n onDestroy() {\n syncer.removeStore(id);\n },\n };\n }));\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1kZXZ0b29scy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmdyeC10b29sa2l0L3NyYy9saWIvZGV2dG9vbHMvd2l0aC1kZXZ0b29scy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RCxPQUFPLEVBR0wsa0JBQWtCLEVBQ2xCLFNBQVMsRUFDVCxXQUFXLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBSzVELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQVNwRSxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyx1QkFBdUIsQ0FBQztBQUNoRSxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxxQkFBcUIsQ0FBQztBQUV0RCxNQUFNLGNBQWMsR0FBRyxJQUFJLGNBQWMsQ0FDdkMsb0RBQW9ELEVBQ3BELEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQWMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLENBQ3RELENBQUM7QUFFRjs7Ozs7Ozs7Ozs7O0dBWUc7QUFDSCxNQUFNLFVBQVUsWUFBWSxDQUFDLElBQVksRUFBRSxHQUFHLFFBQTJCO0lBQ3ZFLE9BQU8sa0JBQWtCLENBQ3ZCLFdBQVcsQ0FBQyxHQUFHLEVBQUU7UUFDZixNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFdEMsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBRTlCLGtDQUFrQztRQUNsQyxPQUFPO1lBQ0wsQ0FBQyx3QkFBd0IsQ0FBQyxFQUFFLENBQUMsT0FBZSxFQUFFLEVBQUU7Z0JBQzlDLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ3BDLENBQUM7WUFDRCxDQUFDLGdCQUFnQixDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtTQUNxQixDQUFDO0lBQ3RELENBQUMsQ0FBQyxFQUNGLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1FBQ2xCLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN0QyxNQUFNLEVBQUUsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzdDLE9BQU87WUFDTCxNQUFNO2dCQUNKLE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQzdDLE1BQU0sWUFBWSxHQUF5QjtvQkFDekMsVUFBVSxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsS0FBSyxLQUFLLENBQUM7b0JBQ3pELEdBQUcsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQztvQkFDM0QsT0FBTyxFQUFFLE1BQU0sQ0FDYixRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsT0FBTyxJQUFJLGNBQWMsQ0FDM0Q7aUJBQ0YsQ0FBQztnQkFFRixNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFlBQVksQ0FBQyxDQUFDO1lBQ2pELENBQUM7WUFDRCxTQUFTO2dCQUNQLE1BQU0sQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDekIsQ0FBQztTQUNGLENBQUM7SUFDSixDQUFDLENBQUMsQ0FDMkQsQ0FBQztBQUNsRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgRW1wdHlGZWF0dXJlUmVzdWx0LFxuICBTaWduYWxTdG9yZUZlYXR1cmUsXG4gIHNpZ25hbFN0b3JlRmVhdHVyZSxcbiAgd2l0aEhvb2tzLFxuICB3aXRoTWV0aG9kcyxcbn0gZnJvbSAnQG5ncngvc2lnbmFscyc7XG5pbXBvcnQgeyBEZWZhdWx0VHJhY2tlciB9IGZyb20gJy4vaW50ZXJuYWwvZGVmYXVsdC10cmFja2VyJztcbmltcG9ydCB7XG4gIERldnRvb2xzRmVhdHVyZSxcbiAgRGV2dG9vbHNJbm5lck9wdGlvbnMsXG59IGZyb20gJy4vaW50ZXJuYWwvZGV2dG9vbHMtZmVhdHVyZSc7XG5pbXBvcnQgeyBEZXZ0b29sc1N5bmNlciB9IGZyb20gJy4vaW50ZXJuYWwvZGV2dG9vbHMtc3luY2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVkdXhEZXZ0b29sc0V4dGVuc2lvbiB9IGZyb20gJy4vaW50ZXJuYWwvbW9kZWxzJztcblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgV2luZG93IHtcbiAgICBfX1JFRFVYX0RFVlRPT0xTX0VYVEVOU0lPTl9fOiBSZWR1eERldnRvb2xzRXh0ZW5zaW9uIHwgdW5kZWZpbmVkO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCByZW5hbWVEZXZ0b29sc01ldGhvZE5hbWUgPSAnX19fcmVuYW1lRGV2dG9vbHNOYW1lJztcbmV4cG9ydCBjb25zdCB1bmlxdWVEZXZ0b29sc0lkID0gJ19fX3VuaXF1ZURldnRvb2xzSWQnO1xuXG5jb25zdCBFWElTVElOR19OQU1FUyA9IG5ldyBJbmplY3Rpb25Ub2tlbihcbiAgJ0FycmF5IGNvbnRhaW4gZXhpc3RpbmcgbmFtZXMgZm9yIHRoZSBzaWduYWwgc3RvcmVzJyxcbiAgeyBmYWN0b3J5OiAoKSA9PiBbXSBhcyBzdHJpbmdbXSwgcHJvdmlkZWRJbjogJ3Jvb3QnIH0sXG4pO1xuXG4vKipcbiAqIEFkZHMgdGhpcyBzdG9yZSBhcyBhIGZlYXR1cmUgc3RhdGUgdG8gdGhlIFJlZHV4IERldlRvb2xzLlxuICpcbiAqIEJ5IGRlZmF1bHQsIHRoZSBhY3Rpb24gbmFtZSBpcyAnU3RvcmUgVXBkYXRlJy4gWW91IGNhblxuICogY2hhbmdlIHRoYXQgdmlhIHRoZSB7QGxpbmsgdXBkYXRlU3RhdGV9IG1ldGhvZCwgd2hpY2ggaGFzIGFzIHNlY29uZFxuICogcGFyYW1ldGVyIHRoZSBhY3Rpb24gbmFtZS5cbiAqXG4gKiBUaGUgc3RhbmRhbG9uZSBmdW5jdGlvbiB7QGxpbmsgcmVuYW1lRGV2dG9vbHNOYW1lfSBjYW4gcmVuYW1lXG4gKiB0aGUgc3RvcmUgbmFtZS5cbiAqXG4gKiBAcGFyYW0gbmFtZSBuYW1lIG9mIHRoZSBzdG9yZSBhcyBpdCBzaG91bGQgYXBwZWFyIGluIHRoZSBEZXZUb29sc1xuICogQHBhcmFtIGZlYXR1cmVzIGZlYXR1cmVzIHRvIGV4dGVuZCBvciBtb2RpZnkgdGhlIGJlaGF2aW9yIG9mIHRoZSBEZXZ0b29sc1xuICovXG5leHBvcnQgZnVuY3Rpb24gd2l0aERldnRvb2xzKG5hbWU6IHN0cmluZywgLi4uZmVhdHVyZXM6IERldnRvb2xzRmVhdHVyZVtdKSB7XG4gIHJldHVybiBzaWduYWxTdG9yZUZlYXR1cmUoXG4gICAgd2l0aE1ldGhvZHMoKCkgPT4ge1xuICAgICAgY29uc3Qgc3luY2VyID0gaW5qZWN0KERldnRvb2xzU3luY2VyKTtcblxuICAgICAgY29uc3QgaWQgPSBzeW5jZXIuZ2V0TmV4dElkKCk7XG5cbiAgICAgIC8vIFRPRE86IHVzZSB3aXRoUHJvcHMgYW5kIHN5bWJvbHNcbiAgICAgIHJldHVybiB7XG4gICAgICAgIFtyZW5hbWVEZXZ0b29sc01ldGhvZE5hbWVdOiAobmV3TmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgc3luY2VyLnJlbmFtZVN0b3JlKG5hbWUsIG5ld05hbWUpO1xuICAgICAgICB9LFxuICAgICAgICBbdW5pcXVlRGV2dG9vbHNJZF06ICgpID0+IGlkLFxuICAgICAgfSBhcyBSZWNvcmQ8c3RyaW5nLCAobmV3TmFtZT86IHVua25vd24pID0+IHVua25vd24+O1xuICAgIH0pLFxuICAgIHdpdGhIb29rcygoc3RvcmUpID0+IHtcbiAgICAgIGNvbnN0IHN5bmNlciA9IGluamVjdChEZXZ0b29sc1N5bmNlcik7XG4gICAgICBjb25zdCBpZCA9IFN0cmluZyhzdG9yZVt1bmlxdWVEZXZ0b29sc0lkXSgpKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG9uSW5pdCgpIHtcbiAgICAgICAgICBjb25zdCBpZCA9IFN0cmluZyhzdG9yZVt1bmlxdWVEZXZ0b29sc0lkXSgpKTtcbiAgICAgICAgICBjb25zdCBmaW5hbE9wdGlvbnM6IERldnRvb2xzSW5uZXJPcHRpb25zID0ge1xuICAgICAgICAgICAgaW5kZXhOYW1lczogIWZlYXR1cmVzLnNvbWUoKGYpID0+IGYuaW5kZXhOYW1lcyA9PT0gZmFsc2UpLFxuICAgICAgICAgICAgbWFwOiBmZWF0dXJlcy5maW5kKChmKSA9PiBmLm1hcCk/Lm1hcCA/PyAoKHN0YXRlKSA9PiBzdGF0ZSksXG4gICAgICAgICAgICB0cmFja2VyOiBpbmplY3QoXG4gICAgICAgICAgICAgIGZlYXR1cmVzLmZpbmQoKGYpID0+IGYudHJhY2tlcik/LnRyYWNrZXIgfHwgRGVmYXVsdFRyYWNrZXIsXG4gICAgICAgICAgICApLFxuICAgICAgICAgIH07XG5cbiAgICAgICAgICBzeW5jZXIuYWRkU3RvcmUoaWQsIG5hbWUsIHN0b3JlLCBmaW5hbE9wdGlvbnMpO1xuICAgICAgICB9LFxuICAgICAgICBvbkRlc3Ryb3koKSB7XG4gICAgICAgICAgc3luY2VyLnJlbW92ZVN0b3JlKGlkKTtcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfSksXG4gICkgYXMgU2lnbmFsU3RvcmVGZWF0dXJlPEVtcHR5RmVhdHVyZVJlc3VsdCwgRW1wdHlGZWF0dXJlUmVzdWx0Pjtcbn1cbiJdfQ==","import { renameDevtoolsMethodName } from './with-devtools';\n/**\n * Renames the name of a store how it appears in the Devtools.\n * @param store instance of the SignalStore\n * @param newName new name for the Devtools\n */\nexport function renameDevtoolsName(store, newName) {\n const renameMethod = store[renameDevtoolsMethodName];\n if (!renameMethod) {\n throw new Error(\"Devtools extensions haven't been added to this store.\");\n }\n renameMethod(newName);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuYW1lLWRldnRvb2xzLW5hbWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdG9vbGtpdC9zcmMvbGliL2RldnRvb2xzL3JlbmFtZS1kZXZ0b29scy1uYW1lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTNEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsa0JBQWtCLENBQ2hDLEtBQXlCLEVBQ3pCLE9BQWU7SUFFZixNQUFNLFlBQVksR0FBSSxLQUFtRCxDQUN2RSx3QkFBd0IsQ0FDekIsQ0FBQztJQUNGLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNsQixNQUFNLElBQUksS0FBSyxDQUFDLHVEQUF1RCxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVELFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN4QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3RhdGVTb3VyY2UgfSBmcm9tICdAbmdyeC9zaWduYWxzJztcbmltcG9ydCB7IHJlbmFtZURldnRvb2xzTWV0aG9kTmFtZSB9IGZyb20gJy4vd2l0aC1kZXZ0b29scyc7XG5cbi8qKlxuICogUmVuYW1lcyB0aGUgbmFtZSBvZiBhIHN0b3JlIGhvdyBpdCBhcHBlYXJzIGluIHRoZSBEZXZ0b29scy5cbiAqIEBwYXJhbSBzdG9yZSBpbnN0YW5jZSBvZiB0aGUgU2lnbmFsU3RvcmVcbiAqIEBwYXJhbSBuZXdOYW1lIG5ldyBuYW1lIGZvciB0aGUgRGV2dG9vbHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbmFtZURldnRvb2xzTmFtZTxTdGF0ZSBleHRlbmRzIG9iamVjdD4oXG4gIHN0b3JlOiBTdGF0ZVNvdXJjZTxTdGF0ZT4sXG4gIG5ld05hbWU6IHN0cmluZyxcbik6IHZvaWQge1xuICBjb25zdCByZW5hbWVNZXRob2QgPSAoc3RvcmUgYXMgUmVjb3JkPHN0cmluZywgKG5ld05hbWU6IHN0cmluZykgPT4gdm9pZD4pW1xuICAgIHJlbmFtZURldnRvb2xzTWV0aG9kTmFtZVxuICBdO1xuICBpZiAoIXJlbmFtZU1ldGhvZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIkRldnRvb2xzIGV4dGVuc2lvbnMgaGF2ZW4ndCBiZWVuIGFkZGVkIHRvIHRoaXMgc3RvcmUuXCIpO1xuICB9XG5cbiAgcmVuYW1lTWV0aG9kKG5ld05hbWUpO1xufVxuIl19","import { patchState as originalPatchState, } from '@ngrx/signals';\nimport { currentActionNames } from './internal/current-action-names';\n/**\n * @deprecated Has been renamed to `updateState`\n */\nexport const patchState = (state, action, ...rest) => {\n updateState(state, action, ...rest);\n};\n/**\n * Wrapper of `patchState` for DevTools integration. Next to updating the state,\n * it also sends the action to the DevTools.\n * @param stateSource state of Signal Store\n * @param action name of action how it will show in DevTools\n * @param updaters updater functions or objects\n */\nexport function updateState(stateSource, action, ...updaters) {\n currentActionNames.add(action);\n return originalPatchState(stateSource, ...updaters);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLXN0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ3J4LXRvb2xraXQvc3JjL2xpYi9kZXZ0b29scy91cGRhdGUtc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFVBQVUsSUFBSSxrQkFBa0IsR0FHakMsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFTckU7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQVksQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcsSUFBSSxFQUFFLEVBQUU7SUFDNUQsV0FBVyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztBQUN0QyxDQUFDLENBQUM7QUFFRjs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsV0FBVyxDQUN6QixXQUF1QyxFQUN2QyxNQUFjLEVBQ2QsR0FBRyxRQUVGO0lBRUQsa0JBQWtCLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQy9CLE9BQU8sa0JBQWtCLENBQUMsV0FBVyxFQUFFLEdBQUcsUUFBUSxDQUFDLENBQUM7QUFDdEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIHBhdGNoU3RhdGUgYXMgb3JpZ2luYWxQYXRjaFN0YXRlLFxuICBQYXJ0aWFsU3RhdGVVcGRhdGVyLFxuICBXcml0YWJsZVN0YXRlU291cmNlLFxufSBmcm9tICdAbmdyeC9zaWduYWxzJztcbmltcG9ydCB7IGN1cnJlbnRBY3Rpb25OYW1lcyB9IGZyb20gJy4vaW50ZXJuYWwvY3VycmVudC1hY3Rpb24tbmFtZXMnO1xuXG50eXBlIFBhdGNoRm4gPSB0eXBlb2Ygb3JpZ2luYWxQYXRjaFN0YXRlIGV4dGVuZHMgKFxuICBhcmcxOiBpbmZlciBGaXJzdCxcbiAgLi4uYXJnczogaW5mZXIgUmVzdFxuKSA9PiBpbmZlciBSZXR1cm5lclxuICA/IChzdGF0ZTogRmlyc3QsIGFjdGlvbjogc3RyaW5nLCAuLi5yZXN0OiBSZXN0KSA9PiBSZXR1cm5lclxuICA6IG5ldmVyO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkIEhhcyBiZWVuIHJlbmFtZWQgdG8gYHVwZGF0ZVN0YXRlYFxuICovXG5leHBvcnQgY29uc3QgcGF0Y2hTdGF0ZTogUGF0Y2hGbiA9IChzdGF0ZSwgYWN0aW9uLCAuLi5yZXN0KSA9PiB7XG4gIHVwZGF0ZVN0YXRlKHN0YXRlLCBhY3Rpb24sIC4uLnJlc3QpO1xufTtcblxuLyoqXG4gKiBXcmFwcGVyIG9mIGBwYXRjaFN0YXRlYCBmb3IgRGV2VG9vbHMgaW50ZWdyYXRpb24uIE5leHQgdG8gdXBkYXRpbmcgdGhlIHN0YXRlLFxuICogaXQgYWxzbyBzZW5kcyB0aGUgYWN0aW9uIHRvIHRoZSBEZXZUb29scy5cbiAqIEBwYXJhbSBzdGF0ZVNvdXJjZSBzdGF0ZSBvZiBTaWduYWwgU3RvcmVcbiAqIEBwYXJhbSBhY3Rpb24gbmFtZSBvZiBhY3Rpb24gaG93IGl0IHdpbGwgc2hvdyBpbiBEZXZUb29sc1xuICogQHBhcmFtIHVwZGF0ZXJzIHVwZGF0ZXIgZnVuY3Rpb25zIG9yIG9iamVjdHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZVN0YXRlPFN0YXRlIGV4dGVuZHMgb2JqZWN0PihcbiAgc3RhdGVTb3VyY2U6IFdyaXRhYmxlU3RhdGVTb3VyY2U8U3RhdGU+LFxuICBhY3Rpb246IHN0cmluZyxcbiAgLi4udXBkYXRlcnM6IEFycmF5PFxuICAgIFBhcnRpYWw8Tm9JbmZlcjxTdGF0ZT4+IHwgUGFydGlhbFN0YXRlVXBkYXRlcjxOb0luZmVyPFN0YXRlPj5cbiAgPlxuKTogdm9pZCB7XG4gIGN1cnJlbnRBY3Rpb25OYW1lcy5hZGQoYWN0aW9uKTtcbiAgcmV0dXJuIG9yaWdpbmFsUGF0Y2hTdGF0ZShzdGF0ZVNvdXJjZSwgLi4udXBkYXRlcnMpO1xufVxuIl19","/**\n * Stub for DevTools integration. Can be used to disable DevTools in production.\n */\nexport const withDevToolsStub = () => (store) => store;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1kZXYtdG9vbHMtc3R1Yi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmdyeC10b29sa2l0L3NyYy9saWIvZGV2dG9vbHMvd2l0aC1kZXYtdG9vbHMtc3R1Yi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUF3QixHQUFHLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgd2l0aERldnRvb2xzIH0gZnJvbSAnLi93aXRoLWRldnRvb2xzJztcblxuLyoqXG4gKiBTdHViIGZvciBEZXZUb29scyBpbnRlZ3JhdGlvbi4gQ2FuIGJlIHVzZWQgdG8gZGlzYWJsZSBEZXZUb29scyBpbiBwcm9kdWN0aW9uLlxuICovXG5leHBvcnQgY29uc3Qgd2l0aERldlRvb2xzU3R1YjogdHlwZW9mIHdpdGhEZXZ0b29scyA9ICgpID0+IChzdG9yZSkgPT4gc3RvcmU7XG4iXX0=","export function assertActionFnSpecs(obj) {\n if (!obj || typeof obj !== 'object') {\n throw new Error('%o is not an Action Specification');\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXJ0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmdyeC10b29sa2l0L3NyYy9saWIvYXNzZXJ0aW9ucy9hc3NlcnRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sVUFBVSxtQkFBbUIsQ0FDakMsR0FBWTtJQUVaLElBQUksQ0FBQyxHQUFHLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDcEMsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWN0aW9uc0ZuU3BlY3MgfSBmcm9tICcuLi93aXRoLXJlZHV4JztcblxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydEFjdGlvbkZuU3BlY3MoXG4gIG9iajogdW5rbm93bixcbik6IGFzc2VydHMgb2JqIGlzIEFjdGlvbnNGblNwZWNzIHtcbiAgaWYgKCFvYmogfHwgdHlwZW9mIG9iaiAhPT0gJ29iamVjdCcpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJyVvIGlzIG5vdCBhbiBBY3Rpb24gU3BlY2lmaWNhdGlvbicpO1xuICB9XG59XG4iXX0=","import { Subject } from 'rxjs';\nimport { assertActionFnSpecs } from './assertions/assertions';\nexport function payload() {\n return {};\n}\nexport const noPayload = {};\n/**\n * Creates a reducer function to separate the reducer logic into another file.\n *\n * ```typescript\n * interface FlightState {\n * flights: Flight[];\n * effect1: boolean;\n * effect2: boolean;\n * }\n *\n * const initialState: FlightState = {\n * flights: [],\n * effect1: false,\n * effect2: false,\n * };\n *\n * const actions = {\n * init: noPayload,\n * updateEffect1: payload<{ value: boolean }>(),\n * updateEffect2: payload<{ value: boolean }>(),\n * };\n *\n * const reducer = createReducer<FlightState, typeof actions>((actions, on) => {\n * on(actions.updateEffect1, (state, { value }) => {\n * patchState(state, { effect1: value });\n * });\n *\n * on(actions.updateEffect2, (state, { value }) => {\n * patchState(state, { effect2: value });\n * });\n * });\n *\n * signalStore(\n * withState(initialState),\n * withRedux({\n * actions,\n * reducer,\n * })\n * );\n * ```\n * @param reducerFactory\n */\nexport function createReducer(reducerFactory) {\n return reducerFactory;\n}\n/**\n * @deprecated Use NgRx's `@ngrx/signals/events` starting in 19.2\n *\n * Creates the effects function to separate the effects logic into another file.\n *\n * ```typescript\n * interface FlightState {\n * flights: Flight[];\n * effect1: boolean;\n * effect2: boolean;\n * }\n *\n * const initialState: FlightState = {\n * flights: [],\n * effect1: false,\n * effect2: false,\n * };\n *\n * const actions = {\n * init: noPayload,\n * updateEffect1: payload<{ value: boolean }>(),\n * updateEffect2: payload<{ value: boolean }>(),\n * };\n *\n * const effects = createEffects(actions, (actions, create) => {\n * return {\n * init1$: create(actions.init).pipe(\n * map(() => actions.updateEffect1({ value: true }))\n * ),\n * init2$: create(actions.init).pipe(\n * map(() => actions.updateEffect2({ value: true }))\n * ),\n * };\n * });\n *\n * signalStore(\n * withState(initialState),\n * withRedux({\n * actions,\n * effects,\n * })\n * );\n * ```\n * @param actions\n * @param effectsFactory\n */\nexport function createEffects(actions, effectsFactory) {\n return effectsFactory;\n}\nfunction createActionFns(actionFnSpecs, reducerRegistry, effectsRegistry, state) {\n const actionFns = {};\n for (const type in actionFnSpecs) {\n const actionFn = (payload) => {\n const fullPayload = { ...payload, type };\n const reducer = reducerRegistry[type];\n if (reducer) {\n reducer(state, fullPayload);\n }\n const effectSubjects = effectsRegistry[type];\n if (effectSubjects?.length) {\n for (const effectSubject of effectSubjects) {\n effectSubject.next(fullPayload);\n }\n }\n return fullPayload;\n };\n actionFn.type = type.toString();\n actionFns[type] = actionFn;\n }\n return actionFns;\n}\nfunction createPublicAndAllActionsFns(actionFnSpecs, reducerRegistry, effectsRegistry, state) {\n if ('public' in actionFnSpecs || 'private' in actionFnSpecs) {\n const privates = actionFnSpecs['private'] || {};\n const publics = actionFnSpecs['public'] || {};\n assertActionFnSpecs(privates);\n assertActionFnSpecs(publics);\n const privateActionFns = createActionFns(privates, reducerRegistry, effectsRegistry, state);\n const publicActionFns = createActionFns(publics, reducerRegistry, effectsRegistry, state);\n return {\n all: { ...privateActionFns, ...publicActionFns },\n publics: publicActionFns,\n };\n }\n const actionFns = createActionFns(actionFnSpecs, reducerRegistry, effectsRegistry, state);\n return { all: actionFns, publics: actionFns };\n}\nfunction fillReducerRegistry(reducer, actionFns, reducerRegistry) {\n function on(action, reducerFn) {\n reducerRegistry[action.type] = reducerFn;\n }\n reducer(actionFns, on);\n return reducerRegistry;\n}\nfunction fillEffects(effects, actionFns, effectsRegistry = {}) {\n function create(action) {\n const subject = new Subject();\n if (!(action.type in effectsRegistry)) {\n effectsRegistry[action.type] = [];\n }\n effectsRegistry[action.type].push(subject);\n return subject.asObservable();\n }\n const effectObservables = effects(actionFns, create);\n return Object.values(effectObservables);\n}\nfunction startSubscriptions(observables) {\n return observables.map((observable) => observable.subscribe());\n}\nfunction processRedux(actionFnSpecs, reducer, effects, store) {\n const reducerRegistry = {};\n const effectsRegistry = {};\n const actionsMap = createPublicAndAllActionsFns(actionFnSpecs, reducerRegistry, effectsRegistry, store);\n const actionFns = actionsMap.all;\n const publicActionsFns = actionsMap.publics;\n fillReducerRegistry(reducer, actionFns, reducerRegistry);\n const effectObservables = fillEffects(effects, actionFns, effectsRegistry);\n const subscriptions = startSubscriptions(effectObservables);\n return {\n methods: publicActionsFns,\n subscriptions: subscriptions,\n };\n}\n/**\n * @param redux redux\n *\n * properties do not start with `with` since they are not extension functions on their own.\n *\n * no dependency to NgRx\n *\n * actions are passed to reducer and effects, but it is also possible to use other actions.\n * effects provide forAction and do not return anything. that is important because effects should stay inaccessible\n */\nexport function withRedux(redux) {\n return (store) => {\n const { methods } = processRedux(redux.actions, redux.reducer, redux.effects, store);\n return {\n ...store,\n methods: { ...store.methods, ...methods },\n };\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1yZWR1eC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvbmdyeC10b29sa2l0L3NyYy9saWIvd2l0aC1yZWR1eC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBNEM5RCxNQUFNLFVBQVUsT0FBTztJQUNyQixPQUFPLEVBQVUsQ0FBQztBQUNwQixDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLEVBQUUsQ0FBQztBQWlCNUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBeUNHO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FJM0IsY0FHQztJQUVELE9BQU8sY0FBYyxDQUFDO0FBQ3hCLENBQUM7QUFXRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNkNHO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FDM0IsT0FBZ0IsRUFDaEIsY0FBeUQ7SUFFekQsT0FBTyxjQUFjLENBQUM7QUFDeEIsQ0FBQztBQVdELFNBQVMsZUFBZSxDQUN0QixhQUFtQixFQUNuQixlQUdDLEVBQ0QsZUFBZ0MsRUFDaEMsS0FBYztJQUVkLE1BQU0sU0FBUyxHQUE2QixFQUFFLENBQUM7SUFFL0MsS0FBSyxNQUFNLElBQUksSUFBSSxhQUFhLEVBQUUsQ0FBQztRQUNqQyxNQUFNLFFBQVEsR0FBRyxDQUFDLE9BQWdCLEVBQUUsRUFBRTtZQUNwQyxNQUFNLFdBQVcsR0FBRyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDO1lBQ3pDLE1BQU0sT0FBTyxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN0QyxJQUFJLE9BQU8sRUFBRSxDQUFDO2dCQUNYLE9BQXNELENBQ3JELEtBQUssRUFDTCxX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T0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFO1NBQzFDLENBQUM7SUFDSixDQUFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRW1wdHlGZWF0dXJlUmVzdWx0LFxuICBTaWduYWxTdG9yZUZlYXR1cmUsXG4gIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgV3JpdGFibGVTdGF0ZVNvdXJjZSxcbn0gZnJvbSAnQG5ncngvc2lnbmFscyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBhc3NlcnRBY3Rpb25GblNwZWNzIH0gZnJvbSAnLi9hc3NlcnRpb25zL2Fzc2VydGlvbnMnO1xuXG4vKiogQWN0aW9ucyAqKi9cblxudHlwZSBQYXlsb2FkID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cbnR5cGUgQWN0aW9uRm48XG4gIFR5cGUgZXh0ZW5kcyBzdHJpbmcgPSBzdHJpbmcsXG4gIEFjdGlvblBheWxvYWQgZXh0ZW5kcyBQYXlsb2FkID0gUGF5bG9hZCxcbj4gPSAoKHBheWxvYWQ6IEFjdGlvblBheWxvYWQpID0+IEFjdGlvblBheWxvYWQgJiB7IHR5cGU6IFR5cGUgfSkgJiB7XG4gIHR5cGU6IFR5cGU7XG59O1xuXG50eXBlIEFjdGlvbkZucyA9IFJlY29yZDxzdHJpbmcsIEFjdGlvbkZuPjtcblxuZXhwb3J0IHR5cGUgQWN0aW9uc0ZuU3BlY3MgPSBSZWNvcmQ8c3RyaW5nLCBQYXlsb2FkPjtcblxudHlwZSBBY3Rpb25GbkNyZWF0b3I8U3BlYyBleHRlbmRzIEFjdGlvbnNGblNwZWNzPiA9IHtcbiAgW0FjdGlvbk5hbWUgaW4ga2V5b2YgU3BlY106IChSZWNvcmQ8bmV2ZXIsIG5ldmVyPiBleHRlbmRzIFNwZWNbQWN0aW9uTmFtZV1cbiAgICA/ICgpID0+IFNwZWNbQWN0aW9uTmFtZV0gJiB7IHR5cGU6IEFjdGlvbk5hbWUgfVxuICAgIDogKFxuICAgICAgICBwYXlsb2FkOiBTcGVjW0FjdGlvbk5hbWVdLFxuICAgICAgKSA9PiBTcGVjW0FjdGlvbk5hbWVdICYgeyB0eXBlOiBBY3Rpb25OYW1lIH0pICYge1xuICAgIHR5cGU6IEFjdGlvbk5hbWUgJiBzdHJpbmc7XG4gIH07XG59O1xuXG50eXBlIEFjdGlvbkZuUGF5bG9hZDxBY3Rpb24+ID0gQWN0aW9uIGV4dGVuZHMgKHBheWxvYWQ6IGluZmVyIFBheWxvYWQpID0+IHZvaWRcbiAgPyBQYXlsb2FkXG4gIDogbmV2ZXI7XG5cbnR5cGUgQWN0aW9uRm5zQ3JlYXRvcjxTcGVjIGV4dGVuZHMgQWN0aW9uc0ZuU3BlY3M+ID0gU3BlYyBleHRlbmRzIHtcbiAgcHJpdmF0ZTogUmVjb3JkPHN0cmluZywgUGF5bG9hZD47XG4gIHB1YmxpYzogUmVjb3JkPHN0cmluZywgUGF5bG9hZD47XG59XG4gID8gQWN0aW9uRm5DcmVhdG9yPFNwZWNbJ3ByaXZhdGUnXT4gJiBBY3Rpb25GbkNyZWF0b3I8U3BlY1sncHVibGljJ10+XG4gIDogQWN0aW9uRm5DcmVhdG9yPFNwZWM+O1xuXG50eXBlIFB1YmxpY0FjdGlvbkZuczxTcGVjIGV4dGVuZHMgQWN0aW9uc0ZuU3BlY3M+ID0gU3BlYyBleHRlbmRzIHtcbiAgcHVibGljOiBSZWNvcmQ8c3RyaW5nLCBQYXlsb2FkPjtcbn1cbiAgPyBBY3Rpb25GbkNyZWF0b3I8U3BlY1sncHVibGljJ10+XG4gIDogQWN0aW9uRm5DcmVhdG9yPFNwZWM+O1xuXG5leHBvcnQgZnVuY3Rpb24gcGF5bG9hZDxUeXBlIGV4dGVuZHMgUGF5bG9hZD4oKTogVHlwZSB7XG4gIHJldHVybiB7fSBhcyBUeXBlO1xufVxuXG5leHBvcnQgY29uc3Qgbm9QYXlsb2FkID0ge307XG5cbi8qKiBSZWR1Y2VyICoqL1xuXG50eXBlIFJlZHVjZXJGdW5jdGlvbjxSZWR1Y2VyQWN0aW9uLCBTdGF0ZT4gPSAoXG4gIHN0YXRlOiBTdGF0ZSxcbiAgYWN0aW9uOiBBY3Rpb25GblBheWxvYWQ8UmVkdWNlckFjdGlvbj4sXG4pID0+IHZvaWQ7XG5cbnR5cGUgUmVkdWNlckZhY3Rvcnk8U3RhdGVBY3Rpb25GbnMgZXh0ZW5kcyBBY3Rpb25GbnMsIFN0YXRlPiA9IChcbiAgYWN0aW9uczogU3RhdGVBY3Rpb25GbnMsXG4gIG9uOiA8UmVkdWNlckFjdGlvbiBleHRlbmRzIHsgdHlwZTogc3RyaW5nIH0+KFxuICAgIGFjdGlvbjogUmVkdWNlckFjdGlvbixcbiAgICByZWR1Y2VyRm46IFJlZHVjZXJGdW5jdGlvbjxSZWR1Y2VyQWN0aW9uLCBTdGF0ZT4sXG4gICkgPT4gdm9pZCxcbikgPT4gdm9pZDtcblxuLyoqXG4gKiBDcmVhdGVzIGEgcmVkdWNlciBmdW5jdGlvbiB0byBzZXBhcmF0ZSB0aGUgcmVkdWNlciBsb2dpYyBpbnRvIGFub3RoZXIgZmlsZS5cbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbnRlcmZhY2UgRmxpZ2h0U3RhdGUge1xuICogICBmbGlnaHRzOiBGbGlnaHRbXTtcbiAqICAgZWZmZWN0MTogYm9vbGVhbjtcbiAqICAgZWZmZWN0MjogYm9vbGVhbjtcbiAqIH1cbiAqXG4gKiBjb25zdCBpbml0aWFsU3RhdGU6IEZsaWdodFN0YXRlID0ge1xuICogICBmbGlnaHRzOiBbXSxcbiAqICAgZWZmZWN0MTogZmFsc2UsXG4gKiAgIGVmZmVjdDI6IGZhbHNlLFxuICogfTtcbiAqXG4gKiBjb25zdCBhY3Rpb25zID0ge1xuICogICBpbml0OiBub1BheWxvYWQsXG4gKiAgIHVwZGF0ZUVmZmVjdDE6IHBheWxvYWQ8eyB2YWx1ZTogYm9vbGVhbiB9PigpLFxuICogICB1cGRhdGVFZmZlY3QyOiBwYXlsb2FkPHsgdmFsdWU6IGJvb2xlYW4gfT4oKSxcbiAqIH07XG4gKlxuICogY29uc3QgcmVkdWNlciA9IGNyZWF0ZVJlZHVjZXI8RmxpZ2h0U3RhdGUsIHR5cGVvZiBhY3Rpb25zPigoYWN0aW9ucywgb24pID0+IHtcbiAqICAgb24oYWN0aW9ucy51cGRhdGVFZmZlY3QxLCAoc3RhdGUsIHsgdmFsdWUgfSkgPT4ge1xuICogICAgIHBhdGNoU3RhdGUoc3RhdGUsIHsgZWZmZWN0MTogdmFsdWUgfSk7XG4gKiAgIH0pO1xuICpcbiAqICAgb24oYWN0aW9ucy51cGRhdGVFZmZlY3QyLCAoc3RhdGUsIHsgdmFsdWUgfSkgPT4ge1xuICogICAgIHBhdGNoU3RhdGUoc3RhdGUsIHsgZWZmZWN0MjogdmFsdWUgfSk7XG4gKiAgIH0pO1xuICogfSk7XG4gKlxuICogc2lnbmFsU3RvcmUoXG4gKiAgIHdpdGhTdGF0ZShpbml0aWFsU3RhdGUpLFxuICogICB3aXRoUmVkdXgoe1xuICogICAgIGFjdGlvbnMsXG4gKiAgICAgcmVkdWNlcixcbiAqICAgfSlcbiAqICk7XG4gKiBgYGBcbiAqIEBwYXJhbSByZWR1Y2VyRmFjdG9yeVxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUmVkdWNlcjxcbiAgU3RhdGUgZXh0ZW5kcyBvYmplY3QsXG4gIEFjdGlvbnMgZXh0ZW5kcyBBY3Rpb25zRm5TcGVjcyxcbj4oXG4gIHJlZHVjZXJGYWN0b3J5OiBSZWR1Y2VyRmFjdG9yeTxcbiAgICBBY3Rpb25GbnNDcmVhdG9yPEFjdGlvbnM+LFxuICAgIFdyaXRhYmxlU3RhdGVTb3VyY2U8U3RhdGU+XG4gID4sXG4pIHtcbiAgcmV0dXJuIHJlZHVjZXJGYWN0b3J5O1xufVxuXG4vKiogRWZmZWN0ICoqL1xuXG50eXBlIEVmZmVjdHNGYWN0b3J5PFN0YXRlQWN0aW9uRm5zIGV4dGVuZHMgQWN0aW9uRm5zPiA9IChcbiAgYWN0aW9uczogU3RhdGVBY3Rpb25GbnMsXG4gIGNyZWF0ZTogPEVmZmVjdEFjdGlvbiBleHRlbmRzIHsgdHlwZTogc3RyaW5nIH0+KFxuICAgIGFjdGlvbjogRWZmZWN0QWN0aW9uLFxuICApID0+IE9ic2VydmFibGU8QWN0aW9uRm5QYXlsb2FkPEVmZmVjdEFjdGlvbj4+LFxuKSA9PiBSZWNvcmQ8c3RyaW5nLCBPYnNlcnZhYmxlPHVua25vd24+PjtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBVc2UgTmdSeCdzIGBAbmdyeC9zaWduYWxzL2V2ZW50c2Agc3RhcnRpbmcgaW4gMTkuMlxuICpcbiAqIENyZWF0ZXMgdGhlIGVmZmVjdHMgZnVuY3Rpb24gdG8gc2VwYXJhdGUgdGhlIGVmZmVjdHMgbG9naWMgaW50byBhbm90aGVyIGZpbGUuXG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogaW50ZXJmYWNlIEZsaWdodFN0YXRlIHtcbiAqICAgZmxpZ2h0czogRmxpZ2h0W107XG4gKiAgIGVmZmVjdDE6IGJvb2xlYW47XG4gKiAgIGVmZmVjdDI6IGJvb2xlYW47XG4gKiB9XG4gKlxuICogY29uc3QgaW5pdGlhbFN0YXRlOiBGbGlnaHRTdGF0ZSA9IHtcbiAqICAgZmxpZ2h0czogW10sXG4gKiAgIGVmZmVjdDE6IGZhbHNlLFxuICogICBlZmZlY3QyOiBmYWxzZSxcbiAqIH07XG4gKlxuICogY29uc3QgYWN0aW9ucyA9IHtcbiAqICAgaW5pdDogbm9QYXlsb2FkLFxuICogICB1cGRhdGVFZmZlY3QxOiBwYXlsb2FkPHsgdmFsdWU6IGJvb2xlYW4gfT4oKSxcbiAqICAgdXBkYXRlRWZmZWN0MjogcGF5bG9hZDx7IHZhbHVlOiBib29sZWFuIH0+KCksXG4gKiB9O1xuICpcbiAqIGNvbnN0IGVmZmVjdHMgPSBjcmVhdGVFZmZlY3RzKGFjdGlvbnMsIChhY3Rpb25zLCBjcmVhdGUpID0+IHtcbiAqICAgcmV0dXJuIHtcbiAqICAgICBpbml0MSQ6IGNyZWF0ZShhY3Rpb25zLmluaXQpLnBpcGUoXG4gKiAgICAgICBtYXAoKCkgPT4gYWN0aW9ucy51cGRhdGVFZmZlY3QxKHsgdmFsdWU6IHRydWUgfSkpXG4gKiAgICAgKSxcbiAqICAgICBpbml0MiQ6IGNyZWF0ZShhY3Rpb25zLmluaXQpLnBpcGUoXG4gKiAgICAgICBtYXAoKCkgPT4gYWN0aW9ucy51cGRhdGVFZmZlY3QyKHsgdmFsdWU6IHRydWUgfSkpXG4gKiAgICAgKSxcbiAqICAgfTtcbiAqIH0pO1xuICpcbiAqIHNpZ25hbFN0b3JlKFxuICogICB3aXRoU3RhdGUoaW5pdGlhbFN0YXRlKSxcbiAqICAgd2l0aFJlZHV4KHtcbiAqICAgICBhY3Rpb25zLFxuICogICAgIGVmZmVjdHMsXG4gKiAgIH0pXG4gKiApO1xuICogYGBgXG4gKiBAcGFyYW0gYWN0aW9uc1xuICogQHBhcmFtIGVmZmVjdHNGYWN0b3J5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVFZmZlY3RzPEFjdGlvbnMgZXh0ZW5kcyBBY3Rpb25zRm5TcGVjcz4oXG4gIGFjdGlvbnM6IEFjdGlvbnMsXG4gIGVmZmVjdHNGYWN0b3J5OiBFZmZlY3RzRmFjdG9yeTxBY3Rpb25GbnNDcmVhdG9yPEFjdGlvbnM+Pixcbikge1xuICByZXR1cm4gZWZmZWN0c0ZhY3Rvcnk7XG59XG5cbi8vIGludGVybmFsIHR5cGVzXG5cbi8qKlxuICogUmVjb3JkIHdoaWNoIGhvbGRzIGFsbCBlZmZlY3RzIGZvciBhIHNwZWNpZmljIGFjdGlvbiB0eXBlLlxuICogVGhlIHZhbHVlcyBhcmUgU3ViamVjdCB3aGljaCB0aGUgZWZmZWN0IGFyZSBzdWJzY3JpYmVkIHRvLlxuICogYGNyZWF0ZUFjdGlvbkZuc2Agd2lsbCBjYWxsIG5leHQgb24gdGhlc2Ugc3ViamVjdHMuXG4gKi9cbnR5cGUgRWZmZWN0c1JlZ2lzdHJ5ID0gUmVjb3JkPHN0cmluZywgU3ViamVjdDxBY3Rpb25GblBheWxvYWQ8dW5rbm93bj4+W10+O1xuXG5mdW5jdGlvbiBjcmVhdGVBY3Rpb25GbnM8U3BlYyBleHRlbmRzIEFjdGlvbnNGblNwZWNzPihcbiAgYWN0aW9uRm5TcGVjczogU3BlYyxcbiAgcmVkdWNlclJlZ2lzdHJ5OiBSZWNvcmQ8XG4gICAgc3RyaW5nLFxuICAgIChzdGF0ZTogdW5rbm93biwgcGF5bG9hZDogQWN0aW9uRm5QYXlsb2FkPHVua25vd24+KSA9PiB2b2lkXG4gID4sXG4gIGVmZmVjdHNSZWdpc3RyeTogRWZmZWN0c1JlZ2lzdHJ5LFxuICBzdGF0ZTogdW5rbm93bixcbikge1xuICBjb25zdCBhY3Rpb25GbnM6IFJlY29yZDxzdHJpbmcsIEFjdGlvbkZuPiA9IHt9O1xuXG4gIGZvciAoY29uc3QgdHlwZSBpbiBhY3Rpb25GblNwZWNzKSB7XG4gICAgY29uc3QgYWN0aW9uRm4gPSAocGF5bG9hZDogUGF5bG9hZCkgPT4ge1xuICAgICAgY29uc3QgZnVsbFBheWxvYWQgPSB7IC4uLnBheWxvYWQsIHR5cGUgfTtcbiAgICAgIGNvbnN0IHJlZHVjZXIgPSByZWR1Y2VyUmVnaXN0cnlbdHlwZV07XG4gICAgICBpZiAocmVkdWNlcikge1xuICAgICAgICAocmVkdWNlciBhcyAoc3RhdGU6IHVua25vd24sIHBheWxvYWQ6IHVua25vd24pID0+IHZvaWQpKFxuICAgICAgICAgIHN0YXRlLFxuICAgICAgICAgIGZ1bGxQYXlsb2FkIGFzIHVua25vd24sXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBjb25zdCBlZmZlY3RTdWJqZWN0cyA9IGVmZmVjdHNSZWdpc3RyeVt0eXBlXTtcbiAgICAgIGlmIChlZmZlY3RTdWJqZWN0cz8ubGVuZ3RoKSB7XG4gICAgICAgIGZvciAoY29uc3QgZWZmZWN0U3ViamVjdCBvZiBlZmZlY3RTdWJqZWN0cykge1xuICAgICAgICAgIChlZmZlY3RTdWJqZWN0IGFzIHVua25vd24gYXMgU3ViamVjdDx1bmtub3duPikubmV4dChmdWxsUGF5bG9hZCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBmdWxsUGF5bG9hZDtcbiAgICB9O1xuICAgIGFjdGlvbkZuLnR5cGUgPSB0eXBlLnRvU3RyaW5nKCk7XG4gICAgYWN0aW9uRm5zW3R5cGVdID0gYWN0aW9uRm47XG4gIH1cblxuICByZXR1cm4gYWN0aW9uRm5zO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVQdWJsaWNBbmRBbGxBY3Rpb25zRm5zPFNwZWMgZXh0ZW5kcyBBY3Rpb25zRm5TcGVjcz4oXG4gIGFjdGlvbkZuU3BlY3M6IFNwZWMsXG4gIHJlZHVjZXJSZWdpc3RyeTogUmVjb3JkPFxuICAgIHN0cmluZyxcbiAgICAoc3RhdGU6IHVua25vd24sIHBheWxvYWQ6IEFjdGlvbkZuUGF5bG9hZDx1bmtub3duPikgPT4gdm9pZFxuICA+LFxuICBlZmZlY3RzUmVnaXN0cnk6IEVmZmVjdHNSZWdpc3RyeSxcbiAgc3RhdGU6IHVua25vd24sXG4pOiB7IGFsbDogQWN0aW9uRm5zOyBwdWJsaWNzOiBBY3Rpb25GbnMgfSB7XG4gIGlmICgncHVibGljJyBpbiBhY3Rpb25GblNwZWNzIHx8ICdwcml2YXRlJyBpbiBhY3Rpb25GblNwZWNzKSB7XG4gICAgY29uc3QgcHJpdmF0ZXMgPSBhY3Rpb25GblNwZWNzWydwcml2YXRlJ10gfHwge307XG4gICAgY29uc3QgcHVibGljcyA9IGFjdGlvbkZuU3BlY3NbJ3B1YmxpYyddIHx8IHt9O1xuXG4gICAgYXNzZXJ0QWN0aW9uRm5TcGVjcyhwcml2YXRlcyk7XG4gICAgYXNzZXJ0QWN0aW9uRm5TcGVjcyhwdWJsaWNzKTtcblxuICAgIGNvbnN0IHByaXZhdGVBY3Rpb25GbnMgPSBjcmVhdGVBY3Rpb25GbnMoXG4gICAgICBwcml2YXRlcyxcbiAgICAgIHJlZHVjZXJSZWdpc3RyeSxcbiAgICAgIGVmZmVjdHNSZWdpc3RyeSxcbiAgICAgIHN0YXRlLFxuICAgICk7XG4gICAgY29uc3QgcHVibGljQWN0aW9uRm5zID0gY3JlYXRlQWN0aW9uRm5zKFxuICAgICAgcHVibGljcyxcbiAgICAgIHJlZHVjZXJSZWdpc3RyeSxcbiAgICAgIGVmZmVjdHNSZWdpc3RyeSxcbiAgICAgIHN0YXRlLFxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgYWxsOiB7IC4uLnByaXZhdGVBY3Rpb25GbnMsIC4uLnB1YmxpY0FjdGlvbkZucyB9LFxuICAgICAgcHVibGljczogcHVibGljQWN0aW9uRm5zLFxuICAgIH07XG4gIH1cblxuICBjb25zdCBhY3Rpb25GbnMgPSBjcmVhdGVBY3Rpb25GbnMoXG4gICAgYWN0aW9uRm5TcGVjcyxcbiAgICByZWR1Y2VyUmVnaXN0cnksXG4gICAgZWZmZWN0c1JlZ2lzdHJ5LFxuICAgIHN0YXRlLFxuICApO1xuXG4gIHJldHVybiB7IGFsbDogYWN0aW9uRm5zLCBwdWJsaWNzOiBhY3Rpb25GbnMgfTtcbn1cblxuZnVuY3Rpb24gZmlsbFJlZHVjZXJSZWdpc3RyeShcbiAgcmVkdWNlcjogUmVkdWNlckZhY3Rvcnk8QWN0aW9uRm5zLCB1bmtub3duPixcbiAgYWN0aW9uRm5zOiBBY3Rpb25GbnMsXG4gIHJlZHVjZXJSZWdpc3RyeTogUmVjb3JkPFxuICAgIHN0cmluZyxcbiAgICAoc3RhdGU6IHVua25vd24sIHBheWxvYWQ6IEFjdGlvbkZuUGF5bG9hZDx1bmtub3duPikgPT4gdm9pZFxuICA+LFxuKSB7XG4gIGZ1bmN0aW9uIG9uKFxuICAgIGFjdGlvbjogeyB0eXBlOiBzdHJpbmcgfSxcbiAgICByZWR1Y2VyRm46IChzdGF0ZTogdW5rbm93biwgcGF5bG9hZDogQWN0aW9uRm5QYXlsb2FkPHVua25vd24+KSA9PiB2b2lkLFxuICApIHtcbiAgICByZWR1Y2VyUmVnaXN0cnlbYWN0aW9uLnR5cGVdID0gcmVkdWNlckZuO1xuICB9XG5cbiAgcmVkdWNlcihhY3Rpb25GbnMsIG9uKTtcblxuICByZXR1cm4gcmVkdWNlclJlZ2lzdHJ5O1xufVxuXG5mdW5jdGlvbiBmaWxsRWZmZWN0cyhcbiAgZWZmZWN0czogRWZmZWN0c0ZhY3Rvcnk8QWN0aW9uRm5zPixcbiAgYWN0aW9uRm5zOiBBY3Rpb25GbnMsXG4gIGVmZmVjdHNSZWdpc3RyeTogRWZmZWN0c1JlZ2lzdHJ5ID0ge30sXG4pOiBPYnNlcnZhYmxlPHVua25vd24+W10ge1xuICBmdW5jdGlvbiBjcmVhdGUoYWN0aW9uOiB7IHR5cGU6IHN0cmluZyB9KSB7XG4gICAgY29uc3Qgc3ViamVjdCA9IG5ldyBTdWJqZWN0PEFjdGlvbkZuUGF5bG9hZDx1bmtub3duPj4oKTtcbiAgICBpZiAoIShhY3Rpb24udHlwZSBpbiBlZmZlY3RzUmVnaXN0cnkpKSB7XG4gICAgICBlZmZlY3RzUmVnaXN0cnlbYWN0aW9uLnR5cGVdID0gW107XG4gICAgfVxuICAgIGVmZmVjdHNSZWdpc3RyeVthY3Rpb24udHlwZV0ucHVzaChzdWJqZWN0KTtcbiAgICByZXR1cm4gc3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGNvbnN0IGVmZmVjdE9ic2VydmFibGVzID0gZWZmZWN0cyhhY3Rpb25GbnMsIGNyZWF0ZSk7XG4gIHJldHVybiBPYmplY3QudmFsdWVzKGVmZmVjdE9ic2VydmFibGVzKTtcbn1cblxuZnVuY3Rpb24gc3RhcnRTdWJzY3JpcHRpb25zKG9ic2VydmFibGVzOiBPYnNlcnZhYmxlPHVua25vd24+W10pIHtcbiAgcmV0dXJuIG9ic2VydmFibGVzLm1hcCgob2JzZXJ2YWJsZSkgPT4gb2JzZXJ2YWJsZS5zdWJzY3JpYmUoKSk7XG59XG5cbmZ1bmN0aW9uIHByb2Nlc3NSZWR1eDxTcGVjIGV4dGVuZHMgQWN0aW9uc0ZuU3BlY3MsIFJldHVyblR5cGU+KFxuICBhY3Rpb25GblNwZWNzOiBTcGVjLFxuICByZWR1Y2VyOiBSZWR1Y2VyRmFjdG9yeTxBY3Rpb25GbnMsIHVua25vd24+LFxuICBlZmZlY3RzOiBFZmZlY3RzRmFjdG9yeTxBY3Rpb25GbnM+LFxuICBzdG9yZTogdW5rbm93bixcbikge1xuICBjb25zdCByZWR1Y2VyUmVnaXN0cnk6IFJlY29yZDxcbiAgICBzdHJpbmcsXG4gICAgKHN0YXRlOiB1bmtub3duLCBwYXlsb2FkOiBBY3Rpb25GblBheWxvYWQ8dW5rbm93bj4pID0+IHZvaWRcbiAgPiA9IHt9O1xuICBjb25zdCBlZmZlY3RzUmVnaXN0cnk6IFJlY29yZDxzdHJpbmcsIFN1YmplY3Q8QWN0aW9uRm5QYXlsb2FkPHVua25vd24+PltdPiA9XG4gICAge307XG4gIGNvbnN0IGFjdGlvbnNNYXAgPSBjcmVhdGVQdWJsaWNBbmRBbGxBY3Rpb25zRm5zKFxuICAgIGFjdGlvbkZuU3BlY3MsXG4gICAgcmVkdWNlclJlZ2lzdHJ5LFxuICAgIGVmZmVjdHNSZWdpc3RyeSxcbiAgICBzdG9yZSxcbiAgKTtcbiAgY29uc3QgYWN0aW9uRm5zID0gYWN0aW9uc01hcC5hbGw7XG4gIGNvbnN0IHB1YmxpY0FjdGlvbnNGbnMgPSBhY3Rpb25zTWFwLnB1YmxpY3M7XG5cbiAgZmlsbFJlZHVjZXJSZWdpc3RyeShyZWR1Y2VyLCBhY3Rpb25GbnMsIHJlZHVjZXJSZWdpc3RyeSk7XG4gIGNvbnN0IGVmZmVjdE9ic2VydmFibGVzID0gZmlsbEVmZmVjdHMoZWZmZWN0cywgYWN0aW9uRm5zLCBlZmZlY3RzUmVnaXN0cnkpO1xuICBjb25zdCBzdWJzY3JpcHRpb25zID0gc3RhcnRTdWJzY3JpcHRpb25zKGVmZmVjdE9ic2VydmFibGVzKTtcblxuICByZXR1cm4ge1xuICAgIG1ldGhvZHM6IHB1YmxpY0FjdGlvbnNGbnMgYXMgUmV0dXJuVHlwZSxcbiAgICBzdWJzY3JpcHRpb25zOiBzdWJzY3JpcHRpb25zLFxuICB9O1xufVxuXG4vKipcbiAqIEBwYXJhbSByZWR1eCByZWR1eFxuICpcbiAqIHByb3BlcnRpZXMgZG8gbm90IHN0YXJ0IHdpdGggYHdpdGhgIHNpbmNlIHRoZXkgYXJlIG5vdCBleHRlbnNpb24gZnVuY3Rpb25zIG9uIHRoZWlyIG93bi5cbiAqXG4gKiBubyBkZXBlbmRlbmN5IHRvIE5nUnhcbiAqXG4gKiBhY3Rpb25zIGFyZSBwYXNzZWQgdG8gcmVkdWNlciBhbmQgZWZmZWN0cywgYnV0IGl0IGlzIGFsc28gcG9zc2libGUgdG8gdXNlIG90aGVyIGFjdGlvbnMuXG4gKiBlZmZlY3RzIHByb3ZpZGUgZm9yQWN0aW9uIGFuZCBkbyBub3QgcmV0dXJuIGFueXRoaW5nLiB0aGF0IGlzIGltcG9ydGFudCBiZWNhdXNlIGVmZmVjdHMgc2hvdWxkIHN0YXkgaW5hY2Nlc3NpYmxlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3aXRoUmVkdXg8XG4gIFNwZWMgZXh0ZW5kcyBBY3Rpb25zRm5TcGVjcyxcbiAgSW5wdXQgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIFN0YXRlQWN0aW9uRm5zIGV4dGVuZHMgQWN0aW9uRm5zQ3JlYXRvcjxTcGVjPiA9IEFjdGlvbkZuc0NyZWF0b3I8U3BlYz4sXG4gIFB1YmxpY1N0b3JlQWN0aW9uRm5zIGV4dGVuZHMgUHVibGljQWN0aW9uRm5zPFNwZWM+ID0gUHVibGljQWN0aW9uRm5zPFNwZWM+LFxuPihyZWR1eDoge1xuICBhY3Rpb25zOiBTcGVjO1xuICByZWR1Y2VyOiBSZWR1Y2VyRmFjdG9yeTxTdGF0ZUFjdGlvbkZucywgV3JpdGFibGVTdGF0ZVNvdXJjZTxJbnB1dFsnc3RhdGUnXT4+O1xuICBlZmZlY3RzOiBFZmZlY3RzRmFjdG9yeTxTdGF0ZUFjdGlvbkZucz47XG59KTogU2lnbmFsU3RvcmVGZWF0dXJlPFxuICBJbnB1dCxcbiAgRW1wdHlGZWF0dXJlUmVzdWx0ICYgeyBtZXRob2RzOiBQdWJsaWNTdG9yZUFjdGlvbkZucyB9XG4+IHtcbiAgcmV0dXJuIChzdG9yZSkgPT4ge1xuICAgIGNvbnN0IHsgbWV0aG9kcyB9ID0gcHJvY2Vzc1JlZHV4PFNwZWMsIFB1YmxpY1N0b3JlQWN0aW9uRm5zPihcbiAgICAgIHJlZHV4LmFjdGlvbnMsXG4gICAgICByZWR1eC5yZWR1Y2VyIGFzIFJlZHVjZXJGYWN0b3J5PEFjdGlvbkZucywgdW5rbm93bj4sXG4gICAgICByZWR1eC5lZmZlY3RzIGFzIEVmZmVjdHNGYWN0b3J5PEFjdGlvbkZucz4sXG4gICAgICBzdG9yZSxcbiAgICApO1xuICAgIHJldHVybiB7XG4gICAgICAuLi5zdG9yZSxcbiAgICAgIG1ldGhvZHM6IHsgLi4uc3RvcmUubWV0aG9kcywgLi4ubWV0aG9kcyB9LFxuICAgIH07XG4gIH07XG59XG4iXX0=","import { computed } from '@angular/core';\nimport { signalStoreFeature, withComputed, withState, } from '@ngrx/signals';\nexport function deriveCallStateKeys(collection) {\n return {\n callStateKey: collection ? `${collection}CallState` : 'callState',\n loadingKey: collection ? `${collection}Loading` : 'loading',\n loadedKey: collection ? `${collection}Loaded` : 'loaded',\n errorKey: collection ? `${collection}Error` : 'error',\n };\n}\nexport function getCallStateKeys(config) {\n const prop = config?.collection;\n return deriveCallStateKeys(prop);\n}\nexport function getCollectionArray(config) {\n return 'collections' in config\n ? config.collections\n : 'collection' in config && config.collection\n ? [config.collection]\n : undefined;\n}\nexport function withCallState(config) {\n return signalStoreFeature(withState(() => {\n if (!config) {\n return { callState: 'init' };\n }\n const collections = getCollectionArray(config);\n if (collections) {\n return collections.reduce((acc, cur) => ({\n ...acc,\n ...{ [cur ? `${cur}CallState` : 'callState']: 'init' },\n }), {});\n }\n return { callState: 'init' };\n }), withComputed((state) => {\n if (config) {\n const collections = getCollectionArray(config);\n if (collections) {\n return collections.reduce((acc, cur) => {\n const { callStateKey, errorKey, loadedKey, loadingKey } = deriveCallStateKeys(cur);\n const callState = state[callStateKey];\n return {\n ...acc,\n [loadingKey]: computed(() => callState() === 'loading'),\n [loadedKey]: computed(() => callState() === 'loaded'),\n [errorKey]: computed(() => {\n const v = callState();\n return typeof v === 'object' ? v.error : null;\n }),\n };\n }, {});\n }\n }\n const { callStateKey, errorKey, loadedKey, loadingKey } = deriveCallStateKeys();\n const callState = state[callStateKey];\n return {\n [loadingKey]: computed(() => callState() === 'loading'),\n [loadedKey]: computed(() => callState() === 'loaded'),\n [errorKey]: computed(() => {\n const v = callState();\n return typeof v === 'object' ? v.error : null;\n }),\n };\n }));\n}\nexport function setLoading(prop) {\n if (prop) {\n return { [`${prop}CallState`]: 'loading' };\n }\n return { callState: 'loading' };\n}\nexport function setLoaded(prop) {\n if (prop) {\n return { [`${prop}CallState`]: 'loaded' };\n }\n else {\n return { callState: 'loaded' };\n }\n}\nexport function setError(error, prop) {\n let errorMessage;\n if (!error) {\n errorMessage = '';\n }\n else if (typeof error === 'object' && 'message' in error) {\n errorMessage = String(error.message);\n }\n else {\n errorMessage = String(error);\n }\n if (prop) {\n return {\n [`${prop}CallState`]: { error: errorMessage },\n };\n }\n else {\n return { callState: { error: errorMessage } };\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1jYWxsLXN0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9uZ3J4LXRvb2xraXQvc3JjL2xpYi93aXRoLWNhbGwtc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFVLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBR0wsa0JBQWtCLEVBQ2xCLFlBQVksRUFDWixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUE4QnZCLE1BQU0sVUFBVSxtQkFBbUIsQ0FDakMsVUFBdUI7SUFFdkIsT0FBTztRQUNMLFlBQVksRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxXQUFXLENBQUMsQ0FBQyxDQUFDLFdBQVc7UUFDakUsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxVQUFVLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUztRQUMzRCxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRO1FBQ3hELFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU87S0FDdEQsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsTUFBZ0M7SUFDL0QsTUFBTSxJQUFJLEdBQUcsTUFBTSxFQUFFLFVBQVUsQ0FBQztJQUNoQyxPQUFPLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ25DLENBQUM7QUFFRCxNQUFNLFVBQVUsa0JBQWtCLENBQ2hDLE1BQTREO0lBRTVELE9BQU8sYUFBYSxJQUFJLE1BQU07UUFDNUIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXO1FBQ3BCLENBQUMsQ0FBQyxZQUFZLElBQUksTUFBTSxJQUFJLE1BQU0sQ0FBQyxVQUFVO1lBQzNDLENBQUMsQ0FBQyxDQUFDLE1BQU0s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LEVBQUUsWUFBWSxFQUFFLEVBQXdCLENBQUM7SUFDdEUsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTaWduYWwsIGNvbXB1dGVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBFbXB0eUZlYXR1cmVSZXN1bHQsXG4gIFNpZ25hbFN0b3JlRmVhdHVyZSxcbiAgc2lnbmFsU3RvcmVGZWF0dXJlLFxuICB3aXRoQ29tcHV0ZWQsXG4gIHdpdGhTdGF0ZSxcbn0gZnJvbSAnQG5ncngvc2lnbmFscyc7XG5cbmV4cG9ydCB0eXBlIENhbGxTdGF0ZSA9ICdpbml0JyB8ICdsb2FkaW5nJyB8ICdsb2FkZWQnIHwgeyBlcnJvcjogc3RyaW5nIH07XG5cbmV4cG9ydCB0eXBlIENhbGxTdGF0ZVNsaWNlID0ge1xuICBjYWxsU3RhdGU6IENhbGxTdGF0ZTtcbn07XG5cbmV4cG9ydCB0eXBlIE5hbWVkQ2FsbFN0YXRlU2xpY2U8Q29sbGVjdGlvbiBleHRlbmRzIHN0cmluZz4gPSB7XG4gIFtLIGluIGtleW9mIENhbGxTdGF0ZVNsaWNlIGFzIENvbGxlY3Rpb24gZXh0ZW5kcyAnJ1xuICAgID8gYCR7Q29sbGVjdGlvbn0ke0t9YFxuICAgIDogYCR7Q29sbGVjdGlvbn0ke0NhcGl0YWxpemU8Sz59YF06IENhbGxTdGF0ZVNsaWNlW0tdO1xufTtcblxuZXhwb3J0IHR5cGUgQ2FsbFN0YXRlU2lnbmFscyA9IHtcbiAgbG9hZGluZzogU2lnbmFsPGJvb2xlYW4+O1xuICBsb2FkZWQ6IFNpZ25hbDxib29sZWFuPjtcbiAgZXJyb3I6IFNpZ25hbDxzdHJpbmcgfCBudWxsPjtcbn07XG5cbmV4cG9ydCB0eXBlIE5hbWVkQ2FsbFN0YXRlU2lnbmFsczxQcm9wIGV4dGVuZHMgc3RyaW5nPiA9IHtcbiAgW0sgaW4ga2V5b2YgQ2FsbFN0YXRlU2lnbmFscyBhcyBQcm9wIGV4dGVuZHMgJydcbiAgICA/IGAke1Byb3B9JHtLfWBcbiAgICA6IGAke1Byb3B9JHtDYXBpdGFsaXplPEs+fWBdOiBDYWxsU3RhdGVTaWduYWxzW0tdO1xufTtcblxuZXhwb3J0IHR5cGUgU2V0Q2FsbFN0YXRlPFByb3AgZXh0ZW5kcyBzdHJpbmcgfCB1bmRlZmluZWQ+ID0gUHJvcCBleHRlbmRzIHN0cmluZ1xuICA/IE5hbWVkQ2FsbFN0YXRlU2xpY2U8UHJvcD5cbiAgOiBDYWxsU3RhdGVTbGljZTtcblxuZXhwb3J0IGZ1bmN0aW9uIGRlcml2ZUNhbGxTdGF0ZUtleXM8Q29sbGVjdGlvbiBleHRlbmRzIHN0cmluZz4oXG4gIGNvbGxlY3Rpb24/OiBDb2xsZWN0aW9uLFxuKSB7XG4gIHJldHVybiB7XG4gICAgY2FsbFN0YXRlS2V5OiBjb2xsZWN0aW9uID8gYCR7Y29sbGVjdGlvbn1DYWxsU3RhdGVgIDogJ2NhbGxTdGF0ZScsXG4gICAgbG9hZGluZ0tleTogY29sbGVjdGlvbiA/IGAke2NvbGxlY3Rpb259TG9hZGluZ2AgOiAnbG9hZGluZycsXG4gICAgbG9hZGVkS2V5OiBjb2xsZWN0aW9uID8gYCR7Y29sbGVjdGlvbn1Mb2FkZWRgIDogJ2xvYWRlZCcsXG4gICAgZXJyb3JLZXk6IGNvbGxlY3Rpb24gPyBgJHtjb2xsZWN0aW9ufUVycm9yYCA6ICdlcnJvcicsXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDYWxsU3RhdGVLZXlzKGNvbmZpZz86IHsgY29sbGVjdGlvbj86IHN0cmluZyB9KSB7XG4gIGNvbnN0IHByb3AgPSBjb25maWc/LmNvbGxlY3Rpb247XG4gIHJldHVybiBkZXJpdmVDYWxsU3RhdGVLZXlzKHByb3ApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29sbGVjdGlvbkFycmF5KFxuICBjb25maWc6IHsgY29sbGVjdGlvbj86IHN0cmluZyB9IHwgeyBjb2xsZWN0aW9ucz86IHN0cmluZ1tdIH0sXG4pIHtcbiAgcmV0dXJuICdjb2xsZWN0aW9ucycgaW4gY29uZmlnXG4gICAgPyBjb25maWcuY29sbGVjdGlvbnNcbiAgICA6ICdjb2xsZWN0aW9uJyBpbiBjb25maWcgJiYgY29uZmlnLmNvbGxlY3Rpb25cbiAgICAgID8gW2NvbmZpZy5jb2xsZWN0aW9uXVxuICAgICAgOiB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3aXRoQ2FsbFN0YXRlPENvbGxlY3Rpb24gZXh0ZW5kcyBzdHJpbmc+KGNvbmZpZzoge1xuICBjb2xsZWN0aW9uczogQ29sbGVjdGlvbltdO1xufSk6IFNpZ25hbFN0b3JlRmVhdHVyZTxcbiAgRW1wdHlGZWF0dXJlUmVzdWx0LFxuICBFbXB0eUZlYXR1cmVSZXN1bHQgJiB7XG4gICAgc3RhdGU6IE5hbWVkQ2FsbFN0YXRlU2xpY2U8Q29sbGVjdGlvbj47XG4gICAgcHJvcHM6IE5hbWVkQ2FsbFN0YXRlU2lnbmFsczxDb2xsZWN0aW9uPjtcbiAgfVxuPjtcbmV4cG9ydCBmdW5jdGlvbiB3aXRoQ2FsbFN0YXRlPENvbGxlY3Rpb24gZXh0ZW5kcyBzdHJpbmc+KGNvbmZpZzoge1xuICBjb2xsZWN0aW9uOiBDb2xsZWN0aW9uO1xufSk6IFNpZ25hbFN0b3JlRmVhdHVyZTxcbiAgRW1wdHlGZWF0dXJlUmVzdWx0LFxuICBFbXB0eUZlYXR1cmVSZXN1bHQgJiB7XG4gICAgc3RhdGU6IE5hbWVkQ2FsbFN0YXRlU2xpY2U8Q29sbGVjdGlvbj47XG4gICAgcHJvcHM6IE5hbWVkQ2FsbFN0YXRlU2lnbmFsczxDb2xsZWN0aW9uPjtcbiAgfVxuPjtcbmV4cG9ydCBmdW5jdGlvbiB3aXRoQ2FsbFN0YXRlKCk6IFNpZ25hbFN0b3JlRmVhdHVyZTxcbiAgRW1wdHlGZWF0dXJlUmVzdWx0LFxuICBFbXB0eUZlYXR1cmVSZXN1bHQgJiB7XG4gICAgc3RhdGU6IENhbGxTdGF0ZVNsaWNlO1xuICAgIHByb3BzOiBDYWxsU3RhdGVTaWduYWxzO1xuICB9XG4+O1xuZXhwb3J0IGZ1bmN0aW9uIHdpdGhDYWxsU3RhdGU8Q29sbGVjdGlvbiBleHRlbmRzIHN0cmluZz4oXG4gIGNvbmZpZz86XG4gICAgfCB7XG4gICAgICAgIGNvbGxlY3Rpb246IENvbGxlY3Rpb247XG4gICAgICB9XG4gICAgfCB7XG4gICAgICAgIGNvbGxlY3Rpb25zOiBDb2xsZWN0aW9uW107XG4gICAgICB9LFxuKTogU2lnbmFsU3RvcmVGZWF0dXJlIHtcbiAgcmV0dXJuIHNpZ25hbFN0b3JlRmVhdHVyZShcbiAgICB3aXRoU3RhdGUoKCkgPT4ge1xuICAgICAgaWYgKCFjb25maWcpIHtcbiAgICAgICAgcmV0dXJuIHsgY2FsbFN0YXRlOiAnaW5pdCcgfTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGNvbGxlY3Rpb25zID0gZ2V0Q29sbGVjdGlvbkFycmF5KGNvbmZpZyk7XG4gICAgICBpZiAoY29sbGVjdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb25zLnJlZHVjZShcbiAgICAgICAgICAoYWNjLCBjdXIpID0+ICh7XG4gICAgICAgICAgICAuLi5hY2MsXG4gICAgICAgICAgICAuLi57IFtjdXIgPyBgJHtjdXJ9Q2FsbFN0YXRlYCA6ICdjYWxsU3RhdGUnXTogJ2luaXQnIH0sXG4gICAgICAgICAgfSksXG4gICAgICAgICAge30sXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7IGNhbGxTdGF0ZTogJ2luaXQnIH07XG4gICAgfSksXG4gICAgd2l0aENvbXB1dGVkKChzdGF0ZTogUmVjb3JkPHN0cmluZywgU2lnbmFsPHVua25vd24+PikgPT4ge1xuICAgICAgaWYgKGNvbmZpZykge1xuICAgICAgICBjb25zdCBjb2xsZWN0aW9ucyA9IGdldENvbGxlY3Rpb25BcnJheShjb25maWcpO1xuICAgICAgICBpZiAoY29sbGVjdGlvbnMpIHtcbiAgICAgICAgICByZXR1cm4gY29sbGVjdGlvbnMucmVkdWNlPFJlY29yZDxzdHJpbmcsIFNpZ25hbDx1bmtub3duPj4+KFxuICAgICAgICAgICAgKGFjYywgY3VyOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgeyBjYWxsU3RhdGVLZXksIGVycm9yS2V5LCBsb2FkZWRLZXksIGxvYWRpbmdLZXkgfSA9XG4gICAgICAgICAgICAgICAgZGVyaXZlQ2FsbFN0YXRlS2V5cyhjdXIpO1xuICAgICAgICAgICAgICBjb25zdCBjYWxsU3RhdGUgPSBzdGF0ZVtjYWxsU3RhdGVLZXldIGFzIFNpZ25hbDxDYWxsU3RhdGU+O1xuICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIC4uLmFjYyxcbiAgICAgICAgICAgICAgICBbbG9hZGluZ0tleV06IGNvbXB1dGVkKCgpID0+IGNhbGxTdGF0ZSgpID09PSAnbG9hZGluZycpLFxuICAgICAgICAgICAgICAgIFtsb2FkZWRLZXldOiBjb21wdXRlZCgoKSA9PiBjYWxsU3RhdGUoKSA9PT0gJ2xvYWRlZCcpLFxuICAgICAgICAgICAgICAgIFtlcnJvcktleV06IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHYgPSBjYWxsU3RhdGUoKTtcbiAgICAgICAgICAgICAgICAgIHJldHVybiB0eXBlb2YgdiA9PT0gJ29iamVjdCcgPyB2LmVycm9yIDogbnVsbDtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7fSxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjb25zdCB7IGNhbGxTdGF0ZUtleSwgZXJyb3JLZXksIGxvYWRlZEtleSwgbG9hZGluZ0tleSB9ID1cbiAgICAgICAgZGVyaXZlQ2FsbFN0YXRlS2V5cygpO1xuICAgICAgY29uc3QgY2FsbFN0YXRlID0gc3RhdGVbY2FsbFN0YXRlS2V5XSBhcyBTaWduYWw8Q2FsbFN0YXRlPjtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIFtsb2FkaW5nS2V5XTogY29tcHV0ZWQoKCkgPT4gY2FsbFN0YXRlKCkgPT09ICdsb2FkaW5nJyksXG4gICAgICAgIFtsb2FkZWRLZXldOiBjb21wdXRlZCgoKSA9PiBjYWxsU3RhdGUoKSA9PT0gJ2xvYWRlZCcpLFxuICAgICAgICBbZXJyb3JLZXldOiBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgICAgY29uc3QgdiA9IGNhbGxTdGF0ZSgpO1xuICAgICAgICAgIHJldHVybiB0eXBlb2YgdiA9PT0gJ29iamVjdCcgPyB2LmVycm9yIDogbnVsbDtcbiAgICAgICAgfSksXG4gICAgICB9O1xuICAgIH0pLFxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0TG9hZGluZzxQcm9wIGV4dGVuZHMgc3RyaW5nIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkPihcbiAgcHJvcD86IFByb3AsXG4pOiBTZXRDYWxsU3RhdGU8UHJvcD4ge1xuICBpZiAocHJvcCkge1xuICAgIHJldHVybiB7IFtgJHtwcm9wfUNhbGxTdGF0ZWBdOiAnbG9hZGluZycgfSBhcyBTZXRDYWxsU3RhdGU8UHJvcD47XG4gIH1cblxuICByZXR1cm4geyBjYWxsU3RhdGU6ICdsb2FkaW5nJyB9IGFzIFNldENhbGxTdGF0ZTxQcm9wPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldExvYWRlZDxQcm9wIGV4dGVuZHMgc3RyaW5nIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkPihcbiAgcHJvcD86IFByb3AsXG4pOiBTZXRDYWxsU3RhdGU8UHJvcD4ge1xuICBpZiAocHJvcCkge1xuICAgIHJldHVybiB7IFtgJHtwcm9wfUNhbGxTdGF0ZWBdOiAnbG9hZGVkJyB9IGFzIFNldENhbGxTdGF0ZTxQcm9wPjtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4geyBjYWxsU3RhdGU6ICdsb2FkZWQnIH0gYXMgU2V0Q2FsbFN0YXRlPFByb3A+O1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRFcnJvcjxQcm9wIGV4dGVuZHMgc3RyaW5nIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkPihcbiAgZXJyb3I6IHVua25vd24sXG4gIHByb3A/OiBQcm9wLFxuKTogU2V0Q2FsbFN0YXRlPFByb3A+IHtcbiAgbGV0IGVycm9yTWVzc2FnZTogc3RyaW5nO1xuXG4gIGlmICghZXJyb3IpIHtcbiAgICBlcnJvck1lc3NhZ2UgPSAnJztcbiAgfSBlbHNlIGlmICh0eXBlb2YgZXJyb3IgPT09ICdvYmplY3QnICYmICdtZXNzYWdlJyBpbiBlcnJvcikge1xuICAgIGVycm9yTWVzc2FnZSA9IFN0cmluZyhlcnJvci5tZXNzYWdlKTtcbiAgfSBlbHNlIHtcbiAgICBlcnJvck1lc3NhZ2UgPSBTdHJpbmcoZXJyb3IpO1xuICB9XG5cbiAgaWYgKHByb3ApIHtcbiAgICByZXR1cm4ge1xuICAgICAgW2Ake3Byb3B9Q2FsbFN0YXRlYF06IHsgZXJyb3I6IGVycm9yTWVzc2FnZSB9LFxuICAgIH0gYXMgU2V0Q2FsbFN0YXRlPFByb3A+O1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB7IGNhbGxTdGF0ZTogeyBlcnJvcjogZXJyb3JNZXNzYWdlIH0gfSBhcyBTZXRDYWxsU3RhdGU8UHJvcD47XG4gIH1cbn1cbiJdfQ==","import { computed, inject } from '@angular/core';\nimport { patchState, signalStoreFeature, withComputed, withMethods, withState, } from '@ngrx/signals';\nimport { addEntity, removeEntity, setAllEntities, updateEntity, } from '@ngrx/signals/entities';\nimport { getCallStateKeys, setError, setLoaded, setLoading, } from './with-call-state';\nexport function capitalize(str) {\n return str ? str[0].toUpperCase() + str.substring(1) : str;\n}\nexport function getDataServiceKeys(options) {\n const filterKey = options.collection\n ? `${options.collection}Filter`\n : 'filter';\n const selectedIdsKey = options.collection\n ? `selected${capitalize(options.collection)}Ids`\n : 'selectedIds';\n const selectedEntitiesKey = options.collection\n ? `selected${capitalize(options.collection)}Entities`\n : 'selectedEntities';\n const updateFilterKey = options.collection\n ? `update${capitalize(options.collection)}Filter`\n : 'updateFilter';\n const updateSelectedKey = options.collection\n ? `updateSelected${capitalize(options.collection)}Entities`\n : 'updateSelected';\n const loadKey = options.collection\n ? `load${capitalize(options.collection)}Entities`\n : 'load';\n const currentKey = options.collection\n ? `current${capitalize(options.collection)}`\n : 'current';\n const loadByIdKey = options.collection\n ? `load${capitalize(options.collection)}ById`\n : 'loadById';\n const setCurrentKey = options.collection\n ? `setCurrent${capitalize(options.collection)}`\n : 'setCurrent';\n const createKey = options.collection\n ? `create${capitalize(options.collection)}`\n : 'create';\n const updateKey = options.collection\n ? `update${capitalize(options.collection)}`\n : 'update';\n const updateAllKey = options.collection\n ? `updateAll${capitalize(options.collection)}`\n : 'updateAll';\n const deleteKey = options.collection\n ? `delete${capitalize(options.collection)}`\n : 'delete';\n // TODO: Take these from @ngrx/signals/entities, when they are exported\n const entitiesKey = options.collection\n ? `${options.collection}Entities`\n : 'entities';\n const entityMapKey = options.collection\n ? `${options.collection}EntityMap`\n : 'entityMap';\n const idsKey = options.collection ? `${options.collection}Ids` : 'ids';\n return {\n filterKey,\n selectedIdsKey,\n selectedEntitiesKey,\n updateFilterKey,\n updateSelectedKey,\n loadKey,\n entitiesKey,\n entityMapKey,\n idsKey,\n currentKey,\n loadByIdKey,\n setCurrentKey,\n createKey,\n updateKey,\n updateAllKey,\n deleteKey,\n };\n}\nexport function withDataService(options) {\n const { dataServiceType, filter, collection: prefix } = options;\n const { entitiesKey, filterKey, loadKey, selectedEntitiesKey, selectedIdsKey, updateFilterKey, updateSelectedKey, currentKey, createKey, updateKey, updateAllKey, deleteKey, loadByIdKey, setCurrentKey, } = getDataServiceKeys(options);\n const { callStateKey } = getCallStateKeys({ collection: prefix });\n return signalStoreFeature(withState(() => ({\n [filterKey]: filter,\n [selectedIdsKey]: {},\n [currentKey]: undefined,\n })), withComputed((store) => {\n const entities = store[entitiesKey];\n const selectedIds = store[selectedIdsKey];\n return {\n [selectedEntitiesKey]: computed(() => entities().filter((e) => selectedIds()[e.id])),\n };\n }), withMethods((store) => {\n const dataService = inject(dataServiceType);\n return {\n [updateFilterKey]: (filter) => {\n patchState(store, { [filterKey]: filter });\n },\n [updateSelectedKey]: (id, selected) => {\n patchState(store, (state) => ({\n [selectedIdsKey]: {\n ...state[selectedIdsKey],\n [id]: selected,\n },\n }));\n },\n [loadKey]: async () => {\n const filter = store[filterKey];\n (() => store[callStateKey] && patchState(store, setLoading(prefix)))();\n try {\n const result = await dataService.load(filter());\n patchState(store, prefix\n ? setAllEntities(result, { collection: prefix })\n : setAllEntities(result));\n (() => store[callStateKey] && patchState(store, setLoaded(prefix)))();\n }\n catch (e) {\n (() => store[callStateKey] &&\n patchState(store, setError(e, prefix)))();\n throw e;\n }\n },\n [loadByIdKey]: async (id) => {\n (() => store[callStateKey] && patchState(store, setLoading(prefix)))();\n try {\n const current = await dataService.loadById(id);\n (() => store[callStateKey] && patchState(store, setLoaded(prefix)))();\n patchState(store, { [currentKey]: current });\n }\n catch (e) {\n (() => store[callStateKey] &&\n patchState(store, setError(e, prefix)))();\n throw e;\n }\n },\n [setCurrentKey]: (current) => {\n patchState(store, { [currentKey]: current });\n },\n [createKey]: async (entity) => {\n patchState(store, { [currentKey]: entity });\n (() => store[callStateKey] && patchState(store, setLoading(prefix)))();\n try {\n const created = await dataService.create(entity);\n patchState(store, { [currentKey]: created });\n patchState(store, prefix\n ? addEntity(created, { collection: prefix })\n : addEntity(created));\n (() => store[callStateKey] && patchState(store, setLoaded(prefix)))();\n }\n catch (e) {\n (() => store[callStateKey] &&\n patchState(store, setError(e, prefix)))();\n throw e;\n }\n },\n [updateKey]: async (entity) => {\n patchState(store, { [currentKey]: entity });\n (() => store[callStateKey] && patchState(store, setLoading(prefix)))();\n try {\n const updated = await dataService.update(entity);\n patchState(store, { [currentKey]: updated });\n const updateArg = {\n id: updated.id,\n changes: updated,\n };\n const updater = (collection) => updateEntity(updateArg, { collection });\n patchState(store, prefix ? updater(prefix) : updateEntity(updateArg));\n (() => store[callStateKey] && patchState(store, setLoaded(prefix)))();\n }\n catch (e) {\n (() => store[callStateKey] &&\n patchState(store, setError(e, prefix)))();\n throw e;\n }\n },\n [updateAllKey]: async (entities) => {\n (() => store[callStateKey] && patchState(store, setLoading(prefix)))();\n try {\n const result = await dataService.updateAll(entities);\n patchState(store, prefix\n ? setAllEntities(result, { collection: prefix })\n : setAllEntities(result));\n (() => store[callStateKey] && patchState(store, setLoaded(prefix)))();\n }\n catch (e) {\n (() => store[callStateKey] &&\n patchState(store, setError(e, prefix)))();\n throw e;\n }\n },\n [deleteKey]: async (entity) => {\n patchState(store, { [currentKey]: entity });\n (() => store[callStateKey] && patchState(store, setLoading(prefix)))();\n try {\n await dataService.delete(entity);\n patchState(store, { [currentKey]: undefined });\n patchState(store, prefix\n ? removeEntity(entity.id, { collection: prefix })\n : removeEntity(entity.id));\n (() => store[callStateKey] && patchState(store, setLoaded(prefix)))();\n }\n catch (e) {\n (() => store[callStateKey] &&\n patchState(store, setError(e, prefix)))();\n throw e;\n }\n },\n };\n }));\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1kYXRhLXNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdG9vbGtpdC9zcmMvbGliL3dpdGgtZGF0YS1zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBeUIsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBSUwsVUFBVSxFQUNWLGtCQUFrQixFQUNsQixZQUFZLEVBQ1osV0FBVyxFQUNYLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBR0wsU0FBUyxFQUNULFlBQVksRUFDWixjQUFjLEVBQ2QsWUFBWSxHQUNiLE1BQU0sd0JBQXdCLENBQUM7QUFFaEMsT0FBTyxFQUdMLGdCQUFnQixFQUNoQixRQUFRLEVBQ1IsU0FBUyxFQUNULFVBQVUsR0FDWCxNQUFNLG1CQUFtQixDQUFDO0FBbUIzQixNQUFNLFVBQVUsVUFBVSxDQUFDLEdBQVc7SUFDcEMsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7QUFDN0QsQ0FBQztBQUVELE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxPQUFnQztJQUNqRSxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsVUFBVTtRQUNsQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsVUFBVSxRQUFRO1FBQy9CLENBQUMsQ0FBQyxRQUFRLENBQUM7SUFDYixNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMsVUFBVTtRQUN2QyxDQUFDLENBQUMsV0FBVyxVQUFVLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxLQUFLO1FBQ2hELENBQUMsQ0FBQyxhQUFhLENBQUM7SUFDbEIsTUFBTSxtQkFBbUIsR0FBRyxPQUFPLENBQUMsVUFB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aW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBFbXB0eUZlYXR1cmVSZXN1bHQsXG4gIFNpZ25hbFN0b3JlRmVhdHVyZSxcbiAgV3JpdGFibGVTdGF0ZVNvdXJjZSxcbiAgcGF0Y2hTdGF0ZSxcbiAgc2lnbmFsU3RvcmVGZWF0dXJlLFxuICB3aXRoQ29tcHV0ZWQsXG4gIHdpdGhNZXRob2RzLFxuICB3aXRoU3RhdGUsXG59IGZyb20gJ0BuZ3J4L3NpZ25hbHMnO1xuaW1wb3J0IHtcbiAgRW50aXR5SWQsXG4gIE5hbWVkRW50aXR5U3RhdGUsXG4gIGFkZEVudGl0eSxcbiAgcmVtb3ZlRW50aXR5LFxuICBzZXRBbGxFbnRpdGllcyxcbiAgdXBkYXRlRW50aXR5LFxufSBmcm9tICdAbmdyeC9zaWduYWxzL2VudGl0aWVzJztcbmltcG9ydCB7IEVudGl0eVN0YXRlIH0gZnJvbSAnLi9zaGFyZWQvc2lnbmFsLXN0b3JlLW1vZGVscyc7XG5pbXBvcnQge1xuICBDYWxsU3RhdGUsXG4gIE5hbWVkQ2FsbFN0YXRlU2xpY2UsXG4gIGdldENhbGxTdGF0ZUtleXMsXG4gIHNldEVycm9yLFxuICBzZXRMb2FkZWQsXG4gIHNldExvYWRpbmcsXG59IGZyb20gJy4vd2l0aC1jYWxsLXN0YXRlJztcblxuZXhwb3J0IHR5cGUgRmlsdGVyID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5leHBvcnQgdHlwZSBFbnRpdHkgPSB7IGlkOiBFbnRpdHlJZCB9O1xuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFTZXJ2aWNlPEUgZXh0ZW5kcyBFbnRpdHksIEYgZXh0ZW5kcyBGaWx0ZXI+IHtcbiAgbG9hZChmaWx0ZXI6IEYpOiBQcm9taXNlPEVbXT47XG5cbiAgbG9hZEJ5SWQoaWQ6IEVudGl0eUlkKTogUHJvbWlzZTxFPjtcblxuICBjcmVhdGUoZW50aXR5OiBFKTogUHJvbWlzZTxFPjtcblxuICB1cGRhdGUoZW50aXR5OiBFKTogUHJvbWlzZTxFPjtcblxuICB1cGRhdGVBbGwoZW50aXR5OiBFW10pOiBQcm9taXNlPEVbXT47XG5cbiAgZGVsZXRlKGVudGl0eTogRSk6IFByb21pc2U8dm9pZD47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjYXBpdGFsaXplKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHN0ciA/IHN0clswXS50b1VwcGVyQ2FzZSgpICsgc3RyLnN1YnN0cmluZygxKSA6IHN0cjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERhdGFTZXJ2aWNlS2V5cyhvcHRpb25zOiB7IGNvbGxlY3Rpb24/OiBzdHJpbmcgfSkge1xuICBjb25zdCBmaWx0ZXJLZXkgPSBvcHRpb25zLmNvbGxlY3Rpb25cbiAgICA/IGAke29wdGlvbnMuY29sbGVjdGlvbn1GaWx0ZXJgXG4gICAgOiAnZmlsdGVyJztcbiAgY29uc3Qgc2VsZWN0ZWRJZHNLZXkgPSBvcHRpb25zLmNvbGxlY3Rpb25cbiAgICA/IGBzZWxlY3RlZCR7Y2FwaXRhbGl6ZShvcHRpb25zLmNvbGxlY3Rpb24pfUlkc2BcbiAgICA6ICdzZWxlY3RlZElkcyc7XG4gIGNvbnN0IHNlbGVjdGVkRW50aXRpZXNLZXkgPSBvcHRpb25zLmNvbGxlY3Rpb25cbiAgICA/IGBzZWxlY3RlZCR7Y2FwaXRhbGl6ZShvcHRpb25zLmNvbGxlY3Rpb24pfUVudGl0aWVzYFxuICAgIDogJ3NlbGVjdGVkRW50aXRpZXMnO1xuXG4gIGNvbnN0IHVwZGF0ZUZpbHRlcktleSA9IG9wdGlvbnMuY29sbGVjdGlvblxuICAgID8gYHVwZGF0ZSR7Y2FwaXRhbGl6ZShvcHRpb25zLmNvbGxlY3Rpb24pfUZpbHRlcmBcbiAgICA6ICd1cGRhdGVGaWx0ZXInO1xuICBjb25zdCB1cGRhdGVTZWxlY3RlZEtleSA9IG9wdGlvbnMuY29sbGVjdGlvblxuICAgID8gYHVwZGF0ZVNlbGVjdGVkJHtjYXBpdGFsaXplKG9wdGlvbnMuY29sbGVjdGlvbil9RW50aXRpZXNgXG4gICAgOiAndXBkYXRlU2VsZWN0ZWQnO1xuICBjb25zdCBsb2FkS2V5ID0gb3B0aW9ucy5jb2xsZWN0aW9uXG4gICAgPyBgbG9hZCR7Y2FwaXRhbGl6ZShvcHRpb25zLmNvbGxlY3Rpb24pfUVudGl0aWVzYFxuICAgIDogJ2xvYWQnO1xuXG4gIGNvbnN0IGN1cnJlbnRLZXkgPSBvcHRpb25zLmNvbGxlY3Rpb25cbiAgICA/IGBjdXJyZW50JHtjYXBpdGFsaXplKG9wdGlvbnMuY29sbGVjdGlvbil9YFxuICAgIDogJ2N1cnJlbnQnO1xuICBjb25zdCBsb2FkQnlJZEtleSA9IG9wdGlvbnMuY29sbGVjdGlvblxuICAgID8gYGxvYWQke2NhcGl0YWxpemUob3B0aW9ucy5jb2xsZWN0aW9uKX1CeUlkYFxuICAgIDogJ2xvYWRCeUlkJztcbiAgY29uc3Qgc2V0Q3VycmVudEtleSA9IG9wdGlvbnMuY29sbGVjdGlvblxuICAgID8gYHNldEN1cnJlbnQke2NhcGl0YWxpemUob3B0aW9ucy5jb2xsZWN0aW9uKX1gXG4gICAgOiAnc2V0Q3VycmVudCc7XG4gIGNvbnN0IGNyZWF0ZUtleSA9IG9wdGlvbnMuY29sbGVjdGlvblxuICAgID8gYGNyZWF0ZSR7Y2FwaXRhbGl6ZShvcHRpb25zLmNvbGxlY3Rpb24pfWBcbiAgICA6ICdjcmVhdGUnO1xuICBjb25zdCB1cGRhdGVLZXkgPSBvcHRpb25zLmNvbGxlY3Rpb25cbiAgICA/IGB1cGRhdGUke2NhcGl0YWxpemUob3B0aW9ucy5jb2xsZWN0aW9uKX1gXG4gICAgOiAndXBkYXRlJztcbiAgY29uc3QgdXBkYXRlQWxsS2V5ID0gb3B0aW9ucy5jb2xsZWN0aW9uXG4gICAgPyBgdXBkYXRlQWxsJHtjYXBpdGFsaXplKG9wdGlvbnMuY29sbGVjdGlvbil9YFxuICAgIDogJ3VwZGF0ZUFsbCc7XG4gIGNvbnN0IGRlbGV0ZUtleSA9IG9wdGlvbnMuY29sbGVjdGlvblxuICAgID8gYGRlbGV0ZSR7Y2FwaXRhbGl6ZShvcHRpb25zLmNvbGxlY3Rpb24pfWBcbiAgICA6ICdkZWxldGUnO1xuXG4gIC8vIFRPRE86IFRha2UgdGhlc2UgZnJvbSBAbmdyeC9zaWduYWxzL2VudGl0aWVzLCB3aGVuIHRoZXkgYXJlIGV4cG9ydGVkXG4gIGNvbnN0IGVudGl0aWVzS2V5ID0gb3B0aW9ucy5jb2xsZWN0aW9uXG4gICAgPyBgJHtvcHRpb25zLmNvbGxlY3Rpb259RW50aXRpZXNgXG4gICAgOiAnZW50aXRpZXMnO1xuICBjb25zdCBlbnRpdHlNYXBLZXkgPSBvcHRpb25zLmNvbGxlY3Rpb25cbiAgICA/IGAke29wdGlvbnMuY29sbGVjdGlvbn1FbnRpdHlNYXBgXG4gICAgOiAnZW50aXR5TWFwJztcbiAgY29uc3QgaWRzS2V5ID0gb3B0aW9ucy5jb2xsZWN0aW9uID8gYCR7b3B0aW9ucy5jb2xsZWN0aW9ufUlkc2AgOiAnaWRzJztcblxuICByZXR1cm4ge1xuICAgIGZpbHRlcktleSxcbiAgICBzZWxlY3RlZElkc0tleSxcbiAgICBzZWxlY3RlZEVudGl0aWVzS2V5LFxuICAgIHVwZGF0ZUZpbHRlcktleSxcbiAgICB1cGRhdGVTZWxlY3RlZEtleSxcbiAgICBsb2FkS2V5LFxuICAgIGVudGl0aWVzS2V5LFxuICAgIGVudGl0eU1hcEtleSxcbiAgICBpZHNLZXksXG5cbiAgICBjdXJyZW50S2V5LFxuICAgIGxvYWRCeUlkS2V5LFxuICAgIHNldEN1cnJlbnRLZXksXG4gICAgY3JlYXRlS2V5LFxuICAgIHVwZGF0ZUtleSxcbiAgICB1cGRhdGVBbGxLZXksXG4gICAgZGVsZXRlS2V5LFxuICB9O1xufVxuXG5leHBvcnQgdHlwZSBOYW1lZERhdGFTZXJ2aWNlU3RhdGU8XG4gIEUgZXh0ZW5kcyBFbnRpdHksXG4gIEYgZXh0ZW5kcyBGaWx0ZXIsXG4gIENvbGxlY3Rpb24gZXh0ZW5kcyBzdHJpbmcsXG4+ID0ge1xuICBbSyBpbiBDb2xsZWN0aW9uIGFzIGAke0t9RmlsdGVyYF06IEY7XG59ICYge1xuICBbSyBpbiBDb2xsZWN0aW9uIGFzIGBzZWxlY3RlZCR7Q2FwaXRhbGl6ZTxLPn1JZHNgXTogUmVjb3JkPEVudGl0eUlkLCBib29sZWFuPjtcbn0gJiB7XG4gIFtLIGluIENvbGxlY3Rpb24gYXMgYGN1cnJlbnQke0NhcGl0YWxpemU8Sz59YF06IEU7XG59O1xuXG5leHBvcnQgdHlwZSBEYXRhU2VydmljZVN0YXRlPEUgZXh0ZW5kcyBFbnRpdHksIEYgZXh0ZW5kcyBGaWx0ZXI+ID0ge1xuICBmaWx0ZXI6IEY7XG4gIHNlbGVjdGVkSWRzOiBSZWNvcmQ8RW50aXR5SWQsIGJvb2xlYW4+O1xuICBjdXJyZW50OiBFO1xufTtcblxuZXhwb3J0IHR5cGUgRGF0YVNlcnZpY2VDb21wdXRlZDxFIGV4dGVuZHMgRW50aXR5PiA9IHtcbiAgc2VsZWN0ZWRFbnRpdGllczogU2lnbmFsPEVbXT47XG59O1xuXG5leHBvcnQgdHlwZSBOYW1lZERhdGFTZXJ2aWNlQ29tcHV0ZWQ8XG4gIEUgZXh0ZW5kcyBFbnRpdHksXG4gIENvbGxlY3Rpb24gZXh0ZW5kcyBzdHJpbmcsXG4+ID0ge1xuICBbSyBpbiBDb2xsZWN0aW9uIGFzIGBzZWxlY3RlZCR7Q2FwaXRhbGl6ZTxLPn1FbnRpdGllc2BdOiBTaWduYWw8RVtdPjtcbn07XG5cbmV4cG9ydCB0eXBlIE5hbWVkRGF0YVNlcnZpY2VNZXRob2RzPFxuICBFIGV4dGVuZHMgRW50aXR5LFxuICBGIGV4dGVuZHMgRmlsdGVyLFxuICBDb2xsZWN0aW9uIGV4dGVuZHMgc3RyaW5nLFxuPiA9IHtcbiAgW0sgaW4gQ29sbGVjdGlvbiBhcyBgdXBkYXRlJHtDYXBpdGFsaXplPEs+fUZpbHRlcmBdOiAoZmlsdGVyOiBGKSA9PiB2b2lkO1xufSAmIHtcbiAgW0sgaW4gQ29sbGVjdGlvbiBhcyBgdXBkYXRlU2VsZWN0ZWQke0NhcGl0YWxpemU8Sz59RW50aXRpZXNgXTogKFxuICAgIGlkOiBFbnRpdHlJZCxcbiAgICBzZWxlY3RlZDogYm9vbGVhbixcbiAgKSA9PiB2b2lkO1xufSAmIHtcbiAgW0sgaW4gQ29sbGVjdGlvbiBhcyBgbG9hZCR7Q2FwaXRhbGl6ZTxLPn1FbnRpdGllc2BdOiAoKSA9PiBQcm9taXNlPHZvaWQ+O1xufSAmIHtcbiAgW0sgaW4gQ29sbGVjdGlvbiBhcyBgc2V0Q3VycmVudCR7Q2FwaXRhbGl6ZTxLPn1gXTogKGVudGl0eTogRSkgPT4gdm9pZDtcbn0gJiB7XG4gIFtLIGluIENvbGxlY3Rpb24gYXMgYGxvYWQke0NhcGl0YWxpemU8Sz59QnlJZGBdOiAoXG4gICAgaWQ6IEVudGl0eUlkLFxuICApID0+IFByb21pc2U8dm9pZD47XG59ICYge1xuICBbSyBpbiBDb2xsZWN0aW9uIGFzIGBjcmVhdGUke0NhcGl0YWxpemU8Sz59YF06IChlbnRpdHk6IEUpID0+IFByb21pc2U8dm9pZD47XG59ICYge1xuICBbSyBpbiBDb2xsZWN0aW9uIGFzIGB1cGRhdGUke0NhcGl0YWxpemU8Sz59YF06IChlbnRpdHk6IEUpID0+IFByb21pc2U8dm9pZD47XG59ICYge1xuICBbSyBpbiBDb2xsZWN0aW9uIGFzIGB1cGRhdGVBbGwke0NhcGl0YWxpemU8Sz59YF06IChcbiAgICBlbnRpdHk6IEVbXSxcbiAgKSA9PiBQcm9taXNlPHZvaWQ+O1xufSAmIHtcbiAgW0sgaW4gQ29sbGVjdGlvbiBhcyBgZGVsZXRlJHtDYXBpdGFsaXplPEs+fWBdOiAoZW50aXR5OiBFKSA9PiBQcm9taXNlPHZvaWQ+O1xufTtcblxuZXhwb3J0IHR5cGUgRGF0YVNlcnZpY2VNZXRob2RzPEUgZXh0ZW5kcyBFbnRpdHksIEYgZXh0ZW5kcyBGaWx0ZXI+ID0ge1xuICB1cGRhdGVGaWx0ZXI6IChmaWx0ZXI6IEYpID0+IHZvaWQ7XG4gIHVwZGF0ZVNlbGVjdGVkOiAoaWQ6IEVudGl0eUlkLCBzZWxlY3RlZDogYm9vbGVhbikgPT4gdm9pZDtcbiAgbG9hZDogKCkgPT4gUHJvbWlzZTx2b2lkPjtcblxuICBzZXRDdXJyZW50KGVudGl0eTogRSk6IHZvaWQ7XG4gIGxvYWRCeUlkKGlkOiBFbnRpdHlJZCk6IFByb21pc2U8dm9pZD47XG4gIGNyZWF0ZShlbnRpdHk6IEUpOiBQcm9taXNlPHZvaWQ+O1xuICB1cGRhdGUoZW50aXR5OiBFKTogUHJvbWlzZTx2b2lkPjtcbiAgdXBkYXRlQWxsKGVudGl0aWVzOiBFW10pOiBQcm9taXNlPHZvaWQ+O1xuICBkZWxldGUoZW50aXR5OiBFKTogUHJvbWlzZTx2b2lkPjtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiB3aXRoRGF0YVNlcnZpY2U8XG4gIEUgZXh0ZW5kcyBFbnRpdHksXG4gIEYgZXh0ZW5kcyBGaWx0ZXIsXG4gIENvbGxlY3Rpb24gZXh0ZW5kcyBzdHJpbmcsXG4+KG9wdGlvbnM6IHtcbiAgZGF0YVNlcnZpY2VUeXBlOiBQcm92aWRlclRva2VuPERhdGFTZXJ2aWNlPEUsIEY+PjtcbiAgZmlsdGVyOiBGO1xuICBjb2xsZWN0aW9uOiBDb2xsZWN0aW9uO1xufSk6IFNpZ25hbFN0b3JlRmVhdHVyZTxcbiAgRW1wdHlGZWF0dXJlUmVzdWx0ICYge1xuICAgIHN0YXRlOiBOYW1lZENhbGxTdGF0ZVNsaWNlPENvbGxlY3Rpb24+ICYgTmFtZWRFbnRpdHlTdGF0ZTxFLCBDb2xsZWN0aW9uPjtcbiAgfSxcbiAge1xuICAgIHN0YXRlOiBOYW1lZERhdGFTZXJ2aWNlU3RhdGU8RSwgRiwgQ29sbGVjdGlvbj47XG4gICAgcHJvcHM6IE5hbWVkRGF0YVNlcnZpY2VDb21wdXRlZDxFLCBDb2xsZWN0aW9uPjtcbiAgICBtZXRob2RzOiBOYW1lZERhdGFTZXJ2aWNlTWV0aG9kczxFLCBGLCBDb2xsZWN0aW9uPjtcbiAgfVxuPjtcbmV4cG9ydCBmdW5jdGlvbiB3aXRoRGF0YVNlcnZpY2U8RSBleHRlbmRzIEVudGl0eSwgRiBleHRlbmRzIEZpbHRlcj4ob3B0aW9uczoge1xuICBkYXRhU2VydmljZVR5cGU6IFByb3ZpZGVyVG9rZW48RGF0YVNlcnZpY2U8RSwgRj4+O1xuICBmaWx0ZXI6IEY7XG59KTogU2lnbmFsU3RvcmVGZWF0dXJlPFxuICBFbXB0eUZlYXR1cmVSZXN1bHQgJiB7IHN0YXRlOiB7IGNhbGxTdGF0ZTogQ2FsbFN0YXRlIH0gJiBFbnRpdHlTdGF0ZTxFPiB9LFxuICB7XG4gICAgc3RhdGU6IERhdGFTZXJ2aWNlU3RhdGU8RSwgRj47XG4gICAgcHJvcHM6IERhdGFTZXJ2aWNlQ29tcHV0ZWQ8RT47XG4gICAgbWV0aG9kczogRGF0YVNlcnZpY2VNZXRob2RzPEUsIEY+O1xuICB9XG4+O1xuXG5leHBvcnQgZnVuY3Rpb24gd2l0aERhdGFTZXJ2aWNlPFxuICBFIGV4dGVuZHMgRW50aXR5LFxuICBGIGV4dGVuZHMgRmlsdGVyLFxuICBDb2xsZWN0aW9uIGV4dGVuZHMgc3RyaW5nLFxuPihvcHRpb25zOiB7XG4gIGRhdGFTZXJ2aWNlVHlwZTogUHJvdmlkZXJUb2tlbjxEYXRhU2VydmljZTxFLCBGPj47XG4gIGZpbHRlcjogRjtcbiAgY29sbGVjdGlvbj86IENvbGxlY3Rpb247XG59KTogLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuU2lnbmFsU3RvcmVGZWF0dXJlPGFueSwgYW55PiB7XG4gIGNvbnN0IHsgZGF0YVNlcnZpY2VUeXBlLCBmaWx0ZXIsIGNvbGxlY3Rpb246IHByZWZpeCB9ID0gb3B0aW9ucztcbiAgY29uc3Qge1xuICAgIGVudGl0aWVzS2V5LFxuICAgIGZpbHRlcktleSxcbiAgICBsb2FkS2V5LFxuICAgIHNlbGVjdGVkRW50aXRpZXNLZXksXG4gICAgc2VsZWN0ZWRJZHNLZXksXG4gICAgdXBkYXRlRmlsdGVyS2V5LFxuICAgIHVwZGF0ZVNlbGVjdGVkS2V5LFxuXG4gICAgY3VycmVudEtleSxcbiAgICBjcmVhdGVLZXksXG4gICAgdXBkYXRlS2V5LFxuICAgIHVwZGF0ZUFsbEtleSxcbiAgICBkZWxldGVLZXksXG4gICAgbG9hZEJ5SWRLZXksXG4gICAgc2V0Q3VycmVudEtleSxcbiAgfSA9IGdldERhdGFTZXJ2aWNlS2V5cyhvcHRpb25zKTtcblxuICBjb25zdCB7IGNhbGxTdGF0ZUtleSB9ID0gZ2V0Q2FsbFN0YXRlS2V5cyh7IGNvbGxlY3Rpb246IHByZWZpeCB9KTtcblxuICByZXR1cm4gc2lnbmFsU3RvcmVGZWF0dXJlKFxuICAgIHdpdGhTdGF0ZSgoKSA9PiAoe1xuICAgICAgW2ZpbHRlcktleV06IGZpbHRlcixcbiAgICAgIFtzZWxlY3RlZElkc0tleV06IHt9IGFzIFJlY29yZDxFbnRpdHlJZCwgYm9vbGVhbj4sXG4gICAgICBbY3VycmVudEtleV06IHVuZGVmaW5lZCBhcyBFIHwgdW5kZWZpbmVkLFxuICAgIH0pKSxcbiAgICB3aXRoQ29tcHV0ZWQoKHN0b3JlOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgPT4ge1xuICAgICAgY29uc3QgZW50aXRpZXMgPSBzdG9yZVtlbnRpdGllc0tleV0gYXMgU2lnbmFsPEVbXT47XG4gICAgICBjb25zdCBzZWxlY3RlZElkcyA9IHN0b3JlW3NlbGVjdGVkSWRzS2V5XSBhcyBTaWduYWw8XG4gICAgICAgIFJlY29yZDxFbnRpdHlJZCwgYm9vbGVhbj5cbiAgICAgID47XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIFtzZWxlY3RlZEVudGl0aWVzS2V5XTogY29tcHV0ZWQoKCkgPT5cbiAgICAgICAgICBlbnRpdGllcygpLmZpbHRlcigoZSkgPT4gc2VsZWN0ZWRJZHMoKVtlLmlkXSksXG4gICAgICAgICksXG4gICAgICB9O1xuICAgIH0pLFxuICAgIHdpdGhNZXRob2RzKFxuICAgICAgKHN0b3JlOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiAmIFdyaXRhYmxlU3RhdGVTb3VyY2U8b2JqZWN0PikgPT4ge1xuICAgICAgICBjb25zdCBkYXRhU2VydmljZSA9IGluamVjdChkYXRhU2VydmljZVR5cGUpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIFt1cGRhdGVGaWx0ZXJLZXldOiAoZmlsdGVyOiBGKTogdm9pZCA9PiB7XG4gICAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7IFtmaWx0ZXJLZXldOiBmaWx0ZXIgfSk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBbdXBkYXRlU2VsZWN0ZWRLZXldOiAoaWQ6IEVudGl0eUlkLCBzZWxlY3RlZDogYm9vbGVhbik6IHZvaWQgPT4ge1xuICAgICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwgKHN0YXRlOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgPT4gKHtcbiAgICAgICAgICAgICAgW3NlbGVjdGVkSWRzS2V5XToge1xuICAgICAgICAgICAgICAgIC4uLihzdGF0ZVtzZWxlY3RlZElkc0tleV0gYXMgUmVjb3JkPEVudGl0eUlkLCBib29sZWFuPiksXG4gICAgICAgICAgICAgICAgW2lkXTogc2VsZWN0ZWQsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KSk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBbbG9hZEtleV06IGFzeW5jICgpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZpbHRlciA9IHN0b3JlW2ZpbHRlcktleV0gYXMgU2lnbmFsPEY+O1xuICAgICAgICAgICAgKCgpID0+XG4gICAgICAgICAgICAgIHN0b3JlW2NhbGxTdGF0ZUtleV0gJiYgcGF0Y2hTdGF0ZShzdG9yZSwgc2V0TG9hZGluZyhwcmVmaXgpKSkoKTtcblxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZGF0YVNlcnZpY2UubG9hZChmaWx0ZXIoKSk7XG4gICAgICAgICAgICAgIHBhdGNoU3RhdGUoXG4gICAgICAgICAgICAgICAgc3RvcmUsXG4gICAgICAgICAgICAgICAgcHJlZml4XG4gICAgICAgICAgICAgICAgICA/IHNldEFsbEVudGl0aWVzKHJlc3VsdCwgeyBjb2xsZWN0aW9uOiBwcmVmaXggfSlcbiAgICAgICAgICAgICAgICAgIDogc2V0QWxsRW50aXRpZXMocmVzdWx0KSxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgKCgpID0+XG4gICAgICAgICAgICAgICAgc3RvcmVbY2FsbFN0YXRlS2V5XSAmJiBwYXRjaFN0YXRlKHN0b3JlLCBzZXRMb2FkZWQocHJlZml4KSkpKCk7XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICgoKSA9PlxuICAgICAgICAgICAgICAgIHN0b3JlW2NhbGxTdGF0ZUtleV0gJiZcbiAgICAgICAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCBzZXRFcnJvcihlLCBwcmVmaXgpKSkoKTtcbiAgICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIFtsb2FkQnlJZEtleV06IGFzeW5jIChpZDogRW50aXR5SWQpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgICAgICAgICgoKSA9PlxuICAgICAgICAgICAgICBzdG9yZVtjYWxsU3RhdGVLZXldICYmIHBhdGNoU3RhdGUoc3RvcmUsIHNldExvYWRpbmcocHJlZml4KSkpKCk7XG5cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnQgPSBhd2FpdCBkYXRhU2VydmljZS5sb2FkQnlJZChpZCk7XG4gICAgICAgICAgICAgICgoKSA9PlxuICAgICAgICAgICAgICAgIHN0b3JlW2NhbGxTdGF0ZUtleV0gJiYgcGF0Y2hTdGF0ZShzdG9yZSwgc2V0TG9hZGVkKHByZWZpeCkpKSgpO1xuICAgICAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7IFtjdXJyZW50S2V5XTogY3VycmVudCB9KTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgKCgpID0+XG4gICAgICAgICAgICAgICAgc3RvcmVbY2FsbFN0YXRlS2V5XSAmJlxuICAgICAgICAgICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHNldEVycm9yKGUsIHByZWZpeCkpKSgpO1xuICAgICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgW3NldEN1cnJlbnRLZXldOiAoY3VycmVudDogRSk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwgeyBbY3VycmVudEtleV06IGN1cnJlbnQgfSk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBbY3JlYXRlS2V5XTogYXN5bmMgKGVudGl0eTogRSk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwgeyBbY3VycmVudEtleV06IGVudGl0eSB9KTtcbiAgICAgICAgICAgICgoKSA9PlxuICAgICAgICAgICAgICBzdG9yZVtjYWxsU3RhdGVLZXldICYmIHBhdGNoU3RhdGUoc3RvcmUsIHNldExvYWRpbmcocHJlZml4KSkpKCk7XG5cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGNvbnN0IGNyZWF0ZWQgPSBhd2FpdCBkYXRhU2VydmljZS5jcmVhdGUoZW50aXR5KTtcbiAgICAgICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwgeyBbY3VycmVudEtleV06IGNyZWF0ZWQgfSk7XG4gICAgICAgICAgICAgIHBhdGNoU3RhdGUoXG4gICAgICAgICAgICAgICAgc3RvcmUsXG4gICAgICAgICAgICAgICAgcHJlZml4XG4gICAgICAgICAgICAgICAgICA/IGFkZEVudGl0eShjcmVhdGVkLCB7IGNvbGxlY3Rpb246IHByZWZpeCB9KVxuICAgICAgICAgICAgICAgICAgOiBhZGRFbnRpdHkoY3JlYXRlZCksXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICgoKSA9PlxuICAgICAgICAgICAgICAgIHN0b3JlW2NhbGxTdGF0ZUtleV0gJiYgcGF0Y2hTdGF0ZShzdG9yZSwgc2V0TG9hZGVkKHByZWZpeCkpKSgpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAoKCkgPT5cbiAgICAgICAgICAgICAgICBzdG9yZVtjYWxsU3RhdGVLZXldICYmXG4gICAgICAgICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwgc2V0RXJyb3IoZSwgcHJlZml4KSkpKCk7XG4gICAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICBbdXBkYXRlS2V5XTogYXN5bmMgKGVudGl0eTogRSk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwgeyBbY3VycmVudEtleV06IGVudGl0eSB9KTtcbiAgICAgICAgICAgICgoKSA9PlxuICAgICAgICAgICAgICBzdG9yZVtjYWxsU3RhdGVLZXldICYmIHBhdGNoU3RhdGUoc3RvcmUsIHNldExvYWRpbmcocHJlZml4KSkpKCk7XG5cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWQgPSBhd2FpdCBkYXRhU2VydmljZS51cGRhdGUoZW50aXR5KTtcbiAgICAgICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwgeyBbY3VycmVudEtleV06IHVwZGF0ZWQgfSk7XG5cbiAgICAgICAgICAgICAgY29uc3QgdXBkYXRlQXJnID0ge1xuICAgICAgICAgICAgICAgIGlkOiB1cGRhdGVkLmlkLFxuICAgICAgICAgICAgICAgIGNoYW5nZXM6IHVwZGF0ZWQsXG4gICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgY29uc3QgdXBkYXRlciA9IChjb2xsZWN0aW9uOiBzdHJpbmcpID0+XG4gICAgICAgICAgICAgICAgdXBkYXRlRW50aXR5KHVwZGF0ZUFyZywgeyBjb2xsZWN0aW9uIH0pO1xuXG4gICAgICAgICAgICAgIHBhdGNoU3RhdGUoXG4gICAgICAgICAgICAgICAgc3RvcmUsXG4gICAgICAgICAgICAgICAgcHJlZml4ID8gdXBkYXRlcihwcmVmaXgpIDogdXBkYXRlRW50aXR5KHVwZGF0ZUFyZyksXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICgoKSA9PlxuICAgICAgICAgICAgICAgIHN0b3JlW2NhbGxTdGF0ZUtleV0gJiYgcGF0Y2hTdGF0ZShzdG9yZSwgc2V0TG9hZGVkKHByZWZpeCkpKSgpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAoKCkgPT5cbiAgICAgICAgICAgICAgICBzdG9yZVtjYWxsU3RhdGVLZXldICYmXG4gICAgICAgICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwgc2V0RXJyb3IoZSwgcHJlZml4KSkpKCk7XG4gICAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICBbdXBkYXRlQWxsS2V5XTogYXN5bmMgKGVudGl0aWVzOiBFW10pOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgICAgICAgICgoKSA9PlxuICAgICAgICAgICAgICBzdG9yZVtjYWxsU3RhdGVLZXldICYmIHBhdGNoU3RhdGUoc3RvcmUsIHNldExvYWRpbmcocHJlZml4KSkpKCk7XG5cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGRhdGFTZXJ2aWNlLnVwZGF0ZUFsbChlbnRpdGllcyk7XG4gICAgICAgICAgICAgIHBhdGNoU3RhdGUoXG4gICAgICAgICAgICAgICAgc3RvcmUsXG4gICAgICAgICAgICAgICAgcHJlZml4XG4gICAgICAgICAgICAgICAgICA/IHNldEFsbEVudGl0aWVzKHJlc3VsdCwgeyBjb2xsZWN0aW9uOiBwcmVmaXggfSlcbiAgICAgICAgICAgICAgICAgIDogc2V0QWxsRW50aXRpZXMocmVzdWx0KSxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgKCgpID0+XG4gICAgICAgICAgICAgICAgc3RvcmVbY2FsbFN0YXRlS2V5XSAmJiBwYXRjaFN0YXRlKHN0b3JlLCBzZXRMb2FkZWQocHJlZml4KSkpKCk7XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICgoKSA9PlxuICAgICAgICAgICAgICAgIHN0b3JlW2NhbGxTdGF0ZUtleV0gJiZcbiAgICAgICAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCBzZXRFcnJvcihlLCBwcmVmaXgpKSkoKTtcbiAgICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIFtkZWxldGVLZXldOiBhc3luYyAoZW50aXR5OiBFKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7IFtjdXJyZW50S2V5XTogZW50aXR5IH0pO1xuICAgICAgICAgICAgKCgpID0+XG4gICAgICAgICAgICAgIHN0b3JlW2NhbGxTdGF0ZUtleV0gJiYgcGF0Y2hTdGF0ZShzdG9yZSwgc2V0TG9hZGluZyhwcmVmaXgpKSkoKTtcblxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgYXdhaXQgZGF0YVNlcnZpY2UuZGVsZXRlKGVudGl0eSk7XG4gICAgICAgICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHsgW2N1cnJlbnRLZXldOiB1bmRlZmluZWQgfSk7XG4gICAgICAgICAgICAgIHBhdGNoU3RhdGUoXG4gICAgICAgICAgICAgICAgc3RvcmUsXG4gICAgICAgICAgICAgICAgcHJlZml4XG4gICAgICAgICAgICAgICAgICA/IHJlbW92ZUVudGl0eShlbnRpdHkuaWQsIHsgY29sbGVjdGlvbjogcHJlZml4IH0pXG4gICAgICAgICAgICAgICAgICA6IHJlbW92ZUVudGl0eShlbnRpdHkuaWQpLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAoKCkgPT5cbiAgICAgICAgICAgICAgICBzdG9yZVtjYWxsU3RhdGVLZXldICYmIHBhdGNoU3RhdGUoc3RvcmUsIHNldExvYWRlZChwcmVmaXgpKSkoKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgKCgpID0+XG4gICAgICAgICAgICAgICAgc3RvcmVbY2FsbFN0YXRlS2V5XSAmJlxuICAgICAgICAgICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHNldEVycm9yKGUsIHByZWZpeCkpKSgpO1xuICAgICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgICB9LFxuICAgICksXG4gICk7XG59XG4iXX0=","/** With pagination comes in two flavors the first one is local pagination or in memory pagination. For example we have 2000 items which we want\n * to display in a table and the response payload is small enough to be stored in the memory. But we can not display all 2000 items at once\n * so we need to paginate the data. The second flavor is server side pagination where the response payload is too large to be stored in the memory\n * and we need to fetch the data from the server in chunks. In the second case we 'could' also cache the data in the memory but that could lead to\n * other problems like memory leaks and stale data. So we will not cache the data in the memory in the second case.\n * This feature implements the local pagination.\n */\nimport { computed } from '@angular/core';\nimport { signalStoreFeature, withComputed, withState, } from '@ngrx/signals';\nimport { capitalize } from './with-data-service';\nexport function withPagination(options) {\n const { pageKey, pageSizeKey, entitiesKey, selectedPageEntitiesKey, totalCountKey, pageCountKey, pageNavigationArrayMaxKey, pageNavigationArrayKey, hasNextPageKey, hasPreviousPageKey, } = createPaginationKeys(options);\n return signalStoreFeature(withState({\n [pageKey]: 0,\n [pageSizeKey]: 10,\n [pageNavigationArrayMaxKey]: 7,\n }), withComputed((store) => {\n const entities = store[entitiesKey];\n const page = store[pageKey];\n const pageSize = store[pageSizeKey];\n const pageNavigationArrayMax = store[pageNavigationArrayMaxKey];\n return {\n // The derived enitites which are displayed on the current page\n [selectedPageEntitiesKey]: computed(() => {\n const pageSizeValue = pageSize();\n const pageValue = page();\n return entities().slice(pageValue * pageSizeValue, (pageValue + 1) * pageSizeValue);\n }),\n [totalCountKey]: computed(() => entities().length),\n [pageCountKey]: computed(() => {\n const totalCountValue = entities().length;\n const pageSizeValue = pageSize();\n if (totalCountValue === 0) {\n return 0;\n }\n return Math.ceil(totalCountValue / pageSizeValue);\n }),\n [pageNavigationArrayKey]: computed(() => createPageArray(page(), pageSize(), entities().length, pageNavigationArrayMax())),\n [hasNextPageKey]: computed(() => {\n return page() < pageSize();\n }),\n [hasPreviousPageKey]: computed(() => {\n return page() > 1;\n }),\n };\n }));\n}\nexport function gotoPage(page, options) {\n const { pageKey } = createPaginationKeys(options);\n return {\n [pageKey]: page,\n };\n}\nexport function setPageSize(pageSize, options) {\n const { pageSizeKey } = createPaginationKeys(options);\n return {\n [pageSizeKey]: pageSize,\n };\n}\nexport function nextPage(options) {\n const { pageKey } = createPaginationKeys(options);\n return (state) => {\n const currentPage = state[pageKey];\n return { [pageKey]: currentPage + 1 };\n };\n}\nexport function previousPage(options) {\n const { pageKey } = createPaginationKeys(options);\n return (state) => {\n const currentPage = state[pageKey];\n return { [pageKey]: currentPage - 1 };\n };\n}\nexport function firstPage(options) {\n const { pageKey } = createPaginationKeys(options);\n return { [pageKey]: 0 };\n}\nexport function setMaxPageNavigationArrayItems(maxPageNavigationArrayItems, options) {\n const { pageNavigationArrayMaxKey } = createPaginationKeys(options);\n return {\n [pageNavigationArrayMaxKey]: maxPageNavigationArrayItems,\n };\n}\nfunction createPaginationKeys(options) {\n const entitiesKey = options?.collection\n ? `${options.collection}Entities`\n : 'entities';\n const selectedPageEntitiesKey = options?.collection\n ? `selectedPage${capitalize(options?.collection)}Entities`\n : 'selectedPageEntities';\n const pageKey = options?.collection\n ? `${options.collection}CurrentPage`\n : 'currentPage';\n const pageSizeKey = options?.collection\n ? `${options.collection}PageSize`\n : 'pageSize';\n const totalCountKey = options?.collection\n ? `${options.collection}TotalCount`\n : 'totalCount';\n const pageCountKey = options?.collection\n ? `${options.collection}PageCount`\n : 'pageCount';\n const pageNavigationArrayMaxKey = options?.collection\n ? `${options.collection}PageNavigationArrayMax`\n : 'pageNavigationArrayMax';\n const pageNavigationArrayKey = options?.collection\n ? `${options.collection}PageNavigationArray`\n : 'pageNavigationArray';\n const hasNextPageKey = options?.collection\n ? `hasNext${capitalize(options.collection)}Page`\n : 'hasNextPage';\n const hasPreviousPageKey = options?.collection\n ? `hasPrevious${capitalize(options.collection)}Page`\n : 'hasPreviousPage';\n return {\n pageKey,\n pageSizeKey,\n entitiesKey,\n selectedPageEntitiesKey,\n totalCountKey,\n pageCountKey,\n pageNavigationArrayKey,\n pageNavigationArrayMaxKey,\n hasNextPageKey,\n hasPreviousPageKey,\n };\n}\nexport function createPageArray(currentPage, itemsPerPage, totalItems, paginationRange) {\n // Convert paginationRange to number in case it's a string\n paginationRange = +paginationRange;\n // Calculate total number of pages\n const totalPages = Math.max(Math.ceil(totalItems / itemsPerPage), 1);\n const halfWay = Math.ceil(paginationRange / 2);\n const isStart = currentPage <= halfWay;\n const isEnd = totalPages - halfWay < currentPage;\n const isMiddle = !isStart && !isEnd;\n const ellipsesNeeded = paginationRange < totalPages;\n const pages = [];\n for (let i = 1; i <= totalPages && i <= paginationRange; i++) {\n let pageNumber = i;\n if (i === paginationRange) {\n pageNumber = totalPages;\n }\n else if (ellipsesNeeded) {\n if (isEnd) {\n pageNumber = totalPages - paginationRange + i;\n }\n else if (isMiddle) {\n pageNumber = currentPage - halfWay + i;\n }\n }\n const openingEllipsesNeeded = i === 2 && (isMiddle || isEnd);\n const closingEllipsesNeeded = i === paginationRange - 1 && (isMiddle || isStart);\n const label = ellipsesNeeded && (openingEllipsesNeeded || closingEllipsesNeeded)\n ? '...'\n : pageNumber;\n pages.push({ label, value: pageNumber });\n }\n return pages;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1wYWdpbmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9uZ3J4LXRvb2xraXQvc3JjL2xpYi93aXRoLXBhZ2luYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFVLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBR0wsa0JBQWtCLEVBQ2xCLFlBQVksRUFDWixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBdUdqRCxNQUFNLFVBQVUsY0FBYyxDQUErQixPQUc1RDtJQUNDLE1BQU0sRUFDSixPQUFPLEVBQ1AsV0FBVyxFQUNYLFdBQVcsRUFDWCx1QkFBdUIsRUFDdkIsYUFBYSxFQUNiLFlBQVksRUFDWix5QkFBeUIsRUFDekIsc0JBQXNCLEVBQ3RCLGNBQWMsRUFDZCxrQkFBa0IsR0FDbkIsR0FBRyxvQkFBb0IsQ0FBYSxPQUFPLENBQUMsQ0FBQztJQUU5QyxPQUFPLGtCQUFrQixDQUN2QixTQUFTLENBQUM7UUFDUixDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDWixDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUU7UUFDakIsQ0FBQyx5QkFBeUIsQ0FBQyxFQUFFLENBQUM7S0FDL0IsQ0FBQyxFQUNGLFlBQVksQ0FBQyxDQUFDLEtBQThCLEVBQUUsRUFBRTtRQUM5QyxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFnQixDQUFDO1FBQ25ELE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQW1CLENBQUM7UUFDOUMsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBbUIsQ0FBQztRQUN0RCxNQUFNLHNCQUFzQixHQUFHLEtBQUssQ0FDbEMseUJBQXlCLENBQ1IsQ0FBQztRQUVwQixPQUFPO1lBQ0wsK0RBQStEO1lB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QkFBcUIsSUFBSSxxQkFBcUIsQ0FBQztZQUNoRSxDQUFDLENBQUMsS0FBSztZQUNQLENBQUMsQ0FBQyxVQUFVLENBQUM7UUFFakIsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqIFdpdGggcGFnaW5hdGlvbiBjb21lcyBpbiB0d28gZmxhdm9ycyB0aGUgZmlyc3Qgb25lIGlzIGxvY2FsIHBhZ2luYXRpb24gb3IgaW4gbWVtb3J5IHBhZ2luYXRpb24uIEZvciBleGFtcGxlIHdlIGhhdmUgMjAwMCBpdGVtcyB3aGljaCB3ZSB3YW50XG4gKiB0byBkaXNwbGF5IGluIGEgdGFibGUgYW5kIHRoZSByZXNwb25zZSBwYXlsb2FkIGlzIHNtYWxsIGVub3VnaCB0byBiZSBzdG9yZWQgaW4gdGhlIG1lbW9yeS4gQnV0IHdlIGNhbiBub3QgZGlzcGxheSBhbGwgMjAwMCBpdGVtcyBhdCBvbmNlXG4gKiBzbyB3ZSBuZWVkIHRvIHBhZ2luYXRlIHRoZSBkYXRhLiBUaGUgc2Vjb25kIGZsYXZvciBpcyBzZXJ2ZXIgc2lkZSBwYWdpbmF0aW9uIHdoZXJlIHRoZSByZXNwb25zZSBwYXlsb2FkIGlzIHRvbyBsYXJnZSB0byBiZSBzdG9yZWQgaW4gdGhlIG1lbW9yeVxuICogYW5kIHdlIG5lZWQgdG8gZmV0Y2ggdGhlIGRhdGEgZnJvbSB0aGUgc2VydmVyIGluIGNodW5rcy4gSW4gdGhlIHNlY29uZCBjYXNlIHdlICdjb3VsZCcgYWxzbyBjYWNoZSB0aGUgZGF0YSBpbiB0aGUgbWVtb3J5IGJ1dCB0aGF0IGNvdWxkIGxlYWQgdG9cbiAqIG90aGVyIHByb2JsZW1zIGxpa2UgbWVtb3J5IGxlYWtzIGFuZCBzdGFsZSBkYXRhLiBTbyB3ZSB3aWxsIG5vdCBjYWNoZSB0aGUgZGF0YSBpbiB0aGUgbWVtb3J5IGluIHRoZSBzZWNvbmQgY2FzZS5cbiAqIFRoaXMgZmVhdHVyZSBpbXBsZW1lbnRzIHRoZSBsb2NhbCBwYWdpbmF0aW9uLlxuICovXG5cbmltcG9ydCB7IFNpZ25hbCwgY29tcHV0ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEVtcHR5RmVhdHVyZVJlc3VsdCxcbiAgU2lnbmFsU3RvcmVGZWF0dXJlLFxuICBzaWduYWxTdG9yZUZlYXR1cmUsXG4gIHdpdGhDb21wdXRlZCxcbiAgd2l0aFN0YXRlLFxufSBmcm9tICdAbmdyeC9zaWduYWxzJztcbmltcG9ydCB7IGNhcGl0YWxpemUgfSBmcm9tICcuL3dpdGgtZGF0YS1zZXJ2aWNlJztcblxuLy8gVGhpcyBpcyBhIHZpcnR1YWwgcGFnZSB3aGljaCBpcyBjYW4gYmUgdXNlZCB0byBjcmVhdGUgYSBwYWdpbmF0aW9uIGNvbnRyb2xcbmV4cG9ydCB0eXBlIFBhZ2UgPSB7IGxhYmVsOiBzdHJpbmcgfCBudW1iZXI7IHZhbHVlOiBudW1iZXIgfTtcblxuZXhwb3J0IHR5cGUgTmFtZWRQYWdpbmF0aW9uU2VydmljZVN0YXRlPEUsIENvbGxlY3Rpb24gZXh0ZW5kcyBzdHJpbmc+ID0ge1xuICBbSyBpbiBDb2xsZWN0aW9uIGFzIGBzZWxlY3RlZFBhZ2Uke0NhcGl0YWxpemU8Sz59RW50aXRpZXNgXTogQXJyYXk8RT47XG59ICYge1xuICBbSyBpbiBDb2xsZWN0aW9uIGFzIGAke0xvd2VyY2FzZTxLPn1DdXJyZW50UGFnZWBdOiBudW1iZXI7XG59ICYge1xuICBbSyBpbiBDb2xsZWN0aW9uIGFzIGAke0xvd2VyY2FzZTxLPn1QYWdlU2l6ZWBdOiBudW1iZXI7XG59ICYge1xuICBbSyBpbiBDb2xsZWN0aW9uIGFzIGAke0xvd2VyY2FzZTxLPn1Ub3RhbENvdW50YF06IG51bWJlcjtcbn0gJiB7XG4gIFtLIGluIENvbGxlY3Rpb24gYXMgYCR7TG93ZXJjYXNlPEs+fVBhZ2VDb3VudGBdOiBudW1iZXI7XG59ICYge1xuICBbSyBpbiBDb2xsZWN0aW9uIGFzIGAke0xvd2VyY2FzZTxLPn1QYWdlTmF2aWdhdGlvbkFycmF5YF06IG51bWJlcjtcbn0gJiB7XG4gIFtLIGluIENvbGxlY3Rpb24gYXMgYCR7TG93ZXJjYXNlPEs+fVBhZ2VOYXZpZ2F0aW9uQXJyYXlNYXhgXTogbnVtYmVyO1xufTtcblxuZXhwb3J0IHR5cGUgTmFtZWRQYWdpbmF0aW9uU2VydmljZVNpZ25hbHM8RSwgQ29sbGVjdGlvbiBleHRlbmRzIHN0cmluZz4gPSB7XG4gIFtLIGluIENvbGxlY3Rpb24gYXMgYHNlbGVjdGVkUGFnZSR7Q2FwaXRhbGl6ZTxLPn1FbnRpdGllc2BdOiBTaWduYWw8RVtdPjtcbn0gJiB7XG4gIFtLIGluIENvbGxlY3Rpb24gYXMgYCR7TG93ZXJjYXNlPEs+fUN1cnJlbnRQYWdlYF06IFNpZ25hbDxudW1iZXI+O1xufSAmIHtcbiAgW0sgaW4gQ29sbGVjdGlvbiBhcyBgJHtMb3dlcmNhc2U8Sz59UGFnZVNpemVgXTogU2lnbmFsPG51bWJlcj47XG59ICYge1xuICBbSyBpbiBDb2xsZWN0aW9uIGFzIGAke0xvd2VyY2FzZTxLPn1Ub3RhbENvdW50YF06IFNpZ25hbDxudW1iZXI+O1xufSAmIHtcbiAgW0sgaW4gQ29sbGVjdGlvbiBhcyBgJHtMb3dlcmNhc2U8Sz59UGFnZUNvdW50YF06IFNpZ25hbDxudW1iZXI+O1xufSAmIHtcbiAgW0sgaW4gQ29sbGVjdGlvbiBhcyBgJHtMb3dlcmNhc2U8Sz59UGFnZU5hdmlnYXRpb25BcnJheWBdOiBTaWduYWw8UGFnZVtdPjtcbn0gJiB7XG4gIFtLIGluIENvbGxlY3Rpb24gYXMgYCR7TG93ZXJjYXNlPEs+fVBhZ2VOYXZpZ2F0aW9uQXJyYXlNYXhgXTogU2lnbmFsPG51bWJlcj47XG59ICYge1xuICBbSyBpbiBDb2xsZWN0aW9uIGFzIGBoYXNOZXh0JHtDYXBpdGFsaXplPEs+fVBhZ2VgXTogU2lnbmFsPGJvb2xlYW4+O1xufSAmIHtcbiAgW0sgaW4gQ29sbGVjdGlvbiBhcyBgaGFzUHJldmlvdXMke0NhcGl0YWxpemU8Sz59UGFnZWBdOiBTaWduYWw8Ym9vbGVhbj47XG59O1xuXG5leHBvcnQgdHlwZSBQYWdpbmF0aW9uU2VydmljZVN0YXRlPEU+ID0ge1xuICBzZWxlY3RlZFBhZ2VFbnRpdGllczogQXJyYXk8RT47XG4gIGN1cnJlbnRQYWdlOiBudW1iZXI7XG4gIHBhZ2VTaXplOiBudW1iZXI7XG4gIHRvdGFsQ291bnQ6IG51bWJlcjtcbiAgcGFnZUNvdW50OiBudW1iZXI7XG4gIHBhZ2VOYXZpZ2F0aW9uQXJyYXk6IFBhZ2VbXTtcbiAgcGFnZU5hdmlnYXRpb25BcnJheU1heDogbnVtYmVyO1xufTtcblxuZXhwb3J0IHR5cGUgUGFnaW5hdGlvblNlcnZpY2VTaWduYWxzPEU+ID0ge1xuICBzZWxlY3RlZFBhZ2VFbnRpdGllczogU2lnbmFsPEVbXT47XG4gIGN1cnJlbnRQYWdlOiBTaWduYWw8bnVtYmVyPjtcbiAgcGFnZVNpemU6IFNpZ25hbDxudW1iZXI+O1xuICB0b3RhbENvdW50OiBTaWduYWw8bnVtYmVyPjtcbiAgcGFnZUNvdW50OiBTaWduYWw8bnVtYmVyPjtcbiAgcGFnZU5hdmlnYXRpb25BcnJheTogU2lnbmFsPFBhZ2VbXT47XG4gIHBhZ2VOYXZpZ2F0aW9uQXJyYXlNYXg6IFNpZ25hbDxudW1iZXI+O1xuICBoYXNOZXh0UGFnZTogU2lnbmFsPGJvb2xlYW4+O1xuICBoYXNQcmV2aW91c1BhZ2U6IFNpZ25hbDxib29sZWFuPjtcbn07XG5cbnR5cGUgUGFnZVN0YXRlPENvbGxlY3Rpb24gZXh0ZW5kcyBzdHJpbmcgfCB1bmRlZmluZWQ+ID1cbiAgQ29sbGVjdGlvbiBleHRlbmRzIHN0cmluZ1xuICAgID8ge1xuICAgICAgICBbSyBpbiBDb2xsZWN0aW9uIGFzIGAke0xvd2VyY2FzZTxLPn1DdXJyZW50UGFnZWBdOiBudW1iZXI7XG4gICAgICB9XG4gICAgOiB7IGN1cnJlbnRQYWdlOiBudW1iZXIgfTtcblxudHlwZSBQYWdlU2l6ZVN0YXRlPENvbGxlY3Rpb24gZXh0ZW5kcyBzdHJpbmcgfCB1bmRlZmluZWQ+ID1cbiAgQ29sbGVjdGlvbiBleHRlbmRzIHN0cmluZ1xuICAgID8ge1xuICAgICAgICBbSyBpbiBDb2xsZWN0aW9uIGFzIGAke0xvd2VyY2FzZTxLPn1QYWdlU2l6ZWBdOiBudW1iZXI7XG4gICAgICB9XG4gICAgOiB7IHBhZ2VTaXplOiBudW1iZXIgfTtcblxuZXhwb3J0IHR5cGUgU2V0UGFnaW5hdGlvblN0YXRlPFxuICBFLFxuICBDb2xsZWN0aW9uIGV4dGVuZHMgc3RyaW5nIHwgdW5kZWZpbmVkLFxuPiA9IENvbGxlY3Rpb24gZXh0ZW5kcyBzdHJpbmdcbiAgPyBOYW1lZFBhZ2luYXRpb25TZXJ2aWNlU3RhdGU8RSwgQ29sbGVjdGlvbj5cbiAgOiBQYWdpbmF0aW9uU2VydmljZVN0YXRlPEU+O1xuXG5leHBvcnQgZnVuY3Rpb24gd2l0aFBhZ2luYXRpb248RSwgQ29sbGVjdGlvbiBleHRlbmRzIHN0cmluZz4ob3B0aW9uczoge1xuICBlbnRpdHk6IEU7XG4gIGNvbGxlY3Rpb246IENvbGxlY3Rpb247XG59KTogU2lnbmFsU3RvcmVGZWF0dXJlPFxuICBFbXB0eUZlYXR1cmVSZXN1bHQsXG4gIEVtcHR5RmVhdHVyZVJlc3VsdCAmIHtcbiAgICBzdGF0ZTogTmFtZWRQYWdpbmF0aW9uU2VydmljZVN0YXRlPEUsIENvbGxlY3Rpb24+O1xuICAgIHByb3BzOiBOYW1lZFBhZ2luYXRpb25TZXJ2aWNlU2lnbmFsczxFLCBDb2xsZWN0aW9uPjtcbiAgfVxuPjtcblxuZXhwb3J0IGZ1bmN0aW9uIHdpdGhQYWdpbmF0aW9uPEU+KCk6IFNpZ25hbFN0b3JlRmVhdHVyZTxcbiAgRW1wdHlGZWF0dXJlUmVzdWx0LFxuICBFbXB0eUZlYXR1cmVSZXN1bHQgJiB7XG4gICAgc3RhdGU6IFBhZ2luYXRpb25TZXJ2aWNlU3RhdGU8RT47XG4gICAgcHJvcHM6IFBhZ2luYXRpb25TZXJ2aWNlU2lnbmFsczxFPjtcbiAgfVxuPjtcblxuZXhwb3J0IGZ1bmN0aW9uIHdpdGhQYWdpbmF0aW9uPEUsIENvbGxlY3Rpb24gZXh0ZW5kcyBzdHJpbmc+KG9wdGlvbnM/OiB7XG4gIGVudGl0eTogRTtcbiAgY29sbGVjdGlvbjogQ29sbGVjdGlvbjtcbn0pOiBTaWduYWxTdG9yZUZlYXR1cmUge1xuICBjb25zdCB7XG4gICAgcGFnZUtleSxcbiAgICBwYWdlU2l6ZUtleSxcbiAgICBlbnRpdGllc0tleSxcbiAgICBzZWxlY3RlZFBhZ2VFbnRpdGllc0tleSxcbiAgICB0b3RhbENvdW50S2V5LFxuICAgIHBhZ2VDb3VudEtleSxcbiAgICBwYWdlTmF2aWdhdGlvbkFycmF5TWF4S2V5LFxuICAgIHBhZ2VOYXZpZ2F0aW9uQXJyYXlLZXksXG4gICAgaGFzTmV4dFBhZ2VLZXksXG4gICAgaGFzUHJldmlvdXNQYWdlS2V5LFxuICB9ID0gY3JlYXRlUGFnaW5hdGlvbktleXM8Q29sbGVjdGlvbj4ob3B0aW9ucyk7XG5cbiAgcmV0dXJuIHNpZ25hbFN0b3JlRmVhdHVyZShcbiAgICB3aXRoU3RhdGUoe1xuICAgICAgW3BhZ2VLZXldOiAwLFxuICAgICAgW3BhZ2VTaXplS2V5XTogMTAsXG4gICAgICBbcGFnZU5hdmlnYXRpb25BcnJheU1heEtleV06IDcsXG4gICAgfSksXG4gICAgd2l0aENvbXB1dGVkKChzdG9yZTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pID0+IHtcbiAgICAgIGNvbnN0IGVudGl0aWVzID0gc3RvcmVbZW50aXRpZXNLZXldIGFzIFNpZ25hbDxFW10+O1xuICAgICAgY29uc3QgcGFnZSA9IHN0b3JlW3BhZ2VLZXldIGFzIFNpZ25hbDxudW1iZXI+O1xuICAgICAgY29uc3QgcGFnZVNpemUgPSBzdG9yZVtwYWdlU2l6ZUtleV0gYXMgU2lnbmFsPG51bWJlcj47XG4gICAgICBjb25zdCBwYWdlTmF2aWdhdGlvbkFycmF5TWF4ID0gc3RvcmVbXG4gICAgICAgIHBhZ2VOYXZpZ2F0aW9uQXJyYXlNYXhLZXlcbiAgICAgIF0gYXMgU2lnbmFsPG51bWJlcj47XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC8vIFRoZSBkZXJpdmVkIGVuaXRpdGVzIHdoaWNoIGFyZSBkaXNwbGF5ZWQgb24gdGhlIGN1cnJlbnQgcGFnZVxuICAgICAgICBbc2VsZWN0ZWRQYWdlRW50aXRpZXNLZXldOiBjb21wdXRlZDxFW10+KCgpID0+IHtcbiAgICAgICAgICBjb25zdCBwYWdlU2l6ZVZhbHVlID0gcGFnZVNpemUoKTtcbiAgICAgICAgICBjb25zdCBwYWdlVmFsdWUgPSBwYWdlKCk7XG5cbiAgICAgICAgICByZXR1cm4gZW50aXRpZXMoKS5zbGljZShcbiAgICAgICAgICAgIHBhZ2VWYWx1ZSAqIHBhZ2VTaXplVmFsdWUsXG4gICAgICAgICAgICAocGFnZVZhbHVlICsgMSkgKiBwYWdlU2l6ZVZhbHVlLFxuICAgICAgICAgICkgYXMgRVtdO1xuICAgICAgICB9KSxcbiAgICAgICAgW3RvdGFsQ291bnRLZXldOiBjb21wdXRlZCgoKSA9PiBlbnRpdGllcygpLmxlbmd0aCksXG4gICAgICAgIFtwYWdlQ291bnRLZXldOiBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgICAgY29uc3QgdG90YWxDb3VudFZhbHVlID0gZW50aXRpZXMoKS5sZW5ndGg7XG4gICAgICAgICAgY29uc3QgcGFnZVNpemVWYWx1ZSA9IHBhZ2VTaXplKCk7XG5cbiAgICAgICAgICBpZiAodG90YWxDb3VudFZhbHVlID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gTWF0aC5jZWlsKHRvdGFsQ291bnRWYWx1ZSAvIHBhZ2VTaXplVmFsdWUpO1xuICAgICAgICB9KSxcbiAgICAgICAgW3BhZ2VOYXZpZ2F0aW9uQXJyYXlLZXldOiBjb21wdXRlZCgoKSA9PlxuICAgICAgICAgIGNyZWF0ZVBhZ2VBcnJheShcbiAgICAgICAgICAgIHBhZ2UoKSxcbiAgICAgICAgICAgIHBhZ2VTaXplKCksXG4gICAgICAgICAgICBlbnRpdGllcygpLmxlbmd0aCxcbiAgICAgICAgICAgIHBhZ2VOYXZpZ2F0aW9uQXJyYXlNYXgoKSxcbiAgICAgICAgICApLFxuICAgICAgICApLFxuXG4gICAgICAgIFtoYXNOZXh0UGFnZUtleV06IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgICByZXR1cm4gcGFnZSgpIDwgcGFnZVNpemUoKTtcbiAgICAgICAgfSksXG5cbiAgICAgICAgW2hhc1ByZXZpb3VzUGFnZUtleV06IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgICByZXR1cm4gcGFnZSgpID4gMTtcbiAgICAgICAgfSksXG4gICAgICB9O1xuICAgIH0pLFxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ290b1BhZ2U8Q29sbGVjdGlvbiBleHRlbmRzIHN0cmluZz4oXG4gIHBhZ2U6IG51bWJlcixcbiAgb3B0aW9ucz86IHtcbiAgICBjb2xsZWN0aW9uOiBDb2xsZWN0aW9uO1xuICB9LFxuKTogUGFnZVN0YXRlPENvbGxlY3Rpb24+IHtcbiAgY29uc3QgeyBwYWdlS2V5IH0gPSBjcmVhdGVQYWdpbmF0aW9uS2V5czxDb2xsZWN0aW9uPihvcHRpb25zKTtcblxuICByZXR1cm4ge1xuICAgIFtwYWdlS2V5XTogcGFnZSxcbiAgfSBhcyBQYWdlU3RhdGU8Q29sbGVjdGlvbj47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRQYWdlU2l6ZTxDb2xsZWN0aW9uIGV4dGVuZHMgc3RyaW5nPihcbiAgcGFnZVNpemU6IG51bWJlcixcbiAgb3B0aW9ucz86IHtcbiAgICBjb2xsZWN0aW9uOiBDb2xsZWN0aW9uO1xuICB9LFxuKSB7XG4gIGNvbnN0IHsgcGFnZVNpemVLZXkgfSA9IGNyZWF0ZVBhZ2luYXRpb25LZXlzPENvbGxlY3Rpb24+KG9wdGlvbnMpO1xuXG4gIHJldHVybiB7XG4gICAgW3BhZ2VTaXplS2V5XTogcGFnZVNpemUsXG4gIH0gYXMgUGFnZVNpemVTdGF0ZTxDb2xsZWN0aW9uPjtcbn1cblxudHlwZSBTZXRQYWdlU3RhdGU8Q29sbGVjdGlvbiBleHRlbmRzIHN0cmluZyB8IHVuZGVmaW5lZD4gPSAoXG4gIHN0YXRlOiBQYWdlU3RhdGU8Q29sbGVjdGlvbj4sXG4pID0+IFBhZ2VTdGF0ZTxDb2xsZWN0aW9uPjtcblxuZXhwb3J0IGZ1bmN0aW9uIG5leHRQYWdlPENvbGxlY3Rpb24gZXh0ZW5kcyBzdHJpbmc+KG9wdGlvbnM/OiB7XG4gIGNvbGxlY3Rpb246IENvbGxlY3Rpb247XG59KTogU2V0UGFnZVN0YXRlPENvbGxlY3Rpb24+IHtcbiAgY29uc3QgeyBwYWdlS2V5IH0gPSBjcmVhdGVQYWdpbmF0aW9uS2V5czxDb2xsZWN0aW9uPihvcHRpb25zKTtcblxuICByZXR1cm4gKHN0YXRlOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+KSA9PiB7XG4gICAgY29uc3QgY3VycmVudFBhZ2UgPSBzdGF0ZVtwYWdlS2V5XTtcblxuICAgIHJldHVybiB7IFtwYWdlS2V5XTogY3VycmVudFBhZ2UgKyAxIH0gYXMgUGFnZVN0YXRlPENvbGxlY3Rpb24+O1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJldmlvdXNQYWdlPENvbGxlY3Rpb24gZXh0ZW5kcyBzdHJpbmc+KG9wdGlvbnM/OiB7XG4gIGNvbGxlY3Rpb246IENvbGxlY3Rpb247XG59KTogU2V0UGFnZVN0YXRlPENvbGxlY3Rpb24+IHtcbiAgY29uc3QgeyBwYWdlS2V5IH0gPSBjcmVhdGVQYWdpbmF0aW9uS2V5czxDb2xsZWN0aW9uPihvcHRpb25zKTtcblxuICByZXR1cm4gKHN0YXRlOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+KSA9PiB7XG4gICAgY29uc3QgY3VycmVudFBhZ2UgPSBzdGF0ZVtwYWdlS2V5XTtcblxuICAgIHJldHVybiB7IFtwYWdlS2V5XTogY3VycmVudFBhZ2UgLSAxIH0gYXMgUGFnZVN0YXRlPENvbGxlY3Rpb24+O1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmlyc3RQYWdlPENvbGxlY3Rpb24gZXh0ZW5kcyBzdHJpbmc+KG9wdGlvbnM/OiB7XG4gIGNvbGxlY3Rpb246IENvbGxlY3Rpb247XG59KSB7XG4gIGNvbnN0IHsgcGFnZUtleSB9ID0gY3JlYXRlUGFnaW5hdGlvbktleXM8Q29sbGVjdGlvbj4ob3B0aW9ucyk7XG5cbiAgcmV0dXJuIHsgW3BhZ2VLZXldOiAwIH0gYXMgUGFnZVN0YXRlPENvbGxlY3Rpb24+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0TWF4UGFnZU5hdmlnYXRpb25BcnJheUl0ZW1zPEUsIENvbGxlY3Rpb24gZXh0ZW5kcyBzdHJpbmc+KFxuICBtYXhQYWdlTmF2aWdhdGlvbkFycmF5SXRlbXM6IG51bWJlcixcbiAgb3B0aW9ucz86IHtcbiAgICBjb2xsZWN0aW9uOiBDb2xsZWN0aW9uO1xuICB9LFxuKTogUGFydGlhbDxTZXRQYWdpbmF0aW9uU3RhdGU8RSwgQ29sbGVjdGlvbj4+IHtcbiAgY29uc3QgeyBwYWdlTmF2aWdhdGlvbkFycmF5TWF4S2V5IH0gPVxuICAgIGNyZWF0ZVBhZ2luYXRpb25LZXlzPENvbGxlY3Rpb24+KG9wdGlvbnMpO1xuXG4gIHJldHVybiB7XG4gICAgW3BhZ2VOYXZpZ2F0aW9uQXJyYXlNYXhLZXldOiBtYXhQYWdlTmF2aWdhdGlvbkFycmF5SXRlbXMsXG4gIH0gYXMgUGFydGlhbDxTZXRQYWdpbmF0aW9uU3RhdGU8RSwgQ29sbGVjdGlvbj4+O1xufVxuXG5mdW5jdGlvbiBjcmVhdGVQYWdpbmF0aW9uS2V5czxDb2xsZWN0aW9uIGV4dGVuZHMgc3RyaW5nPihcbiAgb3B0aW9uczogeyBjb2xsZWN0aW9uOiBDb2xsZWN0aW9uIH0gfCB1bmRlZmluZWQsXG4pIHtcbiAgY29uc3QgZW50aXRpZXNLZXkgPSBvcHRpb25zPy5jb2xsZWN0aW9uXG4gICAgPyBgJHtvcHRpb25zLmNvbGxlY3Rpb259RW50aXRpZXNgXG4gICAgOiAnZW50aXRpZXMnO1xuXG4gIGNvbnN0IHNlbGVjdGVkUGFnZUVudGl0aWVzS2V5ID0gb3B0aW9ucz8uY29sbGVjdGlvblxuICAgID8gYHNlbGVjdGVkUGFnZSR7Y2FwaXRhbGl6ZShvcHRpb25zPy5jb2xsZWN0aW9uKX1FbnRpdGllc2BcbiAgICA6ICdzZWxlY3RlZFBhZ2VFbnRpdGllcyc7XG5cbiAgY29uc3QgcGFnZUtleSA9IG9wdGlvbnM/LmNvbGxlY3Rpb25cbiAgICA/IGAke29wdGlvbnMuY29sbGVjdGlvbn1DdXJyZW50UGFnZWBcbiAgICA6ICdjdXJyZW50UGFnZSc7XG5cbiAgY29uc3QgcGFnZVNpemVLZXkgPSBvcHRpb25zPy5jb2xsZWN0aW9uXG4gICAgPyBgJHtvcHRpb25zLmNvbGxlY3Rpb259UGFnZVNpemVgXG4gICAgOiAncGFnZVNpemUnO1xuXG4gIGNvbnN0IHRvdGFsQ291bnRLZXkgPSBvcHRpb25zPy5jb2xsZWN0aW9uXG4gICAgPyBgJHtvcHRpb25zLmNvbGxlY3Rpb259VG90YWxDb3VudGBcbiAgICA6ICd0b3RhbENvdW50JztcblxuICBjb25zdCBwYWdlQ291bnRLZXkgPSBvcHRpb25zPy5jb2xsZWN0aW9uXG4gICAgPyBgJHtvcHRpb25zLmNvbGxlY3Rpb259UGFnZUNvdW50YFxuICAgIDogJ3BhZ2VDb3VudCc7XG5cbiAgY29uc3QgcGFnZU5hdmlnYXRpb25BcnJheU1heEtleSA9IG9wdGlvbnM/LmNvbGxlY3Rpb25cbiAgICA/IGAke29wdGlvbnMuY29sbGVjdGlvbn1QYWdlTmF2aWdhdGlvbkFycmF5TWF4YFxuICAgIDogJ3BhZ2VOYXZpZ2F0aW9uQXJyYXlNYXgnO1xuXG4gIGNvbnN0IHBhZ2VOYXZpZ2F0aW9uQXJyYXlLZXkgPSBvcHRpb25zPy5jb2xsZWN0aW9uXG4gICAgPyBgJHtvcHRpb25zLmNvbGxlY3Rpb259UGFnZU5hdmlnYXRpb25BcnJheWBcbiAgICA6ICdwYWdlTmF2aWdhdGlvbkFycmF5JztcblxuICBjb25zdCBoYXNOZXh0UGFnZUtleSA9IG9wdGlvbnM/LmNvbGxlY3Rpb25cbiAgICA/IGBoYXNOZXh0JHtjYXBpdGFsaXplKG9wdGlvbnMuY29sbGVjdGlvbil9UGFnZWBcbiAgICA6ICdoYXNOZXh0UGFnZSc7XG5cbiAgY29uc3QgaGFzUHJldmlvdXNQYWdlS2V5ID0gb3B0aW9ucz8uY29sbGVjdGlvblxuICAgID8gYGhhc1ByZXZpb3VzJHtjYXBpdGFsaXplKG9wdGlvbnMuY29sbGVjdGlvbil9UGFnZWBcbiAgICA6ICdoYXNQcmV2aW91c1BhZ2UnO1xuXG4gIHJldHVybiB7XG4gICAgcGFnZUtleSxcbiAgICBwYWdlU2l6ZUtleSxcbiAgICBlbnRpdGllc0tleSxcbiAgICBzZWxlY3RlZFBhZ2VFbnRpdGllc0tleSxcbiAgICB0b3RhbENvdW50S2V5LFxuICAgIHBhZ2VDb3VudEtleSxcbiAgICBwYWdlTmF2aWdhdGlvbkFycmF5S2V5LFxuICAgIHBhZ2VOYXZpZ2F0aW9uQXJyYXlNYXhLZXksXG4gICAgaGFzTmV4dFBhZ2VLZXksXG4gICAgaGFzUHJldmlvdXNQYWdlS2V5LFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUGFnZUFycmF5KFxuICBjdXJyZW50UGFnZTogbnVtYmVyLFxuICBpdGVtc1BlclBhZ2U6IG51bWJlcixcbiAgdG90YWxJdGVtczogbnVtYmVyLFxuICBwYWdpbmF0aW9uUmFuZ2U6IG51bWJlcixcbik6IFBhZ2VbXSB7XG4gIC8vIENvbnZlcnQgcGFnaW5hdGlvblJhbmdlIHRvIG51bWJlciBpbiBjYXNlIGl0J3MgYSBzdHJpbmdcbiAgcGFnaW5hdGlvblJhbmdlID0gK3BhZ2luYXRpb25SYW5nZTtcblxuICAvLyBDYWxjdWxhdGUgdG90YWwgbnVtYmVyIG9mIHBhZ2VzXG4gIGNvbnN0IHRvdGFsUGFnZXMgPSBNYXRoLm1heChNYXRoLmNlaWwodG90YWxJdGVtcyAvIGl0ZW1zUGVyUGFnZSksIDEpO1xuICBjb25zdCBoYWxmV2F5ID0gTWF0aC5jZWlsKHBhZ2luYXRpb25SYW5nZSAvIDIpO1xuXG4gIGNvbnN0IGlzU3RhcnQgPSBjdXJyZW50UGFnZSA8PSBoYWxmV2F5O1xuICBjb25zdCBpc0VuZCA9IHRvdGFsUGFnZXMgLSBoYWxmV2F5IDwgY3VycmVudFBhZ2U7XG4gIGNvbnN0IGlzTWlkZGxlID0gIWlzU3RhcnQgJiYgIWlzRW5kO1xuXG4gIGNvbnN0IGVsbGlwc2VzTmVlZGVkID0gcGFnaW5hdGlvblJhbmdlIDwgdG90YWxQYWdlcztcbiAgY29uc3QgcGFnZXM6IFBhZ2VbXSA9IFtdO1xuXG4gIGZvciAobGV0IGkgPSAxOyBpIDw9IHRvdGFsUGFnZXMgJiYgaSA8PSBwYWdpbmF0aW9uUmFuZ2U7IGkrKykge1xuICAgIGxldCBwYWdlTnVtYmVyID0gaTtcblxuICAgIGlmIChpID09PSBwYWdpbmF0aW9uUmFuZ2UpIHtcbiAgICAgIHBhZ2VOdW1iZXIgPSB0b3RhbFBhZ2VzO1xuICAgIH0gZWxzZSBpZiAoZWxsaXBzZXNOZWVkZWQpIHtcbiAgICAgIGlmIChpc0VuZCkge1xuICAgICAgICBwYWdlTnVtYmVyID0gdG90YWxQYWdlcyAtIHBhZ2luYXRpb25SYW5nZSArIGk7XG4gICAgICB9IGVsc2UgaWYgKGlzTWlkZGxlKSB7XG4gICAgICAgIHBhZ2VOdW1iZXIgPSBjdXJyZW50UGFnZSAtIGhhbGZXYXkgKyBpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IG9wZW5pbmdFbGxpcHNlc05lZWRlZCA9IGkgPT09IDIgJiYgKGlzTWlkZGxlIHx8IGlzRW5kKTtcbiAgICBjb25zdCBjbG9zaW5nRWxsaXBzZXNOZWVkZWQgPVxuICAgICAgaSA9PT0gcGFnaW5hdGlvblJhbmdlIC0gMSAmJiAoaXNNaWRkbGUgfHwgaXNTdGFydCk7XG5cbiAgICBjb25zdCBsYWJlbCA9XG4gICAgICBlbGxpcHNlc05lZWRlZCAmJiAob3BlbmluZ0VsbGlwc2VzTmVlZGVkIHx8IGNsb3NpbmdFbGxpcHNlc05lZWRlZClcbiAgICAgICAgPyAnLi4uJ1xuICAgICAgICA6IHBhZ2VOdW1iZXI7XG5cbiAgICBwYWdlcy5wdXNoKHsgbGFiZWwsIHZhbHVlOiBwYWdlTnVtYmVyIH0pO1xuICB9XG5cbiAgcmV0dXJuIHBhZ2VzO1xufVxuIl19","import { getState, patchState, signalStoreFeature, withHooks, withMethods, withProps, } from '@ngrx/signals';\n/**\n * Adds a `resetState` method to the store, which resets the state\n * to the initial state.\n *\n * If you want to set a custom initial state, you can use {@link setResetState}.\n */\nexport function withReset() {\n return signalStoreFeature(withProps(() => ({ _resetState: { value: {} } })), withMethods((store) => {\n // workaround to TS excessive property check\n const methods = {\n resetState() {\n patchState(store, store._resetState.value);\n },\n __setResetState__(state) {\n store._resetState.value = state;\n },\n };\n return methods;\n }), withHooks((store) => ({\n onInit() {\n store._resetState.value = getState(store);\n },\n })));\n}\n/**\n * Sets the reset state of the store to the given state.\n *\n * Throws an error if the store is not configured with {@link withReset}.\n * @param store the instance of a SignalStore\n * @param state the state to set as the reset state\n */\nexport function setResetState(store, state) {\n if (!('__setResetState__' in store)) {\n throw new Error('Cannot set reset state, since store is not configured with withReset()');\n }\n store.__setResetState__(state);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1yZXNldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvbmdyeC10b29sa2l0L3NyYy9saWIvd2l0aC1yZXNldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsUUFBUSxFQUNSLFVBQVUsRUFDVixrQkFBa0IsRUFFbEIsU0FBUyxFQUNULFdBQVcsRUFDWCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFNdkI7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsU0FBUztJQUN2QixPQUFPLGtCQUFrQixDQUN2QixTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFDakQsV0FBVyxDQUFDLENBQUMsS0FBSyxFQUFpQixFQUFFO1FBQ25DLDRDQUE0QztRQUM1QyxNQUFNLE9BQU8sR0FBRztZQUNkLFVBQVU7Z0JBQ1IsVUFBVSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzdDLENBQUM7WUFDRCxpQkFBaUIsQ0FBQyxLQUFhO2dCQUM3QixLQUFLLENBQUMsV0FBVyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7WUFDbEMsQ0FBQztTQUNGLENBQUM7UUFFRixPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDLENBQUMsRUFDRixTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDcEIsTUFBTTtZQUNKLEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QyxDQUFDO0tBQ0YsQ0FBQyxDQUFDLENBQ0osQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsYUFBYSxDQUMzQixLQUF5QixFQUN6QixLQUFZO0lBRVosSUFBSSxDQUFDLENBQUMsbUJBQW1CLElBQUksS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNwQyxNQUFNLElBQUksS0FBSyxDQUNiLHdFQUF3RSxDQUN6RSxDQUFDO0lBQ0osQ0FBQztJQUNBLEtBQUssQ0FBQyxpQkFBNEMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM3RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgZ2V0U3RhdGUsXG4gIHBhdGNoU3RhdGUsXG4gIHNpZ25hbFN0b3JlRmVhdHVyZSxcbiAgU3RhdGVTb3VyY2UsXG4gIHdpdGhIb29rcyxcbiAgd2l0aE1ldGhvZHMsXG4gIHdpdGhQcm9wcyxcbn0gZnJvbSAnQG5ncngvc2lnbmFscyc7XG5cbmV4cG9ydCB0eXBlIFB1YmxpY01ldGhvZHMgPSB7XG4gIHJlc2V0U3RhdGUoKTogdm9pZDtcbn07XG5cbi8qKlxuICogQWRkcyBhIGByZXNldFN0YXRlYCBtZXRob2QgdG8gdGhlIHN0b3JlLCB3aGljaCByZXNldHMgdGhlIHN0YXRlXG4gKiB0byB0aGUgaW5pdGlhbCBzdGF0ZS5cbiAqXG4gKiBJZiB5b3Ugd2FudCB0byBzZXQgYSBjdXN0b20gaW5pdGlhbCBzdGF0ZSwgeW91IGNhbiB1c2Uge0BsaW5rIHNldFJlc2V0U3RhdGV9LlxuICovXG5leHBvcnQgZnVuY3Rpb24gd2l0aFJlc2V0KCkge1xuICByZXR1cm4gc2lnbmFsU3RvcmVGZWF0dXJlKFxuICAgIHdpdGhQcm9wcygoKSA9PiAoeyBfcmVzZXRTdGF0ZTogeyB2YWx1ZToge30gfSB9KSksXG4gICAgd2l0aE1ldGhvZHMoKHN0b3JlKTogUHVibGljTWV0aG9kcyA9PiB7XG4gICAgICAvLyB3b3JrYXJvdW5kIHRvIFRTIGV4Y2Vzc2l2ZSBwcm9wZXJ0eSBjaGVja1xuICAgICAgY29uc3QgbWV0aG9kcyA9IHtcbiAgICAgICAgcmVzZXRTdGF0ZSgpIHtcbiAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCBzdG9yZS5fcmVzZXRTdGF0ZS52YWx1ZSk7XG4gICAgICAgIH0sXG4gICAgICAgIF9fc2V0UmVzZXRTdGF0ZV9fKHN0YXRlOiBvYmplY3QpIHtcbiAgICAgICAgICBzdG9yZS5fcmVzZXRTdGF0ZS52YWx1ZSA9IHN0YXRlO1xuICAgICAgICB9LFxuICAgICAgfTtcblxuICAgICAgcmV0dXJuIG1ldGhvZHM7XG4gICAgfSksXG4gICAgd2l0aEhvb2tzKChzdG9yZSkgPT4gKHtcbiAgICAgIG9uSW5pdCgpIHtcbiAgICAgICAgc3RvcmUuX3Jlc2V0U3RhdGUudmFsdWUgPSBnZXRTdGF0ZShzdG9yZSk7XG4gICAgICB9LFxuICAgIH0pKSxcbiAgKTtcbn1cblxuLyoqXG4gKiBTZXRzIHRoZSByZXNldCBzdGF0ZSBvZiB0aGUgc3RvcmUgdG8gdGhlIGdpdmVuIHN0YXRlLlxuICpcbiAqIFRocm93cyBhbiBlcnJvciBpZiB0aGUgc3RvcmUgaXMgbm90IGNvbmZpZ3VyZWQgd2l0aCB7QGxpbmsgd2l0aFJlc2V0fS5cbiAqIEBwYXJhbSBzdG9yZSB0aGUgaW5zdGFuY2Ugb2YgYSBTaWduYWxTdG9yZVxuICogQHBhcmFtIHN0YXRlIHRoZSBzdGF0ZSB0byBzZXQgYXMgdGhlIHJlc2V0IHN0YXRlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRSZXNldFN0YXRlPFN0YXRlIGV4dGVuZHMgb2JqZWN0PihcbiAgc3RvcmU6IFN0YXRlU291cmNlPFN0YXRlPixcbiAgc3RhdGU6IFN0YXRlLFxuKTogdm9pZCB7XG4gIGlmICghKCdfX3NldFJlc2V0U3RhdGVfXycgaW4gc3RvcmUpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ0Nhbm5vdCBzZXQgcmVzZXQgc3RhdGUsIHNpbmNlIHN0b3JlIGlzIG5vdCBjb25maWd1cmVkIHdpdGggd2l0aFJlc2V0KCknLFxuICAgICk7XG4gIH1cbiAgKHN0b3JlLl9fc2V0UmVzZXRTdGF0ZV9fIGFzIChzdGF0ZTogU3RhdGUpID0+IHZvaWQpKHN0YXRlKTtcbn1cbiJdfQ==","import { isSignal, signal, untracked } from '@angular/core';\nimport { patchState, signalStoreFeature, watchState, withComputed, withHooks, withMethods, } from '@ngrx/signals';\nimport { capitalize } from './with-data-service';\nconst defaultOptions = {\n maxStackSize: 100,\n keys: [],\n skip: 0,\n};\nexport function getUndoRedoKeys(collections) {\n if (collections) {\n return collections.flatMap((c) => [\n `${c}EntityMap`,\n `${c}Ids`,\n `selected${capitalize(c)}Ids`,\n `${c}Filter`,\n ]);\n }\n return ['entityMap', 'ids', 'selectedIds', 'filter'];\n}\nexport function withUndoRedo(options) {\n let previous = null;\n let skipOnce = false;\n const normalized = {\n ...defaultOptions,\n ...options,\n };\n //\n // Design Decision: This feature has its own\n // internal state.\n //\n const undoStack = [];\n const redoStack = [];\n const canUndo = signal(false, ...(ngDevMode ? [{ debugName: \"canUndo\" }] : []));\n const canRedo = signal(false, ...(ngDevMode ? [{ debugName: \"canRedo\" }] : []));\n const updateInternal = () => {\n canUndo.set(undoStack.length !== 0);\n canRedo.set(redoStack.length !== 0);\n };\n const keys = [...getUndoRedoKeys(normalized.collections), ...normalized.keys];\n return signalStoreFeature(withComputed(() => ({\n canUndo: canUndo.asReadonly(),\n canRedo: canRedo.asReadonly(),\n })), withMethods((store) => ({\n undo() {\n const item = undoStack.pop();\n if (item && previous) {\n redoStack.push(previous);\n }\n if (item) {\n skipOnce = true;\n patchState(store, item);\n previous = item;\n }\n updateInternal();\n },\n redo() {\n const item = redoStack.pop();\n if (item && previous) {\n undoStack.push(previous);\n }\n if (item) {\n skipOnce = true;\n patchState(store, item);\n previous = item;\n }\n updateInternal();\n },\n clearStack() {\n undoStack.splice(0);\n redoStack.splice(0);\n previous = null;\n updateInternal();\n },\n })), withHooks({\n onInit(store) {\n watchState(store, () => {\n const cand = keys.reduce((acc, key) => {\n const s = store[key];\n if (s && isSignal(s)) {\n return {\n ...acc,\n [key]: s(),\n };\n }\n return acc;\n }, {});\n if (normalized.skip > 0) {\n normalized.skip--;\n return;\n }\n if (skipOnce) {\n skipOnce = false;\n return;\n }\n //\n // Deep Comparison to prevent duplicated entries\n // on the stack. This can e.g. happen after an undo\n // if the component sends back the undone filter\n // to the store.\n //\n if (JSON.stringify(cand) === JSON.stringify(previous)) {\n return;\n }\n // Clear redoStack after recorded action\n redoStack.splice(0);\n if (previous) {\n undoStack.push(previous);\n }\n if (redoStack.length > normalized.maxStackSize) {\n undoStack.unshift();\n }\n previous = cand;\n // Don't propogate current reactive context\n untracked(() => updateInternal());\n });\n },\n }));\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC11bmRvLXJlZG8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdG9vbGtpdC9zcmMvbGliL3dpdGgtdW5kby1yZWRvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBVSxRQUFRLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwRSxPQUFPLEVBSUwsVUFBVSxFQUNWLGtCQUFrQixFQUNsQixVQUFVLEVBQ1YsWUFBWSxFQUNaLFNBQVMsRUFDVCxXQUFXLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBV2pELE1BQU0sY0FBYyxHQUE4QjtJQUNoRCxZQUFZLEVBQUUsR0FBRztJQUNqQixJQUFJLEVBQUUsRUFBRTtJQUNSLElBQUksRUFBRSxDQUFDO0NBQ1IsQ0FBQztBQUVGLE1BQU0sVUFBVSxlQUFlLENBQUMsV0FBc0I7SUFDcEQsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUNoQixPQUFPLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ2hDLEdBQUcsQ0FBQyxXQUFXO1lBQ2YsR0FBRyxDQUFDLEtBQUs7WUFDVCxXQUFXLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSztZQUM3QixHQUFHLENBQUMsUUFBUTtTQUNiLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCxPQUFPLENBQUMsV0FBVyxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDdkQsQ0FBQztBQW9CRCxNQUFNLFVBQVUsWUFBWSxDQUMxQixPQUFnQztJQWVoQyxJQUFJLFFBQVEsR0FBcUIsSUFBSSxDQUFDO0lBQ3RDLElBQUksUUFBUSxHQUFHLEtBQUssQ0FBQztJQUVyQixNQUFNLFVBQVUsR0FBRztRQUNqQixHQUFHLGNBQWM7UUFDakIsR0FBRyxPQUFPO0tB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QUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUVQLElBQUksVUFBVSxDQUFDLElBQUksR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDeEIsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO29CQUNsQixPQUFPO2dCQUNULENBQUM7Z0JBRUQsSUFBSSxRQUFRLEVBQUUsQ0FBQztvQkFDYixRQUFRLEdBQUcsS0FBSyxDQUFDO29CQUNqQixPQUFPO2dCQUNULENBQUM7Z0JBRUQsRUFBRTtnQkFDRixnREFBZ0Q7Z0JBQ2hELG1EQUFtRDtnQkFDbkQsZ0RBQWdEO2dCQUNoRCxnQkFBZ0I7Z0JBQ2hCLEVBQUU7Z0JBQ0YsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztvQkFDdEQsT0FBTztnQkFDVCxDQUFDO2dCQUVELHdDQUF3QztnQkFDeEMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFFcEIsSUFBSSxRQUFRLEVBQUUsQ0FBQztvQkFDYixTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUMzQixDQUFDO2dCQUVELElBQUksU0FBUyxDQUFDLE1BQU0sR0FBRyxVQUFVLENBQUMsWUFBWSxFQUFFLENBQUM7b0JBQy9DLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDdEIsQ0FBQztnQkFFRCxRQUFRLEdBQUcsSUFBSSxDQUFDO2dCQUVoQiwyQ0FBMkM7Z0JBQzNDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO1lBQ3BDLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztLQUNGLENBQUMsQ0FDSCxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNpZ25hbCwgaXNTaWduYWwsIHNpZ25hbCwgdW50cmFja2VkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBFbXB0eUZlYXR1cmVSZXN1bHQsXG4gIFNpZ25hbFN0b3JlRmVhdHVyZSxcbiAgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBwYXRjaFN0YXRlLFxuICBzaWduYWxTdG9yZUZlYXR1cmUsXG4gIHdhdGNoU3RhdGUsXG4gIHdpdGhDb21wdXRlZCxcbiAgd2l0aEhvb2tzLFxuICB3aXRoTWV0aG9kcyxcbn0gZnJvbSAnQG5ncngvc2lnbmFscyc7XG5pbXBvcnQgeyBjYXBpdGFsaXplIH0gZnJvbSAnLi93aXRoLWRhdGEtc2VydmljZSc7XG5cbmV4cG9ydCB0eXBlIFN0YWNrSXRlbSA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXG5leHBvcnQgdHlwZSBOb3JtYWxpemVkVW5kb1JlZG9PcHRpb25zID0ge1xuICBtYXhTdGFja1NpemU6IG51bWJlcjtcbiAgY29sbGVjdGlvbnM/OiBzdHJpbmdbXTtcbiAga2V5czogc3RyaW5nW107XG4gIHNraXA6IG51bWJlcjtcbn07XG5cbmNvbnN0IGRlZmF1bHRPcHRpb25zOiBOb3JtYWxpemVkVW5kb1JlZG9PcHRpb25zID0ge1xuICBtYXhTdGFja1NpemU6IDEwMCxcbiAga2V5czogW10sXG4gIHNraXA6IDAsXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VW5kb1JlZG9LZXlzKGNvbGxlY3Rpb25zPzogc3RyaW5nW10pOiBzdHJpbmdbXSB7XG4gIGlmIChjb2xsZWN0aW9ucykge1xuICAgIHJldHVybiBjb2xsZWN0aW9ucy5mbGF0TWFwKChjKSA9PiBbXG4gICAgICBgJHtjfUVudGl0eU1hcGAsXG4gICAgICBgJHtjfUlkc2AsXG4gICAgICBgc2VsZWN0ZWQke2NhcGl0YWxpemUoYyl9SWRzYCxcbiAgICAgIGAke2N9RmlsdGVyYCxcbiAgICBdKTtcbiAgfVxuICByZXR1cm4gWydlbnRpdHlNYXAnLCAnaWRzJywgJ3NlbGVjdGVkSWRzJywgJ2ZpbHRlciddO1xufVxuXG50eXBlIE5vbk5ldmVyPFQ+ID0gVCBleHRlbmRzIG5ldmVyID8gbmV2ZXIgOiBUO1xuXG50eXBlIEV4dHJhY3RFbnRpdHlDb2xsZWN0aW9uPFQ+ID0gVCBleHRlbmRzIGAke2luZmVyIFV9RW50aXRpZXNgID8gVSA6IG5ldmVyO1xuXG50eXBlIEV4dHJhY3RFbnRpdHlDb2xsZWN0aW9uczxTdG9yZSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdD4gPVxuICBOb25OZXZlcjxcbiAgICB7XG4gICAgICBbSyBpbiBrZXlvZiBTdG9yZVsncHJvcHMnXV06IEV4dHJhY3RFbnRpdHlDb2xsZWN0aW9uPEs+O1xuICAgIH1ba2V5b2YgU3RvcmVbJ3Byb3BzJ11dXG4gID47XG5cbnR5cGUgT3B0aW9uc0ZvclN0YXRlPFN0b3JlIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0PiA9IFBhcnRpYWw8XG4gIE9taXQ8Tm9ybWFsaXplZFVuZG9SZWRvT3B0aW9ucywgJ2NvbGxlY3Rpb25zJyB8ICdrZXlzJz5cbj4gJiB7XG4gIGNvbGxlY3Rpb25zPzogRXh0cmFjdEVudGl0eUNvbGxlY3Rpb25zPFN0b3JlPltdO1xuICBrZXlzPzogKGtleW9mIFN0b3JlWydzdGF0ZSddKVtdO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHdpdGhVbmRvUmVkbzxJbnB1dCBleHRlbmRzIEVtcHR5RmVhdHVyZVJlc3VsdD4oXG4gIG9wdGlvbnM/OiBPcHRpb25zRm9yU3RhdGU8SW5wdXQ+LFxuKTogU2lnbmFsU3RvcmVGZWF0dXJlPFxuICBJbnB1dCxcbiAgRW1wdHlGZWF0dXJlUmVzdWx0ICYge1xuICAgIHByb3BzOiB7XG4gICAgICBjYW5VbmRvOiBTaWduYWw8Ym9vbGVhbj47XG4gICAgICBjYW5SZWRvOiBTaWduYWw8Ym9vbGVhbj47XG4gICAgfTtcbiAgICBtZXRob2RzOiB7XG4gICAgICB1bmRvOiAoKSA9PiB2b2lkO1xuICAgICAgcmVkbzogKCkgPT4gdm9pZDtcbiAgICAgIGNsZWFyU3RhY2s6ICgpID0+IHZvaWQ7XG4gICAgfTtcbiAgfVxuPiB7XG4gIGxldCBwcmV2aW91czogU3RhY2tJdGVtIHwgbnVsbCA9IG51bGw7XG4gIGxldCBza2lwT25jZSA9IGZhbHNlO1xuXG4gIGNvbnN0IG5vcm1hbGl6ZWQgPSB7XG4gICAgLi4uZGVmYXVsdE9wdGlvbnMsXG4gICAgLi4ub3B0aW9ucyxcbiAgfTtcblxuICAvL1xuICAvLyBEZXNpZ24gRGVjaXNpb246IFRoaXMgZmVhdHVyZSBoYXMgaXRzIG93blxuICAvLyBpbnRlcm5hbCBzdGF0ZS5cbiAgLy9cblxuICBjb25zdCB1bmRvU3RhY2s6IFN0YWNrSXRlbVtdID0gW107XG4gIGNvbnN0IHJlZG9TdGFjazogU3RhY2tJdGVtW10gPSBbXTtcblxuICBjb25zdCBjYW5VbmRvID0gc2lnbmFsKGZhbHNlKTtcbiAgY29uc3QgY2FuUmVkbyA9IHNpZ25hbChmYWxzZSk7XG5cbiAgY29uc3QgdXBkYXRlSW50ZXJuYWwgPSAoKSA9PiB7XG4gICAgY2FuVW5kby5zZXQodW5kb1N0YWNrLmxlbmd0aCAhPT0gMCk7XG4gICAgY2FuUmVkby5zZXQocmVkb1N0YWNrLmxlbmd0aCAhPT0gMCk7XG4gIH07XG5cbiAgY29uc3Qga2V5cyA9IFsuLi5nZXRVbmRvUmVkb0tleXMobm9ybWFsaXplZC5jb2xsZWN0aW9ucyksIC4uLm5vcm1hbGl6ZWQua2V5c107XG5cbiAgcmV0dXJuIHNpZ25hbFN0b3JlRmVhdHVyZShcbiAgICB3aXRoQ29tcHV0ZWQoKCkgPT4gKHtcbiAgICAgIGNhblVuZG86IGNhblVuZG8uYXNSZWFkb25seSgpLFxuICAgICAgY2FuUmVkbzogY2FuUmVkby5hc1JlYWRvbmx5KCksXG4gICAgfSkpLFxuICAgIHdpdGhNZXRob2RzKChzdG9yZSkgPT4gKHtcbiAgICAgIHVuZG8oKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGl0ZW0gPSB1bmRvU3RhY2sucG9wKCk7XG5cbiAgICAgICAgaWYgKGl0ZW0gJiYgcHJldmlvdXMpIHtcbiAgICAgICAgICByZWRvU3RhY2sucHVzaChwcmV2aW91cyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXRlbSkge1xuICAgICAgICAgIHNraXBPbmNlID0gdHJ1ZTtcbiAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCBpdGVtKTtcbiAgICAgICAgICBwcmV2aW91cyA9IGl0ZW07XG4gICAgICAgIH1cblxuICAgICAgICB1cGRhdGVJbnRlcm5hbCgpO1xuICAgICAgfSxcbiAgICAgIHJlZG8oKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGl0ZW0gPSByZWRvU3RhY2sucG9wKCk7XG5cbiAgICAgICAgaWYgKGl0ZW0gJiYgcHJldmlvdXMpIHtcbiAgICAgICAgICB1bmRvU3RhY2sucHVzaChwcmV2aW91cyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXRlbSkge1xuICAgICAgICAgIHNraXBPbmNlID0gdHJ1ZTtcbiAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCBpdGVtKTtcbiAgICAgICAgICBwcmV2aW91cyA9IGl0ZW07XG4gICAgICAgIH1cblxuICAgICAgICB1cGRhdGVJbnRlcm5hbCgpO1xuICAgICAgfSxcbiAgICAgIGNsZWFyU3RhY2soKTogdm9pZCB7XG4gICAgICAgIHVuZG9TdGFjay5zcGxpY2UoMCk7XG4gICAgICAgIHJlZG9TdGFjay5zcGxpY2UoMCk7XG4gICAgICAgIHByZXZpb3VzID0gbnVsbDtcbiAgICAgICAgdXBkYXRlSW50ZXJuYWwoKTtcbiAgICAgIH0sXG4gICAgfSkpLFxuICAgIHdpdGhIb29rcyh7XG4gICAgICBvbkluaXQoc3RvcmUpIHtcbiAgICAgICAgd2F0Y2hTdGF0ZShzdG9yZSwgKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGNhbmQgPSBrZXlzLnJlZHVjZSgoYWNjLCBrZXkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHMgPSAoc3RvcmUgYXMgUmVjb3JkPHN0cmluZyB8IGtleW9mIElucHV0WydzdGF0ZSddLCB1bmtub3duPilbXG4gICAgICAgICAgICAgIGtleVxuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIGlmIChzICYmIGlzU2lnbmFsKHMpKSB7XG4gICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgLi4uYWNjLFxuICAgICAgICAgICAgICAgIFtrZXldOiBzKCksXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICAgIH0sIHt9KTtcblxuICAgICAgICAgIGlmIChub3JtYWxpemVkLnNraXAgPiAwKSB7XG4gICAgICAgICAgICBub3JtYWxpemVkLnNraXAtLTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoc2tpcE9uY2UpIHtcbiAgICAgICAgICAgIHNraXBPbmNlID0gZmFsc2U7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy9cbiAgICAgICAgICAvLyBEZWVwIENvbXBhcmlzb24gdG8gcHJldmVudCBkdXBsaWNhdGVkIGVudHJpZXNcbiAgICAgICAgICAvLyBvbiB0aGUgc3RhY2suIFRoaXMgY2FuIGUuZy4gaGFwcGVuIGFmdGVyIGFuIHVuZG9cbiAgICAgICAgICAvLyBpZiB0aGUgY29tcG9uZW50IHNlbmRzIGJhY2sgdGhlIHVuZG9uZSBmaWx0ZXJcbiAgICAgICAgICAvLyB0byB0aGUgc3RvcmUuXG4gICAgICAgICAgLy9cbiAgICAgICAgICBpZiAoSlNPTi5zdHJpbmdpZnkoY2FuZCkgPT09IEpTT04uc3RyaW5naWZ5KHByZXZpb3VzKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIENsZWFyIHJlZG9TdGFjayBhZnRlciByZWNvcmRlZCBhY3Rpb25cbiAgICAgICAgICByZWRvU3RhY2suc3BsaWNlKDApO1xuXG4gICAgICAgICAgaWYgKHByZXZpb3VzKSB7XG4gICAgICAgICAgICB1bmRvU3RhY2sucHVzaChwcmV2aW91cyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHJlZG9TdGFjay5sZW5ndGggPiBub3JtYWxpemVkLm1heFN0YWNrU2l6ZSkge1xuICAgICAgICAgICAgdW5kb1N0YWNrLnVuc2hpZnQoKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBwcmV2aW91cyA9IGNhbmQ7XG5cbiAgICAgICAgICAvLyBEb24ndCBwcm9wb2dhdGUgY3VycmVudCByZWFjdGl2ZSBjb250ZXh0XG4gICAgICAgICAgdW50cmFja2VkKCgpID0+IHVwZGF0ZUludGVybmFsKCkpO1xuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgfSksXG4gICk7XG59XG4iXX0=","/**\n * Deep freezes a state object along its properties with primitive values\n * on the first level.\n *\n * The reason for this is that the final state is a merge of all\n * root properties of all states, i.e. `withState`,....\n *\n * Since the root object will not be part of the state (shadow clone),\n * we are not freezing it.\n */\nexport function deepFreeze(target, \n// if empty all properties will be frozen\npropertyNamesToBeFrozen, \n// also means that we are on the first level\nisRoot = true) {\n const runPropertyNameCheck = propertyNamesToBeFrozen.length > 0;\n for (const key of Reflect.ownKeys(target)) {\n if (runPropertyNameCheck && !propertyNamesToBeFrozen.includes(key)) {\n continue;\n }\n const propValue = target[key];\n if (isRecordLike(propValue) && !Object.isFrozen(propValue)) {\n Object.freeze(propValue);\n deepFreeze(propValue, [], false);\n }\n else if (isRoot) {\n Object.defineProperty(target, key, {\n value: propValue,\n writable: false,\n configurable: false,\n });\n }\n }\n}\nfunction isRecordLike(target) {\n return typeof target === 'object' && target !== null;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcC1mcmVlemUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdG9vbGtpdC9zcmMvbGliL2ltbXV0YWJsZS1zdGF0ZS9kZWVwLWZyZWV6ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7O0dBU0c7QUFFSCxNQUFNLFVBQVUsVUFBVSxDQUN4QixNQUFTO0FBQ1QseUNBQXlDO0FBQ3pDLHVCQUE0QztBQUM1Qyw0Q0FBNEM7QUFDNUMsTUFBTSxHQUFHLElBQUk7SUFFYixNQUFNLG9CQUFvQixHQUFHLHVCQUF1QixDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDaEUsS0FBSyxNQUFNLEdBQUcsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDMUMsSUFBSSxvQkFBb0IsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ25FLFNBQVM7UUFDWCxDQUFDO1FBRUQsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzlCLElBQUksWUFBWSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQzNELE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDekIsVUFBVSxDQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDbkMsQ0FBQzthQUFNLElBQUksTUFBTSxFQUFFLENBQUM7WUFDbEIsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFO2dCQUNqQyxLQUFLLEVBQUUsU0FBUztnQkFDaEIsUUFBUSxFQUFFLEtBQUs7Z0JBQ2YsWUFBWSxFQUFFLEtBQUs7YUFDcEIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBUyxZQUFZLENBQ25CLE1BQWU7SUFFZixPQUFPLE9BQU8sTUFBTSxLQUFLLFFBQVEsSUFBSSxNQUFNLEtBQUssSUFBSSxDQUFDO0FBQ3ZELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIERlZXAgZnJlZXplcyBhIHN0YXRlIG9iamVjdCBhbG9uZyBpdHMgcHJvcGVydGllcyB3aXRoIHByaW1pdGl2ZSB2YWx1ZXNcbiAqIG9uIHRoZSBmaXJzdCBsZXZlbC5cbiAqXG4gKiBUaGUgcmVhc29uIGZvciB0aGlzIGlzIHRoYXQgdGhlIGZpbmFsIHN0YXRlIGlzIGEgbWVyZ2Ugb2YgYWxsXG4gKiByb290IHByb3BlcnRpZXMgb2YgYWxsIHN0YXRlcywgaS5lLiBgd2l0aFN0YXRlYCwuLi4uXG4gKlxuICogU2luY2UgdGhlIHJvb3Qgb2JqZWN0IHdpbGwgbm90IGJlIHBhcnQgb2YgdGhlIHN0YXRlIChzaGFkb3cgY2xvbmUpLFxuICogd2UgYXJlIG5vdCBmcmVlemluZyBpdC5cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZGVlcEZyZWV6ZTxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZyB8IHN5bWJvbCwgdW5rbm93bj4+KFxuICB0YXJnZXQ6IFQsXG4gIC8vIGlmIGVtcHR5IGFsbCBwcm9wZXJ0aWVzIHdpbGwgYmUgZnJvemVuXG4gIHByb3BlcnR5TmFtZXNUb0JlRnJvemVuOiAoc3RyaW5nIHwgc3ltYm9sKVtdLFxuICAvLyBhbHNvIG1lYW5zIHRoYXQgd2UgYXJlIG9uIHRoZSBmaXJzdCBsZXZlbFxuICBpc1Jvb3QgPSB0cnVlLFxuKTogdm9pZCB7XG4gIGNvbnN0IHJ1blByb3BlcnR5TmFtZUNoZWNrID0gcHJvcGVydHlOYW1lc1RvQmVGcm96ZW4ubGVuZ3RoID4gMDtcbiAgZm9yIChjb25zdCBrZXkgb2YgUmVmbGVjdC5vd25LZXlzKHRhcmdldCkpIHtcbiAgICBpZiAocnVuUHJvcGVydHlOYW1lQ2hlY2sgJiYgIXByb3BlcnR5TmFtZXNUb0JlRnJvemVuLmluY2x1ZGVzKGtleSkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGNvbnN0IHByb3BWYWx1ZSA9IHRhcmdldFtrZXldO1xuICAgIGlmIChpc1JlY29yZExpa2UocHJvcFZhbHVlKSAmJiAhT2JqZWN0LmlzRnJvemVuKHByb3BWYWx1ZSkpIHtcbiAgICAgIE9iamVjdC5mcmVlemUocHJvcFZhbHVlKTtcbiAgICAgIGRlZXBGcmVlemUocHJvcFZhbHVlLCBbXSwgZmFsc2UpO1xuICAgIH0gZWxzZSBpZiAoaXNSb290KSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHtcbiAgICAgICAgdmFsdWU6IHByb3BWYWx1ZSxcbiAgICAgICAgd3JpdGFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IGZhbHNlLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGlzUmVjb3JkTGlrZShcbiAgdGFyZ2V0OiB1bmtub3duLFxuKTogdGFyZ2V0IGlzIFJlY29yZDxzdHJpbmcgfCBzeW1ib2wsIHVua25vd24+IHtcbiAgcmV0dXJuIHR5cGVvZiB0YXJnZXQgPT09ICdvYmplY3QnICYmIHRhcmdldCAhPT0gbnVsbDtcbn1cbiJdfQ==","import { isDevMode as ngIsInDevMode } from '@angular/core';\n// necessary wrapper function to test prod mode\nexport function isDevMode() {\n return ngIsInDevMode();\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMtZGV2LW1vZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdG9vbGtpdC9zcmMvbGliL2ltbXV0YWJsZS1zdGF0ZS9pcy1kZXYtbW9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxJQUFJLGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzRCwrQ0FBK0M7QUFDL0MsTUFBTSxVQUFVLFNBQVM7SUFDdkIsT0FBTyxhQUFhLEVBQUUsQ0FBQztBQUN6QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNEZXZNb2RlIGFzIG5nSXNJbkRldk1vZGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLy8gbmVjZXNzYXJ5IHdyYXBwZXIgZnVuY3Rpb24gdG8gdGVzdCBwcm9kIG1vZGVcbmV4cG9ydCBmdW5jdGlvbiBpc0Rldk1vZGUoKSB7XG4gIHJldHVybiBuZ0lzSW5EZXZNb2RlKCk7XG59XG4iXX0=","import { getState, signalStoreFeature, watchState, withHooks, withState, } from '@ngrx/signals';\nimport { deepFreeze } from './deep-freeze';\nimport { isDevMode } from './is-dev-mode';\nexport function withImmutableState(stateOrFactory, options) {\n const immutableState = typeof stateOrFactory === 'function' ? stateOrFactory() : stateOrFactory;\n const stateKeys = Reflect.ownKeys(immutableState);\n const applyFreezing = isDevMode() || options?.enableInProduction === true;\n return signalStoreFeature(withState(immutableState), withHooks((store) => ({\n onInit() {\n if (!applyFreezing) {\n return;\n }\n /**\n * `immutableState` will be initially frozen. That is because\n * of potential mutations outside the SignalStore\n *\n * ```ts\n * const initialState = {user: {id: 1}};\n * signalStore(withImmutableState(initialState));\n *\n * initialState.user.id = 2; // must throw immutability\n * ```\n */\n deepFreeze(getState(store), stateKeys);\n watchState(store, (state) => {\n deepFreeze(state, stateKeys);\n });\n },\n })));\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1pbW11dGFibGUtc3RhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdG9vbGtpdC9zcmMvbGliL2ltbXV0YWJsZS1zdGF0ZS93aXRoLWltbXV0YWJsZS1zdGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsUUFBUSxFQUNSLGtCQUFrQixFQUdsQixVQUFVLEVBQ1YsU0FBUyxFQUNULFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFpRzFDLE1BQU0sVUFBVSxrQkFBa0IsQ0FDaEMsY0FBcUMsRUFDckMsT0FBMEM7SUFLMUMsTUFBTSxjQUFjLEdBQ2xCLE9BQU8sY0FBYyxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQztJQUMzRSxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBRWxELE1BQU0sYUFBYSxHQUFHLFNBQVMsRUFBRSxJQUFJLE9BQU8sRUFBRSxrQkFBa0IsS0FBSyxJQUFJLENBQUM7SUFDMUUsT0FBTyxrQkFBa0IsQ0FDdkIsU0FBUyxDQUFDLGNBQWMsQ0FBQyxFQUN6QixTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDcEIsTUFBTTtZQUNKLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDbkIsT0FBTztZQUNULENBQUM7WUFDRDs7Ozs7Ozs7OztlQVVHO1lBQ0gsVUFBVSxDQUNSLFFBQVEsQ0FBQyxLQUFLLENBQXFDLEVBQ25ELFNBQVMsQ0FDVixDQUFDO1lBRUYsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUMxQixVQUFVLENBQUMsS0FBeUMsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUNuRSxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7S0FDRixDQUFDLENBQUMsQ0FDSixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEVtcHR5RmVhdHVyZVJlc3VsdCxcbiAgZ2V0U3RhdGUsXG4gIHNpZ25hbFN0b3JlRmVhdHVyZSxcbiAgU2lnbmFsU3RvcmVGZWF0dXJlLFxuICBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIHdhdGNoU3RhdGUsXG4gIHdpdGhIb29rcyxcbiAgd2l0aFN0YXRlLFxufSBmcm9tICdAbmdyeC9zaWduYWxzJztcbmltcG9ydCB7IGRlZXBGcmVlemUgfSBmcm9tICcuL2RlZXAtZnJlZXplJztcbmltcG9ydCB7IGlzRGV2TW9kZSB9IGZyb20gJy4vaXMtZGV2LW1vZGUnO1xuXG4vKipcbiAqIFN0YXJ0aW5nIGZyb20gdjIwLCB0aGUgcm9vdCBwcm9wZXJ0aWVzIG9mIHRoZSBzdGF0ZSBvYmplY3RcbiAqIGFyZSBhbGwgb2YgdHlwZSBgV3JpdGFibGVTaWduYWxgLlxuICpcbiAqIFRoYXQgbWVhbnMsIHdlIGNhbm5vdCBmcmVlemUgcm9vdCBwcm9wZXJ0aWVzLCB3aGljaCBhcmUgb2YgYVxuICogcHJpbWl0aXZlIGRhdGEgdHlwZS5cbiAqXG4gKiBUaGlzIGlzIGEgYnJlYWtpbmcgY2hhbmdlLCBiZWNhdXNlIGluIHYxOSB0aGUgc3RhdGUgd2FzIGEgU2lnbmFsLlxuICogV2UgaGFkIHRoZSBwb3NzaWJpbGl0eSB0byBmcmVlemUgdGhhdCBTaWduYWwnc1xuICogb2JqZWN0IGFuZCBjb3VsZCB0aGVyZWZvcmUgcHJvdmlkZSBpbW11dGFiaWxpdHkgZm9yXG4gKiByb290IHByb3BlcnRpZXMgb2YgcHJpbWl0aXZlIGRhdGEgdHlwZXMuXG4gKlxuICogRm9yIGV4YW1wbGU6XG4gKlxuICogYGBgdHNcbiAqIGNvbnN0IHN0YXRlID0ge1xuICogICBpZDogMSwgLy8gd2FzIGZyb3plbiBpbiB2MTksIGJ1dCBub3QgaW4gPj0gdjIwXG4gKiAgIGFkZHJlc3M6IHtcbiAqICAgICBzdHJlZXQ6ICdNYWluIFN0JyxcbiAqICAgICBjaXR5OiAnU3ByaW5nZmllbGQnLFxuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqL1xuXG4vKipcbiAqIFByZXZlbnRzIG11dGF0aW9uIG9mIHRoZSBzdGF0ZS5cbiAqXG4gKiBUaGlzIGlzIGRvbmUgYnkgYXBwbHlpbmcgYE9iamVjdC5mcmVlemVgIHRvIGVhY2ggcm9vdFxuICogcHJvcGVydHkgb2YgdGhlIHN0YXRlLiBBbnkgbXV0YWJsZSBjaGFuZ2Ugd2l0aGluXG4gKiBvciBvdXRzaWRlIHRoZSBgU2lnbmFsU3RvcmVgIHdpbGwgdGhyb3cgYW4gZXJyb3IuXG4gKlxuICogUm9vdCBwcm9wZXJ0aWVzIG9mIHRoZSBzdGF0ZSBoYXZpbmcgYSBwcmltaXRpdmUgZGF0YSB0eXBlXG4gKiBhcmUgbm90IHN1cHBvcnRlZC5cbiAqXG4gKiAgKiBGb3IgZXhhbXBsZTpcbiAqXG4gKiBgYGB0c1xuICogY29uc3Qgc3RhdGUgPSB7XG4gKiAgIC8vIOKblO+4jyBhcmUgbm90IGZyb3plbiAtPiBtdXRhYmxlIGNoYW5nZXMgcG9zc2libGVcbiAqICAgaWQ6IDEsXG4gKlxuICogICAvLyDinIUgYXJlIGZyb3plbiAtPiBtdXRhYmxlIGNoYW5nZXMgdGhyb3dcbiAqICAgYWRkcmVzczoge1xuICogICAgIHN0cmVldDogJ01haW4gU3QnLFxuICogICAgIGNpdHk6ICdTcHJpbmdmaWVsZCcsXG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBzdGF0ZSB0aGUgc3RhdGUgb2JqZWN0XG4gKiBAcGFyYW0gb3B0aW9ucyBlbmFibGUgcHJvdGVjdGlvbiBpbiBwcm9kdWN0aW9uIChkZWZhdWx0OiBmYWxzZSlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdpdGhJbW11dGFibGVTdGF0ZTxTdGF0ZSBleHRlbmRzIG9iamVjdD4oXG4gIHN0YXRlOiBTdGF0ZSxcbiAgb3B0aW9ucz86IHsgZW5hYmxlSW5Qcm9kdWN0aW9uPzogYm9vbGVhbiB9LFxuKTogU2lnbmFsU3RvcmVGZWF0dXJlPFxuICBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEVtcHR5RmVhdHVyZVJlc3VsdCAmIHsgc3RhdGU6IFN0YXRlIH1cbj47XG4vKipcbiAqIFByZXZlbnRzIG11dGF0aW9uIG9mIHRoZSBzdGF0ZS5cbiAqXG4gKiBUaGlzIGlzIGRvbmUgYnkgYXBwbHlpbmcgYE9iamVjdC5mcmVlemVgIHRvIGVhY2ggcm9vdFxuICogcHJvcGVydHkgb2YgdGhlIHN0YXRlLiBBbnkgbXV0YWJsZSBjaGFuZ2Ugd2l0aGluXG4gKiBvciBvdXRzaWRlIHRoZSBgU2lnbmFsU3RvcmVgIHdpbGwgdGhyb3cgYW4gZXJyb3IuXG4gKlxuICogUm9vdCBwcm9wZXJ0aWVzIG9mIHRoZSBzdGF0ZSBoYXZpbmcgYSBwcmltaXRpdmUgZGF0YSB0eXBlXG4gKiBhcmUgbm90IHN1cHBvcnRlZC5cbiAqXG4gKiAgKiBGb3IgZXhhbXBsZTpcbiAqXG4gKiBgYGB0c1xuICogY29uc3Qgc3RhdGUgPSB7XG4gKiAgIC8vIOKblO+4jyBhcmUgbm90IGZyb3plbiAtPiBtdXRhYmxlIGNoYW5nZXMgcG9zc2libGVcbiAqICAgaWQ6IDEsXG4gKlxuICogICAvLyDinIUgYXJlIGZyb3plbiAtPiBtdXRhYmxlIGNoYW5nZXMgdGhyb3dcbiAqICAgYWRkcmVzczoge1xuICogICAgIHN0cmVldDogJ01haW4gU3QnLFxuICogICAgIGNpdHk6ICdTcHJpbmdmaWVsZCcsXG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBzdGF0ZUZhY3RvcnkgYSBmdW5jdGlvbiByZXR1cm5pbmcgdGhlIHN0YXRlIG9iamVjdFxuICogQHBhcmFtIG9wdGlvbnMgZW5hYmxlIHByb3RlY3Rpb24gaW4gcHJvZHVjdGlvbiAoZGVmYXVsdDogZmFsc2UpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3aXRoSW1tdXRhYmxlU3RhdGU8U3RhdGUgZXh0ZW5kcyBvYmplY3Q+KFxuICBzdGF0ZUZhY3Rvcnk6ICgpID0+IFN0YXRlLFxuICBvcHRpb25zPzogeyBlbmFibGVJblByb2R1Y3Rpb24/OiBib29sZWFuIH0sXG4pOiBTaWduYWxTdG9yZUZlYXR1cmU8XG4gIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRW1wdHlGZWF0dXJlUmVzdWx0ICYgeyBzdGF0ZTogU3RhdGUgfVxuPjtcbmV4cG9ydCBmdW5jdGlvbiB3aXRoSW1tdXRhYmxlU3RhdGU8U3RhdGUgZXh0ZW5kcyBvYmplY3Q+KFxuICBzdGF0ZU9yRmFjdG9yeTogU3RhdGUgfCAoKCkgPT4gU3RhdGUpLFxuICBvcHRpb25zPzogeyBlbmFibGVJblByb2R1Y3Rpb24/OiBib29sZWFuIH0sXG4pOiBTaWduYWxTdG9yZUZlYXR1cmU8XG4gIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRW1wdHlGZWF0dXJlUmVzdWx0ICYgeyBzdGF0ZTogU3RhdGUgfVxuPiB7XG4gIGNvbnN0IGltbXV0YWJsZVN0YXRlID1cbiAgICB0eXBlb2Ygc3RhdGVPckZhY3RvcnkgPT09ICdmdW5jdGlvbicgPyBzdGF0ZU9yRmFjdG9yeSgpIDogc3RhdGVPckZhY3Rvcnk7XG4gIGNvbnN0IHN0YXRlS2V5cyA9IFJlZmxlY3Qub3duS2V5cyhpbW11dGFibGVTdGF0ZSk7XG5cbiAgY29uc3QgYXBwbHlGcmVlemluZyA9IGlzRGV2TW9kZSgpIHx8IG9wdGlvbnM/LmVuYWJsZUluUHJvZHVjdGlvbiA9PT0gdHJ1ZTtcbiAgcmV0dXJuIHNpZ25hbFN0b3JlRmVhdHVyZShcbiAgICB3aXRoU3RhdGUoaW1tdXRhYmxlU3RhdGUpLFxuICAgIHdpdGhIb29rcygoc3RvcmUpID0+ICh7XG4gICAgICBvbkluaXQoKSB7XG4gICAgICAgIGlmICghYXBwbHlGcmVlemluZykge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvKipcbiAgICAgICAgICogYGltbXV0YWJsZVN0YXRlYCB3aWxsIGJlIGluaXRpYWxseSBmcm96ZW4uIFRoYXQgaXMgYmVjYXVzZVxuICAgICAgICAgKiBvZiBwb3RlbnRpYWwgbXV0YXRpb25zIG91dHNpZGUgdGhlIFNpZ25hbFN0b3JlXG4gICAgICAgICAqXG4gICAgICAgICAqIGBgYHRzXG4gICAgICAgICAqIGNvbnN0IGluaXRpYWxTdGF0ZSA9IHt1c2VyOiB7aWQ6IDF9fTtcbiAgICAgICAgICogc2lnbmFsU3RvcmUod2l0aEltbXV0YWJsZVN0YXRlKGluaXRpYWxTdGF0ZSkpO1xuICAgICAgICAgKlxuICAgICAgICAgKiBpbml0aWFsU3RhdGUudXNlci5pZCA9IDI7IC8vIG11c3QgdGhyb3cgaW1tdXRhYmlsaXR5XG4gICAgICAgICAqIGBgYFxuICAgICAgICAgKi9cbiAgICAgICAgZGVlcEZyZWV6ZShcbiAgICAgICAgICBnZXRTdGF0ZShzdG9yZSkgYXMgUmVjb3JkPHN0cmluZyB8IHN5bWJvbCwgdW5rbm93bj4sXG4gICAgICAgICAgc3RhdGVLZXlzLFxuICAgICAgICApO1xuXG4gICAgICAgIHdhdGNoU3RhdGUoc3RvcmUsIChzdGF0ZSkgPT4ge1xuICAgICAgICAgIGRlZXBGcmVlemUoc3RhdGUgYXMgUmVjb3JkPHN0cmluZyB8IHN5bWJvbCwgdW5rbm93bj4sIHN0YXRlS2V5cyk7XG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICB9KSksXG4gICk7XG59XG4iXX0=","import { Injectable } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport const keyPath = 'ngrxToolkitKeyPath';\nexport const dbName = 'ngrxToolkitDb';\nexport const storeName = 'ngrxToolkitStore';\nexport const VERSION = 1;\nexport class IndexedDBService {\n /**\n * write to indexedDB\n * @param key\n * @param data\n */\n async setItem(key, data) {\n const db = await this.openDB();\n const tx = db.transaction(storeName, 'readwrite');\n const store = tx.objectStore(storeName);\n store.put({\n [keyPath]: key,\n value: data,\n });\n return new Promise((resolve, reject) => {\n tx.oncomplete = () => {\n db.close();\n resolve();\n };\n tx.onerror = () => {\n db.close();\n reject();\n };\n });\n }\n /**\n * read from indexedDB\n * @param key\n */\n async getItem(key) {\n const db = await this.openDB();\n const tx = db.transaction(storeName, 'readonly');\n const store = tx.objectStore(storeName);\n const request = store.get(key);\n return new Promise((resolve, reject) => {\n request.onsuccess = () => {\n db.close();\n // localStorage(sessionStorage) returns null if the key does not exist\n // Similarly, indexedDB should return null\n if (request.result === undefined) {\n resolve(null);\n }\n resolve(request.result?.['value']);\n };\n request.onerror = () => {\n db.close();\n reject();\n };\n });\n }\n /**\n * delete indexedDB\n * @param key\n */\n async clear(key) {\n const db = await this.openDB();\n const tx = db.transaction(storeName, 'readwrite');\n const store = tx.objectStore(storeName);\n const request = store.delete(key);\n return new Promise((resolve, reject) => {\n request.onsuccess = () => {\n db.close();\n resolve();\n };\n request.onerror = () => {\n db.close();\n reject();\n };\n });\n }\n /**\n * open indexedDB\n */\n async openDB() {\n return new Promise((resolve, reject) => {\n const request = indexedDB.open(dbName, VERSION);\n request.onupgradeneeded = () => {\n const db = request.result;\n if (!db.objectStoreNames.contains(storeName)) {\n db.createObjectStore(storeName, { keyPath });\n }\n };\n request.onsuccess = () => {\n resolve(request.result);\n };\n request.onerror = () => {\n reject(request.error);\n };\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: IndexedDBService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: IndexedDBService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: IndexedDBService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXhlZGRiLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdG9vbGtpdC9zcmMvbGliL3N0b3JhZ2Utc3luYy9pbnRlcm5hbC9pbmRleGVkZGIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUUzQyxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsb0JBQW9CLENBQUM7QUFFNUMsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHLGVBQWUsQ0FBQztBQUV0QyxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsa0JBQWtCLENBQUM7QUFFNUMsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFXLENBQVUsQ0FBQztBQUcxQyxNQUFNLE9BQU8sZ0JBQWdCO0lBQzNCOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQVcsRUFBRSxJQUFZO1FBQ3JDLE1BQU0sRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBRS9CLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBRWxELE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFeEMsS0FBSyxDQUFDLEdBQUcsQ0FBQztZQUNSLENBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRztZQUNkLEtBQUssRUFBRSxJQUFJO1NBQ1osQ0FBQyxDQUFDO1FBRUgsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUNyQyxFQUFFLENBQUMsVUFBVSxHQUFHLEdBQVMsRUFBRTtnQkFDekIsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNYLE9BQU8sRUFBRSxDQUFDO1lBQ1osQ0FBQyxDQUFDO1lBRUYs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LENBQUM7WUFFRixPQUFPLENBQUMsU0FBUyxHQUFHLEdBQVMsRUFBRTtnQkFDN0IsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUMxQixDQUFDLENBQUM7WUFFRixPQUFPLENBQUMsT0FBTyxHQUFHLEdBQVMsRUFBRTtnQkFDM0IsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN4QixDQUFDLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7OEdBL0dVLGdCQUFnQjtrSEFBaEIsZ0JBQWdCLGNBREgsTUFBTTs7MkZBQ25CLGdCQUFnQjtrQkFENUIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBjb25zdCBrZXlQYXRoID0gJ25ncnhUb29sa2l0S2V5UGF0aCc7XG5cbmV4cG9ydCBjb25zdCBkYk5hbWUgPSAnbmdyeFRvb2xraXREYic7XG5cbmV4cG9ydCBjb25zdCBzdG9yZU5hbWUgPSAnbmdyeFRvb2xraXRTdG9yZSc7XG5cbmV4cG9ydCBjb25zdCBWRVJTSU9OOiBudW1iZXIgPSAxIGFzIGNvbnN0O1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEluZGV4ZWREQlNlcnZpY2Uge1xuICAvKipcbiAgICogd3JpdGUgdG8gaW5kZXhlZERCXG4gICAqIEBwYXJhbSBrZXlcbiAgICogQHBhcmFtIGRhdGFcbiAgICovXG4gIGFzeW5jIHNldEl0ZW0oa2V5OiBzdHJpbmcsIGRhdGE6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGRiID0gYXdhaXQgdGhpcy5vcGVuREIoKTtcblxuICAgIGNvbnN0IHR4ID0gZGIudHJhbnNhY3Rpb24oc3RvcmVOYW1lLCAncmVhZHdyaXRlJyk7XG5cbiAgICBjb25zdCBzdG9yZSA9IHR4Lm9iamVjdFN0b3JlKHN0b3JlTmFtZSk7XG5cbiAgICBzdG9yZS5wdXQoe1xuICAgICAgW2tleVBhdGhdOiBrZXksXG4gICAgICB2YWx1ZTogZGF0YSxcbiAgICB9KTtcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0eC5vbmNvbXBsZXRlID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICBkYi5jbG9zZSgpO1xuICAgICAgICByZXNvbHZlKCk7XG4gICAgICB9O1xuXG4gICAgICB0eC5vbmVycm9yID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICBkYi5jbG9zZSgpO1xuICAgICAgICByZWplY3QoKTtcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogcmVhZCBmcm9tIGluZGV4ZWREQlxuICAgKiBAcGFyYW0ga2V5XG4gICAqL1xuICBhc3luYyBnZXRJdGVtKGtleTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmcgfCBudWxsPiB7XG4gICAgY29uc3QgZGIgPSBhd2FpdCB0aGlzLm9wZW5EQigpO1xuXG4gICAgY29uc3QgdHggPSBkYi50cmFuc2FjdGlvbihzdG9yZU5hbWUsICdyZWFkb25seScpO1xuXG4gICAgY29uc3Qgc3RvcmUgPSB0eC5vYmplY3RTdG9yZShzdG9yZU5hbWUpO1xuXG4gICAgY29uc3QgcmVxdWVzdCA9IHN0b3JlLmdldChrZXkpO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICBkYi5jbG9zZSgpO1xuICAgICAgICAvLyBsb2NhbFN0b3JhZ2Uoc2Vzc2lvblN0b3JhZ2UpIHJldHVybnMgbnVsbCBpZiB0aGUga2V5IGRvZXMgbm90IGV4aXN0XG4gICAgICAgIC8vIFNpbWlsYXJseSwgaW5kZXhlZERCIHNob3VsZCByZXR1cm4gbnVsbFxuICAgICAgICBpZiAocmVxdWVzdC5yZXN1bHQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJlc29sdmUobnVsbCk7XG4gICAgICAgIH1cbiAgICAgICAgcmVzb2x2ZShyZXF1ZXN0LnJlc3VsdD8uWyd2YWx1ZSddKTtcbiAgICAgIH07XG5cbiAgICAgIHJlcXVlc3Qub25lcnJvciA9ICgpOiB2b2lkID0+IHtcbiAgICAgICAgZGIuY2xvc2UoKTtcbiAgICAgICAgcmVqZWN0KCk7XG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIGRlbGV0ZSBpbmRleGVkREJcbiAgICogQHBhcmFtIGtleVxuICAgKi9cbiAgYXN5bmMgY2xlYXIoa2V5OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBkYiA9IGF3YWl0IHRoaXMub3BlbkRCKCk7XG5cbiAgICBjb25zdCB0eCA9IGRiLnRyYW5zYWN0aW9uKHN0b3JlTmFtZSwgJ3JlYWR3cml0ZScpO1xuXG4gICAgY29uc3Qgc3RvcmUgPSB0eC5vYmplY3RTdG9yZShzdG9yZU5hbWUpO1xuXG4gICAgY29uc3QgcmVxdWVzdCA9IHN0b3JlLmRlbGV0ZShrZXkpO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICBkYi5jbG9zZSgpO1xuICAgICAgICByZXNvbHZlKCk7XG4gICAgICB9O1xuXG4gICAgICByZXF1ZXN0Lm9uZXJyb3IgPSAoKTogdm9pZCA9PiB7XG4gICAgICAgIGRiLmNsb3NlKCk7XG4gICAgICAgIHJlamVjdCgpO1xuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBvcGVuIGluZGV4ZWREQlxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBvcGVuREIoKTogUHJvbWlzZTxJREJEYXRhYmFzZT4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBjb25zdCByZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJOYW1lLCBWRVJTSU9OKTtcblxuICAgICAgcmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGRiID0gcmVxdWVzdC5yZXN1bHQ7XG5cbiAgICAgICAgaWYgKCFkYi5vYmplY3RTdG9yZU5hbWVzLmNvbnRhaW5zKHN0b3JlTmFtZSkpIHtcbiAgICAgICAgICBkYi5jcmVhdGVPYmplY3RTdG9yZShzdG9yZU5hbWUsIHsga2V5UGF0aCB9KTtcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSAoKTogdm9pZCA9PiB7XG4gICAgICAgIHJlc29sdmUocmVxdWVzdC5yZXN1bHQpO1xuICAgICAgfTtcblxuICAgICAgcmVxdWVzdC5vbmVycm9yID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICByZWplY3QocmVxdWVzdC5lcnJvcik7XG4gICAgICB9O1xuICAgIH0pO1xuICB9XG59XG4iXX0=","/**\n * AsyncFeatureResult is used as the public interface that users interact with\n * when calling `withIndexedDB`. It intentionally omits the internal SYNC_STATUS\n * property to avoid TypeScript error TS4058 (return type of public method\n * includes private type).\n *\n * For internal implementation, we use AsyncStoreForFactory which includes\n * the SYNC_STATUS property needed for state management.\n */\nexport const SYNC_STATUS = Symbol('SYNC_STATUS');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ3J4LXRvb2xraXQvc3JjL2xpYi9zdG9yYWdlLXN5bmMvaW50ZXJuYWwvbW9kZWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTZCQTs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTaWduYWwsIFdyaXRhYmxlU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBFbXB0eUZlYXR1cmVSZXN1bHQsIFdyaXRhYmxlU3RhdGVTb3VyY2UgfSBmcm9tICdAbmdyeC9zaWduYWxzJztcbmltcG9ydCB7IFN5bmNDb25maWcgfSBmcm9tICcuLi93aXRoLXN0b3JhZ2Utc3luYyc7XG5cbmV4cG9ydCB0eXBlIFN5bmNNZXRob2RzID0ge1xuICBjbGVhclN0b3JhZ2UoKTogdm9pZDtcbiAgcmVhZEZyb21TdG9yYWdlKCk6IHZvaWQ7XG4gIHdyaXRlVG9TdG9yYWdlKCk6IHZvaWQ7XG59O1xuXG5leHBvcnQgdHlwZSBTeW5jRmVhdHVyZVJlc3VsdCA9IEVtcHR5RmVhdHVyZVJlc3VsdCAmIHtcbiAgbWV0aG9kczogU3luY01ldGhvZHM7XG59O1xuXG5leHBvcnQgdHlwZSBTeW5jU3RvcmVGb3JGYWN0b3J5PFN0YXRlIGV4dGVuZHMgb2JqZWN0PiA9XG4gIFdyaXRhYmxlU3RhdGVTb3VyY2U8U3RhdGU+O1xuXG5leHBvcnQgdHlwZSBTeW5jU3RvcmFnZVN0cmF0ZWd5PFN0YXRlIGV4dGVuZHMgb2JqZWN0PiA9ICgoXG4gIGNvbmZpZzogUmVxdWlyZWQ8U3luY0NvbmZpZzxTdGF0ZT4+LFxuICBzdG9yZTogU3luY1N0b3JlRm9yRmFjdG9yeTxTdGF0ZT4sXG4gIHVzZVN0dWJzOiBib29sZWFuLFxuKSA9PiBTeW5jTWV0aG9kcykgJiB7IHR5cGU6ICdzeW5jJyB9O1xuXG5leHBvcnQgdHlwZSBBc3luY01ldGhvZHMgPSB7XG4gIGNsZWFyU3RvcmFnZSgpOiBQcm9taXNlPHZvaWQ+O1xuICByZWFkRnJvbVN0b3JhZ2UoKTogUHJvbWlzZTx2b2lkPjtcbiAgd3JpdGVUb1N0b3JhZ2UoKTogUHJvbWlzZTx2b2lkPjtcbn07XG5cbi8qKlxuICogQXN5bmNGZWF0dXJlUmVzdWx0IGlzIHVzZWQgYXMgdGhlIHB1YmxpYyBpbnRlcmZhY2UgdGhhdCB1c2VycyBpbnRlcmFjdCB3aXRoXG4gKiB3aGVuIGNhbGxpbmcgYHdpdGhJbmRleGVkREJgLiBJdCBpbnRlbnRpb25hbGx5IG9taXRzIHRoZSBpbnRlcm5hbCBTWU5DX1NUQVRVU1xuICogcHJvcGVydHkgdG8gYXZvaWQgVHlwZVNjcmlwdCBlcnJvciBUUzQwNTggKHJldHVybiB0eXBlIG9mIHB1YmxpYyBtZXRob2RcbiAqIGluY2x1ZGVzIHByaXZhdGUgdHlwZSkuXG4gKlxuICogRm9yIGludGVybmFsIGltcGxlbWVudGF0aW9uLCB3ZSB1c2UgQXN5bmNTdG9yZUZvckZhY3Rvcnkgd2hpY2ggaW5jbHVkZXNcbiAqIHRoZSBTWU5DX1NUQVRVUyBwcm9wZXJ0eSBuZWVkZWQgZm9yIHN0YXRlIG1hbmFnZW1lbnQuXG4gKi9cbmV4cG9ydCBjb25zdCBTWU5DX1NUQVRVUyA9IFN5bWJvbCgnU1lOQ19TVEFUVVMnKTtcbmV4cG9ydCB0eXBlIFN5bmNTdGF0dXMgPSAnaWRsZScgfCAnc3luY2luZycgfCAnc3luY2VkJztcblxuLy8gS2VlcGluZyBpdCBpbnRlcm5hbCBhdm9pZHMgVFM0MDU4IGVycm9yXG5leHBvcnQgdHlwZSBJbnRlcm5hbEFzeW5jUHJvcHMgPSBBc3luY0ZlYXR1cmVSZXN1bHRbJ3Byb3BzJ10gJiB7XG4gIFtTWU5DX1NUQVRVU106IFdyaXRhYmxlU2lnbmFsPFN5bmNTdGF0dXM+O1xufTtcblxuZXhwb3J0IHR5cGUgQXN5bmNGZWF0dXJlUmVzdWx0ID0gRW1wdHlGZWF0dXJlUmVzdWx0ICYge1xuICBtZXRob2RzOiBBc3luY01ldGhvZHM7XG4gIHByb3BzOiB7XG4gICAgaXNTeW5jZWQ6IFNpZ25hbDxib29sZWFuPjtcbiAgICB3aGVuU3luY2VkOiAoKSA9PiBQcm9taXNlPHZvaWQ+O1xuICB9O1xufTtcblxuZXhwb3J0IHR5cGUgQXN5bmNTdG9yZUZvckZhY3Rvcnk8U3RhdGUgZXh0ZW5kcyBvYmplY3Q+ID1cbiAgV3JpdGFibGVTdGF0ZVNvdXJjZTxTdGF0ZT4gJiBJbnRlcm5hbEFzeW5jUHJvcHM7XG5cbmV4cG9ydCB0eXBlIEFzeW5jU3RvcmFnZVN0cmF0ZWd5PFN0YXRlIGV4dGVuZHMgb2JqZWN0PiA9ICgoXG4gIGNvbmZpZzogUmVxdWlyZWQ8U3luY0NvbmZpZzxTdGF0ZT4+LFxuICBzdG9yZTogQXN5bmNTdG9yZUZvckZhY3Rvcnk8U3RhdGU+LFxuICB1c2VTdHViczogYm9vbGVhbixcbikgPT4gQXN5bmNNZXRob2RzKSAmIHsgdHlwZTogJ2FzeW5jJyB9O1xuIl19","import { inject } from '@angular/core';\nimport { getState, patchState } from '@ngrx/signals';\nimport { IndexedDBService } from '../internal/indexeddb.service';\nimport { SYNC_STATUS, } from '../internal/models';\nexport function withIndexedDB() {\n function factory({ key, parse, select, stringify }, store, useStubs) {\n if (useStubs) {\n return {\n clearStorage: () => Promise.resolve(),\n readFromStorage: () => Promise.resolve(),\n writeToStorage: () => Promise.resolve(),\n };\n }\n const indexeddbService = inject(IndexedDBService);\n function warnOnSyncing(mode) {\n if (store[SYNC_STATUS]() === 'syncing') {\n const prettyMode = mode === 'read' ? 'Reading' : 'Writing';\n console.warn(`${prettyMode} to Store (${key}) happened during an ongoing synchronization process.`, 'Please ensure that the store is not in syncing state via `store.whenSynced()`.', 'Alternatively, you can disable the autoSync by passing `autoSync: false` in the config.');\n }\n }\n return {\n /**\n * Removes the item stored in storage.\n */\n async clearStorage() {\n warnOnSyncing('write');\n store[SYNC_STATUS].set('syncing');\n patchState(store, {});\n await indexeddbService.clear(key);\n store[SYNC_STATUS].set('synced');\n },\n /**\n * Reads item from storage and patches the state.\n */\n async readFromStorage() {\n warnOnSyncing('read');\n store[SYNC_STATUS].set('syncing');\n const stateString = await indexeddbService.getItem(key);\n if (stateString) {\n patchState(store, parse(stateString));\n }\n store[SYNC_STATUS].set('synced');\n },\n /**\n * Writes selected portion to storage.\n */\n async writeToStorage() {\n warnOnSyncing('write');\n store[SYNC_STATUS].set('syncing');\n const slicedState = select(getState(store));\n await indexeddbService.setItem(key, stringify(slicedState));\n store[SYNC_STATUS].set('synced');\n },\n };\n }\n factory.type = 'async';\n return factory;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1pbmRleGVkLWRiLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ3J4LXRvb2xraXQvc3JjL2xpYi9zdG9yYWdlLXN5bmMvZmVhdHVyZXMvd2l0aC1pbmRleGVkLWRiLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDakUsT0FBTyxFQUlMLFdBQVcsR0FDWixNQUFNLG9CQUFvQixDQUFDO0FBRzVCLE1BQU0sVUFBVSxhQUFhO0lBRzNCLFNBQVMsT0FBTyxDQUNkLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUErQixFQUM5RCxLQUFrQyxFQUNsQyxRQUFpQjtRQUVqQixJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ2IsT0FBTztnQkFDTCxZQUFZLEVBQUUsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRTtnQkFDckMsZUFBZSxFQUFFLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUU7Z0JBQ3hDLGNBQWMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFO2FBQ3hDLENBQUM7UUFDSixDQUFDO1FBRUQsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUVsRCxTQUFTLGFBQWEsQ0FBQyxJQUFzQjtZQUMzQyxJQUFJLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUN2QyxNQUFNLFVBQVUsR0FBRyxJQUFJLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztnQkFDM0QsT0FBTyxDQUFDLElBQUksQ0FDVixHQUFHLFVBQVUsY0FBYyxHQUFHLHVEQUF1RCxFQUNyRixnRkFBZ0YsRUFDaEYseUZBQXlGLENBQzFGLENBQUM7WUFDSixDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU87WUFDTDs7ZUFFRztZQUNILEtBQUssQ0FBQyxZQUFZO2dCQUNoQixhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ3ZCLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ2xDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ3RCLE1BQU0sZ0JBQWdCLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNsQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ25DLENBQUM7WUFFRDs7ZUFFRztZQUNILEtBQUssQ0FBQyxlQUFlO2dCQUNuQixhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ3RCLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ2xDLE1BQU0sV0FBVyxHQUFHLE1BQU0sZ0JBQWdCLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUN4RCxJQUFJLFdBQVcsRUFBRSxDQUFDO29CQUNoQixVQUFVLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO2dCQUN4QyxDQUFDO2dCQUNELEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDbkMsQ0FBQztZQUVEOztlQUVHO1lBQ0gsS0FBSyxDQUFDLGNBQWM7Z0JBQ2xCLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDdkIsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDbEMsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBVSxDQUFDO2dCQUNyRCxNQUFNLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7Z0JBQzVELEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDbkMsQ0FBQztTQUNGLENBQUM7SUFDSixDQUFDO0lBQ0QsT0FBTyxDQUFDLElBQUksR0FBRyxPQUFnQixDQUFDO0lBRWhDLE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGdldFN0YXRlLCBwYXRjaFN0YXRlIH0gZnJvbSAnQG5ncngvc2lnbmFscyc7XG5pbXBvcnQgeyBJbmRleGVkREJTZXJ2aWNlIH0gZnJvbSAnLi4vaW50ZXJuYWwvaW5kZXhlZGRiLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgQXN5bmNNZXRob2RzLFxuICBBc3luY1N0b3JhZ2VTdHJhdGVneSxcbiAgQXN5bmNTdG9yZUZvckZhY3RvcnksXG4gIFNZTkNfU1RBVFVTLFxufSBmcm9tICcuLi9pbnRlcm5hbC9tb2RlbHMnO1xuaW1wb3J0IHsgU3luY0NvbmZpZyB9IGZyb20gJy4uL3dpdGgtc3RvcmFnZS1zeW5jJztcblxuZXhwb3J0IGZ1bmN0aW9uIHdpdGhJbmRleGVkREI8XG4gIFN0YXRlIGV4dGVuZHMgb2JqZWN0LFxuPigpOiBBc3luY1N0b3JhZ2VTdHJhdGVneTxTdGF0ZT4ge1xuICBmdW5jdGlvbiBmYWN0b3J5KFxuICAgIHsga2V5LCBwYXJzZSwgc2VsZWN0LCBzdHJpbmdpZnkgfTogUmVxdWlyZWQ8U3luY0NvbmZpZzxTdGF0ZT4+LFxuICAgIHN0b3JlOiBBc3luY1N0b3JlRm9yRmFjdG9yeTxTdGF0ZT4sXG4gICAgdXNlU3R1YnM6IGJvb2xlYW4sXG4gICk6IEFzeW5jTWV0aG9kcyB7XG4gICAgaWYgKHVzZVN0dWJzKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjbGVhclN0b3JhZ2U6ICgpID0+IFByb21pc2UucmVzb2x2ZSgpLFxuICAgICAgICByZWFkRnJvbVN0b3JhZ2U6ICgpID0+IFByb21pc2UucmVzb2x2ZSgpLFxuICAgICAgICB3cml0ZVRvU3RvcmFnZTogKCkgPT4gUHJvbWlzZS5yZXNvbHZlKCksXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0IGluZGV4ZWRkYlNlcnZpY2UgPSBpbmplY3QoSW5kZXhlZERCU2VydmljZSk7XG5cbiAgICBmdW5jdGlvbiB3YXJuT25TeW5jaW5nKG1vZGU6ICdyZWFkJyB8ICd3cml0ZScpOiB2b2lkIHtcbiAgICAgIGlmIChzdG9yZVtTWU5DX1NUQVRVU10oKSA9PT0gJ3N5bmNpbmcnKSB7XG4gICAgICAgIGNvbnN0IHByZXR0eU1vZGUgPSBtb2RlID09PSAncmVhZCcgPyAnUmVhZGluZycgOiAnV3JpdGluZyc7XG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICBgJHtwcmV0dHlNb2RlfSB0byBTdG9yZSAoJHtrZXl9KSBoYXBwZW5lZCBkdXJpbmcgYW4gb25nb2luZyBzeW5jaHJvbml6YXRpb24gcHJvY2Vzcy5gLFxuICAgICAgICAgICdQbGVhc2UgZW5zdXJlIHRoYXQgdGhlIHN0b3JlIGlzIG5vdCBpbiBzeW5jaW5nIHN0YXRlIHZpYSBgc3RvcmUud2hlblN5bmNlZCgpYC4nLFxuICAgICAgICAgICdBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIGRpc2FibGUgdGhlIGF1dG9TeW5jIGJ5IHBhc3NpbmcgYGF1dG9TeW5jOiBmYWxzZWAgaW4gdGhlIGNvbmZpZy4nLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAvKipcbiAgICAgICAqIFJlbW92ZXMgdGhlIGl0ZW0gc3RvcmVkIGluIHN0b3JhZ2UuXG4gICAgICAgKi9cbiAgICAgIGFzeW5jIGNsZWFyU3RvcmFnZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgd2Fybk9uU3luY2luZygnd3JpdGUnKTtcbiAgICAgICAgc3RvcmVbU1lOQ19TVEFUVVNdLnNldCgnc3luY2luZycpO1xuICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7fSk7XG4gICAgICAgIGF3YWl0IGluZGV4ZWRkYlNlcnZpY2UuY2xlYXIoa2V5KTtcbiAgICAgICAgc3RvcmVbU1lOQ19TVEFUVVNdLnNldCgnc3luY2VkJyk7XG4gICAgICB9LFxuXG4gICAgICAvKipcbiAgICAgICAqIFJlYWRzIGl0ZW0gZnJvbSBzdG9yYWdlIGFuZCBwYXRjaGVzIHRoZSBzdGF0ZS5cbiAgICAgICAqL1xuICAgICAgYXN5bmMgcmVhZEZyb21TdG9yYWdlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB3YXJuT25TeW5jaW5nKCdyZWFkJyk7XG4gICAgICAgIHN0b3JlW1NZTkNfU1RBVFVTXS5zZXQoJ3N5bmNpbmcnKTtcbiAgICAgICAgY29uc3Qgc3RhdGVTdHJpbmcgPSBhd2FpdCBpbmRleGVkZGJTZXJ2aWNlLmdldEl0ZW0oa2V5KTtcbiAgICAgICAgaWYgKHN0YXRlU3RyaW5nKSB7XG4gICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwgcGFyc2Uoc3RhdGVTdHJpbmcpKTtcbiAgICAgICAgfVxuICAgICAgICBzdG9yZVtTWU5DX1NUQVRVU10uc2V0KCdzeW5jZWQnKTtcbiAgICAgIH0sXG5cbiAgICAgIC8qKlxuICAgICAgICogV3JpdGVzIHNlbGVjdGVkIHBvcnRpb24gdG8gc3RvcmFnZS5cbiAgICAgICAqL1xuICAgICAgYXN5bmMgd3JpdGVUb1N0b3JhZ2UoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHdhcm5PblN5bmNpbmcoJ3dyaXRlJyk7XG4gICAgICAgIHN0b3JlW1NZTkNfU1RBVFVTXS5zZXQoJ3N5bmNpbmcnKTtcbiAgICAgICAgY29uc3Qgc2xpY2VkU3RhdGUgPSBzZWxlY3QoZ2V0U3RhdGUoc3RvcmUpKSBhcyBTdGF0ZTtcbiAgICAgICAgYXdhaXQgaW5kZXhlZGRiU2VydmljZS5zZXRJdGVtKGtleSwgc3RyaW5naWZ5KHNsaWNlZFN0YXRlKSk7XG4gICAgICAgIHN0b3JlW1NZTkNfU1RBVFVTXS5zZXQoJ3N5bmNlZCcpO1xuICAgICAgfSxcbiAgICB9O1xuICB9XG4gIGZhY3RvcnkudHlwZSA9ICdhc3luYycgYXMgY29uc3Q7XG5cbiAgcmV0dXJuIGZhY3Rvcnk7XG59XG4iXX0=","import { Injectable } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class LocalStorageService {\n getItem(key) {\n return localStorage.getItem(key);\n }\n setItem(key, data) {\n return localStorage.setItem(key, data);\n }\n clear(key) {\n return localStorage.removeItem(key);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: LocalStorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: LocalStorageService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: LocalStorageService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtc3RvcmFnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ3J4LXRvb2xraXQvc3JjL2xpYi9zdG9yYWdlLXN5bmMvaW50ZXJuYWwvbG9jYWwtc3RvcmFnZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBTTNDLE1BQU0sT0FBTyxtQkFBbUI7SUFDOUIsT0FBTyxDQUFDLEdBQVc7UUFDakIsT0FBTyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxPQUFPLENBQUMsR0FBVyxFQUFFLElBQVk7UUFDL0IsT0FBTyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsS0FBSyxDQUFDLEdBQVc7UUFDZixPQUFPLFlBQVksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEMsQ0FBQzs4R0FYVSxtQkFBbUI7a0hBQW5CLG1CQUFtQixjQUZsQixNQUFNOzsyRkFFUCxtQkFBbUI7a0JBSC9CLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHt9IGZyb20gJy4vbW9kZWxzJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIExvY2FsU3RvcmFnZVNlcnZpY2Uge1xuICBnZXRJdGVtKGtleTogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKGtleSk7XG4gIH1cblxuICBzZXRJdGVtKGtleTogc3RyaW5nLCBkYXRhOiBzdHJpbmcpOiB2b2lkIHtcbiAgICByZXR1cm4gbG9jYWxTdG9yYWdlLnNldEl0ZW0oa2V5LCBkYXRhKTtcbiAgfVxuXG4gIGNsZWFyKGtleTogc3RyaW5nKTogdm9pZCB7XG4gICAgcmV0dXJuIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGtleSk7XG4gIH1cbn1cbiJdfQ==","import { Injectable } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class SessionStorageService {\n getItem(key) {\n return sessionStorage.getItem(key);\n }\n setItem(key, data) {\n return sessionStorage.setItem(key, data);\n }\n clear(key) {\n return sessionStorage.removeItem(key);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: SessionStorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: SessionStorageService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: SessionStorageService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi1zdG9yYWdlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdG9vbGtpdC9zcmMvbGliL3N0b3JhZ2Utc3luYy9pbnRlcm5hbC9zZXNzaW9uLXN0b3JhZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUszQyxNQUFNLE9BQU8scUJBQXFCO0lBQ2hDLE9BQU8sQ0FBQyxHQUFXO1FBQ2pCLE9BQU8sY0FBYyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsT0FBTyxDQUFDLEdBQVcsRUFBRSxJQUFZO1FBQy9CLE9BQU8sY0FBYyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELEtBQUssQ0FBQyxHQUFXO1FBQ2YsT0FBTyxjQUFjLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7OEdBWFUscUJBQXFCO2tIQUFyQixxQkFBcUIsY0FGcEIsTUFBTTs7MkZBRVAscUJBQXFCO2tCQUhqQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFNlc3Npb25TdG9yYWdlU2VydmljZSB7XG4gIGdldEl0ZW0oa2V5OiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgICByZXR1cm4gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShrZXkpO1xuICB9XG5cbiAgc2V0SXRlbShrZXk6IHN0cmluZywgZGF0YTogc3RyaW5nKTogdm9pZCB7XG4gICAgcmV0dXJuIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oa2V5LCBkYXRhKTtcbiAgfVxuXG4gIGNsZWFyKGtleTogc3RyaW5nKTogdm9pZCB7XG4gICAgcmV0dXJuIHNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0oa2V5KTtcbiAgfVxufVxuIl19","import { inject } from '@angular/core';\nimport { getState, patchState } from '@ngrx/signals';\nimport { LocalStorageService } from '../internal/local-storage.service';\nimport { SessionStorageService } from '../internal/session-storage.service';\nexport function withLocalStorage() {\n return createSyncMethods(LocalStorageService);\n}\nexport function withSessionStorage() {\n return createSyncMethods(SessionStorageService);\n}\nfunction createSyncMethods(Storage) {\n function factory({ key, parse, select, stringify }, store, useStubs) {\n if (useStubs) {\n return {\n clearStorage: () => undefined,\n readFromStorage: () => undefined,\n writeToStorage: () => undefined,\n };\n }\n const storage = inject(Storage);\n return {\n clearStorage() {\n storage.clear(key);\n },\n readFromStorage() {\n const stateString = storage.getItem(key);\n if (stateString) {\n patchState(store, parse(stateString));\n }\n },\n writeToStorage() {\n const slicedState = select(getState(store));\n storage.setItem(key, stringify(slicedState));\n },\n };\n }\n factory.type = 'sync';\n return factory;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1sb2NhbC1zdG9yYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ3J4LXRvb2xraXQvc3JjL2xpYi9zdG9yYWdlLXN5bmMvZmVhdHVyZXMvd2l0aC1sb2NhbC1zdG9yYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQVEsTUFBTSxlQUFlLENBQUM7QUFDN0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFeEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFHNUUsTUFBTSxVQUFVLGdCQUFnQjtJQUc5QixPQUFPLGlCQUFpQixDQUFRLG1CQUFtQixDQUFDLENBQUM7QUFDdkQsQ0FBQztBQUVELE1BQU0sVUFBVSxrQkFBa0I7SUFDaEMsT0FBTyxpQkFBaUIsQ0FBUSxxQkFBcUIsQ0FBQyxDQUFDO0FBQ3pELENBQUM7QUFFRCxTQUFTLGlCQUFpQixDQUN4QixPQUEwRDtJQUUxRCxTQUFTLE9BQU8sQ0FDZCxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBK0IsRUFDOUQsS0FBaUMsRUFDakMsUUFBaUI7UUFFakIsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNiLE9BQU87Z0JBQ0wsWUFBWSxFQUFFLEdBQUcsRUFBRSxDQUFDLFNBQVM7Z0JBQzdCLGVBQWUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxTQUFTO2dCQUNoQyxjQUFjLEVBQUUsR0FBRyxFQUFFLENBQUMsU0FBUzthQUNoQyxDQUFDO1FBQ0osQ0FBQztRQUVELE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVoQyxPQUFPO1lBQ0wsWUFBWTtnQkFDVixPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3JCLENBQUM7WUFFRCxlQUFlO2dCQUNiLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBRXpDLElBQUksV0FBVyxFQUFFLENBQUM7b0JBQ2hCLFVBQVUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7Z0JBQ3hDLENBQUM7WUFDSCxDQUFDO1lBRUQsY0FBYztnQkFDWixNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFVLENBQUM7Z0JBQ3JELE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1lBQy9DLENBQUM7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUNELE9BQU8sQ0FBQyxJQUFJLEdBQUcsTUFBZSxDQUFDO0lBRS9CLE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGdldFN0YXRlLCBwYXRjaFN0YXRlIH0gZnJvbSAnQG5ncngvc2lnbmFscyc7XG5pbXBvcnQgeyBMb2NhbFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vaW50ZXJuYWwvbG9jYWwtc3RvcmFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IFN5bmNTdG9yYWdlU3RyYXRlZ3ksIFN5bmNTdG9yZUZvckZhY3RvcnkgfSBmcm9tICcuLi9pbnRlcm5hbC9tb2RlbHMnO1xuaW1wb3J0IHsgU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vaW50ZXJuYWwvc2Vzc2lvbi1zdG9yYWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3luY0NvbmZpZyB9IGZyb20gJy4uL3dpdGgtc3RvcmFnZS1zeW5jJztcblxuZXhwb3J0IGZ1bmN0aW9uIHdpdGhMb2NhbFN0b3JhZ2U8XG4gIFN0YXRlIGV4dGVuZHMgb2JqZWN0LFxuPigpOiBTeW5jU3RvcmFnZVN0cmF0ZWd5PFN0YXRlPiB7XG4gIHJldHVybiBjcmVhdGVTeW5jTWV0aG9kczxTdGF0ZT4oTG9jYWxTdG9yYWdlU2VydmljZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3aXRoU2Vzc2lvblN0b3JhZ2U8U3RhdGUgZXh0ZW5kcyBvYmplY3Q+KCkge1xuICByZXR1cm4gY3JlYXRlU3luY01ldGhvZHM8U3RhdGU+KFNlc3Npb25TdG9yYWdlU2VydmljZSk7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVN5bmNNZXRob2RzPFN0YXRlIGV4dGVuZHMgb2JqZWN0PihcbiAgU3RvcmFnZTogVHlwZTxMb2NhbFN0b3JhZ2VTZXJ2aWNlIHwgU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlPixcbik6IFN5bmNTdG9yYWdlU3RyYXRlZ3k8U3RhdGU+IHtcbiAgZnVuY3Rpb24gZmFjdG9yeShcbiAgICB7IGtleSwgcGFyc2UsIHNlbGVjdCwgc3RyaW5naWZ5IH06IFJlcXVpcmVkPFN5bmNDb25maWc8U3RhdGU+PixcbiAgICBzdG9yZTogU3luY1N0b3JlRm9yRmFjdG9yeTxTdGF0ZT4sXG4gICAgdXNlU3R1YnM6IGJvb2xlYW4sXG4gICkge1xuICAgIGlmICh1c2VTdHVicykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY2xlYXJTdG9yYWdlOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgICAgIHJlYWRGcm9tU3RvcmFnZTogKCkgPT4gdW5kZWZpbmVkLFxuICAgICAgICB3cml0ZVRvU3RvcmFnZTogKCkgPT4gdW5kZWZpbmVkLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCBzdG9yYWdlID0gaW5qZWN0KFN0b3JhZ2UpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGNsZWFyU3RvcmFnZSgpOiB2b2lkIHtcbiAgICAgICAgc3RvcmFnZS5jbGVhcihrZXkpO1xuICAgICAgfSxcblxuICAgICAgcmVhZEZyb21TdG9yYWdlKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBzdGF0ZVN0cmluZyA9IHN0b3JhZ2UuZ2V0SXRlbShrZXkpO1xuXG4gICAgICAgIGlmIChzdGF0ZVN0cmluZykge1xuICAgICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHBhcnNlKHN0YXRlU3RyaW5nKSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG5cbiAgICAgIHdyaXRlVG9TdG9yYWdlKCkge1xuICAgICAgICBjb25zdCBzbGljZWRTdGF0ZSA9IHNlbGVjdChnZXRTdGF0ZShzdG9yZSkpIGFzIFN0YXRlO1xuICAgICAgICBzdG9yYWdlLnNldEl0ZW0oa2V5LCBzdHJpbmdpZnkoc2xpY2VkU3RhdGUpKTtcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuICBmYWN0b3J5LnR5cGUgPSAnc3luYycgYXMgY29uc3Q7XG5cbiAgcmV0dXJuIGZhY3Rvcnk7XG59XG4iXX0=","import { isPlatformServer } from '@angular/common';\nimport { computed, effect, inject, PLATFORM_ID, signal } from '@angular/core';\nimport { getState, signalStoreFeature, watchState, withHooks, withMethods, withProps, } from '@ngrx/signals';\nimport { withLocalStorage, withSessionStorage, } from './features/with-local-storage';\nimport { SYNC_STATUS, } from './internal/models';\nexport function withStorageSync(configOrKey, storageStrategy) {\n if (typeof configOrKey !== 'string' &&\n configOrKey.storage &&\n storageStrategy) {\n throw new Error('You can either pass a storage strategy or a config with storage, but not both.');\n }\n const config = {\n autoSync: true,\n select: (state) => state,\n parse: JSON.parse,\n stringify: JSON.stringify,\n storage: () => localStorage,\n ...(typeof configOrKey === 'string' ? { key: configOrKey } : configOrKey),\n };\n const factory = storageStrategy ??\n (config.storage() === localStorage\n ? withLocalStorage()\n : withSessionStorage());\n if (factory.type === 'sync') {\n return createSyncStorageSync(factory, config);\n }\n else {\n return createAsyncStorageSync(factory, config);\n }\n}\nfunction createSyncStorageSync(factory, config) {\n return signalStoreFeature(withMethods((store, platformId = inject(PLATFORM_ID)) => {\n return factory(config, store, isPlatformServer(platformId));\n }), withHooks({\n onInit(store, platformId = inject(PLATFORM_ID)) {\n if (isPlatformServer(platformId)) {\n return;\n }\n if (config.autoSync) {\n store.readFromStorage();\n watchState(store, () => store.writeToStorage());\n }\n },\n }));\n}\nfunction createAsyncStorageSync(factory, config) {\n return signalStoreFeature(withProps(() => {\n const props = {\n /*\n // we need to have that as property (and not state)\n // Otherwise the state watcher fires when updating the sync status\n */\n [SYNC_STATUS]: signal('idle'),\n };\n const resolves = [];\n effect(() => {\n const syncStatus = props[SYNC_STATUS]();\n if (syncStatus === 'synced') {\n resolves.forEach((resolve) => resolve());\n resolves.splice(0, resolves.length);\n }\n });\n return {\n ...props,\n isSynced: computed(() => props[SYNC_STATUS]() === 'synced'),\n whenSynced: () => new Promise((resolve) => {\n if (props[SYNC_STATUS]() === 'synced') {\n resolve();\n }\n else {\n resolves.push(resolve);\n }\n }),\n };\n }), withMethods((store, platformId = inject(PLATFORM_ID)) => {\n return factory(config, store, isPlatformServer(platformId));\n }), withHooks({\n async onInit(store, platformId = inject(PLATFORM_ID)) {\n if (isPlatformServer(platformId)) {\n return;\n }\n const initialState = JSON.stringify(getState(store));\n if (config.autoSync) {\n let startWatching = false;\n watchState(store, () => {\n if (!startWatching) {\n const currentState = JSON.stringify(getState(store));\n // Necessary because getState returns always a new object\n if (currentState === initialState) {\n return;\n }\n console.warn(`Writing to Store (${config.key}) happened before the state was initially read from storage.`, 'Please ensure that the store is not in syncing state via `store.whenSynced()` before writing to the state.', 'Alternatively, you can disable autoSync by passing `autoSync: false` in the config.');\n return;\n }\n return store.writeToStorage();\n });\n await store.readFromStorage();\n startWatching = true;\n }\n },\n }));\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1zdG9yYWdlLXN5bmMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdG9vbGtpdC9zcmMvbGliL3N0b3JhZ2Utc3luYy93aXRoLXN0b3JhZ2Utc3luYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RSxPQUFPLEVBRUwsUUFBUSxFQUNSLGtCQUFrQixFQUdsQixVQUFVLEVBQ1YsU0FBUyxFQUNULFdBQVcsRUFDWCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixrQkFBa0IsR0FDbkIsTUFBTSwrQkFBK0IsQ0FBQztBQUN2QyxPQUFPLEVBR0wsV0FBVyxHQUdaLE1BQU0sbUJBQW1CLENBQUM7QUEyRTNCLE1BQU0sVUFBVSxlQUFlLENBQzdCLFdBQWdELEVBQ2hELGVBRXVDO0lBS3ZDLElBQ0UsT0FBTyxXQUFXLEtBQUssUUFBUTtRQUMvQixXQUFXLENBQUMsT0FBTztRQUNuQixlQUFlLEVBQ2YsQ0FBQztRQUNELE1BQU0sSUFBSSxLQUFLLENBQ2IsZ0ZBQWdGLENBQ2pGLENBQUM7SUFDSixDQUFDO0lBQ0QsTUFBTSxNQUFNLEdBQXlDO1FBQ25ELFFBQVEsRUFBRSxJQUFJO1FBQ2QsTUFBTSxFQUFFLENBQUMsS0FBcUIsRUFBRSxFQUFFLENBQUMsS0FBSztRQUN4QyxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7UUFDakIsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO1FBQ3pCLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxZQUFZO1FBQzNCLEdBQUcsQ0FBQyxPQUFPLFdBQVcsS0FBSyxRQUFRLENBQUMsQ0FBQyxD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LENBQUM7QUFDekUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzUGxhdGZvcm1TZXJ2ZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgY29tcHV0ZWQsIGVmZmVjdCwgaW5qZWN0LCBQTEFURk9STV9JRCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBFbXB0eUZlYXR1cmVSZXN1bHQsXG4gIGdldFN0YXRlLFxuICBzaWduYWxTdG9yZUZlYXR1cmUsXG4gIFNpZ25hbFN0b3JlRmVhdHVyZSxcbiAgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICB3YXRjaFN0YXRlLFxuICB3aXRoSG9va3MsXG4gIHdpdGhNZXRob2RzLFxuICB3aXRoUHJvcHMsXG59IGZyb20gJ0BuZ3J4L3NpZ25hbHMnO1xuaW1wb3J0IHtcbiAgd2l0aExvY2FsU3RvcmFnZSxcbiAgd2l0aFNlc3Npb25TdG9yYWdlLFxufSBmcm9tICcuL2ZlYXR1cmVzL3dpdGgtbG9jYWwtc3RvcmFnZSc7XG5pbXBvcnQge1xuICBBc3luY0ZlYXR1cmVSZXN1bHQsXG4gIEFzeW5jU3RvcmFnZVN0cmF0ZWd5LFxuICBTWU5DX1NUQVRVUyxcbiAgU3luY0ZlYXR1cmVSZXN1bHQsXG4gIFN5bmNTdG9yYWdlU3RyYXRlZ3ksXG59IGZyb20gJy4vaW50ZXJuYWwvbW9kZWxzJztcblxuZXhwb3J0IHR5cGUgU3luY0NvbmZpZzxTdGF0ZT4gPSB7XG4gIC8qKlxuICAgKiBUaGUga2V5IHdoaWNoIGlzIHVzZWQgdG8gYWNjZXNzIHRoZSBzdG9yYWdlLlxuICAgKi9cbiAga2V5OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBGbGFnIGluZGljYXRpbmcgaWYgdGhlIHN0b3JlIHNob3VsZCByZWFkIGZyb20gc3RvcmFnZSBvbiBpbml0IGFuZCB3cml0ZSB0byBzdG9yYWdlIG9uIGV2ZXJ5IHN0YXRlIGNoYW5nZS5cbiAgICpcbiAgICogYHRydWVgIGJ5IGRlZmF1bHRcbiAgICovXG4gIGF1dG9TeW5jPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEZ1bmN0aW9uIHRvIHNlbGVjdCB0aGF0IHBvcnRpb24gb2YgdGhlIHN0YXRlIHdoaWNoIHNob3VsZCBiZSBzdG9yZWQuXG4gICAqXG4gICAqIFJldHVybnMgdGhlIHdob2xlIHN0YXRlIG9iamVjdCBieSBkZWZhdWx0XG4gICAqL1xuICBzZWxlY3Q/OiAoc3RhdGU6IFN0YXRlKSA9PiB1bmtub3duO1xuICAvKipcbiAgICogRnVuY3Rpb24gdXNlZCB0byBwYXJzZSB0aGUgc3RhdGUgY29taW5nIGZyb20gc3RvcmFnZS5cbiAgICpcbiAgICogYEpTT04ucGFyc2UoKWAgYnkgZGVmYXVsdFxuICAgKi9cbiAgcGFyc2U/OiAoc3RhdGVTdHJpbmc6IHN0cmluZykgPT4gU3RhdGU7XG4gIC8qKlxuICAgKiBGdW5jdGlvbiB1c2VkIHRvIHRyYW5zZm9ybSB0aGUgc3RhdGUgaW50byBhIHN0cmluZyByZXByZXNlbnRhdGlvbi5cbiAgICpcbiAgICogYEpTT04uc3RyaW5naWZ5KClgIGJ5IGRlZmF1bHRcbiAgICovXG4gIHN0cmluZ2lmeT86IChzdGF0ZTogU3RhdGUpID0+IHN0cmluZztcblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIHtAbGluayB3aXRoU2Vzc2lvblN0b3JhZ2V9IGluc3RlYWQuXG4gICAqIEZhY3RvcnkgZnVuY3Rpb24gdXNlZCB0byBzd2l0Y2ggdG8gc2Vzc2lvblN0b3JhZ2UuXG4gICAqXG4gICAqIGBsb2NhbFN0b3JhZ2VgIGJ5IGRlZmF1bHRcbiAgICovXG4gIHN0b3JhZ2U/OiAoKSA9PiBTdG9yYWdlO1xufTtcblxuLy8gb25seSBrZXlcbmV4cG9ydCBmdW5jdGlvbiB3aXRoU3RvcmFnZVN5bmM8SW5wdXQgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQ+KFxuICBrZXk6IHN0cmluZyxcbik6IFNpZ25hbFN0b3JlRmVhdHVyZTxJbnB1dCwgU3luY0ZlYXR1cmVSZXN1bHQ+O1xuXG4vLyBrZXkgKyBpbmRleGVkZGJcbmV4cG9ydCBmdW5jdGlvbiB3aXRoU3RvcmFnZVN5bmM8SW5wdXQgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQ+KFxuICBrZXk6IHN0cmluZyxcbiAgc3RvcmFnZVN0cmF0ZWd5OiBBc3luY1N0b3JhZ2VTdHJhdGVneTxJbnB1dFsnc3RhdGUnXT4sXG4pOiBTaWduYWxTdG9yZUZlYXR1cmU8SW5wdXQsIEFzeW5jRmVhdHVyZVJlc3VsdD47XG5cbi8vIGtleSArIGxvY2FsU3RvcmFnZShvciBzZXNzaW9uU3RvcmFnZSlcbmV4cG9ydCBmdW5jdGlvbiB3aXRoU3RvcmFnZVN5bmM8SW5wdXQgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQ+KFxuICBrZXk6IHN0cmluZyxcbiAgc3RvcmFnZVN0cmF0ZWd5OiBTeW5jU3RvcmFnZVN0cmF0ZWd5PElucHV0WydzdGF0ZSddPixcbik6IFNpZ25hbFN0b3JlRmVhdHVyZTxJbnB1dCwgU3luY0ZlYXR1cmVSZXN1bHQ+O1xuXG4vLyBjb25maWcgKyBsb2NhbFN0b3JhZ2VcbmV4cG9ydCBmdW5jdGlvbiB3aXRoU3RvcmFnZVN5bmM8SW5wdXQgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQ+KFxuICBjb25maWc6IFN5bmNDb25maWc8SW5wdXRbJ3N0YXRlJ10+LFxuKTogU2lnbmFsU3RvcmVGZWF0dXJlPElucHV0LCBTeW5jRmVhdHVyZVJlc3VsdD47XG5cbi8vIGNvbmZpZyArIGluZGV4ZWRkYlxuZXhwb3J0IGZ1bmN0aW9uIHdpdGhTdG9yYWdlU3luYzxJbnB1dCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdD4oXG4gIGNvbmZpZzogU3luY0NvbmZpZzxJbnB1dFsnc3RhdGUnXT4sXG4gIHN0b3JhZ2VTdHJhdGVneTogQXN5bmNTdG9yYWdlU3RyYXRlZ3k8SW5wdXRbJ3N0YXRlJ10+LFxuKTogU2lnbmFsU3RvcmVGZWF0dXJlPElucHV0LCBBc3luY0ZlYXR1cmVSZXN1bHQ+O1xuXG4vLyBjb25maWcgKyBsb2NhbFN0b3JhZ2Uob3Igc2Vzc2lvblN0b3JhZ2UpXG5leHBvcnQgZnVuY3Rpb24gd2l0aFN0b3JhZ2VTeW5jPElucHV0IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0PihcbiAgY29uZmlnOiBTeW5jQ29uZmlnPElucHV0WydzdGF0ZSddPixcbiAgc3RvcmFnZVN0cmF0ZWd5OiBTeW5jU3RvcmFnZVN0cmF0ZWd5PElucHV0WydzdGF0ZSddPixcbik6IFNpZ25hbFN0b3JlRmVhdHVyZTxJbnB1dCwgU3luY0ZlYXR1cmVSZXN1bHQ+O1xuXG5leHBvcnQgZnVuY3Rpb24gd2l0aFN0b3JhZ2VTeW5jPElucHV0IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0PihcbiAgY29uZmlnT3JLZXk6IFN5bmNDb25maWc8SW5wdXRbJ3N0YXRlJ10+IHwgc3RyaW5nLFxuICBzdG9yYWdlU3RyYXRlZ3k/OlxuICAgIHwgQXN5bmNTdG9yYWdlU3RyYXRlZ3k8SW5wdXRbJ3N0YXRlJ10+XG4gICAgfCBTeW5jU3RvcmFnZVN0cmF0ZWd5PElucHV0WydzdGF0ZSddPixcbik6IFNpZ25hbFN0b3JlRmVhdHVyZTxcbiAgSW5wdXQsXG4gIEVtcHR5RmVhdHVyZVJlc3VsdCAmIChTeW5jRmVhdHVyZVJlc3VsdCB8IEFzeW5jRmVhdHVyZVJlc3VsdClcbj4ge1xuICBpZiAoXG4gICAgdHlwZW9mIGNvbmZpZ09yS2V5ICE9PSAnc3RyaW5nJyAmJlxuICAgIGNvbmZpZ09yS2V5LnN0b3JhZ2UgJiZcbiAgICBzdG9yYWdlU3RyYXRlZ3lcbiAgKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ1lvdSBjYW4gZWl0aGVyIHBhc3MgYSBzdG9yYWdlIHN0cmF0ZWd5IG9yIGEgY29uZmlnIHdpdGggc3RvcmFnZSwgYnV0IG5vdCBib3RoLicsXG4gICAgKTtcbiAgfVxuICBjb25zdCBjb25maWc6IFJlcXVpcmVkPFN5bmNDb25maWc8SW5wdXRbJ3N0YXRlJ10+PiA9IHtcbiAgICBhdXRvU3luYzogdHJ1ZSxcbiAgICBzZWxlY3Q6IChzdGF0ZTogSW5wdXRbJ3N0YXRlJ10pID0+IHN0YXRlLFxuICAgIHBhcnNlOiBKU09OLnBhcnNlLFxuICAgIHN0cmluZ2lmeTogSlNPTi5zdHJpbmdpZnksXG4gICAgc3RvcmFnZTogKCkgPT4gbG9jYWxTdG9yYWdlLFxuICAgIC4uLih0eXBlb2YgY29uZmlnT3JLZXkgPT09ICdzdHJpbmcnID8geyBrZXk6IGNvbmZpZ09yS2V5IH0gOiBjb25maWdPcktleSksXG4gIH07XG5cbiAgY29uc3QgZmFjdG9yeSA9XG4gICAgc3RvcmFnZVN0cmF0ZWd5ID8/XG4gICAgKGNvbmZpZy5zdG9yYWdlKCkgPT09IGxvY2FsU3RvcmFnZVxuICAgICAgPyB3aXRoTG9jYWxTdG9yYWdlKClcbiAgICAgIDogd2l0aFNlc3Npb25TdG9yYWdlKCkpO1xuXG4gIGlmIChmYWN0b3J5LnR5cGUgPT09ICdzeW5jJykge1xuICAgIHJldHVybiBjcmVhdGVTeW5jU3RvcmFnZVN5bmMoZmFjdG9yeSwgY29uZmlnKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gY3JlYXRlQXN5bmNTdG9yYWdlU3luYyhmYWN0b3J5LCBjb25maWcpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVN5bmNTdG9yYWdlU3luYyhcbiAgZmFjdG9yeTogU3luY1N0b3JhZ2VTdHJhdGVneTxvYmplY3Q+LFxuICBjb25maWc6IFJlcXVpcmVkPFN5bmNDb25maWc8b2JqZWN0Pj4sXG4pIHtcbiAgcmV0dXJuIHNpZ25hbFN0b3JlRmVhdHVyZShcbiAgICB3aXRoTWV0aG9kcygoc3RvcmUsIHBsYXRmb3JtSWQgPSBpbmplY3QoUExBVEZPUk1fSUQpKSA9PiB7XG4gICAgICByZXR1cm4gZmFjdG9yeShjb25maWcsIHN0b3JlLCBpc1BsYXRmb3JtU2VydmVyKHBsYXRmb3JtSWQpKTtcbiAgICB9KSxcbiAgICB3aXRoSG9va3Moe1xuICAgICAgb25Jbml0KHN0b3JlLCBwbGF0Zm9ybUlkID0gaW5qZWN0KFBMQVRGT1JNX0lEKSkge1xuICAgICAgICBpZiAoaXNQbGF0Zm9ybVNlcnZlcihwbGF0Zm9ybUlkKSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb25maWcuYXV0b1N5bmMpIHtcbiAgICAgICAgICBzdG9yZS5yZWFkRnJvbVN0b3JhZ2UoKTtcbiAgICAgICAgICB3YXRjaFN0YXRlKHN0b3JlLCAoKSA9PiBzdG9yZS53cml0ZVRvU3RvcmFnZSgpKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9KSxcbiAgKSBzYXRpc2ZpZXMgU2lnbmFsU3RvcmVGZWF0dXJlPEVtcHR5RmVhdHVyZVJlc3VsdCwgU3luY0ZlYXR1cmVSZXN1bHQ+O1xufVxuXG5mdW5jdGlvbiBjcmVhdGVBc3luY1N0b3JhZ2VTeW5jKFxuICBmYWN0b3J5OiBBc3luY1N0b3JhZ2VTdHJhdGVneTxvYmplY3Q+LFxuICBjb25maWc6IFJlcXVpcmVkPFN5bmNDb25maWc8b2JqZWN0Pj4sXG4pIHtcbiAgcmV0dXJuIHNpZ25hbFN0b3JlRmVhdHVyZShcbiAgICB3aXRoUHJvcHMoKCkgPT4ge1xuICAgICAgY29uc3QgcHJvcHMgPSB7XG4gICAgICAgIC8qXG4gICAgICAgIC8vIHdlIG5lZWQgdG8gaGF2ZSB0aGF0IGFzIHByb3BlcnR5IChhbmQgbm90IHN0YXRlKVxuICAgICAgICAvLyBPdGhlcndpc2UgdGhlIHN0YXRlIHdhdGNoZXIgZmlyZXMgd2hlbiB1cGRhdGluZyB0aGUgc3luYyBzdGF0dXNcbiAgICAgICAgKi9cbiAgICAgICAgW1NZTkNfU1RBVFVTXTogc2lnbmFsPCdpZGxlJyB8ICdzeW5jaW5nJyB8ICdzeW5jZWQnPignaWRsZScpLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgcmVzb2x2ZXMgPSBbXSBhcyAoKCkgPT4gdm9pZClbXTtcblxuICAgICAgZWZmZWN0KCgpID0+IHtcbiAgICAgICAgY29uc3Qgc3luY1N0YXR1cyA9IHByb3BzW1NZTkNfU1RBVFVTXSgpO1xuICAgICAgICBpZiAoc3luY1N0YXR1cyA9PT0gJ3N5bmNlZCcpIHtcbiAgICAgICAgICByZXNvbHZlcy5mb3JFYWNoKChyZXNvbHZlKSA9PiByZXNvbHZlKCkpO1xuICAgICAgICAgIHJlc29sdmVzLnNwbGljZSgwLCByZXNvbHZlcy5sZW5ndGgpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ucHJvcHMsXG4gICAgICAgIGlzU3luY2VkOiBjb21wdXRlZCgoKSA9PiBwcm9wc1tTWU5DX1NUQVRVU10oKSA9PT0gJ3N5bmNlZCcpLFxuICAgICAgICB3aGVuU3luY2VkOiAoKSA9PlxuICAgICAgICAgIG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlKSA9PiB7XG4gICAgICAgICAgICBpZiAocHJvcHNbU1lOQ19TVEFUVVNdKCkgPT09ICdzeW5jZWQnKSB7XG4gICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJlc29sdmVzLnB1c2gocmVzb2x2ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSksXG4gICAgICB9O1xuICAgIH0pLFxuICAgIHdpdGhNZXRob2RzKChzdG9yZSwgcGxhdGZvcm1JZCA9IGluamVjdChQTEFURk9STV9JRCkpID0+IHtcbiAgICAgIHJldHVybiBmYWN0b3J5KGNvbmZpZywgc3RvcmUsIGlzUGxhdGZvcm1TZXJ2ZXIocGxhdGZvcm1JZCkpO1xuICAgIH0pLFxuICAgIHdpdGhIb29rcyh7XG4gICAgICBhc3luYyBvbkluaXQoc3RvcmUsIHBsYXRmb3JtSWQgPSBpbmplY3QoUExBVEZPUk1fSUQpKSB7XG4gICAgICAgIGlmIChpc1BsYXRmb3JtU2VydmVyKHBsYXRmb3JtSWQpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaW5pdGlhbFN0YXRlID0gSlNPTi5zdHJpbmdpZnkoZ2V0U3RhdGUoc3RvcmUpKTtcbiAgICAgICAgaWYgKGNvbmZpZy5hdXRvU3luYykge1xuICAgICAgICAgIGxldCBzdGFydFdhdGNoaW5nID0gZmFsc2U7XG4gICAgICAgICAgd2F0Y2hTdGF0ZShzdG9yZSwgKCkgPT4ge1xuICAgICAgICAgICAgaWYgKCFzdGFydFdhdGNoaW5nKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRTdGF0ZSA9IEpTT04uc3RyaW5naWZ5KGdldFN0YXRlKHN0b3JlKSk7XG5cbiAgICAgICAgICAgICAgLy8gTmVjZXNzYXJ5IGJlY2F1c2UgZ2V0U3RhdGUgcmV0dXJucyBhbHdheXMgYSBuZXcgb2JqZWN0XG4gICAgICAgICAgICAgIGlmIChjdXJyZW50U3RhdGUgPT09IGluaXRpYWxTdGF0ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgICAgICBgV3JpdGluZyB0byBTdG9yZSAoJHtjb25maWcua2V5fSkgaGFwcGVuZWQgYmVmb3JlIHRoZSBzdGF0ZSB3YXMgaW5pdGlhbGx5IHJlYWQgZnJvbSBzdG9yYWdlLmAsXG4gICAgICAgICAgICAgICAgJ1BsZWFzZSBlbnN1cmUgdGhhdCB0aGUgc3RvcmUgaXMgbm90IGluIHN5bmNpbmcgc3RhdGUgdmlhIGBzdG9yZS53aGVuU3luY2VkKClgIGJlZm9yZSB3cml0aW5nIHRvIHRoZSBzdGF0ZS4nLFxuICAgICAgICAgICAgICAgICdBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIGRpc2FibGUgYXV0b1N5bmMgYnkgcGFzc2luZyBgYXV0b1N5bmM6IGZhbHNlYCBpbiB0aGUgY29uZmlnLicsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBzdG9yZS53cml0ZVRvU3RvcmFnZSgpO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgYXdhaXQgc3RvcmUucmVhZEZyb21TdG9yYWdlKCk7XG4gICAgICAgICAgc3RhcnRXYXRjaGluZyA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfSksXG4gICkgc2F0aXNmaWVzIFNpZ25hbFN0b3JlRmVhdHVyZTxFbXB0eUZlYXR1cmVSZXN1bHQsIEFzeW5jRmVhdHVyZVJlc3VsdD47XG59XG4iXX0=","import { signalStoreFeature, withState, } from '@ngrx/signals';\n/**\n * `withConditional` activates a feature based on a given condition.\n *\n * **Use Cases**\n * - Conditionally activate features based on the **store state** or other criteria.\n * - Choose between **two different implementations** of a feature.\n *\n * **Type Constraints**\n * Both features must have **exactly the same state, props, and methods**.\n * Otherwise, a type error will occur.\n *\n *\n * **Usage**\n *\n * ```typescript\n * const withUser = signalStoreFeature(\n * withState({ id: 1, name: 'Konrad' }),\n * withHooks(store => ({\n * onInit() {\n * // user loading logic\n * }\n * }))\n * );\n *\n * function withFakeUser() {\n * return signalStoreFeature(\n * withState({ id: 0, name: 'anonymous' })\n * );\n * }\n *\n * signalStore(\n * withMethods(() => ({\n * useRealUser: () => true\n * })),\n * withConditional((store) => store.useRealUser(), withUser, withFakeUser)\n * )\n * ```\n *\n * @param condition - A function that determines which feature to activate based on the store state.\n * @param featureIfTrue - The feature to activate if the condition evaluates to `true`.\n * @param featureIfFalse - The feature to activate if the condition evaluates to `false`.\n * @returns A `SignalStoreFeature` that applies the selected feature based on the condition.\n */\nexport function withConditional(condition, featureIfTrue, featureIfFalse) {\n return (store) => {\n const conditionStore = {\n ...store['stateSignals'],\n ...store['props'],\n ...store['methods'],\n };\n return condition(conditionStore)\n ? featureIfTrue(store)\n : featureIfFalse(store);\n };\n}\nexport const emptyFeature = signalStoreFeature(withState({}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1jb25kaXRpb25hbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvbmdyeC10b29sa2l0L3NyYy9saWIvd2l0aC1jb25kaXRpb25hbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsa0JBQWtCLEVBSWxCLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUV2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMENHO0FBQ0gsTUFBTSxVQUFVLGVBQWUsQ0FJN0IsU0FFWSxFQUNaLGFBQXlELEVBQ3pELGNBQW1FO0lBRW5FLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRTtRQUNmLE1BQU0sY0FBYyxHQUFHO1lBQ3JCLEdBQUcsS0FBSyxDQUFDLGNBQWMsQ0FBQztZQUN4QixHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7WUFDakIsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDO1NBQ3BCLENBQUM7UUFDRixPQUFPLFNBQVMsQ0FBQyxjQUFjLENBQUM7WUFDOUIsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUM7WUFDdEIsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QixDQUFDLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgc2lnbmFsU3RvcmVGZWF0dXJlLFxuICBTaWduYWxTdG9yZUZlYXR1cmUsXG4gIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgU3RhdGVTaWduYWxzLFxuICB3aXRoU3RhdGUsXG59IGZyb20gJ0BuZ3J4L3NpZ25hbHMnO1xuXG4vKipcbiAqIGB3aXRoQ29uZGl0aW9uYWxgIGFjdGl2YXRlcyBhIGZlYXR1cmUgYmFzZWQgb24gYSBnaXZlbiBjb25kaXRpb24uXG4gKlxuICogKipVc2UgQ2FzZXMqKlxuICogLSBDb25kaXRpb25hbGx5IGFjdGl2YXRlIGZlYXR1cmVzIGJhc2VkIG9uIHRoZSAqKnN0b3JlIHN0YXRlKiogb3Igb3RoZXIgY3JpdGVyaWEuXG4gKiAtIENob29zZSBiZXR3ZWVuICoqdHdvIGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvbnMqKiBvZiBhIGZlYXR1cmUuXG4gKlxuICogKipUeXBlIENvbnN0cmFpbnRzKipcbiAqIEJvdGggZmVhdHVyZXMgbXVzdCBoYXZlICoqZXhhY3RseSB0aGUgc2FtZSBzdGF0ZSwgcHJvcHMsIGFuZCBtZXRob2RzKiouXG4gKiBPdGhlcndpc2UsIGEgdHlwZSBlcnJvciB3aWxsIG9jY3VyLlxuICpcbiAqXG4gKiAqKlVzYWdlKipcbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCB3aXRoVXNlciA9IHNpZ25hbFN0b3JlRmVhdHVyZShcbiAqICAgd2l0aFN0YXRlKHsgaWQ6IDEsIG5hbWU6ICdLb25yYWQnIH0pLFxuICogICB3aXRoSG9va3Moc3RvcmUgPT4gKHtcbiAqICAgICBvbkluaXQoKSB7XG4gKiAgICAgICAvLyB1c2VyIGxvYWRpbmcgbG9naWNcbiAqICAgICB9XG4gKiAgIH0pKVxuICogKTtcbiAqXG4gKiBmdW5jdGlvbiB3aXRoRmFrZVVzZXIoKSB7XG4gKiAgIHJldHVybiBzaWduYWxTdG9yZUZlYXR1cmUoXG4gKiAgICAgd2l0aFN0YXRlKHsgaWQ6IDAsIG5hbWU6ICdhbm9ueW1vdXMnIH0pXG4gKiAgICk7XG4gKiB9XG4gKlxuICogc2lnbmFsU3RvcmUoXG4gKiAgIHdpdGhNZXRob2RzKCgpID0+ICh7XG4gKiAgICAgdXNlUmVhbFVzZXI6ICgpID0+IHRydWVcbiAqICAgfSkpLFxuICogICB3aXRoQ29uZGl0aW9uYWwoKHN0b3JlKSA9PiBzdG9yZS51c2VSZWFsVXNlcigpLCB3aXRoVXNlciwgd2l0aEZha2VVc2VyKVxuICogKVxuICogYGBgXG4gKlxuICogQHBhcmFtIGNvbmRpdGlvbiAtIEEgZnVuY3Rpb24gdGhhdCBkZXRlcm1pbmVzIHdoaWNoIGZlYXR1cmUgdG8gYWN0aXZhdGUgYmFzZWQgb24gdGhlIHN0b3JlIHN0YXRlLlxuICogQHBhcmFtIGZlYXR1cmVJZlRydWUgLSBUaGUgZmVhdHVyZSB0byBhY3RpdmF0ZSBpZiB0aGUgY29uZGl0aW9uIGV2YWx1YXRlcyB0byBgdHJ1ZWAuXG4gKiBAcGFyYW0gZmVhdHVyZUlmRmFsc2UgLSBUaGUgZmVhdHVyZSB0byBhY3RpdmF0ZSBpZiB0aGUgY29uZGl0aW9uIGV2YWx1YXRlcyB0byBgZmFsc2VgLlxuICogQHJldHVybnMgQSBgU2lnbmFsU3RvcmVGZWF0dXJlYCB0aGF0IGFwcGxpZXMgdGhlIHNlbGVjdGVkIGZlYXR1cmUgYmFzZWQgb24gdGhlIGNvbmRpdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdpdGhDb25kaXRpb25hbDxcbiAgSW5wdXQgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIE91dHB1dCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbj4oXG4gIGNvbmRpdGlvbjogKFxuICAgIHN0b3JlOiBTdGF0ZVNpZ25hbHM8SW5wdXRbJ3N0YXRlJ10+ICYgSW5wdXRbJ3Byb3BzJ10gJiBJbnB1dFsnbWV0aG9kcyddLFxuICApID0+IGJvb2xlYW4sXG4gIGZlYXR1cmVJZlRydWU6IFNpZ25hbFN0b3JlRmVhdHVyZTxOb0luZmVyPElucHV0PiwgT3V0cHV0PixcbiAgZmVhdHVyZUlmRmFsc2U6IFNpZ25hbFN0b3JlRmVhdHVyZTxOb0luZmVyPElucHV0PiwgTm9JbmZlcjxPdXRwdXQ+Pixcbik6IFNpZ25hbFN0b3JlRmVhdHVyZTxJbnB1dCwgT3V0cHV0PiB7XG4gIHJldHVybiAoc3RvcmUpID0+IHtcbiAgICBjb25zdCBjb25kaXRpb25TdG9yZSA9IHtcbiAgICAgIC4uLnN0b3JlWydzdGF0ZVNpZ25hbHMnXSxcbiAgICAgIC4uLnN0b3JlWydwcm9wcyddLFxuICAgICAgLi4uc3RvcmVbJ21ldGhvZHMnXSxcbiAgICB9O1xuICAgIHJldHVybiBjb25kaXRpb24oY29uZGl0aW9uU3RvcmUpXG4gICAgICA/IGZlYXR1cmVJZlRydWUoc3RvcmUpXG4gICAgICA6IGZlYXR1cmVJZkZhbHNlKHN0b3JlKTtcbiAgfTtcbn1cblxuZXhwb3J0IGNvbnN0IGVtcHR5RmVhdHVyZSA9IHNpZ25hbFN0b3JlRmVhdHVyZSh3aXRoU3RhdGUoe30pKTtcbiJdfQ==","/**\n * @deprecated Use `import { withFeature } from '@ngrx/signals'` instead, starting with `ngrx/signals` 19.1: https://ngrx.io/guide/signals/signal-store/custom-store-features#connecting-a-custom-feature-with-the-store\n *\n * Allows to pass properties, methods, or signals from a SignalStore\n * to a feature.\n *\n * Typically, a `signalStoreFeature` can have input constraints on\n *\n * ```typescript\n * function withSum(a: Signal<number>, b: Signal<number>) {\n * return signalStoreFeature(\n * withComputed(() => ({\n * sum: computed(() => a() + b())\n * }))\n * );\n * }\n *\n * signalStore(\n * withState({ a: 1, b: 2 }),\n * withFeatureFactory((store) => withSum(store.a, store.b))\n * );\n * ```\n * @param factoryFn\n */\nexport function withFeatureFactory(factoryFn) {\n return (store) => {\n const storeForFactory = {\n ...store['stateSignals'],\n ...store['props'],\n ...store['methods'],\n };\n const feature = factoryFn(storeForFactory);\n return feature(store);\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1mZWF0dXJlLWZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdG9vbGtpdC9zcmMvbGliL3dpdGgtZmVhdHVyZS1mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVlBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVCRztBQUNILE1BQU0sVUFBVSxrQkFBa0IsQ0FJaEMsU0FFc0M7SUFFdEMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFO1FBQ2YsTUFBTSxlQUFlLEdBQUc7WUFDdEIsR0FBRyxLQUFLLENBQUMsY0FBYyxDQUFDO1lBQ3hCLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztZQUNqQixHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUM7U0FDTSxDQUFDO1FBRTVCLE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUUzQyxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4QixDQUFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgU2lnbmFsU3RvcmVGZWF0dXJlLFxuICBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIFN0YXRlU2lnbmFscyxcbn0gZnJvbSAnQG5ncngvc2lnbmFscyc7XG5cbnR5cGUgU3RvcmVGb3JGYWN0b3J5PElucHV0IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0PiA9IFN0YXRlU2lnbmFsczxcbiAgSW5wdXRbJ3N0YXRlJ11cbj4gJlxuICBJbnB1dFsncHJvcHMnXSAmXG4gIElucHV0WydtZXRob2RzJ107XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgVXNlIGBpbXBvcnQgeyB3aXRoRmVhdHVyZSB9IGZyb20gJ0BuZ3J4L3NpZ25hbHMnYCBpbnN0ZWFkLCBzdGFydGluZyB3aXRoIGBuZ3J4L3NpZ25hbHNgIDE5LjE6IGh0dHBzOi8vbmdyeC5pby9ndWlkZS9zaWduYWxzL3NpZ25hbC1zdG9yZS9jdXN0b20tc3RvcmUtZmVhdHVyZXMjY29ubmVjdGluZy1hLWN1c3RvbS1mZWF0dXJlLXdpdGgtdGhlLXN0b3JlXG4gKlxuICogQWxsb3dzIHRvIHBhc3MgcHJvcGVydGllcywgbWV0aG9kcywgb3Igc2lnbmFscyBmcm9tIGEgU2lnbmFsU3RvcmVcbiAqIHRvIGEgZmVhdHVyZS5cbiAqXG4gKiBUeXBpY2FsbHksIGEgYHNpZ25hbFN0b3JlRmVhdHVyZWAgY2FuIGhhdmUgaW5wdXQgY29uc3RyYWludHMgb25cbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBmdW5jdGlvbiB3aXRoU3VtKGE6IFNpZ25hbDxudW1iZXI+LCBiOiBTaWduYWw8bnVtYmVyPikge1xuICogICByZXR1cm4gc2lnbmFsU3RvcmVGZWF0dXJlKFxuICogICAgIHdpdGhDb21wdXRlZCgoKSA9PiAoe1xuICogICAgICAgc3VtOiBjb21wdXRlZCgoKSA9PiBhKCkgKyBiKCkpXG4gKiAgICAgfSkpXG4gKiAgICk7XG4gKiB9XG4gKlxuICogc2lnbmFsU3RvcmUoXG4gKiAgIHdpdGhTdGF0ZSh7IGE6IDEsIGI6IDIgfSksXG4gKiAgIHdpdGhGZWF0dXJlRmFjdG9yeSgoc3RvcmUpID0+IHdpdGhTdW0oc3RvcmUuYSwgc3RvcmUuYikpXG4gKiApO1xuICogYGBgXG4gKiBAcGFyYW0gZmFjdG9yeUZuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3aXRoRmVhdHVyZUZhY3Rvcnk8XG4gIElucHV0IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBPdXRwdXQgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4+KFxuICBmYWN0b3J5Rm46IChcbiAgICBzdG9yZTogU3RvcmVGb3JGYWN0b3J5PElucHV0PixcbiAgKSA9PiBTaWduYWxTdG9yZUZlYXR1cmU8SW5wdXQsIE91dHB1dD4sXG4pOiBTaWduYWxTdG9yZUZlYXR1cmU8SW5wdXQsIE91dHB1dD4ge1xuICByZXR1cm4gKHN0b3JlKSA9PiB7XG4gICAgY29uc3Qgc3RvcmVGb3JGYWN0b3J5ID0ge1xuICAgICAgLi4uc3RvcmVbJ3N0YXRlU2lnbmFscyddLFxuICAgICAgLi4uc3RvcmVbJ3Byb3BzJ10sXG4gICAgICAuLi5zdG9yZVsnbWV0aG9kcyddLFxuICAgIH0gYXMgU3RvcmVGb3JGYWN0b3J5PElucHV0PjtcblxuICAgIGNvbnN0IGZlYXR1cmUgPSBmYWN0b3J5Rm4oc3RvcmVGb3JGYWN0b3J5KTtcblxuICAgIHJldHVybiBmZWF0dXJlKHN0b3JlKTtcbiAgfTtcbn1cbiJdfQ==","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1hcmNoaXRlY3RzLW5ncngtdG9vbGtpdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMvbmdyeC10b29sa2l0L3NyYy9hbmd1bGFyLWFyY2hpdGVjdHMtbmdyeC10b29sa2l0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":["originalPatchState","patchState","ngIsInDevMode"],"mappings":"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"}
|