neo.mjs 6.9.4 → 6.9.5

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.
@@ -20,9 +20,9 @@ class ServiceWorker extends ServiceBase {
20
20
  */
21
21
  singleton: true,
22
22
  /**
23
- * @member {String} version='6.9.4'
23
+ * @member {String} version='6.9.5'
24
24
  */
25
- version: '6.9.4'
25
+ version: '6.9.5'
26
26
  }
27
27
 
28
28
  /**
@@ -20,9 +20,9 @@ class ServiceWorker extends ServiceBase {
20
20
  */
21
21
  singleton: true,
22
22
  /**
23
- * @member {String} version='6.9.4'
23
+ * @member {String} version='6.9.5'
24
24
  */
25
- version: '6.9.4'
25
+ version: '6.9.5'
26
26
  }
27
27
 
28
28
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "neo.mjs",
3
- "version": "6.9.4",
3
+ "version": "6.9.5",
4
4
  "description": "The webworkers driven UI framework",
5
5
  "type": "module",
6
6
  "repository": {
@@ -236,12 +236,12 @@ const DefaultConfig = {
236
236
  useVdomWorker: true,
237
237
  /**
238
238
  * buildScripts/injectPackageVersion.mjs will update this value
239
- * @default '6.9.4'
239
+ * @default '6.9.5'
240
240
  * @memberOf! module:Neo
241
241
  * @name config.version
242
242
  * @type String
243
243
  */
244
- version: '6.9.4'
244
+ version: '6.9.5'
245
245
  };
246
246
 
247
247
  Object.assign(DefaultConfig, {
package/src/Neo.mjs CHANGED
@@ -380,20 +380,25 @@ Neo = globalThis.Neo = Object.assign({
380
380
  * @memberOf module:Neo
381
381
  * @param {Object} target
382
382
  * @param {Object} source
383
+ * @param {Object} defaults
383
384
  * @returns {Object} target
384
385
  */
385
- merge(target, source) {
386
+ merge(target, source, defaults) {
387
+ if (defaults) {
388
+ return Neo.merge(Neo.merge(target, defaults), source)
389
+ }
390
+
386
391
  for (const key in source) {
387
392
  const value = source[key];
388
393
 
389
394
  if (Neo.typeOf(value) === 'Object') {
390
- target[key] = Neo.merge(target[key] || {}, value);
395
+ target[key] = Neo.merge(target[key] || {}, value)
391
396
  } else {
392
- target[key] = value;
397
+ target[key] = value
393
398
  }
394
399
  }
395
400
 
396
- return target;
401
+ return target
397
402
  },
398
403
 
399
404
  /**
@@ -996,8 +996,9 @@ class Base extends CoreBase {
996
996
  edgeAlign: value
997
997
  }
998
998
  }
999
+
999
1000
  // merge the incoming alignment specification into the configured default
1000
- return Neo.merge(Neo.merge({}, me.constructor.config.align), value)
1001
+ return Neo.merge({}, value, me.constructor.config.align)
1001
1002
  }
1002
1003
 
1003
1004
  /**
package/src/core/Base.mjs CHANGED
@@ -71,6 +71,12 @@ class Base {
71
71
  * @protected
72
72
  */
73
73
  ntype: 'base',
74
+ /**
75
+ * While it is recommended to change the static delayable configs on class level,
76
+ * you can change it on instance level too. If not null, we will do a deep merge.
77
+ * @member {Object} delayable=null
78
+ */
79
+ delayable: null,
74
80
  /**
75
81
  * The unique component id
76
82
  * @member {String|null} id_=null
@@ -178,9 +184,11 @@ class Base {
178
184
  * Adjusts all methods inside static delayable
179
185
  */
180
186
  applyDelayable() {
181
- let me = this;
187
+ let me = this,
188
+ ctorDelayable = me.constructor.delayable,
189
+ delayable = me.delayable ? Neo.merge({}, me.delayable, ctorDelayable) : ctorDelayable;
182
190
 
183
- Object.entries(me.constructor.delayable).forEach(([key, value]) => {
191
+ Object.entries(delayable).forEach(([key, value]) => {
184
192
  let map = {
185
193
  debounce() {me[key] = new debounce(me[key], me, value.timer)},
186
194
  throttle() {me[key] = new throttle(me[key], me, value.timer)}