neo.mjs 6.20.1 → 6.22.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (151) hide show
  1. package/apps/ServiceWorker.mjs +2 -2
  2. package/apps/colors/view/HeaderToolbar.mjs +7 -3
  3. package/apps/covid/view/MainContainerController.mjs +6 -6
  4. package/apps/covid/view/TableContainer.mjs +5 -3
  5. package/apps/covid/view/country/Gallery.mjs +6 -4
  6. package/apps/form/view/ViewportModel.mjs +2 -2
  7. package/apps/portal/index.html +23 -1
  8. package/apps/portal/view/HeaderToolbar.mjs +2 -2
  9. package/apps/portal/view/Viewport.mjs +3 -1
  10. package/apps/portal/view/ViewportController.mjs +10 -0
  11. package/apps/portal/view/about/Container.mjs +44 -0
  12. package/apps/portal/view/about/MemberContainer.mjs +191 -0
  13. package/apps/portal/view/home/MainContainer.mjs +9 -2
  14. package/apps/portal/view/home/parts/AfterMath.mjs +12 -8
  15. package/apps/portal/view/home/parts/Colors.mjs +8 -2
  16. package/apps/portal/view/home/parts/Features.mjs +50 -83
  17. package/apps/portal/view/home/parts/Helix.mjs +8 -2
  18. package/apps/portal/view/home/parts/MainNeo.mjs +17 -5
  19. package/apps/portal/view/learn/ContentView.mjs +18 -4
  20. package/apps/realworld/api/Base.mjs +5 -5
  21. package/apps/realworld/view/MainContainerController.mjs +19 -17
  22. package/apps/realworld2/api/Base.mjs +5 -5
  23. package/apps/realworld2/view/MainContainerController.mjs +11 -11
  24. package/apps/realworld2/view/article/Gallery.mjs +6 -4
  25. package/apps/sharedcovid/view/MainContainerController.mjs +11 -12
  26. package/apps/sharedcovid/view/TableContainer.mjs +7 -5
  27. package/apps/sharedcovid/view/country/Gallery.mjs +6 -4
  28. package/apps/shareddialog/view/MainContainerController.mjs +5 -5
  29. package/buildScripts/webpack/json/myApps.template.json +1 -2
  30. package/docs/app/view/classdetails/MembersList.mjs +8 -8
  31. package/docs/app/view/classdetails/SourceViewComponent.mjs +6 -6
  32. package/docs/app/view/classdetails/TutorialComponent.mjs +9 -9
  33. package/examples/ServiceWorker.mjs +2 -2
  34. package/examples/component/coronaGallery/CountryGallery.mjs +6 -4
  35. package/examples/component/helix/Viewport.mjs +2 -2
  36. package/examples/list/circle/MainContainer.mjs +7 -7
  37. package/examples/preloadingAssets/view/MainContainerController.mjs +5 -5
  38. package/package.json +5 -5
  39. package/resources/data/deck/learnneo/pages/GuideEvents.md +2 -4
  40. package/resources/data/deck/learnneo/pages/WhyNeo-Features.md +46 -0
  41. package/resources/data/deck/learnneo/pages/WhyNeo-Intro.md +5 -6
  42. package/resources/data/deck/learnneo/pages/WhyNeo-Multi-Window.md +1 -1
  43. package/resources/data/deck/learnneo/tree.json +3 -2
  44. package/resources/fonts/GT-Planar-Regular.otf +0 -0
  45. package/resources/images/logo/neo_logo_favicon.svg +16 -0
  46. package/resources/images/team/tobiu.png +0 -0
  47. package/resources/scss/src/apps/colors/HeaderToolbar.scss +23 -1
  48. package/resources/scss/src/apps/colors/Viewport.scss +10 -0
  49. package/resources/scss/src/apps/portal/HeaderToolbar.scss +7 -7
  50. package/resources/scss/src/apps/portal/Viewport.scss +10 -0
  51. package/resources/scss/src/apps/portal/about/Container.scss +4 -0
  52. package/resources/scss/src/apps/portal/about/MemberContainer.scss +70 -0
  53. package/resources/scss/src/apps/portal/home/FooterContainer.scss +12 -0
  54. package/resources/scss/src/apps/portal/home/parts/BaseContainer.scss +16 -16
  55. package/resources/scss/src/apps/portal/home/parts/MainNeo.scss +62 -7
  56. package/resources/scss/src/apps/portal/learn/ContentView.scss +1 -0
  57. package/resources/scss/src/apps/portal/learn/PageContainer.scss +6 -0
  58. package/resources/scss/src/code/LivePreview.scss +4 -1
  59. package/resources/scss/src/layout/Cube.scss +3 -3
  60. package/resources/scss/src/plugin/Resizable.scss +12 -19
  61. package/resources/scss/theme-neo-light/dialog/Base.scss +12 -2
  62. package/src/DefaultConfig.mjs +2 -2
  63. package/src/calendar/view/MainContainer.mjs +10 -10
  64. package/src/calendar/view/SettingsContainer.mjs +10 -10
  65. package/src/calendar/view/YearComponent.mjs +2 -2
  66. package/src/calendar/view/calendars/List.mjs +2 -2
  67. package/src/calendar/view/month/Component.mjs +4 -4
  68. package/src/calendar/view/week/Component.mjs +2 -2
  69. package/src/calendar/view/week/plugin/DragDrop.mjs +4 -4
  70. package/src/code/LivePreview.mjs +92 -6
  71. package/src/component/Base.mjs +3 -3
  72. package/src/component/Circle.mjs +5 -5
  73. package/src/component/DateSelector.mjs +4 -4
  74. package/src/component/Gallery.mjs +8 -8
  75. package/src/component/Helix.mjs +15 -12
  76. package/src/component/Toast.mjs +1 -1
  77. package/src/component/wrapper/AmChart.mjs +2 -2
  78. package/src/component/wrapper/CesiumJS.mjs +2 -2
  79. package/src/component/wrapper/GoogleMaps.mjs +2 -2
  80. package/src/component/wrapper/MonacoEditor.mjs +3 -3
  81. package/src/core/Observable.mjs +2 -2
  82. package/src/data/Store.mjs +2 -2
  83. package/src/dialog/Base.mjs +44 -14
  84. package/src/draggable/DragZone.mjs +4 -4
  85. package/src/draggable/list/DragZone.mjs +4 -4
  86. package/src/draggable/tab/header/toolbar/SortZone.mjs +2 -2
  87. package/src/draggable/toolbar/DragZone.mjs +4 -4
  88. package/src/draggable/toolbar/SortZone.mjs +3 -3
  89. package/src/form/field/ComboBox.mjs +3 -2
  90. package/src/form/field/FileUpload.mjs +3 -3
  91. package/src/form/field/Text.mjs +2 -2
  92. package/src/form/field/TextArea.mjs +2 -2
  93. package/src/grid/Container.mjs +2 -2
  94. package/src/layout/Cube.mjs +1 -3
  95. package/src/list/plugin/Animate.mjs +23 -23
  96. package/src/main/DomAccess.mjs +1 -1
  97. package/src/main/DomEvents.mjs +14 -5
  98. package/src/main/addon/AmCharts.mjs +2 -2
  99. package/src/main/addon/MapboxGL.mjs +4 -4
  100. package/src/manager/DomEvent.mjs +2 -2
  101. package/src/manager/Focus.mjs +2 -2
  102. package/src/manager/Toast.mjs +6 -4
  103. package/src/manager/rpc/Message.mjs +2 -2
  104. package/src/plugin/Resizable.mjs +11 -3
  105. package/src/selection/HelixModel.mjs +3 -3
  106. package/src/tab/Strip.mjs +4 -4
  107. package/src/table/Container.mjs +4 -4
  108. package/src/util/Logger.mjs +6 -4
  109. package/src/worker/App.mjs +2 -2
  110. package/src/worker/Manager.mjs +3 -2
  111. package/apps/website/Overwrites.mjs +0 -16
  112. package/apps/website/app.mjs +0 -7
  113. package/apps/website/data/blog.json +0 -769
  114. package/apps/website/data/docs.json +0 -29
  115. package/apps/website/data/examples_devmode.json +0 -173
  116. package/apps/website/data/examples_dist_dev.json +0 -164
  117. package/apps/website/data/examples_dist_prod.json +0 -164
  118. package/apps/website/index.html +0 -11
  119. package/apps/website/model/BlogPost.mjs +0 -60
  120. package/apps/website/model/Example.mjs +0 -48
  121. package/apps/website/neo-config.json +0 -7
  122. package/apps/website/store/BlogPosts.mjs +0 -39
  123. package/apps/website/store/Examples.mjs +0 -35
  124. package/apps/website/view/HeaderContainer.mjs +0 -72
  125. package/apps/website/view/MainContainer.mjs +0 -95
  126. package/apps/website/view/MainContainerController.mjs +0 -230
  127. package/apps/website/view/blog/Container.mjs +0 -50
  128. package/apps/website/view/blog/List.mjs +0 -171
  129. package/apps/website/view/examples/List.mjs +0 -124
  130. package/apps/website/view/examples/TabContainer.mjs +0 -66
  131. package/apps/website/view/home/DeveloperIntroComponent.mjs +0 -266
  132. package/apps/website/view/home/ExecutiveIntroComponent.mjs +0 -291
  133. package/apps/website/view/home/TabContainer.mjs +0 -56
  134. package/resources/scss/src/apps/website/HeaderContainer.scss +0 -136
  135. package/resources/scss/src/apps/website/MainContainer.scss +0 -25
  136. package/resources/scss/src/apps/website/blog/Container.scss +0 -18
  137. package/resources/scss/src/apps/website/blog/List.scss +0 -183
  138. package/resources/scss/src/apps/website/examples/List.scss +0 -157
  139. package/resources/scss/src/apps/website/home/TabContainer.scss +0 -117
  140. package/resources/scss/theme-dark/apps/website/HeaderContainer.scss +0 -5
  141. package/resources/scss/theme-dark/apps/website/MainContainer.scss +0 -4
  142. package/resources/scss/theme-dark/apps/website/blog/Container.scss +0 -3
  143. package/resources/scss/theme-dark/apps/website/home/TabContainer.scss +0 -4
  144. package/resources/scss/theme-light/apps/website/HeaderContainer.scss +0 -5
  145. package/resources/scss/theme-light/apps/website/MainContainer.scss +0 -4
  146. package/resources/scss/theme-light/apps/website/blog/Container.scss +0 -3
  147. package/resources/scss/theme-light/apps/website/home/TabContainer.scss +0 -4
  148. package/resources/scss/theme-neo-light/apps/website/HeaderContainer.scss +0 -5
  149. package/resources/scss/theme-neo-light/apps/website/MainContainer.scss +0 -4
  150. package/resources/scss/theme-neo-light/apps/website/blog/Container.scss +0 -3
  151. package/resources/scss/theme-neo-light/apps/website/home/TabContainer.scss +0 -4
