@ng-atomic/common 19.21.8 → 19.24.1
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/directives/active-control/index.d.ts +52 -0
- package/directives/active-control/index.d.ts.map +1 -0
- package/fesm2022/ng-atomic-common-directives-active-control.mjs +287 -0
- package/fesm2022/ng-atomic-common-directives-active-control.mjs.map +1 -0
- package/fesm2022/ng-atomic-common-services-auth.mjs +21 -1
- package/fesm2022/ng-atomic-common-services-auth.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-editing.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-router.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-stores-selection.mjs.map +1 -1
- package/fesm2022/ng-atomic-common.mjs +146 -39
- package/fesm2022/ng-atomic-common.mjs.map +1 -1
- package/index.d.ts +35 -17
- package/index.d.ts.map +1 -1
- package/interceptors/authorization/index.d.ts.map +1 -1
- package/interceptors/token/index.d.ts.map +1 -1
- package/models/index.d.ts.map +1 -1
- package/package.json +43 -39
- package/pipes/data-accessor/index.d.ts.map +1 -1
- package/pipes/error/index.d.ts.map +1 -1
- package/pipes/pagination/index.d.ts.map +1 -1
- package/pipes/select-id/index.d.ts.map +1 -1
- package/pipes/signal/index.d.ts.map +1 -1
- package/pipes/smart-field/index.d.ts.map +1 -1
- package/pipes/style/index.d.ts.map +1 -1
- package/services/auth/index.d.ts +6 -7
- package/services/auth/index.d.ts.map +1 -1
- package/services/breakpoint/index.d.ts.map +1 -1
- package/services/editing/index.d.ts +2 -2
- package/services/editing/index.d.ts.map +1 -1
- package/services/form/columns/index.d.ts.map +1 -1
- package/services/form/index.d.ts.map +1 -1
- package/services/form/pagination/index.d.ts.map +1 -1
- package/services/form/sort/index.d.ts.map +1 -1
- package/services/initializer/index.d.ts.map +1 -1
- package/services/language/index.d.ts.map +1 -1
- package/services/loading/index.d.ts.map +1 -1
- package/services/query-resolver/index.d.ts.map +1 -1
- package/services/router/index.d.ts +3 -4
- package/services/router/index.d.ts.map +1 -1
- package/services/side-nav-mode/index.d.ts.map +1 -1
- package/services/spreadsheet/index.d.ts.map +1 -1
- package/services/ui/index.d.ts.map +1 -1
- package/stores/entities/index.d.ts.map +1 -1
- package/stores/entity/index.d.ts.map +1 -1
- package/stores/pagination/index.d.ts.map +1 -1
- package/stores/query/index.d.ts.map +1 -1
- package/stores/selection/index.d.ts +7 -7
- package/stores/selection/index.d.ts.map +1 -1
- package/stores/sort/index.d.ts.map +1 -1
- package/utils/index.d.ts.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-atomic-common-services-editing.mjs","sources":["../tmp-esm2022/services/editing/editing-state-manager.service.js","../tmp-esm2022/services/editing/ng-atomic-common-services-editing.js"],"sourcesContent":["import { Injectable, signal, computed } from '@angular/core';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport * as i0 from \"@angular/core\";\n/**\n * EditingStateManager Service\n *\n * Manages global editing state for preventing data updates during cell editing.\n * Uses Angular Signals for reactive state management.\n */\nexport class EditingStateManager {\n constructor() {\n this.editingCells = signal([]);\n this.isEditing = computed(() => this.editingCells().length > 0);\n this.isEditing$ = toObservable(this.isEditing);\n }\n /**\n * Start editing a cell\n * @param rowId Row identifier\n * @param columnId Column identifier\n */\n startEditing(rowId, columnId) {\n const cellKey = `${rowId}-${columnId}`;\n this.editingCells.update(cells => {\n const newCells = new Set(cells);\n newCells.add(cellKey);\n return [...newCells];\n });\n }\n /**\n * Stop editing a cell\n * @param rowId Row identifier\n * @param columnId Column identifier\n */\n stopEditing(rowId, columnId) {\n const cellKey = `${rowId}-${columnId}`;\n this.editingCells.update(cells => {\n const newCells = new Set(cells);\n newCells.delete(cellKey);\n return [...newCells];\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: EditingStateManager, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: EditingStateManager, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: EditingStateManager, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
{"version":3,"file":"ng-atomic-common-services-editing.mjs","sources":["../tmp-esm2022/services/editing/editing-state-manager.service.js","../tmp-esm2022/services/editing/ng-atomic-common-services-editing.js"],"sourcesContent":["import { Injectable, signal, computed } from '@angular/core';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport * as i0 from \"@angular/core\";\n/**\n * EditingStateManager Service\n *\n * Manages global editing state for preventing data updates during cell editing.\n * Uses Angular Signals for reactive state management.\n */\nexport class EditingStateManager {\n constructor() {\n this.editingCells = signal([]);\n this.isEditing = computed(() => this.editingCells().length > 0);\n this.isEditing$ = toObservable(this.isEditing);\n }\n /**\n * Start editing a cell\n * @param rowId Row identifier\n * @param columnId Column identifier\n */\n startEditing(rowId, columnId) {\n const cellKey = `${rowId}-${columnId}`;\n this.editingCells.update(cells => {\n const newCells = new Set(cells);\n newCells.add(cellKey);\n return [...newCells];\n });\n }\n /**\n * Stop editing a cell\n * @param rowId Row identifier\n * @param columnId Column identifier\n */\n stopEditing(rowId, columnId) {\n const cellKey = `${rowId}-${columnId}`;\n this.editingCells.update(cells => {\n const newCells = new Set(cells);\n newCells.delete(cellKey);\n return [...newCells];\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: EditingStateManager, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: EditingStateManager, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: EditingStateManager, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdGluZy1zdGF0ZS1tYW5hZ2VyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbmctYXRvbWljL2NvbW1vbi9zcmMvbGliL3NlcnZpY2VzL2VkaXRpbmcvZWRpdGluZy1zdGF0ZS1tYW5hZ2VyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFHMUQ7Ozs7O0dBS0c7QUFFSCxNQUFNLE9BQU8sbUJBQW1CO0lBRGhDO1FBRW1CLGlCQUFZLEdBQUcsTUFBTSxDQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQzVDLGNBQVMsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMzRCxlQUFVLEdBQXdCLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7S0E2QnpFO0lBM0JDOzs7O09BSUc7SUFDSCxZQUFZLENBQUMsS0FBc0IsRUFBRSxRQUFnQjtRQUNuRCxNQUFNLE9BQU8sR0FBRyxHQUFHLEtBQUssSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUN2QyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUMvQixNQUFNLFFBQVEsR0FBRyxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNoQyxRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3RCLE9BQU8sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxXQUFXLENBQUMsS0FBc0IsRUFBRSxRQUFnQjtRQUNsRCxNQUFNLE9BQU8sR0FBRyxHQUFHLEtBQUssSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUN2QyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUMvQixNQUFNLFFBQVEsR0FBRyxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNoQyxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3pCLE9BQU8sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs4R0EvQlUsbUJBQW1CO2tIQUFuQixtQkFBbUIsY0FETixNQUFNOzsyRkFDbkIsbUJBQW1CO2tCQUQvQixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIHNpZ25hbCwgY29tcHV0ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRvT2JzZXJ2YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuLyoqXG4gKiBFZGl0aW5nU3RhdGVNYW5hZ2VyIFNlcnZpY2VcbiAqIFxuICogTWFuYWdlcyBnbG9iYWwgZWRpdGluZyBzdGF0ZSBmb3IgcHJldmVudGluZyBkYXRhIHVwZGF0ZXMgZHVyaW5nIGNlbGwgZWRpdGluZy5cbiAqIFVzZXMgQW5ndWxhciBTaWduYWxzIGZvciByZWFjdGl2ZSBzdGF0ZSBtYW5hZ2VtZW50LlxuICovXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEVkaXRpbmdTdGF0ZU1hbmFnZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IGVkaXRpbmdDZWxscyA9IHNpZ25hbDxzdHJpbmdbXT4oW10pO1xuICByZWFkb25seSBpc0VkaXRpbmcgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmVkaXRpbmdDZWxscygpLmxlbmd0aCA+IDApO1xuICByZWFkb25seSBpc0VkaXRpbmckOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdG9PYnNlcnZhYmxlKHRoaXMuaXNFZGl0aW5nKTtcbiAgXG4gIC8qKlxuICAgKiBTdGFydCBlZGl0aW5nIGEgY2VsbFxuICAgKiBAcGFyYW0gcm93SWQgUm93IGlkZW50aWZpZXJcbiAgICogQHBhcmFtIGNvbHVtbklkIENvbHVtbiBpZGVudGlmaWVyXG4gICAqL1xuICBzdGFydEVkaXRpbmcocm93SWQ6IHN0cmluZyB8IG51bWJlciwgY29sdW1uSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGNlbGxLZXkgPSBgJHtyb3dJZH0tJHtjb2x1bW5JZH1gO1xuICAgIHRoaXMuZWRpdGluZ0NlbGxzLnVwZGF0ZShjZWxscyA9PiB7XG4gICAgICBjb25zdCBuZXdDZWxscyA9IG5ldyBTZXQoY2VsbHMpO1xuICAgICAgbmV3Q2VsbHMuYWRkKGNlbGxLZXkpO1xuICAgICAgcmV0dXJuIFsuLi5uZXdDZWxsc107XG4gICAgfSk7XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBTdG9wIGVkaXRpbmcgYSBjZWxsXG4gICAqIEBwYXJhbSByb3dJZCBSb3cgaWRlbnRpZmllclxuICAgKiBAcGFyYW0gY29sdW1uSWQgQ29sdW1uIGlkZW50aWZpZXJcbiAgICovXG4gIHN0b3BFZGl0aW5nKHJvd0lkOiBzdHJpbmcgfCBudW1iZXIsIGNvbHVtbklkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBjZWxsS2V5ID0gYCR7cm93SWR9LSR7Y29sdW1uSWR9YDtcbiAgICB0aGlzLmVkaXRpbmdDZWxscy51cGRhdGUoY2VsbHMgPT4ge1xuICAgICAgY29uc3QgbmV3Q2VsbHMgPSBuZXcgU2V0KGNlbGxzKTtcbiAgICAgIG5ld0NlbGxzLmRlbGV0ZShjZWxsS2V5KTtcbiAgICAgIHJldHVybiBbLi4ubmV3Q2VsbHNdO1xuICAgIH0pO1xuICB9XG59Il19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctYXRvbWljLWNvbW1vbi1zZXJ2aWNlcy1lZGl0aW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG5nLWF0b21pYy9jb21tb24vc3JjL2xpYi9zZXJ2aWNlcy9lZGl0aW5nL25nLWF0b21pYy1jb21tb24tc2VydmljZXMtZWRpdGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":";;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,mBAAmB,CAAC;AACjC,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,EAAE,CAAC;AACtC,QAAQ,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;AACvE,QAAQ,IAAI,CAAC,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC;AACtD,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,YAAY,CAAC,KAAK,EAAE,QAAQ,EAAE;AAClC,QAAQ,MAAM,OAAO,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;AAC9C,QAAQ,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,IAAI;AAC1C,YAAY,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC;AAC3C,YAAY,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;AACjC,YAAY,OAAO,CAAC,GAAG,QAAQ,CAAC;AAChC,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE;AACjC,QAAQ,MAAM,OAAO,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;AAC9C,QAAQ,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,IAAI;AAC1C,YAAY,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC;AAC3C,YAAY,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC;AACpC,YAAY,OAAO,CAAC,GAAG,QAAQ,CAAC;AAChC,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC;AACtL,IAAI,SAAS,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;AAC7J;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,UAAU,EAAE,CAAC;AAC7H,YAAY,IAAI,EAAE,UAAU;AAC5B,YAAY,IAAI,EAAE,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE;AACzC,SAAS,CAAC,EAAE,CAAC;;AC/Cb;AACA;AACA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-atomic-common-services-router.mjs","sources":["../tmp-esm2022/services/router/router.service.js","../tmp-esm2022/services/router/ng-atomic-common-services-router.js"],"sourcesContent":["import { Injectable, inject } from '@angular/core';\nimport { Router } from '@angular/router';\nimport * as i0 from \"@angular/core\";\nexport function walkActivatedRoute(route, callback) {\n if (!callback(route))\n return;\n route.children.forEach(child => walkActivatedRoute(child, callback));\n}\nexport class RouterService extends Router {\n constructor() {\n super(...arguments);\n this.router = inject(Router);\n this.events$ = this.router.events;\n }\n back() {\n history.back();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: RouterService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: RouterService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: RouterService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
{"version":3,"file":"ng-atomic-common-services-router.mjs","sources":["../tmp-esm2022/services/router/router.service.js","../tmp-esm2022/services/router/ng-atomic-common-services-router.js"],"sourcesContent":["import { Injectable, inject } from '@angular/core';\nimport { Router } from '@angular/router';\nimport * as i0 from \"@angular/core\";\nexport function walkActivatedRoute(route, callback) {\n if (!callback(route))\n return;\n route.children.forEach(child => walkActivatedRoute(child, callback));\n}\nexport class RouterService extends Router {\n constructor() {\n super(...arguments);\n this.router = inject(Router);\n this.events$ = this.router.events;\n }\n back() {\n history.back();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: RouterService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: RouterService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: RouterService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbmctYXRvbWljL2NvbW1vbi9zcmMvbGliL3NlcnZpY2VzL3JvdXRlci9yb3V0ZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQXlCLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQUdoRSxNQUFNLFVBQVUsa0JBQWtCLENBQUMsS0FBcUIsRUFBRSxRQUE0QztJQUNwRyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztRQUFFLE9BQU87SUFDN0IsS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztBQUN2RSxDQUFDO0FBR0QsTUFBTSxPQUFPLGFBQWMsU0FBUSxNQUFNO0lBRHpDOztRQUVXLFdBQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDeEIsWUFBTyxHQUFzQixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztLQUsxRDtJQUhDLElBQUk7UUFDRixPQUFPLENBQUMsSUFBSSxFQUFFLENBQUE7SUFDaEIsQ0FBQzs4R0FOVSxhQUFhO2tIQUFiLGFBQWEsY0FERCxNQUFNOzsyRkFDbEIsYUFBYTtrQkFEekIsVUFBVTttQkFBQyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBFdmVudCwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGZ1bmN0aW9uIHdhbGtBY3RpdmF0ZWRSb3V0ZShyb3V0ZTogQWN0aXZhdGVkUm91dGUsIGNhbGxiYWNrOiAocm91dGU6IEFjdGl2YXRlZFJvdXRlKSA9PiBib29sZWFuKTogdm9pZCB7XG4gIGlmICghY2FsbGJhY2socm91dGUpKSByZXR1cm47XG4gIHJvdXRlLmNoaWxkcmVuLmZvckVhY2goY2hpbGQgPT4gd2Fsa0FjdGl2YXRlZFJvdXRlKGNoaWxkLCBjYWxsYmFjaykpO1xufVxuXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3Jvb3QnfSlcbmV4cG9ydCBjbGFzcyBSb3V0ZXJTZXJ2aWNlIGV4dGVuZHMgUm91dGVyIHtcbiAgcmVhZG9ubHkgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gIHJlYWRvbmx5IGV2ZW50cyQ6IE9ic2VydmFibGU8RXZlbnQ+ID0gdGhpcy5yb3V0ZXIuZXZlbnRzO1xuXG4gIGJhY2soKTogdm9pZCB7XG4gICAgaGlzdG9yeS5iYWNrKClcbiAgfVxufVxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctYXRvbWljLWNvbW1vbi1zZXJ2aWNlcy1yb3V0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbmctYXRvbWljL2NvbW1vbi9zcmMvbGliL3NlcnZpY2VzL3JvdXRlci9uZy1hdG9taWMtY29tbW9uLXNlcnZpY2VzLXJvdXRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":";;;;AAGO,SAAS,kBAAkB,CAAC,KAAK,EAAE,QAAQ,EAAE;AACpD,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;AACxB,QAAQ;AACR,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,IAAI,kBAAkB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AACxE;AACO,MAAM,aAAa,SAAS,MAAM,CAAC;AAC1C,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;AAC3B,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACpC,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM;AACzC,IAAI;AACJ,IAAI,IAAI,GAAG;AACX,QAAQ,OAAO,CAAC,IAAI,EAAE;AACtB,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC;AAClL,IAAI,SAAS,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;AACvJ;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC;AACvH,YAAY,IAAI,EAAE,UAAU;AAC5B,YAAY,IAAI,EAAE,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE;AACzC,SAAS,CAAC,EAAE,CAAC;;ACvBb;AACA;AACA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-atomic-common-stores-selection.mjs","sources":["../tmp-esm2022/stores/selection/selection.store.js","../tmp-esm2022/stores/selection/ng-atomic-common-stores-selection.js"],"sourcesContent":["import { Injectable } from \"@angular/core\";\nimport { ComponentStore } from \"@ngrx/component-store\";\nimport * as i0 from \"@angular/core\";\nexport class SelectionStore extends ComponentStore {\n get idSet() { return this.get(state => state.idSet); }\n get initialIdSet() { return this.get(state => state.initialIdSet); }\n constructor() {\n super({ idSet: new Set(), initialIdSet: null });\n this.setIdSet = this.updater((state, idSet) => ({ ...state, idSet }));\n this.setInitialIdSet = this.updater((state, initialIdSet) => ({ ...state, initialIdSet }));\n this.addIds = (ids) => this.setIdSet(new Set([...this.idSet, ...ids]));\n this.addId = (id) => this.addIds([id]);\n this.removeId = (id) => this.setIdSet(new Set([...this.idSet].filter(_id => _id !== id)));\n this.toggleId = (id) => this.idSet.has(id) ? this.removeId(id) : this.addId(id);\n }\n getSelectedAndUnselected() {\n const unselectedIdSet = new Set([...this.initialIdSet].filter(id => !this.idSet.has(id)));\n return [this.idSet, unselectedIdSet];\n }\n filterBySelectedIds(entities) {\n return entities.filter(({ id }) => this.idSet.has(id));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SelectionStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SelectionStore }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SelectionStore, decorators: [{\n type: Injectable\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
{"version":3,"file":"ng-atomic-common-stores-selection.mjs","sources":["../tmp-esm2022/stores/selection/selection.store.js","../tmp-esm2022/stores/selection/ng-atomic-common-stores-selection.js"],"sourcesContent":["import { Injectable } from \"@angular/core\";\nimport { ComponentStore } from \"@ngrx/component-store\";\nimport * as i0 from \"@angular/core\";\nexport class SelectionStore extends ComponentStore {\n get idSet() { return this.get(state => state.idSet); }\n get initialIdSet() { return this.get(state => state.initialIdSet); }\n constructor() {\n super({ idSet: new Set(), initialIdSet: null });\n this.setIdSet = this.updater((state, idSet) => ({ ...state, idSet }));\n this.setInitialIdSet = this.updater((state, initialIdSet) => ({ ...state, initialIdSet }));\n this.addIds = (ids) => this.setIdSet(new Set([...this.idSet, ...ids]));\n this.addId = (id) => this.addIds([id]);\n this.removeId = (id) => this.setIdSet(new Set([...this.idSet].filter(_id => _id !== id)));\n this.toggleId = (id) => this.idSet.has(id) ? this.removeId(id) : this.addId(id);\n }\n getSelectedAndUnselected() {\n const unselectedIdSet = new Set([...this.initialIdSet].filter(id => !this.idSet.has(id)));\n return [this.idSet, unselectedIdSet];\n }\n filterBySelectedIds(entities) {\n return entities.filter(({ id }) => this.idSet.has(id));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SelectionStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SelectionStore }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SelectionStore, decorators: [{\n type: Injectable\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLnN0b3JlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG5nLWF0b21pYy9jb21tb24vc3JjL2xpYi9zdG9yZXMvc2VsZWN0aW9uL3NlbGVjdGlvbi5zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFVdkQsTUFBTSxPQUFPLGNBQWUsU0FBUSxjQUE4QjtJQUNoRSxJQUFJLEtBQUssS0FBa0IsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuRSxJQUFJLFlBQVksS0FBa0IsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUVqRjtRQUNFLEtBQUssQ0FBQyxFQUFDLEtBQUssRUFBRSxJQUFJLEdBQUcsRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO1FBR2hELGFBQVEsR0FBK0UsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFrQixFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUMsR0FBRyxLQUFLLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hKLG9CQUFlLEdBQStFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsWUFBeUIsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFDLEdBQUcsS0FBSyxFQUFFLFlBQVksRUFBQyxDQUFDLENBQUMsQ0FBQztRQUU3SyxXQUFNLEdBQW9DLENBQUMsR0FBYSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdHLFVBQUssR0FBaUMsQ0FBQyxFQUFVLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRXhFLGFBQVEsR0FBaUMsQ0FBQyxFQUFVLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNILGFBQVEsR0FBaUMsQ0FBQyxFQUFVLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBVGpILENBQUM7SUFXRCx3QkFBd0I7UUFDdEIsTUFBTSxlQUFlLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxRixPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxlQUFlLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsbUJBQW1CLENBQXlCLFFBQWE7UUFDdkQsT0FBTyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN2RCxDQUFDOzhHQXhCVSxjQUFjO2tIQUFkLGNBQWM7OzJGQUFkLGNBQWM7a0JBRDFCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IENvbXBvbmVudFN0b3JlIH0gZnJvbSBcIkBuZ3J4L2NvbXBvbmVudC1zdG9yZVwiO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSBcInJ4anNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBTZWxlY3Rpb25TdGF0ZSB7XG4gIGlkU2V0OiBTZXQ8c3RyaW5nPjtcbiAgaW5pdGlhbElkU2V0OiBTZXQ8c3RyaW5nPiB8IG51bGw7XG5cbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFNlbGVjdGlvblN0b3JlIGV4dGVuZHMgQ29tcG9uZW50U3RvcmU8U2VsZWN0aW9uU3RhdGU+IHtcbiAgZ2V0IGlkU2V0KCk6IFNldDxzdHJpbmc+IHsgcmV0dXJuIHRoaXMuZ2V0KHN0YXRlID0+IHN0YXRlLmlkU2V0KTsgfVxuICBnZXQgaW5pdGlhbElkU2V0KCk6IFNldDxzdHJpbmc+IHsgcmV0dXJuIHRoaXMuZ2V0KHN0YXRlID0+IHN0YXRlLmluaXRpYWxJZFNldCk7IH1cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcih7aWRTZXQ6IG5ldyBTZXQoKSwgaW5pdGlhbElkU2V0OiBudWxsfSk7XG4gIH1cblxuICBzZXRJZFNldDogKG9ic2VydmFibGVPclZhbHVlOiBTZXQ8c3RyaW5nPiB8IE9ic2VydmFibGU8U2V0PHN0cmluZz4+KSA9PiBTdWJzY3JpcHRpb24gPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLCBpZFNldDogU2V0PHN0cmluZz4pID0+ICh7Li4uc3RhdGUsIGlkU2V0fSkpO1xuICBzZXRJbml0aWFsSWRTZXQ6IChvYnNlcnZhYmxlT3JWYWx1ZTogU2V0PHN0cmluZz4gfCBPYnNlcnZhYmxlPFNldDxzdHJpbmc+PikgPT4gU3Vic2NyaXB0aW9uID0gdGhpcy51cGRhdGVyKChzdGF0ZSwgaW5pdGlhbElkU2V0OiBTZXQ8c3RyaW5nPikgPT4gKHsuLi5zdGF0ZSwgaW5pdGlhbElkU2V0fSkpO1xuXG4gIGFkZElkczogKGlkczogc3RyaW5nW10pID0+IFN1YnNjcmlwdGlvbiA9IChpZHM6IHN0cmluZ1tdKSA9PiB0aGlzLnNldElkU2V0KG5ldyBTZXQoWy4uLnRoaXMuaWRTZXQsIC4uLmlkc10pKTtcbiAgYWRkSWQ6IChpZDogc3RyaW5nKSA9PiBTdWJzY3JpcHRpb24gPSAoaWQ6IHN0cmluZykgPT4gdGhpcy5hZGRJZHMoW2lkXSk7XG5cbiAgcmVtb3ZlSWQ6IChpZDogc3RyaW5nKSA9PiBTdWJzY3JpcHRpb24gPSAoaWQ6IHN0cmluZykgPT4gdGhpcy5zZXRJZFNldChuZXcgU2V0KFsuLi50aGlzLmlkU2V0XS5maWx0ZXIoX2lkID0+IF9pZCAhPT0gaWQpKSk7XG4gIHRvZ2dsZUlkOiAoaWQ6IHN0cmluZykgPT4gU3Vic2NyaXB0aW9uID0gKGlkOiBzdHJpbmcpID0+IHRoaXMuaWRTZXQuaGFzKGlkKSA/IHRoaXMucmVtb3ZlSWQoaWQpIDogdGhpcy5hZGRJZChpZCk7XG5cbiAgZ2V0U2VsZWN0ZWRBbmRVbnNlbGVjdGVkKCk6IFtTZXQ8c3RyaW5nPiwgU2V0PHN0cmluZz5dIHtcbiAgICBjb25zdCB1bnNlbGVjdGVkSWRTZXQgPSBuZXcgU2V0KFsuLi50aGlzLmluaXRpYWxJZFNldF0uZmlsdGVyKGlkID0+ICF0aGlzLmlkU2V0LmhhcyhpZCkpKTtcbiAgICByZXR1cm4gW3RoaXMuaWRTZXQsIHVuc2VsZWN0ZWRJZFNldF07XG4gIH1cblxuICBmaWx0ZXJCeVNlbGVjdGVkSWRzPEUgZXh0ZW5kcyB7aWQ6IHN0cmluZ30+KGVudGl0aWVzOiBFW10pOiBFW10ge1xuICAgIHJldHVybiBlbnRpdGllcy5maWx0ZXIoKHtpZH0pID0+IHRoaXMuaWRTZXQuaGFzKGlkKSk7XG4gIH1cbn0iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctYXRvbWljLWNvbW1vbi1zdG9yZXMtc2VsZWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG5nLWF0b21pYy9jb21tb24vc3JjL2xpYi9zdG9yZXMvc2VsZWN0aW9uL25nLWF0b21pYy1jb21tb24tc3RvcmVzLXNlbGVjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"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"}
|
|
@@ -192,10 +192,11 @@ function bufferWhenEditing(editingStateManager) {
|
|
|
192
192
|
}
|
|
193
193
|
|
|
194
194
|
class ActiveControlEventHandlers {
|
|
195
|
-
constructor(hostElement, isActive, onActiveChange) {
|
|
195
|
+
constructor(hostElement, isActive, onActiveChange, options = {}) {
|
|
196
196
|
this.hostElement = hostElement;
|
|
197
197
|
this.isActive = isActive;
|
|
198
198
|
this.onActiveChange = onActiveChange;
|
|
199
|
+
this.options = options;
|
|
199
200
|
this.cleanupFunctions = [];
|
|
200
201
|
}
|
|
201
202
|
setupAll() {
|
|
@@ -207,7 +208,10 @@ class ActiveControlEventHandlers {
|
|
|
207
208
|
// ホスト要素クリック
|
|
208
209
|
const mousedownHandler = (e) => {
|
|
209
210
|
this.toggleActive();
|
|
210
|
-
|
|
211
|
+
// React Flowなどのドラッグと共存するため、オプションでstopPropagationを無効化
|
|
212
|
+
if (!this.options.disableStopPropagation) {
|
|
213
|
+
e.stopPropagation();
|
|
214
|
+
}
|
|
211
215
|
};
|
|
212
216
|
this.addEventListener(this.hostElement, 'mousedown', mousedownHandler);
|
|
213
217
|
// 外部クリック
|
|
@@ -220,28 +224,45 @@ class ActiveControlEventHandlers {
|
|
|
220
224
|
this.cleanupFunctions.push(() => document.removeEventListener('mousedown', documentClickListener, { capture: true }));
|
|
221
225
|
}
|
|
222
226
|
setupPreventionHandlers() {
|
|
223
|
-
//
|
|
227
|
+
// ホイールイベント(スクロール対象要素以外でのみブロック)
|
|
228
|
+
// ただし、ctrlKey + wheel(トラックパッドのピンチズーム)は常にブロック
|
|
229
|
+
// 非アクティブ時はScrollControlがスクロール位置をリセットするため、ここでは処理しない
|
|
224
230
|
this.addEventListener(this.hostElement, 'wheel', (e) => {
|
|
225
231
|
if (this.isActive()) {
|
|
226
|
-
|
|
227
|
-
e.
|
|
232
|
+
// ctrlKey + wheel = トラックパッドのピンチズーム → 常にブロック
|
|
233
|
+
if (e.ctrlKey) {
|
|
234
|
+
e.preventDefault();
|
|
235
|
+
e.stopPropagation();
|
|
236
|
+
return;
|
|
237
|
+
}
|
|
238
|
+
// 通常のホイールスクロール: スクロール対象要素からのイベントは許可
|
|
239
|
+
const target = e.target;
|
|
240
|
+
const isScrollableElement = this.options.scrollSelectors?.some(selector => target.closest(selector) !== null);
|
|
241
|
+
if (!isScrollableElement) {
|
|
242
|
+
e.preventDefault();
|
|
243
|
+
e.stopPropagation();
|
|
244
|
+
}
|
|
228
245
|
}
|
|
229
246
|
}, { passive: false });
|
|
230
|
-
//
|
|
247
|
+
// タッチイベント(ホスト要素レベル)
|
|
231
248
|
const touchHandler = (e) => {
|
|
232
249
|
if (!this.isActive())
|
|
233
250
|
return;
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
251
|
+
// スクロール対象要素からのイベントは許可
|
|
252
|
+
const target = e.target;
|
|
253
|
+
const isScrollableElement = this.options.scrollSelectors?.some(selector => target.closest(selector) !== null);
|
|
254
|
+
if (!isScrollableElement) {
|
|
255
|
+
if (e.touches.length > 1) {
|
|
256
|
+
// ピンチズームなどマルチタッチ操作をブロック
|
|
257
|
+
e.preventDefault();
|
|
258
|
+
e.stopPropagation();
|
|
259
|
+
}
|
|
260
|
+
// シングルタッチはデフォルト動作を許可(スクロールなど)
|
|
240
261
|
}
|
|
241
262
|
};
|
|
242
263
|
this.addEventListener(this.hostElement, 'touchstart', touchHandler, { passive: false });
|
|
243
264
|
this.addEventListener(this.hostElement, 'touchmove', touchHandler, { passive: false });
|
|
244
|
-
//
|
|
265
|
+
// ジェスチャーイベント(ホスト要素レベル)
|
|
245
266
|
const gestureHandler = (e) => {
|
|
246
267
|
if (this.isActive()) {
|
|
247
268
|
e.preventDefault();
|
|
@@ -251,6 +272,43 @@ class ActiveControlEventHandlers {
|
|
|
251
272
|
['gesturestart', 'gesturechange', 'gestureend'].forEach(eventName => {
|
|
252
273
|
this.addEventListener(this.hostElement, eventName, gestureHandler, { passive: false });
|
|
253
274
|
});
|
|
275
|
+
// Document-level capture phaseハンドラ
|
|
276
|
+
// ブラウザのピンチズームがデフォルト動作を行う前にキャッチする
|
|
277
|
+
this.setupDocumentLevelPinchZoomPrevention();
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* Document-levelでcapture phaseを使ってピンチズームを防止
|
|
281
|
+
* ホスト要素内で発生したマルチタッチ/ジェスチャーイベントのみをブロック
|
|
282
|
+
*/
|
|
283
|
+
setupDocumentLevelPinchZoomPrevention() {
|
|
284
|
+
// タッチイベント(capture phase)
|
|
285
|
+
const documentTouchHandler = (e) => {
|
|
286
|
+
if (!this.isActive())
|
|
287
|
+
return;
|
|
288
|
+
if (!this.hostElement.contains(e.target))
|
|
289
|
+
return;
|
|
290
|
+
if (e.touches.length > 1) {
|
|
291
|
+
e.preventDefault();
|
|
292
|
+
}
|
|
293
|
+
};
|
|
294
|
+
document.addEventListener('touchstart', documentTouchHandler, { capture: true, passive: false });
|
|
295
|
+
document.addEventListener('touchmove', documentTouchHandler, { capture: true, passive: false });
|
|
296
|
+
this.cleanupFunctions.push(() => {
|
|
297
|
+
document.removeEventListener('touchstart', documentTouchHandler, { capture: true });
|
|
298
|
+
document.removeEventListener('touchmove', documentTouchHandler, { capture: true });
|
|
299
|
+
});
|
|
300
|
+
// Safari gestureイベント(capture phase)
|
|
301
|
+
const documentGestureHandler = (e) => {
|
|
302
|
+
if (!this.isActive())
|
|
303
|
+
return;
|
|
304
|
+
if (!this.hostElement.contains(e.target))
|
|
305
|
+
return;
|
|
306
|
+
e.preventDefault();
|
|
307
|
+
};
|
|
308
|
+
['gesturestart', 'gesturechange', 'gestureend'].forEach(eventName => {
|
|
309
|
+
document.addEventListener(eventName, documentGestureHandler, { capture: true, passive: false });
|
|
310
|
+
this.cleanupFunctions.push(() => document.removeEventListener(eventName, documentGestureHandler, { capture: true }));
|
|
311
|
+
});
|
|
254
312
|
}
|
|
255
313
|
addEventListener(element, event, handler, options) {
|
|
256
314
|
element.addEventListener(event, handler, options);
|
|
@@ -266,21 +324,30 @@ class ActiveControlEventHandlers {
|
|
|
266
324
|
}
|
|
267
325
|
|
|
268
326
|
class ScrollControl {
|
|
269
|
-
constructor(scrollElement, isActive) {
|
|
327
|
+
constructor(scrollElement, isActive, options = {}) {
|
|
270
328
|
this.scrollElement = scrollElement;
|
|
271
329
|
this.isActive = isActive;
|
|
330
|
+
this.options = options;
|
|
272
331
|
this.lockedScrollTop = 0;
|
|
332
|
+
this.wasActive = false;
|
|
273
333
|
}
|
|
274
334
|
setup() {
|
|
275
335
|
const cleanups = [];
|
|
276
336
|
// アクティブ状態の監視
|
|
277
|
-
let previousActive = this.isActive();
|
|
278
337
|
const checkActiveState = () => {
|
|
279
|
-
const
|
|
280
|
-
if (
|
|
281
|
-
|
|
338
|
+
const isActiveNow = this.isActive();
|
|
339
|
+
if (!this.options.disableScrollLock) {
|
|
340
|
+
if (!isActiveNow && this.wasActive) {
|
|
341
|
+
// アクティブ → 非アクティブ: 現在位置をロック
|
|
342
|
+
this.lockedScrollTop = this.scrollElement.scrollTop;
|
|
343
|
+
}
|
|
344
|
+
else if (!isActiveNow) {
|
|
345
|
+
// 継続して非アクティブ: ロック位置を維持
|
|
346
|
+
this.scrollElement.scrollTop = this.lockedScrollTop;
|
|
347
|
+
}
|
|
282
348
|
}
|
|
283
|
-
|
|
349
|
+
// アクティブ時 or disableScrollLock時: 何もしない(自由スクロール)
|
|
350
|
+
this.wasActive = isActiveNow;
|
|
284
351
|
this.rafId = requestAnimationFrame(checkActiveState);
|
|
285
352
|
};
|
|
286
353
|
checkActiveState();
|
|
@@ -291,7 +358,7 @@ class ScrollControl {
|
|
|
291
358
|
});
|
|
292
359
|
// スクロールイベント監視
|
|
293
360
|
const scrollHandler = () => {
|
|
294
|
-
if (!this.isActive()) {
|
|
361
|
+
if (!this.options.disableScrollLock && !this.isActive()) {
|
|
295
362
|
this.scrollElement.scrollTop = this.lockedScrollTop;
|
|
296
363
|
}
|
|
297
364
|
};
|
|
@@ -309,47 +376,85 @@ class ScrollControl {
|
|
|
309
376
|
*
|
|
310
377
|
* @example
|
|
311
378
|
* ```html
|
|
379
|
+
* <!-- 単一セレクタ -->
|
|
312
380
|
* <div appActiveControl
|
|
313
381
|
* [scrollSelector]="'.xterm-viewport'"
|
|
314
382
|
* (activeChange)="onActiveChange($event)">
|
|
315
383
|
* <!-- content -->
|
|
316
384
|
* </div>
|
|
385
|
+
*
|
|
386
|
+
* <!-- 複数セレクタ -->
|
|
387
|
+
* <div appActiveControl
|
|
388
|
+
* [scrollSelectors]="['.xterm-viewport', '.qtp-content']"
|
|
389
|
+
* (activeChange)="onActiveChange($event)">
|
|
390
|
+
* <!-- content -->
|
|
391
|
+
* </div>
|
|
317
392
|
* ```
|
|
318
393
|
*/
|
|
319
394
|
class ActiveControlDirective {
|
|
320
395
|
constructor() {
|
|
321
396
|
this.el = inject(ElementRef);
|
|
322
397
|
this.scrollSelector = input();
|
|
398
|
+
this.scrollSelectors = input();
|
|
399
|
+
/** mousedownでstopPropagationを呼ばない(React Flowなどのドラッグと共存するため) */
|
|
400
|
+
this.disableStopPropagation = input(false);
|
|
401
|
+
/** スクロール位置のロックを無効化する(常にスクロール可能にする) */
|
|
402
|
+
this.disableScrollLock = input(false);
|
|
403
|
+
/** nodragクラスを付与しない(React Flowのノードでドラッグを有効化するため) */
|
|
404
|
+
this.disableNodrag = input(false);
|
|
323
405
|
this.activeChange = output();
|
|
324
406
|
this.isActive = signal(false);
|
|
325
|
-
this.
|
|
407
|
+
this.eventCleanupFunctions = [];
|
|
408
|
+
this.scrollCleanupFunctions = [];
|
|
409
|
+
this.eventHandlersInitialized = false;
|
|
410
|
+
// イベントハンドラーの初期化(一度だけ)
|
|
326
411
|
effect(() => {
|
|
327
|
-
|
|
412
|
+
if (!this.eventHandlersInitialized) {
|
|
413
|
+
setTimeout(() => this.initializeEventHandlers(), 100);
|
|
414
|
+
this.eventHandlersInitialized = true;
|
|
415
|
+
}
|
|
328
416
|
}, { allowSignalWrites: true });
|
|
417
|
+
// スクロール制御の初期化(セレクタが変わるたびに再設定)
|
|
418
|
+
effect(() => {
|
|
419
|
+
const selectors = this.getScrollSelectors();
|
|
420
|
+
setTimeout(() => this.setupScrollControls(selectors), 150);
|
|
421
|
+
});
|
|
329
422
|
}
|
|
330
423
|
ngOnDestroy() {
|
|
331
|
-
this.
|
|
424
|
+
this.eventCleanupFunctions.forEach(cleanup => cleanup());
|
|
425
|
+
this.scrollCleanupFunctions.forEach(cleanup => cleanup());
|
|
332
426
|
}
|
|
333
|
-
|
|
427
|
+
initializeEventHandlers() {
|
|
334
428
|
const hostElement = this.el.nativeElement;
|
|
335
|
-
|
|
336
|
-
const eventHandlers = new ActiveControlEventHandlers(hostElement, this.isActive, (active) => this.activeChange.emit(active));
|
|
337
|
-
this.
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
429
|
+
const scrollSelectors = this.getScrollSelectors();
|
|
430
|
+
const eventHandlers = new ActiveControlEventHandlers(hostElement, this.isActive, (active) => this.activeChange.emit(active), { disableStopPropagation: this.disableStopPropagation(), scrollSelectors });
|
|
431
|
+
this.eventCleanupFunctions.push(...eventHandlers.setupAll());
|
|
432
|
+
}
|
|
433
|
+
setupScrollControls(selectors) {
|
|
434
|
+
// 既存のスクロール制御をクリーンアップ
|
|
435
|
+
this.scrollCleanupFunctions.forEach(cleanup => cleanup());
|
|
436
|
+
this.scrollCleanupFunctions = [];
|
|
437
|
+
const hostElement = this.el.nativeElement;
|
|
438
|
+
const disableScrollLock = this.disableScrollLock();
|
|
439
|
+
for (const selector of selectors) {
|
|
440
|
+
// querySelectorAll を使用して全てのマッチする要素を取得
|
|
441
|
+
const scrollElements = hostElement.querySelectorAll(selector);
|
|
442
|
+
scrollElements.forEach(scrollElement => {
|
|
443
|
+
const scrollControl = new ScrollControl(scrollElement, this.isActive, { disableScrollLock });
|
|
444
|
+
this.scrollCleanupFunctions.push(...scrollControl.setup());
|
|
445
|
+
});
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
getScrollSelectors() {
|
|
449
|
+
const multiple = this.scrollSelectors();
|
|
450
|
+
if (multiple && multiple.length > 0) {
|
|
451
|
+
return multiple;
|
|
349
452
|
}
|
|
453
|
+
const single = this.scrollSelector();
|
|
454
|
+
return single ? [single] : [];
|
|
350
455
|
}
|
|
351
456
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.5", ngImport: i0, type: ActiveControlDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
352
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.0.5", type: ActiveControlDirective, isStandalone: true, selector: "[appActiveControl]", inputs: { scrollSelector: { classPropertyName: "scrollSelector", publicName: "scrollSelector", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { activeChange: "activeChange" }, host: { properties: { "class.active": "isActive()" } }, ngImport: i0 }); }
|
|
457
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.0.5", type: ActiveControlDirective, isStandalone: true, selector: "[appActiveControl]", inputs: { scrollSelector: { classPropertyName: "scrollSelector", publicName: "scrollSelector", isSignal: true, isRequired: false, transformFunction: null }, scrollSelectors: { classPropertyName: "scrollSelectors", publicName: "scrollSelectors", isSignal: true, isRequired: false, transformFunction: null }, disableStopPropagation: { classPropertyName: "disableStopPropagation", publicName: "disableStopPropagation", isSignal: true, isRequired: false, transformFunction: null }, disableScrollLock: { classPropertyName: "disableScrollLock", publicName: "disableScrollLock", isSignal: true, isRequired: false, transformFunction: null }, disableNodrag: { classPropertyName: "disableNodrag", publicName: "disableNodrag", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { activeChange: "activeChange" }, host: { properties: { "class.active": "isActive()", "class.nodrag": "!disableNodrag()", "class.nowheel": "isActive()" } }, ngImport: i0 }); }
|
|
353
458
|
}
|
|
354
459
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.5", ngImport: i0, type: ActiveControlDirective, decorators: [{
|
|
355
460
|
type: Directive,
|
|
@@ -358,6 +463,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.5", ngImpor
|
|
|
358
463
|
standalone: true,
|
|
359
464
|
host: {
|
|
360
465
|
'[class.active]': 'isActive()',
|
|
466
|
+
'[class.nodrag]': '!disableNodrag()',
|
|
467
|
+
'[class.nowheel]': 'isActive()',
|
|
361
468
|
}
|
|
362
469
|
}]
|
|
363
470
|
}], ctorParameters: () => [] });
|