neo.mjs 6.9.11 → 6.10.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 (64) hide show
  1. package/BACKERS.md +0 -30
  2. package/apps/ServiceWorker.mjs +2 -2
  3. package/apps/learnneo/index.html +7 -2
  4. package/apps/learnneo/neo-config.json +1 -4
  5. package/apps/learnneo/view/LivePreview.mjs +171 -0
  6. package/apps/learnneo/view/Viewport.mjs +11 -4
  7. package/apps/learnneo/view/ViewportController.mjs +2 -2
  8. package/apps/learnneo/view/home/ContentTreeList.mjs +93 -5
  9. package/apps/learnneo/view/home/MainContainer.mjs +16 -16
  10. package/apps/learnneo/view/home/MainContainerController.mjs +5 -20
  11. package/apps/learnneo/view/home/MainContainerModel.mjs +3 -5
  12. package/apps/newwebsite/index.html +3 -0
  13. package/buildScripts/convertDesignTokens.mjs +173 -0
  14. package/examples/ServiceWorker.mjs +2 -2
  15. package/package.json +5 -8
  16. package/resources/data/deck/learnneo/p/2023-10-01T18-29-19-158Z.md +14 -16
  17. package/resources/data/deck/learnneo/p/2023-10-07T19-18-28-517Z.md +9 -17
  18. package/resources/data/deck/learnneo/p/2023-10-08T20-20-07-934Z.md +7 -5
  19. package/resources/data/deck/learnneo/p/2023-10-08T20-20-37-336Z.md +17 -10
  20. package/resources/data/deck/learnneo/p/2023-10-14T19-25-08-153Z.md +18 -22
  21. package/resources/data/deck/learnneo/p/2023-10-31T13-59-37-550Z.md +31 -0
  22. package/resources/data/deck/learnneo/p/MainThreadAddonExample.md +15 -0
  23. package/resources/data/deck/learnneo/p/MainThreadAddonIntro.md +46 -0
  24. package/resources/data/deck/learnneo/p/TestLivePreview.md +10 -0
  25. package/resources/data/deck/learnneo/p/stylesheet.md +22 -8
  26. package/resources/data/deck/learnneo/t.json +126 -56
  27. package/resources/data/deck/training/p/2023-01-10T02-21-54-303Z.md +1 -1
  28. package/resources/data/deck/training/t.json +1276 -1
  29. package/resources/design-tokens/json/component.json +288 -0
  30. package/resources/design-tokens/json/core.json +352 -0
  31. package/resources/design-tokens/json/semantic.json +231 -0
  32. package/resources/images/logos/Github-logo-black.svg +1 -0
  33. package/resources/images/logos/Slack-logo-black.svg +17 -0
  34. package/resources/scss/src/apps/learnneo/Viewport.scss +3 -0
  35. package/resources/scss/src/apps/learnneo/home/ContentTreeList.scss +60 -13
  36. package/resources/scss/src/apps/learnneo/home/ContentView.scss +11 -2
  37. package/resources/scss/src/apps/newwebsite/MainContainer.scss +14 -15
  38. package/resources/scss/src/list/Base.scss +4 -0
  39. package/resources/scss/theme-neo-light/Global.scss +36 -16
  40. package/resources/scss/theme-neo-light/button/Base.scss +46 -45
  41. package/resources/scss/theme-neo-light/design-tokens/Component.scss +66 -1
  42. package/resources/scss/theme-neo-light/design-tokens/Core.scss +66 -5
  43. package/resources/scss/theme-neo-light/design-tokens/Semantic.scss +64 -0
  44. package/resources/scss/theme-neo-light/list/Base.scss +27 -6
  45. package/resources/scss/theme-neo-light/tab/header/Button.scss +1 -1
  46. package/src/DefaultConfig.mjs +2 -2
  47. package/src/component/StatusBadge.mjs +194 -246
  48. package/src/component/Video.mjs +19 -25
  49. package/src/controller/Base.mjs +33 -26
  50. package/src/core/Base.mjs +2 -2
  51. package/src/data/connection/Xhr.mjs +1 -1
  52. package/src/form/field/TextArea.mjs +3 -3
  53. package/src/main/DomAccess.mjs +64 -70
  54. package/src/main/DomEvents.mjs +1 -1
  55. package/src/main/addon/HighlightJS.mjs +16 -1
  56. package/src/main/addon/Mwc.mjs +6 -1
  57. package/src/worker/Manager.mjs +8 -3
  58. package/examples/container/dialog/MainContainer.mjs +0 -68
  59. package/examples/container/dialog/MainContainerController.mjs +0 -84
  60. package/examples/container/dialog/app.mjs +0 -6
  61. package/examples/container/dialog/index.html +0 -11
  62. package/examples/container/dialog/neo-config.json +0 -7
  63. package/src/container/Dialog.mjs +0 -205
  64. package/src/main/addon/Dialog.mjs +0 -68
