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