@underpostnet/underpost 2.7.9

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 (297) hide show
  1. package/.dockerignore +14 -0
  2. package/.env.development +6 -0
  3. package/.env.production +6 -0
  4. package/.env.test +6 -0
  5. package/.github/workflows/ghpkg.yml +115 -0
  6. package/.github/workflows/publish.yml +84 -0
  7. package/.github/workflows/pwa-microservices-template.page.yml +54 -0
  8. package/.github/workflows/pwa-microservices-template.test.yml +30 -0
  9. package/.nycrc +9 -0
  10. package/.prettierignore +13 -0
  11. package/.prettierrc +9 -0
  12. package/.vscode/extensions.json +72 -0
  13. package/.vscode/settings.json +106 -0
  14. package/AUTHORS.md +10 -0
  15. package/CHANGELOG.md +85 -0
  16. package/Dockerfile +90 -0
  17. package/LICENSE +21 -0
  18. package/README.md +96 -0
  19. package/bin/cron.js +47 -0
  20. package/bin/db.js +180 -0
  21. package/bin/deploy.js +859 -0
  22. package/bin/file.js +109 -0
  23. package/bin/index.js +82 -0
  24. package/bin/ssl.js +55 -0
  25. package/bin/util.js +204 -0
  26. package/bin/vs.js +35 -0
  27. package/conf.js +265 -0
  28. package/docker-compose.yml +67 -0
  29. package/jsconfig.json +7 -0
  30. package/jsdoc.json +32 -0
  31. package/nodemon.json +6 -0
  32. package/package.json +134 -0
  33. package/prometheus.yml +36 -0
  34. package/src/api/core/core.controller.js +69 -0
  35. package/src/api/core/core.model.js +11 -0
  36. package/src/api/core/core.router.js +23 -0
  37. package/src/api/core/core.service.js +31 -0
  38. package/src/api/crypto/crypto.controller.js +51 -0
  39. package/src/api/crypto/crypto.model.js +23 -0
  40. package/src/api/crypto/crypto.router.js +20 -0
  41. package/src/api/crypto/crypto.service.js +64 -0
  42. package/src/api/default/default.controller.js +69 -0
  43. package/src/api/default/default.model.js +20 -0
  44. package/src/api/default/default.router.js +23 -0
  45. package/src/api/default/default.service.js +31 -0
  46. package/src/api/file/file.controller.js +53 -0
  47. package/src/api/file/file.model.js +19 -0
  48. package/src/api/file/file.router.js +21 -0
  49. package/src/api/file/file.service.js +80 -0
  50. package/src/api/instance/instance.controller.js +69 -0
  51. package/src/api/instance/instance.model.js +36 -0
  52. package/src/api/instance/instance.router.js +33 -0
  53. package/src/api/instance/instance.service.js +48 -0
  54. package/src/api/test/test.controller.js +59 -0
  55. package/src/api/test/test.model.js +14 -0
  56. package/src/api/test/test.router.js +21 -0
  57. package/src/api/test/test.service.js +35 -0
  58. package/src/api/user/user.build.js +16 -0
  59. package/src/api/user/user.controller.js +70 -0
  60. package/src/api/user/user.model.js +65 -0
  61. package/src/api/user/user.router.js +345 -0
  62. package/src/api/user/user.service.js +479 -0
  63. package/src/api.js +23 -0
  64. package/src/client/Default.index.js +40 -0
  65. package/src/client/components/core/Account.js +290 -0
  66. package/src/client/components/core/AgGrid.js +160 -0
  67. package/src/client/components/core/Auth.js +19 -0
  68. package/src/client/components/core/Badge.js +32 -0
  69. package/src/client/components/core/Blockchain.js +41 -0
  70. package/src/client/components/core/Blog.js +9 -0
  71. package/src/client/components/core/BtnIcon.js +101 -0
  72. package/src/client/components/core/CalendarCore.js +458 -0
  73. package/src/client/components/core/Chat.js +64 -0
  74. package/src/client/components/core/ColorPalette.js +5267 -0
  75. package/src/client/components/core/CommonJs.js +742 -0
  76. package/src/client/components/core/Content.js +193 -0
  77. package/src/client/components/core/Css.js +846 -0
  78. package/src/client/components/core/CssCore.js +844 -0
  79. package/src/client/components/core/D3Chart.js +44 -0
  80. package/src/client/components/core/Docs.js +331 -0
  81. package/src/client/components/core/DropDown.js +164 -0
  82. package/src/client/components/core/EventsUI.js +46 -0
  83. package/src/client/components/core/FileExplorer.js +699 -0
  84. package/src/client/components/core/FullScreen.js +45 -0
  85. package/src/client/components/core/Input.js +346 -0
  86. package/src/client/components/core/JoyStick.js +77 -0
  87. package/src/client/components/core/Keyboard.js +73 -0
  88. package/src/client/components/core/LoadingAnimation.js +178 -0
  89. package/src/client/components/core/LogIn.js +187 -0
  90. package/src/client/components/core/LogOut.js +58 -0
  91. package/src/client/components/core/Logger.js +26 -0
  92. package/src/client/components/core/Modal.js +1814 -0
  93. package/src/client/components/core/NotificationManager.js +84 -0
  94. package/src/client/components/core/Panel.js +613 -0
  95. package/src/client/components/core/PanelForm.js +469 -0
  96. package/src/client/components/core/Polyhedron.js +162 -0
  97. package/src/client/components/core/Recover.js +204 -0
  98. package/src/client/components/core/Responsive.js +68 -0
  99. package/src/client/components/core/RichText.js +53 -0
  100. package/src/client/components/core/Router.js +76 -0
  101. package/src/client/components/core/Scroll.js +34 -0
  102. package/src/client/components/core/SignUp.js +125 -0
  103. package/src/client/components/core/SocketIo.js +72 -0
  104. package/src/client/components/core/Stream.js +113 -0
  105. package/src/client/components/core/ToggleSwitch.js +87 -0
  106. package/src/client/components/core/ToolTip.js +26 -0
  107. package/src/client/components/core/Translate.js +446 -0
  108. package/src/client/components/core/Validator.js +100 -0
  109. package/src/client/components/core/VanillaJs.js +463 -0
  110. package/src/client/components/core/Wallet.js +106 -0
  111. package/src/client/components/core/WebComponent.js +44 -0
  112. package/src/client/components/core/Webhook.js +25 -0
  113. package/src/client/components/core/Worker.js +280 -0
  114. package/src/client/components/default/CommonDefault.js +29 -0
  115. package/src/client/components/default/CssDefault.js +13 -0
  116. package/src/client/components/default/ElementsDefault.js +38 -0
  117. package/src/client/components/default/LogInDefault.js +41 -0
  118. package/src/client/components/default/LogOutDefault.js +28 -0
  119. package/src/client/components/default/MenuDefault.js +389 -0
  120. package/src/client/components/default/RoutesDefault.js +48 -0
  121. package/src/client/components/default/SettingsDefault.js +16 -0
  122. package/src/client/components/default/SignUpDefault.js +9 -0
  123. package/src/client/components/default/SocketIoDefault.js +54 -0
  124. package/src/client/components/default/TranslateDefault.js +7 -0
  125. package/src/client/public/default/android-chrome-144x144.png +0 -0
  126. package/src/client/public/default/android-chrome-192x192.png +0 -0
  127. package/src/client/public/default/android-chrome-256x256.png +0 -0
  128. package/src/client/public/default/android-chrome-36x36.png +0 -0
  129. package/src/client/public/default/android-chrome-384x384.png +0 -0
  130. package/src/client/public/default/android-chrome-48x48.png +0 -0
  131. package/src/client/public/default/android-chrome-512x512.png +0 -0
  132. package/src/client/public/default/android-chrome-72x72.png +0 -0
  133. package/src/client/public/default/android-chrome-96x96.png +0 -0
  134. package/src/client/public/default/apple-touch-icon-1024x1024.png +0 -0
  135. package/src/client/public/default/apple-touch-icon-114x114.png +0 -0
  136. package/src/client/public/default/apple-touch-icon-120x120.png +0 -0
  137. package/src/client/public/default/apple-touch-icon-144x144.png +0 -0
  138. package/src/client/public/default/apple-touch-icon-152x152.png +0 -0
  139. package/src/client/public/default/apple-touch-icon-167x167.png +0 -0
  140. package/src/client/public/default/apple-touch-icon-180x180.png +0 -0
  141. package/src/client/public/default/apple-touch-icon-57x57.png +0 -0
  142. package/src/client/public/default/apple-touch-icon-60x60.png +0 -0
  143. package/src/client/public/default/apple-touch-icon-72x72.png +0 -0
  144. package/src/client/public/default/apple-touch-icon-76x76.png +0 -0
  145. package/src/client/public/default/apple-touch-icon-precomposed.png +0 -0
  146. package/src/client/public/default/apple-touch-icon.png +0 -0
  147. package/src/client/public/default/apple-touch-startup-image-1125x2436.png +0 -0
  148. package/src/client/public/default/apple-touch-startup-image-1136x640.png +0 -0
  149. package/src/client/public/default/apple-touch-startup-image-1170x2532.png +0 -0
  150. package/src/client/public/default/apple-touch-startup-image-1179x2556.png +0 -0
  151. package/src/client/public/default/apple-touch-startup-image-1242x2208.png +0 -0
  152. package/src/client/public/default/apple-touch-startup-image-1242x2688.png +0 -0
  153. package/src/client/public/default/apple-touch-startup-image-1284x2778.png +0 -0
  154. package/src/client/public/default/apple-touch-startup-image-1290x2796.png +0 -0
  155. package/src/client/public/default/apple-touch-startup-image-1334x750.png +0 -0
  156. package/src/client/public/default/apple-touch-startup-image-1488x2266.png +0 -0
  157. package/src/client/public/default/apple-touch-startup-image-1536x2048.png +0 -0
  158. package/src/client/public/default/apple-touch-startup-image-1620x2160.png +0 -0
  159. package/src/client/public/default/apple-touch-startup-image-1640x2160.png +0 -0
  160. package/src/client/public/default/apple-touch-startup-image-1668x2224.png +0 -0
  161. package/src/client/public/default/apple-touch-startup-image-1668x2388.png +0 -0
  162. package/src/client/public/default/apple-touch-startup-image-1792x828.png +0 -0
  163. package/src/client/public/default/apple-touch-startup-image-2048x1536.png +0 -0
  164. package/src/client/public/default/apple-touch-startup-image-2048x2732.png +0 -0
  165. package/src/client/public/default/apple-touch-startup-image-2160x1620.png +0 -0
  166. package/src/client/public/default/apple-touch-startup-image-2160x1640.png +0 -0
  167. package/src/client/public/default/apple-touch-startup-image-2208x1242.png +0 -0
  168. package/src/client/public/default/apple-touch-startup-image-2224x1668.png +0 -0
  169. package/src/client/public/default/apple-touch-startup-image-2266x1488.png +0 -0
  170. package/src/client/public/default/apple-touch-startup-image-2388x1668.png +0 -0
  171. package/src/client/public/default/apple-touch-startup-image-2436x1125.png +0 -0
  172. package/src/client/public/default/apple-touch-startup-image-2532x1170.png +0 -0
  173. package/src/client/public/default/apple-touch-startup-image-2556x1179.png +0 -0
  174. package/src/client/public/default/apple-touch-startup-image-2688x1242.png +0 -0
  175. package/src/client/public/default/apple-touch-startup-image-2732x2048.png +0 -0
  176. package/src/client/public/default/apple-touch-startup-image-2778x1284.png +0 -0
  177. package/src/client/public/default/apple-touch-startup-image-2796x1290.png +0 -0
  178. package/src/client/public/default/apple-touch-startup-image-640x1136.png +0 -0
  179. package/src/client/public/default/apple-touch-startup-image-750x1334.png +0 -0
  180. package/src/client/public/default/apple-touch-startup-image-828x1792.png +0 -0
  181. package/src/client/public/default/assets/background/white.jpg +0 -0
  182. package/src/client/public/default/assets/background/white0-min.jpg +0 -0
  183. package/src/client/public/default/assets/background/white0.jpg +0 -0
  184. package/src/client/public/default/assets/logo/base-icon.png +0 -0
  185. package/src/client/public/default/assets/mailer/api-user-check.png +0 -0
  186. package/src/client/public/default/assets/mailer/api-user-invalid-token.png +0 -0
  187. package/src/client/public/default/assets/mailer/api-user-recover.png +0 -0
  188. package/src/client/public/default/browserconfig.xml +12 -0
  189. package/src/client/public/default/favicon-16x16.png +0 -0
  190. package/src/client/public/default/favicon-32x32.png +0 -0
  191. package/src/client/public/default/favicon-48x48.png +0 -0
  192. package/src/client/public/default/favicon.ico +0 -0
  193. package/src/client/public/default/manifest.webmanifest +69 -0
  194. package/src/client/public/default/mstile-144x144.png +0 -0
  195. package/src/client/public/default/mstile-150x150.png +0 -0
  196. package/src/client/public/default/mstile-310x150.png +0 -0
  197. package/src/client/public/default/mstile-310x310.png +0 -0
  198. package/src/client/public/default/mstile-70x70.png +0 -0
  199. package/src/client/public/default/plantuml/client-conf.svg +1 -0
  200. package/src/client/public/default/plantuml/client-schema.svg +1 -0
  201. package/src/client/public/default/plantuml/cron-conf.svg +1 -0
  202. package/src/client/public/default/plantuml/cron-schema.svg +1 -0
  203. package/src/client/public/default/plantuml/server-conf.svg +1 -0
  204. package/src/client/public/default/plantuml/server-schema.svg +1 -0
  205. package/src/client/public/default/plantuml/ssr-conf.svg +1 -0
  206. package/src/client/public/default/plantuml/ssr-schema.svg +1 -0
  207. package/src/client/public/default/site.webmanifest +69 -0
  208. package/src/client/public/default/sitemap +148 -0
  209. package/src/client/public/default/yandex-browser-50x50.png +0 -0
  210. package/src/client/public/default/yandex-browser-manifest.json +9 -0
  211. package/src/client/public/doc/favicon.ico +0 -0
  212. package/src/client/public/doc/sitemap +148 -0
  213. package/src/client/public/test/favicon.ico +0 -0
  214. package/src/client/public/test/sitemap +148 -0
  215. package/src/client/services/core/core.service.js +170 -0
  216. package/src/client/services/crypto/crypto.service.js +70 -0
  217. package/src/client/services/default/default.management.js +343 -0
  218. package/src/client/services/default/default.service.js +89 -0
  219. package/src/client/services/file/file.service.js +70 -0
  220. package/src/client/services/instance/instance.management.js +74 -0
  221. package/src/client/services/instance/instance.service.js +89 -0
  222. package/src/client/services/test/test.service.js +70 -0
  223. package/src/client/services/user/user.management.js +50 -0
  224. package/src/client/services/user/user.service.js +89 -0
  225. package/src/client/ssr/Render.js +237 -0
  226. package/src/client/ssr/common/Alert.js +75 -0
  227. package/src/client/ssr/common/SsrCore.js +91 -0
  228. package/src/client/ssr/common/Translate.js +26 -0
  229. package/src/client/ssr/common/Worker.js +28 -0
  230. package/src/client/ssr/components/body/CacheControl.js +114 -0
  231. package/src/client/ssr/components/body/DefaultSplashScreen.js +90 -0
  232. package/src/client/ssr/components/email/DefaultRecoverEmail.js +21 -0
  233. package/src/client/ssr/components/email/DefaultVerifyEmail.js +17 -0
  234. package/src/client/ssr/components/head/Css.js +241 -0
  235. package/src/client/ssr/components/head/DefaultScripts.js +3 -0
  236. package/src/client/ssr/components/head/Production.js +1 -0
  237. package/src/client/ssr/components/head/Pwa.js +146 -0
  238. package/src/client/ssr/components/head/PwaDefault.js +60 -0
  239. package/src/client/ssr/components/head/Seo.js +14 -0
  240. package/src/client/ssr/pages/404.js +12 -0
  241. package/src/client/ssr/pages/500.js +12 -0
  242. package/src/client/ssr/pages/maintenance.js +14 -0
  243. package/src/client/ssr/pages/offline.js +21 -0
  244. package/src/client/sw/default.sw.js +205 -0
  245. package/src/client/sw/template.sw.js +84 -0
  246. package/src/client.build.js +22 -0
  247. package/src/client.dev.js +21 -0
  248. package/src/db/DataBaseProvider.js +45 -0
  249. package/src/db/mariadb/MariaDB.js +33 -0
  250. package/src/db/mongo/MongooseDB.js +124 -0
  251. package/src/dns.js +22 -0
  252. package/src/index.js +43 -0
  253. package/src/mailer/EmailRender.js +69 -0
  254. package/src/mailer/MailerProvider.js +96 -0
  255. package/src/proxy.js +22 -0
  256. package/src/runtime/lampp/Lampp.js +115 -0
  257. package/src/runtime/nginx/Nginx.js +3 -0
  258. package/src/runtime/xampp/Xampp.js +49 -0
  259. package/src/server/auth.js +235 -0
  260. package/src/server/backup.js +120 -0
  261. package/src/server/client-build-live.js +98 -0
  262. package/src/server/client-build.js +754 -0
  263. package/src/server/client-dev-server.js +60 -0
  264. package/src/server/client-formatted.js +58 -0
  265. package/src/server/client-icons.js +151 -0
  266. package/src/server/conf.js +929 -0
  267. package/src/server/crypto.js +91 -0
  268. package/src/server/dns.js +118 -0
  269. package/src/server/downloader.js +42 -0
  270. package/src/server/logger.js +190 -0
  271. package/src/server/network.js +209 -0
  272. package/src/server/peer.js +33 -0
  273. package/src/server/process.js +66 -0
  274. package/src/server/prompt-optimizer.js +28 -0
  275. package/src/server/proxy.js +118 -0
  276. package/src/server/runtime.js +463 -0
  277. package/src/server/ssl.js +120 -0
  278. package/src/server.js +25 -0
  279. package/src/ws/IoInterface.js +45 -0
  280. package/src/ws/IoServer.js +39 -0
  281. package/src/ws/core/channels/core.ws.chat.js +23 -0
  282. package/src/ws/core/channels/core.ws.mailer.js +35 -0
  283. package/src/ws/core/channels/core.ws.stream.js +31 -0
  284. package/src/ws/core/core.ws.connection.js +28 -0
  285. package/src/ws/core/core.ws.emit.js +14 -0
  286. package/src/ws/core/core.ws.server.js +24 -0
  287. package/src/ws/core/management/core.ws.chat.js +8 -0
  288. package/src/ws/core/management/core.ws.mailer.js +16 -0
  289. package/src/ws/core/management/core.ws.stream.js +8 -0
  290. package/src/ws/default/channels/default.ws.main.js +16 -0
  291. package/src/ws/default/default.ws.connection.js +22 -0
  292. package/src/ws/default/default.ws.emit.js +14 -0
  293. package/src/ws/default/default.ws.server.js +20 -0
  294. package/src/ws/default/management/default.ws.main.js +8 -0
  295. package/startup.js +11 -0
  296. package/supervisord-openssh-server.conf +5 -0
  297. package/test/api.test.js +60 -0
