@vandenberghinc/volt 1.1.2

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 (451) hide show
  1. package/.vrepo +28 -0
  2. package/.vscode/tasks.json +87 -0
  3. package/README.md +67 -0
  4. package/backend/dist/cjs/blacklist.d.ts +10 -0
  5. package/backend/dist/cjs/blacklist.js +53 -0
  6. package/backend/dist/cjs/cli.d.ts +2 -0
  7. package/backend/dist/cjs/cli.js +263 -0
  8. package/backend/dist/cjs/database.d.ts +364 -0
  9. package/backend/dist/cjs/database.js +1962 -0
  10. package/backend/dist/cjs/endpoint.d.ts +57 -0
  11. package/backend/dist/cjs/endpoint.js +425 -0
  12. package/backend/dist/cjs/file_watcher.d.ts +44 -0
  13. package/backend/dist/cjs/file_watcher.js +348 -0
  14. package/backend/dist/cjs/frontend.d.ts +13 -0
  15. package/backend/dist/cjs/frontend.js +30 -0
  16. package/backend/dist/cjs/image_endpoint.d.ts +24 -0
  17. package/backend/dist/cjs/image_endpoint.js +210 -0
  18. package/backend/dist/cjs/logger.d.ts +5 -0
  19. package/backend/dist/cjs/logger.js +16 -0
  20. package/backend/dist/cjs/meta.d.ts +50 -0
  21. package/backend/dist/cjs/meta.js +153 -0
  22. package/backend/dist/cjs/mutex.d.ts +24 -0
  23. package/backend/dist/cjs/mutex.js +52 -0
  24. package/backend/dist/cjs/package.json +1 -0
  25. package/backend/dist/cjs/payments/paddle.d.ts +161 -0
  26. package/backend/dist/cjs/payments/paddle.js +2301 -0
  27. package/backend/dist/cjs/plugins/browser.d.ts +36 -0
  28. package/backend/dist/cjs/plugins/browser.js +183 -0
  29. package/backend/dist/cjs/plugins/communication.d.ts +70 -0
  30. package/backend/dist/cjs/plugins/communication.js +177 -0
  31. package/backend/dist/cjs/plugins/css.d.ts +10 -0
  32. package/backend/dist/cjs/plugins/css.js +71 -0
  33. package/backend/dist/cjs/plugins/mail.d.ts +277 -0
  34. package/backend/dist/cjs/plugins/mail.js +1419 -0
  35. package/backend/dist/cjs/plugins/pdf.d.ts +757 -0
  36. package/backend/dist/cjs/plugins/pdf.js +1694 -0
  37. package/backend/dist/cjs/plugins/thread_monitor.d.ts +18 -0
  38. package/backend/dist/cjs/plugins/thread_monitor.js +127 -0
  39. package/backend/dist/cjs/plugins/ts/compiler.d.ts +132 -0
  40. package/backend/dist/cjs/plugins/ts/compiler.js +944 -0
  41. package/backend/dist/cjs/plugins/ts/preprocessing.d.ts +14 -0
  42. package/backend/dist/cjs/plugins/ts/preprocessing.js +762 -0
  43. package/backend/dist/cjs/rate_limit.d.ts +65 -0
  44. package/backend/dist/cjs/rate_limit.js +463 -0
  45. package/backend/dist/cjs/request.deprc.d.ts +48 -0
  46. package/backend/dist/cjs/request.deprc.js +572 -0
  47. package/backend/dist/cjs/response.deprc.d.ts +55 -0
  48. package/backend/dist/cjs/response.deprc.js +275 -0
  49. package/backend/dist/cjs/server.d.ts +311 -0
  50. package/backend/dist/cjs/server.js +3475 -0
  51. package/backend/dist/cjs/splash_screen.d.ts +35 -0
  52. package/backend/dist/cjs/splash_screen.js +152 -0
  53. package/backend/dist/cjs/status.d.ts +60 -0
  54. package/backend/dist/cjs/status.js +199 -0
  55. package/backend/dist/cjs/stream.d.ts +75 -0
  56. package/backend/dist/cjs/stream.js +954 -0
  57. package/backend/dist/cjs/users.d.ts +111 -0
  58. package/backend/dist/cjs/users.js +1945 -0
  59. package/backend/dist/cjs/utils.d.ts +27 -0
  60. package/backend/dist/cjs/utils.js +329 -0
  61. package/backend/dist/cjs/view.d.ts +52 -0
  62. package/backend/dist/cjs/view.js +568 -0
  63. package/backend/dist/cjs/vinc.d.ts +2 -0
  64. package/backend/dist/cjs/vinc.dev.d.ts +2 -0
  65. package/backend/dist/cjs/vinc.dev.js +42 -0
  66. package/backend/dist/cjs/vinc.js +42 -0
  67. package/backend/dist/cjs/volt.d.ts +15 -0
  68. package/backend/dist/cjs/volt.js +64 -0
  69. package/backend/dist/css/adyen.css +92 -0
  70. package/backend/dist/css/volt.css +65 -0
  71. package/backend/dist/esm/blacklist.d.ts +10 -0
  72. package/backend/dist/esm/blacklist.js +49 -0
  73. package/backend/dist/esm/cli.d.ts +2 -0
  74. package/backend/dist/esm/cli.js +228 -0
  75. package/backend/dist/esm/database.d.ts +364 -0
  76. package/backend/dist/esm/database.js +1957 -0
  77. package/backend/dist/esm/endpoint.d.ts +57 -0
  78. package/backend/dist/esm/endpoint.js +421 -0
  79. package/backend/dist/esm/file_watcher.d.ts +44 -0
  80. package/backend/dist/esm/file_watcher.js +313 -0
  81. package/backend/dist/esm/frontend.d.ts +13 -0
  82. package/backend/dist/esm/frontend.js +27 -0
  83. package/backend/dist/esm/image_endpoint.d.ts +24 -0
  84. package/backend/dist/esm/image_endpoint.js +206 -0
  85. package/backend/dist/esm/logger.d.ts +5 -0
  86. package/backend/dist/esm/logger.js +13 -0
  87. package/backend/dist/esm/meta.d.ts +50 -0
  88. package/backend/dist/esm/meta.js +149 -0
  89. package/backend/dist/esm/mutex.d.ts +24 -0
  90. package/backend/dist/esm/mutex.js +48 -0
  91. package/backend/dist/esm/payments/paddle.d.ts +161 -0
  92. package/backend/dist/esm/payments/paddle.js +2261 -0
  93. package/backend/dist/esm/plugins/browser.d.ts +36 -0
  94. package/backend/dist/esm/plugins/browser.js +176 -0
  95. package/backend/dist/esm/plugins/communication.d.ts +70 -0
  96. package/backend/dist/esm/plugins/communication.js +169 -0
  97. package/backend/dist/esm/plugins/css.d.ts +10 -0
  98. package/backend/dist/esm/plugins/css.js +64 -0
  99. package/backend/dist/esm/plugins/mail.d.ts +277 -0
  100. package/backend/dist/esm/plugins/mail.js +1403 -0
  101. package/backend/dist/esm/plugins/pdf.d.ts +757 -0
  102. package/backend/dist/esm/plugins/pdf.js +1694 -0
  103. package/backend/dist/esm/plugins/thread_monitor.d.ts +18 -0
  104. package/backend/dist/esm/plugins/thread_monitor.js +120 -0
  105. package/backend/dist/esm/plugins/ts/compiler.d.ts +132 -0
  106. package/backend/dist/esm/plugins/ts/compiler.js +907 -0
  107. package/backend/dist/esm/plugins/ts/preprocessing.d.ts +14 -0
  108. package/backend/dist/esm/plugins/ts/preprocessing.js +724 -0
  109. package/backend/dist/esm/rate_limit.d.ts +65 -0
  110. package/backend/dist/esm/rate_limit.js +425 -0
  111. package/backend/dist/esm/request.deprc.d.ts +48 -0
  112. package/backend/dist/esm/request.deprc.js +572 -0
  113. package/backend/dist/esm/response.deprc.d.ts +55 -0
  114. package/backend/dist/esm/response.deprc.js +275 -0
  115. package/backend/dist/esm/server.d.ts +311 -0
  116. package/backend/dist/esm/server.js +3435 -0
  117. package/backend/dist/esm/splash_screen.d.ts +35 -0
  118. package/backend/dist/esm/splash_screen.js +148 -0
  119. package/backend/dist/esm/status.d.ts +60 -0
  120. package/backend/dist/esm/status.js +196 -0
  121. package/backend/dist/esm/stream.d.ts +75 -0
  122. package/backend/dist/esm/stream.js +947 -0
  123. package/backend/dist/esm/users.d.ts +111 -0
  124. package/backend/dist/esm/users.js +1908 -0
  125. package/backend/dist/esm/utils.d.ts +27 -0
  126. package/backend/dist/esm/utils.js +324 -0
  127. package/backend/dist/esm/view.d.ts +52 -0
  128. package/backend/dist/esm/view.js +561 -0
  129. package/backend/dist/esm/vinc.d.ts +2 -0
  130. package/backend/dist/esm/vinc.dev.d.ts +2 -0
  131. package/backend/dist/esm/vinc.dev.js +6 -0
  132. package/backend/dist/esm/vinc.js +6 -0
  133. package/backend/dist/esm/volt.d.ts +15 -0
  134. package/backend/dist/esm/volt.js +23 -0
  135. package/backend/dist/esm-dev/blacklist.d.ts +10 -0
  136. package/backend/dist/esm-dev/blacklist.js +49 -0
  137. package/backend/dist/esm-dev/cli.d.ts +2 -0
  138. package/backend/dist/esm-dev/cli.js +228 -0
  139. package/backend/dist/esm-dev/database.d.ts +364 -0
  140. package/backend/dist/esm-dev/database.js +1957 -0
  141. package/backend/dist/esm-dev/endpoint.d.ts +57 -0
  142. package/backend/dist/esm-dev/endpoint.js +421 -0
  143. package/backend/dist/esm-dev/file_watcher.d.ts +44 -0
  144. package/backend/dist/esm-dev/file_watcher.js +313 -0
  145. package/backend/dist/esm-dev/frontend.d.ts +13 -0
  146. package/backend/dist/esm-dev/frontend.js +27 -0
  147. package/backend/dist/esm-dev/image_endpoint.d.ts +24 -0
  148. package/backend/dist/esm-dev/image_endpoint.js +206 -0
  149. package/backend/dist/esm-dev/logger.d.ts +5 -0
  150. package/backend/dist/esm-dev/logger.js +13 -0
  151. package/backend/dist/esm-dev/meta.d.ts +50 -0
  152. package/backend/dist/esm-dev/meta.js +149 -0
  153. package/backend/dist/esm-dev/mutex.d.ts +24 -0
  154. package/backend/dist/esm-dev/mutex.js +48 -0
  155. package/backend/dist/esm-dev/payments/paddle.d.ts +161 -0
  156. package/backend/dist/esm-dev/payments/paddle.js +2261 -0
  157. package/backend/dist/esm-dev/plugins/browser.d.ts +36 -0
  158. package/backend/dist/esm-dev/plugins/browser.js +176 -0
  159. package/backend/dist/esm-dev/plugins/communication.d.ts +70 -0
  160. package/backend/dist/esm-dev/plugins/communication.js +169 -0
  161. package/backend/dist/esm-dev/plugins/css.d.ts +10 -0
  162. package/backend/dist/esm-dev/plugins/css.js +64 -0
  163. package/backend/dist/esm-dev/plugins/mail.d.ts +277 -0
  164. package/backend/dist/esm-dev/plugins/mail.js +1403 -0
  165. package/backend/dist/esm-dev/plugins/pdf.d.ts +757 -0
  166. package/backend/dist/esm-dev/plugins/pdf.js +1694 -0
  167. package/backend/dist/esm-dev/plugins/thread_monitor.d.ts +18 -0
  168. package/backend/dist/esm-dev/plugins/thread_monitor.js +120 -0
  169. package/backend/dist/esm-dev/plugins/ts/compiler.d.ts +132 -0
  170. package/backend/dist/esm-dev/plugins/ts/compiler.js +907 -0
  171. package/backend/dist/esm-dev/plugins/ts/preprocessing.d.ts +14 -0
  172. package/backend/dist/esm-dev/plugins/ts/preprocessing.js +724 -0
  173. package/backend/dist/esm-dev/rate_limit.d.ts +65 -0
  174. package/backend/dist/esm-dev/rate_limit.js +425 -0
  175. package/backend/dist/esm-dev/request.deprc.d.ts +48 -0
  176. package/backend/dist/esm-dev/request.deprc.js +572 -0
  177. package/backend/dist/esm-dev/response.deprc.d.ts +55 -0
  178. package/backend/dist/esm-dev/response.deprc.js +275 -0
  179. package/backend/dist/esm-dev/server.d.ts +311 -0
  180. package/backend/dist/esm-dev/server.js +3435 -0
  181. package/backend/dist/esm-dev/splash_screen.d.ts +35 -0
  182. package/backend/dist/esm-dev/splash_screen.js +148 -0
  183. package/backend/dist/esm-dev/status.d.ts +60 -0
  184. package/backend/dist/esm-dev/status.js +196 -0
  185. package/backend/dist/esm-dev/stream.d.ts +75 -0
  186. package/backend/dist/esm-dev/stream.js +947 -0
  187. package/backend/dist/esm-dev/users.d.ts +111 -0
  188. package/backend/dist/esm-dev/users.js +1908 -0
  189. package/backend/dist/esm-dev/utils.d.ts +27 -0
  190. package/backend/dist/esm-dev/utils.js +324 -0
  191. package/backend/dist/esm-dev/view.d.ts +52 -0
  192. package/backend/dist/esm-dev/view.js +561 -0
  193. package/backend/dist/esm-dev/vinc.d.ts +2 -0
  194. package/backend/dist/esm-dev/vinc.dev.d.ts +2 -0
  195. package/backend/dist/esm-dev/vinc.dev.js +6 -0
  196. package/backend/dist/esm-dev/vinc.js +6 -0
  197. package/backend/dist/esm-dev/volt.d.ts +15 -0
  198. package/backend/dist/esm-dev/volt.js +23 -0
  199. package/backend/src/blacklist.ts +69 -0
  200. package/backend/src/cli.js +245 -0
  201. package/backend/src/database.ts +2241 -0
  202. package/backend/src/endpoint.ts +494 -0
  203. package/backend/src/file_watcher.ts +359 -0
  204. package/backend/src/frontend.ts +35 -0
  205. package/backend/src/globals.d.ts +8 -0
  206. package/backend/src/image_endpoint.ts +258 -0
  207. package/backend/src/logger.ts +18 -0
  208. package/backend/src/meta.ts +202 -0
  209. package/backend/src/mutex.ts +51 -0
  210. package/backend/src/payments/paddle.ts +2659 -0
  211. package/backend/src/plugins/browser.ts +188 -0
  212. package/backend/src/plugins/communication.ts +204 -0
  213. package/backend/src/plugins/css.ts +84 -0
  214. package/backend/src/plugins/fonts/Menlo-Bold.ttf +0 -0
  215. package/backend/src/plugins/fonts/Menlo-Regular.ttf +0 -0
  216. package/backend/src/plugins/mail.ts +1720 -0
  217. package/backend/src/plugins/pdf.js +1932 -0
  218. package/backend/src/plugins/thread_monitor.ts +164 -0
  219. package/backend/src/plugins/ts/compiler.ts +1242 -0
  220. package/backend/src/plugins/ts/preprocessing.ts +812 -0
  221. package/backend/src/rate_limit.ts +503 -0
  222. package/backend/src/request.deprc.js +626 -0
  223. package/backend/src/response.deprc.js +354 -0
  224. package/backend/src/server.ts +4149 -0
  225. package/backend/src/splash_screen.ts +192 -0
  226. package/backend/src/status.ts +199 -0
  227. package/backend/src/stream.ts +1070 -0
  228. package/backend/src/users.ts +2077 -0
  229. package/backend/src/utils.ts +359 -0
  230. package/backend/src/view.ts +655 -0
  231. package/backend/src/vinc.dev.js +6 -0
  232. package/backend/src/vinc.ts +6 -0
  233. package/backend/src/volt.js +25 -0
  234. package/backend/tsconfig.cjs.json +29 -0
  235. package/backend/tsconfig.esm.dev.json +34 -0
  236. package/backend/tsconfig.esm.json +30 -0
  237. package/backend/tsconfig.json +2 -0
  238. package/frontend/compile.js +436 -0
  239. package/frontend/dist/elements/base.d.ts +9891 -0
  240. package/frontend/dist/elements/base.js +8818 -0
  241. package/frontend/dist/elements/module.d.ts +16 -0
  242. package/frontend/dist/elements/module.js +178 -0
  243. package/frontend/dist/modules/array.d.ts +37 -0
  244. package/frontend/dist/modules/array.js +284 -0
  245. package/frontend/dist/modules/auth.d.ts +45 -0
  246. package/frontend/dist/modules/auth.js +138 -0
  247. package/frontend/dist/modules/colors.d.ts +26 -0
  248. package/frontend/dist/modules/colors.js +340 -0
  249. package/frontend/dist/modules/compression.d.ts +6 -0
  250. package/frontend/dist/modules/compression.js +999 -0
  251. package/frontend/dist/modules/cookies.d.ts +17 -0
  252. package/frontend/dist/modules/cookies.js +166 -0
  253. package/frontend/dist/modules/date.d.ts +142 -0
  254. package/frontend/dist/modules/date.js +493 -0
  255. package/frontend/dist/modules/events.d.ts +7 -0
  256. package/frontend/dist/modules/events.js +90 -0
  257. package/frontend/dist/modules/google.d.ts +10 -0
  258. package/frontend/dist/modules/google.js +53 -0
  259. package/frontend/dist/modules/meta.d.ts +9 -0
  260. package/frontend/dist/modules/meta.js +45 -0
  261. package/frontend/dist/modules/mutex.d.ts +8 -0
  262. package/frontend/dist/modules/mutex.js +52 -0
  263. package/frontend/dist/modules/number.d.ts +12 -0
  264. package/frontend/dist/modules/number.js +8 -0
  265. package/frontend/dist/modules/object.d.ts +50 -0
  266. package/frontend/dist/modules/object.js +147 -0
  267. package/frontend/dist/modules/paddle.d.ts +1403 -0
  268. package/frontend/dist/modules/paddle.js +2641 -0
  269. package/frontend/dist/modules/scheme.d.ts +207 -0
  270. package/frontend/dist/modules/scheme.js +649 -0
  271. package/frontend/dist/modules/settings.d.ts +3 -0
  272. package/frontend/dist/modules/settings.js +4 -0
  273. package/frontend/dist/modules/statics.d.ts +4 -0
  274. package/frontend/dist/modules/statics.js +45 -0
  275. package/frontend/dist/modules/string.d.ts +163 -0
  276. package/frontend/dist/modules/string.js +291 -0
  277. package/frontend/dist/modules/support.d.ts +18 -0
  278. package/frontend/dist/modules/support.js +102 -0
  279. package/frontend/dist/modules/themes.d.ts +8 -0
  280. package/frontend/dist/modules/themes.js +17 -0
  281. package/frontend/dist/modules/user.d.ts +58 -0
  282. package/frontend/dist/modules/user.js +279 -0
  283. package/frontend/dist/modules/utils.d.ts +58 -0
  284. package/frontend/dist/modules/utils.js +1159 -0
  285. package/frontend/dist/types/gradient.d.ts +12 -0
  286. package/frontend/dist/types/gradient.js +79 -0
  287. package/frontend/dist/ui/border_button.d.ts +177 -0
  288. package/frontend/dist/ui/border_button.js +235 -0
  289. package/frontend/dist/ui/button.d.ts +42 -0
  290. package/frontend/dist/ui/button.js +114 -0
  291. package/frontend/dist/ui/canvas.d.ts +56 -0
  292. package/frontend/dist/ui/canvas.js +411 -0
  293. package/frontend/dist/ui/checkbox.d.ts +72 -0
  294. package/frontend/dist/ui/checkbox.js +277 -0
  295. package/frontend/dist/ui/code.d.ts +232 -0
  296. package/frontend/dist/ui/code.js +977 -0
  297. package/frontend/dist/ui/color.d.ts +1 -0
  298. package/frontend/dist/ui/color.js +110 -0
  299. package/frontend/dist/ui/context_menu.d.ts +30 -0
  300. package/frontend/dist/ui/context_menu.js +211 -0
  301. package/frontend/dist/ui/css.d.ts +10 -0
  302. package/frontend/dist/ui/css.js +44 -0
  303. package/frontend/dist/ui/divider.d.ts +18 -0
  304. package/frontend/dist/ui/divider.js +82 -0
  305. package/frontend/dist/ui/dropdown.d.ts +115 -0
  306. package/frontend/dist/ui/dropdown.js +446 -0
  307. package/frontend/dist/ui/for_each.d.ts +38 -0
  308. package/frontend/dist/ui/for_each.js +97 -0
  309. package/frontend/dist/ui/form.d.ts +25 -0
  310. package/frontend/dist/ui/form.js +227 -0
  311. package/frontend/dist/ui/frame_modes.d.ts +28 -0
  312. package/frontend/dist/ui/frame_modes.js +116 -0
  313. package/frontend/dist/ui/google_map.d.ts +31 -0
  314. package/frontend/dist/ui/google_map.js +111 -0
  315. package/frontend/dist/ui/gradient.d.ts +24 -0
  316. package/frontend/dist/ui/gradient.js +115 -0
  317. package/frontend/dist/ui/image.d.ts +138 -0
  318. package/frontend/dist/ui/image.js +570 -0
  319. package/frontend/dist/ui/input.d.ts +316 -0
  320. package/frontend/dist/ui/input.js +1187 -0
  321. package/frontend/dist/ui/link.d.ts +39 -0
  322. package/frontend/dist/ui/link.js +146 -0
  323. package/frontend/dist/ui/list.d.ts +33 -0
  324. package/frontend/dist/ui/list.js +161 -0
  325. package/frontend/dist/ui/loader_button.d.ts +108 -0
  326. package/frontend/dist/ui/loader_button.js +207 -0
  327. package/frontend/dist/ui/loaders.d.ts +60 -0
  328. package/frontend/dist/ui/loaders.js +150 -0
  329. package/frontend/dist/ui/popup.d.ts +84 -0
  330. package/frontend/dist/ui/popup.js +331 -0
  331. package/frontend/dist/ui/pseudo.d.ts +16 -0
  332. package/frontend/dist/ui/pseudo.js +81 -0
  333. package/frontend/dist/ui/scroller.d.ts +131 -0
  334. package/frontend/dist/ui/scroller.js +1251 -0
  335. package/frontend/dist/ui/slider.d.ts +35 -0
  336. package/frontend/dist/ui/slider.js +203 -0
  337. package/frontend/dist/ui/spacer.d.ts +20 -0
  338. package/frontend/dist/ui/spacer.js +83 -0
  339. package/frontend/dist/ui/span.d.ts +11 -0
  340. package/frontend/dist/ui/span.js +75 -0
  341. package/frontend/dist/ui/stack.d.ts +123 -0
  342. package/frontend/dist/ui/stack.js +344 -0
  343. package/frontend/dist/ui/steps.d.ts +72 -0
  344. package/frontend/dist/ui/steps.js +306 -0
  345. package/frontend/dist/ui/style.d.ts +12 -0
  346. package/frontend/dist/ui/style.js +78 -0
  347. package/frontend/dist/ui/switch.d.ts +44 -0
  348. package/frontend/dist/ui/switch.js +280 -0
  349. package/frontend/dist/ui/table.d.ts +118 -0
  350. package/frontend/dist/ui/table.js +411 -0
  351. package/frontend/dist/ui/tabs.d.ts +85 -0
  352. package/frontend/dist/ui/tabs.js +392 -0
  353. package/frontend/dist/ui/text.d.ts +19 -0
  354. package/frontend/dist/ui/text.js +88 -0
  355. package/frontend/dist/ui/theme.d.ts +25 -0
  356. package/frontend/dist/ui/theme.js +237 -0
  357. package/frontend/dist/ui/title.d.ts +36 -0
  358. package/frontend/dist/ui/title.js +127 -0
  359. package/frontend/dist/ui/ui.d.ts +38 -0
  360. package/frontend/dist/ui/ui.js +41 -0
  361. package/frontend/dist/ui/view.d.ts +25 -0
  362. package/frontend/dist/ui/view.js +93 -0
  363. package/frontend/dist/volt.d.ts +22 -0
  364. package/frontend/dist/volt.js +27 -0
  365. package/frontend/exports.json +1340 -0
  366. package/frontend/src/css/adyen.css +92 -0
  367. package/frontend/src/css/volt.css +65 -0
  368. package/frontend/src/elements/base.ts +16790 -0
  369. package/frontend/src/elements/module.ts +184 -0
  370. package/frontend/src/elements/types.d.ts +155 -0
  371. package/frontend/src/modules/array.ts +366 -0
  372. package/frontend/src/modules/auth.ts +188 -0
  373. package/frontend/src/modules/colors.ts +449 -0
  374. package/frontend/src/modules/compression.ts +67 -0
  375. package/frontend/src/modules/cookies.ts +182 -0
  376. package/frontend/src/modules/date.js +535 -0
  377. package/frontend/src/modules/date.ts +583 -0
  378. package/frontend/src/modules/events.ts +96 -0
  379. package/frontend/src/modules/google.ts +60 -0
  380. package/frontend/src/modules/meta.ts +59 -0
  381. package/frontend/src/modules/mutex.ts +59 -0
  382. package/frontend/src/modules/number.ts +20 -0
  383. package/frontend/src/modules/object.ts +212 -0
  384. package/frontend/src/modules/paddle.ts +2990 -0
  385. package/frontend/src/modules/scheme.ts +740 -0
  386. package/frontend/src/modules/settings.ts +5 -0
  387. package/frontend/src/modules/statics.ts +47 -0
  388. package/frontend/src/modules/string.ts +500 -0
  389. package/frontend/src/modules/support.ts +118 -0
  390. package/frontend/src/modules/themes.ts +24 -0
  391. package/frontend/src/modules/user.ts +321 -0
  392. package/frontend/src/modules/utils.ts +1260 -0
  393. package/frontend/src/static/admin/admin.png +0 -0
  394. package/frontend/src/static/admin/password.webp +0 -0
  395. package/frontend/src/static/icons/copy.webp +0 -0
  396. package/frontend/src/static/payments/arrow.long.webp +0 -0
  397. package/frontend/src/static/payments/arrow.long2.webp +0 -0
  398. package/frontend/src/static/payments/cancelled.webp +0 -0
  399. package/frontend/src/static/payments/check.sign.webp +0 -0
  400. package/frontend/src/static/payments/check.webp +0 -0
  401. package/frontend/src/static/payments/close.webp +0 -0
  402. package/frontend/src/static/payments/error.webp +0 -0
  403. package/frontend/src/static/payments/exclamation.webp +0 -0
  404. package/frontend/src/static/payments/minus.webp +0 -0
  405. package/frontend/src/static/payments/party.webp +0 -0
  406. package/frontend/src/static/payments/plus.webp +0 -0
  407. package/frontend/src/static/payments/shopping_cart.webp +0 -0
  408. package/frontend/src/static/payments/trash.webp +0 -0
  409. package/frontend/src/types/global.d.ts +4 -0
  410. package/frontend/src/types/gradient.ts +87 -0
  411. package/frontend/src/ui/any_element.d.ts +5 -0
  412. package/frontend/src/ui/border_button.ts +320 -0
  413. package/frontend/src/ui/button.ts +62 -0
  414. package/frontend/src/ui/canvas.ts +431 -0
  415. package/frontend/src/ui/checkbox.ts +284 -0
  416. package/frontend/src/ui/code.ts +1049 -0
  417. package/frontend/src/ui/color.ts +117 -0
  418. package/frontend/src/ui/context_menu.ts +194 -0
  419. package/frontend/src/ui/css.ts +57 -0
  420. package/frontend/src/ui/divider.ts +28 -0
  421. package/frontend/src/ui/dropdown.ts +503 -0
  422. package/frontend/src/ui/for_each.ts +71 -0
  423. package/frontend/src/ui/form.ts +208 -0
  424. package/frontend/src/ui/frame_modes.ts +140 -0
  425. package/frontend/src/ui/google_map.ts +70 -0
  426. package/frontend/src/ui/gradient.ts +73 -0
  427. package/frontend/src/ui/image.ts +587 -0
  428. package/frontend/src/ui/input.ts +1284 -0
  429. package/frontend/src/ui/link.ts +77 -0
  430. package/frontend/src/ui/list.ts +88 -0
  431. package/frontend/src/ui/loader_button.ts +192 -0
  432. package/frontend/src/ui/loaders.ts +126 -0
  433. package/frontend/src/ui/popup.ts +370 -0
  434. package/frontend/src/ui/pseudo.ts +33 -0
  435. package/frontend/src/ui/scroller.ts +1324 -0
  436. package/frontend/src/ui/slider.ts +215 -0
  437. package/frontend/src/ui/spacer.ts +29 -0
  438. package/frontend/src/ui/span.ts +23 -0
  439. package/frontend/src/ui/stack.ts +238 -0
  440. package/frontend/src/ui/steps.ts +334 -0
  441. package/frontend/src/ui/style.ts +26 -0
  442. package/frontend/src/ui/switch.ts +286 -0
  443. package/frontend/src/ui/table.ts +323 -0
  444. package/frontend/src/ui/tabs.ts +441 -0
  445. package/frontend/src/ui/text.ts +38 -0
  446. package/frontend/src/ui/theme.ts +279 -0
  447. package/frontend/src/ui/title.ts +64 -0
  448. package/frontend/src/ui/ui.ts +47 -0
  449. package/frontend/src/ui/view.ts +44 -0
  450. package/frontend/src/volt.ts +31 -0
  451. package/package.json +58 -0
