underpost 3.2.5 → 3.2.8

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 (138) hide show
  1. package/.github/workflows/release.cd.yml +1 -2
  2. package/CHANGELOG.md +251 -1
  3. package/CLI-HELP.md +26 -13
  4. package/Dockerfile +0 -4
  5. package/README.md +3 -3
  6. package/bin/build.js +13 -3
  7. package/bin/deploy.js +570 -1
  8. package/bin/file.js +5 -0
  9. package/conf.js +11 -2
  10. package/jsconfig.json +1 -1
  11. package/manifests/cronjobs/dd-cron/dd-cron-backup.yaml +1 -1
  12. package/manifests/cronjobs/dd-cron/dd-cron-dns.yaml +1 -1
  13. package/manifests/deployment/dd-default-development/deployment.yaml +2 -6
  14. package/manifests/deployment/dd-test-development/deployment.yaml +136 -66
  15. package/manifests/deployment/dd-test-development/proxy.yaml +41 -5
  16. package/package.json +20 -11
  17. package/src/api/core/core.controller.js +10 -10
  18. package/src/api/core/core.service.js +10 -10
  19. package/src/api/default/default.controller.js +10 -10
  20. package/src/api/default/default.service.js +10 -10
  21. package/src/api/document/document.controller.js +12 -12
  22. package/src/api/document/document.model.js +10 -16
  23. package/src/api/file/file.controller.js +8 -8
  24. package/src/api/file/file.model.js +10 -10
  25. package/src/api/file/file.service.js +36 -36
  26. package/src/api/test/test.controller.js +8 -8
  27. package/src/api/test/test.service.js +8 -8
  28. package/src/api/user/guest.service.js +99 -0
  29. package/src/api/user/user.controller.js +6 -6
  30. package/src/api/user/user.model.js +8 -13
  31. package/src/api/user/user.service.js +3 -20
  32. package/src/cli/deploy.js +33 -30
  33. package/src/cli/fs.js +62 -5
  34. package/src/cli/image.js +43 -1
  35. package/src/cli/index.js +5 -1
  36. package/src/cli/release.js +57 -1
  37. package/src/cli/repository.js +35 -3
  38. package/src/cli/run.js +300 -35
  39. package/src/cli/ssh.js +1 -1
  40. package/src/cli/static.js +43 -115
  41. package/src/client/Default.index.js +21 -33
  42. package/src/client/components/core/404.js +4 -4
  43. package/src/client/components/core/500.js +4 -4
  44. package/src/client/components/core/Account.js +73 -60
  45. package/src/client/components/core/AgGrid.js +23 -33
  46. package/src/client/components/core/Alert.js +12 -13
  47. package/src/client/components/core/AppStore.js +1 -1
  48. package/src/client/components/core/Auth.js +20 -32
  49. package/src/client/components/core/Badge.js +7 -13
  50. package/src/client/components/core/BtnIcon.js +15 -17
  51. package/src/client/components/core/CalendarCore.js +42 -63
  52. package/src/client/components/core/Chat.js +13 -15
  53. package/src/client/components/core/ClientEvents.js +87 -0
  54. package/src/client/components/core/ColorPaletteElement.js +309 -0
  55. package/src/client/components/core/Content.js +17 -14
  56. package/src/client/components/core/Css.js +15 -71
  57. package/src/client/components/core/CssCore.js +12 -16
  58. package/src/client/components/core/D3Chart.js +4 -4
  59. package/src/client/components/core/Docs.js +60 -59
  60. package/src/client/components/core/DropDown.js +69 -91
  61. package/src/client/components/core/EventBus.js +92 -0
  62. package/src/client/components/core/EventsUI.js +14 -17
  63. package/src/client/components/core/FileExplorer.js +102 -234
  64. package/src/client/components/core/FullScreen.js +47 -75
  65. package/src/client/components/core/Input.js +24 -69
  66. package/src/client/components/core/Keyboard.js +25 -18
  67. package/src/client/components/core/KeyboardAvoidance.js +145 -0
  68. package/src/client/components/core/LoadingAnimation.js +25 -31
  69. package/src/client/components/core/LogIn.js +41 -41
  70. package/src/client/components/core/LogOut.js +23 -14
  71. package/src/client/components/core/Modal.js +397 -176
  72. package/src/client/components/core/NotificationManager.js +14 -18
  73. package/src/client/components/core/Panel.js +54 -50
  74. package/src/client/components/core/PanelForm.js +25 -125
  75. package/src/client/components/core/Polyhedron.js +110 -214
  76. package/src/client/components/core/PublicProfile.js +39 -32
  77. package/src/client/components/core/Recover.js +52 -48
  78. package/src/client/components/core/Responsive.js +88 -32
  79. package/src/client/components/core/RichText.js +9 -18
  80. package/src/client/components/core/Router.js +24 -3
  81. package/src/client/components/core/SearchBox.js +37 -37
  82. package/src/client/components/core/SignUp.js +39 -30
  83. package/src/client/components/core/SocketIo.js +31 -2
  84. package/src/client/components/core/SocketIoHandler.js +6 -6
  85. package/src/client/components/core/ToggleSwitch.js +8 -20
  86. package/src/client/components/core/ToolTip.js +5 -17
  87. package/src/client/components/core/Translate.js +56 -59
  88. package/src/client/components/core/Validator.js +26 -16
  89. package/src/client/components/core/Wallet.js +15 -26
  90. package/src/client/components/core/Worker.js +140 -25
  91. package/src/client/components/core/windowGetDimensions.js +7 -7
  92. package/src/client/components/default/{MenuDefault.js → AppShellDefault.js} +87 -87
  93. package/src/client/components/default/CssDefault.js +12 -12
  94. package/src/client/components/default/LogInDefault.js +6 -4
  95. package/src/client/components/default/LogOutDefault.js +6 -4
  96. package/src/client/components/default/RouterDefault.js +47 -0
  97. package/src/client/components/default/SettingsDefault.js +4 -4
  98. package/src/client/components/default/SignUpDefault.js +6 -4
  99. package/src/client/components/default/TranslateDefault.js +3 -3
  100. package/src/client/services/core/core.service.js +17 -49
  101. package/src/client/services/default/default.management.js +139 -242
  102. package/src/client/services/default/default.service.js +10 -16
  103. package/src/client/services/document/document.service.js +14 -19
  104. package/src/client/services/file/file.service.js +8 -13
  105. package/src/client/services/test/test.service.js +8 -13
  106. package/src/client/services/user/guest.service.js +79 -0
  107. package/src/client/services/user/user.management.js +5 -5
  108. package/src/client/services/user/user.service.js +14 -20
  109. package/src/client/ssr/body/404.js +3 -3
  110. package/src/client/ssr/body/500.js +3 -3
  111. package/src/client/ssr/body/CacheControl.js +5 -2
  112. package/src/client/ssr/body/DefaultSplashScreen.js +19 -12
  113. package/src/client/ssr/mailer/DefaultRecoverEmail.js +19 -20
  114. package/src/client/ssr/mailer/DefaultVerifyEmail.js +15 -16
  115. package/src/client/ssr/offline/Maintenance.js +12 -11
  116. package/src/client/ssr/offline/NoNetworkConnection.js +3 -3
  117. package/src/client/ssr/pages/Test.js +2 -2
  118. package/src/client/sw/core.sw.js +212 -0
  119. package/src/index.js +1 -1
  120. package/src/runtime/express/Dockerfile +4 -4
  121. package/src/runtime/lampp/Dockerfile +8 -7
  122. package/src/runtime/wp/Dockerfile +11 -17
  123. package/src/server/client-build-docs.js +45 -46
  124. package/src/server/client-build.js +334 -60
  125. package/src/server/client-formatted.js +47 -16
  126. package/src/server/conf.js +5 -4
  127. package/src/server/ipfs-client.js +232 -91
  128. package/src/server/process.js +13 -27
  129. package/src/server/start.js +6 -3
  130. package/src/server/valkey.js +134 -235
  131. package/tsconfig.docs.json +15 -0
  132. package/typedoc.json +20 -0
  133. package/jsdoc.json +0 -52
  134. package/src/client/components/core/ColorPalette.js +0 -5267
  135. package/src/client/components/core/JoyStick.js +0 -80
  136. package/src/client/components/default/RoutesDefault.js +0 -49
  137. package/src/client/sw/default.sw.js +0 -127
  138. package/src/client/sw/template.sw.js +0 -84