@@ -0,0 +1,846 @@
1
+ import { getId, newInstance, range, s4, splitEveryXChar } from './CommonJs.js';
2
+ import { CssCoreDark, CssCoreLight } from './CssCore.js';
3
+ import { DropDown } from './DropDown.js';
4
+ import { Modal } from './Modal.js';
5
+ import { Translate } from './Translate.js';
6
+ import { append, getProxyPath, htmls, s } from './VanillaJs.js';
7
+
8
+ let ThemesScope = [];
9
+
10
+ // https://css.github.io/csso/csso.html
11
+ // https://www.fontspace.com/
12
+ // https://www.1001fonts.com/
13
+
14
+ const Css = {
15
+ loadThemes: async function (themes = []) {
16
+ ThemesScope = [];
17
+ for (const themeOptions of themes) addTheme(themeOptions);
18
+ // if (!ThemesScope.find((t) => t.dark)) addTheme(CssCoreDark);
19
+ // if (!ThemesScope.find((t) => !t.dark)) addTheme(CssCoreLight);
20
+ if (ThemesScope.length === 0) {
21
+ addTheme(CssCoreDark);
22
+ addTheme(CssCoreLight);
23
+ }
24
+ const localStorageTheme = localStorage.getItem('_theme');
25
+ if (localStorageTheme && Themes[localStorageTheme]) {
26
+ const themeOption = ThemesScope.find((t) => t.theme === localStorageTheme);
27
+ if (themeOption) return await this.Init(themeOption);
28
+ }
29
+ await this.Init();
30
+ },
31
+ Init: async function (options) {
32
+ if (!options) options = ThemesScope[0];
33
+ const { theme } = options;
34
+ return await Themes[theme](options);
35
+ },
36
+ RenderSetting: async function () {
37
+ return html` <div class="in section-mp">
38
+ ${await DropDown.Render({
39
+ id: 'settings-theme',
40
+ value: Css.currentTheme,
41
+ label: html`${Translate.Render('theme')}`,
42
+ data: ThemesScope.map((themeOption) => {
43
+ return {
44
+ display: html`<i class="fa-solid fa-brush"></i> ${themeOption.theme}`,
45
+ value: themeOption.theme,
46
+ onClick: async () => await Themes[themeOption.theme](),
47
+ };
48
+ }),
49
+ })}
50
+ </div>`;
51
+ },
52
+ };
53
+
54
+ const barLabels = (options) => {
55
+ return {
56
+ img: {
57
+ close: html`<img
58
+ class="inl bar-default-modal-icon ${options.iconClass ? options.iconClass : ''}"
59
+ src="${getProxyPath()}assets/icons/close.png"
60
+ />`,
61
+ maximize: html`<img
62
+ class="inl bar-default-modal-icon ${options.iconClass ? options.iconClass : ''}"
63
+ src="${getProxyPath()}assets/icons/maximize.png"
64
+ />`,
65
+ minimize: html`<img
66
+ class="inl bar-default-modal-icon ${options.iconClass ? options.iconClass : ''}"
67
+ src="${getProxyPath()}assets/icons/minimize.png"
68
+ />`,
69
+ restore: html`<img
70
+ class="inl bar-default-modal-icon ${options.iconClass ? options.iconClass : ''}"
71
+ src="${getProxyPath()}assets/icons/restore.png"
72
+ />`,
73
+ menu: html`<img
74
+ class="inl bar-default-modal-icon ${options.iconClass ? options.iconClass : ''}"
75
+ src="${getProxyPath()}assets/icons/menu.png"
76
+ />`,
77
+ },
78
+ fontawesome: {
79
+ close: html`<i class="fa-solid fa-xmark ${options.iconClass ? options.iconClass : ''}"></i>`,
80
+ maximize: html`<i class="fa-regular fa-square ${options.iconClass ? options.iconClass : ''}"></i>`,
81
+ minimize: html`<i class="fa-solid fa-window-minimize ${options.iconClass ? options.iconClass : ''}"></i>`,
82
+ restore: html`<i class="fa-regular fa-window-restore ${options.iconClass ? options.iconClass : ''}"></i>`,
83
+ menu: html`<i class="fa-solid fa-bars ${options.iconClass ? options.iconClass : ''}"></i>`,
84
+ },
85
+ default: {
86
+ close: html`X`,
87
+ maximize: html`▢`,
88
+ minimize: html`_`,
89
+ restore: html`□`,
90
+ menu: html`≡`,
91
+ },
92
+ };
93
+ };
94
+
95
+ const barConfig = (options) => {
96
+ const { barButtonsIconTheme } = options;
97
+ return {
98
+ buttons: {
99
+ close: {
100
+ disabled: false,
101
+ label: barLabels(options)[barButtonsIconTheme].close,
102
+ },
103
+ maximize: {
104
+ disabled: false,
105
+ label: barLabels(options)[barButtonsIconTheme].maximize,
106
+ },
107
+ minimize: {
108
+ disabled: false,
109
+ label: barLabels(options)[barButtonsIconTheme].minimize,
110
+ },
111
+ restore: {
112
+ disabled: false,
113
+ label: barLabels(options)[barButtonsIconTheme].restore,
114
+ },
115
+ menu: {
116
+ disabled: true,
117
+ label: barLabels(options)[barButtonsIconTheme].menu,
118
+ },
119
+ },
120
+ };
121
+ };
122
+
123
+ const renderDefaultWindowsModalButtonContent = (options) => {
124
+ const { barButtonsIconTheme, htmlRender } = options;
125
+ const barConfigInstance = barConfig(options);
126
+ if (htmlRender)
127
+ Object.keys(Modal.Data).map((idModal) => {
128
+ if (s(`.btn-minimize-${idModal}`)) htmls(`.btn-minimize-${idModal}`, barConfigInstance.buttons.minimize.label);
129
+ if (s(`.btn-restore-${idModal}`)) htmls(`.btn-restore-${idModal}`, barConfigInstance.buttons.restore.label);
130
+ if (s(`.btn-maximize-${idModal}`)) htmls(`.btn-maximize-${idModal}`, barConfigInstance.buttons.maximize.label);
131
+ if (s(`.btn-close-${idModal}`)) htmls(`.btn-close-${idModal}`, barConfigInstance.buttons.close.label);
132
+ if (s(`.btn-menu-${idModal}`)) htmls(`.btn-menu-${idModal}`, barConfigInstance.buttons.menu.label);
133
+ });
134
+ return { barConfig: barConfigInstance };
135
+ };
136
+
137
+ let darkTheme = true;
138
+ const ThemeEvents = {};
139
+ const TriggerThemeEvents = () => {
140
+ localStorage.setItem('_theme', Css.currentTheme);
141
+ Object.keys(ThemeEvents).map((keyEvent) => ThemeEvents[keyEvent]());
142
+ };
143
+
144
+ const Themes = {};
145
+
146
+ const addTheme = (options) => {
147
+ ThemesScope.push(options);
148
+ Themes[options.theme] = async (barOptions) => {
149
+ if (!options.dark) options.dark = false;
150
+ if (!options.barButtonsIconTheme) options.barButtonsIconTheme = 'fontawesome';
151
+ const htmlRender = Css.currentTheme !== options.theme;
152
+ if (htmlRender) {
153
+ Css.currentTheme = options.theme;
154
+ darkTheme = options.dark;
155
+ let render = '';
156
+ if (!['core', 'css-core'].includes(options.theme))
157
+ render += darkTheme ? await CssCoreDark.render() : await CssCoreLight.render();
158
+ render += await options.render();
159
+ htmls('.theme', render);
160
+ TriggerThemeEvents();
161
+ }
162
+ return {
163
+ ...renderDefaultWindowsModalButtonContent({
164
+ barButtonsIconTheme: options.barButtonsIconTheme,
165
+ htmlRender,
166
+ ...barOptions,
167
+ }),
168
+ };
169
+ };
170
+ };
171
+
172
+ const borderChar = (px, color, selectors) => {
173
+ if (selectors) {
174
+ return selectors
175
+ .map(
176
+ (selector) => html`
177
+ <style>
178
+ ${selector} {
179
+ text-shadow: ${px}px -${px}px ${px}px ${color}, -${px}px ${px}px ${px}px ${color},
180
+ -${px}px -${px}px ${px}px ${color}, ${px}px ${px}px ${px}px ${color};
181
+ }
182
+ </style>
183
+ `,
184
+ )
185
+ .join('');
186
+ }
187
+ return html`
188
+ text-shadow: ${px}px -${px}px ${px}px ${color}, -${px}px ${px}px ${px}px ${color}, -${px}px -${px}px ${px}px
189
+ ${color}, ${px}px ${px}px ${px}px ${color};
190
+ `;
191
+ };
192
+
193
+ const boxShadow = ({ selector }) => html`
194
+ <style>
195
+ ${selector} {
196
+ box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
197
+ }
198
+ ${selector}:hover {
199
+ box-shadow: 0 8px 16px 0 rgba(0, 0, 0, 0.2), 0 10px 30px 0 rgba(0, 0, 0, 0.3);
200
+ }
201
+ </style>
202
+ `;
203
+
204
+ const renderMediaQuery = (mediaData) => {
205
+ // first limit should be '0'
206
+ return html`
207
+ ${mediaData
208
+ .map(
209
+ (mediaState) => html`
210
+ <style>
211
+ @media only screen and (min-width: ${mediaState.limit}px) {
212
+ ${mediaState.css}
213
+ }
214
+ </style>
215
+ `,
216
+ )
217
+ .join('')}
218
+ `;
219
+ };
220
+
221
+ const renderStatus = (status, options) => {
222
+ switch (status) {
223
+ case 'success':
224
+ return html`<div class="${options?.class ? options.class : 'abs center'}">
225
+ <i style="color: green" class="fa-solid fa-check"></i>
226
+ </div>`;
227
+ case 'error':
228
+ return html`<div class="${options?.class ? options.class : 'abs center'}">
229
+ <i style="color: red" class="fa-solid fa-xmark"></i>
230
+ </div>`;
231
+ case 'warning':
232
+ return html`<div class="${options?.class ? options.class : 'abs center'}">
233
+ <i style="color: yellow" class="fa-solid fa-triangle-exclamation"></i>
234
+ </div>`;
235
+ default:
236
+ return html``;
237
+ }
238
+ };
239
+
240
+ const dynamicColTokens = {};
241
+
242
+ const dynamicCol = (options = { containerSelector: '', id: '', type: '', limit: 900 }) => {
243
+ const { containerSelector, id } = options;
244
+ const limitCol = options?.limit ? options.limit : 900;
245
+ if (!(id in dynamicColTokens)) dynamicColTokens[id] = {};
246
+ dynamicColTokens[id].options = options;
247
+ if (dynamicColTokens[id].observer) dynamicColTokens[id].observer.disconnect();
248
+ setTimeout(() => {
249
+ dynamicColTokens[id].observer = new ResizeObserver(() => {
250
+ if (s(`.${containerSelector}`)) {
251
+ switch (options.type) {
252
+ case 'a-50-b-50':
253
+ if (s(`.${containerSelector}`).offsetWidth < limitCol)
254
+ htmls(
255
+ `.style-${id}-col`,
256
+ css`
257
+ .${id}-col-a, .${id}-col-b {
258
+ width: 100%;
259
+ }
260
+ `,
261
+ );
262
+ else
263
+ htmls(
264
+ `.style-${id}-col`,
265
+ css`
266
+ .${id}-col-a {
267
+ width: 50%;
268
+ }
269
+ .${id}-col-b {
270
+ width: 50%;
271
+ }
272
+ `,
273
+ );
274
+ break;
275
+
276
+ default:
277
+ if (s(`.${containerSelector}`).offsetWidth < 900)
278
+ htmls(
279
+ `.style-${id}-col`,
280
+ css`
281
+ .${id}-col-a, .${id}-col-b {
282
+ width: 100%;
283
+ }
284
+ `,
285
+ );
286
+ else
287
+ htmls(
288
+ `.style-${id}-col`,
289
+ css`
290
+ .${id}-col-a {
291
+ width: 30%;
292
+ }
293
+ .${id}-col-b {
294
+ width: 70%;
295
+ }
296
+ `,
297
+ );
298
+ break;
299
+ }
300
+ } else {
301
+ dynamicColTokens[id].observer.disconnect();
302
+ delete dynamicColTokens[id];
303
+ if (s(`.style-${id}-col`)) s(`.style-${id}-col`).remove();
304
+ }
305
+ });
306
+ dynamicColTokens[id].observer.observe(s(`.${containerSelector}`));
307
+ });
308
+ return html` <style class="style-${id}-col"></style>`;
309
+ };
310
+
311
+ const renderBubbleDialog = async function (
312
+ options = {
313
+ id: '',
314
+ html: async () => '',
315
+ classSelectors,
316
+ triangleType: 'down',
317
+ trianglePositionCss: '',
318
+ triangleCss: '',
319
+ triangleDim: 0,
320
+ bubbleCss: '',
321
+ },
322
+ ) {
323
+ const { id, html } = options;
324
+ let cssTrianglePosition = `
325
+ bottom: -45px;
326
+ left: 5px;
327
+ `;
328
+ let whiteTriangleStyle = `top: 43%`;
329
+ let blackTriangleStyle = ``;
330
+ switch (options.triangleType) {
331
+ case 'right':
332
+ cssTrianglePosition = `
333
+ right: -40px;
334
+ top: 5px;
335
+ `;
336
+ blackTriangleStyle = `
337
+ top: 43%;
338
+ left: 57%;
339
+ `;
340
+ break;
341
+
342
+ default:
343
+ break;
344
+ }
345
+ if (options.trianglePositionCss) cssTrianglePosition = options.trianglePositionCss;
346
+ return html` <div
347
+ class="${options?.classSelectors ? options.classSelectors : 'inl'} bubble-dialog bubble-dialog-${id}"
348
+ ${options.bubbleCss ? `style='${options.bubbleCss}'` : ''}
349
+ >
350
+ <style class="style-bubble-dialog-triangle-${id}">
351
+ .bubble-dialog-triangle-${id} {
352
+ width: ${options.triangleDim ? options.triangleDim : 60}px;
353
+ height: ${options.triangleDim ? options.triangleDim : 60}px;
354
+ /* border: 2px solid red; */
355
+ box-sizing: border-box;
356
+ ${cssTrianglePosition}
357
+ }
358
+ </style>
359
+ <div class="abs bubble-dialog-triangle bubble-dialog-triangle-${id}">
360
+ <div class="abs center" style="${blackTriangleStyle}">
361
+ ${triangle[options?.triangleType ? options.triangleType : 'down']({
362
+ dim: 25,
363
+ id: id + '-triangle-black',
364
+ color: 'black',
365
+ classList: 'inl',
366
+ customStyle: options.triangleCss,
367
+ })}
368
+ </div>
369
+ <div class="abs center" style="${whiteTriangleStyle}">
370
+ ${triangle[options?.triangleType ? options.triangleType : 'down']({
371
+ dim: 24,
372
+ id: id + '-triangle-white',
373
+ color: 'white',
374
+ classList: 'inl',
375
+ customStyle: options.triangleCss,
376
+ })}
377
+ </div>
378
+ </div>
379
+ ${await html()}
380
+ </div>`;
381
+ };
382
+
383
+ const typeWriter = async function ({ id, html, seconds, endHideBlink, container }) {
384
+ if (!seconds) seconds = 2;
385
+ return new Promise((resolve) => {
386
+ // https://developer.mozilla.org/en-US/docs/Web/CSS/animation-timing-function
387
+ // https://www.w3schools.com/cssref/css3_pr_animation-fill-mode.php
388
+ const typingAnimationTransitionStyle = [
389
+ `1s linear`,
390
+ `${seconds}s steps(${html.split(' ').length * 6}, end)`,
391
+ `1s forwards`,
392
+ ];
393
+ const render = html`
394
+ <style class="style-${id}">
395
+ .tw-${id}-typed-out {
396
+ overflow: hidden;
397
+ border-right: 0.15em solid orange;
398
+ white-space: nowrap;
399
+ animation: typing-${id} ${typingAnimationTransitionStyle[1]}, blink-caret-${id} 0.5s step-end infinite;
400
+ animation-fill-mode: forwards;
401
+ width: 0;
402
+ }
403
+ </style>
404
+ <style>
405
+ .tw-${id}-container {
406
+ }
407
+ @keyframes typing-${id} {
408
+ from {
409
+ width: 0;
410
+ }
411
+ to {
412
+ width: 100%;
413
+ }
414
+ }
415
+
416
+ @keyframes blink-caret-${id} {
417
+ from,
418
+ to {
419
+ border-color: transparent;
420
+ }
421
+ 50% {
422
+ border-color: orange;
423
+ }
424
+ }
425
+ </style>
426
+ <div class="inl tw-${id}-container">
427
+ <div class="tw-${id}-typed-out">${html}</div>
428
+ </div>
429
+ `;
430
+ htmls(`.${container}`, render);
431
+ setTimeout(() => {
432
+ if (endHideBlink && s(`.style-${id}`)) s(`.style-${id}`).remove();
433
+ resolve(render);
434
+ }, seconds * 1000);
435
+ });
436
+ };
437
+
438
+ const renderCssAttr = (options) =>
439
+ `${
440
+ options && options.style
441
+ ? Object.keys(options.style)
442
+ .map((keyStyle) => `${keyStyle}: ${options.style[keyStyle]};`)
443
+ .join(`\n`)
444
+ : ''
445
+ }`;
446
+
447
+ const renderStyleTag = (styleSelector = 'style-abc', selector, options) =>
448
+ html`<style class="${styleSelector}">
449
+ ${selector} { ${renderCssAttr(options)} }
450
+ </style>`;
451
+
452
+ function getTranslate3d(el) {
453
+ const values = el.style.transform.split(/\w+\(|\);?/);
454
+ if (!values[1] || !values[1].length) {
455
+ return [];
456
+ }
457
+ return values[1].split(/,\s?/g);
458
+ }
459
+
460
+ const dashRange = ({ selector, color }) => {
461
+ return html`
462
+ <style>
463
+ .${selector} {
464
+ background: linear-gradient(90deg, ${color} 50%, transparent 50%),
465
+ linear-gradient(90deg, ${color} 50%, transparent 50%), linear-gradient(0deg, ${color} 50%, transparent 50%),
466
+ linear-gradient(0deg, ${color} 50%, transparent 50%);
467
+ background-repeat: repeat-x, repeat-x, repeat-y, repeat-y;
468
+ background-size: 16px 4px, 16px 4px, 4px 16px, 4px 16px;
469
+ background-position: 0% 0%, 100% 100%, 0% 100%, 100% 0px;
470
+ border-radius: 5px;
471
+ padding: 10px;
472
+ animation: ${selector}_dash_range 5s linear infinite;
473
+ }
474
+
475
+ @keyframes ${selector}_dash_range {
476
+ to {
477
+ background-position: 100% 0%, 0% 100%, 0% 0%, 100% 100%;
478
+ }
479
+ }
480
+ </style>
481
+ `;
482
+ };
483
+ const triangle = {
484
+ up: ({ id, dim, color, classList, customStyle }) => {
485
+ return html`<style class="style-${id}">
486
+ .arrow-up-${id} {
487
+ width: 0;
488
+ height: 0;
489
+ border-left: ${dim}px solid transparent;
490
+ border-right: ${dim}px solid transparent;
491
+ border-bottom: ${dim}px solid ${color};
492
+ }
493
+ </style>
494
+ <div
495
+ class="arrow-up-${id} ${classList}"
496
+ ${customStyle ? `style="${customStyle ? customStyle : ''}"` : ''}
497
+ ></div>`;
498
+ },
499
+ down: ({ id, dim, color, classList, customStyle }) => {
500
+ return html`<style class="style-${id}">
501
+ .arrow-down-${id} {
502
+ width: 0;
503
+ height: 0;
504
+ border-left: ${dim}px solid transparent;
505
+ border-right: ${dim}px solid transparent;
506
+ border-top: ${dim}px solid ${color};
507
+ }
508
+ </style>
509
+ <div
510
+ class="arrow-down-${id} ${classList}"
511
+ ${customStyle ? `style="${customStyle ? customStyle : ''}"` : ''}
512
+ ></div>`;
513
+ },
514
+ right: ({ id, dim, color, classList, customStyle }) => {
515
+ return html` <style class="style-${id}">
516
+ .arrow-right-${id} {
517
+ width: 0;
518
+ height: 0;
519
+ border-top: ${dim}px solid transparent;
520
+ border-bottom: ${dim}px solid transparent;
521
+ border-left: ${dim}px solid ${color};
522
+ }
523
+ </style>
524
+ <div
525
+ class="arrow-right-${id} ${classList}"
526
+ ${customStyle ? `style="${customStyle ? customStyle : ''}"` : ''}
527
+ ></div>`;
528
+ },
529
+ left: ({ id, dim, color, classList, customStyle }) => {
530
+ return html`<style class="style-${id}">
531
+ .arrow-left-${id} {
532
+ width: 0;
533
+ height: 0;
534
+ border-top: ${dim}px solid transparent;
535
+ border-bottom: ${dim}px solid transparent;
536
+ border-right: ${dim}px solid ${color};
537
+ }
538
+ </style>
539
+ <div
540
+ class="arrow-left-${id} ${classList}"
541
+ ${customStyle ? `style="${customStyle ? customStyle : ''}"` : ''}
542
+ ></div>`;
543
+ },
544
+ };
545
+
546
+ const getSectionsStringData = (offsetWidth, text) => {
547
+ const sectionsIndex = [];
548
+ const everyXChar = parseInt(offsetWidth / 4);
549
+ const phraseArray = text
550
+ .split('.')
551
+ .map((t) => splitEveryXChar(t + '.', everyXChar, ['.', ' ']))
552
+ .flat()
553
+ .filter((p) => p !== '.' && p.trim());
554
+
555
+ let currentIndex = [0];
556
+ let pi = -1;
557
+ for (const p of phraseArray) {
558
+ pi++;
559
+ if (p.indexOf('.') !== -1) {
560
+ currentIndex.push(newInstance(pi));
561
+ sectionsIndex.push(newInstance(currentIndex));
562
+ if (phraseArray[pi + 1]) currentIndex = [newInstance(pi + 1)];
563
+ else currentIndex = [];
564
+ }
565
+ }
566
+ if (currentIndex[0] && !currentIndex[1]) {
567
+ currentIndex[1] = phraseArray.length - 1;
568
+ sectionsIndex.push(newInstance(currentIndex));
569
+ }
570
+ return { phraseArray, sectionsIndex };
571
+ };
572
+
573
+ const typeWriteSectionsString = ({ container, phraseArray, rangeArraySectionIndex }) =>
574
+ new Promise((resolve) => {
575
+ let cumulativeSeconds = 0;
576
+ for (const index of range(...rangeArraySectionIndex)) {
577
+ const subIdSalt = s4() + s4() + s4();
578
+ const seconds = phraseArray[index].trim().length * 0.05;
579
+ append(`.${container}`, html` <div class="${container}-${subIdSalt}"></div> `);
580
+ setTimeout(async () => {
581
+ if (s(`.${container}-${subIdSalt}`)) {
582
+ append(`.${container}-${subIdSalt}`, html` <div class="render-typeWriter-${container}-${subIdSalt}"></div> `);
583
+ await typeWriter({
584
+ id: `typeWriter-${index}-${container}`,
585
+ html: phraseArray[index].trim(),
586
+ endHideBlink: index < rangeArraySectionIndex[1],
587
+ seconds,
588
+ container: `render-typeWriter-${container}-${subIdSalt}`,
589
+ });
590
+ }
591
+ if (index === rangeArraySectionIndex[1]) resolve();
592
+ }, cumulativeSeconds * 1000);
593
+ cumulativeSeconds += seconds;
594
+ }
595
+ });
596
+
597
+ const cssBrowserCodes = ['webkit', 'moz', 'ms', 'o'];
598
+
599
+ const scrollBarLightRender = () => {
600
+ return cssBrowserCodes
601
+ .map(
602
+ (b) =>
603
+ html`<style>
604
+ ::-` +
605
+ b +
606
+ `-scrollbar {
607
+ width: 5px;
608
+ height: 5px;
609
+ }
610
+
611
+ /* Track */
612
+ ::-` +
613
+ b +
614
+ `-scrollbar-track {
615
+ background: none !important;
616
+ }
617
+
618
+ /* Handle */
619
+ ::-` +
620
+ b +
621
+ `-scrollbar-thumb {
622
+ background: #15151557;
623
+ border-radius: 3px;
624
+ }
625
+
626
+ /* Handle on hover */
627
+ ::-` +
628
+ b +
629
+ `-scrollbar-thumb:hover {
630
+ background: #4d4d4dbb;
631
+ }
632
+ </style>`,
633
+ )
634
+ .join('');
635
+ };
636
+
637
+ const scrollBarDarkRender = () => {
638
+ return cssBrowserCodes
639
+ .map(
640
+ (b) =>
641
+ html`<style>
642
+ ::-` +
643
+ b +
644
+ `-scrollbar {
645
+ width: 5px;
646
+ height: 5px;
647
+ /* line-height: 1em; */
648
+ }
649
+
650
+ /* Track */
651
+ ::-` +
652
+ b +
653
+ `-scrollbar-track {
654
+ background: none !important;
655
+ }
656
+
657
+ /* Handle */
658
+ ::-` +
659
+ b +
660
+ `-scrollbar-thumb {
661
+ background: #74747457;
662
+ border-radius: 3px;
663
+ }
664
+
665
+ /* Handle on hover */
666
+ ::-` +
667
+ b +
668
+ `-scrollbar-thumb:hover {
669
+ background: #98989857;
670
+ }
671
+ </style>`,
672
+ )
673
+ .join('');
674
+ };
675
+
676
+ const renderWave = ({ id }) => {
677
+ return html`
678
+ <style>
679
+ .wave-animation-container-${id} {
680
+ height: 200px;
681
+ }
682
+ .wave-animation-container-${id} {
683
+ background: linear-gradient(
684
+ 315deg,
685
+ rgba(101, 0, 94, 1) 3%,
686
+ rgba(60, 132, 206, 1) 38%,
687
+ rgba(48, 238, 226, 1) 68%,
688
+ rgba(255, 25, 25, 1) 98%
689
+ );
690
+ animation: gradient-${id} 15s ease infinite;
691
+ background-size: 400% 400%;
692
+ overflow: hidden;
693
+ }
694
+
695
+ @keyframes gradient-${id} {
696
+ 0% {
697
+ background-position: 0% 0%;
698
+ }
699
+ 50% {
700
+ background-position: 100% 100%;
701
+ }
702
+ 100% {
703
+ background-position: 0% 0%;
704
+ }
705
+ }
706
+
707
+ .wave-${id} {
708
+ background: rgb(255 255 255 / 25%);
709
+ border-radius: 1000% 1000% 0 0;
710
+ width: 200%;
711
+ height: 12em;
712
+ animation: wave-${id} 10s -3s linear infinite;
713
+ opacity: 0.8;
714
+ bottom: 0;
715
+ left: 0;
716
+ top: 30%;
717
+ }
718
+
719
+ .wave-${id}:nth-of-type(2) {
720
+ animation: wave-${id} 18s linear reverse infinite;
721
+ opacity: 0.8;
722
+ top: 50%;
723
+ }
724
+
725
+ .wave-${id}:nth-of-type(3) {
726
+ animation: wave-${id} 20s -1s reverse infinite;
727
+ opacity: 0.9;
728
+ top: 70%;
729
+ }
730
+
731
+ @keyframes wave-${id} {
732
+ 2% {
733
+ transform: translateX(1);
734
+ }
735
+
736
+ 25% {
737
+ transform: translateX(-25%);
738
+ }
739
+
740
+ 50% {
741
+ transform: translateX(-50%);
742
+ }
743
+
744
+ 75% {
745
+ transform: translateX(-25%);
746
+ }
747
+
748
+ 100% {
749
+ transform: translateX(1);
750
+ }
751
+ }
752
+ </style>
753
+ <div class="in wave-animation-container-${id} ${id}">
754
+ <div class="in wave-${id}"></div>
755
+ <div class="abs wave-${id}"></div>
756
+ <div class="abs wave-${id}"></div>
757
+ </div>
758
+ `;
759
+ };
760
+
761
+ const cssTokensEffect = {};
762
+ const cssTokensContainer = {};
763
+ const cssEffect = async (containerSelector, event) => {
764
+ // Array.from(event.target.classList)
765
+ let offsetX, offsetY;
766
+ if (Array.from(event.srcElement.classList).includes('ripple') && cssTokensContainer[containerSelector]) {
767
+ offsetX = cssTokensContainer[containerSelector].lastOffsetX;
768
+ offsetY = cssTokensContainer[containerSelector].lastOffsetY;
769
+ } else {
770
+ cssTokensContainer[containerSelector] = { lastOffsetX: event.offsetX, lastOffsetY: event.offsetY };
771
+ offsetX = event.offsetX;
772
+ offsetY = event.offsetY;
773
+ }
774
+ const element = s(containerSelector);
775
+ // element.style.overflow = 'hidden';
776
+ const id = getId(cssTokensEffect, 'btn-effect-');
777
+ cssTokensEffect[id] = { containerSelector, event };
778
+ append(containerSelector, html`<span class="abs ${id} ripple" style="display: none"></span>`);
779
+ const circle = s(`.${id}`);
780
+ circle.style.width = circle.style.height = `40px`;
781
+ circle.style.left = `${offsetX}px`;
782
+ circle.style.top = `${offsetY}px`;
783
+ circle.style.display = null;
784
+ setTimeout(() => {
785
+ circle.remove();
786
+ delete cssTokensEffect[id];
787
+ }, 600);
788
+ };
789
+
790
+ const imageShimmer = () => html`<div
791
+ class="abs center ssr-shimmer-search-box"
792
+ style="${renderCssAttr({
793
+ style: {
794
+ width: '95%',
795
+ height: '95%',
796
+ 'border-radius': '10px',
797
+ overflow: 'hidden',
798
+ },
799
+ })}"
800
+ >
801
+ <div
802
+ class="abs center"
803
+ style="${renderCssAttr({
804
+ style: {
805
+ 'font-size': '70px',
806
+ color: `#bababa`,
807
+ },
808
+ })}"
809
+ >
810
+ <i class="fa-solid fa-photo-film"></i>
811
+ </div>
812
+ </div>`;
813
+
814
+ export {
815
+ Css,
816
+ Themes,
817
+ barLabels,
818
+ barConfig,
819
+ borderChar,
820
+ renderMediaQuery,
821
+ renderDefaultWindowsModalButtonContent,
822
+ renderStatus,
823
+ dynamicCol,
824
+ dynamicColTokens,
825
+ boxShadow,
826
+ addTheme,
827
+ darkTheme,
828
+ ThemeEvents,
829
+ TriggerThemeEvents,
830
+ ThemesScope,
831
+ renderBubbleDialog,
832
+ typeWriter,
833
+ renderStyleTag,
834
+ renderCssAttr,
835
+ getTranslate3d,
836
+ dashRange,
837
+ triangle,
838
+ getSectionsStringData,
839
+ typeWriteSectionsString,
840
+ cssBrowserCodes,
841
+ scrollBarDarkRender,
842
+ scrollBarLightRender,
843
+ renderWave,
844
+ cssEffect,
845
+ imageShimmer,
846
+ };