sveltekit-ui 1.1.16 → 1.1.17

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 (156) hide show
  1. package/package.json +1 -1
  2. package/dist/Components/ArrowToggle/index.svelte +0 -62
  3. package/dist/Components/Attachment/index.svelte +0 -77
  4. package/dist/Components/Attachment/index.svelte.js +0 -119
  5. package/dist/Components/AudioEditor/index.svelte +0 -252
  6. package/dist/Components/AudioEditor/index.svelte.js +0 -977
  7. package/dist/Components/AudioEditor/samples/alloy-voice-sample.mp3 +0 -0
  8. package/dist/Components/AudioEditor/samples/echo-voice-sample.mp3 +0 -0
  9. package/dist/Components/AudioEditor/samples/fable-voice-sample.mp3 +0 -0
  10. package/dist/Components/AudioEditor/samples/nova-voice-sample.mp3 +0 -0
  11. package/dist/Components/AudioEditor/samples/onyx-voice-sample.mp3 +0 -0
  12. package/dist/Components/AudioEditor/samples/shimmer-voice-sample.mp3 +0 -0
  13. package/dist/Components/Breadcrumbs/index.svelte +0 -27
  14. package/dist/Components/Breadcrumbs/index.svelte.js +0 -88
  15. package/dist/Components/Chart/Klines/index.svelte +0 -87
  16. package/dist/Components/Chart/index.svelte +0 -226
  17. package/dist/Components/Chart/index.svelte.js +0 -1090
  18. package/dist/Components/ChartInput/DisplayNav/Klines/index.svelte +0 -150
  19. package/dist/Components/ChartInput/DisplayNav/Lines/index.svelte +0 -45
  20. package/dist/Components/ChartInput/DisplayNav/index.svelte +0 -297
  21. package/dist/Components/ChartInput/EditPanel/index.svelte +0 -155
  22. package/dist/Components/ChartInput/index.svelte +0 -21
  23. package/dist/Components/ChartInput/index.svelte.js +0 -671
  24. package/dist/Components/Color/index.svelte +0 -51
  25. package/dist/Components/Color/index.svelte.js +0 -31
  26. package/dist/Components/ColorInput/ChromaPicker/index.svelte +0 -50
  27. package/dist/Components/ColorInput/ColorPalette/index.svelte +0 -62
  28. package/dist/Components/ColorInput/OpacityPicker/index.svelte +0 -68
  29. package/dist/Components/ColorInput/ShowcasePicker/index.svelte +0 -136
  30. package/dist/Components/ColorInput/index.svelte +0 -70
  31. package/dist/Components/ColorInput/index.svelte.js +0 -386
  32. package/dist/Components/ConditionsInput/index.svelte +0 -46
  33. package/dist/Components/ConditionsInput/index.svelte.js +0 -201
  34. package/dist/Components/Confetti/index.svelte +0 -98
  35. package/dist/Components/Confetti/index.svelte.js +0 -94
  36. package/dist/Components/Content/index.svelte +0 -500
  37. package/dist/Components/Content/index.svelte.js +0 -910
  38. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Audio/index.svelte +0 -31
  39. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Audio/index.svelte.js +0 -258
  40. package/dist/Components/ContentInput/AttributesInput/CustomConfig/AudioAdvanced/index.svelte +0 -31
  41. package/dist/Components/ContentInput/AttributesInput/CustomConfig/AudioAdvanced/index.svelte.js +0 -258
  42. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Dropdown/index.svelte +0 -58
  43. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Dropdown/index.svelte.js +0 -206
  44. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Image/index.svelte +0 -28
  45. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Image/index.svelte.js +0 -224
  46. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Number/index.svelte +0 -44
  47. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Number/index.svelte.js +0 -272
  48. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Qr/index.svelte +0 -41
  49. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Qr/index.svelte.js +0 -202
  50. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Slider/index.svelte +0 -19
  51. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Slider/index.svelte.js +0 -117
  52. package/dist/Components/ContentInput/AttributesInput/CustomConfig/TableAdvanced/index.svelte +0 -60
  53. package/dist/Components/ContentInput/AttributesInput/CustomConfig/TableAdvanced/index.svelte.js +0 -542
  54. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Tag/index.svelte +0 -47
  55. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Tag/index.svelte.js +0 -185
  56. package/dist/Components/ContentInput/AttributesInput/CustomConfig/TextInput/index.svelte +0 -35
  57. package/dist/Components/ContentInput/AttributesInput/CustomConfig/TextInput/index.svelte.js +0 -222
  58. package/dist/Components/ContentInput/AttributesInput/CustomConfig/TimeInput/index.svelte +0 -20
  59. package/dist/Components/ContentInput/AttributesInput/CustomConfig/TimeInput/index.svelte.js +0 -84
  60. package/dist/Components/ContentInput/AttributesInput/DefinedTypeInput/index.svelte +0 -25
  61. package/dist/Components/ContentInput/AttributesInput/DefinedTypeInput/index.svelte.js +0 -91
  62. package/dist/Components/ContentInput/AttributesInput/index.svelte +0 -352
  63. package/dist/Components/ContentInput/AttributesInput/index.svelte.js +0 -1436
  64. package/dist/Components/ContentInput/ContentPanelBuilder/AddElement/index.svelte +0 -64
  65. package/dist/Components/ContentInput/ContentPanelBuilder/AddElement/index.svelte.js +0 -97
  66. package/dist/Components/ContentInput/ContentPanelBuilder/ElementList/index.svelte +0 -184
  67. package/dist/Components/ContentInput/ContentPanelBuilder/index.svelte +0 -41
  68. package/dist/Components/ContentInput/index.svelte +0 -78
  69. package/dist/Components/ContentInput/index.svelte.js +0 -1197
  70. package/dist/Components/CronInput/index.svelte +0 -78
  71. package/dist/Components/CronInput/index.svelte.js +0 -198
  72. package/dist/Components/DataTypeInput/index.svelte +0 -174
  73. package/dist/Components/DataTypeInput/index.svelte.js +0 -565
  74. package/dist/Components/Dropdown/index.svelte +0 -116
  75. package/dist/Components/Dropdown/index.svelte.js +0 -403
  76. package/dist/Components/ErrorX/index.svelte +0 -58
  77. package/dist/Components/FileInput/index.svelte +0 -146
  78. package/dist/Components/FileInput/index.svelte.js +0 -225
  79. package/dist/Components/Hamburger/index.svelte +0 -99
  80. package/dist/Components/HorizScrollBox/index.svelte +0 -145
  81. package/dist/Components/IconInput/index.svelte +0 -77
  82. package/dist/Components/IconInput/index.svelte.js +0 -259
  83. package/dist/Components/Image/index.svelte +0 -126
  84. package/dist/Components/Image/index.svelte.js +0 -116
  85. package/dist/Components/ImageEditor/Image/CropBox/index.svelte +0 -165
  86. package/dist/Components/ImageEditor/Image/index.svelte +0 -104
  87. package/dist/Components/ImageEditor/Panels/AI/index.svelte +0 -44
  88. package/dist/Components/ImageEditor/Panels/Crop/index.svelte +0 -96
  89. package/dist/Components/ImageEditor/Panels/File/QualityPicker/index.svelte +0 -124
  90. package/dist/Components/ImageEditor/Panels/File/index.svelte +0 -74
  91. package/dist/Components/ImageEditor/Panels/Filters/index.svelte +0 -46
  92. package/dist/Components/ImageEditor/Panels/Resize/index.svelte +0 -58
  93. package/dist/Components/ImageEditor/index.svelte +0 -93
  94. package/dist/Components/ImageEditor/index.svelte.js +0 -1961
  95. package/dist/Components/ImageSlider/index.svelte +0 -124
  96. package/dist/Components/ImageSlider/index.svelte.js +0 -99
  97. package/dist/Components/Json/Nested/index.svelte +0 -157
  98. package/dist/Components/LabeledItem/index.svelte +0 -102
  99. package/dist/Components/Layout/NavBar/FullNav/index.svelte +0 -52
  100. package/dist/Components/Layout/NavBar/NavGuts/index.svelte +0 -87
  101. package/dist/Components/Layout/NavBar/index.svelte +0 -72
  102. package/dist/Components/Layout/index.svelte +0 -149
  103. package/dist/Components/Layout/index.svelte.js +0 -360
  104. package/dist/Components/LoadingWheel/index.svelte +0 -38
  105. package/dist/Components/LocationInput/index.svelte +0 -197
  106. package/dist/Components/LocationInput/index.svelte.js +0 -965
  107. package/dist/Components/Number/index.svelte +0 -47
  108. package/dist/Components/Number/index.svelte.js +0 -151
  109. package/dist/Components/PhoneCountryCode/index.svelte +0 -7
  110. package/dist/Components/PhoneCountryCode/index.svelte.js +0 -260
  111. package/dist/Components/Popover/index.svelte +0 -396
  112. package/dist/Components/Popover/index.svelte.js +0 -319
  113. package/dist/Components/Spacer/index.svelte +0 -41
  114. package/dist/Components/StoragePicker/DisplayFile/index.svelte +0 -15
  115. package/dist/Components/StoragePicker/index.svelte +0 -187
  116. package/dist/Components/StoragePicker/index.svelte.js +0 -592
  117. package/dist/Components/TableAdvanced/ColumnInput/index.svelte +0 -117
  118. package/dist/Components/TableAdvanced/ColumnInput/index.svelte.js +0 -456
  119. package/dist/Components/TableAdvanced/FilterInput/index.svelte +0 -54
  120. package/dist/Components/TableAdvanced/FilterInput/index.svelte.js +0 -247
  121. package/dist/Components/TableAdvanced/Pagination/index.svelte +0 -43
  122. package/dist/Components/TableAdvanced/Pagination/index.svelte.js +0 -97
  123. package/dist/Components/TableAdvanced/SortByInput/index.svelte +0 -72
  124. package/dist/Components/TableAdvanced/SortByInput/index.svelte.js +0 -176
  125. package/dist/Components/Tag/index.svelte +0 -45
  126. package/dist/Components/Tag/index.svelte.js +0 -76
  127. package/dist/Components/TextArrayInput/index.svelte +0 -108
  128. package/dist/Components/TextArrayInput/index.svelte.js +0 -239
  129. package/dist/Components/TextInput/PasswordTooltip/index.svelte +0 -89
  130. package/dist/Components/TimeInput/NumberToggler/index.svelte +0 -34
  131. package/dist/Components/TimeInput/NumberToggler/index.svelte.js +0 -79
  132. package/dist/Components/TimeInput/index.js +0 -702
  133. package/dist/Components/TimeInput/index.svelte +0 -211
  134. package/dist/Components/TimeInput/index.svelte.js +0 -638
  135. package/dist/Components/Tooltip/index.svelte +0 -143
  136. package/dist/Components/TransparentBackground/index.svelte +0 -153
  137. package/dist/Components/TypingDots/index.svelte +0 -84
  138. package/dist/Components/VariablePathInput/index.svelte +0 -63
  139. package/dist/Components/VariablePathInput/index.svelte.js +0 -273
  140. package/dist/Components/XFollow/index.svelte +0 -42
  141. package/dist/Components/YoutubeChannelButton/index.svelte +0 -82
  142. package/dist/Components/YoutubeVideo/index.svelte +0 -73
  143. package/dist/Components/YoutubeVideo/index.svelte.js +0 -54
  144. package/dist/actions/draggable.js +0 -49
  145. package/dist/actions/index.js +0 -24
  146. package/dist/actions/no_spaces.js +0 -33
  147. package/dist/actions/numbers_only.js +0 -26
  148. package/dist/actions/scroll_y.js +0 -28
  149. package/dist/actions/stop_scroll_propagation_y.js +0 -42
  150. package/dist/actions/swipe_handler.js +0 -295
  151. package/dist/client/astc_formatting/index.js +0 -1128
  152. package/dist/client/docs/index.js +0 -7622
  153. package/dist/client/index.js +0 -735
  154. package/dist/client/types/index.js +0 -2812
  155. package/dist/index.js +0 -180
  156. package/dist/style.css +0 -682