@@ -1,5 +1,8 @@
1
1
  import BaseContainer from './BaseContainer.mjs';
2
2
  import ContentBox from '../ContentBox.mjs';
3
+ import Component from '../../../../../src/component/Base.mjs';
4
+ import Container from '../../../../../src/container/Base.mjs';
5
+
3
6
 
4
7
  /**
5
8
  * @class Portal.view.home.parts.Features
@@ -7,92 +10,56 @@ import ContentBox from '../ContentBox.mjs';
7
10
  */
8
11
  class Features extends BaseContainer {
9
12
  static config = {
10
- /**
11
- * @member {String} className='Portal.view.home.parts.Features'
12
- * @protected
13
- */
14
13
  className: 'Portal.view.home.parts.Features',
15
- /**
16
- * @member {String[]} cls=['portal-home-features']
17
- */
18
14
  cls: ['portal-home-features'],
19
- /**
20
- * @member {Object} layout={ntype:'hbox',align:'stretch',wrap:'wrap'}
21
- */
22
- layout: {ntype: 'hbox', align: 'stretch', wrap: 'wrap'},
23
- /**
24
- * @member {Object[]} items
25
- */
26
- items: [{
27
- module: ContentBox,
28
- header: 'Multi-Window Apps',
29
- route : '#/learn/WhyNeo-Quick',
30
-
31
- content: [
32
- 'No need for a Native Shell (e.g. Electron)',
33
- 'Sharing Data across Windows',
34
- 'Sharing State across Windows',
35
- 'Moving Components across Windows while keeping the same JS instances'
36
- ]
37
- }, {
38
- module: ContentBox,
39
- header: 'Multi-threading',
40
- route : '#/learn/WhyNeo-Quick',
41
-
42
- content: [
43
- 'Following the OMT (Off the Main-Thread) paradigm',
44
- 'Your Apps & the Framework live within an Application Worker',
45
- 'Non-blocking, no-freeze, user interaction responses, even for heavy data i/o, processing, and intensive, complex screen updating',
46
- 'Additional Workers for OffscreenCanvas, Data, Delta-Updates & Tasks',
47
- 'A ServiceWorker connected to the App Worker for predictive Caching'
48
- ]
49
- }, {
50
- module: ContentBox,
51
- header: 'Modern JavaScript directly in your Browser',
52
- route : '#/learn/WhyNeo-Quick',
53
-
54
- content: [
55
- 'The Dev-Mode runs without the need for Transpilations or Compilations',
56
- 'Using the latest ECMAScript Features, as soon as the Browser Support is there',
57
- 'Simple and powerful Debugging',
58
- 'Reduced Development Costs'
59
- ]
60
- }, {
61
- module: ContentBox,
62
- header: 'Powerful Component-Library',
63
- route : '#/learn/WhyNeo-Quick',
64
-
65
- content: [
66
- 'Declarative Component-Trees',
67
- 'High Order Components',
68
- 'Many out-of-the-box Components, including nested lazy-loaded forms',
69
- 'Multiple themes, which can get nested'
70
- ]
71
- }, {
72
- module: ContentBox,
73
- header: 'Elegant State Management',
74
- route : '#/learn/WhyNeo-Speed',
75
-
76
- content: [
77
- 'Multiple communicating State-Providers',
78
- 'Observable',
79
- 'Supporting different architectures like MVVM without enforcing them'
80
- ]
81
- }, {
82
- module: ContentBox,
83
- header: 'Core Features',
84
- route : '#/learn/WhyNeo-Speed',
85
-
86
- content: [
87
- 'RPC Layer (cross-realm, including Backends)',
88
- 'Extensibility',
89
- 'Scalability',
90
- 'Class Config System',
91
- 'Drag & Drop',
92
- 'Mixins, Plugins & Main-Thread Addons'
93
- ]
15
+ layout: {ntype: 'vbox', align: 'stretch', wrap: 'wrap'},
16
+ items: [
17
+ {
18
+ module: Container,
19
+ layout: {ntype: 'hbox'},
20
+ itemDefaults: {
21
+ module: Component,
22
+ style: {width: '33%', margin: '1em', padding: '1em', border: 'thin solid lightgray'}
23
+ },
24
+ items: [{
25
+ module: Component,
26
+ html: `
27
+ <h2>Extremely High Performance</h2>
28
+ <ul>
29
+ <li>Multi-threaded via web workers
30
+ <li>Lightning fast rendering
31
+ </ul>
32
+ <p>Neo.mjs runs key processes in separate web workers, each running in a parallel thread: one thread for app logic, one for managing DOM updates, and one for communicating with the backend. And if you have specialized or processor-intensive tasks, you can easily spawn additional threads.</p>
33
+ <p>Besides the benefit of running in a separate thread, the DOM update thread has highly optimized code for tracking and applying delta updates, easily handling tens of thousands of updates per second.</p>
34
+ `
35
+ }, {
36
+ module: Component,
37
+ html: `
38
+ <h2>Multi-Window Applications</h2>
39
+ <ul>
40
+ <li>Neo.mjs uniquely allows you to create multi-window applications
41
+ <li>Application logic, state, data, and component instances are seamlessly shared
42
+ </ul>
43
+ <p>Neo.mjs components can be rendered to the DOM for any shared web worker. Your app logic listens to events, maintains state, and shares data, without caring where the component is rendering, even if it's to another browser window.</p>
44
+ `
45
+ }, {
46
+ module: Component,
47
+ html: `
48
+ <h2>Powerful Framework Features</h2>
49
+ <ul>
50
+ <li>Component-based, declaratively configured 
51
+ <li>Standard ECMAscript, without proprietary extenions
52
+ <li>Property lifecycle hooks, elegant state management
53
+ </ul>
54
+ <p>Neo.mjs components are abstract, and configured declaratively. Compared to other libraries, Neo.mjs has features that make it much easier to do data binding, and to detect property updates and events.</p>
55
+ <p>Since Neo.mjs uses standard JavaScript, there are no special WebPack transpilations. This also makes debugging easier: any statement you write in your application logic also runs in the devtools console.</p>
56
+ `
94
57
  }]
95
- }
58
+ }, {
59
+ module: Component,
60
+ html: 'You can read more about Neo.mjs featuers and benefits in <a href="#/learn/WhyNeo-Features">the Learning section</a>. Scroll down to see some running examples.'
61
+ }]
62
+ }
96
63
  }
97
64
 
98
65
  Neo.setupClass(Features);
@@ -102,8 +102,14 @@ class Helix extends BaseContainer {
102
102
  *
103
103
  */
104
104
  async activate() {
105
- await this.timeout(1000);
106
- this.getReference('live-preview').activeView = 'preview'
105
+ let me = this,
106
+ {parent} = me;
107
+
108
+ await me.timeout(1000);
109
+
110
+ if (parent.activePartsId === me.id && parent.mounted) {
111
+ me.getReference('live-preview').activeView = 'preview'
112
+ }
107
113
  }
108
114
  }
109
115
 
@@ -23,13 +23,25 @@ class MainNeo extends BaseContainer {
23
23
  */
24
24
  items: [{
25
25
  ntype: 'container',
26
- cls : ['vector'],
27
- flex : 'none',
26
+ cls : ['logo-container'],
27
+ items: [{
28
+ ntype: 'container',
29
+ cls : ['vector']
30
+ }, {
31
+ cls : ['neo-h1'],
32
+ html: 'Neo.mjs',
33
+ tag : 'h1'
34
+ }]
35
+ }, {
36
+ cls : ['neo-h2'],
37
+ flex: 'none',
38
+ html: 'Modern Enterprise-Ready JavaScript Framework',
39
+ tag : 'h2'
28
40
  }, {
29
- cls : ['neo-h1'],
41
+ cls : ['neo-h3'],
30
42
  flex: 'none',
31
- html: 'Harness the Power of Multi-Threading for Ultra-Fast Frontends',
32
- vdom: {tag: 'h1'}
43
+ html: 'Neo.mjs provides a new approach for building feature-rich web applications. Increase productivity by leveraging a vast component library and harness the power of multi-threading for extreme real-time performance.',
44
+ tag : 'h3'
33
45
  }, {
34
46
  ntype: 'container',
35
47
  cls : ['button-group'],
@@ -68,14 +68,14 @@ class ContentView extends Component {
68
68
 
69
69
  let me = this;
70
70
 
71
- value && setTimeout(() => {
71
+ value && me.timeout(50).then(() => {
72
72
  Neo.main.addon.IntersectionObserver.register({
73
73
  callback: 'findTopmostItem',
74
74
  id : me.id,
75
75
  root : `#${me.parentId}`,
76
76
  windowId: me.windowId
77
77
  })
78
- }, 50)
78
+ })
79
79
  }
80
80
 
81
81
  /**
@@ -83,8 +83,22 @@ class ContentView extends Component {
83
83
  * @param {Object} value
84
84
  * @param {Object} oldValue
85
85
  */
86
- afterSetRecord(value, oldValue) {
87
- value && this.doFetchContent(value)
86
+ async afterSetRecord(value, oldValue) {
87
+ if (value) {
88
+ let me = this;
89
+
90
+ await me.doFetchContent(value);
91
+
92
+ if (oldValue) {
93
+ await me.timeout(50);
94
+
95
+ Neo.main.DomAccess.scrollTo({
96
+ direction: 'top',
97
+ id : me.parentId,
98
+ value : 0
99
+ })
100
+ }
101
+ }
88
102
  }
89
103
 
90
104
  /**
@@ -57,14 +57,14 @@ class Base extends CoreBase {
57
57
  let me = this;
58
58
 
59
59
  if (!Neo.apps || !Neo.apps['RealWorld']) {
60
- setTimeout(() => {
61
- me.afterConstructed();
62
- }, 100);
60
+ me.timeout(100).then(() => {
61
+ me.afterConstructed()
62
+ })
63
63
  } else {
64
64
  if (Neo.apps['RealWorld'].rendered) {
65
- me.onAppRendered();
65
+ me.onAppRendered()
66
66
  } else {
67
- Neo.apps['RealWorld'].on('render',me.onAppRendered, me);
67
+ Neo.apps['RealWorld'].on('render',me.onAppRendered, me)
68
68
  }
69
69
  }
70
70
  }
@@ -91,16 +91,18 @@ class MainContainerController extends ComponentController {
91
91
  */
92
92
  afterSetCurrentUser(value, oldValue) {
93
93
  if (typeof oldValue === 'object') {
94
- this.getReference('header').set({
94
+ let me = this;
95
+
96
+ me.getReference('header').set({
95
97
  loggedIn : !!value,
96
98
  userImage: value ? value.image : null,
97
99
  userName : value ? value.username : null
98
100
  }).then(() => {
99
101
  // todo: test to ensure the initial markup is rendered
100
- setTimeout(() => {
101
- this.fire('afterSetCurrentUser', value);
102
- }, 200);
103
- });
102
+ me.timeout(200).then(() => {
103
+ me.fire('afterSetCurrentUser', value)
104
+ })
105
+ })
104
106
  }
105
107
  }
106
108
 
@@ -229,12 +231,12 @@ class MainContainerController extends ComponentController {
229
231
  value: userData.token
230
232
  }).then(() => {
231
233
  // wait until the header vdom-update is done to avoid showing sign up & sign in twice
232
- setTimeout(() => {
234
+ this.timeout(50).then(() => {
233
235
  Neo.Main.setRoute({
234
236
  value: '/'
235
- });
236
- }, 50);
237
- });
237
+ })
238
+ })
239
+ })
238
240
  }
