sveltekit-ui 1.1.16 → 1.1.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (156) hide show
  1. package/package.json +1 -1
  2. package/dist/Components/ArrowToggle/index.svelte +0 -62
  3. package/dist/Components/Attachment/index.svelte +0 -77
  4. package/dist/Components/Attachment/index.svelte.js +0 -119
  5. package/dist/Components/AudioEditor/index.svelte +0 -252
  6. package/dist/Components/AudioEditor/index.svelte.js +0 -977
  7. package/dist/Components/AudioEditor/samples/alloy-voice-sample.mp3 +0 -0
  8. package/dist/Components/AudioEditor/samples/echo-voice-sample.mp3 +0 -0
  9. package/dist/Components/AudioEditor/samples/fable-voice-sample.mp3 +0 -0
  10. package/dist/Components/AudioEditor/samples/nova-voice-sample.mp3 +0 -0
  11. package/dist/Components/AudioEditor/samples/onyx-voice-sample.mp3 +0 -0
  12. package/dist/Components/AudioEditor/samples/shimmer-voice-sample.mp3 +0 -0
  13. package/dist/Components/Breadcrumbs/index.svelte +0 -27
  14. package/dist/Components/Breadcrumbs/index.svelte.js +0 -88
  15. package/dist/Components/Chart/Klines/index.svelte +0 -87
  16. package/dist/Components/Chart/index.svelte +0 -226
  17. package/dist/Components/Chart/index.svelte.js +0 -1090
  18. package/dist/Components/ChartInput/DisplayNav/Klines/index.svelte +0 -150
  19. package/dist/Components/ChartInput/DisplayNav/Lines/index.svelte +0 -45
  20. package/dist/Components/ChartInput/DisplayNav/index.svelte +0 -297
  21. package/dist/Components/ChartInput/EditPanel/index.svelte +0 -155
  22. package/dist/Components/ChartInput/index.svelte +0 -21
  23. package/dist/Components/ChartInput/index.svelte.js +0 -671
  24. package/dist/Components/Color/index.svelte +0 -51
  25. package/dist/Components/Color/index.svelte.js +0 -31
  26. package/dist/Components/ColorInput/ChromaPicker/index.svelte +0 -50
  27. package/dist/Components/ColorInput/ColorPalette/index.svelte +0 -62
  28. package/dist/Components/ColorInput/OpacityPicker/index.svelte +0 -68
  29. package/dist/Components/ColorInput/ShowcasePicker/index.svelte +0 -136
  30. package/dist/Components/ColorInput/index.svelte +0 -70
  31. package/dist/Components/ColorInput/index.svelte.js +0 -386
  32. package/dist/Components/ConditionsInput/index.svelte +0 -46
  33. package/dist/Components/ConditionsInput/index.svelte.js +0 -201
  34. package/dist/Components/Confetti/index.svelte +0 -98
  35. package/dist/Components/Confetti/index.svelte.js +0 -94
  36. package/dist/Components/Content/index.svelte +0 -500
  37. package/dist/Components/Content/index.svelte.js +0 -910
  38. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Audio/index.svelte +0 -31
  39. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Audio/index.svelte.js +0 -258
  40. package/dist/Components/ContentInput/AttributesInput/CustomConfig/AudioAdvanced/index.svelte +0 -31
  41. package/dist/Components/ContentInput/AttributesInput/CustomConfig/AudioAdvanced/index.svelte.js +0 -258
  42. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Dropdown/index.svelte +0 -58
  43. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Dropdown/index.svelte.js +0 -206
  44. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Image/index.svelte +0 -28
  45. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Image/index.svelte.js +0 -224
  46. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Number/index.svelte +0 -44
  47. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Number/index.svelte.js +0 -272
  48. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Qr/index.svelte +0 -41
  49. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Qr/index.svelte.js +0 -202
  50. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Slider/index.svelte +0 -19
  51. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Slider/index.svelte.js +0 -117
  52. package/dist/Components/ContentInput/AttributesInput/CustomConfig/TableAdvanced/index.svelte +0 -60
  53. package/dist/Components/ContentInput/AttributesInput/CustomConfig/TableAdvanced/index.svelte.js +0 -542
  54. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Tag/index.svelte +0 -47
  55. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Tag/index.svelte.js +0 -185
  56. package/dist/Components/ContentInput/AttributesInput/CustomConfig/TextInput/index.svelte +0 -35
  57. package/dist/Components/ContentInput/AttributesInput/CustomConfig/TextInput/index.svelte.js +0 -222
  58. package/dist/Components/ContentInput/AttributesInput/CustomConfig/TimeInput/index.svelte +0 -20
  59. package/dist/Components/ContentInput/AttributesInput/CustomConfig/TimeInput/index.svelte.js +0 -84
  60. package/dist/Components/ContentInput/AttributesInput/DefinedTypeInput/index.svelte +0 -25
  61. package/dist/Components/ContentInput/AttributesInput/DefinedTypeInput/index.svelte.js +0 -91
  62. package/dist/Components/ContentInput/AttributesInput/index.svelte +0 -352
  63. package/dist/Components/ContentInput/AttributesInput/index.svelte.js +0 -1436
  64. package/dist/Components/ContentInput/ContentPanelBuilder/AddElement/index.svelte +0 -64
  65. package/dist/Components/ContentInput/ContentPanelBuilder/AddElement/index.svelte.js +0 -97
  66. package/dist/Components/ContentInput/ContentPanelBuilder/ElementList/index.svelte +0 -184
  67. package/dist/Components/ContentInput/ContentPanelBuilder/index.svelte +0 -41
  68. package/dist/Components/ContentInput/index.svelte +0 -78
  69. package/dist/Components/ContentInput/index.svelte.js +0 -1197
  70. package/dist/Components/CronInput/index.svelte +0 -78
  71. package/dist/Components/CronInput/index.svelte.js +0 -198
  72. package/dist/Components/DataTypeInput/index.svelte +0 -174
  73. package/dist/Components/DataTypeInput/index.svelte.js +0 -565
  74. package/dist/Components/Dropdown/index.svelte +0 -116
  75. package/dist/Components/Dropdown/index.svelte.js +0 -403
  76. package/dist/Components/ErrorX/index.svelte +0 -58
  77. package/dist/Components/FileInput/index.svelte +0 -146
  78. package/dist/Components/FileInput/index.svelte.js +0 -225
  79. package/dist/Components/Hamburger/index.svelte +0 -99
  80. package/dist/Components/HorizScrollBox/index.svelte +0 -145
  81. package/dist/Components/IconInput/index.svelte +0 -77
  82. package/dist/Components/IconInput/index.svelte.js +0 -259
  83. package/dist/Components/Image/index.svelte +0 -126
  84. package/dist/Components/Image/index.svelte.js +0 -116
  85. package/dist/Components/ImageEditor/Image/CropBox/index.svelte +0 -165
  86. package/dist/Components/ImageEditor/Image/index.svelte +0 -104
  87. package/dist/Components/ImageEditor/Panels/AI/index.svelte +0 -44
  88. package/dist/Components/ImageEditor/Panels/Crop/index.svelte +0 -96
  89. package/dist/Components/ImageEditor/Panels/File/QualityPicker/index.svelte +0 -124
  90. package/dist/Components/ImageEditor/Panels/File/index.svelte +0 -74
  91. package/dist/Components/ImageEditor/Panels/Filters/index.svelte +0 -46
  92. package/dist/Components/ImageEditor/Panels/Resize/index.svelte +0 -58
  93. package/dist/Components/ImageEditor/index.svelte +0 -93
  94. package/dist/Components/ImageEditor/index.svelte.js +0 -1961
  95. package/dist/Components/ImageSlider/index.svelte +0 -124
  96. package/dist/Components/ImageSlider/index.svelte.js +0 -99
  97. package/dist/Components/Json/Nested/index.svelte +0 -157
  98. package/dist/Components/LabeledItem/index.svelte +0 -102
  99. package/dist/Components/Layout/NavBar/FullNav/index.svelte +0 -52
  100. package/dist/Components/Layout/NavBar/NavGuts/index.svelte +0 -87
  101. package/dist/Components/Layout/NavBar/index.svelte +0 -72
  102. package/dist/Components/Layout/index.svelte +0 -149
  103. package/dist/Components/Layout/index.svelte.js +0 -360
  104. package/dist/Components/LoadingWheel/index.svelte +0 -38
  105. package/dist/Components/LocationInput/index.svelte +0 -197
  106. package/dist/Components/LocationInput/index.svelte.js +0 -965
  107. package/dist/Components/Number/index.svelte +0 -47
  108. package/dist/Components/Number/index.svelte.js +0 -151
  109. package/dist/Components/PhoneCountryCode/index.svelte +0 -7
  110. package/dist/Components/PhoneCountryCode/index.svelte.js +0 -260
  111. package/dist/Components/Popover/index.svelte +0 -396
  112. package/dist/Components/Popover/index.svelte.js +0 -319
  113. package/dist/Components/Spacer/index.svelte +0 -41
  114. package/dist/Components/StoragePicker/DisplayFile/index.svelte +0 -15
  115. package/dist/Components/StoragePicker/index.svelte +0 -187
  116. package/dist/Components/StoragePicker/index.svelte.js +0 -592
  117. package/dist/Components/TableAdvanced/ColumnInput/index.svelte +0 -117
  118. package/dist/Components/TableAdvanced/ColumnInput/index.svelte.js +0 -456
  119. package/dist/Components/TableAdvanced/FilterInput/index.svelte +0 -54
  120. package/dist/Components/TableAdvanced/FilterInput/index.svelte.js +0 -247
  121. package/dist/Components/TableAdvanced/Pagination/index.svelte +0 -43
  122. package/dist/Components/TableAdvanced/Pagination/index.svelte.js +0 -97
  123. package/dist/Components/TableAdvanced/SortByInput/index.svelte +0 -72
  124. package/dist/Components/TableAdvanced/SortByInput/index.svelte.js +0 -176
  125. package/dist/Components/Tag/index.svelte +0 -45
  126. package/dist/Components/Tag/index.svelte.js +0 -76
  127. package/dist/Components/TextArrayInput/index.svelte +0 -108
  128. package/dist/Components/TextArrayInput/index.svelte.js +0 -239
  129. package/dist/Components/TextInput/PasswordTooltip/index.svelte +0 -89
  130. package/dist/Components/TimeInput/NumberToggler/index.svelte +0 -34
  131. package/dist/Components/TimeInput/NumberToggler/index.svelte.js +0 -79
  132. package/dist/Components/TimeInput/index.js +0 -702
  133. package/dist/Components/TimeInput/index.svelte +0 -211
  134. package/dist/Components/TimeInput/index.svelte.js +0 -638
  135. package/dist/Components/Tooltip/index.svelte +0 -143
  136. package/dist/Components/TransparentBackground/index.svelte +0 -153
  137. package/dist/Components/TypingDots/index.svelte +0 -84
  138. package/dist/Components/VariablePathInput/index.svelte +0 -63
  139. package/dist/Components/VariablePathInput/index.svelte.js +0 -273
  140. package/dist/Components/XFollow/index.svelte +0 -42
  141. package/dist/Components/YoutubeChannelButton/index.svelte +0 -82
  142. package/dist/Components/YoutubeVideo/index.svelte +0 -73
  143. package/dist/Components/YoutubeVideo/index.svelte.js +0 -54
  144. package/dist/actions/draggable.js +0 -49
  145. package/dist/actions/index.js +0 -24
  146. package/dist/actions/no_spaces.js +0 -33
  147. package/dist/actions/numbers_only.js +0 -26
  148. package/dist/actions/scroll_y.js +0 -28
  149. package/dist/actions/stop_scroll_propagation_y.js +0 -42
  150. package/dist/actions/swipe_handler.js +0 -295
  151. package/dist/client/astc_formatting/index.js +0 -1128
  152. package/dist/client/docs/index.js +0 -7622
  153. package/dist/client/index.js +0 -735
  154. package/dist/client/types/index.js +0 -2812
  155. package/dist/index.js +0 -180
  156. package/dist/style.css +0 -682
