@sprawlify/svelte 0.0.45 → 0.0.46

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 (121) hide show
  1. package/dist/components/accordion/accordion-root-provider.svelte +3 -1
  2. package/dist/components/angle-slider/angle-slider-root-provider.svelte +3 -1
  3. package/dist/components/bottom-sheet/bottom-sheet-root-provider.svelte +3 -1
  4. package/dist/components/carousel/carousel-anatomy.d.ts +1 -1
  5. package/dist/components/carousel/carousel-root-provider.svelte +3 -1
  6. package/dist/components/checkbox/checkbox-group-provider.svelte +3 -1
  7. package/dist/components/checkbox/checkbox-root-provider.svelte +3 -1
  8. package/dist/components/clipboard/clipboard-root-provider.svelte +3 -1
  9. package/dist/components/collapsible/collapsible-root-provider.svelte +3 -1
  10. package/dist/components/color-picker/color-picker-anatomy.d.ts +1 -1
  11. package/dist/components/color-picker/color-picker-root-provider.svelte +3 -1
  12. package/dist/components/combobox/combobox-anatomy.d.ts +1 -1
  13. package/dist/components/combobox/combobox-root-provider.svelte +4 -2
  14. package/dist/components/combobox/combobox-root-provider.svelte.d.ts +1 -1
  15. package/dist/components/date-picker/date-picker-root-provider.svelte +3 -1
  16. package/dist/components/date-picker/date-picker-root.svelte +1 -0
  17. package/dist/components/dialog/dialog-root-provider.svelte +3 -1
  18. package/dist/components/editable/editable-root-provider.svelte +3 -1
  19. package/dist/components/file-upload/file-upload-anatomy.d.ts +1 -0
  20. package/dist/components/file-upload/file-upload-anatomy.js +1 -0
  21. package/dist/components/file-upload/file-upload-clear-trigger.svelte +18 -0
  22. package/dist/components/file-upload/file-upload-clear-trigger.svelte.d.ts +8 -0
  23. package/dist/components/file-upload/file-upload-context.svelte +18 -0
  24. package/dist/components/file-upload/file-upload-context.svelte.d.ts +8 -0
  25. package/dist/components/file-upload/file-upload-dropzone.svelte +23 -0
  26. package/dist/components/file-upload/file-upload-dropzone.svelte.d.ts +9 -0
  27. package/dist/components/file-upload/file-upload-hidden-input.svelte +18 -0
  28. package/dist/components/file-upload/file-upload-hidden-input.svelte.d.ts +8 -0
  29. package/dist/components/file-upload/file-upload-item-delete-trigger.svelte +21 -0
  30. package/dist/components/file-upload/file-upload-item-delete-trigger.svelte.d.ts +8 -0
  31. package/dist/components/file-upload/file-upload-item-group.svelte +25 -0
  32. package/dist/components/file-upload/file-upload-item-group.svelte.d.ts +9 -0
  33. package/dist/components/file-upload/file-upload-item-name.svelte +26 -0
  34. package/dist/components/file-upload/file-upload-item-name.svelte.d.ts +8 -0
  35. package/dist/components/file-upload/file-upload-item-preview-image.svelte +32 -0
  36. package/dist/components/file-upload/file-upload-item-preview-image.svelte.d.ts +8 -0
  37. package/dist/components/file-upload/file-upload-item-preview.svelte +26 -0
  38. package/dist/components/file-upload/file-upload-item-preview.svelte.d.ts +9 -0
  39. package/dist/components/file-upload/file-upload-item-size-text.svelte +26 -0
  40. package/dist/components/file-upload/file-upload-item-size-text.svelte.d.ts +8 -0
  41. package/dist/components/file-upload/file-upload-item.svelte +32 -0
  42. package/dist/components/file-upload/file-upload-item.svelte.d.ts +10 -0
  43. package/dist/components/file-upload/file-upload-label.svelte +18 -0
  44. package/dist/components/file-upload/file-upload-label.svelte.d.ts +8 -0
  45. package/dist/components/file-upload/file-upload-root-provider.svelte +26 -0
  46. package/dist/components/file-upload/file-upload-root-provider.svelte.d.ts +12 -0
  47. package/dist/components/file-upload/file-upload-root.svelte +64 -0
  48. package/dist/components/file-upload/file-upload-root.svelte.d.ts +9 -0
  49. package/dist/components/file-upload/file-upload-trigger.svelte +18 -0
  50. package/dist/components/file-upload/file-upload-trigger.svelte.d.ts +8 -0
  51. package/dist/components/file-upload/file-upload.d.ts +16 -0
  52. package/dist/components/file-upload/file-upload.js +15 -0
  53. package/dist/components/file-upload/index.d.ts +21 -0
  54. package/dist/components/file-upload/index.js +20 -0
  55. package/dist/components/file-upload/use-file-upload-context.d.ts +4 -0
  56. package/dist/components/file-upload/use-file-upload-context.js +4 -0
  57. package/dist/components/file-upload/use-file-upload-item-group-props-context.d.ts +5 -0
  58. package/dist/components/file-upload/use-file-upload-item-group-props-context.js +6 -0
  59. package/dist/components/file-upload/use-file-upload-item-props-context.d.ts +5 -0
  60. package/dist/components/file-upload/use-file-upload-item-props-context.js +4 -0
  61. package/dist/components/file-upload/use-file-upload.svelte.d.ts +9 -0
  62. package/dist/components/file-upload/use-file-upload.svelte.js +21 -0
  63. package/dist/components/floating-panel/floating-panel-anatomy.d.ts +1 -0
  64. package/dist/components/floating-panel/floating-panel-anatomy.js +1 -0
  65. package/dist/components/floating-panel/floating-panel-body.svelte +19 -0
  66. package/dist/components/floating-panel/floating-panel-body.svelte.d.ts +8 -0
  67. package/dist/components/floating-panel/floating-panel-close-trigger.svelte +20 -0
  68. package/dist/components/floating-panel/floating-panel-close-trigger.svelte.d.ts +8 -0
  69. package/dist/components/floating-panel/floating-panel-content.svelte +28 -0
  70. package/dist/components/floating-panel/floating-panel-content.svelte.d.ts +8 -0
  71. package/dist/components/floating-panel/floating-panel-context.svelte +18 -0
  72. package/dist/components/floating-panel/floating-panel-context.svelte.d.ts +8 -0
  73. package/dist/components/floating-panel/floating-panel-control.svelte +19 -0
  74. package/dist/components/floating-panel/floating-panel-control.svelte.d.ts +8 -0
  75. package/dist/components/floating-panel/floating-panel-drag-trigger.svelte +19 -0
  76. package/dist/components/floating-panel/floating-panel-drag-trigger.svelte.d.ts +8 -0
  77. package/dist/components/floating-panel/floating-panel-header.svelte +19 -0
  78. package/dist/components/floating-panel/floating-panel-header.svelte.d.ts +8 -0
  79. package/dist/components/floating-panel/floating-panel-positioner.svelte +24 -0
  80. package/dist/components/floating-panel/floating-panel-positioner.svelte.d.ts +8 -0
  81. package/dist/components/floating-panel/floating-panel-resize-trigger.svelte +26 -0
  82. package/dist/components/floating-panel/floating-panel-resize-trigger.svelte.d.ts +9 -0
  83. package/dist/components/floating-panel/floating-panel-root-provider.svelte +30 -0
  84. package/dist/components/floating-panel/floating-panel-root-provider.svelte.d.ts +14 -0
  85. package/dist/components/floating-panel/floating-panel-root.svelte +90 -0
  86. package/dist/components/floating-panel/floating-panel-root.svelte.d.ts +12 -0
  87. package/dist/components/floating-panel/floating-panel-stage-trigger.svelte +24 -0
  88. package/dist/components/floating-panel/floating-panel-stage-trigger.svelte.d.ts +9 -0
  89. package/dist/components/floating-panel/floating-panel-title.svelte +19 -0
  90. package/dist/components/floating-panel/floating-panel-title.svelte.d.ts +8 -0
  91. package/dist/components/floating-panel/floating-panel-trigger.svelte +31 -0
  92. package/dist/components/floating-panel/floating-panel-trigger.svelte.d.ts +8 -0
  93. package/dist/components/floating-panel/floating-panel.d.ts +15 -0
  94. package/dist/components/floating-panel/floating-panel.js +14 -0
  95. package/dist/components/floating-panel/index.d.ts +19 -0
  96. package/dist/components/floating-panel/index.js +18 -0
  97. package/dist/components/floating-panel/use-floating-panel-context.d.ts +6 -0
  98. package/dist/components/floating-panel/use-floating-panel-context.js +6 -0
  99. package/dist/components/floating-panel/use-floating-panel.svelte.d.ts +9 -0
  100. package/dist/components/floating-panel/use-floating-panel.svelte.js +19 -0
  101. package/dist/components/focus-trap/focus-trap.svelte +44 -0
  102. package/dist/components/focus-trap/focus-trap.svelte.d.ts +12 -0
  103. package/dist/components/focus-trap/index.d.ts +2 -0
  104. package/dist/components/focus-trap/index.js +1 -0
  105. package/dist/components/format/format-byte.svelte +24 -0
  106. package/dist/components/format/format-byte.svelte.d.ts +9 -0
  107. package/dist/components/format/format-number.svelte +16 -0
  108. package/dist/components/format/format-number.svelte.d.ts +6 -0
  109. package/dist/components/format/format-relative-time.svelte +17 -0
  110. package/dist/components/format/format-relative-time.svelte.d.ts +6 -0
  111. package/dist/components/format/format.d.ts +3 -0
  112. package/dist/components/format/format.js +3 -0
  113. package/dist/components/format/index.d.ts +4 -0
  114. package/dist/components/format/index.js +4 -0
  115. package/dist/components/frame/frame-content.svelte +19 -0
  116. package/dist/components/frame/frame-content.svelte.d.ts +9 -0
  117. package/dist/components/frame/frame.svelte +103 -0
  118. package/dist/components/frame/frame.svelte.d.ts +15 -0
  119. package/dist/components/frame/index.d.ts +2 -0
  120. package/dist/components/frame/index.js +1 -0
  121. package/package.json +27 -2
