@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,583 @@
1
+ /*
2
+ * Author: Daan van den Bergh
3
+ * Copyright: © 2022 - 2024 Daan van den Bergh.
4
+ */
5
+
6
+ interface IncrementOptions {
7
+ seconds?: number;
8
+ minutes?: number;
9
+ hours?: number;
10
+ days?: number;
11
+ weeks?: number;
12
+ months?: number;
13
+ years?: number;
14
+ }
15
+
16
+ // The date class.
17
+ /** @docs
18
+ * @chapter Types
19
+ * @title Date
20
+ * @desc Extended Date class with additional formatting and manipulation capabilities
21
+ */
22
+ export class VDate extends Date {
23
+ constructor();
24
+ constructor(value: number | string);
25
+ constructor(valueOfDate: Date | VDate); // You were missing this one
26
+ constructor(year: number, month: number, date?: number, hours?: number, minutes?: number, seconds?: number, ms?: number);
27
+ constructor(
28
+ valueOrYear?: string | number | Date,
29
+ month?: number,
30
+ date?: number,
31
+ hours?: number,
32
+ minutes?: number,
33
+ seconds?: number,
34
+ ms?: number
35
+ );
36
+ constructor() {
37
+ if (arguments.length === 0) {
38
+ super();
39
+ } else if (arguments.length === 1) {
40
+ super(arguments[0] as string | number | Date | VDate);
41
+ } else {
42
+ super(
43
+ arguments[0] as number,
44
+ arguments[1]!,
45
+ arguments[2] || 1,
46
+ arguments[3] || 0,
47
+ arguments[4] || 0,
48
+ arguments[5] || 0,
49
+ arguments[6] || 0
50
+ );
51
+ }
52
+ }
53
+
54
+ /** @docs
55
+ * @title Format
56
+ * @desc Format a date object to a string using various format specifiers
57
+ * @param
58
+ * @name format
59
+ * @desc The date format string using % specifiers (e.g., %Y-%m-%d)
60
+ * @type string
61
+ * @returns
62
+ * @type string
63
+ * @desc The formatted date string
64
+ */
65
+ format(format: string): string {
66
+ let formatted = "";
67
+ for (let i = 0; i < format.length; i++) {
68
+ if (format[i] === "%") {
69
+ switch (format[i + 1]) {
70
+ // %% : a literal %.
71
+ case '%':
72
+ formatted += "%";
73
+ ++i;
74
+ break;
75
+
76
+ // %a : locale’s abbreviated weekday name (e.g., Sun).
77
+ case 'a':
78
+ formatted += new Intl.DateTimeFormat('en-US', { weekday: 'short' }).format(this);
79
+ ++i;
80
+ break;
81
+
82
+ // %A : locale’s full weekday name (e.g., Sunday).
83
+ case 'A':
84
+ formatted += new Intl.DateTimeFormat('en-US', { weekday: 'long' }).format(this);
85
+ ++i;
86
+ break;
87
+
88
+ // %b : locale’s abbreviated month name (e.g., Jan); same as %h.
89
+ // %h : locale’s abbreviated month name (e.g., Jan); same as %b.
90
+ case 'b':
91
+ case 'h':
92
+ formatted += new Intl.DateTimeFormat('en-US', { month: 'short' }).format(this);
93
+ ++i;
94
+ break;
95
+
96
+ // %B : locale’s full month name (e.g., January).
97
+ case 'B':
98
+ formatted += new Intl.DateTimeFormat('en-US', { month: 'long' }).format(this);
99
+ ++i;
100
+ break;
101
+
102
+ // %C : century; like %Y, except omit last two digits (e.g., 21).
103
+ case 'C':
104
+ formatted += Math.floor(this.getFullYear() / 100);
105
+ ++i;
106
+ break;
107
+
108
+ // %d : day of month (e.g, 01).
109
+ case 'd':
110
+ formatted += String(this.getDate()).padStart(2, '0');
111
+ ++i;
112
+ break;
113
+
114
+ // %e : day of month, space padded; same as %_d.
115
+ case 'e':
116
+ formatted += String(this.getDate());
117
+ ++i;
118
+ break;
119
+
120
+ // %D : date; same as %m/%d/%y.
121
+ case 'D':
122
+ formatted += this.format("%m/%d/%y");
123
+ ++i;
124
+ break;
125
+
126
+ // %F : full date; same as %Y-%m-%d.
127
+ case 'F':
128
+ formatted += this.format("%Y-%m-%d");
129
+ ++i;
130
+ break;
131
+
132
+ // %H : hour (00..23).
133
+ case 'H':
134
+ formatted += String(this.getHours()).padStart(2, '0');
135
+ ++i;
136
+ break;
137
+
138
+ // %I : hour (01..12).
139
+ case 'I':
140
+ formatted += String((this.getHours() % 12) || 12).padStart(2, '0');
141
+ ++i;
142
+ break;
143
+
144
+ // %j : day of year (001..366) .
145
+ case 'j':
146
+ formatted += String(
147
+ Math.floor((this.getTime() - new Date(this.getFullYear(), 0, 0).getTime()) / (86400 * 1000))
148
+ ).padStart(3, '0');
149
+ ++i;
150
+ break;
151
+
152
+ // %k : hour (0..23).
153
+ case 'k':
154
+ formatted += String(this.getHours());
155
+ ++i;
156
+ break;
157
+
158
+ // %l : hour ( 1..12) .
159
+ case 'l':
160
+ formatted += String((this.getHours() % 12) || 12);
161
+ ++i;
162
+ break;
163
+
164
+ // %m : month (01..12).
165
+ case 'm':
166
+ formatted += String(this.getMonth() + 1).padStart(2, '0');
167
+ ++i;
168
+ break;
169
+
170
+ // %M : minute (00..59).
171
+ case 'M':
172
+ formatted += String(this.getMinutes()).padStart(2, '0');
173
+ ++i;
174
+ break;
175
+
176
+ // %n : a newline.
177
+ case 'n':
178
+ formatted += "\n";
179
+ ++i;
180
+ break;
181
+
182
+ // %XN : milliseconds (X: 1..3) (0..9) (00..99) (000..999).
183
+ case 'N':
184
+ formatted += String(this.getMilliseconds()).padStart(Number(format[i + 2]) || 3, '0');
185
+ i += 2;
186
+ break;
187
+
188
+ // %p : locale’s equivalent of either AM or PM.
189
+ case 'p':
190
+ formatted += new Intl.DateTimeFormat('en-US', { hour: 'numeric', hour12: true }).format(this);
191
+ ++i;
192
+ break;
193
+
194
+ // %P : like %p, but lower case.
195
+ case 'P':
196
+ formatted += new Intl.DateTimeFormat('en-US', { hour: 'numeric', hour12: true }).format(this).toLowerCase();
197
+ ++i;
198
+ break;
199
+
200
+ // %r : locale’s 12-hour clock time (e.g., 11:11:04 PM).
201
+ case 'r':
202
+ formatted += this.format("%I:%M:%S %p");
203
+ ++i;
204
+ break;
205
+
206
+ // %R : 24-hour hour and minute; same as %H:%M.
207
+ case 'R':
208
+ formatted += this.format("%H:%M");
209
+ ++i;
210
+ break;
211
+
212
+ // %s : seconds since 1970-01-01 00:00:00 UTC.
213
+ case 's':
214
+ formatted += Math.floor(this.getTime() / 1000);
215
+ ++i;
216
+ break;
217
+
218
+ // %S : second (00..60).
219
+ case 'S':
220
+ formatted += String(this.getSeconds()).padStart(2, '0');
221
+ ++i;
222
+ break;
223
+
224
+ // %t : a tab.
225
+ case 't':
226
+ formatted += "\t";
227
+ ++i;
228
+ break;
229
+
230
+ // %T : time; same as %H:%M:%S.
231
+ case 'T':
232
+ formatted += this.format("%H:%M:%S");
233
+ ++i;
234
+ break;
235
+
236
+ // %u : day of week (1..7); 1 is Monday.
237
+ case 'u':
238
+ formatted += this.getDay() || 7;
239
+ ++i;
240
+ break;
241
+
242
+ // %U : week number of year, with Sunday as first day of week (00..53).
243
+ case 'U':
244
+ formatted += String(
245
+ Math.ceil((this.getTime() - new Date(this.getFullYear(), 0, 1).getTime()) / (86400 * 1000) + 1) / 7
246
+ ).padStart(2, '0');
247
+ ++i;
248
+ break;
249
+
250
+ // %V : ISO week number, with Monday as first day of week (01..53).
251
+ case 'V':
252
+ const jan4 = new Date(this.getFullYear(), 0, 4);
253
+ const startOfWeek = new Date(this.getFullYear(), 0, 1);
254
+ const daysSinceJan4 = Math.floor((this.getTime() - jan4.getTime()) / (86400 * 1000));
255
+ const weekNumber = Math.ceil((daysSinceJan4 + jan4.getDay() + 1) / 7);
256
+ formatted += String(weekNumber).padStart(2, '0');
257
+ ++i;
258
+ break;
259
+
260
+ // %w : day of week (0..6); 0 is Sunday.
261
+ case 'w':
262
+ formatted += this.getDay();
263
+ ++i;
264
+ break;
265
+
266
+ // %W : week number of year, with Monday as first day of week (00..53).
267
+ case 'W':
268
+ formatted += String(
269
+ Math.floor((this.getTime() - new Date(this.getFullYear(), 0, 1).getTime()) / (86400 * 1000) + 1) / 7
270
+ ).padStart(2, '0');
271
+ ++i;
272
+ break;
273
+
274
+ // %x : locale’s date representation (e.g., 12/31/99).
275
+ case 'x':
276
+ formatted += new Intl.DateTimeFormat('en-US').format(this);
277
+ ++i;
278
+ break;
279
+
280
+ // %X : locale’s time representation (e.g., 23:13:48).
281
+ case 'X':
282
+ formatted += new Intl.DateTimeFormat('en-US', { hour: 'numeric', minute: 'numeric', second: 'numeric' }).format(this);
283
+ ++i;
284
+ break;
285
+
286
+ // %y : last two digits of year (00..99).
287
+ case 'y':
288
+ formatted += String(this.getFullYear()).slice(-2);
289
+ ++i;
290
+ break;
291
+
292
+ // %Y : Full year.
293
+ case 'Y':
294
+ formatted += String(this.getFullYear());
295
+ ++i;
296
+ break;
297
+
298
+ // %z : +hhmm numeric timezone (e.g., -0400).
299
+ // %:z : +hh:mm numeric timezone (e.g., -04:00)
300
+ // %::z : +hh:mm:ss numeric time zone (e.g., -04:00:00).
301
+ // %:::z : numeric time zone with : to necessary precision (e.g., -04, +05:30).
302
+ case ':':
303
+ case 'z':
304
+ const timezoneOffset = this.getTimezoneOffset();
305
+ const sign = timezoneOffset > 0 ? '-' : '+';
306
+ const hours = String(Math.floor(Math.abs(timezoneOffset) / 60)).padStart(2, '0');
307
+ const minutes = String(Math.abs(timezoneOffset) % 60).padStart(2, '0');
308
+
309
+ if (format[i + 1] === "z") {
310
+ formatted += `${sign}${hours}${minutes}`;
311
+ i += 1;
312
+ }
313
+ else if (format[i + 2] === "z") {
314
+ formatted += `${sign}${hours}:${minutes}`;
315
+ i += 2;
316
+ }
317
+ else if (format[i + 3] === "z") {
318
+ formatted += `${sign}${hours}:${minutes}:${this.format('XN')}`;
319
+ i += 3;
320
+ }
321
+ else if (format[i + 4] === "z") {
322
+ formatted += `${sign}${hours}:${minutes}:${this.format('XN').slice(0, 2)}`;
323
+ i += 4;
324
+ }
325
+ break;
326
+
327
+ // %Z : alphabetic time zone abbreviation (e.g., EDT).
328
+ case 'Z':
329
+ formatted += Intl.DateTimeFormat('en-US', { timeZoneName: 'short' }).format(this);
330
+ ++i;
331
+ break;
332
+
333
+ // Unknown.
334
+ default:
335
+ formatted += format[i];
336
+ break;
337
+ }
338
+ } else {
339
+ formatted += format[i];
340
+ }
341
+ }
342
+ return formatted;
343
+ // let formatted = "";
344
+ // for (let i = 0; i < format.length; i++) {
345
+ // if (format[i] === "%") {
346
+ // switch (format[i + 1]) {
347
+ // // %% : a literal %.
348
+ // case '%':
349
+ // formatted += "%";
350
+ // ++i;
351
+ // break;
352
+
353
+ // // %a : locale's abbreviated weekday name (e.g., Sun).
354
+ // case 'a':
355
+ // formatted += new Intl.DateTimeFormat('en-US', { weekday: 'short' }).format(this);
356
+ // ++i;
357
+ // break;
358
+
359
+ // // All other cases remain the same as in the original...
360
+ // // [For brevity, I'm not showing all cases but they would be identical]
361
+
362
+ // default:
363
+ // formatted += format[i];
364
+ // break;
365
+ // }
366
+ // } else {
367
+ // formatted += format[i];
368
+ // }
369
+ // }
370
+ // return formatted;
371
+ }
372
+
373
+ /** @docs
374
+ * @title Milliseconds
375
+ * @desc Get the timestamp in milliseconds
376
+ * @returns
377
+ * @type number
378
+ * @desc The timestamp in milliseconds
379
+ */
380
+ msec(): number {
381
+ return this.getTime();
382
+ }
383
+
384
+ /** @docs
385
+ * @title Seconds
386
+ * @desc Get the timestamp in seconds
387
+ * @returns
388
+ * @type number
389
+ * @desc The timestamp in seconds
390
+ */
391
+ sec(): number {
392
+ return Math.floor(this.getTime() / 1000);
393
+ }
394
+
395
+ /** @docs
396
+ * @title Minute start
397
+ * @desc Get a new date object set to the start of the current minute
398
+ * @returns
399
+ * @type VDate
400
+ * @desc A new date object set to the start of the minute
401
+ */
402
+ minute_start(): VDate {
403
+ const date = new VDate(this.getTime());
404
+ date.setSeconds(0);
405
+ date.setMilliseconds(0);
406
+ return date;
407
+ }
408
+
409
+ /** @docs
410
+ * @title Hour start
411
+ * @desc Get a new date object set to the start of the current hour
412
+ * @returns
413
+ * @type VDate
414
+ * @desc A new date object set to the start of the hour
415
+ */
416
+ hour_start(): VDate {
417
+ const date = new VDate(this.getTime());
418
+ date.setMinutes(0, 0, 0);
419
+ return date;
420
+ }
421
+
422
+ /** @docs
423
+ * @title Day start
424
+ * @desc Get a new date object set to the start of the current day
425
+ * @returns
426
+ * @type VDate
427
+ * @desc A new date object set to the start of the day
428
+ */
429
+ day_start(): VDate {
430
+ const date = new VDate(this.getTime());
431
+ date.setHours(0, 0, 0, 0);
432
+ return date;
433
+ }
434
+
435
+ /** @docs
436
+ * @title Week start
437
+ * @desc Get a new date object set to the start of the current week
438
+ * @param
439
+ * @name sunday_start
440
+ * @desc Whether to use Sunday (true) or Monday (false) as the start of the week
441
+ * @type boolean
442
+ * @returns
443
+ * @type VDate
444
+ * @desc A new date object set to the start of the week
445
+ */
446
+ week_start(sunday_start: boolean = true): VDate {
447
+ const diff = (this.getDay() + 7 - (sunday_start ? 0 : 1)) % 7;
448
+ const date = new VDate(this.getTime());
449
+ date.setDate(this.getDate() - diff);
450
+ date.setHours(0, 0, 0, 0);
451
+ return date;
452
+ }
453
+
454
+ /** @docs
455
+ * @title Month start
456
+ * @desc Get a new date object set to the start of the current month
457
+ * @returns
458
+ * @type VDate
459
+ * @desc A new date object set to the start of the month
460
+ */
461
+ month_start(): VDate {
462
+ const date = new VDate(this.getTime());
463
+ date.setDate(1);
464
+ date.setHours(0, 0, 0, 0);
465
+ return date;
466
+ }
467
+
468
+ /** @docs
469
+ * @title Quarter year start
470
+ * @desc Get a new date object set to the start of the current quarter
471
+ * @returns
472
+ * @type VDate
473
+ * @desc A new date object set to the start of the quarter
474
+ */
475
+ quarter_year_start(): VDate {
476
+ const date = new VDate(this.getTime());
477
+ const month = date.getMonth() + 1;
478
+ if (month > 9) {
479
+ date.setMonth(9 - 1, 1);
480
+ } else if (month > 6) {
481
+ date.setMonth(6 - 1, 1);
482
+ } else if (month > 3) {
483
+ date.setMonth(3 - 1, 1);
484
+ } else {
485
+ date.setMonth(0, 1);
486
+ }
487
+ date.setHours(0, 0, 0, 0);
488
+ return date;
489
+ }
490
+
491
+ /** @docs
492
+ * @title Half year start
493
+ * @desc Get a new date object set to the start of the current half year
494
+ * @returns
495
+ * @type VDate
496
+ * @desc A new date object set to the start of the half year
497
+ */
498
+ half_year_start(): VDate {
499
+ const date = new VDate(this.getTime());
500
+ if (date.getMonth() + 1 > 6) {
501
+ date.setMonth(5, 1);
502
+ } else {
503
+ date.setMonth(0, 1);
504
+ }
505
+ date.setHours(0, 0, 0, 0);
506
+ return date;
507
+ }
508
+
509
+ /** @docs
510
+ * @title Year start
511
+ * @desc Get a new date object set to the start of the current year
512
+ * @returns
513
+ * @type VDate
514
+ * @desc A new date object set to the start of the year
515
+ */
516
+ year_start(): VDate {
517
+ const date = new VDate(this.getTime());
518
+ date.setMonth(0, 1);
519
+ date.setHours(0, 0, 0, 0);
520
+ return date;
521
+ }
522
+
523
+ /** @docs
524
+ * @title Increment date
525
+ * @desc Create a new date incremented by the specified amounts
526
+ * @param
527
+ * @name options
528
+ * @desc Object containing increment values
529
+ * @type IncrementOptions
530
+ * @returns
531
+ * @type VDate
532
+ * @desc A new date object incremented by the specified amounts
533
+ */
534
+ increment({
535
+ seconds = 0,
536
+ minutes = 0,
537
+ hours = 0,
538
+ days = 0,
539
+ weeks = 0,
540
+ months = 0,
541
+ years = 0
542
+ }: IncrementOptions): VDate {
543
+ const date = new VDate(this.getTime());
544
+ if (seconds > 0) date.setSeconds(date.getSeconds() + seconds);
545
+ if (minutes > 0) date.setMinutes(date.getMinutes() + minutes);
546
+ if (hours > 0) date.setHours(date.getHours() + hours);
547
+ if (days > 0 || weeks > 0) date.setDate(date.getDate() + days + weeks * 7);
548
+ if (months > 0) date.setMonth(date.getMonth() + months);
549
+ if (years > 0) date.setFullYear(date.getFullYear() + years);
550
+ return date;
551
+ }
552
+
553
+ /** @docs
554
+ * @title Decrement date
555
+ * @desc Create a new date decremented by the specified amounts
556
+ * @param
557
+ * @name options
558
+ * @desc Object containing decrement values
559
+ * @type IncrementOptions
560
+ * @returns
561
+ * @type VDate
562
+ * @desc A new date object decremented by the specified amounts
563
+ */
564
+ decrement({
565
+ seconds = 0,
566
+ minutes = 0,
567
+ hours = 0,
568
+ days = 0,
569
+ weeks = 0,
570
+ months = 0,
571
+ years = 0
572
+ }: IncrementOptions): VDate {
573
+ const date = new VDate(this.getTime());
574
+ if (seconds > 0) date.setSeconds(date.getSeconds() - seconds);
575
+ if (minutes > 0) date.setMinutes(date.getMinutes() - minutes);
576
+ if (hours > 0) date.setHours(date.getHours() - hours);
577
+ if (days > 0 || weeks > 0) date.setDate(date.getDate() - (days + weeks * 7));
578
+ if (months > 0) date.setMonth(date.getMonth() - months);
579
+ if (years > 0) date.setFullYear(date.getFullYear() - years);
580
+ return date;
581
+ }
582
+ }
583
+ export { VDate as Date };
@@ -0,0 +1,96 @@
1
+ /*
2
+ * Author: Daan van den Bergh
3
+ * Copyright: © 2022 - 2024 Daan van den Bergh.
4
+ */
5
+
6
+ // Events module.
7
+ const Events = {
8
+ events: new Map<string, Array<[any, (element: any, args: any) => void]>>(),
9
+
10
+ // Emit an event.
11
+ /* @docs:
12
+ @nav: Frontend
13
+ @chapter: Events
14
+ @title: Emit
15
+ @desc: Emit a registered event.
16
+ @param:
17
+ @name: id
18
+ @description The id of the registered event to emit.
19
+ @param:
20
+ @name: args
21
+ @description The arguments that will be passed to the registered callbacks.
22
+ */
23
+ emit(id: string, args: Record<string, any> = {}): void {
24
+ const callbacks = this.events.get(id);
25
+ if (callbacks == null) {
26
+ return;
27
+ }
28
+ callbacks.forEach((i) => {
29
+ i[1](i[0], args);
30
+ });
31
+ },
32
+
33
+ // On event.
34
+ /* @docs:
35
+ @nav: Frontend
36
+ @chapter: Events
37
+ @title: On event
38
+ @desc: Set a callback for an event.
39
+ @param:
40
+ @name: id
41
+ @description The id of the registered event to emit.
42
+ @param:
43
+ @name: element
44
+ @description The element.
45
+ @param:
46
+ @name: callback
47
+ @description The callback function, accepts parameters `(element, args)`.
48
+ */
49
+ on<T extends object>(id: string, element: T, callback: (element: T, args: Record<string, any>) => void): void {
50
+ let callbacks = this.events.get(id);
51
+ if (callbacks == null) {
52
+ callbacks = [];
53
+ this.events.set(id, callbacks);
54
+ }
55
+ callbacks.push([element, callback]);
56
+ },
57
+
58
+ // Remove a callback for an event.
59
+ /* @docs:
60
+ @nav: Frontend
61
+ @chapter: Events
62
+ @title: Remove callback
63
+ @desc: Remove a callback for an event.
64
+ @param:
65
+ @name: id
66
+ @description The id of the registered event to emit.
67
+ @param:
68
+ @name: element
69
+ @description The element.
70
+ @param:
71
+ @name: callback
72
+ @description The callback function to remove. When left undefined, all callbacks matching to that element will be removed.
73
+ */
74
+ remove<T extends object>(id: string, element: T, callback?: (element: T, args: Record<string, any>) => void): void {
75
+ const callbacks = this.events.get(id);
76
+ if (callbacks == null) {
77
+ return;
78
+ }
79
+ const filtered: Array<[any, (element: any, args: any) => void]> = [];
80
+ callbacks.forEach((i) => {
81
+ if (i[0] === element && (callback == null || i[1] === callback)) {
82
+ return;
83
+ }
84
+ filtered.push(i);
85
+ });
86
+ this.events.set(id, filtered);
87
+ }
88
+ };
89
+
90
+ // Fire the onload event.
91
+ window.onload = () => {
92
+ Events.emit("volt.on_load");
93
+ }
94
+
95
+ // Export.
96
+ export { Events };