@recursyve/nice-selectable-list 21.0.0 → 21.0.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.
@@ -1,10 +1,10 @@
1
1
  import * as i0 from '@angular/core';
2
- import { signal, computed, InjectionToken, Injector, DestroyRef, inject, input, contentChildren, effect, untracked, forwardRef, Directive, afterRenderEffect } from '@angular/core';
2
+ import { signal, computed, afterNextRender, InjectionToken, Injector, DestroyRef, inject, input, contentChildren, effect, forwardRef, Directive, afterRenderEffect } from '@angular/core';
3
3
  import { rxResource, takeUntilDestroyed } from '@angular/core/rxjs-interop';
4
4
  import { MatCheckbox } from '@angular/material/checkbox';
5
- import { map, of, Subject, from } from 'rxjs';
6
- import { Router, ActivatedRoute, NavigationStart, NavigationEnd } from '@angular/router';
7
- import { filter, map as map$1, startWith, take, combineLatestWith, switchMap } from 'rxjs/operators';
5
+ import { map, of, ReplaySubject, from, finalize } from 'rxjs';
6
+ import { Router, ActivatedRoute, NavigationStart, NavigationEnd, NavigationSkipped, NavigationCancel, NavigationError } from '@angular/router';
7
+ import { filter, map as map$1, startWith, distinctUntilChanged, take, switchMap, delay, withLatestFrom } from 'rxjs/operators';
8
8
 
