sveltekit-ui 1.1.17 → 1.1.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.
Files changed (200) hide show
  1. package/dist/Components/Alert/index.svelte +88 -0
  2. package/dist/Components/Alert/index.svelte.js +101 -0
  3. package/dist/Components/ArrowToggle/index.svelte +62 -0
  4. package/dist/Components/Attachment/index.svelte +77 -0
  5. package/dist/Components/Attachment/index.svelte.js +119 -0
  6. package/dist/Components/Audio/index.svelte +193 -0
  7. package/dist/Components/Audio/index.svelte.js +463 -0
  8. package/dist/Components/AudioEditor/index.svelte +252 -0
  9. package/dist/Components/AudioEditor/index.svelte.js +977 -0
  10. package/dist/Components/AudioEditor/samples/alloy-voice-sample.mp3 +0 -0
  11. package/dist/Components/AudioEditor/samples/echo-voice-sample.mp3 +0 -0
  12. package/dist/Components/AudioEditor/samples/fable-voice-sample.mp3 +0 -0
  13. package/dist/Components/AudioEditor/samples/nova-voice-sample.mp3 +0 -0
  14. package/dist/Components/AudioEditor/samples/onyx-voice-sample.mp3 +0 -0
  15. package/dist/Components/AudioEditor/samples/shimmer-voice-sample.mp3 +0 -0
  16. package/dist/Components/AuthCodeInput/index.svelte +85 -0
  17. package/dist/Components/AuthCodeInput/index.svelte.js +95 -0
  18. package/dist/Components/Breadcrumbs/index.svelte +27 -0
  19. package/dist/Components/Breadcrumbs/index.svelte.js +88 -0
  20. package/dist/Components/Button/index.svelte +721 -0
  21. package/dist/Components/Button/index.svelte.js +375 -0
  22. package/dist/Components/Chart/Klines/index.svelte +87 -0
  23. package/dist/Components/Chart/index.svelte +226 -0
  24. package/dist/Components/Chart/index.svelte.js +1099 -0
  25. package/dist/Components/ChartInput/DisplayNav/Klines/index.svelte +150 -0
  26. package/dist/Components/ChartInput/DisplayNav/Lines/index.svelte +45 -0
  27. package/dist/Components/ChartInput/DisplayNav/index.svelte +297 -0
  28. package/dist/Components/ChartInput/EditPanel/index.svelte +155 -0
  29. package/dist/Components/ChartInput/index.svelte +21 -0
  30. package/dist/Components/ChartInput/index.svelte.js +671 -0
  31. package/dist/Components/Checkbox/index.svelte +411 -0
  32. package/dist/Components/Checkbox/index.svelte.js +178 -0
  33. package/dist/Components/Code/index.svelte +23 -0
  34. package/dist/Components/Code/index.svelte.js +33 -0
  35. package/dist/Components/Color/index.svelte +51 -0
  36. package/dist/Components/Color/index.svelte.js +31 -0
  37. package/dist/Components/ColorInput/ChromaPicker/index.svelte +50 -0
  38. package/dist/Components/ColorInput/ColorPalette/index.svelte +62 -0
  39. package/dist/Components/ColorInput/OpacityPicker/index.svelte +68 -0
  40. package/dist/Components/ColorInput/ShowcasePicker/index.svelte +136 -0
  41. package/dist/Components/ColorInput/index.svelte +70 -0
  42. package/dist/Components/ColorInput/index.svelte.js +386 -0
  43. package/dist/Components/ConditionsInput/index.svelte +46 -0
  44. package/dist/Components/ConditionsInput/index.svelte.js +201 -0
  45. package/dist/Components/Confetti/index.svelte +98 -0
  46. package/dist/Components/Confetti/index.svelte.js +94 -0
  47. package/dist/Components/Content/index.svelte +500 -0
  48. package/dist/Components/Content/index.svelte.js +910 -0
  49. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Audio/index.svelte +31 -0
  50. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Audio/index.svelte.js +258 -0
  51. package/dist/Components/ContentInput/AttributesInput/CustomConfig/AudioAdvanced/index.svelte +31 -0
  52. package/dist/Components/ContentInput/AttributesInput/CustomConfig/AudioAdvanced/index.svelte.js +258 -0
  53. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Dropdown/index.svelte +58 -0
  54. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Dropdown/index.svelte.js +206 -0
  55. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Image/index.svelte +28 -0
  56. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Image/index.svelte.js +224 -0
  57. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Number/index.svelte +44 -0
  58. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Number/index.svelte.js +272 -0
  59. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Qr/index.svelte +41 -0
  60. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Qr/index.svelte.js +202 -0
  61. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Slider/index.svelte +19 -0
  62. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Slider/index.svelte.js +117 -0
  63. package/dist/Components/ContentInput/AttributesInput/CustomConfig/TableAdvanced/index.svelte +60 -0
  64. package/dist/Components/ContentInput/AttributesInput/CustomConfig/TableAdvanced/index.svelte.js +542 -0
  65. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Tag/index.svelte +47 -0
  66. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Tag/index.svelte.js +185 -0
  67. package/dist/Components/ContentInput/AttributesInput/CustomConfig/TextInput/index.svelte +35 -0
  68. package/dist/Components/ContentInput/AttributesInput/CustomConfig/TextInput/index.svelte.js +222 -0
  69. package/dist/Components/ContentInput/AttributesInput/CustomConfig/TimeInput/index.svelte +20 -0
  70. package/dist/Components/ContentInput/AttributesInput/CustomConfig/TimeInput/index.svelte.js +84 -0
  71. package/dist/Components/ContentInput/AttributesInput/DefinedTypeInput/index.svelte +25 -0
  72. package/dist/Components/ContentInput/AttributesInput/DefinedTypeInput/index.svelte.js +91 -0
  73. package/dist/Components/ContentInput/AttributesInput/index.svelte +352 -0
  74. package/dist/Components/ContentInput/AttributesInput/index.svelte.js +1436 -0
  75. package/dist/Components/ContentInput/ContentPanelBuilder/AddElement/index.svelte +64 -0
  76. package/dist/Components/ContentInput/ContentPanelBuilder/AddElement/index.svelte.js +97 -0
  77. package/dist/Components/ContentInput/ContentPanelBuilder/ElementList/index.svelte +184 -0
  78. package/dist/Components/ContentInput/ContentPanelBuilder/index.svelte +41 -0
  79. package/dist/Components/ContentInput/index.svelte +78 -0
  80. package/dist/Components/ContentInput/index.svelte.js +1197 -0
  81. package/dist/Components/CronInput/index.svelte +78 -0
  82. package/dist/Components/CronInput/index.svelte.js +198 -0
  83. package/dist/Components/DataTypeInput/index.svelte +174 -0
  84. package/dist/Components/DataTypeInput/index.svelte.js +565 -0
  85. package/dist/Components/Dropdown/index.svelte +116 -0
  86. package/dist/Components/Dropdown/index.svelte.js +403 -0
  87. package/dist/Components/EmailAddress/index.svelte +22 -0
  88. package/dist/Components/EmailAddress/index.svelte.js +45 -0
  89. package/dist/Components/ErrorX/index.svelte +58 -0
  90. package/dist/Components/Eye/index.svelte +57 -0
  91. package/dist/Components/FileInput/index.svelte +146 -0
  92. package/dist/Components/FileInput/index.svelte.js +225 -0
  93. package/dist/Components/Hamburger/index.svelte +99 -0
  94. package/dist/Components/HorizScrollBox/index.svelte +145 -0
  95. package/dist/Components/Icon/index.svelte +412 -0
  96. package/dist/Components/Icon/index.svelte.js +116 -0
  97. package/dist/Components/IconInput/index.svelte +77 -0
  98. package/dist/Components/IconInput/index.svelte.js +259 -0
  99. package/dist/Components/Image/index.svelte +126 -0
  100. package/dist/Components/Image/index.svelte.js +116 -0
  101. package/dist/Components/ImageEditor/Image/CropBox/index.svelte +165 -0
  102. package/dist/Components/ImageEditor/Image/index.svelte +104 -0
  103. package/dist/Components/ImageEditor/Panels/AI/index.svelte +44 -0
  104. package/dist/Components/ImageEditor/Panels/Crop/index.svelte +96 -0
  105. package/dist/Components/ImageEditor/Panels/File/QualityPicker/index.svelte +124 -0
  106. package/dist/Components/ImageEditor/Panels/File/index.svelte +74 -0
  107. package/dist/Components/ImageEditor/Panels/Filters/index.svelte +46 -0
  108. package/dist/Components/ImageEditor/Panels/Resize/index.svelte +58 -0
  109. package/dist/Components/ImageEditor/index.svelte +93 -0
  110. package/dist/Components/ImageEditor/index.svelte.js +1961 -0
  111. package/dist/Components/ImageSlider/index.svelte +124 -0
  112. package/dist/Components/ImageSlider/index.svelte.js +99 -0
  113. package/dist/Components/InfoBox/index.svelte +89 -0
  114. package/dist/Components/Json/Nested/index.svelte +157 -0
  115. package/dist/Components/Json/index.svelte +60 -0
  116. package/dist/Components/Json/index.svelte.js +594 -0
  117. package/dist/Components/LabeledItem/index.svelte +102 -0
  118. package/dist/Components/Layout/NavBar/FullNav/index.svelte +52 -0
  119. package/dist/Components/Layout/NavBar/NavGuts/index.svelte +87 -0
  120. package/dist/Components/Layout/NavBar/index.svelte +72 -0
  121. package/dist/Components/Layout/index.svelte +149 -0
  122. package/dist/Components/Layout/index.svelte.js +360 -0
  123. package/dist/Components/Link/index.svelte +47 -0
  124. package/dist/Components/Link/index.svelte.js +136 -0
  125. package/dist/Components/LoadingSuccessDiv/index.svelte +51 -0
  126. package/dist/Components/LoadingWheel/index.svelte +38 -0
  127. package/dist/Components/Location/index.svelte +79 -0
  128. package/dist/Components/Location/index.svelte.js +288 -0
  129. package/dist/Components/LocationInput/index.svelte +197 -0
  130. package/dist/Components/LocationInput/index.svelte.js +965 -0
  131. package/dist/Components/Number/index.svelte +47 -0
  132. package/dist/Components/Number/index.svelte.js +151 -0
  133. package/dist/Components/PhoneCountryCode/index.svelte +7 -0
  134. package/dist/Components/PhoneCountryCode/index.svelte.js +260 -0
  135. package/dist/Components/PhoneNumber/index.svelte +22 -0
  136. package/dist/Components/PhoneNumber/index.svelte.js +41 -0
  137. package/dist/Components/Popover/index.svelte +396 -0
  138. package/dist/Components/Popover/index.svelte.js +319 -0
  139. package/dist/Components/Qr/index.svelte +85 -0
  140. package/dist/Components/Qr/index.svelte.js +301 -0
  141. package/dist/Components/QrInput/index.svelte +47 -0
  142. package/dist/Components/QrInput/index.svelte.js +218 -0
  143. package/dist/Components/Slider/index.svelte +239 -0
  144. package/dist/Components/Slider/index.svelte.js +469 -0
  145. package/dist/Components/Spacer/index.svelte +41 -0
  146. package/dist/Components/StoragePicker/DisplayFile/index.svelte +15 -0
  147. package/dist/Components/StoragePicker/index.svelte +187 -0
  148. package/dist/Components/StoragePicker/index.svelte.js +592 -0
  149. package/dist/Components/SuccessCheck/index.svelte +56 -0
  150. package/dist/Components/TableAdvanced/ColumnInput/index.svelte +117 -0
  151. package/dist/Components/TableAdvanced/ColumnInput/index.svelte.js +456 -0
  152. package/dist/Components/TableAdvanced/FilterInput/index.svelte +54 -0
  153. package/dist/Components/TableAdvanced/FilterInput/index.svelte.js +247 -0
  154. package/dist/Components/TableAdvanced/Pagination/index.svelte +43 -0
  155. package/dist/Components/TableAdvanced/Pagination/index.svelte.js +97 -0
  156. package/dist/Components/TableAdvanced/SortByInput/index.svelte +72 -0
  157. package/dist/Components/TableAdvanced/SortByInput/index.svelte.js +176 -0
  158. package/dist/Components/TableAdvanced/index.svelte +275 -0
  159. package/dist/Components/TableAdvanced/index.svelte.js +1565 -0
  160. package/dist/Components/Tag/index.svelte +45 -0
  161. package/dist/Components/Tag/index.svelte.js +76 -0
  162. package/dist/Components/TextArrayInput/index.svelte +108 -0
  163. package/dist/Components/TextArrayInput/index.svelte.js +239 -0
  164. package/dist/Components/TextInput/PasswordTooltip/index.svelte +89 -0
  165. package/dist/Components/TextInput/index.svelte +223 -0
  166. package/dist/Components/TextInput/index.svelte.js +447 -0
  167. package/dist/Components/Time/index.svelte +7 -0
  168. package/dist/Components/Time/index.svelte.js +38 -0
  169. package/dist/Components/TimeInput/NumberToggler/index.svelte +34 -0
  170. package/dist/Components/TimeInput/NumberToggler/index.svelte.js +79 -0
  171. package/dist/Components/TimeInput/index.js +702 -0
  172. package/dist/Components/TimeInput/index.svelte +211 -0
  173. package/dist/Components/TimeInput/index.svelte.js +638 -0
  174. package/dist/Components/Tooltip/index.svelte +143 -0
  175. package/dist/Components/TransparentBackground/index.svelte +153 -0
  176. package/dist/Components/TypingDots/index.svelte +84 -0
  177. package/dist/Components/VariablePathInput/index.svelte +63 -0
  178. package/dist/Components/VariablePathInput/index.svelte.js +273 -0
  179. package/dist/Components/VideoTBD/index.svelte +100 -0
  180. package/dist/Components/XFollow/index.svelte +42 -0
  181. package/dist/Components/XPost/index.svelte +52 -0
  182. package/dist/Components/XPost/index.svelte.js +64 -0
  183. package/dist/Components/YoutubeChannelButton/index.svelte +82 -0
  184. package/dist/Components/YoutubeVideo/index.svelte +73 -0
  185. package/dist/Components/YoutubeVideo/index.svelte.js +54 -0
  186. package/dist/actions/draggable.js +49 -0
  187. package/dist/actions/index.js +24 -0
  188. package/dist/actions/no_spaces.js +33 -0
  189. package/dist/actions/numbers_only.js +26 -0
  190. package/dist/actions/scroll_y.js +28 -0
  191. package/dist/actions/stop_scroll_propagation_y.js +42 -0
  192. package/dist/actions/swipe_handler.js +295 -0
  193. package/dist/client/astc_formatting/index.js +1128 -0
  194. package/dist/client/docs/index.js +7622 -0
  195. package/dist/client/index.js +735 -0
  196. package/dist/client/types/index.js +2812 -0
  197. package/dist/index.js +180 -0
  198. package/dist/style.css +682 -0
  199. package/package.json +2 -2
  200. package/src/lib/Components/Chart/index.svelte.js +11 -2