239
241
 
240
242
  /**
@@ -247,12 +249,12 @@ class MainContainerController extends ComponentController {
247
249
  key: LOCAL_STORAGE_KEY
248
250
  }).then(() => {
249
251
  // wait until the header vdom-update is done to avoid showing sign up & sign in twice
250
- setTimeout(() => {
252
+ this.timeout(50).then(() => {
251
253
  Neo.Main.setRoute({
252
254
  value: '/'
253
- });
254
- }, 50);
255
- });
255
+ })
256
+ })
257
+ })
256
258
  }
257
259
 
258
260
  /**
@@ -375,11 +377,11 @@ class MainContainerController extends ComponentController {
375
377
  break;
376
378
  case 'settings':
377
379
  if (me.currentUser) {
378
- setTimeout(() => { // added a short delay to not interfere with the mainContainer update
379
- me.settingsComponent.onCurrentUserChange(me.currentUser);
380
- }, 50);
380
+ me.timeout(50).then(() => { // added a short delay to not interfere with the mainContainer update
381
+ me.settingsComponent.onCurrentUserChange(me.currentUser)
382
+ })
381
383
  }
382
- break;
384
+ break
383
385
  case 'signup':
384
386
  newView.errors = [];
385
387
  break;
@@ -41,7 +41,7 @@ class Base extends CoreBase {
41
41
  if (!Base.initialTokenRequestSent) {
42
42
  Base.initialTokenRequestSent = true;
43
43
 
44
- setTimeout(() => {
44
+ me.timeout(Neo.config.environment === 'development' ? 0 : 200).then(() => {
45
45
  Neo.main.addon.LocalStorage.readLocalStorageItem({
46
46
  key: LOCAL_STORAGE_KEY
47
47
  }).then(data => {
@@ -52,14 +52,14 @@ class Base extends CoreBase {
52
52
  }
53
53
 
54
54
  me.onReady(token);
55
- Base.fire('ready', token);
56
- });
57
- }, Neo.config.environment === 'development' ? 0 : 200);
55
+ Base.fire('ready', token)
56
+ })
57
+ })
58
58
  } else {
59
59
  Base.on({
60
60
  ready: me.onReady,
61
61
  scope: me
62
- });
62
+ })
63
63
  }
64
64
  }
65
65
 
@@ -228,12 +228,12 @@ class MainContainerController extends ComponentController {
228
228
  value: userData.token
229
229
  }).then(() => {
230
230
  // wait until the header vdom-update is done to avoid showing sign up & sign in twice
231
- setTimeout(() => {
231
+ this.timeout(50).then(() => {
232
232
  Neo.Main.setRoute({
233
233
  value: '/'
234
- });
235
- }, 50);
236
- });
234
+ })
235
+ })
236
+ })
237
237
  }
238
238
 
239
239
  /**
@@ -246,12 +246,12 @@ class MainContainerController extends ComponentController {
246
246
  key: LOCAL_STORAGE_KEY
247
247
  }).then(() => {
248
248
  // wait until the header vdom-update is done to avoid showing sign up & sign in twice
249
- setTimeout(() => {
249
+ this.timeout(50).then(() => {
250
250
  Neo.Main.setRoute({
251
251
  value: '/'
252
- });
253
- }, 50);
254
- });
252
+ })
253
+ })
254
+ })
255
255
  }
256
256
 
257
257
  /**
@@ -303,9 +303,9 @@ class MainContainerController extends ComponentController {
303
303
  }*/
