sveltekit-ui 1.1.17 → 1.1.19

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/dist/Components/Alert/index.svelte +88 -0
  2. package/dist/Components/Alert/index.svelte.js +101 -0
  3. package/dist/Components/ArrowToggle/index.svelte +62 -0
  4. package/dist/Components/Attachment/index.svelte +77 -0
  5. package/dist/Components/Attachment/index.svelte.js +119 -0
  6. package/dist/Components/Audio/index.svelte +193 -0
  7. package/dist/Components/Audio/index.svelte.js +463 -0
  8. package/dist/Components/AudioEditor/index.svelte +252 -0
  9. package/dist/Components/AudioEditor/index.svelte.js +977 -0
  10. package/dist/Components/AudioEditor/samples/alloy-voice-sample.mp3 +0 -0
  11. package/dist/Components/AudioEditor/samples/echo-voice-sample.mp3 +0 -0
  12. package/dist/Components/AudioEditor/samples/fable-voice-sample.mp3 +0 -0
  13. package/dist/Components/AudioEditor/samples/nova-voice-sample.mp3 +0 -0
  14. package/dist/Components/AudioEditor/samples/onyx-voice-sample.mp3 +0 -0
  15. package/dist/Components/AudioEditor/samples/shimmer-voice-sample.mp3 +0 -0
  16. package/dist/Components/AuthCodeInput/index.svelte +85 -0
  17. package/dist/Components/AuthCodeInput/index.svelte.js +95 -0
  18. package/dist/Components/Breadcrumbs/index.svelte +27 -0
  19. package/dist/Components/Breadcrumbs/index.svelte.js +88 -0
  20. package/dist/Components/Button/index.svelte +721 -0
  21. package/dist/Components/Button/index.svelte.js +375 -0
  22. package/dist/Components/Chart/Klines/index.svelte +87 -0
  23. package/dist/Components/Chart/index.svelte +226 -0
  24. package/dist/Components/Chart/index.svelte.js +1099 -0
  25. package/dist/Components/ChartInput/DisplayNav/Klines/index.svelte +150 -0
  26. package/dist/Components/ChartInput/DisplayNav/Lines/index.svelte +45 -0
  27. package/dist/Components/ChartInput/DisplayNav/index.svelte +297 -0
  28. package/dist/Components/ChartInput/EditPanel/index.svelte +155 -0
  29. package/dist/Components/ChartInput/index.svelte +21 -0
  30. package/dist/Components/ChartInput/index.svelte.js +671 -0
  31. package/dist/Components/Checkbox/index.svelte +411 -0
  32. package/dist/Components/Checkbox/index.svelte.js +178 -0
  33. package/dist/Components/Code/index.svelte +23 -0
  34. package/dist/Components/Code/index.svelte.js +33 -0
  35. package/dist/Components/Color/index.svelte +51 -0
  36. package/dist/Components/Color/index.svelte.js +31 -0
  37. package/dist/Components/ColorInput/ChromaPicker/index.svelte +50 -0
  38. package/dist/Components/ColorInput/ColorPalette/index.svelte +62 -0
  39. package/dist/Components/ColorInput/OpacityPicker/index.svelte +68 -0
  40. package/dist/Components/ColorInput/ShowcasePicker/index.svelte +136 -0
  41. package/dist/Components/ColorInput/index.svelte +70 -0
  42. package/dist/Components/ColorInput/index.svelte.js +386 -0
  43. package/dist/Components/ConditionsInput/index.svelte +46 -0
  44. package/dist/Components/ConditionsInput/index.svelte.js +201 -0
  45. package/dist/Components/Confetti/index.svelte +98 -0
  46. package/dist/Components/Confetti/index.svelte.js +94 -0
  47. package/dist/Components/Content/index.svelte +500 -0
  48. package/dist/Components/Content/index.svelte.js +910 -0
  49. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Audio/index.svelte +31 -0
  50. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Audio/index.svelte.js +258 -0
  51. package/dist/Components/ContentInput/AttributesInput/CustomConfig/AudioAdvanced/index.svelte +31 -0
  52. package/dist/Components/ContentInput/AttributesInput/CustomConfig/AudioAdvanced/index.svelte.js +258 -0
  53. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Dropdown/index.svelte +58 -0
  54. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Dropdown/index.svelte.js +206 -0
  55. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Image/index.svelte +28 -0
  56. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Image/index.svelte.js +224 -0
  57. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Number/index.svelte +44 -0
  58. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Number/index.svelte.js +272 -0
  59. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Qr/index.svelte +41 -0
  60. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Qr/index.svelte.js +202 -0
  61. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Slider/index.svelte +19 -0
  62. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Slider/index.svelte.js +117 -0
  63. package/dist/Components/ContentInput/AttributesInput/CustomConfig/TableAdvanced/index.svelte +60 -0
  64. package/dist/Components/ContentInput/AttributesInput/CustomConfig/TableAdvanced/index.svelte.js +542 -0
  65. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Tag/index.svelte +47 -0
  66. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Tag/index.svelte.js +185 -0
  67. package/dist/Components/ContentInput/AttributesInput/CustomConfig/TextInput/index.svelte +35 -0
  68. package/dist/Components/ContentInput/AttributesInput/CustomConfig/TextInput/index.svelte.js +222 -0
  69. package/dist/Components/ContentInput/AttributesInput/CustomConfig/TimeInput/index.svelte +20 -0
  70. package/dist/Components/ContentInput/AttributesInput/CustomConfig/TimeInput/index.svelte.js +84 -0
  71. package/dist/Components/ContentInput/AttributesInput/DefinedTypeInput/index.svelte +25 -0
  72. package/dist/Components/ContentInput/AttributesInput/DefinedTypeInput/index.svelte.js +91 -0
  73. package/dist/Components/ContentInput/AttributesInput/index.svelte +352 -0
  74. package/dist/Components/ContentInput/AttributesInput/index.svelte.js +1436 -0
  75. package/dist/Components/ContentInput/ContentPanelBuilder/AddElement/index.svelte +64 -0
  76. package/dist/Components/ContentInput/ContentPanelBuilder/AddElement/index.svelte.js +97 -0
  77. package/dist/Components/ContentInput/ContentPanelBuilder/ElementList/index.svelte +184 -0
  78. package/dist/Components/ContentInput/ContentPanelBuilder/index.svelte +41 -0
  79. package/dist/Components/ContentInput/index.svelte +78 -0
  80. package/dist/Components/ContentInput/index.svelte.js +1197 -0
  81. package/dist/Components/CronInput/index.svelte +78 -0
  82. package/dist/Components/CronInput/index.svelte.js +198 -0
  83. package/dist/Components/DataTypeInput/index.svelte +174 -0
  84. package/dist/Components/DataTypeInput/index.svelte.js +565 -0
  85. package/dist/Components/Dropdown/index.svelte +116 -0
  86. package/dist/Components/Dropdown/index.svelte.js +403 -0
  87. package/dist/Components/EmailAddress/index.svelte +22 -0
  88. package/dist/Components/EmailAddress/index.svelte.js +45 -0
  89. package/dist/Components/ErrorX/index.svelte +58 -0
  90. package/dist/Components/Eye/index.svelte +57 -0
  91. package/dist/Components/FileInput/index.svelte +146 -0
  92. package/dist/Components/FileInput/index.svelte.js +225 -0
  93. package/dist/Components/Hamburger/index.svelte +99 -0
  94. package/dist/Components/HorizScrollBox/index.svelte +145 -0
  95. package/dist/Components/Icon/index.svelte +412 -0
  96. package/dist/Components/Icon/index.svelte.js +116 -0
  97. package/dist/Components/IconInput/index.svelte +77 -0
  98. package/dist/Components/IconInput/index.svelte.js +259 -0
  99. package/dist/Components/Image/index.svelte +126 -0
  100. package/dist/Components/Image/index.svelte.js +116 -0
  101. package/dist/Components/ImageEditor/Image/CropBox/index.svelte +165 -0
  102. package/dist/Components/ImageEditor/Image/index.svelte +104 -0
  103. package/dist/Components/ImageEditor/Panels/AI/index.svelte +44 -0
  104. package/dist/Components/ImageEditor/Panels/Crop/index.svelte +96 -0
  105. package/dist/Components/ImageEditor/Panels/File/QualityPicker/index.svelte +124 -0
  106. package/dist/Components/ImageEditor/Panels/File/index.svelte +74 -0
  107. package/dist/Components/ImageEditor/Panels/Filters/index.svelte +46 -0
  108. package/dist/Components/ImageEditor/Panels/Resize/index.svelte +58 -0
  109. package/dist/Components/ImageEditor/index.svelte +93 -0
  110. package/dist/Components/ImageEditor/index.svelte.js +1961 -0
  111. package/dist/Components/ImageSlider/index.svelte +124 -0
  112. package/dist/Components/ImageSlider/index.svelte.js +99 -0
  113. package/dist/Components/InfoBox/index.svelte +89 -0
  114. package/dist/Components/Json/Nested/index.svelte +157 -0
  115. package/dist/Components/Json/index.svelte +60 -0
  116. package/dist/Components/Json/index.svelte.js +594 -0
  117. package/dist/Components/LabeledItem/index.svelte +102 -0
  118. package/dist/Components/Layout/NavBar/FullNav/index.svelte +52 -0
  119. package/dist/Components/Layout/NavBar/NavGuts/index.svelte +87 -0
  120. package/dist/Components/Layout/NavBar/index.svelte +72 -0
  121. package/dist/Components/Layout/index.svelte +149 -0
  122. package/dist/Components/Layout/index.svelte.js +360 -0
  123. package/dist/Components/Link/index.svelte +47 -0
  124. package/dist/Components/Link/index.svelte.js +136 -0
  125. package/dist/Components/LoadingSuccessDiv/index.svelte +51 -0
  126. package/dist/Components/LoadingWheel/index.svelte +38 -0
  127. package/dist/Components/Location/index.svelte +79 -0
  128. package/dist/Components/Location/index.svelte.js +288 -0
  129. package/dist/Components/LocationInput/index.svelte +197 -0
  130. package/dist/Components/LocationInput/index.svelte.js +965 -0
  131. package/dist/Components/Number/index.svelte +47 -0
  132. package/dist/Components/Number/index.svelte.js +151 -0
  133. package/dist/Components/PhoneCountryCode/index.svelte +7 -0
  134. package/dist/Components/PhoneCountryCode/index.svelte.js +260 -0
  135. package/dist/Components/PhoneNumber/index.svelte +22 -0
  136. package/dist/Components/PhoneNumber/index.svelte.js +41 -0
  137. package/dist/Components/Popover/index.svelte +396 -0
  138. package/dist/Components/Popover/index.svelte.js +319 -0
  139. package/dist/Components/Qr/index.svelte +85 -0
  140. package/dist/Components/Qr/index.svelte.js +301 -0
  141. package/dist/Components/QrInput/index.svelte +47 -0
  142. package/dist/Components/QrInput/index.svelte.js +218 -0
  143. package/dist/Components/Slider/index.svelte +239 -0
  144. package/dist/Components/Slider/index.svelte.js +469 -0
  145. package/dist/Components/Spacer/index.svelte +41 -0
  146. package/dist/Components/StoragePicker/DisplayFile/index.svelte +15 -0
  147. package/dist/Components/StoragePicker/index.svelte +187 -0
  148. package/dist/Components/StoragePicker/index.svelte.js +592 -0
  149. package/dist/Components/SuccessCheck/index.svelte +56 -0
  150. package/dist/Components/TableAdvanced/ColumnInput/index.svelte +117 -0
  151. package/dist/Components/TableAdvanced/ColumnInput/index.svelte.js +456 -0
  152. package/dist/Components/TableAdvanced/FilterInput/index.svelte +54 -0
  153. package/dist/Components/TableAdvanced/FilterInput/index.svelte.js +247 -0
  154. package/dist/Components/TableAdvanced/Pagination/index.svelte +43 -0
  155. package/dist/Components/TableAdvanced/Pagination/index.svelte.js +97 -0
  156. package/dist/Components/TableAdvanced/SortByInput/index.svelte +72 -0
  157. package/dist/Components/TableAdvanced/SortByInput/index.svelte.js +176 -0
  158. package/dist/Components/TableAdvanced/index.svelte +275 -0
  159. package/dist/Components/TableAdvanced/index.svelte.js +1565 -0
  160. package/dist/Components/Tag/index.svelte +45 -0
  161. package/dist/Components/Tag/index.svelte.js +76 -0
  162. package/dist/Components/TextArrayInput/index.svelte +108 -0
  163. package/dist/Components/TextArrayInput/index.svelte.js +239 -0
  164. package/dist/Components/TextInput/PasswordTooltip/index.svelte +89 -0
  165. package/dist/Components/TextInput/index.svelte +223 -0
  166. package/dist/Components/TextInput/index.svelte.js +447 -0
  167. package/dist/Components/Time/index.svelte +7 -0
  168. package/dist/Components/Time/index.svelte.js +38 -0
  169. package/dist/Components/TimeInput/NumberToggler/index.svelte +34 -0
  170. package/dist/Components/TimeInput/NumberToggler/index.svelte.js +79 -0
  171. package/dist/Components/TimeInput/index.js +702 -0
  172. package/dist/Components/TimeInput/index.svelte +211 -0
  173. package/dist/Components/TimeInput/index.svelte.js +638 -0
  174. package/dist/Components/Tooltip/index.svelte +143 -0
  175. package/dist/Components/TransparentBackground/index.svelte +153 -0
  176. package/dist/Components/TypingDots/index.svelte +84 -0
  177. package/dist/Components/VariablePathInput/index.svelte +63 -0
  178. package/dist/Components/VariablePathInput/index.svelte.js +273 -0
  179. package/dist/Components/VideoTBD/index.svelte +100 -0
  180. package/dist/Components/XFollow/index.svelte +42 -0
  181. package/dist/Components/XPost/index.svelte +52 -0
  182. package/dist/Components/XPost/index.svelte.js +64 -0
  183. package/dist/Components/YoutubeChannelButton/index.svelte +82 -0
  184. package/dist/Components/YoutubeVideo/index.svelte +73 -0
  185. package/dist/Components/YoutubeVideo/index.svelte.js +54 -0
  186. package/dist/actions/draggable.js +49 -0
  187. package/dist/actions/index.js +24 -0
  188. package/dist/actions/no_spaces.js +33 -0
  189. package/dist/actions/numbers_only.js +26 -0
  190. package/dist/actions/scroll_y.js +28 -0
  191. package/dist/actions/stop_scroll_propagation_y.js +42 -0
  192. package/dist/actions/swipe_handler.js +295 -0
  193. package/dist/client/astc_formatting/index.js +1128 -0
  194. package/dist/client/docs/index.js +7622 -0
  195. package/dist/client/index.js +735 -0
  196. package/dist/client/types/index.js +2812 -0
  197. package/dist/index.js +180 -0
  198. package/dist/style.css +682 -0
  199. package/package.json +2 -2
  200. package/src/lib/Components/Chart/index.svelte.js +11 -2