@@ -1,565 +0,0 @@
1
- import { node_types, json_to_data_type, deep_copy } from "../../client/index.js"
2
- import { create_popover_manager } from "../Popover/index.svelte.js"
3
- import { create_button_manager } from "../Button/index.svelte.js"
4
- import { create_text_input_manager } from "../TextInput/index.svelte.js"
5
- import { create_breadcrumbs_manager } from "../Breadcrumbs/index.svelte.js"
6
- import { create_dropdown_manager } from "../Dropdown/index.svelte.js"
7
- import { create_unique_id, set_closurable } from "../../client/index.js"
8
-
9
- export function create_data_type_input_manager(config) {
10
- const id = create_unique_id(null, 20)
11
-
12
- let label = $state(null)
13
- let initial_val = $state(null)
14
- let val = $state(null)
15
- let property_type_options = $state(null)
16
- let type_option_buttons = $state(null)
17
- let breadcrumbs_manager = $state(null)
18
- let popover_manager = $state(null)
19
- let search_text_input_manager = $state(null)
20
- let type_options_dropdown_manager = $state(null)
21
- let items_type_options_dropdown_manager = $state(null)
22
- let property_key_to_add_text_manager = $state(null)
23
- let property_key_to_add_finish_button_manager = $state(null)
24
- let edit_items_type_button_manager = $state(null)
25
- let clear_breadcrumbs_button_manager = $state(null)
26
- let guess_from_variables_button_manager = $state(null)
27
- let finish_button_manager = $state(null)
28
- let table_id_for_foreign_row_text_input_manager = $state(null)
29
- let property_key_table_id_for_foreign_row_text_input_manager = $state(null)
30
- let table_options = $state(null)
31
-
32
- let data_sample = $derived(set_closurable(config?.data_sample, null))
33
-
34
- let val_at_path = $derived(get_val_at_path())
35
- let type_options = $derived(
36
- Object.entries(node_types)
37
- .filter(([key, value]) => {
38
- if (search_text_input_manager?.val && typeof search_text_input_manager?.val === "string") {
39
- return (
40
- value?.kind === "literal" &&
41
- value?.name?.toLowerCase().includes(search_text_input_manager?.val?.toLowerCase())
42
- )
43
- }
44
- return value?.kind === "literal"
45
- })
46
- .map(([key, value]) => ({ key, name: value?.name }))
47
- )
48
- let type_display_name = $derived(get_type_display_name(val ?? null))
49
-
50
- function set_type_option_buttons() {
51
- let type_option_buttons_loc = []
52
- if (Array.isArray(type_options) && type_options?.length > 0) {
53
- for (let type_option of type_options) {
54
- let button_manager = create_button_manager({
55
- min_height: 14,
56
- mt: 0.5,
57
- mb: 0.5,
58
- ml: 0.5,
59
- mr: 0.5,
60
- type: "outlined",
61
- on_click: () => {
62
- set_data_type(type_option?.key)
63
- search_text_input_manager?.set_val(null)
64
- },
65
- })
66
- type_option_buttons_loc.push({
67
- key: type_option?.key,
68
- name: type_option?.name,
69
- button_manager: button_manager,
70
- })
71
- }
72
- }
73
- type_option_buttons = type_option_buttons_loc
74
- }
75
-
76
- function get_val_at_path() {
77
- let val_at_path_loc = deep_copy(val)
78
- if (Array.isArray(breadcrumbs_manager?.val) && breadcrumbs_manager?.val?.length > 0) {
79
- for (let i = 0; i < breadcrumbs_manager?.val?.length; i++) {
80
- if (["array_uniform_literal", "object_uniform_literal"].includes(val_at_path_loc?.type)) {
81
- val_at_path_loc = val_at_path_loc.items
82
- } else {
83
- val_at_path_loc = val_at_path_loc.properties[breadcrumbs_manager?.val?.[i]]
84
- }
85
- }
86
- }
87
- return val_at_path_loc
88
- }
89
-
90
- function set_property_type_options() {
91
- let property_type_options_loc = {}
92
- for (let property_key of Object.keys(val_at_path?.properties || {}).sort(
93
- (a, b) => val_at_path?.properties?.[a]?.display_order - val_at_path.properties?.[b]?.display_order
94
- )) {
95
- let edit_popover_manager = $state(null)
96
- let edit_popover_trigger_button_manager = $state(null)
97
- edit_popover_manager = create_popover_manager({
98
- min_width: 200,
99
- target_width: 200,
100
- min_height: 180,
101
- target_height: 200,
102
- type: "dropdown",
103
- header: "Edit Property",
104
- anchor_id: () => `button_${edit_popover_trigger_button_manager?.id}`,
105
- })
106
- edit_popover_trigger_button_manager = create_button_manager({
107
- type: "soft",
108
- support_icon: "edit",
109
- min_height: 2.4,
110
- border_radius: 0.5,
111
- is_icon_shimmyable: true,
112
- is_uniform: true,
113
- popover_target: () => `popover_${edit_popover_manager?.id}`,
114
- })
115
- property_type_options_loc[property_key] = {
116
- key: property_key,
117
- type_options_dropdown_manager: create_dropdown_manager({
118
- button_type: "outlined",
119
- is_button_compressed: true,
120
- is_set_null_button: true,
121
- val: val_at_path?.properties?.[property_key]?.type,
122
- options: type_options,
123
- on_item_click: (input) => set_key_data_type(input?.key, null, property_key),
124
- }),
125
- edit_popover_manager: edit_popover_manager,
126
- edit_popover_trigger_button_manager: edit_popover_trigger_button_manager,
127
- to_breadcrumbs_button_manager: create_button_manager({
128
- type: "soft",
129
- text: "Edit",
130
- text_align: "left",
131
- support_icon: "arrow_tailed",
132
- on_click: () => {
133
- edit_popover_manager.close()
134
- breadcrumbs_manager?.set_val([...breadcrumbs_manager?.val, property_key])
135
- handle_path_change()
136
- },
137
- }),
138
- shift_up_button_manager: create_button_manager({
139
- type: "soft",
140
- text: "Shift Up",
141
- text_align: "left",
142
- support_icon: "arrow_tailed",
143
- icon_deg: 270,
144
- on_click: () => shift_object_property(property_key, -1),
145
- }),
146
- shift_down_button_manager: create_button_manager({
147
- type: "soft",
148
- text: "Shift Down",
149
- text_align: "left",
150
- support_icon: "arrow_tailed",
151
- icon_deg: 90,
152
- on_click: () => shift_object_property(property_key, 1),
153
- }),
154
- delete_button_manager: create_button_manager({
155
- type: "soft",
156
- text: "Delete",
157
- text_align: "left",
158
- support_icon: "trashcan",
159
- on_click: () => delete_object_property(property_key),
160
- }),
161
- }
162
- }
163
- property_type_options = property_type_options_loc
164
- }
165
-
166
- function get_type_display_name(val) {
167
- if (!val?.type) {
168
- return null
169
- } else {
170
- let display_name = ""
171
- if (val?.type == "array_literal") {
172
- display_name = "Array"
173
- if (val?.items?.type) {
174
- let items_name = ""
175
- if (Array.isArray(val?.items)) {
176
- for (let item of val?.items) {
177
- items_name += get_type_display_name(item)
178
- }
179
- }
180
- display_name = `[${items_name}]`
181
- }
182
- } else if (val?.type == "array_uniform_literal") {
183
- display_name = "Array Uniform"
184
- if (val?.items?.type) {
185
- display_name = "[" + get_type_display_name(val?.items) + "]"
186
- }
187
- } else if (val?.type == "object_literal") {
188
- display_name = "Object"
189
- if (Object.keys(val?.properties || {})?.length > 0) {
190
- let property_types = []
191
- for (let key of Object.keys(val?.properties || {})) {
192
- property_types.push(`${key}: ${get_type_display_name(val?.properties?.[key])}`)
193
- }
194
- display_name = `{${property_types.join(", ")}}`
195
- }
196
- } else if (val?.type == "object_uniform_literal") {
197
- display_name = "Object Uniform"
198
- if (val?.items?.type) {
199
- display_name = "{[key]:" + get_type_display_name(val?.items) + "}"
200
- }
201
- } else {
202
- display_name = node_types?.[val?.type]?.name
203
- }
204
- return display_name
205
- }
206
- }
207
-
208
- function set_items_data_type(type_key, breadcrumbs_input = null) {
209
- const breadcrumbs_to_use = Array.isArray(breadcrumbs_input)
210
- ? breadcrumbs_input
211
- : [...(Array.isArray(breadcrumbs_manager?.val) ? breadcrumbs_manager?.val : []), "items"]
212
- items_type_options_dropdown_manager?.set_val(type_key)
213
- let val_at_path_loc = {
214
- type: type_key,
215
- attributes: {},
216
- ...(type_key === "object_literal" ? { properties: {} } : {}),
217
- ...(type_key === "array_literal" ? { items: [] } : {}),
218
- ...(["array_uniform_literal", "object_uniform_literal"].includes(type_key) ? { items: {} } : {}),
219
- }
220
- val = set_structure_at_path(val, val_at_path_loc, breadcrumbs_to_use)
221
- }
222
-
223
- function set_key_data_type(type_key, breadcrumbs_input = null, key) {
224
- const breadcrumbs_to_use = Array.isArray(breadcrumbs_input)
225
- ? breadcrumbs_input
226
- : [...(Array.isArray(breadcrumbs_manager?.val) ? breadcrumbs_manager?.val : []), key]
227
- items_type_options_dropdown_manager?.set_val(type_key)
228
- let val_at_path_loc = {
229
- type: type_key,
230
- attributes: {},
231
- ...(type_key === "object_literal" ? { properties: {} } : {}),
232
- ...(type_key === "array_literal" ? { items: [] } : {}),
233
- ...(["array_uniform_literal", "object_uniform_literal"].includes(type_key) ? { items: {} } : {}),
234
- }
235
- val = set_structure_at_path(val, val_at_path_loc, breadcrumbs_to_use)
236
- property_type_options?.[key]?.type_options_dropdown_manager?.set_val(type_key)
237
- }
238
-
239
- function set_data_type(type_key, breadcrumbs_input = null) {
240
- const breadcrumbs_to_use = Array.isArray(breadcrumbs_input)
241
- ? breadcrumbs_input
242
- : Array.isArray(breadcrumbs_manager?.val)
243
- ? breadcrumbs_manager?.val
244
- : []
245
- type_options_dropdown_manager?.set_val(type_key)
246
- items_type_options_dropdown_manager?.set_val(null)
247
- let val_at_path_loc = {
248
- type: type_key,
249
- attributes: {},
250
- ...(type_key === "object_literal" ? { properties: {} } : {}),
251
- ...(type_key === "array_literal" ? { items: [] } : {}),
252
- ...(["array_uniform_literal", "object_uniform_literal"].includes(type_key) ? { items: {} } : {}),
253
- }
254
- if (type_key == "object_literal") {
255
- set_property_type_options()
256
- }
257
- val = set_structure_at_path(val, val_at_path_loc, breadcrumbs_to_use)
258
- }
259
-
260
- function set_structure_at_path(iter_structure, value, remaining_path) {
261
- if (!Array.isArray(remaining_path) || remaining_path?.length == 0) {
262
- return value
263
- }
264
- const [first, ...rest_of_path] = remaining_path
265
- if (["array_uniform_literal", "object_uniform_literal"].includes(iter_structure?.type)) {
266
- if (remaining_path?.length == 1) {
267
- iter_structure.items = value
268
- } else {
269
- iter_structure.items = set_structure_at_path(iter_structure.items, value, rest_of_path)
270
- }
271
- } else {
272
- if (remaining_path?.length == 1) {
273
- iter_structure.properties[first] = value
274
- } else {
275
- iter_structure.properties[first] = set_structure_at_path(
276
- iter_structure?.properties?.[first],
277
- value,
278
- rest_of_path
279
- )
280
- }
281
- }
282
- items_type_options_dropdown_manager?.set_val(val_at_path?.items?.type)
283
- return iter_structure
284
- }
285
-
286
- function add_object_property(key = null) {
287
- if (key == null) {
288
- key = property_key_to_add_text_manager?.val
289
- }
290
- if (!key) {
291
- return
292
- }
293
- const clean_key_to_add = key
294
- .toLowerCase()
295
- .replace(/[^a-z0-9]/g, "_")
296
- .replace(/_+/g, "_")
297
- .replace(/^_+|_+$/g, "")
298
- let val_at_path_loc = val_at_path
299
- val_at_path_loc.properties[clean_key_to_add] = {
300
- display_order: Object.keys(val_at_path_loc.properties || {})?.length,
301
- }
302
- const new_val = set_structure_at_path(val, val_at_path_loc, breadcrumbs_manager?.val)
303
- val = new_val
304
- property_key_to_add_text_manager?.set_val(null)
305
- set_property_type_options()
306
- }
307
-
308
- function delete_object_property(property_key) {
309
- let val_at_path_loc = val_at_path
310
- const { [property_key]: _, ...new_properties } = val_at_path_loc.properties
311
- val_at_path_loc.properties = new_properties
312
- property_type_options[property_key].edit_popover_manager.close()
313
- val = set_structure_at_path(val, val_at_path_loc, breadcrumbs_manager?.val)
314
- set_property_type_options()
315
- }
316
-
317
- function shift_object_property(property_key, direction) {
318
- function reset_display_order(properties) {
319
- const keys = Object.keys(properties).sort((a, b) => {
320
- const order_a = properties[a].display_order || 0
321
- const order_b = properties[b].display_order || 0
322
- return order_a - order_b
323
- })
324
- keys.forEach((key, index) => {
325
- properties[key].display_order = index
326
- })
327
- }
328
- const properties = val_at_path?.properties
329
- let display_order = properties?.[property_key]?.display_order
330
- if (display_order == null) {
331
- reset_display_order(properties)
332
- display_order = properties?.[property_key]?.display_order
333
- }
334
- for (let key in properties) {
335
- if (properties?.[key]?.display_order === display_order + direction) {
336
- properties[key].display_order = display_order
337
- properties[property_key].display_order += direction
338
- break
339
- }
340
- }
341
- reset_display_order(properties)
342
- let val_at_path_loc = val_at_path
343
- val_at_path_loc.properties = properties
344
- val = set_structure_at_path(val, val_at_path_loc, breadcrumbs_manager?.val)
345
- property_type_options[property_key].edit_popover_manager.close()
346
- set_property_type_options()
347
- }
348
-
349
- function finish() {
350
- popover_manager.close()
351
- if (typeof config?.on_finish == "function") {
352
- config?.on_finish(val)
353
- }
354
- }
355
-
356
- function guess_from_data(data) {
357
- val = json_to_data_type(data)
358
- set_property_type_options()
359
- }
360
-
361
- function handle_path_change() {
362
- type_options_dropdown_manager?.set_val(val_at_path?.type)
363
- items_type_options_dropdown_manager?.set_val(val_at_path?.items?.type)
364
- table_id_for_foreign_row_text_input_manager.set_val(val_at_path?.attributes?.table_id ?? null)
365
- property_key_table_id_for_foreign_row_text_input_manager.set_val(
366
- val_at_path?.attributes?.property_key_table_id ?? null
367
- )
368
- set_property_type_options()
369
- }
370
-
371
- function guess_from_variables() {
372
- guess_from_data(data_sample)
373
- }
374
-
375
- function init(config) {
376
- label = config?.label ?? "Data Type"
377
- initial_val = config?.val ?? null
378
- val = config?.val
379
- popover_manager = create_popover_manager({
380
- type: "center",
381
- min_width: 280,
382
- target_width: 600,
383
- min_height: 280,
384
- target_height: 600,
385
- header: "Data Type Builder",
386
- })
387
- search_text_input_manager = create_text_input_manager({
388
- type: "search",
389
- autocomplete: "off",
390
- placeholder: "search",
391
- mb: 0.5,
392
- })
393
- type_options_dropdown_manager = create_dropdown_manager({
394
- button_type: "outlined",
395
- is_botton_compressed: true,
396
- is_set_null_button: true,
397
- val: val_at_path?.type,
398
- options: type_options,
399
- on_item_click: (input) => set_data_type(input?.key),
400
- })
401
- items_type_options_dropdown_manager = create_dropdown_manager({
402
- button_type: "outlined",
403
- is_botton_compressed: true,
404
- is_set_null_button: true,
405
- val: val_at_path?.items?.type,
406
- options: type_options,
407
- on_item_click: (input) => set_items_data_type(input?.key),
408
- })
409
- breadcrumbs_manager = create_breadcrumbs_manager({
410
- val: config?.breadcrumbs ?? [],
411
- on_change: () => handle_path_change(),
412
- })
413
- property_key_to_add_text_manager = create_text_input_manager({
414
- label: "Property Key",
415
- placeholder: "some_identifier",
416
- })
417
- property_key_to_add_finish_button_manager = create_button_manager({
418
- is_compressed: true,
419
- text: "Add Property",
420
- is_disabled: () => !property_key_to_add_text_manager?.val,
421
- on_click: () => add_object_property(),
422
- })
423
- edit_items_type_button_manager = create_button_manager({
424
- type: "outlined",
425
- text: "Edit Items Type",
426
- text_align: "left",
427
- support_icon: "arrow_tailed",
428
- on_click: () => {
429
- breadcrumbs_manager?.set_val([
430
- ...(Array.isArray(breadcrumbs_manager?.val) ? breadcrumbs_manager?.val : []),
431
- "items",
432
- ])
433
- handle_path_change()
434
- },
435
- })
436
- clear_breadcrumbs_button_manager = create_button_manager({
437
- type: "outlined",
438
- h: 11,
439
- l: 3,
440
- c: 1,
441
- is_uniform: true,
442
- support_icon: "x",
443
- on_click: () => set_data_type(null),
444
- })
445
- finish_button_manager = create_button_manager({
446
- text: "Finish",
447
- on_click: () => finish(),
448
- })
449
- guess_from_variables_button_manager = create_button_manager({
450
- type: "outlined",
451
- text: "Guess from Data Sample",
452
- is_compressed: true,
453
- on_click: () => guess_from_variables(),
454
- })
455
- table_options = config?.table_options
456
- table_id_for_foreign_row_text_input_manager = create_dropdown_manager({
457
- label: "Table ID for Foreign Row",
458
- is_button_compressed: true,
459
- options: table_options,
460
- on_item_click: (input) => {
461
- let val_at_path_loc = deep_copy(val_at_path)
462
- val_at_path_loc.attributes.table_id = input?.key
463
- val = set_structure_at_path(val, val_at_path_loc, breadcrumbs_manager?.val)
464
- },
465
- })
466
- property_key_table_id_for_foreign_row_text_input_manager = create_dropdown_manager({
467
- label: "Property Key Table ID for Foreign Row",
468
- is_button_compressed: true,
469
- options: table_options,
470
- on_item_click: (input) => {
471
- let val_at_path_loc = deep_copy(val_at_path)
472
- val_at_path_loc.attributes.property_key_table_id = input?.key
473
- val = set_structure_at_path(val, val_at_path_loc, breadcrumbs_manager?.val)
474
- },
475
- })
476
-
477
- set_type_option_buttons()
478
- set_property_type_options()
479
- }
480
-
481
- init(config)
482
-
483
- return {
484
- id,
485
- get label() {
486
- return label
487
- },
488
- get initial_val() {
489
- return initial_val
490
- },
491
- get val() {
492
- return val
493
- },
494
- get val() {
495
- return val
496
- },
497
- get popover_manager() {
498
- return popover_manager
499
- },
500
- get search_text_input_manager() {
501
- return search_text_input_manager
502
- },
503
- get type_option_buttons() {
504
- return type_option_buttons
505
- },
506
- get breadcrumbs_manager() {
507
- return breadcrumbs_manager
508
- },
509
- get items_type_options_dropdown_manager() {
510
- return items_type_options_dropdown_manager
511
- },
512
- get property_type_options() {
513
- return property_type_options
514
- },
515
- get type_options_dropdown_manager() {
516
- return type_options_dropdown_manager
517
- },
518
- get property_key_to_add_text_manager() {
519
- return property_key_to_add_text_manager
520
- },
521
- get property_key_to_add_finish_button_manager() {
522
- return property_key_to_add_finish_button_manager
523
- },
524
- get edit_items_type_button_manager() {
525
- return edit_items_type_button_manager
526
- },
527
- get finish_button_manager() {
528
- return finish_button_manager
529
- },
530
- get table_id_for_foreign_row_text_input_manager() {
531
- return table_id_for_foreign_row_text_input_manager
532
- },
533
- get property_key_table_id_for_foreign_row_text_input_manager() {
534
- return property_key_table_id_for_foreign_row_text_input_manager
535
- },
536
- get table_options() {
537
- return table_options
538
- },
539
- get clear_breadcrumbs_button_manager() {
540
- return clear_breadcrumbs_button_manager
541
- },
542
- get guess_from_variables_button_manager() {
543
- return guess_from_variables_button_manager
544
- },
545
- get type_options() {
546
- return type_options
547
- },
548
- get type_display_name() {
549
- return type_display_name
550
- },
551
- get val_at_path() {
552
- return val_at_path
553
- },
554
- get val() {
555
- return val
556
- },
557
- set_data_type,
558
- add_object_property,
559
- delete_object_property,
560
- shift_object_property,
561
- finish,
562
- guess_from_data,
563
- guess_from_variables,
564
- }
565
- }
@@ -1,116 +0,0 @@
1
- <script>
2
- import Popover from "../Popover/index.svelte"
3
- import Icon from "../Icon/index.svelte"
4
- import Button from "../Button/index.svelte"
5
- import TextInput from "../TextInput/index.svelte"
6
- import Spacer from "../Spacer/index.svelte"
7
- import HorizScrollBox from "../HorizScrollBox/index.svelte"
8
- import ArrowToggle from "../ArrowToggle/index.svelte"
9
- import LoadingWheel from "../LoadingWheel/index.svelte"
10
-
11
- let { manager } = $props()
12
-
13
- </script>
14
-
15
- {#if manager?.type == 'dropdown' || manager?.is_collapsed}
16
- <div>
17
- {#if manager?.label || manager?.error_message}
18
- <div>
19
- {#if manager?.label}
20
- <p class="label">{manager?.label}:</p>
21
- {/if}
22
- {#if manager?.error_message}
23
- <p class="error_text">{manager?.error_message}</p>
24
- {/if}
25
- </div>
26
- {/if}
27
- {#if !manager?.is_hide_button}
28
- <Button manager={manager?.toggle_button_manager}>
29
- {#snippet content()}
30
- <div style="display: flex; align-items: center; gap: .2rem; justify-content: space-between;">
31
- <p style="{manager?.selected_font_size ? `font-size: ${manager?.selected_font_size}rem;` : ""}">{manager?.toggle_button_text}</p>
32
- {#if manager?.is_show_arrow}
33
- <ArrowToggle is_open={manager?.popover_manager?.is_show} />
34
- {/if}
35
- </div>
36
- {/snippet}
37
- </Button>
38
- {/if}
39
- <Popover manager={manager?.popover_manager}>
40
- {#snippet content(toggle_popover)}
41
- <div id={`dropdown_popover_container_${manager?.id}`}>
42
- {#if manager?.is_searchable}
43
- <div style="position: relative; display: inline-block; width: 100%;">
44
- <div>
45
- <TextInput manager={manager?.search_text_input_manager} />
46
- </div>
47
- {#if Array.isArray(manager?.search_requests_is_loading) && manager?.search_requests_is_loading.length}
48
- <div style="position: absolute; top: 50%; right: 0.5rem; transform: translateY(-50%); pointer-events: none; width: 2rem; aspect-ratio: 1;">
49
- <LoadingWheel />
50
- </div>
51
- {/if}
52
- </div>
53
- {/if}
54
- {#if manager?.is_set_null_button}
55
- <Button manager={manager?.clear_button_manager} />
56
- {/if}
57
- {#if Array.isArray(manager?.filtered_button_managers) && manager?.filtered_button_managers.length > 0}
58
- {#each manager?.filtered_button_managers as filtered_button_manager}
59
- <Button manager={filtered_button_manager} />
60
- {/each}
61
- {/if}
62
- </div>
63
- {/snippet}
64
- </Popover>
65
- </div>
66
- {:else if manager?.type == "horiz_selector"}
67
- <div class="horiz_container">
68
- {#if manager?.header || manager?.header_icon}
69
- <div class="horiz_header_container" style="min-width: {manager?.min_header_width}rem;">
70
- {#if manager?.header_icon}
71
- <Icon manager={manager?.header_icon_manager} />
72
- {/if}
73
- {#if manager?.header}
74
- <h3 class="horiz_header" style="color: {manager?.is_disabled ? 'var(--g12-t)' : 'var(--g4-t)'}">
75
- {manager?.header}
76
- </h3>
77
- {/if}
78
- </div>
79
- <Spacer is_vert={true} mr={0.5} color={manager?.spacer_color} />
80
- {/if}
81
- <HorizScrollBox>
82
- {#if manager?.is_set_null_button}
83
- <Button manager={manager?.clear_button_manager} />
84
- {/if}
85
- {#if Array.isArray(manager?.filtered_button_managers) && manager?.filtered_button_managers.length > 0}
86
- {#each manager?.filtered_button_managers as filtered_button_manager}
87
- <Button manager={filtered_button_manager} />
88
- {/each}
89
- {/if}
90
- </HorizScrollBox>
91
- </div>
92
- {/if}
93
-
94
- <style>
95
- .error_text {
96
- font-size: 1.2rem;
97
- color: oklch(var(--l5-t) var(--c7) var(--h1));
98
- line-height: 1.2rem;
99
- line-height: 1.2rem;
100
- }
101
- .horiz_container {
102
- display: flex;
103
- flex: 1;
104
- align-items: center;
105
- margin: 0 0.5rem;
106
- }
107
- .horiz_header_container {
108
- display: flex;
109
- align-items: center;
110
- }
111
- .horiz_header {
112
- font-size: 1.6rem;
113
- margin: 0;
114
- margin-right: 1rem;
115
- }
116
- </style>