@radix-ng/primitives 1.0.5 → 1.0.7
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/aspect-ratio/README.md +1 -1
- package/fesm2022/radix-ng-primitives-accordion.mjs +40 -27
- package/fesm2022/radix-ng-primitives-accordion.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-alert-dialog.mjs +34 -34
- package/fesm2022/radix-ng-primitives-arrow.mjs +3 -3
- package/fesm2022/radix-ng-primitives-aspect-ratio.mjs +11 -35
- package/fesm2022/radix-ng-primitives-aspect-ratio.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-autocomplete.mjs +175 -125
- package/fesm2022/radix-ng-primitives-autocomplete.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-avatar.mjs +92 -35
- package/fesm2022/radix-ng-primitives-avatar.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-button.mjs +11 -7
- package/fesm2022/radix-ng-primitives-button.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-calendar.mjs +140 -90
- package/fesm2022/radix-ng-primitives-calendar.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-checkbox.mjs +63 -46
- package/fesm2022/radix-ng-primitives-checkbox.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-collapsible.mjs +37 -25
- package/fesm2022/radix-ng-primitives-collapsible.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-combobox.mjs +278 -177
- package/fesm2022/radix-ng-primitives-combobox.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-composite.mjs +50 -33
- package/fesm2022/radix-ng-primitives-composite.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-config.mjs +7 -5
- package/fesm2022/radix-ng-primitives-config.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-context-menu.mjs +48 -22
- package/fesm2022/radix-ng-primitives-context-menu.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-core.mjs +44 -28
- package/fesm2022/radix-ng-primitives-core.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-cropper.mjs +73 -45
- package/fesm2022/radix-ng-primitives-cropper.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-date-field.mjs +70 -40
- package/fesm2022/radix-ng-primitives-date-field.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-dialog.mjs +93 -67
- package/fesm2022/radix-ng-primitives-dialog.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-direction-provider.mjs +5 -4
- package/fesm2022/radix-ng-primitives-direction-provider.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-dismissable-layer.mjs +20 -16
- package/fesm2022/radix-ng-primitives-dismissable-layer.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-drawer.mjs +107 -81
- package/fesm2022/radix-ng-primitives-drawer.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-editable.mjs +53 -39
- package/fesm2022/radix-ng-primitives-editable.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-field.mjs +76 -50
- package/fesm2022/radix-ng-primitives-field.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-fieldset.mjs +8 -7
- package/fesm2022/radix-ng-primitives-fieldset.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-floating-focus-manager.mjs +77 -40
- package/fesm2022/radix-ng-primitives-floating-focus-manager.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-focus-guards.mjs +3 -3
- package/fesm2022/radix-ng-primitives-focus-scope.mjs +7 -5
- package/fesm2022/radix-ng-primitives-focus-scope.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-form.mjs +26 -17
- package/fesm2022/radix-ng-primitives-form.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-input.mjs +41 -22
- package/fesm2022/radix-ng-primitives-input.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-label.mjs +11 -8
- package/fesm2022/radix-ng-primitives-label.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-menu.mjs +274 -154
- package/fesm2022/radix-ng-primitives-menu.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-menubar.mjs +35 -17
- package/fesm2022/radix-ng-primitives-menubar.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-meter.mjs +41 -30
- package/fesm2022/radix-ng-primitives-meter.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-navigation-menu.mjs +220 -183
- package/fesm2022/radix-ng-primitives-navigation-menu.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-number-field.mjs +93 -61
- package/fesm2022/radix-ng-primitives-number-field.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-pagination.mjs +48 -38
- package/fesm2022/radix-ng-primitives-pagination.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-popover.mjs +150 -107
- package/fesm2022/radix-ng-primitives-popover.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-popper.mjs +79 -47
- package/fesm2022/radix-ng-primitives-popper.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-portal.mjs +20 -13
- package/fesm2022/radix-ng-primitives-portal.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-presence.mjs +3 -3
- package/fesm2022/radix-ng-primitives-preview-card.mjs +119 -74
- package/fesm2022/radix-ng-primitives-preview-card.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-progress.mjs +73 -46
- package/fesm2022/radix-ng-primitives-progress.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-radio.mjs +58 -40
- package/fesm2022/radix-ng-primitives-radio.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-scroll-area.mjs +57 -41
- package/fesm2022/radix-ng-primitives-scroll-area.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-select.mjs +595 -102
- package/fesm2022/radix-ng-primitives-select.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-separator.mjs +11 -15
- package/fesm2022/radix-ng-primitives-separator.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-slider.mjs +101 -64
- package/fesm2022/radix-ng-primitives-slider.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-stepper.mjs +53 -39
- package/fesm2022/radix-ng-primitives-stepper.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-switch.mjs +25 -20
- package/fesm2022/radix-ng-primitives-switch.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-tabs.mjs +76 -51
- package/fesm2022/radix-ng-primitives-tabs.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-time-field.mjs +72 -41
- package/fesm2022/radix-ng-primitives-time-field.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-toast.mjs +75 -56
- package/fesm2022/radix-ng-primitives-toast.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-toggle-group.mjs +39 -23
- package/fesm2022/radix-ng-primitives-toggle-group.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-toggle.mjs +36 -36
- package/fesm2022/radix-ng-primitives-toggle.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-toolbar.mjs +52 -31
- package/fesm2022/radix-ng-primitives-toolbar.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-tooltip.mjs +118 -63
- package/fesm2022/radix-ng-primitives-tooltip.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-visually-hidden.mjs +31 -20
- package/fesm2022/radix-ng-primitives-visually-hidden.mjs.map +1 -1
- package/package.json +2 -2
- package/types/radix-ng-primitives-accordion.d.ts +1 -0
- package/types/radix-ng-primitives-aspect-ratio.d.ts +10 -23
- package/types/radix-ng-primitives-autocomplete.d.ts +3 -1
- package/types/radix-ng-primitives-avatar.d.ts +51 -25
- package/types/radix-ng-primitives-checkbox.d.ts +26 -98
- package/types/radix-ng-primitives-combobox.d.ts +28 -9
- package/types/radix-ng-primitives-context-menu.d.ts +2 -0
- package/types/radix-ng-primitives-dialog.d.ts +6 -3
- package/types/radix-ng-primitives-field.d.ts +33 -207
- package/types/radix-ng-primitives-floating-focus-manager.d.ts +11 -0
- package/types/radix-ng-primitives-form.d.ts +24 -33
- package/types/radix-ng-primitives-label.d.ts +3 -2
- package/types/radix-ng-primitives-menu.d.ts +47 -15
- package/types/radix-ng-primitives-menubar.d.ts +6 -1
- package/types/radix-ng-primitives-navigation-menu.d.ts +8 -6
- package/types/radix-ng-primitives-number-field.d.ts +1 -1
- package/types/radix-ng-primitives-popover.d.ts +12 -4
- package/types/radix-ng-primitives-preview-card.d.ts +18 -5
- package/types/radix-ng-primitives-progress.d.ts +59 -121
- package/types/radix-ng-primitives-radio.d.ts +0 -1
- package/types/radix-ng-primitives-select.d.ts +186 -391
- package/types/radix-ng-primitives-separator.d.ts +0 -7
- package/types/radix-ng-primitives-toggle-group.d.ts +7 -3
- package/types/radix-ng-primitives-toggle.d.ts +8 -8
- package/types/radix-ng-primitives-toolbar.d.ts +2 -0
- package/types/radix-ng-primitives-tooltip.d.ts +17 -3
|
@@ -224,11 +224,13 @@ const [injectRdxCompositeListContext, provideRdxCompositeListContext] = createCo
|
|
|
224
224
|
class RdxCompositeList {
|
|
225
225
|
constructor() {
|
|
226
226
|
this.elementRef = inject(ElementRef);
|
|
227
|
-
this.registeredItems = signal([],
|
|
227
|
+
this.registeredItems = signal([], /* @ts-ignore */
|
|
228
|
+
...(ngDevMode ? [{ debugName: "registeredItems" }] : /* istanbul ignore next */ []));
|
|
228
229
|
/** Emits when the ordered item map changes. */
|
|
229
230
|
this.onMapChange = output();
|
|
230
231
|
/** Items registered with this list, sorted in DOM order. */
|
|
231
|
-
this.items = computed(() => sortByDocumentPosition(this.registeredItems()),
|
|
232
|
+
this.items = computed(() => sortByDocumentPosition(this.registeredItems()), /* @ts-ignore */
|
|
233
|
+
...(ngDevMode ? [{ debugName: "items" }] : /* istanbul ignore next */ []));
|
|
232
234
|
/** Ordered metadata keyed by item element. */
|
|
233
235
|
this.itemMap = computed(() => {
|
|
234
236
|
const map = new Map();
|
|
@@ -236,7 +238,8 @@ class RdxCompositeList {
|
|
|
236
238
|
map.set(item.element, { ...(item.metadata() ?? {}), index });
|
|
237
239
|
});
|
|
238
240
|
return map;
|
|
239
|
-
},
|
|
241
|
+
}, /* @ts-ignore */
|
|
242
|
+
...(ngDevMode ? [{ debugName: "itemMap" }] : /* istanbul ignore next */ []));
|
|
240
243
|
effect(() => {
|
|
241
244
|
this.onMapChange.emit(this.itemMap());
|
|
242
245
|
});
|
|
@@ -256,10 +259,10 @@ class RdxCompositeList {
|
|
|
256
259
|
elements() {
|
|
257
260
|
return this.items().map((item) => item.element);
|
|
258
261
|
}
|
|
259
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
260
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
262
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxCompositeList, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
263
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.2", type: RdxCompositeList, isStandalone: true, selector: "[rdxCompositeList]", outputs: { onMapChange: "onMapChange" }, providers: [provideRdxCompositeListContext(listContext)], exportAs: ["rdxCompositeList"], ngImport: i0 }); }
|
|
261
264
|
}
|
|
262
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
265
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxCompositeList, decorators: [{
|
|
263
266
|
type: Directive,
|
|
264
267
|
args: [{
|
|
265
268
|
selector: '[rdxCompositeList]',
|
|
@@ -275,15 +278,19 @@ class RdxCompositeListItem {
|
|
|
275
278
|
constructor() {
|
|
276
279
|
this.listContext = injectRdxCompositeListContext(true);
|
|
277
280
|
this.elementRef = inject(ElementRef);
|
|
278
|
-
this.hasRendered = signal(false,
|
|
281
|
+
this.hasRendered = signal(false, /* @ts-ignore */
|
|
282
|
+
...(ngDevMode ? [{ debugName: "hasRendered" }] : /* istanbul ignore next */ []));
|
|
279
283
|
/** Arbitrary metadata included in the list's ordered item map. */
|
|
280
284
|
this.metadataInput = input(undefined, { ...(ngDevMode ? { debugName: "metadataInput" } : /* istanbul ignore next */ {}), alias: 'metadata' });
|
|
281
|
-
this._metadata = linkedSignal(() => this.metadataInput(),
|
|
282
|
-
|
|
285
|
+
this._metadata = linkedSignal(() => this.metadataInput(), /* @ts-ignore */
|
|
286
|
+
...(ngDevMode ? [{ debugName: "_metadata" }] : /* istanbul ignore next */ []));
|
|
287
|
+
this.index = computed(() => this.listContext?.indexOf(this.elementRef.nativeElement) ?? -1, /* @ts-ignore */
|
|
288
|
+
...(ngDevMode ? [{ debugName: "index" }] : /* istanbul ignore next */ []));
|
|
283
289
|
this.inListElement = computed(() => {
|
|
284
290
|
const listContext = this.listContext;
|
|
285
291
|
return !!listContext && listContext.listElement.contains(this.elementRef.nativeElement);
|
|
286
|
-
},
|
|
292
|
+
}, /* @ts-ignore */
|
|
293
|
+
...(ngDevMode ? [{ debugName: "inListElement" }] : /* istanbul ignore next */ []));
|
|
287
294
|
afterNextRender(() => {
|
|
288
295
|
this.hasRendered.set(true);
|
|
289
296
|
});
|
|
@@ -300,10 +307,10 @@ class RdxCompositeListItem {
|
|
|
300
307
|
setMetadata(value) {
|
|
301
308
|
this._metadata.set(value);
|
|
302
309
|
}
|
|
303
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
304
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "
|
|
310
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxCompositeListItem, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
311
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.2", type: RdxCompositeListItem, isStandalone: true, selector: "[rdxCompositeListItem]", inputs: { metadataInput: { classPropertyName: "metadataInput", publicName: "metadata", isSignal: true, isRequired: false, transformFunction: null } }, exportAs: ["rdxCompositeListItem"], ngImport: i0 }); }
|
|
305
312
|
}
|
|
306
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
313
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxCompositeListItem, decorators: [{
|
|
307
314
|
type: Directive,
|
|
308
315
|
args: [{
|
|
309
316
|
selector: '[rdxCompositeListItem]',
|
|
@@ -335,37 +342,44 @@ class RdxCompositeRoot {
|
|
|
335
342
|
this.hasSetInitialIndex = false;
|
|
336
343
|
/** The composite orientation. */
|
|
337
344
|
this.orientationInput = input('both', { ...(ngDevMode ? { debugName: "orientationInput" } : /* istanbul ignore next */ {}), alias: 'orientation' });
|
|
338
|
-
this._orientation = linkedSignal(() => this.orientationInput(),
|
|
345
|
+
this._orientation = linkedSignal(() => this.orientationInput(), /* @ts-ignore */
|
|
346
|
+
...(ngDevMode ? [{ debugName: "_orientation" }] : /* istanbul ignore next */ []));
|
|
339
347
|
this.orientation = this._orientation.asReadonly();
|
|
340
348
|
/** Text direction for horizontal arrow-key navigation. */
|
|
341
349
|
this.dirInput = input(undefined, { ...(ngDevMode ? { debugName: "dirInput" } : /* istanbul ignore next */ {}), alias: 'dir' });
|
|
342
350
|
this.effectiveDir = injectDirection(this.dirInput);
|
|
343
|
-
this._dir = linkedSignal(() => this.effectiveDir(),
|
|
351
|
+
this._dir = linkedSignal(() => this.effectiveDir(), /* @ts-ignore */
|
|
352
|
+
...(ngDevMode ? [{ debugName: "_dir" }] : /* istanbul ignore next */ []));
|
|
344
353
|
this.dir = this._dir.asReadonly();
|
|
345
354
|
/** Whether arrow-key navigation wraps at the first/last item. */
|
|
346
355
|
this.loopFocusInput = input(true, { ...(ngDevMode ? { debugName: "loopFocusInput" } : /* istanbul ignore next */ {}), alias: 'loopFocus',
|
|
347
356
|
transform: booleanAttribute });
|
|
348
|
-
this._loopFocus = linkedSignal(() => this.loopFocusInput(),
|
|
357
|
+
this._loopFocus = linkedSignal(() => this.loopFocusInput(), /* @ts-ignore */
|
|
358
|
+
...(ngDevMode ? [{ debugName: "_loopFocus" }] : /* istanbul ignore next */ []));
|
|
349
359
|
this.loopFocus = this._loopFocus.asReadonly();
|
|
350
360
|
/** Enables Home and End keys. */
|
|
351
361
|
this.enableHomeAndEndKeysInput = input(false, { ...(ngDevMode ? { debugName: "enableHomeAndEndKeysInput" } : /* istanbul ignore next */ {}), alias: 'enableHomeAndEndKeys',
|
|
352
362
|
transform: booleanAttribute });
|
|
353
|
-
this._enableHomeAndEndKeys = linkedSignal(() => this.enableHomeAndEndKeysInput(),
|
|
363
|
+
this._enableHomeAndEndKeys = linkedSignal(() => this.enableHomeAndEndKeysInput(), /* @ts-ignore */
|
|
364
|
+
...(ngDevMode ? [{ debugName: "_enableHomeAndEndKeys" }] : /* istanbul ignore next */ []));
|
|
354
365
|
this.enableHomeAndEndKeys = this._enableHomeAndEndKeys.asReadonly();
|
|
355
366
|
/** Indices that are skipped by keyboard navigation. */
|
|
356
367
|
this.disabledIndicesInput = input(undefined, { ...(ngDevMode ? { debugName: "disabledIndicesInput" } : /* istanbul ignore next */ {}), alias: 'disabledIndices' });
|
|
357
|
-
this._disabledIndices = linkedSignal(() => this.disabledIndicesInput(),
|
|
368
|
+
this._disabledIndices = linkedSignal(() => this.disabledIndicesInput(), /* @ts-ignore */
|
|
369
|
+
...(ngDevMode ? [{ debugName: "_disabledIndices" }] : /* istanbul ignore next */ []));
|
|
358
370
|
this.disabledIndices = this._disabledIndices.asReadonly();
|
|
359
371
|
/** Modifier keys that should not block composite navigation. */
|
|
360
372
|
this.modifierKeysInput = input([], { ...(ngDevMode ? { debugName: "modifierKeysInput" } : /* istanbul ignore next */ {}), alias: 'modifierKeys' });
|
|
361
|
-
this._modifierKeys = linkedSignal(() => this.modifierKeysInput(),
|
|
373
|
+
this._modifierKeys = linkedSignal(() => this.modifierKeysInput(), /* @ts-ignore */
|
|
374
|
+
...(ngDevMode ? [{ debugName: "_modifierKeys" }] : /* istanbul ignore next */ []));
|
|
362
375
|
this.modifierKeys = this._modifierKeys.asReadonly();
|
|
363
376
|
/** Whether hovering an item should focus it. */
|
|
364
377
|
this.highlightItemOnHover = input(false, { ...(ngDevMode ? { debugName: "highlightItemOnHover" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
365
378
|
/** Whether handled navigation keys stop propagation. */
|
|
366
379
|
this.stopEventPropagation = input(true, { ...(ngDevMode ? { debugName: "stopEventPropagation" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
367
380
|
/** The currently highlighted item index. */
|
|
368
|
-
this.highlightedIndex = model(0,
|
|
381
|
+
this.highlightedIndex = model(0, /* @ts-ignore */
|
|
382
|
+
...(ngDevMode ? [{ debugName: "highlightedIndex" }] : /* istanbul ignore next */ []));
|
|
369
383
|
/** Emits when this root changes the highlighted index. */
|
|
370
384
|
this.onHighlightedIndexChange = output();
|
|
371
385
|
/** Emits when the ordered item map changes. */
|
|
@@ -515,10 +529,10 @@ class RdxCompositeRoot {
|
|
|
515
529
|
elements() {
|
|
516
530
|
return this.compositeList.elements();
|
|
517
531
|
}
|
|
518
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
519
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "
|
|
532
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxCompositeRoot, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
533
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.2", type: RdxCompositeRoot, isStandalone: true, selector: "[rdxCompositeRoot]", inputs: { orientationInput: { classPropertyName: "orientationInput", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null }, dirInput: { classPropertyName: "dirInput", publicName: "dir", isSignal: true, isRequired: false, transformFunction: null }, loopFocusInput: { classPropertyName: "loopFocusInput", publicName: "loopFocus", isSignal: true, isRequired: false, transformFunction: null }, enableHomeAndEndKeysInput: { classPropertyName: "enableHomeAndEndKeysInput", publicName: "enableHomeAndEndKeys", isSignal: true, isRequired: false, transformFunction: null }, disabledIndicesInput: { classPropertyName: "disabledIndicesInput", publicName: "disabledIndices", isSignal: true, isRequired: false, transformFunction: null }, modifierKeysInput: { classPropertyName: "modifierKeysInput", publicName: "modifierKeys", isSignal: true, isRequired: false, transformFunction: null }, highlightItemOnHover: { classPropertyName: "highlightItemOnHover", publicName: "highlightItemOnHover", isSignal: true, isRequired: false, transformFunction: null }, stopEventPropagation: { classPropertyName: "stopEventPropagation", publicName: "stopEventPropagation", isSignal: true, isRequired: false, transformFunction: null }, highlightedIndex: { classPropertyName: "highlightedIndex", publicName: "highlightedIndex", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { highlightedIndex: "highlightedIndexChange", onHighlightedIndexChange: "onHighlightedIndexChange", onMapChange: "onMapChange" }, host: { listeners: { "keydown": "handleKeydown($event)", "focusin": "handleFocusIn($event)" } }, providers: [provideRdxCompositeRootContext(rootContext)], exportAs: ["rdxCompositeRoot"], hostDirectives: [{ directive: RdxCompositeList }], ngImport: i0 }); }
|
|
520
534
|
}
|
|
521
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
535
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxCompositeRoot, decorators: [{
|
|
522
536
|
type: Directive,
|
|
523
537
|
args: [{
|
|
524
538
|
selector: '[rdxCompositeRoot]',
|
|
@@ -545,8 +559,10 @@ class RdxCompositeItem {
|
|
|
545
559
|
this.inRootElement = computed(() => {
|
|
546
560
|
const rootContext = this.rootContext;
|
|
547
561
|
return !!rootContext && rootContext.rootElement.contains(this.elementRef.nativeElement);
|
|
548
|
-
},
|
|
549
|
-
|
|
562
|
+
}, /* @ts-ignore */
|
|
563
|
+
...(ngDevMode ? [{ debugName: "inRootElement" }] : /* istanbul ignore next */ []));
|
|
564
|
+
this.highlighted = computed(() => this.rootContext?.highlightedIndex() === this.index(), /* @ts-ignore */
|
|
565
|
+
...(ngDevMode ? [{ debugName: "highlighted" }] : /* istanbul ignore next */ []));
|
|
550
566
|
this.tabIndex = computed(() => {
|
|
551
567
|
const rootContext = this.rootContext;
|
|
552
568
|
if (!rootContext || !this.inRootElement()) {
|
|
@@ -554,7 +570,8 @@ class RdxCompositeItem {
|
|
|
554
570
|
}
|
|
555
571
|
const index = this.index();
|
|
556
572
|
return index !== -1 && rootContext.highlightedIndex() === index && !rootContext.isIndexDisabled(index) ? 0 : -1;
|
|
557
|
-
},
|
|
573
|
+
}, /* @ts-ignore */
|
|
574
|
+
...(ngDevMode ? [{ debugName: "tabIndex" }] : /* istanbul ignore next */ []));
|
|
558
575
|
}
|
|
559
576
|
setMetadata(value) {
|
|
560
577
|
this.listItem.setMetadata(value);
|
|
@@ -579,10 +596,10 @@ class RdxCompositeItem {
|
|
|
579
596
|
this.elementRef.nativeElement.focus();
|
|
580
597
|
}
|
|
581
598
|
}
|
|
582
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
583
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
599
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxCompositeItem, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
600
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.2", type: RdxCompositeItem, isStandalone: true, selector: "[rdxCompositeItem]", host: { listeners: { "focus": "handleFocus()", "mousemove": "handleMouseMove()" }, properties: { "attr.tabindex": "tabIndex()" } }, exportAs: ["rdxCompositeItem"], hostDirectives: [{ directive: RdxCompositeListItem, inputs: ["metadata", "metadata"] }], ngImport: i0 }); }
|
|
584
601
|
}
|
|
585
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
602
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxCompositeItem, decorators: [{
|
|
586
603
|
type: Directive,
|
|
587
604
|
args: [{
|
|
588
605
|
selector: '[rdxCompositeItem]',
|
|
@@ -603,11 +620,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
603
620
|
|
|
604
621
|
const compositeImports = [RdxCompositeList, RdxCompositeListItem, RdxCompositeRoot, RdxCompositeItem];
|
|
605
622
|
class RdxCompositeModule {
|
|
606
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
607
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
608
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
623
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxCompositeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
624
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.2", ngImport: i0, type: RdxCompositeModule, imports: [RdxCompositeList, RdxCompositeListItem, RdxCompositeRoot, RdxCompositeItem], exports: [RdxCompositeList, RdxCompositeListItem, RdxCompositeRoot, RdxCompositeItem] }); }
|
|
625
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxCompositeModule }); }
|
|
609
626
|
}
|
|
610
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
627
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxCompositeModule, decorators: [{
|
|
611
628
|
type: NgModule,
|
|
612
629
|
args: [{
|
|
613
630
|
imports: [...compositeImports],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"radix-ng-primitives-composite.mjs","sources":["../../../packages/primitives/composite/src/utils.ts","../../../packages/primitives/composite/src/composite-list.ts","../../../packages/primitives/composite/src/composite-list-item.ts","../../../packages/primitives/composite/src/composite-root.ts","../../../packages/primitives/composite/src/composite-item.ts","../../../packages/primitives/composite/index.ts","../../../packages/primitives/composite/radix-ng-primitives-composite.ts"],"sourcesContent":["import { ARROW_DOWN, ARROW_LEFT, ARROW_RIGHT, ARROW_UP, Direction, END, HOME } from '@radix-ng/primitives/core';\nimport { RdxCompositeModifierKey, RdxCompositeOrientation } from './types';\n\nexport const ACTIVE_COMPOSITE_ITEM = 'data-composite-item-active';\n\nexport const ARROW_KEYS = new Set([ARROW_UP, ARROW_DOWN, ARROW_LEFT, ARROW_RIGHT]);\nexport const COMPOSITE_KEYS = new Set([...ARROW_KEYS, HOME, END]);\nexport const MODIFIER_KEYS: RdxCompositeModifierKey[] = ['Shift', 'Control', 'Alt', 'Meta'];\n\nexport function sortByDocumentPosition<T extends { element: HTMLElement }>(items: readonly T[]): T[] {\n return [...items]\n .filter((item) => item.element.isConnected)\n .sort((a, b) => {\n const position = a.element.compareDocumentPosition(b.element);\n\n if (position & Node.DOCUMENT_POSITION_FOLLOWING || position & Node.DOCUMENT_POSITION_CONTAINED_BY) {\n return -1;\n }\n\n if (position & Node.DOCUMENT_POSITION_PRECEDING || position & Node.DOCUMENT_POSITION_CONTAINS) {\n return 1;\n }\n\n return 0;\n });\n}\n\nexport function isModifierKeySet(\n event: KeyboardEvent,\n allowedModifierKeys: readonly RdxCompositeModifierKey[]\n): boolean {\n return MODIFIER_KEYS.some((key) => !allowedModifierKeys.includes(key) && event.getModifierState(key));\n}\n\nexport function isNativeTextInput(target: EventTarget | null): target is HTMLInputElement | HTMLTextAreaElement {\n if (!(target instanceof HTMLElement)) {\n return false;\n }\n\n if (target.tagName === 'TEXTAREA') {\n return true;\n }\n\n if (target.tagName !== 'INPUT') {\n return false;\n }\n\n // Only inputs that expose a text caret count: `selectionStart` is `null` for\n // input types without text selection (checkbox, radio, number, email, …) and\n // may even throw in older engines. Either way such controls are not text\n // inputs and must not block arrow-key navigation when they are the focused\n // composite item.\n try {\n return (target as HTMLInputElement).selectionStart != null;\n } catch {\n return false;\n }\n}\n\nexport function getCompositeNavigationKeys(orientation: RdxCompositeOrientation, dir: Direction) {\n const horizontalForwardKey = dir === 'rtl' ? ARROW_LEFT : ARROW_RIGHT;\n const horizontalBackwardKey = dir === 'rtl' ? ARROW_RIGHT : ARROW_LEFT;\n\n return {\n forwardKeys:\n orientation === 'horizontal'\n ? [horizontalForwardKey]\n : orientation === 'vertical'\n ? [ARROW_DOWN]\n : [horizontalForwardKey, ARROW_DOWN],\n backwardKeys:\n orientation === 'horizontal'\n ? [horizontalBackwardKey]\n : orientation === 'vertical'\n ? [ARROW_UP]\n : [horizontalBackwardKey, ARROW_UP]\n };\n}\n\nexport function shouldKeepNativeTextInputBehavior(\n event: KeyboardEvent,\n target: HTMLInputElement | HTMLTextAreaElement,\n orientation: RdxCompositeOrientation,\n dir: Direction\n): boolean {\n const { forwardKeys, backwardKeys } = getCompositeNavigationKeys(orientation, dir);\n const selectionStart = target.selectionStart;\n const selectionEnd = target.selectionEnd;\n const value = target.value ?? '';\n\n if (selectionStart == null || selectionEnd == null || event.shiftKey || selectionStart !== selectionEnd) {\n return true;\n }\n\n if (!backwardKeys.includes(event.key) && selectionStart < value.length) {\n return true;\n }\n\n if (!forwardKeys.includes(event.key) && selectionStart > 0) {\n return true;\n }\n\n return false;\n}\n\nexport function isIndexOutOfListBounds<T>(list: readonly T[], index: number): boolean {\n return index < 0 || index >= list.length;\n}\n\nexport function getMinListIndex(list: readonly HTMLElement[], disabledIndices?: readonly number[]): number {\n return findNonDisabledListIndex(list, { startingIndex: -1, disabledIndices });\n}\n\nexport function getMaxListIndex(list: readonly HTMLElement[], disabledIndices?: readonly number[]): number {\n return findNonDisabledListIndex(list, { startingIndex: list.length, decrement: true, disabledIndices });\n}\n\nexport function findNonDisabledListIndex(\n list: readonly HTMLElement[],\n options: { startingIndex?: number; decrement?: boolean; disabledIndices?: readonly number[] } = {}\n): number {\n const { startingIndex = -1, decrement = false, disabledIndices } = options;\n const step = decrement ? -1 : 1;\n\n for (let index = startingIndex + step; index >= 0 && index < list.length; index += step) {\n if (!isListIndexDisabled(list, index, disabledIndices)) {\n return index;\n }\n }\n\n return -1;\n}\n\nexport function isListIndexDisabled(\n list: readonly HTMLElement[],\n index: number,\n disabledIndices?: readonly number[]\n): boolean {\n if (disabledIndices?.includes(index)) {\n return true;\n }\n\n const element = list[index];\n\n if (!element) {\n return false;\n }\n\n if (!isElementVisible(element)) {\n return true;\n }\n\n return (\n disabledIndices === undefined &&\n (element.hasAttribute('disabled') || element.getAttribute('aria-disabled') === 'true')\n );\n}\n\nexport function isElementDisabled(element: HTMLElement | null): boolean {\n return element === null || element.hasAttribute('disabled') || element.getAttribute('aria-disabled') === 'true';\n}\n\nexport function isElementVisible(element: HTMLElement | null): boolean {\n if (!element || !element.isConnected) {\n return false;\n }\n\n if (typeof Element !== 'undefined' && !(element instanceof Element)) {\n return true;\n }\n\n let styles: CSSStyleDeclaration;\n try {\n styles = getComputedStyle(element);\n } catch {\n return true;\n }\n\n return styles.visibility !== 'hidden' && styles.visibility !== 'collapse';\n}\n\nexport function scrollIntoViewIfNeeded(\n scrollContainer: HTMLElement | null,\n element: HTMLElement | null,\n direction: Direction,\n orientation: RdxCompositeOrientation\n): void {\n if (!scrollContainer || !element || typeof scrollContainer.scrollTo !== 'function') {\n return;\n }\n\n const isOverflowingX = scrollContainer.clientWidth < scrollContainer.scrollWidth;\n const isOverflowingY = scrollContainer.clientHeight < scrollContainer.scrollHeight;\n let left = scrollContainer.scrollLeft;\n let top = scrollContainer.scrollTop;\n\n if (isOverflowingX && orientation !== 'vertical') {\n const elementOffsetLeft = getOffset(scrollContainer, element, 'left');\n const containerStyles = getScrollStyles(scrollContainer);\n const elementStyles = getScrollStyles(element);\n\n if (\n elementOffsetLeft - elementStyles.scrollMarginLeft <\n scrollContainer.scrollLeft + containerStyles.scrollPaddingLeft\n ) {\n left = elementOffsetLeft - elementStyles.scrollMarginLeft - containerStyles.scrollPaddingLeft;\n } else if (\n elementOffsetLeft + element.offsetWidth + elementStyles.scrollMarginRight >\n scrollContainer.scrollLeft + scrollContainer.clientWidth - containerStyles.scrollPaddingRight\n ) {\n left =\n elementOffsetLeft +\n element.offsetWidth +\n elementStyles.scrollMarginRight -\n scrollContainer.clientWidth +\n containerStyles.scrollPaddingRight;\n }\n\n if (direction === 'rtl') {\n left = Math.max(left, 0);\n }\n }\n\n if (isOverflowingY && orientation !== 'horizontal') {\n const elementOffsetTop = getOffset(scrollContainer, element, 'top');\n const containerStyles = getScrollStyles(scrollContainer);\n const elementStyles = getScrollStyles(element);\n\n if (\n elementOffsetTop - elementStyles.scrollMarginTop <\n scrollContainer.scrollTop + containerStyles.scrollPaddingTop\n ) {\n top = elementOffsetTop - elementStyles.scrollMarginTop - containerStyles.scrollPaddingTop;\n } else if (\n elementOffsetTop + element.offsetHeight + elementStyles.scrollMarginBottom >\n scrollContainer.scrollTop + scrollContainer.clientHeight - containerStyles.scrollPaddingBottom\n ) {\n top =\n elementOffsetTop +\n element.offsetHeight +\n elementStyles.scrollMarginBottom -\n scrollContainer.clientHeight +\n containerStyles.scrollPaddingBottom;\n }\n }\n\n scrollContainer.scrollTo({ left, top, behavior: 'auto' });\n}\n\nfunction getOffset(ancestor: HTMLElement, element: HTMLElement, side: 'left' | 'top'): number {\n const propName = side === 'left' ? 'offsetLeft' : 'offsetTop';\n let result = 0;\n let current: HTMLElement | null = element;\n\n while (current?.offsetParent) {\n result += current[propName];\n if (current.offsetParent === ancestor) {\n break;\n }\n current = current.offsetParent as HTMLElement;\n }\n\n return result;\n}\n\nfunction getScrollStyles(element: HTMLElement) {\n const styles = getComputedStyle(element);\n\n return {\n scrollMarginTop: parseFloat(styles.scrollMarginTop) || 0,\n scrollMarginRight: parseFloat(styles.scrollMarginRight) || 0,\n scrollMarginBottom: parseFloat(styles.scrollMarginBottom) || 0,\n scrollMarginLeft: parseFloat(styles.scrollMarginLeft) || 0,\n scrollPaddingTop: parseFloat(styles.scrollPaddingTop) || 0,\n scrollPaddingRight: parseFloat(styles.scrollPaddingRight) || 0,\n scrollPaddingBottom: parseFloat(styles.scrollPaddingBottom) || 0,\n scrollPaddingLeft: parseFloat(styles.scrollPaddingLeft) || 0\n };\n}\n","import { computed, Directive, effect, ElementRef, inject, output, signal } from '@angular/core';\nimport { createContext } from '@radix-ng/primitives/core';\nimport {\n RdxCompositeItemMetadata,\n RdxCompositeItemRegistration,\n RdxCompositeListContext,\n RdxCompositeMetadata\n} from './types';\nimport { sortByDocumentPosition } from './utils';\n\nconst listContext = (): RdxCompositeListContext => {\n const list = inject(RdxCompositeList);\n\n return {\n listElement: list.elementRef.nativeElement,\n items: list.items,\n itemMap: list.itemMap,\n registerItem: (item) => list.registerItem(item),\n indexOf: (element) => list.indexOf(element)\n };\n};\n\nexport const [injectRdxCompositeListContext, provideRdxCompositeListContext] = createContext<RdxCompositeListContext>(\n 'RdxCompositeListContext',\n 'utils/composite'\n);\n\n/**\n * Base UI-style composite list. Owns item registration and DOM-order metadata without applying\n * roving tabindex or keyboard navigation.\n */\n@Directive({\n selector: '[rdxCompositeList]',\n exportAs: 'rdxCompositeList',\n providers: [provideRdxCompositeListContext(listContext)]\n})\nexport class RdxCompositeList {\n readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly registeredItems = signal<RdxCompositeItemRegistration[]>([]);\n\n /** Emits when the ordered item map changes. */\n readonly onMapChange = output<Map<HTMLElement, RdxCompositeMetadata>>();\n\n /** Items registered with this list, sorted in DOM order. */\n readonly items = computed(() => sortByDocumentPosition(this.registeredItems()));\n\n /** Ordered metadata keyed by item element. */\n readonly itemMap = computed(() => {\n const map = new Map<HTMLElement, RdxCompositeMetadata>();\n\n this.items().forEach((item, index) => {\n map.set(item.element, { ...(item.metadata() ?? {}), index });\n });\n\n return map;\n });\n\n constructor() {\n effect(() => {\n this.onMapChange.emit(this.itemMap());\n });\n }\n\n registerItem<Metadata extends RdxCompositeItemMetadata>(item: RdxCompositeItemRegistration<Metadata>): () => void {\n this.registeredItems.update((items) => [\n ...items.filter((registered) => registered.element !== item.element),\n item\n ]);\n\n return () => {\n this.registeredItems.update((items) => items.filter((registered) => registered.element !== item.element));\n };\n }\n\n indexOf(element: HTMLElement): number {\n return this.items().findIndex((item) => item.element === element);\n }\n\n elements(): HTMLElement[] {\n return this.items().map((item) => item.element);\n }\n}\n","import {\n afterNextRender,\n computed,\n Directive,\n effect,\n ElementRef,\n inject,\n input,\n linkedSignal,\n signal,\n untracked\n} from '@angular/core';\nimport { injectRdxCompositeListContext } from './composite-list';\nimport { RdxCompositeItemMetadata } from './types';\n\n/**\n * Registers the host with the nearest composite list without changing focus behavior.\n */\n@Directive({\n selector: '[rdxCompositeListItem]',\n exportAs: 'rdxCompositeListItem'\n})\nexport class RdxCompositeListItem {\n private readonly listContext = injectRdxCompositeListContext(true);\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly hasRendered = signal(false);\n\n /** Arbitrary metadata included in the list's ordered item map. */\n readonly metadataInput = input<RdxCompositeItemMetadata | null | undefined>(undefined, { alias: 'metadata' });\n private readonly _metadata = linkedSignal(() => this.metadataInput());\n\n readonly index = computed(() => this.listContext?.indexOf(this.elementRef.nativeElement) ?? -1);\n readonly inListElement = computed(() => {\n const listContext = this.listContext;\n return !!listContext && listContext.listElement.contains(this.elementRef.nativeElement);\n });\n\n constructor() {\n afterNextRender(() => {\n this.hasRendered.set(true);\n });\n\n effect((onCleanup) => {\n const listContext = this.listContext;\n if (!listContext || !this.hasRendered() || !this.inListElement()) {\n return;\n }\n\n const element = this.elementRef.nativeElement;\n const unregister = untracked(() =>\n listContext.registerItem({ element, metadata: this._metadata.asReadonly() })\n );\n\n onCleanup(unregister);\n });\n }\n\n setMetadata(value: RdxCompositeItemMetadata | null | undefined): void {\n this._metadata.set(value);\n }\n}\n","import {\n booleanAttribute,\n Directive,\n effect,\n ElementRef,\n inject,\n input,\n linkedSignal,\n model,\n output\n} from '@angular/core';\nimport { BooleanInput, createContext, Direction } from '@radix-ng/primitives/core';\nimport { injectDirection } from '@radix-ng/primitives/direction-provider';\nimport { RdxCompositeList } from './composite-list';\nimport {\n RdxCompositeMetadata,\n RdxCompositeModifierKey,\n RdxCompositeOrientation,\n RdxCompositeRootContext\n} from './types';\nimport {\n ACTIVE_COMPOSITE_ITEM,\n ARROW_KEYS,\n COMPOSITE_KEYS,\n findNonDisabledListIndex,\n getCompositeNavigationKeys,\n getMaxListIndex,\n getMinListIndex,\n isElementDisabled,\n isIndexOutOfListBounds,\n isListIndexDisabled,\n isModifierKeySet,\n isNativeTextInput,\n scrollIntoViewIfNeeded,\n shouldKeepNativeTextInputBehavior\n} from './utils';\n\nconst rootContext = (): RdxCompositeRootContext => {\n const root = inject(RdxCompositeRoot);\n\n return {\n rootElement: root.elementRef.nativeElement,\n highlightedIndex: root.highlightedIndex.asReadonly(),\n highlightItemOnHover: root.highlightItemOnHover,\n orientation: root.orientation,\n dir: root.dir,\n isIndexDisabled: (index) => root.isIndexDisabled(index),\n setHighlightedIndex: (index, shouldScrollIntoView) => root.setHighlightedIndex(index, shouldScrollIntoView),\n relayKeyboardEvent: (event) => root.relayKeyboardEvent(event)\n };\n};\n\nexport const [injectRdxCompositeRootContext, provideRdxCompositeRootContext] = createContext<RdxCompositeRootContext>(\n 'RdxCompositeRootContext',\n 'utils/composite'\n);\n\n/**\n * Internal Base UI-style composite root for roving index and arrow-key navigation.\n */\n@Directive({\n selector: '[rdxCompositeRoot]',\n exportAs: 'rdxCompositeRoot',\n hostDirectives: [RdxCompositeList],\n providers: [provideRdxCompositeRootContext(rootContext)],\n host: {\n '(keydown)': 'handleKeydown($event)',\n '(focusin)': 'handleFocusIn($event)'\n }\n})\nexport class RdxCompositeRoot {\n readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly compositeList = inject(RdxCompositeList, { self: true });\n private hasSetInitialIndex = false;\n\n /** The composite orientation. */\n readonly orientationInput = input<RdxCompositeOrientation>('both', { alias: 'orientation' });\n private readonly _orientation = linkedSignal(() => this.orientationInput());\n readonly orientation = this._orientation.asReadonly();\n\n /** Text direction for horizontal arrow-key navigation. */\n readonly dirInput = input<Direction | undefined>(undefined, { alias: 'dir' });\n private readonly effectiveDir = injectDirection(this.dirInput);\n private readonly _dir = linkedSignal(() => this.effectiveDir());\n readonly dir = this._dir.asReadonly();\n\n /** Whether arrow-key navigation wraps at the first/last item. */\n readonly loopFocusInput = input<boolean, BooleanInput>(true, {\n alias: 'loopFocus',\n transform: booleanAttribute\n });\n private readonly _loopFocus = linkedSignal(() => this.loopFocusInput());\n readonly loopFocus = this._loopFocus.asReadonly();\n\n /** Enables Home and End keys. */\n readonly enableHomeAndEndKeysInput = input<boolean, BooleanInput>(false, {\n alias: 'enableHomeAndEndKeys',\n transform: booleanAttribute\n });\n private readonly _enableHomeAndEndKeys = linkedSignal(() => this.enableHomeAndEndKeysInput());\n readonly enableHomeAndEndKeys = this._enableHomeAndEndKeys.asReadonly();\n\n /** Indices that are skipped by keyboard navigation. */\n readonly disabledIndicesInput = input<readonly number[] | undefined>(undefined, { alias: 'disabledIndices' });\n private readonly _disabledIndices = linkedSignal(() => this.disabledIndicesInput());\n readonly disabledIndices = this._disabledIndices.asReadonly();\n\n /** Modifier keys that should not block composite navigation. */\n readonly modifierKeysInput = input<readonly RdxCompositeModifierKey[]>([], { alias: 'modifierKeys' });\n private readonly _modifierKeys = linkedSignal(() => this.modifierKeysInput());\n readonly modifierKeys = this._modifierKeys.asReadonly();\n\n /** Whether hovering an item should focus it. */\n readonly highlightItemOnHover = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /** Whether handled navigation keys stop propagation. */\n readonly stopEventPropagation = input<boolean, BooleanInput>(true, { transform: booleanAttribute });\n\n /** The currently highlighted item index. */\n readonly highlightedIndex = model<number>(0);\n\n /** Emits when this root changes the highlighted index. */\n readonly onHighlightedIndexChange = output<number>();\n\n /** Emits when the ordered item map changes. */\n readonly onMapChange = output<Map<HTMLElement, RdxCompositeMetadata>>();\n\n readonly items = this.compositeList.items;\n\n readonly itemMap = this.compositeList.itemMap;\n\n constructor() {\n effect(() => {\n const items = this.items();\n if (items.length === 0) {\n return;\n }\n\n if (!this.hasSetInitialIndex) {\n this.hasSetInitialIndex = true;\n const activeIndex = items.findIndex((item) => item.element.hasAttribute(ACTIVE_COMPOSITE_ITEM));\n\n if (activeIndex !== -1) {\n this.setHighlightedIndex(activeIndex, true);\n return;\n }\n }\n\n if (this.isIndexDisabled(this.highlightedIndex())) {\n const firstEnabledIndex = getMinListIndex(this.elements(), this.disabledIndices());\n\n if (!isIndexOutOfListBounds(items, firstEnabledIndex)) {\n this.setHighlightedIndex(firstEnabledIndex);\n }\n }\n });\n\n effect(() => {\n this.onMapChange.emit(this.itemMap());\n });\n }\n\n indexOf(element: HTMLElement): number {\n return this.compositeList.indexOf(element);\n }\n\n setOrientation(value: RdxCompositeOrientation): void {\n this._orientation.set(value);\n }\n\n setLoopFocus(value: boolean): void {\n this._loopFocus.set(value);\n }\n\n setDir(value: Direction): void {\n this._dir.set(value);\n }\n\n setEnableHomeAndEndKeys(value: boolean): void {\n this._enableHomeAndEndKeys.set(value);\n }\n\n setDisabledIndices(value: readonly number[] | undefined): void {\n this._disabledIndices.set(value);\n }\n\n setModifierKeys(value: readonly RdxCompositeModifierKey[]): void {\n this._modifierKeys.set(value);\n }\n\n isIndexDisabled(index: number): boolean {\n return isListIndexDisabled(this.elements(), index, this.disabledIndices());\n }\n\n setHighlightedIndex(index: number, shouldScrollIntoView = false): void {\n if (this.highlightedIndex() !== index) {\n this.highlightedIndex.set(index);\n this.onHighlightedIndexChange.emit(index);\n }\n\n if (shouldScrollIntoView) {\n scrollIntoViewIfNeeded(\n this.elementRef.nativeElement,\n this.elements()[index],\n this.dir(),\n this.orientation()\n );\n }\n }\n\n relayKeyboardEvent(event: KeyboardEvent): void {\n this.handleCompositeKeydown(event, true);\n }\n\n protected handleKeydown(event: KeyboardEvent): void {\n this.handleCompositeKeydown(event, false);\n }\n\n /** Select the whole value when focus lands on a native text input item (Base UI parity). */\n protected handleFocusIn(event: FocusEvent): void {\n const target = event.target;\n\n if (isNativeTextInput(target)) {\n target.setSelectionRange(0, target.value.length);\n }\n }\n\n private handleCompositeKeydown(event: KeyboardEvent, relayed: boolean): void {\n const relevantKeys = this.enableHomeAndEndKeys() ? COMPOSITE_KEYS : ARROW_KEYS;\n\n if (!relevantKeys.has(event.key) || isModifierKeySet(event, this.modifierKeys())) {\n return;\n }\n\n const target = event.target;\n const rootElement = this.elementRef.nativeElement;\n\n if (!relayed && target instanceof HTMLElement) {\n const closestRoot = target.closest('[rdxCompositeRoot]');\n if (closestRoot && closestRoot !== rootElement) {\n return;\n }\n }\n\n if (isNativeTextInput(target) && !isElementDisabled(target)) {\n try {\n if (shouldKeepNativeTextInputBehavior(event, target, this.orientation(), this.dir())) {\n return;\n }\n } catch {\n return;\n }\n }\n\n const elements = this.elements();\n if (elements.length === 0) {\n return;\n }\n\n const nextIndex = this.getNextIndex(event, elements);\n\n if (nextIndex === this.highlightedIndex() || isIndexOutOfListBounds(elements, nextIndex)) {\n return;\n }\n\n if (this.stopEventPropagation()) {\n event.stopPropagation();\n }\n\n event.preventDefault();\n this.setHighlightedIndex(nextIndex, true);\n\n queueMicrotask(() => {\n this.elements()[nextIndex]?.focus();\n });\n }\n\n private getNextIndex(event: KeyboardEvent, elements: HTMLElement[]): number {\n const highlightedIndex = this.highlightedIndex();\n const minIndex = getMinListIndex(elements, this.disabledIndices());\n const maxIndex = getMaxListIndex(elements, this.disabledIndices());\n\n if (this.enableHomeAndEndKeys()) {\n if (event.key === 'Home') {\n return minIndex;\n }\n\n if (event.key === 'End') {\n return maxIndex;\n }\n }\n\n const { forwardKeys, backwardKeys } = getCompositeNavigationKeys(this.orientation(), this.dir());\n const isForward = forwardKeys.includes(event.key);\n const isBackward = backwardKeys.includes(event.key);\n\n if (!isForward && !isBackward) {\n return highlightedIndex;\n }\n\n const decrement = isBackward;\n const boundaryIndex = decrement ? minIndex : maxIndex;\n const loopIndex = decrement ? maxIndex : minIndex;\n\n if (this.loopFocus() && highlightedIndex === boundaryIndex) {\n return loopIndex;\n }\n\n return findNonDisabledListIndex(elements, {\n startingIndex: highlightedIndex,\n decrement,\n disabledIndices: this.disabledIndices()\n });\n }\n\n private elements(): HTMLElement[] {\n return this.compositeList.elements();\n }\n}\n","import { computed, Directive, ElementRef, inject } from '@angular/core';\nimport { RdxCompositeListItem } from './composite-list-item';\nimport { injectRdxCompositeRootContext } from './composite-root';\nimport { RdxCompositeItemMetadata } from './types';\n\n/**\n * Internal Base UI-style composite item. Registers itself with the nearest composite root and\n * receives the roving `tabindex` from the root's highlighted index.\n */\n@Directive({\n selector: '[rdxCompositeItem]',\n exportAs: 'rdxCompositeItem',\n hostDirectives: [\n {\n directive: RdxCompositeListItem,\n inputs: ['metadata']\n }\n ],\n host: {\n '[attr.tabindex]': 'tabIndex()',\n '(focus)': 'handleFocus()',\n '(mousemove)': 'handleMouseMove()'\n }\n})\nexport class RdxCompositeItem {\n private readonly rootContext = injectRdxCompositeRootContext(true);\n private readonly listItem = inject(RdxCompositeListItem, { self: true });\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n readonly index = this.listItem.index;\n private readonly inRootElement = computed(() => {\n const rootContext = this.rootContext;\n return !!rootContext && rootContext.rootElement.contains(this.elementRef.nativeElement);\n });\n protected readonly highlighted = computed(() => this.rootContext?.highlightedIndex() === this.index());\n protected readonly tabIndex = computed(() => {\n const rootContext = this.rootContext;\n\n if (!rootContext || !this.inRootElement()) {\n return null;\n }\n\n const index = this.index();\n return index !== -1 && rootContext.highlightedIndex() === index && !rootContext.isIndexDisabled(index) ? 0 : -1;\n });\n\n setMetadata(value: RdxCompositeItemMetadata | null | undefined): void {\n this.listItem.setMetadata(value);\n }\n\n protected handleFocus(): void {\n const index = this.index();\n\n if (this.inRootElement() && index !== -1) {\n this.rootContext?.setHighlightedIndex(index);\n }\n }\n\n protected handleMouseMove(): void {\n const rootContext = this.rootContext;\n const index = this.index();\n\n if (\n !this.inRootElement() ||\n !rootContext ||\n index === -1 ||\n !rootContext.highlightItemOnHover() ||\n this.highlighted()\n ) {\n return;\n }\n\n if (!rootContext.isIndexDisabled(index)) {\n this.elementRef.nativeElement.focus();\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { RdxCompositeItem } from './src/composite-item';\nimport { RdxCompositeList } from './src/composite-list';\nimport { RdxCompositeListItem } from './src/composite-list-item';\nimport { RdxCompositeRoot } from './src/composite-root';\n\nexport * from './src/composite-item';\nexport * from './src/composite-list';\nexport * from './src/composite-list-item';\nexport * from './src/composite-root';\nexport * from './src/types';\nexport * from './src/utils';\n\nexport const compositeImports = [RdxCompositeList, RdxCompositeListItem, RdxCompositeRoot, RdxCompositeItem];\n\n@NgModule({\n imports: [...compositeImports],\n exports: [...compositeImports]\n})\nexport class RdxCompositeModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.RdxCompositeList","i1.RdxCompositeListItem"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"radix-ng-primitives-composite.mjs","sources":["../../../packages/primitives/composite/src/utils.ts","../../../packages/primitives/composite/src/composite-list.ts","../../../packages/primitives/composite/src/composite-list-item.ts","../../../packages/primitives/composite/src/composite-root.ts","../../../packages/primitives/composite/src/composite-item.ts","../../../packages/primitives/composite/index.ts","../../../packages/primitives/composite/radix-ng-primitives-composite.ts"],"sourcesContent":["import { ARROW_DOWN, ARROW_LEFT, ARROW_RIGHT, ARROW_UP, Direction, END, HOME } from '@radix-ng/primitives/core';\nimport { RdxCompositeModifierKey, RdxCompositeOrientation } from './types';\n\nexport const ACTIVE_COMPOSITE_ITEM = 'data-composite-item-active';\n\nexport const ARROW_KEYS = new Set([ARROW_UP, ARROW_DOWN, ARROW_LEFT, ARROW_RIGHT]);\nexport const COMPOSITE_KEYS = new Set([...ARROW_KEYS, HOME, END]);\nexport const MODIFIER_KEYS: RdxCompositeModifierKey[] = ['Shift', 'Control', 'Alt', 'Meta'];\n\nexport function sortByDocumentPosition<T extends { element: HTMLElement }>(items: readonly T[]): T[] {\n return [...items]\n .filter((item) => item.element.isConnected)\n .sort((a, b) => {\n const position = a.element.compareDocumentPosition(b.element);\n\n if (position & Node.DOCUMENT_POSITION_FOLLOWING || position & Node.DOCUMENT_POSITION_CONTAINED_BY) {\n return -1;\n }\n\n if (position & Node.DOCUMENT_POSITION_PRECEDING || position & Node.DOCUMENT_POSITION_CONTAINS) {\n return 1;\n }\n\n return 0;\n });\n}\n\nexport function isModifierKeySet(\n event: KeyboardEvent,\n allowedModifierKeys: readonly RdxCompositeModifierKey[]\n): boolean {\n return MODIFIER_KEYS.some((key) => !allowedModifierKeys.includes(key) && event.getModifierState(key));\n}\n\nexport function isNativeTextInput(target: EventTarget | null): target is HTMLInputElement | HTMLTextAreaElement {\n if (!(target instanceof HTMLElement)) {\n return false;\n }\n\n if (target.tagName === 'TEXTAREA') {\n return true;\n }\n\n if (target.tagName !== 'INPUT') {\n return false;\n }\n\n // Only inputs that expose a text caret count: `selectionStart` is `null` for\n // input types without text selection (checkbox, radio, number, email, …) and\n // may even throw in older engines. Either way such controls are not text\n // inputs and must not block arrow-key navigation when they are the focused\n // composite item.\n try {\n return (target as HTMLInputElement).selectionStart != null;\n } catch {\n return false;\n }\n}\n\nexport function getCompositeNavigationKeys(orientation: RdxCompositeOrientation, dir: Direction) {\n const horizontalForwardKey = dir === 'rtl' ? ARROW_LEFT : ARROW_RIGHT;\n const horizontalBackwardKey = dir === 'rtl' ? ARROW_RIGHT : ARROW_LEFT;\n\n return {\n forwardKeys:\n orientation === 'horizontal'\n ? [horizontalForwardKey]\n : orientation === 'vertical'\n ? [ARROW_DOWN]\n : [horizontalForwardKey, ARROW_DOWN],\n backwardKeys:\n orientation === 'horizontal'\n ? [horizontalBackwardKey]\n : orientation === 'vertical'\n ? [ARROW_UP]\n : [horizontalBackwardKey, ARROW_UP]\n };\n}\n\nexport function shouldKeepNativeTextInputBehavior(\n event: KeyboardEvent,\n target: HTMLInputElement | HTMLTextAreaElement,\n orientation: RdxCompositeOrientation,\n dir: Direction\n): boolean {\n const { forwardKeys, backwardKeys } = getCompositeNavigationKeys(orientation, dir);\n const selectionStart = target.selectionStart;\n const selectionEnd = target.selectionEnd;\n const value = target.value ?? '';\n\n if (selectionStart == null || selectionEnd == null || event.shiftKey || selectionStart !== selectionEnd) {\n return true;\n }\n\n if (!backwardKeys.includes(event.key) && selectionStart < value.length) {\n return true;\n }\n\n if (!forwardKeys.includes(event.key) && selectionStart > 0) {\n return true;\n }\n\n return false;\n}\n\nexport function isIndexOutOfListBounds<T>(list: readonly T[], index: number): boolean {\n return index < 0 || index >= list.length;\n}\n\nexport function getMinListIndex(list: readonly HTMLElement[], disabledIndices?: readonly number[]): number {\n return findNonDisabledListIndex(list, { startingIndex: -1, disabledIndices });\n}\n\nexport function getMaxListIndex(list: readonly HTMLElement[], disabledIndices?: readonly number[]): number {\n return findNonDisabledListIndex(list, { startingIndex: list.length, decrement: true, disabledIndices });\n}\n\nexport function findNonDisabledListIndex(\n list: readonly HTMLElement[],\n options: { startingIndex?: number; decrement?: boolean; disabledIndices?: readonly number[] } = {}\n): number {\n const { startingIndex = -1, decrement = false, disabledIndices } = options;\n const step = decrement ? -1 : 1;\n\n for (let index = startingIndex + step; index >= 0 && index < list.length; index += step) {\n if (!isListIndexDisabled(list, index, disabledIndices)) {\n return index;\n }\n }\n\n return -1;\n}\n\nexport function isListIndexDisabled(\n list: readonly HTMLElement[],\n index: number,\n disabledIndices?: readonly number[]\n): boolean {\n if (disabledIndices?.includes(index)) {\n return true;\n }\n\n const element = list[index];\n\n if (!element) {\n return false;\n }\n\n if (!isElementVisible(element)) {\n return true;\n }\n\n return (\n disabledIndices === undefined &&\n (element.hasAttribute('disabled') || element.getAttribute('aria-disabled') === 'true')\n );\n}\n\nexport function isElementDisabled(element: HTMLElement | null): boolean {\n return element === null || element.hasAttribute('disabled') || element.getAttribute('aria-disabled') === 'true';\n}\n\nexport function isElementVisible(element: HTMLElement | null): boolean {\n if (!element || !element.isConnected) {\n return false;\n }\n\n if (typeof Element !== 'undefined' && !(element instanceof Element)) {\n return true;\n }\n\n let styles: CSSStyleDeclaration;\n try {\n styles = getComputedStyle(element);\n } catch {\n return true;\n }\n\n return styles.visibility !== 'hidden' && styles.visibility !== 'collapse';\n}\n\nexport function scrollIntoViewIfNeeded(\n scrollContainer: HTMLElement | null,\n element: HTMLElement | null,\n direction: Direction,\n orientation: RdxCompositeOrientation\n): void {\n if (!scrollContainer || !element || typeof scrollContainer.scrollTo !== 'function') {\n return;\n }\n\n const isOverflowingX = scrollContainer.clientWidth < scrollContainer.scrollWidth;\n const isOverflowingY = scrollContainer.clientHeight < scrollContainer.scrollHeight;\n let left = scrollContainer.scrollLeft;\n let top = scrollContainer.scrollTop;\n\n if (isOverflowingX && orientation !== 'vertical') {\n const elementOffsetLeft = getOffset(scrollContainer, element, 'left');\n const containerStyles = getScrollStyles(scrollContainer);\n const elementStyles = getScrollStyles(element);\n\n if (\n elementOffsetLeft - elementStyles.scrollMarginLeft <\n scrollContainer.scrollLeft + containerStyles.scrollPaddingLeft\n ) {\n left = elementOffsetLeft - elementStyles.scrollMarginLeft - containerStyles.scrollPaddingLeft;\n } else if (\n elementOffsetLeft + element.offsetWidth + elementStyles.scrollMarginRight >\n scrollContainer.scrollLeft + scrollContainer.clientWidth - containerStyles.scrollPaddingRight\n ) {\n left =\n elementOffsetLeft +\n element.offsetWidth +\n elementStyles.scrollMarginRight -\n scrollContainer.clientWidth +\n containerStyles.scrollPaddingRight;\n }\n\n if (direction === 'rtl') {\n left = Math.max(left, 0);\n }\n }\n\n if (isOverflowingY && orientation !== 'horizontal') {\n const elementOffsetTop = getOffset(scrollContainer, element, 'top');\n const containerStyles = getScrollStyles(scrollContainer);\n const elementStyles = getScrollStyles(element);\n\n if (\n elementOffsetTop - elementStyles.scrollMarginTop <\n scrollContainer.scrollTop + containerStyles.scrollPaddingTop\n ) {\n top = elementOffsetTop - elementStyles.scrollMarginTop - containerStyles.scrollPaddingTop;\n } else if (\n elementOffsetTop + element.offsetHeight + elementStyles.scrollMarginBottom >\n scrollContainer.scrollTop + scrollContainer.clientHeight - containerStyles.scrollPaddingBottom\n ) {\n top =\n elementOffsetTop +\n element.offsetHeight +\n elementStyles.scrollMarginBottom -\n scrollContainer.clientHeight +\n containerStyles.scrollPaddingBottom;\n }\n }\n\n scrollContainer.scrollTo({ left, top, behavior: 'auto' });\n}\n\nfunction getOffset(ancestor: HTMLElement, element: HTMLElement, side: 'left' | 'top'): number {\n const propName = side === 'left' ? 'offsetLeft' : 'offsetTop';\n let result = 0;\n let current: HTMLElement | null = element;\n\n while (current?.offsetParent) {\n result += current[propName];\n if (current.offsetParent === ancestor) {\n break;\n }\n current = current.offsetParent as HTMLElement;\n }\n\n return result;\n}\n\nfunction getScrollStyles(element: HTMLElement) {\n const styles = getComputedStyle(element);\n\n return {\n scrollMarginTop: parseFloat(styles.scrollMarginTop) || 0,\n scrollMarginRight: parseFloat(styles.scrollMarginRight) || 0,\n scrollMarginBottom: parseFloat(styles.scrollMarginBottom) || 0,\n scrollMarginLeft: parseFloat(styles.scrollMarginLeft) || 0,\n scrollPaddingTop: parseFloat(styles.scrollPaddingTop) || 0,\n scrollPaddingRight: parseFloat(styles.scrollPaddingRight) || 0,\n scrollPaddingBottom: parseFloat(styles.scrollPaddingBottom) || 0,\n scrollPaddingLeft: parseFloat(styles.scrollPaddingLeft) || 0\n };\n}\n","import { computed, Directive, effect, ElementRef, inject, output, signal } from '@angular/core';\nimport { createContext } from '@radix-ng/primitives/core';\nimport {\n RdxCompositeItemMetadata,\n RdxCompositeItemRegistration,\n RdxCompositeListContext,\n RdxCompositeMetadata\n} from './types';\nimport { sortByDocumentPosition } from './utils';\n\nconst listContext = (): RdxCompositeListContext => {\n const list = inject(RdxCompositeList);\n\n return {\n listElement: list.elementRef.nativeElement,\n items: list.items,\n itemMap: list.itemMap,\n registerItem: (item) => list.registerItem(item),\n indexOf: (element) => list.indexOf(element)\n };\n};\n\nexport const [injectRdxCompositeListContext, provideRdxCompositeListContext] = createContext<RdxCompositeListContext>(\n 'RdxCompositeListContext',\n 'utils/composite'\n);\n\n/**\n * Base UI-style composite list. Owns item registration and DOM-order metadata without applying\n * roving tabindex or keyboard navigation.\n */\n@Directive({\n selector: '[rdxCompositeList]',\n exportAs: 'rdxCompositeList',\n providers: [provideRdxCompositeListContext(listContext)]\n})\nexport class RdxCompositeList {\n readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly registeredItems = signal<RdxCompositeItemRegistration[]>([]);\n\n /** Emits when the ordered item map changes. */\n readonly onMapChange = output<Map<HTMLElement, RdxCompositeMetadata>>();\n\n /** Items registered with this list, sorted in DOM order. */\n readonly items = computed(() => sortByDocumentPosition(this.registeredItems()));\n\n /** Ordered metadata keyed by item element. */\n readonly itemMap = computed(() => {\n const map = new Map<HTMLElement, RdxCompositeMetadata>();\n\n this.items().forEach((item, index) => {\n map.set(item.element, { ...(item.metadata() ?? {}), index });\n });\n\n return map;\n });\n\n constructor() {\n effect(() => {\n this.onMapChange.emit(this.itemMap());\n });\n }\n\n registerItem<Metadata extends RdxCompositeItemMetadata>(item: RdxCompositeItemRegistration<Metadata>): () => void {\n this.registeredItems.update((items) => [\n ...items.filter((registered) => registered.element !== item.element),\n item\n ]);\n\n return () => {\n this.registeredItems.update((items) => items.filter((registered) => registered.element !== item.element));\n };\n }\n\n indexOf(element: HTMLElement): number {\n return this.items().findIndex((item) => item.element === element);\n }\n\n elements(): HTMLElement[] {\n return this.items().map((item) => item.element);\n }\n}\n","import {\n afterNextRender,\n computed,\n Directive,\n effect,\n ElementRef,\n inject,\n input,\n linkedSignal,\n signal,\n untracked\n} from '@angular/core';\nimport { injectRdxCompositeListContext } from './composite-list';\nimport { RdxCompositeItemMetadata } from './types';\n\n/**\n * Registers the host with the nearest composite list without changing focus behavior.\n */\n@Directive({\n selector: '[rdxCompositeListItem]',\n exportAs: 'rdxCompositeListItem'\n})\nexport class RdxCompositeListItem {\n private readonly listContext = injectRdxCompositeListContext(true);\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly hasRendered = signal(false);\n\n /** Arbitrary metadata included in the list's ordered item map. */\n readonly metadataInput = input<RdxCompositeItemMetadata | null | undefined>(undefined, { alias: 'metadata' });\n private readonly _metadata = linkedSignal(() => this.metadataInput());\n\n readonly index = computed(() => this.listContext?.indexOf(this.elementRef.nativeElement) ?? -1);\n readonly inListElement = computed(() => {\n const listContext = this.listContext;\n return !!listContext && listContext.listElement.contains(this.elementRef.nativeElement);\n });\n\n constructor() {\n afterNextRender(() => {\n this.hasRendered.set(true);\n });\n\n effect((onCleanup) => {\n const listContext = this.listContext;\n if (!listContext || !this.hasRendered() || !this.inListElement()) {\n return;\n }\n\n const element = this.elementRef.nativeElement;\n const unregister = untracked(() =>\n listContext.registerItem({ element, metadata: this._metadata.asReadonly() })\n );\n\n onCleanup(unregister);\n });\n }\n\n setMetadata(value: RdxCompositeItemMetadata | null | undefined): void {\n this._metadata.set(value);\n }\n}\n","import {\n booleanAttribute,\n Directive,\n effect,\n ElementRef,\n inject,\n input,\n linkedSignal,\n model,\n output\n} from '@angular/core';\nimport { BooleanInput, createContext, Direction } from '@radix-ng/primitives/core';\nimport { injectDirection } from '@radix-ng/primitives/direction-provider';\nimport { RdxCompositeList } from './composite-list';\nimport {\n RdxCompositeMetadata,\n RdxCompositeModifierKey,\n RdxCompositeOrientation,\n RdxCompositeRootContext\n} from './types';\nimport {\n ACTIVE_COMPOSITE_ITEM,\n ARROW_KEYS,\n COMPOSITE_KEYS,\n findNonDisabledListIndex,\n getCompositeNavigationKeys,\n getMaxListIndex,\n getMinListIndex,\n isElementDisabled,\n isIndexOutOfListBounds,\n isListIndexDisabled,\n isModifierKeySet,\n isNativeTextInput,\n scrollIntoViewIfNeeded,\n shouldKeepNativeTextInputBehavior\n} from './utils';\n\nconst rootContext = (): RdxCompositeRootContext => {\n const root = inject(RdxCompositeRoot);\n\n return {\n rootElement: root.elementRef.nativeElement,\n highlightedIndex: root.highlightedIndex.asReadonly(),\n highlightItemOnHover: root.highlightItemOnHover,\n orientation: root.orientation,\n dir: root.dir,\n isIndexDisabled: (index) => root.isIndexDisabled(index),\n setHighlightedIndex: (index, shouldScrollIntoView) => root.setHighlightedIndex(index, shouldScrollIntoView),\n relayKeyboardEvent: (event) => root.relayKeyboardEvent(event)\n };\n};\n\nexport const [injectRdxCompositeRootContext, provideRdxCompositeRootContext] = createContext<RdxCompositeRootContext>(\n 'RdxCompositeRootContext',\n 'utils/composite'\n);\n\n/**\n * Internal Base UI-style composite root for roving index and arrow-key navigation.\n */\n@Directive({\n selector: '[rdxCompositeRoot]',\n exportAs: 'rdxCompositeRoot',\n hostDirectives: [RdxCompositeList],\n providers: [provideRdxCompositeRootContext(rootContext)],\n host: {\n '(keydown)': 'handleKeydown($event)',\n '(focusin)': 'handleFocusIn($event)'\n }\n})\nexport class RdxCompositeRoot {\n readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly compositeList = inject(RdxCompositeList, { self: true });\n private hasSetInitialIndex = false;\n\n /** The composite orientation. */\n readonly orientationInput = input<RdxCompositeOrientation>('both', { alias: 'orientation' });\n private readonly _orientation = linkedSignal(() => this.orientationInput());\n readonly orientation = this._orientation.asReadonly();\n\n /** Text direction for horizontal arrow-key navigation. */\n readonly dirInput = input<Direction | undefined>(undefined, { alias: 'dir' });\n private readonly effectiveDir = injectDirection(this.dirInput);\n private readonly _dir = linkedSignal(() => this.effectiveDir());\n readonly dir = this._dir.asReadonly();\n\n /** Whether arrow-key navigation wraps at the first/last item. */\n readonly loopFocusInput = input<boolean, BooleanInput>(true, {\n alias: 'loopFocus',\n transform: booleanAttribute\n });\n private readonly _loopFocus = linkedSignal(() => this.loopFocusInput());\n readonly loopFocus = this._loopFocus.asReadonly();\n\n /** Enables Home and End keys. */\n readonly enableHomeAndEndKeysInput = input<boolean, BooleanInput>(false, {\n alias: 'enableHomeAndEndKeys',\n transform: booleanAttribute\n });\n private readonly _enableHomeAndEndKeys = linkedSignal(() => this.enableHomeAndEndKeysInput());\n readonly enableHomeAndEndKeys = this._enableHomeAndEndKeys.asReadonly();\n\n /** Indices that are skipped by keyboard navigation. */\n readonly disabledIndicesInput = input<readonly number[] | undefined>(undefined, { alias: 'disabledIndices' });\n private readonly _disabledIndices = linkedSignal(() => this.disabledIndicesInput());\n readonly disabledIndices = this._disabledIndices.asReadonly();\n\n /** Modifier keys that should not block composite navigation. */\n readonly modifierKeysInput = input<readonly RdxCompositeModifierKey[]>([], { alias: 'modifierKeys' });\n private readonly _modifierKeys = linkedSignal(() => this.modifierKeysInput());\n readonly modifierKeys = this._modifierKeys.asReadonly();\n\n /** Whether hovering an item should focus it. */\n readonly highlightItemOnHover = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /** Whether handled navigation keys stop propagation. */\n readonly stopEventPropagation = input<boolean, BooleanInput>(true, { transform: booleanAttribute });\n\n /** The currently highlighted item index. */\n readonly highlightedIndex = model<number>(0);\n\n /** Emits when this root changes the highlighted index. */\n readonly onHighlightedIndexChange = output<number>();\n\n /** Emits when the ordered item map changes. */\n readonly onMapChange = output<Map<HTMLElement, RdxCompositeMetadata>>();\n\n readonly items = this.compositeList.items;\n\n readonly itemMap = this.compositeList.itemMap;\n\n constructor() {\n effect(() => {\n const items = this.items();\n if (items.length === 0) {\n return;\n }\n\n if (!this.hasSetInitialIndex) {\n this.hasSetInitialIndex = true;\n const activeIndex = items.findIndex((item) => item.element.hasAttribute(ACTIVE_COMPOSITE_ITEM));\n\n if (activeIndex !== -1) {\n this.setHighlightedIndex(activeIndex, true);\n return;\n }\n }\n\n if (this.isIndexDisabled(this.highlightedIndex())) {\n const firstEnabledIndex = getMinListIndex(this.elements(), this.disabledIndices());\n\n if (!isIndexOutOfListBounds(items, firstEnabledIndex)) {\n this.setHighlightedIndex(firstEnabledIndex);\n }\n }\n });\n\n effect(() => {\n this.onMapChange.emit(this.itemMap());\n });\n }\n\n indexOf(element: HTMLElement): number {\n return this.compositeList.indexOf(element);\n }\n\n setOrientation(value: RdxCompositeOrientation): void {\n this._orientation.set(value);\n }\n\n setLoopFocus(value: boolean): void {\n this._loopFocus.set(value);\n }\n\n setDir(value: Direction): void {\n this._dir.set(value);\n }\n\n setEnableHomeAndEndKeys(value: boolean): void {\n this._enableHomeAndEndKeys.set(value);\n }\n\n setDisabledIndices(value: readonly number[] | undefined): void {\n this._disabledIndices.set(value);\n }\n\n setModifierKeys(value: readonly RdxCompositeModifierKey[]): void {\n this._modifierKeys.set(value);\n }\n\n isIndexDisabled(index: number): boolean {\n return isListIndexDisabled(this.elements(), index, this.disabledIndices());\n }\n\n setHighlightedIndex(index: number, shouldScrollIntoView = false): void {\n if (this.highlightedIndex() !== index) {\n this.highlightedIndex.set(index);\n this.onHighlightedIndexChange.emit(index);\n }\n\n if (shouldScrollIntoView) {\n scrollIntoViewIfNeeded(\n this.elementRef.nativeElement,\n this.elements()[index],\n this.dir(),\n this.orientation()\n );\n }\n }\n\n relayKeyboardEvent(event: KeyboardEvent): void {\n this.handleCompositeKeydown(event, true);\n }\n\n protected handleKeydown(event: KeyboardEvent): void {\n this.handleCompositeKeydown(event, false);\n }\n\n /** Select the whole value when focus lands on a native text input item (Base UI parity). */\n protected handleFocusIn(event: FocusEvent): void {\n const target = event.target;\n\n if (isNativeTextInput(target)) {\n target.setSelectionRange(0, target.value.length);\n }\n }\n\n private handleCompositeKeydown(event: KeyboardEvent, relayed: boolean): void {\n const relevantKeys = this.enableHomeAndEndKeys() ? COMPOSITE_KEYS : ARROW_KEYS;\n\n if (!relevantKeys.has(event.key) || isModifierKeySet(event, this.modifierKeys())) {\n return;\n }\n\n const target = event.target;\n const rootElement = this.elementRef.nativeElement;\n\n if (!relayed && target instanceof HTMLElement) {\n const closestRoot = target.closest('[rdxCompositeRoot]');\n if (closestRoot && closestRoot !== rootElement) {\n return;\n }\n }\n\n if (isNativeTextInput(target) && !isElementDisabled(target)) {\n try {\n if (shouldKeepNativeTextInputBehavior(event, target, this.orientation(), this.dir())) {\n return;\n }\n } catch {\n return;\n }\n }\n\n const elements = this.elements();\n if (elements.length === 0) {\n return;\n }\n\n const nextIndex = this.getNextIndex(event, elements);\n\n if (nextIndex === this.highlightedIndex() || isIndexOutOfListBounds(elements, nextIndex)) {\n return;\n }\n\n if (this.stopEventPropagation()) {\n event.stopPropagation();\n }\n\n event.preventDefault();\n this.setHighlightedIndex(nextIndex, true);\n\n queueMicrotask(() => {\n this.elements()[nextIndex]?.focus();\n });\n }\n\n private getNextIndex(event: KeyboardEvent, elements: HTMLElement[]): number {\n const highlightedIndex = this.highlightedIndex();\n const minIndex = getMinListIndex(elements, this.disabledIndices());\n const maxIndex = getMaxListIndex(elements, this.disabledIndices());\n\n if (this.enableHomeAndEndKeys()) {\n if (event.key === 'Home') {\n return minIndex;\n }\n\n if (event.key === 'End') {\n return maxIndex;\n }\n }\n\n const { forwardKeys, backwardKeys } = getCompositeNavigationKeys(this.orientation(), this.dir());\n const isForward = forwardKeys.includes(event.key);\n const isBackward = backwardKeys.includes(event.key);\n\n if (!isForward && !isBackward) {\n return highlightedIndex;\n }\n\n const decrement = isBackward;\n const boundaryIndex = decrement ? minIndex : maxIndex;\n const loopIndex = decrement ? maxIndex : minIndex;\n\n if (this.loopFocus() && highlightedIndex === boundaryIndex) {\n return loopIndex;\n }\n\n return findNonDisabledListIndex(elements, {\n startingIndex: highlightedIndex,\n decrement,\n disabledIndices: this.disabledIndices()\n });\n }\n\n private elements(): HTMLElement[] {\n return this.compositeList.elements();\n }\n}\n","import { computed, Directive, ElementRef, inject } from '@angular/core';\nimport { RdxCompositeListItem } from './composite-list-item';\nimport { injectRdxCompositeRootContext } from './composite-root';\nimport { RdxCompositeItemMetadata } from './types';\n\n/**\n * Internal Base UI-style composite item. Registers itself with the nearest composite root and\n * receives the roving `tabindex` from the root's highlighted index.\n */\n@Directive({\n selector: '[rdxCompositeItem]',\n exportAs: 'rdxCompositeItem',\n hostDirectives: [\n {\n directive: RdxCompositeListItem,\n inputs: ['metadata']\n }\n ],\n host: {\n '[attr.tabindex]': 'tabIndex()',\n '(focus)': 'handleFocus()',\n '(mousemove)': 'handleMouseMove()'\n }\n})\nexport class RdxCompositeItem {\n private readonly rootContext = injectRdxCompositeRootContext(true);\n private readonly listItem = inject(RdxCompositeListItem, { self: true });\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n readonly index = this.listItem.index;\n private readonly inRootElement = computed(() => {\n const rootContext = this.rootContext;\n return !!rootContext && rootContext.rootElement.contains(this.elementRef.nativeElement);\n });\n protected readonly highlighted = computed(() => this.rootContext?.highlightedIndex() === this.index());\n protected readonly tabIndex = computed(() => {\n const rootContext = this.rootContext;\n\n if (!rootContext || !this.inRootElement()) {\n return null;\n }\n\n const index = this.index();\n return index !== -1 && rootContext.highlightedIndex() === index && !rootContext.isIndexDisabled(index) ? 0 : -1;\n });\n\n setMetadata(value: RdxCompositeItemMetadata | null | undefined): void {\n this.listItem.setMetadata(value);\n }\n\n protected handleFocus(): void {\n const index = this.index();\n\n if (this.inRootElement() && index !== -1) {\n this.rootContext?.setHighlightedIndex(index);\n }\n }\n\n protected handleMouseMove(): void {\n const rootContext = this.rootContext;\n const index = this.index();\n\n if (\n !this.inRootElement() ||\n !rootContext ||\n index === -1 ||\n !rootContext.highlightItemOnHover() ||\n this.highlighted()\n ) {\n return;\n }\n\n if (!rootContext.isIndexDisabled(index)) {\n this.elementRef.nativeElement.focus();\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { RdxCompositeItem } from './src/composite-item';\nimport { RdxCompositeList } from './src/composite-list';\nimport { RdxCompositeListItem } from './src/composite-list-item';\nimport { RdxCompositeRoot } from './src/composite-root';\n\nexport * from './src/composite-item';\nexport * from './src/composite-list';\nexport * from './src/composite-list-item';\nexport * from './src/composite-root';\nexport * from './src/types';\nexport * from './src/utils';\n\nexport const compositeImports = [RdxCompositeList, RdxCompositeListItem, RdxCompositeRoot, RdxCompositeItem];\n\n@NgModule({\n imports: [...compositeImports],\n exports: [...compositeImports]\n})\nexport class RdxCompositeModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.RdxCompositeList","i1.RdxCompositeListItem"],"mappings":";;;;;AAGO,MAAM,qBAAqB,GAAG;AAE9B,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,CAAC;AAC1E,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,UAAU,EAAE,IAAI,EAAE,GAAG,CAAC;AACzD,MAAM,aAAa,GAA8B,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM;AAEpF,SAAU,sBAAsB,CAAqC,KAAmB,EAAA;IAC1F,OAAO,CAAC,GAAG,KAAK;SACX,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,WAAW;AACzC,SAAA,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;AACX,QAAA,MAAM,QAAQ,GAAG,CAAC,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC,CAAC,OAAO,CAAC;AAE7D,QAAA,IAAI,QAAQ,GAAG,IAAI,CAAC,2BAA2B,IAAI,QAAQ,GAAG,IAAI,CAAC,8BAA8B,EAAE;YAC/F,OAAO,CAAC,CAAC;QACb;AAEA,QAAA,IAAI,QAAQ,GAAG,IAAI,CAAC,2BAA2B,IAAI,QAAQ,GAAG,IAAI,CAAC,0BAA0B,EAAE;AAC3F,YAAA,OAAO,CAAC;QACZ;AAEA,QAAA,OAAO,CAAC;AACZ,IAAA,CAAC,CAAC;AACV;AAEM,SAAU,gBAAgB,CAC5B,KAAoB,EACpB,mBAAuD,EAAA;IAEvD,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,mBAAmB,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;AACzG;AAEM,SAAU,iBAAiB,CAAC,MAA0B,EAAA;AACxD,IAAA,IAAI,EAAE,MAAM,YAAY,WAAW,CAAC,EAAE;AAClC,QAAA,OAAO,KAAK;IAChB;AAEA,IAAA,IAAI,MAAM,CAAC,OAAO,KAAK,UAAU,EAAE;AAC/B,QAAA,OAAO,IAAI;IACf;AAEA,IAAA,IAAI,MAAM,CAAC,OAAO,KAAK,OAAO,EAAE;AAC5B,QAAA,OAAO,KAAK;IAChB;;;;;;AAOA,IAAA,IAAI;AACA,QAAA,OAAQ,MAA2B,CAAC,cAAc,IAAI,IAAI;IAC9D;AAAE,IAAA,MAAM;AACJ,QAAA,OAAO,KAAK;IAChB;AACJ;AAEM,SAAU,0BAA0B,CAAC,WAAoC,EAAE,GAAc,EAAA;AAC3F,IAAA,MAAM,oBAAoB,GAAG,GAAG,KAAK,KAAK,GAAG,UAAU,GAAG,WAAW;AACrE,IAAA,MAAM,qBAAqB,GAAG,GAAG,KAAK,KAAK,GAAG,WAAW,GAAG,UAAU;IAEtE,OAAO;QACH,WAAW,EACP,WAAW,KAAK;cACV,CAAC,oBAAoB;cACrB,WAAW,KAAK;kBACd,CAAC,UAAU;AACb,kBAAE,CAAC,oBAAoB,EAAE,UAAU,CAAC;QAC9C,YAAY,EACR,WAAW,KAAK;cACV,CAAC,qBAAqB;cACtB,WAAW,KAAK;kBACd,CAAC,QAAQ;AACX,kBAAE,CAAC,qBAAqB,EAAE,QAAQ;KAC/C;AACL;AAEM,SAAU,iCAAiC,CAC7C,KAAoB,EACpB,MAA8C,EAC9C,WAAoC,EACpC,GAAc,EAAA;AAEd,IAAA,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,0BAA0B,CAAC,WAAW,EAAE,GAAG,CAAC;AAClF,IAAA,MAAM,cAAc,GAAG,MAAM,CAAC,cAAc;AAC5C,IAAA,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY;AACxC,IAAA,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE;AAEhC,IAAA,IAAI,cAAc,IAAI,IAAI,IAAI,YAAY,IAAI,IAAI,IAAI,KAAK,CAAC,QAAQ,IAAI,cAAc,KAAK,YAAY,EAAE;AACrG,QAAA,OAAO,IAAI;IACf;AAEA,IAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,cAAc,GAAG,KAAK,CAAC,MAAM,EAAE;AACpE,QAAA,OAAO,IAAI;IACf;AAEA,IAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,cAAc,GAAG,CAAC,EAAE;AACxD,QAAA,OAAO,IAAI;IACf;AAEA,IAAA,OAAO,KAAK;AAChB;AAEM,SAAU,sBAAsB,CAAI,IAAkB,EAAE,KAAa,EAAA;IACvE,OAAO,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,MAAM;AAC5C;AAEM,SAAU,eAAe,CAAC,IAA4B,EAAE,eAAmC,EAAA;AAC7F,IAAA,OAAO,wBAAwB,CAAC,IAAI,EAAE,EAAE,aAAa,EAAE,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC;AACjF;AAEM,SAAU,eAAe,CAAC,IAA4B,EAAE,eAAmC,EAAA;AAC7F,IAAA,OAAO,wBAAwB,CAAC,IAAI,EAAE,EAAE,aAAa,EAAE,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC;AAC3G;SAEgB,wBAAwB,CACpC,IAA4B,EAC5B,UAAgG,EAAE,EAAA;AAElG,IAAA,MAAM,EAAE,aAAa,GAAG,CAAC,CAAC,EAAE,SAAS,GAAG,KAAK,EAAE,eAAe,EAAE,GAAG,OAAO;AAC1E,IAAA,MAAM,IAAI,GAAG,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC;IAE/B,KAAK,IAAI,KAAK,GAAG,aAAa,GAAG,IAAI,EAAE,KAAK,IAAI,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,IAAI,EAAE;QACrF,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,KAAK,EAAE,eAAe,CAAC,EAAE;AACpD,YAAA,OAAO,KAAK;QAChB;IACJ;IAEA,OAAO,CAAC,CAAC;AACb;SAEgB,mBAAmB,CAC/B,IAA4B,EAC5B,KAAa,EACb,eAAmC,EAAA;AAEnC,IAAA,IAAI,eAAe,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE;AAClC,QAAA,OAAO,IAAI;IACf;AAEA,IAAA,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC;IAE3B,IAAI,CAAC,OAAO,EAAE;AACV,QAAA,OAAO,KAAK;IAChB;AAEA,IAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE;AAC5B,QAAA,OAAO,IAAI;IACf;IAEA,QACI,eAAe,KAAK,SAAS;AAC7B,SAAC,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,YAAY,CAAC,eAAe,CAAC,KAAK,MAAM,CAAC;AAE9F;AAEM,SAAU,iBAAiB,CAAC,OAA2B,EAAA;AACzD,IAAA,OAAO,OAAO,KAAK,IAAI,IAAI,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,YAAY,CAAC,eAAe,CAAC,KAAK,MAAM;AACnH;AAEM,SAAU,gBAAgB,CAAC,OAA2B,EAAA;IACxD,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;AAClC,QAAA,OAAO,KAAK;IAChB;AAEA,IAAA,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,EAAE,OAAO,YAAY,OAAO,CAAC,EAAE;AACjE,QAAA,OAAO,IAAI;IACf;AAEA,IAAA,IAAI,MAA2B;AAC/B,IAAA,IAAI;AACA,QAAA,MAAM,GAAG,gBAAgB,CAAC,OAAO,CAAC;IACtC;AAAE,IAAA,MAAM;AACJ,QAAA,OAAO,IAAI;IACf;IAEA,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ,IAAI,MAAM,CAAC,UAAU,KAAK,UAAU;AAC7E;AAEM,SAAU,sBAAsB,CAClC,eAAmC,EACnC,OAA2B,EAC3B,SAAoB,EACpB,WAAoC,EAAA;AAEpC,IAAA,IAAI,CAAC,eAAe,IAAI,CAAC,OAAO,IAAI,OAAO,eAAe,CAAC,QAAQ,KAAK,UAAU,EAAE;QAChF;IACJ;IAEA,MAAM,cAAc,GAAG,eAAe,CAAC,WAAW,GAAG,eAAe,CAAC,WAAW;IAChF,MAAM,cAAc,GAAG,eAAe,CAAC,YAAY,GAAG,eAAe,CAAC,YAAY;AAClF,IAAA,IAAI,IAAI,GAAG,eAAe,CAAC,UAAU;AACrC,IAAA,IAAI,GAAG,GAAG,eAAe,CAAC,SAAS;AAEnC,IAAA,IAAI,cAAc,IAAI,WAAW,KAAK,UAAU,EAAE;QAC9C,MAAM,iBAAiB,GAAG,SAAS,CAAC,eAAe,EAAE,OAAO,EAAE,MAAM,CAAC;AACrE,QAAA,MAAM,eAAe,GAAG,eAAe,CAAC,eAAe,CAAC;AACxD,QAAA,MAAM,aAAa,GAAG,eAAe,CAAC,OAAO,CAAC;AAE9C,QAAA,IACI,iBAAiB,GAAG,aAAa,CAAC,gBAAgB;AAClD,YAAA,eAAe,CAAC,UAAU,GAAG,eAAe,CAAC,iBAAiB,EAChE;YACE,IAAI,GAAG,iBAAiB,GAAG,aAAa,CAAC,gBAAgB,GAAG,eAAe,CAAC,iBAAiB;QACjG;aAAO,IACH,iBAAiB,GAAG,OAAO,CAAC,WAAW,GAAG,aAAa,CAAC,iBAAiB;YACzE,eAAe,CAAC,UAAU,GAAG,eAAe,CAAC,WAAW,GAAG,eAAe,CAAC,kBAAkB,EAC/F;YACE,IAAI;gBACA,iBAAiB;AACjB,oBAAA,OAAO,CAAC,WAAW;AACnB,oBAAA,aAAa,CAAC,iBAAiB;AAC/B,oBAAA,eAAe,CAAC,WAAW;oBAC3B,eAAe,CAAC,kBAAkB;QAC1C;AAEA,QAAA,IAAI,SAAS,KAAK,KAAK,EAAE;YACrB,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;QAC5B;IACJ;AAEA,IAAA,IAAI,cAAc,IAAI,WAAW,KAAK,YAAY,EAAE;QAChD,MAAM,gBAAgB,GAAG,SAAS,CAAC,eAAe,EAAE,OAAO,EAAE,KAAK,CAAC;AACnE,QAAA,MAAM,eAAe,GAAG,eAAe,CAAC,eAAe,CAAC;AACxD,QAAA,MAAM,aAAa,GAAG,eAAe,CAAC,OAAO,CAAC;AAE9C,QAAA,IACI,gBAAgB,GAAG,aAAa,CAAC,eAAe;AAChD,YAAA,eAAe,CAAC,SAAS,GAAG,eAAe,CAAC,gBAAgB,EAC9D;YACE,GAAG,GAAG,gBAAgB,GAAG,aAAa,CAAC,eAAe,GAAG,eAAe,CAAC,gBAAgB;QAC7F;aAAO,IACH,gBAAgB,GAAG,OAAO,CAAC,YAAY,GAAG,aAAa,CAAC,kBAAkB;YAC1E,eAAe,CAAC,SAAS,GAAG,eAAe,CAAC,YAAY,GAAG,eAAe,CAAC,mBAAmB,EAChG;YACE,GAAG;gBACC,gBAAgB;AAChB,oBAAA,OAAO,CAAC,YAAY;AACpB,oBAAA,aAAa,CAAC,kBAAkB;AAChC,oBAAA,eAAe,CAAC,YAAY;oBAC5B,eAAe,CAAC,mBAAmB;QAC3C;IACJ;AAEA,IAAA,eAAe,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;AAC7D;AAEA,SAAS,SAAS,CAAC,QAAqB,EAAE,OAAoB,EAAE,IAAoB,EAAA;AAChF,IAAA,MAAM,QAAQ,GAAG,IAAI,KAAK,MAAM,GAAG,YAAY,GAAG,WAAW;IAC7D,IAAI,MAAM,GAAG,CAAC;IACd,IAAI,OAAO,GAAuB,OAAO;AAEzC,IAAA,OAAO,OAAO,EAAE,YAAY,EAAE;AAC1B,QAAA,MAAM,IAAI,OAAO,CAAC,QAAQ,CAAC;AAC3B,QAAA,IAAI,OAAO,CAAC,YAAY,KAAK,QAAQ,EAAE;YACnC;QACJ;AACA,QAAA,OAAO,GAAG,OAAO,CAAC,YAA2B;IACjD;AAEA,IAAA,OAAO,MAAM;AACjB;AAEA,SAAS,eAAe,CAAC,OAAoB,EAAA;AACzC,IAAA,MAAM,MAAM,GAAG,gBAAgB,CAAC,OAAO,CAAC;IAExC,OAAO;QACH,eAAe,EAAE,UAAU,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC;QACxD,iBAAiB,EAAE,UAAU,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC;QAC5D,kBAAkB,EAAE,UAAU,CAAC,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC;QAC9D,gBAAgB,EAAE,UAAU,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC;QAC1D,gBAAgB,EAAE,UAAU,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC;QAC1D,kBAAkB,EAAE,UAAU,CAAC,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC;QAC9D,mBAAmB,EAAE,UAAU,CAAC,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC;QAChE,iBAAiB,EAAE,UAAU,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI;KAC9D;AACL;;AC5QA,MAAM,WAAW,GAAG,MAA8B;AAC9C,IAAA,MAAM,IAAI,GAAG,MAAM,CAAC,gBAAgB,CAAC;IAErC,OAAO;AACH,QAAA,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,aAAa;QAC1C,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,YAAY,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;QAC/C,OAAO,EAAE,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,CAAC,OAAO;KAC7C;AACL,CAAC;AAEM,MAAM,CAAC,6BAA6B,EAAE,8BAA8B,CAAC,GAAG,aAAa,CACxF,yBAAyB,EACzB,iBAAiB;AAGrB;;;AAGG;MAMU,gBAAgB,CAAA;AAqBzB,IAAA,WAAA,GAAA;AApBS,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAA0B,UAAU,CAAC;QAChD,IAAA,CAAA,eAAe,GAAG,MAAM,CAAiC,EAAE;4FAAC;;QAGpE,IAAA,CAAA,WAAW,GAAG,MAAM,EAA0C;;AAG9D,QAAA,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAAM,sBAAsB,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;kFAAC;;AAGtE,QAAA,IAAA,CAAA,OAAO,GAAG,QAAQ,CAAC,MAAK;AAC7B,YAAA,MAAM,GAAG,GAAG,IAAI,GAAG,EAAqC;YAExD,IAAI,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;gBACjC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC;AAChE,YAAA,CAAC,CAAC;AAEF,YAAA,OAAO,GAAG;QACd,CAAC;oFAAC;QAGE,MAAM,CAAC,MAAK;YACR,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;AACzC,QAAA,CAAC,CAAC;IACN;AAEA,IAAA,YAAY,CAA4C,IAA4C,EAAA;QAChG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK;AACnC,YAAA,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,UAAU,KAAK,UAAU,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,CAAC;YACpE;AACH,SAAA,CAAC;AAEF,QAAA,OAAO,MAAK;AACR,YAAA,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,MAAM,CAAC,CAAC,UAAU,KAAK,UAAU,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC;AAC7G,QAAA,CAAC;IACL;AAEA,IAAA,OAAO,CAAC,OAAoB,EAAA;AACxB,QAAA,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,KAAK,OAAO,CAAC;IACrE;IAEA,QAAQ,GAAA;AACJ,QAAA,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC;IACnD;8GA5CS,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,0GAFd,CAAC,8BAA8B,CAAC,WAAW,CAAC,CAAC,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAE/C,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAL5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,SAAS,EAAE,CAAC,8BAA8B,CAAC,WAAW,CAAC;AAC1D,iBAAA;;;ACpBD;;AAEG;MAKU,oBAAoB,CAAA;AAe7B,IAAA,WAAA,GAAA;AAdiB,QAAA,IAAA,CAAA,WAAW,GAAG,6BAA6B,CAAC,IAAI,CAAC;AACjD,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAA0B,UAAU,CAAC;QACxD,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,KAAK;wFAAC;;QAGnC,IAAA,CAAA,aAAa,GAAG,KAAK,CAA8C,SAAS,qFAAI,KAAK,EAAE,UAAU,EAAA,CAAG;QAC5F,IAAA,CAAA,SAAS,GAAG,YAAY,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE;sFAAC;QAE5D,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;kFAAC;AACtF,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;AACnC,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW;AACpC,YAAA,OAAO,CAAC,CAAC,WAAW,IAAI,WAAW,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;QAC3F,CAAC;0FAAC;QAGE,eAAe,CAAC,MAAK;AACjB,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;AAC9B,QAAA,CAAC,CAAC;AAEF,QAAA,MAAM,CAAC,CAAC,SAAS,KAAI;AACjB,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW;AACpC,YAAA,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE;gBAC9D;YACJ;AAEA,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa;YAC7C,MAAM,UAAU,GAAG,SAAS,CAAC,MACzB,WAAW,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,CAAC,CAC/E;YAED,SAAS,CAAC,UAAU,CAAC;AACzB,QAAA,CAAC,CAAC;IACN;AAEA,IAAA,WAAW,CAAC,KAAkD,EAAA;AAC1D,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;IAC7B;8GArCS,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAJhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,QAAQ,EAAE;AACb,iBAAA;;;ACgBD,MAAM,WAAW,GAAG,MAA8B;AAC9C,IAAA,MAAM,IAAI,GAAG,MAAM,CAAC,gBAAgB,CAAC;IAErC,OAAO;AACH,QAAA,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,aAAa;AAC1C,QAAA,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE;QACpD,oBAAoB,EAAE,IAAI,CAAC,oBAAoB;QAC/C,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,eAAe,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;AACvD,QAAA,mBAAmB,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,oBAAoB,CAAC;QAC3G,kBAAkB,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,kBAAkB,CAAC,KAAK;KAC/D;AACL,CAAC;AAEM,MAAM,CAAC,6BAA6B,EAAE,8BAA8B,CAAC,GAAG,aAAa,CACxF,yBAAyB,EACzB,iBAAiB;AAGrB;;AAEG;MAWU,gBAAgB,CAAA;AA6DzB,IAAA,WAAA,GAAA;AA5DS,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAA0B,UAAU,CAAC;QAChD,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,gBAAgB,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACjE,IAAA,CAAA,kBAAkB,GAAG,KAAK;;QAGzB,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAA0B,MAAM,wFAAI,KAAK,EAAE,aAAa,EAAA,CAAG;QAC3E,IAAA,CAAA,YAAY,GAAG,YAAY,CAAC,MAAM,IAAI,CAAC,gBAAgB,EAAE;yFAAC;AAClE,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE;;QAG5C,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAwB,SAAS,gFAAI,KAAK,EAAE,KAAK,EAAA,CAAG;AAC5D,QAAA,IAAA,CAAA,YAAY,GAAG,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC7C,IAAA,CAAA,IAAI,GAAG,YAAY,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE;iFAAC;AACtD,QAAA,IAAA,CAAA,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;;AAG5B,QAAA,IAAA,CAAA,cAAc,GAAG,KAAK,CAAwB,IAAI,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,8BAAA,EAAA,CAAA,EACvD,KAAK,EAAE,WAAW;YAClB,SAAS,EAAE,gBAAgB,EAAA,CAC7B;QACe,IAAA,CAAA,UAAU,GAAG,YAAY,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE;uFAAC;AAC9D,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE;;AAGxC,QAAA,IAAA,CAAA,yBAAyB,GAAG,KAAK,CAAwB,KAAK,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,2BAAA,EAAA,8BAAA,EAAA,CAAA,EACnE,KAAK,EAAE,sBAAsB;YAC7B,SAAS,EAAE,gBAAgB,EAAA,CAC7B;QACe,IAAA,CAAA,qBAAqB,GAAG,YAAY,CAAC,MAAM,IAAI,CAAC,yBAAyB,EAAE;kGAAC;AACpF,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,CAAC,qBAAqB,CAAC,UAAU,EAAE;;QAG9D,IAAA,CAAA,oBAAoB,GAAG,KAAK,CAAgC,SAAS,4FAAI,KAAK,EAAE,iBAAiB,EAAA,CAAG;QAC5F,IAAA,CAAA,gBAAgB,GAAG,YAAY,CAAC,MAAM,IAAI,CAAC,oBAAoB,EAAE;6FAAC;AAC1E,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE;;QAGpD,IAAA,CAAA,iBAAiB,GAAG,KAAK,CAAqC,EAAE,yFAAI,KAAK,EAAE,cAAc,EAAA,CAAG;QACpF,IAAA,CAAA,aAAa,GAAG,YAAY,CAAC,MAAM,IAAI,CAAC,iBAAiB,EAAE;0FAAC;AACpE,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE;;QAG9C,IAAA,CAAA,oBAAoB,GAAG,KAAK,CAAwB,KAAK,4FAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;;QAG3F,IAAA,CAAA,oBAAoB,GAAG,KAAK,CAAwB,IAAI,4FAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;;QAG1F,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAS,CAAC;6FAAC;;QAGnC,IAAA,CAAA,wBAAwB,GAAG,MAAM,EAAU;;QAG3C,IAAA,CAAA,WAAW,GAAG,MAAM,EAA0C;AAE9D,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK;AAEhC,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO;QAGzC,MAAM,CAAC,MAAK;AACR,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,YAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;gBACpB;YACJ;AAEA,YAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;AAC1B,gBAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI;gBAC9B,MAAM,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,qBAAqB,CAAC,CAAC;AAE/F,gBAAA,IAAI,WAAW,KAAK,CAAC,CAAC,EAAE;AACpB,oBAAA,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC;oBAC3C;gBACJ;YACJ;YAEA,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,EAAE;AAC/C,gBAAA,MAAM,iBAAiB,GAAG,eAAe,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC;gBAElF,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,iBAAiB,CAAC,EAAE;AACnD,oBAAA,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC;gBAC/C;YACJ;AACJ,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;YACR,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;AACzC,QAAA,CAAC,CAAC;IACN;AAEA,IAAA,OAAO,CAAC,OAAoB,EAAA;QACxB,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC;IAC9C;AAEA,IAAA,cAAc,CAAC,KAA8B,EAAA;AACzC,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;IAChC;AAEA,IAAA,YAAY,CAAC,KAAc,EAAA;AACvB,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;IAC9B;AAEA,IAAA,MAAM,CAAC,KAAgB,EAAA;AACnB,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;IACxB;AAEA,IAAA,uBAAuB,CAAC,KAAc,EAAA;AAClC,QAAA,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,KAAK,CAAC;IACzC;AAEA,IAAA,kBAAkB,CAAC,KAAoC,EAAA;AACnD,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC;IACpC;AAEA,IAAA,eAAe,CAAC,KAAyC,EAAA;AACrD,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC;IACjC;AAEA,IAAA,eAAe,CAAC,KAAa,EAAA;AACzB,QAAA,OAAO,mBAAmB,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC;IAC9E;AAEA,IAAA,mBAAmB,CAAC,KAAa,EAAE,oBAAoB,GAAG,KAAK,EAAA;AAC3D,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE,KAAK,KAAK,EAAE;AACnC,YAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC;AAChC,YAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC;QAC7C;QAEA,IAAI,oBAAoB,EAAE;YACtB,sBAAsB,CAClB,IAAI,CAAC,UAAU,CAAC,aAAa,EAC7B,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,EACtB,IAAI,CAAC,GAAG,EAAE,EACV,IAAI,CAAC,WAAW,EAAE,CACrB;QACL;IACJ;AAEA,IAAA,kBAAkB,CAAC,KAAoB,EAAA;AACnC,QAAA,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,IAAI,CAAC;IAC5C;AAEU,IAAA,aAAa,CAAC,KAAoB,EAAA;AACxC,QAAA,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,KAAK,CAAC;IAC7C;;AAGU,IAAA,aAAa,CAAC,KAAiB,EAAA;AACrC,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM;AAE3B,QAAA,IAAI,iBAAiB,CAAC,MAAM,CAAC,EAAE;YAC3B,MAAM,CAAC,iBAAiB,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;QACpD;IACJ;IAEQ,sBAAsB,CAAC,KAAoB,EAAE,OAAgB,EAAA;AACjE,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,oBAAoB,EAAE,GAAG,cAAc,GAAG,UAAU;QAE9E,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,EAAE;YAC9E;QACJ;AAEA,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM;AAC3B,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa;AAEjD,QAAA,IAAI,CAAC,OAAO,IAAI,MAAM,YAAY,WAAW,EAAE;YAC3C,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC;AACxD,YAAA,IAAI,WAAW,IAAI,WAAW,KAAK,WAAW,EAAE;gBAC5C;YACJ;QACJ;QAEA,IAAI,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE;AACzD,YAAA,IAAI;AACA,gBAAA,IAAI,iCAAiC,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE;oBAClF;gBACJ;YACJ;AAAE,YAAA,MAAM;gBACJ;YACJ;QACJ;AAEA,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;AAChC,QAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;YACvB;QACJ;QAEA,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC;AAEpD,QAAA,IAAI,SAAS,KAAK,IAAI,CAAC,gBAAgB,EAAE,IAAI,sBAAsB,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE;YACtF;QACJ;AAEA,QAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE,EAAE;YAC7B,KAAK,CAAC,eAAe,EAAE;QAC3B;QAEA,KAAK,CAAC,cAAc,EAAE;AACtB,QAAA,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC;QAEzC,cAAc,CAAC,MAAK;YAChB,IAAI,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE;AACvC,QAAA,CAAC,CAAC;IACN;IAEQ,YAAY,CAAC,KAAoB,EAAE,QAAuB,EAAA;AAC9D,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,EAAE;QAChD,MAAM,QAAQ,GAAG,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC;QAClE,MAAM,QAAQ,GAAG,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC;AAElE,QAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE,EAAE;AAC7B,YAAA,IAAI,KAAK,CAAC,GAAG,KAAK,MAAM,EAAE;AACtB,gBAAA,OAAO,QAAQ;YACnB;AAEA,YAAA,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,EAAE;AACrB,gBAAA,OAAO,QAAQ;YACnB;QACJ;AAEA,QAAA,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,0BAA0B,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;QAChG,MAAM,SAAS,GAAG,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC;QACjD,MAAM,UAAU,GAAG,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC;AAEnD,QAAA,IAAI,CAAC,SAAS,IAAI,CAAC,UAAU,EAAE;AAC3B,YAAA,OAAO,gBAAgB;QAC3B;QAEA,MAAM,SAAS,GAAG,UAAU;QAC5B,MAAM,aAAa,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ;QACrD,MAAM,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ;QAEjD,IAAI,IAAI,CAAC,SAAS,EAAE,IAAI,gBAAgB,KAAK,aAAa,EAAE;AACxD,YAAA,OAAO,SAAS;QACpB;QAEA,OAAO,wBAAwB,CAAC,QAAQ,EAAE;AACtC,YAAA,aAAa,EAAE,gBAAgB;YAC/B,SAAS;AACT,YAAA,eAAe,EAAE,IAAI,CAAC,eAAe;AACxC,SAAA,CAAC;IACN;IAEQ,QAAQ,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE;IACxC;8GAvPS,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,gqDANd,CAAC,8BAA8B,CAAC,WAAW,CAAC,CAAC,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAA,gBAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAM/C,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAV5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,QAAQ,EAAE,kBAAkB;oBAC5B,cAAc,EAAE,CAAC,gBAAgB,CAAC;AAClC,oBAAA,SAAS,EAAE,CAAC,8BAA8B,CAAC,WAAW,CAAC,CAAC;AACxD,oBAAA,IAAI,EAAE;AACF,wBAAA,WAAW,EAAE,uBAAuB;AACpC,wBAAA,WAAW,EAAE;AAChB;AACJ,iBAAA;;;AChED;;;AAGG;MAgBU,gBAAgB,CAAA;AAf7B,IAAA,WAAA,GAAA;AAgBqB,QAAA,IAAA,CAAA,WAAW,GAAG,6BAA6B,CAAC,IAAI,CAAC;QACjD,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,oBAAoB,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACvD,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAA0B,UAAU,CAAC;AAEhE,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK;AACnB,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;AAC3C,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW;AACpC,YAAA,OAAO,CAAC,CAAC,WAAW,IAAI,WAAW,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;QAC3F,CAAC;0FAAC;AACiB,QAAA,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,gBAAgB,EAAE,KAAK,IAAI,CAAC,KAAK,EAAE;wFAAC;AACnF,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;AACxC,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW;YAEpC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE;AACvC,gBAAA,OAAO,IAAI;YACf;AAEA,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,YAAA,OAAO,KAAK,KAAK,CAAC,CAAC,IAAI,WAAW,CAAC,gBAAgB,EAAE,KAAK,KAAK,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACnH,CAAC;qFAAC;AAgCL,IAAA;AA9BG,IAAA,WAAW,CAAC,KAAkD,EAAA;AAC1D,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC;IACpC;IAEU,WAAW,GAAA;AACjB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;QAE1B,IAAI,IAAI,CAAC,aAAa,EAAE,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;AACtC,YAAA,IAAI,CAAC,WAAW,EAAE,mBAAmB,CAAC,KAAK,CAAC;QAChD;IACJ;IAEU,eAAe,GAAA;AACrB,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW;AACpC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAE1B,QAAA,IACI,CAAC,IAAI,CAAC,aAAa,EAAE;AACrB,YAAA,CAAC,WAAW;YACZ,KAAK,KAAK,CAAC,CAAC;YACZ,CAAC,WAAW,CAAC,oBAAoB,EAAE;AACnC,YAAA,IAAI,CAAC,WAAW,EAAE,EACpB;YACE;QACJ;QAEA,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE;AACrC,YAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,EAAE;QACzC;IACJ;8GAnDS,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,YAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAC,oBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAf5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,cAAc,EAAE;AACZ,wBAAA;AACI,4BAAA,SAAS,EAAE,oBAAoB;4BAC/B,MAAM,EAAE,CAAC,UAAU;AACtB;AACJ,qBAAA;AACD,oBAAA,IAAI,EAAE;AACF,wBAAA,iBAAiB,EAAE,YAAY;AAC/B,wBAAA,SAAS,EAAE,eAAe;AAC1B,wBAAA,aAAa,EAAE;AAClB;AACJ,iBAAA;;;ACVM,MAAM,gBAAgB,GAAG,CAAC,gBAAgB,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,gBAAgB;MAM9F,kBAAkB,CAAA;8GAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,EAAA,OAAA,EAAA,CANE,gBAAgB,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,gBAAgB,CAAA,EAAA,OAAA,EAAA,CAA1E,gBAAgB,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,gBAAgB,CAAA,EAAA,CAAA,CAAA;+GAM9F,kBAAkB,EAAA,CAAA,CAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAJ9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE,CAAC,GAAG,gBAAgB,CAAC;AAC9B,oBAAA,OAAO,EAAE,CAAC,GAAG,gBAAgB;AAChC,iBAAA;;;AClBD;;AAEG;;;;"}
|
|
@@ -4,8 +4,10 @@ import { RDX_DIRECTION } from '@radix-ng/primitives/direction-provider';
|
|
|
4
4
|
|
|
5
5
|
class RadixNG {
|
|
6
6
|
constructor() {
|
|
7
|
-
this.dir = signal('ltr',
|
|
8
|
-
|
|
7
|
+
this.dir = signal('ltr', /* @ts-ignore */
|
|
8
|
+
...(ngDevMode ? [{ debugName: "dir" }] : /* istanbul ignore next */ []));
|
|
9
|
+
this.locale = signal('en', /* @ts-ignore */
|
|
10
|
+
...(ngDevMode ? [{ debugName: "locale" }] : /* istanbul ignore next */ []));
|
|
9
11
|
}
|
|
10
12
|
setConfig(config) {
|
|
11
13
|
const { dir, locale } = config || {};
|
|
@@ -14,10 +16,10 @@ class RadixNG {
|
|
|
14
16
|
if (locale)
|
|
15
17
|
this.locale.set(locale);
|
|
16
18
|
}
|
|
17
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
18
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
19
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RadixNG, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
20
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RadixNG, providedIn: 'root' }); }
|
|
19
21
|
}
|
|
20
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
22
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RadixNG, decorators: [{
|
|
21
23
|
type: Injectable,
|
|
22
24
|
args: [{ providedIn: 'root' }]
|
|
23
25
|
}] });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"radix-ng-primitives-config.mjs","sources":["../../../packages/primitives/config/src/config.ts","../../../packages/primitives/config/src/config.provider.ts","../../../packages/primitives/config/radix-ng-primitives-config.ts"],"sourcesContent":["import { Injectable, signal } from '@angular/core';\nimport { Direction } from '@radix-ng/primitives/core';\n\nexport type RadixNGConfig = {\n /**\n * The global reading direction of your application. This will be inherited by all primitives.\n * @defaultValue 'ltr'\n */\n dir?: Direction;\n\n /**\n * The global locale of your application. This will be inherited by all primitives.\n * @defaultValue 'en'\n */\n locale?: string;\n};\n\n@Injectable({ providedIn: 'root' })\nexport class RadixNG {\n readonly dir = signal<Direction>('ltr');\n\n readonly locale = signal<string>('en');\n\n setConfig(config: RadixNGConfig): void {\n const { dir, locale } = config || {};\n\n if (dir) this.dir.set(dir);\n if (locale) this.locale.set(locale);\n }\n}\n","import {\n EnvironmentProviders,\n inject,\n InjectionToken,\n makeEnvironmentProviders,\n provideAppInitializer\n} from '@angular/core';\nimport { RDX_DIRECTION } from '@radix-ng/primitives/direction-provider';\nimport { RadixNG, type RadixNGConfig } from './config';\n\nexport const RADIX_NG_CONFIG = new InjectionToken<readonly RadixNGConfig[]>('RADIX_NG_CONFIG', {\n providedIn: 'root',\n factory: () => []\n});\n\n/**\n * Provides RadixNG configuration as environment providers.\n *\n * @param features One or more RadixNG configuration objects.\n * @returns A set of environment providers that register the RadixNG configs.\n */\nexport function provideRadixNG(...features: RadixNGConfig[]): EnvironmentProviders {\n const providers = features?.map((feature) => ({\n provide: RADIX_NG_CONFIG,\n useValue: feature,\n multi: true\n }));\n\n /**\n * Creates an AppInitializer to load and apply each RadixNG configuration\n * to the global RadixNG service before the app starts.\n */\n const initializer = provideAppInitializer(() => {\n const config = inject(RadixNG);\n const configs = inject(RADIX_NG_CONFIG);\n\n configs.forEach((feature) => config.setConfig(feature));\n return;\n });\n\n return makeEnvironmentProviders([\n ...providers,\n { provide: RDX_DIRECTION, useFactory: () => inject(RadixNG).dir },\n initializer\n ]);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;MAkBa,OAAO,CAAA;AADpB,IAAA,WAAA,GAAA;
|
|
1
|
+
{"version":3,"file":"radix-ng-primitives-config.mjs","sources":["../../../packages/primitives/config/src/config.ts","../../../packages/primitives/config/src/config.provider.ts","../../../packages/primitives/config/radix-ng-primitives-config.ts"],"sourcesContent":["import { Injectable, signal } from '@angular/core';\nimport { Direction } from '@radix-ng/primitives/core';\n\nexport type RadixNGConfig = {\n /**\n * The global reading direction of your application. This will be inherited by all primitives.\n * @defaultValue 'ltr'\n */\n dir?: Direction;\n\n /**\n * The global locale of your application. This will be inherited by all primitives.\n * @defaultValue 'en'\n */\n locale?: string;\n};\n\n@Injectable({ providedIn: 'root' })\nexport class RadixNG {\n readonly dir = signal<Direction>('ltr');\n\n readonly locale = signal<string>('en');\n\n setConfig(config: RadixNGConfig): void {\n const { dir, locale } = config || {};\n\n if (dir) this.dir.set(dir);\n if (locale) this.locale.set(locale);\n }\n}\n","import {\n EnvironmentProviders,\n inject,\n InjectionToken,\n makeEnvironmentProviders,\n provideAppInitializer\n} from '@angular/core';\nimport { RDX_DIRECTION } from '@radix-ng/primitives/direction-provider';\nimport { RadixNG, type RadixNGConfig } from './config';\n\nexport const RADIX_NG_CONFIG = new InjectionToken<readonly RadixNGConfig[]>('RADIX_NG_CONFIG', {\n providedIn: 'root',\n factory: () => []\n});\n\n/**\n * Provides RadixNG configuration as environment providers.\n *\n * @param features One or more RadixNG configuration objects.\n * @returns A set of environment providers that register the RadixNG configs.\n */\nexport function provideRadixNG(...features: RadixNGConfig[]): EnvironmentProviders {\n const providers = features?.map((feature) => ({\n provide: RADIX_NG_CONFIG,\n useValue: feature,\n multi: true\n }));\n\n /**\n * Creates an AppInitializer to load and apply each RadixNG configuration\n * to the global RadixNG service before the app starts.\n */\n const initializer = provideAppInitializer(() => {\n const config = inject(RadixNG);\n const configs = inject(RADIX_NG_CONFIG);\n\n configs.forEach((feature) => config.setConfig(feature));\n return;\n });\n\n return makeEnvironmentProviders([\n ...providers,\n { provide: RDX_DIRECTION, useFactory: () => inject(RadixNG).dir },\n initializer\n ]);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;MAkBa,OAAO,CAAA;AADpB,IAAA,WAAA,GAAA;QAEa,IAAA,CAAA,GAAG,GAAG,MAAM,CAAY,KAAK;gFAAC;QAE9B,IAAA,CAAA,MAAM,GAAG,MAAM,CAAS,IAAI;mFAAC;AAQzC,IAAA;AANG,IAAA,SAAS,CAAC,MAAqB,EAAA;QAC3B,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,EAAE;AAEpC,QAAA,IAAI,GAAG;AAAE,YAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;AAC1B,QAAA,IAAI,MAAM;AAAE,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;IACvC;8GAVS,OAAO,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAP,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,OAAO,cADM,MAAM,EAAA,CAAA,CAAA;;2FACnB,OAAO,EAAA,UAAA,EAAA,CAAA;kBADnB,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCPrB,eAAe,GAAG,IAAI,cAAc,CAA2B,iBAAiB,EAAE;AAC3F,IAAA,UAAU,EAAE,MAAM;AAClB,IAAA,OAAO,EAAE,MAAM;AAClB,CAAA;AAED;;;;;AAKG;AACG,SAAU,cAAc,CAAC,GAAG,QAAyB,EAAA;IACvD,MAAM,SAAS,GAAG,QAAQ,EAAE,GAAG,CAAC,CAAC,OAAO,MAAM;AAC1C,QAAA,OAAO,EAAE,eAAe;AACxB,QAAA,QAAQ,EAAE,OAAO;AACjB,QAAA,KAAK,EAAE;AACV,KAAA,CAAC,CAAC;AAEH;;;AAGG;AACH,IAAA,MAAM,WAAW,GAAG,qBAAqB,CAAC,MAAK;AAC3C,QAAA,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC;AAC9B,QAAA,MAAM,OAAO,GAAG,MAAM,CAAC,eAAe,CAAC;AAEvC,QAAA,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,KAAK,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACvD;AACJ,IAAA,CAAC,CAAC;AAEF,IAAA,OAAO,wBAAwB,CAAC;AAC5B,QAAA,GAAG,SAAS;AACZ,QAAA,EAAE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE;QACjE;AACH,KAAA,CAAC;AACN;;AC7CA;;AAEG;;;;"}
|