@tethys/cdk 20.0.1-0 → 20.0.2

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.
@@ -21,8 +21,8 @@ interface AsyncBehavior<R> {
21
21
  loadingDone: Signal<boolean>;
22
22
  loading: Signal<boolean>;
23
23
  state: Signal<'pending' | 'loading' | 'success' | 'error'>;
24
- error?: Signal<Error>;
25
- value?: Signal<R>;
24
+ error?: Signal<Error | null>;
25
+ value?: Signal<R | null>;
26
26
  execute(success?: SuccessFn<R>, error?: ErrorFn): void;
27
27
  execute(context: BehaviorContext<R>): void;
28
28
  execute(successOrContext: SuccessFn<R> | BehaviorContext<R>, error?: ErrorFn): void;
@@ -31,9 +31,9 @@ declare function asyncBehavior<A extends (...args: any) => Observable<any> = (..
31
31
 
32
32
  interface ActionBehavior<R> {
33
33
  saving: Signal<boolean>;
34
- execute(success?: SuccessFn<R>, error?: ErrorFn): Observable<R>;
35
- execute(context: BehaviorContext<R>): Observable<R>;
36
- execute(successOrContext: SuccessFn<R> | BehaviorContext<R>, error?: ErrorFn): Observable<R>;
34
+ execute(success?: SuccessFn<R>, error?: ErrorFn): Observable<R> | undefined;
35
+ execute(context: BehaviorContext<R>): Observable<R> | undefined;
36
+ execute(successOrContext: SuccessFn<R> | BehaviorContext<R>, error?: ErrorFn): Observable<R> | undefined;
37
37
  }
38
38
  declare function actionBehavior<A extends (...args: any) => Observable<any> = (...args: any) => Observable<any>>(action: A, context?: BehaviorContext<ExtractObservableValue<ReturnType<A>>>): Behavior<Parameters<A>, ActionBehavior<ExtractObservableValue<ReturnType<A>>>> & ActionBehavior<ExtractObservableValue<ReturnType<A>>>;
39
39
 
package/dom/index.d.ts CHANGED
@@ -3,7 +3,7 @@ import { RendererStyleFlags2, Signal, TemplateRef } from '@angular/core';
3
3
 
4
4
  declare abstract class AbstractElementRenderer {
5
5
  private renderer;
6
- protected abstract element: Element;
6
+ protected abstract element?: Element;
7
7
  private classNames;
8
8
  private get safeElement();
9
9
  updateClass(classNames: string[]): this;
@@ -14,9 +14,9 @@ declare abstract class AbstractElementRenderer {
14
14
  }
15
15
 
16
16
  declare class ElementRenderer extends AbstractElementRenderer {
17
- protected element: Element;
17
+ protected element?: Element;
18
18
  setElement(element: Element): void;
19
- constructor(element: Element);
19
+ constructor(element?: Element);
20
20
  }
21
21
  declare function useElementRenderer(element?: Element): ElementRenderer;
22
22
 
package/event/index.d.ts CHANGED
@@ -8,7 +8,7 @@ declare abstract class ThyEventDispatcher<T = Event> implements OnDestroy {
8
8
  private _subscriptionCount;
9
9
  private _addGlobalListener;
10
10
  private _removeGlobalListener;
11
- get globalSubscription(): Subscription;
11
+ get globalSubscription(): Subscription | null;
12
12
  protected document: Document;
13
13
  protected ngZone: NgZone;
14
14
  protected abstract eventName: string;
@@ -21,7 +21,7 @@ declare abstract class ThyEventDispatcher<T = Event> implements OnDestroy {
21
21
 
22
22
  declare class ThyClickDispatcher extends ThyEventDispatcher {
23
23
  eventName: string;
24
- clicked(auditTimeInMs?: number): Observable<Event>;
24
+ clicked<TEvent = Event>(auditTimeInMs?: number): Observable<TEvent>;
25
25
  static ɵfac: i0.ɵɵFactoryDeclaration<ThyClickDispatcher, never>;
26
26
  static ɵprov: i0.ɵɵInjectableDeclaration<ThyClickDispatcher>;
27
27
  }
@@ -83,7 +83,7 @@ class AsyncBehaviorImpl {
83
83
  this.state.set('loading');
84
84
  const callbacks = pickBehaviorCallbacks(this.context, successOrContext, error);
85
85
  try {
86
- return this.action
86
+ this.action
87
87
  .apply(undefined, this.executeParams)
88
88
  .pipe(this.takeUntilDestroyed, finalize(() => {
89
89
  this.setLoadingState(false);
@@ -92,13 +92,12 @@ class AsyncBehaviorImpl {
92
92
  this.state.set('success');
93
93
  this.setLoadingState(false);
94
94
  }))
95
- .subscribe({
96
- next: callbacks.success,
97
- error: error => {
98
- this.state.set('error');
99
- this.error.set(error);
100
- handleBehaviorError(error, callbacks.error);
101
- }
95
+ .subscribe(value => {
96
+ callbacks.success?.(value);
97
+ }, error => {
98
+ this.state.set('error');
99
+ this.error.set(error);
100
+ handleBehaviorError(error, callbacks.error);
102
101
  });
103
102
  }
104
103
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"tethys-cdk-behaviors.mjs","sources":["../../../cdk/behaviors/run-in-zone.ts","../../../cdk/behaviors/error-handler.ts","../../../cdk/behaviors/behavior.ts","../../../cdk/behaviors/async-behavior.ts","../../../cdk/behaviors/action-behavior.ts","../../../cdk/behaviors/tethys-cdk-behaviors.ts"],"sourcesContent":["import { NgZone } from '@angular/core';\nimport { Observable, OperatorFunction } from 'rxjs';\n\nexport function runInZone<T>(zone: NgZone): OperatorFunction<T, T> {\n return source => {\n return new Observable(observer => {\n const onNext = (value: T) => zone.run(() => observer.next(value));\n const onError = (e: Error) => zone.run(() => observer.error(e));\n const onComplete = () => zone.run(() => observer.complete());\n return source.subscribe({\n next: onNext,\n error: onError,\n complete: onComplete\n });\n });\n };\n}\n","export type DefaultErrorHandler = (error: Error) => void;\n\nlet _defaultErrorHandler: DefaultErrorHandler = (error: Error) => {};\n\nexport function setDefaultErrorHandler(defaultErrorHandler: DefaultErrorHandler) {\n _defaultErrorHandler = defaultErrorHandler;\n}\n\nexport function getDefaultErrorHandler() {\n return _defaultErrorHandler;\n}\n","import { isFunction } from '@tethys/cdk/is';\nimport { getDefaultErrorHandler } from './error-handler';\nimport { ErrorFn, SuccessFn } from './types';\n\nconst BEHAVIOR = Symbol('BEHAVIOR');\n\nexport type Behavior<P extends Array<any>, R> = (...args: P) => R & {\n [BEHAVIOR]: true;\n};\n\nexport interface BehaviorContext<R> {\n success?: SuccessFn<R>;\n error?: ErrorFn;\n}\n\nexport function createBehaviorFromFunction<P extends any[], R>(fn: () => R): Behavior<P, R>;\nexport function createBehaviorFromFunction<P extends any[], R, U extends Record<string, unknown>>(\n fn: () => R,\n extraApi: U\n): Behavior<P, R> & U;\nexport function createBehaviorFromFunction<P extends any[], R, U extends Record<string, unknown> = {}>(\n fn: () => R,\n extraApi: U = {} as U\n): Behavior<P, R> & U {\n (fn as any)[BEHAVIOR] = true;\n Object.keys(extraApi).forEach(key => {\n const value = extraApi[key];\n Object.assign(fn, { [key]: value });\n });\n return fn as Behavior<P, R> & U;\n}\n\nexport function pickBehaviorCallbacks<R>(\n beforeContext: BehaviorContext<R>,\n successOrContext: SuccessFn<R> | BehaviorContext<R>,\n error?: ErrorFn\n) {\n let successFn: SuccessFn<R>;\n let errorFn: ErrorFn;\n if (successOrContext) {\n if (isFunction(successOrContext)) {\n successFn = successOrContext;\n errorFn = error;\n } else {\n successFn = successOrContext.success;\n errorFn = successOrContext.error;\n }\n } else {\n errorFn = error;\n }\n return {\n success: successFn || beforeContext?.success,\n error: errorFn || beforeContext?.error\n };\n}\n\nexport function handleBehaviorError(error: Error, errorFn: ErrorFn) {\n if (errorFn) {\n errorFn(error);\n } else {\n const defaultErrorHandler = getDefaultErrorHandler();\n defaultErrorHandler && defaultErrorHandler(error);\n }\n}\n","import { Observable } from 'rxjs';\nimport { finalize, tap } from 'rxjs/operators';\nimport { Behavior, BehaviorContext, createBehaviorFromFunction, handleBehaviorError, pickBehaviorCallbacks } from './behavior';\n\nimport { ErrorFn, ExtractObservableValue, SuccessFn } from './types';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Signal, WritableSignal, computed, signal } from '@angular/core';\n\nexport interface AsyncBehavior<R> {\n loadingDone: Signal<boolean>;\n loading: Signal<boolean>;\n state: Signal<'pending' | 'loading' | 'success' | 'error'>;\n error?: Signal<Error>;\n value?: Signal<R>;\n execute(success?: SuccessFn<R>, error?: ErrorFn): void;\n execute(context: BehaviorContext<R>): void;\n execute(successOrContext: SuccessFn<R> | BehaviorContext<R>, error?: ErrorFn): void;\n}\n\nclass AsyncBehaviorImpl<T, A extends (...args: any) => Observable<T>> implements AsyncBehavior<T> {\n loading: WritableSignal<boolean> = signal(false);\n\n loadingDone: Signal<boolean> = computed(() => !this.loading());\n\n value: WritableSignal<T> = signal(null);\n\n state: WritableSignal<'pending' | 'loading' | 'success' | 'error'> = signal('pending');\n\n error?: WritableSignal<Error> = signal(null);\n\n executeParams: Parameters<A>;\n\n takeUntilDestroyed = takeUntilDestroyed();\n\n constructor(\n private action: A,\n private context: BehaviorContext<T>\n ) {}\n\n execute(success?: SuccessFn<T>, error?: ErrorFn): void;\n execute(context: BehaviorContext<T>): void;\n execute(successOrContext: SuccessFn<T> | BehaviorContext<T>, error?: ErrorFn): void {\n this.setLoadingState(true);\n this.state.set('loading');\n const callbacks = pickBehaviorCallbacks(this.context, successOrContext, error);\n try {\n return this.action\n .apply(undefined, this.executeParams)\n .pipe(\n this.takeUntilDestroyed,\n finalize(() => {\n this.setLoadingState(false);\n }),\n tap(value => {\n this.value.set(value as T);\n this.state.set('success');\n this.setLoadingState(false);\n })\n )\n .subscribe({\n next: callbacks.success,\n error: error => {\n this.state.set('error');\n this.error.set(error);\n handleBehaviorError(error, callbacks.error);\n }\n });\n } catch (error) {\n this.state.set('error');\n this.error.set(error);\n this.setLoadingState(false);\n handleBehaviorError(error, callbacks.error);\n }\n }\n\n setLoadingState(loading: boolean) {\n this.loading.set(loading);\n }\n}\n\nexport function asyncBehavior<A extends (...args: any) => Observable<any> = (...args: any) => Observable<any>>(\n action: A,\n context: BehaviorContext<ExtractObservableValue<ReturnType<A>>> = {}\n): Behavior<Parameters<A>, AsyncBehavior<ExtractObservableValue<ReturnType<A>>>> & AsyncBehavior<ExtractObservableValue<ReturnType<A>>> {\n const behavior = new AsyncBehaviorImpl(action, context);\n\n const fn = function (...params: Parameters<A>) {\n fn['executeParams'] = params;\n return fn;\n };\n return createBehaviorFromFunction(fn, {\n context: context,\n action: action,\n takeUntilDestroyed: behavior.takeUntilDestroyed,\n execute: behavior.execute.bind(fn),\n setLoadingState: behavior.setLoadingState.bind(fn),\n loadingDone: behavior.loadingDone,\n loading: behavior.loading,\n state: behavior.state,\n error: behavior.error,\n value: behavior.value\n }) as unknown as Behavior<Parameters<A>, AsyncBehavior<ExtractObservableValue<ReturnType<A>>>> &\n AsyncBehavior<ExtractObservableValue<ReturnType<A>>>;\n}\n","import { Observable, throwError } from 'rxjs';\nimport { finalize, shareReplay, tap } from 'rxjs/operators';\nimport { Signal, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Behavior, BehaviorContext, createBehaviorFromFunction, handleBehaviorError, pickBehaviorCallbacks } from './behavior';\nimport { ErrorFn, ExtractObservableValue, SuccessFn } from './types';\n\nexport interface ActionBehavior<R> {\n saving: Signal<boolean>;\n\n execute(success?: SuccessFn<R>, error?: ErrorFn): Observable<R>;\n execute(context: BehaviorContext<R>): Observable<R>;\n execute(successOrContext: SuccessFn<R> | BehaviorContext<R>, error?: ErrorFn): Observable<R>;\n}\n\nclass ActionBehaviorImpl<R, A extends (...args: any) => Observable<R>> implements ActionBehavior<R> {\n saving = signal(false);\n\n executeParams: Parameters<A>;\n\n takeUntilDestroyed = takeUntilDestroyed();\n\n constructor(\n private action: A,\n private context: BehaviorContext<R>\n ) {}\n\n execute(success?: SuccessFn<R>, error?: ErrorFn): Observable<R>;\n execute(context: BehaviorContext<R>): Observable<R>;\n execute(successOrContext: SuccessFn<R> | BehaviorContext<R>, error?: ErrorFn): Observable<R> {\n if (this.saving()) {\n return;\n }\n this.saving.set(true);\n const callbacks = pickBehaviorCallbacks(this.context, successOrContext, error);\n try {\n const result = this.action.apply(undefined, this.executeParams).pipe(\n this.takeUntilDestroyed,\n finalize(() => {\n this.saving.set(false);\n this.executeParams = undefined;\n }),\n tap(value => {\n this.saving.set(false);\n this.executeParams = undefined;\n }),\n shareReplay(1)\n );\n result.subscribe({\n next: callbacks?.success,\n error: (error: Error) => {\n this.saving.set(false);\n handleBehaviorError(error, callbacks.error);\n }\n });\n return result;\n } catch (error) {\n this.saving.set(false);\n handleBehaviorError(error, callbacks.error);\n return throwError(error);\n }\n }\n}\n\nexport function actionBehavior<A extends (...args: any) => Observable<any> = (...args: any) => Observable<any>>(\n action: A,\n context: BehaviorContext<ExtractObservableValue<ReturnType<A>>> = {}\n): Behavior<Parameters<A>, ActionBehavior<ExtractObservableValue<ReturnType<A>>>> & ActionBehavior<ExtractObservableValue<ReturnType<A>>> {\n const behavior = new ActionBehaviorImpl(action, context);\n\n const fn = function (...params: Parameters<A>) {\n fn['executeParams'] = params;\n return fn;\n };\n return createBehaviorFromFunction(fn, {\n context: context,\n action: action,\n takeUntilDestroyed: behavior.takeUntilDestroyed,\n execute: behavior.execute.bind(fn),\n saving: behavior.saving\n }) as unknown as Behavior<Parameters<A>, ActionBehavior<ExtractObservableValue<ReturnType<A>>>> &\n ActionBehavior<ExtractObservableValue<ReturnType<A>>>;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tethys-cdk-behaviors.mjs","sources":["../../../cdk/behaviors/run-in-zone.ts","../../../cdk/behaviors/error-handler.ts","../../../cdk/behaviors/behavior.ts","../../../cdk/behaviors/async-behavior.ts","../../../cdk/behaviors/action-behavior.ts","../../../cdk/behaviors/tethys-cdk-behaviors.ts"],"sourcesContent":["import { NgZone } from '@angular/core';\nimport { Observable, OperatorFunction } from 'rxjs';\n\nexport function runInZone<T>(zone: NgZone): OperatorFunction<T, T> {\n return source => {\n return new Observable(observer => {\n const onNext = (value: T) => zone.run(() => observer.next(value));\n const onError = (e: Error) => zone.run(() => observer.error(e));\n const onComplete = () => zone.run(() => observer.complete());\n return source.subscribe({\n next: onNext,\n error: onError,\n complete: onComplete\n });\n });\n };\n}\n","export type DefaultErrorHandler = (error: Error) => void;\n\nlet _defaultErrorHandler: DefaultErrorHandler = (error: Error) => {};\n\nexport function setDefaultErrorHandler(defaultErrorHandler: DefaultErrorHandler) {\n _defaultErrorHandler = defaultErrorHandler;\n}\n\nexport function getDefaultErrorHandler() {\n return _defaultErrorHandler;\n}\n","import { isFunction } from '@tethys/cdk/is';\nimport { getDefaultErrorHandler } from './error-handler';\nimport { ErrorFn, SuccessFn } from './types';\n\nconst BEHAVIOR = Symbol('BEHAVIOR');\n\nexport type Behavior<P extends Array<any>, R> = (...args: P) => R & {\n [BEHAVIOR]: true;\n};\n\nexport interface BehaviorContext<R> {\n success?: SuccessFn<R>;\n error?: ErrorFn;\n}\n\nexport function createBehaviorFromFunction<P extends any[], R>(fn: () => R): Behavior<P, R>;\nexport function createBehaviorFromFunction<P extends any[], R, U extends Record<string, unknown>>(\n fn: () => R,\n extraApi: U\n): Behavior<P, R> & U;\nexport function createBehaviorFromFunction<P extends any[], R, U extends Record<string, unknown> = {}>(\n fn: () => R,\n extraApi: U = {} as U\n): Behavior<P, R> & U {\n (fn as any)[BEHAVIOR] = true;\n Object.keys(extraApi).forEach(key => {\n const value = extraApi[key];\n Object.assign(fn, { [key]: value });\n });\n return fn as Behavior<P, R> & U;\n}\n\nexport function pickBehaviorCallbacks<R>(\n beforeContext: BehaviorContext<R>,\n successOrContext: SuccessFn<R> | BehaviorContext<R>,\n error?: ErrorFn\n) {\n let successFn: SuccessFn<R> | undefined;\n let errorFn: ErrorFn | undefined;\n if (successOrContext) {\n if (isFunction(successOrContext)) {\n successFn = successOrContext;\n errorFn = error;\n } else {\n successFn = successOrContext.success;\n errorFn = successOrContext.error;\n }\n } else {\n errorFn = error;\n }\n return {\n success: successFn || beforeContext?.success,\n error: errorFn || beforeContext?.error\n };\n}\n\nexport function handleBehaviorError(error: Error, errorFn?: ErrorFn) {\n if (errorFn) {\n errorFn(error);\n } else {\n const defaultErrorHandler = getDefaultErrorHandler();\n defaultErrorHandler && defaultErrorHandler(error);\n }\n}\n","import { Observable } from 'rxjs';\nimport { finalize, tap } from 'rxjs/operators';\nimport { Behavior, BehaviorContext, createBehaviorFromFunction, handleBehaviorError, pickBehaviorCallbacks } from './behavior';\n\nimport { ErrorFn, ExtractObservableValue, SuccessFn } from './types';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Signal, WritableSignal, computed, signal } from '@angular/core';\n\nexport interface AsyncBehavior<R> {\n loadingDone: Signal<boolean>;\n loading: Signal<boolean>;\n state: Signal<'pending' | 'loading' | 'success' | 'error'>;\n error?: Signal<Error | null>;\n value?: Signal<R | null>;\n execute(success?: SuccessFn<R>, error?: ErrorFn): void;\n execute(context: BehaviorContext<R>): void;\n execute(successOrContext: SuccessFn<R> | BehaviorContext<R>, error?: ErrorFn): void;\n}\n\nclass AsyncBehaviorImpl<T, A extends (...args: any) => Observable<T>> implements AsyncBehavior<T> {\n loading: WritableSignal<boolean> = signal(false);\n\n loadingDone: Signal<boolean> = computed(() => !this.loading());\n\n value: WritableSignal<T | null> = signal(null);\n\n state: WritableSignal<'pending' | 'loading' | 'success' | 'error'> = signal('pending');\n\n error: WritableSignal<Error | null> = signal(null);\n\n executeParams!: Parameters<A>;\n\n takeUntilDestroyed = takeUntilDestroyed();\n\n constructor(\n private action: A,\n private context: BehaviorContext<T>\n ) {}\n\n execute(success?: SuccessFn<T>, error?: ErrorFn): void;\n execute(context: BehaviorContext<T>): void;\n execute(successOrContext?: SuccessFn<T> | BehaviorContext<T>, error?: ErrorFn): void {\n this.setLoadingState(true);\n this.state.set('loading');\n const callbacks = pickBehaviorCallbacks(this.context, successOrContext!, error);\n try {\n this.action\n .apply(undefined, this.executeParams)\n .pipe(\n this.takeUntilDestroyed,\n finalize(() => {\n this.setLoadingState(false);\n }),\n tap(value => {\n this.value.set(value as T);\n this.state.set('success');\n this.setLoadingState(false);\n })\n )\n .subscribe(\n value => {\n callbacks.success?.(value as T);\n },\n error => {\n this.state.set('error');\n this.error.set(error);\n handleBehaviorError(error, callbacks.error);\n }\n );\n } catch (error) {\n this.state.set('error');\n this.error.set(error as Error);\n this.setLoadingState(false);\n handleBehaviorError(error as Error, callbacks.error);\n }\n }\n\n setLoadingState(loading: boolean) {\n this.loading.set(loading);\n }\n}\n\nexport function asyncBehavior<A extends (...args: any) => Observable<any> = (...args: any) => Observable<any>>(\n action: A,\n context: BehaviorContext<ExtractObservableValue<ReturnType<A>>> = {}\n): Behavior<Parameters<A>, AsyncBehavior<ExtractObservableValue<ReturnType<A>>>> & AsyncBehavior<ExtractObservableValue<ReturnType<A>>> {\n const behavior = new AsyncBehaviorImpl(action, context);\n\n const fn = function (...params: Parameters<A>) {\n (fn as any)['executeParams'] = params;\n return fn;\n };\n return createBehaviorFromFunction(fn, {\n context: context,\n action: action,\n takeUntilDestroyed: behavior.takeUntilDestroyed,\n execute: behavior.execute.bind(fn),\n setLoadingState: behavior.setLoadingState.bind(fn),\n loadingDone: behavior.loadingDone,\n loading: behavior.loading,\n state: behavior.state,\n error: behavior.error,\n value: behavior.value\n }) as unknown as Behavior<Parameters<A>, AsyncBehavior<ExtractObservableValue<ReturnType<A>>>> &\n AsyncBehavior<ExtractObservableValue<ReturnType<A>>>;\n}\n","import { Observable, throwError } from 'rxjs';\nimport { finalize, shareReplay, tap } from 'rxjs/operators';\nimport { Signal, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Behavior, BehaviorContext, createBehaviorFromFunction, handleBehaviorError, pickBehaviorCallbacks } from './behavior';\nimport { ErrorFn, ExtractObservableValue, SuccessFn } from './types';\n\nexport interface ActionBehavior<R> {\n saving: Signal<boolean>;\n\n execute(success?: SuccessFn<R>, error?: ErrorFn): Observable<R> | undefined;\n execute(context: BehaviorContext<R>): Observable<R> | undefined;\n execute(successOrContext: SuccessFn<R> | BehaviorContext<R>, error?: ErrorFn): Observable<R> | undefined;\n}\n\nclass ActionBehaviorImpl<R, A extends (...args: any) => Observable<R>> implements ActionBehavior<R> {\n saving = signal(false);\n\n executeParams?: Parameters<A>;\n\n takeUntilDestroyed = takeUntilDestroyed();\n\n constructor(\n private action: A,\n private context: BehaviorContext<R>\n ) {}\n\n execute(success?: SuccessFn<R>, error?: ErrorFn): Observable<R> | undefined;\n execute(context: BehaviorContext<R>): Observable<R> | undefined;\n execute(successOrContext?: SuccessFn<R> | BehaviorContext<R>, error?: ErrorFn): Observable<R> | undefined {\n if (this.saving()) {\n return;\n }\n this.saving.set(true);\n const callbacks = pickBehaviorCallbacks(this.context, successOrContext!, error);\n try {\n const result = this.action.apply(undefined, this.executeParams!).pipe(\n this.takeUntilDestroyed,\n finalize(() => {\n this.saving.set(false);\n this.executeParams = undefined;\n }),\n tap(value => {\n this.saving.set(false);\n this.executeParams = undefined;\n }),\n shareReplay(1)\n );\n (result as Observable<R>).subscribe({\n next: callbacks?.success,\n error: (error: Error) => {\n this.saving.set(false);\n handleBehaviorError(error, callbacks.error);\n }\n });\n return result as Observable<R>;\n } catch (error) {\n this.saving.set(false);\n handleBehaviorError(error as Error, callbacks.error);\n return throwError(error);\n }\n }\n}\n\nexport function actionBehavior<A extends (...args: any) => Observable<any> = (...args: any) => Observable<any>>(\n action: A,\n context: BehaviorContext<ExtractObservableValue<ReturnType<A>>> = {}\n): Behavior<Parameters<A>, ActionBehavior<ExtractObservableValue<ReturnType<A>>>> & ActionBehavior<ExtractObservableValue<ReturnType<A>>> {\n const behavior = new ActionBehaviorImpl(action, context);\n\n const fn = function (...params: Parameters<A>) {\n (fn as any)['executeParams'] = params;\n return fn;\n };\n return createBehaviorFromFunction(fn, {\n context: context,\n action: action,\n takeUntilDestroyed: behavior.takeUntilDestroyed,\n execute: behavior.execute.bind(fn),\n saving: behavior.saving\n }) as unknown as Behavior<Parameters<A>, ActionBehavior<ExtractObservableValue<ReturnType<A>>>> &\n ActionBehavior<ExtractObservableValue<ReturnType<A>>>;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -79,10 +79,10 @@ class HostRenderer extends AbstractElementRenderer {
79
79
  get element() {
80
80
  return this.elementRef.nativeElement;
81
81
  }
82
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: HostRenderer, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
83
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: HostRenderer }); }
82
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: HostRenderer, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
83
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: HostRenderer }); }
84
84
  }
85
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: HostRenderer, decorators: [{
85
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: HostRenderer, decorators: [{
86
86
  type: Injectable
87
87
  }] });
88
88
  function useHostRenderer() {
@@ -122,10 +122,10 @@ class ThyStealthView {
122
122
  this.templateRef = inject((TemplateRef));
123
123
  this.stealthViewBehavior = useStealthViewRenderer(this.templateRef);
124
124
  }
125
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: ThyStealthView, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
126
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.14", type: ThyStealthView, isStandalone: true, selector: "ng-template[thyStealthView]", exportAs: ["thyStealthView"], ngImport: i0 }); }
125
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: ThyStealthView, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
126
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.15", type: ThyStealthView, isStandalone: true, selector: "ng-template[thyStealthView]", exportAs: ["thyStealthView"], ngImport: i0 }); }
127
127
  }
128
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: ThyStealthView, decorators: [{
128
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: ThyStealthView, decorators: [{
129
129
  type: Directive,
130
130
  args: [{
131
131
  selector: 'ng-template[thyStealthView]',
@@ -1 +1 @@
1
- {"version":3,"file":"tethys-cdk-dom.mjs","sources":["../../../cdk/dom/abstract-element-renderer.ts","../../../cdk/dom/element-renderer.ts","../../../cdk/dom/host-renderer.ts","../../../cdk/dom/stealth-view-renderer.ts","../../../cdk/dom/stealth-view-directive.ts","../../../cdk/dom/tethys-cdk-dom.ts"],"sourcesContent":["import { Renderer2, inject, RendererStyleFlags2 } from '@angular/core';\n\nexport abstract class AbstractElementRenderer {\n private renderer = inject(Renderer2);\n\n protected abstract element: Element;\n\n private classNames: string[] = [];\n\n private get safeElement() {\n if (!this.element) {\n throw new Error(`Element is null, should call setElement method for ElementRenderer before update dom.`);\n }\n return this.element;\n }\n\n updateClass(classNames: string[]) {\n if (this.classNames) {\n this.classNames.forEach(className => {\n if (classNames.indexOf(className) < 0) {\n this.removeClass(className);\n }\n });\n }\n const newClasses: string[] = [];\n classNames.forEach(className => {\n if (className) {\n newClasses.push(className);\n if (this.classNames.indexOf(className) < 0) {\n this.addClass(className);\n }\n }\n });\n this.classNames = newClasses;\n return this;\n }\n\n updateClassByMap(classMap: Record<string, boolean>) {\n const newClasses = [];\n for (const key in classMap) {\n if (classMap.hasOwnProperty(key) && classMap[key]) {\n newClasses.push(key);\n }\n }\n this.updateClass(newClasses);\n }\n\n addClass(className: string) {\n this.renderer.addClass(this.safeElement, className);\n return this;\n }\n\n removeClass(className: string) {\n this.renderer.removeClass(this.safeElement, className);\n return this;\n }\n\n setStyle(style: string, value: any, flags?: RendererStyleFlags2) {\n this.renderer.setStyle(this.safeElement, style, value, flags);\n return this;\n }\n}\n","import { AbstractElementRenderer } from './abstract-element-renderer';\n\nexport class ElementRenderer extends AbstractElementRenderer {\n protected element: Element;\n\n setElement(element: Element) {\n this.element = element;\n }\n\n constructor(element: Element) {\n super();\n this.element = element;\n }\n}\n\nexport function useElementRenderer(element?: Element): ElementRenderer {\n return new ElementRenderer(element);\n}\n","import { Injectable, inject, ElementRef } from '@angular/core';\nimport { AbstractElementRenderer } from './abstract-element-renderer';\n\n/**\n * @private\n */\n@Injectable()\nexport class HostRenderer extends AbstractElementRenderer {\n private elementRef = inject(ElementRef);\n\n protected get element() {\n return this.elementRef.nativeElement;\n }\n}\n\nexport function useHostRenderer() {\n return new HostRenderer();\n}\n","import { ApplicationRef, DestroyRef, Directive, EmbeddedViewRef, inject, Injector, isSignal, Signal, TemplateRef } from '@angular/core';\n\nexport interface StealthViewRenderer {\n rootNodes: Node[];\n}\n\nexport function useStealthViewRenderer(templateRefInput: Signal<TemplateRef<any>> | TemplateRef<any>): StealthViewRenderer {\n const injector = inject(Injector);\n const applicationRef = inject(ApplicationRef);\n const destroyRef = inject(DestroyRef);\n\n let embeddedViewRef: EmbeddedViewRef<any>;\n\n destroyRef.onDestroy(() => {\n if (embeddedViewRef) {\n embeddedViewRef.destroy();\n applicationRef.detachView(embeddedViewRef);\n }\n });\n\n const result = {\n get rootNodes() {\n if (!embeddedViewRef) {\n const templateRef = isSignal(templateRefInput) ? templateRefInput() : templateRefInput;\n embeddedViewRef = templateRef.createEmbeddedView({}, injector);\n applicationRef.attachView(embeddedViewRef);\n }\n return embeddedViewRef.rootNodes;\n }\n };\n return result;\n}\n","import { Directive, inject, TemplateRef } from '@angular/core';\nimport { useStealthViewRenderer } from './stealth-view-renderer';\n\n@Directive({\n selector: 'ng-template[thyStealthView]',\n exportAs: 'thyStealthView'\n})\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport class ThyStealthView {\n private templateRef = inject(TemplateRef<any>);\n\n private stealthViewBehavior = useStealthViewRenderer(this.templateRef);\n\n get rootNodes() {\n return this.stealthViewBehavior.rootNodes;\n }\n\n constructor() {}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tethys-cdk-dom.mjs","sources":["../../../cdk/dom/abstract-element-renderer.ts","../../../cdk/dom/element-renderer.ts","../../../cdk/dom/host-renderer.ts","../../../cdk/dom/stealth-view-renderer.ts","../../../cdk/dom/stealth-view-directive.ts","../../../cdk/dom/tethys-cdk-dom.ts"],"sourcesContent":["import { Renderer2, inject, RendererStyleFlags2 } from '@angular/core';\n\nexport abstract class AbstractElementRenderer {\n private renderer = inject(Renderer2);\n\n protected abstract element?: Element;\n\n private classNames: string[] = [];\n\n private get safeElement() {\n if (!this.element) {\n throw new Error(`Element is null, should call setElement method for ElementRenderer before update dom.`);\n }\n return this.element;\n }\n\n updateClass(classNames: string[]) {\n if (this.classNames) {\n this.classNames.forEach(className => {\n if (classNames.indexOf(className) < 0) {\n this.removeClass(className);\n }\n });\n }\n const newClasses: string[] = [];\n classNames.forEach(className => {\n if (className) {\n newClasses.push(className);\n if (this.classNames.indexOf(className) < 0) {\n this.addClass(className);\n }\n }\n });\n this.classNames = newClasses;\n return this;\n }\n\n updateClassByMap(classMap: Record<string, boolean>) {\n const newClasses = [];\n for (const key in classMap) {\n if (classMap.hasOwnProperty(key) && classMap[key]) {\n newClasses.push(key);\n }\n }\n this.updateClass(newClasses);\n }\n\n addClass(className: string) {\n this.renderer.addClass(this.safeElement, className);\n return this;\n }\n\n removeClass(className: string) {\n this.renderer.removeClass(this.safeElement, className);\n return this;\n }\n\n setStyle(style: string, value: any, flags?: RendererStyleFlags2) {\n this.renderer.setStyle(this.safeElement, style, value, flags);\n return this;\n }\n}\n","import { AbstractElementRenderer } from './abstract-element-renderer';\n\nexport class ElementRenderer extends AbstractElementRenderer {\n protected element?: Element;\n\n setElement(element: Element) {\n this.element = element;\n }\n\n constructor(element?: Element) {\n super();\n this.element = element;\n }\n}\n\nexport function useElementRenderer(element?: Element): ElementRenderer {\n return new ElementRenderer(element);\n}\n","import { Injectable, inject, ElementRef } from '@angular/core';\nimport { AbstractElementRenderer } from './abstract-element-renderer';\n\n/**\n * @private\n */\n@Injectable()\nexport class HostRenderer extends AbstractElementRenderer {\n private elementRef = inject(ElementRef);\n\n protected get element() {\n return this.elementRef.nativeElement;\n }\n}\n\nexport function useHostRenderer() {\n return new HostRenderer();\n}\n","import { ApplicationRef, DestroyRef, Directive, EmbeddedViewRef, inject, Injector, isSignal, Signal, TemplateRef } from '@angular/core';\n\nexport interface StealthViewRenderer {\n rootNodes: Node[];\n}\n\nexport function useStealthViewRenderer(templateRefInput: Signal<TemplateRef<any>> | TemplateRef<any>): StealthViewRenderer {\n const injector = inject(Injector);\n const applicationRef = inject(ApplicationRef);\n const destroyRef = inject(DestroyRef);\n\n let embeddedViewRef!: EmbeddedViewRef<any>;\n\n destroyRef.onDestroy(() => {\n if (embeddedViewRef) {\n embeddedViewRef.destroy();\n applicationRef.detachView(embeddedViewRef);\n }\n });\n\n const result = {\n get rootNodes() {\n if (!embeddedViewRef) {\n const templateRef = isSignal(templateRefInput) ? templateRefInput() : templateRefInput;\n embeddedViewRef = templateRef.createEmbeddedView({}, injector);\n applicationRef.attachView(embeddedViewRef);\n }\n return embeddedViewRef.rootNodes;\n }\n };\n return result;\n}\n","import { Directive, inject, TemplateRef } from '@angular/core';\nimport { useStealthViewRenderer } from './stealth-view-renderer';\n\n@Directive({\n selector: 'ng-template[thyStealthView]',\n exportAs: 'thyStealthView'\n})\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport class ThyStealthView {\n private templateRef = inject(TemplateRef<any>);\n\n private stealthViewBehavior = useStealthViewRenderer(this.templateRef);\n\n get rootNodes() {\n return this.stealthViewBehavior.rootNodes;\n }\n\n constructor() {}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -50,10 +50,10 @@ class ThyEventDispatcher {
50
50
  this._removeGlobalListener();
51
51
  this._event$.complete();
52
52
  }
53
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: ThyEventDispatcher, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
54
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.14", type: ThyEventDispatcher, isStandalone: true, ngImport: i0 }); }
53
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: ThyEventDispatcher, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
54
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.15", type: ThyEventDispatcher, isStandalone: true, ngImport: i0 }); }
55
55
  }
56
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: ThyEventDispatcher, decorators: [{
56
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: ThyEventDispatcher, decorators: [{
57
57
  type: Directive
58
58
  }], ctorParameters: () => [] });
59
59
 
@@ -66,10 +66,10 @@ class ThyClickDispatcher extends ThyEventDispatcher {
66
66
  clicked(auditTimeInMs = DEFAULT_CLICKED_TIME) {
67
67
  return this.subscribe(auditTimeInMs);
68
68
  }
69
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: ThyClickDispatcher, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
70
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: ThyClickDispatcher, providedIn: 'root' }); }
69
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: ThyClickDispatcher, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
70
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: ThyClickDispatcher, providedIn: 'root' }); }
71
71
  }
72
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: ThyClickDispatcher, decorators: [{
72
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: ThyClickDispatcher, decorators: [{
73
73
  type: Injectable,
74
74
  args: [{
75
75
  providedIn: 'root'
@@ -92,10 +92,10 @@ class ThyKeyboardDispatcher extends ThyEventDispatcher {
92
92
  keydown(auditTimeInMs = DEFAULT_KEYDOWN_TIME) {
93
93
  return this.subscribe(auditTimeInMs);
94
94
  }
95
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: ThyKeyboardDispatcher, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
96
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: ThyKeyboardDispatcher, providedIn: 'root' }); }
95
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: ThyKeyboardDispatcher, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
96
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: ThyKeyboardDispatcher, providedIn: 'root' }); }
97
97
  }
98
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: ThyKeyboardDispatcher, decorators: [{
98
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: ThyKeyboardDispatcher, decorators: [{
99
99
  type: Injectable,
100
100
  args: [{
101
101
  providedIn: 'root'
@@ -1 +1 @@
1
- {"version":3,"file":"tethys-cdk-event.mjs","sources":["../../../cdk/event/event-dispatcher.ts","../../../cdk/event/click-dispatcher.ts","../../../cdk/event/keyboard-dispatcher.ts","../../../cdk/event/tethys-cdk-event.ts"],"sourcesContent":["import { fromEvent, Observable, Subject, Subscription } from 'rxjs';\nimport { auditTime } from 'rxjs/operators';\nimport { Directive, NgZone, OnDestroy, inject, DOCUMENT } from '@angular/core';\n\nconst DEFAULT_EVENT_TIME = 100;\n\n@Directive()\nexport abstract class ThyEventDispatcher<T = Event> implements OnDestroy {\n private _globalSubscription: Subscription = null;\n\n private _event$ = new Subject<T>();\n\n private _subscriptionCount = 0;\n\n private _addGlobalListener() {\n this._globalSubscription = this.ngZone.runOutsideAngular(() => {\n return fromEvent<T>(this.document, this.eventName).subscribe((event: T) => {\n this._event$.next(event);\n });\n });\n }\n\n private _removeGlobalListener() {\n if (this._globalSubscription) {\n this._globalSubscription.unsubscribe();\n this._globalSubscription = null;\n }\n }\n\n get globalSubscription(): Subscription {\n return this._globalSubscription;\n }\n\n protected document: Document = inject(DOCUMENT);\n\n protected ngZone: NgZone = inject(NgZone);\n\n protected abstract eventName: string;\n\n constructor() {}\n\n protected subscribe(auditTimeInMs: number = DEFAULT_EVENT_TIME): Observable<T> {\n return new Observable(observer => {\n if (!this._globalSubscription) {\n this._addGlobalListener();\n }\n // In the case of a 0ms delay, use an observable without auditTime\n // since it does add a perceptible delay in processing overhead.\n const subscription =\n auditTimeInMs > 0 ? this._event$.pipe(auditTime(auditTimeInMs)).subscribe(observer) : this._event$.subscribe(observer);\n\n this._subscriptionCount++;\n return () => {\n subscription.unsubscribe();\n this._subscriptionCount--;\n\n if (!this._subscriptionCount) {\n this._removeGlobalListener();\n }\n };\n });\n }\n\n ngOnDestroy() {\n this._removeGlobalListener();\n this._event$.complete();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { ThyEventDispatcher } from './event-dispatcher';\n\nconst DEFAULT_CLICKED_TIME = 100;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ThyClickDispatcher extends ThyEventDispatcher {\n eventName = 'click';\n\n clicked(auditTimeInMs: number = DEFAULT_CLICKED_TIME): Observable<Event> {\n return this.subscribe(auditTimeInMs);\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { ThyEventDispatcher } from './event-dispatcher';\n\nconst DEFAULT_KEYDOWN_TIME = 100;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ThyKeyboardDispatcher extends ThyEventDispatcher {\n eventName = 'keydown';\n\n keydown(auditTimeInMs: number = DEFAULT_KEYDOWN_TIME): Observable<Event> {\n return this.subscribe(auditTimeInMs);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tethys-cdk-event.mjs","sources":["../../../cdk/event/event-dispatcher.ts","../../../cdk/event/click-dispatcher.ts","../../../cdk/event/keyboard-dispatcher.ts","../../../cdk/event/tethys-cdk-event.ts"],"sourcesContent":["import { fromEvent, Observable, Subject, Subscription } from 'rxjs';\nimport { auditTime } from 'rxjs/operators';\nimport { Directive, NgZone, OnDestroy, inject, DOCUMENT } from '@angular/core';\n\nconst DEFAULT_EVENT_TIME = 100;\n\n@Directive()\nexport abstract class ThyEventDispatcher<T = Event> implements OnDestroy {\n private _globalSubscription: Subscription | null = null;\n\n private _event$ = new Subject<T>();\n\n private _subscriptionCount = 0;\n\n private _addGlobalListener() {\n this._globalSubscription = this.ngZone.runOutsideAngular(() => {\n return fromEvent<T>(this.document, this.eventName).subscribe((event: T) => {\n this._event$.next(event);\n });\n });\n }\n\n private _removeGlobalListener() {\n if (this._globalSubscription) {\n this._globalSubscription.unsubscribe();\n this._globalSubscription = null;\n }\n }\n\n get globalSubscription(): Subscription | null {\n return this._globalSubscription;\n }\n\n protected document: Document = inject(DOCUMENT);\n\n protected ngZone: NgZone = inject(NgZone);\n\n protected abstract eventName: string;\n\n constructor() {}\n\n protected subscribe(auditTimeInMs: number = DEFAULT_EVENT_TIME): Observable<T> {\n return new Observable(observer => {\n if (!this._globalSubscription) {\n this._addGlobalListener();\n }\n // In the case of a 0ms delay, use an observable without auditTime\n // since it does add a perceptible delay in processing overhead.\n const subscription =\n auditTimeInMs > 0 ? this._event$.pipe(auditTime(auditTimeInMs)).subscribe(observer) : this._event$.subscribe(observer);\n\n this._subscriptionCount++;\n return () => {\n subscription.unsubscribe();\n this._subscriptionCount--;\n\n if (!this._subscriptionCount) {\n this._removeGlobalListener();\n }\n };\n });\n }\n\n ngOnDestroy() {\n this._removeGlobalListener();\n this._event$.complete();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { ThyEventDispatcher } from './event-dispatcher';\n\nconst DEFAULT_CLICKED_TIME = 100;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ThyClickDispatcher extends ThyEventDispatcher {\n eventName = 'click';\n\n clicked<TEvent = Event>(auditTimeInMs: number = DEFAULT_CLICKED_TIME): Observable<TEvent> {\n return this.subscribe(auditTimeInMs) as Observable<TEvent>;\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { ThyEventDispatcher } from './event-dispatcher';\n\nconst DEFAULT_KEYDOWN_TIME = 100;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ThyKeyboardDispatcher extends ThyEventDispatcher {\n eventName = 'keydown';\n\n keydown(auditTimeInMs: number = DEFAULT_KEYDOWN_TIME): Observable<Event> {\n return this.subscribe(auditTimeInMs);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -46,7 +46,7 @@ class ThyHotkeyDispatcher extends ThyEventDispatcher {
46
46
  }
47
47
  createKeydownObservable(scope) {
48
48
  if (scope === this.document) {
49
- return this.subscribe(null);
49
+ return this.subscribe();
50
50
  }
51
51
  else {
52
52
  return fromEvent(scope, 'keydown');
@@ -61,8 +61,10 @@ class ThyHotkeyDispatcher extends ThyEventDispatcher {
61
61
  const keydown = this.createKeydownObservable(scopeElement);
62
62
  return new Observable(subscriber => {
63
63
  const subscription = keydown
64
- .pipe(filter((event) => hotkeys.some(key => isHotkey(event, key))))
65
- .subscribe((event) => {
64
+ .pipe(filter(event => {
65
+ return hotkeys.some(key => isHotkey(event, key));
66
+ }))
67
+ .subscribe(event => {
66
68
  // 如果当前焦点的元素是表单元素并且焦点原色不是Hotkey绑定元素则忽略快捷键
67
69
  if (isFormElement(this.document.activeElement) && this.document.activeElement !== scope) {
68
70
  return;
@@ -74,10 +76,10 @@ class ThyHotkeyDispatcher extends ThyEventDispatcher {
74
76
  };
75
77
  }).pipe(runInZone(this.ngZone));
76
78
  }
77
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: ThyHotkeyDispatcher, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
78
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: ThyHotkeyDispatcher, providedIn: 'root' }); }
79
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: ThyHotkeyDispatcher, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
80
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: ThyHotkeyDispatcher, providedIn: 'root' }); }
79
81
  }
80
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: ThyHotkeyDispatcher, decorators: [{
82
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: ThyHotkeyDispatcher, decorators: [{
81
83
  type: Injectable,
82
84
  args: [{ providedIn: 'root' }]
83
85
  }] });
@@ -102,7 +104,6 @@ class ThyHotkeyDirective {
102
104
  * 热键触发后的事件
103
105
  */
104
106
  this.thyHotkeyListener = output();
105
- this.subscription = null;
106
107
  }
107
108
  ngOnInit() {
108
109
  const hotkeyScope = this.thyHotkeyScope();
@@ -124,20 +125,20 @@ class ThyHotkeyDirective {
124
125
  this.subscription.unsubscribe();
125
126
  }
126
127
  }
127
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: ThyHotkeyDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
128
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.14", type: ThyHotkeyDirective, isStandalone: true, selector: "[thyHotkey]", inputs: { thyHotkey: { classPropertyName: "thyHotkey", publicName: "thyHotkey", isSignal: true, isRequired: false, transformFunction: null }, thyHotkeyScope: { classPropertyName: "thyHotkeyScope", publicName: "thyHotkeyScope", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { thyHotkeyListener: "thyHotkeyListener" }, ngImport: i0 }); }
128
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: ThyHotkeyDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
129
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.15", type: ThyHotkeyDirective, isStandalone: true, selector: "[thyHotkey]", inputs: { thyHotkey: { classPropertyName: "thyHotkey", publicName: "thyHotkey", isSignal: true, isRequired: false, transformFunction: null }, thyHotkeyScope: { classPropertyName: "thyHotkeyScope", publicName: "thyHotkeyScope", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { thyHotkeyListener: "thyHotkeyListener" }, ngImport: i0 }); }
129
130
  }
130
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: ThyHotkeyDirective, decorators: [{
131
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: ThyHotkeyDirective, decorators: [{
131
132
  type: Directive,
132
133
  args: [{ selector: '[thyHotkey]' }]
133
134
  }], propDecorators: { thyHotkey: [{ type: i0.Input, args: [{ isSignal: true, alias: "thyHotkey", required: false }] }], thyHotkeyScope: [{ type: i0.Input, args: [{ isSignal: true, alias: "thyHotkeyScope", required: false }] }], thyHotkeyListener: [{ type: i0.Output, args: ["thyHotkeyListener"] }] } });
134
135
 
135
136
  class ThyHotkeyModule {
136
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: ThyHotkeyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
137
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.14", ngImport: i0, type: ThyHotkeyModule, imports: [ThyHotkeyDirective], exports: [ThyHotkeyDirective] }); }
138
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: ThyHotkeyModule }); }
137
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: ThyHotkeyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
138
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.15", ngImport: i0, type: ThyHotkeyModule, imports: [ThyHotkeyDirective], exports: [ThyHotkeyDirective] }); }
139
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: ThyHotkeyModule }); }
139
140
  }
140
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: ThyHotkeyModule, decorators: [{
141
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: ThyHotkeyModule, decorators: [{
141
142
  type: NgModule,
142
143
  args: [{
143
144
  imports: [ThyHotkeyDirective],
@@ -1 +1 @@
1
- {"version":3,"file":"tethys-cdk-hotkey.mjs","sources":["../../../cdk/hotkey/hotkey.ts","../../../cdk/hotkey/hotkey-dispatcher.ts","../../../cdk/hotkey/hotkey.directive.ts","../../../cdk/hotkey/module.ts","../../../cdk/hotkey/tethys-cdk-hotkey.ts"],"sourcesContent":["const modifierKeyNames: string[] = [`Control`, 'Alt', 'Meta', 'Shift'];\n\n// We don't want to show `Shift` when `event.key` is capital\nfunction showShift(event: KeyboardEvent): boolean {\n const { shiftKey, code, key } = event;\n return shiftKey && !(code.startsWith('Key') && key.toUpperCase() === key);\n}\n\nexport function hotkey(event: KeyboardEvent): string {\n const { ctrlKey, altKey, metaKey, key } = event;\n const hotkeyString: string[] = [];\n const modifiers: boolean[] = [ctrlKey, altKey, metaKey, showShift(event)];\n for (const [i, mod] of modifiers.entries()) {\n if (mod) hotkeyString.push(modifierKeyNames[i]);\n }\n\n if (!modifierKeyNames.includes(key)) {\n hotkeyString.push(key);\n }\n\n return hotkeyString.join('+');\n}\n\nexport function isHotkey(event: KeyboardEvent, key: string) {\n return key.toUpperCase() === hotkey(event).toUpperCase();\n}\n","import { coerceElement } from '@angular/cdk/coercion';\nimport { Injectable, NgZone, ElementRef } from '@angular/core';\nimport { ThyEventDispatcher } from '@tethys/cdk/event';\nimport { fromEvent, Observable, OperatorFunction } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { isFormElement, isString, isUndefinedOrNull } from '@tethys/cdk/is';\nimport { isHotkey } from './hotkey';\n\nfunction runInZone<T>(zone: NgZone): OperatorFunction<T, T> {\n return source => {\n return new Observable(observer => {\n const onNext = (value: T) => zone.run(() => observer.next(value));\n const onError = (e: any) => zone.run(() => observer.error(e));\n const onComplete = () => zone.run(() => observer.complete());\n return source.subscribe(onNext, onError, onComplete);\n });\n };\n}\n\n@Injectable({ providedIn: 'root' })\nexport class ThyHotkeyDispatcher extends ThyEventDispatcher {\n eventName = 'keydown';\n\n private createKeydownObservable(scope: Element | Document) {\n if (scope === this.document) {\n return this.subscribe(null);\n } else {\n return fromEvent(scope, 'keydown');\n }\n }\n\n /**\n * 热键事件订阅\n */\n keydown(hotkey: string | string[], scope?: ElementRef<Element> | Element | Document): Observable<KeyboardEvent> {\n const hotkeys = isString(hotkey) ? hotkey.split(',') : hotkey;\n const scopeElement = coerceElement(isUndefinedOrNull(scope) ? this.document : scope);\n const keydown = this.createKeydownObservable(scopeElement);\n return new Observable<KeyboardEvent>(subscriber => {\n const subscription = keydown\n .pipe(filter((event: KeyboardEvent) => hotkeys.some(key => isHotkey(event, key))))\n .subscribe((event: KeyboardEvent) => {\n // 如果当前焦点的元素是表单元素并且焦点原色不是Hotkey绑定元素则忽略快捷键\n if (isFormElement(this.document.activeElement) && this.document.activeElement !== scope) {\n return;\n }\n subscriber.next(event);\n });\n return () => {\n subscription.unsubscribe();\n };\n }).pipe(runInZone(this.ngZone));\n }\n}\n","import { Directive, ElementRef, OnInit, OnDestroy, inject, input, output, DOCUMENT } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { isFormElement, isString } from '@tethys/cdk/is';\nimport { ThyHotkeyDispatcher } from './hotkey-dispatcher';\n\n/**\n * @name thyHotkey\n */\n@Directive({ selector: '[thyHotkey]' })\nexport class ThyHotkeyDirective implements OnInit, OnDestroy {\n private document = inject(DOCUMENT);\n private hotkeyDispatcher = inject(ThyHotkeyDispatcher);\n private elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /**\n * 热键对应 Code,多个热键组合支持通过数组或逗号分割的形式传入\n */\n readonly thyHotkey = input<string | string[]>();\n\n /**\n * 配置热键触发范围,默认绑定在 document 上\n */\n readonly thyHotkeyScope = input<string | Element | ElementRef<Element>>();\n\n /**\n * 热键触发后的事件\n */\n readonly thyHotkeyListener = output<KeyboardEvent>();\n\n private subscription: Subscription = null;\n\n ngOnInit(): void {\n const hotkeyScope = this.thyHotkeyScope();\n const scope = isString(hotkeyScope) ? this.document.querySelector(hotkeyScope) : hotkeyScope;\n this.subscription = this.hotkeyDispatcher.keydown(this.thyHotkey(), scope).subscribe(event => {\n event.preventDefault();\n event.stopPropagation();\n if (isFormElement(this.elementRef)) {\n this.elementRef.nativeElement.focus();\n } else {\n this.elementRef.nativeElement.click();\n }\n this.thyHotkeyListener.emit(event);\n });\n }\n\n ngOnDestroy(): void {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { ThyHotkeyDirective } from './hotkey.directive';\n\n@NgModule({\n imports: [ThyHotkeyDirective],\n exports: [ThyHotkeyDirective]\n})\nexport class ThyHotkeyModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tethys-cdk-hotkey.mjs","sources":["../../../cdk/hotkey/hotkey.ts","../../../cdk/hotkey/hotkey-dispatcher.ts","../../../cdk/hotkey/hotkey.directive.ts","../../../cdk/hotkey/module.ts","../../../cdk/hotkey/tethys-cdk-hotkey.ts"],"sourcesContent":["const modifierKeyNames: string[] = [`Control`, 'Alt', 'Meta', 'Shift'];\n\n// We don't want to show `Shift` when `event.key` is capital\nfunction showShift(event: KeyboardEvent): boolean {\n const { shiftKey, code, key } = event;\n return shiftKey && !(code.startsWith('Key') && key.toUpperCase() === key);\n}\n\nexport function hotkey(event: KeyboardEvent): string {\n const { ctrlKey, altKey, metaKey, key } = event;\n const hotkeyString: string[] = [];\n const modifiers: boolean[] = [ctrlKey, altKey, metaKey, showShift(event)];\n for (const [i, mod] of modifiers.entries()) {\n if (mod) hotkeyString.push(modifierKeyNames[i]);\n }\n\n if (!modifierKeyNames.includes(key)) {\n hotkeyString.push(key);\n }\n\n return hotkeyString.join('+');\n}\n\nexport function isHotkey(event: KeyboardEvent, key: string) {\n return key.toUpperCase() === hotkey(event).toUpperCase();\n}\n","import { coerceElement } from '@angular/cdk/coercion';\nimport { Injectable, NgZone, ElementRef } from '@angular/core';\nimport { ThyEventDispatcher } from '@tethys/cdk/event';\nimport { fromEvent, Observable, OperatorFunction } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { isFormElement, isString, isUndefinedOrNull } from '@tethys/cdk/is';\nimport { isHotkey } from './hotkey';\n\nfunction runInZone<T>(zone: NgZone): OperatorFunction<T, T> {\n return source => {\n return new Observable(observer => {\n const onNext = (value: T) => zone.run(() => observer.next(value));\n const onError = (e: any) => zone.run(() => observer.error(e));\n const onComplete = () => zone.run(() => observer.complete());\n return source.subscribe(onNext, onError, onComplete);\n });\n };\n}\n\n@Injectable({ providedIn: 'root' })\nexport class ThyHotkeyDispatcher extends ThyEventDispatcher {\n eventName = 'keydown';\n\n private createKeydownObservable(scope: Element | Document) {\n if (scope === this.document) {\n return this.subscribe();\n } else {\n return fromEvent(scope, 'keydown');\n }\n }\n\n /**\n * 热键事件订阅\n */\n keydown(hotkey: string | string[], scope?: ElementRef<Element> | Element | Document): Observable<KeyboardEvent> {\n const hotkeys = isString(hotkey) ? hotkey.split(',') : hotkey;\n const scopeElement = coerceElement(isUndefinedOrNull(scope) ? this.document : scope);\n const keydown = this.createKeydownObservable(scopeElement);\n return new Observable<KeyboardEvent>(subscriber => {\n const subscription = keydown\n .pipe(\n filter(event => {\n return hotkeys.some(key => isHotkey(event as KeyboardEvent, key));\n })\n )\n .subscribe(event => {\n // 如果当前焦点的元素是表单元素并且焦点原色不是Hotkey绑定元素则忽略快捷键\n if (isFormElement(this.document.activeElement) && this.document.activeElement !== scope) {\n return;\n }\n subscriber.next(event as KeyboardEvent);\n });\n return () => {\n subscription.unsubscribe();\n };\n }).pipe(runInZone(this.ngZone));\n }\n}\n","import { Directive, ElementRef, OnInit, OnDestroy, inject, input, output, DOCUMENT } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { isFormElement, isString } from '@tethys/cdk/is';\nimport { ThyHotkeyDispatcher } from './hotkey-dispatcher';\n\n/**\n * @name thyHotkey\n */\n@Directive({ selector: '[thyHotkey]' })\nexport class ThyHotkeyDirective implements OnInit, OnDestroy {\n private document = inject(DOCUMENT);\n private hotkeyDispatcher = inject(ThyHotkeyDispatcher);\n private elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /**\n * 热键对应 Code,多个热键组合支持通过数组或逗号分割的形式传入\n */\n readonly thyHotkey = input<string | string[]>();\n\n /**\n * 配置热键触发范围,默认绑定在 document 上\n */\n readonly thyHotkeyScope = input<string | Element | ElementRef<Element>>();\n\n /**\n * 热键触发后的事件\n */\n readonly thyHotkeyListener = output<KeyboardEvent>();\n\n private subscription!: Subscription;\n\n ngOnInit(): void {\n const hotkeyScope = this.thyHotkeyScope();\n const scope = isString(hotkeyScope) ? this.document.querySelector(hotkeyScope) : hotkeyScope;\n this.subscription = this.hotkeyDispatcher.keydown(this.thyHotkey()!, scope!).subscribe(event => {\n event.preventDefault();\n event.stopPropagation();\n if (isFormElement(this.elementRef)) {\n this.elementRef.nativeElement.focus();\n } else {\n this.elementRef.nativeElement.click();\n }\n this.thyHotkeyListener.emit(event);\n });\n }\n\n ngOnDestroy(): void {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { ThyHotkeyDirective } from './hotkey.directive';\n\n@NgModule({\n imports: [ThyHotkeyDirective],\n exports: [ThyHotkeyDirective]\n})\nexport class ThyHotkeyModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -34,6 +34,9 @@ class Producer {
34
34
  this.idKey = options.idKey;
35
35
  }
36
36
  }
37
+ getPathValue(entity, path = this.idKey) {
38
+ return entity[path];
39
+ }
37
40
  /**
38
41
  * Add an entity or entities.
39
42
  *
@@ -52,7 +55,7 @@ class Producer {
52
55
  if (addOptions.afterId) {
53
56
  const entities = [...this.entities];
54
57
  const index = this.entities.findIndex(item => {
55
- return item[this.idKey] === addOptions.afterId;
58
+ return this.getPathValue(item) === addOptions.afterId;
56
59
  }) + 1;
57
60
  entities.splice(index, 0, ...addEntities);
58
61
  this.entities = [...entities];
@@ -70,7 +73,7 @@ class Producer {
70
73
  const ids = coerceArray(idsOrFn);
71
74
  for (let i = 0; i < this.entities.length; i++) {
72
75
  const oldEntity = this.entities[i];
73
- if (ids.indexOf(oldEntity[this.idKey]) >= 0) {
76
+ if (ids.indexOf(this.getPathValue(oldEntity)) >= 0) {
74
77
  const newState = isFunction(newStateOrFn) ? newStateOrFn(oldEntity) : newStateOrFn;
75
78
  this.entities[i] = { ...oldEntity, ...newState };
76
79
  }
@@ -86,7 +89,7 @@ class Producer {
86
89
  else {
87
90
  const ids = coerceArray(idsOrFn);
88
91
  this.entities = this.entities.filter(entity => {
89
- return ids.indexOf(entity[this.idKey]) === -1;
92
+ return ids.indexOf(this.getPathValue(entity)) === -1;
90
93
  });
91
94
  }
92
95
  return this.entities;
@@ -100,7 +103,7 @@ class Producer {
100
103
  * produce([users]).move(5, {toIndex: 0});
101
104
  */
102
105
  move(id, moveOptions) {
103
- const fromIndex = this.entities.findIndex(item => item[this.idKey] === id);
106
+ const fromIndex = this.entities.findIndex(item => this.getPathValue(item) === id);
104
107
  let toIndex = 0;
105
108
  const newEntities = [...this.entities];
106
109
  if (!id || fromIndex < 0) {
@@ -108,7 +111,7 @@ class Producer {
108
111
  }
109
112
  if (moveOptions) {
110
113
  if (!isUndefinedOrNull(moveOptions.afterId)) {
111
- toIndex = this.entities.findIndex(item => item[this.idKey] === moveOptions.afterId);
114
+ toIndex = this.entities.findIndex(item => this.getPathValue(item) === moveOptions.afterId);
112
115
  }
113
116
  else if (moveOptions.toIndex) {
114
117
  toIndex = moveOptions.toIndex;
@@ -1 +1 @@
1
- {"version":3,"file":"tethys-cdk-immutable.mjs","sources":["../../../cdk/immutable/object-producer.ts","../../../cdk/immutable/immutable.ts","../../../cdk/immutable/tethys-cdk-immutable.ts"],"sourcesContent":["/* eslint-disable prettier/prettier */\ntype GetIndexedField<T, K> = K extends keyof T\n ? T[K]\n : K extends `${number}`\n ? '0' extends keyof T\n ? undefined\n : number extends keyof T\n ? T[number]\n : undefined\n : undefined\ntype FieldWithPossiblyUndefined<T, Key> =\n | GetFieldType<Exclude<T, undefined>, Key>\n | Extract<T, undefined>\ntype IndexedFieldWithPossiblyUndefined<T, Key> =\n | GetIndexedField<Exclude<T, undefined>, Key>\n | Extract<T, undefined>\nexport type GetFieldType<T, P> = P extends `${infer Left}.${infer Right}`\n ? Left extends keyof T\n ? FieldWithPossiblyUndefined<T[Left], Right>\n : Left extends `${infer FieldKey}[${infer IndexKey}]`\n ? FieldKey extends keyof T\n ? FieldWithPossiblyUndefined<IndexedFieldWithPossiblyUndefined<T[FieldKey], IndexKey>, Right>\n : undefined\n : undefined\n : P extends keyof T\n ? T[P]\n : P extends `${infer FieldKey}[${infer IndexKey}]`\n ? FieldKey extends keyof T\n ? IndexedFieldWithPossiblyUndefined<T[FieldKey], IndexKey>\n : undefined\n : undefined;\n\nexport class ObjectProducer<TEntity> {\n entity: TEntity;\n\n constructor(entity: TEntity) {\n this.entity = entity;\n }\n\n get<TPath extends string>(propPath: TPath): GetFieldType<TEntity, TPath> {\n return propPath.split('.').reduce((previousValue: any, part: string) => previousValue && previousValue[part], this.entity);\n }\n\n set<TPath extends string>(propPath: TPath, value: GetFieldType<TEntity, TPath>) {\n const newEntity = { ...this.entity };\n\n const split = propPath.split('.');\n const lastIndex = split.length - 1;\n\n split.reduce((previousValue, part, index) => {\n if (index === lastIndex) {\n previousValue[part] = value;\n } else {\n previousValue[part] = Array.isArray(previousValue[part]) ? previousValue[part].slice() : { ...previousValue[part] };\n }\n\n return previousValue && previousValue[part];\n }, newEntity);\n\n this.entity = newEntity\n return newEntity;\n }\n}\n","import { coerceArray } from '@angular/cdk/coercion';\nimport { isFunction, isUndefinedOrNull, isArray } from '@tethys/cdk/is';\nimport { ObjectProducer } from './object-producer';\n\nexport type Id = string | number;\n\nexport type Ids = Id[];\n\nexport type IdOrIds = Id | Ids;\n\nexport interface EntityAddOptions {\n prepend?: boolean;\n\n afterId?: Id;\n}\n\nexport interface EntityMoveOptions {\n afterId?: Id;\n\n toIndex?: number;\n}\n\ntype ExtractKeysOfValueType<T, K> = { [I in keyof T]: T[I] extends K ? I : never }[keyof T];\nexport interface ProducerOptions<TEntity> {\n idKey?: ExtractKeysOfValueType<TEntity, Id>;\n}\n\nexport class Producer<TEntity> {\n private idKey = '_id';\n\n private entities: TEntity[];\n\n constructor(entities: TEntity[], options?: ProducerOptions<TEntity>) {\n this.entities = entities || [];\n if (options && options.idKey) {\n this.idKey = options.idKey as string;\n }\n }\n\n /**\n * Add an entity or entities.\n *\n * @example\n * produce([users]).add(Entity);\n * produce([users]).add([Entity, Entity]);\n * produce([users]).add(Entity, { prepend: true });\n * produce([users]).add(Entity, { afterId: '' });\n */\n add(entity: TEntity | TEntity[], addOptions?: EntityAddOptions): TEntity[] {\n const addEntities = coerceArray(entity);\n if (addEntities.length === 0) {\n return this.entities;\n }\n if (addOptions && (addOptions.afterId || addOptions.prepend)) {\n if (addOptions.afterId) {\n const entities = [...this.entities];\n const index =\n this.entities.findIndex(item => {\n return item[this.idKey] === addOptions.afterId;\n }) + 1;\n entities.splice(index, 0, ...addEntities);\n this.entities = [...entities];\n } else if (addOptions.prepend) {\n this.entities = [...addEntities, ...this.entities];\n }\n } else {\n this.entities = [...this.entities, ...addEntities];\n }\n return this.entities;\n }\n\n /**\n *\n * Update an entity or entities.\n *\n * @example\n * produce([users]).update(3, {\n * name: 'New Name'\n * });\n *\n * produce([users]).update(3, entity => {\n * return {\n * ...entity,\n * name: 'New Name'\n * }\n * });\n *\n * produce([users]).update([1,2,3], {\n * name: 'New Name'\n * });\n */\n update(id: IdOrIds | null, newStateFn: (entity: Readonly<TEntity>) => Partial<TEntity>): TEntity[];\n update(id: IdOrIds | null, newState?: Partial<TEntity>): TEntity[];\n update(\n idsOrFn: IdOrIds | null | Partial<TEntity> | ((entity: Readonly<TEntity>) => boolean),\n newStateOrFn?: ((entity: Readonly<TEntity>) => Partial<TEntity>) | Partial<TEntity>\n ): TEntity[] {\n const ids = coerceArray(idsOrFn);\n\n for (let i = 0; i < this.entities.length; i++) {\n const oldEntity = this.entities[i];\n if (ids.indexOf(oldEntity[this.idKey]) >= 0) {\n const newState = isFunction(newStateOrFn) ? newStateOrFn(oldEntity) : newStateOrFn;\n this.entities[i] = { ...oldEntity, ...newState };\n }\n }\n return [...this.entities];\n }\n\n /**\n *\n * Remove one or more entities:\n *\n * @example\n * produce([users]).remove(5);\n * produce([users]).remove([1,2,3]);\n * produce([users]).remove(entity => entity.id === 1);\n */\n remove(id: IdOrIds): TEntity[];\n remove(predicate: (entity: Readonly<TEntity>) => boolean): TEntity[];\n remove(idsOrFn?: IdOrIds | ((entity: Readonly<TEntity>) => boolean)): TEntity[] {\n if (isFunction(idsOrFn)) {\n this.entities = this.entities.filter(entity => {\n return !(idsOrFn as any)(entity);\n });\n } else {\n const ids = coerceArray(idsOrFn);\n this.entities = this.entities.filter(entity => {\n return ids.indexOf(entity[this.idKey]) === -1;\n });\n }\n return this.entities;\n }\n\n /**\n *\n * Move one or more entities:\n *\n * @example\n * produce([users]).move(5, {afterId: 2});\n * produce([users]).move(5, {toIndex: 0});\n */\n move(id: Id, moveOptions?: EntityMoveOptions): TEntity[] {\n const fromIndex = this.entities.findIndex(item => item[this.idKey] === id);\n let toIndex = 0;\n const newEntities = [...this.entities];\n\n if (!id || fromIndex < 0) {\n return [...this.entities];\n }\n\n if (moveOptions) {\n if (!isUndefinedOrNull(moveOptions.afterId)) {\n toIndex = this.entities.findIndex(item => item[this.idKey] === moveOptions.afterId);\n } else if (moveOptions.toIndex) {\n toIndex = moveOptions.toIndex;\n }\n }\n toIndex = Math.max(0, Math.min(this.entities.length - 1, toIndex));\n if (toIndex === fromIndex) {\n return [...this.entities];\n } else {\n const target = this.entities[fromIndex];\n const delta = toIndex < fromIndex ? -1 : 1;\n\n for (let i = fromIndex; i !== toIndex; i += delta) {\n newEntities[i] = newEntities[i + delta];\n }\n newEntities[toIndex] = target;\n return [...newEntities];\n }\n }\n}\n\nexport function produce<TEntity>(entities: TEntity[], options?: ProducerOptions<TEntity>): Producer<TEntity>;\nexport function produce<TEntity>(entities: TEntity): ObjectProducer<TEntity>;\nexport function produce<TEntity>(entities: TEntity | TEntity[], options?: ProducerOptions<TEntity>) {\n if (isArray(entities)) {\n return new Producer<TEntity>(entities, options);\n } else {\n return new ObjectProducer<TEntity>(entities);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tethys-cdk-immutable.mjs","sources":["../../../cdk/immutable/object-producer.ts","../../../cdk/immutable/immutable.ts","../../../cdk/immutable/tethys-cdk-immutable.ts"],"sourcesContent":["/* eslint-disable prettier/prettier */\ntype GetIndexedField<T, K> = K extends keyof T\n ? T[K]\n : K extends `${number}`\n ? '0' extends keyof T\n ? undefined\n : number extends keyof T\n ? T[number]\n : undefined\n : undefined;\ntype FieldWithPossiblyUndefined<T, Key> = GetFieldType<Exclude<T, undefined>, Key> | Extract<T, undefined>;\ntype IndexedFieldWithPossiblyUndefined<T, Key> = GetIndexedField<Exclude<T, undefined>, Key> | Extract<T, undefined>;\nexport type GetFieldType<T, P> = P extends `${infer Left}.${infer Right}`\n ? Left extends keyof T\n ? FieldWithPossiblyUndefined<T[Left], Right>\n : Left extends `${infer FieldKey}[${infer IndexKey}]`\n ? FieldKey extends keyof T\n ? FieldWithPossiblyUndefined<IndexedFieldWithPossiblyUndefined<T[FieldKey], IndexKey>, Right>\n : undefined\n : undefined\n : P extends keyof T\n ? T[P]\n : P extends `${infer FieldKey}[${infer IndexKey}]`\n ? FieldKey extends keyof T\n ? IndexedFieldWithPossiblyUndefined<T[FieldKey], IndexKey>\n : undefined\n : undefined;\n\nexport class ObjectProducer<TEntity> {\n entity: TEntity;\n\n constructor(entity: TEntity) {\n this.entity = entity;\n }\n\n get<TPath extends string>(propPath: TPath): GetFieldType<TEntity, TPath> {\n return propPath.split('.').reduce((previousValue: any, part: string) => previousValue && previousValue[part], this.entity);\n }\n\n set<TPath extends string>(propPath: TPath, value: GetFieldType<TEntity, TPath>) {\n const newEntity = { ...this.entity };\n\n const split = propPath.split('.');\n const lastIndex = split.length - 1;\n\n split.reduce((previousValue: any, part, index) => {\n if (index === lastIndex) {\n previousValue[part] = value;\n } else {\n previousValue[part] = Array.isArray(previousValue[part]) ? previousValue[part].slice() : { ...previousValue[part] };\n }\n\n return previousValue && previousValue[part];\n }, newEntity);\n\n this.entity = newEntity;\n return newEntity;\n }\n}\n","import { coerceArray } from '@angular/cdk/coercion';\nimport { isFunction, isUndefinedOrNull, isArray } from '@tethys/cdk/is';\nimport { ObjectProducer } from './object-producer';\n\nexport type Id = string | number;\n\nexport type Ids = Id[];\n\nexport type IdOrIds = Id | Ids;\n\nexport interface EntityAddOptions {\n prepend?: boolean;\n\n afterId?: Id;\n}\n\nexport interface EntityMoveOptions {\n afterId?: Id;\n\n toIndex?: number;\n}\n\ntype ExtractKeysOfValueType<T, K> = { [I in keyof T]: T[I] extends K ? I : never }[keyof T];\nexport interface ProducerOptions<TEntity> {\n idKey?: ExtractKeysOfValueType<TEntity, Id>;\n}\n\nexport class Producer<TEntity> {\n private idKey = '_id';\n\n private entities: TEntity[];\n\n constructor(entities: TEntity[], options?: ProducerOptions<TEntity>) {\n this.entities = entities || [];\n if (options && options.idKey) {\n this.idKey = options.idKey as string;\n }\n }\n\n private getPathValue(entity: TEntity, path: string = this.idKey): string | number {\n return (entity as Record<string, unknown>)[path] as string | number ;\n }\n\n /**\n * Add an entity or entities.\n *\n * @example\n * produce([users]).add(Entity);\n * produce([users]).add([Entity, Entity]);\n * produce([users]).add(Entity, { prepend: true });\n * produce([users]).add(Entity, { afterId: '' });\n */\n add(entity: TEntity | TEntity[], addOptions?: EntityAddOptions): TEntity[] {\n const addEntities = coerceArray(entity);\n if (addEntities.length === 0) {\n return this.entities;\n }\n if (addOptions && (addOptions.afterId || addOptions.prepend)) {\n if (addOptions.afterId) {\n const entities = [...this.entities];\n const index =\n this.entities.findIndex(item => {\n return this.getPathValue(item) === addOptions.afterId;\n }) + 1;\n entities.splice(index, 0, ...addEntities);\n this.entities = [...entities];\n } else if (addOptions.prepend) {\n this.entities = [...addEntities, ...this.entities];\n }\n } else {\n this.entities = [...this.entities, ...addEntities];\n }\n return this.entities;\n }\n\n /**\n *\n * Update an entity or entities.\n *\n * @example\n * produce([users]).update(3, {\n * name: 'New Name'\n * });\n *\n * produce([users]).update(3, entity => {\n * return {\n * ...entity,\n * name: 'New Name'\n * }\n * });\n *\n * produce([users]).update([1,2,3], {\n * name: 'New Name'\n * });\n */\n update(id: IdOrIds | null, newStateFn: (entity: Readonly<TEntity>) => Partial<TEntity>): TEntity[];\n update(id: IdOrIds | null, newState?: Partial<TEntity>): TEntity[];\n update(\n idsOrFn: IdOrIds | null | Partial<TEntity> | ((entity: Readonly<TEntity>) => boolean),\n newStateOrFn?: ((entity: Readonly<TEntity>) => Partial<TEntity>) | Partial<TEntity>\n ): TEntity[] {\n const ids = coerceArray(idsOrFn);\n\n for (let i = 0; i < this.entities.length; i++) {\n const oldEntity = this.entities[i];\n if (ids.indexOf(this.getPathValue(oldEntity)) >= 0) {\n const newState = isFunction(newStateOrFn) ? newStateOrFn(oldEntity) : newStateOrFn;\n this.entities[i] = { ...oldEntity, ...newState };\n }\n }\n return [...this.entities];\n }\n\n /**\n *\n * Remove one or more entities:\n *\n * @example\n * produce([users]).remove(5);\n * produce([users]).remove([1,2,3]);\n * produce([users]).remove(entity => entity.id === 1);\n */\n remove(id: IdOrIds): TEntity[];\n remove(predicate: (entity: Readonly<TEntity>) => boolean): TEntity[];\n remove(idsOrFn?: IdOrIds | ((entity: Readonly<TEntity>) => boolean)): TEntity[] {\n if (isFunction(idsOrFn)) {\n this.entities = this.entities.filter(entity => {\n return !(idsOrFn as any)(entity);\n });\n } else {\n const ids = coerceArray(idsOrFn);\n this.entities = this.entities.filter(entity => {\n return ids.indexOf(this.getPathValue(entity)) === -1;\n });\n }\n return this.entities;\n }\n\n /**\n *\n * Move one or more entities:\n *\n * @example\n * produce([users]).move(5, {afterId: 2});\n * produce([users]).move(5, {toIndex: 0});\n */\n move(id: Id, moveOptions?: EntityMoveOptions): TEntity[] {\n const fromIndex = this.entities.findIndex(item => this.getPathValue(item) === id);\n let toIndex = 0;\n const newEntities = [...this.entities];\n\n if (!id || fromIndex < 0) {\n return [...this.entities];\n }\n\n if (moveOptions) {\n if (!isUndefinedOrNull(moveOptions.afterId)) {\n toIndex = this.entities.findIndex(item => this.getPathValue(item) === moveOptions.afterId);\n } else if (moveOptions.toIndex) {\n toIndex = moveOptions.toIndex;\n }\n }\n toIndex = Math.max(0, Math.min(this.entities.length - 1, toIndex));\n if (toIndex === fromIndex) {\n return [...this.entities];\n } else {\n const target = this.entities[fromIndex];\n const delta = toIndex < fromIndex ? -1 : 1;\n\n for (let i = fromIndex; i !== toIndex; i += delta) {\n newEntities[i] = newEntities[i + delta];\n }\n newEntities[toIndex] = target;\n return [...newEntities];\n }\n }\n}\n\nexport function produce<TEntity>(entities: TEntity[], options?: ProducerOptions<TEntity>): Producer<TEntity>;\nexport function produce<TEntity>(entities: TEntity): ObjectProducer<TEntity>;\nexport function produce<TEntity>(entities: TEntity | TEntity[], options?: ProducerOptions<TEntity>) {\n if (isArray(entities)) {\n return new Producer<TEntity>(entities, options);\n } else {\n return new ObjectProducer<TEntity>(entities);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -54,6 +54,7 @@ function baseGetTag(value) {
54
54
  try {
55
55
  value[symToStringTag] = undefined;
56
56
  unmasked = true;
57
+ // eslint-disable-next-line no-empty
57
58
  }
58
59
  catch (e) { }
59
60
  const result = toString.call(value);
@@ -1 +1 @@
1
- {"version":3,"file":"tethys-cdk-is.mjs","sources":["../../../cdk/is/utils.ts","../../../cdk/is/tethys-cdk-is.ts"],"sourcesContent":["import { coerceElement } from '@angular/cdk/coercion';\nimport { ElementRef, TemplateRef } from '@angular/core';\n\nexport function isUndefined(value: any): value is undefined {\n return value === undefined;\n}\n\nexport function isNull(value: any): value is null {\n return value === null;\n}\n\nexport function isUndefinedOrNull(value: any): value is undefined | null {\n return isUndefined(value) || isNull(value);\n}\n\nexport function isArray<T = any>(value: any): value is Array<T> {\n return value && baseGetTag(value) === '[object Array]';\n}\n\nexport function isEmpty(value?: any): boolean {\n if (isUndefinedOrNull(value)) {\n return true;\n }\n if (isArray(value)) {\n return !value.length;\n }\n const tag = baseGetTag(value);\n if (tag == '[object Map]' || tag == '[object Set]') {\n return !value.size;\n }\n for (const key in value) {\n if (Object.hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n}\n\nexport function isString(value?: any): value is string {\n return typeof value == 'string' || (!isArray(value) && isObjectLike(value) && baseGetTag(value) === '[object String]');\n}\n\nfunction isObjectLike(value: any): value is object {\n return value !== null && typeof value === 'object';\n}\n\nfunction baseGetTag(value: any) {\n const objectProto = Object.prototype;\n const hasOwnProperty = objectProto.hasOwnProperty;\n const toString = objectProto.toString;\n const symToStringTag = typeof Symbol !== 'undefined' ? Symbol.toStringTag : undefined;\n\n if (value == null) {\n return value === undefined ? '[object Undefined]' : '[object Null]';\n }\n if (!(symToStringTag && symToStringTag in Object(value))) {\n return toString.call(value);\n }\n const isOwn = hasOwnProperty.call(value, symToStringTag);\n const tag = value[symToStringTag];\n let unmasked = false;\n try {\n value[symToStringTag] = undefined;\n unmasked = true;\n } catch (e) {}\n\n const result = toString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nexport function isNumber(value: any): value is number {\n return typeof value === 'number' || (isObjectLike(value) && baseGetTag(value) === '[object Number]');\n}\n\nexport function isObject(value: any): value is object {\n // Avoid a V8 JIT bug in Chrome 19-20.\n // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.\n const type = typeof value;\n return !!value && (type === 'object' || type === 'function');\n}\n\nexport function isFunction(value: any): value is Function {\n const type = typeof value;\n return !!value && type === 'function';\n}\n\nexport function isDate(value: any): value is Date {\n const type = typeof value;\n return !!value && type === 'object' && !!value.getTime;\n}\n\nexport function isBoolean(value: any): value is boolean {\n return value === true || value === false || (isObjectLike(value) && baseGetTag(value) === '[object Boolean]');\n}\n\nexport function isTemplateRef<C = any>(value: any): value is TemplateRef<C> {\n return value instanceof TemplateRef;\n}\n\nexport function isHTMLElement(value: any): value is HTMLElement {\n return value instanceof HTMLElement;\n}\n\nexport function isElementRef(value: any): value is ElementRef {\n return value instanceof ElementRef;\n}\n\nexport function isFormElement<T = Element>(elementOrRef: ElementRef<T> | T): boolean {\n const element = coerceElement(elementOrRef);\n if (!(element instanceof HTMLElement)) {\n return false;\n }\n const name = element.nodeName.toLowerCase();\n const type = (element.getAttribute('type') || '').toLowerCase();\n return (\n name === 'select' ||\n name === 'textarea' ||\n (name === 'input' && type !== 'submit' && type !== 'reset' && type !== 'checkbox' && type !== 'radio' && type !== 'file') ||\n element.isContentEditable\n );\n}\n\nexport function isMacPlatform(userAgent = navigator.userAgent) {\n return /macintosh|mac os x/i.test(userAgent);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tethys-cdk-is.mjs","sources":["../../../cdk/is/utils.ts","../../../cdk/is/tethys-cdk-is.ts"],"sourcesContent":["import { coerceElement } from '@angular/cdk/coercion';\nimport { ElementRef, TemplateRef } from '@angular/core';\n\nexport function isUndefined(value: any): value is undefined {\n return value === undefined;\n}\n\nexport function isNull(value: any): value is null {\n return value === null;\n}\n\nexport function isUndefinedOrNull(value: any): value is undefined | null {\n return isUndefined(value) || isNull(value);\n}\n\nexport function isArray<T = any>(value: any): value is Array<T> {\n return value && baseGetTag(value) === '[object Array]';\n}\n\nexport function isEmpty(value?: any): boolean {\n if (isUndefinedOrNull(value)) {\n return true;\n }\n if (isArray(value)) {\n return !value.length;\n }\n const tag = baseGetTag(value);\n if (tag == '[object Map]' || tag == '[object Set]') {\n return !value.size;\n }\n for (const key in value) {\n if (Object.hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n}\n\nexport function isString(value?: any): value is string {\n return typeof value == 'string' || (!isArray(value) && isObjectLike(value) && baseGetTag(value) === '[object String]');\n}\n\nfunction isObjectLike(value: any): value is object {\n return value !== null && typeof value === 'object';\n}\n\nfunction baseGetTag(value: any) {\n const objectProto = Object.prototype;\n const hasOwnProperty = objectProto.hasOwnProperty;\n const toString = objectProto.toString;\n const symToStringTag = typeof Symbol !== 'undefined' ? Symbol.toStringTag : undefined;\n\n if (value == null) {\n return value === undefined ? '[object Undefined]' : '[object Null]';\n }\n if (!(symToStringTag && symToStringTag in Object(value))) {\n return toString.call(value);\n }\n const isOwn = hasOwnProperty.call(value, symToStringTag);\n const tag = value[symToStringTag];\n let unmasked = false;\n try {\n value[symToStringTag] = undefined;\n unmasked = true;\n // eslint-disable-next-line no-empty\n } catch (e) {}\n\n const result = toString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nexport function isNumber(value: any): value is number {\n return typeof value === 'number' || (isObjectLike(value) && baseGetTag(value) === '[object Number]');\n}\n\nexport function isObject(value: any): value is object {\n // Avoid a V8 JIT bug in Chrome 19-20.\n // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.\n const type = typeof value;\n return !!value && (type === 'object' || type === 'function');\n}\n\nexport function isFunction(value: any): value is Function {\n const type = typeof value;\n return !!value && type === 'function';\n}\n\nexport function isDate(value: any): value is Date {\n const type = typeof value;\n return !!value && type === 'object' && !!value.getTime;\n}\n\nexport function isBoolean(value: any): value is boolean {\n return value === true || value === false || (isObjectLike(value) && baseGetTag(value) === '[object Boolean]');\n}\n\nexport function isTemplateRef<C = any>(value: any): value is TemplateRef<C> {\n return value instanceof TemplateRef;\n}\n\nexport function isHTMLElement(value: any): value is HTMLElement {\n return value instanceof HTMLElement;\n}\n\nexport function isElementRef(value: any): value is ElementRef {\n return value instanceof ElementRef;\n}\n\nexport function isFormElement<T = Element>(elementOrRef: ElementRef<T> | T): boolean {\n const element = coerceElement(elementOrRef);\n if (!(element instanceof HTMLElement)) {\n return false;\n }\n const name = element.nodeName.toLowerCase();\n const type = (element.getAttribute('type') || '').toLowerCase();\n return (\n name === 'select' ||\n name === 'textarea' ||\n (name === 'input' && type !== 'submit' && type !== 'reset' && type !== 'checkbox' && type !== 'radio' && type !== 'file') ||\n element.isContentEditable\n );\n}\n\nexport function isMacPlatform(userAgent = navigator.userAgent) {\n return /macintosh|mac os x/i.test(userAgent);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -30,6 +30,7 @@ declare class Producer<TEntity> {
30
30
  private idKey;
31
31
  private entities;
32
32
  constructor(entities: TEntity[], options?: ProducerOptions<TEntity>);
33
+ private getPathValue;
33
34
  /**
34
35
  * Add an entity or entities.
35
36
  *
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tethys/cdk",
3
- "version": "20.0.1-0",
3
+ "version": "20.0.2",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^20.0.0",
6
6
  "@angular/core": "^20.0.0",