304
304
 
305
305
  // short delay to ensure the new card already got added
306
- setTimeout(() => {
307
- cards.layout.activeIndex = cards.indexOf(newView);
308
- }, 100);
306
+ me.timeout(100).then(() => {
307
+ cards.layout.activeIndex = cards.indexOf(newView)
308
+ });
309
309
 
310
310
  switch (newView.reference) {
311
311
  case 'gallery':
@@ -93,10 +93,12 @@ class Gallery extends BaseGallery {
93
93
  onStoreLoad(items) {
94
94
  super.onStoreLoad(items);
95
95
 
96
- setTimeout(() => {
97
- this.selectOnMount = true;
98
- this.afterSetMounted(true, false);
99
- }, 200);
96
+ let me = this;
97
+
98
+ me.timeout(200).then(() => {
99
+ me.selectOnMount = true;
100
+ me.afterSetMounted(true, false)
101
+ })
100
102
  }
101
103
  }
102
104
 
@@ -237,11 +237,11 @@ class MainContainerController extends ComponentController {
237
237
  .catch(err => console.log('Can’t access ' + me.apiSummaryUrl, err))
238
238
  .then(data => me.applySummaryData(data));
239
239
 
240
- setTimeout(() => {
240
+ me.timeout(2000).then(() => {
241
241
  if (!me.summaryData) {
242
- me.onLoadSummaryDataFail();
242
+ me.onLoadSummaryDataFail()
243
243
  }
244
- }, 2000);
244
+ })
245
245
  }
246
246
 
247
247
  /**
@@ -293,11 +293,10 @@ class MainContainerController extends ComponentController {
293
293
  parentView.remove(view, false);
294
294
 
295
295
  Neo.apps[name].on('render', () => {
296
- setTimeout(() => {
297
- me.getMainView(name).add(view);
298
- }, 100);
299
- });
300
-
296
+ me.timeout(100).then(() => {
297
+ me.getMainView(name).add(view)
298
+ })
299
+ })
301
300
  }
302
301
  }
303
302
 
@@ -439,11 +438,11 @@ class MainContainerController extends ComponentController {
439
438
  me.activeMainTabIndex = activeIndex;
440
439
 
441
440
  if (!activeView) {
442
- setTimeout(() => {
443
- me.onHashChange(value, oldValue);
444
- }, 10);
441
+ me.timeout(10).then(() => {
442
+ me.onHashChange(value, oldValue)
443
+ })
445
444
 
446
- return;
445
+ return
447
446
  }
448
447
 
449
448
  me.getModel().setData({
@@ -175,7 +175,7 @@ class TableContainer extends Container {
175
175
  ...me.tableConfig
176
176
  });
177
177
 
178
- me.items[0].items.push(me.table);
178
+ me.items[0].items.push(me.table)
179
179
  }
180
180
 
181
181
  /**
@@ -185,16 +185,18 @@ class TableContainer extends Container {
185
185
  * @protected
186
186
  */
187
187
  afterSetCountryRecord(value, oldValue) {
188
- setTimeout(() => {
189
- this.controller.onCountryChange(value);
190
- }, this.isConstructed ? 0 : 50);
188
+ let me = this;
189
+
190
+ me.timeout(me.isConstructed ? 0 : 50).then(() => {
191
+ me.controller.onCountryChange(value)
192
+ })
191
193
  }
192
194
 
193
195
  /**
194
196
  *
195
197
  */
196
198
  storeReferences() {
197
- this.controller.storeReferences();
199
+ this.controller.storeReferences()
198
200
  }
199
201
  }
