sveltekit-ui 1.1.15 → 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 (200) hide show
  1. package/package.json +3 -3
  2. package/src/routes/+page.svelte +24 -0
  3. package/dist/Components/Alert/index.svelte +0 -88
  4. package/dist/Components/Alert/index.svelte.js +0 -101
  5. package/dist/Components/ArrowToggle/index.svelte +0 -62
  6. package/dist/Components/Attachment/index.svelte +0 -77
  7. package/dist/Components/Attachment/index.svelte.js +0 -119
  8. package/dist/Components/Audio/index.svelte +0 -193
  9. package/dist/Components/Audio/index.svelte.js +0 -463
  10. package/dist/Components/AudioEditor/index.svelte +0 -252
  11. package/dist/Components/AudioEditor/index.svelte.js +0 -977
  12. package/dist/Components/AudioEditor/samples/alloy-voice-sample.mp3 +0 -0
  13. package/dist/Components/AudioEditor/samples/echo-voice-sample.mp3 +0 -0
  14. package/dist/Components/AudioEditor/samples/fable-voice-sample.mp3 +0 -0
  15. package/dist/Components/AudioEditor/samples/nova-voice-sample.mp3 +0 -0
  16. package/dist/Components/AudioEditor/samples/onyx-voice-sample.mp3 +0 -0
  17. package/dist/Components/AudioEditor/samples/shimmer-voice-sample.mp3 +0 -0
  18. package/dist/Components/AuthCodeInput/index.svelte +0 -85
  19. package/dist/Components/AuthCodeInput/index.svelte.js +0 -95
  20. package/dist/Components/Breadcrumbs/index.svelte +0 -27
  21. package/dist/Components/Breadcrumbs/index.svelte.js +0 -88
  22. package/dist/Components/Button/index.svelte +0 -721
  23. package/dist/Components/Button/index.svelte.js +0 -375
  24. package/dist/Components/Chart/Klines/index.svelte +0 -87
  25. package/dist/Components/Chart/index.svelte +0 -226
  26. package/dist/Components/Chart/index.svelte.js +0 -1090
  27. package/dist/Components/ChartInput/DisplayNav/Klines/index.svelte +0 -150
  28. package/dist/Components/ChartInput/DisplayNav/Lines/index.svelte +0 -45
  29. package/dist/Components/ChartInput/DisplayNav/index.svelte +0 -297
  30. package/dist/Components/ChartInput/EditPanel/index.svelte +0 -155
  31. package/dist/Components/ChartInput/index.svelte +0 -21
  32. package/dist/Components/ChartInput/index.svelte.js +0 -671
  33. package/dist/Components/Checkbox/index.svelte +0 -411
  34. package/dist/Components/Checkbox/index.svelte.js +0 -178
  35. package/dist/Components/Code/index.svelte +0 -23
  36. package/dist/Components/Code/index.svelte.js +0 -33
  37. package/dist/Components/Color/index.svelte +0 -51
  38. package/dist/Components/Color/index.svelte.js +0 -31
  39. package/dist/Components/ColorInput/ChromaPicker/index.svelte +0 -50
  40. package/dist/Components/ColorInput/ColorPalette/index.svelte +0 -62
  41. package/dist/Components/ColorInput/OpacityPicker/index.svelte +0 -68
  42. package/dist/Components/ColorInput/ShowcasePicker/index.svelte +0 -136
  43. package/dist/Components/ColorInput/index.svelte +0 -70
  44. package/dist/Components/ColorInput/index.svelte.js +0 -386
  45. package/dist/Components/ConditionsInput/index.svelte +0 -46
  46. package/dist/Components/ConditionsInput/index.svelte.js +0 -201
  47. package/dist/Components/Confetti/index.svelte +0 -98
  48. package/dist/Components/Confetti/index.svelte.js +0 -94
  49. package/dist/Components/Content/index.svelte +0 -500
  50. package/dist/Components/Content/index.svelte.js +0 -910
  51. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Audio/index.svelte +0 -31
  52. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Audio/index.svelte.js +0 -258
  53. package/dist/Components/ContentInput/AttributesInput/CustomConfig/AudioAdvanced/index.svelte +0 -31
  54. package/dist/Components/ContentInput/AttributesInput/CustomConfig/AudioAdvanced/index.svelte.js +0 -258
  55. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Dropdown/index.svelte +0 -58
  56. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Dropdown/index.svelte.js +0 -206
  57. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Image/index.svelte +0 -28
  58. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Image/index.svelte.js +0 -224
  59. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Number/index.svelte +0 -44
  60. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Number/index.svelte.js +0 -272
  61. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Qr/index.svelte +0 -41
  62. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Qr/index.svelte.js +0 -202
  63. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Slider/index.svelte +0 -19
  64. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Slider/index.svelte.js +0 -117
  65. package/dist/Components/ContentInput/AttributesInput/CustomConfig/TableAdvanced/index.svelte +0 -60
  66. package/dist/Components/ContentInput/AttributesInput/CustomConfig/TableAdvanced/index.svelte.js +0 -542
  67. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Tag/index.svelte +0 -47
  68. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Tag/index.svelte.js +0 -185
  69. package/dist/Components/ContentInput/AttributesInput/CustomConfig/TextInput/index.svelte +0 -35
  70. package/dist/Components/ContentInput/AttributesInput/CustomConfig/TextInput/index.svelte.js +0 -222
  71. package/dist/Components/ContentInput/AttributesInput/CustomConfig/TimeInput/index.svelte +0 -20
  72. package/dist/Components/ContentInput/AttributesInput/CustomConfig/TimeInput/index.svelte.js +0 -84
  73. package/dist/Components/ContentInput/AttributesInput/DefinedTypeInput/index.svelte +0 -25
  74. package/dist/Components/ContentInput/AttributesInput/DefinedTypeInput/index.svelte.js +0 -91
  75. package/dist/Components/ContentInput/AttributesInput/index.svelte +0 -352
  76. package/dist/Components/ContentInput/AttributesInput/index.svelte.js +0 -1436
  77. package/dist/Components/ContentInput/ContentPanelBuilder/AddElement/index.svelte +0 -64
  78. package/dist/Components/ContentInput/ContentPanelBuilder/AddElement/index.svelte.js +0 -97
  79. package/dist/Components/ContentInput/ContentPanelBuilder/ElementList/index.svelte +0 -184
  80. package/dist/Components/ContentInput/ContentPanelBuilder/index.svelte +0 -41
  81. package/dist/Components/ContentInput/index.svelte +0 -78
  82. package/dist/Components/ContentInput/index.svelte.js +0 -1197
  83. package/dist/Components/CronInput/index.svelte +0 -78
  84. package/dist/Components/CronInput/index.svelte.js +0 -198
  85. package/dist/Components/DataTypeInput/index.svelte +0 -174
  86. package/dist/Components/DataTypeInput/index.svelte.js +0 -565
  87. package/dist/Components/Dropdown/index.svelte +0 -116
  88. package/dist/Components/Dropdown/index.svelte.js +0 -403
  89. package/dist/Components/EmailAddress/index.svelte +0 -22
  90. package/dist/Components/EmailAddress/index.svelte.js +0 -45
  91. package/dist/Components/ErrorX/index.svelte +0 -58
  92. package/dist/Components/Eye/index.svelte +0 -57
  93. package/dist/Components/FileInput/index.svelte +0 -146
  94. package/dist/Components/FileInput/index.svelte.js +0 -225
  95. package/dist/Components/Hamburger/index.svelte +0 -99
  96. package/dist/Components/HorizScrollBox/index.svelte +0 -145
  97. package/dist/Components/Icon/index.svelte +0 -412
  98. package/dist/Components/Icon/index.svelte.js +0 -116
  99. package/dist/Components/IconInput/index.svelte +0 -77
  100. package/dist/Components/IconInput/index.svelte.js +0 -259
  101. package/dist/Components/Image/index.svelte +0 -126
  102. package/dist/Components/Image/index.svelte.js +0 -116
  103. package/dist/Components/ImageEditor/Image/CropBox/index.svelte +0 -165
  104. package/dist/Components/ImageEditor/Image/index.svelte +0 -104
  105. package/dist/Components/ImageEditor/Panels/AI/index.svelte +0 -44
  106. package/dist/Components/ImageEditor/Panels/Crop/index.svelte +0 -96
  107. package/dist/Components/ImageEditor/Panels/File/QualityPicker/index.svelte +0 -124
  108. package/dist/Components/ImageEditor/Panels/File/index.svelte +0 -74
  109. package/dist/Components/ImageEditor/Panels/Filters/index.svelte +0 -46
  110. package/dist/Components/ImageEditor/Panels/Resize/index.svelte +0 -58
  111. package/dist/Components/ImageEditor/index.svelte +0 -93
  112. package/dist/Components/ImageEditor/index.svelte.js +0 -1961
  113. package/dist/Components/ImageSlider/index.svelte +0 -124
  114. package/dist/Components/ImageSlider/index.svelte.js +0 -99
  115. package/dist/Components/InfoBox/index.svelte +0 -89
  116. package/dist/Components/Json/Nested/index.svelte +0 -157
  117. package/dist/Components/Json/index.svelte +0 -60
  118. package/dist/Components/Json/index.svelte.js +0 -594
  119. package/dist/Components/LabeledItem/index.svelte +0 -102
  120. package/dist/Components/Layout/NavBar/FullNav/index.svelte +0 -52
  121. package/dist/Components/Layout/NavBar/NavGuts/index.svelte +0 -87
  122. package/dist/Components/Layout/NavBar/index.svelte +0 -72
  123. package/dist/Components/Layout/index.svelte +0 -149
  124. package/dist/Components/Layout/index.svelte.js +0 -360
  125. package/dist/Components/Link/index.svelte +0 -47
  126. package/dist/Components/Link/index.svelte.js +0 -136
  127. package/dist/Components/LoadingSuccessDiv/index.svelte +0 -51
  128. package/dist/Components/LoadingWheel/index.svelte +0 -38
  129. package/dist/Components/Location/index.svelte +0 -79
  130. package/dist/Components/Location/index.svelte.js +0 -288
  131. package/dist/Components/LocationInput/index.svelte +0 -197
  132. package/dist/Components/LocationInput/index.svelte.js +0 -965
  133. package/dist/Components/Number/index.svelte +0 -47
  134. package/dist/Components/Number/index.svelte.js +0 -151
  135. package/dist/Components/PhoneCountryCode/index.svelte +0 -7
  136. package/dist/Components/PhoneCountryCode/index.svelte.js +0 -260
  137. package/dist/Components/PhoneNumber/index.svelte +0 -22
  138. package/dist/Components/PhoneNumber/index.svelte.js +0 -41
  139. package/dist/Components/Popover/index.svelte +0 -396
  140. package/dist/Components/Popover/index.svelte.js +0 -319
  141. package/dist/Components/Qr/index.svelte +0 -85
  142. package/dist/Components/Qr/index.svelte.js +0 -301
  143. package/dist/Components/QrInput/index.svelte +0 -47
  144. package/dist/Components/QrInput/index.svelte.js +0 -218
  145. package/dist/Components/Slider/index.svelte +0 -239
  146. package/dist/Components/Slider/index.svelte.js +0 -469
  147. package/dist/Components/Spacer/index.svelte +0 -41
  148. package/dist/Components/StoragePicker/DisplayFile/index.svelte +0 -15
  149. package/dist/Components/StoragePicker/index.svelte +0 -187
  150. package/dist/Components/StoragePicker/index.svelte.js +0 -592
  151. package/dist/Components/SuccessCheck/index.svelte +0 -56
  152. package/dist/Components/TableAdvanced/ColumnInput/index.svelte +0 -117
  153. package/dist/Components/TableAdvanced/ColumnInput/index.svelte.js +0 -456
  154. package/dist/Components/TableAdvanced/FilterInput/index.svelte +0 -54
  155. package/dist/Components/TableAdvanced/FilterInput/index.svelte.js +0 -247
  156. package/dist/Components/TableAdvanced/Pagination/index.svelte +0 -43
  157. package/dist/Components/TableAdvanced/Pagination/index.svelte.js +0 -97
  158. package/dist/Components/TableAdvanced/SortByInput/index.svelte +0 -72
  159. package/dist/Components/TableAdvanced/SortByInput/index.svelte.js +0 -176
  160. package/dist/Components/TableAdvanced/index.svelte +0 -275
  161. package/dist/Components/TableAdvanced/index.svelte.js +0 -1565
  162. package/dist/Components/Tag/index.svelte +0 -45
  163. package/dist/Components/Tag/index.svelte.js +0 -76
  164. package/dist/Components/TextArrayInput/index.svelte +0 -108
  165. package/dist/Components/TextArrayInput/index.svelte.js +0 -239
  166. package/dist/Components/TextInput/PasswordTooltip/index.svelte +0 -89
  167. package/dist/Components/TextInput/index.svelte +0 -223
  168. package/dist/Components/TextInput/index.svelte.js +0 -447
  169. package/dist/Components/Time/index.svelte +0 -7
  170. package/dist/Components/Time/index.svelte.js +0 -38
  171. package/dist/Components/TimeInput/NumberToggler/index.svelte +0 -34
  172. package/dist/Components/TimeInput/NumberToggler/index.svelte.js +0 -79
  173. package/dist/Components/TimeInput/index.js +0 -702
  174. package/dist/Components/TimeInput/index.svelte +0 -211
  175. package/dist/Components/TimeInput/index.svelte.js +0 -638
  176. package/dist/Components/Tooltip/index.svelte +0 -143
  177. package/dist/Components/TransparentBackground/index.svelte +0 -153
  178. package/dist/Components/TypingDots/index.svelte +0 -84
  179. package/dist/Components/VariablePathInput/index.svelte +0 -63
  180. package/dist/Components/VariablePathInput/index.svelte.js +0 -273
  181. package/dist/Components/VideoTBD/index.svelte +0 -100
  182. package/dist/Components/XFollow/index.svelte +0 -42
  183. package/dist/Components/XPost/index.svelte +0 -52
  184. package/dist/Components/XPost/index.svelte.js +0 -64
  185. package/dist/Components/YoutubeChannelButton/index.svelte +0 -82
  186. package/dist/Components/YoutubeVideo/index.svelte +0 -73
  187. package/dist/Components/YoutubeVideo/index.svelte.js +0 -54
  188. package/dist/actions/draggable.js +0 -49
  189. package/dist/actions/index.js +0 -24
  190. package/dist/actions/no_spaces.js +0 -33
  191. package/dist/actions/numbers_only.js +0 -26
  192. package/dist/actions/scroll_y.js +0 -28
  193. package/dist/actions/stop_scroll_propagation_y.js +0 -42
  194. package/dist/actions/swipe_handler.js +0 -295
  195. package/dist/client/astc_formatting/index.js +0 -1128
  196. package/dist/client/docs/index.js +0 -7622
  197. package/dist/client/index.js +0 -735
  198. package/dist/client/types/index.js +0 -2812
  199. package/dist/index.js +0 -180
  200. package/dist/style.css +0 -682
