@wirekyt/angular 0.0.25 → 0.0.28

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.
Files changed (30) hide show
  1. package/dist/fesm2022/wirekyt-angular-date-input.mjs +0 -1
  2. package/dist/fesm2022/wirekyt-angular-date-input.mjs.map +1 -1
  3. package/dist/fesm2022/wirekyt-angular-drawer.mjs +0 -2
  4. package/dist/fesm2022/wirekyt-angular-drawer.mjs.map +1 -1
  5. package/dist/fesm2022/wirekyt-angular-editable.mjs +499 -0
  6. package/dist/fesm2022/wirekyt-angular-editable.mjs.map +1 -0
  7. package/dist/fesm2022/wirekyt-angular-file-upload.mjs +604 -0
  8. package/dist/fesm2022/wirekyt-angular-file-upload.mjs.map +1 -0
  9. package/dist/fesm2022/wirekyt-angular-floating-panel.mjs +0 -36
  10. package/dist/fesm2022/wirekyt-angular-floating-panel.mjs.map +1 -1
  11. package/dist/fesm2022/wirekyt-angular-hover-card.mjs +430 -0
  12. package/dist/fesm2022/wirekyt-angular-hover-card.mjs.map +1 -0
  13. package/dist/package.json +13 -1
  14. package/dist/types/wirekyt-angular-checkbox.d.ts +1 -1
  15. package/dist/types/wirekyt-angular-color-picker.d.ts +1 -1
  16. package/dist/types/wirekyt-angular-combobox.d.ts +1 -1
  17. package/dist/types/wirekyt-angular-date-input.d.ts +0 -1
  18. package/dist/types/wirekyt-angular-date-input.d.ts.map +1 -1
  19. package/dist/types/wirekyt-angular-date-picker.d.ts +1 -1
  20. package/dist/types/wirekyt-angular-drawer.d.ts +0 -2
  21. package/dist/types/wirekyt-angular-drawer.d.ts.map +1 -1
  22. package/dist/types/wirekyt-angular-editable.d.ts +153 -0
  23. package/dist/types/wirekyt-angular-editable.d.ts.map +1 -0
  24. package/dist/types/wirekyt-angular-file-upload.d.ts +182 -0
  25. package/dist/types/wirekyt-angular-file-upload.d.ts.map +1 -0
  26. package/dist/types/wirekyt-angular-floating-panel.d.ts +0 -36
  27. package/dist/types/wirekyt-angular-floating-panel.d.ts.map +1 -1
  28. package/dist/types/wirekyt-angular-hover-card.d.ts +122 -0
  29. package/dist/types/wirekyt-angular-hover-card.d.ts.map +1 -0
  30. package/package.json +14 -2
