@wirekyt/angular 0.0.10 → 0.0.12

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,532 @@
1
+ import * as dateInput from '@wirekyt/dom/machines/date-input';
2
+ export { anatomy as dateInputAnatomy } from '@wirekyt/dom/machines/date-input';
3
+ import * as i0 from '@angular/core';
4
+ import { InjectionToken, inject, input, model, booleanAttribute, output, signal, effect, DestroyRef, Renderer2, ElementRef, forwardRef, Directive, computed, TemplateRef, ViewContainerRef } from '@angular/core';
5
+ import { injectLocale, injectEnvironment, createId, useMachine, createCvaController, bindProps } from '@wirekyt/angular';
6
+ import { injectFieldContextOptional } from '@wirekyt/angular/field';
7
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
8
+
9
+ const DATE_INPUT_CONTEXT = new InjectionToken("WIREKYT.DATE_INPUT_CONTEXT");
10
+ function injectDateInputContext() {
11
+ return inject(DATE_INPUT_CONTEXT);
12
+ }
13
+
14
+ function useDateInput(options) {
15
+ const locale = injectLocale();
16
+ const environment = injectEnvironment();
17
+ const field = injectFieldContextOptional();
18
+ const fallbackId = createId();
19
+ return useMachine({
20
+ machine: dateInput.machine,
21
+ context: () => {
22
+ const props = options.context();
23
+ const merged = {
24
+ ...props,
25
+ dir: locale.dir,
26
+ getRootNode: environment.getRootNode,
27
+ id: props.id ?? fallbackId,
28
+ locale: props.locale ?? locale.locale,
29
+ };
30
+ if (field) {
31
+ merged.ids = {
32
+ label: () => field.ids.label,
33
+ hiddenInput: () => field.ids.control,
34
+ ...props.ids,
35
+ };
36
+ merged.disabled = Boolean(props.disabled) || field.disabled() || undefined;
37
+ merged.readOnly = Boolean(props.readOnly) || field.readOnly() || undefined;
38
+ merged.required = Boolean(props.required) || field.required() || undefined;
39
+ merged.invalid = Boolean(props.invalid) || field.invalid() || undefined;
40
+ }
41
+ return merged;
42
+ },
43
+ connect: (service, normalize) => dateInput.connect(service, normalize),
44
+ });
45
+ }
46
+
47
+ class DateInputRoot {
48
+ id = input(undefined, /* @ts-ignore */
49
+ ...(ngDevMode ? [{ debugName: "id" }] : /* istanbul ignore next */ []));
50
+ ids = input(undefined, /* @ts-ignore */
51
+ ...(ngDevMode ? [{ debugName: "ids" }] : /* istanbul ignore next */ []));
52
+ value = model(undefined, /* @ts-ignore */
53
+ ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
54
+ defaultValue = input(undefined, /* @ts-ignore */
55
+ ...(ngDevMode ? [{ debugName: "defaultValue" }] : /* istanbul ignore next */ []));
56
+ placeholderValue = model(undefined, /* @ts-ignore */
57
+ ...(ngDevMode ? [{ debugName: "placeholderValue" }] : /* istanbul ignore next */ []));
58
+ defaultPlaceholderValue = input(undefined, /* @ts-ignore */
59
+ ...(ngDevMode ? [{ debugName: "defaultPlaceholderValue" }] : /* istanbul ignore next */ []));
60
+ min = input(undefined, /* @ts-ignore */
61
+ ...(ngDevMode ? [{ debugName: "min" }] : /* istanbul ignore next */ []));
62
+ max = input(undefined, /* @ts-ignore */
63
+ ...(ngDevMode ? [{ debugName: "max" }] : /* istanbul ignore next */ []));
64
+ selectionMode = input(undefined, /* @ts-ignore */
65
+ ...(ngDevMode ? [{ debugName: "selectionMode" }] : /* istanbul ignore next */ []));
66
+ granularity = input(undefined, /* @ts-ignore */
67
+ ...(ngDevMode ? [{ debugName: "granularity" }] : /* istanbul ignore next */ []));
68
+ hourCycle = input(undefined, /* @ts-ignore */
69
+ ...(ngDevMode ? [{ debugName: "hourCycle" }] : /* istanbul ignore next */ []));
70
+ hideTimeZone = input(false, { ...(ngDevMode ? { debugName: "hideTimeZone" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
71
+ locale = input(undefined, /* @ts-ignore */
72
+ ...(ngDevMode ? [{ debugName: "locale" }] : /* istanbul ignore next */ []));
73
+ timeZone = input(undefined, /* @ts-ignore */
74
+ ...(ngDevMode ? [{ debugName: "timeZone" }] : /* istanbul ignore next */ []));
75
+ translations = input(undefined, /* @ts-ignore */
76
+ ...(ngDevMode ? [{ debugName: "translations" }] : /* istanbul ignore next */ []));
77
+ formatter = input(undefined, /* @ts-ignore */
78
+ ...(ngDevMode ? [{ debugName: "formatter" }] : /* istanbul ignore next */ []));
79
+ allSegments = input(undefined, /* @ts-ignore */
80
+ ...(ngDevMode ? [{ debugName: "allSegments" }] : /* istanbul ignore next */ []));
81
+ format = input(undefined, /* @ts-ignore */
82
+ ...(ngDevMode ? [{ debugName: "format" }] : /* istanbul ignore next */ []));
83
+ createCalendar = input(undefined, /* @ts-ignore */
84
+ ...(ngDevMode ? [{ debugName: "createCalendar" }] : /* istanbul ignore next */ []));
85
+ isDateUnavailable = input(undefined, /* @ts-ignore */
86
+ ...(ngDevMode ? [{ debugName: "isDateUnavailable" }] : /* istanbul ignore next */ []));
87
+ shouldForceLeadingZeros = input(false, { ...(ngDevMode ? { debugName: "shouldForceLeadingZeros" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
88
+ disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
89
+ readOnly = input(false, { ...(ngDevMode ? { debugName: "readOnly" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
90
+ required = input(false, { ...(ngDevMode ? { debugName: "required" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
91
+ invalid = input(false, { ...(ngDevMode ? { debugName: "invalid" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
92
+ name = input(undefined, /* @ts-ignore */
93
+ ...(ngDevMode ? [{ debugName: "name" }] : /* istanbul ignore next */ []));
94
+ form = input(undefined, /* @ts-ignore */
95
+ ...(ngDevMode ? [{ debugName: "form" }] : /* istanbul ignore next */ []));
96
+ focusChange = output();
97
+ placeholderChange = output();
98
+ valueDetailsChange = output();
99
+ disabledFromForm = signal(false, /* @ts-ignore */
100
+ ...(ngDevMode ? [{ debugName: "disabledFromForm" }] : /* istanbul ignore next */ []));
101
+ pendingInternalWrites = 0;
102
+ hasExternalBinding = false;
103
+ hasReceivedFormWrite = false;
104
+ cva = createCvaController({
105
+ value: this.value,
106
+ setDisabled: (disabled) => this.disabledFromForm.set(disabled),
107
+ componentName: "DateInputRoot",
108
+ hasExternalModelBinding: () => this.hasExternalBinding,
109
+ });
110
+ machine = useDateInput({
111
+ context: () => ({
112
+ id: this.id(),
113
+ ids: this.ids(),
114
+ value: this.value(),
115
+ defaultValue: this.defaultValue(),
116
+ placeholderValue: this.placeholderValue(),
117
+ defaultPlaceholderValue: this.defaultPlaceholderValue(),
118
+ min: this.min(),
119
+ max: this.max(),
120
+ selectionMode: this.selectionMode(),
121
+ granularity: this.granularity(),
122
+ hourCycle: this.hourCycle(),
123
+ hideTimeZone: this.hideTimeZone() || undefined,
124
+ locale: this.locale(),
125
+ timeZone: this.timeZone(),
126
+ translations: this.translations(),
127
+ formatter: this.formatter(),
128
+ allSegments: this.allSegments(),
129
+ format: this.format(),
130
+ createCalendar: this.createCalendar(),
131
+ isDateUnavailable: this.isDateUnavailable(),
132
+ shouldForceLeadingZeros: this.shouldForceLeadingZeros() || undefined,
133
+ disabled: this.disabled() || this.disabledFromForm() || undefined,
134
+ readOnly: this.readOnly() || undefined,
135
+ required: this.required() || undefined,
136
+ invalid: this.invalid() || undefined,
137
+ name: this.name(),
138
+ form: this.form(),
139
+ onValueChange: (details) => {
140
+ if (!dateValueArraysEqual(this.value(), details.value)) {
141
+ this.pendingInternalWrites++;
142
+ this.value.set([...details.value]);
143
+ }
144
+ this.cva.notifyValueChange(details.value);
145
+ this.cva.markTouched();
146
+ this.valueDetailsChange.emit(details);
147
+ },
148
+ onPlaceholderChange: (details) => {
149
+ if (!dateValuesEqual(this.placeholderValue(), details.placeholderValue)) {
150
+ this.placeholderValue.set(details.placeholderValue);
151
+ }
152
+ this.placeholderChange.emit(details);
153
+ },
154
+ onFocusChange: (details) => {
155
+ if (!details.focused) {
156
+ this.cva.markTouched();
157
+ }
158
+ this.focusChange.emit(details);
159
+ },
160
+ }),
161
+ });
162
+ state = this.machine.state;
163
+ api = this.machine.api;
164
+ service = this.machine.service;
165
+ send = this.machine.send;
166
+ constructor() {
167
+ let firstRun = true;
168
+ effect(() => {
169
+ void this.value();
170
+ if (firstRun) {
171
+ firstRun = false;
172
+ this.pendingInternalWrites = 0;
173
+ return;
174
+ }
175
+ if (this.pendingInternalWrites > 0) {
176
+ this.pendingInternalWrites--;
177
+ return;
178
+ }
179
+ this.hasExternalBinding = true;
180
+ });
181
+ bindProps({
182
+ elementRef: inject(ElementRef),
183
+ renderer: inject(Renderer2),
184
+ destroyRef: inject(DestroyRef),
185
+ props: () => this.api().getRootProps(),
186
+ });
187
+ }
188
+ writeValue(value) {
189
+ const next = value === null ? undefined : value;
190
+ const current = this.value();
191
+ if (!this.hasReceivedFormWrite && current !== undefined) {
192
+ this.hasExternalBinding = true;
193
+ }
194
+ this.hasReceivedFormWrite = true;
195
+ if (current !== next) {
196
+ this.pendingInternalWrites++;
197
+ }
198
+ this.cva.writeValue(value);
199
+ }
200
+ registerOnChange(fn) {
201
+ this.cva.registerOnChange(fn);
202
+ }
203
+ registerOnTouched(fn) {
204
+ this.cva.registerOnTouched(fn);
205
+ }
206
+ setDisabledState(disabled) {
207
+ this.cva.setDisabledState(disabled);
208
+ }
209
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: DateInputRoot, deps: [], target: i0.ɵɵFactoryTarget.Directive });
210
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.3", type: DateInputRoot, isStandalone: true, selector: "[dateInputRoot]", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, ids: { classPropertyName: "ids", publicName: "ids", 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 }, placeholderValue: { classPropertyName: "placeholderValue", publicName: "placeholderValue", isSignal: true, isRequired: false, transformFunction: null }, defaultPlaceholderValue: { classPropertyName: "defaultPlaceholderValue", publicName: "defaultPlaceholderValue", isSignal: true, isRequired: false, transformFunction: null }, min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, selectionMode: { classPropertyName: "selectionMode", publicName: "selectionMode", isSignal: true, isRequired: false, transformFunction: null }, granularity: { classPropertyName: "granularity", publicName: "granularity", isSignal: true, isRequired: false, transformFunction: null }, hourCycle: { classPropertyName: "hourCycle", publicName: "hourCycle", isSignal: true, isRequired: false, transformFunction: null }, hideTimeZone: { classPropertyName: "hideTimeZone", publicName: "hideTimeZone", isSignal: true, isRequired: false, transformFunction: null }, locale: { classPropertyName: "locale", publicName: "locale", isSignal: true, isRequired: false, transformFunction: null }, timeZone: { classPropertyName: "timeZone", publicName: "timeZone", isSignal: true, isRequired: false, transformFunction: null }, translations: { classPropertyName: "translations", publicName: "translations", isSignal: true, isRequired: false, transformFunction: null }, formatter: { classPropertyName: "formatter", publicName: "formatter", isSignal: true, isRequired: false, transformFunction: null }, allSegments: { classPropertyName: "allSegments", publicName: "allSegments", isSignal: true, isRequired: false, transformFunction: null }, format: { classPropertyName: "format", publicName: "format", isSignal: true, isRequired: false, transformFunction: null }, createCalendar: { classPropertyName: "createCalendar", publicName: "createCalendar", isSignal: true, isRequired: false, transformFunction: null }, isDateUnavailable: { classPropertyName: "isDateUnavailable", publicName: "isDateUnavailable", isSignal: true, isRequired: false, transformFunction: null }, shouldForceLeadingZeros: { classPropertyName: "shouldForceLeadingZeros", publicName: "shouldForceLeadingZeros", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, readOnly: { classPropertyName: "readOnly", publicName: "readOnly", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, form: { classPropertyName: "form", publicName: "form", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", placeholderValue: "placeholderValueChange", focusChange: "focusChange", placeholderChange: "placeholderChange", valueDetailsChange: "valueDetailsChange" }, providers: [
211
+ { provide: DATE_INPUT_CONTEXT, useExisting: forwardRef(() => DateInputRoot) },
212
+ { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => DateInputRoot), multi: true },
213
+ ], exportAs: ["dateInputRoot"], ngImport: i0 });
214
+ }
215
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: DateInputRoot, decorators: [{
216
+ type: Directive,
217
+ args: [{
218
+ selector: "[dateInputRoot]",
219
+ standalone: true,
220
+ exportAs: "dateInputRoot",
221
+ providers: [
222
+ { provide: DATE_INPUT_CONTEXT, useExisting: forwardRef(() => DateInputRoot) },
223
+ { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => DateInputRoot), multi: true },
224
+ ],
225
+ }]
226
+ }], ctorParameters: () => [], propDecorators: { id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: false }] }], ids: [{ type: i0.Input, args: [{ isSignal: true, alias: "ids", 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 }] }], placeholderValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholderValue", required: false }] }, { type: i0.Output, args: ["placeholderValueChange"] }], defaultPlaceholderValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultPlaceholderValue", required: false }] }], min: [{ type: i0.Input, args: [{ isSignal: true, alias: "min", required: false }] }], max: [{ type: i0.Input, args: [{ isSignal: true, alias: "max", required: false }] }], selectionMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectionMode", required: false }] }], granularity: [{ type: i0.Input, args: [{ isSignal: true, alias: "granularity", required: false }] }], hourCycle: [{ type: i0.Input, args: [{ isSignal: true, alias: "hourCycle", required: false }] }], hideTimeZone: [{ type: i0.Input, args: [{ isSignal: true, alias: "hideTimeZone", required: false }] }], locale: [{ type: i0.Input, args: [{ isSignal: true, alias: "locale", required: false }] }], timeZone: [{ type: i0.Input, args: [{ isSignal: true, alias: "timeZone", required: false }] }], translations: [{ type: i0.Input, args: [{ isSignal: true, alias: "translations", required: false }] }], formatter: [{ type: i0.Input, args: [{ isSignal: true, alias: "formatter", required: false }] }], allSegments: [{ type: i0.Input, args: [{ isSignal: true, alias: "allSegments", required: false }] }], format: [{ type: i0.Input, args: [{ isSignal: true, alias: "format", required: false }] }], createCalendar: [{ type: i0.Input, args: [{ isSignal: true, alias: "createCalendar", required: false }] }], isDateUnavailable: [{ type: i0.Input, args: [{ isSignal: true, alias: "isDateUnavailable", required: false }] }], shouldForceLeadingZeros: [{ type: i0.Input, args: [{ isSignal: true, alias: "shouldForceLeadingZeros", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], readOnly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readOnly", required: false }] }], required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }], form: [{ type: i0.Input, args: [{ isSignal: true, alias: "form", required: false }] }], focusChange: [{ type: i0.Output, args: ["focusChange"] }], placeholderChange: [{ type: i0.Output, args: ["placeholderChange"] }], valueDetailsChange: [{ type: i0.Output, args: ["valueDetailsChange"] }] } });
227
+ function dateValueArraysEqual(a, b) {
228
+ if (a === b)
229
+ return true;
230
+ if (!a || !b)
231
+ return false;
232
+ if (a.length !== b.length)
233
+ return false;
234
+ for (let i = 0; i < a.length; i++) {
235
+ if (String(a[i]) !== String(b[i]))
236
+ return false;
237
+ }
238
+ return true;
239
+ }
240
+ function dateValuesEqual(a, b) {
241
+ if (a === b)
242
+ return true;
243
+ if (!a || !b)
244
+ return false;
245
+ return String(a) === String(b);
246
+ }
247
+
248
+ class DateInputRootProvider {
249
+ value = input.required(/* @ts-ignore */
250
+ ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
251
+ state = computed(() => this.value().state(), /* @ts-ignore */
252
+ ...(ngDevMode ? [{ debugName: "state" }] : /* istanbul ignore next */ []));
253
+ api = computed(() => this.value().api(), /* @ts-ignore */
254
+ ...(ngDevMode ? [{ debugName: "api" }] : /* istanbul ignore next */ []));
255
+ send = (event) => this.value().send(event);
256
+ get service() {
257
+ return this.value().service;
258
+ }
259
+ constructor() {
260
+ bindProps({
261
+ elementRef: inject(ElementRef),
262
+ renderer: inject(Renderer2),
263
+ destroyRef: inject(DestroyRef),
264
+ props: () => this.api().getRootProps(),
265
+ });
266
+ }
267
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: DateInputRootProvider, deps: [], target: i0.ɵɵFactoryTarget.Directive });
268
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.3", type: DateInputRootProvider, isStandalone: true, selector: "[dateInputRootProvider]", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null } }, providers: [
269
+ { provide: DATE_INPUT_CONTEXT, useExisting: forwardRef(() => DateInputRootProvider) },
270
+ ], exportAs: ["dateInputRootProvider"], ngImport: i0 });
271
+ }
272
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: DateInputRootProvider, decorators: [{
273
+ type: Directive,
274
+ args: [{
275
+ selector: "[dateInputRootProvider]",
276
+ standalone: true,
277
+ exportAs: "dateInputRootProvider",
278
+ providers: [
279
+ { provide: DATE_INPUT_CONTEXT, useExisting: forwardRef(() => DateInputRootProvider) },
280
+ ],
281
+ }]
282
+ }], ctorParameters: () => [], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: true }] }] } });
283
+
284
+ class DateInputLabel {
285
+ index = input(undefined, /* @ts-ignore */
286
+ ...(ngDevMode ? [{ debugName: "index" }] : /* istanbul ignore next */ []));
287
+ constructor() {
288
+ const context = injectDateInputContext();
289
+ bindProps({
290
+ elementRef: inject(ElementRef),
291
+ renderer: inject(Renderer2),
292
+ destroyRef: inject(DestroyRef),
293
+ props: () => context.api().getLabelProps({ index: this.index() }),
294
+ });
295
+ }
296
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: DateInputLabel, deps: [], target: i0.ɵɵFactoryTarget.Directive });
297
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.3", type: DateInputLabel, isStandalone: true, selector: "[dateInputLabel]", inputs: { index: { classPropertyName: "index", publicName: "index", isSignal: true, isRequired: false, transformFunction: null } }, exportAs: ["dateInputLabel"], ngImport: i0 });
298
+ }
299
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: DateInputLabel, decorators: [{
300
+ type: Directive,
301
+ args: [{
302
+ selector: "[dateInputLabel]",
303
+ standalone: true,
304
+ exportAs: "dateInputLabel",
305
+ }]
306
+ }], ctorParameters: () => [], propDecorators: { index: [{ type: i0.Input, args: [{ isSignal: true, alias: "index", required: false }] }] } });
307
+
308
+ class DateInputControl {
309
+ constructor() {
310
+ const context = injectDateInputContext();
311
+ bindProps({
312
+ elementRef: inject(ElementRef),
313
+ renderer: inject(Renderer2),
314
+ destroyRef: inject(DestroyRef),
315
+ props: () => context.api().getControlProps(),
316
+ });
317
+ }
318
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: DateInputControl, deps: [], target: i0.ɵɵFactoryTarget.Directive });
319
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.3", type: DateInputControl, isStandalone: true, selector: "[dateInputControl]", exportAs: ["dateInputControl"], ngImport: i0 });
320
+ }
321
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: DateInputControl, decorators: [{
322
+ type: Directive,
323
+ args: [{
324
+ selector: "[dateInputControl]",
325
+ standalone: true,
326
+ exportAs: "dateInputControl",
327
+ }]
328
+ }], ctorParameters: () => [] });
329
+
330
+ const DATE_INPUT_SEGMENT_GROUP_CONTEXT = new InjectionToken("WIREKYT.DATE_INPUT_SEGMENT_GROUP_CONTEXT");
331
+ function injectDateInputSegmentGroupContext() {
332
+ return inject(DATE_INPUT_SEGMENT_GROUP_CONTEXT);
333
+ }
334
+ class DateInputSegmentGroup {
335
+ /** The range index for this segment group. */
336
+ index = input(undefined, /* @ts-ignore */
337
+ ...(ngDevMode ? [{ debugName: "index" }] : /* istanbul ignore next */ []));
338
+ constructor() {
339
+ const context = injectDateInputContext();
340
+ bindProps({
341
+ elementRef: inject(ElementRef),
342
+ renderer: inject(Renderer2),
343
+ destroyRef: inject(DestroyRef),
344
+ props: () => context.api().getSegmentGroupProps({ index: this.index() }),
345
+ });
346
+ }
347
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: DateInputSegmentGroup, deps: [], target: i0.ɵɵFactoryTarget.Directive });
348
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.3", type: DateInputSegmentGroup, isStandalone: true, selector: "[dateInputSegmentGroup]", inputs: { index: { classPropertyName: "index", publicName: "index", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
349
+ {
350
+ provide: DATE_INPUT_SEGMENT_GROUP_CONTEXT,
351
+ useExisting: forwardRef(() => DateInputSegmentGroup),
352
+ },
353
+ ], exportAs: ["dateInputSegmentGroup"], ngImport: i0 });
354
+ }
355
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: DateInputSegmentGroup, decorators: [{
356
+ type: Directive,
357
+ args: [{
358
+ selector: "[dateInputSegmentGroup]",
359
+ standalone: true,
360
+ exportAs: "dateInputSegmentGroup",
361
+ providers: [
362
+ {
363
+ provide: DATE_INPUT_SEGMENT_GROUP_CONTEXT,
364
+ useExisting: forwardRef(() => DateInputSegmentGroup),
365
+ },
366
+ ],
367
+ }]
368
+ }], ctorParameters: () => [], propDecorators: { index: [{ type: i0.Input, args: [{ isSignal: true, alias: "index", required: false }] }] } });
369
+
370
+ class DateInputSegment {
371
+ segment = input.required(/* @ts-ignore */
372
+ ...(ngDevMode ? [{ debugName: "segment" }] : /* istanbul ignore next */ []));
373
+ ownsTextContent = signal(false, /* @ts-ignore */
374
+ ...(ngDevMode ? [{ debugName: "ownsTextContent" }] : /* istanbul ignore next */ []));
375
+ elementRef = inject(ElementRef);
376
+ constructor() {
377
+ const context = injectDateInputContext();
378
+ const segmentGroup = injectDateInputSegmentGroupContext();
379
+ const renderer = inject(Renderer2);
380
+ bindProps({
381
+ elementRef: this.elementRef,
382
+ renderer,
383
+ destroyRef: inject(DestroyRef),
384
+ props: () => context.api().getSegmentProps({ segment: this.segment(), index: segmentGroup.index() }),
385
+ });
386
+ effect(() => {
387
+ if (!this.ownsTextContent())
388
+ return;
389
+ renderer.setProperty(this.elementRef.nativeElement, "textContent", this.segment().text);
390
+ });
391
+ }
392
+ ngAfterContentInit() {
393
+ this.ownsTextContent.set(this.elementRef.nativeElement.childNodes.length === 0);
394
+ }
395
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: DateInputSegment, deps: [], target: i0.ɵɵFactoryTarget.Directive });
396
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.3", type: DateInputSegment, isStandalone: true, selector: "[dateInputSegment]", inputs: { segment: { classPropertyName: "segment", publicName: "segment", isSignal: true, isRequired: true, transformFunction: null } }, exportAs: ["dateInputSegment"], ngImport: i0 });
397
+ }
398
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: DateInputSegment, decorators: [{
399
+ type: Directive,
400
+ args: [{
401
+ selector: "[dateInputSegment]",
402
+ standalone: true,
403
+ exportAs: "dateInputSegment",
404
+ }]
405
+ }], ctorParameters: () => [], propDecorators: { segment: [{ type: i0.Input, args: [{ isSignal: true, alias: "segment", required: true }] }] } });
406
+
407
+ class DateInputHiddenInput {
408
+ index = input(undefined, /* @ts-ignore */
409
+ ...(ngDevMode ? [{ debugName: "index" }] : /* istanbul ignore next */ []));
410
+ name = input(undefined, /* @ts-ignore */
411
+ ...(ngDevMode ? [{ debugName: "name" }] : /* istanbul ignore next */ []));
412
+ constructor() {
413
+ const context = injectDateInputContext();
414
+ const field = injectFieldContextOptional();
415
+ bindProps({
416
+ elementRef: inject(ElementRef),
417
+ renderer: inject(Renderer2),
418
+ destroyRef: inject(DestroyRef),
419
+ props: () => ({
420
+ "aria-describedby": field?.ariaDescribedby(),
421
+ ...context.api().getHiddenInputProps({ index: this.index(), name: this.name() }),
422
+ }),
423
+ });
424
+ }
425
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: DateInputHiddenInput, deps: [], target: i0.ɵɵFactoryTarget.Directive });
426
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.3", type: DateInputHiddenInput, isStandalone: true, selector: "input[dateInputHiddenInput]", inputs: { index: { classPropertyName: "index", publicName: "index", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null } }, exportAs: ["dateInputHiddenInput"], ngImport: i0 });
427
+ }
428
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: DateInputHiddenInput, decorators: [{
429
+ type: Directive,
430
+ args: [{
431
+ selector: "input[dateInputHiddenInput]",
432
+ standalone: true,
433
+ exportAs: "dateInputHiddenInput",
434
+ }]
435
+ }], ctorParameters: () => [], propDecorators: { index: [{ type: i0.Input, args: [{ isSignal: true, alias: "index", required: false }] }], name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }] } });
436
+
437
+ class DateInputContext {
438
+ static ngTemplateContextGuard(_directive, context) {
439
+ void context;
440
+ return true;
441
+ }
442
+ dateInput = injectDateInputContext();
443
+ templateRef = inject(TemplateRef);
444
+ viewContainer = inject(ViewContainerRef);
445
+ constructor() {
446
+ const view = this.viewContainer.createEmbeddedView(this.templateRef, {
447
+ $implicit: this.dateInput.api,
448
+ api: this.dateInput.api,
449
+ });
450
+ effect(() => {
451
+ this.dateInput.api();
452
+ view.detectChanges();
453
+ });
454
+ inject(DestroyRef).onDestroy(() => view.destroy());
455
+ }
456
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: DateInputContext, deps: [], target: i0.ɵɵFactoryTarget.Directive });
457
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.3", type: DateInputContext, isStandalone: true, selector: "[dateInputContext]", exportAs: ["dateInputContext"], ngImport: i0 });
458
+ }
459
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: DateInputContext, decorators: [{
460
+ type: Directive,
461
+ args: [{
462
+ selector: "[dateInputContext]",
463
+ standalone: true,
464
+ exportAs: "dateInputContext",
465
+ }]
466
+ }], ctorParameters: () => [] });
467
+
468
+ class DateInputSegmentContext {
469
+ static ngTemplateContextGuard(_directive, context) {
470
+ void context;
471
+ return true;
472
+ }
473
+ dateInput = injectDateInputContext();
474
+ segmentGroup = injectDateInputSegmentGroupContext();
475
+ templateRef = inject(TemplateRef);
476
+ viewContainer = inject(ViewContainerRef);
477
+ views = [];
478
+ constructor() {
479
+ effect(() => {
480
+ const segments = this.dateInput.api().getSegments({ index: this.segmentGroup.index() });
481
+ this.syncSegmentViews(segments);
482
+ });
483
+ }
484
+ syncSegmentViews(segments) {
485
+ const nextViews = [];
486
+ segments.forEach((segment, index) => {
487
+ const key = `${index}:${segment.type}`;
488
+ const existingIndex = this.views.findIndex((entry) => entry.key === key);
489
+ const entry = existingIndex >= 0
490
+ ? this.views.splice(existingIndex, 1)[0]
491
+ : {
492
+ key,
493
+ view: this.viewContainer.createEmbeddedView(this.templateRef, {
494
+ $implicit: segment,
495
+ segment,
496
+ index,
497
+ }),
498
+ };
499
+ entry.view.context.$implicit = segment;
500
+ entry.view.context.segment = segment;
501
+ entry.view.context.index = index;
502
+ nextViews.push(entry);
503
+ const currentIndex = this.viewContainer.indexOf(entry.view);
504
+ if (currentIndex !== index) {
505
+ this.viewContainer.move(entry.view, index);
506
+ }
507
+ entry.view.detectChanges();
508
+ });
509
+ for (const entry of this.views) {
510
+ entry.view.destroy();
511
+ }
512
+ this.views.length = 0;
513
+ this.views.push(...nextViews);
514
+ }
515
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: DateInputSegmentContext, deps: [], target: i0.ɵɵFactoryTarget.Directive });
516
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.3", type: DateInputSegmentContext, isStandalone: true, selector: "[dateInputSegmentContext]", exportAs: ["dateInputSegmentContext"], ngImport: i0 });
517
+ }
518
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: DateInputSegmentContext, decorators: [{
519
+ type: Directive,
520
+ args: [{
521
+ selector: "[dateInputSegmentContext]",
522
+ standalone: true,
523
+ exportAs: "dateInputSegmentContext",
524
+ }]
525
+ }], ctorParameters: () => [] });
526
+
527
+ /**
528
+ * Generated bundle index. Do not edit.
529
+ */
530
+
531
+ export { DATE_INPUT_CONTEXT, DATE_INPUT_SEGMENT_GROUP_CONTEXT, DateInputContext, DateInputControl, DateInputHiddenInput, DateInputLabel, DateInputRoot, DateInputRootProvider, DateInputSegment, DateInputSegmentContext, DateInputSegmentGroup, injectDateInputContext, injectDateInputSegmentGroupContext, useDateInput };
532
+ //# sourceMappingURL=wirekyt-angular-date-input.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wirekyt-angular-date-input.mjs","sources":["../../src/components/date-input/use-context.ts","../../src/components/date-input/use.ts","../../src/components/date-input/root.ts","../../src/components/date-input/root-provider.ts","../../src/components/date-input/label.ts","../../src/components/date-input/control.ts","../../src/components/date-input/segment-group.ts","../../src/components/date-input/segment.ts","../../src/components/date-input/hidden-input.ts","../../src/components/date-input/context.ts","../../src/components/date-input/segment-context.ts","../../src/components/date-input/wirekyt-angular-date-input.ts"],"sourcesContent":["import { InjectionToken, inject } from \"@angular/core\";\n\nimport type { UseDateInputReturn } from \"./use\";\n\nexport const DATE_INPUT_CONTEXT = new InjectionToken<UseDateInputReturn>(\n \"WIREKYT.DATE_INPUT_CONTEXT\",\n);\n\nexport function injectDateInputContext(): UseDateInputReturn {\n return inject(DATE_INPUT_CONTEXT);\n}\n","import type { Machine } from \"@wirekyt/dom\";\n\nimport {\n createId,\n injectEnvironment,\n injectLocale,\n useMachine,\n type UseMachineReturn,\n} from \"@wirekyt/angular\";\nimport { injectFieldContextOptional } from \"@wirekyt/angular/field\";\nimport * as dateInput from \"@wirekyt/dom/machines/date-input\";\n\ntype OptionalId<T extends { id?: string | undefined }> = Omit<T, \"id\"> & { id?: string };\n\nexport interface UseDateInputProps extends OptionalId<\n Omit<dateInput.Props, \"dir\" | \"getRootNode\">\n> {}\n\nexport type UseDateInputReturn = UseMachineReturn<\n dateInput.Service[\"state\"],\n dateInput.Api,\n dateInput.Service\n>;\n\nexport interface UseDateInputOptions {\n context: () => UseDateInputProps;\n}\n\ntype DateInputContext = Record<string, unknown>;\ntype DateInputSchema = dateInput.Machine extends Machine<infer TSchema> ? TSchema : never;\n\nexport function useDateInput(options: UseDateInputOptions): UseDateInputReturn {\n const locale = injectLocale();\n const environment = injectEnvironment();\n const field = injectFieldContextOptional();\n const fallbackId = createId();\n\n return useMachine<DateInputSchema, dateInput.Api>({\n machine: dateInput.machine,\n context: () => {\n const props = options.context();\n const merged: dateInput.Props = {\n ...props,\n dir: locale.dir,\n getRootNode: environment.getRootNode as () => ShadowRoot | Document | Node,\n id: props.id ?? fallbackId,\n locale: props.locale ?? locale.locale,\n };\n\n if (field) {\n merged.ids = {\n label: () => field.ids.label,\n hiddenInput: () => field.ids.control,\n ...props.ids,\n };\n merged.disabled = Boolean(props.disabled) || field.disabled() || undefined;\n merged.readOnly = Boolean(props.readOnly) || field.readOnly() || undefined;\n merged.required = Boolean(props.required) || field.required() || undefined;\n merged.invalid = Boolean(props.invalid) || field.invalid() || undefined;\n }\n\n return merged as unknown as DateInputContext;\n },\n connect: (service, normalize) => dateInput.connect(service, normalize),\n });\n}\n","import type * as dateInput from \"@wirekyt/dom/machines/date-input\";\n\nimport {\n DestroyRef,\n Directive,\n ElementRef,\n Renderer2,\n booleanAttribute,\n effect,\n forwardRef,\n inject,\n input,\n model,\n output,\n signal,\n type InputSignal,\n type InputSignalWithTransform,\n type ModelSignal,\n type OutputEmitterRef,\n type Signal,\n} from \"@angular/core\";\nimport { NG_VALUE_ACCESSOR, type ControlValueAccessor } from \"@angular/forms\";\nimport { bindProps, createCvaController } from \"@wirekyt/angular\";\n\nimport type {\n DateInputElementIds,\n DateInputFocusChangeDetails,\n DateInputFormatDateDetails,\n DateInputIntlTranslations,\n DateInputPlaceholderChangeDetails,\n DateInputSelectionMode,\n DateInputSegments,\n DateInputValueChangeDetails,\n DateValue,\n} from \"./types\";\n\nimport { useDateInput, type UseDateInputReturn } from \"./use\";\nimport { DATE_INPUT_CONTEXT } from \"./use-context\";\n\n@Directive({\n selector: \"[dateInputRoot]\",\n standalone: true,\n exportAs: \"dateInputRoot\",\n providers: [\n { provide: DATE_INPUT_CONTEXT, useExisting: forwardRef(() => DateInputRoot) },\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => DateInputRoot), multi: true },\n ],\n})\nexport class DateInputRoot implements ControlValueAccessor, UseDateInputReturn {\n readonly id: InputSignal<string | undefined> = input<string | undefined>(undefined);\n readonly ids: InputSignal<Partial<DateInputElementIds> | undefined> = input<\n Partial<DateInputElementIds> | undefined\n >(undefined);\n readonly value: ModelSignal<DateValue[] | undefined> = model<DateValue[] | undefined>(undefined);\n readonly defaultValue: InputSignal<DateValue[] | undefined> = input<DateValue[] | undefined>(\n undefined,\n );\n readonly placeholderValue: ModelSignal<DateValue | undefined> = model<DateValue | undefined>(\n undefined,\n );\n readonly defaultPlaceholderValue: InputSignal<DateValue | undefined> = input<\n DateValue | undefined\n >(undefined);\n readonly min: InputSignal<DateValue | undefined> = input<DateValue | undefined>(undefined);\n readonly max: InputSignal<DateValue | undefined> = input<DateValue | undefined>(undefined);\n readonly selectionMode: InputSignal<DateInputSelectionMode | undefined> = input<\n DateInputSelectionMode | undefined\n >(undefined);\n readonly granularity: InputSignal<dateInput.Props[\"granularity\"] | undefined> = input<\n dateInput.Props[\"granularity\"] | undefined\n >(undefined);\n readonly hourCycle: InputSignal<dateInput.Props[\"hourCycle\"] | undefined> = input<\n dateInput.Props[\"hourCycle\"] | undefined\n >(undefined);\n readonly hideTimeZone: InputSignalWithTransform<boolean, unknown> = input(false, {\n transform: booleanAttribute,\n });\n readonly locale: InputSignal<string | undefined> = input<string | undefined>(undefined);\n readonly timeZone: InputSignal<string | undefined> = input<string | undefined>(undefined);\n readonly translations: InputSignal<DateInputIntlTranslations | undefined> = input<\n DateInputIntlTranslations | undefined\n >(undefined);\n readonly formatter: InputSignal<dateInput.Props[\"formatter\"] | undefined> = input<\n dateInput.Props[\"formatter\"] | undefined\n >(undefined);\n readonly allSegments: InputSignal<DateInputSegments | undefined> = input<\n DateInputSegments | undefined\n >(undefined);\n readonly format: InputSignal<\n ((date: DateValue, details: DateInputFormatDateDetails) => string) | undefined\n > = input<((date: DateValue, details: DateInputFormatDateDetails) => string) | undefined>(\n undefined,\n );\n readonly createCalendar: InputSignal<dateInput.Props[\"createCalendar\"] | undefined> = input<\n dateInput.Props[\"createCalendar\"] | undefined\n >(undefined);\n readonly isDateUnavailable: InputSignal<dateInput.Props[\"isDateUnavailable\"] | undefined> = input<\n dateInput.Props[\"isDateUnavailable\"] | undefined\n >(undefined);\n readonly shouldForceLeadingZeros: InputSignalWithTransform<boolean, unknown> = input(false, {\n transform: booleanAttribute,\n });\n readonly disabled: InputSignalWithTransform<boolean, unknown> = input(false, {\n transform: booleanAttribute,\n });\n readonly readOnly: InputSignalWithTransform<boolean, unknown> = input(false, {\n transform: booleanAttribute,\n });\n readonly required: InputSignalWithTransform<boolean, unknown> = input(false, {\n transform: booleanAttribute,\n });\n readonly invalid: InputSignalWithTransform<boolean, unknown> = input(false, {\n transform: booleanAttribute,\n });\n readonly name: InputSignal<string | undefined> = input<string | undefined>(undefined);\n readonly form: InputSignal<string | undefined> = input<string | undefined>(undefined);\n\n readonly focusChange: OutputEmitterRef<DateInputFocusChangeDetails> =\n output<DateInputFocusChangeDetails>();\n readonly placeholderChange: OutputEmitterRef<DateInputPlaceholderChangeDetails> =\n output<DateInputPlaceholderChangeDetails>();\n readonly valueDetailsChange: OutputEmitterRef<DateInputValueChangeDetails> =\n output<DateInputValueChangeDetails>();\n\n private readonly disabledFromForm = signal(false);\n private pendingInternalWrites = 0;\n private hasExternalBinding = false;\n private hasReceivedFormWrite = false;\n\n private readonly cva = createCvaController<DateValue[]>({\n value: this.value,\n setDisabled: (disabled) => this.disabledFromForm.set(disabled),\n componentName: \"DateInputRoot\",\n hasExternalModelBinding: () => this.hasExternalBinding,\n });\n\n private readonly machine = useDateInput({\n context: () => ({\n id: this.id(),\n ids: this.ids(),\n value: this.value(),\n defaultValue: this.defaultValue(),\n placeholderValue: this.placeholderValue(),\n defaultPlaceholderValue: this.defaultPlaceholderValue(),\n min: this.min(),\n max: this.max(),\n selectionMode: this.selectionMode(),\n granularity: this.granularity(),\n hourCycle: this.hourCycle(),\n hideTimeZone: this.hideTimeZone() || undefined,\n locale: this.locale(),\n timeZone: this.timeZone(),\n translations: this.translations(),\n formatter: this.formatter(),\n allSegments: this.allSegments(),\n format: this.format(),\n createCalendar: this.createCalendar(),\n isDateUnavailable: this.isDateUnavailable(),\n shouldForceLeadingZeros: this.shouldForceLeadingZeros() || undefined,\n disabled: this.disabled() || this.disabledFromForm() || undefined,\n readOnly: this.readOnly() || undefined,\n required: this.required() || undefined,\n invalid: this.invalid() || undefined,\n name: this.name(),\n form: this.form(),\n onValueChange: (details) => {\n if (!dateValueArraysEqual(this.value(), details.value)) {\n this.pendingInternalWrites++;\n this.value.set([...details.value]);\n }\n this.cva.notifyValueChange(details.value);\n this.cva.markTouched();\n this.valueDetailsChange.emit(details);\n },\n onPlaceholderChange: (details) => {\n if (!dateValuesEqual(this.placeholderValue(), details.placeholderValue)) {\n this.placeholderValue.set(details.placeholderValue);\n }\n this.placeholderChange.emit(details);\n },\n onFocusChange: (details) => {\n if (!details.focused) {\n this.cva.markTouched();\n }\n this.focusChange.emit(details);\n },\n }),\n });\n\n readonly state: Signal<dateInput.Service[\"state\"]> = this.machine.state;\n readonly api: Signal<dateInput.Api> = this.machine.api;\n readonly service: dateInput.Service = this.machine.service;\n readonly send: dateInput.Service[\"send\"] = this.machine.send;\n\n constructor() {\n let firstRun = true;\n effect(() => {\n void this.value();\n if (firstRun) {\n firstRun = false;\n this.pendingInternalWrites = 0;\n return;\n }\n if (this.pendingInternalWrites > 0) {\n this.pendingInternalWrites--;\n return;\n }\n this.hasExternalBinding = true;\n });\n\n bindProps({\n elementRef: inject(ElementRef),\n renderer: inject(Renderer2),\n destroyRef: inject(DestroyRef),\n props: () => this.api().getRootProps(),\n });\n }\n\n writeValue(value: DateValue[] | null): void {\n const next = value === null ? undefined : value;\n const current = this.value();\n if (!this.hasReceivedFormWrite && current !== undefined) {\n this.hasExternalBinding = true;\n }\n this.hasReceivedFormWrite = true;\n if (current !== next) {\n this.pendingInternalWrites++;\n }\n this.cva.writeValue(value);\n }\n\n registerOnChange(fn: (value: DateValue[] | undefined) => void): void {\n this.cva.registerOnChange(fn);\n }\n\n registerOnTouched(fn: () => void): void {\n this.cva.registerOnTouched(fn);\n }\n\n setDisabledState(disabled: boolean): void {\n this.cva.setDisabledState(disabled);\n }\n}\n\nfunction dateValueArraysEqual(a: DateValue[] | undefined, b: DateValue[] | undefined): boolean {\n if (a === b) return true;\n if (!a || !b) return false;\n if (a.length !== b.length) return false;\n for (let i = 0; i < a.length; i++) {\n if (String(a[i]) !== String(b[i])) return false;\n }\n return true;\n}\n\nfunction dateValuesEqual(a: DateValue | undefined, b: DateValue | undefined): boolean {\n if (a === b) return true;\n if (!a || !b) return false;\n return String(a) === String(b);\n}\n","import type * as dateInput from \"@wirekyt/dom/machines/date-input\";\n\nimport {\n DestroyRef,\n Directive,\n ElementRef,\n Renderer2,\n computed,\n forwardRef,\n inject,\n input,\n type InputSignal,\n type Signal,\n} from \"@angular/core\";\nimport { bindProps } from \"@wirekyt/angular\";\n\nimport type { UseDateInputReturn } from \"./use\";\n\nimport { DATE_INPUT_CONTEXT } from \"./use-context\";\n\n@Directive({\n selector: \"[dateInputRootProvider]\",\n standalone: true,\n exportAs: \"dateInputRootProvider\",\n providers: [\n { provide: DATE_INPUT_CONTEXT, useExisting: forwardRef(() => DateInputRootProvider) },\n ],\n})\nexport class DateInputRootProvider implements UseDateInputReturn {\n readonly value: InputSignal<UseDateInputReturn> = input.required<UseDateInputReturn>();\n readonly state: Signal<dateInput.Service[\"state\"]> = computed(() => this.value().state());\n readonly api: Signal<dateInput.Api> = computed(() => this.value().api());\n readonly send: dateInput.Service[\"send\"] = (event) => this.value().send(event);\n\n get service(): dateInput.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 inject,\n input,\n type InputSignal,\n} from \"@angular/core\";\nimport { bindProps } from \"@wirekyt/angular\";\n\nimport { injectDateInputContext } from \"./use-context\";\n\n@Directive({\n selector: \"[dateInputLabel]\",\n standalone: true,\n exportAs: \"dateInputLabel\",\n})\nexport class DateInputLabel {\n readonly index: InputSignal<number | undefined> = input<number | undefined>(undefined);\n\n constructor() {\n const context = injectDateInputContext();\n bindProps({\n elementRef: inject(ElementRef),\n renderer: inject(Renderer2),\n destroyRef: inject(DestroyRef),\n props: () => context.api().getLabelProps({ index: this.index() }),\n });\n }\n}\n","import { DestroyRef, Directive, ElementRef, Renderer2, inject } from \"@angular/core\";\nimport { bindProps } from \"@wirekyt/angular\";\n\nimport { injectDateInputContext } from \"./use-context\";\n\n@Directive({\n selector: \"[dateInputControl]\",\n standalone: true,\n exportAs: \"dateInputControl\",\n})\nexport class DateInputControl {\n constructor() {\n const context = injectDateInputContext();\n bindProps({\n elementRef: inject(ElementRef),\n renderer: inject(Renderer2),\n destroyRef: inject(DestroyRef),\n props: () => context.api().getControlProps(),\n });\n }\n}\n","import {\n DestroyRef,\n Directive,\n ElementRef,\n InjectionToken,\n Renderer2,\n forwardRef,\n inject,\n input,\n type InputSignal,\n} from \"@angular/core\";\nimport { bindProps } from \"@wirekyt/angular\";\n\nimport { injectDateInputContext } from \"./use-context\";\n\nexport interface DateInputSegmentGroupContext {\n index: InputSignal<number | undefined>;\n}\n\nexport const DATE_INPUT_SEGMENT_GROUP_CONTEXT = new InjectionToken<DateInputSegmentGroupContext>(\n \"WIREKYT.DATE_INPUT_SEGMENT_GROUP_CONTEXT\",\n);\n\nexport function injectDateInputSegmentGroupContext(): DateInputSegmentGroupContext {\n return inject(DATE_INPUT_SEGMENT_GROUP_CONTEXT);\n}\n\n@Directive({\n selector: \"[dateInputSegmentGroup]\",\n standalone: true,\n exportAs: \"dateInputSegmentGroup\",\n providers: [\n {\n provide: DATE_INPUT_SEGMENT_GROUP_CONTEXT,\n useExisting: forwardRef(() => DateInputSegmentGroup),\n },\n ],\n})\nexport class DateInputSegmentGroup implements DateInputSegmentGroupContext {\n /** The range index for this segment group. */\n readonly index: InputSignal<number | undefined> = input<number | undefined>(undefined);\n\n constructor() {\n const context = injectDateInputContext();\n bindProps({\n elementRef: inject(ElementRef),\n renderer: inject(Renderer2),\n destroyRef: inject(DestroyRef),\n props: () => context.api().getSegmentGroupProps({ index: this.index() }),\n });\n }\n}\n","import {\n DestroyRef,\n Directive,\n ElementRef,\n Renderer2,\n effect,\n inject,\n input,\n signal,\n type AfterContentInit,\n type InputSignal,\n} from \"@angular/core\";\nimport { bindProps } from \"@wirekyt/angular\";\n\nimport type { DateInputDateSegment } from \"./types\";\n\nimport { injectDateInputSegmentGroupContext } from \"./segment-group\";\nimport { injectDateInputContext } from \"./use-context\";\n\n@Directive({\n selector: \"[dateInputSegment]\",\n standalone: true,\n exportAs: \"dateInputSegment\",\n})\nexport class DateInputSegment implements AfterContentInit {\n readonly segment: InputSignal<DateInputDateSegment> = input.required<DateInputDateSegment>();\n\n private readonly ownsTextContent = signal(false);\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n constructor() {\n const context = injectDateInputContext();\n const segmentGroup = injectDateInputSegmentGroupContext();\n const renderer = inject(Renderer2);\n\n bindProps({\n elementRef: this.elementRef,\n renderer,\n destroyRef: inject(DestroyRef),\n props: () =>\n context.api().getSegmentProps({ segment: this.segment(), index: segmentGroup.index() }),\n });\n\n effect(() => {\n if (!this.ownsTextContent()) return;\n renderer.setProperty(this.elementRef.nativeElement, \"textContent\", this.segment().text);\n });\n }\n\n ngAfterContentInit(): void {\n this.ownsTextContent.set(this.elementRef.nativeElement.childNodes.length === 0);\n }\n}\n","import {\n DestroyRef,\n Directive,\n ElementRef,\n Renderer2,\n inject,\n input,\n type InputSignal,\n} from \"@angular/core\";\nimport { bindProps } from \"@wirekyt/angular\";\nimport { injectFieldContextOptional } from \"@wirekyt/angular/field\";\n\nimport { injectDateInputContext } from \"./use-context\";\n\n@Directive({\n selector: \"input[dateInputHiddenInput]\",\n standalone: true,\n exportAs: \"dateInputHiddenInput\",\n})\nexport class DateInputHiddenInput {\n readonly index: InputSignal<number | undefined> = input<number | undefined>(undefined);\n readonly name: InputSignal<string | undefined> = input<string | undefined>(undefined);\n\n constructor() {\n const context = injectDateInputContext();\n const field = injectFieldContextOptional();\n bindProps({\n elementRef: inject(ElementRef),\n renderer: inject(Renderer2),\n destroyRef: inject(DestroyRef),\n props: () => ({\n \"aria-describedby\": field?.ariaDescribedby(),\n ...context.api().getHiddenInputProps({ index: this.index(), name: this.name() }),\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 { UseDateInputReturn } from \"./use\";\n\nimport { injectDateInputContext } from \"./use-context\";\n\nexport interface DateInputContextTemplate {\n $implicit: UseDateInputReturn[\"api\"];\n api: UseDateInputReturn[\"api\"];\n}\n\n@Directive({\n selector: \"[dateInputContext]\",\n standalone: true,\n exportAs: \"dateInputContext\",\n})\nexport class DateInputContext {\n static ngTemplateContextGuard(\n _directive: DateInputContext,\n context: unknown,\n ): context is DateInputContextTemplate {\n void context;\n return true;\n }\n\n private readonly dateInput = injectDateInputContext();\n private readonly templateRef = inject<TemplateRef<DateInputContextTemplate>>(TemplateRef);\n private readonly viewContainer = inject(ViewContainerRef);\n\n constructor() {\n const view = this.viewContainer.createEmbeddedView(this.templateRef, {\n $implicit: this.dateInput.api,\n api: this.dateInput.api,\n });\n\n effect(() => {\n this.dateInput.api();\n view.detectChanges();\n });\n\n inject(DestroyRef).onDestroy(() => view.destroy());\n }\n}\n","import {\n Directive,\n TemplateRef,\n ViewContainerRef,\n effect,\n inject,\n type EmbeddedViewRef,\n} from \"@angular/core\";\n\nimport type { DateInputDateSegment } from \"./types\";\n\nimport { injectDateInputSegmentGroupContext } from \"./segment-group\";\nimport { injectDateInputContext } from \"./use-context\";\n\nexport interface DateInputSegmentContextTemplate {\n $implicit: DateInputDateSegment;\n segment: DateInputDateSegment;\n index: number;\n}\n\n@Directive({\n selector: \"[dateInputSegmentContext]\",\n standalone: true,\n exportAs: \"dateInputSegmentContext\",\n})\nexport class DateInputSegmentContext {\n static ngTemplateContextGuard(\n _directive: DateInputSegmentContext,\n context: unknown,\n ): context is DateInputSegmentContextTemplate {\n void context;\n return true;\n }\n\n private readonly dateInput = injectDateInputContext();\n private readonly segmentGroup = injectDateInputSegmentGroupContext();\n private readonly templateRef = inject<TemplateRef<DateInputSegmentContextTemplate>>(TemplateRef);\n private readonly viewContainer = inject(ViewContainerRef);\n private readonly views: Array<{\n key: string;\n view: EmbeddedViewRef<DateInputSegmentContextTemplate>;\n }> = [];\n\n constructor() {\n effect(() => {\n const segments = this.dateInput.api().getSegments({ index: this.segmentGroup.index() });\n this.syncSegmentViews(segments);\n });\n }\n\n private syncSegmentViews(segments: DateInputDateSegment[]): void {\n const nextViews: typeof this.views = [];\n\n segments.forEach((segment, index) => {\n const key = `${index}:${segment.type}`;\n const existingIndex = this.views.findIndex((entry) => entry.key === key);\n const entry =\n existingIndex >= 0\n ? this.views.splice(existingIndex, 1)[0]\n : {\n key,\n view: this.viewContainer.createEmbeddedView(this.templateRef, {\n $implicit: segment,\n segment,\n index,\n }),\n };\n\n entry.view.context.$implicit = segment;\n entry.view.context.segment = segment;\n entry.view.context.index = index;\n nextViews.push(entry);\n\n const currentIndex = this.viewContainer.indexOf(entry.view);\n if (currentIndex !== index) {\n this.viewContainer.move(entry.view, index);\n }\n entry.view.detectChanges();\n });\n\n for (const entry of this.views) {\n entry.view.destroy();\n }\n this.views.length = 0;\n this.views.push(...nextViews);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}