sveltekit-ui 1.1.15 → 1.1.16
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.
- package/package.json +3 -3
- package/src/routes/+page.svelte +24 -0
- package/dist/Components/Alert/index.svelte +0 -88
- package/dist/Components/Alert/index.svelte.js +0 -101
- package/dist/Components/Audio/index.svelte +0 -193
- package/dist/Components/Audio/index.svelte.js +0 -463
- package/dist/Components/AuthCodeInput/index.svelte +0 -85
- package/dist/Components/AuthCodeInput/index.svelte.js +0 -95
- package/dist/Components/Button/index.svelte +0 -721
- package/dist/Components/Button/index.svelte.js +0 -375
- package/dist/Components/Checkbox/index.svelte +0 -411
- package/dist/Components/Checkbox/index.svelte.js +0 -178
- package/dist/Components/Code/index.svelte +0 -23
- package/dist/Components/Code/index.svelte.js +0 -33
- package/dist/Components/EmailAddress/index.svelte +0 -22
- package/dist/Components/EmailAddress/index.svelte.js +0 -45
- package/dist/Components/Eye/index.svelte +0 -57
- package/dist/Components/Icon/index.svelte +0 -412
- package/dist/Components/Icon/index.svelte.js +0 -116
- package/dist/Components/InfoBox/index.svelte +0 -89
- package/dist/Components/Json/index.svelte +0 -60
- package/dist/Components/Json/index.svelte.js +0 -594
- package/dist/Components/Link/index.svelte +0 -47
- package/dist/Components/Link/index.svelte.js +0 -136
- package/dist/Components/LoadingSuccessDiv/index.svelte +0 -51
- package/dist/Components/Location/index.svelte +0 -79
- package/dist/Components/Location/index.svelte.js +0 -288
- package/dist/Components/PhoneNumber/index.svelte +0 -22
- package/dist/Components/PhoneNumber/index.svelte.js +0 -41
- package/dist/Components/Qr/index.svelte +0 -85
- package/dist/Components/Qr/index.svelte.js +0 -301
- package/dist/Components/QrInput/index.svelte +0 -47
- package/dist/Components/QrInput/index.svelte.js +0 -218
- package/dist/Components/Slider/index.svelte +0 -239
- package/dist/Components/Slider/index.svelte.js +0 -469
- package/dist/Components/SuccessCheck/index.svelte +0 -56
- package/dist/Components/TableAdvanced/index.svelte +0 -275
- package/dist/Components/TableAdvanced/index.svelte.js +0 -1565
- package/dist/Components/TextInput/index.svelte +0 -223
- package/dist/Components/TextInput/index.svelte.js +0 -447
- package/dist/Components/Time/index.svelte +0 -7
- package/dist/Components/Time/index.svelte.js +0 -38
- package/dist/Components/VideoTBD/index.svelte +0 -100
- package/dist/Components/XPost/index.svelte +0 -52
- package/dist/Components/XPost/index.svelte.js +0 -64
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
<script>
|
|
2
|
-
import Popover from "../Popover/index.svelte"
|
|
3
|
-
import Button from "../Button/index.svelte"
|
|
4
|
-
import TextInput from "../TextInput/index.svelte"
|
|
5
|
-
import FileInput from "../FileInput/index.svelte"
|
|
6
|
-
import Nested from "./Nested/index.svelte"
|
|
7
|
-
|
|
8
|
-
let { manager } = $props()
|
|
9
|
-
</script>
|
|
10
|
-
|
|
11
|
-
{#snippet main_content()}
|
|
12
|
-
{#if manager?.is_show_buttons}
|
|
13
|
-
<div style="display: flex; flex-wrap: wrap;">
|
|
14
|
-
<Button manager={manager?.collapse_all_button_manager} />
|
|
15
|
-
<Button manager={manager?.expand_all_button_manager} />
|
|
16
|
-
<Button manager={manager?.copy_json_button_manager} />
|
|
17
|
-
{#if manager?.is_edit_mode}
|
|
18
|
-
<div>
|
|
19
|
-
<FileInput manager={manager?.file_input_manager} />
|
|
20
|
-
</div>
|
|
21
|
-
<div>
|
|
22
|
-
<Button manager={manager?.edit_json_button_manager} />
|
|
23
|
-
<Popover manager={manager?.data_upload_popover_manager}>
|
|
24
|
-
{#snippet content()}
|
|
25
|
-
<div>
|
|
26
|
-
<TextInput manager={manager?.data_text_input_manager} />
|
|
27
|
-
</div>
|
|
28
|
-
{/snippet}
|
|
29
|
-
{#snippet footer()}
|
|
30
|
-
<Button manager={manager?.finish_data_upload_button_manager} />
|
|
31
|
-
{/snippet}
|
|
32
|
-
</Popover>
|
|
33
|
-
</div>
|
|
34
|
-
{/if}
|
|
35
|
-
</div>
|
|
36
|
-
{/if}
|
|
37
|
-
<Nested manager={manager?.json_prepped} is_edit_mode={manager?.is_edit_mode} />
|
|
38
|
-
{/snippet}
|
|
39
|
-
|
|
40
|
-
{#if manager?.label}
|
|
41
|
-
<div style="display: inline-flex;">
|
|
42
|
-
{#if manager?.label}
|
|
43
|
-
<p class="label">{manager?.label}:</p>
|
|
44
|
-
{/if}
|
|
45
|
-
</div>
|
|
46
|
-
{/if}
|
|
47
|
-
|
|
48
|
-
{#if !manager?.is_popover}
|
|
49
|
-
{@render main_content()}
|
|
50
|
-
{:else}
|
|
51
|
-
<Button manager={manager?.popover_toggle_button_manager} />
|
|
52
|
-
<Popover manager={manager.popover_manager}>
|
|
53
|
-
{#snippet content()}
|
|
54
|
-
{@render main_content()}
|
|
55
|
-
{/snippet}
|
|
56
|
-
{#snippet footer()}
|
|
57
|
-
<Button manager={manager?.finish_button_manager} />
|
|
58
|
-
{/snippet}
|
|
59
|
-
</Popover>
|
|
60
|
-
{/if}
|
|
@@ -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,47 +0,0 @@
|
|
|
1
|
-
<script>
|
|
2
|
-
import Button from "../Button/index.svelte"
|
|
3
|
-
import Popover from "../Popover/index.svelte"
|
|
4
|
-
import Qr from "../Qr/index.svelte"
|
|
5
|
-
|
|
6
|
-
let { manager, children } = $props()
|
|
7
|
-
</script>
|
|
8
|
-
|
|
9
|
-
<span style="display: inline-flex;">
|
|
10
|
-
<a
|
|
11
|
-
id={`link_${manager?.id}`}
|
|
12
|
-
href={manager?.href}
|
|
13
|
-
onclick={(e) => manager?.handle_a_click(e)}
|
|
14
|
-
style="display: flex; flex-wrap: wrap; {manager?.text_color ? `color: ${manager?.text_color};` : ''}"
|
|
15
|
-
>
|
|
16
|
-
{#if manager?.display_text}
|
|
17
|
-
{manager?.display_text}
|
|
18
|
-
{:else if children}
|
|
19
|
-
{@render children()}
|
|
20
|
-
{/if}
|
|
21
|
-
{#if manager?.display_text && !manager?.is_show_preview}
|
|
22
|
-
<Button manager={manager?.inline_goto_link_button_manager} />
|
|
23
|
-
{/if}
|
|
24
|
-
</a>
|
|
25
|
-
<Popover manager={manager?.popover_manager}>
|
|
26
|
-
{#snippet content()}
|
|
27
|
-
{#if manager?.display_text}
|
|
28
|
-
{manager?.display_text}
|
|
29
|
-
{:else if children}
|
|
30
|
-
{@render children()}
|
|
31
|
-
{/if}
|
|
32
|
-
<p
|
|
33
|
-
style="font-size: 1.2rem; background-color: var(--shadow2-t); border-radius: 1rem; padding: 1rem; margin-bottom: 1rem;"
|
|
34
|
-
>
|
|
35
|
-
{manager?.href}
|
|
36
|
-
</p>
|
|
37
|
-
<Qr manager={manager?.qr_manager} />
|
|
38
|
-
{/snippet}
|
|
39
|
-
{#snippet footer()}
|
|
40
|
-
<div style="display: flex; flex-direction: column; gap: .5rem;">
|
|
41
|
-
<Button manager={manager?.copy_link_button_manager} />
|
|
42
|
-
<Button manager={manager?.goto_link_button_manager} />
|
|
43
|
-
<Button manager={manager?.goto_link_same_tab_button_manager} />
|
|
44
|
-
</div>
|
|
45
|
-
{/snippet}
|
|
46
|
-
</Popover>
|
|
47
|
-
</span>
|