@sprawlify/vue 0.0.65 → 0.0.67

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/dist/clean-props-BDv2zb5M.js +9 -0
  2. package/dist/collapsible-DQfAISmg.js +259 -0
  3. package/dist/collection-Ba0Aeh5P.js +218 -0
  4. package/dist/components/accordion/index.d.ts +195 -0
  5. package/dist/components/accordion/index.js +361 -0
  6. package/dist/components/angle-slider/index.d.ts +230 -0
  7. package/dist/components/angle-slider/index.js +371 -0
  8. package/dist/components/avatar/index.d.ts +116 -0
  9. package/dist/components/avatar/index.js +177 -0
  10. package/dist/components/bottom-sheet/index.d.ts +241 -0
  11. package/dist/components/bottom-sheet/index.js +429 -0
  12. package/dist/components/carousel/index.d.ts +306 -0
  13. package/dist/components/carousel/index.js +500 -0
  14. package/dist/components/checkbox/index.d.ts +273 -0
  15. package/dist/components/checkbox/index.js +500 -0
  16. package/dist/components/client-only/index.d.ts +20 -0
  17. package/dist/components/client-only/index.js +22 -0
  18. package/dist/components/clipboard/index.d.ts +204 -0
  19. package/dist/components/clipboard/index.js +297 -0
  20. package/dist/components/collapsible/index.d.ts +15 -23
  21. package/dist/components/collapsible/index.js +5 -325
  22. package/dist/components/collection/index.d.ts +2 -0
  23. package/dist/components/collection/index.js +4 -0
  24. package/dist/components/color-picker/index.d.ts +610 -0
  25. package/dist/components/color-picker/index.js +1127 -0
  26. package/dist/components/combobox/index.d.ts +618 -0
  27. package/dist/components/combobox/index.js +802 -0
  28. package/dist/components/date-picker/index.d.ts +597 -0
  29. package/dist/components/date-picker/index.js +1110 -0
  30. package/dist/components/dialog/index.d.ts +270 -0
  31. package/dist/components/dialog/index.js +433 -0
  32. package/dist/components/download-trigger/index.d.ts +29 -0
  33. package/dist/components/download-trigger/index.js +68 -0
  34. package/dist/components/editable/index.d.ts +288 -0
  35. package/dist/components/editable/index.js +459 -0
  36. package/dist/components/field/index.d.ts +326 -0
  37. package/dist/components/field/index.js +7 -0
  38. package/dist/components/fieldset/index.d.ts +161 -0
  39. package/dist/components/fieldset/index.js +7 -0
  40. package/dist/components/highlight/index.d.ts +35 -0
  41. package/dist/components/highlight/index.js +57 -0
  42. package/dist/components/menu/index.d.ts +498 -0
  43. package/dist/components/menu/index.js +885 -0
  44. package/dist/components/presence/index.d.ts +3 -0
  45. package/dist/components/presence/index.js +6 -0
  46. package/dist/components/select/index.d.ts +430 -0
  47. package/dist/components/select/index.js +769 -0
  48. package/dist/{use-forward-expose-BIk4OI3R.js → core-DNndr38p.js} +2 -170
  49. package/dist/create-split-props-YZ3qgXe_.js +11 -0
  50. package/dist/factory-BH3WrWd2.js +68 -0
  51. package/dist/factory-D_ge_w76.d.ts +8 -0
  52. package/dist/field-DnHnX3Tf.js +501 -0
  53. package/dist/fieldset-DzhN7Zrg.js +278 -0
  54. package/dist/{types-BQfkZGpL.d.ts → index-B66Om_3U.d.ts} +1 -9
  55. package/dist/index-BBHms9-0.d.ts +91 -0
  56. package/dist/index-CDQghZtv.d.ts +57 -0
  57. package/dist/index-DqRk-Yea.d.ts +199 -0
  58. package/dist/index.d.ts +4 -92
  59. package/dist/index.js +4 -50
  60. package/dist/presence-CvUnYMZQ.js +105 -0
  61. package/dist/presence-types-Bv1E60Cw.d.ts +13 -0
  62. package/dist/providers-B2CNPFg1.js +108 -0
  63. package/dist/types-Bj-dS2Hc.d.ts +9 -0
  64. package/dist/use-forward-expose-4p5AGAI3.js +67 -0
  65. package/dist/use-render-strategy-BkxoN6ll.js +7 -0
  66. package/dist/use-render-strategy-CHj_pCfT.d.ts +9 -0
  67. package/dist/utils-B4FuOOE-.js +51 -0
  68. package/package.json +86 -2