@@ -27,16 +27,16 @@ class Video extends BaseComponent {
27
27
  baseCls: ['neo-video'],
28
28
  /**
29
29
  * Current state of the video
30
- * @member {Boolean} playing=false
30
+ * @member {Boolean} playing_=false
31
31
  */
32
32
  playing_: false,
33
33
  /**
34
34
  * Type of the video
35
- * @member {Boolean} type='video/mp4'
35
+ * @member {String} type='video/mp4'
36
36
  */
37
37
  type: 'video/mp4',
38
38
  /*
39
- * @member {String} url=null
39
+ * @member {String|null} url_=null
40
40
  */
41
41
  url_: null,
42
42
  /**
@@ -70,18 +70,12 @@ class Video extends BaseComponent {
70
70
  construct(config) {
71
71
  super.construct(config);
72
72
 
73
- let me = this,
74
- domListeners = me.domListeners;
73
+ let me = this;
75
74
 
76
- domListeners.push({
77
- click : me.play,
78
- delegate: '.neo-video-ghost'
79
- }, {
80
- click : me.pause,
81
- delegate: '.neo-video-media'
82
- });
83
-
84
- me.domListeners = domListeners;
75
+ me.addDomListeners(
76
+ {click: me.play, delegate: '.neo-video-ghost'},
77
+ {click: me.pause, delegate: '.neo-video-media'}
78
+ )
85
79
  }
86
80
 
87
81
  /**
@@ -93,10 +87,10 @@ class Video extends BaseComponent {
93
87
  */
94
88
  beforeSetPlaying(value, oldValue) {
95
89
  if (!Neo.isBoolean(value)) {
96
- return oldValue;
90
+ return oldValue
97
91
  }
98
92
 
99
- return value;
93
+ return value
100
94
  }
101
95
 
102
96
  /**
@@ -112,7 +106,7 @@ class Video extends BaseComponent {
112
106
  ghost.removeDom = value;
113
107
  media.removeDom = !value;
114
108
 
115
- this.vdom = vdom;
109
+ this.vdom = vdom
116
110
  }
117
111
 
118
112
  /**
@@ -124,7 +118,7 @@ class Video extends BaseComponent {
124
118
  */
125
119
  afterSetUrl(value, oldValue) {
126
120
  if (!value) {
127
- return;
121
+ return
128
122
  }
129
123
 
130
124
  const me = this;
@@ -137,21 +131,21 @@ class Video extends BaseComponent {
137
131
  type: me.type
138
132
  }];
139
133
 
140
- me.vdom = vdom;
134
+ me.vdom = vdom
141
135
  }
142
136
 
143
137
  /**
144
- * Clicked ghost
138
+ * Clicked media
145
139
  */