@@ -1,594 +0,0 @@
1
- import { create_unique_id, copy_to_clipboard, csv_to_json, set_closurable } from "../../client/index.js"
2
- import { create_button_manager } from "../Button/index.svelte.js"
3
- import { create_file_input_manager } from "../FileInput/index.svelte.js"
4
- import { create_popover_manager } from "../Popover/index.svelte.js"
5
- import { create_text_input_manager } from "../TextInput/index.svelte.js"
6
- import { create_dropdown_manager } from "../Dropdown/index.svelte.js"
7
- import { create_checkbox_manager } from "../Checkbox/index.svelte.js"
8
-
9
- export function create_json_manager(config) {
10
- const id = create_unique_id(null, 20)
11
-
12
- let popover_manager = $state(null)
13
- let popover_toggle_button_manager = $state(null)
14
- let finish_button_manager = $state(null)
15
- let json_prepped = $state(null)
16
- let collapse_all_button_manager = $state(null)
17
- let expand_all_button_manager = $state(null)
18
- let copy_json_button_manager = $state(null)
19
- let file_input_manager = $state(null)
20
- let data_text_input_manager = $state(null)
21
- let data_upload_popover_manager = $state(null)
22
- let finish_data_upload_button_manager = $state(null)
23
- let edit_json_button_manager = $state(null)
24
-
25
- let is_popover = $derived(set_closurable(config?.is_popover, false))
26
- let is_edit_mode = $derived(set_closurable(config?.is_edit_mode, false))
27
- let is_show_buttons = $derived(set_closurable(config?.is_show_buttons, false))
28
- let label = $derived(set_closurable(config?.label, null))
29
- let val = $derived(get_val_from_json_prepped(json_prepped))
30
-
31
- function get_val_from_json_prepped(input) {
32
- if (input?.type == "object") {
33
- let obj_val = {}
34
- if (input?.val && typeof input?.val == "object" && !Array.isArray(input?.val)) {
35
- for (let [key, val] of Object.entries(input?.val)) {
36
- obj_val[key] = get_val_from_json_prepped(val?.json_prepped)
37
- }
38
- }
39
- return obj_val
40
- } else if (input?.type == "array") {
41
- let array_val = []
42
- if (Array.isArray(input?.val)) {
43
- for (let item of input?.val) {
44
- array_val.push(get_val_from_json_prepped(item?.json_prepped))
45
- }
46
- }
47
- return array_val
48
- } else if (input?.type == "null") {
49
- return null
50
- } else if (input?.type == "string") {
51
- return input?.val
52
- } else if (input?.type == "number") {
53
- return input?.val
54
- } else if (input?.type == "boolean") {
55
- return input?.val
56
- }
57
- }
58
-
59
- function get_replace_key_in_object(obj, path_remaining, old_key, new_key) {
60
- let return_obj = { ...obj }
61
- if (Array.isArray(path_remaining) && path_remaining.length > 0) {
62
- const current_key = path_remaining[0]
63
- if (return_obj[current_key]) {
64
- return_obj[current_key] = get_replace_key_in_object(
65
- return_obj[current_key],
66
- path_remaining.slice(1),
67
- old_key,
68
- new_key
69
- )
70
- }
71
- } else if (Array.isArray(path_remaining) && path_remaining.length === 0) {
72
- let new_obj = {}
73
- for (const key in return_obj) {
74
- if (key === old_key) {
75
- new_obj[new_key] = return_obj[old_key]
76
- } else {
77
- new_obj[key] = return_obj[key]
78
- }
79
- }
80
- return_obj = new_obj
81
- }
82
- return return_obj
83
- }
84
-
85
- function delete_key_at_path(obj, path, key) {
86
- if (!obj || typeof obj !== "object" || !Array.isArray(path) || typeof key !== "string") {
87
- return obj
88
- }
89
- const new_obj = JSON.parse(JSON.stringify(obj))
90
- let current = new_obj
91
- for (let i = 0; i < path.length; i++) {
92
- if (current[path[i]] === undefined) {
93
- return new_obj
94
- }
95
- current = current[path[i]]
96
- }
97
- if (current && typeof current === "object") {
98
- delete current[key]
99
- }
100
- return new_obj
101
- }
102
-
103
- function delete_item_at_path(obj, path) {
104
- if (!obj || typeof obj !== "object" || !Array.isArray(path)) {
105
- return obj
106
- }
107
- const new_obj = JSON.parse(JSON.stringify(obj))
108
- let current = new_obj
109
- for (let i = 0; i < path.length - 1; i++) {
110
- if (current[path[i]] === undefined) {
111
- return new_obj
112
- }
113
- current = current[path[i]]
114
- }
115
- const last_path = path[path.length - 1]
116
- if (Array.isArray(current) && typeof last_path === "number") {
117
- current.splice(last_path, 1)
118
- } else if (Array.isArray(current[last_path])) {
119
- current[last_path].splice(last_path, 1)
120
- }
121
- return new_obj
122
- }
123
-
124
- function get_key_manager(key, path, json_prepped_loc, indentation, key_val = null) {
125
- let edit_key_popover_manager = $state(
126
- create_popover_manager({
127
- header: "Edit Key",
128
- target_height: 400,
129
- target_width: 400,
130
- })
131
- )
132
- let edit_key_text_input_manager = $state(
133
- create_text_input_manager({
134
- placeholder: "key",
135
- val: key,
136
- })
137
- )
138
- let edit_key_button_manager = $state(
139
- create_button_manager({
140
- type: "soft",
141
- support_icon: "edit",
142
- is_uniform: true,
143
- min_height: 1.6,
144
- icon_size: 1.2,
145
- icon_sw: 40,
146
- l: 3,
147
- border_radius: 0.5,
148
- popover_target: () => `popover_${edit_key_popover_manager?.id}`,
149
- })
150
- )
151
- let edit_key_delete_button_manager = $state(
152
- create_button_manager({
153
- text: "Delete Key",
154
- color: "var(--error-t)",
155
- is_compressed: true,
156
- mt: 1,
157
- on_click: () => {
158
- const current_val = get_val_from_json_prepped(json_prepped)
159
- const new_val = delete_key_at_path(current_val, path, key)
160
- edit_key_popover_manager.close()
161
- setTimeout(() => {
162
- json_prepped = get_json_prepped(new_val, 0, indentation)
163
- }, 500)
164
- },
165
- })
166
- )
167
- let edit_key_finish_button_manager = $state(
168
- create_button_manager({
169
- text: "Finish",
170
- on_click: () => {
171
- const current_val = get_val_from_json_prepped(json_prepped)
172
- const new_val = get_replace_key_in_object(current_val, path, key, edit_key_text_input_manager?.val)
173
- setTimeout(() => {
174
- json_prepped = get_json_prepped(new_val, 0, indentation)
175
- }, 500)
176
- },
177
- })
178
- )
179
- return {
180
- edit_key_popover_manager: edit_key_popover_manager,
181
- edit_key_button_manager: edit_key_button_manager,
182
- edit_key_text_input_manager: edit_key_text_input_manager,
183
- edit_key_delete_button_manager: edit_key_delete_button_manager,
184
- edit_key_finish_button_manager: edit_key_finish_button_manager,
185
- json_prepped: get_json_prepped(key_val, json_prepped_loc?.nested_levels, indentation, [
186
- ...(Array.isArray(path) ? path : []),
187
- key,
188
- ]),
189
- }
190
- }
191
-
192
- function get_json_prepped(input, nested_levels = null, indentation_input, path = [], is_array_item = false) {
193
- const indentation = Number.isInteger(indentation_input) ? indentation_input : 1
194
- let json_prepped_loc = $state(null)
195
- let collapse_button_manager = $state(null)
196
- let edit_item_popover_manager = $state(null)
197
- let edit_item_button_manager = $state(null)
198
- let edit_item_type_dropdown_manager = $state(null)
199
- let edit_item_number_text_input_manager = $state(null)
200
- let edit_item_string_text_input_manager = $state(null)
201
- let edit_item_boolean_checkbox_manager = $state(null)
202
- let add_item_button_manager = $state(null)
203
- let delete_item_button_manager = $state(null)
204
- let finish_edit_item_button_manager = $state(null)
205
- function toggle_is_collapsed() {
206
- json_prepped_loc.is_collapsed = !json_prepped_loc?.is_collapsed
207
- }
208
- // collapse_button_manager = create_button_manager({ notable when used in TableAdvanced with many rows my button takes up way too much memory so this helps to replace with basic one
209
- // type: "outlined",
210
- // is_uniform: true,
211
- // support_icon: () => (json_prepped_loc?.is_collapsed ? "plus" : "minus"),
212
- // min_height: 1.6,
213
- // mt: 0.2,
214
- // icon_size: 0.8,
215
- // icon_sw: 60,
216
- // l: 3,
217
- // border_radius: 0.5,
218
- // on_click: () => (json_prepped_loc.is_collapsed = !json_prepped_loc?.is_collapsed),
219
- // })
220
- if (is_edit_mode) {
221
- edit_item_popover_manager = create_popover_manager({
222
- type: "center",
223
- header: "Edit Item",
224
- })
225
- edit_item_button_manager = create_button_manager({
226
- type: "soft",
227
- support_icon: "edit",
228
- is_uniform: true,
229
- min_height: 1.6,
230
- icon_size: 1.2,
231
- icon_sw: 40,
232
- l: 3,
233
- border_radius: 0.5,
234
- popover_target: () => `popover_${edit_item_popover_manager?.id}`,
235
- })
236
- edit_item_type_dropdown_manager = create_dropdown_manager({
237
- mb: 1,
238
- is_button_compressed: true,
239
- options: [
240
- { key: "object", name: "Object" },
241
- { key: "array", name: "Array" },
242
- { key: "string", name: "String" },
243
- { key: "number", name: "Number" },
244
- { key: "boolean", name: "Boolean" },
245
- { key: "null", name: "Null" },
246
- ],
247
- })
248
- edit_item_number_text_input_manager = create_text_input_manager({
249
- type: "number",
250
- })
251
- edit_item_string_text_input_manager = create_text_input_manager({
252
- type: "text_area",
253
- })
254
- edit_item_boolean_checkbox_manager = create_checkbox_manager({
255
- type: "toggle",
256
- })
257
- delete_item_button_manager = create_button_manager({
258
- color: "var(--error-t)",
259
- text: "Delete List Item",
260
- is_compressed: true,
261
- mt: 1,
262
- on_click: () => {
263
- const current_val = get_val_from_json_prepped(json_prepped)
264
- const new_val = delete_item_at_path(current_val, path)
265
- edit_item_popover_manager.close()
266
- setTimeout(() => {
267
- json_prepped = get_json_prepped(new_val, 0, indentation)
268
- }, 500)
269
- },
270
- })
271
- add_item_button_manager = create_button_manager({
272
- type: "outlined",
273
- text: "Add Item",
274
- support_icon: "plus",
275
- is_compressed: true,
276
- min_height: 1.6,
277
- pt: 0.2,
278
- pb: 0.2,
279
- pl: 0.5,
280
- pr: 0.5,
281
- font_size: 1.4,
282
- icon_size: 1.2,
283
- icon_sw: 50,
284
- l: 3,
285
- border_radius: 0.5,
286
- on_click: () => {
287
- if (json_prepped_loc?.type == "object") {
288
- let key = `tbd_${create_unique_id(null, 4)}`
289
- let key_manager = get_key_manager(key, path, json_prepped_loc, config?.indentation)
290
- json_prepped_loc.val[key] = key_manager
291
- } else if (json_prepped_loc?.type == "array") {
292
- json_prepped_loc.val = Array.isArray(json_prepped_loc.val) ? json_prepped_loc.val : []
293
- json_prepped_loc.val.push({
294
- json_prepped: get_json_prepped(
295
- null,
296
- json_prepped_loc?.nested_levels,
297
- indentation,
298
- [...path, json_prepped_loc.val.length - 1],
299
- true
300
- ),
301
- })
302
- }
303
- },
304
- })
305
- finish_edit_item_button_manager = create_button_manager({
306
- text: "Finish",
307
- on_click: () => {
308
- if (edit_item_type_dropdown_manager?.val == "object") {
309
- json_prepped_loc.type = "object"
310
- json_prepped_loc.val =
311
- json_prepped_loc.val && typeof json_prepped_loc.val == "object" && !Array.isArray(json_prepped_loc.val)
312
- ? json_prepped_loc.val
313
- : {}
314
- } else if (edit_item_type_dropdown_manager?.val == "array") {
315
- json_prepped_loc.type = "array"
316
- json_prepped_loc.val = Array.isArray(json_prepped_loc.val) ? json_prepped_loc.val : []
317
- } else if (edit_item_type_dropdown_manager?.val == "null") {
318
- json_prepped_loc.type = "null"
319
- json_prepped_loc.val = null
320
- } else if (edit_item_type_dropdown_manager?.val == "boolean") {
321
- json_prepped_loc.type = "boolean"
322
- json_prepped_loc.val = edit_item_boolean_checkbox_manager?.val
323
- } else if (edit_item_type_dropdown_manager?.val == "number") {
324
- json_prepped_loc.type = "number"
325
- json_prepped_loc.val = edit_item_number_text_input_manager?.val
326
- } else if (edit_item_type_dropdown_manager?.val == "string") {
327
- json_prepped_loc.type = "string"
328
- json_prepped_loc.val = edit_item_string_text_input_manager?.val
329
- }
330
- edit_item_popover_manager.close()
331
- },
332
- })
333
- }
334
- json_prepped_loc = {
335
- type: "null",
336
- is_collapsed: !!config?.is_collapsed,
337
- is_array_item: is_array_item,
338
- nested_levels: Number.isInteger(nested_levels) ? nested_levels + 1 : 0,
339
- indentation: indentation,
340
- collapse_button_manager: collapse_button_manager,
341
- edit_item_popover_manager: edit_item_popover_manager,
342
- edit_item_button_manager: edit_item_button_manager,
343
- edit_item_type_dropdown_manager: edit_item_type_dropdown_manager,
344
- edit_item_number_text_input_manager: edit_item_number_text_input_manager,
345
- edit_item_string_text_input_manager: edit_item_string_text_input_manager,
346
- edit_item_boolean_checkbox_manager: edit_item_boolean_checkbox_manager,
347
- add_item_button_manager: add_item_button_manager,
348
- delete_item_button_manager: delete_item_button_manager,
349
- finish_edit_item_button_manager: finish_edit_item_button_manager,
350
- val: null,
351
- toggle_is_collapsed,
352
- }
353
- if (typeof input == "object" && input != null) {
354
- if (Array.isArray(input)) {
355
- json_prepped_loc.type = "array"
356
- json_prepped_loc.val = []
357
- for (let i = 0; i < input.length; i++) {
358
- const test = get_json_prepped(input?.[i], json_prepped_loc?.nested_levels, indentation, [...path, i], true)
359
- json_prepped_loc.val.push({
360
- json_prepped: get_json_prepped(
361
- input?.[i],
362
- json_prepped_loc?.nested_levels,
363
- indentation,
364
- [...path, i],
365
- true
366
- ),
367
- })
368
- }
369
- } else {
370
- json_prepped_loc.type = "object"
371
- json_prepped_loc.val = {}
372
- for (let [key, val] of Object.entries(input)) {
373
- let key_manager = get_key_manager(key, path, json_prepped_loc, config?.indentation, val)
374
- json_prepped_loc.val[key] = key_manager
375
- }
376
- }
377
- } else if (typeof input == "boolean") {
378
- json_prepped_loc.type = "boolean"
379
- json_prepped_loc.val = input
380
- if (is_edit_mode) {
381
- edit_item_boolean_checkbox_manager.set_val(input)
382
- }
383
- } else if (typeof input == "number") {
384
- json_prepped_loc.type = "number"
385
- json_prepped_loc.val = input
386
- if (is_edit_mode) {
387
- edit_item_number_text_input_manager.set_val(input)
388
- }
389
- } else if (typeof input == "string") {
390
- json_prepped_loc.type = "string"
391
- json_prepped_loc.val = input
392
- if (is_edit_mode) {
393
- edit_item_string_text_input_manager.set_val(input)
394
- }
395
- }
396
- if (is_edit_mode) {
397
- json_prepped_loc.edit_item_type_dropdown_manager.set_val(json_prepped_loc.type)
398
- }
399
- return json_prepped_loc
400
- }
401
-
402
- function set_collapse_all(is_collapse = true) {
403
- function collapse_me_and_children(input) {
404
- if (typeof input == "object" && input?.hasOwnProperty("is_collapsed")) {
405
- input.is_collapsed = is_collapse
406
- }
407
- if (input?.type == "object" && Object.keys(input?.val || {}).length > 0) {
408
- for (let key of Object.keys(input?.val)) {
409
- input.val[key].json_prepped = collapse_me_and_children(input?.val?.[key]?.json_prepped)
410
- }
411
- } else if (input?.type == "array" && Array.isArray(input?.val)) {
412
- for (let i = 0; i < input?.val?.length; i++) {
413
- input.val[i].json_prepped = collapse_me_and_children(input?.val?.[i]?.json_prepped)
414
- }
415
- }
416
- return input
417
- }
418
- json_prepped = collapse_me_and_children(json_prepped)
419
- }
420
-
421
- function set_val(input) {
422
- let val_static = set_closurable(input)
423
- if (typeof val_static === "string") {
424
- val_static = val_static.trim()
425
- if (
426
- (val_static.startsWith("{") && val_static.endsWith("}")) ||
427
- (val_static.startsWith("[") && val_static.endsWith("]"))
428
- ) {
429
- try {
430
- val_static = JSON.parse(val_static)
431
- } catch (e) {
432
- console.log("invalid json string:", e)
433
- }
434
- }
435
- }
436
- json_prepped = get_json_prepped(val_static, 0, config?.indentation)
437
- }
438
-
439
- function init(config) {
440
- set_val(config?.val)
441
- collapse_all_button_manager = create_button_manager({
442
- type: "outlined",
443
- text: "Collapse All",
444
- is_compressed: true,
445
- on_click: () => set_collapse_all(true),
446
- })
447
- expand_all_button_manager = create_button_manager({
448
- type: "outlined",
449
- text: "Expand All",
450
- is_compressed: true,
451
- on_click: () => set_collapse_all(false),
452
- })
453
- copy_json_button_manager = create_button_manager({
454
- type: "outlined",
455
- text: "Copy Json",
456
- is_compressed: true,
457
- is_success_animation: true,
458
- support_icon: "clipboard",
459
- on_click: () => copy_to_clipboard(JSON.stringify(val)),
460
- })
461
- file_input_manager = create_file_input_manager({
462
- select_file_button_text: "JSON or CSV Upload",
463
- accept: ["application/json", "text/csv"],
464
- is_multiselect: false,
465
- is_drop_zone: false,
466
- on_get_file: (input) => {
467
- file_input_manager.clear_files()
468
- const reader = new FileReader()
469
- reader.readAsText(input)
470
- reader.onload = function (event) {
471
- const file_content = event.target.result
472
- if (input.type === "application/json") {
473
- set_val(JSON.parse(file_content))
474
- } else if (input.type === "text/csv") {
475
- set_val(csv_to_json(file_content))
476
- }
477
- }
478
- },
479
- })
480
- data_upload_popover_manager = create_popover_manager({
481
- min_width: 280,
482
- target_width: 600,
483
- min_height: 280,
484
- target_height: 500,
485
- type: "center",
486
- header: "Data Upload",
487
- })
488
- edit_json_button_manager = create_button_manager({
489
- type: "outlined",
490
- text: "Edit Full Json",
491
- is_compressed: true,
492
- popover_target: () => `popover_${data_upload_popover_manager?.id}`,
493
- })
494
- data_text_input_manager = create_text_input_manager({
495
- type: "text_area",
496
- label: "Data Input",
497
- rows: 15,
498
- placeholder: '{"hello_world": true }',
499
- max_length: 10000000000,
500
- on_change: (input) => {
501
- if (input && typeof input == "object") {
502
- set_val(JSON.parse(JSON.stringify(input)))
503
- } else {
504
- set_val(null)
505
- }
506
- },
507
- })
508
- finish_data_upload_button_manager = create_button_manager({
509
- text: "Finish",
510
- on_click: () => {
511
- set_val(data_text_input_manager?.val ? JSON.parse(data_text_input_manager?.val) : null)
512
- data_upload_popover_manager.close()
513
- },
514
- })
515
- popover_manager = create_popover_manager({
516
- target_height: 700,
517
- target_width: 700,
518
- header: () => (is_edit_mode ? "Edit JSON" : "View JSON"),
519
- })
520
- popover_toggle_button_manager = create_button_manager({
521
- type: "outlined",
522
- is_compressed: true,
523
- text: () => (is_edit_mode ? "Edit JSON" : "View JSON"),
524
- popover_target: () => `popover_${popover_manager?.id}`,
525
- })
526
- finish_button_manager = create_button_manager({
527
- text: "Finish",
528
- on_click: () => {
529
- if (typeof config?.on_finish == "function") {
530
- config?.on_finish(val)
531
- }
532
- popover_manager.close()
533
- },
534
- })
535
- }
536
-
537
- init(config)
538
-
539
- return {
540
- id,
541
- get val() {
542
- return val
543
- },
544
- get label() {
545
- return label
546
- },
547
- get popover_manager() {
548
- return popover_manager
549
- },
550
- get popover_toggle_button_manager() {
551
- return popover_toggle_button_manager
552
- },
553
- get is_popover() {
554
- return is_popover
555
- },
556
- get json_prepped() {
557
- return json_prepped
558
- },
559
- get file_input_manager() {
560
- return file_input_manager
561
- },
562
- get data_upload_popover_manager() {
563
- return data_upload_popover_manager
564
- },
565
- get edit_json_button_manager() {
566
- return edit_json_button_manager
567
- },
568
- get data_text_input_manager() {
569
- return data_text_input_manager
570
- },
571
- get collapse_all_button_manager() {
572
- return collapse_all_button_manager
573
- },
574
- get expand_all_button_manager() {
575
- return expand_all_button_manager
576
- },
577
- get copy_json_button_manager() {
578
- return copy_json_button_manager
579
- },
580
- get is_show_buttons() {
581
- return is_show_buttons
582
- },
583
- get is_edit_mode() {
584
- return is_edit_mode
585
- },
586
- get finish_data_upload_button_manager() {
587
- return finish_data_upload_button_manager
588
- },
589
- get finish_button_manager() {
590
- return finish_button_manager
591
- },
592
- set_val,
593
- }
594
- }
@@ -1,102 +0,0 @@
1
- <script>
2
- import Tooltip from "../Tooltip/index.svelte"
3
-
4
- let {
5
- label = "label",
6
- tooltip = null,
7
- is_required = false,
8
- is_disabled = false,
9
- font_weight = 500,
10
- font_size = 1.6,
11
- color = "var(--g4-t)",
12
- disabled_color = "var(--g8-t)",
13
- ml = 0,
14
- mr = 0,
15
- mt = 0,
16
- mb = 0,
17
- heading_min_width = 20,
18
- content_min_width = 30,
19
- content_max_width = 50,
20
- children,
21
- } = $props()
22
- </script>
23
-
24
- <div
25
- class="container"
26
- style="margin-left: {ml}rem; margin-right: {mr}rem; margin-top: {mt}rem; margin-bottom: {mb}rem;"
27
- >
28
- <div class="attr_label">
29
- <h4
30
- class:required={is_required}
31
- class:is_disabled
32
- style="color: {color}; font-weight: {font_weight}; font-size: {font_size}rem; --disabled_color: {disabled_color};--heading_min_width: {heading_min_width}rem;"
33
- >
34
- {label}:
35
- </h4>
36
- {#if tooltip}
37
- <Tooltip>
38
- {#snippet tooltip_content()}
39
- <p>{tooltip}</p>
40
- {/snippet}
41
- {#snippet target_content()}
42
- <div class="info_tooltip_icon">i</div>
43
- {/snippet}
44
- </Tooltip>
45
- {/if}
46
- </div>
47
- <div class="item" style="--content_min_width: {content_min_width}rem; --content_max_width: {content_max_width}rem;">
48
- {#if children}
49
- {@render children()}
50
- {/if}
51
- </div>
52
- </div>
53
-
54
- <style>
55
- .container {
56
- display: flex;
57
- justify-content: space-between;
58
- align-items: center;
59
- flex: 1;
60
- flex-wrap: wrap;
61
- }
62
- .attr_label {
63
- text-align: left;
64
- margin-left: 0;
65
- margin-right: 1rem;
66
- font-size: 1.2rem;
67
- line-height: 1.6rem;
68
- font-weight: 600;
69
- color: var(--g12-t);
70
- min-width: var(--heading_min_width);
71
- display: flex;
72
- gap: 0.5rem;
73
- }
74
- .info_tooltip_icon {
75
- box-shadow: 0 0 0 1px var(--g6-t);
76
- color: var(--g6-t);
77
- border-radius: 2rem;
78
- width: 1.6rem;
79
- height: 1.6rem;
80
- display: grid;
81
- place-content: center;
82
- font-size: 1.2rem;
83
- }
84
- .is_disabled {
85
- color: var(--disabled_color, var(--g12-t, "gray"));
86
- }
87
- .required::after {
88
- content: "*";
89
- color: var(--g12-t);
90
- margin-left: 2px;
91
- }
92
- .item {
93
- display: flex;
94
- flex-direction: column;
95
- flex: 1;
96
- justify-content: end;
97
- min-width: var(--content_min_width);
98
- max-width: var(--content_max_width);
99
- margin-right: 0;
100
- margin-left: auto;
101
- }
102
- </style>