@@ -12,7 +12,7 @@ import { htmls, s } from '../core/VanillaJs.js';
12
12
  import { extractUsernameFromPath, getProxyPath, getQueryParams } from '../core/Router.js';
13
13
  import { AppStoreDefault } from './AppStoreDefault.js';
14
14
  import Sortable from 'sortablejs';
15
- import { RouterDefault, BannerAppTemplate } from './RoutesDefault.js';
15
+ import { RouterDefault, BannerAppTemplate } from './RouterDefault.js';
16
16
  import { SettingsDefault } from './SettingsDefault.js';
17
17
  import { Badge } from '../core/Badge.js';
18
18
  import { Recover } from '../core/Recover.js';
@@ -23,178 +23,178 @@ import { PanelForm } from '../core/PanelForm.js';
23
23
  import { Chat } from '../core/Chat.js';
24
24
  import { PublicProfile } from '../core/PublicProfile.js';
25
25
 
26
- const MenuDefault = {
27
- Data: {},
28
- Render: async function (options = { htmlMainBody: () => html`` }) {
29
- const id = getId(this.Data, 'menu-');
30
- this.Data[id] = {};
31
- const RouterInstance = RouterDefault();
26
+ class AppShellDefault {
27
+ static Data = {};
28
+ static async instance(options = { htmlMainBody: () => html`` }) {
29
+ const id = getId(AppShellDefault.Data, 'menu-');
30
+ AppShellDefault.Data[id] = {};
31
+ const RouterInstance = RouterDefault.instance();
32
32
 
33
33
  const { barConfig } = await Themes[Css.currentTheme]();
34
34
 
35
35
  const badgeNotificationMenuStyle = { top: '-33px', left: '24px' };
36
36
  const barMode = undefined; // 'top-bottom-bar';
37
- await Modal.Render({
37
+ await Modal.instance({
38
38
  id: 'modal-menu',
39
39
  html: html`
40
40
  <div class="style-lading-render"></div>
41
41
  <div class="fl menu-btn-container">
42
- ${await BtnIcon.Render({
42
+ ${await BtnIcon.instance({
43
43
  class: 'in wfa main-btn-menu main-btn-home main-btn-menu-active',
44
44
  useMenuBtn: true,
45
45
  label: renderMenuLabel({
46
46
  icon: html`<i class="fas fa-home"></i>`,
47
- text: html`<span class="menu-label-text">${Translate.Render('home')}</span>`,
47
+ text: html`<span class="menu-label-text">${Translate.instance('home')}</span>`,
48
48
  }),
49
49
  // style: 'display: none',
50
50
  attrs: `data-id="home"`,
51
51
  tabHref: `${getProxyPath()}`,
52
52
  handleContainerClass: 'handle-btn-container',
53
- tooltipHtml: await Badge.Render(buildBadgeToolTipMenuOption('home')),
53
+ tooltipHtml: await Badge.instance(buildBadgeToolTipMenuOption('home')),
54
54
  })}
55
- ${await BtnIcon.Render({
55
+ ${await BtnIcon.instance({
56
56
  class: 'in wfa main-btn-menu main-btn-log-in',
57
57
  useMenuBtn: true,
58
58
  label: renderMenuLabel({
59
59
  icon: html`<i class="fas fa-sign-in-alt"></i>`,
60
- text: html`<span class="menu-label-text">${Translate.Render('log-in')}</span>`,
60
+ text: html`<span class="menu-label-text">${Translate.instance('log-in')}</span>`,
61
61
  }),
62
62
  attrs: `data-id="log-in"`,
63
63
  tabHref: `${getProxyPath()}log-in`,
64
64
  handleContainerClass: 'handle-btn-container',
65
- tooltipHtml: await Badge.Render(buildBadgeToolTipMenuOption('log-in')),
65
+ tooltipHtml: await Badge.instance(buildBadgeToolTipMenuOption('log-in')),
66
66
  })}
67
- ${await BtnIcon.Render({
67
+ ${await BtnIcon.instance({
68
68
  class: 'in wfa main-btn-menu main-btn-sign-up',
69
69
  useMenuBtn: true,
70
70
  label: renderMenuLabel({
71
71
  icon: html`<i class="fas fa-user-plus"></i>`,
72
- text: html`<span class="menu-label-text">${Translate.Render('sign-up')}</span>`,
72
+ text: html`<span class="menu-label-text">${Translate.instance('sign-up')}</span>`,
73
73
  }),
74
74
  attrs: `data-id="sign-up"`,
75
75
  tabHref: `${getProxyPath()}sign-up`,
76
76
  handleContainerClass: 'handle-btn-container',
77
- tooltipHtml: await Badge.Render(buildBadgeToolTipMenuOption('sign-up')),
77
+ tooltipHtml: await Badge.instance(buildBadgeToolTipMenuOption('sign-up')),
78
78
  })}
79
- ${await BtnIcon.Render({
79
+ ${await BtnIcon.instance({
80
80
  class: 'in wfa main-btn-menu main-btn-log-out',
81
81
  useMenuBtn: true,
82
82
  label: renderMenuLabel({
83
83
  icon: html`<i class="fas fa-sign-out-alt"></i>`,
84
- text: html`<span class="menu-label-text">${Translate.Render('log-out')}</span>`,
84
+ text: html`<span class="menu-label-text">${Translate.instance('log-out')}</span>`,
85
85
  }),
86
86
  attrs: `data-id="log-out"`,
87
87
  style: 'display: none',
88
88
  tabHref: `${getProxyPath()}log-out`,
89
89
  handleContainerClass: 'handle-btn-container',
90
- tooltipHtml: await Badge.Render(buildBadgeToolTipMenuOption('log-out')),
90
+ tooltipHtml: await Badge.instance(buildBadgeToolTipMenuOption('log-out')),
91
91
  })}
92
- ${await BtnIcon.Render({
92
+ ${await BtnIcon.instance({
93
93
  class: 'in wfa main-btn-menu main-btn-account',
94
94
  useMenuBtn: true,
95
95
  label: renderMenuLabel({
96
96
  icon: html`<i class="fas fa-user-circle"></i>`,
97
- text: html`<span class="menu-label-text">${Translate.Render('account')}</span>`,
97
+ text: html`<span class="menu-label-text">${Translate.instance('account')}</span>`,
98
98
  }),
99
99
  style: 'display: none',
100
100
  attrs: `data-id="account"`,
101
101
  tabHref: `${getProxyPath()}account`,
102
102
  handleContainerClass: 'handle-btn-container',
103
- tooltipHtml: await Badge.Render(buildBadgeToolTipMenuOption('account')),
103
+ tooltipHtml: await Badge.instance(buildBadgeToolTipMenuOption('account')),
104
104
  })}
105
- ${await BtnIcon.Render({
105
+ ${await BtnIcon.instance({
106
106
  class: 'in wfa main-btn-menu main-btn-public-profile',
107
107
  useMenuBtn: true,
108
108
  label: renderMenuLabel({
109
109
  icon: html`<i class="fas fa-user-tag"></i>`,
110
- text: html`<span class="menu-label-text">${Translate.Render('public-profile')}</span>`,
110
+ text: html`<span class="menu-label-text">${Translate.instance('public-profile')}</span>`,
111
111
  }),
112
112
  style: 'display: none',
113
113
  attrs: `data-id="public-profile"`,
114
114
  tabHref: `${getProxyPath()}u`,
115
115
  handleContainerClass: 'handle-btn-container',
116
- tooltipHtml: await Badge.Render(buildBadgeToolTipMenuOption('public-profile')),
116
+ tooltipHtml: await Badge.instance(buildBadgeToolTipMenuOption('public-profile')),
117
117
  })}
118
- ${await BtnIcon.Render({
118
+ ${await BtnIcon.instance({
119
119
  class: 'in wfa main-btn-menu main-btn-settings',
120
120
  useMenuBtn: true,
121
121
  label: renderMenuLabel({
122
122
  icon: html`<i class="fas fa-sliders-h"></i>`,
123
- text: html`<span class="menu-label-text">${Translate.Render('settings')}</span>`,
123
+ text: html`<span class="menu-label-text">${Translate.instance('settings')}</span>`,
124
124
  }),
125
125
  attrs: `data-id="settings"`,
126
126
  tabHref: `${getProxyPath()}settings`,
127
127
  handleContainerClass: 'handle-btn-container',
128
- tooltipHtml: await Badge.Render(buildBadgeToolTipMenuOption('settings')),
128
+ tooltipHtml: await Badge.instance(buildBadgeToolTipMenuOption('settings')),
129
129
  })}
130
- ${await BtnIcon.Render({
130
+ ${await BtnIcon.instance({
131
131
  class: 'in wfa main-btn-menu main-btn-recover hide',
132
132
  useMenuBtn: true,
133
133
  label: renderMenuLabel({
134
134
  icon: html`<i class="fa-solid fa-arrow-rotate-left"></i>`,
135
- text: html`<span class="menu-label-text">${Translate.Render('recover')}</span>`,
135
+ text: html`<span class="menu-label-text">${Translate.instance('recover')}</span>`,
136
136
  }),
137
137
  attrs: `data-id="recover"`,
138
138
  tabHref: `${getProxyPath()}recover`,
139
139
  handleContainerClass: 'handle-btn-container',
140
- tooltipHtml: await Badge.Render(buildBadgeToolTipMenuOption('recover')),
140
+ tooltipHtml: await Badge.instance(buildBadgeToolTipMenuOption('recover')),
141
141
  })}
142
- ${await BtnIcon.Render({
142
+ ${await BtnIcon.instance({
143
143
  class: 'in wfa main-btn-menu main-btn-default-management',
144
144
  useMenuBtn: true,
145
145
  label: renderMenuLabel({
146
146
  icon: html`<i class="fa-solid fa-rectangle-list"></i>`,
147
- text: html`<span class="menu-label-text">${Translate.Render('default-management')}</span>`,
147
+ text: html`<span class="menu-label-text">${Translate.instance('default-management')}</span>`,
148
148
  }),
149
149
  attrs: `data-id="default-management"`,
150
150
  tabHref: `${getProxyPath()}default-management`,
151
151
  handleContainerClass: 'handle-btn-container',
152
- tooltipHtml: await Badge.Render(buildBadgeToolTipMenuOption('default-management')),
152
+ tooltipHtml: await Badge.instance(buildBadgeToolTipMenuOption('default-management')),
153
153
  })}
154
- ${await BtnIcon.Render({
154
+ ${await BtnIcon.instance({
155
155
  class: 'in wfa main-btn-menu main-btn-404 hide',
156
156
  useMenuBtn: true,
157
157
  label: renderMenuLabel({
158
158
  icon: html`<i class="fa-solid fa-triangle-exclamation"></i>`,
159
- text: html`<span class="menu-label-text">${Translate.Render('404')}</span>`,
159
+ text: html`<span class="menu-label-text">${Translate.instance('404')}</span>`,
160
160
  }),
161
161
  attrs: `data-id="404"`,
162
162
  tabHref: `${getProxyPath()}404`,
163
163
  handleContainerClass: 'handle-btn-container',
164
- tooltipHtml: await Badge.Render(buildBadgeToolTipMenuOption('404')),
164
+ tooltipHtml: await Badge.instance(buildBadgeToolTipMenuOption('404')),
165
165
  })}
166
- ${await BtnIcon.Render({
166
+ ${await BtnIcon.instance({
167
167
  class: 'in wfa main-btn-menu main-btn-500 hide',
168
168
  useMenuBtn: true,
169
169
  label: renderMenuLabel({
170
170
  icon: html`<i class="fa-solid fa-circle-exclamation"></i>`,
171
- text: html`<span class="menu-label-text">${Translate.Render('500')}</span>`,
171
+ text: html`<span class="menu-label-text">${Translate.instance('500')}</span>`,
172
172
  }),
173
173
  attrs: `data-id="500"`,
174
174
  tabHref: `${getProxyPath()}500`,
175
175
  handleContainerClass: 'handle-btn-container',
176
- tooltipHtml: await Badge.Render(buildBadgeToolTipMenuOption('500')),
176
+ tooltipHtml: await Badge.instance(buildBadgeToolTipMenuOption('500')),
177
177
  })}
178
- ${await BtnIcon.Render({
178
+ ${await BtnIcon.instance({
179
179
  class: 'in wfa main-btn-menu main-btn-blog',
180
180
  useMenuBtn: true,
181
181
  label: renderMenuLabel({
182
182
  icon: html`<i class="fa-solid fa-file-invoice"></i>`,
183
- text: html`<span class="menu-label-text">${Translate.Render('blog')}</span>`,
183
+ text: html`<span class="menu-label-text">${Translate.instance('blog')}</span>`,
184
184
  }),
185
185
  attrs: `data-id="blog"`,
186
186
  tabHref: `${getProxyPath()}blog`,
187
187
  handleContainerClass: 'handle-btn-container',
188
- tooltipHtml: await Badge.Render(buildBadgeToolTipMenuOption('blog')),
188
+ tooltipHtml: await Badge.instance(buildBadgeToolTipMenuOption('blog')),
189
189
  })}
190
- ${await BtnIcon.Render({
190
+ ${await BtnIcon.instance({
191
191
  class: 'in wfa main-btn-menu main-btn-chat',
192
192
  useMenuBtn: true,
193
193
  label: html`${renderMenuLabel({
194
194
  icon: html`<i class="far fa-comments"></i>`,
195
- text: html`<span class="menu-label-text">${Translate.Render('chat')}</span>`,
195
+ text: html`<span class="menu-label-text">${Translate.instance('chat')}</span>`,
196
196
  })}
197
- ${await Badge.Render({
197
+ ${await Badge.instance({
198
198
  id: 'main-btn-chat',
199
199
  type: 'circle-red',
200
200
  style: badgeNotificationMenuStyle,
@@ -203,7 +203,7 @@ const MenuDefault = {
203
203
  attrs: `data-id="chat"`,
204
204
  tabHref: `${getProxyPath()}chat`,
205
205
  handleContainerClass: 'handle-btn-container',
206
- tooltipHtml: await Badge.Render(buildBadgeToolTipMenuOption('chat')),
206
+ tooltipHtml: await Badge.instance(buildBadgeToolTipMenuOption('chat')),
207
207
  })}
208
208
  </div>
209
209
  `,
@@ -432,7 +432,7 @@ const MenuDefault = {
432
432
 
433
433
  setTimeout(ThemeEvents['main-theme-handler']);
434
434
 
435
- this.Data[id].sortable = new Sortable(s(`.menu-btn-container`), {
435
+ AppShellDefault.Data[id].sortable = new Sortable(s(`.menu-btn-container`), {
436
436
  animation: 150,
437
437
  group: `menu-sortable`,
438
438
  forceFallback: true,
@@ -483,15 +483,15 @@ const MenuDefault = {
483
483
 
484
484
  EventsUI.onClick(`.main-btn-sign-up`, async () => {
485
485
  const { barConfig } = await Themes[Css.currentTheme]();
486
- await Modal.Render({
486
+ await Modal.instance({
487
487
  id: 'modal-sign-up',
488
488
  route: 'sign-up',
489
489
  barConfig,
490
490
  title: renderViewTitle({
491
491
  icon: html`<i class="fas fa-user-plus"></i>`,
492
- text: Translate.Render('sign-up'),
492
+ text: Translate.instance('sign-up'),
493
493
  }),
494
- html: async () => await SignUp.Render({ idModal: 'modal-sign-up' }),
494
+ html: async () => await SignUp.instance({ idModal: 'modal-sign-up' }),
495
495
  handleType: 'bar',
496
496
  maximize: true,
497
497
  mode: 'view',
@@ -502,15 +502,15 @@ const MenuDefault = {
502
502
 
503
503
  EventsUI.onClick(`.main-btn-log-out`, async () => {
504
504
  const { barConfig } = await Themes[Css.currentTheme]();
505
- await Modal.Render({
505
+ await Modal.instance({
506
506
  id: 'modal-log-out',
507
507
  route: 'log-out',
508
508
  barConfig,
509
509
  title: renderViewTitle({
510
510
  icon: html`<i class="fas fa-sign-out-alt"></i>`,
511
- text: Translate.Render('log-out'),
511
+ text: Translate.instance('log-out'),
512
512
  }),
513
- html: async () => await LogOut.Render(),
513
+ html: async () => await LogOut.instance(),
514
514
  handleType: 'bar',
515
515
  maximize: true,
516
516
  mode: 'view',
@@ -521,15 +521,15 @@ const MenuDefault = {
521
521
 
522
522
  EventsUI.onClick(`.main-btn-log-in`, async () => {
523
523
  const { barConfig } = await Themes[Css.currentTheme]();
524
- await Modal.Render({
524
+ await Modal.instance({
525
525
  id: 'modal-log-in',
526
526
  route: 'log-in',
527
527
  barConfig,
528
528
  title: renderViewTitle({
529
529
  icon: html`<i class="fas fa-sign-in-alt"></i>`,
530
- text: Translate.Render('log-in'),
530
+ text: Translate.instance('log-in'),
531
531
  }),
532
- html: async () => await LogIn.Render(),
532
+ html: async () => await LogIn.instance(),
533
533
  handleType: 'bar',
534
534
  maximize: true,
535
535
  mode: 'view',
@@ -540,16 +540,16 @@ const MenuDefault = {
540
540
 
541
541
  EventsUI.onClick(`.main-btn-account`, async () => {
542
542
  const { barConfig } = await Themes[Css.currentTheme]();
543
- await Modal.Render({
543
+ await Modal.instance({
544
544
  id: 'modal-account',
545
545
  route: 'account',
546
546
  barConfig,
547
547
  title: renderViewTitle({
548
548
  icon: html`<i class="fas fa-user-circle"></i>`,
549
- text: Translate.Render('account'),
549
+ text: Translate.instance('account'),
550
550
  }),
551
551
  html: async () =>
552
- await Account.Render({
552
+ await Account.instance({
553
553
  idModal: 'modal-account',
554
554
  user: AppStoreDefault.Data.user.main.model.user,
555
555
  disabled: [],
@@ -582,17 +582,17 @@ const MenuDefault = {
582
582
  }
583
583
  }
584
584
 
585
- await Modal.Render({
585
+ await Modal.instance({
586
586
  id: idModal,
587
587
  route: 'u',
588
588
  barConfig,
589
589
  title: '',
590
590
  // renderViewTitle({
591
591
  // icon: html`<i class="fas fa-user-circle"></i>`,
592
- // text: Translate.Render('public-profile'),
592
+ // text: Translate.instance('public-profile'),
593
593
  // }),
594
594
  html: async () =>
595
- await PublicProfile.Render({
595
+ await PublicProfile.instance({
596
596
  idModal,
597
597
  user,
598
598
  }),
@@ -607,15 +607,15 @@ const MenuDefault = {
607
607
 
608
608
  EventsUI.onClick(`.main-btn-settings`, async () => {
609
609
  const { barConfig } = await Themes[Css.currentTheme]();
610
- await Modal.Render({
610
+ await Modal.instance({
611
611
  id: 'modal-settings',
612
612
  route: 'settings',
613
613
  barConfig,
614
614
  title: renderViewTitle({
615
615
  icon: html` <i class="fas fa-sliders-h"></i>`,
616
- text: Translate.Render('settings'),
616
+ text: Translate.instance('settings'),
617
617
  }),
618
- html: async () => await SettingsDefault.Render({ idModal: 'modal-settings' }),
618
+ html: async () => await SettingsDefault.instance({ idModal: 'modal-settings' }),
619
619
  handleType: 'bar',
620
620
  maximize: true,
621
621
  mode: 'view',
@@ -626,16 +626,16 @@ const MenuDefault = {
626
626
 
627
627
  EventsUI.onClick(`.main-btn-recover`, async () => {
628
628
  const { barConfig } = await Themes[Css.currentTheme]();
629
- await Modal.Render({
629
+ await Modal.instance({
630
630
  id: 'modal-recover',
631
631
  route: 'recover',
632
632
  barConfig,
633
633
  title: renderViewTitle({
634
634
  icon: html`<i class="fa-solid fa-arrow-rotate-left"></i>`,
635
- text: Translate.Render('recover'),
635
+ text: Translate.instance('recover'),
636
636
  }),
637
637
  html: async () =>
638
- await Recover.Render({ idModal: 'modal-recover', user: AppStoreDefault.Data.user.main.model.user }),
638
+ await Recover.instance({ idModal: 'modal-recover', user: AppStoreDefault.Data.user.main.model.user }),
639
639
  handleType: 'bar',
640
640
  maximize: true,
641
641
  mode: 'view',
@@ -646,15 +646,15 @@ const MenuDefault = {
646
646
 
647
647
  EventsUI.onClick(`.main-btn-default-management`, async () => {
648
648
  const { barConfig } = await Themes[Css.currentTheme]();
649
- await Modal.Render({
649
+ await Modal.instance({
650
650
  id: 'modal-default-management',
651
651
  route: 'default-management',
652
652
  barConfig,
653
653
  title: renderViewTitle({
654
654
  icon: html`<i class="fa-solid fa-rectangle-list"></i>`,
655
- text: Translate.Render('default-management'),
655
+ text: Translate.instance('default-management'),
656
656
  }),
657
- html: async () => await DefaultManagement.RenderTable(),
657
+ html: async () => await DefaultManagement.instance(),
658
658
  handleType: 'bar',
659
659
  maximize: true,
660
660
  mode: 'view',
@@ -666,15 +666,15 @@ const MenuDefault = {
666
666
 
667
667
  EventsUI.onClick(`.main-btn-404`, async () => {
668
668
  const { barConfig } = await Themes[Css.currentTheme]();
669
- await Modal.Render({
669
+ await Modal.instance({
670
670
  id: 'modal-404',
671
671
  route: '404',
672
672
  barConfig,
673
673
  title: renderViewTitle({
674
674
  icon: html`<i class="fa-solid fa-triangle-exclamation"></i>`,
675
- text: Translate.Render('404'),
675
+ text: Translate.instance('404'),
676
676
  }),
677
- html: async () => await Page404.Render({ idModal: 'modal-404' }),
677
+ html: async () => await Page404.instance({ idModal: 'modal-404' }),
678
678
  handleType: 'bar',
679
679
  maximize: true,
680
680
  mode: 'view',
@@ -686,15 +686,15 @@ const MenuDefault = {
686
686
 
687
687
  EventsUI.onClick(`.main-btn-500`, async () => {
688
688
  const { barConfig } = await Themes[Css.currentTheme]();
689
- await Modal.Render({
689
+ await Modal.instance({
690
690
  id: 'modal-500',
691
691
  route: '500',
692
692
  barConfig,
693
693
  title: renderViewTitle({
694
694
  icon: html`<i class="fa-solid fa-circle-exclamation"></i>`,
695
- text: Translate.Render('500'),
695
+ text: Translate.instance('500'),
696
696
  }),
697
- html: async () => await Page500.Render({ idModal: 'modal-500' }),
697
+ html: async () => await Page500.instance({ idModal: 'modal-500' }),
698
698
  handleType: 'bar',
699
699
  maximize: true,
700
700
  mode: 'view',
@@ -709,13 +709,13 @@ const MenuDefault = {
709
709
  const idModal = 'modal-blog';
710
710
  const routeModal = 'blog';
711
711
  const idEvent = `form-panel-${idModal}`;
712
- await Modal.Render({
712
+ await Modal.instance({
713
713
  id: idModal,
714
714
  route: routeModal,
715
715
  barConfig,
716
716
  title: renderViewTitle({
717
717
  icon: html`<i class="fa-solid fa-file-invoice"></i>`,
718
- text: Translate.Render('blog'),
718
+ text: Translate.instance('blog'),
719
719
  }),
720
720
  observer: true,
721
721
  html: async () => {
@@ -741,15 +741,15 @@ const MenuDefault = {
741
741
 
742
742
  EventsUI.onClick(`.main-btn-chat`, async () => {
743
743
  const { barConfig } = await Themes[Css.currentTheme]();
744
- await Modal.Render({
744
+ await Modal.instance({
745
745
  id: 'modal-chat',
746
746
  route: 'chat',
747
747
  barConfig,
748
748
  title: renderViewTitle({
749
749
  icon: html` <i class="far fa-comments"></i>`,
750
- text: Translate.Render('chat'),
750
+ text: Translate.instance('chat'),
751
751
  }),
752
- html: async () => await Chat.Render({ idModal: 'modal-chat' }),
752
+ html: async () => await Chat.instance({ idModal: 'modal-chat' }),
753
753
  handleType: 'bar',
754
754
  maximize: true,
755
755
  observer: true,
@@ -759,7 +759,7 @@ const MenuDefault = {
759
759
  barMode,
760
760
  });
761
761
  });
762
- },
763
- };
762
+ }
763
+ }
764
764
 
765
- export { MenuDefault };
765
+ export { AppShellDefault };
@@ -8,20 +8,20 @@ const CssCommonDefault = async () => {
8
8
  return html``;
9
9
  };
10
10
 
11
- const CssDefaultDark = {
12
- theme: 'default-dark',
13
- dark: true,
14
- render: async () => {
11
+ class CssDefaultDark {
12
+ static theme = 'default-dark';
13
+ static dark = true;
14
+ static render = async () => {
15
15
  return (await CssCommonDefault()) + html``;
16
- },
17
- };
16
+ };
17
+ }
18
18
 
19
- const CssDefaultLight = {
20
- theme: 'default-light',
21
- dark: false,
22
- render: async () => {
19
+ class CssDefaultLight {
20
+ static theme = 'default-light';
21
+ static dark = false;
22
+ static render = async () => {
23
23
  return (await CssCommonDefault()) + html``;
24
- },
25
- };
24
+ };
25
+ }
26
26
 
27
27
  export { CssDefaultDark, CssCommonDefault, CssDefaultLight };
@@ -2,13 +2,15 @@ import { Auth } from '../core/Auth.js';
2
2
  import { LogIn } from '../core/LogIn.js';
3
3
  import { AppStoreDefault } from './AppStoreDefault.js';
4
4
 
5
- const LogInDefault = async function () {
6
- LogIn.Event['LogInDefault'] = async (options) => {
5
+ class LogInDefault {
6
+ static async instance() {
7
+ LogIn.onLogin(async (options) => {
7
8
  const { token, user } = options;
8
9
  AppStoreDefault.Data.user.main.model.user = user;
9
- };
10
+ }, { key: 'LogInDefault' });
10
11
  const { user } = await Auth.sessionIn();
11
12
  AppStoreDefault.Data.user.main.model.user = user;
12
- };
13
+ }
14
+ }
13
15
 
14
16
  export { LogInDefault };
@@ -1,10 +1,12 @@
1
1
  import { LogOut } from '../core/LogOut.js';
2
2
  import { AppStoreDefault } from './AppStoreDefault.js';
3
3
 
4
- const LogOutDefault = async function () {
5
- LogOut.Event['LogOutDefault'] = async (result = { user: { _id: '' } }) => {
4
+ class LogOutDefault {
5
+ static async instance() {
6
+ LogOut.onLogout(async (result = { user: { _id: '' } }) => {
6
7
  AppStoreDefault.Data.user.main.model.user = result.user;
7
- };
8
- };
8
+ }, { key: 'LogOutDefault' });
9
+ }
10
+ }
9
11
 
10
12
  export { LogOutDefault };
@@ -0,0 +1,47 @@
1
+ import { loggerFactory } from '../core/Logger.js';
2
+ import { Modal } from '../core/Modal.js';
3
+ import { s } from '../core/VanillaJs.js';
4
+
5
+ const logger = loggerFactory(import.meta);
6
+
7
+ const BannerAppTemplate = html`<strong class="inl" style="font-family: system-ui">PWA</strong>`;
8
+
9
+ class RouterDefault {
10
+ static routes() {
11
+ return {
12
+ '/': {
13
+ title: 'Home',
14
+ render: () => Modal.onHomeRouterEvent(),
15
+ },
16
+ '/home': { title: 'home', render: () => Modal.onHomeRouterEvent() },
17
+ '/settings': { title: 'settings', render: () => s(`.main-btn-settings`).click() },
18
+ '/log-in': { title: 'log-in', render: () => s(`.main-btn-log-in`).click() },
19
+ '/sign-up': { title: 'sign-up', render: () => s(`.main-btn-sign-up`).click() },
20
+ '/log-out': {
21
+ title: 'log-out',
22
+ render: () => s(`.main-btn-log-out`).click(),
23
+ },
24
+ '/account': {
25
+ title: 'account',
26
+ render: () => s(`.main-btn-account`).click(),
27
+ },
28
+ '/docs': { title: 'docs', render: () => s(`.main-btn-docs`).click() },
29
+ '/chat': { title: 'docs', render: () => s(`.main-btn-chat`).click() },
30
+ '/blog': { title: 'docs', render: () => s(`.main-btn-blog`).click() },
31
+ '/recover': { title: 'recover', render: () => s(`.main-btn-recover`).click() },
32
+ '/default-management': {
33
+ title: 'default-management',
34
+ render: () => s(`.main-btn-default-management`).click(),
35
+ },
36
+ '/u': { title: 'public-profile', render: () => s(`.main-btn-public-profile`).click() },
37
+ '/404': { title: '404 Not Found', render: () => s(`.main-btn-404`).click() },
38
+ '/500': { title: '500 Server Error', render: () => s(`.main-btn-500`).click() },
39
+ };
40
+ }
41
+
42
+ static instance() {
43
+ return { Routes: RouterDefault.routes };
44
+ }
45
+ }
46
+
47
+ export { RouterDefault, BannerAppTemplate };
@@ -3,14 +3,14 @@ import { FullScreen } from '../core/FullScreen.js';
3
3
  import { Translate } from '../core/Translate.js';
4
4
  import { Worker } from '../core/Worker.js';
5
5
 
6
- const SettingsDefault = {
7
- Render: async function () {
6
+ class SettingsDefault {
7
+ static async instance() {
8
8
  let render = await FullScreen.RenderSetting();
9
9
  render += await Css.RenderSetting();
10
10
  render += await Translate.RenderSetting();
11
11
  render += await Worker.RenderSetting();
12
12
  return render;
13
- },
14
- };
13
+ }
14
+ }
15
15
 
16
16
  export { SettingsDefault };
@@ -1,9 +1,11 @@
1
1
  import { SignUp } from '../core/SignUp.js';
2
2
 
3
- const SignUpDefault = function () {
4
- SignUp.Event['SignUpDefault'] = async (options) => {
3
+ class SignUpDefault {
4
+ static instance() {
5
+ SignUp.onSignup(async (options) => {
5
6
  const { user } = options;
6
- };
7
- };
7
+ }, { key: 'SignUpDefault' });
8
+ }
9
+ }
8
10
 
9
11
  export { SignUpDefault };
@@ -1,7 +1,7 @@
1
1
  import { Translate } from '../core/Translate.js';
2
2
 
3
- const TranslateDefault = {
4
- Init: async function () {},
5
- };
3
+ class TranslateDefault {
4
+ static async instance() {}
5
+ }
6
6
 
7
7
  export { TranslateDefault };