@@ -0,0 +1,103 @@
1
+ <script module lang="ts">
2
+ import type { Snippet } from 'svelte'
3
+ import type { HTMLIframeAttributes } from 'svelte/elements'
4
+
5
+ import type { Assign } from '../../types'
6
+
7
+ export interface FrameBaseProps {
8
+ head?: Snippet
9
+ onMount?: () => void
10
+ onUnmount?: () => void
11
+ srcdoc?: string
12
+ ref?: HTMLIFrameElement | null
13
+ }
14
+ export interface FrameProps extends Assign<HTMLIframeAttributes, FrameBaseProps> {}
15
+
16
+ const CUSTOM_ROOT_CLASS = 'frame-root'
17
+ const resetStyle = '<style>*,*::before,*::after { margin: 0; padding: 0; box-sizing: border-box; }</style>'
18
+ const initialSrcDoc = `<html><head>${resetStyle}</head><body><div class="${CUSTOM_ROOT_CLASS}"></div></body></html>`
19
+
20
+ function getMountNode(frame: HTMLIFrameElement) {
21
+ const doc = frame.contentWindow?.document
22
+ if (!doc) return null
23
+ return doc.body.querySelector<HTMLElement>(`.${CUSTOM_ROOT_CLASS}`) || doc.body
24
+ }
25
+ </script>
26
+
27
+ <script lang="ts">
28
+ import { EnvironmentProvider } from '../../providers/environment'
29
+
30
+ import Portal from '../portal/portal.svelte'
31
+
32
+ import FrameContent from './frame-content.svelte'
33
+
34
+ let { head, onMount, onUnmount, srcdoc, ref = $bindable(null), ...localProps }: FrameProps = $props()
35
+
36
+ let frameRef: HTMLIFrameElement | null = $state(null)
37
+ let mountNode: HTMLElement | null = $derived(frameRef ? getMountNode(frameRef) : null)
38
+
39
+ $effect(() => {
40
+ if (!frameRef) return
41
+
42
+ const doc = frameRef.contentWindow?.document
43
+ if (!doc) return
44
+
45
+ doc.open()
46
+ doc.write(srcdoc ?? initialSrcDoc)
47
+ doc.close()
48
+ })
49
+
50
+ $effect(() => {
51
+ if (!frameRef || !frameRef.contentDocument) return
52
+
53
+ const win = frameRef.contentWindow as Window & typeof globalThis
54
+
55
+ if (!win || !mountNode) return
56
+
57
+ const exec = () => {
58
+ win.requestAnimationFrame(() => {
59
+ if (!(mountNode && frameRef && frameRef.contentDocument)) return
60
+
61
+ const rootEl = frameRef.contentDocument?.documentElement
62
+ if (!rootEl) return
63
+ frameRef.style.setProperty('--width', `${mountNode.scrollWidth}px`)
64
+ frameRef.style.setProperty('--height', `${mountNode.scrollHeight}px`)
65
+ })
66
+ }
67
+
68
+ const resizeObserver = new win.ResizeObserver(exec)
69
+
70
+ exec()
71
+
72
+ if (frameRef.contentDocument) {
73
+ resizeObserver.observe(mountNode)
74
+ }
75
+
76
+ return () => {
77
+ resizeObserver.disconnect()
78
+ }
79
+ })
80
+
81
+ function setFrameNode(node: HTMLIFrameElement | null) {
82
+ frameRef = node
83
+ }
84
+ </script>
85
+
86
+ <iframe bind:this={ref} {@attach setFrameNode} {...localProps}>
87
+ <EnvironmentProvider value={() => frameRef?.contentDocument ?? document}>
88
+ {#if mountNode}
89
+ <Portal container={mountNode}>
90
+ <FrameContent {onMount} {onUnmount}>
91
+ {#if localProps?.children}
92
+ {@render localProps.children()}
93
+ {/if}
94
+ </FrameContent>
95
+ </Portal>
96
+ {/if}
97
+ {#if mountNode && head && frameRef?.contentDocument?.head}
98
+ <Portal container={frameRef.contentDocument.head}>
99
+ {@render head()}
100
+ </Portal>
101
+ {/if}
102
+ </EnvironmentProvider>
103
+ </iframe>
@@ -0,0 +1,15 @@
1
+ import type { Snippet } from 'svelte';
2
+ import type { HTMLIframeAttributes } from 'svelte/elements';
3
+ import type { Assign } from '../../types';
4
+ export interface FrameBaseProps {
5
+ head?: Snippet;
6
+ onMount?: () => void;
7
+ onUnmount?: () => void;
8
+ srcdoc?: string;
9
+ ref?: HTMLIFrameElement | null;
10
+ }
11
+ export interface FrameProps extends Assign<HTMLIframeAttributes, FrameBaseProps> {
12
+ }
13
+ declare const Frame: import("svelte").Component<FrameProps, {}, "ref">;
14
+ type Frame = ReturnType<typeof Frame>;
15
+ export default Frame;
@@ -0,0 +1,2 @@
1
+ export { default as Frame } from './frame.svelte';
2
+ export type { FrameBaseProps, FrameProps } from './frame.svelte';
@@ -0,0 +1 @@
1
+ export { default as Frame } from './frame.svelte';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sprawlify/svelte",
3
- "version": "0.0.45",
3
+ "version": "0.0.46",
4
4
  "type": "module",
5
5
  "description": "Svelte wrapper for primitives.",
6
6
  "author": "sprawlify <npm@sprawlify.com>",
@@ -107,6 +107,31 @@
107
107
  "svelte": "./dist/components/fieldset/index.js",
108
108
  "default": "./dist/components/fieldset/index.js"
109
109
  },
110
+ "./file-upload": {
111
+ "types": "./dist/components/file-upload/index.d.ts",
112
+ "svelte": "./dist/components/file-upload/index.js",
113
+ "default": "./dist/components/file-upload/index.js"
114
+ },
115
+ "./floating-panel": {
116
+ "types": "./dist/components/floating-panel/index.d.ts",
117
+ "svelte": "./dist/components/floating-panel/index.js",
118
+ "default": "./dist/components/floating-panel/index.js"
119
+ },
120
+ "./focus-trap": {
121
+ "types": "./dist/components/focus-trap/index.d.ts",
122
+ "svelte": "./dist/components/focus-trap/index.js",
123
+ "default": "./dist/components/focus-trap/index.js"
124
+ },
125
+ "./format": {
126
+ "types": "./dist/components/format/index.d.ts",
127
+ "svelte": "./dist/components/format/index.js",
128
+ "default": "./dist/components/format/index.js"
129
+ },
130
+ "./frame": {
131
+ "types": "./dist/components/frame/index.d.ts",
132
+ "svelte": "./dist/components/frame/index.js",
133
+ "default": "./dist/components/frame/index.js"
134
+ },
110
135
  "./highlight": {
111
136
  "types": "./dist/components/highlight/index.d.ts",
112
137
  "svelte": "./dist/components/highlight/index.js",
@@ -135,7 +160,7 @@
135
160
  "access": "public"
136
161
  },
137
162
  "dependencies": {
138
- "@sprawlify/primitives": "0.0.45"
163
+ "@sprawlify/primitives": "0.0.46"
139
164
  },
140
165
  "peerDependencies": {
141
166
  "svelte": "^5.0.0"