@@ -0,0 +1,273 @@
1
+ import { create_popover_manager } from "../Popover/index.svelte.js"
2
+ import { create_button_manager } from "../Button/index.svelte.js"
3
+ import { create_text_input_manager } from "../TextInput/index.svelte.js"
4
+ import { create_dropdown_manager } from "../Dropdown/index.svelte.js"
5
+ import { deep_copy } from "../../client/index.js"
6
+
7
+ export function create_variable_path_input_manager(config) {
8
+ let popover_manager = $state(null)
9
+ let open_edit_button_manager = $state(null)
10
+ let add_path_item_button_manager = $state(null)
11
+ let finish_button_manager = $state(null)
12
+ let defined_options = $state(null)
13
+ let def_dropdown_manager = $state(null)
14
+ let levels_nested = $state(null)
15
+ let path_prepped = $state(null)
16
+ let val = $derived(get_val())
17
+ let val_text = $derived(val_to_text(val))
18
+ let variable_data_type_at_path = $state(null)
19
+
20
+ function get_val() {
21
+ return def_dropdown_manager?.val
22
+ ? [def_dropdown_manager?.val, ...(Array.isArray(path_prepped) ? path_prepped.map((h) => h?.val) : [])]
23
+ : []
24
+ }
25
+
26
+ function prep_path(input) {
27
+ let path_prepped_loc = $state([])
28
+ if (Array.isArray(input)) {
29
+ variable_data_type_at_path = Array.isArray(defined_options)
30
+ ? defined_options.find((h) => h?.key === def_dropdown_manager?.val)?.data_type
31
+ : null
32
+ for (let i = 1; i < input.length; i++) {
33
+ let type_dropdown_manager = create_dropdown_manager({
34
+ placeholder: "Select Type",
35
+ is_button_compressed: true,
36
+ options: [
37
+ { key: "number", name: "Number" },
38
+ { key: "string", name: "String" },
39
+ { key: "variable", name: "Variable" },
40
+ ],
41
+ val: Array.isArray(input?.[i])
42
+ ? "variable"
43
+ : Number.isInteger(input?.[i])
44
+ ? "number"
45
+ : typeof input?.[i] == "string"
46
+ ? "string"
47
+ : null,
48
+ })
49
+ let remove_path_item_button_manager = create_button_manager({
50
+ type: "outlined",
51
+ is_uniform: true,
52
+ support_icon: "x",
53
+ on_click: () => {
54
+ let val = get_val()
55
+ prep_path(Array.isArray(val) ? val.filter((_, idx) => idx !== i) : null)
56
+ },
57
+ })
58
+ let insert_path_item_before_button_manager = create_button_manager({
59
+ type: "outlined",
60
+ is_uniform: true,
61
+ support_icon: "plus",
62
+ on_click: () => {
63
+ let val = get_val()
64
+ prep_path([
65
+ ...(Array.isArray(val) ? val.slice(0, i) : []),
66
+ null,
67
+ ...(Array.isArray(val) ? val.slice(i) : []),
68
+ ])
69
+ },
70
+ })
71
+ let const_string_value_text_input_manager = create_text_input_manager({
72
+ label: "Property",
73
+ placeholder: "some_property",
74
+ type: "text",
75
+ val: type_dropdown_manager?.val == "string" ? input?.[i] : null,
76
+ })
77
+ let const_number_value_text_input_manager = create_text_input_manager({
78
+ label: "Index",
79
+ placeholder: "0",
80
+ type: "number",
81
+ val: type_dropdown_manager?.val == "number" ? input?.[i] : null,
82
+ })
83
+ let variable_path_input_manager = create_variable_path_input_manager({
84
+ val: input?.[i],
85
+ levels_nested: levels_nested + 1,
86
+ get_defined_options: config?.get_defined_options,
87
+ on_finish: () => {
88
+ variable_path_input_manager.close_popover()
89
+ },
90
+ })
91
+ let key_options = []
92
+ if (variable_data_type_at_path?.type == "object_literal") {
93
+ for (let [key, property] of Object.entries(variable_data_type_at_path?.properties)) {
94
+ let select_button_manager = create_button_manager({
95
+ type: "outlined",
96
+ is_compressed: true,
97
+ text: `${key}: (${property?.type})`,
98
+ selected_type: () => (const_string_value_text_input_manager?.val == key ? "half_selected" : null),
99
+ on_click: () => {
100
+ type_dropdown_manager.set_val("string")
101
+ const_string_value_text_input_manager.set_val(key)
102
+ },
103
+ })
104
+ key_options.push({
105
+ select_button_manager: select_button_manager,
106
+ })
107
+ }
108
+ }
109
+ let val = $derived(
110
+ type_dropdown_manager?.val == "string"
111
+ ? const_string_value_text_input_manager?.val
112
+ : type_dropdown_manager?.val == "number"
113
+ ? const_number_value_text_input_manager?.val
114
+ : type_dropdown_manager?.val == "variable"
115
+ ? variable_path_input_manager?.val
116
+ : null
117
+ )
118
+ let variable_data_type_at_next_path = $derived(
119
+ type_dropdown_manager?.val == "string"
120
+ ? variable_data_type_at_path?.properties?.[const_string_value_text_input_manager?.val]
121
+ : type_dropdown_manager?.val == "number"
122
+ ? variable_data_type_at_path?.items
123
+ : type_dropdown_manager?.val == "variable"
124
+ ? variable_path_input_manager?.variable_data_type_at_path
125
+ : null
126
+ )
127
+ variable_data_type_at_path = variable_data_type_at_next_path
128
+ path_prepped_loc.push({
129
+ get type_dropdown_manager() {
130
+ return type_dropdown_manager
131
+ },
132
+ get remove_path_item_button_manager() {
133
+ return remove_path_item_button_manager
134
+ },
135
+ get insert_path_item_before_button_manager() {
136
+ return insert_path_item_before_button_manager
137
+ },
138
+ get const_string_value_text_input_manager() {
139
+ return const_string_value_text_input_manager
140
+ },
141
+ get const_number_value_text_input_manager() {
142
+ return const_number_value_text_input_manager
143
+ },
144
+ get variable_path_input_manager() {
145
+ return variable_path_input_manager
146
+ },
147
+ get key_options() {
148
+ return key_options
149
+ },
150
+ get variable_data_type_at_next_path() {
151
+ return variable_data_type_at_next_path
152
+ },
153
+ get val() {
154
+ return val
155
+ },
156
+ })
157
+ }
158
+ }
159
+ path_prepped = path_prepped_loc
160
+ }
161
+
162
+ function close_popover() {
163
+ popover_manager.close()
164
+ }
165
+
166
+ function val_to_text(input) {
167
+ let text_items = []
168
+ if (Array.isArray(input) && input.length > 0) {
169
+ for (let item of input) {
170
+ if (Array.isArray(item)) {
171
+ text_items.push(val_to_text(item))
172
+ } else {
173
+ text_items.push(item)
174
+ }
175
+ }
176
+ }
177
+ return `[${text_items.join(", ")}]`
178
+ }
179
+
180
+ function init(input) {
181
+ levels_nested = input?.levels_nested ?? 0
182
+ if (typeof config?.get_defined_options == "function") {
183
+ defined_options = config?.get_defined_options()
184
+ }
185
+ popover_manager = create_popover_manager({
186
+ min_width: 280,
187
+ target_width: 450,
188
+ min_height: 400,
189
+ target_height: 240,
190
+ type: "center",
191
+ header: "Defined Target Selector",
192
+ on_open: () => {
193
+ if (typeof config?.on_dropdown_opened == "function") {
194
+ config?.on_dropdown_opened()
195
+ }
196
+ },
197
+ })
198
+ open_edit_button_manager = create_button_manager({
199
+ type: "outlined",
200
+ h: 10,
201
+ l: 3,
202
+ c: 1,
203
+ is_compressed: true,
204
+ text: () => (Array.isArray(val) && val.length > 0 ? val_to_text(val) : "Select Defined Identifier"),
205
+ popover_target: () => `popover_${popover_manager?.id}`,
206
+ })
207
+ def_dropdown_manager = create_dropdown_manager({
208
+ label: "Defined Variable",
209
+ is_button_compressed: true,
210
+ val: input?.val?.[0],
211
+ on_dropdown_opened: () => {
212
+ if (typeof config?.get_defined_options == "function") {
213
+ defined_options = config?.get_defined_options()
214
+ def_dropdown_manager.set_options(defined_options)
215
+ }
216
+ },
217
+ mb: 1,
218
+ })
219
+ add_path_item_button_manager = create_button_manager({
220
+ type: "outlined",
221
+ support_icon: "plus",
222
+ text: "Add Path Item",
223
+ is_compressed: true,
224
+ mb: 1,
225
+ on_click: () => prep_path([...(Array.isArray(val) ? val : []), null]),
226
+ })
227
+ finish_button_manager = create_button_manager({
228
+ text: "Finish",
229
+ on_click: () => {
230
+ if (typeof config?.on_finish == "function") {
231
+ config?.on_finish(val)
232
+ }
233
+ },
234
+ })
235
+ prep_path(input?.val)
236
+ }
237
+
238
+ init(config)
239
+
240
+ return {
241
+ get val() {
242
+ return val
243
+ },
244
+ get val_text() {
245
+ return val_text
246
+ },
247
+ get variable_data_type_at_path() {
248
+ return variable_data_type_at_path
249
+ },
250
+ get levels_nested() {
251
+ return levels_nested
252
+ },
253
+ get popover_manager() {
254
+ return popover_manager
255
+ },
256
+ get open_edit_button_manager() {
257
+ return open_edit_button_manager
258
+ },
259
+ get def_dropdown_manager() {
260
+ return def_dropdown_manager
261
+ },
262
+ get add_path_item_button_manager() {
263
+ return add_path_item_button_manager
264
+ },
265
+ get path_prepped() {
266
+ return path_prepped
267
+ },
268
+ get finish_button_manager() {
269
+ return finish_button_manager
270
+ },
271
+ close_popover,
272
+ }
273
+ }
@@ -0,0 +1,100 @@
1
+ <script>
2
+ import { create_unique_id } from "../../client/index.js"
3
+ import { onMount } from "svelte"
4
+
5
+ function create_video_manager(config) {
6
+ const id = create_unique_id(null, 20)
7
+ let step = $state(null)
8
+
9
+ function draw() {
10
+ let video_el = document?.querySelector(`#video_${id}`)
11
+ let canvas_el = document?.querySelector(`#canvas_${id}`)
12
+ if (video_el && canvas_el) {
13
+ let ctx = canvas_el.getContext("2d")
14
+ ctx.filter = "blur(1px)"
15
+ ctx.drawImage(video_el, 0, 0, canvas_el.width, canvas_el.height)
16
+ }
17
+ }
18
+
19
+ function draw_loop() {
20
+ draw()
21
+ step = window.requestAnimationFrame(draw_loop)
22
+ }
23
+
24
+ function draw_pause() {
25
+ window.cancelAnimationFrame(step)
26
+ step = undefined
27
+ }
28
+
29
+ return {
30
+ id,
31
+ draw,
32
+ draw_loop,
33
+ draw_pause,
34
+ }
35
+ }
36
+
37
+ let manager = $state(null)
38
+ onMount(() => {
39
+ manager = create_video_manager()
40
+ })
41
+ </script>
42
+
43
+ <section class="wrapper">
44
+ <video
45
+ id={`video_${manager?.id}`}
46
+ controls
47
+ muted
48
+ class="video"
49
+ src="http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4"
50
+ onpause={(e) => manager?.draw_pause(e)}
51
+ onended={(e) => manager?.draw_pause(e)}
52
+ onplay={(e) => manager?.draw_loop(e)}
53
+ onseeked={(e) => manager?.draw(e)}
54
+ onloadeddata={(e) => manager?.draw(e)}
55
+ ></video>
56
+ <canvas width="10" height="6" aria-hidden="true" class="canvas" id={`canvas_${manager?.id}`}></canvas>
57
+ </section>
58
+
59
+ <style>
60
+ *,
61
+ *::before,
62
+ *::after {
63
+ box-sizing: border-box;
64
+ }
65
+
66
+ .video,
67
+ .canvas {
68
+ display: block;
69
+ width: 100%;
70
+ height: auto;
71
+ margin: 0;
72
+ }
73
+
74
+ .wrapper {
75
+ position: relative;
76
+ box-shadow: inset 0 0 4rem 4.5rem var(--color-background);
77
+ max-width: 1600px;
78
+ margin: 0 auto;
79
+ }
80
+
81
+ .canvas {
82
+ position: absolute;
83
+ top: 0;
84
+ left: 0;
85
+ z-index: -1;
86
+ width: 100%;
87
+ height: 100%;
88
+ opacity: 0.4;
89
+ }
90
+
91
+ .video {
92
+ padding: 7rem;
93
+ }
94
+
95
+ @media (prefers-reduced-motion: reduce) {
96
+ .canvas {
97
+ display: none !important;
98
+ }
99
+ }
100
+ </style>
@@ -0,0 +1,42 @@
1
+ <script>
2
+ let { x_handle, size = 4 } = $props()
3
+ </script>
4
+
5
+ <a
6
+ href="https://x.com/{x_handle}"
7
+ role="button"
8
+ tabindex="0"
9
+ class="button_container"
10
+ target="_blank"
11
+ data-show-count="false"
12
+ style="min-height: {size}rem; border-radius: {size}rem; padding: {size / 3}rem {size / 2}rem;
13
+ font-size: {size / 1.8}rem;"
14
+ >
15
+ <svg fill="none" height={size * 5} width={size * 5} xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1200 1227"
16
+ ><path
17
+ d="M714.163 519.284 1160.89 0h-105.86L667.137 450.887 357.328 0H0l468.492 681.821L0 1226.37h105.866l409.625-476.152 327.181 476.152H1200L714.137 519.284h.026ZM569.165 687.828l-47.468-67.894-377.686-540.24h162.604l304.797 435.991 47.468 67.894 396.2 566.721H892.476L569.165 687.854v-.026Z"
18
+ fill="var(--g24-t)"
19
+ /></svg
20
+ >
21
+ @{x_handle}
22
+ </a>
23
+
24
+ <style>
25
+ .button_container {
26
+ display: flex;
27
+ width: fit-content;
28
+ gap: 0.8rem;
29
+ align-items: center;
30
+ background-color: var(--g1-t);
31
+ color: var(--g24-t);
32
+ text-decoration: none;
33
+ font-weight: 600;
34
+ box-shadow: 0px 0.5rem 1rem var(--g15-t);
35
+ transition: all 0.3s ease 0s;
36
+ }
37
+ .button_container:hover {
38
+ background-color: var(--g4-t);
39
+ box-shadow: 0px 0.3rem 2rem var(--g15-t);
40
+ transform: translateY(-0.2rem);
41
+ }
42
+ </style>
@@ -0,0 +1,52 @@
1
+ <script>
2
+ import LoadingWheel from "../LoadingWheel/index.svelte"
3
+
4
+ let { manager } = $props()
5
+
6
+ $effect(() => {
7
+ if (typeof manager?.load_script == "function") {
8
+ manager?.load_script()
9
+ }
10
+ })
11
+ </script>
12
+
13
+ <div id={manager?.selector_id}>
14
+ {#if manager?.is_loading}
15
+ <div
16
+ style="width: 100%; height: 30rem; display: grid; place-items: center; background-color: var(--shadow2-t); border-radius: 1rem;"
17
+ >
18
+ <LoadingWheel size={8} />
19
+ <p>Loading post</p>
20
+ </div>
21
+ {/if}
22
+ {#if manager?.error_message}
23
+ <div class="failed_to_load_box">
24
+ <p>{manager?.error_message}</p>
25
+ <a href="https://x.com/status/{manager?.post_id}">https://x.com/status/{manager?.post_id}</a>
26
+ </div>
27
+ {/if}
28
+ <div class="x_post_container">
29
+ <div id={`x_post_${manager?.id}`} class:is_hidden={!!manager?.error_message}></div>
30
+ </div>
31
+ </div>
32
+
33
+ <style>
34
+ .failed_to_load_box {
35
+ margin: 1rem 0;
36
+ background-color: oklch(var(--l8-t) var(--c16) var(--h3) / var(--o3));
37
+ border-radius: 1rem;
38
+ padding: 1rem;
39
+ }
40
+ .failed_to_load_box p {
41
+ color: oklch(var(--l3-t) var(--c16) var(--h3));
42
+ }
43
+ .is_hidden {
44
+ max-width: 0;
45
+ max-height: 0;
46
+ overflow: hidden;
47
+ }
48
+ .x_post_container {
49
+ max-width: 100% !important;
50
+ overflow-x: scroll;
51
+ }
52
+ </style>
@@ -0,0 +1,64 @@
1
+ import { create_unique_id } from "../../client/index.js"
2
+
3
+ export function create_x_post_manager(config) {
4
+ const id = create_unique_id(null, 20)
5
+
6
+ let is_loading = $state(false)
7
+ let is_script_loaded = $state(false)
8
+ let error_message = $state("")
9
+
10
+ let is_dark_theme = $derived(config?.is_dark_theme)
11
+ let theme = $derived(config?.is_dark_theme ? "dark" : "light")
12
+
13
+ function load_script() {
14
+ error_message = null
15
+ if (!is_script_loaded) {
16
+ const script = document.createElement("script")
17
+ script.src = "https://platform.twitter.com/widgets.js"
18
+ script.charset = "utf-8"
19
+ script.async = true
20
+ script.onload = () => {
21
+ is_script_loaded = true
22
+ render_x_post()
23
+ }
24
+ document.head.appendChild(script)
25
+ }
26
+ }
27
+
28
+ async function render_x_post() {
29
+ try {
30
+ error_message = ""
31
+ is_loading = true
32
+ let container_el = document?.querySelector(`#x_post_${id}`)
33
+ if (config?.post_id && is_script_loaded && window.twttr && container_el) {
34
+ const create_embed_res = await twttr.widgets.createTweet(config?.post_id, container_el, {
35
+ theme: theme,
36
+ dnt: true,
37
+ })
38
+ if (create_embed_res) {
39
+ error_message = ""
40
+ } else {
41
+ error_message = "Post not found or failed to load."
42
+ }
43
+ }
44
+ } catch {
45
+ error_message = "Post not found or failed to load."
46
+ } finally {
47
+ is_loading = false
48
+ }
49
+ }
50
+
51
+ return {
52
+ id,
53
+ get post_id() {
54
+ return config?.post_id
55
+ },
56
+ get is_dark_theme() {
57
+ return is_dark_theme
58
+ },
59
+ get theme() {
60
+ return theme
61
+ },
62
+ load_script,
63
+ }
64
+ }
@@ -0,0 +1,82 @@
1
+ <script>
2
+ let { url, size = 4 } = $props()
3
+ </script>
4
+
5
+ <a
6
+ href={url}
7
+ role="button"
8
+ tabindex="0"
9
+ class="button_container"
10
+ target="_blank"
11
+ data-show-count="false"
12
+ aria-label="share youtube channel"
13
+ style="min-height: {size}rem; border-radius: {size / 2.5}rem; padding: {size / 4}rem {size / 3}rem;
14
+ font-size: {size / 1.8}rem;"
15
+ >
16
+ <svg
17
+ width="100%"
18
+ height="{size / 1.5}rem"
19
+ viewBox="0 0 381 86"
20
+ version="1.1"
21
+ xmlns="http://www.w3.org/2000/svg"
22
+ xmlns:xlink="http://www.w3.org/1999/xlink"
23
+ xml:space="preserve"
24
+ style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;"
25
+ >
26
+ <g>
27
+ <path
28
+ d="M118.946,13.279C117.549,8.052 113.433,3.936 108.206,2.539C98.731,0 60.742,0 60.742,0C60.742,0 22.753,0 13.278,2.539C8.052,3.936 3.935,8.052 2.538,13.279C0,22.753 0,42.52 0,42.52C0,42.52 0,62.287 2.538,71.76C3.935,76.987 8.052,81.104 13.278,82.501C22.753,85.039 60.742,85.039 60.742,85.039C60.742,85.039 98.731,85.039 108.206,82.501C113.433,81.104 117.549,76.987 118.946,71.76C121.485,62.287 121.485,42.52 121.485,42.52C121.485,42.52 121.485,22.753 118.946,13.279Z"
29
+ style="fill:rgb(237,31,36);fill-rule:nonzero;"
30
+ />
31
+ <path d="M48.593,60.743L80.155,42.52L48.593,24.297L48.593,60.743Z" style="fill:white;fill-rule:nonzero;" />
32
+ <path
33
+ d="M189.801,69.023C190.466,67.287 190.8,64.449 190.8,60.51L190.8,43.916C190.8,40.094 190.466,37.3 189.801,35.533C189.135,33.767 187.962,32.883 186.283,32.883C184.661,32.883 183.516,33.767 182.851,35.533C182.185,37.3 181.852,40.094 181.852,43.916L181.852,60.51C181.852,64.449 182.17,67.287 182.808,69.023C183.444,70.761 184.602,71.629 186.283,71.629C187.962,71.629 189.135,70.761 189.801,69.023ZM176.336,77.364C173.931,75.744 172.222,73.223 171.21,69.805C170.196,66.389 169.69,61.842 169.69,56.166L169.69,48.434C169.69,42.7 170.268,38.095 171.427,34.621C172.585,31.146 174.394,28.612 176.857,27.019C179.318,25.427 182.547,24.63 186.544,24.63C190.482,24.63 193.638,25.441 196.013,27.063C198.387,28.684 200.125,31.219 201.226,34.664C202.325,38.111 202.876,42.7 202.876,48.434L202.876,56.166C202.876,61.842 202.34,66.404 201.269,69.849C200.197,73.296 198.459,75.815 196.056,77.407C193.652,79 190.395,79.796 186.283,79.796C182.054,79.796 178.738,78.985 176.336,77.364Z"
34
+ style="fill:rgb(39,39,39);fill-rule:nonzero;"
35
+ />
36
+ <path
37
+ d="M362.376,33.878C361.769,34.632 361.362,35.862 361.16,37.57C360.956,39.279 360.857,41.871 360.857,45.346L360.857,49.169L369.63,49.169L369.63,45.346C369.63,41.929 369.514,39.337 369.283,37.57C369.051,35.804 368.632,34.56 368.024,33.835C367.415,33.111 366.474,32.749 365.2,32.749C363.925,32.749 362.984,33.126 362.376,33.878ZM360.857,56.293L360.857,58.986C360.857,62.404 360.956,64.966 361.16,66.674C361.362,68.383 361.781,69.629 362.42,70.411C363.057,71.192 364.04,71.584 365.374,71.584C367.168,71.584 368.4,70.888 369.066,69.498C369.731,68.108 370.093,65.792 370.151,62.548L380.49,63.156C380.548,63.621 380.577,64.257 380.577,65.067C380.577,69.991 379.231,73.669 376.537,76.101C373.845,78.533 370.035,79.75 365.113,79.75C359.206,79.75 355.064,77.897 352.69,74.189C350.314,70.484 349.127,64.75 349.127,56.988L349.127,47.691C349.127,39.699 350.358,33.865 352.82,30.186C355.281,26.508 359.495,24.669 365.461,24.669C369.572,24.669 372.729,25.422 374.93,26.928C377.13,28.435 378.68,30.78 379.578,33.965C380.476,37.151 380.925,41.553 380.925,47.17L380.925,56.293L360.857,56.293Z"
38
+ style="fill:rgb(39,39,39);fill-rule:nonzero;"
39
+ />
40
+ <path
41
+ d="M147.142,55.295L133.502,6.036L145.404,6.036L150.182,28.363C151.399,33.867 152.296,38.558 152.875,42.437L153.223,42.437C153.628,39.657 154.526,34.996 155.916,28.45L160.868,6.036L172.77,6.036L158.957,55.295L158.957,78.927L147.142,78.927L147.142,55.295Z"
42
+ style="fill:rgb(39,39,39);fill-rule:nonzero;"
43
+ />
44
+ <path
45
+ d="M241.586,25.672L241.586,78.927L232.203,78.927L231.16,72.412L230.9,72.412C228.351,77.335 224.528,79.796 219.432,79.796C215.899,79.796 213.293,78.638 211.613,76.321C209.933,74.005 209.094,70.384 209.094,65.462L209.094,25.672L221.083,25.672L221.083,64.766C221.083,67.142 221.344,68.836 221.865,69.848C222.386,70.863 223.255,71.369 224.471,71.369C225.514,71.369 226.513,71.051 227.468,70.413C228.424,69.776 229.133,68.966 229.597,67.981L229.597,25.672L241.586,25.672Z"
46
+ style="fill:rgb(39,39,39);fill-rule:nonzero;"
47
+ />
48
+ <path
49
+ d="M303.082,25.672L303.082,78.927L293.699,78.927L292.656,72.412L292.397,72.412C289.846,77.335 286.024,79.796 280.928,79.796C277.395,79.796 274.789,78.638 273.109,76.321C271.429,74.005 270.59,70.384 270.59,65.462L270.59,25.672L282.579,25.672L282.579,64.766C282.579,67.142 282.839,68.836 283.36,69.848C283.882,70.863 284.751,71.369 285.967,71.369C287.01,71.369 288.009,71.051 288.964,70.413C289.92,69.776 290.629,68.966 291.093,67.981L291.093,25.672L303.082,25.672Z"
50
+ style="fill:rgb(39,39,39);fill-rule:nonzero;"
51
+ />
52
+ <path
53
+ d="M274.164,15.681L262.262,15.681L262.262,78.927L250.534,78.927L250.534,15.681L238.632,15.681L238.632,6.037L274.164,6.037L274.164,15.681Z"
54
+ style="fill:rgb(39,39,39);fill-rule:nonzero;"
55
+ />
56
+ <path
57
+ d="M331.772,55.908C331.772,59.789 331.611,62.83 331.293,65.03C330.975,67.232 330.439,68.796 329.686,69.721C328.933,70.648 327.918,71.111 326.646,71.111C325.66,71.111 324.748,70.88 323.909,70.416C323.068,69.953 322.389,69.258 321.867,68.331L321.867,38.098C322.272,36.651 322.967,35.463 323.952,34.536C324.937,33.611 326.007,33.146 327.166,33.146C328.383,33.146 329.323,33.624 329.99,34.579C330.655,35.535 331.119,37.142 331.38,39.402C331.641,41.66 331.772,44.874 331.772,49.044L331.772,55.908ZM342.761,34.185C342.036,30.827 340.863,28.394 339.242,26.887C337.62,25.382 335.39,24.629 332.553,24.629C330.352,24.629 328.296,25.252 326.385,26.497C324.474,27.742 322.996,29.378 321.954,31.405L321.866,31.405L321.867,3.344L310.313,3.344L310.313,78.926L320.216,78.926L321.433,73.888L321.693,73.888C322.619,75.683 324.009,77.102 325.863,78.145C327.716,79.187 329.773,79.709 332.032,79.709C336.085,79.709 339.068,77.84 340.98,74.105C342.891,70.369 343.847,64.535 343.847,56.599L343.847,48.173C343.847,42.208 343.484,37.545 342.761,34.185Z"
58
+ style="fill:rgb(39,39,39);fill-rule:nonzero;"
59
+ />
60
+ </g>
61
+ </svg>
62
+ </a>
63
+
64
+ <style>
65
+ .button_container {
66
+ display: flex;
67
+ width: fit-content;
68
+ gap: 0.8rem;
69
+ align-items: center;
70
+ background-color: var(--g1-t);
71
+ color: var(--g24-t);
72
+ text-decoration: none;
73
+ font-weight: 600;
74
+ box-shadow: 0px 0.5rem 1rem var(--g15-t);
75
+ transition: all 0.3s ease 0s;
76
+ }
77
+ .button_container:hover {
78
+ background-color: var(--g4-t);
79
+ box-shadow: 0px 0.3rem 2rem var(--g15-t);
80
+ transform: translateY(-0.2rem);
81
+ }
82
+ </style>
@@ -0,0 +1,73 @@
1
+ <script>
2
+ import LoadingWheel from "../LoadingWheel/index.svelte"
3
+ import { onMount } from "svelte"
4
+
5
+ let { manager } = $props()
6
+
7
+ onMount(() => {
8
+ if (typeof manager?.render_video == "function") {
9
+ manager?.render_video()
10
+ }
11
+ })
12
+ </script>
13
+
14
+ <svelte:window onresize={() => manager.resize_video()} />
15
+
16
+ <div id={manager?.selector_id}>
17
+ {#if manager?.is_loading}
18
+ <div
19
+ style="width: 100%; height: 30rem; display: grid; place-items: center; background-color: var(--shadow2-t); border-radius: 1rem; margin-top: 2rem;"
20
+ >
21
+ <LoadingWheel size={8} />
22
+ <p>Loading Youtube Video</p>
23
+ </div>
24
+ {/if}
25
+ {#if manager?.error_message}
26
+ <div class="failed_to_load_box">
27
+ <p>{manager?.error_message}</p>
28
+ <a href="https://youtu.be/{manager?.video_id}">https://youtu.be/{manager?.video_id}</a>
29
+ </div>
30
+ {/if}
31
+ <div class="video_container">
32
+ <div class="video_inner_container">
33
+ <iframe
34
+ class:is_hidden={!!manager?.error_message}
35
+ style="position: absolute; top: 0; left: 0; width: 100%; height: 100%;"
36
+ src="https://www.youtube.com/embed/{manager?.video_id}?rel=0"
37
+ title="YouTube video player"
38
+ frameborder="0"
39
+ allow="clipboard-write; encrypted-media; gyroscope; web-share"
40
+ allowfullscreen
41
+ ></iframe>
42
+ </div>
43
+ </div>
44
+ </div>
45
+
46
+ <style>
47
+ .video_container {
48
+ position: relative;
49
+ width: 100%;
50
+ overflow: hidden;
51
+ margin-top: 2rem;
52
+ }
53
+ .video_inner_container {
54
+ position: relative;
55
+ padding-bottom: 56.25%;
56
+ height: 0;
57
+ overflow: hidden;
58
+ }
59
+ .failed_to_load_box {
60
+ margin: 1rem 0;
61
+ background-color: oklch(var(--l8-t) var(--c16) var(--h3) / var(--o3));
62
+ border-radius: 1rem;
63
+ padding: 1rem;
64
+ }
65
+ .failed_to_load_box p {
66
+ color: oklch(var(--l3-t) var(--c16) var(--h3));
67
+ }
68
+ .is_hidden {
69
+ max-width: 0;
70
+ max-height: 0;
71
+ overflow: hidden;
72
+ }
73
+ </style>