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,463 +0,0 @@
1
- import { browser } from "$app/environment"
2
- import { create_button_manager } from "../Button/index.svelte.js"
3
- import { create_popover_manager } from "../Popover/index.svelte.js"
4
- import { create_slider_manager } from "../Slider/index.svelte.js"
5
- import { create_unique_id, set_closurable, deep_copy } from "../../client/index.js"
6
-
7
- export function create_audio_manager(config) {
8
- let id = create_unique_id(null, 20)
9
- let src = $state(null)
10
- let type = $state("audio/mpeg")
11
- let title = $state(null)
12
- let artist = $state(null)
13
- let album = $state(null)
14
- let image_src = $state(null)
15
- let image_type = $state(null)
16
- let default_skip_time = $state(10)
17
- let ui_type = $state("standard") // standard, short, square
18
- let ml = $derived(set_closurable(config?.ml, 0))
19
- let mr = $derived(set_closurable(config?.mr, 0))
20
- let mt = $derived(set_closurable(config?.mt, 0))
21
- let mb = $derived(set_closurable(config?.mb, 0))
22
- let is_hide_image = $derived(set_closurable(config?.is_hide_image, false))
23
- let play_pause_support_icon = $state("play")
24
- let play_pause_button_manager = $state(null)
25
- let time_slider_manager = $state(null)
26
- let settings_popover_manager = $state(null)
27
- let settings_button_manager = $state(null)
28
- let volume_slider_manager = $state(null)
29
- let rate_slider_manager = $state(null)
30
-
31
- let time_loaded_until = $state(0)
32
- let time_highlight_range_start_percent = $derived((100 * time_slider_manager?.val) / time_slider_manager?.max)
33
- let time_highlight_range_end_percent = $derived((100 * time_loaded_until) / time_slider_manager?.max)
34
-
35
- let storage_path = $state(null)
36
- let is_loading = $state(true)
37
- let formatted_duration = $derived(!isNaN(time_slider_manager?.max) ? format_time(time_slider_manager?.max) : "")
38
- let formatted_current_time = $derived(!isNaN(time_slider_manager?.val) ? format_time(time_slider_manager?.val) : "")
39
-
40
- function get_src(src, storage_id) {
41
- if (src) {
42
- return src
43
- } else if (storage_id && storage_path) {
44
- return storage_path.replace("{storage_id}", storage_id)
45
- } else {
46
- return null
47
- }
48
- }
49
-
50
- function handle_mount() {
51
- if (!browser) {
52
- return
53
- }
54
- let audio_el = document?.querySelector(`#audio_${id}`)
55
- if (audio_el) {
56
- if (audio_el.readyState >= 3) {
57
- handle_loaded_metadata()
58
- is_loading = false
59
- }
60
- }
61
- }
62
-
63
- function handle_volume_change(volume) {
64
- if (!browser) {
65
- // tbd on this
66
- return
67
- }
68
- let audio_el = document?.querySelector(`#audio_${id}`)
69
- if (audio_el && volume) {
70
- audio_el.volume = volume
71
- volume_slider_manager.set_val(deep_copy(volume))
72
- }
73
- }
74
-
75
- function handle_rate_change(rate) {
76
- if (!browser) {
77
- // tbd on this
78
- return
79
- }
80
- let audio_el = document?.querySelector(`#audio_${id}`)
81
- if (audio_el && rate) {
82
- audio_el.playbackRate = rate
83
- rate_slider_manager.set_val(rate)
84
- update_position_state()
85
- }
86
- }
87
-
88
- function format_time(seconds) {
89
- const mins = Math.floor(seconds / 60)
90
- .toString()
91
- .padStart(2, "0")
92
- const secs = Math.floor(seconds % 60)
93
- .toString()
94
- .padStart(2, "0")
95
- return `${mins}:${secs}`
96
- }
97
-
98
- function handle_loaded_metadata() {
99
- if (!browser) {
100
- // tbd on this
101
- return
102
- }
103
- let audio_el = document?.querySelector(`#audio_${id}`)
104
- if (audio_el) {
105
- time_slider_manager.set_max(audio_el.duration)
106
- is_loading = false
107
- }
108
- }
109
-
110
- function handle_progress() {
111
- if (!browser) {
112
- // tbd on this
113
- return
114
- }
115
- let audio_el = document?.querySelector(`#audio_${id}`)
116
- if (audio_el?.buffered?.length) {
117
- time_loaded_until = audio_el.buffered.end(0)
118
- }
119
- }
120
-
121
- function handle_time_update() {
122
- if (!browser) {
123
- // tbd on this
124
- return
125
- }
126
- let audio_el = document?.querySelector(`#audio_${id}`)
127
- if (audio_el) {
128
- time_slider_manager.set_val(audio_el.currentTime)
129
- if (audio_el?.buffered?.length) {
130
- time_loaded_until = audio_el.buffered.end(0)
131
- }
132
- }
133
- }
134
-
135
- function seek_to_audio(time) {
136
- if (!browser) {
137
- // tbd on this
138
- return
139
- }
140
- if (time > -1) {
141
- time_slider_manager.set_val(time)
142
- let audio_el = document?.querySelector(`#audio_${id}`)
143
- if (audio_el) {
144
- audio_el.currentTime = time
145
- time_slider_manager.set_val(time)
146
- if (audio_el?.buffered?.length) {
147
- time_loaded_until = audio_el.buffered.end(0)
148
- }
149
- update_position_state()
150
- }
151
- }
152
- }
153
-
154
- function resize_image(src, callback) {
155
- let img = new Image()
156
- img.crossOrigin = "anonymous" // Request CORS permissions
157
- img.onload = function () {
158
- let width = img.width
159
- let height = img.height
160
- if (width > height) {
161
- if (width > 128) {
162
- height *= 128 / width
163
- width = 128
164
- }
165
- } else {
166
- if (height > 128) {
167
- width *= 128 / height
168
- height = 128
169
- }
170
- }
171
- let canvas = document.createElement("canvas")
172
- let ctx = canvas.getContext("2d")
173
- canvas.width = width
174
- canvas.height = height
175
- ctx.drawImage(img, 0, 0, width, height)
176
- callback(canvas.toDataURL())
177
- }
178
- img.src = src
179
- }
180
-
181
- let has_setup_media_session = $state(false)
182
- function setup_media_session() {
183
- let metadata = {
184
- title: title,
185
- artist: artist || "",
186
- album: album,
187
- artwork: [],
188
- }
189
- if (image_src) {
190
- //temp fix since ios mobile is trash and not working with sizes over 128x128 even though it did on ios idk 16.4 or something
191
- resize_image(image_src, function (resized_image_src) {
192
- metadata.artwork = [
193
- {
194
- src: resized_image_src,
195
- sizes: "128x128", // maximum size is now 128x128
196
- type: image_type,
197
- },
198
- // {
199
- // src: image_src,
200
- // sizes: "1000x1000", // seems as though need this even if not correct and max size of a size can be 1000px
201
- // type: image_type,
202
- // },
203
- // {
204
- // src: "https://dummyimage.com/1000x500",
205
- // sizes: "1000x500",
206
- // type: "image/png",
207
- // },
208
- ]
209
- navigator.mediaSession.metadata = new MediaMetadata(metadata)
210
- navigator.mediaSession.setActionHandler("play", play_audio)
211
- navigator.mediaSession.setActionHandler("pause", pause_audio)
212
- navigator.mediaSession.setActionHandler("seekto", (details) => seek_to_audio(details.seekTime))
213
- navigator.mediaSession.setActionHandler("seekbackward", (details) => nav_seek_backward(details))
214
- navigator.mediaSession.setActionHandler("seekforward", (details) => nav_seek_forward(details))
215
- })
216
- }
217
- }
218
-
219
- function update_position_state() {
220
- if ("setPositionState" in navigator.mediaSession) {
221
- navigator.mediaSession.setPositionState({
222
- duration: time_slider_manager?.max,
223
- playback_rate: rate_slider_manager?.val,
224
- position: time_slider_manager?.val,
225
- })
226
- }
227
- }
228
-
229
- function nav_seek_backward(details) {
230
- const skip_time = details.seekOffset || default_skip_time
231
- seek_to_audio(Math.max(time_slider_manager?.val - skip_time, 0))
232
- }
233
-
234
- function nav_seek_forward(details) {
235
- const skip_time = details.seekOffset || default_skip_time
236
- seek_to_audio(Math.min(time_slider_manager?.val + skip_time, time_slider_manager?.max))
237
- }
238
-
239
- function toggle_play_pause() {
240
- if (!browser) {
241
- // tbd on this
242
- return
243
- }
244
- let audio_el = document?.querySelector(`#audio_${id}`)
245
- const is_playing = !audio_el ? false : !audio_el.paused && !audio_el.ended && audio_el.currentTime > 0
246
- if (is_playing) {
247
- pause_audio()
248
- } else {
249
- play_audio()
250
- }
251
- }
252
-
253
- async function play_audio() {
254
- if (!browser) {
255
- // tbd on this
256
- return
257
- }
258
- let audio_el = document?.querySelector(`#audio_${id}`)
259
- const is_playing = !audio_el ? false : !audio_el.paused && !audio_el.ended && audio_el.currentTime > 0
260
- play_pause_support_icon = "pause"
261
- if (audio_el && !is_playing) {
262
- if (!has_setup_media_session) {
263
- setup_media_session()
264
- }
265
- await audio_el.play()
266
- navigator.mediaSession.playbackState = "playing"
267
- update_position_state()
268
- }
269
- }
270
-
271
- function pause_audio() {
272
- if (!browser) {
273
- // tbd on this
274
- return
275
- }
276
- let audio_el = document?.querySelector(`#audio_${id}`)
277
- const is_playing = !audio_el ? false : !audio_el.paused && !audio_el.ended && audio_el.currentTime > 0
278
- play_pause_support_icon = "play"
279
- if (audio_el && is_playing) {
280
- audio_el.pause()
281
- navigator.mediaSession.playbackState = "paused"
282
- }
283
- }
284
-
285
- function set_is_loading(input) {
286
- is_loading = !!input
287
- }
288
-
289
- function handle_seeking() {
290
- is_loading = true
291
- }
292
- function handle_can_play() {
293
- is_loading = false
294
- }
295
-
296
- function init(config) {
297
- storage_path = config?.storage_path
298
- src = get_src(config?.src, config?.storage_id)
299
- type = config?.type ?? "audio/mpeg"
300
- title = config?.title ?? null
301
- artist = config?.artist ?? null
302
- album = config?.album ?? null
303
- image_src = get_src(config?.image_src, config?.image_storage_id)
304
- image_type = config?.image_type ?? null
305
- default_skip_time = config?.default_skip_time ?? null
306
- ui_type = config?.ui_type ?? "standard"
307
- play_pause_button_manager = create_button_manager({
308
- type: "soft",
309
- is_uniform: true,
310
- is_icon_bg_tint: false,
311
- aria_label: "play_pause",
312
- is_loading: () => is_loading,
313
- support_icon: () => play_pause_support_icon ?? "play",
314
- on_click: () => toggle_play_pause(),
315
- })
316
- time_slider_manager = create_slider_manager({
317
- min: 0,
318
- max: null,
319
- step: 1,
320
- ml: 0.5,
321
- mr: 0.5,
322
- is_show_text: false,
323
- is_short: true,
324
- val: 0,
325
- highlight_range_start_percent: () => time_highlight_range_start_percent,
326
- highlight_range_end_percent: () => time_highlight_range_end_percent,
327
- on_change: (input) => seek_to_audio(input),
328
- })
329
- settings_popover_manager = create_popover_manager({
330
- header: "Settings",
331
- type: "dropdown",
332
- min_width: 100,
333
- target_width: 200,
334
- min_height: 100,
335
- target_height: 200,
336
- anchor_id: () => `button_${settings_button_manager?.id}`,
337
- })
338
- settings_button_manager = create_button_manager({
339
- type: "soft",
340
- support_icon: "three_dots",
341
- icon_sw: 60,
342
- is_icon_bg_tint: false,
343
- is_uniform: true,
344
- aria_label: "settings",
345
- popover_target: () => `popover_${settings_popover_manager?.id}`,
346
- })
347
- volume_slider_manager = create_slider_manager({
348
- label: "Volume",
349
- min: 0,
350
- max: 1,
351
- step: 0.05,
352
- is_show_text: true,
353
- is_short: false,
354
- val: 1,
355
- on_change: (input) => handle_volume_change(input),
356
- })
357
- rate_slider_manager = create_slider_manager({
358
- label: "Rate",
359
- min: 0.5,
360
- max: 3,
361
- step: 0.05,
362
- is_show_text: true,
363
- is_short: false,
364
- val: 1,
365
- on_change: (input) => handle_rate_change(input),
366
- })
367
- }
368
-
369
- init(config)
370
-
371
- return {
372
- id,
373
- get src() {
374
- return src
375
- },
376
- get type() {
377
- return type
378
- },
379
- get title() {
380
- return title
381
- },
382
- get artist() {
383
- return artist
384
- },
385
- get album() {
386
- return album
387
- },
388
- get image_src() {
389
- return image_src
390
- },
391
- get image_type() {
392
- return image_type
393
- },
394
- get default_skip_time() {
395
- return default_skip_time
396
- },
397
- get ui_type() {
398
- return ui_type
399
- },
400
- get ml() {
401
- return ml
402
- },
403
- get mr() {
404
- return mr
405
- },
406
- get mt() {
407
- return mt
408
- },
409
- get mb() {
410
- return mb
411
- },
412
- get is_hide_image() {
413
- return is_hide_image
414
- },
415
- get play_pause_button_manager() {
416
- return play_pause_button_manager
417
- },
418
- get time_slider_manager() {
419
- return time_slider_manager
420
- },
421
- get settings_popover_manager() {
422
- return settings_popover_manager
423
- },
424
- get settings_button_manager() {
425
- return settings_button_manager
426
- },
427
- get volume_slider_manager() {
428
- return volume_slider_manager
429
- },
430
- get rate_slider_manager() {
431
- return rate_slider_manager
432
- },
433
- get has_setup_media_session() {
434
- return has_setup_media_session
435
- },
436
- get formatted_duration() {
437
- return formatted_duration
438
- },
439
- get formatted_current_time() {
440
- return formatted_current_time
441
- },
442
- get is_loading() {
443
- return is_loading
444
- },
445
- handle_mount,
446
- handle_loaded_metadata,
447
- handle_progress,
448
- handle_time_update,
449
- handle_rate_change,
450
- handle_seeking,
451
- handle_can_play,
452
- seek_to_audio,
453
- resize_image,
454
- setup_media_session,
455
- update_position_state,
456
- nav_seek_backward,
457
- nav_seek_forward,
458
- toggle_play_pause,
459
- play_audio,
460
- pause_audio,
461
- set_is_loading,
462
- }
463
- }
@@ -1,252 +0,0 @@
1
- <script>
2
- import Popover from "../Popover/index.svelte"
3
- import Button from "../Button/index.svelte"
4
- import InfoBox from "../InfoBox/index.svelte"
5
- import HorizScrollBox from "../HorizScrollBox/index.svelte"
6
- import LabeledItem from "../LabeledItem/index.svelte"
7
- import Spacer from "../Spacer/index.svelte"
8
- import Audio from "../Audio/index.svelte"
9
- import FileInput from "../FileInput/index.svelte"
10
- import TextInput from "../TextInput/index.svelte"
11
- import Dropdown from "../Dropdown/index.svelte"
12
- import StoragePicker from "../StoragePicker/index.svelte"
13
-
14
- let { manager, extra_buttons } = $props()
15
- </script>
16
-
17
- {#snippet audio_input()}
18
- <div style="padding-bottom: 20rem;">
19
- {#if manager?.account?.id}
20
- <p style="margin-bottom: 1rem;">
21
- Generated files will be saved to {manager?.account?.name} ({manager?.account?.id})'s temporary storage
22
- </p>
23
- {:else}
24
- <p>No account being used</p>
25
- {/if}
26
- <div style="display: flex; flex-wrap: wrap; gap: 1rem;">
27
- <Button manager={manager?.clear_button_manager} />
28
- <div>
29
- <Button manager={manager?.seed_from_input_popover_button_manager} />
30
- <Popover manager={manager?.seed_from_input_popover_manager}>
31
- {#snippet content()}
32
- <StoragePicker manager={manager?.seed_audio_storage_picker_manager} />
33
- {/snippet}
34
- </Popover>
35
- </div>
36
- {#if extra_buttons}
37
- {@render extra_buttons()}
38
- {/if}
39
- <Button manager={manager?.generate_audio_changes_button_manager} />
40
- </div>
41
- {#if manager?.is_loading_generate_audio && manager?.is_text_to_audio && manager?.text_to_audio_text_input_manager && manager?.text_to_audio_text_input_manager.length > 10}
42
- <p>
43
- This should take around {manager?.text_to_audio_time_in_minutes} minutes.
44
- </p>
45
- {/if}
46
- <InfoBox message={manager?.error_message} mt={0.5} mb={0.5} />
47
- {#if manager?.generated_audio_file_obj}
48
- <div class="card" style="margin: 1rem 0;">
49
- <h3>Generated Audio</h3>
50
- <p>type: {manager?.generated_audio_file_obj?.type}</p>
51
- <p>file name: {manager?.generated_audio_file_obj?.file_name}</p>
52
- <p>size: {manager?.generated_audio_file_obj?.size_kb}KB</p>
53
- <p style="font-size: 1.2rem; color: var(--g10-t); margin-bottom: 1rem">
54
- Note: Currently, our interface does not support extracting cover images directly from the metadata of audio
55
- sources. We may add this feature in the future. At present, displaying images in the Audio component requires
56
- a separate image URL. However, if a cover image is embedded in the audio file's metadata, it can still be
57
- viewed in other applications, such as Apple Finder.
58
- </p>
59
- <Audio manager={manager?.audio_manager} />
60
- <div style="display: flex; flex-wrap: wrap; gap: 1rem; margin-top: 1rem;">
61
- <Button manager={manager?.clear_generated_audio_button_manager} />
62
- <Button manager={manager?.download_audio_file_button_manager} />
63
- <Button manager={manager?.finish_button_manager} />
64
- </div>
65
- </div>
66
- {/if}
67
- <Spacer mt={1} mb={1} />
68
- <LabeledItem
69
- is_disabled={manager?.is_loading_generate_audio || manager?.is_disabled}
70
- label={!manager?.audio_file_obj?.src && manager?.is_text_to_audio ? "Audio Generation" : "Audio File"}
71
- mt={1}
72
- content_min_width={35}
73
- content_max_width={60}
74
- >
75
- {#if !manager?.is_text_to_audio}
76
- <div style="display: flex; margin-bottom: 1rem;">
77
- {#if !manager?.audio_file_obj?.src}
78
- <Button manager={manager?.use_text_to_audio_button_manager} />
79
- <Button manager={manager?.select_file_from_storage_button_manager} />
80
- {/if}
81
- </div>
82
- <StoragePicker manager={manager?.audio_storage_picker_manager} />
83
- {:else}
84
- <Button manager={manager?.use_mp3_file_button_manager} />
85
- <TextInput manager={manager?.text_to_audio_text_input_manager} />
86
- {/if}
87
- </LabeledItem>
88
- {#if manager?.is_text_to_audio}
89
- <LabeledItem
90
- label="Voice"
91
- content_min_width={35}
92
- content_max_width={60}
93
- mt={1}
94
- is_disabled={manager?.title_text_input_manager?.is_disabled}
95
- >
96
- {#if Array.isArray(manager?.voice_options) && manager?.voice_options.length > 0}
97
- <div style="display: flex; gap: 1rem;">
98
- <div>
99
- <p>{manager?.voice_options.find((h) => h?.id == (manager?.voice_id ?? "alloy"))?.name ?? "-"}</p>
100
- <Button manager={manager?.edit_voice_button_manager} />
101
- </div>
102
- <Audio
103
- manager={manager?.voice_options.find((h) => h?.id == (manager?.voice_id ?? "alloy"))?.audio_manager}
104
- />
105
- </div>
106
- <Popover manager={manager?.edit_voice_popover_manager}>
107
- {#snippet content()}
108
- <div>
109
- {#each manager?.voice_options as voice, i}
110
- <div style="padding: 1rem;">
111
- <div style="display: flex; justify-content: space-between; gap: 1rem;">
112
- <p>{voice?.name}{voice?.id == "alloy" ? "(default)" : ""}</p>
113
- {#if Array.isArray(voice?.labels) && voice.labels.length > 0}
114
- <HorizScrollBox>
115
- <div style="display: flex; gap: .5rem;">
116
- {#each voice?.labels as label}
117
- <div
118
- style="border: 1px solid var(--shadow5-t); border-radius: .5rem; padding: .2rem .4rem"
119
- >
120
- <p style="font-size: 1.4rem; white-space: nowrap;">{label}</p>
121
- </div>
122
- {/each}
123
- </div>
124
- </HorizScrollBox>
125
- {/if}
126
- </div>
127
- <div style="display: flex; justify-content: space-between; margin-top: .5rem;">
128
- <Audio manager={voice?.audio_manager} />
129
- <Button manager={voice?.select_button_manager} />
130
- </div>
131
- </div>
132
- {#if i < manager?.voice_options.length - 1}
133
- <Spacer />
134
- {/if}
135
- {/each}
136
- </div>
137
- {/snippet}
138
- </Popover>
139
- {:else}
140
- No voice options found
141
- {/if}
142
- </LabeledItem>
143
- {/if}
144
- <LabeledItem
145
- is_disabled={manager?.is_loading_generate_audio || manager?.is_disabled}
146
- label="File Name"
147
- mt={1}
148
- content_min_width={35}
149
- content_max_width={60}
150
- >
151
- <TextInput manager={manager?.file_name_text_input_manager} />
152
- </LabeledItem>
153
- <Spacer mt={1} />
154
- <h3 style="margin: 0; margin-top: 1rem; font-size: 1.6rem;">Metatags (optional)</h3>
155
- <LabeledItem
156
- label="Title"
157
- content_min_width={35}
158
- content_max_width={60}
159
- mt={1}
160
- is_disabled={manager?.title_text_input_manager?.is_disabled}
161
- >
162
- <TextInput manager={manager?.title_text_input_manager} />
163
- </LabeledItem>
164
- <LabeledItem
165
- label="Album Title"
166
- content_min_width={35}
167
- content_max_width={60}
168
- mt={1}
169
- is_disabled={manager?.album_title_text_input_manager?.is_disabled}
170
- >
171
- <TextInput manager={manager?.album_title_text_input_manager} />
172
- </LabeledItem>
173
- <LabeledItem
174
- label="Cover Image"
175
- content_min_width={35}
176
- content_max_width={60}
177
- mt={1}
178
- is_disabled={manager?.image_storage_picker_manager?.is_disabled}
179
- >
180
- <StoragePicker manager={manager?.image_storage_picker_manager} />
181
- <TextInput manager={manager?.image_description_text_input_manager} />
182
- </LabeledItem>
183
- <LabeledItem
184
- label="Artist"
185
- content_min_width={35}
186
- content_max_width={60}
187
- mt={1}
188
- is_disabled={manager?.artist_text_input_manager?.is_disabled}
189
- >
190
- <TextInput manager={manager?.artist_text_input_manager} />
191
- </LabeledItem>
192
- <LabeledItem
193
- label="Lyrics"
194
- content_min_width={35}
195
- content_max_width={60}
196
- mt={1}
197
- is_disabled={manager?.lyrics_text_input_manager?.is_disabled}
198
- >
199
- <TextInput manager={manager?.lyrics_text_input_manager} />
200
- </LabeledItem>
201
- <LabeledItem
202
- label="Release Year"
203
- content_min_width={35}
204
- content_max_width={60}
205
- mt={1}
206
- is_disabled={manager?.release_year_text_input_manager?.is_disabled}
207
- >
208
- <TextInput manager={manager?.release_year_text_input_manager} />
209
- </LabeledItem>
210
- <LabeledItem
211
- label="Language"
212
- content_min_width={35}
213
- content_max_width={60}
214
- mt={1}
215
- is_disabled={manager?.language_dropdown_manager?.is_disabled}
216
- >
217
- <Dropdown manager={manager?.language_dropdown_manager} />
218
- </LabeledItem>
219
- <Spacer mt={1} mb={1} />
220
- <p style="font-size: 1.4rem; color: var(--g8-t); margin-bottom: .5rem;">Additional Metatags</p>
221
- <Dropdown manager={manager?.additional_metatags_dropdown_manager} />
222
- {#if Array.isArray(manager?.additional_tag_keys_ordered) && manager?.additional_tag_keys_ordered.length > 0}
223
- {#each manager?.additional_tag_keys_ordered as tag_key}
224
- <LabeledItem
225
- is_disabled={manager?.is_loading_generate_audio || manager?.is_disabled}
226
- label={manager?.additional_tags_input_prepped?.[tag_key]?.name}
227
- mt={1}
228
- content_min_width={35}
229
- content_max_width={60}
230
- >
231
- {#if manager?.additional_tags_input_prepped?.[tag_key]?.key == "tbd"}
232
- <!-- tbd -->
233
- {:else}
234
- <TextInput manager={manager?.additional_tags_input_prepped?.[tag_key]?.text_input_manager} />
235
- {/if}
236
- </LabeledItem>
237
- {/each}
238
- {/if}
239
- </div>
240
- {/snippet}
241
-
242
- {#if !manager?.is_popover}
243
- {@render audio_input()}
244
- {:else}
245
- <Popover manager={manager.popover_manager}>
246
- {#snippet content()}
247
- <div>
248
- {@render audio_input()}
249
- </div>
250
- {/snippet}
251
- </Popover>
252
- {/if}