@@ -0,0 +1,499 @@
1
+ import * as editable from '@wirekyt/dom/machines/editable';
2
+ export { anatomy as editableAnatomy } from '@wirekyt/dom/machines/editable';
3
+ import * as i0 from '@angular/core';
4
+ import { InjectionToken, inject, input, model, booleanAttribute, output, signal, effect, DestroyRef, Renderer2, ElementRef, forwardRef, Directive, 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 EDITABLE_CONTEXT = new InjectionToken("WIREKYT.EDITABLE_CONTEXT");
10
+ function injectEditableContext() {
11
+ return inject(EDITABLE_CONTEXT);
12
+ }
13
+
14
+ function useEditable(options = { context: () => ({}) }) {
15
+ const locale = injectLocale();
16
+ const environment = injectEnvironment();
17
+ const field = injectFieldContextOptional();
18
+ const fallbackId = createId();
19
+ return useMachine({
20
+ machine: editable.machine,
21
+ context: () => {
22
+ const props = options.context();
23
+ const merged = {
24
+ dir: locale.dir,
25
+ getRootNode: environment.getRootNode,
26
+ ...props,
27
+ id: props.id ?? fallbackId,
28
+ };
29
+ if (field) {
30
+ const fieldIds = field.ids;
31
+ merged["ids"] = {
32
+ label: fieldIds.label,
33
+ input: fieldIds.control,
34
+ ...props.ids,
35
+ };
36
+ merged["disabled"] = Boolean(props.disabled) || field.disabled() || undefined;
37
+ merged["invalid"] = Boolean(props.invalid) || field.invalid() || undefined;
38
+ merged["readOnly"] = Boolean(props.readOnly) || field.readOnly() || undefined;
39
+ merged["required"] = Boolean(props.required) || field.required() || undefined;
40
+ }
41
+ return merged;
42
+ },
43
+ connect: (service, normalize) => editable.connect(service, normalize),
44
+ });
45
+ }
46
+
47
+ class EditableRoot {
48
+ id = input(undefined, /* @ts-ignore */
49
+ ...(ngDevMode ? [{ debugName: "id" }] : /* istanbul ignore next */ []));
50
+ elementIds = input(undefined, { ...(ngDevMode ? { debugName: "elementIds" } : /* istanbul ignore next */ {}), alias: "ids" });
51
+ value = model(undefined, /* @ts-ignore */
52
+ ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
53
+ defaultValue = input(undefined, /* @ts-ignore */
54
+ ...(ngDevMode ? [{ debugName: "defaultValue" }] : /* istanbul ignore next */ []));
55
+ edit = model(undefined, /* @ts-ignore */
56
+ ...(ngDevMode ? [{ debugName: "edit" }] : /* istanbul ignore next */ []));
57
+ defaultEdit = input(false, { ...(ngDevMode ? { debugName: "defaultEdit" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
58
+ disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
59
+ readOnly = input(false, { ...(ngDevMode ? { debugName: "readOnly" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
60
+ invalid = input(false, { ...(ngDevMode ? { debugName: "invalid" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
61
+ required = input(false, { ...(ngDevMode ? { debugName: "required" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
62
+ placeholder = input(undefined, /* @ts-ignore */
63
+ ...(ngDevMode ? [{ debugName: "placeholder" }] : /* istanbul ignore next */ []));
64
+ name = input(undefined, /* @ts-ignore */
65
+ ...(ngDevMode ? [{ debugName: "name" }] : /* istanbul ignore next */ []));
66
+ form = input(undefined, /* @ts-ignore */
67
+ ...(ngDevMode ? [{ debugName: "form" }] : /* istanbul ignore next */ []));
68
+ maxLength = input(undefined, /* @ts-ignore */
69
+ ...(ngDevMode ? [{ debugName: "maxLength" }] : /* istanbul ignore next */ []));
70
+ activationMode = input(undefined, /* @ts-ignore */
71
+ ...(ngDevMode ? [{ debugName: "activationMode" }] : /* istanbul ignore next */ []));
72
+ submitMode = input(undefined, /* @ts-ignore */
73
+ ...(ngDevMode ? [{ debugName: "submitMode" }] : /* istanbul ignore next */ []));
74
+ autoResize = input(false, { ...(ngDevMode ? { debugName: "autoResize" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
75
+ selectOnFocus = input(true, { ...(ngDevMode ? { debugName: "selectOnFocus" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
76
+ translations = input(undefined, /* @ts-ignore */
77
+ ...(ngDevMode ? [{ debugName: "translations" }] : /* istanbul ignore next */ []));
78
+ finalFocusEl = input(undefined, /* @ts-ignore */
79
+ ...(ngDevMode ? [{ debugName: "finalFocusEl" }] : /* istanbul ignore next */ []));
80
+ editDetailsChange = output();
81
+ valueDetailsChange = output();
82
+ valueCommit = output();
83
+ valueRevert = output();
84
+ focusOutside = output();
85
+ pointerDownOutside = output();
86
+ interactOutside = output();
87
+ _disabledFromForm = signal(false, /* @ts-ignore */
88
+ ...(ngDevMode ? [{ debugName: "_disabledFromForm" }] : /* istanbul ignore next */ []));
89
+ _pendingInternalWrites = 0;
90
+ _hasExternalBinding = false;
91
+ _hasReceivedFormWrite = false;
92
+ cva = createCvaController({
93
+ value: this.value,
94
+ setDisabled: (disabled) => this._disabledFromForm.set(disabled),
95
+ componentName: "EditableRoot",
96
+ hasExternalModelBinding: () => this._hasExternalBinding,
97
+ });
98
+ machine = useEditable({
99
+ context: () => ({
100
+ id: this.id(),
101
+ ids: this.elementIds(),
102
+ value: this.value(),
103
+ defaultValue: this.defaultValue(),
104
+ edit: this.edit(),
105
+ defaultEdit: this.defaultEdit(),
106
+ disabled: this.disabled() || this._disabledFromForm(),
107
+ readOnly: this.readOnly(),
108
+ invalid: this.invalid(),
109
+ required: this.required(),
110
+ placeholder: this.placeholder(),
111
+ name: this.name(),
112
+ form: this.form(),
113
+ maxLength: this.maxLength(),
114
+ activationMode: this.activationMode(),
115
+ submitMode: this.submitMode(),
116
+ autoResize: this.autoResize(),
117
+ selectOnFocus: this.selectOnFocus(),
118
+ translations: this.translations(),
119
+ finalFocusEl: this.finalFocusEl(),
120
+ onValueChange: (details) => {
121
+ if (this.value() !== details.value) {
122
+ this._pendingInternalWrites++;
123
+ this.value.set(details.value);
124
+ }
125
+ this.cva.notifyValueChange(details.value);
126
+ this.valueDetailsChange.emit(details);
127
+ },
128
+ onValueCommit: (details) => {
129
+ this.valueCommit.emit(details);
130
+ this.cva.markTouched();
131
+ },
132
+ onValueRevert: (details) => {
133
+ this.valueRevert.emit(details);
134
+ },
135
+ onEditChange: (details) => {
136
+ this.edit.set(details.edit);
137
+ this.editDetailsChange.emit(details);
138
+ if (!details.edit) {
139
+ this.cva.markTouched();
140
+ }
141
+ },
142
+ onFocusOutside: (event) => this.focusOutside.emit(event),
143
+ onPointerDownOutside: (event) => this.pointerDownOutside.emit(event),
144
+ onInteractOutside: (event) => this.interactOutside.emit(event),
145
+ }),
146
+ });
147
+ state = this.machine.state;
148
+ api = this.machine.api;
149
+ service = this.machine.service;
150
+ send = this.machine.send;
151
+ constructor() {
152
+ let firstRun = true;
153
+ effect(() => {
154
+ void this.value();
155
+ if (firstRun) {
156
+ firstRun = false;
157
+ this._pendingInternalWrites = 0;
158
+ return;
159
+ }
160
+ if (this._pendingInternalWrites > 0) {
161
+ this._pendingInternalWrites--;
162
+ return;
163
+ }
164
+ this._hasExternalBinding = true;
165
+ });
166
+ bindProps({
167
+ elementRef: inject(ElementRef),
168
+ renderer: inject(Renderer2),
169
+ destroyRef: inject(DestroyRef),
170
+ props: () => this.api().getRootProps(),
171
+ });
172
+ }
173
+ writeValue(value) {
174
+ const next = value === null ? undefined : value;
175
+ const current = this.value();
176
+ if (!this._hasReceivedFormWrite && current !== undefined) {
177
+ this._hasExternalBinding = true;
178
+ }
179
+ this._hasReceivedFormWrite = true;
180
+ if (current !== next) {
181
+ this._pendingInternalWrites++;
182
+ }
183
+ this.cva.writeValue(value);
184
+ }
185
+ registerOnChange(fn) {
186
+ this.cva.registerOnChange(fn);
187
+ }
188
+ registerOnTouched(fn) {
189
+ this.cva.registerOnTouched(fn);
190
+ }
191
+ setDisabledState(disabled) {
192
+ this.cva.setDisabledState(disabled);
193
+ }
194
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: EditableRoot, deps: [], target: i0.ɵɵFactoryTarget.Directive });
195
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.3", type: EditableRoot, isStandalone: true, selector: "[editable-root]", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, elementIds: { classPropertyName: "elementIds", 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 }, edit: { classPropertyName: "edit", publicName: "edit", isSignal: true, isRequired: false, transformFunction: null }, defaultEdit: { classPropertyName: "defaultEdit", publicName: "defaultEdit", 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 }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", 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 }, maxLength: { classPropertyName: "maxLength", publicName: "maxLength", isSignal: true, isRequired: false, transformFunction: null }, activationMode: { classPropertyName: "activationMode", publicName: "activationMode", isSignal: true, isRequired: false, transformFunction: null }, submitMode: { classPropertyName: "submitMode", publicName: "submitMode", isSignal: true, isRequired: false, transformFunction: null }, autoResize: { classPropertyName: "autoResize", publicName: "autoResize", isSignal: true, isRequired: false, transformFunction: null }, selectOnFocus: { classPropertyName: "selectOnFocus", publicName: "selectOnFocus", isSignal: true, isRequired: false, transformFunction: null }, translations: { classPropertyName: "translations", publicName: "translations", isSignal: true, isRequired: false, transformFunction: null }, finalFocusEl: { classPropertyName: "finalFocusEl", publicName: "finalFocusEl", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", edit: "editChange", editDetailsChange: "editDetailsChange", valueDetailsChange: "valueDetailsChange", valueCommit: "valueCommit", valueRevert: "valueRevert", focusOutside: "focusOutside", pointerDownOutside: "pointerDownOutside", interactOutside: "interactOutside" }, providers: [
196
+ { provide: EDITABLE_CONTEXT, useExisting: forwardRef(() => EditableRoot) },
197
+ { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => EditableRoot), multi: true },
198
+ ], exportAs: ["editableRoot"], ngImport: i0 });
199
+ }
200
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: EditableRoot, decorators: [{
201
+ type: Directive,
202
+ args: [{
203
+ selector: "[editable-root]",
204
+ standalone: true,
205
+ exportAs: "editableRoot",
206
+ providers: [
207
+ { provide: EDITABLE_CONTEXT, useExisting: forwardRef(() => EditableRoot) },
208
+ { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => EditableRoot), multi: true },
209
+ ],
210
+ }]
211
+ }], ctorParameters: () => [], propDecorators: { id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: false }] }], elementIds: [{ 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 }] }], edit: [{ type: i0.Input, args: [{ isSignal: true, alias: "edit", required: false }] }, { type: i0.Output, args: ["editChange"] }], defaultEdit: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultEdit", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], readOnly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readOnly", required: false }] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }], form: [{ type: i0.Input, args: [{ isSignal: true, alias: "form", required: false }] }], maxLength: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxLength", required: false }] }], activationMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "activationMode", required: false }] }], submitMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "submitMode", required: false }] }], autoResize: [{ type: i0.Input, args: [{ isSignal: true, alias: "autoResize", required: false }] }], selectOnFocus: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectOnFocus", required: false }] }], translations: [{ type: i0.Input, args: [{ isSignal: true, alias: "translations", required: false }] }], finalFocusEl: [{ type: i0.Input, args: [{ isSignal: true, alias: "finalFocusEl", required: false }] }], editDetailsChange: [{ type: i0.Output, args: ["editDetailsChange"] }], valueDetailsChange: [{ type: i0.Output, args: ["valueDetailsChange"] }], valueCommit: [{ type: i0.Output, args: ["valueCommit"] }], valueRevert: [{ type: i0.Output, args: ["valueRevert"] }], focusOutside: [{ type: i0.Output, args: ["focusOutside"] }], pointerDownOutside: [{ type: i0.Output, args: ["pointerDownOutside"] }], interactOutside: [{ type: i0.Output, args: ["interactOutside"] }] } });
212
+
213
+ class EditableRootProvider {
214
+ value = input.required(/* @ts-ignore */
215
+ ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
216
+ get state() {
217
+ return this.value().state;
218
+ }
219
+ get api() {
220
+ return this.value().api;
221
+ }
222
+ get service() {
223
+ return this.value().service;
224
+ }
225
+ get send() {
226
+ return this.value().send;
227
+ }
228
+ constructor() {
229
+ bindProps({
230
+ elementRef: inject(ElementRef),
231
+ renderer: inject(Renderer2),
232
+ destroyRef: inject(DestroyRef),
233
+ props: () => this.value().api().getRootProps(),
234
+ });
235
+ }
236
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: EditableRootProvider, deps: [], target: i0.ɵɵFactoryTarget.Directive });
237
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.3", type: EditableRootProvider, isStandalone: true, selector: "[editable-root-provider]", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null } }, providers: [{ provide: EDITABLE_CONTEXT, useExisting: forwardRef(() => EditableRootProvider) }], exportAs: ["editableRootProvider"], ngImport: i0 });
238
+ }
239
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: EditableRootProvider, decorators: [{
240
+ type: Directive,
241
+ args: [{
242
+ selector: "[editable-root-provider]",
243
+ standalone: true,
244
+ exportAs: "editableRootProvider",
245
+ providers: [{ provide: EDITABLE_CONTEXT, useExisting: forwardRef(() => EditableRootProvider) }],
246
+ }]
247
+ }], ctorParameters: () => [], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: true }] }] } });
248
+
249
+ class EditableArea {
250
+ constructor() {
251
+ const context = injectEditableContext();
252
+ bindProps({
253
+ elementRef: inject(ElementRef),
254
+ renderer: inject(Renderer2),
255
+ destroyRef: inject(DestroyRef),
256
+ props: () => context.api().getAreaProps(),
257
+ });
258
+ }
259
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: EditableArea, deps: [], target: i0.ɵɵFactoryTarget.Directive });
260
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.3", type: EditableArea, isStandalone: true, selector: "[editable-area]", exportAs: ["editableArea"], ngImport: i0 });
261
+ }
262
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: EditableArea, decorators: [{
263
+ type: Directive,
264
+ args: [{
265
+ selector: "[editable-area]",
266
+ standalone: true,
267
+ exportAs: "editableArea",
268
+ }]
269
+ }], ctorParameters: () => [] });
270
+
271
+ class EditableInput {
272
+ constructor() {
273
+ const context = injectEditableContext();
274
+ const field = injectFieldContextOptional();
275
+ const elementRef = inject(ElementRef);
276
+ const renderer = inject(Renderer2);
277
+ const destroyRef = inject(DestroyRef);
278
+ bindProps({
279
+ elementRef,
280
+ renderer,
281
+ destroyRef,
282
+ props: () => {
283
+ const props = context.api().getInputProps();
284
+ const { defaultValue: _defaultValue, ...rest } = props;
285
+ const describedBy = field?.ariaDescribedby();
286
+ if (describedBy) {
287
+ rest["aria-describedby"] = describedBy;
288
+ }
289
+ return rest;
290
+ },
291
+ });
292
+ }
293
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: EditableInput, deps: [], target: i0.ɵɵFactoryTarget.Directive });
294
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.3", type: EditableInput, isStandalone: true, selector: "[editable-input]", exportAs: ["editableInput"], ngImport: i0 });
295
+ }
296
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: EditableInput, decorators: [{
297
+ type: Directive,
298
+ args: [{
299
+ selector: "[editable-input]",
300
+ standalone: true,
301
+ exportAs: "editableInput",
302
+ }]
303
+ }], ctorParameters: () => [] });
304
+
305
+ class EditablePreview {
306
+ ownsTextContent = signal(false, /* @ts-ignore */
307
+ ...(ngDevMode ? [{ debugName: "ownsTextContent" }] : /* istanbul ignore next */ []));
308
+ elementRef = inject(ElementRef);
309
+ constructor() {
310
+ const context = injectEditableContext();
311
+ const elementRef = this.elementRef;
312
+ const renderer = inject(Renderer2);
313
+ const destroyRef = inject(DestroyRef);
314
+ bindProps({
315
+ elementRef,
316
+ renderer,
317
+ destroyRef,
318
+ props: () => {
319
+ const props = context.api().getPreviewProps();
320
+ const { children: _children, onDoubleClick, ...rest } = props;
321
+ if (typeof onDoubleClick === "function") {
322
+ const remapped = rest;
323
+ remapped.onDblClick = onDoubleClick;
324
+ }
325
+ return rest;
326
+ },
327
+ });
328
+ effect(() => {
329
+ if (!this.ownsTextContent())
330
+ return;
331
+ const el = elementRef.nativeElement;
332
+ if (!el)
333
+ return;
334
+ const text = context.api().valueText;
335
+ renderer.setProperty(el, "textContent", text);
336
+ });
337
+ }
338
+ ngAfterContentInit() {
339
+ this.ownsTextContent.set(this.elementRef.nativeElement.childNodes.length === 0);
340
+ }
341
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: EditablePreview, deps: [], target: i0.ɵɵFactoryTarget.Directive });
342
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.3", type: EditablePreview, isStandalone: true, selector: "[editable-preview]", exportAs: ["editablePreview"], ngImport: i0 });
343
+ }
344
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: EditablePreview, decorators: [{
345
+ type: Directive,
346
+ args: [{
347
+ selector: "[editable-preview]",
348
+ standalone: true,
349
+ exportAs: "editablePreview",
350
+ }]
351
+ }], ctorParameters: () => [] });
352
+
353
+ class EditableLabel {
354
+ constructor() {
355
+ const context = injectEditableContext();
356
+ bindProps({
357
+ elementRef: inject(ElementRef),
358
+ renderer: inject(Renderer2),
359
+ destroyRef: inject(DestroyRef),
360
+ props: () => context.api().getLabelProps(),
361
+ });
362
+ }
363
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: EditableLabel, deps: [], target: i0.ɵɵFactoryTarget.Directive });
364
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.3", type: EditableLabel, isStandalone: true, selector: "[editable-label]", exportAs: ["editableLabel"], ngImport: i0 });
365
+ }
366
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: EditableLabel, decorators: [{
367
+ type: Directive,
368
+ args: [{
369
+ selector: "[editable-label]",
370
+ standalone: true,
371
+ exportAs: "editableLabel",
372
+ }]
373
+ }], ctorParameters: () => [] });
374
+
375
+ class EditableControl {
376
+ constructor() {
377
+ const context = injectEditableContext();
378
+ bindProps({
379
+ elementRef: inject(ElementRef),
380
+ renderer: inject(Renderer2),
381
+ destroyRef: inject(DestroyRef),
382
+ props: () => context.api().getControlProps(),
383
+ });
384
+ }
385
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: EditableControl, deps: [], target: i0.ɵɵFactoryTarget.Directive });
386
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.3", type: EditableControl, isStandalone: true, selector: "[editable-control]", exportAs: ["editableControl"], ngImport: i0 });
387
+ }
388
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: EditableControl, decorators: [{
389
+ type: Directive,
390
+ args: [{
391
+ selector: "[editable-control]",
392
+ standalone: true,
393
+ exportAs: "editableControl",
394
+ }]
395
+ }], ctorParameters: () => [] });
396
+
397
+ class EditableEditTrigger {
398
+ constructor() {
399
+ const context = injectEditableContext();
400
+ bindProps({
401
+ elementRef: inject(ElementRef),
402
+ renderer: inject(Renderer2),
403
+ destroyRef: inject(DestroyRef),
404
+ props: () => context.api().getEditTriggerProps(),
405
+ });
406
+ }
407
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: EditableEditTrigger, deps: [], target: i0.ɵɵFactoryTarget.Directive });
408
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.3", type: EditableEditTrigger, isStandalone: true, selector: "[editable-edit-trigger]", exportAs: ["editableEditTrigger"], ngImport: i0 });
409
+ }
410
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: EditableEditTrigger, decorators: [{
411
+ type: Directive,
412
+ args: [{
413
+ selector: "[editable-edit-trigger]",
414
+ standalone: true,
415
+ exportAs: "editableEditTrigger",
416
+ }]
417
+ }], ctorParameters: () => [] });
418
+
419
+ class EditableSubmitTrigger {
420
+ constructor() {
421
+ const context = injectEditableContext();
422
+ bindProps({
423
+ elementRef: inject(ElementRef),
424
+ renderer: inject(Renderer2),
425
+ destroyRef: inject(DestroyRef),
426
+ props: () => context.api().getSubmitTriggerProps(),
427
+ });
428
+ }
429
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: EditableSubmitTrigger, deps: [], target: i0.ɵɵFactoryTarget.Directive });
430
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.3", type: EditableSubmitTrigger, isStandalone: true, selector: "[editable-submit-trigger]", exportAs: ["editableSubmitTrigger"], ngImport: i0 });
431
+ }
432
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: EditableSubmitTrigger, decorators: [{
433
+ type: Directive,
434
+ args: [{
435
+ selector: "[editable-submit-trigger]",
436
+ standalone: true,
437
+ exportAs: "editableSubmitTrigger",
438
+ }]
439
+ }], ctorParameters: () => [] });
440
+
441
+ class EditableCancelTrigger {
442
+ constructor() {
443
+ const context = injectEditableContext();
444
+ bindProps({
445
+ elementRef: inject(ElementRef),
446
+ renderer: inject(Renderer2),
447
+ destroyRef: inject(DestroyRef),
448
+ props: () => context.api().getCancelTriggerProps(),
449
+ });
450
+ }
451
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: EditableCancelTrigger, deps: [], target: i0.ɵɵFactoryTarget.Directive });
452
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.3", type: EditableCancelTrigger, isStandalone: true, selector: "[editable-cancel-trigger]", exportAs: ["editableCancelTrigger"], ngImport: i0 });
453
+ }
454
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: EditableCancelTrigger, decorators: [{
455
+ type: Directive,
456
+ args: [{
457
+ selector: "[editable-cancel-trigger]",
458
+ standalone: true,
459
+ exportAs: "editableCancelTrigger",
460
+ }]
461
+ }], ctorParameters: () => [] });
462
+
463
+ class EditableContext {
464
+ static ngTemplateContextGuard(_directive, context) {
465
+ void context;
466
+ return true;
467
+ }
468
+ editable = injectEditableContext();
469
+ templateRef = inject(TemplateRef);
470
+ viewContainer = inject(ViewContainerRef);
471
+ constructor() {
472
+ const view = this.viewContainer.createEmbeddedView(this.templateRef, {
473
+ $implicit: this.editable.api,
474
+ api: this.editable.api,
475
+ });
476
+ effect(() => {
477
+ this.editable.api();
478
+ view.detectChanges();
479
+ });
480
+ inject(DestroyRef).onDestroy(() => view.destroy());
481
+ }
482
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: EditableContext, deps: [], target: i0.ɵɵFactoryTarget.Directive });
483
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.3", type: EditableContext, isStandalone: true, selector: "[editable-context]", exportAs: ["editableContext"], ngImport: i0 });
484
+ }
485
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: EditableContext, decorators: [{
486
+ type: Directive,
487
+ args: [{
488
+ selector: "[editable-context]",
489
+ standalone: true,
490
+ exportAs: "editableContext",
491
+ }]
492
+ }], ctorParameters: () => [] });
493
+
494
+ /**
495
+ * Generated bundle index. Do not edit.
496
+ */
497
+
498
+ export { EDITABLE_CONTEXT, EditableArea, EditableCancelTrigger, EditableContext, EditableControl, EditableEditTrigger, EditableInput, EditableLabel, EditablePreview, EditableRoot, EditableRootProvider, EditableSubmitTrigger, injectEditableContext, useEditable };
499
+ //# sourceMappingURL=wirekyt-angular-editable.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wirekyt-angular-editable.mjs","sources":["../../src/components/editable/use-context.ts","../../src/components/editable/use.ts","../../src/components/editable/root.ts","../../src/components/editable/root-provider.ts","../../src/components/editable/area.ts","../../src/components/editable/input.ts","../../src/components/editable/preview.ts","../../src/components/editable/label.ts","../../src/components/editable/control.ts","../../src/components/editable/edit-trigger.ts","../../src/components/editable/submit-trigger.ts","../../src/components/editable/cancel-trigger.ts","../../src/components/editable/context.ts","../../src/components/editable/wirekyt-angular-editable.ts"],"sourcesContent":["import { InjectionToken, inject } from \"@angular/core\";\n\nimport type { UseEditableReturn } from \"./use\";\n\nexport const EDITABLE_CONTEXT = new InjectionToken<UseEditableReturn>(\"WIREKYT.EDITABLE_CONTEXT\");\n\nexport function injectEditableContext(): UseEditableReturn {\n return inject(EDITABLE_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 editable from \"@wirekyt/dom/machines/editable\";\n\nimport type { EditableMachineProps } from \"./types\";\n\ntype OptionalId<T extends { id: string }> = Omit<T, \"id\"> & { id?: string };\n\nexport interface UseEditableProps extends OptionalId<\n Omit<EditableMachineProps, \"dir\" | \"getRootNode\">\n> {}\n\nexport type UseEditableReturn = UseMachineReturn<\n editable.Service[\"state\"],\n editable.Api,\n editable.Service\n>;\n\nexport interface UseEditableOptions {\n context: () => UseEditableProps;\n}\n\ntype EditableContext = Record<string, unknown>;\ntype EditableSchema = editable.Machine extends Machine<infer TSchema> ? TSchema : never;\n\nexport function useEditable(\n options: UseEditableOptions = { context: () => ({}) },\n): UseEditableReturn {\n const locale = injectLocale();\n const environment = injectEnvironment();\n const field = injectFieldContextOptional();\n const fallbackId = createId();\n\n return useMachine<EditableSchema, editable.Api>({\n machine: editable.machine,\n context: () => {\n const props = options.context();\n const merged: Record<string, unknown> = {\n dir: locale.dir,\n getRootNode: environment.getRootNode,\n ...props,\n id: props.id ?? fallbackId,\n };\n if (field) {\n const fieldIds = field.ids;\n merged[\"ids\"] = {\n label: fieldIds.label,\n input: fieldIds.control,\n ...props.ids,\n };\n merged[\"disabled\"] = Boolean(props.disabled) || field.disabled() || undefined;\n merged[\"invalid\"] = Boolean(props.invalid) || field.invalid() || undefined;\n merged[\"readOnly\"] = Boolean(props.readOnly) || field.readOnly() || undefined;\n merged[\"required\"] = Boolean(props.required) || field.required() || undefined;\n }\n return merged as EditableContext;\n },\n connect: (service, normalize) => editable.connect(service, normalize),\n });\n}\n","import type * as editable from \"@wirekyt/dom/machines/editable\";\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 EditableEditChangeDetails,\n EditableElementIds,\n EditableFocusOutsideEvent,\n EditableInteractOutsideEvent,\n EditablePointerDownOutsideEvent,\n EditableValueChangeDetails,\n} from \"./types\";\n\nimport { useEditable, type UseEditableReturn } from \"./use\";\nimport { EDITABLE_CONTEXT } from \"./use-context\";\n\n@Directive({\n selector: \"[editable-root]\",\n standalone: true,\n exportAs: \"editableRoot\",\n providers: [\n { provide: EDITABLE_CONTEXT, useExisting: forwardRef(() => EditableRoot) },\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => EditableRoot), multi: true },\n ],\n})\nexport class EditableRoot implements ControlValueAccessor, UseEditableReturn {\n readonly id: InputSignal<string | undefined> = input<string | undefined>(undefined);\n readonly elementIds: InputSignal<EditableElementIds | undefined> = input<\n EditableElementIds | undefined\n >(undefined, {\n alias: \"ids\",\n });\n readonly value: ModelSignal<string | undefined> = model<string | undefined>(undefined);\n readonly defaultValue: InputSignal<string | undefined> = input<string | undefined>(undefined);\n readonly edit: ModelSignal<boolean | undefined> = model<boolean | undefined>(undefined);\n readonly defaultEdit: 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 invalid: InputSignalWithTransform<boolean, unknown> = input(false, {\n transform: booleanAttribute,\n });\n readonly required: InputSignalWithTransform<boolean, unknown> = input(false, {\n transform: booleanAttribute,\n });\n readonly placeholder: InputSignal<string | { edit: string; preview: string } | undefined> = input<\n string | { edit: string; preview: string } | undefined\n >(undefined);\n readonly name: InputSignal<string | undefined> = input<string | undefined>(undefined);\n readonly form: InputSignal<string | undefined> = input<string | undefined>(undefined);\n readonly maxLength: InputSignal<number | undefined> = input<number | undefined>(undefined);\n readonly activationMode: InputSignal<editable.ActivationMode | undefined> = input<\n editable.ActivationMode | undefined\n >(undefined);\n readonly submitMode: InputSignal<editable.SubmitMode | undefined> = input<\n editable.SubmitMode | undefined\n >(undefined);\n readonly autoResize: InputSignalWithTransform<boolean, unknown> = input(false, {\n transform: booleanAttribute,\n });\n readonly selectOnFocus: InputSignalWithTransform<boolean, unknown> = input(true, {\n transform: booleanAttribute,\n });\n readonly translations: InputSignal<editable.IntlTranslations | undefined> = input<\n editable.IntlTranslations | undefined\n >(undefined);\n readonly finalFocusEl: InputSignal<(() => HTMLElement | null) | undefined> = input<\n (() => HTMLElement | null) | undefined\n >(undefined);\n\n readonly editDetailsChange: OutputEmitterRef<EditableEditChangeDetails> =\n output<EditableEditChangeDetails>();\n readonly valueDetailsChange: OutputEmitterRef<EditableValueChangeDetails> =\n output<EditableValueChangeDetails>();\n readonly valueCommit: OutputEmitterRef<EditableValueChangeDetails> =\n output<EditableValueChangeDetails>();\n readonly valueRevert: OutputEmitterRef<EditableValueChangeDetails> =\n output<EditableValueChangeDetails>();\n readonly focusOutside: OutputEmitterRef<EditableFocusOutsideEvent> =\n output<EditableFocusOutsideEvent>();\n readonly pointerDownOutside: OutputEmitterRef<EditablePointerDownOutsideEvent> =\n output<EditablePointerDownOutsideEvent>();\n readonly interactOutside: OutputEmitterRef<EditableInteractOutsideEvent> =\n output<EditableInteractOutsideEvent>();\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<string>({\n value: this.value,\n setDisabled: (disabled) => this._disabledFromForm.set(disabled),\n componentName: \"EditableRoot\",\n hasExternalModelBinding: () => this._hasExternalBinding,\n });\n\n private readonly machine = useEditable({\n context: () => ({\n id: this.id(),\n ids: this.elementIds(),\n value: this.value(),\n defaultValue: this.defaultValue(),\n edit: this.edit(),\n defaultEdit: this.defaultEdit(),\n disabled: this.disabled() || this._disabledFromForm(),\n readOnly: this.readOnly(),\n invalid: this.invalid(),\n required: this.required(),\n placeholder: this.placeholder(),\n name: this.name(),\n form: this.form(),\n maxLength: this.maxLength(),\n activationMode: this.activationMode(),\n submitMode: this.submitMode(),\n autoResize: this.autoResize(),\n selectOnFocus: this.selectOnFocus(),\n translations: this.translations(),\n finalFocusEl: this.finalFocusEl(),\n onValueChange: (details) => {\n if (this.value() !== details.value) {\n this._pendingInternalWrites++;\n this.value.set(details.value);\n }\n this.cva.notifyValueChange(details.value);\n this.valueDetailsChange.emit(details);\n },\n onValueCommit: (details) => {\n this.valueCommit.emit(details);\n this.cva.markTouched();\n },\n onValueRevert: (details) => {\n this.valueRevert.emit(details);\n },\n onEditChange: (details) => {\n this.edit.set(details.edit);\n this.editDetailsChange.emit(details);\n if (!details.edit) {\n this.cva.markTouched();\n }\n },\n onFocusOutside: (event) => this.focusOutside.emit(event),\n onPointerDownOutside: (event) => this.pointerDownOutside.emit(event),\n onInteractOutside: (event) => this.interactOutside.emit(event),\n }),\n });\n\n readonly state: Signal<editable.Service[\"state\"]> = this.machine.state;\n readonly api: Signal<editable.Api> = this.machine.api;\n readonly service: editable.Service = this.machine.service;\n readonly send: editable.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: string | 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: string | 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","import type * as editable from \"@wirekyt/dom/machines/editable\";\n\nimport {\n DestroyRef,\n Directive,\n ElementRef,\n Renderer2,\n forwardRef,\n inject,\n input,\n type InputSignal,\n type Signal,\n} from \"@angular/core\";\nimport { bindProps } from \"@wirekyt/angular\";\n\nimport type { UseEditableReturn } from \"./use\";\n\nimport { EDITABLE_CONTEXT } from \"./use-context\";\n\n@Directive({\n selector: \"[editable-root-provider]\",\n standalone: true,\n exportAs: \"editableRootProvider\",\n providers: [{ provide: EDITABLE_CONTEXT, useExisting: forwardRef(() => EditableRootProvider) }],\n})\nexport class EditableRootProvider implements UseEditableReturn {\n readonly value: InputSignal<UseEditableReturn> = input.required<UseEditableReturn>();\n\n get state(): Signal<editable.Service[\"state\"]> {\n return this.value().state;\n }\n get api(): Signal<editable.Api> {\n return this.value().api;\n }\n get service(): editable.Service {\n return this.value().service;\n }\n get send(): editable.Service[\"send\"] {\n return this.value().send;\n }\n\n constructor() {\n bindProps({\n elementRef: inject(ElementRef),\n renderer: inject(Renderer2),\n destroyRef: inject(DestroyRef),\n props: () => this.value().api().getRootProps(),\n });\n }\n}\n","import { DestroyRef, Directive, ElementRef, Renderer2, inject } from \"@angular/core\";\nimport { bindProps } from \"@wirekyt/angular\";\n\nimport { injectEditableContext } from \"./use-context\";\n\n@Directive({\n selector: \"[editable-area]\",\n standalone: true,\n exportAs: \"editableArea\",\n})\nexport class EditableArea {\n constructor() {\n const context = injectEditableContext();\n bindProps({\n elementRef: inject(ElementRef),\n renderer: inject(Renderer2),\n destroyRef: inject(DestroyRef),\n props: () => context.api().getAreaProps(),\n });\n }\n}\n","import { DestroyRef, Directive, ElementRef, Renderer2, inject } from \"@angular/core\";\nimport { bindProps } from \"@wirekyt/angular\";\nimport { injectFieldContextOptional } from \"@wirekyt/angular/field\";\n\nimport { injectEditableContext } from \"./use-context\";\n\n@Directive({\n selector: \"[editable-input]\",\n standalone: true,\n exportAs: \"editableInput\",\n})\nexport class EditableInput {\n constructor() {\n const context = injectEditableContext();\n const field = injectFieldContextOptional();\n const elementRef = inject(ElementRef);\n const renderer = inject(Renderer2);\n const destroyRef = inject(DestroyRef);\n\n bindProps({\n elementRef,\n renderer,\n destroyRef,\n props: () => {\n const props = context.api().getInputProps() as Record<string, unknown>;\n const { defaultValue: _defaultValue, ...rest } = props;\n const describedBy = field?.ariaDescribedby();\n if (describedBy) {\n rest[\"aria-describedby\"] = describedBy;\n }\n return rest;\n },\n });\n }\n}\n","import {\n DestroyRef,\n Directive,\n ElementRef,\n Renderer2,\n effect,\n inject,\n signal,\n type AfterContentInit,\n} from \"@angular/core\";\nimport { bindProps } from \"@wirekyt/angular\";\n\nimport { injectEditableContext } from \"./use-context\";\n\n@Directive({\n selector: \"[editable-preview]\",\n standalone: true,\n exportAs: \"editablePreview\",\n})\nexport class EditablePreview implements AfterContentInit {\n private readonly ownsTextContent = signal(false);\n private readonly elementRef = inject(ElementRef);\n\n constructor() {\n const context = injectEditableContext();\n const elementRef = this.elementRef;\n const renderer = inject(Renderer2);\n const destroyRef = inject(DestroyRef);\n\n bindProps({\n elementRef,\n renderer,\n destroyRef,\n props: () => {\n const props = context.api().getPreviewProps() as Record<string, unknown>;\n const { children: _children, onDoubleClick, ...rest } = props;\n if (typeof onDoubleClick === \"function\") {\n const remapped = rest as { onDblClick?: unknown };\n remapped.onDblClick = onDoubleClick;\n }\n return rest;\n },\n });\n\n effect(() => {\n if (!this.ownsTextContent()) return;\n const el = elementRef.nativeElement as HTMLElement;\n if (!el) return;\n const text = context.api().valueText;\n renderer.setProperty(el, \"textContent\", text);\n });\n }\n\n ngAfterContentInit(): void {\n this.ownsTextContent.set(this.elementRef.nativeElement.childNodes.length === 0);\n }\n}\n","import { DestroyRef, Directive, ElementRef, Renderer2, inject } from \"@angular/core\";\nimport { bindProps } from \"@wirekyt/angular\";\n\nimport { injectEditableContext } from \"./use-context\";\n\n@Directive({\n selector: \"[editable-label]\",\n standalone: true,\n exportAs: \"editableLabel\",\n})\nexport class EditableLabel {\n constructor() {\n const context = injectEditableContext();\n bindProps({\n elementRef: inject(ElementRef),\n renderer: inject(Renderer2),\n destroyRef: inject(DestroyRef),\n props: () => context.api().getLabelProps(),\n });\n }\n}\n","import { DestroyRef, Directive, ElementRef, Renderer2, inject } from \"@angular/core\";\nimport { bindProps } from \"@wirekyt/angular\";\n\nimport { injectEditableContext } from \"./use-context\";\n\n@Directive({\n selector: \"[editable-control]\",\n standalone: true,\n exportAs: \"editableControl\",\n})\nexport class EditableControl {\n constructor() {\n const context = injectEditableContext();\n bindProps({\n elementRef: inject(ElementRef),\n renderer: inject(Renderer2),\n destroyRef: inject(DestroyRef),\n props: () => context.api().getControlProps(),\n });\n }\n}\n","import { DestroyRef, Directive, ElementRef, Renderer2, inject } from \"@angular/core\";\nimport { bindProps } from \"@wirekyt/angular\";\n\nimport { injectEditableContext } from \"./use-context\";\n\n@Directive({\n selector: \"[editable-edit-trigger]\",\n standalone: true,\n exportAs: \"editableEditTrigger\",\n})\nexport class EditableEditTrigger {\n constructor() {\n const context = injectEditableContext();\n bindProps({\n elementRef: inject(ElementRef),\n renderer: inject(Renderer2),\n destroyRef: inject(DestroyRef),\n props: () => context.api().getEditTriggerProps(),\n });\n }\n}\n","import { DestroyRef, Directive, ElementRef, Renderer2, inject } from \"@angular/core\";\nimport { bindProps } from \"@wirekyt/angular\";\n\nimport { injectEditableContext } from \"./use-context\";\n\n@Directive({\n selector: \"[editable-submit-trigger]\",\n standalone: true,\n exportAs: \"editableSubmitTrigger\",\n})\nexport class EditableSubmitTrigger {\n constructor() {\n const context = injectEditableContext();\n bindProps({\n elementRef: inject(ElementRef),\n renderer: inject(Renderer2),\n destroyRef: inject(DestroyRef),\n props: () => context.api().getSubmitTriggerProps(),\n });\n }\n}\n","import { DestroyRef, Directive, ElementRef, Renderer2, inject } from \"@angular/core\";\nimport { bindProps } from \"@wirekyt/angular\";\n\nimport { injectEditableContext } from \"./use-context\";\n\n@Directive({\n selector: \"[editable-cancel-trigger]\",\n standalone: true,\n exportAs: \"editableCancelTrigger\",\n})\nexport class EditableCancelTrigger {\n constructor() {\n const context = injectEditableContext();\n bindProps({\n elementRef: inject(ElementRef),\n renderer: inject(Renderer2),\n destroyRef: inject(DestroyRef),\n props: () => context.api().getCancelTriggerProps(),\n });\n }\n}\n","import {\n DestroyRef,\n Directive,\n TemplateRef,\n ViewContainerRef,\n effect,\n inject,\n} from \"@angular/core\";\n\nimport type { UseEditableReturn } from \"./use\";\n\nimport { injectEditableContext } from \"./use-context\";\n\nexport interface EditableContextTemplate {\n $implicit: UseEditableReturn[\"api\"];\n api: UseEditableReturn[\"api\"];\n}\n\n@Directive({\n selector: \"[editable-context]\",\n standalone: true,\n exportAs: \"editableContext\",\n})\nexport class EditableContext {\n static ngTemplateContextGuard(\n _directive: EditableContext,\n context: unknown,\n ): context is EditableContextTemplate {\n void context;\n return true;\n }\n\n private readonly editable = injectEditableContext();\n private readonly templateRef = inject<TemplateRef<EditableContextTemplate>>(TemplateRef);\n private readonly viewContainer = inject(ViewContainerRef);\n\n constructor() {\n const view = this.viewContainer.createEmbeddedView(this.templateRef, {\n $implicit: this.editable.api,\n api: this.editable.api,\n });\n\n effect(() => {\n this.editable.api();\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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"}