@@ -0,0 +1,671 @@
1
+ import { create_button_manager } from "../Button/index.svelte.js"
2
+ import { create_popover_manager } from "../Popover/index.svelte.js"
3
+ import { create_dropdown_manager } from "../Dropdown/index.svelte.js"
4
+ import { create_slider_manager } from "../Slider/index.svelte.js"
5
+ import { create_text_input_manager } from "../TextInput/index.svelte.js"
6
+ import { create_color_input_manager } from "../ColorInput/index.svelte.js"
7
+ import { create_breadcrumbs_manager } from "../Breadcrumbs/index.svelte.js"
8
+ import { create_unique_id, deep_copy } from "../../client/index.js"
9
+
10
+ export function create_chart_input_manager(config) {
11
+ let chart_builder_popover_manager = $state(null)
12
+ let chart_builder_popover_button_manager = $state(null)
13
+ let chart_prepped = $state(null)
14
+ let path_breadcrumbs_manager = $state(null)
15
+ let datasets = $state(null)
16
+ let finish_button_manager = $state(null)
17
+
18
+ const dataset_base = {
19
+ type: null,
20
+ name: null,
21
+ dataset_id: null,
22
+ keys: [],
23
+ period_x: null,
24
+ colors: [],
25
+ }
26
+
27
+ const shared_y_axis_base = {
28
+ y_axis_type: null,
29
+ y_axis_title: null,
30
+ bottom_padding_pd: 0.2,
31
+ top_padding_pd: 0.2,
32
+ datasets: [JSON.parse(JSON.stringify(dataset_base))],
33
+ }
34
+
35
+ const frame_base = {
36
+ aspect_ratio: 1.25,
37
+ shown_y_axis_index: 0,
38
+ shared_y_axiss: [JSON.parse(JSON.stringify(shared_y_axis_base))],
39
+ }
40
+
41
+ const chart_base = {
42
+ id: "abcdefgh",
43
+ x_axis_type: "time",
44
+ x_axis_title: null,
45
+ frames: [JSON.parse(JSON.stringify(frame_base))],
46
+ }
47
+
48
+ const x_axis_type_options = [
49
+ { key: "time", name: "Time" },
50
+ { key: "number", name: "Number" },
51
+ ]
52
+
53
+ function move(array, from, to, on = 1) {
54
+ const copy = array.slice()
55
+ const removed = copy.splice(from, on)
56
+ copy.splice(to, 0, ...removed)
57
+ return copy
58
+ }
59
+
60
+ function shift_frame_to_back(i) {
61
+ const to = chart_prepped.frames.length - 1
62
+ chart_prepped = get_chart_prepped({
63
+ ...chart_prepped,
64
+ frames: move(chart_prepped.frames, i, to),
65
+ })
66
+ }
67
+
68
+ function remove_frame(i) {
69
+ console.log("remove_frame", i)
70
+ chart_prepped = get_chart_prepped({ ...chart_prepped, frames: chart_prepped.frames.filter((_, idx) => idx !== i) })
71
+ }
72
+
73
+ function add_frame() {
74
+ console.log("add_frame", chart_prepped?.frames, frame_base)
75
+ chart_prepped = get_chart_prepped({ ...chart_prepped, frames: [...chart_prepped?.frames, frame_base] })
76
+ }
77
+
78
+ let val = $derived.by(() => {
79
+ let frames = []
80
+ if (Array.isArray(chart_prepped?.frames)) {
81
+ for (let frame of chart_prepped?.frames) {
82
+ let shared_y_axiss = []
83
+ if (Array.isArray(frame?.shared_y_axiss)) {
84
+ for (let shared_y_axis of frame?.shared_y_axiss) {
85
+ let datasets = []
86
+ if (Array.isArray(shared_y_axis?.datasets)) {
87
+ for (let dataset of shared_y_axis?.datasets) {
88
+ datasets.push({
89
+ colors: dataset?.colors,
90
+ dataset_id: dataset?.dataset_id,
91
+ keys: dataset?.keys,
92
+ name: dataset?.name,
93
+ period_x: dataset?.period_x,
94
+ type: dataset?.type,
95
+ })
96
+ }
97
+ }
98
+ shared_y_axiss.push({
99
+ y_axis_title: shared_y_axis?.y_axis_title,
100
+ y_axis_type: shared_y_axis?.y_axis_type,
101
+ bottom_padding_pd: shared_y_axis?.bottom_padding_pd,
102
+ top_padding_pd: shared_y_axis?.top_padding_pd,
103
+ datasets: datasets,
104
+ })
105
+ }
106
+ }
107
+ frames.push({
108
+ shown_y_axis_index: frame?.shown_y_axis_index,
109
+ aspect_ratio: frame?.aspect_ratio,
110
+ shared_y_axiss: shared_y_axiss,
111
+ })
112
+ }
113
+ }
114
+ return {
115
+ id: chart_prepped?.id,
116
+ x_axis_type: chart_prepped?.x_axis_type,
117
+ x_axis_title: chart_prepped?.x_axis_title,
118
+ shown_start_x: chart_prepped?.shown_start_x,
119
+ shown_end_x: chart_prepped?.shown_end_x,
120
+ min_x_scrollable: chart_prepped?.min_x_scrollable,
121
+ max_x_scrollable: chart_prepped?.max_x_scrollable,
122
+ frames: frames,
123
+ }
124
+ })
125
+
126
+ function shift_shared_y_axis_to_back(i) {
127
+ let chart_copy = deep_copy(chart_prepped)
128
+ const to = chart_copy.frames[path_breadcrumbs_manager?.val?.[0]].shared_y_axiss.length - 1
129
+ chart_copy.frames[path_breadcrumbs_manager?.val?.[0]].shared_y_axiss = move(
130
+ chart_copy.frames[path_breadcrumbs_manager?.val?.[0]].shared_y_axiss,
131
+ i,
132
+ to
133
+ )
134
+ chart_prepped = get_chart_prepped(chart_copy)
135
+ }
136
+
137
+ function remove_shared_y_axis(i) {
138
+ console.log("remove_frame", i)
139
+ let chart_copy = deep_copy(chart_prepped)
140
+ chart_copy.frames[path_breadcrumbs_manager?.val?.[0]].shared_y_axiss.splice(i, 1)
141
+ chart_prepped = get_chart_prepped(chart_copy)
142
+ }
143
+
144
+ function add_shared_y_axis() {
145
+ console.log("add_shared_y_axis")
146
+ let chart_copy = deep_copy(chart_prepped)
147
+ chart_copy.frames[path_breadcrumbs_manager?.val?.[0]].shared_y_axiss = [
148
+ ...chart_copy.frames[path_breadcrumbs_manager?.val?.[0]].shared_y_axiss,
149
+ shared_y_axis_base,
150
+ ]
151
+ chart_prepped = get_chart_prepped(chart_copy)
152
+ }
153
+
154
+ const y_axis_type_options = [
155
+ { key: "price", name: "Price" },
156
+ { key: "pd", name: "Percent Decimal" },
157
+ { key: "number", name: "Number" },
158
+ ]
159
+
160
+ function shift_dataset_to_back(path) {
161
+ let chart_copy = deep_copy(chart_prepped)
162
+ const to = chart_copy.frames[path[0]].shared_y_axiss[path[1]].datasets.length - 1
163
+ chart_copy.frames[path[0]].shared_y_axiss[path[1]].datasets = move(
164
+ chart_copy.frames[path[0]].shared_y_axiss[path[1]].datasets,
165
+ path?.[2],
166
+ to
167
+ )
168
+ chart_prepped = get_chart_prepped(chart_copy)
169
+ }
170
+
171
+ function remove_dataset(path) {
172
+ console.log("remove_dataset", path)
173
+ let chart_copy = deep_copy(chart_prepped)
174
+ chart_copy.frames[path[0]].shared_y_axiss[path[1]].datasets.splice(path?.[2], 1)
175
+ chart_prepped = get_chart_prepped(chart_copy)
176
+ }
177
+
178
+ function add_dataset(path) {
179
+ console.log("add_dataset")
180
+ let chart_copy = deep_copy(chart_prepped)
181
+ chart_copy.frames[path[0]].shared_y_axiss[path[1]].datasets = [
182
+ ...chart_copy.frames[path[0]].shared_y_axiss[path[1]].datasets,
183
+ dataset_base,
184
+ ]
185
+ chart_prepped = get_chart_prepped(chart_copy)
186
+ }
187
+
188
+ const dataset_type_options = [
189
+ { key: "klines", name: "Klines", keys: ["x", "o", "l", "h", "c"] },
190
+ { key: "points", name: "Points", keys: ["x", "y"] },
191
+ { key: "path", name: "Path", keys: ["x", "y"] },
192
+ { key: "lines", name: "Lines", keys: ["m", "b", "s"] },
193
+ ]
194
+
195
+ const period_options = [
196
+ { key: 60, name: "1m" },
197
+ { key: 300, name: "5m" },
198
+ { key: 900, name: "15m" },
199
+ { key: 1800, name: "30m" },
200
+ { key: 3600, name: "1h" },
201
+ { key: 7200, name: "2h" },
202
+ { key: 14400, name: "4h" },
203
+ { key: 28800, name: "8h" },
204
+ { key: 43200, name: "12h" },
205
+ { key: 86400, name: "1d" },
206
+ { key: 604800, name: "1w" },
207
+ ]
208
+
209
+ function get_chart_prepped(input) {
210
+ const id = create_unique_id(null, 8)
211
+ let x_axis_type_dropdown_manager = $state(null)
212
+ let x_axis_title_text_input_manager = $state(null)
213
+ let frame_add_button_manager = $state(null)
214
+ x_axis_type_dropdown_manager = create_dropdown_manager({
215
+ label: "X Axis Type",
216
+ options: x_axis_type_options,
217
+ is_button_compressed: true,
218
+ val: input?.x_axis_type ?? x_axis_type_options?.[0]?.key,
219
+ })
220
+ x_axis_title_text_input_manager = create_text_input_manager({
221
+ label: "X Axis Title",
222
+ val: input?.x_axis_title,
223
+ })
224
+ frame_add_button_manager = create_button_manager({
225
+ type: "outlined",
226
+ is_compressed: true,
227
+ text: "Add Frame",
228
+ on_click: () => add_frame(),
229
+ })
230
+ let frames = []
231
+ if (Array.isArray(input?.frames)) {
232
+ for (let i = 0; i < input?.frames.length; i++) {
233
+ let frame_shift_to_back_button_manager = $state(null)
234
+ let frame_remove_button_manager = $state(null)
235
+ let frame_select_path_button_manager = $state(null)
236
+ let aspect_ratio_slider_manager = $state(null)
237
+ let add_shared_y_axis_button_manager = $state(null)
238
+ let shown_y_axis_index = $state(input.frames[i].shown_y_axis_index)
239
+ aspect_ratio_slider_manager = create_slider_manager({
240
+ label: "Aspect Ratio",
241
+ val: input.frames[i].aspect_ratio,
242
+ min: 0.75,
243
+ max: 5,
244
+ step: 0.05,
245
+ is_instant: true,
246
+ })
247
+ add_shared_y_axis_button_manager = create_button_manager({
248
+ type: "outlined",
249
+ is_compressed: true,
250
+ text: "Add Shared Y Axis",
251
+ on_click: () => add_shared_y_axis(),
252
+ })
253
+ frame_shift_to_back_button_manager = create_button_manager({
254
+ type: "outlined",
255
+ is_compressed: true,
256
+ text: "Shift To Bottom",
257
+ on_click: () => shift_frame_to_back(i),
258
+ })
259
+ frame_remove_button_manager = create_button_manager({
260
+ type: "outlined",
261
+ is_compressed: true,
262
+ text: "Remove Frame",
263
+ on_click: () => remove_frame(i),
264
+ })
265
+ frame_select_path_button_manager = create_button_manager({
266
+ type: "outlined",
267
+ is_compressed: true,
268
+ text: "Goto Frame",
269
+ on_click: () => path_breadcrumbs_manager.set_val([i]),
270
+ })
271
+ let shared_y_axiss = []
272
+ if (Array.isArray(input?.frames?.[i]?.shared_y_axiss)) {
273
+ for (let j = 0; j < input?.frames?.[i]?.shared_y_axiss.length; j++) {
274
+ let shift_to_back_button_manager = $state(null)
275
+ let remove_button_manager = $state(null)
276
+ let select_path_button_manager = $state(null)
277
+ let top_padding_pd_slider_manager = $state(null)
278
+ let bottom_padding_pd_slider_manager = $state(null)
279
+ let y_axis_type_dropdown_manager = $state(null)
280
+ let y_axis_title_text_input_manager = $state(null)
281
+ let add_dataset_button_manager = $state(null)
282
+ shift_to_back_button_manager = create_button_manager({
283
+ type: "outlined",
284
+ is_compressed: true,
285
+ text: "Shift To Back",
286
+ on_click: () => shift_shared_y_axis_to_back(i, j),
287
+ })
288
+ remove_button_manager = create_button_manager({
289
+ type: "outlined",
290
+ is_compressed: true,
291
+ text: "Remove Shared Y Axis",
292
+ on_click: () => remove_shared_y_axis(i, j),
293
+ })
294
+ select_path_button_manager = create_button_manager({
295
+ type: "outlined",
296
+ is_compressed: true,
297
+ text: "Goto Shared Y Axis",
298
+ on_click: () => path_breadcrumbs_manager?.set_val([i, j]),
299
+ })
300
+ top_padding_pd_slider_manager = create_slider_manager({
301
+ label: "Top Padding Percent Decimal",
302
+ val: input?.frames?.[i]?.shared_y_axiss?.[j].top_padding_pd,
303
+ min: -1,
304
+ max: 1,
305
+ step: 0.01,
306
+ is_instant: true,
307
+ })
308
+ bottom_padding_pd_slider_manager = create_slider_manager({
309
+ label: "Bottom Padding Percent Decimal",
310
+ val: input?.frames?.[i]?.shared_y_axiss?.[j].bottom_padding_pd,
311
+ min: -1,
312
+ max: 1,
313
+ step: 0.01,
314
+ is_instant: true,
315
+ })
316
+ y_axis_type_dropdown_manager = create_dropdown_manager({
317
+ label: "Y Axis Type",
318
+ is_button_compressed: true,
319
+ options: y_axis_type_options,
320
+ val: input?.frames?.[i]?.shared_y_axiss?.[j].y_axis_type,
321
+ })
322
+ y_axis_title_text_input_manager = create_text_input_manager({
323
+ label: "Y Axis Title",
324
+ val: input?.frames?.[i]?.shared_y_axiss?.[j].y_axis_title,
325
+ })
326
+ add_dataset_button_manager = create_button_manager({
327
+ type: "outlined",
328
+ is_compressed: true,
329
+ text: "Add Dataset",
330
+ on_click: () => add_dataset([i, j]),
331
+ })
332
+ let datasets_loc = []
333
+ if (Array.isArray(input?.frames?.[i]?.shared_y_axiss?.[j]?.datasets)) {
334
+ for (let g = 0; g < input?.frames?.[i]?.shared_y_axiss?.[j].datasets.length; g++) {
335
+ let name_text_input_manager = $state(null)
336
+ let dataset_type_dropdown_manager = $state(null)
337
+ let dataset_id_dropdown_manager = $state(null)
338
+ let dataset_period_dropdown_manager = $state(null)
339
+ let add_dataset_color_button_manager = $state(null)
340
+ name_text_input_manager = create_text_input_manager({
341
+ label: "Data Title",
342
+ val: input?.frames?.[i]?.shared_y_axiss?.[j]?.datasets?.[g]?.name,
343
+ })
344
+ dataset_type_dropdown_manager = create_dropdown_manager({
345
+ label: "Dataset Type",
346
+ is_button_compressed: true,
347
+ options: dataset_type_options,
348
+ val: input?.frames?.[i]?.shared_y_axiss?.[j]?.datasets?.[g]?.type,
349
+ })
350
+ dataset_id_dropdown_manager = create_dropdown_manager({
351
+ label: "Dataset ID",
352
+ is_button_compressed: true,
353
+ options: Object.keys(datasets).map((h) => {
354
+ return { key: h, name: h }
355
+ }),
356
+ val:
357
+ input?.frames?.[i]?.shared_y_axiss?.[j]?.datasets?.[g]?.dataset_id ||
358
+ (Object.keys(datasets).length > 0 ? Object.keys(datasets)?.[0] : null),
359
+ })
360
+ dataset_period_dropdown_manager = create_dropdown_manager({
361
+ label: "Dataset Period",
362
+ is_button_compressed: true,
363
+ options: period_options,
364
+ val: input?.frames?.[i]?.shared_y_axiss?.[j]?.datasets?.[g]?.period_x,
365
+ })
366
+ let colors_input = $state([])
367
+ if (Array.isArray(input?.frames?.[i]?.shared_y_axiss?.[j]?.datasets?.[g]?.colors)) {
368
+ for (let color of input?.frames?.[i]?.shared_y_axiss?.[j]?.datasets?.[g]?.colors) {
369
+ const id = create_unique_id(null, 20)
370
+ let remove_button_manager = create_button_manager({
371
+ type: "outlined",
372
+ support_icon: "x",
373
+ is_uniform: true,
374
+ on_click: () => {
375
+ colors_input = colors_input.filter((h) => h.id !== id)
376
+ },
377
+ })
378
+ let color_input_manager = create_color_input_manager({ val: color })
379
+ colors_input.push({
380
+ id,
381
+ get color_input_manager() {
382
+ return color_input_manager
383
+ },
384
+ get remove_button_manager() {
385
+ return remove_button_manager
386
+ },
387
+ })
388
+ }
389
+ }
390
+ add_dataset_color_button_manager = create_button_manager({
391
+ type: "outlined",
392
+ support_icon: "plus",
393
+ is_compressed: true,
394
+ text: "Add Color",
395
+ on_click: () => {
396
+ const id = create_unique_id(null, 20)
397
+ let remove_button_manager = create_button_manager({
398
+ type: "outlined",
399
+ support_icon: "x",
400
+ is_uniform: true,
401
+ on_click: () => {
402
+ colors_input = colors_input.filter((h) => h.id !== id)
403
+ },
404
+ })
405
+ let color_input_manager = create_color_input_manager({
406
+ val: {
407
+ l: 9,
408
+ c: 9,
409
+ h: 1,
410
+ o: 5,
411
+ is_theme_based: 1,
412
+ },
413
+ })
414
+ colors_input.push({
415
+ get color_input_manager() {
416
+ return color_input_manager
417
+ },
418
+ get remove_button_manager() {
419
+ return remove_button_manager
420
+ },
421
+ })
422
+ },
423
+ })
424
+ let dataset_options_key_options = datasets?.[dataset_id_dropdown_manager?.val]?.data?.[0]
425
+ ? Object.entries(datasets?.[dataset_id_dropdown_manager?.val]?.data?.[0]).map(([key, value]) => {
426
+ return { key: key, name: key + ": (" + value + ")" }
427
+ })
428
+ : null
429
+ let dataset_keys_to_add = dataset_type_dropdown_manager?.val
430
+ ? dataset_type_options.find((h) => h?.key === dataset_type_dropdown_manager?.val)?.keys
431
+ : null
432
+ let keys_input = []
433
+ if (Array.isArray(dataset_keys_to_add)) {
434
+ for (let key_i = 0; key_i < dataset_keys_to_add.length; key_i++) {
435
+ let key_dropdown_manager = create_dropdown_manager({
436
+ label: dataset_keys_to_add?.[key_i],
437
+ is_button_compressed: true,
438
+ options: dataset_options_key_options,
439
+ val: input?.frames?.[i]?.shared_y_axiss?.[j]?.datasets?.[g]?.keys?.[key_i],
440
+ })
441
+ keys_input.push({
442
+ get key_dropdown_manager() {
443
+ return key_dropdown_manager
444
+ },
445
+ })
446
+ }
447
+ }
448
+ let shift_to_back_button_manager = create_button_manager({
449
+ type: "outlined",
450
+ is_compressed: true,
451
+ text: "Shift To Back",
452
+ on_click: () => shift_dataset_to_back([i, j, g]),
453
+ })
454
+ let remove_button_manager = create_button_manager({
455
+ type: "outlined",
456
+ is_compressed: true,
457
+ text: "Remove Dataset",
458
+ on_click: () => remove_dataset([i, j, g]),
459
+ })
460
+ let select_path_button_manager = create_button_manager({
461
+ type: "outlined",
462
+ is_compressed: true,
463
+ text: "Goto Dataset",
464
+ on_click: () => path_breadcrumbs_manager.set_val([i, j, g]),
465
+ })
466
+ datasets_loc.push({
467
+ get name() {
468
+ return name_text_input_manager?.val
469
+ },
470
+ get type() {
471
+ return dataset_type_dropdown_manager?.val
472
+ },
473
+ get dataset_id() {
474
+ return dataset_id_dropdown_manager?.val
475
+ },
476
+ get period_x() {
477
+ return dataset_period_dropdown_manager?.val
478
+ },
479
+ get colors() {
480
+ return colors_input.map((h) => h?.color_input_manager?.val)
481
+ },
482
+ get colors_input() {
483
+ return colors_input
484
+ },
485
+ get keys() {
486
+ return keys_input.map((h) => h?.key_dropdown_manager?.val)
487
+ },
488
+ get keys_input() {
489
+ return keys_input
490
+ },
491
+ get name_text_input_manager() {
492
+ return name_text_input_manager
493
+ },
494
+ get dataset_type_dropdown_manager() {
495
+ return dataset_type_dropdown_manager
496
+ },
497
+ get dataset_id_dropdown_manager() {
498
+ return dataset_id_dropdown_manager
499
+ },
500
+ get dataset_period_dropdown_manager() {
501
+ return dataset_period_dropdown_manager
502
+ },
503
+ get add_dataset_color_button_manager() {
504
+ return add_dataset_color_button_manager
505
+ },
506
+ get shift_to_back_button_manager() {
507
+ return shift_to_back_button_manager
508
+ },
509
+ get remove_button_manager() {
510
+ return remove_button_manager
511
+ },
512
+ get select_path_button_manager() {
513
+ return select_path_button_manager
514
+ },
515
+ })
516
+ }
517
+ }
518
+ shared_y_axiss.push({
519
+ get top_padding_pd_slider_manager() {
520
+ return top_padding_pd_slider_manager
521
+ },
522
+ get bottom_padding_pd_slider_manager() {
523
+ return bottom_padding_pd_slider_manager
524
+ },
525
+ get y_axis_type_dropdown_manager() {
526
+ return y_axis_type_dropdown_manager
527
+ },
528
+ get y_axis_title_text_input_manager() {
529
+ return y_axis_title_text_input_manager
530
+ },
531
+ get add_dataset_button_manager() {
532
+ return add_dataset_button_manager
533
+ },
534
+ get top_padding_pd() {
535
+ return top_padding_pd_slider_manager?.val
536
+ },
537
+ get bottom_padding_pd() {
538
+ return bottom_padding_pd_slider_manager?.val
539
+ },
540
+ get y_axis_title() {
541
+ return y_axis_title_text_input_manager?.val
542
+ },
543
+ get y_axis_type() {
544
+ return y_axis_type_dropdown_manager?.val
545
+ },
546
+ get datasets() {
547
+ return datasets_loc
548
+ },
549
+ get shift_to_back_button_manager() {
550
+ return shift_to_back_button_manager
551
+ },
552
+ get remove_button_manager() {
553
+ return remove_button_manager
554
+ },
555
+ get select_path_button_manager() {
556
+ return select_path_button_manager
557
+ },
558
+ })
559
+ }
560
+ }
561
+ frames.push({
562
+ get frame_shift_to_back_button_manager() {
563
+ return frame_shift_to_back_button_manager
564
+ },
565
+ get frame_remove_button_manager() {
566
+ return frame_remove_button_manager
567
+ },
568
+ get frame_select_path_button_manager() {
569
+ return frame_select_path_button_manager
570
+ },
571
+ get add_shared_y_axis_button_manager() {
572
+ return add_shared_y_axis_button_manager
573
+ },
574
+ get aspect_ratio_slider_manager() {
575
+ return aspect_ratio_slider_manager
576
+ },
577
+ get aspect_ratio() {
578
+ return aspect_ratio_slider_manager?.val
579
+ },
580
+ get shared_y_axiss() {
581
+ return shared_y_axiss
582
+ },
583
+ get shown_y_axis_index() {
584
+ return shown_y_axis_index
585
+ },
586
+ })
587
+ }
588
+ }
589
+ return {
590
+ get id() {
591
+ return id
592
+ },
593
+ get x_axis_type() {
594
+ return x_axis_type_dropdown_manager?.val
595
+ },
596
+ get x_axis_title() {
597
+ return x_axis_title_text_input_manager?.val
598
+ },
599
+ get x_axis_type_dropdown_manager() {
600
+ return x_axis_type_dropdown_manager
601
+ },
602
+ get x_axis_title_text_input_manager() {
603
+ return x_axis_title_text_input_manager
604
+ },
605
+ get frame_add_button_manager() {
606
+ return frame_add_button_manager
607
+ },
608
+ get frames() {
609
+ return frames
610
+ },
611
+ }
612
+ }
613
+
614
+ function init(config) {
615
+ datasets = config?.datasets
616
+ chart_builder_popover_manager = create_popover_manager({
617
+ type: "center",
618
+ min_width: 280,
619
+ target_width: 600,
620
+ min_height: 280,
621
+ target_height: 500,
622
+ })
623
+ chart_builder_popover_button_manager = create_button_manager({
624
+ type: "primary",
625
+ text: "Chart Builder",
626
+ is_compressed: true,
627
+ popover_target: () => `popover_${chart_builder_popover_manager?.id}`,
628
+ })
629
+ path_breadcrumbs_manager = create_breadcrumbs_manager()
630
+ finish_button_manager = create_button_manager({
631
+ text: "Finish",
632
+ h: 10,
633
+ l: 1,
634
+ c: 1,
635
+ on_click: () => {
636
+ console.log("finish", val)
637
+ if (typeof config?.on_finish == "function") {
638
+ config?.on_finish(val)
639
+ }
640
+ chart_builder_popover_manager.close()
641
+ },
642
+ })
643
+ chart_prepped = get_chart_prepped(config?.chart)
644
+ setTimeout(() => {
645
+ console.log("chart_prepped_init", deep_copy(chart_prepped))
646
+ })
647
+ }
648
+
649
+ init(config)
650
+
651
+ return {
652
+ get val() {
653
+ return val
654
+ },
655
+ get chart_builder_popover_manager() {
656
+ return chart_builder_popover_manager
657
+ },
658
+ get chart_builder_popover_button_manager() {
659
+ return chart_builder_popover_button_manager
660
+ },
661
+ get path_breadcrumbs_manager() {
662
+ return path_breadcrumbs_manager
663
+ },
664
+ get chart_prepped() {
665
+ return chart_prepped
666
+ },
667
+ get finish_button_manager() {
668
+ return finish_button_manager
669
+ },
670
+ }
671
+ }