146
- play() {
147
- this.playing = true;
140
+ pause() {
141
+ this.playing = false
148
142
  }
149
143
 
150
144
  /**
151
- * Clicked media
145
+ * Clicked ghost
152
146
  */
153
- pause() {
154
- this.playing = false;
147
+ play() {
148
+ this.playing = true
155
149
  }
156
150
  }
157
151
 
@@ -22,7 +22,7 @@ class Base extends CoreBase {
22
22
  */
23
23
  ntype: 'controller',
24
24
  /**
25
- * @member {String} defaultRoute=undefined
25
+ * @member {String|null} defaultRoute=null
26
26
  */
27
27
  defaultRoute: null,
28
28
  /**
@@ -37,7 +37,7 @@ class Base extends CoreBase {
37
37
  * '/users/{userId}/posts/{postId}': 'handlePostRoute',
38
38
  * 'default' : 'handleOtherRoutes'
39
39
  * }
40
- * @member {Object} routes={}
40
+ * @member {Object} routes_={}
41
41
  */
42
42
  routes_: {}
43
43
  }
@@ -51,7 +51,7 @@ class Base extends CoreBase {
51
51
  HashHistory.on('change', this.onHashChange, this)
52
52
  }
53
53
 
54
- /**
54
+ /**
55
55
  * Triggered after the routes config got changed
56
56
  * @param {Object} value
57
57
  * @param {Object} oldValue
@@ -83,7 +83,7 @@ class Base extends CoreBase {
83
83
  destroy(...args) {
84
84
  HashHistory.un('change', this.onHashChange, this);
85
85
 
86
- super.destroy(...args);
86
+ super.destroy(...args)
87
87
  }
88
88
 
89
89
  /**
@@ -100,58 +100,65 @@ class Base extends CoreBase {
100
100
  * @param {Object} value
101
101
  * @param {Object} oldValue
102
102
  */
103
- onHashChange(value, oldValue) {
103
+ async onHashChange(value, oldValue) {
104
104
  let me = this,
105
+ counter = 0,
105
106
  hasRouteBeenFound = false,
106
107
  handleRoutes = me.handleRoutes,
107
108
  routeKeys = Object.keys(handleRoutes),
109
+ routeKeysLength = routeKeys.length,
108
110
  routes = me.routes,
109
- handler, preHandler, responsePreHandler, result, route;
111
+ handler, key, paramObject, preHandler, responsePreHandler, result, route;
110
112
 
111
- routeKeys.forEach(key => {
113
+ while (routeKeysLength > 0 && counter < routeKeysLength && !hasRouteBeenFound) {
114
+ key = routeKeys[counter];
112
115
  handler = null;
113
116
  preHandler = null;
114
117
  responsePreHandler = null;
115
-
116
- result = value.hashString.match(handleRoutes[key]);
118
+ paramObject = {};
119
+ result = value.hashString.match(handleRoutes[key]);
117
120
 
118
121
  if (result) {
119
122
  const
120
123
  arrayParamIds = key.match(routeParamRegex),
121
- arrayParamValues = result.splice(1, result.length - 1),
122
- paramObject = {};
124
+ arrayParamValues = result.splice(1, result.length - 1);
123
125
 
124
126
  if (arrayParamIds && arrayParamIds.length !== arrayParamValues.length) {
125
- throw 'Number of IDs and number of Values do not match';
127
+ throw 'Number of IDs and number of Values do not match'
126
128
  }
127
129
 
128
130
  for (let i = 0; arrayParamIds && i < arrayParamIds.length; i++) {
129
- paramObject[arrayParamIds[i].substring(1, arrayParamIds[i].length - 1)] = arrayParamValues[i];
131
+ paramObject[arrayParamIds[i].substring(1, arrayParamIds[i].length - 1)] = arrayParamValues[i]
130
132
  }
131
133
 
132
134
  route = routes[key];
133
135
 
134
136
  if (Neo.isString(route)) {
135
137
  handler = route;
136
- responsePreHandler = true;
138
+ responsePreHandler = true
137
139
  } else if (Neo.isObject(route)) {
138
140
  handler = route.handler;
139
- preHandler = route.preHandler;
140
-
141
- if (preHandler) {
142
- responsePreHandler = me[preHandler]?.call(me, paramObject, value, oldValue);
143
- } else {
144
- responsePreHandler = true;
145
- }
141
+ preHandler = route.preHandler
146
142
  }
147
143
 
148
- hasRouteBeenFound = true;
144
+ hasRouteBeenFound = true
145
+ }
149
146
 
150
- if (responsePreHandler) {
151
- me[handler]?.call(me, paramObject, value, oldValue)
152
- }
147
+ counter++
148
+ }
149
+
150
+ // execute
151
+ if (hasRouteBeenFound) {
152
+ if (preHandler) {
153
+ responsePreHandler = await me[preHandler]?.call(me, paramObject, value, oldValue)
154
+ } else {
155
+ responsePreHandler = true
153
156
  }
154
- });
157
+
158
+ if (responsePreHandler) {
159
+ await me[handler]?.call(me, paramObject, value, oldValue)
160
+ }
161
+ }
155
162
 
156
163
  if (routeKeys.length > 0 && !hasRouteBeenFound) {
157
164
  if (me.defaultRoute) {
package/src/core/Base.mjs CHANGED
@@ -216,7 +216,7 @@ class Base {
216
216
 
217
217
  if (cls[item]) {
218
218
  // add to overwrittenMethods
219
- cls.constructor.overwrittenMethods[item] = cls[item];
219
+ cls.constructor.overwrittenMethods[item] = cls[item]
220
220
  }
221
221
  }
222
222
  }
@@ -471,7 +471,7 @@ class Base {
471
471
  // The hasOwnProperty check is intended for configs without a trailing underscore
472
472
  // => they could already have been assigned inside an afterSet-method
473
473
  if (forceAssign || !me.hasOwnProperty(keys[0])) {
474
- me[keys[0]] = me[configSymbol][keys[0]];
474
+ me[keys[0]] = me[configSymbol][keys[0]]
475
475
  }
476
476
 
477
477
  // there is a delete-call inside the config getter as well (Neo.mjs => autoGenerateGetSet())
@@ -169,7 +169,7 @@ class Xhr extends Base {
169
169
  if (!opts.url) {
170
170
  console.error('Neo.Xhr.request without a given url' + JSON.stringify(opts));
171
171
  } else {
172
- if (!opts.insideNeo && location.href.includes('/node_modules/neo.mjs/') && !location.href.startsWith('https://neomjs.github.io/')) {
172
+ if (!opts.insideNeo && location.href.includes('/node_modules/neo.mjs/') && !location.href.startsWith('https://neomjs.com/')) {
173
173
  if (opts.url.startsWith('./') || opts.url.startsWith('../')) {
174
174
  opts.url = '../../' + opts.url;
175
175
  }
@@ -32,7 +32,7 @@ class TextArea extends Text {
32
32
  * any height of text. Bounds can be set using the `minHeight` and `maxHeight` settings.
33
33
  * @member {Boolean} autoGrow=false
34
34
  */
35
- autoGrow_ : false,
35
+ autoGrow_: false,
36
36
  /**
37
37
  * @member {String[]} baseCls=['neo-textarea','neo-textfield']
38
38
  */
@@ -75,7 +75,7 @@ class TextArea extends Text {
75
75
  }
76
76
 
77
77
  afterSetAutoGrow(autoGrow) {
78
- this.syncAutoGrowMonitor();
78
+ autoGrow && this.syncAutoGrowMonitor();
79
79
 
80
80
  // Restore any configured height if autoGrow turned off
81
81
  if (!autoGrow) {
@@ -176,7 +176,7 @@ class TextArea extends Text {
176
176
  }
177
177
 
178
178
  async syncAutoGrowMonitor() {
179
- if (this.mounted) {
179
+ if (this.mounted && this.autoGrow) {
180
180
  // Delegate monitoring of sizes to the VDOM thread.
181
181
  Neo.main.DomAccess.monitorAutoGrow({
182
182
  appName : this.appName,