9
9
  class NiceSelectableListStore {
10
10
  _injector;
@@ -12,6 +12,7 @@ class NiceSelectableListStore {
12
12
  _plugins = [];
13
13
  _entityLoader = null;
14
14
  _uiEntityLoader = null;
15
+ _initialized = signal(false, ...(ngDevMode ? [{ debugName: "_initialized" }] : []));
15
16
  _cache = signal({}, ...(ngDevMode ? [{ debugName: "_cache" }] : []));
16
17
  _entitiesMap = signal({}, ...(ngDevMode ? [{ debugName: "_entitiesMap" }] : []));
17
18
  _activeEntity = signal(null, ...(ngDevMode ? [{ debugName: "_activeEntity" }] : []));
@@ -24,11 +25,11 @@ class NiceSelectableListStore {
24
25
  // Track window loading state
25
26
  _lastWindowIds = [];
26
27
  _currentWindowIds = [];
27
- entities = computed(() => Object.values(this._entitiesMap()), ...(ngDevMode ? [{ debugName: "entities" }] : []));
28
+ entities = computed(() => Object.values(this._entitiesMap()).reverse(), ...(ngDevMode ? [{ debugName: "entities" }] : []));
28
29
  activeEntity = this._activeEntity.asReadonly();
29
30
  total = computed(() => this.entities().length, ...(ngDevMode ? [{ debugName: "total" }] : []));
30
31
  entitiesIds = computed(() => {
31
- const ids = Object.keys(this._entitiesMap());
32
+ const ids = Object.keys(this._entitiesMap()).reverse();
32
33
  return this._config.idType === "string" ? ids : ids.map((id) => +id);
33
34
  }, ...(ngDevMode ? [{ debugName: "entitiesIds" }] : []));
34
35
  activeEntityId = computed(() => this._activeEntity()?.id ?? null, ...(ngDevMode ? [{ debugName: "activeEntityId" }] : []));
@@ -36,8 +37,12 @@ class NiceSelectableListStore {
36
37
  constructor(_injector, _config) {
37
38
  this._injector = _injector;
38
39
  this._config = _config;
40
+ afterNextRender(() => this.init());
39
41
  }
40
42
  init() {
43
+ if (this._initialized()) {
44
+ return;
45
+ }
41
46
  if (!this._entityLoader && this._config.entityLoaderToken) {
42
47
  this._entityLoader = this._injector.get(this._config.entityLoaderToken);
43
48
  }
@@ -47,6 +52,7 @@ class NiceSelectableListStore {
47
52
  for (const plugin of this._plugins) {
48
53
  plugin.init();
49
54
  }
55
+ this._initialized.set(true);
50
56
  }
51
57
  registerPlugin(plugin) {
52
58
  this._plugins.push(plugin);
@@ -56,7 +62,7 @@ class NiceSelectableListStore {
56
62
  const id = this._resolveEntityId(checkbox.selectableEntity());
57
63
  const existing = this._entitiesMap()[id];
58
64
  const selectAllState = this._selectAllState();
59
- if ((existing && existing.entity === null) || selectAllState.active) {
65
+ if ((existing && !existing.entity) || selectAllState.active) {
60
66
  const initial = checkbox.selectableEntity();
61
67
  const entityResource = this._createEntityResource(id, initial);
62
68
  this._entitiesMap.update((_entitiesMap) => ({
@@ -258,7 +264,7 @@ class NiceSelectableListStore {
258
264
  }
259
265
  _isEntitySelected(entity) {
260
266
  const id = this._resolveEntityId(entity);
261
- return this._entitiesMap()[id]?.entity !== undefined;
267
+ return id in this._entitiesMap();
262
268
  }
263
269
  _resolveEntityId(entity) {
264
270
  const idProperty = this._config.idProperty;
@@ -495,7 +501,6 @@ class SelectableListDirective {
495
501
  this.selectableLists = name
496
502
  ? resolveNiceSelectableList(name, { injector: this.injector })
497
503
  : resolveNiceSelectableList({ injector: this.injector });
498
- untracked(() => this.selectableLists.init());
499
504
  });
500
505
  }
501
506
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: SelectableListDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
@@ -641,12 +646,30 @@ class NiceSelectableQueryParamsPlugin extends NiceSelectableListPluginDefinition
641
646
  _storeChangesEffectRef;
642
647
  _writeQueryParamsSub;
643
648
  _isNavigating$;
649
+ _lastQueryParams = null;
644
650
  _initialized = signal(false, ...(ngDevMode ? [{ debugName: "_initialized" }] : []));
645
- _nextQueryParams = new Subject();
651
+ _nextQueryParams = new ReplaySubject(1);
652
+ _queryParamState = computed(() => ({
653
+ entities: this._store.entitiesIds(),
654
+ activeEntity: this._store.activeEntityId(),
655
+ selectAllState: this._store.selectAllState()
656
+ }), { ...(ngDevMode ? { debugName: "_queryParamState" } : {}), equal: (a, b) => {
657
+ const selectAllEqual = a.selectAllState.active === b.selectAllState.active &&
658
+ a.selectAllState.total === b.selectAllState.total &&
659
+ JSON.stringify(a.selectAllState.parameters) === JSON.stringify(b.selectAllState.parameters);
660
+ const entitiesEqual = a.entities.length === b.entities.length &&
661
+ a.entities.every((entity, index) => entity === b.entities[index]);
662
+ const activeEntityEqual = a.activeEntity === b.activeEntity;
663
+ return selectAllEqual && entitiesEqual && activeEntityEqual;
664
+ } });
646
665
  init() {
647
666
  this.router = this._injector.get(Router);
648
667
  this.route = this._injector.get(ActivatedRoute);
649
- this._isNavigating$ = this.router.events.pipe(filter((event) => event instanceof NavigationStart || event instanceof NavigationEnd), map$1((event) => event instanceof NavigationStart), startWith(!this.router.navigated));
668
+ this._isNavigating$ = this.router.events.pipe(filter((event) => event instanceof NavigationStart ||
669
+ event instanceof NavigationEnd ||
670
+ event instanceof NavigationSkipped ||
671
+ event instanceof NavigationCancel ||
672
+ event instanceof NavigationError), map$1((event) => event instanceof NavigationStart), startWith(!this.router.navigated), distinctUntilChanged());
650
673
  this.listenOnQueryParams();
651
674
  this.listenOnStoreChanges();
652
675
  this.writeQueryParams();
@@ -673,9 +696,7 @@ class NiceSelectableQueryParamsPlugin extends NiceSelectableListPluginDefinition
673
696
  if (!this._initialized()) {
674
697
  return;
675
698
  }
676
- const entities = this._store.entitiesIds();
677
- const activeEntity = this._store.activeEntityId();
678
- const selectAllState = this._store.selectAllState();
699
+ const { entities, activeEntity, selectAllState } = this._queryParamState();
679
700
  const params = {
680
701
  ...(selectAllState.active && {
681
702
  allSelected: true,
@@ -711,11 +732,19 @@ class NiceSelectableQueryParamsPlugin extends NiceSelectableListPluginDefinition
711
732
  }
712
733
  }
713
734
  writeQueryParams() {
714
- this._writeQueryParamsSub = this._nextQueryParams.pipe(combineLatestWith(this._isNavigating$), switchMap(([params, isNavigating]) => {
715
- if (isNavigating) {
735
+ this._writeQueryParamsSub = this._nextQueryParams.pipe(switchMap((params) => {
736
+ if (params === this._lastQueryParams) {
716
737
  return of(false);
717
738
  }
718
- return from(this.router.navigate([], { queryParams: params, onSameUrlNavigation: "ignore" }));
739
+ return this._isNavigating$.pipe(filter((isNavigating) => !isNavigating), take(1), delay(0), withLatestFrom(this._isNavigating$), switchMap(([_, isNavigating]) => {
740
+ if (isNavigating || JSON.stringify(params) === JSON.stringify(this._lastQueryParams)) {
741
+ return of(false);
742
+ }
743
+ return from(this.router.navigate([], {
744
+ queryParams: params,
745
+ queryParamsHandling: "merge"
746
+ })).pipe(finalize(() => this._lastQueryParams = params));
747
+ }));
719
748
  })).subscribe();
720
749
  }
721
750
  }
@@ -1 +1 @@
1
- {"version":3,"file":"recursyve-nice-selectable-list.mjs","sources":["../../../src/nice-selectable-list/selectable-list/store.ts","../../../src/nice-selectable-list/selectable-list/provider.ts","../../../src/nice-selectable-list/selectable-list/selectable-list.ts","../../../src/nice-selectable-list/selectable-list/injector.ts","../../../src/nice-selectable-list/selectable-list/entity-checkbox.directive.ts","../../../src/nice-selectable-list/selectable-list/header-checkbox.directive.ts","../../../src/nice-selectable-list/selectable-list/pluggins/plugin-definition.ts","../../../src/nice-selectable-list/selectable-list/pluggins/query-params/plugin.ts","../../../src/nice-selectable-list/recursyve-nice-selectable-list.ts"],"sourcesContent":["import { computed, InjectionToken, Injector, ResourceRef, Signal, signal } from \"@angular/core\";\nimport { rxResource } from \"@angular/core/rxjs-interop\";\nimport { NiceSelectableListPluginDefinition } from \"./pluggins/plugin-definition\";\nimport { map, of } from \"rxjs\";\nimport { NiceSelectableListEntityCheckboxDirective } from \"./entity-checkbox.directive\";\nimport { NiceSelectableListEntityLoader, NiceSelectableListUIEntityLoader } from \"./loader\";\n\nexport type NiceSelectableListConfig<T> = {\n idProperty: keyof T;\n idType?: \"string\" | \"number\";\n\n entityLoaderToken: InjectionToken<NiceSelectableListEntityLoader<T>> | null;\n uiEntityLoaderToken: InjectionToken<NiceSelectableListUIEntityLoader<T>> | null;\n preload?: boolean;\n}\n\nexport type NiceSelectableListEntity<T> = {\n id: string | number;\n entity: ResourceRef<T | undefined> | null;\n ui: ResourceRef<T | undefined> | null;\n};\n\nexport type NiceSelectableListSelectAllState = {\n active: boolean;\n total: number | null;\n parameters: object | null;\n};\n\nexport class NiceSelectableListStore<T> {\n private readonly _plugins: NiceSelectableListPluginDefinition[] = [];\n private _entityLoader: NiceSelectableListEntityLoader<T, object, number | string> | null = null;\n private _uiEntityLoader: NiceSelectableListUIEntityLoader<T, number | string> | null = null;\n\n private readonly _cache = signal<Record<string | number, NiceSelectableListEntity<T>>>({});\n\n private readonly _entitiesMap = signal<Record<string | number, NiceSelectableListEntity<T>>>({});\n private readonly _activeEntity = signal<NiceSelectableListEntity<T> | null>(null);\n private readonly _checkboxes = signal<NiceSelectableListEntityCheckboxDirective<T>[]>([]);\n private readonly _selectAllState = signal<NiceSelectableListSelectAllState>({\n active: false,\n total: null,\n parameters: null\n });\n\n // Track window loading state\n private _lastWindowIds: (string | number)[] = [];\n private _currentWindowIds: (string | number)[] = [];\n\n public readonly entities = computed(() => Object.values(this._entitiesMap()));\n public readonly activeEntity = this._activeEntity.asReadonly();\n\n public readonly total: Signal<number> = computed(() => this.entities().length);\n public readonly entitiesIds: Signal<(string | number)[]> = computed(() => {\n const ids = Object.keys(this._entitiesMap());\n return this._config.idType === \"string\" ? ids : ids.map((id) => +id);\n });\n public readonly activeEntityId: Signal<string | number | null> = computed(() => this._activeEntity()?.id ?? null);\n\n public readonly selectAllState = this._selectAllState.asReadonly();\n\n constructor(private readonly _injector: Injector, private readonly _config: NiceSelectableListConfig<T>) {}\n\n public init(): void {\n if (!this._entityLoader && this._config.entityLoaderToken) {\n this._entityLoader = this._injector.get(this._config.entityLoaderToken) as\n NiceSelectableListEntityLoader<T, object, number | string>;\n }\n\n if (!this._uiEntityLoader && this._config.uiEntityLoaderToken) {\n this._uiEntityLoader = this._injector.get(this._config.uiEntityLoaderToken) as\n NiceSelectableListUIEntityLoader<T, number | string>;\n }\n\n for (const plugin of this._plugins) {\n plugin.init();\n }\n }\n\n public registerPlugin(plugin: NiceSelectableListPluginDefinition): void {\n this._plugins.push(plugin);\n }\n\n public registerCheckbox(checkbox: NiceSelectableListEntityCheckboxDirective<T>): void {\n this._checkboxes.update((checkboxes) => [...checkboxes, checkbox]);\n\n const id = this._resolveEntityId(checkbox.selectableEntity());\n const existing = this._entitiesMap()[id];\n\n const selectAllState = this._selectAllState();\n if ((existing && existing.entity === null) || selectAllState.active) {\n const initial = checkbox.selectableEntity();\n const entityResource = this._createEntityResource(id, initial);\n this._entitiesMap.update(\n (_entitiesMap) => ({\n ..._entitiesMap,\n [id]: {\n id,\n entity: entityResource,\n ui: null\n }\n })\n );\n return;\n }\n }\n\n public unregisterCheckbox(checkbox: NiceSelectableListEntityCheckboxDirective<T>): void {\n this._checkboxes.update((checkboxes) => checkboxes.filter((_checkbox) => _checkbox !== checkbox));\n }\n\n public isEntitySelected(entity: T): Signal<boolean> {\n return computed(() => this._isEntitySelected(entity));\n }\n\n public setEntitiesFromSelections(selections: string[]): void {\n const ids: (string | number)[] = this._config.idType === \"string\" ? selections : selections.map((id) => +id);\n\n const registered = this._checkboxes().map((checkbox) => ({\n id: this._resolveEntityId(checkbox.selectableEntity()), value: checkbox.selectableEntity()\n }));\n const cache = this._cache();\n const entities = ids.map((id) => {\n const known = registered.find(_e => _e.id === id)?.value;\n const cached = cache[id]?.entity;\n const entityResource = known ? this._createEntityResource(id, known) : (cached ?? null);\n return {\n id,\n entity: entityResource\n } as { id: string | number; entity: ResourceRef<T | undefined> | null };\n });\n const mapOut = entities.reduce((map, entity) => ({\n ...map,\n [entity.id]: {\n id: entity.id,\n entity: entity.entity,\n ui: null\n }\n }), {} as Record<string | number, NiceSelectableListEntity<T>>);\n\n this._entitiesMap.set(mapOut);\n this._processCacheFromEntities();\n this._updateWindowForActive();\n }\n\n public selectEntity(entity: T): void {\n const isSelected = this._isEntitySelected(entity);\n if (isSelected) {\n return;\n }\n\n const id = this._resolveEntityId(entity);\n const cached = this._cache()[id];\n const newEntity = {\n id,\n entity: cached?.entity ?? this._createEntityResource(id, entity),\n ui: cached?.ui ?? this._createUIResource(id)\n };\n\n this._entitiesMap.update((entitiesMap) => ({\n ...entitiesMap,\n [id]: newEntity\n }));\n\n this._cache.update((cache) => ({\n ...cache,\n [id]: newEntity\n }));\n\n // Window might change if this selection impacts first/last buckets\n this._updateWindowForActive();\n }\n\n public selectEntities(entities: T[]): void {\n this._entitiesMap.update((entitiesMap) => {\n const newEntitiesMap = { ...entitiesMap };\n const cache = this._cache();\n for (const entity of entities) {\n const id = this._resolveEntityId(entity);\n const cached = cache[id];\n newEntitiesMap[id] = cached ?? {\n id,\n entity: this._createEntityResource(id, entity),\n ui: null\n };\n }\n\n return newEntitiesMap;\n });\n\n this._processCacheFromEntities();\n this._updateWindowForActive();\n }\n\n public deselectEntity(entity: T): void {\n const isSelected = this._isEntitySelected(entity);\n if (!isSelected) {\n return;\n }\n\n const id = this._resolveEntityId(entity);\n this._entitiesMap.update((entitiesMap) => {\n const newEntitiesMap = { ...entitiesMap };\n delete newEntitiesMap[id];\n return newEntitiesMap;\n });\n }\n\n public deselectEntities(entities: T[]): void {\n const toRemove = entities.filter((entity) => this._isEntitySelected(entity));\n\n this._entitiesMap.update((entitiesMap) => {\n const newEntitiesMap = { ...entitiesMap };\n for (const entity of toRemove) {\n const id = this._resolveEntityId(entity);\n delete newEntitiesMap[id];\n }\n\n return newEntitiesMap;\n });\n }\n\n public clear(): void {\n this._entitiesMap.set({});\n this._activeEntity.set(null);\n }\n\n public setSelectAllState(state: NiceSelectableListSelectAllState): void {\n this._selectAllState.set(state);\n\n if (!state.active) {\n this.clear();\n return;\n }\n\n const entities = this._checkboxes().map((checkbox) => checkbox.selectableEntity());\n this._entitiesMap.set(entities.reduce((map, entity) => {\n const id = this._resolveEntityId(entity);\n return {\n ...map,\n [id]: {\n id,\n entity: null,\n ui: null\n }\n };\n }, {} as Record<string | number, NiceSelectableListEntity<T>>));\n\n this._preloadSelectAllValues()\n }\n\n public setActiveFromSelected(selected: string): void {\n const id = this._config.idType === \"string\" ? selected : +selected;\n const entity = this._entitiesMap()[id];\n if (!entity) {\n return;\n }\n\n this._setActiveEntity(id);\n }\n\n public setActiveEntity(entity: T | null): void {\n if (!entity) {\n this._activeEntity.set(null);\n return;\n }\n\n const id = this._resolveEntityId(entity);\n this._setActiveEntity(id);\n }\n\n public selectFirstEntity(): void {\n const id = this.entitiesIds()[0];\n if (!id) {\n return;\n }\n\n this._setActiveEntity(id);\n }\n\n public selectNextEntity(): void {\n const activeEntity = this._activeEntity();\n if (!activeEntity) {\n this.selectFirstEntity();\n return;\n }\n\n const entitiesIds = this.entitiesIds();\n const index = entitiesIds.findIndex((id) => activeEntity.id === id);\n const nextEntityId = entitiesIds[index + 1];\n if (!nextEntityId) {\n return;\n }\n\n this._setActiveEntity(nextEntityId);\n }\n\n public selectPreviousEntity(): void {\n const activeEntity = this._activeEntity();\n if (!activeEntity) {\n this.selectFirstEntity();\n return;\n }\n\n const entitiesIds = this.entitiesIds();\n const index = entitiesIds.findIndex((id) => activeEntity.id === id);\n if (index === 0) {\n return;\n }\n\n const previousEntityId = entitiesIds[index - 1];\n if (!previousEntityId) {\n return;\n }\n\n this._setActiveEntity(previousEntityId);\n }\n\n public selectLastEntity(): void {\n const entitiesIds = this.entitiesIds();\n if (entitiesIds.length === 0) {\n return;\n }\n\n const lastEntityId = entitiesIds[entitiesIds.length - 1];\n if (!lastEntityId) {\n return;\n }\n\n this._setActiveEntity(lastEntityId);\n }\n\n private _isEntitySelected(entity: T): boolean {\n const id = this._resolveEntityId(entity);\n return this._entitiesMap()[id]?.entity !== undefined;\n }\n\n private _resolveEntityId(entity: T): string | number {\n const idProperty = this._config.idProperty;\n const id = entity[idProperty];\n if (typeof id !== \"string\" && typeof id !== \"number\") {\n throw new Error(`The id property must be a string or a number, but got ${typeof id}`);\n }\n\n return id;\n }\n\n private _processCacheFromEntities(): void {\n const entities = this._entitiesMap();\n this._cache.update((cache) => ({ ...cache, ...entities }));\n }\n\n private _createEntityResource(id: string | number, initial?: T | null): ResourceRef<T | undefined> {\n const resource = rxResource<T | undefined, { id: string | number}>({\n params: () => ({ id }),\n stream: ({ params }) => {\n if (this._entityLoader) {\n return this._entityLoader.loadEntitiesByIds([params.id]).pipe(map((arr) => arr?.[0]));\n }\n return of(initial ?? undefined);\n },\n defaultValue: initial ?? undefined,\n injector: this._injector\n });\n\n if (initial) {\n resource.set(initial);\n }\n\n return resource;\n }\n\n private _createUIResource(id: string | number): ResourceRef<T | undefined> | null {\n if (!this._uiEntityLoader) {\n return null;\n }\n\n return rxResource({\n params: () => ({ id }),\n stream: ({ params }) => this._uiEntityLoader!.loadById(params.id),\n injector: this._injector\n });\n }\n\n private _computeWindowIds(): (string | number)[] {\n const ids = this.entitiesIds();\n const n = ids.length;\n if (n === 0) {\n return [];\n }\n\n const set = new Set<string | number>();\n\n // first 3\n for (let i = 0; i < Math.min(3, n); i++) {\n set.add(ids[i]);\n }\n\n // last 3\n for (let i = Math.max(0, n - 3); i < n; i++) {\n set.add(ids[i]);\n }\n\n // active and +/- 3\n const activeId = this.activeEntityId();\n const activeIndex = activeId !== null ? ids.findIndex((i) => i === activeId) : -1;\n if (activeIndex >= 0) {\n for (let i = Math.max(0, activeIndex - 3); i <= Math.min(n - 1, activeIndex + 3); i++) {\n set.add(ids[i]);\n }\n }\n return Array.from(set.values());\n }\n\n private _ensureResourcesForIds(ids: (string | number)[]): void {\n const mapCopy = { ...this._entitiesMap() } as Record<string | number, NiceSelectableListEntity<T>>;\n const cache = this._cache();\n for (const id of ids) {\n const entry = mapCopy[id] ?? cache[id];\n if (!entry) {\n mapCopy[id] = {\n id,\n entity: this._createEntityResource(id),\n ui: this._uiEntityLoader ? this._createUIResource(id) : null\n };\n continue;\n }\n\n if (!entry.entity) {\n entry.entity = this._createEntityResource(id);\n }\n\n if (!entry.ui && this._uiEntityLoader) {\n entry.ui = this._createUIResource(id);\n }\n }\n\n this._entitiesMap.set(mapCopy);\n this._processCacheFromEntities();\n }\n\n private _updateWindowForActive(): void {\n this._lastWindowIds = this._currentWindowIds;\n\n this._currentWindowIds = this._computeWindowIds();\n if (this._currentWindowIds.length) {\n this._ensureResourcesForIds(this._currentWindowIds);\n }\n }\n\n private _setActiveEntity(id: string | number): void {\n const entity = this._entitiesMap()[id];\n if (!entity) {\n return;\n }\n\n if (!entity.entity) {\n entity.entity = this._createEntityResource(id);\n }\n\n if (!entity.ui) {\n entity.ui = this._createUIResource(id);\n }\n\n this._activeEntity.set(entity);\n this._updateWindowForActive();\n }\n\n public _preloadSelectAllValues(): void {\n if (!this._config.preload || !this._entityLoader) {\n return;\n }\n\n this._entityLoader\n .loadIdsFromParameters(this._selectAllState().parameters ?? {})\n .pipe(\n map((ids) => {\n const cache = this._cache();\n this._entitiesMap.set(ids.reduce((map, id) => {\n const cached = cache[id];\n return {\n ...map,\n [id]: cached ?? {\n id,\n entity: null,\n ui: null\n }\n };\n }, {} as Record<string | number, NiceSelectableListEntity<T>>));\n\n this._processCacheFromEntities();\n this._updateWindowForActive();\n })\n )\n .subscribe();\n }\n}\n","import { DestroyRef, inject, InjectionToken, Injector, Provider, Type } from \"@angular/core\";\nimport { NiceSelectableListEntityLoader, NiceSelectableListUIEntityLoader } from \"./loader\";\nimport { NiceSelectableListPluginDefinition } from \"./pluggins/plugin-definition\";\nimport { NiceSelectableListConfig, NiceSelectableListStore } from \"./store\";\n\nexport const NICE_SELECTABLE_LISTS\n = new InjectionToken<NiceSelectableListProvider<unknown>[]>(\"_selectable_list_providers\");\n\nexport const NICE_SELECTABLE_LIST\n = new InjectionToken<NiceSelectableListStore<unknown>>(\"_selectable_list_provider\");\n\nexport type NiceSelectableListProvider<T> = {\n name: string;\n store: NiceSelectableListStore<T>;\n};\n\nexport type NiceSelectableListOptions<T> =\n & { entityLoader?: Type<NiceSelectableListEntityLoader<T>> }\n & { uiEntityLoader?: Type<NiceSelectableListUIEntityLoader<T>> }\n & { plugins?: Type<NiceSelectableListPluginDefinition>[] }\n & Omit<NiceSelectableListConfig<T>, \"entityLoaderToken\" | \"uiEntityLoaderToken\">;\n\nexport function provideNiceSelectableList<T>(options?: NiceSelectableListOptions<T>): Provider[];\nexport function provideNiceSelectableList<T>(name: string, options?: NiceSelectableListOptions<T>): Provider[];\nexport function provideNiceSelectableList<T>(...args: unknown[]): Provider[] {\n const name: string | null = typeof args[0] === \"string\" ? args[0] : null;\n const options = (typeof args[0] === \"string\" ? args[1] : args[0]) as NiceSelectableListOptions<T> | undefined;\n\n const providers: Provider[] = [];\n\n const entityLoaderToken = options?.entityLoader\n ? new InjectionToken<unknown>(options.entityLoader.name)\n : null;\n if (entityLoaderToken && options?.entityLoader) {\n providers.push({\n provide: entityLoaderToken,\n useClass: options.entityLoader\n });\n }\n\n const uiEntityLoaderToken = options?.uiEntityLoader\n ? new InjectionToken<unknown>(options.uiEntityLoader.name)\n : null;\n if (uiEntityLoaderToken && options?.uiEntityLoader) {\n providers.push({\n provide: uiEntityLoaderToken,\n useClass: options.uiEntityLoader\n });\n }\n\n if (!name) {\n providers.push({\n provide: NICE_SELECTABLE_LIST,\n useFactory: (injector: Injector, destroyRef: DestroyRef) => {\n const store = new NiceSelectableListStore(injector, {\n idProperty: options?.idProperty ?? \"id\" as keyof T,\n idType: options?.idType ?? \"number\" as \"string\" | \"number\",\n entityLoaderToken,\n uiEntityLoaderToken,\n preload: options?.preload ?? entityLoaderToken !== null\n });\n\n for (const plugin of options?.plugins ?? []) {\n new plugin(injector, destroyRef, store);\n }\n\n return store;\n },\n deps: [Injector, DestroyRef]\n });\n } else {\n providers.push({\n provide: NICE_SELECTABLE_LISTS,\n useFactory: (injector: Injector, destroyRef: DestroyRef) => {\n const store = new NiceSelectableListStore(injector, {\n idProperty: options?.idProperty ?? \"id\" as keyof T,\n idType: options?.idType ?? \"number\" as \"string\" | \"number\",\n entityLoaderToken,\n uiEntityLoaderToken,\n preload: options?.preload ?? entityLoaderToken !== null\n });\n\n for (const plugin of options?.plugins ?? []) {\n new plugin(injector, destroyRef, store);\n }\n\n return {\n name,\n store\n };\n },\n deps: [Injector, DestroyRef],\n multi: true\n });\n }\n\n return providers;\n}\n\nexport type ResolveNiceSelectableListOptions = { injector: Injector };\n\nexport function resolveNiceSelectableList<T>(\n name: string,\n options?: ResolveNiceSelectableListOptions\n): NiceSelectableListStore<T>;\nexport function resolveNiceSelectableList<T>(options?: ResolveNiceSelectableListOptions): NiceSelectableListStore<T>;\nexport function resolveNiceSelectableList<T>(...args: unknown[]): NiceSelectableListStore<T> {\n const name: string | null = typeof args[0] === \"string\" ? args[0] : null;\n const options = (typeof args[0] === \"string\" ? args[1] : args[0]) as ResolveNiceSelectableListOptions | undefined;\n\n if (!name) {\n return (options?.injector\n ? options.injector.get(NICE_SELECTABLE_LIST)\n : inject(NICE_SELECTABLE_LIST)) as NiceSelectableListStore<T>;\n }\n\n const selectableLists = options?.injector\n ? options.injector.get(NICE_SELECTABLE_LISTS)\n : inject(NICE_SELECTABLE_LISTS);\n\n const provider = selectableLists.find((_provider) => _provider.name === name);\n if (!provider) {\n throw new Error(`No selectable list provider found for name: ${name}`);\n }\n\n return provider.store as NiceSelectableListStore<T>;\n}\n","import {\n computed,\n contentChildren,\n Directive,\n effect,\n forwardRef,\n inject,\n InjectionToken,\n Injector,\n input,\n signal,\n Signal, untracked\n} from \"@angular/core\";\nimport { NiceSelectableListEntityCheckboxDirective } from \"./entity-checkbox.directive\";\nimport { resolveNiceSelectableList } from \"./provider\";\nimport { NiceSelectableListStore } from \"./store\";\n\nexport const NICE_SELECTABLE_LIST_DIRECTIVE\n = new InjectionToken<NiceSelectableList<unknown>>(\"_selectable_list_directive\");\n\nexport type NiceSelectableList<T> = {\n name: Signal<string | null>;\n initialized: Signal<boolean>;\n allSelected: Signal<boolean>;\n checkboxes: Signal<readonly NiceSelectableListEntityCheckboxDirective<T>[]>;\n};\n\n@Directive({\n selector: \"[niceSelectableList]\",\n providers: [\n { provide: NICE_SELECTABLE_LIST_DIRECTIVE, useExisting: forwardRef(() => SelectableListDirective) }\n ]\n})\nexport class SelectableListDirective<T> implements NiceSelectableList<T> {\n public readonly name = input<string | null>(null, { alias: \"niceSelectableList\" });\n\n public readonly checkboxes = contentChildren<NiceSelectableListEntityCheckboxDirective<T>>(\n NiceSelectableListEntityCheckboxDirective,\n { descendants: true }\n );\n\n private readonly _initialized = signal(false);\n public readonly initialized = this._initialized.asReadonly();\n\n public readonly allSelected = computed(() => this.selectableLists.selectAllState().active);\n\n protected readonly injector = inject(Injector);\n\n protected selectableLists!: NiceSelectableListStore<T>;\n\n constructor() {\n effect(() => {\n const name = this.name();\n this.selectableLists = name\n ? resolveNiceSelectableList(name, { injector: this.injector })\n : resolveNiceSelectableList({ injector: this.injector });\n\n untracked(() => this.selectableLists.init());\n });\n }\n}\n","import { inject } from \"@angular/core\";\nimport { NICE_SELECTABLE_LIST, NICE_SELECTABLE_LISTS } from \"./provider\";\nimport { NICE_SELECTABLE_LIST_DIRECTIVE, NiceSelectableList } from \"./selectable-list\";\nimport { NiceSelectableListStore } from \"./store\";\n\nexport function injectNiceSelectableListDirective<T>(): NiceSelectableList<T> {\n return inject(NICE_SELECTABLE_LIST_DIRECTIVE, { optional: true }) as NiceSelectableList<T>;\n}\n\nexport function injectNiceSelectableList<T>(name?: string): NiceSelectableListStore<T> {\n const storeName = name ?? injectNiceSelectableListDirective()?.name();\n if (!storeName) {\n return inject(NICE_SELECTABLE_LIST) as NiceSelectableListStore<T>;\n }\n\n const selectableLists = inject(NICE_SELECTABLE_LISTS);\n const provider = selectableLists.find((_provider) => _provider.name === storeName);\n if (!provider) {\n throw new Error(`No selectable list provider found for name: ${storeName}`);\n }\n\n return provider.store as NiceSelectableListStore<T>;\n}\n","import {\n computed,\n DestroyRef,\n Directive,\n effect,\n inject,\n input,\n OnDestroy,\n OnInit\n} from \"@angular/core\";\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\nimport { MatCheckbox } from \"@angular/material/checkbox\";\nimport { injectNiceSelectableList } from \"./injector\";\n\n@Directive({\n selector: \"mat-checkbox[niceSelectableListEntityCheckbox]\"\n})\nexport class NiceSelectableListEntityCheckboxDirective<T> implements OnInit, OnDestroy {\n protected readonly matCheckbox = inject(MatCheckbox);\n protected readonly destroyRef = inject(DestroyRef);\n protected readonly niceSelectableList = injectNiceSelectableList<T>();\n\n public readonly selectableEntity = input.required<T>();\n public readonly isSelected = computed(() => this.niceSelectableList.isEntitySelected(this.selectableEntity())());\n\n constructor() {\n effect(() => {\n this.matCheckbox.disabled = this.niceSelectableList.selectAllState().active;\n });\n\n effect(() => {\n this.matCheckbox.checked = this.niceSelectableList.isEntitySelected(this.selectableEntity())();\n });\n }\n\n public ngOnInit(): void {\n this.niceSelectableList.registerCheckbox(this);\n\n this.matCheckbox.change.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(({ checked }) => {\n if (checked) {\n this.niceSelectableList.selectEntity(this.selectableEntity());\n } else {\n this.niceSelectableList.deselectEntity(this.selectableEntity());\n }\n });\n }\n\n public ngOnDestroy(): void {\n this.niceSelectableList.unregisterCheckbox(this);\n }\n\n public selectEntity(): void {\n this.matCheckbox.checked = true;\n this.matCheckbox.change.emit({ checked: true, source: this.matCheckbox });\n }\n\n public deselectEntity(): void {\n this.matCheckbox.checked = false;\n this.matCheckbox.change.emit({ checked: false, source: this.matCheckbox });\n }\n}\n","import { afterRenderEffect, DestroyRef, Directive, effect, inject, OnInit } from \"@angular/core\";\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\nimport { MatCheckbox } from \"@angular/material/checkbox\";\nimport { injectNiceSelectableList, injectNiceSelectableListDirective } from \"./injector\";\n\n@Directive({\n selector: \"mat-checkbox[niceSelectableListHeaderCheckbox]\"\n})\nexport class NiceSelectableListHeaderCheckboxDirective<T> implements OnInit {\n private readonly niceSelectableListDirective = injectNiceSelectableListDirective<T>();\n private readonly niceSelectableList = injectNiceSelectableList<T>();\n private readonly matCheckbox = inject(MatCheckbox);\n private readonly destroyRef = inject(DestroyRef);\n\n constructor() {\n effect(() => {\n this.matCheckbox.disabled = this.niceSelectableListDirective.allSelected();\n });\n\n afterRenderEffect({\n read: () => {\n const allSelected = this.niceSelectableListDirective.allSelected();\n if (allSelected) {\n this.matCheckbox.checked = true;\n return;\n }\n\n const checkboxes = this.niceSelectableListDirective.checkboxes();\n const empty = checkboxes.length === 0;\n\n this.matCheckbox.checked = !empty && checkboxes.every((checkbox) => checkbox.isSelected());\n this.matCheckbox.indeterminate = !this.matCheckbox.checked\n && checkboxes.some((checkbox) => checkbox.isSelected());\n }\n });\n }\n\n public ngOnInit(): void {\n this.matCheckbox.change.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(({ checked }) => {\n const entities = this.niceSelectableListDirective\n .checkboxes()\n .map((checkbox) => checkbox.selectableEntity());\n\n if (checked) {\n this.niceSelectableList.selectEntities(entities);\n } else {\n this.niceSelectableList.deselectEntities(entities);\n }\n });\n }\n}\n","import { DestroyRef, Injector } from \"@angular/core\";\nimport { NiceSelectableListStore } from \"../store\";\n\nexport abstract class NiceSelectableListPluginDefinition {\n constructor(\n protected readonly _injector: Injector,\n protected readonly _destroyRef: DestroyRef,\n protected readonly _store: NiceSelectableListStore<unknown>\n ) {\n this._store.registerPlugin(this);\n _destroyRef.onDestroy(() => this.cleanup());\n }\n\n public abstract init(): void;\n public abstract cleanup(): void;\n}\n","import { effect, EffectRef, signal } from \"@angular/core\";\nimport { ActivatedRoute, NavigationEnd, NavigationStart, Router } from \"@angular/router\";\nimport { from, Observable, of, Subject, Subscription } from \"rxjs\";\nimport { combineLatestWith, filter, map, startWith, switchMap, take } from \"rxjs/operators\";\nimport { NiceSelectableListPluginDefinition } from \"../plugin-definition\";\nimport { NiceSelectableListQueryParams } from \"./types/query-params.type\";\n\nexport class NiceSelectableQueryParamsPlugin extends NiceSelectableListPluginDefinition {\n private router!: Router;\n private route!: ActivatedRoute;\n\n private _storeChangesEffectRef!: EffectRef;\n private _writeQueryParamsSub!: Subscription;\n\n private _isNavigating$!: Observable<boolean>;\n\n private readonly _initialized = signal(false);\n private readonly _nextQueryParams = new Subject<NiceSelectableListQueryParams>();\n\n public override init(): void {\n this.router = this._injector.get(Router);\n this.route = this._injector.get(ActivatedRoute);\n\n this._isNavigating$ = this.router.events.pipe(\n filter((event) => event instanceof NavigationStart || event instanceof NavigationEnd),\n map((event) => event instanceof NavigationStart),\n startWith(!this.router.navigated)\n );\n\n this.listenOnQueryParams();\n this.listenOnStoreChanges();\n this.writeQueryParams();\n }\n\n public override cleanup(): void {\n this._storeChangesEffectRef.destroy();\n this._writeQueryParamsSub.unsubscribe();\n }\n\n private listenOnQueryParams(): void {\n if (this.router.navigated) {\n this.parseQueryParams(this.route.snapshot.queryParams);\n this._initialized.set(true);\n return;\n }\n\n this.router.events\n .pipe(\n filter((event) => event instanceof NavigationEnd),\n take(1)\n )\n .subscribe(() => {\n this.parseQueryParams(this.route.snapshot.queryParams);\n this._initialized.set(true);\n });\n }\n\n private listenOnStoreChanges(): void {\n this._storeChangesEffectRef = effect(() => {\n if (!this._initialized()) {\n return;\n }\n\n const entities = this._store.entitiesIds();\n const activeEntity = this._store.activeEntityId();\n const selectAllState = this._store.selectAllState();\n\n const params: NiceSelectableListQueryParams = {\n ...(selectAllState.active && {\n allSelected: true,\n ...(selectAllState.parameters && ({\n allSelectedParameters: JSON.stringify(selectAllState.parameters)\n }))\n }),\n selection: entities,\n selected: activeEntity\n };\n this._nextQueryParams.next(params);\n }, {\n injector: this._injector,\n manualCleanup: true\n });\n }\n\n private parseQueryParams(params: {\n allSelected?: boolean;\n allSelectedParameters?: string;\n selection?: string | string[];\n selected?: string;\n }): void {\n if (params.selection) {\n const selection = Array.isArray(params.selection)\n ? params.selection\n : [params.selection];\n\n this._store.setEntitiesFromSelections(selection);\n }\n\n if (params.selected) {\n this._store.setActiveFromSelected(params.selected);\n }\n\n if (params.allSelected) {\n this._store.setSelectAllState({\n active: true,\n total: this._store.total(),\n parameters: params.allSelectedParameters\n ? JSON.parse(params.allSelectedParameters)\n : null\n });\n }\n }\n\n private writeQueryParams(): void {\n this._writeQueryParamsSub = this._nextQueryParams.pipe(\n combineLatestWith(this._isNavigating$),\n switchMap(([params, isNavigating]) => {\n if (isNavigating) {\n return of(false);\n }\n\n return from(this.router.navigate([], { queryParams: params, onSameUrlNavigation: \"ignore\" }));\n })\n ).subscribe();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["map"],"mappings":"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"}
1
+ {"version":3,"file":"recursyve-nice-selectable-list.mjs","sources":["../../../src/nice-selectable-list/selectable-list/store.ts","../../../src/nice-selectable-list/selectable-list/provider.ts","../../../src/nice-selectable-list/selectable-list/selectable-list.ts","../../../src/nice-selectable-list/selectable-list/injector.ts","../../../src/nice-selectable-list/selectable-list/entity-checkbox.directive.ts","../../../src/nice-selectable-list/selectable-list/header-checkbox.directive.ts","../../../src/nice-selectable-list/selectable-list/pluggins/plugin-definition.ts","../../../src/nice-selectable-list/selectable-list/pluggins/query-params/plugin.ts","../../../src/nice-selectable-list/recursyve-nice-selectable-list.ts"],"sourcesContent":["import { afterNextRender, computed, InjectionToken, Injector, ResourceRef, Signal, signal } from \"@angular/core\";\nimport { rxResource } from \"@angular/core/rxjs-interop\";\nimport { NiceSelectableListPluginDefinition } from \"./pluggins/plugin-definition\";\nimport { map, of } from \"rxjs\";\nimport { NiceSelectableListEntityCheckboxDirective } from \"./entity-checkbox.directive\";\nimport { NiceSelectableListEntityLoader, NiceSelectableListUIEntityLoader } from \"./loader\";\n\nexport type NiceSelectableListConfig<T> = {\n idProperty: keyof T;\n idType?: \"string\" | \"number\";\n\n entityLoaderToken: InjectionToken<NiceSelectableListEntityLoader<T>> | null;\n uiEntityLoaderToken: InjectionToken<NiceSelectableListUIEntityLoader<T>> | null;\n preload?: boolean;\n}\n\nexport type NiceSelectableListEntity<T> = {\n id: string | number;\n entity: ResourceRef<T | undefined> | null;\n ui: ResourceRef<T | undefined> | null;\n};\n\nexport type NiceSelectableListSelectAllState = {\n active: boolean;\n total: number | null;\n parameters: object | null;\n};\n\nexport class NiceSelectableListStore<T> {\n private readonly _plugins: NiceSelectableListPluginDefinition[] = [];\n private _entityLoader: NiceSelectableListEntityLoader<T, object, number | string> | null = null;\n private _uiEntityLoader: NiceSelectableListUIEntityLoader<T, number | string> | null = null;\n\n private readonly _initialized = signal(false);\n private readonly _cache = signal<Record<string | number, NiceSelectableListEntity<T>>>({});\n\n private readonly _entitiesMap = signal<Record<string | number, NiceSelectableListEntity<T>>>({});\n private readonly _activeEntity = signal<NiceSelectableListEntity<T> | null>(null);\n private readonly _checkboxes = signal<NiceSelectableListEntityCheckboxDirective<T>[]>([]);\n private readonly _selectAllState = signal<NiceSelectableListSelectAllState>({\n active: false,\n total: null,\n parameters: null\n });\n\n // Track window loading state\n private _lastWindowIds: (string | number)[] = [];\n private _currentWindowIds: (string | number)[] = [];\n\n public readonly entities = computed(() => Object.values(this._entitiesMap()).reverse());\n public readonly activeEntity = this._activeEntity.asReadonly();\n\n public readonly total: Signal<number> = computed(() => this.entities().length);\n public readonly entitiesIds: Signal<(string | number)[]> = computed(() => {\n const ids = Object.keys(this._entitiesMap()).reverse();\n return this._config.idType === \"string\" ? ids : ids.map((id) => +id);\n });\n public readonly activeEntityId: Signal<string | number | null> = computed(() => this._activeEntity()?.id ?? null);\n\n public readonly selectAllState = this._selectAllState.asReadonly();\n\n constructor(private readonly _injector: Injector, private readonly _config: NiceSelectableListConfig<T>) {\n afterNextRender(() => this.init());\n }\n\n public init(): void {\n if (this._initialized()) {\n return;\n }\n\n if (!this._entityLoader && this._config.entityLoaderToken) {\n this._entityLoader = this._injector.get(this._config.entityLoaderToken) as\n NiceSelectableListEntityLoader<T, object, number | string>;\n }\n\n if (!this._uiEntityLoader && this._config.uiEntityLoaderToken) {\n this._uiEntityLoader = this._injector.get(this._config.uiEntityLoaderToken) as\n NiceSelectableListUIEntityLoader<T, number | string>;\n }\n\n for (const plugin of this._plugins) {\n plugin.init();\n }\n\n this._initialized.set(true);\n }\n\n public registerPlugin(plugin: NiceSelectableListPluginDefinition): void {\n this._plugins.push(plugin);\n }\n\n public registerCheckbox(checkbox: NiceSelectableListEntityCheckboxDirective<T>): void {\n this._checkboxes.update((checkboxes) => [...checkboxes, checkbox]);\n\n const id = this._resolveEntityId(checkbox.selectableEntity());\n const existing = this._entitiesMap()[id];\n\n const selectAllState = this._selectAllState();\n if ((existing && !existing.entity) || selectAllState.active) {\n const initial = checkbox.selectableEntity();\n const entityResource = this._createEntityResource(id, initial);\n this._entitiesMap.update(\n (_entitiesMap) => ({\n ..._entitiesMap,\n [id]: {\n id,\n entity: entityResource,\n ui: null\n }\n })\n );\n return;\n }\n }\n\n public unregisterCheckbox(checkbox: NiceSelectableListEntityCheckboxDirective<T>): void {\n this._checkboxes.update((checkboxes) => checkboxes.filter((_checkbox) => _checkbox !== checkbox));\n }\n\n public isEntitySelected(entity: T): Signal<boolean> {\n return computed(() => this._isEntitySelected(entity));\n }\n\n public setEntitiesFromSelections(selections: string[]): void {\n const ids: (string | number)[] = this._config.idType === \"string\" ? selections : selections.map((id) => +id);\n\n const registered = this._checkboxes().map((checkbox) => ({\n id: this._resolveEntityId(checkbox.selectableEntity()), value: checkbox.selectableEntity()\n }));\n const cache = this._cache();\n const entities = ids.map((id) => {\n const known = registered.find(_e => _e.id === id)?.value;\n const cached = cache[id]?.entity;\n const entityResource = known ? this._createEntityResource(id, known) : (cached ?? null);\n return {\n id,\n entity: entityResource\n } as { id: string | number; entity: ResourceRef<T | undefined> | null };\n });\n const mapOut = entities.reduce((map, entity) => ({\n ...map,\n [entity.id]: {\n id: entity.id,\n entity: entity.entity,\n ui: null\n }\n }), {} as Record<string | number, NiceSelectableListEntity<T>>);\n\n this._entitiesMap.set(mapOut);\n this._processCacheFromEntities();\n this._updateWindowForActive();\n }\n\n public selectEntity(entity: T): void {\n const isSelected = this._isEntitySelected(entity);\n if (isSelected) {\n return;\n }\n\n const id = this._resolveEntityId(entity);\n const cached = this._cache()[id];\n const newEntity = {\n id,\n entity: cached?.entity ?? this._createEntityResource(id, entity),\n ui: cached?.ui ?? this._createUIResource(id)\n };\n\n this._entitiesMap.update((entitiesMap) => ({\n ...entitiesMap,\n [id]: newEntity\n }));\n\n this._cache.update((cache) => ({\n ...cache,\n [id]: newEntity\n }));\n\n // Window might change if this selection impacts first/last buckets\n this._updateWindowForActive();\n }\n\n public selectEntities(entities: T[]): void {\n this._entitiesMap.update((entitiesMap) => {\n const newEntitiesMap = { ...entitiesMap };\n const cache = this._cache();\n for (const entity of entities) {\n const id = this._resolveEntityId(entity);\n const cached = cache[id];\n newEntitiesMap[id] = cached ?? {\n id,\n entity: this._createEntityResource(id, entity),\n ui: null\n };\n }\n\n return newEntitiesMap;\n });\n\n this._processCacheFromEntities();\n this._updateWindowForActive();\n }\n\n public deselectEntity(entity: T): void {\n const isSelected = this._isEntitySelected(entity);\n if (!isSelected) {\n return;\n }\n\n const id = this._resolveEntityId(entity);\n this._entitiesMap.update((entitiesMap) => {\n const newEntitiesMap = { ...entitiesMap };\n delete newEntitiesMap[id];\n return newEntitiesMap;\n });\n }\n\n public deselectEntities(entities: T[]): void {\n const toRemove = entities.filter((entity) => this._isEntitySelected(entity));\n\n this._entitiesMap.update((entitiesMap) => {\n const newEntitiesMap = { ...entitiesMap };\n for (const entity of toRemove) {\n const id = this._resolveEntityId(entity);\n delete newEntitiesMap[id];\n }\n\n return newEntitiesMap;\n });\n }\n\n public clear(): void {\n this._entitiesMap.set({});\n this._activeEntity.set(null);\n }\n\n public setSelectAllState(state: NiceSelectableListSelectAllState): void {\n this._selectAllState.set(state);\n\n if (!state.active) {\n this.clear();\n return;\n }\n\n const entities = this._checkboxes().map((checkbox) => checkbox.selectableEntity());\n this._entitiesMap.set(entities.reduce((map, entity) => {\n const id = this._resolveEntityId(entity);\n return {\n ...map,\n [id]: {\n id,\n entity: null,\n ui: null\n }\n };\n }, {} as Record<string | number, NiceSelectableListEntity<T>>));\n\n this._preloadSelectAllValues()\n }\n\n public setActiveFromSelected(selected: string): void {\n const id = this._config.idType === \"string\" ? selected : +selected;\n const entity = this._entitiesMap()[id];\n if (!entity) {\n return;\n }\n\n this._setActiveEntity(id);\n }\n\n public setActiveEntity(entity: T | null): void {\n if (!entity) {\n this._activeEntity.set(null);\n return;\n }\n\n const id = this._resolveEntityId(entity);\n this._setActiveEntity(id);\n }\n\n public selectFirstEntity(): void {\n const id = this.entitiesIds()[0];\n if (!id) {\n return;\n }\n\n this._setActiveEntity(id);\n }\n\n public selectNextEntity(): void {\n const activeEntity = this._activeEntity();\n if (!activeEntity) {\n this.selectFirstEntity();\n return;\n }\n\n const entitiesIds = this.entitiesIds();\n const index = entitiesIds.findIndex((id) => activeEntity.id === id);\n const nextEntityId = entitiesIds[index + 1];\n if (!nextEntityId) {\n return;\n }\n\n this._setActiveEntity(nextEntityId);\n }\n\n public selectPreviousEntity(): void {\n const activeEntity = this._activeEntity();\n if (!activeEntity) {\n this.selectFirstEntity();\n return;\n }\n\n const entitiesIds = this.entitiesIds();\n const index = entitiesIds.findIndex((id) => activeEntity.id === id);\n if (index === 0) {\n return;\n }\n\n const previousEntityId = entitiesIds[index - 1];\n if (!previousEntityId) {\n return;\n }\n\n this._setActiveEntity(previousEntityId);\n }\n\n public selectLastEntity(): void {\n const entitiesIds = this.entitiesIds();\n if (entitiesIds.length === 0) {\n return;\n }\n\n const lastEntityId = entitiesIds[entitiesIds.length - 1];\n if (!lastEntityId) {\n return;\n }\n\n this._setActiveEntity(lastEntityId);\n }\n\n private _isEntitySelected(entity: T): boolean {\n const id = this._resolveEntityId(entity);\n return id in this._entitiesMap();\n }\n\n private _resolveEntityId(entity: T): string | number {\n const idProperty = this._config.idProperty;\n const id = entity[idProperty];\n if (typeof id !== \"string\" && typeof id !== \"number\") {\n throw new Error(`The id property must be a string or a number, but got ${typeof id}`);\n }\n\n return id;\n }\n\n private _processCacheFromEntities(): void {\n const entities = this._entitiesMap();\n this._cache.update((cache) => ({ ...cache, ...entities }));\n }\n\n private _createEntityResource(id: string | number, initial?: T | null): ResourceRef<T | undefined> {\n const resource = rxResource<T | undefined, { id: string | number}>({\n params: () => ({ id }),\n stream: ({ params }) => {\n if (this._entityLoader) {\n return this._entityLoader.loadEntitiesByIds([params.id]).pipe(map((arr) => arr?.[0]));\n }\n return of(initial ?? undefined);\n },\n defaultValue: initial ?? undefined,\n injector: this._injector\n });\n\n if (initial) {\n resource.set(initial);\n }\n\n return resource;\n }\n\n private _createUIResource(id: string | number): ResourceRef<T | undefined> | null {\n if (!this._uiEntityLoader) {\n return null;\n }\n\n return rxResource({\n params: () => ({ id }),\n stream: ({ params }) => this._uiEntityLoader!.loadById(params.id),\n injector: this._injector\n });\n }\n\n private _computeWindowIds(): (string | number)[] {\n const ids = this.entitiesIds();\n const n = ids.length;\n if (n === 0) {\n return [];\n }\n\n const set = new Set<string | number>();\n\n // first 3\n for (let i = 0; i < Math.min(3, n); i++) {\n set.add(ids[i]);\n }\n\n // last 3\n for (let i = Math.max(0, n - 3); i < n; i++) {\n set.add(ids[i]);\n }\n\n // active and +/- 3\n const activeId = this.activeEntityId();\n const activeIndex = activeId !== null ? ids.findIndex((i) => i === activeId) : -1;\n if (activeIndex >= 0) {\n for (let i = Math.max(0, activeIndex - 3); i <= Math.min(n - 1, activeIndex + 3); i++) {\n set.add(ids[i]);\n }\n }\n return Array.from(set.values());\n }\n\n private _ensureResourcesForIds(ids: (string | number)[]): void {\n const mapCopy = { ...this._entitiesMap() } as Record<string | number, NiceSelectableListEntity<T>>;\n const cache = this._cache();\n for (const id of ids) {\n const entry = mapCopy[id] ?? cache[id];\n if (!entry) {\n mapCopy[id] = {\n id,\n entity: this._createEntityResource(id),\n ui: this._uiEntityLoader ? this._createUIResource(id) : null\n };\n continue;\n }\n\n if (!entry.entity) {\n entry.entity = this._createEntityResource(id);\n }\n\n if (!entry.ui && this._uiEntityLoader) {\n entry.ui = this._createUIResource(id);\n }\n }\n\n this._entitiesMap.set(mapCopy);\n this._processCacheFromEntities();\n }\n\n private _updateWindowForActive(): void {\n this._lastWindowIds = this._currentWindowIds;\n\n this._currentWindowIds = this._computeWindowIds();\n if (this._currentWindowIds.length) {\n this._ensureResourcesForIds(this._currentWindowIds);\n }\n }\n\n private _setActiveEntity(id: string | number): void {\n const entity = this._entitiesMap()[id];\n if (!entity) {\n return;\n }\n\n if (!entity.entity) {\n entity.entity = this._createEntityResource(id);\n }\n\n if (!entity.ui) {\n entity.ui = this._createUIResource(id);\n }\n\n this._activeEntity.set(entity);\n this._updateWindowForActive();\n }\n\n public _preloadSelectAllValues(): void {\n if (!this._config.preload || !this._entityLoader) {\n return;\n }\n\n this._entityLoader\n .loadIdsFromParameters(this._selectAllState().parameters ?? {})\n .pipe(\n map((ids) => {\n const cache = this._cache();\n this._entitiesMap.set(ids.reduce((map, id) => {\n const cached = cache[id];\n return {\n ...map,\n [id]: cached ?? {\n id,\n entity: null,\n ui: null\n }\n };\n }, {} as Record<string | number, NiceSelectableListEntity<T>>));\n\n this._processCacheFromEntities();\n this._updateWindowForActive();\n })\n )\n .subscribe();\n }\n}\n","import { DestroyRef, inject, InjectionToken, Injector, Provider, Type } from \"@angular/core\";\nimport { NiceSelectableListEntityLoader, NiceSelectableListUIEntityLoader } from \"./loader\";\nimport { NiceSelectableListPluginDefinition } from \"./pluggins/plugin-definition\";\nimport { NiceSelectableListConfig, NiceSelectableListStore } from \"./store\";\n\nexport const NICE_SELECTABLE_LISTS\n = new InjectionToken<NiceSelectableListProvider<unknown>[]>(\"_selectable_list_providers\");\n\nexport const NICE_SELECTABLE_LIST\n = new InjectionToken<NiceSelectableListStore<unknown>>(\"_selectable_list_provider\");\n\nexport type NiceSelectableListProvider<T> = {\n name: string;\n store: NiceSelectableListStore<T>;\n};\n\nexport type NiceSelectableListOptions<T> =\n & { entityLoader?: Type<NiceSelectableListEntityLoader<T>> }\n & { uiEntityLoader?: Type<NiceSelectableListUIEntityLoader<T>> }\n & { plugins?: Type<NiceSelectableListPluginDefinition>[] }\n & Omit<NiceSelectableListConfig<T>, \"entityLoaderToken\" | \"uiEntityLoaderToken\">;\n\nexport function provideNiceSelectableList<T>(options?: NiceSelectableListOptions<T>): Provider[];\nexport function provideNiceSelectableList<T>(name: string, options?: NiceSelectableListOptions<T>): Provider[];\nexport function provideNiceSelectableList<T>(...args: unknown[]): Provider[] {\n const name: string | null = typeof args[0] === \"string\" ? args[0] : null;\n const options = (typeof args[0] === \"string\" ? args[1] : args[0]) as NiceSelectableListOptions<T> | undefined;\n\n const providers: Provider[] = [];\n\n const entityLoaderToken = options?.entityLoader\n ? new InjectionToken<unknown>(options.entityLoader.name)\n : null;\n if (entityLoaderToken && options?.entityLoader) {\n providers.push({\n provide: entityLoaderToken,\n useClass: options.entityLoader\n });\n }\n\n const uiEntityLoaderToken = options?.uiEntityLoader\n ? new InjectionToken<unknown>(options.uiEntityLoader.name)\n : null;\n if (uiEntityLoaderToken && options?.uiEntityLoader) {\n providers.push({\n provide: uiEntityLoaderToken,\n useClass: options.uiEntityLoader\n });\n }\n\n if (!name) {\n providers.push({\n provide: NICE_SELECTABLE_LIST,\n useFactory: (injector: Injector, destroyRef: DestroyRef) => {\n const store = new NiceSelectableListStore(injector, {\n idProperty: options?.idProperty ?? \"id\" as keyof T,\n idType: options?.idType ?? \"number\" as \"string\" | \"number\",\n entityLoaderToken,\n uiEntityLoaderToken,\n preload: options?.preload ?? entityLoaderToken !== null\n });\n\n for (const plugin of options?.plugins ?? []) {\n new plugin(injector, destroyRef, store);\n }\n\n return store;\n },\n deps: [Injector, DestroyRef]\n });\n } else {\n providers.push({\n provide: NICE_SELECTABLE_LISTS,\n useFactory: (injector: Injector, destroyRef: DestroyRef) => {\n const store = new NiceSelectableListStore(injector, {\n idProperty: options?.idProperty ?? \"id\" as keyof T,\n idType: options?.idType ?? \"number\" as \"string\" | \"number\",\n entityLoaderToken,\n uiEntityLoaderToken,\n preload: options?.preload ?? entityLoaderToken !== null\n });\n\n for (const plugin of options?.plugins ?? []) {\n new plugin(injector, destroyRef, store);\n }\n\n return {\n name,\n store\n };\n },\n deps: [Injector, DestroyRef],\n multi: true\n });\n }\n\n return providers;\n}\n\nexport type ResolveNiceSelectableListOptions = { injector: Injector };\n\nexport function resolveNiceSelectableList<T>(\n name: string,\n options?: ResolveNiceSelectableListOptions\n): NiceSelectableListStore<T>;\nexport function resolveNiceSelectableList<T>(options?: ResolveNiceSelectableListOptions): NiceSelectableListStore<T>;\nexport function resolveNiceSelectableList<T>(...args: unknown[]): NiceSelectableListStore<T> {\n const name: string | null = typeof args[0] === \"string\" ? args[0] : null;\n const options = (typeof args[0] === \"string\" ? args[1] : args[0]) as ResolveNiceSelectableListOptions | undefined;\n\n if (!name) {\n return (options?.injector\n ? options.injector.get(NICE_SELECTABLE_LIST)\n : inject(NICE_SELECTABLE_LIST)) as NiceSelectableListStore<T>;\n }\n\n const selectableLists = options?.injector\n ? options.injector.get(NICE_SELECTABLE_LISTS)\n : inject(NICE_SELECTABLE_LISTS);\n\n const provider = selectableLists.find((_provider) => _provider.name === name);\n if (!provider) {\n throw new Error(`No selectable list provider found for name: ${name}`);\n }\n\n return provider.store as NiceSelectableListStore<T>;\n}\n","import {\n computed,\n contentChildren,\n Directive,\n effect,\n forwardRef,\n inject,\n InjectionToken,\n Injector,\n input,\n signal,\n Signal, untracked\n} from \"@angular/core\";\nimport { NiceSelectableListEntityCheckboxDirective } from \"./entity-checkbox.directive\";\nimport { resolveNiceSelectableList } from \"./provider\";\nimport { NiceSelectableListStore } from \"./store\";\n\nexport const NICE_SELECTABLE_LIST_DIRECTIVE\n = new InjectionToken<NiceSelectableList<unknown>>(\"_selectable_list_directive\");\n\nexport type NiceSelectableList<T> = {\n name: Signal<string | null>;\n initialized: Signal<boolean>;\n allSelected: Signal<boolean>;\n checkboxes: Signal<readonly NiceSelectableListEntityCheckboxDirective<T>[]>;\n};\n\n@Directive({\n selector: \"[niceSelectableList]\",\n providers: [\n { provide: NICE_SELECTABLE_LIST_DIRECTIVE, useExisting: forwardRef(() => SelectableListDirective) }\n ]\n})\nexport class SelectableListDirective<T> implements NiceSelectableList<T> {\n public readonly name = input<string | null>(null, { alias: \"niceSelectableList\" });\n\n public readonly checkboxes = contentChildren<NiceSelectableListEntityCheckboxDirective<T>>(\n NiceSelectableListEntityCheckboxDirective,\n { descendants: true }\n );\n\n private readonly _initialized = signal(false);\n public readonly initialized = this._initialized.asReadonly();\n\n public readonly allSelected = computed(() => this.selectableLists.selectAllState().active);\n\n protected readonly injector = inject(Injector);\n\n protected selectableLists!: NiceSelectableListStore<T>;\n\n constructor() {\n effect(() => {\n const name = this.name();\n this.selectableLists = name\n ? resolveNiceSelectableList(name, { injector: this.injector })\n : resolveNiceSelectableList({ injector: this.injector });\n });\n }\n}\n","import { inject } from \"@angular/core\";\nimport { NICE_SELECTABLE_LIST, NICE_SELECTABLE_LISTS } from \"./provider\";\nimport { NICE_SELECTABLE_LIST_DIRECTIVE, NiceSelectableList } from \"./selectable-list\";\nimport { NiceSelectableListStore } from \"./store\";\n\nexport function injectNiceSelectableListDirective<T>(): NiceSelectableList<T> {\n return inject(NICE_SELECTABLE_LIST_DIRECTIVE, { optional: true }) as NiceSelectableList<T>;\n}\n\nexport function injectNiceSelectableList<T>(name?: string): NiceSelectableListStore<T> {\n const storeName = name ?? injectNiceSelectableListDirective()?.name();\n if (!storeName) {\n return inject(NICE_SELECTABLE_LIST) as NiceSelectableListStore<T>;\n }\n\n const selectableLists = inject(NICE_SELECTABLE_LISTS);\n const provider = selectableLists.find((_provider) => _provider.name === storeName);\n if (!provider) {\n throw new Error(`No selectable list provider found for name: ${storeName}`);\n }\n\n return provider.store as NiceSelectableListStore<T>;\n}\n","import {\n computed,\n DestroyRef,\n Directive,\n effect,\n inject,\n input,\n OnDestroy,\n OnInit\n} from \"@angular/core\";\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\nimport { MatCheckbox } from \"@angular/material/checkbox\";\nimport { injectNiceSelectableList } from \"./injector\";\n\n@Directive({\n selector: \"mat-checkbox[niceSelectableListEntityCheckbox]\"\n})\nexport class NiceSelectableListEntityCheckboxDirective<T> implements OnInit, OnDestroy {\n protected readonly matCheckbox = inject(MatCheckbox);\n protected readonly destroyRef = inject(DestroyRef);\n protected readonly niceSelectableList = injectNiceSelectableList<T>();\n\n public readonly selectableEntity = input.required<T>();\n public readonly isSelected = computed(() => this.niceSelectableList.isEntitySelected(this.selectableEntity())());\n\n constructor() {\n effect(() => {\n this.matCheckbox.disabled = this.niceSelectableList.selectAllState().active;\n });\n\n effect(() => {\n this.matCheckbox.checked = this.niceSelectableList.isEntitySelected(this.selectableEntity())();\n });\n }\n\n public ngOnInit(): void {\n this.niceSelectableList.registerCheckbox(this);\n\n this.matCheckbox.change.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(({ checked }) => {\n if (checked) {\n this.niceSelectableList.selectEntity(this.selectableEntity());\n } else {\n this.niceSelectableList.deselectEntity(this.selectableEntity());\n }\n });\n }\n\n public ngOnDestroy(): void {\n this.niceSelectableList.unregisterCheckbox(this);\n }\n\n public selectEntity(): void {\n this.matCheckbox.checked = true;\n this.matCheckbox.change.emit({ checked: true, source: this.matCheckbox });\n }\n\n public deselectEntity(): void {\n this.matCheckbox.checked = false;\n this.matCheckbox.change.emit({ checked: false, source: this.matCheckbox });\n }\n}\n","import { afterRenderEffect, DestroyRef, Directive, effect, inject, OnInit } from \"@angular/core\";\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\nimport { MatCheckbox } from \"@angular/material/checkbox\";\nimport { injectNiceSelectableList, injectNiceSelectableListDirective } from \"./injector\";\n\n@Directive({\n selector: \"mat-checkbox[niceSelectableListHeaderCheckbox]\"\n})\nexport class NiceSelectableListHeaderCheckboxDirective<T> implements OnInit {\n private readonly niceSelectableListDirective = injectNiceSelectableListDirective<T>();\n private readonly niceSelectableList = injectNiceSelectableList<T>();\n private readonly matCheckbox = inject(MatCheckbox);\n private readonly destroyRef = inject(DestroyRef);\n\n constructor() {\n effect(() => {\n this.matCheckbox.disabled = this.niceSelectableListDirective.allSelected();\n });\n\n afterRenderEffect({\n read: () => {\n const allSelected = this.niceSelectableListDirective.allSelected();\n if (allSelected) {\n this.matCheckbox.checked = true;\n return;\n }\n\n const checkboxes = this.niceSelectableListDirective.checkboxes();\n const empty = checkboxes.length === 0;\n\n this.matCheckbox.checked = !empty && checkboxes.every((checkbox) => checkbox.isSelected());\n this.matCheckbox.indeterminate = !this.matCheckbox.checked\n && checkboxes.some((checkbox) => checkbox.isSelected());\n }\n });\n }\n\n public ngOnInit(): void {\n this.matCheckbox.change.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(({ checked }) => {\n const entities = this.niceSelectableListDirective\n .checkboxes()\n .map((checkbox) => checkbox.selectableEntity());\n\n if (checked) {\n this.niceSelectableList.selectEntities(entities);\n } else {\n this.niceSelectableList.deselectEntities(entities);\n }\n });\n }\n}\n","import { DestroyRef, Injector } from \"@angular/core\";\nimport { NiceSelectableListStore } from \"../store\";\n\nexport abstract class NiceSelectableListPluginDefinition {\n constructor(\n protected readonly _injector: Injector,\n protected readonly _destroyRef: DestroyRef,\n protected readonly _store: NiceSelectableListStore<unknown>\n ) {\n this._store.registerPlugin(this);\n _destroyRef.onDestroy(() => this.cleanup());\n }\n\n public abstract init(): void;\n public abstract cleanup(): void;\n}\n","import { computed, effect, EffectRef, signal } from \"@angular/core\";\nimport { ActivatedRoute, NavigationCancel, NavigationEnd, NavigationError, NavigationSkipped, NavigationStart, Router } from \"@angular/router\";\nimport { finalize, from, Observable, of, ReplaySubject, Subscription } from \"rxjs\";\nimport { delay, distinctUntilChanged, filter, map, startWith, switchMap, take, withLatestFrom } from \"rxjs/operators\";\nimport { NiceSelectableListPluginDefinition } from \"../plugin-definition\";\nimport { NiceSelectableListQueryParams } from \"./types/query-params.type\";\n\nexport class NiceSelectableQueryParamsPlugin extends NiceSelectableListPluginDefinition {\n private router!: Router;\n private route!: ActivatedRoute;\n\n private _storeChangesEffectRef!: EffectRef;\n private _writeQueryParamsSub!: Subscription;\n\n private _isNavigating$!: Observable<boolean>;\n private _lastQueryParams: NiceSelectableListQueryParams | null = null;\n\n private readonly _initialized = signal(false);\n private readonly _nextQueryParams = new ReplaySubject<NiceSelectableListQueryParams>(1);\n\n private readonly _queryParamState = computed(() => ({\n entities: this._store.entitiesIds(),\n activeEntity: this._store.activeEntityId(),\n selectAllState: this._store.selectAllState()\n }), {\n equal: (a, b) => {\n const selectAllEqual = a.selectAllState.active === b.selectAllState.active &&\n a.selectAllState.total === b.selectAllState.total &&\n JSON.stringify(a.selectAllState.parameters) === JSON.stringify(b.selectAllState.parameters);\n const entitiesEqual = a.entities.length === b.entities.length &&\n a.entities.every((entity, index) => entity === b.entities[index]);\n const activeEntityEqual = a.activeEntity === b.activeEntity;\n\n return selectAllEqual && entitiesEqual && activeEntityEqual;\n }\n });\n\n public override init(): void {\n this.router = this._injector.get(Router);\n this.route = this._injector.get(ActivatedRoute);\n\n this._isNavigating$ = this.router.events.pipe(\n filter((event) =>\n event instanceof NavigationStart ||\n event instanceof NavigationEnd ||\n event instanceof NavigationSkipped ||\n event instanceof NavigationCancel ||\n event instanceof NavigationError\n ),\n map((event) => event instanceof NavigationStart),\n startWith(!this.router.navigated),\n distinctUntilChanged()\n );\n\n this.listenOnQueryParams();\n this.listenOnStoreChanges();\n this.writeQueryParams();\n }\n\n public override cleanup(): void {\n this._storeChangesEffectRef.destroy();\n this._writeQueryParamsSub.unsubscribe();\n }\n\n private listenOnQueryParams(): void {\n if (this.router.navigated) {\n this.parseQueryParams(this.route.snapshot.queryParams);\n this._initialized.set(true);\n return;\n }\n\n this.router.events\n .pipe(\n filter((event) => event instanceof NavigationEnd),\n take(1)\n )\n .subscribe(() => {\n this.parseQueryParams(this.route.snapshot.queryParams);\n this._initialized.set(true);\n });\n }\n\n private listenOnStoreChanges(): void {\n this._storeChangesEffectRef = effect(() => {\n if (!this._initialized()) {\n return;\n }\n\n const { entities, activeEntity, selectAllState } = this._queryParamState();\n const params: NiceSelectableListQueryParams = {\n ...(selectAllState.active && {\n allSelected: true,\n ...(selectAllState.parameters && ({\n allSelectedParameters: JSON.stringify(selectAllState.parameters)\n }))\n }),\n selection: entities,\n selected: activeEntity\n };\n this._nextQueryParams.next(params);\n }, {\n injector: this._injector,\n manualCleanup: true\n });\n }\n\n private parseQueryParams(params: {\n allSelected?: boolean;\n allSelectedParameters?: string;\n selection?: string | string[];\n selected?: string;\n }): void {\n if (params.selection) {\n const selection = Array.isArray(params.selection)\n ? params.selection\n : [params.selection];\n\n this._store.setEntitiesFromSelections(selection);\n }\n\n if (params.selected) {\n this._store.setActiveFromSelected(params.selected);\n }\n\n if (params.allSelected) {\n this._store.setSelectAllState({\n active: true,\n total: this._store.total(),\n parameters: params.allSelectedParameters\n ? JSON.parse(params.allSelectedParameters)\n : null\n });\n }\n }\n\n private writeQueryParams(): void {\n this._writeQueryParamsSub = this._nextQueryParams.pipe(\n switchMap((params) => {\n if (params === this._lastQueryParams) {\n return of(false);\n }\n\n return this._isNavigating$.pipe(\n filter((isNavigating) => !isNavigating),\n take(1),\n delay(0),\n withLatestFrom(this._isNavigating$),\n switchMap(([_, isNavigating]) => {\n if (isNavigating || JSON.stringify(params) === JSON.stringify(this._lastQueryParams)) {\n return of(false);\n }\n\n return from(\n this.router.navigate([], {\n queryParams: params,\n queryParamsHandling: \"merge\"\n })\n ).pipe(\n finalize(() => this._lastQueryParams = params)\n );\n })\n );\n })\n ).subscribe();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["map"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@recursyve/nice-selectable-list",
3
- "version": "21.0.0",
3
+ "version": "21.0.1",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^21.0.0",
6
6
  "@angular/cdk": "^21.0.0",
@@ -71,6 +71,7 @@ declare class NiceSelectableListStore<T> {
71
71
  private readonly _plugins;
72
72
  private _entityLoader;
73
73
  private _uiEntityLoader;
74
+ private readonly _initialized;
74
75
  private readonly _cache;
75
76
  private readonly _entitiesMap;
76
77
  private readonly _activeEntity;
@@ -141,8 +142,10 @@ declare class NiceSelectableQueryParamsPlugin extends NiceSelectableListPluginDe
141
142
  private _storeChangesEffectRef;
142
143
  private _writeQueryParamsSub;
143
144
  private _isNavigating$;
145
+ private _lastQueryParams;
144
146
  private readonly _initialized;
145
147
  private readonly _nextQueryParams;
148
+ private readonly _queryParamState;
146
149
  init(): void;
147
150
  cleanup(): void;
148
151
  private listenOnQueryParams;