@@ -0,0 +1,433 @@
1
+ import { t as __exportAll } from "../../chunk-BN_g-Awi.js";
2
+ import { n as useMachine, r as normalizeProps$1, t as mergeProps$1 } from "../../core-DNndr38p.js";
3
+ import { a as useLocaleContext, c as useEnvironmentContext, i as DEFAULT_LOCALE, s as DEFAULT_ENVIRONMENT } from "../../providers-B2CNPFg1.js";
4
+ import { r as createContext, t as useForwardExpose } from "../../use-forward-expose-4p5AGAI3.js";
5
+ import { t as sprawlify } from "../../factory-BH3WrWd2.js";
6
+ import { t as cleanProps } from "../../clean-props-BDv2zb5M.js";
7
+ import { n as useRenderStrategyProps, t as RenderStrategyPropsProvider } from "../../use-render-strategy-BkxoN6ll.js";
8
+ import { i as usePresence, n as PresenceProvider, r as usePresenceContext } from "../../presence-CvUnYMZQ.js";
9
+ import { computed, createBlock, createCommentVNode, defineComponent, guardReactiveProps, mergeDefaults, mergeProps, normalizeProps, openBlock, renderSlot, toValue, unref, useId, withCtx } from "vue";
10
+ import * as dialog from "@sprawlify/primitives/machines/dialog";
11
+ import { anatomy as dialogAnatomy } from "@sprawlify/primitives/machines/dialog";
12
+
13
+ //#region src/components/dialog/use-dialog-context.ts
14
+ const [DialogProvider, useDialogContext] = createContext("DialogContext");
15
+
16
+ //#endregion
17
+ //#region src/components/dialog/dialog-backdrop.vue?vue&type=script&setup=true&lang.ts
18
+ var dialog_backdrop_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
19
+ __name: "dialog-backdrop",
20
+ props: { asChild: {
21
+ type: Boolean,
22
+ required: false
23
+ } },
24
+ setup(__props) {
25
+ const dialog = useDialogContext();
26
+ const renderStrategy = useRenderStrategyProps();
27
+ const presence = usePresence(computed(() => ({
28
+ ...renderStrategy.value,
29
+ present: dialog.value.open
30
+ })));
31
+ const mergedProps = computed(() => mergeProps$1(dialog.value.getBackdropProps(), presence.value.presenceProps));
32
+ useForwardExpose();
33
+ return (_ctx, _cache) => {
34
+ return !unref(presence).unmounted ? (openBlock(), createBlock(unref(sprawlify).div, mergeProps({ key: 0 }, mergedProps.value, { "as-child": __props.asChild }), {
35
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
36
+ _: 3
37
+ }, 16, ["as-child"])) : createCommentVNode("v-if", true);
38
+ };
39
+ }
40
+ });
41
+
42
+ //#endregion
43
+ //#region src/components/dialog/dialog-backdrop.vue
44
+ var dialog_backdrop_default = dialog_backdrop_vue_vue_type_script_setup_true_lang_default;
45
+
46
+ //#endregion
47
+ //#region src/components/dialog/dialog-close-trigger.vue?vue&type=script&setup=true&lang.ts
48
+ var dialog_close_trigger_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
49
+ __name: "dialog-close-trigger",
50
+ props: { asChild: {
51
+ type: Boolean,
52
+ required: false
53
+ } },
54
+ setup(__props) {
55
+ const dialog = useDialogContext();
56
+ useForwardExpose();
57
+ return (_ctx, _cache) => {
58
+ return openBlock(), createBlock(unref(sprawlify).button, mergeProps(unref(dialog).getCloseTriggerProps(), { "as-child": __props.asChild }), {
59
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
60
+ _: 3
61
+ }, 16, ["as-child"]);
62
+ };
63
+ }
64
+ });
65
+
66
+ //#endregion
67
+ //#region src/components/dialog/dialog-close-trigger.vue
68
+ var dialog_close_trigger_default = dialog_close_trigger_vue_vue_type_script_setup_true_lang_default;
69
+
70
+ //#endregion
71
+ //#region src/components/dialog/dialog-content.vue?vue&type=script&setup=true&lang.ts
72
+ var dialog_content_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
73
+ __name: "dialog-content",
74
+ props: { asChild: {
75
+ type: Boolean,
76
+ required: false
77
+ } },
78
+ setup(__props) {
79
+ const dialog = useDialogContext();
80
+ const presence = usePresenceContext();
81
+ const mergedProps = computed(() => mergeProps$1(dialog.value.getContentProps(), presence.value.presenceProps));
82
+ useForwardExpose();
83
+ return (_ctx, _cache) => {
84
+ return !unref(presence).unmounted ? (openBlock(), createBlock(unref(sprawlify).div, mergeProps({ key: 0 }, mergedProps.value, { "as-child": __props.asChild }), {
85
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
86
+ _: 3
87
+ }, 16, ["as-child"])) : createCommentVNode("v-if", true);
88
+ };
89
+ }
90
+ });
91
+
92
+ //#endregion
93
+ //#region src/components/dialog/dialog-content.vue
94
+ var dialog_content_default = dialog_content_vue_vue_type_script_setup_true_lang_default;
95
+
96
+ //#endregion
97
+ //#region src/components/dialog/dialog-context.vue?vue&type=script&setup=true&lang.ts
98
+ var dialog_context_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
99
+ __name: "dialog-context",
100
+ setup(__props) {
101
+ const dialog = useDialogContext();
102
+ return (_ctx, _cache) => {
103
+ return renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(unref(dialog))));
104
+ };
105
+ }
106
+ });
107
+
108
+ //#endregion
109
+ //#region src/components/dialog/dialog-context.vue
110
+ var dialog_context_default = dialog_context_vue_vue_type_script_setup_true_lang_default;
111
+
112
+ //#endregion
113
+ //#region src/components/dialog/dialog-description.vue?vue&type=script&setup=true&lang.ts
114
+ var dialog_description_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
115
+ __name: "dialog-description",
116
+ props: { asChild: {
117
+ type: Boolean,
118
+ required: false
119
+ } },
120
+ setup(__props) {
121
+ const dialog = useDialogContext();
122
+ useForwardExpose();
123
+ return (_ctx, _cache) => {
124
+ return openBlock(), createBlock(unref(sprawlify).div, mergeProps(unref(dialog).getDescriptionProps(), { "as-child": __props.asChild }), {
125
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
126
+ _: 3
127
+ }, 16, ["as-child"]);
128
+ };
129
+ }
130
+ });
131
+
132
+ //#endregion
133
+ //#region src/components/dialog/dialog-description.vue
134
+ var dialog_description_default = dialog_description_vue_vue_type_script_setup_true_lang_default;
135
+
136
+ //#endregion
137
+ //#region src/components/dialog/dialog-positioner.vue?vue&type=script&setup=true&lang.ts
138
+ var dialog_positioner_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
139
+ __name: "dialog-positioner",
140
+ props: { asChild: {
141
+ type: Boolean,
142
+ required: false
143
+ } },
144
+ setup(__props) {
145
+ const dialog = useDialogContext();
146
+ const presence = usePresenceContext();
147
+ useForwardExpose();
148
+ return (_ctx, _cache) => {
149
+ return !unref(presence).unmounted ? (openBlock(), createBlock(unref(sprawlify).div, mergeProps({ key: 0 }, unref(dialog).getPositionerProps(), { "as-child": __props.asChild }), {
150
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
151
+ _: 3
152
+ }, 16, ["as-child"])) : createCommentVNode("v-if", true);
153
+ };
154
+ }
155
+ });
156
+
157
+ //#endregion
158
+ //#region src/components/dialog/dialog-positioner.vue
159
+ var dialog_positioner_default = dialog_positioner_vue_vue_type_script_setup_true_lang_default;
160
+
161
+ //#endregion
162
+ //#region src/components/dialog/dialog-root-provider.vue?vue&type=script&setup=true&lang.ts
163
+ var dialog_root_provider_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
164
+ __name: "dialog-root-provider",
165
+ props: {
166
+ value: {
167
+ type: null,
168
+ required: true
169
+ },
170
+ lazyMount: {
171
+ type: Boolean,
172
+ required: false
173
+ },
174
+ unmountOnExit: {
175
+ type: Boolean,
176
+ required: false
177
+ }
178
+ },
179
+ emits: ["exitComplete"],
180
+ setup(__props, { emit: __emit }) {
181
+ const props = __props;
182
+ const emits = __emit;
183
+ const dialog = computed(() => props.value);
184
+ const presence = usePresence(computed(() => ({
185
+ present: dialog.value.open,
186
+ lazyMount: props.lazyMount,
187
+ unmountOnExit: props.unmountOnExit
188
+ })), emits);
189
+ DialogProvider(dialog);
190
+ PresenceProvider(presence);
191
+ RenderStrategyPropsProvider(computed(() => ({
192
+ lazyMount: props.lazyMount,
193
+ unmountOnExit: props.unmountOnExit
194
+ })));
195
+ useForwardExpose();
196
+ return (_ctx, _cache) => {
197
+ return renderSlot(_ctx.$slots, "default");
198
+ };
199
+ }
200
+ });
201
+
202
+ //#endregion
203
+ //#region src/components/dialog/dialog-root-provider.vue
204
+ var dialog_root_provider_default = dialog_root_provider_vue_vue_type_script_setup_true_lang_default;
205
+
206
+ //#endregion
207
+ //#region src/components/dialog/use-dialog.ts
208
+ const useDialog = (props = {}, emit) => {
209
+ const id = useId();
210
+ const env = useEnvironmentContext(DEFAULT_ENVIRONMENT);
211
+ const locale = useLocaleContext(DEFAULT_LOCALE);
212
+ const context = computed(() => {
213
+ const localeProps = toValue(props);
214
+ return {
215
+ id,
216
+ dir: locale.value.dir,
217
+ getRootNode: env?.value.getRootNode,
218
+ ...cleanProps(props),
219
+ onOpenChange: (details) => {
220
+ emit?.("openChange", details);
221
+ emit?.("update:open", details.open);
222
+ localeProps.onOpenChange?.(details);
223
+ },
224
+ onEscapeKeyDown: (details) => {
225
+ emit?.("escapeKeyDown", details);
226
+ localeProps.onEscapeKeyDown?.(details);
227
+ },
228
+ onFocusOutside: (details) => {
229
+ emit?.("focusOutside", details);
230
+ localeProps.onFocusOutside?.(details);
231
+ },
232
+ onInteractOutside: (details) => {
233
+ emit?.("interactOutside", details);
234
+ localeProps.onInteractOutside?.(details);
235
+ },
236
+ onPointerDownOutside: (details) => {
237
+ emit?.("pointerDownOutside", details);
238
+ localeProps.onPointerDownOutside?.(details);
239
+ },
240
+ onRequestDismiss: (details) => {
241
+ emit?.("requestDismiss", details);
242
+ localeProps.onRequestDismiss?.(details);
243
+ }
244
+ };
245
+ });
246
+ const service = useMachine(dialog.machine, context);
247
+ return computed(() => dialog.connect(service, normalizeProps$1));
248
+ };
249
+
250
+ //#endregion
251
+ //#region src/components/dialog/dialog-root.vue?vue&type=script&setup=true&lang.ts
252
+ var dialog_root_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
253
+ __name: "dialog-root",
254
+ props: /* @__PURE__ */ mergeDefaults({
255
+ "aria-label": {
256
+ type: String,
257
+ required: false
258
+ },
259
+ closeOnEscape: {
260
+ type: Boolean,
261
+ required: false
262
+ },
263
+ closeOnInteractOutside: {
264
+ type: Boolean,
265
+ required: false
266
+ },
267
+ defaultOpen: {
268
+ type: Boolean,
269
+ required: false
270
+ },
271
+ finalFocusEl: {
272
+ type: Function,
273
+ required: false
274
+ },
275
+ id: {
276
+ type: String,
277
+ required: false
278
+ },
279
+ ids: {
280
+ type: Object,
281
+ required: false
282
+ },
283
+ initialFocusEl: {
284
+ type: Function,
285
+ required: false
286
+ },
287
+ modal: {
288
+ type: Boolean,
289
+ required: false
290
+ },
291
+ open: {
292
+ type: Boolean,
293
+ required: false
294
+ },
295
+ persistentElements: {
296
+ type: Array,
297
+ required: false
298
+ },
299
+ preventScroll: {
300
+ type: Boolean,
301
+ required: false
302
+ },
303
+ restoreFocus: {
304
+ type: Boolean,
305
+ required: false
306
+ },
307
+ role: {
308
+ type: String,
309
+ required: false
310
+ },
311
+ trapFocus: {
312
+ type: Boolean,
313
+ required: false
314
+ },
315
+ lazyMount: {
316
+ type: Boolean,
317
+ required: false
318
+ },
319
+ unmountOnExit: {
320
+ type: Boolean,
321
+ required: false
322
+ }
323
+ }, {
324
+ closeOnEscape: void 0,
325
+ closeOnInteractOutside: void 0,
326
+ defaultOpen: void 0,
327
+ modal: void 0,
328
+ open: void 0,
329
+ preventScroll: void 0,
330
+ restoreFocus: void 0,
331
+ trapFocus: void 0
332
+ }),
333
+ emits: [
334
+ "escapeKeyDown",
335
+ "exitComplete",
336
+ "focusOutside",
337
+ "interactOutside",
338
+ "openChange",
339
+ "pointerDownOutside",
340
+ "requestDismiss",
341
+ "update:open"
342
+ ],
343
+ setup(__props, { emit: __emit }) {
344
+ const props = __props;
345
+ const emits = __emit;
346
+ const dialog = useDialog(props, emits);
347
+ const presence = usePresence(computed(() => ({
348
+ present: dialog.value.open,
349
+ lazyMount: props.lazyMount,
350
+ unmountOnExit: props.unmountOnExit
351
+ })), emits);
352
+ DialogProvider(dialog);
353
+ PresenceProvider(presence);
354
+ RenderStrategyPropsProvider(computed(() => ({
355
+ lazyMount: props.lazyMount,
356
+ unmountOnExit: props.unmountOnExit
357
+ })));
358
+ useForwardExpose();
359
+ return (_ctx, _cache) => {
360
+ return renderSlot(_ctx.$slots, "default");
361
+ };
362
+ }
363
+ });
364
+
365
+ //#endregion
366
+ //#region src/components/dialog/dialog-root.vue
367
+ var dialog_root_default = dialog_root_vue_vue_type_script_setup_true_lang_default;
368
+
369
+ //#endregion
370
+ //#region src/components/dialog/dialog-title.vue?vue&type=script&setup=true&lang.ts
371
+ var dialog_title_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
372
+ __name: "dialog-title",
373
+ props: { asChild: {
374
+ type: Boolean,
375
+ required: false
376
+ } },
377
+ setup(__props) {
378
+ const dialog = useDialogContext();
379
+ useForwardExpose();
380
+ return (_ctx, _cache) => {
381
+ return openBlock(), createBlock(unref(sprawlify).h2, mergeProps(unref(dialog).getTitleProps(), { "as-child": __props.asChild }), {
382
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
383
+ _: 3
384
+ }, 16, ["as-child"]);
385
+ };
386
+ }
387
+ });
388
+
389
+ //#endregion
390
+ //#region src/components/dialog/dialog-title.vue
391
+ var dialog_title_default = dialog_title_vue_vue_type_script_setup_true_lang_default;
392
+
393
+ //#endregion
394
+ //#region src/components/dialog/dialog-trigger.vue?vue&type=script&setup=true&lang.ts
395
+ var dialog_trigger_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
396
+ __name: "dialog-trigger",
397
+ props: { asChild: {
398
+ type: Boolean,
399
+ required: false
400
+ } },
401
+ setup(__props) {
402
+ const dialog = useDialogContext();
403
+ useForwardExpose();
404
+ return (_ctx, _cache) => {
405
+ return openBlock(), createBlock(unref(sprawlify).button, mergeProps(unref(dialog).getTriggerProps(), { "as-child": __props.asChild }), {
406
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
407
+ _: 3
408
+ }, 16, ["as-child"]);
409
+ };
410
+ }
411
+ });
412
+
413
+ //#endregion
414
+ //#region src/components/dialog/dialog-trigger.vue
415
+ var dialog_trigger_default = dialog_trigger_vue_vue_type_script_setup_true_lang_default;
416
+
417
+ //#endregion
418
+ //#region src/components/dialog/dialog.ts
419
+ var dialog_exports = /* @__PURE__ */ __exportAll({
420
+ Backdrop: () => dialog_backdrop_default,
421
+ CloseTrigger: () => dialog_close_trigger_default,
422
+ Content: () => dialog_content_default,
423
+ Context: () => dialog_context_default,
424
+ Description: () => dialog_description_default,
425
+ Positioner: () => dialog_positioner_default,
426
+ Root: () => dialog_root_default,
427
+ RootProvider: () => dialog_root_provider_default,
428
+ Title: () => dialog_title_default,
429
+ Trigger: () => dialog_trigger_default
430
+ });
431
+
432
+ //#endregion
433
+ export { dialog_exports as Dialog, dialog_backdrop_default as DialogBackdrop, dialog_close_trigger_default as DialogCloseTrigger, dialog_content_default as DialogContent, dialog_context_default as DialogContext, dialog_description_default as DialogDescription, dialog_positioner_default as DialogPositioner, dialog_root_default as DialogRoot, dialog_root_provider_default as DialogRootProvider, dialog_title_default as DialogTitle, dialog_trigger_default as DialogTrigger, dialogAnatomy, useDialog, useDialogContext };
@@ -0,0 +1,29 @@
1
+ import { t as PolymorphicProps } from "../../factory-D_ge_w76.js";
2
+ import { i as MaybePromise } from "../../types-Bj-dS2Hc.js";
3
+ import * as vue253 from "vue";
4
+ import { ButtonHTMLAttributes } from "vue";
5
+ import { FileMimeType } from "@sprawlify/primitives/file-utils";
6
+
7
+ //#region src/components/download-trigger/download-trigger.vue.d.ts
8
+ type DownloadableData = string | Blob | File;
9
+ interface DownloadTriggerBaseProps extends PolymorphicProps {
10
+ fileName: string;
11
+ data: DownloadableData | (() => MaybePromise<DownloadableData>);
12
+ mimeType: FileMimeType;
13
+ }
14
+ interface DownloadTriggerProps extends DownloadTriggerBaseProps,
15
+ /**
16
+ * @vue-ignore
17
+ */
18
+ ButtonHTMLAttributes {}
19
+ declare const _default: typeof __VLS_export;
20
+ declare const __VLS_export: __VLS_WithSlots<vue253.DefineComponent<DownloadTriggerProps, {}, {}, {}, {}, vue253.ComponentOptionsMixin, vue253.ComponentOptionsMixin, {}, string, vue253.PublicProps, Readonly<DownloadTriggerProps> & Readonly<{}>, {}, {}, {}, {}, string, vue253.ComponentProvideOptions, false, {}, any>, {
21
+ default?: (props: {}) => any;
22
+ }>;
23
+ type __VLS_WithSlots<T, S> = T & {
24
+ new (): {
25
+ $slots: S;
26
+ };
27
+ };
28
+ //#endregion
29
+ export { _default as DownloadTrigger, type DownloadTriggerBaseProps, type DownloadTriggerProps };
@@ -0,0 +1,68 @@
1
+ import "../../core-DNndr38p.js";
2
+ import { c as useEnvironmentContext, s as DEFAULT_ENVIRONMENT } from "../../providers-B2CNPFg1.js";
3
+ import { t as useForwardExpose } from "../../use-forward-expose-4p5AGAI3.js";
4
+ import { t as sprawlify } from "../../factory-BH3WrWd2.js";
5
+ import { createBlock, defineComponent, openBlock, renderSlot, unref, withCtx } from "vue";
6
+ import { downloadFile } from "@sprawlify/primitives/file-utils";
7
+
8
+ //#region src/components/download-trigger/download-trigger.vue?vue&type=script&setup=true&lang.ts
9
+ var download_trigger_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
10
+ __name: "download-trigger",
11
+ props: {
12
+ fileName: {
13
+ type: String,
14
+ required: true
15
+ },
16
+ data: {
17
+ type: [String, Function],
18
+ required: true,
19
+ skipCheck: true
20
+ },
21
+ mimeType: {
22
+ type: null,
23
+ required: true
24
+ },
25
+ asChild: {
26
+ type: Boolean,
27
+ required: false
28
+ }
29
+ },
30
+ setup(__props) {
31
+ const props = __props;
32
+ const env = useEnvironmentContext(DEFAULT_ENVIRONMENT);
33
+ const download = (data) => {
34
+ downloadFile({
35
+ file: data,
36
+ name: props.fileName,
37
+ type: props.mimeType,
38
+ win: env?.value.getWindow() || window
39
+ });
40
+ };
41
+ const handleClick = (e) => {
42
+ if (e.defaultPrevented) return;
43
+ if (typeof props.data === "function") {
44
+ const maybePromise = props.data();
45
+ if (maybePromise instanceof Promise) maybePromise.then((data) => download(data));
46
+ else download(maybePromise);
47
+ } else download(props.data);
48
+ };
49
+ useForwardExpose();
50
+ return (_ctx, _cache) => {
51
+ return openBlock(), createBlock(unref(sprawlify).button, {
52
+ "as-child": __props.asChild,
53
+ type: "button",
54
+ onClick: handleClick
55
+ }, {
56
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
57
+ _: 3
58
+ }, 8, ["as-child"]);
59
+ };
60
+ }
61
+ });
62
+
63
+ //#endregion
64
+ //#region src/components/download-trigger/download-trigger.vue
65
+ var download_trigger_default = download_trigger_vue_vue_type_script_setup_true_lang_default;
66
+
67
+ //#endregion
68
+ export { download_trigger_default as DownloadTrigger };