@@ -1,977 +0,0 @@
1
- import { create_unique_id, set_closurable, clean_file_name, url_to_file } from "../../client/index.js"
2
- import { create_popover_manager } from "../Popover/index.svelte.js"
3
- import { create_button_manager } from "../Button/index.svelte.js"
4
- import { create_text_input_manager } from "../TextInput/index.svelte.js"
5
- import { create_storage_picker_manager } from "../StoragePicker/index.svelte.js"
6
- import { create_dropdown_manager } from "../Dropdown/index.svelte.js"
7
- import { create_audio_manager } from "../Audio/index.svelte.js"
8
- import alloy_voice_sample from "./samples/alloy-voice-sample.mp3"
9
- import echo_voice_sample from "./samples/echo-voice-sample.mp3"
10
- import fable_voice_sample from "./samples/fable-voice-sample.mp3"
11
- import nova_voice_sample from "./samples/nova-voice-sample.mp3"
12
- import onyx_voice_sample from "./samples/onyx-voice-sample.mp3"
13
- import shimmer_voice_sample from "./samples/shimmer-voice-sample.mp3"
14
-
15
- export function create_audio_editor_manager(config) {
16
- let id = create_unique_id(null, 20)
17
-
18
- const voices = [
19
- {
20
- id: "alloy",
21
- name: "Alloy",
22
- labels: [],
23
- sample: alloy_voice_sample,
24
- },
25
- {
26
- id: "echo",
27
- name: "Echo",
28
- labels: [],
29
- sample: echo_voice_sample,
30
- },
31
- {
32
- id: "fable",
33
- name: "Fable",
34
- labels: [],
35
- sample: fable_voice_sample,
36
- },
37
- {
38
- id: "nova",
39
- name: "Nova",
40
- labels: [],
41
- sample: nova_voice_sample,
42
- },
43
- {
44
- id: "onyx",
45
- name: "Onyx",
46
- labels: [],
47
- sample: onyx_voice_sample,
48
- },
49
- {
50
- id: "shimmer",
51
- name: "Shimmer",
52
- labels: [],
53
- sample: shimmer_voice_sample,
54
- },
55
- ]
56
-
57
- const audio_tags_input_base = {
58
- TIT2: null,
59
- TALB: null,
60
- TPE1: null,
61
- APIC: {
62
- mime: null,
63
- type: {
64
- id: 0,
65
- },
66
- description: null,
67
- imageBuffer: null,
68
- },
69
- TYER: 2024,
70
- USLT: {
71
- language: "eng",
72
- text: null,
73
- },
74
- TLAN: null,
75
- }
76
-
77
- const audio_input_tag_defs = {
78
- TIT2: { display_order: 1, name: "Title", example: "Audio Title" },
79
- TALB: { display_order: 2, name: "Album Title", example: "Album Title" },
80
- APIC: {
81
- display_order: 3,
82
- name: "Attached Picture",
83
- example: "{ mime: 'image/jpeg', type: { id: 0 }, description: null, imageBuffer: null }",
84
- },
85
- TPE1: {
86
- display_order: 4,
87
- name: "Artist",
88
- example: "Artist",
89
- },
90
- USLT: {
91
- display_order: 5,
92
- name: "Unsynchronised Lyrics",
93
- example: "{ text: 'Lyrics of the audio', language: 'eng' }",
94
- },
95
- TYER: { display_order: 6, name: "Release Year", example: "2024" },
96
- TLAN: { display_order: 7, name: "Language", example: "eng" },
97
- TIT3: { display_order: 8, name: "Subtitle", example: "Audio Subtitle" },
98
- TPE2: { display_order: 9, name: "Album Artist", example: "Album Artist" },
99
- TCOM: {
100
- display_order: 10,
101
- name: "Composers",
102
- example: "[ 'Composer 1', 'Composer 2' ]",
103
- },
104
- TCON: {
105
- display_order: 11,
106
- name: "Genres",
107
- example: "[ 'Genre 1', 'Genre 2' ]",
108
- },
109
- TIT1: {
110
- display_order: 12,
111
- name: "Content Group Description",
112
- example: "Content Description",
113
- },
114
- TPE3: {
115
- display_order: 13,
116
- name: "Conductor/Performer Refinement",
117
- example: "Performer Name",
118
- },
119
- TPE4: {
120
- display_order: 14,
121
- name: "Interpreted, Remixed, or Otherwise Modified By",
122
- example: "Remixer Name",
123
- },
124
- TRCK: { display_order: 15, name: "Track Number", example: "'5' or '5/10'" },
125
- TPOS: { display_order: 16, name: "Disc Number", example: "'1' or '1/3'" },
126
- TPUB: {
127
- display_order: 17,
128
- name: "Label Name",
129
- example: "Record Label Name",
130
- },
131
- TKEY: { display_order: 18, name: "Initial Key", example: "A#m" },
132
- TMED: { display_order: 19, name: "Media Type", example: "Digital Media" },
133
- TDAT: {
134
- display_order: 20,
135
- name: "Release Date",
136
- example: "0101 (for 1st January)",
137
- },
138
- TSRC: {
139
- display_order: 21,
140
- name: "ISRC",
141
- example: "International Standard Recording Code",
142
- },
143
- TCOP: {
144
- display_order: 22,
145
- name: "Copyright Message",
146
- example: "© 2024 Record Label",
147
- },
148
- TEXT: {
149
- display_order: 23,
150
- name: "Lyricist/Text Writer",
151
- example: "Lyricist Name",
152
- },
153
- WCOM: {
154
- display_order: 24,
155
- name: "Commercial Information",
156
- example: "http://website.com",
157
- },
158
- WCOP: {
159
- display_order: 25,
160
- name: "Legal Information",
161
- example: "http://website.com/legal",
162
- },
163
- WOAF: {
164
- display_order: 26,
165
- name: "Official Audio File Webpage",
166
- example: "http://website.com/audio_file",
167
- },
168
- WOAR: {
169
- display_order: 27,
170
- name: "Official Artist Webpage",
171
- example: "http://website.com/artist",
172
- },
173
- WOAS: {
174
- display_order: 28,
175
- name: "Official Audio Source Webpage",
176
- example: "http://website.com/audiosource",
177
- },
178
- WORS: {
179
- display_order: 29,
180
- name: "Official Internet Radio Station Homepage",
181
- example: "http://website.com/radio",
182
- },
183
- WPAY: {
184
- display_order: 30,
185
- name: "Payment",
186
- example: "http://website.com/payment",
187
- },
188
- WPUB: {
189
- display_order: 31,
190
- name: "Publisher’s Official Webpage",
191
- example: "http://website.com/publisher",
192
- },
193
- TLEN: {
194
- display_order: 32,
195
- name: "Audio Duration",
196
- example: "230000 (for 3 minutes and 50 seconds)",
197
- },
198
- TBPM: { display_order: 33, name: "BPM", example: "120" },
199
- COMM: {
200
- display_order: 34,
201
- name: "Comments",
202
- example: "{ description: 'Comment', text: 'This is a comment', language: 'eng' }",
203
- },
204
- IPLS: {
205
- display_order: 35,
206
- name: "Involved People List",
207
- example: "[ ['role', 'name'], ['role', 'name'] ]",
208
- },
209
- SYLT: {
210
- display_order: 36,
211
- name: "Synchronised Lyrics",
212
- example:
213
- "{ type: 1, text: [ ['lyrics here', 0], ['lyrics here', 3500] ], timestampFormat: 2, language: 'eng', description: 'description' }",
214
- },
215
- TXXX: {
216
- display_order: 37,
217
- name: "Additional Defined Text",
218
- example: "{ description: 'description here', value: 'value here' }",
219
- },
220
- PRIV: {
221
- display_order: 38,
222
- name: "Private Frame",
223
- example: "{ id: 'identifier', data: dataArrayBuffer }",
224
- },
225
- }
226
-
227
- const lang_options = [
228
- { key: "eng", name: "English" },
229
- { key: "spa", name: "Spanish" },
230
- { key: "fra", name: "French" },
231
- { key: "deu", name: "German" },
232
- { key: "rus", name: "Russian" },
233
- { key: "ita", name: "Italian" },
234
- { key: "por", name: "Portuguese" },
235
- { key: "jpn", name: "Japanese" },
236
- { key: "zho", name: "Chinese" },
237
- { key: "ara", name: "Arabic" },
238
- { key: "hin", name: "Hindi" },
239
- { key: "kor", name: "Korean" },
240
- { key: "tur", name: "Turkish" },
241
- { key: "swe", name: "Swedish" },
242
- { key: "nld", name: "Dutch" },
243
- { key: "pol", name: "Polish" },
244
- { key: "dan", name: "Danish" },
245
- { key: "fin", name: "Finnish" },
246
- { key: "nor", name: "Norwegian" },
247
- { key: "heb", name: "Hebrew" },
248
- ]
249
-
250
- let is_loading_generate_audio = $state(false)
251
- let error_message = $state(null)
252
- let success_message = $state(null)
253
- let is_text_to_audio = $state(false)
254
-
255
- let is_popover = $state(true)
256
- let popover_manager = $state(null)
257
- let clear_button_manager = $state(null)
258
- let is_alt_content_shown = $state(false)
259
- let seed_from_input_popover_manager = $state(null)
260
- let seed_from_input_popover_button_manager = $state(null)
261
- let seed_audio_storage_picker_manager = $state(null)
262
- let download_audio_file_button_manager = $state(null)
263
- let generate_audio_changes_button_manager = $state(null)
264
- let finish_button_manager = $state(null)
265
- let use_text_to_audio_button_manager = $state(null)
266
- let select_file_from_storage_button_manager = $state(null)
267
- let use_mp3_file_button_manager = $state(null)
268
- let text_to_audio_text_input_manager = $state(null)
269
- let audio_storage_picker_manager = $state(null)
270
- let file_name_text_input_manager = $state(null)
271
- let title_text_input_manager = $state(null)
272
- let album_title_text_input_manager = $state(null)
273
- let image_storage_picker_manager = $state(null)
274
- let image_description_text_input_manager = $state(null)
275
- let artist_text_input_manager = $state(null)
276
- let lyrics_text_input_manager = $state(null)
277
- let release_year_text_input_manager = $state(null)
278
- let language_dropdown_manager = $state(null)
279
- let additional_tags_input_prepped = $state(null)
280
- let generated_audio_file_obj = $state(null)
281
- let voice_options = $state(null)
282
- let voice_id = $state(null)
283
- let edit_voice_popover_manager = $state(null)
284
- let edit_voice_button_manager = $state(null)
285
- let audio_manager = $state(null)
286
- let clear_generated_audio_button_manager = $state(null)
287
- let additional_metatags_dropdown_manager = $state(null)
288
-
289
- // actually we'll prob do this server stuff diff like call config?.fetch_audio_read_tags() and handle in parent
290
- let api_prefix = $derived(set_closurable(config?.api_prefix, "https://www.contibase.com/api/v1"))
291
- let storage_src = $derived(
292
- set_closurable(config?.storage_src, "https://www.contibase.com/api/v1/storage/{storage_id}")
293
- )
294
- let fetch_path_audio_read_tags = $derived(
295
- set_closurable(config?.fetch_path_audio_read_tags, `${api_prefix}/tools/audio/read_tags`)
296
- )
297
- let fetch_path_audio_post = $derived(set_closurable(config?.fetch_path_audio_post, `${api_prefix}/tools/audio`))
298
- let file_prefix = $derived(set_closurable(config?.file_prefix, `${api_prefix}/storage/`))
299
-
300
- let account = $derived(set_closurable(config?.account, null))
301
- let is_disabled = $derived(set_closurable(config?.is_disabled, false))
302
- let storage = $derived(set_closurable(config?.storage, null))
303
- let locally_uploaded_files = $derived(set_closurable(config?.locally_uploaded_files, null))
304
-
305
- let file_name_derived = $derived(`${clean_file_name(file_name_text_input_manager?.val)}.mp3`)
306
- let additional_tag_keys_ordered = $derived(
307
- Object.keys(additional_tags_input_prepped || {})
308
- .map((key) => ({ key, display_order: audio_input_tag_defs[key]?.display_order }))
309
- .sort((a, b) => a.display_order - b.display_order)
310
- .map((item) => item.key)
311
- )
312
-
313
- let text_to_audio_time_in_minutes = $derived(calc_time_in_minutes(text_to_audio_text_input_manager?.val))
314
-
315
- function calc_time_in_minutes(text) {
316
- if (!text || text.length < 20) {
317
- return 0
318
- }
319
- const average_speed = 155
320
- const word_count = text.split(" ").length
321
- return Math.ceil(word_count / average_speed)
322
- }
323
-
324
- async function seed(input) {
325
- if (!input) {
326
- file_name_text_input_manager.set_val(null)
327
- text_to_audio_text_input_manager.set_val(null)
328
- audio_storage_picker_manager.set_val(null)
329
- title_text_input_manager.set_val(null)
330
- album_title_text_input_manager.set_val(null)
331
- image_storage_picker_manager.set_val(null)
332
- image_description_text_input_manager.set_val(null)
333
- artist_text_input_manager.set_val(null)
334
- lyrics_text_input_manager.set_val(null)
335
- release_year_text_input_manager.set_val(null)
336
- language_dropdown_manager.set_val(null)
337
- additional_tags_input_prepped = null
338
- return
339
- }
340
- if (!input?.file && input?.id) {
341
- let file_src = `${file_prefix}${input?.id}`
342
- input.file = await url_to_file(file_src, file_name_derived)
343
- }
344
- is_text_to_audio = false
345
- text_to_audio_text_input_manager.set_val(null)
346
- if (input.hasOwnProperty("is_text_to_audio")) {
347
- is_text_to_audio = input?.is_text_to_audio
348
- text_to_audio_text_input_manager.set_val(input?.text_to_audio_input ?? null)
349
- voice_id = input?.voice_id ?? null
350
- }
351
- let cleaned_file_name = clean_file_name(input?.file_name ?? input?.file?.name)
352
- let audio_metadata = null
353
- if (input?.file) {
354
- audio_metadata = await get_audio_metadata(input?.file)
355
- audio_storage_picker_manager.set_val(input)
356
- }
357
- file_name_text_input_manager.set_val(cleaned_file_name)
358
- title_text_input_manager.set_val(input?.title ?? input?.tags?.TIT2 ?? audio_metadata?.tags?.TIT2 ?? null)
359
- album_title_text_input_manager.set_val(
360
- input?.album_title ?? input?.tags?.TALB ?? audio_metadata?.tags?.TALB ?? null
361
- )
362
- image_storage_picker_manager.set_val({ file_name: "cover", file: input?.image_file ?? audio_metadata?.image?.file })
363
- image_description_text_input_manager.set_val(
364
- input?.image_description ?? input?.tags?.APIC?.description ?? audio_metadata?.tags?.APIC?.description ?? null
365
- )
366
- artist_text_input_manager.set_val(input?.artist ?? input?.tags?.TPE1 ?? audio_metadata?.tags?.TPE1 ?? null)
367
- lyrics_text_input_manager.set_val(
368
- input?.lyrics ?? input?.tags?.USLT?.text ?? audio_metadata?.tags?.USLT?.text ?? null
369
- )
370
- release_year_text_input_manager.set_val(
371
- input?.release_year ?? input?.tags?.TYER ?? audio_metadata?.tags?.TYER ?? null
372
- )
373
- language_dropdown_manager.set_val(input?.language ?? input?.tags?.TLAN ?? audio_metadata?.tags?.TLAN ?? null)
374
- const tags_input = input?.tags ?? audio_metadata?.tags
375
- let additonal_tag_keys = []
376
- if (
377
- tags_input &&
378
- typeof tags_input == "object" &&
379
- !Array.isArray(tags_input) &&
380
- Object.keys(tags_input).length > 0
381
- ) {
382
- for (let key of Object.keys(tags_input)) {
383
- if (!audio_tags_input_base.hasOwnProperty(key)) {
384
- additonal_tag_keys.push(key)
385
- }
386
- }
387
- }
388
- additional_metatags_dropdown_manager.set_val(additonal_tag_keys)
389
- set_additional_tags_input_prepped(tags_input)
390
- popover_manager.open()
391
- seed_from_input_popover_manager.close()
392
- }
393
-
394
- function set_additional_tags_input_prepped(tags_input) {
395
- let additional_tags_input_prepped_loc = {}
396
- if (
397
- tags_input &&
398
- typeof tags_input == "object" &&
399
- !Array.isArray(tags_input) &&
400
- Object.keys(tags_input).length > 0
401
- ) {
402
- for (let [key, val] of Object.entries(tags_input)) {
403
- if (!audio_tags_input_base.hasOwnProperty(key)) {
404
- let tag_input_prepped_loc = {
405
- key,
406
- name: audio_input_tag_defs[key]?.name,
407
- display_order: audio_input_tag_defs[key]?.display_order,
408
- }
409
- tag_input_prepped_loc.text_input_manager = create_text_input_manager({
410
- val: val,
411
- is_disabled: () => is_loading_generate_audio || is_disabled,
412
- placeholder: () => audio_input_tag_defs[key]?.example,
413
- })
414
- additional_tags_input_prepped_loc[key] = tag_input_prepped_loc
415
- }
416
- }
417
- }
418
- additional_tags_input_prepped = additional_tags_input_prepped_loc
419
- }
420
-
421
- function clear() {
422
- seed(null)
423
- }
424
-
425
- async function get_audio_metadata(audio_file) {
426
- try {
427
- let form_data = new FormData()
428
- form_data.append("file", audio_file)
429
- let response = await fetch(fetch_path_audio_read_tags, {
430
- method: "POST",
431
- body: form_data,
432
- })
433
- if (!response.ok) {
434
- throw new Error(await response.text())
435
- }
436
- let res_body = await response.json()
437
- let res = {
438
- tags: null,
439
- image: null,
440
- }
441
- if (res_body?.raw) {
442
- res.tags = { ...audio_tags_input_base, ...res_body?.raw }
443
- if (res_body?.raw?.["APIC"]?.imageBuffer) {
444
- let buffer_data = res_body?.raw?.["APIC"]?.imageBuffer.data
445
- let uint_8_array = new Uint8Array(buffer_data)
446
- let blob = new Blob([uint_8_array], { type: res_body?.raw?.["APIC"]?.mime })
447
- res.image = {
448
- file: blob,
449
- type: res_body?.raw?.["APIC"]?.mime,
450
- src: URL.createObjectURL(blob),
451
- size_kb: Math.ceil(blob.size / 1024),
452
- description: res_body?.raw?.["APIC"]?.description,
453
- }
454
- }
455
- }
456
- return res
457
- } catch (err) {
458
- console.error(err)
459
- }
460
- }
461
-
462
- function set_text_to_audio_input(val) {
463
- text_to_audio_text_input_manager.set_val(val)
464
- }
465
-
466
- function set_is_text_to_audio(is_text_to_audio_input) {
467
- is_text_to_audio = is_text_to_audio_input
468
- }
469
-
470
- async function resize_and_convert_image(src, max_width, max_height, output_format) {
471
- return new Promise((resolve, reject) => {
472
- let img = new Image()
473
- img.crossOrigin = "anonymous"
474
- img.onload = () => {
475
- let canvas = document.createElement("canvas")
476
- let ctx = canvas.getContext("2d")
477
- let aspect_ratio = img.width / img.height
478
- let new_width = max_width
479
- let new_height = max_height
480
- if (new_width / new_height > aspect_ratio) new_width = new_height * aspect_ratio
481
- else new_height = new_width / aspect_ratio
482
- canvas.width = new_width
483
- canvas.height = new_height
484
- ctx.drawImage(img, 0, 0, new_width, new_height)
485
- resolve(canvas.toDataURL(output_format))
486
- }
487
- img.onerror = reject
488
- img.src = src
489
- })
490
- }
491
-
492
- async function generate_new_audio() {
493
- try {
494
- is_loading_generate_audio = true
495
- error_message = null
496
- success_message = null
497
- let form_data = new FormData()
498
- if (account?.id) {
499
- form_data.append("account_id", account?.id)
500
- }
501
- let tags_input = {
502
- TIT2: title_text_input_manager?.val ?? null,
503
- TALB: album_title_text_input_manager?.val ?? null,
504
- TPE1: artist_text_input_manager?.val ?? null,
505
- APIC: {
506
- mime: null,
507
- type: {
508
- id: 0,
509
- },
510
- description: image_description_text_input_manager?.val ?? null,
511
- imageBuffer: null,
512
- },
513
- TYER: release_year_text_input_manager?.val ?? null,
514
- USLT: {
515
- language: language_dropdown_manager?.val ?? null,
516
- text: lyrics_text_input_manager?.val ?? null,
517
- },
518
- TLAN: language_dropdown_manager?.val ?? null,
519
- }
520
- if (Object.keys(additional_tags_input_prepped || {}).length > 0) {
521
- for (let [key, val] of Object.entries(additional_tags_input_prepped || {})) {
522
- if (audio_input_tag_defs.hasOwnProperty(key)) {
523
- tags_input[key] = val?.text_input_manager?.val
524
- }
525
- }
526
- }
527
- form_data.append("tags", JSON.stringify(tags_input))
528
- form_data.append("file_name", file_name_text_input_manager?.val ?? null)
529
- form_data.append("is_text_to_audio", is_text_to_audio)
530
- if (is_text_to_audio) {
531
- form_data.append("text_to_audio_input", text_to_audio_text_input_manager?.val)
532
- form_data.append("voice_id", voice_id ?? null)
533
- } else {
534
- form_data.append("audio", audio_storage_picker_manager?.val?.file)
535
- }
536
- console.log("image_storage_picker_manager?.val", image_storage_picker_manager?.val)
537
- if (image_storage_picker_manager?.val) {
538
- let image_src = null
539
- if (image_storage_picker_manager?.val?.file) {
540
- image_src = URL.createObjectURL(image_storage_picker_manager?.val?.file)
541
- } else if (image_storage_picker_manager?.val?.id) {
542
- image_src = storage_src.replace("{storage_id}", image_storage_picker_manager?.val?.id)
543
- console.log("image_src_replace", image_src)
544
- }
545
- console.log("image_src", image_src)
546
- const sized_cover_base_64 = await resize_and_convert_image(image_src, 1000, 1000, "image/png")
547
- console.log("sized_cover_base_64", sized_cover_base_64)
548
- let sized_cover_file = await url_to_file(sized_cover_base_64, file_name_derived)
549
- console.log("sized_cover_file", sized_cover_file)
550
- form_data.append("image", sized_cover_file)
551
- }
552
- let response = await fetch(fetch_path_audio_post, {
553
- method: "POST",
554
- body: form_data,
555
- })
556
- console.log("fetch_audio_post_res", response)
557
- if (!response.ok) {
558
- let error_mes = await response.text()
559
- is_loading_generate_audio = false
560
- error_message = error_mes ?? "Error making audio changes."
561
- return
562
- }
563
- let res_body = await response.json()
564
- console.log("res_body1", res_body)
565
- // add to new file to client side temporary_storage data
566
- let new_audio_src = `${file_prefix}${res_body?.id}`
567
- let new_audio_file = await url_to_file(new_audio_src, file_name_derived)
568
- console.log("new_audio_file", new_audio_file)
569
- is_loading_generate_audio = false
570
- is_alt_content_shown = true
571
- setTimeout(() => {
572
- is_alt_content_shown = false
573
- }, 1800)
574
- generated_audio_file_obj = {
575
- file: new_audio_file,
576
- type: new_audio_file?.type,
577
- src: new_audio_src,
578
- file_name: new_audio_file?.name,
579
- size_kb: Math.round(new_audio_file?.size * 0.001),
580
- }
581
- seed({ file: new_audio_file })
582
- // optional: need third-party library to extract cover image from metadata clientside tbd. Already have working with server request but try and avoid that
583
- audio_manager = create_audio_manager({
584
- src: new_audio_src,
585
- })
586
- } catch (err) {
587
- is_loading_generate_audio = false
588
- error_message = err?.message ?? JSON.stringify(err)
589
- }
590
- }
591
-
592
- async function download_audio_file() {
593
- // file_name_tbd
594
- let response = await fetch(generated_audio_file_obj?.src)
595
- let blob = await response.blob()
596
- let url = URL.createObjectURL(blob)
597
- let link = document.createElement("a")
598
- link.href = url
599
- link.download = file_name_derived
600
- document.body.appendChild(link)
601
- link.click()
602
- document.body.removeChild(link)
603
- URL.revokeObjectURL(url)
604
- }
605
-
606
- function finish() {
607
- if (typeof config?.on_finish == "function") {
608
- config?.on_finish(generated_audio_file_obj)
609
- }
610
- popover_manager.close()
611
- }
612
-
613
- function init(config) {
614
- is_popover = config?.is_popover ?? true
615
- popover_manager = create_popover_manager({
616
- min_width: 320,
617
- target_width: 900,
618
- min_height: 320,
619
- target_height: 700,
620
- header: "Edit Audio",
621
- type: "center",
622
- success_message: "Successfully Generated Audio File",
623
- is_alt_content_shown: () => is_alt_content_shown,
624
- })
625
- clear_button_manager = create_button_manager({
626
- type: "outlined",
627
- text: "Clear",
628
- is_compressed: true,
629
- on_click: () => seed(),
630
- })
631
- download_audio_file_button_manager = create_button_manager({
632
- type: "outlined",
633
- is_disabled: () => is_disabled,
634
- text: "Download",
635
- support_icon: "download",
636
- is_compressed: true,
637
- on_click: () => download_audio_file(),
638
- })
639
- generate_audio_changes_button_manager = create_button_manager({
640
- text: "Generate Audio Changes",
641
- is_compressed: true,
642
- is_loading: () => is_loading_generate_audio,
643
- is_disabled: () =>
644
- (!is_text_to_audio && !audio_storage_picker_manager?.val) ||
645
- (is_text_to_audio && !text_to_audio_text_input_manager?.val),
646
- on_click: () => generate_new_audio(),
647
- })
648
- finish_button_manager = create_button_manager({
649
- type: "outlined",
650
- text: "Finish",
651
- support_icon: "check",
652
- is_compressed: true,
653
- is_disabled: () => is_disabled,
654
- on_click: () => finish(),
655
- })
656
- use_text_to_audio_button_manager = create_button_manager({
657
- type: "outlined",
658
- support_icon: "speech",
659
- text: "Use Text to Audio",
660
- mr: 1,
661
- is_compressed: true,
662
- is_disabled: () => is_loading_generate_audio,
663
- on_click: () => set_is_text_to_audio(true),
664
- })
665
- audio_storage_picker_manager = create_storage_picker_manager({
666
- storage: storage,
667
- default_folder_path: config?.storage_default_folder_path,
668
- locally_uploaded_files: () => locally_uploaded_files,
669
- storage_src: () => storage_src,
670
- accept: ["audio/mpeg"],
671
- is_show_button: false,
672
- is_multiselect: false,
673
- mb: 1,
674
- is_disabled: () => is_loading_generate_audio || is_disabled,
675
- })
676
- file_name_text_input_manager = create_text_input_manager({
677
- placeholder: "some_file_name",
678
- is_disabled: () => is_loading_generate_audio || is_disabled,
679
- })
680
- title_text_input_manager = create_text_input_manager({
681
- placeholder: audio_input_tag_defs?.TIT2?.example,
682
- is_disabled: () => is_loading_generate_audio || is_disabled,
683
- })
684
- album_title_text_input_manager = create_text_input_manager({
685
- placeholder: audio_input_tag_defs?.TALB?.example,
686
- is_disabled: () => is_loading_generate_audio || is_disabled,
687
- })
688
- image_storage_picker_manager = create_storage_picker_manager({
689
- storage: storage,
690
- default_folder_path: config?.storage_default_folder_path,
691
- locally_uploaded_files: () => locally_uploaded_files,
692
- accept: ["image/png", "image/jpeg", "image/webp", "image/gif"],
693
- is_multiselect: false,
694
- mb: 1,
695
- is_disabled: () => is_loading_generate_audio || is_disabled,
696
- })
697
- image_description_text_input_manager = create_text_input_manager({
698
- placeholder: "Image Description",
699
- mt: 1,
700
- is_disabled: () => is_loading_generate_audio || is_disabled,
701
- })
702
- artist_text_input_manager = create_text_input_manager({
703
- placeholder: audio_input_tag_defs?.TPE1?.example,
704
- is_disabled: () => is_loading_generate_audio || is_disabled,
705
- })
706
- lyrics_text_input_manager = create_text_input_manager({
707
- type: "text_area",
708
- placeholder: "Lyrics of the audio",
709
- is_disabled: () => is_loading_generate_audio || is_disabled,
710
- })
711
- release_year_text_input_manager = create_text_input_manager({
712
- val: null,
713
- type: "number",
714
- max: 2100,
715
- placeholder: audio_input_tag_defs?.TYER?.example,
716
- is_disabled: () => is_loading_generate_audio || is_disabled,
717
- })
718
- language_dropdown_manager = create_dropdown_manager({
719
- button_type: "outlined",
720
- is_button_compressed: true,
721
- is_clearable: true,
722
- options: lang_options,
723
- is_disabled: () => is_loading_generate_audio || is_disabled,
724
- })
725
- select_file_from_storage_button_manager = create_button_manager({
726
- type: "outlined",
727
- is_compressed: true,
728
- text: "Select Audio File",
729
- is_disabled: () => is_loading_generate_audio || is_disabled,
730
- popover_target: () => `popover_${audio_storage_picker_manager?.popover_manager?.id}`,
731
- })
732
- use_mp3_file_button_manager = create_button_manager({
733
- type: "outlined",
734
- support_icon: "file",
735
- text: "Use mp3 File",
736
- mb: 0.5,
737
- is_disabled: () => is_loading_generate_audio || is_disabled,
738
- is_compressed: true,
739
- on_click: () => set_is_text_to_audio(false),
740
- })
741
- text_to_audio_text_input_manager = create_text_input_manager({
742
- type: "text_area",
743
- rows: 7,
744
- mt: 0.5,
745
- is_disabled: () => is_loading_generate_audio || is_disabled,
746
- placeholder: "Text to convert to audio",
747
- })
748
- file_name_text_input_manager = create_text_input_manager({
749
- placeholder: "file_name",
750
- val: null,
751
- is_disabled: () => is_loading_generate_audio || is_disabled,
752
- })
753
- seed_from_input_popover_manager = create_popover_manager({
754
- header: "Seed Audio",
755
- type: "center",
756
- target_width: 400,
757
- target_height: 300,
758
- anchor_id: () => `button_${seed_from_input_popover_button_manager?.id}`,
759
- })
760
- seed_from_input_popover_button_manager = create_button_manager({
761
- type: "outlined",
762
- text: "Seed from file",
763
- is_compressed: true,
764
- is_disabled: () => is_loading_generate_audio || is_disabled,
765
- popover_target: () => `popover_${seed_from_input_popover_manager?.id}`,
766
- })
767
- seed_audio_storage_picker_manager = create_storage_picker_manager({
768
- storage: storage,
769
- default_folder_path: config?.storage_default_folder_path,
770
- locally_uploaded_files: () => locally_uploaded_files,
771
- accept: ["audio/mpeg"],
772
- is_multiselect: false,
773
- is_disabled: () => is_loading_generate_audio || is_disabled,
774
- on_finish: (input) => {
775
- seed(input)
776
- seed_audio_storage_picker_manager.set_val(null)
777
- },
778
- })
779
- audio_manager = null
780
- clear_generated_audio_button_manager = create_button_manager({
781
- type: "outlined",
782
- text: "Clear",
783
- is_compressed: true,
784
- on_click: () => (generated_audio_file_obj = null),
785
- })
786
- edit_voice_popover_manager = create_popover_manager({
787
- type: "center",
788
- header: "Select Voice",
789
- target_width: 500,
790
- target_height: 400,
791
- })
792
- edit_voice_button_manager = create_button_manager({
793
- type: "outlined",
794
- text: "Edit",
795
- support_icon: "edit",
796
- is_compressed: true,
797
- popover_target: () => `popover_${edit_voice_popover_manager?.id}`,
798
- })
799
- let voice_options_loc = []
800
- for (let voice of voices) {
801
- voice_options_loc.push({
802
- ...voice,
803
- audio_manager: create_audio_manager({
804
- ui_type: "short",
805
- src: voice?.sample,
806
- }),
807
- select_button_manager: create_button_manager({
808
- type: "outlined",
809
- text: "Select",
810
- selected_type: () => (voice?.id == voice_id ? "selected" : null),
811
- on_click: () => {
812
- voice_id = voice_id == voice?.id ? null : voice?.id
813
- edit_voice_popover_manager.close()
814
- },
815
- }),
816
- })
817
- }
818
- voice_options = voice_options_loc
819
- const additional_metatag_options = Object.keys(audio_input_tag_defs || {})
820
- .map((h) => ({ key: h, name: audio_input_tag_defs?.[h]?.name }))
821
- .filter((h) => !audio_tags_input_base.hasOwnProperty(h?.key))
822
- additional_metatags_dropdown_manager = create_dropdown_manager({
823
- val: [],
824
- is_clearable: true,
825
- is_multiselect: true,
826
- is_button_compressed: true,
827
- options: additional_metatag_options,
828
- on_change: (input) => {
829
- let tags_input = {}
830
- if (Array.isArray(input) && input.length > 0) {
831
- for (let key of input) {
832
- tags_input[key] = additional_tags_input_prepped?.[key]?.text_input_manager?.val ?? null
833
- }
834
- }
835
- set_additional_tags_input_prepped(tags_input)
836
- },
837
- })
838
- }
839
-
840
- init(config)
841
-
842
- return {
843
- id,
844
- get account() {
845
- return account
846
- },
847
- get is_text_to_audio() {
848
- return is_text_to_audio
849
- },
850
- get error_message() {
851
- return error_message
852
- },
853
- get success_message() {
854
- return success_message
855
- },
856
- get generate_audio_changes_button_manager() {
857
- return generate_audio_changes_button_manager
858
- },
859
- get use_text_to_audio_button_manager() {
860
- return use_text_to_audio_button_manager
861
- },
862
- get select_file_from_storage_button_manager() {
863
- return select_file_from_storage_button_manager
864
- },
865
- get use_mp3_file_button_manager() {
866
- return use_mp3_file_button_manager
867
- },
868
- get text_to_audio_text_input_manager() {
869
- return text_to_audio_text_input_manager
870
- },
871
- get file_name_text_input_manager() {
872
- return file_name_text_input_manager
873
- },
874
- get additional_tags_input_prepped() {
875
- return additional_tags_input_prepped
876
- },
877
- get additional_tag_keys_ordered() {
878
- return additional_tag_keys_ordered
879
- },
880
- get audio_storage_picker_manager() {
881
- return audio_storage_picker_manager
882
- },
883
- get file_name_text_input_manager() {
884
- return file_name_text_input_manager
885
- },
886
- get title_text_input_manager() {
887
- return title_text_input_manager
888
- },
889
- get album_title_text_input_manager() {
890
- return album_title_text_input_manager
891
- },
892
- get image_storage_picker_manager() {
893
- return image_storage_picker_manager
894
- },
895
- get image_description_text_input_manager() {
896
- return image_description_text_input_manager
897
- },
898
- get artist_text_input_manager() {
899
- return artist_text_input_manager
900
- },
901
- get lyrics_text_input_manager() {
902
- return lyrics_text_input_manager
903
- },
904
- get release_year_text_input_manager() {
905
- return release_year_text_input_manager
906
- },
907
- get language_dropdown_manager() {
908
- return language_dropdown_manager
909
- },
910
- get is_popover() {
911
- return is_popover
912
- },
913
- get popover_manager() {
914
- return popover_manager
915
- },
916
- get text_to_audio_time_in_minutes() {
917
- return text_to_audio_time_in_minutes
918
- },
919
- get voice_options() {
920
- return voice_options
921
- },
922
- get voice_id() {
923
- return voice_id
924
- },
925
- get edit_voice_popover_manager() {
926
- return edit_voice_popover_manager
927
- },
928
- get edit_voice_button_manager() {
929
- return edit_voice_button_manager
930
- },
931
- get seed_from_input_popover_manager() {
932
- return seed_from_input_popover_manager
933
- },
934
- get seed_from_input_popover_button_manager() {
935
- return seed_from_input_popover_button_manager
936
- },
937
- get seed_audio_storage_picker_manager() {
938
- return seed_audio_storage_picker_manager
939
- },
940
- get is_loading_generate_audio() {
941
- return is_loading_generate_audio
942
- },
943
- get generated_audio_file_obj() {
944
- return generated_audio_file_obj
945
- },
946
- get audio_manager() {
947
- return audio_manager
948
- },
949
- get clear_generated_audio_button_manager() {
950
- return clear_generated_audio_button_manager
951
- },
952
- get download_audio_file_button_manager() {
953
- return download_audio_file_button_manager
954
- },
955
- get clear_button_manager() {
956
- return clear_button_manager
957
- },
958
- get finish_button_manager() {
959
- return finish_button_manager
960
- },
961
- get additional_metatags_dropdown_manager() {
962
- return additional_metatags_dropdown_manager
963
- },
964
- audio_input_tag_defs,
965
- lang_options,
966
- init,
967
- seed,
968
- get_audio_metadata,
969
- resize_and_convert_image,
970
- set_text_to_audio_input,
971
- generate_new_audio,
972
- download_audio_file,
973
- set_is_text_to_audio,
974
- clear,
975
- finish,
976
- }
977
- }