@@ -0,0 +1,188 @@
1
+ /*
2
+ * Author: Daan van den Bergh
3
+ * Copyright: © 2022 - 2024 Daan van den Bergh.
4
+ */
5
+
6
+ // Imports.
7
+ import { Utils } from "./utils.js"
8
+
9
+ // Namespace.
10
+ export namespace Auth {
11
+
12
+ // Response schemes.
13
+ interface Response {
14
+ error?: string;
15
+ invalid_fields?: Record<string, string>;
16
+ message?: string;
17
+ }
18
+ interface MessageResponse {
19
+ message?: string;
20
+ }
21
+ export interface SignInResponse extends Response {};
22
+ export interface SignUpResponse extends Response {};
23
+ export interface SignOutResponse extends MessageResponse {};
24
+ export interface Send2FAResponse extends MessageResponse {};
25
+ export interface ForgotPasswordResponse extends Response {};
26
+
27
+
28
+ // Sign in.
29
+ /* @docs:
30
+ @nav: Frontend
31
+ @chapter: Authentication
32
+ @title: Sign In
33
+ @desc: Make a sign in request.
34
+ @param:
35
+ @name: email
36
+ @description The user's email. Either the username or email is required.
37
+ @param:
38
+ @name: username
39
+ @description The user's username. Either the username or email is required.
40
+ @param:
41
+ @name: password
42
+ @description The user's password.
43
+ @param:
44
+ @name: code
45
+ @description The user's 2fa code. Only required when 2fa is enabled in the server.
46
+ */
47
+ export function sign_in({
48
+ email = "",
49
+ username = "",
50
+ password = "",
51
+ code = "",
52
+ }: {
53
+ username: string,
54
+ email: string,
55
+ password: string,
56
+ code?: string,
57
+ }): Promise<Auth.SignInResponse> {
58
+ return Utils.request({
59
+ method: "POST",
60
+ url: "/volt/auth/signin",
61
+ data: {
62
+ email: email,
63
+ username: username,
64
+ password: password,
65
+ code: code,
66
+ },
67
+ });
68
+ }
69
+
70
+ // Sign up.
71
+ /* @docs:
72
+ @nav: Frontend
73
+ @chapter: Authentication
74
+ @title: Sign Up
75
+ @desc: Make a sign up request.
76
+ */
77
+ export function sign_up({
78
+ username = "",
79
+ email = "",
80
+ first_name = "",
81
+ last_name = "",
82
+ password = "",
83
+ verify_password = "",
84
+ phone_number = "",
85
+ code = "",
86
+ }: {
87
+ username: string,
88
+ email: string,
89
+ first_name: string,
90
+ last_name: string,
91
+ password: string,
92
+ verify_password: string,
93
+ phone_number?: string,
94
+ code?: string,
95
+ }): Promise<Auth.SignUpResponse> {
96
+ return Utils.request({
97
+ method: "POST",
98
+ url: "/volt/auth/signup",
99
+ data: {
100
+ username,
101
+ email,
102
+ first_name,
103
+ last_name,
104
+ password,
105
+ verify_password,
106
+ phone_number,
107
+ code,
108
+ },
109
+ });
110
+ }
111
+
112
+ // Sign out.
113
+ /* @docs:
114
+ @nav: Frontend
115
+ @chapter: Authentication
116
+ @title: Sign Out
117
+ @desc: Make a sign out request.
118
+ */
119
+ export function sign_out(): Promise<Auth.SignOutResponse> {
120
+ return Utils.request({
121
+ method: "POST",
122
+ url: "/volt/auth/signout",
123
+ });
124
+ }
125
+
126
+ // Send 2fa.
127
+ /* @docs:
128
+ @nav: Frontend
129
+ @chapter: Authentication
130
+ @title: Send 2FA
131
+ @desc: Make a send 2FA request.
132
+ @param:
133
+ @name: email
134
+ @description The user's email.
135
+ */
136
+ export function send_2fa(email: string): Promise<Auth.Send2FAResponse> {
137
+ return Utils.request({
138
+ method: "GET",
139
+ url: "/volt/auth/2fa",
140
+ data: {
141
+ email:email,
142
+ },
143
+ });
144
+ }
145
+
146
+ // Forgot password.
147
+ /* @docs:
148
+ @nav: Frontend
149
+ @chapter: Authentication
150
+ @title: Forgot Password
151
+ @desc: Make a forgot password request.
152
+ @param:
153
+ @name: email
154
+ @description The user's email.
155
+ @param:
156
+ @name: code
157
+ @description The user's 2fa code.
158
+ @param:
159
+ @name: password
160
+ @description The user's new password.
161
+ @param:
162
+ @name: verify_password
163
+ @description The user's new password.
164
+ */
165
+ export function forgot_password({
166
+ email = "",
167
+ code = "",
168
+ password = "",
169
+ verify_password = "",
170
+ }: {
171
+ email: string,
172
+ password: string,
173
+ verify_password: string,
174
+ code: string,
175
+ }): Promise<Auth.ForgotPasswordResponse> {
176
+ return Utils.request({
177
+ method: "POST",
178
+ url: "/volt/auth/forgot_password",
179
+ data: {
180
+ email: email,
181
+ code: code,
182
+ password: password,
183
+ verify_password: verify_password,
184
+ },
185
+ });
186
+ }
187
+
188
+ };
@@ -0,0 +1,449 @@
1
+
2
+
3
+ // Define types for color objects
4
+ interface RGBA {
5
+ r: number;
6
+ g: number;
7
+ b: number;
8
+ a?: number;
9
+ }
10
+
11
+ type ColorFunction = (data: any) => string;
12
+ type ColorObject = Record<'black' | 'red' | 'green' | 'yellow' | 'blue' | 'magenta' | 'cyan' | 'white', string>;
13
+ type ColorFunctionObject = Record<'black' | 'red' | 'green' | 'yellow' | 'blue' | 'magenta' | 'cyan' | 'white', ColorFunction>;
14
+
15
+ // Colors module
16
+ const Colors = {
17
+
18
+ // ---------------------------------------------------------
19
+ // Attributes.
20
+ black: "\u001b[30m",
21
+ red: "\u001b[31m",
22
+ red_bold: "\u001b[31m\u001b[1m",
23
+ green: "\u001b[32m",
24
+ yellow: "\u001b[33m",
25
+ blue: "\u001b[34m",
26
+ magenta: "\u001b[35m",
27
+ cyan: "\u001b[36m",
28
+ light_gray: "\u001b[37m",
29
+ gray: "\u001b[90m",
30
+ bold: "\u001b[1m",
31
+ italic: "\u001b[3m",
32
+ end: "\u001b[0m",
33
+ purple: "\u001b[94m",
34
+ bg: {
35
+ black: "\u001b[40m",
36
+ red: "\u001b[41m",
37
+ green: "\u001b[42m",
38
+ yellow: "\u001b[43m",
39
+ blue: "\u001b[44m",
40
+ magenta: "\u001b[45m",
41
+ cyan: "\u001b[46m",
42
+ white: "\u001b[47m",
43
+ } as ColorObject,
44
+ bright_bg: {
45
+ black: "\u001b[100m",
46
+ red: "\u001b[101m",
47
+ green: "\u001b[102m",
48
+ yellow: "\u001b[103m",
49
+ blue: "\u001b[104m",
50
+ magenta: "\u001b[105m",
51
+ cyan: "\u001b[106m",
52
+ white: "\u001b[107m",
53
+ } as ColorObject,
54
+
55
+ // Hex module
56
+ hex: {
57
+ // Get the brightness of a hex color (0.0 white, 1.0 dark)
58
+ get_brightness(color: string): number {
59
+ color = color.replace(/^#/, '');
60
+
61
+ const bigint = parseInt(color, 16);
62
+ const r = (bigint >> 16) & 255;
63
+ const g = (bigint >> 8) & 255;
64
+ const b = bigint & 255;
65
+
66
+ const brightness = (0.299 * r + 0.587 * g + 0.114 * b) / 255;
67
+ return brightness;
68
+ },
69
+
70
+ // Convert hex to RGBA
71
+ to_rgb(hex: string, as_array: boolean = false): RGBA | number[] {
72
+ const index = hex.indexOf("#");
73
+ if (index !== -1) {
74
+ hex = hex.substr(index + 1);
75
+ }
76
+
77
+ let r = parseInt(hex.substring(0, 2), 16);
78
+ let g = parseInt(hex.substring(2, 4), 16);
79
+ let b = parseInt(hex.substring(4, 6), 16);
80
+ let a = 1;
81
+
82
+ if (hex.length > 6) {
83
+ a = parseInt(hex.substring(6, 8), 16) / 255;
84
+ }
85
+
86
+ if (isNaN(r)) { r = 0; }
87
+ if (isNaN(g)) { g = 0; }
88
+ if (isNaN(b)) { b = 0; }
89
+ if (isNaN(a)) { a = 1; }
90
+
91
+ if (as_array) {
92
+ return [r, g, b, a];
93
+ }
94
+
95
+ return { r, g, b, a };
96
+ },
97
+
98
+ // Adjust brightness of a hex color
99
+ adjust_brightness(color: string, adjust: number = 0): string {
100
+ const rgba = this.to_rgb(color);
101
+ if (Array.isArray(rgba)) {
102
+ rgba[0] += adjust;
103
+ rgba[1] += adjust;
104
+ rgba[2] += adjust;
105
+ return Colors.rgb.to_hex(rgba[0], rgba[1], rgba[2], rgba[3]);
106
+ } else {
107
+ rgba.r += adjust;
108
+ rgba.g += adjust;
109
+ rgba.b += adjust;
110
+ return Colors.rgb.to_hex(rgba.r, rgba.g, rgba.b, rgba.a);
111
+ }
112
+ },
113
+
114
+ // Placeholder for aliasing
115
+ to_rgba: null as unknown as (hex: string, as_array?: boolean) => RGBA | number[],
116
+ },
117
+
118
+ // RGB module
119
+ rgb: {
120
+ // RGB(a) to hex
121
+ to_hex(r: number, g: number, b: number, a: number = 1): string {
122
+ const hexR = Math.round(r).toString(16).padStart(2, '0');
123
+ const hexG = Math.round(g).toString(16).padStart(2, '0');
124
+ const hexB = Math.round(b).toString(16).padStart(2, '0');
125
+ const hexA = a === 1 ? "" : Math.round(a * 255).toString(16).padStart(2, '0');
126
+
127
+ return `#${hexR}${hexG}${hexB}${hexA}`;
128
+ },
129
+
130
+ // Convert a color string (e.g., "rgb(255, 0, 0)") to an RGBA object
131
+ to_obj(color: string): RGBA {
132
+ if (!color.startsWith("rgba(") && !color.startsWith("rgb(")) {
133
+ throw new Error("Invalid color format");
134
+ }
135
+
136
+ const split = color.trim().split("(")[1].slice(0, -1).split(",");
137
+ const obj: RGBA = { r: 0, g: 0, b: 0, a: 1 };
138
+
139
+ obj.r = parseInt(split[0].trim());
140
+ obj.g = parseInt(split[1].trim());
141
+ obj.b = parseInt(split[2].trim());
142
+ if (split[3]) {
143
+ obj.a = parseFloat(split[3].trim());
144
+ }
145
+
146
+ return obj;
147
+ },
148
+
149
+ // Convert RGBA values to a color string
150
+ to_str(r: number, g: number, b: number, a: number = 1): string {
151
+ if (a !== 1) {
152
+ return `rgba(${isNaN(r) ? 0 : r}, ${isNaN(g) ? 0 : g}, ${isNaN(b) ? 0 : b}, ${isNaN(a) ? 1 : a})`;
153
+ } else {
154
+ return `rgb(${isNaN(r) ? 0 : r}, ${isNaN(g) ? 0 : g}, ${isNaN(b) ? 0 : b})`;
155
+ }
156
+ },
157
+
158
+ // Adjust brightness of an RGB color
159
+ adjust_brightness(color: string, adjust: number = 0): string {
160
+ const rgba = this.to_obj(color);
161
+ rgba.r += adjust;
162
+ rgba.g += adjust;
163
+ rgba.b += adjust;
164
+ return this.to_str(rgba.r, rgba.g, rgba.b, rgba.a);
165
+ },
166
+ },
167
+
168
+ // Placeholder for aliasing
169
+ rgba: null as unknown as typeof Colors.rgb,
170
+
171
+ // Utility function to adjust brightness
172
+ adjust_brightness(color: string, adjust: number = 0): string {
173
+ if (color.startsWith("rgb")) {
174
+ return this.rgb.adjust_brightness(color, adjust);
175
+ } else if (color.startsWith("#")) {
176
+ return this.hex.adjust_brightness(color, adjust);
177
+ } else {
178
+ throw new Error("Invalid color format");
179
+ }
180
+ },
181
+
182
+ // Set the opacity of a color
183
+ set_opacity(color: string, opacity: number = 1.0): string {
184
+ if (typeof opacity !== "number" || opacity < 0 || opacity > 1) {
185
+ throw new Error("Invalid opacity [0...1]: " + opacity + ".");
186
+ }
187
+
188
+ let rgba: RGBA;
189
+ let type: 'rgb' | 'hex';
190
+
191
+ if (color.startsWith("rgb")) {
192
+ type = "rgb";
193
+ rgba = this.rgb.to_obj(color);
194
+ } else if (color.startsWith("#")) {
195
+ type = "hex";
196
+ const result = this.hex.to_rgb(color);
197
+ rgba = Array.isArray(result) ? { r: result[0], g: result[1], b: result[2], a: result[3] } : result;
198
+ } else {
199
+ throw new Error("Invalid color format");
200
+ }
201
+
202
+ rgba.a = opacity;
203
+
204
+ if (type === "hex") {
205
+ return this.rgb.to_hex(rgba.r, rgba.g, rgba.b, rgba.a);
206
+ } else {
207
+ return this.rgb.to_str(rgba.r, rgba.g, rgba.b, rgba.a);
208
+ }
209
+ },
210
+
211
+
212
+ // Darken the color by interpolating toward black (#000000)
213
+ darken(color: Hex | RGBArray, percent: number = 0.5) {
214
+ if (typeof percent !== "number" || percent < 0 || percent > 1) {
215
+ throw new Error("Invalid percentage [0...1]: " + percent + ".");
216
+ }
217
+
218
+ // Convert input to RGB object
219
+ const rgb = typeof color === 'string' ? this.hex.to_rgb(color) : {
220
+ r: color[0],
221
+ g: color[1],
222
+ b: color[2],
223
+ a: color.length > 3 ? color[3] : 1
224
+ };
225
+
226
+ // Interpolate toward black (0,0,0)
227
+ const darkened = {
228
+ r: Math.round(rgb.r * (1 - percent)),
229
+ g: Math.round(rgb.g * (1 - percent)),
230
+ b: Math.round(rgb.b * (1 - percent)),
231
+ a: rgb.a
232
+ };
233
+
234
+ // Return in same format as input
235
+ // if (typeof color === 'string') {
236
+ return this.rgb.to_str(darkened.r, darkened.g, darkened.b, darkened.a);
237
+ // } else {
238
+ // return color.length > 3
239
+ // ? [darkened.r, darkened.g, darkened.b, darkened.a]
240
+ // : [darkened.r, darkened.g, darkened.b];
241
+ // }
242
+ },
243
+
244
+ // Lighten the color by interpolating toward white (#FFFFFF)
245
+ lighten(color: Hex | RGBArray, percent: number = 0.5) {
246
+ if (typeof percent !== "number" || percent < 0 || percent > 1) {
247
+ throw new Error("Invalid percentage [0...1]: " + percent + ".");
248
+ }
249
+
250
+ // Convert input to RGB object
251
+ const rgb = typeof color === 'string' ? this.hex.to_rgb(color) : {
252
+ r: color[0],
253
+ g: color[1],
254
+ b: color[2],
255
+ a: color.length > 3 ? color[3] : 1
256
+ };
257
+
258
+ // Interpolate toward white (255,255,255)
259
+ const lightened = {
260
+ r: Math.round(rgb.r + (255 - rgb.r) * percent),
261
+ g: Math.round(rgb.g + (255 - rgb.g) * percent),
262
+ b: Math.round(rgb.b + (255 - rgb.b) * percent),
263
+ a: rgb.a
264
+ };
265
+
266
+ // Return in same format as input
267
+ // if (typeof color === 'string') {
268
+ return this.rgb.to_str(lightened.r, lightened.g, lightened.b, lightened.a);
269
+ // } else {
270
+ // return color.length > 3
271
+ // ? [lightened.r, lightened.g, lightened.b, lightened.a]
272
+ // : [lightened.r, lightened.g, lightened.b];
273
+ // }
274
+ },
275
+
276
+ // Interpolate.
277
+ interpolate(start: Hex | RGBArray, end: Hex | RGBArray, percent: number = 0.5, alpha: number = 1.0) {
278
+ if (typeof percent !== "number" || percent < 0 || percent > 1) {
279
+ throw new Error("Invalid percentage [0...1]: " + percent + ".");
280
+ }
281
+ if (typeof alpha !== "number" || alpha < 0 || alpha > 1) {
282
+ throw new Error("Invalid alpha [0...1]: " + alpha + ".");
283
+ }
284
+ return new ColorRangeClass(start, end).interpolate(percent, alpha)
285
+ }
286
+ };
287
+
288
+ // Aliases
289
+ Colors.hex.to_rgba = Colors.hex.to_rgb;
290
+ Colors.rgba = Colors.rgb;
291
+
292
+ // Export
293
+ export { Colors };
294
+
295
+
296
+ // Types.
297
+ type Hex = string;
298
+ type RGBArray = number[];
299
+ interface RGBObject {
300
+ r: number;
301
+ g: number;
302
+ b: number;
303
+ a: number;
304
+ }
305
+
306
+ import { Elements } from "../elements/module.js"
307
+
308
+ /* @docs:
309
+ @nav: Frontend
310
+ @chapter: Styling
311
+ @title: Color range
312
+ @description: Used to create a range between two different colors. Can be initialized using alias function `ColorRange`.
313
+ @param:
314
+ @name: start
315
+ @descr: The start color (lightest). May either be a HEX string or an rgb(a) array.
316
+ @type: string, array
317
+ @param:
318
+ @name: end
319
+ @descr: The end color (darkest). May either be a HEX string or an rgb(a) array.
320
+ @type: string, array
321
+ */
322
+ export class ColorRangeClass {
323
+
324
+ public start: RGBObject;
325
+ public end: RGBObject;
326
+
327
+ constructor(start: Hex | RGBArray, end: Hex | RGBArray) {
328
+ if (Array.isArray(start)) {
329
+ this.start = this.array_to_rgba(start);
330
+ } else if (typeof start === "string") {
331
+ this.start = Colors.hex.to_rgb(start);
332
+ } else {
333
+ throw new Error(`Invalid type "${typeof start}" for parameter "start", the valid types are "string" or "array".`);
334
+ }
335
+ if (Array.isArray(end)) {
336
+ this.end = this.array_to_rgba(end);
337
+ } else if (typeof end === "string") {
338
+ this.end = Colors.hex.to_rgb(end);
339
+ } else {
340
+ throw new Error(`Invalid type "${typeof end}" for parameter "end", the valid types are "string" or "array".`);
341
+ }
342
+ }
343
+
344
+ // Array to rgba.
345
+ array_to_rgba(array: RGBArray): RGBObject {
346
+ return {
347
+ r: isNaN(array[0]) ? 0 : array[0],
348
+ g: isNaN(array[1]) ? 0 : array[1],
349
+ b: isNaN(array[2]) ? 0 : array[2],
350
+ a: array.length < 4 ? 1.0 : isNaN(array[3]) ? 1.0 : array[3],
351
+ }
352
+ }
353
+
354
+ /* @docs:
355
+ @title: Interpolate
356
+ @description: Interpolate between the start and end colors. When `percent` is 0 it will return the `start` color and when percent is `1` it will return the end color without computations.
357
+ @param:
358
+ @name: percent
359
+ @descr: The percentage to interpolate from start to end, the valid range is `0.0` till `1.0`.
360
+ @type: number
361
+ @param:
362
+ @name: alpha
363
+ @descr: The alpha channel, the valid range is `0.0` till `1.0`.
364
+ @type: number
365
+ @default: 1
366
+ */
367
+ interpolate(percent: number = 0.5, alpha: number = 1.0): Hex {
368
+ // Validate inputs
369
+ percent = Math.max(0, Math.min(1, percent)); // Clamp percent between 0 and 1
370
+ alpha = Math.max(0, Math.min(1, alpha)); // Clamp alpha between 0 and 1
371
+
372
+ // Handle edge cases
373
+ if (percent <= 0) {
374
+ return Colors.rgb.to_str(
375
+ this.start.r,
376
+ this.start.g,
377
+ this.start.b,
378
+ this.start.a,
379
+ );
380
+ } else if (percent >= 1) {
381
+ console.log("END:", this.end)
382
+ return Colors.rgb.to_str(
383
+ this.end.r,
384
+ this.end.g,
385
+ this.end.b,
386
+ this.end.a,
387
+ );
388
+ }
389
+
390
+ // Ensure all RGB values are valid numbers (default to 0 if invalid)
391
+ const startR = isNaN(this.start.r) ? 0 : this.start.r;
392
+ const startG = isNaN(this.start.g) ? 0 : this.start.g;
393
+ const startB = isNaN(this.start.b) ? 0 : this.start.b;
394
+
395
+ const endR = isNaN(this.end.r) ? 0 : this.end.r;
396
+ const endG = isNaN(this.end.g) ? 0 : this.end.g;
397
+ const endB = isNaN(this.end.b) ? 0 : this.end.b;
398
+
399
+ // Perform interpolation with validated values
400
+ return Colors.rgba.to_str(
401
+ Math.round(startR + (endR - startR) * percent),
402
+ Math.round(startG + (endG - startG) * percent),
403
+ Math.round(startB + (endB - startB) * percent),
404
+ alpha,
405
+ );
406
+ }
407
+ // interpolate(percent: number = 0.5, alpha: number = 1.0): Hex {
408
+ // if (percent <= 0) {
409
+ // return Colors.rgb.to_str(
410
+ // this.start.r,
411
+ // this.start.g,
412
+ // this.start.b,
413
+ // this.start.a,
414
+ // )
415
+ // } else if (percent >= 1) {
416
+ // return Colors.rgb.to_str(
417
+ // this.end.r,
418
+ // this.end.g,
419
+ // this.end.b,
420
+ // this.end.a,
421
+ // )
422
+ // }
423
+ // return Colors.rgba.to_str(
424
+ // Math.round(this.start.r + (this.end.r - this.start.r) * percent),
425
+ // Math.round(this.start.g + (this.end.g - this.start.g) * percent),
426
+ // Math.round(this.start.b + (this.end.b - this.start.b) * percent),
427
+ // alpha,
428
+ // )
429
+ // }
430
+
431
+ // RGBA to hex.
432
+ // rgb_to_hex(r, g, b, a = 1) {
433
+ // const hex = [r, g, b].map(x => {
434
+ // const hex = x.toString(16);
435
+ // return hex.length === 1 ? '0' + hex : hex;
436
+ // })
437
+ // if (a != null && a < 1) {
438
+ // let a = a / 100;
439
+ // if (a < 10) {
440
+ // hex.push("0" + a.toString())
441
+ // } else {
442
+ // hex.push(a.toString())
443
+ // }
444
+ // }
445
+ // return '#' + hex.join('');
446
+ // }
447
+ }
448
+ export const ColorRange = Elements.wrapper(ColorRangeClass);
449
+ export const NullColorRange = Elements.create_null(ColorRangeClass);