ngx-extra 21.0.3 → 21.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/ngx-extra.mjs +15 -39
- package/fesm2022/ngx-extra.mjs.map +1 -1
- package/package.json +1 -1
- package/types/ngx-extra.d.ts +3 -13
package/fesm2022/ngx-extra.mjs
CHANGED
|
@@ -17,14 +17,25 @@ function createSignalChangeNotifier() {
|
|
|
17
17
|
});
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
+
/**
|
|
21
|
+
* Removes all null and undefined values from an object.
|
|
22
|
+
* @param obj - The object to clean. If null or undefined, returns an empty object.
|
|
23
|
+
* @returns A new object with all nullish values filtered out.
|
|
24
|
+
*/
|
|
20
25
|
function cleanNullishFromObject(obj) {
|
|
21
|
-
if (obj
|
|
26
|
+
if (obj == null)
|
|
22
27
|
return {};
|
|
23
|
-
}
|
|
24
28
|
return Object.fromEntries(Object.entries(obj).filter(([, v]) => v != null));
|
|
25
29
|
}
|
|
30
|
+
/**
|
|
31
|
+
* Checks if an object contains any null or undefined values.
|
|
32
|
+
* @param obj - The object to check. If null or undefined, returns false.
|
|
33
|
+
* @returns True if the object contains at least one nullish value, false otherwise.
|
|
34
|
+
*/
|
|
26
35
|
function hasNullishInObject(obj) {
|
|
27
|
-
|
|
36
|
+
if (obj == null)
|
|
37
|
+
return false;
|
|
38
|
+
return Object.values(obj).some((val) => val == null);
|
|
28
39
|
}
|
|
29
40
|
|
|
30
41
|
class ReactiveQueryParamGlobalHandler {
|
|
@@ -221,18 +232,6 @@ function duringDestroy(fn, injector) {
|
|
|
221
232
|
});
|
|
222
233
|
}
|
|
223
234
|
|
|
224
|
-
function rxSubscriber(source, next, options) {
|
|
225
|
-
if (isDevMode() && !options?.injector) {
|
|
226
|
-
assertInInjectionContext(rxSubscriber);
|
|
227
|
-
}
|
|
228
|
-
const assertedInjector = options?.injector ?? inject(Injector);
|
|
229
|
-
runInInjectionContext(assertedInjector, () => {
|
|
230
|
-
source.pipe(takeUntilDestroyed()).subscribe((payloadFromStream) => {
|
|
231
|
-
next(payloadFromStream);
|
|
232
|
-
});
|
|
233
|
-
});
|
|
234
|
-
}
|
|
235
|
-
|
|
236
235
|
function throwResourceError(resorce, injector) {
|
|
237
236
|
if (isDevMode() && !injector) {
|
|
238
237
|
assertInInjectionContext(throwResourceError);
|
|
@@ -385,29 +384,6 @@ function slimComponentState() {
|
|
|
385
384
|
});
|
|
386
385
|
}
|
|
387
386
|
|
|
388
|
-
function slimEffect(dependency, fn, options) {
|
|
389
|
-
if (options?.lazy) {
|
|
390
|
-
let warm = false;
|
|
391
|
-
return effect((onCleanup) => {
|
|
392
|
-
const dep = dependency();
|
|
393
|
-
untracked(() => {
|
|
394
|
-
if (warm) {
|
|
395
|
-
fn(dep, onCleanup);
|
|
396
|
-
}
|
|
397
|
-
warm = true;
|
|
398
|
-
});
|
|
399
|
-
}, options);
|
|
400
|
-
}
|
|
401
|
-
else {
|
|
402
|
-
return effect((onCleanup) => {
|
|
403
|
-
const dep = dependency();
|
|
404
|
-
untracked(() => {
|
|
405
|
-
fn(dep, onCleanup);
|
|
406
|
-
});
|
|
407
|
-
}, options);
|
|
408
|
-
}
|
|
409
|
-
}
|
|
410
|
-
|
|
411
387
|
function pairwiseSignal(source, options) {
|
|
412
388
|
if (isDevMode() && !options?.injector) {
|
|
413
389
|
assertInInjectionContext(pairwiseSignal);
|
|
@@ -536,5 +512,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
536
512
|
* Generated bundle index. Do not edit.
|
|
537
513
|
*/
|
|
538
514
|
|
|
539
|
-
export { MemoizeFnPipe, ReactiveFormErrorMessageComponent, abstractControlSignal, createSignalChangeNotifier, debouncedSignal, duringDestroy, pairwiseSignal, reactiveLocalStorageItem, reactiveQueryParam,
|
|
515
|
+
export { MemoizeFnPipe, ReactiveFormErrorMessageComponent, abstractControlSignal, createSignalChangeNotifier, debouncedSignal, duringDestroy, pairwiseSignal, reactiveLocalStorageItem, reactiveQueryParam, slimComponentState, throwResourceError };
|
|
540
516
|
//# sourceMappingURL=ngx-extra.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-extra.mjs","sources":["../../../projects/ngx-extra/src/lib/utils/create-signal-change-notifier.ts","../../../projects/ngx-extra/src/lib/helpers.ts","../../../projects/ngx-extra/src/lib/utils/reactive-query-param.ts","../../../projects/ngx-extra/src/lib/utils/debounced-signal.ts","../../../projects/ngx-extra/src/lib/utils/during-destroy.ts","../../../projects/ngx-extra/src/lib/utils/rx-subscriber.ts","../../../projects/ngx-extra/src/lib/utils/throw-resource-error.ts","../../../projects/ngx-extra/src/lib/utils/abstract-control-signal.ts","../../../projects/ngx-extra/src/lib/misc/slim-component-state.ts","../../../projects/ngx-extra/src/lib/utils/slim-effect.ts","../../../projects/ngx-extra/src/lib/utils/pairwise-signal.ts","../../../projects/ngx-extra/src/lib/utils/reactive-local-storage-item.ts","../../../projects/ngx-extra/src/lib/components/reactive-form-error-message.component.ts","../../../projects/ngx-extra/src/lib/pipes/memoize-fn.pipe.ts","../../../projects/ngx-extra/src/ngx-extra.ts"],"sourcesContent":["import { Signal, signal } from \"@angular/core\";\n\nexport type SignalChangeNotifier = {\n notify: () => void;\n listen: Signal<number | null>;\n};\n\nexport function createSignalChangeNotifier() {\n const sourceSignal = signal<number | null>(null);\n\n return Object.seal({\n notify: () => {\n sourceSignal.update((v) => (v === null ? 1 : v + 1));\n },\n listen: sourceSignal.asReadonly()\n }) satisfies SignalChangeNotifier;\n}\n","export function cleanNullishFromObject(obj?: object): Record<string, any> {\n if (obj === undefined) {\n return {};\n }\n\n return Object.fromEntries(Object.entries(obj).filter(([, v]) => v != null));\n}\n\nexport function hasNullishInObject(obj: object): boolean {\n return Object.values(obj).some((val) => val === null || val === undefined);\n}\n","import {\n DestroyRef,\n Injectable,\n Injector,\n Signal,\n assertInInjectionContext,\n effect,\n inject,\n isDevMode,\n isSignal,\n runInInjectionContext,\n untracked\n} from \"@angular/core\";\nimport { takeUntilDestroyed, toObservable } from \"@angular/core/rxjs-interop\";\nimport { ActivatedRoute, NavigationExtras, Router } from \"@angular/router\";\nimport LzString from \"lz-string\";\nimport { Observable, filter, map } from \"rxjs\";\nimport { createSignalChangeNotifier } from \"./create-signal-change-notifier\";\nimport { cleanNullishFromObject } from \"../helpers\";\n\nexport type SlimNavigationExtras = Pick<\n NavigationExtras,\n | \"queryParamsHandling\"\n | \"onSameUrlNavigation\"\n | \"replaceUrl\"\n | \"skipLocationChange\"\n | \"preserveFragment\"\n>;\n\nexport type ReactiveQueryParamOptions<T> = {\n queryParamKey: string;\n source: Signal<T> | Observable<T>;\n parse?: (rawData: any) => T | null;\n handleInitialSnapshot?: (payload: T) => void;\n handleStream?: (payload: T) => void;\n injector?: Injector;\n routerOptions?: SlimNavigationExtras;\n base64EncodingOptions?: {\n disableEncoding?: boolean;\n disableJsonStringifyWhenNoEncoding?: boolean;\n };\n queryParamOptions?: {\n blackListedValues?: any[];\n preserveStaleOnBlacklistedValue?: boolean;\n };\n};\n\n@Injectable({ providedIn: \"root\" })\nclass ReactiveQueryParamGlobalHandler {\n private router = inject(Router);\n\n private schedulerNotifier = createSignalChangeNotifier();\n private currentKeys: Record<string, string | null> = {};\n private navigationExtras: SlimNavigationExtras = {};\n\n constructor() {\n effect(() => {\n if (!this.schedulerNotifier.listen()) {\n return;\n }\n untracked(() => {\n this.router\n .navigate([], {\n queryParams: this.currentKeys,\n ...this.navigationExtras\n })\n .then(() => {\n this.currentKeys = {};\n this.navigationExtras = {};\n });\n });\n });\n }\n\n scheduleNavigation(key: string, value: string | null, navOptions: SlimNavigationExtras) {\n this.currentKeys[key] = value;\n this.setCurrentNavigationExtras(navOptions);\n this.schedulerNotifier.notify();\n }\n\n private setCurrentNavigationExtras(config: Partial<SlimNavigationExtras> = {}) {\n const {\n queryParamsHandling,\n onSameUrlNavigation,\n replaceUrl,\n skipLocationChange,\n preserveFragment\n } = config;\n\n if (queryParamsHandling || queryParamsHandling === \"\") {\n this.navigationExtras.queryParamsHandling = queryParamsHandling;\n }\n if (onSameUrlNavigation) {\n this.navigationExtras.onSameUrlNavigation = onSameUrlNavigation;\n }\n if (replaceUrl) {\n this.navigationExtras.replaceUrl = replaceUrl;\n }\n if (skipLocationChange) {\n this.navigationExtras.skipLocationChange = skipLocationChange;\n }\n if (preserveFragment) {\n this.navigationExtras.preserveFragment = preserveFragment;\n }\n }\n}\n\nexport function reactiveQueryParam<T>(options: ReactiveQueryParamOptions<T>) {\n if (isDevMode() && !options?.injector) {\n assertInInjectionContext(reactiveQueryParam);\n }\n\n const assertedInjector = options.injector ?? inject(Injector);\n\n const blackList = options.queryParamOptions?.blackListedValues ?? [null, undefined, \"\"];\n\n const useEncoding = !options?.base64EncodingOptions?.disableEncoding;\n\n const useStringifyOnNoEncoding =\n !options?.base64EncodingOptions?.disableJsonStringifyWhenNoEncoding;\n\n const deserialize = (payload: string): T => {\n if (useEncoding) {\n const decoded = LzString.decompressFromEncodedURIComponent(payload);\n return JSON.parse(decoded);\n }\n\n if (!useEncoding && useStringifyOnNoEncoding) {\n return JSON.parse(payload);\n } else {\n try {\n return JSON.parse(payload);\n } catch {\n return payload as T;\n }\n }\n };\n\n const serialize = (value: T | null | undefined): string | null => {\n if (blackList.some((elem) => elem === value)) {\n return null;\n }\n if (useEncoding) {\n return LzString.compressToEncodedURIComponent(JSON.stringify(value));\n }\n\n if (!useEncoding && useStringifyOnNoEncoding) {\n return JSON.stringify(value);\n } else {\n if (typeof value === \"string\") {\n return value;\n } else {\n return JSON.stringify(value);\n }\n }\n };\n\n runInInjectionContext(assertedInjector, () => {\n const globalHandler = inject(ReactiveQueryParamGlobalHandler);\n const route = inject(ActivatedRoute);\n const destroyRef = inject(DestroyRef);\n\n // Handle initial snapshot\n const payloadFromSnapshot = route.snapshot.queryParamMap.get(options.queryParamKey);\n\n if (\n payloadFromSnapshot !== null &&\n payloadFromSnapshot !== \"\" &&\n options.handleInitialSnapshot\n ) {\n const deserialized = deserialize(payloadFromSnapshot);\n if (!options.parse) {\n options.handleInitialSnapshot(deserialized);\n } else {\n try {\n const parsedValue = options.parse(deserialized);\n if (parsedValue !== null) {\n options.handleInitialSnapshot(parsedValue);\n }\n } catch (error) {\n console.error(error);\n }\n }\n }\n\n // Handle query param stream\n route.queryParamMap\n .pipe(\n map((params) => params.get(options.queryParamKey)),\n filter((value) => value !== null),\n filter((value) => value !== \"\"),\n takeUntilDestroyed(destroyRef)\n )\n .subscribe((payloadFromStream) => {\n if (!options.handleStream) {\n return;\n }\n const deserialized = deserialize(payloadFromStream);\n if (!options.parse) {\n options.handleStream(deserialized);\n } else {\n try {\n const parsedValue = options.parse(deserialized);\n if (parsedValue !== null) {\n options.handleStream(parsedValue);\n }\n } catch (error) {\n console.error(error);\n }\n }\n });\n\n // Handle source changes\n let source$: Observable<T>;\n\n if (isSignal(options.source)) {\n source$ = toObservable(options.source);\n } else if (options.source instanceof Observable) {\n source$ = options.source;\n } else {\n throw new Error(\"Invalid source\");\n }\n\n source$.pipe(takeUntilDestroyed(destroyRef)).subscribe((value) => {\n const serializedValue = serialize(value);\n if (serializedValue === null && options?.queryParamOptions?.preserveStaleOnBlacklistedValue) {\n return;\n }\n\n globalHandler.scheduleNavigation(options.queryParamKey, serializedValue, {\n ...cleanNullishFromObject(options?.routerOptions),\n queryParamsHandling: options.routerOptions?.queryParamsHandling ?? \"merge\"\n });\n });\n });\n}\n","import {\n Signal,\n Injector,\n isDevMode,\n assertInInjectionContext,\n inject,\n runInInjectionContext,\n isSignal\n} from \"@angular/core\";\nimport { toSignal, toObservable, takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\nimport { debounceTime } from \"rxjs\";\n\nexport function debouncedSignal<T>(source: Signal<T>, ms: number, injector?: Injector) {\n if (isDevMode() && !injector) {\n assertInInjectionContext(debouncedSignal);\n }\n const assertedInjector = injector ?? inject(Injector);\n\n return runInInjectionContext(assertedInjector, () => {\n if (isSignal(source)) {\n return toSignal(toObservable(source).pipe(debounceTime(ms), takeUntilDestroyed()));\n } else {\n throw new Error(\"Invalid source\");\n }\n });\n}\n","import {\n Injector,\n isDevMode,\n assertInInjectionContext,\n inject,\n runInInjectionContext,\n DestroyRef\n} from \"@angular/core\";\n\nexport function duringDestroy(fn: () => void, injector?: Injector) {\n if (isDevMode() && !injector) {\n assertInInjectionContext(duringDestroy);\n }\n const assertedInjector = injector ?? inject(Injector);\n\n runInInjectionContext(assertedInjector, () => {\n inject(DestroyRef).onDestroy(fn);\n });\n}\n","import {\n assertInInjectionContext,\n inject,\n Injector,\n isDevMode,\n runInInjectionContext\n} from \"@angular/core\";\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\nimport { Observable } from \"rxjs\";\n\nexport type RxSubscriberOptions = {\n injector?: Injector;\n};\n\nexport function rxSubscriber<T>(\n source: Observable<T>,\n next: (payload: T) => void,\n options?: RxSubscriberOptions\n) {\n if (isDevMode() && !options?.injector) {\n assertInInjectionContext(rxSubscriber);\n }\n const assertedInjector = options?.injector ?? inject(Injector);\n\n runInInjectionContext(assertedInjector, () => {\n source.pipe(takeUntilDestroyed()).subscribe((payloadFromStream) => {\n next(payloadFromStream);\n });\n });\n}\n","import { HttpResourceRef } from \"@angular/common/http\";\nimport {\n Injector,\n assertInInjectionContext,\n inject,\n runInInjectionContext,\n effect,\n isDevMode\n} from \"@angular/core\";\n\nexport function throwResourceError<T = any>(resorce: HttpResourceRef<T>, injector?: Injector) {\n if (isDevMode() && !injector) {\n assertInInjectionContext(throwResourceError);\n }\n const assertedInjector = injector ?? inject(Injector);\n runInInjectionContext(assertedInjector, () => {\n effect(() => {\n if (resorce.status() === \"error\") {\n throw resorce.error();\n }\n });\n });\n}\n","import {\n assertInInjectionContext,\n computed,\n inject,\n Injector,\n isDevMode,\n runInInjectionContext,\n signal\n} from \"@angular/core\";\nimport { takeUntilDestroyed, toSignal } from \"@angular/core/rxjs-interop\";\nimport {\n AbstractControl,\n FormControlStatus,\n FormResetEvent,\n PristineChangeEvent,\n StatusChangeEvent,\n TouchedChangeEvent,\n ValidationErrors,\n ValueChangeEvent\n} from \"@angular/forms\";\nimport { map, startWith } from \"rxjs\";\n\ntype AbstractControlSignalOptions = {\n injector?: Injector;\n};\n\nexport function abstractControlSignal<T>(\n source: AbstractControl<T>,\n options?: AbstractControlSignalOptions\n) {\n if (isDevMode() && !options?.injector) {\n assertInInjectionContext(abstractControlSignal);\n }\n const assertedInjector = options?.injector ?? inject(Injector);\n\n return runInInjectionContext(assertedInjector, () => {\n const internalState = Object.seal({\n value: signal<T>(source.getRawValue()),\n status: signal<FormControlStatus>(source.status),\n touched: signal<boolean>(source.touched),\n pristine: signal<boolean>(source.pristine),\n errors: signal<ValidationErrors | null>(source.errors)\n });\n\n source.events.pipe(takeUntilDestroyed()).subscribe((newEvent) => {\n if (newEvent instanceof ValueChangeEvent) {\n internalState.value.set(source.getRawValue());\n }\n\n if (newEvent instanceof PristineChangeEvent) {\n internalState.pristine.set(newEvent.pristine);\n }\n\n if (newEvent instanceof TouchedChangeEvent) {\n internalState.touched.set(newEvent.touched);\n }\n\n if (newEvent instanceof StatusChangeEvent) {\n internalState.status.set(newEvent.status);\n internalState.errors.set(source.errors);\n }\n });\n\n return Object.seal({\n errors: internalState.errors.asReadonly(),\n value: internalState.value.asReadonly(),\n reset: toSignal(source.events.pipe(map((e) => e instanceof FormResetEvent)), {\n initialValue: false\n }),\n touched: internalState.touched.asReadonly(),\n untouched: computed(() => {\n return !internalState.touched();\n }),\n pristine: internalState.pristine.asReadonly(),\n dirty: computed(() => {\n return !internalState.pristine();\n }),\n valid: computed(() => {\n return internalState.status() === \"VALID\";\n }),\n invalid: computed(() => {\n return internalState.status() === \"INVALID\";\n }),\n pending: computed(() => {\n return internalState.status() === \"PENDING\";\n }),\n disabled: computed(() => {\n return internalState.status() === \"DISABLED\";\n })\n });\n });\n}\n","import { signal, computed, Signal, WritableSignal } from \"@angular/core\";\r\nimport { ManipulationMode } from \"../types\";\r\n\r\nexport type SlimComponentState = {\r\n isCheckBoxSelectionEnabled: WritableSignal<boolean>;\r\n canSelectRow: WritableSignal<boolean>;\r\n canSelectMultipleItem: WritableSignal<boolean>;\r\n manipulationMode: WritableSignal<ManipulationMode | null>;\r\n title: WritableSignal<string>;\r\n isAnyNetworkOperationRunning: WritableSignal<boolean>;\r\n isDataManipulationUiActive: WritableSignal<boolean>;\r\n manipulationModeLabel: Signal<string>;\r\n titleWithManipulationMode: Signal<string>;\r\n setTitle(newTitle: string): SlimComponentState;\r\n setManipulationMode(mode: ManipulationMode | null): SlimComponentState;\r\n setIsCheckBoxSelectionEnabled(canSelect: boolean): SlimComponentState;\r\n setCanSelectRow(canSelect: boolean): SlimComponentState;\r\n setCanSelectMultipleItem(canSelect: boolean): SlimComponentState;\r\n setIsAnyNetworkOperationRunning(status: boolean): SlimComponentState;\r\n setIsDataManipulationUiActive(status: boolean): SlimComponentState;\r\n resetAll(): SlimComponentState;\r\n};\r\n\r\nexport function slimComponentState(): SlimComponentState {\r\n const isCheckBoxSelectionEnabled = signal<boolean>(false);\r\n const canSelectRow = signal<boolean>(false);\r\n const canSelectMultipleItem = signal<boolean>(false);\r\n const manipulationMode = signal<ManipulationMode | null>(null);\r\n const title = signal<string>(\"\");\r\n const isAnyNetworkOperationRunning = signal<boolean>(false);\r\n const isDataManipulationUiActive = signal<boolean>(false);\r\n\r\n const manipulationModeLabel = computed(() => {\r\n switch (manipulationMode()) {\r\n case \"create\":\r\n return \"Create\";\r\n case \"update\":\r\n return \"Update\";\r\n case \"delete\":\r\n return \"Delete\";\r\n case \"create-child\":\r\n return \"Create Child\";\r\n case \"update-child\":\r\n return \"Update Child\";\r\n case \"delete-child\":\r\n return \"Delete Child\";\r\n default:\r\n return \"\";\r\n }\r\n });\r\n\r\n const titleWithManipulationMode = computed(() => {\r\n return `${manipulationModeLabel()} ${title()}`.trim();\r\n });\r\n\r\n return Object.seal({\r\n isCheckBoxSelectionEnabled,\r\n canSelectRow,\r\n canSelectMultipleItem,\r\n manipulationMode,\r\n title,\r\n isAnyNetworkOperationRunning,\r\n isDataManipulationUiActive,\r\n manipulationModeLabel,\r\n titleWithManipulationMode,\r\n setTitle(newTitle: string) {\r\n title.set(newTitle);\r\n return this;\r\n },\r\n\r\n setManipulationMode(mode: ManipulationMode | null): SlimComponentState {\r\n manipulationMode.set(mode);\r\n return this;\r\n },\r\n setIsCheckBoxSelectionEnabled(canSelect: boolean): SlimComponentState {\r\n isCheckBoxSelectionEnabled.set(canSelect);\r\n return this;\r\n },\r\n\r\n setCanSelectRow(canSelect: boolean): SlimComponentState {\r\n canSelectRow.set(canSelect);\r\n return this;\r\n },\r\n\r\n setCanSelectMultipleItem(canSelect: boolean): SlimComponentState {\r\n canSelectMultipleItem.set(canSelect);\r\n return this;\r\n },\r\n\r\n setIsAnyNetworkOperationRunning(status: boolean): SlimComponentState {\r\n isAnyNetworkOperationRunning.set(status);\r\n return this;\r\n },\r\n\r\n setIsDataManipulationUiActive(status: boolean): SlimComponentState {\r\n isDataManipulationUiActive.set(status);\r\n return this;\r\n },\r\n\r\n resetAll(): SlimComponentState {\r\n isCheckBoxSelectionEnabled.set(false);\r\n canSelectRow.set(false);\r\n canSelectMultipleItem.set(false);\r\n manipulationMode.set(null);\r\n title.set(\"\");\r\n isAnyNetworkOperationRunning.set(false);\r\n isDataManipulationUiActive.set(false);\r\n return this;\r\n }\r\n });\r\n}\r\n","import {\r\n CreateEffectOptions,\r\n effect,\r\n EffectCleanupRegisterFn,\r\n Signal,\r\n untracked\r\n} from \"@angular/core\";\r\n\r\ninterface SlimEffectOptions extends CreateEffectOptions {\r\n lazy?: boolean;\r\n}\r\n\r\nexport function slimEffect<T>(\r\n dependency: Signal<T>,\r\n fn: (dependency: T, onCleanup: EffectCleanupRegisterFn) => void,\r\n options?: SlimEffectOptions\r\n) {\r\n if (options?.lazy) {\r\n let warm = false;\r\n return effect((onCleanup) => {\r\n const dep = dependency();\r\n untracked(() => {\r\n if (warm) {\r\n fn(dep, onCleanup);\r\n }\r\n warm = true;\r\n });\r\n }, options);\r\n } else {\r\n return effect((onCleanup) => {\r\n const dep = dependency();\r\n untracked(() => {\r\n fn(dep, onCleanup);\r\n });\r\n }, options);\r\n }\r\n}\r\n","import {\n assertInInjectionContext,\n inject,\n Injector,\n isDevMode,\n linkedSignal,\n runInInjectionContext,\n Signal,\n ValueEqualityFn\n} from \"@angular/core\";\n\ntype Value<T> = { current: T; previous: T | null };\n\ntype PairwiseSignalOptions<T> = {\n equalityFn?: ValueEqualityFn<Value<T>>;\n injector?: Injector;\n};\n\nexport function pairwiseSignal<T>(source: Signal<T>, options?: PairwiseSignalOptions<T>) {\n if (isDevMode() && !options?.injector) {\n assertInInjectionContext(pairwiseSignal);\n }\n const assertedInjector = options?.injector ?? inject(Injector);\n\n const defaultEqualityFn = (a: Value<T>, b: Value<T>) =>\n JSON.stringify(a.previous) === JSON.stringify(b.current);\n\n return runInInjectionContext(assertedInjector, () => {\n const pair = linkedSignal<T, Value<T>>({\n source: source,\n equal: options?.equalityFn ?? defaultEqualityFn,\n computation: (current, previous) => {\n console.log(JSON.stringify(previous) === JSON.stringify(current));\n return {\n current,\n previous: previous?.value.current ?? null\n };\n }\n });\n\n return pair.asReadonly();\n });\n}\n","import {\r\n assertInInjectionContext,\r\n DestroyRef,\r\n effect,\r\n inject,\r\n Injector,\r\n isDevMode,\r\n runInInjectionContext,\r\n signal,\r\n type WritableSignal\r\n} from \"@angular/core\";\r\n\r\nexport type ReactiveLocalStorageItemOptions<T> = {\r\n defaultValue?: T;\r\n parse?: (raw: unknown) => T;\r\n syncAcrossTabs?: boolean;\r\n injector?: Injector;\r\n};\r\n\r\nexport function reactiveLocalStorageItem<T>(\r\n key: string,\r\n opts?: ReactiveLocalStorageItemOptions<T>\r\n): WritableSignal<T | null> {\r\n if (isDevMode() && !opts?.injector) {\r\n assertInInjectionContext(reactiveLocalStorageItem);\r\n }\r\n\r\n const assertedInjector = opts?.injector ?? inject(Injector);\r\n\r\n return runInInjectionContext(assertedInjector, () => {\r\n const readFromStorage = (): T | null => {\r\n const raw = localStorage.getItem(key);\r\n if (raw === null) return opts?.defaultValue ?? null;\r\n\r\n const parsed = JSON.parse(raw);\r\n return opts?.parse ? opts.parse(parsed) : (parsed as T);\r\n };\r\n\r\n const sig = signal<T | null>(readFromStorage());\r\n\r\n effect(() => {\r\n const value = sig();\r\n if (value === null || value === undefined) {\r\n localStorage.removeItem(key);\r\n } else {\r\n localStorage.setItem(key, JSON.stringify(value));\r\n }\r\n });\r\n\r\n if (opts?.syncAcrossTabs !== false) {\r\n const destroyRef = inject(DestroyRef);\r\n\r\n const onStorageChange = (event: StorageEvent) => {\r\n if (event.key !== key) return;\r\n\r\n if (event.newValue !== null) {\r\n const parsed = JSON.parse(event.newValue);\r\n sig.set(opts?.parse ? opts.parse(parsed) : (parsed as T));\r\n } else {\r\n sig.set(opts?.defaultValue ?? null);\r\n }\r\n };\r\n\r\n window.addEventListener(\"storage\", onStorageChange);\r\n destroyRef.onDestroy(() => window.removeEventListener(\"storage\", onStorageChange));\r\n }\r\n\r\n return sig;\r\n });\r\n}\r\n","import { Component, computed, input, ChangeDetectionStrategy } from \"@angular/core\";\nimport { FormControl } from \"@angular/forms\";\nimport { KeyValuePipe } from \"@angular/common\";\n\n@Component({\n selector: \"ngx-reactive-form-error-message\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [KeyValuePipe],\n template: `\n @for (item of finalErrorsWithCodeAndMessage() | keyvalue; track item.key) {\n @if (formControlToBind().errors?.[item.key]) {\n <small [class]=\"cssClass()\">{{ item.value }}</small>\n }\n }\n `\n})\nexport class ReactiveFormErrorMessageComponent {\n readonly formControlToBind = input.required<FormControl>();\n readonly formControlLabel = input.required<string>();\n readonly cssClass = input<string>(\"\");\n readonly customErrors = input<Record<string, string>>();\n\n protected readonly finalErrorsWithCodeAndMessage = computed(() => {\n const label = this.formControlLabel();\n const customKv = this.customErrors() ?? {};\n\n return {\n required: `${label} is required.`,\n maxlength: `${label} must be smaller.`,\n minlength: `${label} must be bigger.`,\n min: `${label} must be bigger.`,\n max: `${label} must be smaller.`,\n email: `${label} must be a valid email.`,\n pattern: `${label} is not valid.`,\n ...customKv\n };\n });\n}\n","import { Pipe, type PipeTransform } from \"@angular/core\";\r\n\r\n@Pipe({\r\n name: \"ngxMemoizeFn\"\r\n})\r\nexport class MemoizeFnPipe implements PipeTransform {\r\n public transform<T, R>(value: T, handler: (value: T) => R, context?: unknown): R {\r\n if (context) {\r\n return handler.call(context, value);\r\n }\r\n\r\n return handler(value);\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;SAOgB,0BAA0B,GAAA;AACxC,IAAA,MAAM,YAAY,GAAG,MAAM,CAAgB,IAAI,wDAAC;IAEhD,OAAO,MAAM,CAAC,IAAI,CAAC;QACjB,MAAM,EAAE,MAAK;YACX,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QACtD,CAAC;AACD,QAAA,MAAM,EAAE,YAAY,CAAC,UAAU;AAChC,KAAA,CAAgC;AACnC;;AChBM,SAAU,sBAAsB,CAAC,GAAY,EAAA;AACjD,IAAA,IAAI,GAAG,KAAK,SAAS,EAAE;AACrB,QAAA,OAAO,EAAE;IACX;IAEA,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC;AAC7E;AAEM,SAAU,kBAAkB,CAAC,GAAW,EAAA;IAC5C,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,CAAC;AAC5E;;ACqCA,MACM,+BAA+B,CAAA;AAC3B,IAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAEvB,iBAAiB,GAAG,0BAA0B,EAAE;IAChD,WAAW,GAAkC,EAAE;IAC/C,gBAAgB,GAAyB,EAAE;AAEnD,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,EAAE;gBACpC;YACF;YACA,SAAS,CAAC,MAAK;AACb,gBAAA,IAAI,CAAC;qBACF,QAAQ,CAAC,EAAE,EAAE;oBACZ,WAAW,EAAE,IAAI,CAAC,WAAW;oBAC7B,GAAG,IAAI,CAAC;iBACT;qBACA,IAAI,CAAC,MAAK;AACT,oBAAA,IAAI,CAAC,WAAW,GAAG,EAAE;AACrB,oBAAA,IAAI,CAAC,gBAAgB,GAAG,EAAE;AAC5B,gBAAA,CAAC,CAAC;AACN,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,kBAAkB,CAAC,GAAW,EAAE,KAAoB,EAAE,UAAgC,EAAA;AACpF,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,KAAK;AAC7B,QAAA,IAAI,CAAC,0BAA0B,CAAC,UAAU,CAAC;AAC3C,QAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE;IACjC;IAEQ,0BAA0B,CAAC,SAAwC,EAAE,EAAA;AAC3E,QAAA,MAAM,EACJ,mBAAmB,EACnB,mBAAmB,EACnB,UAAU,EACV,kBAAkB,EAClB,gBAAgB,EACjB,GAAG,MAAM;AAEV,QAAA,IAAI,mBAAmB,IAAI,mBAAmB,KAAK,EAAE,EAAE;AACrD,YAAA,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,GAAG,mBAAmB;QACjE;QACA,IAAI,mBAAmB,EAAE;AACvB,YAAA,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,GAAG,mBAAmB;QACjE;QACA,IAAI,UAAU,EAAE;AACd,YAAA,IAAI,CAAC,gBAAgB,CAAC,UAAU,GAAG,UAAU;QAC/C;QACA,IAAI,kBAAkB,EAAE;AACtB,YAAA,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,GAAG,kBAAkB;QAC/D;QACA,IAAI,gBAAgB,EAAE;AACpB,YAAA,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,GAAG,gBAAgB;QAC3D;IACF;uGAxDI,+BAA+B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAA/B,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,+BAA+B,cADX,MAAM,EAAA,CAAA;;2FAC1B,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBADpC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;AA4D5B,SAAU,kBAAkB,CAAI,OAAqC,EAAA;IACzE,IAAI,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE;QACrC,wBAAwB,CAAC,kBAAkB,CAAC;IAC9C;IAEA,MAAM,gBAAgB,GAAG,OAAO,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC;AAE7D,IAAA,MAAM,SAAS,GAAG,OAAO,CAAC,iBAAiB,EAAE,iBAAiB,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC;IAEvF,MAAM,WAAW,GAAG,CAAC,OAAO,EAAE,qBAAqB,EAAE,eAAe;IAEpE,MAAM,wBAAwB,GAC5B,CAAC,OAAO,EAAE,qBAAqB,EAAE,kCAAkC;AAErE,IAAA,MAAM,WAAW,GAAG,CAAC,OAAe,KAAO;QACzC,IAAI,WAAW,EAAE;YACf,MAAM,OAAO,GAAG,QAAQ,CAAC,iCAAiC,CAAC,OAAO,CAAC;AACnE,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;QAC5B;AAEA,QAAA,IAAI,CAAC,WAAW,IAAI,wBAAwB,EAAE;AAC5C,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;QAC5B;aAAO;AACL,YAAA,IAAI;AACF,gBAAA,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;YAC5B;AAAE,YAAA,MAAM;AACN,gBAAA,OAAO,OAAY;YACrB;QACF;AACF,IAAA,CAAC;AAED,IAAA,MAAM,SAAS,GAAG,CAAC,KAA2B,KAAmB;AAC/D,QAAA,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,KAAK,CAAC,EAAE;AAC5C,YAAA,OAAO,IAAI;QACb;QACA,IAAI,WAAW,EAAE;YACf,OAAO,QAAQ,CAAC,6BAA6B,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACtE;AAEA,QAAA,IAAI,CAAC,WAAW,IAAI,wBAAwB,EAAE;AAC5C,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;QAC9B;aAAO;AACL,YAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7B,gBAAA,OAAO,KAAK;YACd;iBAAO;AACL,gBAAA,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;YAC9B;QACF;AACF,IAAA,CAAC;AAED,IAAA,qBAAqB,CAAC,gBAAgB,EAAE,MAAK;AAC3C,QAAA,MAAM,aAAa,GAAG,MAAM,CAAC,+BAA+B,CAAC;AAC7D,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC;AACpC,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;;AAGrC,QAAA,MAAM,mBAAmB,GAAG,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC;QAEnF,IACE,mBAAmB,KAAK,IAAI;AAC5B,YAAA,mBAAmB,KAAK,EAAE;YAC1B,OAAO,CAAC,qBAAqB,EAC7B;AACA,YAAA,MAAM,YAAY,GAAG,WAAW,CAAC,mBAAmB,CAAC;AACrD,YAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;AAClB,gBAAA,OAAO,CAAC,qBAAqB,CAAC,YAAY,CAAC;YAC7C;iBAAO;AACL,gBAAA,IAAI;oBACF,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC;AAC/C,oBAAA,IAAI,WAAW,KAAK,IAAI,EAAE;AACxB,wBAAA,OAAO,CAAC,qBAAqB,CAAC,WAAW,CAAC;oBAC5C;gBACF;gBAAE,OAAO,KAAK,EAAE;AACd,oBAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;gBACtB;YACF;QACF;;AAGA,QAAA,KAAK,CAAC;aACH,IAAI,CACH,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,EAClD,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,KAAK,IAAI,CAAC,EACjC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,KAAK,EAAE,CAAC,EAC/B,kBAAkB,CAAC,UAAU,CAAC;AAE/B,aAAA,SAAS,CAAC,CAAC,iBAAiB,KAAI;AAC/B,YAAA,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;gBACzB;YACF;AACA,YAAA,MAAM,YAAY,GAAG,WAAW,CAAC,iBAAiB,CAAC;AACnD,YAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;AAClB,gBAAA,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC;YACpC;iBAAO;AACL,gBAAA,IAAI;oBACF,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC;AAC/C,oBAAA,IAAI,WAAW,KAAK,IAAI,EAAE;AACxB,wBAAA,OAAO,CAAC,YAAY,CAAC,WAAW,CAAC;oBACnC;gBACF;gBAAE,OAAO,KAAK,EAAE;AACd,oBAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;gBACtB;YACF;AACF,QAAA,CAAC,CAAC;;AAGJ,QAAA,IAAI,OAAsB;AAE1B,QAAA,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AAC5B,YAAA,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC;QACxC;AAAO,aAAA,IAAI,OAAO,CAAC,MAAM,YAAY,UAAU,EAAE;AAC/C,YAAA,OAAO,GAAG,OAAO,CAAC,MAAM;QAC1B;aAAO;AACL,YAAA,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC;QACnC;AAEA,QAAA,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AAC/D,YAAA,MAAM,eAAe,GAAG,SAAS,CAAC,KAAK,CAAC;YACxC,IAAI,eAAe,KAAK,IAAI,IAAI,OAAO,EAAE,iBAAiB,EAAE,+BAA+B,EAAE;gBAC3F;YACF;YAEA,aAAa,CAAC,kBAAkB,CAAC,OAAO,CAAC,aAAa,EAAE,eAAe,EAAE;AACvE,gBAAA,GAAG,sBAAsB,CAAC,OAAO,EAAE,aAAa,CAAC;AACjD,gBAAA,mBAAmB,EAAE,OAAO,CAAC,aAAa,EAAE,mBAAmB,IAAI;AACpE,aAAA,CAAC;AACJ,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC,CAAC;AACJ;;SC/NgB,eAAe,CAAI,MAAiB,EAAE,EAAU,EAAE,QAAmB,EAAA;AACnF,IAAA,IAAI,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE;QAC5B,wBAAwB,CAAC,eAAe,CAAC;IAC3C;IACA,MAAM,gBAAgB,GAAG,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC;AAErD,IAAA,OAAO,qBAAqB,CAAC,gBAAgB,EAAE,MAAK;AAClD,QAAA,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE;AACpB,YAAA,OAAO,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,kBAAkB,EAAE,CAAC,CAAC;QACpF;aAAO;AACL,YAAA,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC;QACnC;AACF,IAAA,CAAC,CAAC;AACJ;;AChBM,SAAU,aAAa,CAAC,EAAc,EAAE,QAAmB,EAAA;AAC/D,IAAA,IAAI,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE;QAC5B,wBAAwB,CAAC,aAAa,CAAC;IACzC;IACA,MAAM,gBAAgB,GAAG,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC;AAErD,IAAA,qBAAqB,CAAC,gBAAgB,EAAE,MAAK;QAC3C,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC;AAClC,IAAA,CAAC,CAAC;AACJ;;SCJgB,YAAY,CAC1B,MAAqB,EACrB,IAA0B,EAC1B,OAA6B,EAAA;IAE7B,IAAI,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE;QACrC,wBAAwB,CAAC,YAAY,CAAC;IACxC;IACA,MAAM,gBAAgB,GAAG,OAAO,EAAE,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC;AAE9D,IAAA,qBAAqB,CAAC,gBAAgB,EAAE,MAAK;AAC3C,QAAA,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,iBAAiB,KAAI;YAChE,IAAI,CAAC,iBAAiB,CAAC;AACzB,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC,CAAC;AACJ;;ACnBM,SAAU,kBAAkB,CAAU,OAA2B,EAAE,QAAmB,EAAA;AAC1F,IAAA,IAAI,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE;QAC5B,wBAAwB,CAAC,kBAAkB,CAAC;IAC9C;IACA,MAAM,gBAAgB,GAAG,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC;AACrD,IAAA,qBAAqB,CAAC,gBAAgB,EAAE,MAAK;QAC3C,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,OAAO,CAAC,MAAM,EAAE,KAAK,OAAO,EAAE;AAChC,gBAAA,MAAM,OAAO,CAAC,KAAK,EAAE;YACvB;AACF,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC,CAAC;AACJ;;ACIM,SAAU,qBAAqB,CACnC,MAA0B,EAC1B,OAAsC,EAAA;IAEtC,IAAI,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE;QACrC,wBAAwB,CAAC,qBAAqB,CAAC;IACjD;IACA,MAAM,gBAAgB,GAAG,OAAO,EAAE,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC;AAE9D,IAAA,OAAO,qBAAqB,CAAC,gBAAgB,EAAE,MAAK;AAClD,QAAA,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC;AAChC,YAAA,KAAK,EAAE,MAAM,CAAI,MAAM,CAAC,WAAW,EAAE,CAAC;AACtC,YAAA,MAAM,EAAE,MAAM,CAAoB,MAAM,CAAC,MAAM,CAAC;AAChD,YAAA,OAAO,EAAE,MAAM,CAAU,MAAM,CAAC,OAAO,CAAC;AACxC,YAAA,QAAQ,EAAE,MAAM,CAAU,MAAM,CAAC,QAAQ,CAAC;AAC1C,YAAA,MAAM,EAAE,MAAM,CAA0B,MAAM,CAAC,MAAM;AACtD,SAAA,CAAC;AAEF,QAAA,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,KAAI;AAC9D,YAAA,IAAI,QAAQ,YAAY,gBAAgB,EAAE;gBACxC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YAC/C;AAEA,YAAA,IAAI,QAAQ,YAAY,mBAAmB,EAAE;gBAC3C,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAC/C;AAEA,YAAA,IAAI,QAAQ,YAAY,kBAAkB,EAAE;gBAC1C,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC;YAC7C;AAEA,YAAA,IAAI,QAAQ,YAAY,iBAAiB,EAAE;gBACzC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC;gBACzC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC;YACzC;AACF,QAAA,CAAC,CAAC;QAEF,OAAO,MAAM,CAAC,IAAI,CAAC;AACjB,YAAA,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,UAAU,EAAE;AACzC,YAAA,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,UAAU,EAAE;YACvC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,cAAc,CAAC,CAAC,EAAE;AAC3E,gBAAA,YAAY,EAAE;aACf,CAAC;AACF,YAAA,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,UAAU,EAAE;AAC3C,YAAA,SAAS,EAAE,QAAQ,CAAC,MAAK;AACvB,gBAAA,OAAO,CAAC,aAAa,CAAC,OAAO,EAAE;AACjC,YAAA,CAAC,CAAC;AACF,YAAA,QAAQ,EAAE,aAAa,CAAC,QAAQ,CAAC,UAAU,EAAE;AAC7C,YAAA,KAAK,EAAE,QAAQ,CAAC,MAAK;AACnB,gBAAA,OAAO,CAAC,aAAa,CAAC,QAAQ,EAAE;AAClC,YAAA,CAAC,CAAC;AACF,YAAA,KAAK,EAAE,QAAQ,CAAC,MAAK;AACnB,gBAAA,OAAO,aAAa,CAAC,MAAM,EAAE,KAAK,OAAO;AAC3C,YAAA,CAAC,CAAC;AACF,YAAA,OAAO,EAAE,QAAQ,CAAC,MAAK;AACrB,gBAAA,OAAO,aAAa,CAAC,MAAM,EAAE,KAAK,SAAS;AAC7C,YAAA,CAAC,CAAC;AACF,YAAA,OAAO,EAAE,QAAQ,CAAC,MAAK;AACrB,gBAAA,OAAO,aAAa,CAAC,MAAM,EAAE,KAAK,SAAS;AAC7C,YAAA,CAAC,CAAC;AACF,YAAA,QAAQ,EAAE,QAAQ,CAAC,MAAK;AACtB,gBAAA,OAAO,aAAa,CAAC,MAAM,EAAE,KAAK,UAAU;AAC9C,YAAA,CAAC;AACF,SAAA,CAAC;AACJ,IAAA,CAAC,CAAC;AACJ;;SCpEgB,kBAAkB,GAAA;AAChC,IAAA,MAAM,0BAA0B,GAAG,MAAM,CAAU,KAAK,sEAAC;AACzD,IAAA,MAAM,YAAY,GAAG,MAAM,CAAU,KAAK,wDAAC;AAC3C,IAAA,MAAM,qBAAqB,GAAG,MAAM,CAAU,KAAK,iEAAC;AACpD,IAAA,MAAM,gBAAgB,GAAG,MAAM,CAA0B,IAAI,4DAAC;AAC9D,IAAA,MAAM,KAAK,GAAG,MAAM,CAAS,EAAE,iDAAC;AAChC,IAAA,MAAM,4BAA4B,GAAG,MAAM,CAAU,KAAK,wEAAC;AAC3D,IAAA,MAAM,0BAA0B,GAAG,MAAM,CAAU,KAAK,sEAAC;AAEzD,IAAA,MAAM,qBAAqB,GAAG,QAAQ,CAAC,MAAK;QAC1C,QAAQ,gBAAgB,EAAE;AACxB,YAAA,KAAK,QAAQ;AACX,gBAAA,OAAO,QAAQ;AACjB,YAAA,KAAK,QAAQ;AACX,gBAAA,OAAO,QAAQ;AACjB,YAAA,KAAK,QAAQ;AACX,gBAAA,OAAO,QAAQ;AACjB,YAAA,KAAK,cAAc;AACjB,gBAAA,OAAO,cAAc;AACvB,YAAA,KAAK,cAAc;AACjB,gBAAA,OAAO,cAAc;AACvB,YAAA,KAAK,cAAc;AACjB,gBAAA,OAAO,cAAc;AACvB,YAAA;AACE,gBAAA,OAAO,EAAE;;AAEf,IAAA,CAAC,iEAAC;AAEF,IAAA,MAAM,yBAAyB,GAAG,QAAQ,CAAC,MAAK;QAC9C,OAAO,CAAA,EAAG,qBAAqB,EAAE,CAAA,CAAA,EAAI,KAAK,EAAE,CAAA,CAAE,CAAC,IAAI,EAAE;AACvD,IAAA,CAAC,qEAAC;IAEF,OAAO,MAAM,CAAC,IAAI,CAAC;QACjB,0BAA0B;QAC1B,YAAY;QACZ,qBAAqB;QACrB,gBAAgB;QAChB,KAAK;QACL,4BAA4B;QAC5B,0BAA0B;QAC1B,qBAAqB;QACrB,yBAAyB;AACzB,QAAA,QAAQ,CAAC,QAAgB,EAAA;AACvB,YAAA,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;AACnB,YAAA,OAAO,IAAI;QACb,CAAC;AAED,QAAA,mBAAmB,CAAC,IAA6B,EAAA;AAC/C,YAAA,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC;AAC1B,YAAA,OAAO,IAAI;QACb,CAAC;AACD,QAAA,6BAA6B,CAAC,SAAkB,EAAA;AAC9C,YAAA,0BAA0B,CAAC,GAAG,CAAC,SAAS,CAAC;AACzC,YAAA,OAAO,IAAI;QACb,CAAC;AAED,QAAA,eAAe,CAAC,SAAkB,EAAA;AAChC,YAAA,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC;AAC3B,YAAA,OAAO,IAAI;QACb,CAAC;AAED,QAAA,wBAAwB,CAAC,SAAkB,EAAA;AACzC,YAAA,qBAAqB,CAAC,GAAG,CAAC,SAAS,CAAC;AACpC,YAAA,OAAO,IAAI;QACb,CAAC;AAED,QAAA,+BAA+B,CAAC,MAAe,EAAA;AAC7C,YAAA,4BAA4B,CAAC,GAAG,CAAC,MAAM,CAAC;AACxC,YAAA,OAAO,IAAI;QACb,CAAC;AAED,QAAA,6BAA6B,CAAC,MAAe,EAAA;AAC3C,YAAA,0BAA0B,CAAC,GAAG,CAAC,MAAM,CAAC;AACtC,YAAA,OAAO,IAAI;QACb,CAAC;QAED,QAAQ,GAAA;AACN,YAAA,0BAA0B,CAAC,GAAG,CAAC,KAAK,CAAC;AACrC,YAAA,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;AACvB,YAAA,qBAAqB,CAAC,GAAG,CAAC,KAAK,CAAC;AAChC,YAAA,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC;AAC1B,YAAA,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;AACb,YAAA,4BAA4B,CAAC,GAAG,CAAC,KAAK,CAAC;AACvC,YAAA,0BAA0B,CAAC,GAAG,CAAC,KAAK,CAAC;AACrC,YAAA,OAAO,IAAI;QACb;AACD,KAAA,CAAC;AACJ;;SClGgB,UAAU,CACxB,UAAqB,EACrB,EAA+D,EAC/D,OAA2B,EAAA;AAE3B,IAAA,IAAI,OAAO,EAAE,IAAI,EAAE;QACjB,IAAI,IAAI,GAAG,KAAK;AAChB,QAAA,OAAO,MAAM,CAAC,CAAC,SAAS,KAAI;AAC1B,YAAA,MAAM,GAAG,GAAG,UAAU,EAAE;YACxB,SAAS,CAAC,MAAK;gBACb,IAAI,IAAI,EAAE;AACR,oBAAA,EAAE,CAAC,GAAG,EAAE,SAAS,CAAC;gBACpB;gBACA,IAAI,GAAG,IAAI;AACb,YAAA,CAAC,CAAC;QACJ,CAAC,EAAE,OAAO,CAAC;IACb;SAAO;AACL,QAAA,OAAO,MAAM,CAAC,CAAC,SAAS,KAAI;AAC1B,YAAA,MAAM,GAAG,GAAG,UAAU,EAAE;YACxB,SAAS,CAAC,MAAK;AACb,gBAAA,EAAE,CAAC,GAAG,EAAE,SAAS,CAAC;AACpB,YAAA,CAAC,CAAC;QACJ,CAAC,EAAE,OAAO,CAAC;IACb;AACF;;AClBM,SAAU,cAAc,CAAI,MAAiB,EAAE,OAAkC,EAAA;IACrF,IAAI,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE;QACrC,wBAAwB,CAAC,cAAc,CAAC;IAC1C;IACA,MAAM,gBAAgB,GAAG,OAAO,EAAE,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC;IAE9D,MAAM,iBAAiB,GAAG,CAAC,CAAW,EAAE,CAAW,KACjD,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;AAE1D,IAAA,OAAO,qBAAqB,CAAC,gBAAgB,EAAE,MAAK;AAClD,QAAA,MAAM,IAAI,GAAG,YAAY,CAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,MAAA,EAAA,GAAA,EAAA,CAAA,EACvB,MAAM,EAAE,MAAM;AACd,YAAA,KAAK,EAAE,OAAO,EAAE,UAAU,IAAI,iBAAiB;AAC/C,YAAA,WAAW,EAAE,CAAC,OAAO,EAAE,QAAQ,KAAI;AACjC,gBAAA,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;gBACjE,OAAO;oBACL,OAAO;AACP,oBAAA,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,OAAO,IAAI;iBACtC;AACH,YAAA,CAAC,GACD;AAEF,QAAA,OAAO,IAAI,CAAC,UAAU,EAAE;AAC1B,IAAA,CAAC,CAAC;AACJ;;ACvBM,SAAU,wBAAwB,CACtC,GAAW,EACX,IAAyC,EAAA;IAEzC,IAAI,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE;QAClC,wBAAwB,CAAC,wBAAwB,CAAC;IACpD;IAEA,MAAM,gBAAgB,GAAG,IAAI,EAAE,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC;AAE3D,IAAA,OAAO,qBAAqB,CAAC,gBAAgB,EAAE,MAAK;QAClD,MAAM,eAAe,GAAG,MAAe;YACrC,MAAM,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC;YACrC,IAAI,GAAG,KAAK,IAAI;AAAE,gBAAA,OAAO,IAAI,EAAE,YAAY,IAAI,IAAI;YAEnD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;AAC9B,YAAA,OAAO,IAAI,EAAE,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAI,MAAY;AACzD,QAAA,CAAC;AAED,QAAA,MAAM,GAAG,GAAG,MAAM,CAAW,eAAe,EAAE,+CAAC;QAE/C,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,KAAK,GAAG,GAAG,EAAE;YACnB,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;AACzC,gBAAA,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC;YAC9B;iBAAO;AACL,gBAAA,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAClD;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,IAAI,EAAE,cAAc,KAAK,KAAK,EAAE;AAClC,YAAA,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAErC,YAAA,MAAM,eAAe,GAAG,CAAC,KAAmB,KAAI;AAC9C,gBAAA,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG;oBAAE;AAEvB,gBAAA,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,EAAE;oBAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC;oBACzC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAI,MAAY,CAAC;gBAC3D;qBAAO;oBACL,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,YAAY,IAAI,IAAI,CAAC;gBACrC;AACF,YAAA,CAAC;AAED,YAAA,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,eAAe,CAAC;AACnD,YAAA,UAAU,CAAC,SAAS,CAAC,MAAM,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;QACpF;AAEA,QAAA,OAAO,GAAG;AACZ,IAAA,CAAC,CAAC;AACJ;;MCrDa,iCAAiC,CAAA;AACnC,IAAA,iBAAiB,GAAG,KAAK,CAAC,QAAQ,4DAAe;AACjD,IAAA,gBAAgB,GAAG,KAAK,CAAC,QAAQ,2DAAU;AAC3C,IAAA,QAAQ,GAAG,KAAK,CAAS,EAAE,oDAAC;IAC5B,YAAY,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAA0B;AAEpC,IAAA,6BAA6B,GAAG,QAAQ,CAAC,MAAK;AAC/D,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,EAAE;QACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE;QAE1C,OAAO;YACL,QAAQ,EAAE,CAAA,EAAG,KAAK,CAAA,aAAA,CAAe;YACjC,SAAS,EAAE,CAAA,EAAG,KAAK,CAAA,iBAAA,CAAmB;YACtC,SAAS,EAAE,CAAA,EAAG,KAAK,CAAA,gBAAA,CAAkB;YACrC,GAAG,EAAE,CAAA,EAAG,KAAK,CAAA,gBAAA,CAAkB;YAC/B,GAAG,EAAE,CAAA,EAAG,KAAK,CAAA,iBAAA,CAAmB;YAChC,KAAK,EAAE,CAAA,EAAG,KAAK,CAAA,uBAAA,CAAyB;YACxC,OAAO,EAAE,CAAA,EAAG,KAAK,CAAA,cAAA,CAAgB;AACjC,YAAA,GAAG;SACJ;AACH,IAAA,CAAC,yEAAC;uGApBS,iCAAiC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iCAAiC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EARlC;;;;;;AAMT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAPS,YAAY,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FASX,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAZ7C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iCAAiC;oBAC3C,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,OAAO,EAAE,CAAC,YAAY,CAAC;AACvB,oBAAA,QAAQ,EAAE;;;;;;AAMT,EAAA;AACF,iBAAA;;;MCVY,aAAa,CAAA;AACjB,IAAA,SAAS,CAAO,KAAQ,EAAE,OAAwB,EAAE,OAAiB,EAAA;QAC1E,IAAI,OAAO,EAAE;YACX,OAAO,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC;QACrC;AAEA,QAAA,OAAO,OAAO,CAAC,KAAK,CAAC;IACvB;uGAPW,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;qGAAb,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA;;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBAHzB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE;AACP,iBAAA;;;ACJD;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"ngx-extra.mjs","sources":["../../../projects/ngx-extra/src/lib/utils/create-signal-change-notifier.ts","../../../projects/ngx-extra/src/lib/helpers.ts","../../../projects/ngx-extra/src/lib/utils/reactive-query-param.ts","../../../projects/ngx-extra/src/lib/utils/debounced-signal.ts","../../../projects/ngx-extra/src/lib/utils/during-destroy.ts","../../../projects/ngx-extra/src/lib/utils/throw-resource-error.ts","../../../projects/ngx-extra/src/lib/utils/abstract-control-signal.ts","../../../projects/ngx-extra/src/lib/misc/slim-component-state.ts","../../../projects/ngx-extra/src/lib/utils/pairwise-signal.ts","../../../projects/ngx-extra/src/lib/utils/reactive-local-storage-item.ts","../../../projects/ngx-extra/src/lib/components/reactive-form-error-message.component.ts","../../../projects/ngx-extra/src/lib/pipes/memoize-fn.pipe.ts","../../../projects/ngx-extra/src/ngx-extra.ts"],"sourcesContent":["import { Signal, signal } from \"@angular/core\";\n\nexport type SignalChangeNotifier = {\n notify: () => void;\n listen: Signal<number | null>;\n};\n\nexport function createSignalChangeNotifier() {\n const sourceSignal = signal<number | null>(null);\n\n return Object.seal({\n notify: () => {\n sourceSignal.update((v) => (v === null ? 1 : v + 1));\n },\n listen: sourceSignal.asReadonly()\n }) satisfies SignalChangeNotifier;\n}\n","/**\n * Removes all null and undefined values from an object.\n * @param obj - The object to clean. If null or undefined, returns an empty object.\n * @returns A new object with all nullish values filtered out.\n */\nexport function cleanNullishFromObject(obj?: object): Record<string, any> {\n if (obj == null) return {};\n return Object.fromEntries(Object.entries(obj).filter(([, v]) => v != null));\n}\n\n/**\n * Checks if an object contains any null or undefined values.\n * @param obj - The object to check. If null or undefined, returns false.\n * @returns True if the object contains at least one nullish value, false otherwise.\n */\nexport function hasNullishInObject(obj?: object): boolean {\n if (obj == null) return false;\n return Object.values(obj).some((val) => val == null);\n}\n","import {\n DestroyRef,\n Injectable,\n Injector,\n Signal,\n assertInInjectionContext,\n effect,\n inject,\n isDevMode,\n isSignal,\n runInInjectionContext,\n untracked\n} from \"@angular/core\";\nimport { takeUntilDestroyed, toObservable } from \"@angular/core/rxjs-interop\";\nimport { ActivatedRoute, NavigationExtras, Router } from \"@angular/router\";\nimport LzString from \"lz-string\";\nimport { Observable, filter, map } from \"rxjs\";\nimport { createSignalChangeNotifier } from \"./create-signal-change-notifier\";\nimport { cleanNullishFromObject } from \"../helpers\";\n\nexport type SlimNavigationExtras = Pick<\n NavigationExtras,\n | \"queryParamsHandling\"\n | \"onSameUrlNavigation\"\n | \"replaceUrl\"\n | \"skipLocationChange\"\n | \"preserveFragment\"\n>;\n\nexport type ReactiveQueryParamOptions<T> = {\n queryParamKey: string;\n source: Signal<T> | Observable<T>;\n parse?: (rawData: any) => T | null;\n handleInitialSnapshot?: (payload: T) => void;\n handleStream?: (payload: T) => void;\n injector?: Injector;\n routerOptions?: SlimNavigationExtras;\n base64EncodingOptions?: {\n disableEncoding?: boolean;\n disableJsonStringifyWhenNoEncoding?: boolean;\n };\n queryParamOptions?: {\n blackListedValues?: any[];\n preserveStaleOnBlacklistedValue?: boolean;\n };\n};\n\n@Injectable({ providedIn: \"root\" })\nclass ReactiveQueryParamGlobalHandler {\n private router = inject(Router);\n\n private schedulerNotifier = createSignalChangeNotifier();\n private currentKeys: Record<string, string | null> = {};\n private navigationExtras: SlimNavigationExtras = {};\n\n constructor() {\n effect(() => {\n if (!this.schedulerNotifier.listen()) {\n return;\n }\n untracked(() => {\n this.router\n .navigate([], {\n queryParams: this.currentKeys,\n ...this.navigationExtras\n })\n .then(() => {\n this.currentKeys = {};\n this.navigationExtras = {};\n });\n });\n });\n }\n\n scheduleNavigation(key: string, value: string | null, navOptions: SlimNavigationExtras) {\n this.currentKeys[key] = value;\n this.setCurrentNavigationExtras(navOptions);\n this.schedulerNotifier.notify();\n }\n\n private setCurrentNavigationExtras(config: Partial<SlimNavigationExtras> = {}) {\n const {\n queryParamsHandling,\n onSameUrlNavigation,\n replaceUrl,\n skipLocationChange,\n preserveFragment\n } = config;\n\n if (queryParamsHandling || queryParamsHandling === \"\") {\n this.navigationExtras.queryParamsHandling = queryParamsHandling;\n }\n if (onSameUrlNavigation) {\n this.navigationExtras.onSameUrlNavigation = onSameUrlNavigation;\n }\n if (replaceUrl) {\n this.navigationExtras.replaceUrl = replaceUrl;\n }\n if (skipLocationChange) {\n this.navigationExtras.skipLocationChange = skipLocationChange;\n }\n if (preserveFragment) {\n this.navigationExtras.preserveFragment = preserveFragment;\n }\n }\n}\n\nexport function reactiveQueryParam<T>(options: ReactiveQueryParamOptions<T>) {\n if (isDevMode() && !options?.injector) {\n assertInInjectionContext(reactiveQueryParam);\n }\n\n const assertedInjector = options.injector ?? inject(Injector);\n\n const blackList = options.queryParamOptions?.blackListedValues ?? [null, undefined, \"\"];\n\n const useEncoding = !options?.base64EncodingOptions?.disableEncoding;\n\n const useStringifyOnNoEncoding =\n !options?.base64EncodingOptions?.disableJsonStringifyWhenNoEncoding;\n\n const deserialize = (payload: string): T => {\n if (useEncoding) {\n const decoded = LzString.decompressFromEncodedURIComponent(payload);\n return JSON.parse(decoded);\n }\n\n if (!useEncoding && useStringifyOnNoEncoding) {\n return JSON.parse(payload);\n } else {\n try {\n return JSON.parse(payload);\n } catch {\n return payload as T;\n }\n }\n };\n\n const serialize = (value: T | null | undefined): string | null => {\n if (blackList.some((elem) => elem === value)) {\n return null;\n }\n if (useEncoding) {\n return LzString.compressToEncodedURIComponent(JSON.stringify(value));\n }\n\n if (!useEncoding && useStringifyOnNoEncoding) {\n return JSON.stringify(value);\n } else {\n if (typeof value === \"string\") {\n return value;\n } else {\n return JSON.stringify(value);\n }\n }\n };\n\n runInInjectionContext(assertedInjector, () => {\n const globalHandler = inject(ReactiveQueryParamGlobalHandler);\n const route = inject(ActivatedRoute);\n const destroyRef = inject(DestroyRef);\n\n // Handle initial snapshot\n const payloadFromSnapshot = route.snapshot.queryParamMap.get(options.queryParamKey);\n\n if (\n payloadFromSnapshot !== null &&\n payloadFromSnapshot !== \"\" &&\n options.handleInitialSnapshot\n ) {\n const deserialized = deserialize(payloadFromSnapshot);\n if (!options.parse) {\n options.handleInitialSnapshot(deserialized);\n } else {\n try {\n const parsedValue = options.parse(deserialized);\n if (parsedValue !== null) {\n options.handleInitialSnapshot(parsedValue);\n }\n } catch (error) {\n console.error(error);\n }\n }\n }\n\n // Handle query param stream\n route.queryParamMap\n .pipe(\n map((params) => params.get(options.queryParamKey)),\n filter((value) => value !== null),\n filter((value) => value !== \"\"),\n takeUntilDestroyed(destroyRef)\n )\n .subscribe((payloadFromStream) => {\n if (!options.handleStream) {\n return;\n }\n const deserialized = deserialize(payloadFromStream);\n if (!options.parse) {\n options.handleStream(deserialized);\n } else {\n try {\n const parsedValue = options.parse(deserialized);\n if (parsedValue !== null) {\n options.handleStream(parsedValue);\n }\n } catch (error) {\n console.error(error);\n }\n }\n });\n\n // Handle source changes\n let source$: Observable<T>;\n\n if (isSignal(options.source)) {\n source$ = toObservable(options.source);\n } else if (options.source instanceof Observable) {\n source$ = options.source;\n } else {\n throw new Error(\"Invalid source\");\n }\n\n source$.pipe(takeUntilDestroyed(destroyRef)).subscribe((value) => {\n const serializedValue = serialize(value);\n if (serializedValue === null && options?.queryParamOptions?.preserveStaleOnBlacklistedValue) {\n return;\n }\n\n globalHandler.scheduleNavigation(options.queryParamKey, serializedValue, {\n ...cleanNullishFromObject(options?.routerOptions),\n queryParamsHandling: options.routerOptions?.queryParamsHandling ?? \"merge\"\n });\n });\n });\n}\n","import {\n Signal,\n Injector,\n isDevMode,\n assertInInjectionContext,\n inject,\n runInInjectionContext,\n isSignal\n} from \"@angular/core\";\nimport { toSignal, toObservable, takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\nimport { debounceTime } from \"rxjs\";\n\nexport function debouncedSignal<T>(source: Signal<T>, ms: number, injector?: Injector) {\n if (isDevMode() && !injector) {\n assertInInjectionContext(debouncedSignal);\n }\n const assertedInjector = injector ?? inject(Injector);\n\n return runInInjectionContext(assertedInjector, () => {\n if (isSignal(source)) {\n return toSignal(toObservable(source).pipe(debounceTime(ms), takeUntilDestroyed()));\n } else {\n throw new Error(\"Invalid source\");\n }\n });\n}\n","import {\n Injector,\n isDevMode,\n assertInInjectionContext,\n inject,\n runInInjectionContext,\n DestroyRef\n} from \"@angular/core\";\n\nexport function duringDestroy(fn: () => void, injector?: Injector) {\n if (isDevMode() && !injector) {\n assertInInjectionContext(duringDestroy);\n }\n const assertedInjector = injector ?? inject(Injector);\n\n runInInjectionContext(assertedInjector, () => {\n inject(DestroyRef).onDestroy(fn);\n });\n}\n","import { HttpResourceRef } from \"@angular/common/http\";\nimport {\n Injector,\n assertInInjectionContext,\n inject,\n runInInjectionContext,\n effect,\n isDevMode\n} from \"@angular/core\";\n\nexport function throwResourceError<T = any>(resorce: HttpResourceRef<T>, injector?: Injector) {\n if (isDevMode() && !injector) {\n assertInInjectionContext(throwResourceError);\n }\n const assertedInjector = injector ?? inject(Injector);\n runInInjectionContext(assertedInjector, () => {\n effect(() => {\n if (resorce.status() === \"error\") {\n throw resorce.error();\n }\n });\n });\n}\n","import {\n assertInInjectionContext,\n computed,\n inject,\n Injector,\n isDevMode,\n runInInjectionContext,\n signal\n} from \"@angular/core\";\nimport { takeUntilDestroyed, toSignal } from \"@angular/core/rxjs-interop\";\nimport {\n AbstractControl,\n FormControlStatus,\n FormResetEvent,\n PristineChangeEvent,\n StatusChangeEvent,\n TouchedChangeEvent,\n ValidationErrors,\n ValueChangeEvent\n} from \"@angular/forms\";\nimport { map, startWith } from \"rxjs\";\n\ntype AbstractControlSignalOptions = {\n injector?: Injector;\n};\n\nexport function abstractControlSignal<T>(\n source: AbstractControl<T>,\n options?: AbstractControlSignalOptions\n) {\n if (isDevMode() && !options?.injector) {\n assertInInjectionContext(abstractControlSignal);\n }\n const assertedInjector = options?.injector ?? inject(Injector);\n\n return runInInjectionContext(assertedInjector, () => {\n const internalState = Object.seal({\n value: signal<T>(source.getRawValue()),\n status: signal<FormControlStatus>(source.status),\n touched: signal<boolean>(source.touched),\n pristine: signal<boolean>(source.pristine),\n errors: signal<ValidationErrors | null>(source.errors)\n });\n\n source.events.pipe(takeUntilDestroyed()).subscribe((newEvent) => {\n if (newEvent instanceof ValueChangeEvent) {\n internalState.value.set(source.getRawValue());\n }\n\n if (newEvent instanceof PristineChangeEvent) {\n internalState.pristine.set(newEvent.pristine);\n }\n\n if (newEvent instanceof TouchedChangeEvent) {\n internalState.touched.set(newEvent.touched);\n }\n\n if (newEvent instanceof StatusChangeEvent) {\n internalState.status.set(newEvent.status);\n internalState.errors.set(source.errors);\n }\n });\n\n return Object.seal({\n errors: internalState.errors.asReadonly(),\n value: internalState.value.asReadonly(),\n reset: toSignal(source.events.pipe(map((e) => e instanceof FormResetEvent)), {\n initialValue: false\n }),\n touched: internalState.touched.asReadonly(),\n untouched: computed(() => {\n return !internalState.touched();\n }),\n pristine: internalState.pristine.asReadonly(),\n dirty: computed(() => {\n return !internalState.pristine();\n }),\n valid: computed(() => {\n return internalState.status() === \"VALID\";\n }),\n invalid: computed(() => {\n return internalState.status() === \"INVALID\";\n }),\n pending: computed(() => {\n return internalState.status() === \"PENDING\";\n }),\n disabled: computed(() => {\n return internalState.status() === \"DISABLED\";\n })\n });\n });\n}\n","import { signal, computed, Signal, WritableSignal } from \"@angular/core\";\r\nimport { ManipulationMode } from \"../types\";\r\n\r\nexport type SlimComponentState = {\r\n isCheckBoxSelectionEnabled: WritableSignal<boolean>;\r\n canSelectRow: WritableSignal<boolean>;\r\n canSelectMultipleItem: WritableSignal<boolean>;\r\n manipulationMode: WritableSignal<ManipulationMode | null>;\r\n title: WritableSignal<string>;\r\n isAnyNetworkOperationRunning: WritableSignal<boolean>;\r\n isDataManipulationUiActive: WritableSignal<boolean>;\r\n manipulationModeLabel: Signal<string>;\r\n titleWithManipulationMode: Signal<string>;\r\n setTitle(newTitle: string): SlimComponentState;\r\n setManipulationMode(mode: ManipulationMode | null): SlimComponentState;\r\n setIsCheckBoxSelectionEnabled(canSelect: boolean): SlimComponentState;\r\n setCanSelectRow(canSelect: boolean): SlimComponentState;\r\n setCanSelectMultipleItem(canSelect: boolean): SlimComponentState;\r\n setIsAnyNetworkOperationRunning(status: boolean): SlimComponentState;\r\n setIsDataManipulationUiActive(status: boolean): SlimComponentState;\r\n resetAll(): SlimComponentState;\r\n};\r\n\r\nexport function slimComponentState(): SlimComponentState {\r\n const isCheckBoxSelectionEnabled = signal<boolean>(false);\r\n const canSelectRow = signal<boolean>(false);\r\n const canSelectMultipleItem = signal<boolean>(false);\r\n const manipulationMode = signal<ManipulationMode | null>(null);\r\n const title = signal<string>(\"\");\r\n const isAnyNetworkOperationRunning = signal<boolean>(false);\r\n const isDataManipulationUiActive = signal<boolean>(false);\r\n\r\n const manipulationModeLabel = computed(() => {\r\n switch (manipulationMode()) {\r\n case \"create\":\r\n return \"Create\";\r\n case \"update\":\r\n return \"Update\";\r\n case \"delete\":\r\n return \"Delete\";\r\n case \"create-child\":\r\n return \"Create Child\";\r\n case \"update-child\":\r\n return \"Update Child\";\r\n case \"delete-child\":\r\n return \"Delete Child\";\r\n default:\r\n return \"\";\r\n }\r\n });\r\n\r\n const titleWithManipulationMode = computed(() => {\r\n return `${manipulationModeLabel()} ${title()}`.trim();\r\n });\r\n\r\n return Object.seal({\r\n isCheckBoxSelectionEnabled,\r\n canSelectRow,\r\n canSelectMultipleItem,\r\n manipulationMode,\r\n title,\r\n isAnyNetworkOperationRunning,\r\n isDataManipulationUiActive,\r\n manipulationModeLabel,\r\n titleWithManipulationMode,\r\n setTitle(newTitle: string) {\r\n title.set(newTitle);\r\n return this;\r\n },\r\n\r\n setManipulationMode(mode: ManipulationMode | null): SlimComponentState {\r\n manipulationMode.set(mode);\r\n return this;\r\n },\r\n setIsCheckBoxSelectionEnabled(canSelect: boolean): SlimComponentState {\r\n isCheckBoxSelectionEnabled.set(canSelect);\r\n return this;\r\n },\r\n\r\n setCanSelectRow(canSelect: boolean): SlimComponentState {\r\n canSelectRow.set(canSelect);\r\n return this;\r\n },\r\n\r\n setCanSelectMultipleItem(canSelect: boolean): SlimComponentState {\r\n canSelectMultipleItem.set(canSelect);\r\n return this;\r\n },\r\n\r\n setIsAnyNetworkOperationRunning(status: boolean): SlimComponentState {\r\n isAnyNetworkOperationRunning.set(status);\r\n return this;\r\n },\r\n\r\n setIsDataManipulationUiActive(status: boolean): SlimComponentState {\r\n isDataManipulationUiActive.set(status);\r\n return this;\r\n },\r\n\r\n resetAll(): SlimComponentState {\r\n isCheckBoxSelectionEnabled.set(false);\r\n canSelectRow.set(false);\r\n canSelectMultipleItem.set(false);\r\n manipulationMode.set(null);\r\n title.set(\"\");\r\n isAnyNetworkOperationRunning.set(false);\r\n isDataManipulationUiActive.set(false);\r\n return this;\r\n }\r\n });\r\n}\r\n","import {\n assertInInjectionContext,\n inject,\n Injector,\n isDevMode,\n linkedSignal,\n runInInjectionContext,\n Signal,\n ValueEqualityFn\n} from \"@angular/core\";\n\ntype Value<T> = { current: T; previous: T | null };\n\ntype PairwiseSignalOptions<T> = {\n equalityFn?: ValueEqualityFn<Value<T>>;\n injector?: Injector;\n};\n\nexport function pairwiseSignal<T>(source: Signal<T>, options?: PairwiseSignalOptions<T>) {\n if (isDevMode() && !options?.injector) {\n assertInInjectionContext(pairwiseSignal);\n }\n const assertedInjector = options?.injector ?? inject(Injector);\n\n const defaultEqualityFn = (a: Value<T>, b: Value<T>) =>\n JSON.stringify(a.previous) === JSON.stringify(b.current);\n\n return runInInjectionContext(assertedInjector, () => {\n const pair = linkedSignal<T, Value<T>>({\n source: source,\n equal: options?.equalityFn ?? defaultEqualityFn,\n computation: (current, previous) => {\n console.log(JSON.stringify(previous) === JSON.stringify(current));\n return {\n current,\n previous: previous?.value.current ?? null\n };\n }\n });\n\n return pair.asReadonly();\n });\n}\n","import {\r\n assertInInjectionContext,\r\n DestroyRef,\r\n effect,\r\n inject,\r\n Injector,\r\n isDevMode,\r\n runInInjectionContext,\r\n signal,\r\n type WritableSignal\r\n} from \"@angular/core\";\r\n\r\nexport type ReactiveLocalStorageItemOptions<T> = {\r\n defaultValue?: T;\r\n parse?: (raw: unknown) => T;\r\n syncAcrossTabs?: boolean;\r\n injector?: Injector;\r\n};\r\n\r\nexport function reactiveLocalStorageItem<T>(\r\n key: string,\r\n opts?: ReactiveLocalStorageItemOptions<T>\r\n): WritableSignal<T | null> {\r\n if (isDevMode() && !opts?.injector) {\r\n assertInInjectionContext(reactiveLocalStorageItem);\r\n }\r\n\r\n const assertedInjector = opts?.injector ?? inject(Injector);\r\n\r\n return runInInjectionContext(assertedInjector, () => {\r\n const readFromStorage = (): T | null => {\r\n const raw = localStorage.getItem(key);\r\n if (raw === null) return opts?.defaultValue ?? null;\r\n\r\n const parsed = JSON.parse(raw);\r\n return opts?.parse ? opts.parse(parsed) : (parsed as T);\r\n };\r\n\r\n const sig = signal<T | null>(readFromStorage());\r\n\r\n effect(() => {\r\n const value = sig();\r\n if (value === null || value === undefined) {\r\n localStorage.removeItem(key);\r\n } else {\r\n localStorage.setItem(key, JSON.stringify(value));\r\n }\r\n });\r\n\r\n if (opts?.syncAcrossTabs !== false) {\r\n const destroyRef = inject(DestroyRef);\r\n\r\n const onStorageChange = (event: StorageEvent) => {\r\n if (event.key !== key) return;\r\n\r\n if (event.newValue !== null) {\r\n const parsed = JSON.parse(event.newValue);\r\n sig.set(opts?.parse ? opts.parse(parsed) : (parsed as T));\r\n } else {\r\n sig.set(opts?.defaultValue ?? null);\r\n }\r\n };\r\n\r\n window.addEventListener(\"storage\", onStorageChange);\r\n destroyRef.onDestroy(() => window.removeEventListener(\"storage\", onStorageChange));\r\n }\r\n\r\n return sig;\r\n });\r\n}\r\n","import { Component, computed, input, ChangeDetectionStrategy } from \"@angular/core\";\nimport { FormControl } from \"@angular/forms\";\nimport { KeyValuePipe } from \"@angular/common\";\n\n@Component({\n selector: \"ngx-reactive-form-error-message\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [KeyValuePipe],\n template: `\n @for (item of finalErrorsWithCodeAndMessage() | keyvalue; track item.key) {\n @if (formControlToBind().errors?.[item.key]) {\n <small [class]=\"cssClass()\">{{ item.value }}</small>\n }\n }\n `\n})\nexport class ReactiveFormErrorMessageComponent {\n readonly formControlToBind = input.required<FormControl>();\n readonly formControlLabel = input.required<string>();\n readonly cssClass = input<string>(\"\");\n readonly customErrors = input<Record<string, string>>();\n\n protected readonly finalErrorsWithCodeAndMessage = computed(() => {\n const label = this.formControlLabel();\n const customKv = this.customErrors() ?? {};\n\n return {\n required: `${label} is required.`,\n maxlength: `${label} must be smaller.`,\n minlength: `${label} must be bigger.`,\n min: `${label} must be bigger.`,\n max: `${label} must be smaller.`,\n email: `${label} must be a valid email.`,\n pattern: `${label} is not valid.`,\n ...customKv\n };\n });\n}\n","import { Pipe, type PipeTransform } from \"@angular/core\";\r\n\r\n@Pipe({\r\n name: \"ngxMemoizeFn\"\r\n})\r\nexport class MemoizeFnPipe implements PipeTransform {\r\n public transform<T, R>(value: T, handler: (value: T) => R, context?: unknown): R {\r\n if (context) {\r\n return handler.call(context, value);\r\n }\r\n\r\n return handler(value);\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/types/ngx-extra.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
|
-
import { Signal, Injector, WritableSignal,
|
|
2
|
+
import { Signal, Injector, WritableSignal, ValueEqualityFn, PipeTransform } from '@angular/core';
|
|
3
3
|
import { NavigationExtras } from '@angular/router';
|
|
4
4
|
import { Observable } from 'rxjs';
|
|
5
5
|
import { HttpResourceRef } from '@angular/common/http';
|
|
@@ -38,11 +38,6 @@ declare function debouncedSignal<T>(source: Signal<T>, ms: number, injector?: In
|
|
|
38
38
|
|
|
39
39
|
declare function duringDestroy(fn: () => void, injector?: Injector): void;
|
|
40
40
|
|
|
41
|
-
type RxSubscriberOptions = {
|
|
42
|
-
injector?: Injector;
|
|
43
|
-
};
|
|
44
|
-
declare function rxSubscriber<T>(source: Observable<T>, next: (payload: T) => void, options?: RxSubscriberOptions): void;
|
|
45
|
-
|
|
46
41
|
declare function throwResourceError<T = any>(resorce: HttpResourceRef<T>, injector?: Injector): void;
|
|
47
42
|
|
|
48
43
|
type AbstractControlSignalOptions = {
|
|
@@ -85,11 +80,6 @@ type SlimComponentState = {
|
|
|
85
80
|
};
|
|
86
81
|
declare function slimComponentState(): SlimComponentState;
|
|
87
82
|
|
|
88
|
-
interface SlimEffectOptions extends CreateEffectOptions {
|
|
89
|
-
lazy?: boolean;
|
|
90
|
-
}
|
|
91
|
-
declare function slimEffect<T>(dependency: Signal<T>, fn: (dependency: T, onCleanup: EffectCleanupRegisterFn) => void, options?: SlimEffectOptions): _angular_core.EffectRef;
|
|
92
|
-
|
|
93
83
|
type Value<T> = {
|
|
94
84
|
current: T;
|
|
95
85
|
previous: T | null;
|
|
@@ -132,5 +122,5 @@ declare class MemoizeFnPipe implements PipeTransform {
|
|
|
132
122
|
static ɵpipe: _angular_core.ɵɵPipeDeclaration<MemoizeFnPipe, "ngxMemoizeFn", true>;
|
|
133
123
|
}
|
|
134
124
|
|
|
135
|
-
export { MemoizeFnPipe, ReactiveFormErrorMessageComponent, abstractControlSignal, createSignalChangeNotifier, debouncedSignal, duringDestroy, pairwiseSignal, reactiveLocalStorageItem, reactiveQueryParam,
|
|
136
|
-
export type { ManipulationMode, ReactiveLocalStorageItemOptions, ReactiveQueryParamOptions,
|
|
125
|
+
export { MemoizeFnPipe, ReactiveFormErrorMessageComponent, abstractControlSignal, createSignalChangeNotifier, debouncedSignal, duringDestroy, pairwiseSignal, reactiveLocalStorageItem, reactiveQueryParam, slimComponentState, throwResourceError };
|
|
126
|
+
export type { ManipulationMode, ReactiveLocalStorageItemOptions, ReactiveQueryParamOptions, SignalChangeNotifier, SlimComponentState, SlimNavigationExtras };
|