200
202
 
@@ -162,10 +162,12 @@ class CountryGallery extends Gallery {
162
162
  onStoreLoad(items) {
163
163
  super.onStoreLoad(items);
164
164
 
165
- setTimeout(() => {
166
- this.selectOnMount = true;
167
- this.afterSetMounted(true, false);
168
- }, 400);
165
+ let me = this;
166
+
167
+ me.timeout(400).then(() => {
168
+ me.selectOnMount = true;
169
+ me.afterSetMounted(true, false)
170
+ })
169
171
  }
170
172
  }
171
173
 
@@ -265,7 +265,7 @@ class MainContainerController extends ComponentController {
265
265
 
266
266
  if (dialog.appName === dragEndWindowAppName) {
267
267
  dragEndWindowAppName = me.component.appName;
268
- side = me.getOppositeSide(me.dockedWindowSide);
268
+ side = me.getOppositeSide(me.dockedWindowSide)
269
269
  }
270
270
 
271
271
  proxyPosition = me.getProxyPosition(data.proxyRect, side, data.fullyIncludeIntoWindow);
@@ -274,12 +274,12 @@ class MainContainerController extends ComponentController {
274
274
 
275
275
  // we need a delay to ensure dialog.Base: onDragEnd() is done.
276
276
  // we could use the dragEnd event of the dragZone instead.
277
- setTimeout(() => {
277
+ me.timeout(70).then(() => {
278
278
  dialog.appName = dialog.appName === dragEndWindowAppName ? appName : dragEndWindowAppName;
279
279
 
280
280
  me.getOpenDialogButtons().forEach(button => {
281
281
  if (button.appName === dialog.appName) {
282
- dialog.animateTargetId = button.id;
282
+ dialog.animateTargetId = button.id
283
283
  }
284
284
  });
285
285
 
@@ -292,8 +292,8 @@ class MainContainerController extends ComponentController {
292
292
 
293
293
  me.destroyDockedWindowProxy();
294
294
 
295
- dialog.mount();
296
- }, 70);
295
+ dialog.mount()
296
+ })
297
297
  }
298
298
 
299
299
  /**
@@ -9,7 +9,6 @@
9
9
  "RealWorld",
10
10
  "RealWorld2",
11
11
  "SharedCovid",
12
- "SharedDialog",
13
- "Website"
12
+ "SharedDialog"
14
13
  ]
15
14
  }
@@ -315,28 +315,28 @@ class MembersList extends Base {
315
315
  tag : 'code',
316
316
  html: example
317
317
  }]
318
- });
319
- });
318
+ })
319
+ })
320
320
  }
321
321
 
322
322
  if (item.params?.length > 0) {
323
- itemConfig.cn.push(MembersList.createParametersTable(item.params));
323
+ itemConfig.cn.push(MembersList.createParametersTable(item.params))
324
324
  }
325
325
 
326
326
  if (item.returns?.[0].type && item.kind !== 'event') {
327
327
  itemConfig.cn.push({
328
328
  innerHTML: 'Returns {' + MembersList.escapeHtml(item.returns[0].type.names.join('|') + '} ') + (item.returns[0].description || '')
329
- });
329
+ })
330
330
  }
331
331
 
332
- vdom.cn.push(itemConfig);
332
+ vdom.cn.push(itemConfig)
333
333
  });
334
334
 
335
335
  me.update();
336
336
 
337
- setTimeout(() => {
338
- Neo.main.addon.HighlightJS.syntaxHighlightInit();
339
- }, 100)
337
+ me.timeout(100).then(() => {
338
+ Neo.main.addon.HighlightJS.syntaxHighlightInit()
339
+ })
340
340
  }
341
341
 
342
342
  /**
@@ -79,9 +79,9 @@ class SourceViewComponent extends Component {
79
79
  afterSetMounted(value, oldValue) {
80
80
  super.afterSetMounted(value, oldValue);
81
81
 
82
- value && setTimeout(() => {
83
- this.syntaxHighlight();
84
- }, 50);
82
+ value && this.timeout(50).then(() => {
83
+ this.syntaxHighlight()
84
+ })
85
85
  }
86
86
 
87
87
  /**
@@ -94,14 +94,14 @@ class SourceViewComponent extends Component {
94
94
  if (value) {
95
95
  let me = this;
96
96
 
97
- setTimeout(() => {
97
+ me.timeout(50).then(() => {
98
98
  Neo.main.addon.HighlightJS.syntaxHighlightLine({
99
99
  addLine : me.line,
100
100
  appName : me.appName,
101
101
  removeLine: me.previousLine,
102
102
  vnodeId : me.vdom.cn[0].cn[0].id
103
- });
104
- }, 50)
103
+ })
104
+ })
105
105
  }
106
106
  }
107
107