sveltekit-ui 1.0.0

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 (487) hide show
  1. package/README.md +23 -0
  2. package/dist/Components/Alert/index.svelte +88 -0
  3. package/dist/Components/Alert/index.svelte.js +101 -0
  4. package/dist/Components/ArrowToggle/index.svelte +62 -0
  5. package/dist/Components/Attachment/index.svelte +69 -0
  6. package/dist/Components/Attachment/index.svelte.js +119 -0
  7. package/dist/Components/Audio/index.svelte +193 -0
  8. package/dist/Components/Audio/index.svelte.js +463 -0
  9. package/dist/Components/AudioEditor/index.svelte +253 -0
  10. package/dist/Components/AudioEditor/index.svelte.js +973 -0
  11. package/dist/Components/AudioEditor/samples/alloy-voice-sample.mp3 +0 -0
  12. package/dist/Components/AudioEditor/samples/echo-voice-sample.mp3 +0 -0
  13. package/dist/Components/AudioEditor/samples/fable-voice-sample.mp3 +0 -0
  14. package/dist/Components/AudioEditor/samples/nova-voice-sample.mp3 +0 -0
  15. package/dist/Components/AudioEditor/samples/onyx-voice-sample.mp3 +0 -0
  16. package/dist/Components/AudioEditor/samples/shimmer-voice-sample.mp3 +0 -0
  17. package/dist/Components/AuthCodeInput/index.svelte +85 -0
  18. package/dist/Components/AuthCodeInput/index.svelte.js +95 -0
  19. package/dist/Components/Breadcrumbs/index.svelte +27 -0
  20. package/dist/Components/Breadcrumbs/index.svelte.js +88 -0
  21. package/dist/Components/Button/index.svelte +721 -0
  22. package/dist/Components/Button/index.svelte.js +375 -0
  23. package/dist/Components/Chart/Klines/index.svelte +87 -0
  24. package/dist/Components/Chart/index.svelte +226 -0
  25. package/dist/Components/Chart/index.svelte.js +1084 -0
  26. package/dist/Components/ChartInput/DisplayNav/Klines/index.svelte +150 -0
  27. package/dist/Components/ChartInput/DisplayNav/Lines/index.svelte +45 -0
  28. package/dist/Components/ChartInput/DisplayNav/index.svelte +297 -0
  29. package/dist/Components/ChartInput/EditPanel/index.svelte +155 -0
  30. package/dist/Components/ChartInput/index.svelte +21 -0
  31. package/dist/Components/ChartInput/index.svelte.js +671 -0
  32. package/dist/Components/Checkbox/index.svelte +411 -0
  33. package/dist/Components/Checkbox/index.svelte.js +178 -0
  34. package/dist/Components/Code/index.svelte +23 -0
  35. package/dist/Components/Code/index.svelte.js +34 -0
  36. package/dist/Components/Color/index.svelte +51 -0
  37. package/dist/Components/Color/index.svelte.js +31 -0
  38. package/dist/Components/ColorInput/ChromaPicker/index.svelte +50 -0
  39. package/dist/Components/ColorInput/ColorPalette/index.svelte +62 -0
  40. package/dist/Components/ColorInput/OpacityPicker/index.svelte +68 -0
  41. package/dist/Components/ColorInput/ShowcasePicker/index.svelte +136 -0
  42. package/dist/Components/ColorInput/index.svelte +70 -0
  43. package/dist/Components/ColorInput/index.svelte.js +383 -0
  44. package/dist/Components/ConditionsInput/index.svelte +46 -0
  45. package/dist/Components/ConditionsInput/index.svelte.js +201 -0
  46. package/dist/Components/Confetti/index.svelte +98 -0
  47. package/dist/Components/Confetti/index.svelte.js +94 -0
  48. package/dist/Components/Content/index.svelte +471 -0
  49. package/dist/Components/Content/index.svelte.js +903 -0
  50. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Audio/index.svelte +31 -0
  51. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Audio/index.svelte.js +258 -0
  52. package/dist/Components/ContentInput/AttributesInput/CustomConfig/AudioAdvanced/index.svelte +31 -0
  53. package/dist/Components/ContentInput/AttributesInput/CustomConfig/AudioAdvanced/index.svelte.js +258 -0
  54. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Dropdown/index.svelte +58 -0
  55. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Dropdown/index.svelte.js +210 -0
  56. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Image/index.svelte +28 -0
  57. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Image/index.svelte.js +224 -0
  58. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Number/index.svelte +44 -0
  59. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Number/index.svelte.js +273 -0
  60. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Qr/index.svelte +41 -0
  61. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Qr/index.svelte.js +203 -0
  62. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Slider/index.svelte +19 -0
  63. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Slider/index.svelte.js +119 -0
  64. package/dist/Components/ContentInput/AttributesInput/CustomConfig/TableAdvanced/index.svelte +60 -0
  65. package/dist/Components/ContentInput/AttributesInput/CustomConfig/TableAdvanced/index.svelte.js +546 -0
  66. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Tag/index.svelte +47 -0
  67. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Tag/index.svelte.js +185 -0
  68. package/dist/Components/ContentInput/AttributesInput/CustomConfig/TextInput/index.svelte +35 -0
  69. package/dist/Components/ContentInput/AttributesInput/CustomConfig/TextInput/index.svelte.js +224 -0
  70. package/dist/Components/ContentInput/AttributesInput/CustomConfig/TimeInput/index.svelte +20 -0
  71. package/dist/Components/ContentInput/AttributesInput/CustomConfig/TimeInput/index.svelte.js +87 -0
  72. package/dist/Components/ContentInput/AttributesInput/DefinedTypeInput/index.svelte +25 -0
  73. package/dist/Components/ContentInput/AttributesInput/DefinedTypeInput/index.svelte.js +101 -0
  74. package/dist/Components/ContentInput/AttributesInput/index.svelte +338 -0
  75. package/dist/Components/ContentInput/AttributesInput/index.svelte.js +1446 -0
  76. package/dist/Components/ContentInput/ContentPanelBuilder/AddElement/index.svelte +64 -0
  77. package/dist/Components/ContentInput/ContentPanelBuilder/AddElement/index.svelte.js +97 -0
  78. package/dist/Components/ContentInput/ContentPanelBuilder/ElementList/index.svelte +122 -0
  79. package/dist/Components/ContentInput/ContentPanelBuilder/index.svelte +41 -0
  80. package/dist/Components/ContentInput/index.svelte +50 -0
  81. package/dist/Components/ContentInput/index.svelte.js +1066 -0
  82. package/dist/Components/CronInput/index.svelte +78 -0
  83. package/dist/Components/CronInput/index.svelte.js +199 -0
  84. package/dist/Components/DataTypeInput/index.svelte +174 -0
  85. package/dist/Components/DataTypeInput/index.svelte.js +568 -0
  86. package/dist/Components/Dropdown/index.svelte +116 -0
  87. package/dist/Components/Dropdown/index.svelte.js +403 -0
  88. package/dist/Components/EmailAddress/index.svelte +22 -0
  89. package/dist/Components/EmailAddress/index.svelte.js +45 -0
  90. package/dist/Components/ErrorX/index.svelte +58 -0
  91. package/dist/Components/Eye/index.svelte +57 -0
  92. package/dist/Components/FileInput/index.svelte +146 -0
  93. package/dist/Components/FileInput/index.svelte.js +226 -0
  94. package/dist/Components/FunctionInput/Node/helpers/DefinedTargetInput/index.svelte +110 -0
  95. package/dist/Components/FunctionInput/Node/helpers/Field/index.svelte +109 -0
  96. package/dist/Components/FunctionInput/Node/helpers/Field/index.svelte.js +208 -0
  97. package/dist/Components/FunctionInput/Node/helpers/InlineDropArea/index.svelte +97 -0
  98. package/dist/Components/FunctionInput/Node/helpers/InlineDropArea/index.svelte.js +105 -0
  99. package/dist/Components/FunctionInput/Node/helpers/ObjectInput/index.svelte +198 -0
  100. package/dist/Components/FunctionInput/Node/helpers/StackArea/index.svelte +169 -0
  101. package/dist/Components/FunctionInput/Node/helpers/StackArea/index.svelte.js +152 -0
  102. package/dist/Components/FunctionInput/Node/index.svelte +144 -0
  103. package/dist/Components/FunctionInput/Node/index.svelte.js +130 -0
  104. package/dist/Components/FunctionInput/index.svelte +356 -0
  105. package/dist/Components/FunctionInput/index.svelte.js +1215 -0
  106. package/dist/Components/Hamburger/index.svelte +99 -0
  107. package/dist/Components/HorizScrollBox/index.svelte +145 -0
  108. package/dist/Components/Icon/index.svelte +412 -0
  109. package/dist/Components/Icon/index.svelte.js +117 -0
  110. package/dist/Components/IconInput/index.svelte +77 -0
  111. package/dist/Components/IconInput/index.svelte.js +260 -0
  112. package/dist/Components/Image/index.svelte +121 -0
  113. package/dist/Components/Image/index.svelte.js +114 -0
  114. package/dist/Components/ImageEditor/Image/CropBox/index.svelte +165 -0
  115. package/dist/Components/ImageEditor/Image/index.svelte +104 -0
  116. package/dist/Components/ImageEditor/Panels/AI/index.svelte +36 -0
  117. package/dist/Components/ImageEditor/Panels/Crop/index.svelte +96 -0
  118. package/dist/Components/ImageEditor/Panels/File/QualityPicker/index.svelte +124 -0
  119. package/dist/Components/ImageEditor/Panels/File/index.svelte +74 -0
  120. package/dist/Components/ImageEditor/Panels/Filters/index.svelte +46 -0
  121. package/dist/Components/ImageEditor/Panels/Resize/index.svelte +58 -0
  122. package/dist/Components/ImageEditor/index.svelte +91 -0
  123. package/dist/Components/ImageEditor/index.svelte.js +1907 -0
  124. package/dist/Components/ImageSlider/index.svelte +124 -0
  125. package/dist/Components/ImageSlider/index.svelte.js +99 -0
  126. package/dist/Components/InfoBox/index.svelte +89 -0
  127. package/dist/Components/Json/Nested/index.svelte +157 -0
  128. package/dist/Components/Json/index.svelte +60 -0
  129. package/dist/Components/Json/index.svelte.js +594 -0
  130. package/dist/Components/LabeledItem/index.svelte +102 -0
  131. package/dist/Components/Layout/NavBar/FullNav/index.svelte +53 -0
  132. package/dist/Components/Layout/NavBar/NavGuts/index.svelte +87 -0
  133. package/dist/Components/Layout/NavBar/index.svelte +72 -0
  134. package/dist/Components/Layout/index.svelte +149 -0
  135. package/dist/Components/Layout/index.svelte.js +362 -0
  136. package/dist/Components/Link/index.svelte +46 -0
  137. package/dist/Components/Link/index.svelte.js +126 -0
  138. package/dist/Components/LoadingSuccessDiv/index.svelte +51 -0
  139. package/dist/Components/LoadingWheel/index.svelte +38 -0
  140. package/dist/Components/Location/index.svelte +85 -0
  141. package/dist/Components/Location/index.svelte.js +292 -0
  142. package/dist/Components/LocationInput/index.svelte +200 -0
  143. package/dist/Components/LocationInput/index.svelte.js +950 -0
  144. package/dist/Components/Number/index.svelte +47 -0
  145. package/dist/Components/Number/index.svelte.js +151 -0
  146. package/dist/Components/PhoneCountryCode/index.svelte +7 -0
  147. package/dist/Components/PhoneCountryCode/index.svelte.js +260 -0
  148. package/dist/Components/PhoneNumber/index.svelte +22 -0
  149. package/dist/Components/PhoneNumber/index.svelte.js +41 -0
  150. package/dist/Components/Popover/index.svelte +396 -0
  151. package/dist/Components/Popover/index.svelte.js +319 -0
  152. package/dist/Components/Qr/index.svelte +60 -0
  153. package/dist/Components/Qr/index.svelte.js +295 -0
  154. package/dist/Components/Slider/index.svelte +231 -0
  155. package/dist/Components/Slider/index.svelte.js +468 -0
  156. package/dist/Components/Spacer/index.svelte +41 -0
  157. package/dist/Components/StoragePicker/DisplayFile/index.svelte +15 -0
  158. package/dist/Components/StoragePicker/index.svelte +192 -0
  159. package/dist/Components/StoragePicker/index.svelte.js +593 -0
  160. package/dist/Components/SuccessCheck/index.svelte +56 -0
  161. package/dist/Components/TableAdvanced/ColumnInput/index.svelte +110 -0
  162. package/dist/Components/TableAdvanced/ColumnInput/index.svelte.js +494 -0
  163. package/dist/Components/TableAdvanced/FilterInput/index.svelte +54 -0
  164. package/dist/Components/TableAdvanced/FilterInput/index.svelte.js +247 -0
  165. package/dist/Components/TableAdvanced/Pagination/index.svelte +43 -0
  166. package/dist/Components/TableAdvanced/Pagination/index.svelte.js +97 -0
  167. package/dist/Components/TableAdvanced/SortByInput/index.svelte +79 -0
  168. package/dist/Components/TableAdvanced/SortByInput/index.svelte.js +191 -0
  169. package/dist/Components/TableAdvanced/index.svelte +268 -0
  170. package/dist/Components/TableAdvanced/index.svelte.js +1422 -0
  171. package/dist/Components/Tag/index.svelte +45 -0
  172. package/dist/Components/Tag/index.svelte.js +76 -0
  173. package/dist/Components/TextArrayInput/index.svelte +108 -0
  174. package/dist/Components/TextArrayInput/index.svelte.js +239 -0
  175. package/dist/Components/TextInput/PasswordTooltip/index.svelte +89 -0
  176. package/dist/Components/TextInput/index.svelte +223 -0
  177. package/dist/Components/TextInput/index.svelte.js +434 -0
  178. package/dist/Components/Time/index.svelte +7 -0
  179. package/dist/Components/Time/index.svelte.js +38 -0
  180. package/dist/Components/TimeInput/NumberToggler/index.svelte +34 -0
  181. package/dist/Components/TimeInput/NumberToggler/index.svelte.js +79 -0
  182. package/dist/Components/TimeInput/index.js +699 -0
  183. package/dist/Components/TimeInput/index.svelte +211 -0
  184. package/dist/Components/TimeInput/index.svelte.js +638 -0
  185. package/dist/Components/Tooltip/index.svelte +143 -0
  186. package/dist/Components/TransparentBackground/index.svelte +153 -0
  187. package/dist/Components/TypingDots/index.svelte +84 -0
  188. package/dist/Components/VariablePathInput/index.svelte +109 -0
  189. package/dist/Components/VariablePathInput/index.svelte.js +250 -0
  190. package/dist/Components/VideoTBD/index.svelte +100 -0
  191. package/dist/Components/XFollow/index.svelte +42 -0
  192. package/dist/Components/XPost/index.svelte +52 -0
  193. package/dist/Components/XPost/index.svelte.js +64 -0
  194. package/dist/Components/YoutubeVideo/index.svelte +73 -0
  195. package/dist/Components/YoutubeVideo/index.svelte.js +54 -0
  196. package/dist/actions/draggable.js +49 -0
  197. package/dist/actions/intersection_observer.js +24 -0
  198. package/dist/actions/no_spaces.js +33 -0
  199. package/dist/actions/numbers_only.js +26 -0
  200. package/dist/actions/scroll_y.js +28 -0
  201. package/dist/actions/stop_scroll_propagation_y.js +42 -0
  202. package/dist/actions/swipe_handler.js +295 -0
  203. package/dist/client/astc_formatting/index.js +1167 -0
  204. package/dist/client/docs/index.js +7612 -0
  205. package/dist/client/index.js +729 -0
  206. package/dist/client/types/index.js +4681 -0
  207. package/dist/index.js +161 -0
  208. package/dist/style.css +682 -0
  209. package/package.json +44 -0
  210. package/src/app.html +17 -0
  211. package/src/hooks.server.js +7 -0
  212. package/src/lib/Components/Alert/index.svelte +88 -0
  213. package/src/lib/Components/Alert/index.svelte.js +101 -0
  214. package/src/lib/Components/ArrowToggle/index.svelte +62 -0
  215. package/src/lib/Components/Attachment/index.svelte +69 -0
  216. package/src/lib/Components/Attachment/index.svelte.js +119 -0
  217. package/src/lib/Components/Audio/index.svelte +193 -0
  218. package/src/lib/Components/Audio/index.svelte.js +463 -0
  219. package/src/lib/Components/AudioEditor/index.svelte +253 -0
  220. package/src/lib/Components/AudioEditor/index.svelte.js +973 -0
  221. package/src/lib/Components/AudioEditor/samples/alloy-voice-sample.mp3 +0 -0
  222. package/src/lib/Components/AudioEditor/samples/echo-voice-sample.mp3 +0 -0
  223. package/src/lib/Components/AudioEditor/samples/fable-voice-sample.mp3 +0 -0
  224. package/src/lib/Components/AudioEditor/samples/nova-voice-sample.mp3 +0 -0
  225. package/src/lib/Components/AudioEditor/samples/onyx-voice-sample.mp3 +0 -0
  226. package/src/lib/Components/AudioEditor/samples/shimmer-voice-sample.mp3 +0 -0
  227. package/src/lib/Components/AuthCodeInput/index.svelte +85 -0
  228. package/src/lib/Components/AuthCodeInput/index.svelte.js +95 -0
  229. package/src/lib/Components/Breadcrumbs/index.svelte +27 -0
  230. package/src/lib/Components/Breadcrumbs/index.svelte.js +88 -0
  231. package/src/lib/Components/Button/index.svelte +721 -0
  232. package/src/lib/Components/Button/index.svelte.js +375 -0
  233. package/src/lib/Components/Chart/Klines/index.svelte +87 -0
  234. package/src/lib/Components/Chart/index.svelte +226 -0
  235. package/src/lib/Components/Chart/index.svelte.js +1084 -0
  236. package/src/lib/Components/ChartInput/DisplayNav/Klines/index.svelte +150 -0
  237. package/src/lib/Components/ChartInput/DisplayNav/Lines/index.svelte +45 -0
  238. package/src/lib/Components/ChartInput/DisplayNav/index.svelte +297 -0
  239. package/src/lib/Components/ChartInput/EditPanel/index.svelte +155 -0
  240. package/src/lib/Components/ChartInput/index.svelte +21 -0
  241. package/src/lib/Components/ChartInput/index.svelte.js +671 -0
  242. package/src/lib/Components/Checkbox/index.svelte +411 -0
  243. package/src/lib/Components/Checkbox/index.svelte.js +178 -0
  244. package/src/lib/Components/Code/index.svelte +23 -0
  245. package/src/lib/Components/Code/index.svelte.js +34 -0
  246. package/src/lib/Components/Color/index.svelte +51 -0
  247. package/src/lib/Components/Color/index.svelte.js +31 -0
  248. package/src/lib/Components/ColorInput/ChromaPicker/index.svelte +50 -0
  249. package/src/lib/Components/ColorInput/ColorPalette/index.svelte +62 -0
  250. package/src/lib/Components/ColorInput/OpacityPicker/index.svelte +68 -0
  251. package/src/lib/Components/ColorInput/ShowcasePicker/index.svelte +136 -0
  252. package/src/lib/Components/ColorInput/index.svelte +70 -0
  253. package/src/lib/Components/ColorInput/index.svelte.js +383 -0
  254. package/src/lib/Components/ConditionsInput/index.svelte +46 -0
  255. package/src/lib/Components/ConditionsInput/index.svelte.js +201 -0
  256. package/src/lib/Components/Confetti/index.svelte +98 -0
  257. package/src/lib/Components/Confetti/index.svelte.js +94 -0
  258. package/src/lib/Components/Content/index.svelte +471 -0
  259. package/src/lib/Components/Content/index.svelte.js +903 -0
  260. package/src/lib/Components/ContentInput/AttributesInput/CustomConfig/Audio/index.svelte +31 -0
  261. package/src/lib/Components/ContentInput/AttributesInput/CustomConfig/Audio/index.svelte.js +258 -0
  262. package/src/lib/Components/ContentInput/AttributesInput/CustomConfig/AudioAdvanced/index.svelte +31 -0
  263. package/src/lib/Components/ContentInput/AttributesInput/CustomConfig/AudioAdvanced/index.svelte.js +258 -0
  264. package/src/lib/Components/ContentInput/AttributesInput/CustomConfig/Dropdown/index.svelte +58 -0
  265. package/src/lib/Components/ContentInput/AttributesInput/CustomConfig/Dropdown/index.svelte.js +210 -0
  266. package/src/lib/Components/ContentInput/AttributesInput/CustomConfig/Image/index.svelte +28 -0
  267. package/src/lib/Components/ContentInput/AttributesInput/CustomConfig/Image/index.svelte.js +224 -0
  268. package/src/lib/Components/ContentInput/AttributesInput/CustomConfig/Number/index.svelte +44 -0
  269. package/src/lib/Components/ContentInput/AttributesInput/CustomConfig/Number/index.svelte.js +273 -0
  270. package/src/lib/Components/ContentInput/AttributesInput/CustomConfig/Qr/index.svelte +41 -0
  271. package/src/lib/Components/ContentInput/AttributesInput/CustomConfig/Qr/index.svelte.js +203 -0
  272. package/src/lib/Components/ContentInput/AttributesInput/CustomConfig/Slider/index.svelte +19 -0
  273. package/src/lib/Components/ContentInput/AttributesInput/CustomConfig/Slider/index.svelte.js +119 -0
  274. package/src/lib/Components/ContentInput/AttributesInput/CustomConfig/TableAdvanced/index.svelte +60 -0
  275. package/src/lib/Components/ContentInput/AttributesInput/CustomConfig/TableAdvanced/index.svelte.js +546 -0
  276. package/src/lib/Components/ContentInput/AttributesInput/CustomConfig/Tag/index.svelte +47 -0
  277. package/src/lib/Components/ContentInput/AttributesInput/CustomConfig/Tag/index.svelte.js +185 -0
  278. package/src/lib/Components/ContentInput/AttributesInput/CustomConfig/TextInput/index.svelte +35 -0
  279. package/src/lib/Components/ContentInput/AttributesInput/CustomConfig/TextInput/index.svelte.js +224 -0
  280. package/src/lib/Components/ContentInput/AttributesInput/CustomConfig/TimeInput/index.svelte +20 -0
  281. package/src/lib/Components/ContentInput/AttributesInput/CustomConfig/TimeInput/index.svelte.js +87 -0
  282. package/src/lib/Components/ContentInput/AttributesInput/DefinedTypeInput/index.svelte +25 -0
  283. package/src/lib/Components/ContentInput/AttributesInput/DefinedTypeInput/index.svelte.js +101 -0
  284. package/src/lib/Components/ContentInput/AttributesInput/index.svelte +338 -0
  285. package/src/lib/Components/ContentInput/AttributesInput/index.svelte.js +1446 -0
  286. package/src/lib/Components/ContentInput/ContentPanelBuilder/AddElement/index.svelte +64 -0
  287. package/src/lib/Components/ContentInput/ContentPanelBuilder/AddElement/index.svelte.js +97 -0
  288. package/src/lib/Components/ContentInput/ContentPanelBuilder/ElementList/index.svelte +122 -0
  289. package/src/lib/Components/ContentInput/ContentPanelBuilder/index.svelte +41 -0
  290. package/src/lib/Components/ContentInput/index.svelte +50 -0
  291. package/src/lib/Components/ContentInput/index.svelte.js +1066 -0
  292. package/src/lib/Components/CronInput/index.svelte +78 -0
  293. package/src/lib/Components/CronInput/index.svelte.js +199 -0
  294. package/src/lib/Components/DataTypeInput/index.svelte +174 -0
  295. package/src/lib/Components/DataTypeInput/index.svelte.js +568 -0
  296. package/src/lib/Components/Dropdown/index.svelte +116 -0
  297. package/src/lib/Components/Dropdown/index.svelte.js +403 -0
  298. package/src/lib/Components/EmailAddress/index.svelte +22 -0
  299. package/src/lib/Components/EmailAddress/index.svelte.js +45 -0
  300. package/src/lib/Components/ErrorX/index.svelte +58 -0
  301. package/src/lib/Components/Eye/index.svelte +57 -0
  302. package/src/lib/Components/FileInput/index.svelte +146 -0
  303. package/src/lib/Components/FileInput/index.svelte.js +226 -0
  304. package/src/lib/Components/FunctionInput/Node/helpers/DefinedTargetInput/index.svelte +110 -0
  305. package/src/lib/Components/FunctionInput/Node/helpers/Field/index.svelte +109 -0
  306. package/src/lib/Components/FunctionInput/Node/helpers/Field/index.svelte.js +208 -0
  307. package/src/lib/Components/FunctionInput/Node/helpers/InlineDropArea/index.svelte +97 -0
  308. package/src/lib/Components/FunctionInput/Node/helpers/InlineDropArea/index.svelte.js +105 -0
  309. package/src/lib/Components/FunctionInput/Node/helpers/ObjectInput/index.svelte +198 -0
  310. package/src/lib/Components/FunctionInput/Node/helpers/StackArea/index.svelte +169 -0
  311. package/src/lib/Components/FunctionInput/Node/helpers/StackArea/index.svelte.js +152 -0
  312. package/src/lib/Components/FunctionInput/Node/index.svelte +144 -0
  313. package/src/lib/Components/FunctionInput/Node/index.svelte.js +130 -0
  314. package/src/lib/Components/FunctionInput/index.svelte +356 -0
  315. package/src/lib/Components/FunctionInput/index.svelte.js +1215 -0
  316. package/src/lib/Components/Hamburger/index.svelte +99 -0
  317. package/src/lib/Components/HorizScrollBox/index.svelte +145 -0
  318. package/src/lib/Components/Icon/index.svelte +412 -0
  319. package/src/lib/Components/Icon/index.svelte.js +117 -0
  320. package/src/lib/Components/IconInput/index.svelte +77 -0
  321. package/src/lib/Components/IconInput/index.svelte.js +260 -0
  322. package/src/lib/Components/Image/index.svelte +121 -0
  323. package/src/lib/Components/Image/index.svelte.js +114 -0
  324. package/src/lib/Components/ImageEditor/Image/CropBox/index.svelte +165 -0
  325. package/src/lib/Components/ImageEditor/Image/index.svelte +104 -0
  326. package/src/lib/Components/ImageEditor/Panels/AI/index.svelte +36 -0
  327. package/src/lib/Components/ImageEditor/Panels/Crop/index.svelte +96 -0
  328. package/src/lib/Components/ImageEditor/Panels/File/QualityPicker/index.svelte +124 -0
  329. package/src/lib/Components/ImageEditor/Panels/File/index.svelte +74 -0
  330. package/src/lib/Components/ImageEditor/Panels/Filters/index.svelte +46 -0
  331. package/src/lib/Components/ImageEditor/Panels/Resize/index.svelte +58 -0
  332. package/src/lib/Components/ImageEditor/index.svelte +91 -0
  333. package/src/lib/Components/ImageEditor/index.svelte.js +1907 -0
  334. package/src/lib/Components/ImageSlider/index.svelte +124 -0
  335. package/src/lib/Components/ImageSlider/index.svelte.js +99 -0
  336. package/src/lib/Components/InfoBox/index.svelte +89 -0
  337. package/src/lib/Components/Json/Nested/index.svelte +157 -0
  338. package/src/lib/Components/Json/index.svelte +60 -0
  339. package/src/lib/Components/Json/index.svelte.js +594 -0
  340. package/src/lib/Components/LabeledItem/index.svelte +102 -0
  341. package/src/lib/Components/Layout/NavBar/FullNav/index.svelte +53 -0
  342. package/src/lib/Components/Layout/NavBar/NavGuts/index.svelte +87 -0
  343. package/src/lib/Components/Layout/NavBar/index.svelte +72 -0
  344. package/src/lib/Components/Layout/index.svelte +149 -0
  345. package/src/lib/Components/Layout/index.svelte.js +362 -0
  346. package/src/lib/Components/Link/index.svelte +46 -0
  347. package/src/lib/Components/Link/index.svelte.js +126 -0
  348. package/src/lib/Components/LoadingSuccessDiv/index.svelte +51 -0
  349. package/src/lib/Components/LoadingWheel/index.svelte +38 -0
  350. package/src/lib/Components/Location/index.svelte +85 -0
  351. package/src/lib/Components/Location/index.svelte.js +292 -0
  352. package/src/lib/Components/LocationInput/index.svelte +200 -0
  353. package/src/lib/Components/LocationInput/index.svelte.js +950 -0
  354. package/src/lib/Components/Number/index.svelte +47 -0
  355. package/src/lib/Components/Number/index.svelte.js +151 -0
  356. package/src/lib/Components/PhoneCountryCode/index.svelte +7 -0
  357. package/src/lib/Components/PhoneCountryCode/index.svelte.js +260 -0
  358. package/src/lib/Components/PhoneNumber/index.svelte +22 -0
  359. package/src/lib/Components/PhoneNumber/index.svelte.js +41 -0
  360. package/src/lib/Components/Popover/index.svelte +396 -0
  361. package/src/lib/Components/Popover/index.svelte.js +319 -0
  362. package/src/lib/Components/Qr/index.svelte +60 -0
  363. package/src/lib/Components/Qr/index.svelte.js +295 -0
  364. package/src/lib/Components/Slider/index.svelte +231 -0
  365. package/src/lib/Components/Slider/index.svelte.js +468 -0
  366. package/src/lib/Components/Spacer/index.svelte +41 -0
  367. package/src/lib/Components/StoragePicker/DisplayFile/index.svelte +15 -0
  368. package/src/lib/Components/StoragePicker/index.svelte +192 -0
  369. package/src/lib/Components/StoragePicker/index.svelte.js +593 -0
  370. package/src/lib/Components/SuccessCheck/index.svelte +56 -0
  371. package/src/lib/Components/TableAdvanced/ColumnInput/index.svelte +110 -0
  372. package/src/lib/Components/TableAdvanced/ColumnInput/index.svelte.js +494 -0
  373. package/src/lib/Components/TableAdvanced/FilterInput/index.svelte +54 -0
  374. package/src/lib/Components/TableAdvanced/FilterInput/index.svelte.js +247 -0
  375. package/src/lib/Components/TableAdvanced/Pagination/index.svelte +43 -0
  376. package/src/lib/Components/TableAdvanced/Pagination/index.svelte.js +97 -0
  377. package/src/lib/Components/TableAdvanced/SortByInput/index.svelte +79 -0
  378. package/src/lib/Components/TableAdvanced/SortByInput/index.svelte.js +191 -0
  379. package/src/lib/Components/TableAdvanced/index.svelte +268 -0
  380. package/src/lib/Components/TableAdvanced/index.svelte.js +1422 -0
  381. package/src/lib/Components/Tag/index.svelte +45 -0
  382. package/src/lib/Components/Tag/index.svelte.js +76 -0
  383. package/src/lib/Components/TextArrayInput/index.svelte +108 -0
  384. package/src/lib/Components/TextArrayInput/index.svelte.js +239 -0
  385. package/src/lib/Components/TextInput/PasswordTooltip/index.svelte +89 -0
  386. package/src/lib/Components/TextInput/index.svelte +223 -0
  387. package/src/lib/Components/TextInput/index.svelte.js +434 -0
  388. package/src/lib/Components/Time/index.svelte +7 -0
  389. package/src/lib/Components/Time/index.svelte.js +38 -0
  390. package/src/lib/Components/TimeInput/NumberToggler/index.svelte +34 -0
  391. package/src/lib/Components/TimeInput/NumberToggler/index.svelte.js +79 -0
  392. package/src/lib/Components/TimeInput/index.js +699 -0
  393. package/src/lib/Components/TimeInput/index.svelte +211 -0
  394. package/src/lib/Components/TimeInput/index.svelte.js +638 -0
  395. package/src/lib/Components/Tooltip/index.svelte +143 -0
  396. package/src/lib/Components/TransparentBackground/index.svelte +153 -0
  397. package/src/lib/Components/TypingDots/index.svelte +84 -0
  398. package/src/lib/Components/VariablePathInput/index.svelte +109 -0
  399. package/src/lib/Components/VariablePathInput/index.svelte.js +250 -0
  400. package/src/lib/Components/VideoTBD/index.svelte +100 -0
  401. package/src/lib/Components/XFollow/index.svelte +42 -0
  402. package/src/lib/Components/XPost/index.svelte +52 -0
  403. package/src/lib/Components/XPost/index.svelte.js +64 -0
  404. package/src/lib/Components/YoutubeVideo/index.svelte +73 -0
  405. package/src/lib/Components/YoutubeVideo/index.svelte.js +54 -0
  406. package/src/lib/actions/draggable.js +49 -0
  407. package/src/lib/actions/intersection_observer.js +24 -0
  408. package/src/lib/actions/no_spaces.js +33 -0
  409. package/src/lib/actions/numbers_only.js +26 -0
  410. package/src/lib/actions/scroll_y.js +28 -0
  411. package/src/lib/actions/stop_scroll_propagation_y.js +42 -0
  412. package/src/lib/actions/swipe_handler.js +295 -0
  413. package/src/lib/client/astc_formatting/index.js +1167 -0
  414. package/src/lib/client/docs/index.js +7612 -0
  415. package/src/lib/client/index.js +729 -0
  416. package/src/lib/client/types/index.js +4681 -0
  417. package/src/lib/index.js +161 -0
  418. package/src/lib/style.css +682 -0
  419. package/src/notlib/assets/static/Logo/index.svelte +27 -0
  420. package/src/routes/+layout.js +8 -0
  421. package/src/routes/+layout.svelte +176 -0
  422. package/src/routes/+page.svelte +83 -0
  423. package/src/routes/[component]/+page.svelte +167 -0
  424. package/src/routes/[component]/Showcase/Alert/index.svelte +26 -0
  425. package/src/routes/[component]/Showcase/Audio/index.svelte +86 -0
  426. package/src/routes/[component]/Showcase/AudioEditor/index.svelte +93 -0
  427. package/src/routes/[component]/Showcase/AuthCodeInput/index.svelte +13 -0
  428. package/src/routes/[component]/Showcase/Breadcrumbs/index.svelte +44 -0
  429. package/src/routes/[component]/Showcase/Button/index.svelte +350 -0
  430. package/src/routes/[component]/Showcase/Chart/index.svelte +11117 -0
  431. package/src/routes/[component]/Showcase/Checkbox/index.svelte +52 -0
  432. package/src/routes/[component]/Showcase/Code/index.svelte +13 -0
  433. package/src/routes/[component]/Showcase/Color/index.svelte +28 -0
  434. package/src/routes/[component]/Showcase/ColorInput/index.svelte +35 -0
  435. package/src/routes/[component]/Showcase/ConditionsInput/index.svelte +18 -0
  436. package/src/routes/[component]/Showcase/Confetti/index.svelte +22 -0
  437. package/src/routes/[component]/Showcase/Content/index.svelte +144 -0
  438. package/src/routes/[component]/Showcase/ContentInput/index.svelte +358 -0
  439. package/src/routes/[component]/Showcase/CronInput/index.svelte +30 -0
  440. package/src/routes/[component]/Showcase/DocsDefinition/index.svelte +155 -0
  441. package/src/routes/[component]/Showcase/Dropdown/index.svelte +88 -0
  442. package/src/routes/[component]/Showcase/FileInput/index.svelte +40 -0
  443. package/src/routes/[component]/Showcase/FunctionInput/index.svelte +77 -0
  444. package/src/routes/[component]/Showcase/Icon/index.svelte +120 -0
  445. package/src/routes/[component]/Showcase/IconInput/index.svelte +15 -0
  446. package/src/routes/[component]/Showcase/Image/index.svelte +119 -0
  447. package/src/routes/[component]/Showcase/ImageEditor/index.svelte +89 -0
  448. package/src/routes/[component]/Showcase/ImageSlider/index.svelte +26 -0
  449. package/src/routes/[component]/Showcase/InfoBox/index.svelte +44 -0
  450. package/src/routes/[component]/Showcase/Json/index.svelte +80 -0
  451. package/src/routes/[component]/Showcase/LabeledItem/index.svelte +18 -0
  452. package/src/routes/[component]/Showcase/Link/index.svelte +15 -0
  453. package/src/routes/[component]/Showcase/LoadingWheel/index.svelte +10 -0
  454. package/src/routes/[component]/Showcase/Location/index.svelte +422 -0
  455. package/src/routes/[component]/Showcase/LocationInput/index.svelte +121 -0
  456. package/src/routes/[component]/Showcase/Number/index.svelte +55 -0
  457. package/src/routes/[component]/Showcase/Popover/index.svelte +225 -0
  458. package/src/routes/[component]/Showcase/Qr/index.svelte +77 -0
  459. package/src/routes/[component]/Showcase/Slider/index.svelte +92 -0
  460. package/src/routes/[component]/Showcase/Spacer/index.svelte +27 -0
  461. package/src/routes/[component]/Showcase/StoragePicker/index.svelte +139 -0
  462. package/src/routes/[component]/Showcase/TableAdvanced/index.svelte +888 -0
  463. package/src/routes/[component]/Showcase/Tag/index.svelte +27 -0
  464. package/src/routes/[component]/Showcase/TextArrayInput/index.svelte +23 -0
  465. package/src/routes/[component]/Showcase/TextInput/index.svelte +95 -0
  466. package/src/routes/[component]/Showcase/Time/index.svelte +43 -0
  467. package/src/routes/[component]/Showcase/TimeInput/index.svelte +100 -0
  468. package/src/routes/[component]/Showcase/Tooltip/index.svelte +37 -0
  469. package/src/routes/[component]/Showcase/TransparentBackground/index.svelte +26 -0
  470. package/src/routes/[component]/Showcase/XFollow/index.svelte +7 -0
  471. package/src/routes/[component]/Showcase/XPost/index.svelte +24 -0
  472. package/src/routes/[component]/Showcase/YoutubeVideo/index.svelte +17 -0
  473. package/src/routes/test/+page.svelte +53 -0
  474. package/static/apple-touch-icon.png +0 -0
  475. package/static/browserconfig.xml +9 -0
  476. package/static/favicon-96x96.png +0 -0
  477. package/static/favicon-inactive.svg +4 -0
  478. package/static/favicon.svg +14 -0
  479. package/static/fonts/ProximaVara.woff2 +0 -0
  480. package/static/fonts/Quicksand-VariableFont.woff2 +0 -0
  481. package/static/fonts/RobotoSerif-VariableFont.woff2 +0 -0
  482. package/static/icon.png +0 -0
  483. package/static/site.webmanifest +21 -0
  484. package/static/web-app-manifest-192x192.png +0 -0
  485. package/static/web-app-manifest-512x512.png +0 -0
  486. package/svelte.config.js +12 -0
  487. package/vite.config.js +6 -0
