@wirekyt/angular 0.0.18 → 0.0.19

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,679 @@
1
+ import * as floatingPanel from '@wirekyt/dom/machines/floating-panel';
2
+ export { anatomy as floatingPanelAnatomy, resizeTriggerAxes } from '@wirekyt/dom/machines/floating-panel';
3
+ import * as i0 from '@angular/core';
4
+ import { InjectionToken, inject, input, model, booleanAttribute, output, EnvironmentInjector, Injector, forwardRef, Directive, computed, DestroyRef, Renderer2, ElementRef, TemplateRef, ViewContainerRef, effect, untracked } from '@angular/core';
5
+ import { injectLocale, injectEnvironment, createId, useMachine, buildRootCarrier, bindProps } from '@wirekyt/angular';
6
+ import { PresenceBase, PRESENCE_CONTEXT, injectPresenceContext } from '@wirekyt/angular/presence';
7
+
8
+ const FLOATING_PANEL_CONTEXT = new InjectionToken("WIREKYT.FLOATING_PANEL_CONTEXT");
9
+ function injectFloatingPanelContext() {
10
+ return inject(FLOATING_PANEL_CONTEXT);
11
+ }
12
+ const FLOATING_PANEL_CONTEXT_CARRIER = new InjectionToken("WIREKYT.FLOATING_PANEL_CONTEXT_CARRIER");
13
+ function injectFloatingPanelContextCarrier() {
14
+ return inject(FLOATING_PANEL_CONTEXT_CARRIER);
15
+ }
16
+ const FLOATING_PANEL_RENDER_STRATEGY_CONTEXT = new InjectionToken("WIREKYT.FLOATING_PANEL_RENDER_STRATEGY_CONTEXT");
17
+ function injectFloatingPanelRenderStrategyContext() {
18
+ return inject(FLOATING_PANEL_RENDER_STRATEGY_CONTEXT);
19
+ }
20
+
21
+ function useFloatingPanel(options) {
22
+ const locale = injectLocale();
23
+ const environment = injectEnvironment();
24
+ const fallbackId = createId();
25
+ return useMachine({
26
+ machine: floatingPanel.machine,
27
+ context: () => {
28
+ const props = options.context();
29
+ return {
30
+ ...props,
31
+ dir: locale.dir,
32
+ getRootNode: environment.getRootNode,
33
+ id: props.id ?? fallbackId,
34
+ };
35
+ },
36
+ connect: (service, normalize) => floatingPanel.connect(service, normalize),
37
+ });
38
+ }
39
+
40
+ const arePointsEqual = (left, right) => left !== undefined && Object.is(left.x, right.x) && Object.is(left.y, right.y);
41
+ const areSizesEqual = (left, right) => left !== undefined && Object.is(left.width, right.width) && Object.is(left.height, right.height);
42
+ const areDetailsEqual = (left, right) => JSON.stringify(left) === JSON.stringify(right);
43
+ class FloatingPanelRoot extends PresenceBase {
44
+ /** The unique identifier of the floating panel. */
45
+ id = input(undefined, /* @ts-ignore */
46
+ ...(ngDevMode ? [{ debugName: "id" }] : /* istanbul ignore next */ []));
47
+ /** The ids of the floating panel elements. Useful for composition. */
48
+ ids = input(undefined, /* @ts-ignore */
49
+ ...(ngDevMode ? [{ debugName: "ids" }] : /* istanbul ignore next */ []));
50
+ /** The controlled open state of the floating panel. */
51
+ open = model(undefined, /* @ts-ignore */
52
+ ...(ngDevMode ? [{ debugName: "open" }] : /* istanbul ignore next */ []));
53
+ /** The initial open state of the floating panel when uncontrolled. */
54
+ defaultOpen = input(false, { ...(ngDevMode ? { debugName: "defaultOpen" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
55
+ /** The controlled position of the floating panel. */
56
+ position = model(undefined, /* @ts-ignore */
57
+ ...(ngDevMode ? [{ debugName: "position" }] : /* istanbul ignore next */ []));
58
+ /** The initial position of the floating panel when uncontrolled. */
59
+ defaultPosition = input(undefined, /* @ts-ignore */
60
+ ...(ngDevMode ? [{ debugName: "defaultPosition" }] : /* istanbul ignore next */ []));
61
+ /** The controlled size of the floating panel. */
62
+ size = model(undefined, /* @ts-ignore */
63
+ ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
64
+ /** The initial size of the floating panel when uncontrolled. */
65
+ defaultSize = input(undefined, /* @ts-ignore */
66
+ ...(ngDevMode ? [{ debugName: "defaultSize" }] : /* istanbul ignore next */ []));
67
+ /** The minimum size of the floating panel. */
68
+ minSize = input(undefined, /* @ts-ignore */
69
+ ...(ngDevMode ? [{ debugName: "minSize" }] : /* istanbul ignore next */ []));
70
+ /** The maximum size of the floating panel. */
71
+ maxSize = input(undefined, /* @ts-ignore */
72
+ ...(ngDevMode ? [{ debugName: "maxSize" }] : /* istanbul ignore next */ []));
73
+ /** The positioning strategy to use. */
74
+ strategy = input("fixed", /* @ts-ignore */
75
+ ...(ngDevMode ? [{ debugName: "strategy" }] : /* istanbul ignore next */ []));
76
+ /** Whether the panel may overflow the boundary while dragging. */
77
+ allowOverflow = input(true, { ...(ngDevMode ? { debugName: "allowOverflow" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
78
+ /** Whether the floating panel is draggable. */
79
+ draggable = input(true, { ...(ngDevMode ? { debugName: "draggable" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
80
+ /** Whether the floating panel is resizable. */
81
+ resizable = input(true, { ...(ngDevMode ? { debugName: "resizable" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
82
+ /** Whether resizing locks the panel to its aspect ratio. */
83
+ lockAspectRatio = input(false, { ...(ngDevMode ? { debugName: "lockAspectRatio" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
84
+ /** Whether the floating panel closes when the escape key is pressed. */
85
+ closeOnEscape = input(false, { ...(ngDevMode ? { debugName: "closeOnEscape" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
86
+ /** Whether focus should be restored when the floating panel closes. */
87
+ restoreFocus = input(true, { ...(ngDevMode ? { debugName: "restoreFocus" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
88
+ /** Whether the floating panel is disabled. */
89
+ disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
90
+ /** Whether size and position should be preserved when the floating panel closes. */
91
+ persistRect = input(false, { ...(ngDevMode ? { debugName: "persistRect" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
92
+ /** The snap grid for dragging and keyboard movement. */
93
+ gridSize = input(1, /* @ts-ignore */
94
+ ...(ngDevMode ? [{ debugName: "gridSize" }] : /* istanbul ignore next */ []));
95
+ /** Localized strings for control labels. */
96
+ translations = input(undefined, /* @ts-ignore */
97
+ ...(ngDevMode ? [{ debugName: "translations" }] : /* istanbul ignore next */ []));
98
+ /** Function that returns the initial panel position when opened. */
99
+ getAnchorPosition = input(undefined, /* @ts-ignore */
100
+ ...(ngDevMode ? [{ debugName: "getAnchorPosition" }] : /* istanbul ignore next */ []));
101
+ /** Function that returns the boundary element for dragging and resizing. */
102
+ getBoundaryEl = input(undefined, /* @ts-ignore */
103
+ ...(ngDevMode ? [{ debugName: "getBoundaryEl" }] : /* istanbul ignore next */ []));
104
+ /** Element to receive focus when the floating panel opens. */
105
+ initialFocusEl = input(undefined, /* @ts-ignore */
106
+ ...(ngDevMode ? [{ debugName: "initialFocusEl" }] : /* istanbul ignore next */ []));
107
+ /** Element to receive focus when the floating panel closes. */
108
+ finalFocusEl = input(undefined, /* @ts-ignore */
109
+ ...(ngDevMode ? [{ debugName: "finalFocusEl" }] : /* istanbul ignore next */ []));
110
+ /** Emits details when the panel open state changes. */
111
+ openChangeDetails = output();
112
+ /** Emits details when the panel position changes via dragging or API calls. */
113
+ positionDetailsChange = output();
114
+ /** Emits details when a position-changing drag interaction ends. */
115
+ positionChangeEnd = output();
116
+ /** Emits details when the panel size changes via resizing or API calls. */
117
+ sizeDetailsChange = output();
118
+ /** Emits details when a size-changing resize interaction ends. */
119
+ sizeChangeEnd = output();
120
+ /** Emits details when the panel stage changes. */
121
+ stageChange = output();
122
+ lastPositionDetails;
123
+ lastPositionEndDetails;
124
+ lastSizeDetails;
125
+ lastSizeEndDetails;
126
+ lastStageDetails;
127
+ machine = useFloatingPanel({
128
+ context: () => ({
129
+ id: this.id(),
130
+ ids: this.ids(),
131
+ open: this.open(),
132
+ defaultOpen: this.defaultOpen(),
133
+ position: this.position(),
134
+ defaultPosition: this.defaultPosition(),
135
+ size: this.size(),
136
+ defaultSize: this.defaultSize(),
137
+ minSize: this.minSize(),
138
+ maxSize: this.maxSize(),
139
+ strategy: this.strategy(),
140
+ allowOverflow: this.allowOverflow(),
141
+ draggable: this.draggable(),
142
+ resizable: this.resizable(),
143
+ lockAspectRatio: this.lockAspectRatio(),
144
+ closeOnEscape: this.closeOnEscape(),
145
+ restoreFocus: this.restoreFocus(),
146
+ disabled: this.disabled(),
147
+ persistRect: this.persistRect(),
148
+ gridSize: this.gridSize(),
149
+ translations: this.translations(),
150
+ getAnchorPosition: this.getAnchorPosition(),
151
+ getBoundaryEl: this.getBoundaryEl(),
152
+ initialFocusEl: this.initialFocusEl(),
153
+ finalFocusEl: this.finalFocusEl(),
154
+ onOpenChange: (details) => {
155
+ if (this.open() !== details.open) {
156
+ this.open.set(details.open);
157
+ }
158
+ this.openChangeDetails.emit(details);
159
+ },
160
+ onPositionChange: (details) => {
161
+ if (areDetailsEqual(this.lastPositionDetails, details))
162
+ return;
163
+ this.lastPositionDetails = details;
164
+ if (!arePointsEqual(this.position(), details.position)) {
165
+ this.position.set({ ...details.position });
166
+ }
167
+ this.positionDetailsChange.emit(details);
168
+ },
169
+ onPositionChangeEnd: (details) => {
170
+ if (areDetailsEqual(this.lastPositionEndDetails, details))
171
+ return;
172
+ this.lastPositionEndDetails = details;
173
+ this.positionChangeEnd.emit(details);
174
+ },
175
+ onSizeChange: (details) => {
176
+ if (areDetailsEqual(this.lastSizeDetails, details))
177
+ return;
178
+ this.lastSizeDetails = details;
179
+ if (!areSizesEqual(this.size(), details.size)) {
180
+ this.size.set({ ...details.size });
181
+ }
182
+ this.sizeDetailsChange.emit(details);
183
+ },
184
+ onSizeChangeEnd: (details) => {
185
+ if (areDetailsEqual(this.lastSizeEndDetails, details))
186
+ return;
187
+ this.lastSizeEndDetails = details;
188
+ this.sizeChangeEnd.emit(details);
189
+ },
190
+ onStageChange: (details) => {
191
+ if (areDetailsEqual(this.lastStageDetails, details))
192
+ return;
193
+ this.lastStageDetails = details;
194
+ this.stageChange.emit(details);
195
+ },
196
+ }),
197
+ });
198
+ state = this.machine.state;
199
+ api = this.machine.api;
200
+ service = this.machine.service;
201
+ send = this.machine.send;
202
+ presence = this.createPresence(() => this.api().open);
203
+ contextCarrier = buildRootCarrier({
204
+ providers: [
205
+ { provide: PRESENCE_CONTEXT, useValue: this.presence },
206
+ { provide: FLOATING_PANEL_RENDER_STRATEGY_CONTEXT, useValue: this },
207
+ ],
208
+ root: this,
209
+ rootToken: FLOATING_PANEL_CONTEXT,
210
+ originInjector: inject(Injector),
211
+ environmentInjector: inject(EnvironmentInjector),
212
+ });
213
+ /** @internal Exposed for floating panel part directives to consume through portals. */
214
+ getContextCarrier() {
215
+ return this.contextCarrier;
216
+ }
217
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: FloatingPanelRoot, deps: null, target: i0.ɵɵFactoryTarget.Directive });
218
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.3", type: FloatingPanelRoot, isStandalone: true, selector: "[floating-panel-root]", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, ids: { classPropertyName: "ids", publicName: "ids", isSignal: true, isRequired: false, transformFunction: null }, open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, defaultOpen: { classPropertyName: "defaultOpen", publicName: "defaultOpen", isSignal: true, isRequired: false, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, defaultPosition: { classPropertyName: "defaultPosition", publicName: "defaultPosition", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, defaultSize: { classPropertyName: "defaultSize", publicName: "defaultSize", isSignal: true, isRequired: false, transformFunction: null }, minSize: { classPropertyName: "minSize", publicName: "minSize", isSignal: true, isRequired: false, transformFunction: null }, maxSize: { classPropertyName: "maxSize", publicName: "maxSize", isSignal: true, isRequired: false, transformFunction: null }, strategy: { classPropertyName: "strategy", publicName: "strategy", isSignal: true, isRequired: false, transformFunction: null }, allowOverflow: { classPropertyName: "allowOverflow", publicName: "allowOverflow", isSignal: true, isRequired: false, transformFunction: null }, draggable: { classPropertyName: "draggable", publicName: "draggable", isSignal: true, isRequired: false, transformFunction: null }, resizable: { classPropertyName: "resizable", publicName: "resizable", isSignal: true, isRequired: false, transformFunction: null }, lockAspectRatio: { classPropertyName: "lockAspectRatio", publicName: "lockAspectRatio", isSignal: true, isRequired: false, transformFunction: null }, closeOnEscape: { classPropertyName: "closeOnEscape", publicName: "closeOnEscape", isSignal: true, isRequired: false, transformFunction: null }, restoreFocus: { classPropertyName: "restoreFocus", publicName: "restoreFocus", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, persistRect: { classPropertyName: "persistRect", publicName: "persistRect", isSignal: true, isRequired: false, transformFunction: null }, gridSize: { classPropertyName: "gridSize", publicName: "gridSize", isSignal: true, isRequired: false, transformFunction: null }, translations: { classPropertyName: "translations", publicName: "translations", isSignal: true, isRequired: false, transformFunction: null }, getAnchorPosition: { classPropertyName: "getAnchorPosition", publicName: "getAnchorPosition", isSignal: true, isRequired: false, transformFunction: null }, getBoundaryEl: { classPropertyName: "getBoundaryEl", publicName: "getBoundaryEl", isSignal: true, isRequired: false, transformFunction: null }, initialFocusEl: { classPropertyName: "initialFocusEl", publicName: "initialFocusEl", isSignal: true, isRequired: false, transformFunction: null }, finalFocusEl: { classPropertyName: "finalFocusEl", publicName: "finalFocusEl", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { open: "openChange", position: "positionChange", size: "sizeChange", openChangeDetails: "openChangeDetails", positionDetailsChange: "positionDetailsChange", positionChangeEnd: "positionChangeEnd", sizeDetailsChange: "sizeDetailsChange", sizeChangeEnd: "sizeChangeEnd", stageChange: "stageChange" }, providers: [
219
+ {
220
+ provide: PRESENCE_CONTEXT,
221
+ useFactory: (root) => root.presence,
222
+ deps: [forwardRef(() => FloatingPanelRoot)],
223
+ },
224
+ {
225
+ provide: FLOATING_PANEL_RENDER_STRATEGY_CONTEXT,
226
+ useExisting: forwardRef(() => FloatingPanelRoot),
227
+ },
228
+ { provide: FLOATING_PANEL_CONTEXT, useExisting: forwardRef(() => FloatingPanelRoot) },
229
+ {
230
+ provide: FLOATING_PANEL_CONTEXT_CARRIER,
231
+ useFactory: (root) => root.getContextCarrier(),
232
+ deps: [forwardRef(() => FloatingPanelRoot)],
233
+ },
234
+ ], exportAs: ["floatingPanelRoot"], usesInheritance: true, ngImport: i0 });
235
+ }
236
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: FloatingPanelRoot, decorators: [{
237
+ type: Directive,
238
+ args: [{
239
+ selector: "[floating-panel-root]",
240
+ standalone: true,
241
+ exportAs: "floatingPanelRoot",
242
+ providers: [
243
+ {
244
+ provide: PRESENCE_CONTEXT,
245
+ useFactory: (root) => root.presence,
246
+ deps: [forwardRef(() => FloatingPanelRoot)],
247
+ },
248
+ {
249
+ provide: FLOATING_PANEL_RENDER_STRATEGY_CONTEXT,
250
+ useExisting: forwardRef(() => FloatingPanelRoot),
251
+ },
252
+ { provide: FLOATING_PANEL_CONTEXT, useExisting: forwardRef(() => FloatingPanelRoot) },
253
+ {
254
+ provide: FLOATING_PANEL_CONTEXT_CARRIER,
255
+ useFactory: (root) => root.getContextCarrier(),
256
+ deps: [forwardRef(() => FloatingPanelRoot)],
257
+ },
258
+ ],
259
+ }]
260
+ }], propDecorators: { id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: false }] }], ids: [{ type: i0.Input, args: [{ isSignal: true, alias: "ids", required: false }] }], open: [{ type: i0.Input, args: [{ isSignal: true, alias: "open", required: false }] }, { type: i0.Output, args: ["openChange"] }], defaultOpen: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultOpen", required: false }] }], position: [{ type: i0.Input, args: [{ isSignal: true, alias: "position", required: false }] }, { type: i0.Output, args: ["positionChange"] }], defaultPosition: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultPosition", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }, { type: i0.Output, args: ["sizeChange"] }], defaultSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultSize", required: false }] }], minSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "minSize", required: false }] }], maxSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxSize", required: false }] }], strategy: [{ type: i0.Input, args: [{ isSignal: true, alias: "strategy", required: false }] }], allowOverflow: [{ type: i0.Input, args: [{ isSignal: true, alias: "allowOverflow", required: false }] }], draggable: [{ type: i0.Input, args: [{ isSignal: true, alias: "draggable", required: false }] }], resizable: [{ type: i0.Input, args: [{ isSignal: true, alias: "resizable", required: false }] }], lockAspectRatio: [{ type: i0.Input, args: [{ isSignal: true, alias: "lockAspectRatio", required: false }] }], closeOnEscape: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeOnEscape", required: false }] }], restoreFocus: [{ type: i0.Input, args: [{ isSignal: true, alias: "restoreFocus", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], persistRect: [{ type: i0.Input, args: [{ isSignal: true, alias: "persistRect", required: false }] }], gridSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "gridSize", required: false }] }], translations: [{ type: i0.Input, args: [{ isSignal: true, alias: "translations", required: false }] }], getAnchorPosition: [{ type: i0.Input, args: [{ isSignal: true, alias: "getAnchorPosition", required: false }] }], getBoundaryEl: [{ type: i0.Input, args: [{ isSignal: true, alias: "getBoundaryEl", required: false }] }], initialFocusEl: [{ type: i0.Input, args: [{ isSignal: true, alias: "initialFocusEl", required: false }] }], finalFocusEl: [{ type: i0.Input, args: [{ isSignal: true, alias: "finalFocusEl", required: false }] }], openChangeDetails: [{ type: i0.Output, args: ["openChangeDetails"] }], positionDetailsChange: [{ type: i0.Output, args: ["positionDetailsChange"] }], positionChangeEnd: [{ type: i0.Output, args: ["positionChangeEnd"] }], sizeDetailsChange: [{ type: i0.Output, args: ["sizeDetailsChange"] }], sizeChangeEnd: [{ type: i0.Output, args: ["sizeChangeEnd"] }], stageChange: [{ type: i0.Output, args: ["stageChange"] }] } });
261
+
262
+ class FloatingPanelRootProvider extends PresenceBase {
263
+ /** The floating panel machine returned by useFloatingPanel(). */
264
+ value = input.required(/* @ts-ignore */
265
+ ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
266
+ state = computed(() => this.value().state(), /* @ts-ignore */
267
+ ...(ngDevMode ? [{ debugName: "state" }] : /* istanbul ignore next */ []));
268
+ api = computed(() => this.value().api(), /* @ts-ignore */
269
+ ...(ngDevMode ? [{ debugName: "api" }] : /* istanbul ignore next */ []));
270
+ send = (event) => this.value().send(event);
271
+ get service() {
272
+ return this.value().service;
273
+ }
274
+ presence = this.createPresence(() => {
275
+ try {
276
+ return this.api().open;
277
+ }
278
+ catch {
279
+ return false;
280
+ }
281
+ });
282
+ contextCarrier = buildRootCarrier({
283
+ providers: [
284
+ { provide: PRESENCE_CONTEXT, useValue: this.presence },
285
+ { provide: FLOATING_PANEL_RENDER_STRATEGY_CONTEXT, useValue: this },
286
+ ],
287
+ root: this,
288
+ rootToken: FLOATING_PANEL_CONTEXT,
289
+ originInjector: inject(Injector),
290
+ environmentInjector: inject(EnvironmentInjector),
291
+ });
292
+ /** @internal Exposed for floating panel part directives to consume through portals. */
293
+ getContextCarrier() {
294
+ return this.contextCarrier;
295
+ }
296
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: FloatingPanelRootProvider, deps: null, target: i0.ɵɵFactoryTarget.Directive });
297
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.3", type: FloatingPanelRootProvider, isStandalone: true, selector: "[floating-panel-root-provider]", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null } }, providers: [
298
+ {
299
+ provide: PRESENCE_CONTEXT,
300
+ useFactory: (provider) => provider.presence,
301
+ deps: [forwardRef(() => FloatingPanelRootProvider)],
302
+ },
303
+ {
304
+ provide: FLOATING_PANEL_RENDER_STRATEGY_CONTEXT,
305
+ useExisting: forwardRef(() => FloatingPanelRootProvider),
306
+ },
307
+ {
308
+ provide: FLOATING_PANEL_CONTEXT,
309
+ useExisting: forwardRef(() => FloatingPanelRootProvider),
310
+ },
311
+ {
312
+ provide: FLOATING_PANEL_CONTEXT_CARRIER,
313
+ useFactory: (provider) => provider.getContextCarrier(),
314
+ deps: [forwardRef(() => FloatingPanelRootProvider)],
315
+ },
316
+ ], exportAs: ["floatingPanelRootProvider"], usesInheritance: true, ngImport: i0 });
317
+ }
318
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: FloatingPanelRootProvider, decorators: [{
319
+ type: Directive,
320
+ args: [{
321
+ selector: "[floating-panel-root-provider]",
322
+ standalone: true,
323
+ exportAs: "floatingPanelRootProvider",
324
+ providers: [
325
+ {
326
+ provide: PRESENCE_CONTEXT,
327
+ useFactory: (provider) => provider.presence,
328
+ deps: [forwardRef(() => FloatingPanelRootProvider)],
329
+ },
330
+ {
331
+ provide: FLOATING_PANEL_RENDER_STRATEGY_CONTEXT,
332
+ useExisting: forwardRef(() => FloatingPanelRootProvider),
333
+ },
334
+ {
335
+ provide: FLOATING_PANEL_CONTEXT,
336
+ useExisting: forwardRef(() => FloatingPanelRootProvider),
337
+ },
338
+ {
339
+ provide: FLOATING_PANEL_CONTEXT_CARRIER,
340
+ useFactory: (provider) => provider.getContextCarrier(),
341
+ deps: [forwardRef(() => FloatingPanelRootProvider)],
342
+ },
343
+ ],
344
+ }]
345
+ }], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: true }] }] } });
346
+
347
+ class FloatingPanelTrigger {
348
+ constructor() {
349
+ const context = injectFloatingPanelContext();
350
+ bindProps({
351
+ elementRef: inject(ElementRef),
352
+ renderer: inject(Renderer2),
353
+ destroyRef: inject(DestroyRef),
354
+ props: () => context.api().getTriggerProps(),
355
+ });
356
+ }
357
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: FloatingPanelTrigger, deps: [], target: i0.ɵɵFactoryTarget.Directive });
358
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.3", type: FloatingPanelTrigger, isStandalone: true, selector: "[floating-panel-trigger]", exportAs: ["floatingPanelTrigger"], ngImport: i0 });
359
+ }
360
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: FloatingPanelTrigger, decorators: [{
361
+ type: Directive,
362
+ args: [{
363
+ selector: "[floating-panel-trigger]",
364
+ standalone: true,
365
+ exportAs: "floatingPanelTrigger",
366
+ }]
367
+ }], ctorParameters: () => [] });
368
+
369
+ class FloatingPanelPositioner {
370
+ constructor() {
371
+ const context = injectFloatingPanelContext();
372
+ const presence = injectPresenceContext();
373
+ const template = inject((TemplateRef), { optional: true });
374
+ const container = inject(ViewContainerRef);
375
+ const host = inject(ElementRef);
376
+ const elementRef = template ? { nativeElement: null } : host;
377
+ let view;
378
+ effect(() => {
379
+ const unmounted = presence.unmounted();
380
+ if (template) {
381
+ if (unmounted) {
382
+ elementRef.nativeElement = null;
383
+ container.clear();
384
+ view = undefined;
385
+ }
386
+ else if (!view) {
387
+ view = container.createEmbeddedView(template);
388
+ elementRef.nativeElement =
389
+ view.rootNodes.find((node) => node.nodeType === 1) ?? null;
390
+ }
391
+ }
392
+ });
393
+ bindProps({
394
+ elementRef,
395
+ renderer: inject(Renderer2),
396
+ destroyRef: inject(DestroyRef),
397
+ props: () => {
398
+ const unmounted = presence.unmounted();
399
+ return { ...context.api().getPositionerProps(), hidden: unmounted };
400
+ },
401
+ });
402
+ }
403
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: FloatingPanelPositioner, deps: [], target: i0.ɵɵFactoryTarget.Directive });
404
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.3", type: FloatingPanelPositioner, isStandalone: true, selector: "[floating-panel-positioner]", exportAs: ["floatingPanelPositioner"], ngImport: i0 });
405
+ }
406
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: FloatingPanelPositioner, decorators: [{
407
+ type: Directive,
408
+ args: [{
409
+ selector: "[floating-panel-positioner]",
410
+ standalone: true,
411
+ exportAs: "floatingPanelPositioner",
412
+ }]
413
+ }], ctorParameters: () => [] });
414
+
415
+ class FloatingPanelContent {
416
+ constructor() {
417
+ const context = injectFloatingPanelContext();
418
+ const presence = injectPresenceContext();
419
+ const template = inject((TemplateRef), { optional: true });
420
+ const container = inject(ViewContainerRef);
421
+ const host = inject(ElementRef);
422
+ const elementRef = template ? { nativeElement: null } : host;
423
+ let view;
424
+ effect(() => {
425
+ const unmounted = presence.unmounted();
426
+ if (template) {
427
+ if (unmounted) {
428
+ elementRef.nativeElement = null;
429
+ container.clear();
430
+ view = undefined;
431
+ }
432
+ else if (!view) {
433
+ view = container.createEmbeddedView(template);
434
+ elementRef.nativeElement =
435
+ view.rootNodes.find((node) => node.nodeType === 1) ?? null;
436
+ }
437
+ }
438
+ untracked(() => presence.setNode(elementRef.nativeElement));
439
+ });
440
+ bindProps({
441
+ elementRef,
442
+ renderer: inject(Renderer2),
443
+ destroyRef: inject(DestroyRef),
444
+ props: () => {
445
+ presence.unmounted();
446
+ return { ...context.api().getContentProps(), ...presence.getPresenceProps() };
447
+ },
448
+ });
449
+ }
450
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: FloatingPanelContent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
451
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.3", type: FloatingPanelContent, isStandalone: true, selector: "[floating-panel-content]", exportAs: ["floatingPanelContent"], ngImport: i0 });
452
+ }
453
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: FloatingPanelContent, decorators: [{
454
+ type: Directive,
455
+ args: [{
456
+ selector: "[floating-panel-content]",
457
+ standalone: true,
458
+ exportAs: "floatingPanelContent",
459
+ }]
460
+ }], ctorParameters: () => [] });
461
+
462
+ class FloatingPanelControl {
463
+ constructor() {
464
+ const context = injectFloatingPanelContext();
465
+ bindProps({
466
+ elementRef: inject(ElementRef),
467
+ renderer: inject(Renderer2),
468
+ destroyRef: inject(DestroyRef),
469
+ props: () => context.api().getControlProps(),
470
+ });
471
+ }
472
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: FloatingPanelControl, deps: [], target: i0.ɵɵFactoryTarget.Directive });
473
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.3", type: FloatingPanelControl, isStandalone: true, selector: "[floating-panel-control]", exportAs: ["floatingPanelControl"], ngImport: i0 });
474
+ }
475
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: FloatingPanelControl, decorators: [{
476
+ type: Directive,
477
+ args: [{
478
+ selector: "[floating-panel-control]",
479
+ standalone: true,
480
+ exportAs: "floatingPanelControl",
481
+ }]
482
+ }], ctorParameters: () => [] });
483
+
484
+ class FloatingPanelHeader {
485
+ constructor() {
486
+ const context = injectFloatingPanelContext();
487
+ bindProps({
488
+ elementRef: inject(ElementRef),
489
+ renderer: inject(Renderer2),
490
+ destroyRef: inject(DestroyRef),
491
+ props: () => context.api().getHeaderProps(),
492
+ });
493
+ }
494
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: FloatingPanelHeader, deps: [], target: i0.ɵɵFactoryTarget.Directive });
495
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.3", type: FloatingPanelHeader, isStandalone: true, selector: "[floating-panel-header]", exportAs: ["floatingPanelHeader"], ngImport: i0 });
496
+ }
497
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: FloatingPanelHeader, decorators: [{
498
+ type: Directive,
499
+ args: [{
500
+ selector: "[floating-panel-header]",
501
+ standalone: true,
502
+ exportAs: "floatingPanelHeader",
503
+ }]
504
+ }], ctorParameters: () => [] });
505
+
506
+ class FloatingPanelBody {
507
+ constructor() {
508
+ const context = injectFloatingPanelContext();
509
+ bindProps({
510
+ elementRef: inject(ElementRef),
511
+ renderer: inject(Renderer2),
512
+ destroyRef: inject(DestroyRef),
513
+ props: () => context.api().getBodyProps(),
514
+ });
515
+ }
516
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: FloatingPanelBody, deps: [], target: i0.ɵɵFactoryTarget.Directive });
517
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.3", type: FloatingPanelBody, isStandalone: true, selector: "[floating-panel-body]", exportAs: ["floatingPanelBody"], ngImport: i0 });
518
+ }
519
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: FloatingPanelBody, decorators: [{
520
+ type: Directive,
521
+ args: [{
522
+ selector: "[floating-panel-body]",
523
+ standalone: true,
524
+ exportAs: "floatingPanelBody",
525
+ }]
526
+ }], ctorParameters: () => [] });
527
+
528
+ class FloatingPanelTitle {
529
+ constructor() {
530
+ const context = injectFloatingPanelContext();
531
+ bindProps({
532
+ elementRef: inject(ElementRef),
533
+ renderer: inject(Renderer2),
534
+ destroyRef: inject(DestroyRef),
535
+ props: () => context.api().getTitleProps(),
536
+ });
537
+ }
538
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: FloatingPanelTitle, deps: [], target: i0.ɵɵFactoryTarget.Directive });
539
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.3", type: FloatingPanelTitle, isStandalone: true, selector: "[floating-panel-title]", exportAs: ["floatingPanelTitle"], ngImport: i0 });
540
+ }
541
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: FloatingPanelTitle, decorators: [{
542
+ type: Directive,
543
+ args: [{
544
+ selector: "[floating-panel-title]",
545
+ standalone: true,
546
+ exportAs: "floatingPanelTitle",
547
+ }]
548
+ }], ctorParameters: () => [] });
549
+
550
+ class FloatingPanelCloseTrigger {
551
+ constructor() {
552
+ const context = injectFloatingPanelContext();
553
+ bindProps({
554
+ elementRef: inject(ElementRef),
555
+ renderer: inject(Renderer2),
556
+ destroyRef: inject(DestroyRef),
557
+ props: () => context.api().getCloseTriggerProps(),
558
+ });
559
+ }
560
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: FloatingPanelCloseTrigger, deps: [], target: i0.ɵɵFactoryTarget.Directive });
561
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.3", type: FloatingPanelCloseTrigger, isStandalone: true, selector: "[floating-panel-close-trigger]", exportAs: ["floatingPanelCloseTrigger"], ngImport: i0 });
562
+ }
563
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: FloatingPanelCloseTrigger, decorators: [{
564
+ type: Directive,
565
+ args: [{
566
+ selector: "[floating-panel-close-trigger]",
567
+ standalone: true,
568
+ exportAs: "floatingPanelCloseTrigger",
569
+ }]
570
+ }], ctorParameters: () => [] });
571
+
572
+ class FloatingPanelDragTrigger {
573
+ constructor() {
574
+ const context = injectFloatingPanelContext();
575
+ bindProps({
576
+ elementRef: inject(ElementRef),
577
+ renderer: inject(Renderer2),
578
+ destroyRef: inject(DestroyRef),
579
+ props: () => context.api().getDragTriggerProps(),
580
+ });
581
+ }
582
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: FloatingPanelDragTrigger, deps: [], target: i0.ɵɵFactoryTarget.Directive });
583
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.3", type: FloatingPanelDragTrigger, isStandalone: true, selector: "[floating-panel-drag-trigger]", exportAs: ["floatingPanelDragTrigger"], ngImport: i0 });
584
+ }
585
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: FloatingPanelDragTrigger, decorators: [{
586
+ type: Directive,
587
+ args: [{
588
+ selector: "[floating-panel-drag-trigger]",
589
+ standalone: true,
590
+ exportAs: "floatingPanelDragTrigger",
591
+ }]
592
+ }], ctorParameters: () => [] });
593
+
594
+ class FloatingPanelResizeTrigger {
595
+ /** The axis of the resize handle. */
596
+ axis = input.required(/* @ts-ignore */
597
+ ...(ngDevMode ? [{ debugName: "axis" }] : /* istanbul ignore next */ []));
598
+ constructor() {
599
+ const context = injectFloatingPanelContext();
600
+ bindProps({
601
+ elementRef: inject(ElementRef),
602
+ renderer: inject(Renderer2),
603
+ destroyRef: inject(DestroyRef),
604
+ props: () => context.api().getResizeTriggerProps({ axis: this.axis() }),
605
+ });
606
+ }
607
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: FloatingPanelResizeTrigger, deps: [], target: i0.ɵɵFactoryTarget.Directive });
608
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.3", type: FloatingPanelResizeTrigger, isStandalone: true, selector: "[floating-panel-resize-trigger]", inputs: { axis: { classPropertyName: "axis", publicName: "axis", isSignal: true, isRequired: true, transformFunction: null } }, exportAs: ["floatingPanelResizeTrigger"], ngImport: i0 });
609
+ }
610
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: FloatingPanelResizeTrigger, decorators: [{
611
+ type: Directive,
612
+ args: [{
613
+ selector: "[floating-panel-resize-trigger]",
614
+ standalone: true,
615
+ exportAs: "floatingPanelResizeTrigger",
616
+ }]
617
+ }], ctorParameters: () => [], propDecorators: { axis: [{ type: i0.Input, args: [{ isSignal: true, alias: "axis", required: true }] }] } });
618
+
619
+ class FloatingPanelStageTrigger {
620
+ /** The stage to apply when the trigger is clicked. */
621
+ stage = input.required(/* @ts-ignore */
622
+ ...(ngDevMode ? [{ debugName: "stage" }] : /* istanbul ignore next */ []));
623
+ constructor() {
624
+ const context = injectFloatingPanelContext();
625
+ bindProps({
626
+ elementRef: inject(ElementRef),
627
+ renderer: inject(Renderer2),
628
+ destroyRef: inject(DestroyRef),
629
+ props: () => context.api().getStageTriggerProps({ stage: this.stage() }),
630
+ });
631
+ }
632
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: FloatingPanelStageTrigger, deps: [], target: i0.ɵɵFactoryTarget.Directive });
633
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.3", type: FloatingPanelStageTrigger, isStandalone: true, selector: "[floating-panel-stage-trigger]", inputs: { stage: { classPropertyName: "stage", publicName: "stage", isSignal: true, isRequired: true, transformFunction: null } }, exportAs: ["floatingPanelStageTrigger"], ngImport: i0 });
634
+ }
635
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: FloatingPanelStageTrigger, decorators: [{
636
+ type: Directive,
637
+ args: [{
638
+ selector: "[floating-panel-stage-trigger]",
639
+ standalone: true,
640
+ exportAs: "floatingPanelStageTrigger",
641
+ }]
642
+ }], ctorParameters: () => [], propDecorators: { stage: [{ type: i0.Input, args: [{ isSignal: true, alias: "stage", required: true }] }] } });
643
+
644
+ class FloatingPanelContext {
645
+ static ngTemplateContextGuard(_directive, context) {
646
+ void context;
647
+ return true;
648
+ }
649
+ floatingPanel = injectFloatingPanelContext();
650
+ templateRef = inject(TemplateRef);
651
+ viewContainer = inject(ViewContainerRef);
652
+ constructor() {
653
+ const view = this.viewContainer.createEmbeddedView(this.templateRef, {
654
+ $implicit: this.floatingPanel.api,
655
+ api: this.floatingPanel.api,
656
+ });
657
+ effect(() => {
658
+ this.floatingPanel.api();
659
+ view.detectChanges();
660
+ });
661
+ }
662
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: FloatingPanelContext, deps: [], target: i0.ɵɵFactoryTarget.Directive });
663
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.3", type: FloatingPanelContext, isStandalone: true, selector: "[floating-panel-context]", exportAs: ["floatingPanelContext"], ngImport: i0 });
664
+ }
665
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: FloatingPanelContext, decorators: [{
666
+ type: Directive,
667
+ args: [{
668
+ selector: "[floating-panel-context]",
669
+ standalone: true,
670
+ exportAs: "floatingPanelContext",
671
+ }]
672
+ }], ctorParameters: () => [] });
673
+
674
+ /**
675
+ * Generated bundle index. Do not edit.
676
+ */
677
+
678
+ export { FLOATING_PANEL_CONTEXT, FLOATING_PANEL_CONTEXT_CARRIER, FLOATING_PANEL_RENDER_STRATEGY_CONTEXT, FloatingPanelBody, FloatingPanelCloseTrigger, FloatingPanelContent, FloatingPanelContext, FloatingPanelControl, FloatingPanelDragTrigger, FloatingPanelHeader, FloatingPanelPositioner, FloatingPanelResizeTrigger, FloatingPanelRoot, FloatingPanelRootProvider, FloatingPanelStageTrigger, FloatingPanelTitle, FloatingPanelTrigger, injectFloatingPanelContext, injectFloatingPanelContextCarrier, injectFloatingPanelRenderStrategyContext, useFloatingPanel };
679
+ //# sourceMappingURL=wirekyt-angular-floating-panel.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wirekyt-angular-floating-panel.mjs","sources":["../../src/components/floating-panel/use-context.ts","../../src/components/floating-panel/use.ts","../../src/components/floating-panel/root.ts","../../src/components/floating-panel/root-provider.ts","../../src/components/floating-panel/trigger.ts","../../src/components/floating-panel/positioner.ts","../../src/components/floating-panel/content.ts","../../src/components/floating-panel/control.ts","../../src/components/floating-panel/header.ts","../../src/components/floating-panel/body.ts","../../src/components/floating-panel/title.ts","../../src/components/floating-panel/close-trigger.ts","../../src/components/floating-panel/drag-trigger.ts","../../src/components/floating-panel/resize-trigger.ts","../../src/components/floating-panel/stage-trigger.ts","../../src/components/floating-panel/context.ts","../../src/components/floating-panel/wirekyt-angular-floating-panel.ts"],"sourcesContent":["import type { ContextCarrier } from \"@wirekyt/angular\";\n\nimport { InjectionToken, inject, type Signal } from \"@angular/core\";\n\nimport type { UseFloatingPanelReturn } from \"./use\";\n\nexport const FLOATING_PANEL_CONTEXT = new InjectionToken<UseFloatingPanelReturn>(\n \"WIREKYT.FLOATING_PANEL_CONTEXT\",\n);\n\nexport function injectFloatingPanelContext(): UseFloatingPanelReturn {\n return inject(FLOATING_PANEL_CONTEXT);\n}\n\nexport const FLOATING_PANEL_CONTEXT_CARRIER = new InjectionToken<\n ContextCarrier<UseFloatingPanelReturn>\n>(\"WIREKYT.FLOATING_PANEL_CONTEXT_CARRIER\");\n\nexport function injectFloatingPanelContextCarrier(): ContextCarrier<UseFloatingPanelReturn> {\n return inject(FLOATING_PANEL_CONTEXT_CARRIER);\n}\n\nexport interface FloatingPanelRenderStrategyContext {\n readonly lazyMount: Signal<boolean>;\n readonly unmountOnExit: Signal<boolean>;\n}\n\nexport const FLOATING_PANEL_RENDER_STRATEGY_CONTEXT =\n new InjectionToken<FloatingPanelRenderStrategyContext>(\n \"WIREKYT.FLOATING_PANEL_RENDER_STRATEGY_CONTEXT\",\n );\n\nexport function injectFloatingPanelRenderStrategyContext(): FloatingPanelRenderStrategyContext {\n return inject(FLOATING_PANEL_RENDER_STRATEGY_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 * as floatingPanel from \"@wirekyt/dom/machines/floating-panel\";\n\ntype OptionalId<T extends { id: string }> = Omit<T, \"id\"> & { id?: string };\n\nexport interface UseFloatingPanelProps extends OptionalId<\n Omit<floatingPanel.Props, \"dir\" | \"getRootNode\">\n> {}\n\nexport type UseFloatingPanelReturn = UseMachineReturn<\n floatingPanel.Service[\"state\"],\n floatingPanel.Api,\n floatingPanel.Service\n>;\n\nexport interface UseFloatingPanelOptions {\n context: () => UseFloatingPanelProps;\n}\n\ntype FloatingPanelContext = Record<string, unknown>;\ntype FloatingPanelSchema = floatingPanel.Machine extends Machine<infer TSchema> ? TSchema : never;\n\nexport function useFloatingPanel(options: UseFloatingPanelOptions): UseFloatingPanelReturn {\n const locale = injectLocale();\n const environment = injectEnvironment();\n const fallbackId = createId();\n\n return useMachine<FloatingPanelSchema, floatingPanel.Api>({\n machine: floatingPanel.machine,\n context: () => {\n const props = options.context();\n return {\n ...props,\n dir: locale.dir,\n getRootNode: environment.getRootNode,\n id: props.id ?? fallbackId,\n } as FloatingPanelContext;\n },\n connect: (service, normalize) => floatingPanel.connect(service, normalize),\n });\n}\n","import type { ContextCarrier } from \"@wirekyt/angular\";\nimport type * as floatingPanel from \"@wirekyt/dom/machines/floating-panel\";\n\nimport {\n Directive,\n EnvironmentInjector,\n Injector,\n type ProviderToken,\n booleanAttribute,\n forwardRef,\n inject,\n input,\n model,\n output,\n type InputSignal,\n type InputSignalWithTransform,\n type ModelSignal,\n type OutputEmitterRef,\n type Signal,\n} from \"@angular/core\";\nimport { buildRootCarrier } from \"@wirekyt/angular\";\nimport { PRESENCE_CONTEXT, PresenceBase } from \"@wirekyt/angular/presence\";\n\nimport type {\n FloatingPanelAnchorPositionDetails,\n FloatingPanelElementIds,\n FloatingPanelIntlTranslations,\n FloatingPanelOpenChangeDetails,\n FloatingPanelPoint,\n FloatingPanelPositionChangeDetails,\n FloatingPanelSize,\n FloatingPanelSizeChangeDetails,\n FloatingPanelStageChangeDetails,\n} from \"./types\";\n\nimport { useFloatingPanel, type UseFloatingPanelReturn } from \"./use\";\nimport {\n FLOATING_PANEL_CONTEXT,\n FLOATING_PANEL_CONTEXT_CARRIER,\n FLOATING_PANEL_RENDER_STRATEGY_CONTEXT,\n} from \"./use-context\";\n\nconst arePointsEqual = (left: FloatingPanelPoint | undefined, right: FloatingPanelPoint): boolean =>\n left !== undefined && Object.is(left.x, right.x) && Object.is(left.y, right.y);\n\nconst areSizesEqual = (left: FloatingPanelSize | undefined, right: FloatingPanelSize): boolean =>\n left !== undefined && Object.is(left.width, right.width) && Object.is(left.height, right.height);\n\nconst areDetailsEqual = (left: unknown, right: unknown): boolean =>\n JSON.stringify(left) === JSON.stringify(right);\n\n@Directive({\n selector: \"[floating-panel-root]\",\n standalone: true,\n exportAs: \"floatingPanelRoot\",\n providers: [\n {\n provide: PRESENCE_CONTEXT,\n useFactory: (root: FloatingPanelRoot) => root.presence,\n deps: [forwardRef(() => FloatingPanelRoot)],\n },\n {\n provide: FLOATING_PANEL_RENDER_STRATEGY_CONTEXT,\n useExisting: forwardRef(() => FloatingPanelRoot),\n },\n { provide: FLOATING_PANEL_CONTEXT, useExisting: forwardRef(() => FloatingPanelRoot) },\n {\n provide: FLOATING_PANEL_CONTEXT_CARRIER,\n useFactory: (root: FloatingPanelRoot) => root.getContextCarrier(),\n deps: [forwardRef(() => FloatingPanelRoot)],\n },\n ],\n})\nexport class FloatingPanelRoot extends PresenceBase implements UseFloatingPanelReturn {\n /** The unique identifier of the floating panel. */\n readonly id: InputSignal<string | undefined> = input<string | undefined>(undefined);\n /** The ids of the floating panel elements. Useful for composition. */\n readonly ids: InputSignal<Partial<FloatingPanelElementIds> | undefined> = input<\n Partial<FloatingPanelElementIds> | undefined\n >(undefined);\n /** The controlled open state of the floating panel. */\n readonly open: ModelSignal<boolean | undefined> = model<boolean | undefined>(undefined);\n /** The initial open state of the floating panel when uncontrolled. */\n readonly defaultOpen: InputSignalWithTransform<boolean, unknown> = input(false, {\n transform: booleanAttribute,\n });\n /** The controlled position of the floating panel. */\n readonly position: ModelSignal<FloatingPanelPoint | undefined> = model<\n FloatingPanelPoint | undefined\n >(undefined);\n /** The initial position of the floating panel when uncontrolled. */\n readonly defaultPosition: InputSignal<FloatingPanelPoint | undefined> = input<\n FloatingPanelPoint | undefined\n >(undefined);\n /** The controlled size of the floating panel. */\n readonly size: ModelSignal<FloatingPanelSize | undefined> = model<FloatingPanelSize | undefined>(\n undefined,\n );\n /** The initial size of the floating panel when uncontrolled. */\n readonly defaultSize: InputSignal<FloatingPanelSize | undefined> = input<\n FloatingPanelSize | undefined\n >(undefined);\n /** The minimum size of the floating panel. */\n readonly minSize: InputSignal<FloatingPanelSize | undefined> = input<\n FloatingPanelSize | undefined\n >(undefined);\n /** The maximum size of the floating panel. */\n readonly maxSize: InputSignal<FloatingPanelSize | undefined> = input<\n FloatingPanelSize | undefined\n >(undefined);\n /** The positioning strategy to use. */\n readonly strategy: InputSignal<floatingPanel.Props[\"strategy\"]> =\n input<floatingPanel.Props[\"strategy\"]>(\"fixed\");\n /** Whether the panel may overflow the boundary while dragging. */\n readonly allowOverflow: InputSignalWithTransform<boolean, unknown> = input(true, {\n transform: booleanAttribute,\n });\n /** Whether the floating panel is draggable. */\n readonly draggable: InputSignalWithTransform<boolean, unknown> = input(true, {\n transform: booleanAttribute,\n });\n /** Whether the floating panel is resizable. */\n readonly resizable: InputSignalWithTransform<boolean, unknown> = input(true, {\n transform: booleanAttribute,\n });\n /** Whether resizing locks the panel to its aspect ratio. */\n readonly lockAspectRatio: InputSignalWithTransform<boolean, unknown> = input(false, {\n transform: booleanAttribute,\n });\n /** Whether the floating panel closes when the escape key is pressed. */\n readonly closeOnEscape: InputSignalWithTransform<boolean, unknown> = input(false, {\n transform: booleanAttribute,\n });\n /** Whether focus should be restored when the floating panel closes. */\n readonly restoreFocus: InputSignalWithTransform<boolean, unknown> = input(true, {\n transform: booleanAttribute,\n });\n /** Whether the floating panel is disabled. */\n readonly disabled: InputSignalWithTransform<boolean, unknown> = input(false, {\n transform: booleanAttribute,\n });\n /** Whether size and position should be preserved when the floating panel closes. */\n readonly persistRect: InputSignalWithTransform<boolean, unknown> = input(false, {\n transform: booleanAttribute,\n });\n /** The snap grid for dragging and keyboard movement. */\n readonly gridSize: InputSignal<number | undefined> = input<number | undefined>(1);\n /** Localized strings for control labels. */\n readonly translations: InputSignal<FloatingPanelIntlTranslations | undefined> = input<\n FloatingPanelIntlTranslations | undefined\n >(undefined);\n /** Function that returns the initial panel position when opened. */\n readonly getAnchorPosition: InputSignal<\n ((details: FloatingPanelAnchorPositionDetails) => FloatingPanelPoint) | undefined\n > = input<((details: FloatingPanelAnchorPositionDetails) => FloatingPanelPoint) | undefined>(\n undefined,\n );\n /** Function that returns the boundary element for dragging and resizing. */\n readonly getBoundaryEl: InputSignal<(() => HTMLElement | null) | undefined> = input<\n (() => HTMLElement | null) | undefined\n >(undefined);\n /** Element to receive focus when the floating panel opens. */\n readonly initialFocusEl: InputSignal<(() => HTMLElement | null) | undefined> = input<\n (() => HTMLElement | null) | undefined\n >(undefined);\n /** Element to receive focus when the floating panel closes. */\n readonly finalFocusEl: InputSignal<(() => HTMLElement | null) | undefined> = input<\n (() => HTMLElement | null) | undefined\n >(undefined);\n\n /** Emits details when the panel open state changes. */\n readonly openChangeDetails: OutputEmitterRef<FloatingPanelOpenChangeDetails> =\n output<FloatingPanelOpenChangeDetails>();\n /** Emits details when the panel position changes via dragging or API calls. */\n readonly positionDetailsChange: OutputEmitterRef<FloatingPanelPositionChangeDetails> =\n output<FloatingPanelPositionChangeDetails>();\n /** Emits details when a position-changing drag interaction ends. */\n readonly positionChangeEnd: OutputEmitterRef<FloatingPanelPositionChangeDetails> =\n output<FloatingPanelPositionChangeDetails>();\n /** Emits details when the panel size changes via resizing or API calls. */\n readonly sizeDetailsChange: OutputEmitterRef<FloatingPanelSizeChangeDetails> =\n output<FloatingPanelSizeChangeDetails>();\n /** Emits details when a size-changing resize interaction ends. */\n readonly sizeChangeEnd: OutputEmitterRef<FloatingPanelSizeChangeDetails> =\n output<FloatingPanelSizeChangeDetails>();\n /** Emits details when the panel stage changes. */\n readonly stageChange: OutputEmitterRef<FloatingPanelStageChangeDetails> =\n output<FloatingPanelStageChangeDetails>();\n\n private lastPositionDetails: FloatingPanelPositionChangeDetails | undefined;\n private lastPositionEndDetails: FloatingPanelPositionChangeDetails | undefined;\n private lastSizeDetails: FloatingPanelSizeChangeDetails | undefined;\n private lastSizeEndDetails: FloatingPanelSizeChangeDetails | undefined;\n private lastStageDetails: FloatingPanelStageChangeDetails | undefined;\n\n private readonly machine = useFloatingPanel({\n context: () => ({\n id: this.id(),\n ids: this.ids(),\n open: this.open(),\n defaultOpen: this.defaultOpen(),\n position: this.position(),\n defaultPosition: this.defaultPosition(),\n size: this.size(),\n defaultSize: this.defaultSize(),\n minSize: this.minSize(),\n maxSize: this.maxSize(),\n strategy: this.strategy(),\n allowOverflow: this.allowOverflow(),\n draggable: this.draggable(),\n resizable: this.resizable(),\n lockAspectRatio: this.lockAspectRatio(),\n closeOnEscape: this.closeOnEscape(),\n restoreFocus: this.restoreFocus(),\n disabled: this.disabled(),\n persistRect: this.persistRect(),\n gridSize: this.gridSize(),\n translations: this.translations(),\n getAnchorPosition: this.getAnchorPosition(),\n getBoundaryEl: this.getBoundaryEl(),\n initialFocusEl: this.initialFocusEl(),\n finalFocusEl: this.finalFocusEl(),\n onOpenChange: (details) => {\n if (this.open() !== details.open) {\n this.open.set(details.open);\n }\n this.openChangeDetails.emit(details);\n },\n onPositionChange: (details) => {\n if (areDetailsEqual(this.lastPositionDetails, details)) return;\n this.lastPositionDetails = details;\n if (!arePointsEqual(this.position(), details.position)) {\n this.position.set({ ...details.position });\n }\n this.positionDetailsChange.emit(details);\n },\n onPositionChangeEnd: (details) => {\n if (areDetailsEqual(this.lastPositionEndDetails, details)) return;\n this.lastPositionEndDetails = details;\n this.positionChangeEnd.emit(details);\n },\n onSizeChange: (details) => {\n if (areDetailsEqual(this.lastSizeDetails, details)) return;\n this.lastSizeDetails = details;\n if (!areSizesEqual(this.size(), details.size)) {\n this.size.set({ ...details.size });\n }\n this.sizeDetailsChange.emit(details);\n },\n onSizeChangeEnd: (details) => {\n if (areDetailsEqual(this.lastSizeEndDetails, details)) return;\n this.lastSizeEndDetails = details;\n this.sizeChangeEnd.emit(details);\n },\n onStageChange: (details) => {\n if (areDetailsEqual(this.lastStageDetails, details)) return;\n this.lastStageDetails = details;\n this.stageChange.emit(details);\n },\n }),\n });\n\n readonly state: Signal<floatingPanel.Service[\"state\"]> = this.machine.state;\n readonly api: Signal<floatingPanel.Api> = this.machine.api;\n readonly service: floatingPanel.Service = this.machine.service;\n readonly send: floatingPanel.Service[\"send\"] = this.machine.send;\n readonly presence = this.createPresence(() => this.api().open);\n\n protected readonly contextCarrier: ContextCarrier<FloatingPanelRoot> =\n buildRootCarrier<FloatingPanelRoot>({\n providers: [\n { provide: PRESENCE_CONTEXT, useValue: this.presence },\n { provide: FLOATING_PANEL_RENDER_STRATEGY_CONTEXT, useValue: this },\n ],\n root: this,\n rootToken: FLOATING_PANEL_CONTEXT as ProviderToken<FloatingPanelRoot>,\n originInjector: inject(Injector),\n environmentInjector: inject(EnvironmentInjector),\n });\n\n /** @internal Exposed for floating panel part directives to consume through portals. */\n getContextCarrier(): ContextCarrier<FloatingPanelRoot> {\n return this.contextCarrier;\n }\n}\n","import type { ContextCarrier } from \"@wirekyt/angular\";\nimport type * as floatingPanel from \"@wirekyt/dom/machines/floating-panel\";\n\nimport {\n Directive,\n EnvironmentInjector,\n Injector,\n type InputSignal,\n type ProviderToken,\n type Signal,\n computed,\n forwardRef,\n inject,\n input,\n} from \"@angular/core\";\nimport { buildRootCarrier } from \"@wirekyt/angular\";\nimport { PRESENCE_CONTEXT, PresenceBase } from \"@wirekyt/angular/presence\";\n\nimport type { UseFloatingPanelReturn } from \"./use\";\n\nimport {\n FLOATING_PANEL_CONTEXT,\n FLOATING_PANEL_CONTEXT_CARRIER,\n FLOATING_PANEL_RENDER_STRATEGY_CONTEXT,\n} from \"./use-context\";\n\n@Directive({\n selector: \"[floating-panel-root-provider]\",\n standalone: true,\n exportAs: \"floatingPanelRootProvider\",\n providers: [\n {\n provide: PRESENCE_CONTEXT,\n useFactory: (provider: FloatingPanelRootProvider) => provider.presence,\n deps: [forwardRef(() => FloatingPanelRootProvider)],\n },\n {\n provide: FLOATING_PANEL_RENDER_STRATEGY_CONTEXT,\n useExisting: forwardRef(() => FloatingPanelRootProvider),\n },\n {\n provide: FLOATING_PANEL_CONTEXT,\n useExisting: forwardRef(() => FloatingPanelRootProvider),\n },\n {\n provide: FLOATING_PANEL_CONTEXT_CARRIER,\n useFactory: (provider: FloatingPanelRootProvider) => provider.getContextCarrier(),\n deps: [forwardRef(() => FloatingPanelRootProvider)],\n },\n ],\n})\nexport class FloatingPanelRootProvider extends PresenceBase implements UseFloatingPanelReturn {\n /** The floating panel machine returned by useFloatingPanel(). */\n readonly value: InputSignal<UseFloatingPanelReturn> = input.required<UseFloatingPanelReturn>();\n readonly state: Signal<floatingPanel.Service[\"state\"]> = computed(() => this.value().state());\n readonly api: Signal<floatingPanel.Api> = computed(() => this.value().api());\n readonly send: floatingPanel.Service[\"send\"] = (event) => this.value().send(event);\n\n get service(): floatingPanel.Service {\n return this.value().service;\n }\n\n readonly presence = this.createPresence(() => {\n try {\n return this.api().open;\n } catch {\n return false;\n }\n });\n\n protected readonly contextCarrier: ContextCarrier<FloatingPanelRootProvider> =\n buildRootCarrier<FloatingPanelRootProvider>({\n providers: [\n { provide: PRESENCE_CONTEXT, useValue: this.presence },\n { provide: FLOATING_PANEL_RENDER_STRATEGY_CONTEXT, useValue: this },\n ],\n root: this,\n rootToken: FLOATING_PANEL_CONTEXT as ProviderToken<FloatingPanelRootProvider>,\n originInjector: inject(Injector),\n environmentInjector: inject(EnvironmentInjector),\n });\n\n /** @internal Exposed for floating panel part directives to consume through portals. */\n getContextCarrier(): ContextCarrier<FloatingPanelRootProvider> {\n return this.contextCarrier;\n }\n}\n","import { DestroyRef, Directive, ElementRef, Renderer2, inject } from \"@angular/core\";\nimport { bindProps } from \"@wirekyt/angular\";\n\nimport { injectFloatingPanelContext } from \"./use-context\";\n\n@Directive({\n selector: \"[floating-panel-trigger]\",\n standalone: true,\n exportAs: \"floatingPanelTrigger\",\n})\nexport class FloatingPanelTrigger {\n constructor() {\n const context = injectFloatingPanelContext();\n bindProps({\n elementRef: inject(ElementRef),\n renderer: inject(Renderer2),\n destroyRef: inject(DestroyRef),\n props: () => context.api().getTriggerProps(),\n });\n }\n}\n","import {\n DestroyRef,\n Directive,\n ElementRef,\n EmbeddedViewRef,\n Renderer2,\n TemplateRef,\n ViewContainerRef,\n effect,\n inject,\n} from \"@angular/core\";\nimport { bindProps } from \"@wirekyt/angular\";\nimport { injectPresenceContext } from \"@wirekyt/angular/presence\";\n\nimport { injectFloatingPanelContext } from \"./use-context\";\n\n@Directive({\n selector: \"[floating-panel-positioner]\",\n standalone: true,\n exportAs: \"floatingPanelPositioner\",\n})\nexport class FloatingPanelPositioner {\n constructor() {\n const context = injectFloatingPanelContext();\n const presence = injectPresenceContext();\n const template = inject(TemplateRef<unknown>, { optional: true });\n const container = inject(ViewContainerRef);\n const host = inject(ElementRef);\n const elementRef = template ? { nativeElement: null as HTMLElement | null } : host;\n let view: EmbeddedViewRef<unknown> | undefined;\n\n effect(() => {\n const unmounted = presence.unmounted();\n if (template) {\n if (unmounted) {\n elementRef.nativeElement = null;\n container.clear();\n view = undefined;\n } else if (!view) {\n view = container.createEmbeddedView(template);\n elementRef.nativeElement =\n view.rootNodes.find((node: Node) => node.nodeType === 1) ?? null;\n }\n }\n });\n\n bindProps({\n elementRef,\n renderer: inject(Renderer2),\n destroyRef: inject(DestroyRef),\n props: () => {\n const unmounted = presence.unmounted();\n return { ...context.api().getPositionerProps(), hidden: unmounted };\n },\n });\n }\n}\n","import {\n DestroyRef,\n Directive,\n ElementRef,\n EmbeddedViewRef,\n Renderer2,\n TemplateRef,\n ViewContainerRef,\n effect,\n inject,\n untracked,\n} from \"@angular/core\";\nimport { bindProps } from \"@wirekyt/angular\";\nimport { injectPresenceContext } from \"@wirekyt/angular/presence\";\n\nimport { injectFloatingPanelContext } from \"./use-context\";\n\n@Directive({\n selector: \"[floating-panel-content]\",\n standalone: true,\n exportAs: \"floatingPanelContent\",\n})\nexport class FloatingPanelContent {\n constructor() {\n const context = injectFloatingPanelContext();\n const presence = injectPresenceContext();\n const template = inject(TemplateRef<unknown>, { optional: true });\n const container = inject(ViewContainerRef);\n const host = inject(ElementRef);\n const elementRef = template ? { nativeElement: null as HTMLElement | null } : host;\n let view: EmbeddedViewRef<unknown> | undefined;\n\n effect(() => {\n const unmounted = presence.unmounted();\n if (template) {\n if (unmounted) {\n elementRef.nativeElement = null;\n container.clear();\n view = undefined;\n } else if (!view) {\n view = container.createEmbeddedView(template);\n elementRef.nativeElement =\n view.rootNodes.find((node: Node) => node.nodeType === 1) ?? null;\n }\n }\n untracked(() => presence.setNode(elementRef.nativeElement));\n });\n\n bindProps({\n elementRef,\n renderer: inject(Renderer2),\n destroyRef: inject(DestroyRef),\n props: () => {\n presence.unmounted();\n return { ...context.api().getContentProps(), ...presence.getPresenceProps() };\n },\n });\n }\n}\n","import { DestroyRef, Directive, ElementRef, Renderer2, inject } from \"@angular/core\";\nimport { bindProps } from \"@wirekyt/angular\";\n\nimport { injectFloatingPanelContext } from \"./use-context\";\n\n@Directive({\n selector: \"[floating-panel-control]\",\n standalone: true,\n exportAs: \"floatingPanelControl\",\n})\nexport class FloatingPanelControl {\n constructor() {\n const context = injectFloatingPanelContext();\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 { injectFloatingPanelContext } from \"./use-context\";\n\n@Directive({\n selector: \"[floating-panel-header]\",\n standalone: true,\n exportAs: \"floatingPanelHeader\",\n})\nexport class FloatingPanelHeader {\n constructor() {\n const context = injectFloatingPanelContext();\n bindProps({\n elementRef: inject(ElementRef),\n renderer: inject(Renderer2),\n destroyRef: inject(DestroyRef),\n props: () => context.api().getHeaderProps(),\n });\n }\n}\n","import { DestroyRef, Directive, ElementRef, Renderer2, inject } from \"@angular/core\";\nimport { bindProps } from \"@wirekyt/angular\";\n\nimport { injectFloatingPanelContext } from \"./use-context\";\n\n@Directive({\n selector: \"[floating-panel-body]\",\n standalone: true,\n exportAs: \"floatingPanelBody\",\n})\nexport class FloatingPanelBody {\n constructor() {\n const context = injectFloatingPanelContext();\n bindProps({\n elementRef: inject(ElementRef),\n renderer: inject(Renderer2),\n destroyRef: inject(DestroyRef),\n props: () => context.api().getBodyProps(),\n });\n }\n}\n","import { DestroyRef, Directive, ElementRef, Renderer2, inject } from \"@angular/core\";\nimport { bindProps } from \"@wirekyt/angular\";\n\nimport { injectFloatingPanelContext } from \"./use-context\";\n\n@Directive({\n selector: \"[floating-panel-title]\",\n standalone: true,\n exportAs: \"floatingPanelTitle\",\n})\nexport class FloatingPanelTitle {\n constructor() {\n const context = injectFloatingPanelContext();\n bindProps({\n elementRef: inject(ElementRef),\n renderer: inject(Renderer2),\n destroyRef: inject(DestroyRef),\n props: () => context.api().getTitleProps(),\n });\n }\n}\n","import { DestroyRef, Directive, ElementRef, Renderer2, inject } from \"@angular/core\";\nimport { bindProps } from \"@wirekyt/angular\";\n\nimport { injectFloatingPanelContext } from \"./use-context\";\n\n@Directive({\n selector: \"[floating-panel-close-trigger]\",\n standalone: true,\n exportAs: \"floatingPanelCloseTrigger\",\n})\nexport class FloatingPanelCloseTrigger {\n constructor() {\n const context = injectFloatingPanelContext();\n bindProps({\n elementRef: inject(ElementRef),\n renderer: inject(Renderer2),\n destroyRef: inject(DestroyRef),\n props: () => context.api().getCloseTriggerProps(),\n });\n }\n}\n","import { DestroyRef, Directive, ElementRef, Renderer2, inject } from \"@angular/core\";\nimport { bindProps } from \"@wirekyt/angular\";\n\nimport { injectFloatingPanelContext } from \"./use-context\";\n\n@Directive({\n selector: \"[floating-panel-drag-trigger]\",\n standalone: true,\n exportAs: \"floatingPanelDragTrigger\",\n})\nexport class FloatingPanelDragTrigger {\n constructor() {\n const context = injectFloatingPanelContext();\n bindProps({\n elementRef: inject(ElementRef),\n renderer: inject(Renderer2),\n destroyRef: inject(DestroyRef),\n props: () => context.api().getDragTriggerProps(),\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 type { FloatingPanelResizeTriggerAxis } from \"./types\";\n\nimport { injectFloatingPanelContext } from \"./use-context\";\n\n@Directive({\n selector: \"[floating-panel-resize-trigger]\",\n standalone: true,\n exportAs: \"floatingPanelResizeTrigger\",\n})\nexport class FloatingPanelResizeTrigger {\n /** The axis of the resize handle. */\n readonly axis: InputSignal<FloatingPanelResizeTriggerAxis> =\n input.required<FloatingPanelResizeTriggerAxis>();\n\n constructor() {\n const context = injectFloatingPanelContext();\n bindProps({\n elementRef: inject(ElementRef),\n renderer: inject(Renderer2),\n destroyRef: inject(DestroyRef),\n props: () => context.api().getResizeTriggerProps({ axis: this.axis() }),\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 type { FloatingPanelStage } from \"./types\";\n\nimport { injectFloatingPanelContext } from \"./use-context\";\n\n@Directive({\n selector: \"[floating-panel-stage-trigger]\",\n standalone: true,\n exportAs: \"floatingPanelStageTrigger\",\n})\nexport class FloatingPanelStageTrigger {\n /** The stage to apply when the trigger is clicked. */\n readonly stage: InputSignal<FloatingPanelStage> = input.required<FloatingPanelStage>();\n\n constructor() {\n const context = injectFloatingPanelContext();\n bindProps({\n elementRef: inject(ElementRef),\n renderer: inject(Renderer2),\n destroyRef: inject(DestroyRef),\n props: () => context.api().getStageTriggerProps({ stage: this.stage() }),\n });\n }\n}\n","import { Directive, TemplateRef, ViewContainerRef, effect, inject } from \"@angular/core\";\n\nimport type { UseFloatingPanelReturn } from \"./use\";\n\nimport { injectFloatingPanelContext } from \"./use-context\";\n\nexport interface FloatingPanelContextTemplate {\n $implicit: UseFloatingPanelReturn[\"api\"];\n api: UseFloatingPanelReturn[\"api\"];\n}\n\n@Directive({\n selector: \"[floating-panel-context]\",\n standalone: true,\n exportAs: \"floatingPanelContext\",\n})\nexport class FloatingPanelContext {\n static ngTemplateContextGuard(\n _directive: FloatingPanelContext,\n context: unknown,\n ): context is FloatingPanelContextTemplate {\n void context;\n return true;\n }\n\n private readonly floatingPanel = injectFloatingPanelContext();\n private readonly templateRef = inject<TemplateRef<FloatingPanelContextTemplate>>(TemplateRef);\n private readonly viewContainer = inject(ViewContainerRef);\n\n constructor() {\n const view = this.viewContainer.createEmbeddedView(this.templateRef, {\n $implicit: this.floatingPanel.api,\n api: this.floatingPanel.api,\n });\n\n effect(() => {\n this.floatingPanel.api();\n view.detectChanges();\n });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wirekyt/angular",
3
- "version": "0.0.18",
3
+ "version": "0.0.19",
4
4
  "description": "Angular adapter for Wirekyt",
