@radix-ng/primitives 0.20.2 → 0.21.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/avatar/src/avatar-fallback.directive.d.ts +1 -1
- package/avatar/src/avatar-image.directive.d.ts +3 -3
- package/compodoc/documentation.json +5818 -1682
- package/core/index.d.ts +1 -0
- package/core/src/id-generator.d.ts +12 -0
- package/esm2022/avatar/src/avatar-fallback.directive.mjs +6 -8
- package/esm2022/avatar/src/avatar-image.directive.mjs +4 -3
- package/esm2022/core/index.mjs +2 -1
- package/esm2022/core/src/create-inject-context/index.mjs +2 -2
- package/esm2022/core/src/id-generator.mjs +43 -0
- package/esm2022/popover/index.mjs +14 -4
- package/esm2022/popover/src/popover-anchor.directive.mjs +70 -0
- package/esm2022/popover/src/popover-anchor.token.mjs +3 -0
- package/esm2022/popover/src/popover-arrow.directive.mjs +12 -7
- package/esm2022/popover/src/popover-close.directive.mjs +16 -4
- package/esm2022/popover/src/popover-close.token.mjs +3 -0
- package/esm2022/popover/src/popover-content-attributes.component.mjs +70 -0
- package/esm2022/popover/src/popover-content-attributes.token.mjs +3 -0
- package/esm2022/popover/src/popover-content.directive.mjs +120 -84
- package/esm2022/popover/src/popover-root.directive.mjs +232 -64
- package/esm2022/popover/src/popover-root.inject.mjs +4 -4
- package/esm2022/popover/src/popover-trigger.directive.mjs +5 -7
- package/esm2022/popover/src/popover.types.mjs +18 -1
- package/esm2022/popover/src/popover.utils.mjs +4 -6
- package/esm2022/switch/src/switch-input.directive.mjs +16 -7
- package/esm2022/switch/src/switch-root.directive.mjs +59 -14
- package/esm2022/switch/src/switch-thumb.directive.mjs +3 -3
- package/esm2022/toggle/index.mjs +2 -2
- package/esm2022/toggle/src/toggle-visually-hidden-input.directive.mjs +31 -0
- package/esm2022/toggle/src/toggle.directive.mjs +37 -8
- package/fesm2022/radix-ng-primitives-avatar.mjs +8 -9
- package/fesm2022/radix-ng-primitives-avatar.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-core.mjs +44 -3
- package/fesm2022/radix-ng-primitives-core.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-popover.mjs +672 -303
- package/fesm2022/radix-ng-primitives-popover.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-switch.mjs +76 -22
- package/fesm2022/radix-ng-primitives-switch.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-toggle.mjs +45 -15
- package/fesm2022/radix-ng-primitives-toggle.mjs.map +1 -1
- package/package.json +1 -1
- package/popover/index.d.ts +5 -1
- package/popover/src/popover-anchor.directive.d.ts +28 -0
- package/popover/src/popover-anchor.token.d.ts +3 -0
- package/popover/src/popover-arrow.directive.d.ts +8 -5
- package/popover/src/popover-close.directive.d.ts +1 -1
- package/popover/src/popover-close.token.d.ts +3 -0
- package/popover/src/popover-content-attributes.component.d.ts +17 -0
- package/popover/src/popover-content-attributes.token.d.ts +3 -0
- package/popover/src/popover-content.directive.d.ts +36 -23
- package/popover/src/popover-root.directive.d.ts +89 -18
- package/popover/src/popover-root.inject.d.ts +2 -1
- package/popover/src/popover-trigger.directive.d.ts +3 -5
- package/popover/src/popover.types.d.ts +14 -3
- package/switch/src/switch-input.directive.d.ts +2 -0
- package/switch/src/switch-root.directive.d.ts +33 -5
- package/toggle/index.d.ts +2 -2
- package/toggle/src/toggle-visually-hidden-input.directive.d.ts +6 -0
- package/toggle/src/toggle.directive.d.ts +19 -2
- package/esm2022/popover/src/popover-root.token.mjs +0 -3
- package/esm2022/toggle/src/toggle-input.directive.mjs +0 -30
- package/popover/src/popover-root.token.d.ts +0 -3
- package/toggle/src/toggle-input.directive.d.ts +0 -6
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"radix-ng-primitives-avatar.mjs","sources":["../../../packages/primitives/avatar/src/avatar-root.directive.ts","../../../packages/primitives/avatar/src/avatar.config.ts","../../../packages/primitives/avatar/src/avatar-fallback.directive.ts","../../../packages/primitives/avatar/src/avatar-image.directive.ts","../../../packages/primitives/avatar/radix-ng-primitives-avatar.ts"],"sourcesContent":["import { Directive, Injectable, signal } from '@angular/core';\n\nexport type RdxImageLoadingStatus = 'idle' | 'loading' | 'loaded' | 'error';\n\n@Injectable()\nexport class RdxAvatarRootContext {\n readonly imageLoadingStatus = signal<RdxImageLoadingStatus>('loading');\n}\n\n@Directive({\n selector: 'span[rdxAvatarRoot]',\n exportAs: 'rdxAvatarRoot',\n standalone: true,\n providers: [RdxAvatarRootContext]\n})\nexport class RdxAvatarRootDirective {}\n","import { inject, InjectionToken, Provider } from '@angular/core';\n\nexport interface RdxAvatarConfig {\n /**\n * Define a delay before the fallback is shown.\n * This is useful to only show the fallback for those with slower connections.\n * @default 0\n */\n delayMs: number;\n}\n\nexport const defaultAvatarConfig: RdxAvatarConfig = {\n delayMs: 0\n};\n\nexport const RdxAvatarConfigToken = new InjectionToken<RdxAvatarConfig>('RdxAvatarConfigToken');\n\nexport function provideRdxAvatarConfig(config: Partial<RdxAvatarConfig>): Provider[] {\n return [\n {\n provide: RdxAvatarConfigToken,\n useValue: { ...defaultAvatarConfig, ...config }\n }\n ];\n}\n\nexport function injectAvatarConfig(): RdxAvatarConfig {\n return inject(RdxAvatarConfigToken, { optional: true }) ?? defaultAvatarConfig;\n}\n","import { Directive, effect, inject, input, OnDestroy, signal } from '@angular/core';\nimport { RdxAvatarRootContext } from './avatar-root.directive';\nimport { injectAvatarConfig } from './avatar.config';\n\n@Directive({\n selector: 'span[rdxAvatarFallback]',\n standalone: true,\n exportAs: 'rdxAvatarFallback',\n host: {\n '[style.display]': 'shouldRender ? null : \"none\" '\n }\n})\nexport class RdxAvatarFallbackDirective implements OnDestroy {\n protected readonly avatarRoot = inject(RdxAvatarRootContext);\n\n private readonly config = injectAvatarConfig();\n\n readonly delayMs = input<number>(this.config.delayMs);\n\n protected readonly canRender = signal(false);\n private timeoutId: ReturnType<typeof setTimeout> | null = null;\n\n constructor() {\n effect(\n () => {\n const status = this.avatarRoot.imageLoadingStatus();\n if (status === 'loading') {\n this.startDelayTimer();\n } else {\n this.clearDelayTimer();\n this.canRender.set(
|
1
|
+
{"version":3,"file":"radix-ng-primitives-avatar.mjs","sources":["../../../packages/primitives/avatar/src/avatar-root.directive.ts","../../../packages/primitives/avatar/src/avatar.config.ts","../../../packages/primitives/avatar/src/avatar-fallback.directive.ts","../../../packages/primitives/avatar/src/avatar-image.directive.ts","../../../packages/primitives/avatar/radix-ng-primitives-avatar.ts"],"sourcesContent":["import { Directive, Injectable, signal } from '@angular/core';\n\nexport type RdxImageLoadingStatus = 'idle' | 'loading' | 'loaded' | 'error';\n\n@Injectable()\nexport class RdxAvatarRootContext {\n readonly imageLoadingStatus = signal<RdxImageLoadingStatus>('loading');\n}\n\n@Directive({\n selector: 'span[rdxAvatarRoot]',\n exportAs: 'rdxAvatarRoot',\n standalone: true,\n providers: [RdxAvatarRootContext]\n})\nexport class RdxAvatarRootDirective {}\n","import { inject, InjectionToken, Provider } from '@angular/core';\n\nexport interface RdxAvatarConfig {\n /**\n * Define a delay before the fallback is shown.\n * This is useful to only show the fallback for those with slower connections.\n * @default 0\n */\n delayMs: number;\n}\n\nexport const defaultAvatarConfig: RdxAvatarConfig = {\n delayMs: 0\n};\n\nexport const RdxAvatarConfigToken = new InjectionToken<RdxAvatarConfig>('RdxAvatarConfigToken');\n\nexport function provideRdxAvatarConfig(config: Partial<RdxAvatarConfig>): Provider[] {\n return [\n {\n provide: RdxAvatarConfigToken,\n useValue: { ...defaultAvatarConfig, ...config }\n }\n ];\n}\n\nexport function injectAvatarConfig(): RdxAvatarConfig {\n return inject(RdxAvatarConfigToken, { optional: true }) ?? defaultAvatarConfig;\n}\n","import { computed, Directive, effect, inject, input, OnDestroy, signal } from '@angular/core';\nimport { RdxAvatarRootContext } from './avatar-root.directive';\nimport { injectAvatarConfig } from './avatar.config';\n\n@Directive({\n selector: 'span[rdxAvatarFallback]',\n standalone: true,\n exportAs: 'rdxAvatarFallback',\n host: {\n '[style.display]': 'shouldRender() ? null : \"none\" '\n }\n})\nexport class RdxAvatarFallbackDirective implements OnDestroy {\n protected readonly avatarRoot = inject(RdxAvatarRootContext);\n\n private readonly config = injectAvatarConfig();\n\n readonly delayMs = input<number>(this.config.delayMs);\n\n protected readonly shouldRender = computed(\n () => this.canRender() && this.avatarRoot.imageLoadingStatus() !== 'loaded'\n );\n\n protected readonly canRender = signal(false);\n private timeoutId: ReturnType<typeof setTimeout> | null = null;\n\n constructor() {\n effect(\n () => {\n const status = this.avatarRoot.imageLoadingStatus();\n if (status === 'loading') {\n this.startDelayTimer();\n } else {\n this.clearDelayTimer();\n this.canRender.set(true);\n }\n },\n { allowSignalWrites: true }\n );\n }\n\n private startDelayTimer() {\n this.clearDelayTimer();\n if (this.delayMs() > 0) {\n this.timeoutId = setTimeout(() => {\n this.canRender.set(true);\n }, this.delayMs());\n } else {\n this.canRender.set(true);\n }\n }\n\n private clearDelayTimer() {\n if (this.timeoutId !== null) {\n clearTimeout(this.timeoutId);\n this.timeoutId = null;\n }\n }\n\n ngOnDestroy() {\n this.clearDelayTimer();\n }\n}\n","import { computed, Directive, ElementRef, inject, input, OnInit, output } from '@angular/core';\nimport { RdxAvatarRootContext, RdxImageLoadingStatus } from './avatar-root.directive';\n\n@Directive({\n selector: 'img[rdxAvatarImage]',\n standalone: true,\n exportAs: 'rdxAvatarImage',\n host: {\n '(load)': 'onLoad()',\n '(error)': 'onError()',\n '[style.display]': '(imageLoadingStatus() === \"loaded\")? null : \"none\"'\n }\n})\nexport class RdxAvatarImageDirective implements OnInit {\n private readonly avatarRoot = inject(RdxAvatarRootContext);\n private readonly elementRef = inject(ElementRef<HTMLImageElement>);\n\n readonly src = input<string>();\n\n readonly onLoadingStatusChange = output<RdxImageLoadingStatus>();\n\n protected readonly imageLoadingStatus = computed(() => this.avatarRoot.imageLoadingStatus());\n\n ngOnInit(): void {\n this.nativeElement.src = this.src();\n\n if (!this.nativeElement.src) {\n this.setImageStatus('error');\n } else if (this.nativeElement.complete) {\n this.setImageStatus('loaded');\n } else {\n this.setImageStatus('loading');\n }\n }\n\n onLoad() {\n this.setImageStatus('loaded');\n }\n\n onError() {\n this.setImageStatus('error');\n }\n\n private setImageStatus(status: RdxImageLoadingStatus) {\n this.avatarRoot.imageLoadingStatus.set(status);\n this.onLoadingStatusChange.emit(status);\n }\n\n get nativeElement() {\n return this.elementRef.nativeElement;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import { NG_VALUE_ACCESSOR, NgModel, NgControl, FormControlDirective, FormControlName } from '@angular/forms';
|
2
2
|
import * as i0 from '@angular/core';
|
3
|
-
import { inject, ElementRef, NgZone, booleanAttribute, Directive, Input, assertInInjectionContext, Injector, runInInjectionContext, InjectionToken, ENVIRONMENT_INITIALIZER, DestroyRef, model, computed } from '@angular/core';
|
3
|
+
import { inject, ElementRef, NgZone, booleanAttribute, Directive, Input, assertInInjectionContext, Injector, runInInjectionContext, InjectionToken, ENVIRONMENT_INITIALIZER, DestroyRef, model, computed, APP_ID, Injectable } from '@angular/core';
|
4
4
|
import { toObservable, takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
5
5
|
import { DOCUMENT } from '@angular/common';
|
6
6
|
import { Platform } from '@angular/cdk/platform';
|
@@ -191,7 +191,7 @@ createInjectionToken is creating a root InjectionToken but an external token is
|
|
191
191
|
if (opts.deps && Array.isArray(opts.deps)) {
|
192
192
|
return factory(...opts.deps.map((dep) => {
|
193
193
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
194
|
-
// @ts-
|
194
|
+
// @ts-ignore
|
195
195
|
dep = (Array.isArray(dep) ? dep.at(-1) : dep);
|
196
196
|
return inject(dep);
|
197
197
|
}));
|
@@ -331,6 +331,47 @@ function injectDocument() {
|
|
331
331
|
return inject(DOCUMENT);
|
332
332
|
}
|
333
333
|
|
334
|
+
/**
|
335
|
+
* @license
|
336
|
+
* Copyright Google LLC All Rights Reserved.
|
337
|
+
*
|
338
|
+
* Use of this source code is governed by an MIT-style license that can be
|
339
|
+
* found in the LICENSE file at https://angular.dev/license
|
340
|
+
*/
|
341
|
+
/**
|
342
|
+
* Keeps track of the ID count per prefix. This helps us make the IDs a bit more deterministic
|
343
|
+
* like they were before the service was introduced. Note that ideally we wouldn't have to do
|
344
|
+
* this, but there are some internal tests that rely on the IDs.
|
345
|
+
*/
|
346
|
+
const counters = {};
|
347
|
+
/** Service that generates unique IDs for DOM nodes. */
|
348
|
+
class _IdGenerator {
|
349
|
+
constructor() {
|
350
|
+
this._appId = inject(APP_ID);
|
351
|
+
}
|
352
|
+
/**
|
353
|
+
* Generates a unique ID with a specific prefix.
|
354
|
+
* @param prefix Prefix to add to the ID.
|
355
|
+
*/
|
356
|
+
getId(prefix) {
|
357
|
+
// Omit the app ID if it's the default `ng`. Since the vast majority of pages have one
|
358
|
+
// Angular app on them, we can reduce the amount of breakages by not adding it.
|
359
|
+
if (this._appId !== 'ng') {
|
360
|
+
prefix += this._appId;
|
361
|
+
}
|
362
|
+
if (!Object.prototype.hasOwnProperty.call(counters, prefix)) {
|
363
|
+
counters[prefix] = 0;
|
364
|
+
}
|
365
|
+
return `${prefix}${counters[prefix]++}`;
|
366
|
+
}
|
367
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: _IdGenerator, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
368
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: _IdGenerator, providedIn: 'root' }); }
|
369
|
+
}
|
370
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: _IdGenerator, decorators: [{
|
371
|
+
type: Injectable,
|
372
|
+
args: [{ providedIn: 'root' }]
|
373
|
+
}] });
|
374
|
+
|
334
375
|
function injectNgControl(params) {
|
335
376
|
const ngControl = inject(NgControl, { self: true, optional: true });
|
336
377
|
if (!params?.optional && !ngControl)
|
@@ -374,5 +415,5 @@ function injectWindow() {
|
|
374
415
|
* Generated bundle index. Do not edit.
|
375
416
|
*/
|
376
417
|
|
377
|
-
export { RdxAutoFocusDirective, RdxControlValueAccessor, WINDOW, createInjectionToken, createNoopInjectionToken, injectCvaCompareTo, injectDocument, injectIsClient, injectNgControl, injectWindow, isInsideForm, provideCvaCompareTo, provideCvaCompareToByProp, provideValueAccessor };
|
418
|
+
export { RdxAutoFocusDirective, RdxControlValueAccessor, WINDOW, _IdGenerator, createInjectionToken, createNoopInjectionToken, injectCvaCompareTo, injectDocument, injectIsClient, injectNgControl, injectWindow, isInsideForm, provideCvaCompareTo, provideCvaCompareToByProp, provideValueAccessor };
|
378
419
|
//# sourceMappingURL=radix-ng-primitives-core.mjs.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"radix-ng-primitives-core.mjs","sources":["../../../packages/primitives/core/src/accessor/provide-value-accessor.ts","../../../packages/primitives/core/src/auto-focus.directive.ts","../../../packages/primitives/core/src/create-inject-context/assert-injector.ts","../../../packages/primitives/core/src/create-inject-context/index.ts","../../../packages/primitives/core/src/control-value-accessor/index.ts","../../../packages/primitives/core/src/document.ts","../../../packages/primitives/core/src/inject-ng-control.ts","../../../packages/primitives/core/src/is-client.ts","../../../packages/primitives/core/src/is-inside-form.ts","../../../packages/primitives/core/src/window.ts","../../../packages/primitives/core/radix-ng-primitives-core.ts"],"sourcesContent":["import { Provider, Type } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\n/**\n * Include in the providers section of a component which utilizes ControlValueAccessor to redundant code.\n *\n * ```ts\n * @Directive({\n * providers: [provideValueAccessor(ExampleDirective)]\n *}\n * export class ExampleDirective{}\n * ```\n */\nexport function provideValueAccessor(type: Type<never>): Provider {\n return {\n provide: NG_VALUE_ACCESSOR,\n useExisting: type,\n multi: true\n };\n}\n","import { booleanAttribute, Directive, ElementRef, inject, Input, NgZone } from '@angular/core';\n\n/*\n * <div [rdxAutoFocus]=\"true\"></div>\n */\n\n@Directive({\n selector: '[rdxAutoFocus]',\n standalone: true\n})\nexport class RdxAutoFocusDirective {\n #elementRef = inject(ElementRef);\n #ngZone = inject(NgZone);\n\n private _autoSelect = false;\n\n /**\n * @default false\n */\n @Input({ alias: 'rdxAutoFocus', transform: booleanAttribute })\n set autoFocus(value: boolean) {\n if (value) {\n // Note: Running this outside Angular's zone because `element.focus()` does not trigger change detection.\n this.#ngZone.runOutsideAngular(() =>\n // Note: `element.focus()` causes re-layout which might lead to frame drops on slower devices.\n // https://gist.github.com/paulirish/5d52fb081b3570c81e3a#setting-focus\n // `setTimeout` is a macrotask executed within the current rendering frame.\n // Animation tasks are executed in the next rendering frame.\n reqAnimationFrame(() => {\n this.#elementRef.nativeElement.focus();\n if (this._autoSelect && this.#elementRef.nativeElement.select) {\n this.#elementRef.nativeElement.select();\n }\n })\n );\n }\n }\n\n // Setter for autoSelect attribute to enable text selection when autoFocus is true.\n @Input({ transform: booleanAttribute })\n set autoSelect(value: boolean) {\n this._autoSelect = value;\n }\n}\n\nconst availablePrefixes = ['moz', 'ms', 'webkit'];\n\nfunction requestAnimationFramePolyfill(): typeof requestAnimationFrame {\n let lastTime = 0;\n\n return function (callback: FrameRequestCallback): number {\n const currTime = new Date().getTime();\n const timeToCall = Math.max(0, 16 - (currTime - lastTime));\n\n const id = setTimeout(() => {\n callback(currTime + timeToCall);\n }, timeToCall) as any;\n\n lastTime = currTime + timeToCall;\n\n return id;\n };\n}\n\n// Function to get the appropriate requestAnimationFrame method with fallback to polyfill.\nfunction getRequestAnimationFrame(): typeof requestAnimationFrame {\n if (typeof window === 'undefined') {\n return () => 0;\n }\n if (window.requestAnimationFrame) {\n // https://github.com/vuejs/vue/issues/4465\n return window.requestAnimationFrame.bind(window);\n }\n\n const prefix = availablePrefixes.filter((key) => `${key}RequestAnimationFrame` in window)[0];\n\n return prefix ? (window as any)[`${prefix}RequestAnimationFrame`] : requestAnimationFramePolyfill();\n}\n\n// Get the requestAnimationFrame function or its polyfill.\nconst reqAnimationFrame = getRequestAnimationFrame();\n","/**\n * This code is adapted from the original implementation by the ngxTension team.\n * Source: https://github.com/ngxtension/ngxtension-platform/blob/main/libs/ngxtension/assert-injector/src/assert-injector.ts\n *\n * Copyright (c) ngxtension Authors. Licensed under the MIT License.\n */\nimport { assertInInjectionContext, inject, Injector, runInInjectionContext } from '@angular/core';\nimport { Nullable, SafeFunction } from '../types';\n\n/**\n * `assertInjector` extends `assertInInjectionContext` with an optional `Injector`\n * After assertion, `assertInjector` runs the `runner` function with the guaranteed `Injector`\n * whether it is the default `Injector` within the current **Injection Context**\n * or the custom `Injector` that was passed in.\n *\n * @template {() => unknown} Runner - Runner is a function that can return anything\n * @param {SafeFunction} fn - the Function to pass in `assertInInjectionContext`\n * @param {Nullable<Injector>} injector - the optional \"custom\" Injector\n * @param {Runner} runner - the runner fn\n * @returns {ReturnType<Runner>} result - returns the result of the Runner\n *\n * @example\n * ```ts\n * function injectValue(injector?: Injector) {\n * return assertInjector(injectValue, injector, () => 'value');\n * }\n *\n * injectValue(); // string\n * ```\n */\nexport function assertInjector<Runner extends () => unknown>(\n fn: SafeFunction,\n injector: Nullable<Injector>,\n runner: Runner\n): ReturnType<Runner>;\n/**\n * `assertInjector` extends `assertInInjectionContext` with an optional `Injector`\n * After assertion, `assertInjector` returns a guaranteed `Injector` whether it is the default `Injector`\n * within the current **Injection Context** or the custom `Injector` that was passed in.\n *\n * @param {SafeFunction} fn - the Function to pass in `assertInInjectionContext`\n * @param {Nullable<Injector>} injector - the optional \"custom\" Injector\n * @returns Injector\n *\n * @example\n * ```ts\n * function injectDestroy(injector?: Injector) {\n * injector = assertInjector(injectDestroy, injector);\n *\n * return runInInjectionContext(injector, () => {\n * // code\n * })\n * }\n * ```\n */\nexport function assertInjector(fn: SafeFunction, injector: Nullable<Injector>): Injector;\nexport function assertInjector<Runner extends () => unknown>(\n fn: SafeFunction,\n injector: Nullable<Injector>,\n runner?: () => unknown\n): Injector | ReturnType<Runner> {\n !injector && assertInInjectionContext(fn);\n\n const assertedInjector = injector ?? inject(Injector);\n\n if (!runner) return assertedInjector;\n\n return runInInjectionContext(assertedInjector, runner) as ReturnType<Runner>;\n}\n","/**\n *\n * Copyright (c) ngxtension Authors. Licensed under the MIT License.\n */\nimport {\n ENVIRONMENT_INITIALIZER,\n InjectionToken,\n inject,\n runInInjectionContext,\n type EnvironmentProviders,\n type FactoryProvider,\n type Host,\n type InjectOptions,\n type Injector,\n type Optional,\n type Provider,\n type Self,\n type SkipSelf,\n type Type\n} from '@angular/core';\nimport { assertInjector } from './assert-injector';\n\ntype CreateInjectionTokenDep<TTokenType> =\n | Type<TTokenType>\n // NOTE: we don't have an AbstractType\n | (abstract new (...args: any[]) => TTokenType)\n | InjectionToken<TTokenType>;\n\ntype CreateInjectionTokenDeps<\n TFactory extends (...args: any[]) => any,\n TFactoryDeps extends Parameters<TFactory> = Parameters<TFactory>\n> = {\n [Index in keyof TFactoryDeps]:\n | CreateInjectionTokenDep<TFactoryDeps[Index]>\n | [...modifiers: Array<Optional | Self | SkipSelf | Host>, token: CreateInjectionTokenDep<TFactoryDeps[Index]>];\n} & { length: TFactoryDeps['length'] };\n\nexport type CreateInjectionTokenOptions<\n TFactory extends (...args: any[]) => any,\n TFactoryDeps extends Parameters<TFactory> = Parameters<TFactory>\n> =\n // this means TFunction has no parameters\n (TFactoryDeps[0] extends undefined\n ? { deps?: never }\n : { deps: CreateInjectionTokenDeps<TFactory, TFactoryDeps> }) & {\n isRoot?: boolean;\n isFunctionValue?: boolean;\n multi?: boolean;\n token?: InjectionToken<ReturnType<TFactory>>;\n extraProviders?: Provider | EnvironmentProviders;\n };\n\ntype CreateProvideFnOptions<\n TFactory extends (...args: any[]) => any,\n TFactoryDeps extends Parameters<TFactory> = Parameters<TFactory>\n> = Pick<CreateInjectionTokenOptions<TFactory, TFactoryDeps>, 'deps' | 'extraProviders' | 'multi' | 'isFunctionValue'>;\n\ntype InjectFn<TFactoryReturn> = {\n (): TFactoryReturn;\n (\n injectOptions: InjectOptions & { optional?: false } & {\n injector?: Injector;\n }\n ): TFactoryReturn;\n (injectOptions: InjectOptions & { injector?: Injector }): TFactoryReturn | null;\n};\n\ntype ProvideFn<\n TNoop extends boolean,\n TFactoryReturn,\n TReturn = TFactoryReturn extends Array<infer Item> ? Item : TFactoryReturn\n> = (TNoop extends true ? (value: TReturn | (() => TReturn)) => Provider : () => Provider) &\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n (TReturn extends Function\n ? (value: TReturn | (() => TReturn), isFunctionValue: boolean) => Provider\n : (value: TReturn | (() => TReturn)) => Provider);\n\nexport type CreateInjectionTokenReturn<TFactoryReturn, TNoop extends boolean = false> = [\n InjectFn<TFactoryReturn>,\n ProvideFn<TNoop, TFactoryReturn>,\n InjectionToken<TFactoryReturn>,\n () => Provider\n];\n\nfunction createInjectFn<TValue>(token: InjectionToken<TValue>) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n return function (this: Function, { injector, ...injectOptions }: InjectOptions & { injector?: Injector } = {}) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n injector = assertInjector(this, injector);\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n return runInInjectionContext(injector, () => inject(token, injectOptions as InjectOptions));\n };\n}\n\nfunction createProvideFn<\n TValue,\n TFactory extends (...args: any[]) => any = (...args: any[]) => TValue,\n TFactoryDeps extends Parameters<TFactory> = Parameters<TFactory>\n>(\n token: InjectionToken<TValue>,\n factory: (...args: any[]) => TValue,\n opts: CreateProvideFnOptions<TFactory, TFactoryDeps> = {}\n) {\n const { deps = [], multi = false, extraProviders = [], isFunctionValue: isFunctionValueFromOpts = false } = opts;\n return (value?: TValue | (() => TValue), isFunctionValue = isFunctionValueFromOpts) => {\n let provider: Provider;\n if (typeof value !== 'undefined') {\n // TODO: (chau) maybe this can be made better\n const factory = typeof value === 'function' ? (isFunctionValue ? () => value : value) : () => value;\n\n provider = {\n provide: token,\n useFactory: factory,\n multi\n };\n } else {\n provider = {\n provide: token,\n useFactory: factory,\n deps: deps as FactoryProvider['deps'],\n multi\n };\n }\n\n return [extraProviders, provider];\n };\n}\n\n/**\n * `createInjectionToken` accepts a factory function and returns a tuple of `injectFn`, `provideFn`, and the `InjectionToken`\n * that the factory function is for.\n *\n * @param {Function} factory - Factory Function that returns the value for the `InjectionToken`\n * @param {CreateInjectionTokenOptions} options - object to control how the `InjectionToken` behaves\n * @returns {CreateInjectionTokenReturn}\n *\n * @example\n * ```ts\n * const [injectCounter, provideCounter, COUNTER] = createInjectionToken(() => signal(0));\n *\n * export class Counter {\n * counter = injectCounter(); // WritableSignal<number>\n * }\n * ```\n */\nexport function createInjectionToken<\n TFactory extends (...args: any[]) => any,\n TFactoryDeps extends Parameters<TFactory> = Parameters<TFactory>,\n TOptions extends CreateInjectionTokenOptions<TFactory, TFactoryDeps> = CreateInjectionTokenOptions<\n TFactory,\n TFactoryDeps\n >,\n TFactoryReturn = TOptions['multi'] extends true ? Array<ReturnType<TFactory>> : ReturnType<TFactory>\n>(factory: TFactory, options?: TOptions): CreateInjectionTokenReturn<TFactoryReturn> {\n const tokenName = factory.name || factory.toString();\n const opts = options ?? ({ isRoot: true } as CreateInjectionTokenOptions<TFactory, TFactoryDeps>);\n\n opts.isRoot ??= true;\n\n // NOTE: multi tokens cannot be a root token. It has to be provided (provideFn needs to be invoked)\n // for the 'multi' flag to work properly\n if (opts.multi) {\n opts.isRoot = false;\n }\n\n if (opts.isRoot) {\n if (opts.token) {\n throw new Error(`\\\ncreateInjectionToken is creating a root InjectionToken but an external token is passed in.\n`);\n }\n\n const token = new InjectionToken<TFactoryReturn>(`Token for ${tokenName}`, {\n factory: () => {\n if (opts.deps && Array.isArray(opts.deps)) {\n return factory(\n ...opts.deps.map((dep) => {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n dep = (Array.isArray(dep) ? dep.at(-1) : dep) as CreateInjectionTokenDep<any>;\n return inject(dep);\n })\n );\n }\n return factory();\n }\n });\n\n const injectFn = createInjectFn(token) as CreateInjectionTokenReturn<TFactoryReturn>[0];\n\n return [\n injectFn,\n createProvideFn(\n token,\n factory,\n opts as CreateProvideFnOptions<TFactory, TFactoryDeps>\n ) as CreateInjectionTokenReturn<TFactoryReturn>[1],\n token,\n () => ({\n provide: ENVIRONMENT_INITIALIZER,\n useValue: () => injectFn(),\n multi: true\n })\n\n ];\n }\n\n const token = opts.token || new InjectionToken<TFactoryReturn>(`Token for ${tokenName}`);\n return [\n createInjectFn(token) as CreateInjectionTokenReturn<TFactoryReturn>[0],\n createProvideFn(\n token,\n factory,\n opts as CreateProvideFnOptions<TFactory, TFactoryDeps>\n ) as CreateInjectionTokenReturn<TFactoryReturn>[1],\n token,\n () => []\n ];\n}\n\nexport function createNoopInjectionToken<\n TValue,\n TMulti extends boolean = false,\n TOptions = Pick<CreateInjectionTokenOptions<() => void, []>, 'extraProviders'> &\n (TValue extends (...args: any[]) => any ? { isFunctionValue: true } : { isFunctionValue?: never }) &\n (TMulti extends true ? { multi: true } : { multi?: never })\n>(description: string, options?: TOptions) {\n type TReturn = TMulti extends true ? Array<TValue> : TValue;\n\n const token =\n (options as CreateInjectionTokenOptions<() => void, []>)?.token || new InjectionToken<TReturn>(description);\n return [\n createInjectFn(token) as CreateInjectionTokenReturn<TReturn,\n true>[0],\n createProvideFn(\n token,\n () => null!,\n (options || {}) as CreateProvideFnOptions<() => void, []>\n ) as CreateInjectionTokenReturn<TReturn,\n true>[1],\n token,\n () => []\n ] as CreateInjectionTokenReturn<TReturn, true>;\n}\n","/**\n * Based On:\n * Copyright (c) flebee Authors. Licensed under the MIT License.\n */\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport { booleanAttribute, computed, DestroyRef, Directive, inject, Injector, model } from '@angular/core';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor, NgControl, NgModel } from '@angular/forms';\nimport { createInjectionToken } from '../create-inject-context';\n\nconst noop = () => undefined;\n\nexport type RdxControlValueAccessorCompareTo<T = any> = (a?: T, b?: T) => boolean;\n\nexport const [injectCvaCompareTo, provideCvaCompareTo] = createInjectionToken<() => RdxControlValueAccessorCompareTo>(\n () => Object.is\n);\n\n/**\n * Provides a {@link RdxControlValueAccessorCompareTo comparator} based on a property of `T`.\n *\n * @example\n * ```ts\n * interface User {\n * \tid: string;\n * \tname: string;\n * }\n *\n * provideCvaCompareToByProp<User>('id');\n * ```\n */\nexport const provideCvaCompareToByProp = <T>(prop: keyof T) =>\n provideCvaCompareTo((a, b) => Object.is(a?.[prop], b?.[prop]), true);\n\n@Directive({ standalone: true })\nexport class RdxControlValueAccessor<Value> implements ControlValueAccessor {\n private readonly ngControl = inject(NgControl, { self: true, optional: true });\n private readonly destroyRef = inject(DestroyRef);\n private readonly injector = inject(Injector);\n\n /**\n * A comparator, which determines value changes. Should return true, if two values are considered semantic equal.\n *\n * Defaults to {@link Object.is} in order to align with change detection behavior for inputs.\n */\n public readonly compareTo: RdxControlValueAccessorCompareTo<Value> = injectCvaCompareTo();\n /** Whether this is disabled. If a control is present, it reflects it's disabled state. */\n public inputDisabled = model<BooleanInput>(this.ngControl?.disabled ?? false, { alias: 'disabled' });\n public disabled = computed(() => booleanAttribute(this.inputDisabled()));\n /** The value of this. If a control is present, it reflects it's value. */\n public value = model<Value>(this.ngControl?.value ?? undefined);\n\n /**\n * `NgModel` sets up the control in `ngOnChanges`. Idk if bug or on purpose, but `writeValue` and `setDisabledState` are called before the inputs are set.\n * {@link https://github.com/angular/angular/blob/main/packages/forms/src/directives/ng_model.ts#L223}\n *\n * @ignore\n */\n private get registered() {\n return this.ngControl instanceof NgModel\n ? (this.ngControl as unknown as { _registered: boolean })._registered\n : true;\n }\n\n constructor() {\n if (this.ngControl != null) this.ngControl.valueAccessor = this;\n\n toObservable(this.value, { injector: this.injector })\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((value) => {\n if (this.compareTo(this.ngControl?.value, value)) return;\n\n this._onChange(value);\n });\n\n // sync disabled state\n toObservable(this.inputDisabled, { injector: this.injector })\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((disabled) => {\n if (this.ngControl == null || this.ngControl.control == null || this.ngControl.disabled === disabled)\n return;\n\n this.ngControl.control[disabled ? 'disable' : 'enable']();\n });\n }\n\n private _onChange: (value: Value) => void = noop;\n private _onTouched: () => void = noop;\n\n /**\n * This function should be called when this host is considered `touched`.\n *\n * NOTE: Whenever a `blur` event is triggered on this host, this function is called.\n *\n * @see {@link RdxControlValueAccessor.registerOnTouched}\n * @see {@link RdxControlValueAccessor._ngControl}\n */\n markAsTouched() {\n this._onTouched();\n }\n\n setDisabledState(disabled: boolean) {\n if (!this.registered) return;\n\n this.inputDisabled.set(disabled);\n }\n\n writeValue(value: Value) {\n if (!this.registered || this.compareTo(value, this.value())) return;\n\n this.value.set(value);\n }\n\n registerOnChange(onChange: (value: Value) => void) {\n this._onChange = onChange;\n }\n\n registerOnTouched(onTouched: () => void) {\n this._onTouched = onTouched;\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { inject } from '@angular/core';\n\nexport function injectDocument(): Document {\n return inject(DOCUMENT);\n}\n","import { inject } from '@angular/core';\nimport { FormControlDirective, FormControlName, NgControl, NgModel } from '@angular/forms';\n\nexport function injectNgControl(params: {\n optional: true;\n}): FormControlDirective | FormControlName | NgModel | undefined;\nexport function injectNgControl(params: { optional: false }): FormControlDirective | FormControlName | NgModel;\nexport function injectNgControl(): FormControlDirective | FormControlName | NgModel;\n\nexport function injectNgControl(params?: { optional: true } | { optional: false }) {\n const ngControl = inject(NgControl, { self: true, optional: true });\n\n if (!params?.optional && !ngControl) throw new Error('NgControl not found');\n\n if (\n ngControl instanceof FormControlDirective ||\n ngControl instanceof FormControlName ||\n ngControl instanceof NgModel\n ) {\n return ngControl;\n }\n\n if (params?.optional) {\n return undefined;\n }\n\n throw new Error('NgControl is not an instance of FormControlDirective, FormControlName or NgModel');\n}\n","import { Platform } from '@angular/cdk/platform';\nimport { inject } from '@angular/core';\n\nexport function injectIsClient() {\n return inject(Platform).isBrowser;\n}\n","import { ElementRef } from '@angular/core';\n\nexport function isInsideForm(el: ElementRef<HTMLElement> | null): boolean {\n if (!el || !el.nativeElement) {\n return true;\n }\n return Boolean(el.nativeElement.closest('form'));\n}\n","import { inject, InjectionToken } from '@angular/core';\nimport { injectDocument } from './document';\n\nexport const WINDOW = new InjectionToken<Window & typeof globalThis>('An abstraction over global window object', {\n factory: () => {\n const { defaultView } = injectDocument();\n if (!defaultView) {\n throw new Error('Window is not available');\n }\n return defaultView;\n }\n});\n\nexport function injectWindow(): Window & typeof globalThis {\n return inject(WINDOW);\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":"radix-ng-primitives-core.mjs","sources":["../../../packages/primitives/core/src/accessor/provide-value-accessor.ts","../../../packages/primitives/core/src/auto-focus.directive.ts","../../../packages/primitives/core/src/create-inject-context/assert-injector.ts","../../../packages/primitives/core/src/create-inject-context/index.ts","../../../packages/primitives/core/src/control-value-accessor/index.ts","../../../packages/primitives/core/src/document.ts","../../../packages/primitives/core/src/id-generator.ts","../../../packages/primitives/core/src/inject-ng-control.ts","../../../packages/primitives/core/src/is-client.ts","../../../packages/primitives/core/src/is-inside-form.ts","../../../packages/primitives/core/src/window.ts","../../../packages/primitives/core/radix-ng-primitives-core.ts"],"sourcesContent":["import { Provider, Type } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\n/**\n * Include in the providers section of a component which utilizes ControlValueAccessor to redundant code.\n *\n * ```ts\n * @Directive({\n * providers: [provideValueAccessor(ExampleDirective)]\n *}\n * export class ExampleDirective{}\n * ```\n */\nexport function provideValueAccessor(type: Type<never>): Provider {\n return {\n provide: NG_VALUE_ACCESSOR,\n useExisting: type,\n multi: true\n };\n}\n","import { booleanAttribute, Directive, ElementRef, inject, Input, NgZone } from '@angular/core';\n\n/*\n * <div [rdxAutoFocus]=\"true\"></div>\n */\n\n@Directive({\n selector: '[rdxAutoFocus]',\n standalone: true\n})\nexport class RdxAutoFocusDirective {\n #elementRef = inject(ElementRef);\n #ngZone = inject(NgZone);\n\n private _autoSelect = false;\n\n /**\n * @default false\n */\n @Input({ alias: 'rdxAutoFocus', transform: booleanAttribute })\n set autoFocus(value: boolean) {\n if (value) {\n // Note: Running this outside Angular's zone because `element.focus()` does not trigger change detection.\n this.#ngZone.runOutsideAngular(() =>\n // Note: `element.focus()` causes re-layout which might lead to frame drops on slower devices.\n // https://gist.github.com/paulirish/5d52fb081b3570c81e3a#setting-focus\n // `setTimeout` is a macrotask executed within the current rendering frame.\n // Animation tasks are executed in the next rendering frame.\n reqAnimationFrame(() => {\n this.#elementRef.nativeElement.focus();\n if (this._autoSelect && this.#elementRef.nativeElement.select) {\n this.#elementRef.nativeElement.select();\n }\n })\n );\n }\n }\n\n // Setter for autoSelect attribute to enable text selection when autoFocus is true.\n @Input({ transform: booleanAttribute })\n set autoSelect(value: boolean) {\n this._autoSelect = value;\n }\n}\n\nconst availablePrefixes = ['moz', 'ms', 'webkit'];\n\nfunction requestAnimationFramePolyfill(): typeof requestAnimationFrame {\n let lastTime = 0;\n\n return function (callback: FrameRequestCallback): number {\n const currTime = new Date().getTime();\n const timeToCall = Math.max(0, 16 - (currTime - lastTime));\n\n const id = setTimeout(() => {\n callback(currTime + timeToCall);\n }, timeToCall) as any;\n\n lastTime = currTime + timeToCall;\n\n return id;\n };\n}\n\n// Function to get the appropriate requestAnimationFrame method with fallback to polyfill.\nfunction getRequestAnimationFrame(): typeof requestAnimationFrame {\n if (typeof window === 'undefined') {\n return () => 0;\n }\n if (window.requestAnimationFrame) {\n // https://github.com/vuejs/vue/issues/4465\n return window.requestAnimationFrame.bind(window);\n }\n\n const prefix = availablePrefixes.filter((key) => `${key}RequestAnimationFrame` in window)[0];\n\n return prefix ? (window as any)[`${prefix}RequestAnimationFrame`] : requestAnimationFramePolyfill();\n}\n\n// Get the requestAnimationFrame function or its polyfill.\nconst reqAnimationFrame = getRequestAnimationFrame();\n","/**\n * This code is adapted from the original implementation by the ngxTension team.\n * Source: https://github.com/ngxtension/ngxtension-platform/blob/main/libs/ngxtension/assert-injector/src/assert-injector.ts\n *\n * Copyright (c) ngxtension Authors. Licensed under the MIT License.\n */\nimport { assertInInjectionContext, inject, Injector, runInInjectionContext } from '@angular/core';\nimport { Nullable, SafeFunction } from '../types';\n\n/**\n * `assertInjector` extends `assertInInjectionContext` with an optional `Injector`\n * After assertion, `assertInjector` runs the `runner` function with the guaranteed `Injector`\n * whether it is the default `Injector` within the current **Injection Context**\n * or the custom `Injector` that was passed in.\n *\n * @template {() => unknown} Runner - Runner is a function that can return anything\n * @param {SafeFunction} fn - the Function to pass in `assertInInjectionContext`\n * @param {Nullable<Injector>} injector - the optional \"custom\" Injector\n * @param {Runner} runner - the runner fn\n * @returns {ReturnType<Runner>} result - returns the result of the Runner\n *\n * @example\n * ```ts\n * function injectValue(injector?: Injector) {\n * return assertInjector(injectValue, injector, () => 'value');\n * }\n *\n * injectValue(); // string\n * ```\n */\nexport function assertInjector<Runner extends () => unknown>(\n fn: SafeFunction,\n injector: Nullable<Injector>,\n runner: Runner\n): ReturnType<Runner>;\n/**\n * `assertInjector` extends `assertInInjectionContext` with an optional `Injector`\n * After assertion, `assertInjector` returns a guaranteed `Injector` whether it is the default `Injector`\n * within the current **Injection Context** or the custom `Injector` that was passed in.\n *\n * @param {SafeFunction} fn - the Function to pass in `assertInInjectionContext`\n * @param {Nullable<Injector>} injector - the optional \"custom\" Injector\n * @returns Injector\n *\n * @example\n * ```ts\n * function injectDestroy(injector?: Injector) {\n * injector = assertInjector(injectDestroy, injector);\n *\n * return runInInjectionContext(injector, () => {\n * // code\n * })\n * }\n * ```\n */\nexport function assertInjector(fn: SafeFunction, injector: Nullable<Injector>): Injector;\nexport function assertInjector<Runner extends () => unknown>(\n fn: SafeFunction,\n injector: Nullable<Injector>,\n runner?: () => unknown\n): Injector | ReturnType<Runner> {\n !injector && assertInInjectionContext(fn);\n\n const assertedInjector = injector ?? inject(Injector);\n\n if (!runner) return assertedInjector;\n\n return runInInjectionContext(assertedInjector, runner) as ReturnType<Runner>;\n}\n","/**\n *\n * Copyright (c) ngxtension Authors. Licensed under the MIT License.\n */\nimport {\n ENVIRONMENT_INITIALIZER,\n InjectionToken,\n inject,\n runInInjectionContext,\n type EnvironmentProviders,\n type FactoryProvider,\n type Host,\n type InjectOptions,\n type Injector,\n type Optional,\n type Provider,\n type Self,\n type SkipSelf,\n type Type\n} from '@angular/core';\nimport { assertInjector } from './assert-injector';\n\ntype CreateInjectionTokenDep<TTokenType> =\n | Type<TTokenType>\n // NOTE: we don't have an AbstractType\n | (abstract new (...args: any[]) => TTokenType)\n | InjectionToken<TTokenType>;\n\ntype CreateInjectionTokenDeps<\n TFactory extends (...args: any[]) => any,\n TFactoryDeps extends Parameters<TFactory> = Parameters<TFactory>\n> = {\n [Index in keyof TFactoryDeps]:\n | CreateInjectionTokenDep<TFactoryDeps[Index]>\n | [...modifiers: Array<Optional | Self | SkipSelf | Host>, token: CreateInjectionTokenDep<TFactoryDeps[Index]>];\n} & { length: TFactoryDeps['length'] };\n\nexport type CreateInjectionTokenOptions<\n TFactory extends (...args: any[]) => any,\n TFactoryDeps extends Parameters<TFactory> = Parameters<TFactory>\n> =\n // this means TFunction has no parameters\n (TFactoryDeps[0] extends undefined\n ? { deps?: never }\n : { deps: CreateInjectionTokenDeps<TFactory, TFactoryDeps> }) & {\n isRoot?: boolean;\n isFunctionValue?: boolean;\n multi?: boolean;\n token?: InjectionToken<ReturnType<TFactory>>;\n extraProviders?: Provider | EnvironmentProviders;\n };\n\ntype CreateProvideFnOptions<\n TFactory extends (...args: any[]) => any,\n TFactoryDeps extends Parameters<TFactory> = Parameters<TFactory>\n> = Pick<CreateInjectionTokenOptions<TFactory, TFactoryDeps>, 'deps' | 'extraProviders' | 'multi' | 'isFunctionValue'>;\n\ntype InjectFn<TFactoryReturn> = {\n (): TFactoryReturn;\n (\n injectOptions: InjectOptions & { optional?: false } & {\n injector?: Injector;\n }\n ): TFactoryReturn;\n (injectOptions: InjectOptions & { injector?: Injector }): TFactoryReturn | null;\n};\n\ntype ProvideFn<\n TNoop extends boolean,\n TFactoryReturn,\n TReturn = TFactoryReturn extends Array<infer Item> ? Item : TFactoryReturn\n> = (TNoop extends true ? (value: TReturn | (() => TReturn)) => Provider : () => Provider) &\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n (TReturn extends Function\n ? (value: TReturn | (() => TReturn), isFunctionValue: boolean) => Provider\n : (value: TReturn | (() => TReturn)) => Provider);\n\nexport type CreateInjectionTokenReturn<TFactoryReturn, TNoop extends boolean = false> = [\n InjectFn<TFactoryReturn>,\n ProvideFn<TNoop, TFactoryReturn>,\n InjectionToken<TFactoryReturn>,\n () => Provider\n];\n\nfunction createInjectFn<TValue>(token: InjectionToken<TValue>) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n return function (this: Function, { injector, ...injectOptions }: InjectOptions & { injector?: Injector } = {}) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n injector = assertInjector(this, injector);\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n return runInInjectionContext(injector, () => inject(token, injectOptions as InjectOptions));\n };\n}\n\nfunction createProvideFn<\n TValue,\n TFactory extends (...args: any[]) => any = (...args: any[]) => TValue,\n TFactoryDeps extends Parameters<TFactory> = Parameters<TFactory>\n>(\n token: InjectionToken<TValue>,\n factory: (...args: any[]) => TValue,\n opts: CreateProvideFnOptions<TFactory, TFactoryDeps> = {}\n) {\n const { deps = [], multi = false, extraProviders = [], isFunctionValue: isFunctionValueFromOpts = false } = opts;\n return (value?: TValue | (() => TValue), isFunctionValue = isFunctionValueFromOpts) => {\n let provider: Provider;\n if (typeof value !== 'undefined') {\n // TODO: (chau) maybe this can be made better\n const factory = typeof value === 'function' ? (isFunctionValue ? () => value : value) : () => value;\n\n provider = {\n provide: token,\n useFactory: factory,\n multi\n };\n } else {\n provider = {\n provide: token,\n useFactory: factory,\n deps: deps as FactoryProvider['deps'],\n multi\n };\n }\n\n return [extraProviders, provider];\n };\n}\n\n/**\n * `createInjectionToken` accepts a factory function and returns a tuple of `injectFn`, `provideFn`, and the `InjectionToken`\n * that the factory function is for.\n *\n * @param {Function} factory - Factory Function that returns the value for the `InjectionToken`\n * @param {CreateInjectionTokenOptions} options - object to control how the `InjectionToken` behaves\n * @returns {CreateInjectionTokenReturn}\n *\n * @example\n * ```ts\n * const [injectCounter, provideCounter, COUNTER] = createInjectionToken(() => signal(0));\n *\n * export class Counter {\n * counter = injectCounter(); // WritableSignal<number>\n * }\n * ```\n */\nexport function createInjectionToken<\n TFactory extends (...args: any[]) => any,\n TFactoryDeps extends Parameters<TFactory> = Parameters<TFactory>,\n TOptions extends CreateInjectionTokenOptions<TFactory, TFactoryDeps> = CreateInjectionTokenOptions<\n TFactory,\n TFactoryDeps\n >,\n TFactoryReturn = TOptions['multi'] extends true ? Array<ReturnType<TFactory>> : ReturnType<TFactory>\n>(factory: TFactory, options?: TOptions): CreateInjectionTokenReturn<TFactoryReturn> {\n const tokenName = factory.name || factory.toString();\n const opts = options ?? ({ isRoot: true } as CreateInjectionTokenOptions<TFactory, TFactoryDeps>);\n\n opts.isRoot ??= true;\n\n // NOTE: multi tokens cannot be a root token. It has to be provided (provideFn needs to be invoked)\n // for the 'multi' flag to work properly\n if (opts.multi) {\n opts.isRoot = false;\n }\n\n if (opts.isRoot) {\n if (opts.token) {\n throw new Error(`\\\ncreateInjectionToken is creating a root InjectionToken but an external token is passed in.\n`);\n }\n\n const token = new InjectionToken<TFactoryReturn>(`Token for ${tokenName}`, {\n factory: () => {\n if (opts.deps && Array.isArray(opts.deps)) {\n return factory(\n ...opts.deps.map((dep) => {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n dep = (Array.isArray(dep) ? dep.at(-1) : dep) as CreateInjectionTokenDep<any>;\n return inject(dep);\n })\n );\n }\n return factory();\n }\n });\n\n const injectFn = createInjectFn(token) as CreateInjectionTokenReturn<TFactoryReturn>[0];\n\n return [\n injectFn,\n createProvideFn(\n token,\n factory,\n opts as CreateProvideFnOptions<TFactory, TFactoryDeps>\n ) as CreateInjectionTokenReturn<TFactoryReturn>[1],\n token,\n () => ({\n provide: ENVIRONMENT_INITIALIZER,\n useValue: () => injectFn(),\n multi: true\n })\n\n ];\n }\n\n const token = opts.token || new InjectionToken<TFactoryReturn>(`Token for ${tokenName}`);\n return [\n createInjectFn(token) as CreateInjectionTokenReturn<TFactoryReturn>[0],\n createProvideFn(\n token,\n factory,\n opts as CreateProvideFnOptions<TFactory, TFactoryDeps>\n ) as CreateInjectionTokenReturn<TFactoryReturn>[1],\n token,\n () => []\n ];\n}\n\nexport function createNoopInjectionToken<\n TValue,\n TMulti extends boolean = false,\n TOptions = Pick<CreateInjectionTokenOptions<() => void, []>, 'extraProviders'> &\n (TValue extends (...args: any[]) => any ? { isFunctionValue: true } : { isFunctionValue?: never }) &\n (TMulti extends true ? { multi: true } : { multi?: never })\n>(description: string, options?: TOptions) {\n type TReturn = TMulti extends true ? Array<TValue> : TValue;\n\n const token =\n (options as CreateInjectionTokenOptions<() => void, []>)?.token || new InjectionToken<TReturn>(description);\n return [\n createInjectFn(token) as CreateInjectionTokenReturn<TReturn,\n true>[0],\n createProvideFn(\n token,\n () => null!,\n (options || {}) as CreateProvideFnOptions<() => void, []>\n ) as CreateInjectionTokenReturn<TReturn,\n true>[1],\n token,\n () => []\n ] as CreateInjectionTokenReturn<TReturn, true>;\n}\n","/**\n * Based On:\n * Copyright (c) flebee Authors. Licensed under the MIT License.\n */\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport { booleanAttribute, computed, DestroyRef, Directive, inject, Injector, model } from '@angular/core';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor, NgControl, NgModel } from '@angular/forms';\nimport { createInjectionToken } from '../create-inject-context';\n\nconst noop = () => undefined;\n\nexport type RdxControlValueAccessorCompareTo<T = any> = (a?: T, b?: T) => boolean;\n\nexport const [injectCvaCompareTo, provideCvaCompareTo] = createInjectionToken<() => RdxControlValueAccessorCompareTo>(\n () => Object.is\n);\n\n/**\n * Provides a {@link RdxControlValueAccessorCompareTo comparator} based on a property of `T`.\n *\n * @example\n * ```ts\n * interface User {\n * \tid: string;\n * \tname: string;\n * }\n *\n * provideCvaCompareToByProp<User>('id');\n * ```\n */\nexport const provideCvaCompareToByProp = <T>(prop: keyof T) =>\n provideCvaCompareTo((a, b) => Object.is(a?.[prop], b?.[prop]), true);\n\n@Directive({ standalone: true })\nexport class RdxControlValueAccessor<Value> implements ControlValueAccessor {\n private readonly ngControl = inject(NgControl, { self: true, optional: true });\n private readonly destroyRef = inject(DestroyRef);\n private readonly injector = inject(Injector);\n\n /**\n * A comparator, which determines value changes. Should return true, if two values are considered semantic equal.\n *\n * Defaults to {@link Object.is} in order to align with change detection behavior for inputs.\n */\n public readonly compareTo: RdxControlValueAccessorCompareTo<Value> = injectCvaCompareTo();\n /** Whether this is disabled. If a control is present, it reflects it's disabled state. */\n public inputDisabled = model<BooleanInput>(this.ngControl?.disabled ?? false, { alias: 'disabled' });\n public disabled = computed(() => booleanAttribute(this.inputDisabled()));\n /** The value of this. If a control is present, it reflects it's value. */\n public value = model<Value>(this.ngControl?.value ?? undefined);\n\n /**\n * `NgModel` sets up the control in `ngOnChanges`. Idk if bug or on purpose, but `writeValue` and `setDisabledState` are called before the inputs are set.\n * {@link https://github.com/angular/angular/blob/main/packages/forms/src/directives/ng_model.ts#L223}\n *\n * @ignore\n */\n private get registered() {\n return this.ngControl instanceof NgModel\n ? (this.ngControl as unknown as { _registered: boolean })._registered\n : true;\n }\n\n constructor() {\n if (this.ngControl != null) this.ngControl.valueAccessor = this;\n\n toObservable(this.value, { injector: this.injector })\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((value) => {\n if (this.compareTo(this.ngControl?.value, value)) return;\n\n this._onChange(value);\n });\n\n // sync disabled state\n toObservable(this.inputDisabled, { injector: this.injector })\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((disabled) => {\n if (this.ngControl == null || this.ngControl.control == null || this.ngControl.disabled === disabled)\n return;\n\n this.ngControl.control[disabled ? 'disable' : 'enable']();\n });\n }\n\n private _onChange: (value: Value) => void = noop;\n private _onTouched: () => void = noop;\n\n /**\n * This function should be called when this host is considered `touched`.\n *\n * NOTE: Whenever a `blur` event is triggered on this host, this function is called.\n *\n * @see {@link RdxControlValueAccessor.registerOnTouched}\n * @see {@link RdxControlValueAccessor._ngControl}\n */\n markAsTouched() {\n this._onTouched();\n }\n\n setDisabledState(disabled: boolean) {\n if (!this.registered) return;\n\n this.inputDisabled.set(disabled);\n }\n\n writeValue(value: Value) {\n if (!this.registered || this.compareTo(value, this.value())) return;\n\n this.value.set(value);\n }\n\n registerOnChange(onChange: (value: Value) => void) {\n this._onChange = onChange;\n }\n\n registerOnTouched(onTouched: () => void) {\n this._onTouched = onTouched;\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { inject } from '@angular/core';\n\nexport function injectDocument(): Document {\n return inject(DOCUMENT);\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.dev/license\n */\n\nimport { APP_ID, inject, Injectable } from '@angular/core';\n\n/**\n * Keeps track of the ID count per prefix. This helps us make the IDs a bit more deterministic\n * like they were before the service was introduced. Note that ideally we wouldn't have to do\n * this, but there are some internal tests that rely on the IDs.\n */\nconst counters: Record<string, number> = {};\n\n/** Service that generates unique IDs for DOM nodes. */\n@Injectable({ providedIn: 'root' })\nexport class _IdGenerator {\n private readonly _appId = inject(APP_ID);\n\n /**\n * Generates a unique ID with a specific prefix.\n * @param prefix Prefix to add to the ID.\n */\n getId(prefix: string): string {\n // Omit the app ID if it's the default `ng`. Since the vast majority of pages have one\n // Angular app on them, we can reduce the amount of breakages by not adding it.\n if (this._appId !== 'ng') {\n prefix += this._appId;\n }\n\n if (!Object.prototype.hasOwnProperty.call(counters, prefix)) {\n counters[prefix] = 0;\n }\n\n return `${prefix}${counters[prefix]++}`;\n }\n}\n","import { inject } from '@angular/core';\nimport { FormControlDirective, FormControlName, NgControl, NgModel } from '@angular/forms';\n\nexport function injectNgControl(params: {\n optional: true;\n}): FormControlDirective | FormControlName | NgModel | undefined;\nexport function injectNgControl(params: { optional: false }): FormControlDirective | FormControlName | NgModel;\nexport function injectNgControl(): FormControlDirective | FormControlName | NgModel;\n\nexport function injectNgControl(params?: { optional: true } | { optional: false }) {\n const ngControl = inject(NgControl, { self: true, optional: true });\n\n if (!params?.optional && !ngControl) throw new Error('NgControl not found');\n\n if (\n ngControl instanceof FormControlDirective ||\n ngControl instanceof FormControlName ||\n ngControl instanceof NgModel\n ) {\n return ngControl;\n }\n\n if (params?.optional) {\n return undefined;\n }\n\n throw new Error('NgControl is not an instance of FormControlDirective, FormControlName or NgModel');\n}\n","import { Platform } from '@angular/cdk/platform';\nimport { inject } from '@angular/core';\n\nexport function injectIsClient() {\n return inject(Platform).isBrowser;\n}\n","import { ElementRef } from '@angular/core';\n\nexport function isInsideForm(el: ElementRef<HTMLElement> | null): boolean {\n if (!el || !el.nativeElement) {\n return true;\n }\n return Boolean(el.nativeElement.closest('form'));\n}\n","import { inject, InjectionToken } from '@angular/core';\nimport { injectDocument } from './document';\n\nexport const WINDOW = new InjectionToken<Window & typeof globalThis>('An abstraction over global window object', {\n factory: () => {\n const { defaultView } = injectDocument();\n if (!defaultView) {\n throw new Error('Window is not available');\n }\n return defaultView;\n }\n});\n\nexport function injectWindow(): Window & typeof globalThis {\n return inject(WINDOW);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|