@@ -0,0 +1,1084 @@
1
+ import { color_var } from "../../client/index.js"
2
+
3
+ export function create_chart_manager(config) {
4
+ const y_axis_width = 70
5
+ const x_axis_height = 30
6
+
7
+ let datasets = $state(null)
8
+ let chart_prepped = $state(null)
9
+ let grid_width = $state(null)
10
+ let frame_width = $derived(grid_width ? grid_width - y_axis_width : 0)
11
+
12
+ function set_grid_width(input) {
13
+ grid_width = input
14
+ if (!chart_prepped) {
15
+ chart_prepped = prep_chart({ ...config?.chart, shown_start_x: null, shown_end_x: null })
16
+ }
17
+ }
18
+
19
+ function gen_color(l, c, h, o = 16, is_theme_based = true, dark_l_offset = 0, isDarkTheme = true, is_safari = false) {
20
+ const l_try = l + dark_l_offset
21
+ const l_limited = l_try > 16 ? 16 : l_try < 1 ? 1 : l_try
22
+ const l_corrected = isDarkTheme ? l_limited : l
23
+ return color_var(l_corrected, c, h, o, is_theme_based, is_safari)
24
+ }
25
+
26
+ function normalize(x, min, max) {
27
+ const numerator = x - min
28
+ const denominator = max - min
29
+ return numerator != 0 && denominator != 0 ? numerator / denominator : 0
30
+ }
31
+
32
+ function denormalize(x, min, max) {
33
+ const range = max - min
34
+ return x != 0 && range != 0 ? x * range + min : min
35
+ }
36
+
37
+ const period_to_sec = {
38
+ "5m": 300, //5m
39
+ "10m": 600, //10m
40
+ "15m": 900, //15m
41
+ "20m": 1200, //20m
42
+ "30m": 1800, //30m
43
+ "45m": 2700, //45m
44
+ "1h": 3600, //1h
45
+ "2h": 7200, //2h
46
+ "3h": 10800, //3h
47
+ "4h": 14400, //4h
48
+ "6h": 21600, //6h
49
+ "8h": 28800, //8h
50
+ "12h": 43200, //12h
51
+ "1d": 86400, //1d
52
+ "2d": 172800, //2d
53
+ "3d": 259200, //3d
54
+ "4d": 345600, //4d
55
+ "1w": 604800, //1w
56
+ "2w": 1209600, //2w
57
+ }
58
+
59
+ function generate_id(prefix) {
60
+ return prefix + "-" + Math.floor(Math.random() * 1000000000000)
61
+ }
62
+
63
+ function add_val_to_obj_with_path(obj, pathList) {
64
+ let current = obj
65
+ for (let key of pathList) {
66
+ if (!(key in current)) {
67
+ current[key] = {}
68
+ }
69
+ current = current[key]
70
+ }
71
+ return obj
72
+ }
73
+ function add_val_to_obj_with_path_2(obj, pathList, val) {
74
+ let current = obj
75
+ for (let [index, key] of pathList.entries()) {
76
+ if (!(key in current)) {
77
+ current[key] = {}
78
+ }
79
+ if (index === pathList.length - 1) {
80
+ current[key] = val ? val : {}
81
+ }
82
+ current = current[key]
83
+ }
84
+ return obj
85
+ }
86
+
87
+ function does_path_exist_on_obj(obj, pathList) {
88
+ let current = obj
89
+ for (let [index, key] of pathList.entries()) {
90
+ if (index < pathList.length && !(key in current)) {
91
+ return false
92
+ }
93
+ current = current[key]
94
+ }
95
+ return true
96
+ }
97
+ function remove_val_to_obj_with_path(obj, pathList) {
98
+ let current = obj
99
+ for (let [index, key] of pathList.entries()) {
100
+ if (index === pathList.length - 1) {
101
+ delete current[key]
102
+ }
103
+ current = current[key]
104
+ }
105
+ return obj
106
+ }
107
+
108
+ function get_obj_from_path(obj, path) {
109
+ let current = obj
110
+ for (let i = 0; i < path.length; i++) {
111
+ if (!(path[i] in current)) return false
112
+ current = current[path[i]]
113
+ }
114
+ return current
115
+ }
116
+
117
+ function scroll_frame(e, shown_start_x, shown_end_x, min_x_scrollable, max_x_scrollable, frame_width) {
118
+ const period_sec = 90 // needs work
119
+ const shown_x_range = shown_end_x - shown_start_x
120
+ const change_sec = (Math.round((shown_x_range * 0.01) / 60) + 1) * 60
121
+ let shown_end_x_loc = shown_end_x
122
+ let shown_start_x_loc = shown_start_x
123
+ if (e.deltaX < -1 && shown_end_x > min_x_scrollable) {
124
+ shown_start_x_loc -= change_sec
125
+ shown_end_x_loc -= change_sec
126
+ } else if (e.deltaX > 1 && shown_start_x < max_x_scrollable) {
127
+ shown_start_x_loc += change_sec
128
+ shown_end_x_loc += change_sec
129
+ }
130
+ let x_pd = e.offsetX / frame_width
131
+ if (e.deltaY < -1 && shown_x_range > 90 * period_sec) {
132
+ shown_start_x_loc += shown_start_x_loc < max_x_scrollable ? Math.round((change_sec * x_pd) / 10) * 10 : 0
133
+ shown_end_x_loc -= shown_end_x_loc > min_x_scrollable ? Math.round((change_sec * (1 - x_pd)) / 10) * 10 : 0
134
+ } else if (e.deltaY > 1 && shown_x_range < period_sec * 10000) {
135
+ shown_start_x_loc -= shown_start_x_loc > min_x_scrollable ? Math.round((change_sec * x_pd) / 10) * 10 : 0
136
+ shown_end_x_loc += shown_end_x_loc < max_x_scrollable ? Math.round((change_sec * (1 - x_pd)) / 10) * 10 : 0
137
+ }
138
+ return {
139
+ shown_start_x: shown_start_x_loc,
140
+ shown_end_x: shown_end_x_loc,
141
+ }
142
+ }
143
+
144
+ function get_kline_details(o, l, h, c) {
145
+ let res = {}
146
+ const is_closed_higher = c > o ? 1 : 0
147
+ const kline_height = h - l
148
+ const kline_box_height = Math.abs(c - o)
149
+ let kline_top_wick_height = h - o
150
+ let kline_bottom_wick_height = c - l
151
+ if (is_closed_higher) {
152
+ kline_top_wick_height = h - c
153
+ kline_bottom_wick_height = o - l
154
+ }
155
+ const kline_box_height_pd = kline_box_height / kline_height
156
+ const kline_top_wick_height_pd = kline_top_wick_height / kline_height
157
+ const kline_bottom_wick_height_pd = kline_bottom_wick_height / kline_height
158
+ const kline_close_height_pd = (c - l) / kline_height
159
+ res["is_closed_higher"] = is_closed_higher
160
+ res["kline_height"] = kline_height
161
+ res["kline_box_height"] = kline_box_height
162
+ res["kline_top_wick_height"] = kline_top_wick_height
163
+ res["kline_bottom_wick_height"] = kline_bottom_wick_height
164
+ res["kline_box_height_pd"] = kline_box_height_pd
165
+ res["kline_top_wick_height_pd"] = kline_top_wick_height_pd
166
+ res["kline_bottom_wick_height_pd"] = kline_bottom_wick_height_pd
167
+ res["kline_close_height_pd"] = kline_close_height_pd
168
+ return res
169
+ }
170
+
171
+ function time_tic_size(seconds) {
172
+ const ticOptions = [
173
+ 300, //5m
174
+ 600, //10m
175
+ 900, //15m
176
+ 1200, //20m
177
+ 1800, //30m
178
+ 2700, //45m
179
+ 3600, //1h
180
+ 7200, //2h
181
+ 10800, //3h
182
+ 14400, //4h
183
+ 21600, //6h
184
+ 28800, //8h
185
+ 43200, //12h
186
+ 86400, //1d
187
+ 172800, //2d
188
+ 259200, //3d
189
+ 345600, //4d
190
+ 604800, //1w
191
+ 1209600, //2w
192
+ 2635200, //1m (30.5d)
193
+ 7905600, //3m (91.5d)
194
+ 15768000, //6m
195
+ 31536000, //1y
196
+ ]
197
+ for (let i = 0; i < ticOptions.length - 1; i++) {
198
+ if (ticOptions[i] < seconds && ticOptions[i + 1] > seconds) {
199
+ return ticOptions[i + 1]
200
+ }
201
+ }
202
+ return "-"
203
+ }
204
+
205
+ function base_time(high, cleanTicTimeChange) {
206
+ const dHigh = new Date(high * 1000)
207
+ const year = dHigh.getFullYear()
208
+ const month = dHigh.getMonth()
209
+ const day = dHigh.getDate()
210
+ const hour = dHigh.getHours()
211
+ const minute = dHigh.getMinutes()
212
+ const ticBases = {
213
+ 31536000: { focus: "y", values: [] }, //1y
214
+ 15768000: { focus: "M", values: [11, 5, 0] }, //6m
215
+ 7905600: { focus: "M", values: [11, 8, 5, 2, 0] }, //3m (91.5d)
216
+ 2635200: { focus: "M", values: [11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0] }, //1m (30.5d)
217
+ 1209600: { focus: "d", values: [28, 14, 0] }, //2w
218
+ 604800: { focus: "d", values: [28, 21, 14, 7, 0] }, //1w
219
+ 345600: { focus: "d", values: [28, 24, 20, 16, 12, 8, 4, 0] }, //4d
220
+ 259200: { focus: "d", values: [30, 27, 24, 21, 18, 15, 12, 9, 6, 3, 0] }, //3d
221
+ 172800: { focus: "d", values: [30, 28, 26, 24, 22, 20, 18, 16, 14, 12, 10, 8, 6, 4, 2, 0] }, //2d
222
+ 86400: {
223
+ focus: "d",
224
+ values: [
225
+ 31, 30, 19, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3,
226
+ 2, 1, 0,
227
+ ],
228
+ }, //1d
229
+ 43200: { focus: "h", values: [12, 0] }, //12h
230
+ 28800: { focus: "h", values: [16, 8, 0] }, //8h
231
+ 21600: { focus: "h", values: [18, 12, 6, 0] }, //6h
232
+ 14400: { focus: "h", values: [20, 16, 12, 8, 4, 0] }, //4h
233
+ 10800: { focus: "h", values: [21, 18, 15, 12, 9, 6, 3, 0] }, //3h
234
+ 7200: { focus: "h", values: [22, 20, 18, 16, 14, 12, 10, 8, 6, 4, 2, 0] }, //2h
235
+ 3600: {
236
+ focus: "h",
237
+ values: [23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0],
238
+ }, //1h
239
+ 2700: { focus: "m", values: [45, 0] }, //45m
240
+ 1800: { focus: "m", values: [30, 0] }, //30m
241
+ 1200: { focus: "m", values: [40, 20, 0] }, //20m
242
+ 900: { focus: "m", values: [45, 30, 15, 0] }, //15m
243
+ 600: { focus: "m", values: [50, 40, 30, 20, 10, 0] }, //10m
244
+ 300: { focus: "m", values: [55, 50, 45, 40, 35, 30, 25, 20, 25, 20, 5, 0] }, //5m
245
+ }
246
+ var d = new Date()
247
+ d.setFullYear(year)
248
+ d.setMonth(0)
249
+ d.setDate(1)
250
+ d.setHours(0)
251
+ d.setMinutes(0)
252
+ d.setMilliseconds(0)
253
+ switch (ticBases[cleanTicTimeChange]?.focus) {
254
+ case "y": {
255
+ break
256
+ }
257
+ case "M": {
258
+ d.setFullYear(year)
259
+ for (let item of ticBases[cleanTicTimeChange].values) {
260
+ if (item < month) {
261
+ d.setMonth(item)
262
+ break
263
+ }
264
+ }
265
+ break
266
+ }
267
+ case "d": {
268
+ d.setFullYear(year)
269
+ d.setMonth(month)
270
+ for (let item of ticBases[cleanTicTimeChange].values) {
271
+ if (item < day) {
272
+ d.setDate(item)
273
+ break
274
+ }
275
+ }
276
+ break
277
+ }
278
+ case "h": {
279
+ d.setFullYear(year)
280
+ d.setMonth(month)
281
+ d.setDate(day)
282
+ for (let item of ticBases[cleanTicTimeChange].values) {
283
+ if (item < hour) {
284
+ d.setHours(item)
285
+ break
286
+ }
287
+ }
288
+ break
289
+ }
290
+ case "m": {
291
+ d.setFullYear(year)
292
+ d.setMonth(month)
293
+ d.setDate(day)
294
+ d.setHours(hour)
295
+ for (let item of ticBases[cleanTicTimeChange].values) {
296
+ if (item < minute) {
297
+ d.setMinutes(item)
298
+ break
299
+ }
300
+ }
301
+ break
302
+ }
303
+ default: {
304
+ d.setMonth(month)
305
+ d.setDate(day)
306
+ d.setHours(hour)
307
+ const remainer5min = minute % 300000
308
+ const floor5min = minute - remainer5min
309
+ d.setMinutes(floor5min)
310
+ break
311
+ }
312
+ }
313
+ return Math.floor(d.getTime() / 1000)
314
+ }
315
+
316
+ function readable_time(seconds) {
317
+ const months = ["JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC"]
318
+ const dateObject = new Date(seconds * 1000)
319
+ const year = dateObject.getFullYear()
320
+ const month = dateObject.getMonth()
321
+ const day = dateObject.getDate()
322
+ const hour = dateObject.getHours()
323
+ const minute = dateObject.getMinutes()
324
+ const yearSt = JSON.stringify(year)
325
+ const monthSt = months[month]
326
+ let daySt = JSON.stringify(day)
327
+ // if(daySt.length < 2){ daySt = '0' + daySt }
328
+ let hourSt = JSON.stringify(hour)
329
+ // if(hourSt.length < 2){ hourSt = '0' + hourSt }
330
+ let minuteSt = JSON.stringify(minute)
331
+ if (minuteSt.length < 2) {
332
+ minuteSt = "0" + minuteSt
333
+ }
334
+ const hourMinuteSt = hourSt + ":" + minuteSt
335
+ if (minute > 0 || hour > 0) {
336
+ return hourMinuteSt
337
+ } else if (day > 1) {
338
+ return daySt
339
+ } else if (month > 0) {
340
+ return monthSt
341
+ }
342
+ return yearSt
343
+ }
344
+
345
+ function prep_x_axis(
346
+ start_x,
347
+ end_x,
348
+ frame_width = 500,
349
+ min_tic_spacing_x_axis = 20,
350
+ min_tic_text_spacing_x_axis = 50
351
+ ) {
352
+ const amount_of_tics = Math.floor(frame_width / min_tic_spacing_x_axis)
353
+ const x_range = end_x - start_x
354
+ const tic_x_change = x_range / amount_of_tics
355
+ const clean_x_change = time_tic_size(tic_x_change)
356
+ const clean_x = base_time(end_x, clean_x_change)
357
+ const clean_x_text = readable_time(clean_x)
358
+ const clean_x_norm = (clean_x - start_x) / x_range
359
+ // const is_remaining_room_for_text = (1 - clean_x_norm) * frame_width >= (min_tic_text_spacing_x_axis / 2)
360
+ let tics = [
361
+ {
362
+ x: clean_x,
363
+ norm: clean_x_norm,
364
+ text: clean_x_text,
365
+ },
366
+ ]
367
+ let last_tic_with_text_x_norm = clean_x_norm
368
+ for (let i = 1; i < amount_of_tics; i++) {
369
+ const iter_x = clean_x + clean_x_change * i
370
+ const iter_x_norm = (iter_x - start_x) / x_range
371
+ // const is_remaining_room = ((end_x - iter_x) / x_range) * frame_width >= (min_tic_text_spacing_x_axis / 2)
372
+ const is_far_enough_from_prev_text =
373
+ !last_tic_with_text_x_norm ||
374
+ (iter_x_norm - last_tic_with_text_x_norm) * frame_width >= min_tic_text_spacing_x_axis
375
+ if (iter_x <= end_x) {
376
+ if (is_far_enough_from_prev_text) {
377
+ tics = [
378
+ ...tics,
379
+ {
380
+ x: iter_x,
381
+ norm: iter_x_norm,
382
+ text: readable_time(iter_x),
383
+ },
384
+ ]
385
+ last_tic_with_text_x_norm = iter_x_norm
386
+ } else {
387
+ tics = [
388
+ ...tics,
389
+ {
390
+ x: iter_x,
391
+ norm: iter_x_norm,
392
+ text: null,
393
+ },
394
+ ]
395
+ }
396
+ } else {
397
+ break
398
+ }
399
+ }
400
+ last_tic_with_text_x_norm = clean_x_norm
401
+ for (let i = 1; i < amount_of_tics; i++) {
402
+ const iter_x = clean_x - clean_x_change * i
403
+ const iter_x_norm = (iter_x - start_x) / x_range
404
+ // const is_remaining_room = iter_x_norm * frame_width >= (min_tic_text_spacing_x_axis / 2)
405
+ const is_far_enough_from_prev_text =
406
+ !last_tic_with_text_x_norm ||
407
+ (last_tic_with_text_x_norm - iter_x_norm) * frame_width >= min_tic_text_spacing_x_axis
408
+ if (iter_x >= start_x) {
409
+ if (is_far_enough_from_prev_text) {
410
+ tics = [
411
+ {
412
+ x: iter_x,
413
+ norm: iter_x_norm,
414
+ text: readable_time(iter_x),
415
+ },
416
+ ...tics,
417
+ ]
418
+ last_tic_with_text_x_norm = iter_x_norm
419
+ } else {
420
+ tics = [
421
+ {
422
+ x: iter_x,
423
+ norm: iter_x_norm,
424
+ text: null,
425
+ },
426
+ ...tics,
427
+ ]
428
+ }
429
+ } else {
430
+ break
431
+ }
432
+ }
433
+ return tics
434
+ }
435
+
436
+ function notable_num(low, high) {
437
+ let absClosestToZero = low
438
+ let absFartherToZero = high
439
+ let isPositive = true
440
+ if (high < 0) {
441
+ absClosestToZero = Math.abs(high)
442
+ absFartherToZero = Math.abs(low)
443
+ isPositive = false
444
+ }
445
+ let accumulatedNum = 0
446
+ while (accumulatedNum < absFartherToZero) {
447
+ const ceiling = absFartherToZero - accumulatedNum
448
+ const res = next_big_num_under_target(ceiling)
449
+ accumulatedNum += res
450
+ if (accumulatedNum > absClosestToZero) {
451
+ if (isPositive) {
452
+ return accumulatedNum
453
+ } else {
454
+ return -1 * accumulatedNum
455
+ }
456
+ }
457
+ }
458
+ return "-"
459
+ }
460
+
461
+ function next_big_num_under_target(target) {
462
+ const numBases = [
463
+ 100000000000000, 10000000000000, 1000000000000, 100000000000, 10000000000, 1000000000, 100000000, 50000000,
464
+ 20000000, 10000000, 5000000, 2000000, 1000000, 750000, 500000, 400000, 250000, 200000, 150000, 100000, 75000,
465
+ 50000, 40000, 25000, 20000, 15000, 10000, 7500, 5000, 4000, 3000, 2500, 2000, 1500, 1250, 1000, 750, 500, 400,
466
+ 300, 200, 150, 100, 75, 50, 40, 25, 20, 15, 12, 10, 8, 5, 4, 3, 2.5, 2, 1, 0.8, 0.5, 0.4, 0.3, 0.2, 0.1, 0.08,
467
+ 0.05, 0.04, 0.03, 0.02, 0.01, 0.008, 0.005, 0.004, 0.003, 0.002, 0.001, 0.0008, 0.0005, 0.0004, 0.0003, 0.0002,
468
+ 0.0001, 0.00008, 0.00005, 0.00004, 0.00003, 0.00002, 0.00001, 0.000008, 0.000005, 0.000004, 0.000003, 0.000002,
469
+ 0.000001, 0.0000008, 0.0000005, 0.0000004, 0.0000003, 0.0000002, 0.0000001,
470
+ ]
471
+ for (let num of numBases) {
472
+ if (num < target) {
473
+ return num
474
+ }
475
+ }
476
+ return 1
477
+ }
478
+
479
+ function tic_size(num) {
480
+ const ticOptions = [
481
+ 0.0000001, 0.0000002, 0.0000003, 0.0000004, 0.0000005, 0.0000008, 0.000001, 0.000002, 0.000003, 0.000004,
482
+ 0.000005, 0.000008, 0.00001, 0.00002, 0.00003, 0.00004, 0.00005, 0.00008, 0.0001, 0.0002, 0.0003, 0.0004, 0.0005,
483
+ 0.0008, 0.001, 0.002, 0.003, 0.004, 0.005, 0.008, 0.01, 0.02, 0.03, 0.04, 0.05, 0.08, 0.1, 0.2, 0.3, 0.4, 0.5,
484
+ 0.8, 1, 2, 2.5, 3, 4, 5, 8, 10, 12, 15, 20, 25, 40, 50, 75, 100, 150, 200, 300, 400, 500, 750, 1000, 1250, 1500,
485
+ 2000, 2500, 3000, 4000, 5000, 7500, 10000, 15000, 20000, 25000, 40000, 50000, 75000, 100000, 150000, 200000,
486
+ 250000, 400000, 500000, 750000, 1000000, 2000000, 5000000, 10000000, 20000000, 50000000, 100000000, 1000000000,
487
+ 10000000000, 100000000000, 1000000000000, 10000000000000, 100000000000000,
488
+ ]
489
+ for (let i = 0; i < ticOptions.length - 1; i++) {
490
+ if (ticOptions[i] < num && ticOptions[i + 1] > num) {
491
+ return ticOptions[i + 1]
492
+ }
493
+ }
494
+ return "-"
495
+ }
496
+
497
+ function prep_y_axis(
498
+ shown_low_y,
499
+ shown_high_y,
500
+ frame_height = 300,
501
+ min_tic_spacing_y_axis = 10,
502
+ min_tic_text_spacing_y_axis = 30
503
+ ) {
504
+ const amount_of_tics = Math.floor(frame_height / min_tic_spacing_y_axis)
505
+ const y_range = shown_high_y - shown_low_y
506
+ const tic_y_change = y_range / amount_of_tics
507
+ const clean_y_change = tic_size(tic_y_change)
508
+ const clean_y = notable_num(shown_low_y, shown_high_y)
509
+ const clean_y_norm = (clean_y - shown_low_y) / y_range
510
+ const clean_y_text = short_lab(clean_y)
511
+ const is_remaining_room_for_text = (1 - clean_y_norm) * frame_height >= min_tic_text_spacing_y_axis / 2
512
+ let tics = [
513
+ {
514
+ y: clean_y,
515
+ norm: clean_y_norm,
516
+ text: is_remaining_room_for_text ? clean_y_text : null,
517
+ ppp: (1 - clean_y_norm) * frame_height,
518
+ },
519
+ ]
520
+ let last_tic_with_text_y_norm = is_remaining_room_for_text ? clean_y_norm : null
521
+ for (let i = 1; i < amount_of_tics; i++) {
522
+ const iter_y = clean_y + clean_y_change * i
523
+ const iter_y_norm = (iter_y - shown_low_y) / y_range
524
+ const is_remaining_room = ((shown_high_y - iter_y) / y_range) * frame_height >= min_tic_text_spacing_y_axis / 2
525
+ const is_far_enough_from_prev_text =
526
+ !last_tic_with_text_y_norm ||
527
+ (iter_y_norm - last_tic_with_text_y_norm) * frame_height >= min_tic_text_spacing_y_axis
528
+ if (iter_y <= shown_high_y) {
529
+ if (is_far_enough_from_prev_text && is_remaining_room) {
530
+ tics = [
531
+ ...tics,
532
+ {
533
+ y: iter_y,
534
+ norm: iter_y_norm,
535
+ text: short_lab(iter_y),
536
+ },
537
+ ]
538
+ last_tic_with_text_y_norm = iter_y_norm
539
+ } else {
540
+ tics = [
541
+ ...tics,
542
+ {
543
+ y: iter_y,
544
+ norm: iter_y_norm,
545
+ text: null,
546
+ },
547
+ ]
548
+ }
549
+ } else {
550
+ break
551
+ }
552
+ }
553
+ last_tic_with_text_y_norm = clean_y_norm
554
+ for (let i = 1; i < amount_of_tics; i++) {
555
+ const iter_y = clean_y - clean_y_change * i
556
+ const iter_y_norm = (iter_y - shown_low_y) / y_range
557
+ const is_remaining_room = iter_y_norm * frame_height >= min_tic_text_spacing_y_axis / 2
558
+ const is_far_enough_from_prev_text =
559
+ !last_tic_with_text_y_norm ||
560
+ (last_tic_with_text_y_norm - iter_y_norm) * frame_height >= min_tic_text_spacing_y_axis
561
+ if (iter_y >= shown_low_y) {
562
+ if (is_far_enough_from_prev_text && is_remaining_room) {
563
+ tics = [
564
+ {
565
+ y: iter_y,
566
+ norm: iter_y_norm,
567
+ text: short_lab(iter_y),
568
+ },
569
+ ...tics,
570
+ ]
571
+ last_tic_with_text_y_norm = iter_y_norm
572
+ } else {
573
+ tics = [
574
+ {
575
+ x: iter_y,
576
+ norm: iter_y_norm,
577
+ text: null,
578
+ },
579
+ ...tics,
580
+ ]
581
+ }
582
+ } else {
583
+ break
584
+ }
585
+ }
586
+ return tics
587
+ }
588
+
589
+ function short_lab(num) {
590
+ var ifneg = 1
591
+ if ((typeof num === typeof null) | (typeof num === typeof undefined)) {
592
+ return "-"
593
+ }
594
+ if (num < 0) {
595
+ ifneg = -1
596
+ }
597
+ var amount
598
+ amount = Math.abs(num)
599
+ if (amount === 0) {
600
+ return 0
601
+ } else if (amount >= 0 && amount < 0.0001) {
602
+ return Math.round((ifneg * amount).toFixed(8) * 10000000 + Number.EPSILON) / 10000000
603
+ } else if (amount >= 0.0001 && amount < 0.001) {
604
+ return Math.round((ifneg * amount).toFixed(7) * 1000000 + Number.EPSILON) / 1000000
605
+ } else if (amount >= 0.001 && amount < 0.01) {
606
+ return Math.round((ifneg * amount).toFixed(6) * 100000 + Number.EPSILON) / 100000
607
+ } else if (amount >= 0.01 && amount < 0.1) {
608
+ return Math.round((ifneg * amount).toFixed(5) * 10000 + Number.EPSILON) / 10000
609
+ } else if (amount >= 0.1 && amount < 10) {
610
+ return Math.round((ifneg * amount).toFixed(4) * 1000 + Number.EPSILON) / 1000
611
+ } else if (amount >= 10 && amount < 1000) {
612
+ return (ifneg * amount).toFixed(2)
613
+ } else if (amount >= 1000 && amount < 1000000) {
614
+ return (ifneg * amount).toFixed().replace(/\B(?=(\d{3})+(?!\d))/g, ",")
615
+ } else if (amount >= 1000000 && amount < 10000000) {
616
+ return (ifneg * (amount / 1000000)).toFixed(2) + " M"
617
+ } else if (amount >= 10000000 && amount < 100000000) {
618
+ return (ifneg * (amount / 1000000)).toFixed(1) + " M"
619
+ } else if (amount >= 100000000 && amount < 1000000000) {
620
+ return (ifneg * (amount / 1000000)).toFixed() + " M"
621
+ } else if (amount >= 1000000000 && amount < 10000000000) {
622
+ return (ifneg * (amount / 1000000000)).toFixed(2) + " B"
623
+ } else if (amount >= 10000000000 && amount < 100000000000) {
624
+ return (ifneg * (amount / 1000000000)).toFixed(1) + " B"
625
+ } else if (amount >= 100000000000 && amount < 1000000000000) {
626
+ return (ifneg * (amount / 1000000000)).toFixed() + " B"
627
+ } else if (amount >= 1000000000000 && amount < 10000000000000) {
628
+ return (ifneg * (amount / 1000000000000)).toFixed(2) + " T"
629
+ } else if (amount >= 10000000000000 && amount < 100000000000000) {
630
+ return (ifneg * (amount / 1000000000000)).toFixed(1) + " T"
631
+ } else if (amount >= 100000000000000 && amount < 1000000000000000) {
632
+ return (ifneg * (amount / 1000000000000)).toFixed() + " T"
633
+ } else if (amount >= 1000000000000000 && amount < 10000000000000000n) {
634
+ return (ifneg * (amount / 1000000000000000)).toFixed(2) + " Q"
635
+ } else if (amount >= 10000000000000000n && amount < 100000000000000000n) {
636
+ return (ifneg * (amount / 1000000000000000)).toFixed(1) + " Q"
637
+ } else if (amount >= 100000000000000000n && amount < 1000000000000000000n) {
638
+ return (ifneg * (amount / 1000000000000000)).toFixed() + " Q"
639
+ } else if (amount >= 1000000000000000000n && amount < 10000000000000000000n) {
640
+ return (ifneg * (amount / 1000000000000000000n)).toFixed(2) + " QN"
641
+ } else if (amount >= 10000000000000000000n && amount < 100000000000000000000n) {
642
+ return (ifneg * (amount / 1000000000000000000n)).toFixed(1) + " QN"
643
+ } else if (amount >= 100000000000000000000n && amount < 1000000000000000000000n) {
644
+ return (ifneg * (amount / 1000000000000000000n)).toFixed() + " QN"
645
+ } else {
646
+ return "Big"
647
+ }
648
+ }
649
+
650
+ function handle_scroll_frame(e) {
651
+ const res = scroll_frame(
652
+ e,
653
+ chart_prepped.shown_start_x,
654
+ chart_prepped.shown_end_x,
655
+ chart_prepped?.min_x_scrollable,
656
+ chart_prepped?.max_x_scrollable,
657
+ frame_width
658
+ )
659
+ chart_prepped.set_shown_start_x(res.shown_start_x)
660
+ chart_prepped.set_shown_end_x(res.shown_end_x)
661
+ chart_prepped = prep_chart(chart_prepped)
662
+ }
663
+
664
+ function handle_chart_hover(e, frame_index) {
665
+ setTimeout(() => {
666
+ const hover_x_pd = e.offsetX / frame_width
667
+ chart_prepped.set_x_hovered_percent_decimal(hover_x_pd.toPrecision(3))
668
+ // const hover_x = Math.floor(hover_x_pd * (chart_prepped.shown_end_x - chart_prepped.shown_start_x) + chart_prepped.shown_start_x)
669
+ // chart_prepped.x_axis_highlight_tic = null
670
+ const hover_y_pd = (
671
+ (chart_prepped.frames[frame_index].frame_height - e.offsetY) /
672
+ chart_prepped.frames[frame_index].frame_height
673
+ ).toPrecision(3)
674
+ chart_prepped.frames[frame_index].y_hovered_percent_decimal = hover_y_pd
675
+ // for(let i = 0; i < chart_prepped.frames[frame_index].shared_y_axiss.length; i++){
676
+ // chart_prepped.frames[frame_index].shared_y_axiss[i].y_axis_highlight_tic = hover_y_pd * (chart_prepped.frames[frame_index].shared_y_axiss[i].shown_high_y - chart_prepped.frames[frame_index].shared_y_axiss[i].shown_low_y) + chart_prepped.frames[frame_index].shared_y_axiss[i].shown_low_y
677
+ // }
678
+ }, 100)
679
+ }
680
+
681
+ function handle_chart_hover_leave(frame_index) {
682
+ setTimeout(() => {
683
+ chart_prepped.x_hovered_percent_decimal = null
684
+ // chart_prepped.x_axis_highlight_tic = null
685
+ chart_prepped.frames[frame_index].y_hovered_percent_decimal = null
686
+ // for(let i = 0; i < chart_prepped.frames[frame_index].shared_y_axiss.length; i++){
687
+ // chart_prepped.frames[frame_index].shared_y_axiss[i].y_axis_highlight_tic = null
688
+ // }
689
+ }, 100)
690
+ }
691
+
692
+ function prep_chart(input) {
693
+ if (!input || !datasets || !grid_width) {
694
+ chart_prepped = null
695
+ return
696
+ }
697
+ let id = $state(input?.id)
698
+ let x_axis_type = $state(input?.x_axis_type)
699
+ let x_axis_title = $state(input?.x_axis_title)
700
+ let shown_start_x = $state(input?.shown_start_x)
701
+ let shown_end_x = $state(input?.shown_end_x)
702
+ let frames = $state(input?.frames)
703
+ let min_x_scrollable = $state(input?.min_x_scrollable)
704
+ let max_x_scrollable = $state(input?.max_x_scrollable)
705
+ let x_axis_highlight_tic = $state(input?.x_axis_highlight_tic)
706
+ let x_hovered_percent_decimal = $state(input?.x_hovered_percent_decimal)
707
+ let all_data_start_x_loc = $state(null)
708
+ let all_data_end_x_loc = $state(null)
709
+ let most_datapoints_for_x_dataset = 0
710
+ if (Array.isArray(frames)) {
711
+ for (let frame of frames) {
712
+ if (Array.isArray(frame?.shared_y_axiss)) {
713
+ for (let shared_y_axis of frame.shared_y_axiss) {
714
+ if (Array.isArray(shared_y_axis?.datasets)) {
715
+ for (let dataset of shared_y_axis.datasets) {
716
+ let most_datapoints_for_x_dataset_loc = 0
717
+ if (
718
+ ["klines", "path", "points"].some((h) => h == dataset.type) &&
719
+ Array.isArray(datasets[dataset?.dataset_id]?.data) &&
720
+ datasets[dataset?.dataset_id]?.data.length > 0
721
+ ) {
722
+ for (let datapoint of datasets[dataset.dataset_id].data) {
723
+ most_datapoints_for_x_dataset_loc++
724
+ if (
725
+ all_data_start_x_loc == undefined ||
726
+ all_data_start_x_loc == null ||
727
+ isNaN(all_data_start_x_loc) ||
728
+ datapoint?.[dataset?.keys?.[0]] < all_data_start_x_loc
729
+ ) {
730
+ all_data_start_x_loc = datapoint?.[dataset?.keys?.[0]]
731
+ }
732
+ if (
733
+ all_data_end_x_loc == undefined ||
734
+ all_data_end_x_loc == null ||
735
+ isNaN(all_data_end_x_loc) ||
736
+ datapoint?.[dataset?.keys?.[0]] > all_data_end_x_loc
737
+ ) {
738
+ all_data_end_x_loc = datapoint?.[dataset?.keys?.[0]]
739
+ }
740
+ }
741
+ }
742
+ if (most_datapoints_for_x_dataset_loc > most_datapoints_for_x_dataset) {
743
+ most_datapoints_for_x_dataset = most_datapoints_for_x_dataset_loc
744
+ }
745
+ }
746
+ }
747
+ }
748
+ }
749
+ }
750
+ }
751
+ const x_range = all_data_end_x_loc - all_data_start_x_loc
752
+ let range_to_show = x_range
753
+ let shown_start_x_loc = all_data_start_x_loc
754
+ if (most_datapoints_for_x_dataset > 20) {
755
+ range_to_show = (x_range * 20) / most_datapoints_for_x_dataset
756
+ shown_start_x_loc = all_data_end_x_loc - parseFloat(range_to_show.toPrecision(8))
757
+ }
758
+ min_x_scrollable = all_data_start_x_loc + Math.floor(range_to_show * 0.1)
759
+ max_x_scrollable = all_data_end_x_loc - Math.floor(range_to_show * 0.1)
760
+ if (shown_start_x == null || isNaN(shown_start_x)) {
761
+ shown_start_x = shown_start_x_loc
762
+ } else if (shown_start_x >= max_x_scrollable) {
763
+ shown_start_x = min_x_scrollable
764
+ }
765
+ if (shown_end_x == null || isNaN(shown_end_x)) {
766
+ shown_end_x = all_data_end_x_loc
767
+ } else if (shown_end_x <= min_x_scrollable) {
768
+ shown_end_x = max_x_scrollable
769
+ }
770
+ let prepped_frames = []
771
+ for (let frame of frames) {
772
+ const frame_height = frame_width / frame.aspect_ratio
773
+ let shown_y_axis_index = $state(0)
774
+ let prepped_shared_y_axiss = []
775
+ for (let shared_y_axis of frame.shared_y_axiss) {
776
+ let y_points = []
777
+ let shown_datasets_in_shared_y_low_y
778
+ let shown_datasets_in_shared_y_high_y
779
+ let pre_prepped_datasets = []
780
+ for (let dataset of shared_y_axis.datasets) {
781
+ let shown_data = []
782
+ let d_loc = null
783
+ if (dataset.type === "klines" && dataset?.keys?.length == 5 && datasets[dataset?.dataset_id]?.data) {
784
+ for (let kline of datasets[dataset?.dataset_id]?.data) {
785
+ if (
786
+ !isNaN(kline[dataset?.keys[0]]) &&
787
+ !isNaN(kline[dataset?.keys[1]]) &&
788
+ !isNaN(kline[dataset?.keys[2]]) &&
789
+ !isNaN(kline[dataset?.keys[3]]) &&
790
+ !isNaN(kline[dataset?.keys[4]]) &&
791
+ shown_start_x <= kline[dataset?.keys[0]] &&
792
+ kline[dataset?.keys[0]] < shown_end_x
793
+ ) {
794
+ const item_to_add = {
795
+ x: kline[dataset?.keys[0]],
796
+ o: kline[dataset?.keys[1]],
797
+ l: kline[dataset?.keys[2]],
798
+ h: kline[dataset?.keys[3]],
799
+ c: kline[dataset?.keys[4]],
800
+ }
801
+ shown_data.push(item_to_add)
802
+ y_points.push((item_to_add.o + item_to_add.l + item_to_add.h + item_to_add.c) / 4)
803
+ }
804
+ }
805
+ } else if (
806
+ ["points", "path"].some((h) => h == dataset.type) &&
807
+ dataset?.keys?.length == 2 &&
808
+ datasets[dataset?.dataset_id]?.data
809
+ ) {
810
+ for (let datapoint of datasets[dataset?.dataset_id]?.data) {
811
+ if (
812
+ !isNaN(datapoint[dataset?.keys[0]]) &&
813
+ !isNaN(datapoint[dataset?.keys[1]]) &&
814
+ shown_start_x <= datapoint[dataset?.keys[0]] &&
815
+ datapoint[dataset?.keys[0]] < shown_end_x
816
+ ) {
817
+ const item_to_add = {
818
+ x: datapoint[dataset?.keys[0]],
819
+ y: datapoint[dataset?.keys[1]],
820
+ }
821
+ shown_data.push(item_to_add)
822
+ y_points.push(item_to_add.y)
823
+ }
824
+ }
825
+ if (dataset?.type == "path") {
826
+ if (Array.isArray(dataset?.data) && dataset?.data.length > 0) {
827
+ d_loc = `M${(dataset?.data[0]?.x * 100).toPrecision(4)} ${(100 - dataset?.data[0]?.y * 100).toPrecision(
828
+ 4
829
+ )}`
830
+ for (let i = 1; i < dataset?.data.length; i++) {
831
+ d_loc =
832
+ d_loc +
833
+ ` L${(dataset?.data[i].x * 100).toPrecision(4)} ${(100 - dataset?.data[i].y * 100).toPrecision(4)}`
834
+ }
835
+ }
836
+ }
837
+ } else if (dataset.type == "lines" && dataset?.keys?.length > 1 && datasets[dataset?.dataset_id]?.data) {
838
+ for (let datapoint of datasets[dataset?.dataset_id]?.data) {
839
+ if (!isNaN(datapoint[dataset?.keys[0]]) && !isNaN(datapoint[dataset?.keys[1]])) {
840
+ const item_to_add = {
841
+ m: datapoint[dataset?.keys[0]],
842
+ b: datapoint[dataset?.keys[1]],
843
+ s: dataset?.keys?.length > 2 ? datapoint[dataset?.keys[2]] : null,
844
+ }
845
+ shown_data.push(item_to_add)
846
+ if (!isNaN(datasets[dataset?.dataset_id]?.y_min) && !isNaN(datasets[dataset?.dataset_id]?.y_max)) {
847
+ y_points.push((datasets[dataset?.dataset_id]?.y_min + datasets[dataset?.dataset_id]?.y_max) / 2)
848
+ }
849
+ }
850
+ }
851
+ }
852
+ let color_one =
853
+ dataset?.colors.length > 0
854
+ ? gen_color(
855
+ dataset?.colors[0].l,
856
+ dataset?.colors[0].c,
857
+ dataset?.colors[0].h,
858
+ dataset?.colors[0].o,
859
+ dataset?.colors[0].is_theme_based
860
+ )
861
+ : "#44ff4450"
862
+ let color_two =
863
+ dataset?.colors.length > 1
864
+ ? gen_color(
865
+ dataset?.colors[1].l,
866
+ dataset?.colors[1].c,
867
+ dataset?.colors[1].h,
868
+ dataset?.colors[1].o,
869
+ dataset?.colors[1].is_theme_based
870
+ )
871
+ : color_one
872
+ ? color_one
873
+ : "#ff444450"
874
+ pre_prepped_datasets.push({
875
+ type: dataset.type,
876
+ data: shown_data,
877
+ dataset_id: dataset.dataset_id,
878
+ name: dataset.name,
879
+ period_x: dataset.period_x,
880
+ colors: dataset.colors,
881
+ color_one: color_one,
882
+ color_two: color_two,
883
+ d: d_loc,
884
+ keys: dataset.keys,
885
+ })
886
+ }
887
+ y_points.sort((a, b) => a - b)
888
+ const midpoint = Math.floor(y_points.length / 2)
889
+ const lowhalf = y_points.slice(0, midpoint)
890
+ const highhalf = y_points.slice(midpoint)
891
+ const lowhalfmean = lowhalf.reduce((partial_sum, a) => partial_sum + a, 0) / lowhalf.length
892
+ const highhalfmean = highhalf.reduce((partial_sum, a) => partial_sum + a, 0) / highhalf.length
893
+ shown_datasets_in_shared_y_low_y = parseFloat((lowhalfmean * 0.9).toPrecision(6))
894
+ shown_datasets_in_shared_y_high_y = parseFloat((highhalfmean * 1.1).toPrecision(6))
895
+ const shown_y_range =
896
+ (shown_datasets_in_shared_y_high_y - shown_datasets_in_shared_y_low_y) /
897
+ (1 - shared_y_axis.top_padding_pd - shared_y_axis.bottom_padding_pd)
898
+ let shown_low_y = shown_datasets_in_shared_y_low_y - shared_y_axis.bottom_padding_pd * shown_y_range
899
+ let shown_high_y = shown_datasets_in_shared_y_high_y + shared_y_axis.top_padding_pd * shown_y_range
900
+ const shown_x_range = shown_end_x - shown_start_x
901
+ let prepped_datasets = []
902
+ for (let pre_prepped_dataset of pre_prepped_datasets) {
903
+ const kline_width_pd = (pre_prepped_dataset.period_x * 1) / shown_x_range
904
+ let normalized_datapoints_in_range_loc = []
905
+ for (let datapoint of pre_prepped_dataset.data) {
906
+ if (pre_prepped_dataset.type === "klines") {
907
+ const norm_x = (datapoint.x - shown_start_x) / shown_x_range
908
+ const norm_o = (datapoint.o - shown_low_y) / shown_y_range
909
+ const norm_l = (datapoint.l - shown_low_y) / shown_y_range
910
+ const norm_h = (datapoint.h - shown_low_y) / shown_y_range
911
+ const norm_c = (datapoint.c - shown_low_y) / shown_y_range
912
+ const norm_details = get_kline_details(norm_o, norm_l, norm_h, norm_c)
913
+ normalized_datapoints_in_range_loc.push({
914
+ x: parseFloat(norm_x.toPrecision(6)),
915
+ o: parseFloat(norm_o.toPrecision(6)),
916
+ l: parseFloat(norm_l.toPrecision(6)),
917
+ h: parseFloat(norm_h.toPrecision(6)),
918
+ c: parseFloat(norm_c.toPrecision(6)),
919
+ ...norm_details,
920
+ })
921
+ } else if (pre_prepped_dataset.type === "lines") {
922
+ let x1 = shown_start_x
923
+ let y1 = datapoint.m * x1 + datapoint.b
924
+ if (y1 < shown_low_y) {
925
+ x1 = (shown_low_y - datapoint.b) / datapoint.m
926
+ y1 = shown_low_y
927
+ } else if (y1 > shown_high_y) {
928
+ x1 = (shown_high_y - datapoint.b) / datapoint.m
929
+ y1 = shown_high_y
930
+ }
931
+ let x2 = shown_end_x
932
+ let y2 = datapoint.m * x2 + datapoint.b
933
+ if (y2 < shown_low_y) {
934
+ x2 = (shown_low_y - datapoint.b) / datapoint.m
935
+ y2 = shown_low_y
936
+ } else if (y2 > shown_high_y) {
937
+ x2 = (shown_high_y - datapoint.b) / datapoint.m
938
+ y2 = shown_high_y
939
+ }
940
+ const norm_y1 = (y1 - shown_low_y) / shown_y_range
941
+ const norm_y2 = (y2 - shown_low_y) / shown_y_range
942
+ const norm_x1 = (x1 - shown_start_x) / shown_x_range
943
+ const norm_x2 = (x2 - shown_start_x) / shown_x_range
944
+ normalized_datapoints_in_range_loc.push({
945
+ x1: parseFloat(norm_x1.toPrecision(6)),
946
+ y1: parseFloat(norm_y1.toPrecision(6)),
947
+ x2: parseFloat(norm_x2.toPrecision(6)),
948
+ y2: parseFloat(norm_y2.toPrecision(6)),
949
+ s: datapoint?.s,
950
+ })
951
+ } else {
952
+ const norm_x = (datapoint.x - shown_start_x) / shown_x_range
953
+ const norm_y = (datapoint.y - shown_low_y) / shown_y_range
954
+ normalized_datapoints_in_range_loc.push({
955
+ x: parseFloat(norm_x.toPrecision(6)),
956
+ y: parseFloat(norm_y.toPrecision(6)),
957
+ })
958
+ }
959
+ }
960
+ pre_prepped_dataset.data = normalized_datapoints_in_range_loc
961
+ prepped_datasets.push({
962
+ ...pre_prepped_dataset,
963
+ kline_width_pd: parseFloat(kline_width_pd.toPrecision(8)),
964
+ })
965
+ }
966
+ const y_tics = prep_y_axis(shown_low_y, shown_high_y, frame_height)
967
+ prepped_shared_y_axiss.push({
968
+ bottom_padding_pd: shared_y_axis.bottom_padding_pd,
969
+ top_padding_pd: shared_y_axis.top_padding_pd,
970
+ y_axis_title: shared_y_axis.y_axis_title,
971
+ y_axis_type: shared_y_axis.y_axis_type,
972
+ shown_low_y: parseFloat(shown_low_y.toPrecision(8)),
973
+ shown_high_y: parseFloat(shown_high_y.toPrecision(8)),
974
+ y_axis_tics: y_tics,
975
+ y_axis_highlight_tic: null,
976
+ datasets: prepped_datasets,
977
+ })
978
+ }
979
+ function change_shown_y_axis() {
980
+ shown_y_axis_index = shown_y_axis_index < frame?.shared_y_axiss.length - 1 ? shown_y_axis_index + 1 : 0
981
+ }
982
+ prepped_frames.push({
983
+ get aspect_ratio() {
984
+ return frame.aspect_ratio
985
+ },
986
+ get frame_height() {
987
+ return frame_height
988
+ },
989
+ get shared_y_axiss() {
990
+ return prepped_shared_y_axiss
991
+ },
992
+ get shown_y_axis_index() {
993
+ return shown_y_axis_index
994
+ },
995
+ y_hovered_percent_decimal: null,
996
+ change_shown_y_axis,
997
+ })
998
+ }
999
+ frames = prepped_frames
1000
+ let x_axis_tics = prep_x_axis(shown_start_x, shown_end_x, frame_width)
1001
+ function set_shown_start_x(input) {
1002
+ shown_start_x = input
1003
+ }
1004
+ function set_shown_end_x(input) {
1005
+ shown_end_x = input
1006
+ }
1007
+ function set_x_hovered_percent_decimal(input) {
1008
+ x_hovered_percent_decimal = input
1009
+ }
1010
+ return {
1011
+ get id() {
1012
+ return id
1013
+ },
1014
+ get x_axis_type() {
1015
+ return x_axis_type
1016
+ },
1017
+ get x_axis_title() {
1018
+ return x_axis_title
1019
+ },
1020
+ get shown_start_x() {
1021
+ return shown_start_x
1022
+ },
1023
+ get shown_end_x() {
1024
+ return shown_end_x
1025
+ },
1026
+ get frames() {
1027
+ return frames
1028
+ },
1029
+ get min_x_scrollable() {
1030
+ return min_x_scrollable
1031
+ },
1032
+ get max_x_scrollable() {
1033
+ return max_x_scrollable
1034
+ },
1035
+ get x_axis_tics() {
1036
+ return x_axis_tics
1037
+ },
1038
+ get x_axis_highlight_tic() {
1039
+ return x_axis_highlight_tic
1040
+ },
1041
+ get x_hovered_percent_decimal() {
1042
+ return x_hovered_percent_decimal
1043
+ },
1044
+ set_shown_start_x,
1045
+ set_shown_end_x,
1046
+ set_x_hovered_percent_decimal,
1047
+ }
1048
+ }
1049
+
1050
+ function init(config) {
1051
+ console.log("init_chart", config)
1052
+ datasets = config?.datasets
1053
+ chart_prepped = prep_chart({ ...config?.chart, shown_start_x: null, shown_end_x: null })
1054
+ }
1055
+
1056
+ init(config)
1057
+
1058
+ return {
1059
+ get datasets() {
1060
+ return datasets
1061
+ },
1062
+ get chart_prepped() {
1063
+ return chart_prepped
1064
+ },
1065
+ get y_axis_width() {
1066
+ return y_axis_width
1067
+ },
1068
+ get x_axis_height() {
1069
+ return x_axis_height
1070
+ },
1071
+ get grid_width() {
1072
+ return grid_width
1073
+ },
1074
+ get frame_width() {
1075
+ return frame_width
1076
+ },
1077
+ period_to_sec,
1078
+ handle_scroll_frame,
1079
+ handle_chart_hover,
1080
+ handle_chart_hover_leave,
1081
+ set_grid_width,
1082
+ gen_color,
1083
+ }
1084
+ }