5
5
  "files": [
6
6
  "dist",
@@ -87,6 +87,10 @@
87
87
  "types": "./types/wirekyt-angular-fieldset.d.ts",
88
88
  "default": "./fesm2022/wirekyt-angular-fieldset.mjs"
89
89
  },
90
+ "./floating-panel": {
91
+ "types": "./types/wirekyt-angular-floating-panel.d.ts",
92
+ "default": "./fesm2022/wirekyt-angular-floating-panel.mjs"
93
+ },
90
94
  "./presence": {
91
95
  "types": "./types/wirekyt-angular-presence.d.ts",
92
96
  "default": "./fesm2022/wirekyt-angular-presence.mjs"
@@ -9,7 +9,7 @@ import { PresenceBase } from '@wirekyt/angular/presence';
9
9
  import { ControlValueAccessor } from '@angular/forms';
10
10
  import { ColorStringFormat } from '@wirekyt/dom/color-utils';
11
11
 
12
- declare const colorPickerAnatomy: _wirekyt_dom_anatomy.Anatomy<"root" | "trigger" | "label" | "valueText" | "control" | "content" | "area" | "positioner" | "formatSelect" | "areaThumb" | "channelInput" | "channelSliderTrack" | "channelSliderThumb" | "areaBackground" | "channelSlider" | "channelSliderLabel" | "channelSliderValueText" | "transparencyGrid" | "swatchGroup" | "swatchTrigger" | "swatchIndicator" | "swatch" | "eyeDropperTrigger" | "formatTrigger">;
12
+ declare const colorPickerAnatomy: _wirekyt_dom_anatomy.Anatomy<"root" | "label" | "valueText" | "control" | "area" | "trigger" | "content" | "positioner" | "areaThumb" | "areaBackground" | "channelSlider" | "channelSliderLabel" | "channelSliderTrack" | "channelSliderThumb" | "channelSliderValueText" | "channelInput" | "transparencyGrid" | "swatchGroup" | "swatchTrigger" | "swatchIndicator" | "swatch" | "eyeDropperTrigger" | "formatTrigger" | "formatSelect">;
13
13
 
14
14
  declare class ColorPickerArea {
15
15
  readonly xChannel: InputSignal<colorPicker.ColorChannel | undefined>;
@@ -13,7 +13,7 @@ import { PresenceBase } from '@wirekyt/angular/presence';
13
13
  import { ControlValueAccessor } from '@angular/forms';
14
14
  import * as _wirekyt_angular_combobox from '@wirekyt/angular/combobox';
15
15
 
16
- declare const comboboxAnatomy: _wirekyt_dom_anatomy.AnatomyInstance<"root" | "trigger" | "label" | "item" | "input" | "control" | "itemGroup" | "clearTrigger" | "content" | "list" | "itemIndicator" | "positioner" | "itemText" | "itemGroupLabel" | "empty">;
16
+ declare const comboboxAnatomy: _wirekyt_dom_anatomy.AnatomyInstance<"root" | "label" | "control" | "input" | "item" | "trigger" | "itemGroup" | "clearTrigger" | "content" | "list" | "itemIndicator" | "itemText" | "positioner" | "itemGroupLabel" | "empty">;
17
17
 
18
18
  type ComboboxSchema<T extends CollectionItem = CollectionItem> = Machine<T> extends Machine$1<infer S> ? S : never;
19
19
 
@@ -9,7 +9,7 @@ import * as _wirekyt_angular_presence from '@wirekyt/angular/presence';
9
9
  import { PresenceBase } from '@wirekyt/angular/presence';
10
10
  import { ControlValueAccessor } from '@angular/forms';
11
11
 
12
- declare const datePickerAnatomy: _wirekyt_dom_anatomy.AnatomyInstance<"root" | "trigger" | "label" | "input" | "view" | "control" | "clearTrigger" | "nextTrigger" | "prevTrigger" | "content" | "table" | "positioner" | "tableHeader" | "tableBody" | "tableRow" | "viewTrigger" | "monthSelect" | "yearSelect" | "presetTrigger" | "rangeText" | "tableCell" | "tableCellTrigger" | "tableHead" | "viewControl" | "valueText">;
12
+ declare const datePickerAnatomy: _wirekyt_dom_anatomy.AnatomyInstance<"root" | "label" | "control" | "input" | "table" | "view" | "prevTrigger" | "nextTrigger" | "trigger" | "clearTrigger" | "content" | "positioner" | "monthSelect" | "presetTrigger" | "rangeText" | "tableBody" | "tableCell" | "tableCellTrigger" | "tableHead" | "tableHeader" | "tableRow" | "viewControl" | "viewTrigger" | "yearSelect" | "valueText">;
13
13
 
14
14
  type OptionalId<T extends {
15
15
  id?: string | undefined;
@@ -0,0 +1,216 @@
1
+ import * as floatingPanel from '@wirekyt/dom/machines/floating-panel';
2
+ import { ElementIds, Point, Size, IntlTranslations, AnchorPositionDetails, OpenChangeDetails, PositionChangeDetails, SizeChangeDetails, StageChangeDetails, ResizeTriggerAxis, Stage } from '@wirekyt/dom/machines/floating-panel';
3
+ export { AnchorPositionDetails as FloatingPanelAnchorPositionDetails, Api as FloatingPanelApi, ElementIds as FloatingPanelElementIds, IntlTranslations as FloatingPanelIntlTranslations, Machine as FloatingPanelMachine, Props as FloatingPanelMachineProps, OpenChangeDetails as FloatingPanelOpenChangeDetails, Point as FloatingPanelPoint, PositionChangeDetails as FloatingPanelPositionChangeDetails, ResizeTriggerAxis as FloatingPanelResizeTriggerAxis, ResizeTriggerProps as FloatingPanelResizeTriggerProps, Service as FloatingPanelService, Size as FloatingPanelSize, SizeChangeDetails as FloatingPanelSizeChangeDetails, Stage as FloatingPanelStage, StageChangeDetails as FloatingPanelStageChangeDetails, StageTriggerProps as FloatingPanelStageTriggerProps, anatomy as floatingPanelAnatomy, resizeTriggerAxes } from '@wirekyt/dom/machines/floating-panel';
4
+ import { UseMachineReturn, ContextCarrier } from '@wirekyt/angular';
5
+ import * as i0 from '@angular/core';
6
+ import { InjectionToken, Signal, InputSignal, ModelSignal, InputSignalWithTransform, OutputEmitterRef } from '@angular/core';
7
+ import * as _wirekyt_angular_presence from '@wirekyt/angular/presence';
8
+ import { PresenceBase } from '@wirekyt/angular/presence';
9
+
10
+ type OptionalId<T extends {
11
+ id: string;
12
+ }> = Omit<T, "id"> & {
13
+ id?: string;
14
+ };
15
+ interface UseFloatingPanelProps extends OptionalId<Omit<floatingPanel.Props, "dir" | "getRootNode">> {
16
+ }
17
+ type UseFloatingPanelReturn = UseMachineReturn<floatingPanel.Service["state"], floatingPanel.Api, floatingPanel.Service>;
18
+ interface UseFloatingPanelOptions {
19
+ context: () => UseFloatingPanelProps;
20
+ }
21
+ declare function useFloatingPanel(options: UseFloatingPanelOptions): UseFloatingPanelReturn;
22
+
23
+ declare const FLOATING_PANEL_CONTEXT: InjectionToken<UseFloatingPanelReturn>;
24
+ declare function injectFloatingPanelContext(): UseFloatingPanelReturn;
25
+ declare const FLOATING_PANEL_CONTEXT_CARRIER: InjectionToken<ContextCarrier<UseFloatingPanelReturn>>;
26
+ declare function injectFloatingPanelContextCarrier(): ContextCarrier<UseFloatingPanelReturn>;
27
+ interface FloatingPanelRenderStrategyContext {
28
+ readonly lazyMount: Signal<boolean>;
29
+ readonly unmountOnExit: Signal<boolean>;
30
+ }
31
+ declare const FLOATING_PANEL_RENDER_STRATEGY_CONTEXT: InjectionToken<FloatingPanelRenderStrategyContext>;
32
+ declare function injectFloatingPanelRenderStrategyContext(): FloatingPanelRenderStrategyContext;
33
+
34
+ declare class FloatingPanelRoot extends PresenceBase implements UseFloatingPanelReturn {
35
+ /** The unique identifier of the floating panel. */
36
+ readonly id: InputSignal<string | undefined>;
37
+ /** The ids of the floating panel elements. Useful for composition. */
38
+ readonly ids: InputSignal<Partial<ElementIds> | undefined>;
39
+ /** The controlled open state of the floating panel. */
40
+ readonly open: ModelSignal<boolean | undefined>;
41
+ /** The initial open state of the floating panel when uncontrolled. */
42
+ readonly defaultOpen: InputSignalWithTransform<boolean, unknown>;
43
+ /** The controlled position of the floating panel. */
44
+ readonly position: ModelSignal<Point | undefined>;
45
+ /** The initial position of the floating panel when uncontrolled. */
46
+ readonly defaultPosition: InputSignal<Point | undefined>;
47
+ /** The controlled size of the floating panel. */
48
+ readonly size: ModelSignal<Size | undefined>;
49
+ /** The initial size of the floating panel when uncontrolled. */
50
+ readonly defaultSize: InputSignal<Size | undefined>;
51
+ /** The minimum size of the floating panel. */
52
+ readonly minSize: InputSignal<Size | undefined>;
53
+ /** The maximum size of the floating panel. */
54
+ readonly maxSize: InputSignal<Size | undefined>;
55
+ /** The positioning strategy to use. */
56
+ readonly strategy: InputSignal<floatingPanel.Props["strategy"]>;
57
+ /** Whether the panel may overflow the boundary while dragging. */
58
+ readonly allowOverflow: InputSignalWithTransform<boolean, unknown>;
59
+ /** Whether the floating panel is draggable. */
60
+ readonly draggable: InputSignalWithTransform<boolean, unknown>;
61
+ /** Whether the floating panel is resizable. */
62
+ readonly resizable: InputSignalWithTransform<boolean, unknown>;
63
+ /** Whether resizing locks the panel to its aspect ratio. */
64
+ readonly lockAspectRatio: InputSignalWithTransform<boolean, unknown>;
65
+ /** Whether the floating panel closes when the escape key is pressed. */
66
+ readonly closeOnEscape: InputSignalWithTransform<boolean, unknown>;
67
+ /** Whether focus should be restored when the floating panel closes. */
68
+ readonly restoreFocus: InputSignalWithTransform<boolean, unknown>;
69
+ /** Whether the floating panel is disabled. */
70
+ readonly disabled: InputSignalWithTransform<boolean, unknown>;
71
+ /** Whether size and position should be preserved when the floating panel closes. */
72
+ readonly persistRect: InputSignalWithTransform<boolean, unknown>;
73
+ /** The snap grid for dragging and keyboard movement. */
74
+ readonly gridSize: InputSignal<number | undefined>;
75
+ /** Localized strings for control labels. */
76
+ readonly translations: InputSignal<IntlTranslations | undefined>;
77
+ /** Function that returns the initial panel position when opened. */
78
+ readonly getAnchorPosition: InputSignal<((details: AnchorPositionDetails) => Point) | undefined>;
79
+ /** Function that returns the boundary element for dragging and resizing. */
80
+ readonly getBoundaryEl: InputSignal<(() => HTMLElement | null) | undefined>;
81
+ /** Element to receive focus when the floating panel opens. */
82
+ readonly initialFocusEl: InputSignal<(() => HTMLElement | null) | undefined>;
83
+ /** Element to receive focus when the floating panel closes. */
84
+ readonly finalFocusEl: InputSignal<(() => HTMLElement | null) | undefined>;
85
+ /** Emits details when the panel open state changes. */
86
+ readonly openChangeDetails: OutputEmitterRef<OpenChangeDetails>;
87
+ /** Emits details when the panel position changes via dragging or API calls. */
88
+ readonly positionDetailsChange: OutputEmitterRef<PositionChangeDetails>;
89
+ /** Emits details when a position-changing drag interaction ends. */
90
+ readonly positionChangeEnd: OutputEmitterRef<PositionChangeDetails>;
91
+ /** Emits details when the panel size changes via resizing or API calls. */
92
+ readonly sizeDetailsChange: OutputEmitterRef<SizeChangeDetails>;
93
+ /** Emits details when a size-changing resize interaction ends. */
94
+ readonly sizeChangeEnd: OutputEmitterRef<SizeChangeDetails>;
95
+ /** Emits details when the panel stage changes. */
96
+ readonly stageChange: OutputEmitterRef<StageChangeDetails>;
97
+ private lastPositionDetails;
98
+ private lastPositionEndDetails;
99
+ private lastSizeDetails;
100
+ private lastSizeEndDetails;
101
+ private lastStageDetails;
102
+ private readonly machine;
103
+ readonly state: Signal<floatingPanel.Service["state"]>;
104
+ readonly api: Signal<floatingPanel.Api>;
105
+ readonly service: floatingPanel.Service;
106
+ readonly send: floatingPanel.Service["send"];
107
+ readonly presence: _wirekyt_angular_presence.UsePresenceReturn;
108
+ protected readonly contextCarrier: ContextCarrier<FloatingPanelRoot>;
109
+ /** @internal Exposed for floating panel part directives to consume through portals. */
110
+ getContextCarrier(): ContextCarrier<FloatingPanelRoot>;
111
+ static ɵfac: i0.ɵɵFactoryDeclaration<FloatingPanelRoot, never>;
112
+ static ɵdir: i0.ɵɵDirectiveDeclaration<FloatingPanelRoot, "[floating-panel-root]", ["floatingPanelRoot"], { "id": { "alias": "id"; "required": false; "isSignal": true; }; "ids": { "alias": "ids"; "required": false; "isSignal": true; }; "open": { "alias": "open"; "required": false; "isSignal": true; }; "defaultOpen": { "alias": "defaultOpen"; "required": false; "isSignal": true; }; "position": { "alias": "position"; "required": false; "isSignal": true; }; "defaultPosition": { "alias": "defaultPosition"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "defaultSize": { "alias": "defaultSize"; "required": false; "isSignal": true; }; "minSize": { "alias": "minSize"; "required": false; "isSignal": true; }; "maxSize": { "alias": "maxSize"; "required": false; "isSignal": true; }; "strategy": { "alias": "strategy"; "required": false; "isSignal": true; }; "allowOverflow": { "alias": "allowOverflow"; "required": false; "isSignal": true; }; "draggable": { "alias": "draggable"; "required": false; "isSignal": true; }; "resizable": { "alias": "resizable"; "required": false; "isSignal": true; }; "lockAspectRatio": { "alias": "lockAspectRatio"; "required": false; "isSignal": true; }; "closeOnEscape": { "alias": "closeOnEscape"; "required": false; "isSignal": true; }; "restoreFocus": { "alias": "restoreFocus"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "persistRect": { "alias": "persistRect"; "required": false; "isSignal": true; }; "gridSize": { "alias": "gridSize"; "required": false; "isSignal": true; }; "translations": { "alias": "translations"; "required": false; "isSignal": true; }; "getAnchorPosition": { "alias": "getAnchorPosition"; "required": false; "isSignal": true; }; "getBoundaryEl": { "alias": "getBoundaryEl"; "required": false; "isSignal": true; }; "initialFocusEl": { "alias": "initialFocusEl"; "required": false; "isSignal": true; }; "finalFocusEl": { "alias": "finalFocusEl"; "required": false; "isSignal": true; }; }, { "open": "openChange"; "position": "positionChange"; "size": "sizeChange"; "openChangeDetails": "openChangeDetails"; "positionDetailsChange": "positionDetailsChange"; "positionChangeEnd": "positionChangeEnd"; "sizeDetailsChange": "sizeDetailsChange"; "sizeChangeEnd": "sizeChangeEnd"; "stageChange": "stageChange"; }, never, never, true, never>;
113
+ }
114
+
115
+ declare class FloatingPanelRootProvider extends PresenceBase implements UseFloatingPanelReturn {
116
+ /** The floating panel machine returned by useFloatingPanel(). */
117
+ readonly value: InputSignal<UseFloatingPanelReturn>;
118
+ readonly state: Signal<floatingPanel.Service["state"]>;
119
+ readonly api: Signal<floatingPanel.Api>;
120
+ readonly send: floatingPanel.Service["send"];
121
+ get service(): floatingPanel.Service;
122
+ readonly presence: _wirekyt_angular_presence.UsePresenceReturn;
123
+ protected readonly contextCarrier: ContextCarrier<FloatingPanelRootProvider>;
124
+ /** @internal Exposed for floating panel part directives to consume through portals. */
125
+ getContextCarrier(): ContextCarrier<FloatingPanelRootProvider>;
126
+ static ɵfac: i0.ɵɵFactoryDeclaration<FloatingPanelRootProvider, never>;
127
+ static ɵdir: i0.ɵɵDirectiveDeclaration<FloatingPanelRootProvider, "[floating-panel-root-provider]", ["floatingPanelRootProvider"], { "value": { "alias": "value"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
128
+ }
129
+
130
+ declare class FloatingPanelTrigger {
131
+ constructor();
132
+ static ɵfac: i0.ɵɵFactoryDeclaration<FloatingPanelTrigger, never>;
133
+ static ɵdir: i0.ɵɵDirectiveDeclaration<FloatingPanelTrigger, "[floating-panel-trigger]", ["floatingPanelTrigger"], {}, {}, never, never, true, never>;
134
+ }
135
+
136
+ declare class FloatingPanelPositioner {
137
+ constructor();
138
+ static ɵfac: i0.ɵɵFactoryDeclaration<FloatingPanelPositioner, never>;
139
+ static ɵdir: i0.ɵɵDirectiveDeclaration<FloatingPanelPositioner, "[floating-panel-positioner]", ["floatingPanelPositioner"], {}, {}, never, never, true, never>;
140
+ }
141
+
142
+ declare class FloatingPanelContent {
143
+ constructor();
144
+ static ɵfac: i0.ɵɵFactoryDeclaration<FloatingPanelContent, never>;
145
+ static ɵdir: i0.ɵɵDirectiveDeclaration<FloatingPanelContent, "[floating-panel-content]", ["floatingPanelContent"], {}, {}, never, never, true, never>;
146
+ }
147
+
148
+ declare class FloatingPanelControl {
149
+ constructor();
150
+ static ɵfac: i0.ɵɵFactoryDeclaration<FloatingPanelControl, never>;
151
+ static ɵdir: i0.ɵɵDirectiveDeclaration<FloatingPanelControl, "[floating-panel-control]", ["floatingPanelControl"], {}, {}, never, never, true, never>;
152
+ }
153
+
154
+ declare class FloatingPanelHeader {
155
+ constructor();
156
+ static ɵfac: i0.ɵɵFactoryDeclaration<FloatingPanelHeader, never>;
157
+ static ɵdir: i0.ɵɵDirectiveDeclaration<FloatingPanelHeader, "[floating-panel-header]", ["floatingPanelHeader"], {}, {}, never, never, true, never>;
158
+ }
159
+
160
+ declare class FloatingPanelBody {
161
+ constructor();
162
+ static ɵfac: i0.ɵɵFactoryDeclaration<FloatingPanelBody, never>;
163
+ static ɵdir: i0.ɵɵDirectiveDeclaration<FloatingPanelBody, "[floating-panel-body]", ["floatingPanelBody"], {}, {}, never, never, true, never>;
164
+ }
165
+
166
+ declare class FloatingPanelTitle {
167
+ constructor();
168
+ static ɵfac: i0.ɵɵFactoryDeclaration<FloatingPanelTitle, never>;
169
+ static ɵdir: i0.ɵɵDirectiveDeclaration<FloatingPanelTitle, "[floating-panel-title]", ["floatingPanelTitle"], {}, {}, never, never, true, never>;
170
+ }
171
+
172
+ declare class FloatingPanelCloseTrigger {
173
+ constructor();
174
+ static ɵfac: i0.ɵɵFactoryDeclaration<FloatingPanelCloseTrigger, never>;
175
+ static ɵdir: i0.ɵɵDirectiveDeclaration<FloatingPanelCloseTrigger, "[floating-panel-close-trigger]", ["floatingPanelCloseTrigger"], {}, {}, never, never, true, never>;
176
+ }
177
+
178
+ declare class FloatingPanelDragTrigger {
179
+ constructor();
180
+ static ɵfac: i0.ɵɵFactoryDeclaration<FloatingPanelDragTrigger, never>;
181
+ static ɵdir: i0.ɵɵDirectiveDeclaration<FloatingPanelDragTrigger, "[floating-panel-drag-trigger]", ["floatingPanelDragTrigger"], {}, {}, never, never, true, never>;
182
+ }
183
+
184
+ declare class FloatingPanelResizeTrigger {
185
+ /** The axis of the resize handle. */
186
+ readonly axis: InputSignal<ResizeTriggerAxis>;
187
+ constructor();
188
+ static ɵfac: i0.ɵɵFactoryDeclaration<FloatingPanelResizeTrigger, never>;
189
+ static ɵdir: i0.ɵɵDirectiveDeclaration<FloatingPanelResizeTrigger, "[floating-panel-resize-trigger]", ["floatingPanelResizeTrigger"], { "axis": { "alias": "axis"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
190
+ }
191
+
192
+ declare class FloatingPanelStageTrigger {
193
+ /** The stage to apply when the trigger is clicked. */
194
+ readonly stage: InputSignal<Stage>;
195
+ constructor();
196
+ static ɵfac: i0.ɵɵFactoryDeclaration<FloatingPanelStageTrigger, never>;
197
+ static ɵdir: i0.ɵɵDirectiveDeclaration<FloatingPanelStageTrigger, "[floating-panel-stage-trigger]", ["floatingPanelStageTrigger"], { "stage": { "alias": "stage"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
198
+ }
199
+
200
+ interface FloatingPanelContextTemplate {
201
+ $implicit: UseFloatingPanelReturn["api"];
202
+ api: UseFloatingPanelReturn["api"];
203
+ }
204
+ declare class FloatingPanelContext {
205
+ static ngTemplateContextGuard(_directive: FloatingPanelContext, context: unknown): context is FloatingPanelContextTemplate;
206
+ private readonly floatingPanel;
207
+ private readonly templateRef;
208
+ private readonly viewContainer;
209
+ constructor();
210
+ static ɵfac: i0.ɵɵFactoryDeclaration<FloatingPanelContext, never>;
211
+ static ɵdir: i0.ɵɵDirectiveDeclaration<FloatingPanelContext, "[floating-panel-context]", ["floatingPanelContext"], {}, {}, never, never, true, never>;
212
+ }
213
+
214
+ export { FLOATING_PANEL_CONTEXT, FLOATING_PANEL_CONTEXT_CARRIER, FLOATING_PANEL_RENDER_STRATEGY_CONTEXT, FloatingPanelBody, FloatingPanelCloseTrigger, FloatingPanelContent, FloatingPanelContext, FloatingPanelControl, FloatingPanelDragTrigger, FloatingPanelHeader, FloatingPanelPositioner, FloatingPanelResizeTrigger, FloatingPanelRoot, FloatingPanelRootProvider, FloatingPanelStageTrigger, FloatingPanelTitle, FloatingPanelTrigger, injectFloatingPanelContext, injectFloatingPanelContextCarrier, injectFloatingPanelRenderStrategyContext, useFloatingPanel };
215
+ export type { FloatingPanelContextTemplate, FloatingPanelRenderStrategyContext, UseFloatingPanelOptions, UseFloatingPanelProps, UseFloatingPanelReturn };
216
+ //# sourceMappingURL=wirekyt-angular-floating-panel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wirekyt-angular-floating-panel.d.ts","sources":["../../src/components/floating-panel/use.ts","../../src/components/floating-panel/use-context.ts","../../src/components/floating-panel/root.ts","../../src/components/floating-panel/root-provider.ts","../../src/components/floating-panel/trigger.ts","../../src/components/floating-panel/positioner.ts","../../src/components/floating-panel/content.ts","../../src/components/floating-panel/control.ts","../../src/components/floating-panel/header.ts","../../src/components/floating-panel/body.ts","../../src/components/floating-panel/title.ts","../../src/components/floating-panel/close-trigger.ts","../../src/components/floating-panel/drag-trigger.ts","../../src/components/floating-panel/resize-trigger.ts","../../src/components/floating-panel/stage-trigger.ts","../../src/components/floating-panel/context.ts"],"mappings":";;;;;;;;;AAWA,KAAK,UAAU;;AAAyB,KAAI,IAAI;;;AAE1C,UAAW,qBAAsB,SAAQ,UAAU,CACvD,IAAI,CAAC,aAAa,CAAC,KAAK;AACtB;AAEE,KAAM,sBAAsB,GAAG,gBAAgB,CACnD,aAAa,CAAC,OAAO,WACrB,aAAa,CAAC,GAAG,EACjB,aAAa,CAAC,OAAO;UAGN,uBAAuB;mBACvB,qBAAqB;AACrC;AAKD,iBAAgB,gBAAgB,UAAU,uBAAuB,GAAG,sBAAsB;;ACxB1F,cAAa,sBAAsB,EAAA,cAAA,CAAA,sBAAA;AAInC,iBAAgB,0BAA0B,IAAI,sBAAsB;AAIpE,cAAa,8BAA8B,EAAA,cAAA,CAAA,cAAA,CAAA,sBAAA;AAI3C,iBAAgB,iCAAiC,IAAI,cAAc,CAAC,sBAAsB;UAIzE,kCAAkC;AACjD,wBAAoB,MAAM;AAC1B,4BAAwB,MAAM;AAC/B;AAED,cAAa,sCAAsC,EAAA,cAAA,CAAA,kCAAA;AAKnD,iBAAgB,wCAAwC,IAAI,kCAAkC;;ACmB9F,cAsBa,iBAAkB,SAAQ,YAAa,YAAW,sBAAsB;;iBAEtE,WAAW;;AAExB,kBAAc,WAAW,CAAC,OAAO,CAACA,UAAuB;;mBAI1C,WAAW;;0BAEJ,wBAAwB;;uBAI3B,WAAW,CAACC,KAAkB;;8BAIvB,WAAW,CAACA,KAAkB;;mBAIzC,WAAW,CAACC,IAAiB;;0BAItB,WAAW,CAACA,IAAiB;;sBAIjC,WAAW,CAACA,IAAiB;;sBAI7B,WAAW,CAACA,IAAiB;;AAI/C,uBAAmB,WAAW,CAAC,aAAa,CAAC,KAAK;;4BAG1B,wBAAwB;;wBAI5B,wBAAwB;;wBAIxB,wBAAwB;;8BAIlB,wBAAwB;;4BAI1B,wBAAwB;;2BAIzB,wBAAwB;;uBAI5B,wBAAwB;;0BAIrB,wBAAwB;;uBAI3B,WAAW;;2BAEP,WAAW,CAACC,gBAA6B;;AAIhE,gCAA4B,WAAW,YAC1BC,qBAAkC,KAAKH,KAAkB;;AAKtE,4BAAwB,WAAW,QAAQ,WAAW;;AAItD,6BAAyB,WAAW,QAAQ,WAAW;;AAIvD,2BAAuB,WAAW,QAAQ,WAAW;;AAKrD,gCAA4B,gBAAgB,CAACI,iBAA8B;;AAG3E,oCAAgC,gBAAgB,CAACC,qBAAkC;;AAGnF,gCAA4B,gBAAgB,CAACA,qBAAkC;;AAG/E,gCAA4B,gBAAgB,CAACC,iBAA8B;;AAG3E,4BAAwB,gBAAgB,CAACA,iBAA8B;;AAGvE,0BAAsB,gBAAgB,CAACC,kBAA+B;;;;;;AAStE;AAmEA,oBAAgB,MAAM,CAAC,aAAa,CAAC,OAAO;kBAC9B,MAAM,CAAC,aAAa,CAAC,GAAG;AACtC,sBAAkB,aAAa,CAAC,OAAO;mBACxB,aAAa,CAAC,OAAO;uBACnB,yBAAA,CAAA,iBAAA;uCAEkB,cAAc,CAAC,iBAAiB;;AAanE,yBAAqB,cAAc,CAAC,iBAAiB;yCAhN1C,iBAAiB;2CAAjB,iBAAiB;AAmN7B;;AClQD,cAyBa,yBAA0B,SAAQ,YAAa,YAAW,sBAAsB;;AAE3F,oBAAgB,WAAW,CAAC,sBAAsB;AAClD,oBAAgB,MAAM,CAAC,aAAa,CAAC,OAAO;kBAC9B,MAAM,CAAC,aAAa,CAAC,GAAG;mBACvB,aAAa,CAAC,OAAO;AAEpC,mBAAe,aAAa,CAAC,OAAO;uBAInB,yBAAA,CAAA,iBAAA;uCAQkB,cAAc,CAAC,yBAAyB;;AAa3E,yBAAqB,cAAc,CAAC,yBAAyB;yCAhClD,yBAAyB;2CAAzB,yBAAyB;AAmCrC;;ACjFD,cAKa,oBAAoB;;yCAApB,oBAAoB;2CAApB,oBAAoB;AAUhC;;ACJD,cAKa,uBAAuB;;yCAAvB,uBAAuB;2CAAvB,uBAAuB;AAmCnC;;ACvCD,cAKa,oBAAoB;;yCAApB,oBAAoB;2CAApB,oBAAoB;AAoChC;;ACrDD,cAKa,oBAAoB;;yCAApB,oBAAoB;2CAApB,oBAAoB;AAUhC;;ACfD,cAKa,mBAAmB;;yCAAnB,mBAAmB;2CAAnB,mBAAmB;AAU/B;;ACfD,cAKa,iBAAiB;;yCAAjB,iBAAiB;2CAAjB,iBAAiB;AAU7B;;ACfD,cAKa,kBAAkB;;yCAAlB,kBAAkB;2CAAlB,kBAAkB;AAU9B;;ACfD,cAKa,yBAAyB;;yCAAzB,yBAAyB;2CAAzB,yBAAyB;AAUrC;;ACfD,cAKa,wBAAwB;;yCAAxB,wBAAwB;2CAAxB,wBAAwB;AAUpC;;ACLD,cAKa,0BAA0B;;AAErC,mBAAe,WAAW,CAACC,iBAA8B;;yCAF9C,0BAA0B;2CAA1B,0BAA0B;AActC;;ACnBD,cAKa,yBAAyB;;AAEpC,oBAAgB,WAAW,CAACC,KAAkB;;yCAFnC,yBAAyB;2CAAzB,yBAAyB;AAarC;;UC3BgB,4BAA4B;AAC3C,eAAW,sBAAsB;AACjC,SAAK,sBAAsB;AAC5B;AAED,cAKa,oBAAoB;AAC/B,8CACc,oBAAoB,gCAEpB,4BAA4B;AAK1C;AACA;AACA;;yCAXW,oBAAoB;2CAApB,oBAAoB;AAwBhC;;;;","names":["FloatingPanelElementIds","FloatingPanelPoint","FloatingPanelSize","FloatingPanelIntlTranslations","FloatingPanelAnchorPositionDetails","FloatingPanelOpenChangeDetails","FloatingPanelPositionChangeDetails","FloatingPanelSizeChangeDetails","FloatingPanelStageChangeDetails","FloatingPanelResizeTriggerAxis","FloatingPanelStage"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wirekyt/angular",
3
- "version": "0.0.18",
3
+ "version": "0.0.19",
4
4
  "description": "Angular adapter for Wirekyt",
5
5
  "files": [
6
6
  "dist",
@@ -87,6 +87,10 @@
87
87
  "types": "./dist/types/wirekyt-angular-fieldset.d.ts",
88
88
  "default": "./dist/fesm2022/wirekyt-angular-fieldset.mjs"
89
89
  },
90
+ "./floating-panel": {
91
+ "types": "./dist/types/wirekyt-angular-floating-panel.d.ts",
92
+ "default": "./dist/fesm2022/wirekyt-angular-floating-panel.mjs"
93
+ },
90
94
  "./presence": {
91
95
  "types": "./dist/types/wirekyt-angular-presence.d.ts",
92
96
  "default": "./dist/fesm2022/wirekyt-angular-presence.mjs"
@@ -100,7 +104,7 @@
100
104
  "dependencies": {
101
105
  "@internationalized/date": "^3.12.3",
102
106
  "@internationalized/number": "^3.6.7",
103
- "@wirekyt/dom": "0.0.18",
107
+ "@wirekyt/dom": "0.0.19",
104
108
  "tslib": "^2.8.1"
105
109
  },
106
110
  "peerDependencies": {