@wirekyt/angular 0.0.3 → 0.0.5

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.
@@ -0,0 +1,359 @@
1
+ import * as accordion from '@wirekyt/dom/machines/accordion';
2
+ export { anatomy as accordionAnatomy } from '@wirekyt/dom/machines/accordion';
3
+ import * as i0 from '@angular/core';
4
+ import { InjectionToken, inject, input, booleanAttribute, model, output, DestroyRef, Renderer2, ElementRef, forwardRef, Directive, computed, signal, effect, TemplateRef, ViewContainerRef } from '@angular/core';
5
+ import { injectLocale, injectEnvironment, createId, useMachine, bindProps } from '@wirekyt/angular';
6
+
7
+ const ACCORDION_CONTEXT = new InjectionToken("WIREKIT.ACCORDION_CONTEXT");
8
+ function injectAccordionContext() {
9
+ return inject(ACCORDION_CONTEXT);
10
+ }
11
+
12
+ const ACCORDION_ITEM_CONTEXT = new InjectionToken("WIREKIT.ACCORDION_ITEM_CONTEXT");
13
+ function injectAccordionItemContext() {
14
+ return inject(ACCORDION_ITEM_CONTEXT);
15
+ }
16
+
17
+ function useAccordion(options) {
18
+ const locale = injectLocale();
19
+ const environment = injectEnvironment();
20
+ const fallbackId = createId();
21
+ return useMachine({
22
+ machine: accordion.machine,
23
+ context: () => {
24
+ const props = options.context();
25
+ return {
26
+ ...props,
27
+ dir: locale.dir,
28
+ getRootNode: environment.getRootNode,
29
+ id: props.id ?? fallbackId,
30
+ };
31
+ },
32
+ connect: (service, normalize) => accordion.connect(service, normalize),
33
+ });
34
+ }
35
+
36
+ function areStringArraysEqual(left, right) {
37
+ return left?.length === right.length && left.every((value, index) => value === right[index]);
38
+ }
39
+ class AccordionRoot {
40
+ id = input(undefined, /* @ts-ignore */
41
+ ...(ngDevMode ? [{ debugName: "id" }] : /* istanbul ignore next */ []));
42
+ ids = input(undefined, /* @ts-ignore */
43
+ ...(ngDevMode ? [{ debugName: "ids" }] : /* istanbul ignore next */ []));
44
+ multiple = input(false, { ...(ngDevMode ? { debugName: "multiple" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
45
+ collapsible = input(false, { ...(ngDevMode ? { debugName: "collapsible" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
46
+ value = model(undefined, /* @ts-ignore */
47
+ ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
48
+ defaultValue = input(undefined, /* @ts-ignore */
49
+ ...(ngDevMode ? [{ debugName: "defaultValue" }] : /* istanbul ignore next */ []));
50
+ disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
51
+ orientation = input(undefined, /* @ts-ignore */
52
+ ...(ngDevMode ? [{ debugName: "orientation" }] : /* istanbul ignore next */ []));
53
+ lazyMount = input(false, { ...(ngDevMode ? { debugName: "lazyMount" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
54
+ unmountOnExit = input(false, { ...(ngDevMode ? { debugName: "unmountOnExit" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
55
+ focusChange = output();
56
+ machine = useAccordion({
57
+ context: () => ({
58
+ id: this.id(),
59
+ ids: this.ids(),
60
+ multiple: this.multiple(),
61
+ collapsible: this.collapsible(),
62
+ value: this.value(),
63
+ defaultValue: this.defaultValue(),
64
+ disabled: this.disabled(),
65
+ orientation: this.orientation(),
66
+ onValueChange: (details) => {
67
+ if (areStringArraysEqual(this.value(), details.value))
68
+ return;
69
+ this.value.set(details.value);
70
+ },
71
+ onFocusChange: (details) => {
72
+ this.focusChange.emit(details);
73
+ },
74
+ }),
75
+ });
76
+ state = this.machine.state;
77
+ api = this.machine.api;
78
+ service = this.machine.service;
79
+ send = this.machine.send;
80
+ constructor() {
81
+ bindProps({
82
+ elementRef: inject(ElementRef),
83
+ renderer: inject(Renderer2),
84
+ destroyRef: inject(DestroyRef),
85
+ props: () => this.api().getRootProps(),
86
+ });
87
+ }
88
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: AccordionRoot, deps: [], target: i0.ɵɵFactoryTarget.Directive });
89
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.0", type: AccordionRoot, isStandalone: true, selector: "[accordionRoot]", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, ids: { classPropertyName: "ids", publicName: "ids", isSignal: true, isRequired: false, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null }, collapsible: { classPropertyName: "collapsible", publicName: "collapsible", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, defaultValue: { classPropertyName: "defaultValue", publicName: "defaultValue", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null }, lazyMount: { classPropertyName: "lazyMount", publicName: "lazyMount", isSignal: true, isRequired: false, transformFunction: null }, unmountOnExit: { classPropertyName: "unmountOnExit", publicName: "unmountOnExit", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", focusChange: "focusChange" }, providers: [{ provide: ACCORDION_CONTEXT, useExisting: forwardRef(() => AccordionRoot) }], exportAs: ["accordionRoot"], ngImport: i0 });
90
+ }
91
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: AccordionRoot, decorators: [{
92
+ type: Directive,
93
+ args: [{
94
+ selector: "[accordionRoot]",
95
+ standalone: true,
96
+ exportAs: "accordionRoot",
97
+ providers: [{ provide: ACCORDION_CONTEXT, useExisting: forwardRef(() => AccordionRoot) }],
98
+ }]
99
+ }], ctorParameters: () => [], propDecorators: { id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: false }] }], ids: [{ type: i0.Input, args: [{ isSignal: true, alias: "ids", required: false }] }], multiple: [{ type: i0.Input, args: [{ isSignal: true, alias: "multiple", required: false }] }], collapsible: [{ type: i0.Input, args: [{ isSignal: true, alias: "collapsible", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], defaultValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultValue", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], orientation: [{ type: i0.Input, args: [{ isSignal: true, alias: "orientation", required: false }] }], lazyMount: [{ type: i0.Input, args: [{ isSignal: true, alias: "lazyMount", required: false }] }], unmountOnExit: [{ type: i0.Input, args: [{ isSignal: true, alias: "unmountOnExit", required: false }] }], focusChange: [{ type: i0.Output, args: ["focusChange"] }] } });
100
+
101
+ class AccordionRootProvider {
102
+ value = input.required(/* @ts-ignore */
103
+ ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
104
+ lazyMount = input(false, { ...(ngDevMode ? { debugName: "lazyMount" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
105
+ unmountOnExit = input(false, { ...(ngDevMode ? { debugName: "unmountOnExit" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
106
+ state = computed(() => this.value().state(), /* @ts-ignore */
107
+ ...(ngDevMode ? [{ debugName: "state" }] : /* istanbul ignore next */ []));
108
+ api = computed(() => this.value().api(), /* @ts-ignore */
109
+ ...(ngDevMode ? [{ debugName: "api" }] : /* istanbul ignore next */ []));
110
+ send = (event) => this.value().send(event);
111
+ get service() {
112
+ return this.value().service;
113
+ }
114
+ constructor() {
115
+ bindProps({
116
+ elementRef: inject(ElementRef),
117
+ renderer: inject(Renderer2),
118
+ destroyRef: inject(DestroyRef),
119
+ props: () => this.api().getRootProps(),
120
+ });
121
+ }
122
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: AccordionRootProvider, deps: [], target: i0.ɵɵFactoryTarget.Directive });
123
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.0", type: AccordionRootProvider, isStandalone: true, selector: "[accordionRootProvider]", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null }, lazyMount: { classPropertyName: "lazyMount", publicName: "lazyMount", isSignal: true, isRequired: false, transformFunction: null }, unmountOnExit: { classPropertyName: "unmountOnExit", publicName: "unmountOnExit", isSignal: true, isRequired: false, transformFunction: null } }, providers: [{ provide: ACCORDION_CONTEXT, useExisting: forwardRef(() => AccordionRootProvider) }], exportAs: ["accordionRootProvider"], ngImport: i0 });
124
+ }
125
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: AccordionRootProvider, decorators: [{
126
+ type: Directive,
127
+ args: [{
128
+ selector: "[accordionRootProvider]",
129
+ standalone: true,
130
+ exportAs: "accordionRootProvider",
131
+ providers: [{ provide: ACCORDION_CONTEXT, useExisting: forwardRef(() => AccordionRootProvider) }],
132
+ }]
133
+ }], ctorParameters: () => [], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: true }] }], lazyMount: [{ type: i0.Input, args: [{ isSignal: true, alias: "lazyMount", required: false }] }], unmountOnExit: [{ type: i0.Input, args: [{ isSignal: true, alias: "unmountOnExit", required: false }] }] } });
134
+
135
+ class AccordionItem {
136
+ value = input.required(/* @ts-ignore */
137
+ ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
138
+ disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
139
+ root = injectAccordionContext();
140
+ wasVisible = signal(false, /* @ts-ignore */
141
+ ...(ngDevMode ? [{ debugName: "wasVisible" }] : /* istanbul ignore next */ []));
142
+ itemState = computed(() => this.root.api().getItemState({ value: this.value(), disabled: this.disabled() }), /* @ts-ignore */
143
+ ...(ngDevMode ? [{ debugName: "itemState" }] : /* istanbul ignore next */ []));
144
+ itemContext = {
145
+ value: computed(() => this.value()),
146
+ disabled: computed(() => this.disabled()),
147
+ state: this.itemState,
148
+ isUnmounted: computed(() => {
149
+ const visible = this.itemState().expanded;
150
+ return Boolean((!visible && !this.wasVisible() && this.root.lazyMount()) ||
151
+ (!visible && this.wasVisible() && this.root.unmountOnExit()));
152
+ }),
153
+ };
154
+ constructor() {
155
+ effect(() => {
156
+ if (this.itemState().expanded)
157
+ this.wasVisible.set(true);
158
+ });
159
+ bindProps({
160
+ elementRef: inject(ElementRef),
161
+ renderer: inject(Renderer2),
162
+ destroyRef: inject(DestroyRef),
163
+ props: () => this.root.api().getItemProps({
164
+ value: this.value(),
165
+ disabled: this.disabled(),
166
+ }),
167
+ });
168
+ }
169
+ getItemContext() {
170
+ return this.itemContext;
171
+ }
172
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: AccordionItem, deps: [], target: i0.ɵɵFactoryTarget.Directive });
173
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.0", type: AccordionItem, isStandalone: true, selector: "[accordionItem]", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
174
+ {
175
+ provide: ACCORDION_ITEM_CONTEXT,
176
+ useFactory: (item) => item.getItemContext(),
177
+ deps: [forwardRef(() => AccordionItem)],
178
+ },
179
+ ], exportAs: ["accordionItem"], ngImport: i0 });
180
+ }
181
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: AccordionItem, decorators: [{
182
+ type: Directive,
183
+ args: [{
184
+ selector: "[accordionItem]",
185
+ standalone: true,
186
+ exportAs: "accordionItem",
187
+ providers: [
188
+ {
189
+ provide: ACCORDION_ITEM_CONTEXT,
190
+ useFactory: (item) => item.getItemContext(),
191
+ deps: [forwardRef(() => AccordionItem)],
192
+ },
193
+ ],
194
+ }]
195
+ }], ctorParameters: () => [], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: true }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }] } });
196
+
197
+ class AccordionItemTrigger {
198
+ constructor() {
199
+ const context = injectAccordionContext();
200
+ const item = injectAccordionItemContext();
201
+ bindProps({
202
+ elementRef: inject(ElementRef),
203
+ renderer: inject(Renderer2),
204
+ destroyRef: inject(DestroyRef),
205
+ props: () => context.api().getItemTriggerProps({
206
+ value: item.value(),
207
+ disabled: item.disabled(),
208
+ }),
209
+ });
210
+ }
211
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: AccordionItemTrigger, deps: [], target: i0.ɵɵFactoryTarget.Directive });
212
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.0", type: AccordionItemTrigger, isStandalone: true, selector: "[accordionItemTrigger]", exportAs: ["accordionItemTrigger"], ngImport: i0 });
213
+ }
214
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: AccordionItemTrigger, decorators: [{
215
+ type: Directive,
216
+ args: [{
217
+ selector: "[accordionItemTrigger]",
218
+ standalone: true,
219
+ exportAs: "accordionItemTrigger",
220
+ }]
221
+ }], ctorParameters: () => [] });
222
+
223
+ class AccordionItemContent {
224
+ context = injectAccordionContext();
225
+ item = injectAccordionItemContext();
226
+ template = inject((TemplateRef));
227
+ viewContainer = inject(ViewContainerRef);
228
+ elementRef = { nativeElement: null };
229
+ view;
230
+ constructor() {
231
+ effect(() => {
232
+ if (this.item.isUnmounted()) {
233
+ this.elementRef.nativeElement = null;
234
+ this.viewContainer.clear();
235
+ this.view = undefined;
236
+ return;
237
+ }
238
+ if (!this.view) {
239
+ this.view = this.viewContainer.createEmbeddedView(this.template);
240
+ this.elementRef.nativeElement =
241
+ this.view.rootNodes.find((node) => node.nodeType === 1) ?? null;
242
+ }
243
+ });
244
+ bindProps({
245
+ elementRef: this.elementRef,
246
+ renderer: inject(Renderer2),
247
+ destroyRef: inject(DestroyRef),
248
+ props: () => this.context.api().getItemContentProps({
249
+ value: this.item.value(),
250
+ disabled: this.item.disabled(),
251
+ }),
252
+ });
253
+ }
254
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: AccordionItemContent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
255
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.0", type: AccordionItemContent, isStandalone: true, selector: "[accordionItemContent]", exportAs: ["accordionItemContent"], ngImport: i0 });
256
+ }
257
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: AccordionItemContent, decorators: [{
258
+ type: Directive,
259
+ args: [{
260
+ selector: "[accordionItemContent]",
261
+ standalone: true,
262
+ exportAs: "accordionItemContent",
263
+ }]
264
+ }], ctorParameters: () => [] });
265
+
266
+ class AccordionItemIndicator {
267
+ constructor() {
268
+ const context = injectAccordionContext();
269
+ const item = injectAccordionItemContext();
270
+ bindProps({
271
+ elementRef: inject(ElementRef),
272
+ renderer: inject(Renderer2),
273
+ destroyRef: inject(DestroyRef),
274
+ props: () => context.api().getItemIndicatorProps({
275
+ value: item.value(),
276
+ disabled: item.disabled(),
277
+ }),
278
+ });
279
+ }
280
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: AccordionItemIndicator, deps: [], target: i0.ɵɵFactoryTarget.Directive });
281
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.0", type: AccordionItemIndicator, isStandalone: true, selector: "[accordionItemIndicator]", exportAs: ["accordionItemIndicator"], ngImport: i0 });
282
+ }
283
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: AccordionItemIndicator, decorators: [{
284
+ type: Directive,
285
+ args: [{
286
+ selector: "[accordionItemIndicator]",
287
+ standalone: true,
288
+ exportAs: "accordionItemIndicator",
289
+ }]
290
+ }], ctorParameters: () => [] });
291
+
292
+ class AccordionContext {
293
+ static ngTemplateContextGuard(_directive, context) {
294
+ void context;
295
+ return true;
296
+ }
297
+ accordion = injectAccordionContext();
298
+ templateRef = inject(TemplateRef);
299
+ viewContainer = inject(ViewContainerRef);
300
+ constructor() {
301
+ const view = this.viewContainer.createEmbeddedView(this.templateRef, {
302
+ $implicit: this.accordion.api,
303
+ api: this.accordion.api,
304
+ });
305
+ effect(() => {
306
+ this.accordion.api();
307
+ view.detectChanges();
308
+ });
309
+ inject(DestroyRef).onDestroy(() => view.destroy());
310
+ }
311
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: AccordionContext, deps: [], target: i0.ɵɵFactoryTarget.Directive });
312
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.0", type: AccordionContext, isStandalone: true, selector: "[accordionContext]", exportAs: ["accordionContext"], ngImport: i0 });
313
+ }
314
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: AccordionContext, decorators: [{
315
+ type: Directive,
316
+ args: [{
317
+ selector: "[accordionContext]",
318
+ standalone: true,
319
+ exportAs: "accordionContext",
320
+ }]
321
+ }], ctorParameters: () => [] });
322
+
323
+ class AccordionItemContextDirective {
324
+ static ngTemplateContextGuard(_directive, context) {
325
+ void context;
326
+ return true;
327
+ }
328
+ item = injectAccordionItemContext();
329
+ templateRef = inject(TemplateRef);
330
+ viewContainer = inject(ViewContainerRef);
331
+ constructor() {
332
+ const view = this.viewContainer.createEmbeddedView(this.templateRef, {
333
+ $implicit: this.item,
334
+ item: this.item,
335
+ });
336
+ effect(() => {
337
+ this.item.state();
338
+ view.detectChanges();
339
+ });
340
+ inject(DestroyRef).onDestroy(() => view.destroy());
341
+ }
342
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: AccordionItemContextDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
343
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.0", type: AccordionItemContextDirective, isStandalone: true, selector: "[accordionItemContext]", exportAs: ["accordionItemContext"], ngImport: i0 });
344
+ }
345
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: AccordionItemContextDirective, decorators: [{
346
+ type: Directive,
347
+ args: [{
348
+ selector: "[accordionItemContext]",
349
+ standalone: true,
350
+ exportAs: "accordionItemContext",
351
+ }]
352
+ }], ctorParameters: () => [] });
353
+
354
+ /**
355
+ * Generated bundle index. Do not edit.
356
+ */
357
+
358
+ export { ACCORDION_CONTEXT, ACCORDION_ITEM_CONTEXT, AccordionContext, AccordionItem, AccordionItemContent, AccordionItemContextDirective, AccordionItemIndicator, AccordionItemTrigger, AccordionRoot, AccordionRootProvider, injectAccordionContext, injectAccordionItemContext, useAccordion };
359
+ //# sourceMappingURL=wirekyt-angular-accordion.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wirekyt-angular-accordion.mjs","sources":["../../src/components/accordion/use-context.ts","../../src/components/accordion/use-item-context.ts","../../src/components/accordion/use.ts","../../src/components/accordion/root.ts","../../src/components/accordion/root-provider.ts","../../src/components/accordion/item.ts","../../src/components/accordion/item-trigger.ts","../../src/components/accordion/item-content.ts","../../src/components/accordion/item-indicator.ts","../../src/components/accordion/context.ts","../../src/components/accordion/item-context.ts","../../src/components/accordion/wirekyt-angular-accordion.ts"],"sourcesContent":["import { InjectionToken, inject, type Signal } from \"@angular/core\";\n\nimport type { UseAccordionReturn } from \"./use\";\n\nexport interface AccordionRootContext extends UseAccordionReturn {\n readonly lazyMount: Signal<boolean>;\n readonly unmountOnExit: Signal<boolean>;\n}\n\nexport const ACCORDION_CONTEXT = new InjectionToken<AccordionRootContext>(\n \"WIREKIT.ACCORDION_CONTEXT\",\n);\n\nexport function injectAccordionContext(): AccordionRootContext {\n return inject(ACCORDION_CONTEXT);\n}\n","import { InjectionToken, type Signal, inject } from \"@angular/core\";\nimport * as accordion from \"@wirekyt/dom/machines/accordion\";\n\nexport interface AccordionItemContext {\n readonly value: Signal<string>;\n readonly disabled: Signal<boolean | undefined>;\n readonly state: Signal<accordion.ItemState>;\n readonly isUnmounted: Signal<boolean>;\n}\n\nexport const ACCORDION_ITEM_CONTEXT = new InjectionToken<AccordionItemContext>(\n \"WIREKIT.ACCORDION_ITEM_CONTEXT\",\n);\n\nexport function injectAccordionItemContext(): AccordionItemContext {\n return inject(ACCORDION_ITEM_CONTEXT);\n}\n","import type { Machine } from \"@wirekyt/dom\";\n\nimport { useMachine, type UseMachineReturn } from \"@wirekyt/angular\";\nimport { createId, injectEnvironment, injectLocale } from \"@wirekyt/angular\";\nimport * as accordion from \"@wirekyt/dom/machines/accordion\";\n\ntype OptionalId<T extends { id: string }> = Omit<T, \"id\"> & { id?: string };\n\nexport interface UseAccordionProps extends OptionalId<\n Omit<accordion.Props, \"dir\" | \"getRootNode\">\n> {}\n\nexport type UseAccordionReturn = UseMachineReturn<\n accordion.Service[\"state\"],\n accordion.Api,\n accordion.Service\n>;\n\nexport interface UseAccordionOptions {\n context: () => UseAccordionProps;\n}\n\ntype AccordionContext = Record<string, unknown>;\ntype AccordionSchema = accordion.Machine extends Machine<infer TSchema> ? TSchema : never;\n\nexport function useAccordion(options: UseAccordionOptions): UseAccordionReturn {\n const locale = injectLocale();\n const environment = injectEnvironment();\n const fallbackId = createId();\n\n return useMachine<AccordionSchema, accordion.Api>({\n machine: accordion.machine,\n context: () => {\n const props = options.context();\n return {\n ...props,\n dir: locale.dir,\n getRootNode: environment.getRootNode,\n id: props.id ?? fallbackId,\n } as AccordionContext;\n },\n connect: (service, normalize) => accordion.connect(service, normalize),\n });\n}\n","import {\n DestroyRef,\n Directive,\n ElementRef,\n Renderer2,\n booleanAttribute,\n forwardRef,\n inject,\n input,\n model,\n output,\n type InputSignal,\n type InputSignalWithTransform,\n type ModelSignal,\n type OutputEmitterRef,\n type Signal,\n} from \"@angular/core\";\nimport { bindProps } from \"@wirekyt/angular\";\nimport * as accordion from \"@wirekyt/dom/machines/accordion\";\n\nimport type { AccordionElementIds, AccordionFocusChangeDetails } from \"./types\";\n\nimport { useAccordion, type UseAccordionReturn } from \"./use\";\nimport { ACCORDION_CONTEXT } from \"./use-context\";\n\nfunction areStringArraysEqual(left: string[] | undefined, right: string[]): boolean {\n return left?.length === right.length && left.every((value, index) => value === right[index]);\n}\n\n@Directive({\n selector: \"[accordionRoot]\",\n standalone: true,\n exportAs: \"accordionRoot\",\n providers: [{ provide: ACCORDION_CONTEXT, useExisting: forwardRef(() => AccordionRoot) }],\n})\nexport class AccordionRoot implements UseAccordionReturn {\n readonly id: InputSignal<string | undefined> = input<string | undefined>(undefined);\n readonly ids: InputSignal<AccordionElementIds | undefined> = input<\n AccordionElementIds | undefined\n >(undefined);\n readonly multiple: InputSignalWithTransform<boolean, unknown> = input(false, {\n transform: booleanAttribute,\n });\n readonly collapsible: InputSignalWithTransform<boolean, unknown> = input(false, {\n transform: booleanAttribute,\n });\n readonly value: ModelSignal<string[] | undefined> = model<string[] | undefined>(undefined);\n readonly defaultValue: InputSignal<string[] | undefined> = input<string[] | undefined>(undefined);\n readonly disabled: InputSignalWithTransform<boolean, unknown> = input(false, {\n transform: booleanAttribute,\n });\n readonly orientation: InputSignal<accordion.Props[\"orientation\"]> =\n input<accordion.Props[\"orientation\"]>(undefined);\n readonly lazyMount: InputSignalWithTransform<boolean, unknown> = input(false, {\n transform: booleanAttribute,\n });\n readonly unmountOnExit: InputSignalWithTransform<boolean, unknown> = input(false, {\n transform: booleanAttribute,\n });\n\n readonly focusChange: OutputEmitterRef<AccordionFocusChangeDetails> =\n output<AccordionFocusChangeDetails>();\n\n private readonly machine = useAccordion({\n context: () => ({\n id: this.id(),\n ids: this.ids(),\n multiple: this.multiple(),\n collapsible: this.collapsible(),\n value: this.value(),\n defaultValue: this.defaultValue(),\n disabled: this.disabled(),\n orientation: this.orientation(),\n onValueChange: (details) => {\n if (areStringArraysEqual(this.value(), details.value)) return;\n this.value.set(details.value);\n },\n onFocusChange: (details) => {\n this.focusChange.emit(details);\n },\n }),\n });\n\n readonly state: Signal<accordion.Service[\"state\"]> = this.machine.state;\n readonly api: Signal<accordion.Api> = this.machine.api;\n readonly service: accordion.Service = this.machine.service;\n readonly send: accordion.Service[\"send\"] = this.machine.send;\n\n constructor() {\n bindProps({\n elementRef: inject(ElementRef),\n renderer: inject(Renderer2),\n destroyRef: inject(DestroyRef),\n props: () => this.api().getRootProps(),\n });\n }\n}\n","import {\n DestroyRef,\n Directive,\n ElementRef,\n Renderer2,\n booleanAttribute,\n type InputSignal,\n type InputSignalWithTransform,\n type Signal,\n computed,\n forwardRef,\n inject,\n input,\n} from \"@angular/core\";\nimport { bindProps } from \"@wirekyt/angular\";\nimport * as accordion from \"@wirekyt/dom/machines/accordion\";\n\nimport type { UseAccordionReturn } from \"./use\";\n\nimport { ACCORDION_CONTEXT } from \"./use-context\";\n\n@Directive({\n selector: \"[accordionRootProvider]\",\n standalone: true,\n exportAs: \"accordionRootProvider\",\n providers: [{ provide: ACCORDION_CONTEXT, useExisting: forwardRef(() => AccordionRootProvider) }],\n})\nexport class AccordionRootProvider implements UseAccordionReturn {\n readonly value: InputSignal<UseAccordionReturn> = input.required<UseAccordionReturn>();\n readonly lazyMount: InputSignalWithTransform<boolean, unknown> = input(false, {\n transform: booleanAttribute,\n });\n readonly unmountOnExit: InputSignalWithTransform<boolean, unknown> = input(false, {\n transform: booleanAttribute,\n });\n readonly state: Signal<accordion.Service[\"state\"]> = computed(() => this.value().state());\n readonly api: Signal<accordion.Api> = computed(() => this.value().api());\n readonly send: accordion.Service[\"send\"] = (event) => this.value().send(event);\n\n get service(): accordion.Service {\n return this.value().service;\n }\n\n constructor() {\n bindProps({\n elementRef: inject(ElementRef),\n renderer: inject(Renderer2),\n destroyRef: inject(DestroyRef),\n props: () => this.api().getRootProps(),\n });\n }\n}\n","import {\n DestroyRef,\n Directive,\n ElementRef,\n Renderer2,\n booleanAttribute,\n computed,\n effect,\n forwardRef,\n inject,\n input,\n signal,\n type InputSignal,\n type InputSignalWithTransform,\n} from \"@angular/core\";\nimport { bindProps } from \"@wirekyt/angular\";\n\nimport { injectAccordionContext } from \"./use-context\";\nimport { ACCORDION_ITEM_CONTEXT, type AccordionItemContext } from \"./use-item-context\";\n\n@Directive({\n selector: \"[accordionItem]\",\n standalone: true,\n exportAs: \"accordionItem\",\n providers: [\n {\n provide: ACCORDION_ITEM_CONTEXT,\n useFactory: (item: AccordionItem) => item.getItemContext(),\n deps: [forwardRef(() => AccordionItem)],\n },\n ],\n})\nexport class AccordionItem {\n readonly value: InputSignal<string> = input.required<string>();\n readonly disabled: InputSignalWithTransform<boolean, unknown> = input(false, {\n transform: booleanAttribute,\n });\n\n private readonly root = injectAccordionContext();\n private readonly wasVisible = signal(false);\n private readonly itemState = computed(() =>\n this.root.api().getItemState({ value: this.value(), disabled: this.disabled() }),\n );\n private readonly itemContext: AccordionItemContext = {\n value: computed(() => this.value()),\n disabled: computed(() => this.disabled()),\n state: this.itemState,\n isUnmounted: computed(() => {\n const visible = this.itemState().expanded;\n return Boolean(\n (!visible && !this.wasVisible() && this.root.lazyMount()) ||\n (!visible && this.wasVisible() && this.root.unmountOnExit()),\n );\n }),\n };\n\n constructor() {\n effect(() => {\n if (this.itemState().expanded) this.wasVisible.set(true);\n });\n bindProps({\n elementRef: inject(ElementRef),\n renderer: inject(Renderer2),\n destroyRef: inject(DestroyRef),\n props: () =>\n this.root.api().getItemProps({\n value: this.value(),\n disabled: this.disabled(),\n }),\n });\n }\n\n getItemContext(): AccordionItemContext {\n return this.itemContext;\n }\n}\n","import { DestroyRef, Directive, ElementRef, Renderer2, inject } from \"@angular/core\";\nimport { bindProps } from \"@wirekyt/angular\";\n\nimport { injectAccordionContext } from \"./use-context\";\nimport { injectAccordionItemContext } from \"./use-item-context\";\n\n@Directive({\n selector: \"[accordionItemTrigger]\",\n standalone: true,\n exportAs: \"accordionItemTrigger\",\n})\nexport class AccordionItemTrigger {\n constructor() {\n const context = injectAccordionContext();\n const item = injectAccordionItemContext();\n bindProps({\n elementRef: inject(ElementRef),\n renderer: inject(Renderer2),\n destroyRef: inject(DestroyRef),\n props: () =>\n context.api().getItemTriggerProps({\n value: item.value(),\n disabled: item.disabled(),\n }),\n });\n }\n}\n","import {\n DestroyRef,\n Directive,\n ElementRef,\n EmbeddedViewRef,\n Renderer2,\n TemplateRef,\n ViewContainerRef,\n effect,\n inject,\n} from \"@angular/core\";\nimport { bindProps } from \"@wirekyt/angular\";\n\nimport { injectAccordionContext } from \"./use-context\";\nimport { injectAccordionItemContext } from \"./use-item-context\";\n\n@Directive({\n selector: \"[accordionItemContent]\",\n standalone: true,\n exportAs: \"accordionItemContent\",\n})\nexport class AccordionItemContent {\n private readonly context = injectAccordionContext();\n private readonly item = injectAccordionItemContext();\n private readonly template = inject(TemplateRef<unknown>);\n private readonly viewContainer = inject(ViewContainerRef);\n private readonly elementRef = { nativeElement: null as HTMLElement | null };\n private view: EmbeddedViewRef<unknown> | undefined;\n\n constructor() {\n effect(() => {\n if (this.item.isUnmounted()) {\n this.elementRef.nativeElement = null;\n this.viewContainer.clear();\n this.view = undefined;\n return;\n }\n\n if (!this.view) {\n this.view = this.viewContainer.createEmbeddedView(this.template);\n this.elementRef.nativeElement =\n this.view.rootNodes.find((node: Node) => node.nodeType === 1) ?? null;\n }\n });\n\n bindProps({\n elementRef: this.elementRef as ElementRef<HTMLElement>,\n renderer: inject(Renderer2),\n destroyRef: inject(DestroyRef),\n props: () =>\n this.context.api().getItemContentProps({\n value: this.item.value(),\n disabled: this.item.disabled(),\n }),\n });\n }\n}\n","import { DestroyRef, Directive, ElementRef, Renderer2, inject } from \"@angular/core\";\nimport { bindProps } from \"@wirekyt/angular\";\n\nimport { injectAccordionContext } from \"./use-context\";\nimport { injectAccordionItemContext } from \"./use-item-context\";\n\n@Directive({\n selector: \"[accordionItemIndicator]\",\n standalone: true,\n exportAs: \"accordionItemIndicator\",\n})\nexport class AccordionItemIndicator {\n constructor() {\n const context = injectAccordionContext();\n const item = injectAccordionItemContext();\n bindProps({\n elementRef: inject(ElementRef),\n renderer: inject(Renderer2),\n destroyRef: inject(DestroyRef),\n props: () =>\n context.api().getItemIndicatorProps({\n value: item.value(),\n disabled: item.disabled(),\n }),\n });\n }\n}\n","import {\n DestroyRef,\n Directive,\n TemplateRef,\n ViewContainerRef,\n effect,\n inject,\n} from \"@angular/core\";\n\nimport type { UseAccordionReturn } from \"./use\";\n\nimport { injectAccordionContext } from \"./use-context\";\n\nexport interface AccordionContextTemplate {\n $implicit: UseAccordionReturn[\"api\"];\n api: UseAccordionReturn[\"api\"];\n}\n\n@Directive({\n selector: \"[accordionContext]\",\n standalone: true,\n exportAs: \"accordionContext\",\n})\nexport class AccordionContext {\n static ngTemplateContextGuard(\n _directive: AccordionContext,\n context: unknown,\n ): context is AccordionContextTemplate {\n void context;\n return true;\n }\n\n private readonly accordion = injectAccordionContext();\n private readonly templateRef = inject<TemplateRef<AccordionContextTemplate>>(TemplateRef);\n private readonly viewContainer = inject(ViewContainerRef);\n\n constructor() {\n const view = this.viewContainer.createEmbeddedView(this.templateRef, {\n $implicit: this.accordion.api,\n api: this.accordion.api,\n });\n\n effect(() => {\n this.accordion.api();\n view.detectChanges();\n });\n\n inject(DestroyRef).onDestroy(() => view.destroy());\n }\n}\n","import {\n DestroyRef,\n Directive,\n TemplateRef,\n ViewContainerRef,\n effect,\n inject,\n} from \"@angular/core\";\n\nimport type { AccordionItemContext as UseAccordionItemContext } from \"./use-item-context\";\n\nimport { injectAccordionItemContext } from \"./use-item-context\";\n\nexport interface AccordionItemContextTemplate {\n $implicit: UseAccordionItemContext;\n item: UseAccordionItemContext;\n}\n\n@Directive({\n selector: \"[accordionItemContext]\",\n standalone: true,\n exportAs: \"accordionItemContext\",\n})\nexport class AccordionItemContextDirective {\n static ngTemplateContextGuard(\n _directive: AccordionItemContextDirective,\n context: unknown,\n ): context is AccordionItemContextTemplate {\n void context;\n return true;\n }\n\n private readonly item = injectAccordionItemContext();\n private readonly templateRef = inject<TemplateRef<AccordionItemContextTemplate>>(TemplateRef);\n private readonly viewContainer = inject(ViewContainerRef);\n\n constructor() {\n const view = this.viewContainer.createEmbeddedView(this.templateRef, {\n $implicit: this.item,\n item: this.item,\n });\n\n effect(() => {\n this.item.state();\n view.detectChanges();\n });\n\n inject(DestroyRef).onDestroy(() => view.destroy());\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}