neo.mjs 3.2.3 → 3.2.6

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 (39) hide show
  1. package/apps/ServiceWorker.mjs +36 -0
  2. package/apps/covid/view/country/Gallery.mjs +11 -11
  3. package/apps/realworld2/view/article/Gallery.mjs +8 -8
  4. package/apps/sharedcovid/view/country/Gallery.mjs +11 -11
  5. package/buildScripts/webpack/buildThreads.mjs +7 -6
  6. package/buildScripts/webpack/json/build.json +4 -0
  7. package/examples/ServiceWorker.mjs +36 -0
  8. package/examples/component/coronaGallery/CountryGallery.mjs +12 -12
  9. package/examples/component/coronaGallery/CountryModel.mjs +8 -2
  10. package/examples/component/coronaGallery/CountryStore.mjs +12 -2
  11. package/examples/component/coronaGallery/MainContainer.mjs +3 -6
  12. package/examples/component/gallery/ImageModel.mjs +38 -0
  13. package/examples/component/gallery/ImageStore.mjs +32 -0
  14. package/examples/component/gallery/MainContainer.mjs +2 -0
  15. package/examples/component/helix/ImageModel.mjs +38 -0
  16. package/examples/component/helix/ImageStore.mjs +32 -0
  17. package/examples/component/helix/MainContainer.mjs +2 -0
  18. package/examples/component/helix/neo-config.json +2 -1
  19. package/examples/list/animate/MainStore.mjs +1 -1
  20. package/package.json +6 -6
  21. package/resources/scss/src/apps/covid/country/Gallery.scss +2 -1
  22. package/resources/scss/src/component/Gallery.scss +2 -1
  23. package/resources/scss/src/component/Helix.scss +7 -1
  24. package/resources/scss/src/examples/component/coronaGallery/CountryGallery.scss +2 -1
  25. package/src/DefaultConfig.mjs +10 -1
  26. package/src/Main.mjs +16 -12
  27. package/src/calendar/view/MainContainer.mjs +1 -1
  28. package/src/calendar/view/month/Component.mjs +8 -21
  29. package/src/component/Circle.mjs +39 -16
  30. package/src/component/Gallery.mjs +86 -112
  31. package/src/component/Helix.mjs +26 -40
  32. package/src/list/Base.mjs +2 -2
  33. package/src/main/addon/ServiceWorker.mjs +68 -0
  34. package/src/selection/CircleModel.mjs +3 -3
  35. package/src/selection/ListModel.mjs +2 -2
  36. package/src/worker/App.mjs +14 -18
  37. package/src/worker/Manager.mjs +10 -1
  38. package/src/worker/ServiceBase.mjs +298 -0
  39. package/src/worker/mixin/RemoteMethodAccess.mjs +1 -1
@@ -0,0 +1,36 @@
1
+ import Neo from '../src/Neo.mjs';
2
+ import * as core from '../src/core/_export.mjs';
3
+ import ServiceBase from '../src/worker/ServiceBase.mjs';
4
+
5
+ /**
6
+ * @class Neo.ServiceWorker
7
+ * @extends Neo.worker.ServiceBase
8
+ * @singleton
9
+ */
10
+ class ServiceWorker extends ServiceBase {
11
+ static getConfig() {return {
12
+ /**
13
+ * @member {String} className='Neo.ServiceWorker'
14
+ * @protected
15
+ */
16
+ className: 'Neo.ServiceWorker',
17
+ /**
18
+ * @member {Boolean} singleton=true
19
+ * @protected
20
+ */
21
+ singleton: true,
22
+ /**
23
+ * @member {String} workerId='service'
24
+ * @protected
25
+ */
26
+ workerId: 'service'
27
+ }}
28
+ }
29
+
30
+ Neo.applyClassConfig(ServiceWorker);
31
+
32
+ let instance = Neo.create(ServiceWorker);
33
+
34
+ Neo.applyToGlobalNs(instance);
35
+
36
+ export default instance;
@@ -28,15 +28,10 @@ class CountryGallery extends Gallery {
28
28
  */
29
29
  country_: null,
30
30
  /**
31
- * The image height of the gallery
32
- * @member {Number} imageHeight=240
31
+ * The item height of the gallery
32
+ * @member {Number} itemHeight=240
33
33
  */
34
- imageHeight: 280,
35
- /**
36
- * The image width of the gallery
37
- * @member {Number} imageWidth=320
38
- */
39
- imageWidth: 340,
34
+ itemHeight: 280,
40
35
  /**
41
36
  * @member {Object} itemTpl_
42
37
  */
@@ -74,6 +69,11 @@ class CountryGallery extends Gallery {
74
69
  ]}
75
70
  ]}
76
71
  ]},
72
+ /**
73
+ * The item width of the gallery
74
+ * @member {Number} itemWidth=320
75
+ */
76
+ itemWidth: 340,
77
77
  /**
78
78
  * The unique record field containing the id.
79
79
  * @member {String} keyProperty='id'
@@ -121,10 +121,10 @@ class CountryGallery extends Gallery {
121
121
 
122
122
  vdomItem.id = me.getItemVnodeId(record[me.keyProperty]);
123
123
 
124
- vdomItem.cn[0].style.height = me.imageHeight + 'px';
124
+ vdomItem.cn[0].style.height = me.itemHeight + 'px';
125
125
 
126
- firstChild.style.height = (me.imageHeight - 70) + 'px';
127
- firstChild.style.width = me.imageWidth + 'px';
126
+ firstChild.style.height = (me.itemHeight - 70) + 'px';
127
+ firstChild.style.width = me.itemWidth + 'px';
128
128
 
129
129
  firstChild.cn[0].cn[0].src = Util.getCountryFlagUrl(record.country);
130
130
  firstChild.cn[0].cn[1].html = record.country;
@@ -17,15 +17,15 @@ class Gallery extends BaseGallery {
17
17
  */
18
18
  cls: ['rw2-article-gallery', 'neo-gallery', 'page', 'view'],
19
19
  /**
20
- * The image height of the gallery
21
- * @member {Number} imageHeight=240
20
+ * The item height of the gallery
21
+ * @member {Number} itemHeight=240
22
22
  */
23
- imageHeight: 240,
23
+ itemHeight: 240,
24
24
  /**
25
- * The image width of the gallery
26
- * @member {Number} imageWidth=320
25
+ * The item width of the gallery
26
+ * @member {Number} itemWidth=320
27
27
  */
28
- imageWidth: 320,
28
+ itemWidth: 320,
29
29
  /**
30
30
  * Array containing the PreviewComponent references
31
31
  * @member {Array} items=[]
@@ -69,8 +69,8 @@ class Gallery extends BaseGallery {
69
69
  id : me.getItemVnodeId(record[me.keyProperty]),
70
70
  tabIndex: '-1',
71
71
  style: {
72
- height: me.imageHeight + 'px',
73
- width : me.imageWidth + 'px'
72
+ height: me.itemHeight + 'px',
73
+ width : me.itemWidth + 'px'
74
74
  },
75
75
  cn: [{
76
76
  cls: ['item-wrapper'],
@@ -28,15 +28,10 @@ class CountryGallery extends Gallery {
28
28
  */
29
29
  country_: null,
30
30
  /**
31
- * The image height of the gallery
32
- * @member {Number} imageHeight=240
31
+ * The item height of the gallery
32
+ * @member {Number} itemHeight=240
33
33
  */
34
- imageHeight: 280,
35
- /**
36
- * The image width of the gallery
37
- * @member {Number} imageWidth=320
38
- */
39
- imageWidth: 340,
34
+ itemHeight: 280,
40
35
  /**
41
36
  * @member {Object} itemTpl_
42
37
  */
@@ -94,6 +89,11 @@ class CountryGallery extends Gallery {
94
89
  }]
95
90
  }]
96
91
  },
92
+ /**
93
+ * The item width of the gallery
94
+ * @member {Number} itemWidth=320
95
+ */
96
+ itemWidth: 340,
97
97
  /**
98
98
  * The unique record field containing the id.
99
99
  * @member {String} keyProperty='id'
@@ -141,10 +141,10 @@ class CountryGallery extends Gallery {
141
141
 
142
142
  vdomItem.id = me.getItemVnodeId(record[me.keyProperty]);
143
143
 
144
- vdomItem.cn[0].style.height = me.imageHeight + 'px';
144
+ vdomItem.cn[0].style.height = me.itemHeight + 'px';
145
145
 
146
- firstChild.style.height = (me.imageHeight - 70) + 'px';
147
- firstChild.style.width = me.imageWidth + 'px';
146
+ firstChild.style.height = (me.itemHeight - 70) + 'px';
147
+ firstChild.style.width = me.itemWidth + 'px';
148
148
 
149
149
  firstChild.cn[0].cn[0].src = Util.getCountryFlagUrl(record.country);
150
150
  firstChild.cn[0].cn[1].html = record.country;
@@ -61,7 +61,7 @@ if (programOpts.info) {
61
61
  type : 'list',
62
62
  name : 'threads',
63
63
  message: 'Please choose the threads to build:',
64
- choices: ['all', 'app', 'canvas', 'data', 'main', 'vdom'],
64
+ choices: ['all', 'app', 'canvas', 'data', 'main', 'service', 'vdom'],
65
65
  default: 'all'
66
66
  });
67
67
  }
@@ -88,11 +88,12 @@ if (programOpts.info) {
88
88
  }
89
89
 
90
90
  function parseThreads(tPath) {
91
- (threads === 'all' || threads === 'main') && spawnSync(webpack, ['--config', `${tPath}.main.mjs`], cpOpts);
92
- (threads === 'all' || threads === 'app') && spawnSync(webpack, ['--config', `${tPath}.appworker.mjs`, `--env insideNeo=${insideNeo}`], cpOpts);
93
- (threads === 'all' || threads === 'canvas') && spawnSync(webpack, ['--config', `${tPath}.worker.mjs`, `--env insideNeo=${insideNeo} worker=canvas`], cpOpts);
94
- (threads === 'all' || threads === 'data') && spawnSync(webpack, ['--config', `${tPath}.worker.mjs`, `--env insideNeo=${insideNeo} worker=data`], cpOpts);
95
- (threads === 'all' || threads === 'vdom') && spawnSync(webpack, ['--config', `${tPath}.worker.mjs`, `--env insideNeo=${insideNeo} worker=vdom`], cpOpts);
91
+ (threads === 'all' || threads === 'main') && spawnSync(webpack, ['--config', `${tPath}.main.mjs`], cpOpts);
92
+ (threads === 'all' || threads === 'app') && spawnSync(webpack, ['--config', `${tPath}.appworker.mjs`, `--env insideNeo=${insideNeo}`], cpOpts);
93
+ (threads === 'all' || threads === 'canvas') && spawnSync(webpack, ['--config', `${tPath}.worker.mjs`, `--env insideNeo=${insideNeo} worker=canvas`], cpOpts);
94
+ (threads === 'all' || threads === 'data') && spawnSync(webpack, ['--config', `${tPath}.worker.mjs`, `--env insideNeo=${insideNeo} worker=data`], cpOpts);
95
+ (threads === 'all' || threads === 'service') && spawnSync(webpack, ['--config', `${tPath}.worker.mjs`, `--env insideNeo=${insideNeo} worker=service`], cpOpts);
96
+ (threads === 'all' || threads === 'vdom') && spawnSync(webpack, ['--config', `${tPath}.worker.mjs`, `--env insideNeo=${insideNeo} worker=vdom`], cpOpts);
96
97
  }
97
98
 
98
99
  // dist/development
@@ -14,6 +14,10 @@
14
14
  "input": "./src/worker/Data.mjs",
15
15
  "output": "dataworker.js"
16
16
  },
17
+ "service": {
18
+ "input": "./apps/ServiceWorker.mjs",
19
+ "output": "serviceworker.js"
20
+ },
17
21
  "vdom": {
18
22
  "input": "./src/worker/VDom.mjs",
19
23
  "output": "vdomworker.js"
@@ -0,0 +1,36 @@
1
+ import Neo from '../src/Neo.mjs';
2
+ import * as core from '../src/core/_export.mjs';
3
+ import ServiceBase from '../src/worker/ServiceBase.mjs';
4
+
5
+ /**
6
+ * @class Neo.ServiceWorker
7
+ * @extends Neo.worker.ServiceBase
8
+ * @singleton
9
+ */
10
+ class ServiceWorker extends ServiceBase {
11
+ static getConfig() {return {
12
+ /**
13
+ * @member {String} className='Neo.ServiceWorker'
14
+ * @protected
15
+ */
16
+ className: 'Neo.ServiceWorker',
17
+ /**
18
+ * @member {Boolean} singleton=true
19
+ * @protected
20
+ */
21
+ singleton: true,
22
+ /**
23
+ * @member {String} workerId='service'
24
+ * @protected
25
+ */
26
+ workerId: 'service'
27
+ }}
28
+ }
29
+
30
+ Neo.applyClassConfig(ServiceWorker);
31
+
32
+ let instance = Neo.create(ServiceWorker);
33
+
34
+ Neo.applyToGlobalNs(instance);
35
+
36
+ export default instance;
@@ -27,15 +27,10 @@ class CountryGallery extends Gallery {
27
27
  */
28
28
  cls: ['neo-country-gallery', 'neo-gallery', 'page', 'view'],
29
29
  /**
30
- * The image height of the gallery
31
- * @member {Number} imageHeight=240
30
+ * The item height of the gallery
31
+ * @member {Number} itemHeight=240
32
32
  */
33
- imageHeight: 280,
34
- /**
35
- * The image width of the gallery
36
- * @member {Number} imageWidth=320
37
- */
38
- imageWidth: 340,
33
+ itemHeight: 280,
39
34
  /**
40
35
  * @member {Object} itemTpl_
41
36
  */
@@ -73,6 +68,11 @@ class CountryGallery extends Gallery {
73
68
  ]}
74
69
  ]}
75
70
  ]},
71
+ /**
72
+ * The item width of the gallery
73
+ * @member {Number} itemWidth=320
74
+ */
75
+ itemWidth: 340,
76
76
  /**
77
77
  * The unique record field containing the id.
78
78
  * @member {String} keyProperty='id'
@@ -103,10 +103,10 @@ class CountryGallery extends Gallery {
103
103
 
104
104
  vdomItem.id = me.getItemVnodeId(record[me.keyProperty]);
105
105
 
106
- vdomItem.cn[0].style.height = me.imageHeight + 'px';
106
+ vdomItem.cn[0].style.height = me.itemHeight + 'px';
107
107
 
108
- firstChild.style.height = (me.imageHeight - 70) + 'px';
109
- firstChild.style.width = me.imageWidth + 'px';
108
+ firstChild.style.height = (me.itemHeight - 70) + 'px';
109
+ firstChild.style.width = me.itemWidth + 'px';
110
110
 
111
111
  firstChild.cn[0].cn[0].src = me.getCountryFlagUrl(record.country);
112
112
  firstChild.cn[0].cn[1].html = record.country;
@@ -184,7 +184,7 @@ class CountryGallery extends Gallery {
184
184
 
185
185
  imageName = map[imageName] || imageName;
186
186
 
187
- return 'https://raw.githubusercontent.com/neomjs/pages/master/resources/images/flaticon/country_flags/png/' + imageName + '.png'
187
+ return `https://raw.githubusercontent.com/neomjs/pages/master/resources/images/flaticon/country_flags/png/${imageName}.png`;
188
188
  }
189
189
 
190
190
  /**
@@ -1,4 +1,4 @@
1
- import Model from '../../../src/data/Model.mjs';
1
+ import Model from '../../../src/data/Model.mjs';
2
2
 
3
3
  /**
4
4
  * @class Neo.examples.component.coronaGallery.CountryModel
@@ -6,8 +6,14 @@ import Model from '../../../src/data/Model.mjs';
6
6
  */
7
7
  class CountryModel extends Model {
8
8
  static getConfig() {return {
9
+ /**
10
+ * @member {String} className='Neo.examples.component.coronaGallery.CountryModel'
11
+ * @protected
12
+ */
9
13
  className: 'Neo.examples.component.coronaGallery.CountryModel',
10
-
14
+ /**
15
+ * @member {Object[]} fields
16
+ */
11
17
  fields: [{
12
18
  name: 'cases',
13
19
  type: 'int'
@@ -7,9 +7,19 @@ import Store from '../../../src/data/Store.mjs';
7
7
  */
8
8
  class CountryStore extends Store {
9
9
  static getConfig() {return {
10
- className : 'Neo.examples.component.coronaGallery.CountryStore',
10
+ /**
11
+ * @member {String} className='Neo.examples.component.coronaGallery.CountryStore'
12
+ * @protected
13
+ */
14
+ className: 'Neo.examples.component.coronaGallery.CountryStore',
15
+ /**
16
+ * @member {String} keyProperty='country'
17
+ */
11
18
  keyProperty: 'country',
12
- model : CountryModel
19
+ /**
20
+ * @member {Neo.data.Model} model=CountryModel
21
+ */
22
+ model: CountryModel
13
23
  }}
14
24
  }
15
25
 
@@ -363,14 +363,11 @@ class MainContainer extends Viewport {
363
363
  }
364
364
  }
365
365
 
366
+ /**
367
+ * @param {Object[]} data
368
+ */
366
369
  addStoreItems(data) {
367
370
  this.getStore().data = data;
368
-
369
- setTimeout(() => {
370
- Neo.main.DomAccess.focus({
371
- id: this.gallery.id
372
- });
373
- }, 200);
374
371
  }
375
372
 
376
373
  /**
@@ -0,0 +1,38 @@
1
+ import Model from '../../../src/data/Model.mjs';
2
+
3
+ /**
4
+ * @class Neo.examples.component.gallery.ImageModel
5
+ * @extends Neo.data.Model
6
+ */
7
+ class ImageModel extends Model {
8
+ static getConfig() {return {
9
+ /**
10
+ * @member {String} className='Neo.examples.component.gallery.ImageModel'
11
+ * @protected
12
+ */
13
+ className: 'Neo.examples.component.gallery.ImageModel',
14
+ /**
15
+ * @member {Object[]} fields
16
+ */
17
+ fields: [{
18
+ name: 'firstname',
19
+ type: 'String'
20
+ }, {
21
+ name: 'id',
22
+ type: 'Integer'
23
+ }, {
24
+ name: 'image',
25
+ type: 'String'
26
+ }, {
27
+ name: 'isOnline',
28
+ type: 'Boolean'
29
+ }, {
30
+ name: 'lastname',
31
+ type: 'String'
32
+ }]
33
+ }}
34
+ }
35
+
36
+ Neo.applyClassConfig(ImageModel);
37
+
38
+ export default ImageModel;
@@ -0,0 +1,32 @@
1
+ import ImageModel from './ImageModel.mjs';
2
+ import Store from '../../../src/data/Store.mjs';
3
+
4
+ /**
5
+ * @class Neo.examples.component.gallery.ImageStore
6
+ * @extends Neo.data.Store
7
+ */
8
+ class ImageStore extends Store {
9
+ static getConfig() {return {
10
+ /**
11
+ * @member {String} className='Neo.examples.component.gallery.ImageModel'
12
+ * @protected
13
+ */
14
+ className: 'Neo.examples.component.gallery.ImageStore',
15
+ /**
16
+ * @member {Boolean} autoLoad=true
17
+ */
18
+ autoLoad: true,
19
+ /**
20
+ * @member {Neo.data.Model} model=ImageModel
21
+ */
22
+ model: ImageModel,
23
+ /**
24
+ * @member {String} url='../../resources/examples/data/ai_contacts.json'
25
+ */
26
+ url: '../../resources/examples/data/ai_contacts.json'
27
+ }}
28
+ }
29
+
30
+ Neo.applyClassConfig(ImageStore);
31
+
32
+ export default ImageStore;
@@ -1,4 +1,5 @@
1
1
  import Gallery from '../../../src/component/Gallery.mjs';
2
+ import ImageStore from './ImageStore.mjs';
2
3
  import NumberField from '../../../src/form/field/Number.mjs';
3
4
  import Panel from '../../../src/container/Panel.mjs';
4
5
  import RangeField from '../../../src/form/field/Range.mjs';
@@ -228,6 +229,7 @@ class MainContainer extends Viewport {
228
229
  me.gallery = Neo.create({
229
230
  module: Gallery,
230
231
  id : 'neo-gallery-1',
232
+ store : ImageStore,
231
233
  ...me.galleryConfig
232
234
  });
233
235
 
@@ -0,0 +1,38 @@
1
+ import Model from '../../../src/data/Model.mjs';
2
+
3
+ /**
4
+ * @class Neo.examples.component.helix.ImageModel
5
+ * @extends Neo.data.Model
6
+ */
7
+ class ImageModel extends Model {
8
+ static getConfig() {return {
9
+ /**
10
+ * @member {String} className='Neo.examples.component.helix.ImageModel'
11
+ * @protected
12
+ */
13
+ className: 'Neo.examples.component.helix.ImageModel',
14
+ /**
15
+ * @member {Object[]} fields
16
+ */
17
+ fields: [{
18
+ name: 'firstname',
19
+ type: 'String'
20
+ }, {
21
+ name: 'id',
22
+ type: 'Integer'
23
+ }, {
24
+ name: 'image',
25
+ type: 'String'
26
+ }, {
27
+ name: 'isOnline',
28
+ type: 'Boolean'
29
+ }, {
30
+ name: 'lastname',
31
+ type: 'String'
32
+ }]
33
+ }}
34
+ }
35
+
36
+ Neo.applyClassConfig(ImageModel);
37
+
38
+ export default ImageModel;
@@ -0,0 +1,32 @@
1
+ import ImageModel from './ImageModel.mjs';
2
+ import Store from '../../../src/data/Store.mjs';
3
+
4
+ /**
5
+ * @class Neo.examples.component.helix.ImageStore
6
+ * @extends Neo.data.Store
7
+ */
8
+ class ImageStore extends Store {
9
+ static getConfig() {return {
10
+ /**
11
+ * @member {String} className='Neo.examples.component.helix.ImageModel'
12
+ * @protected
13
+ */
14
+ className: 'Neo.examples.component.helix.ImageStore',
15
+ /**
16
+ * @member {Boolean} autoLoad=true
17
+ */
18
+ autoLoad: true,
19
+ /**
20
+ * @member {Neo.data.Model} model=ImageModel
21
+ */
22
+ model: ImageModel,
23
+ /**
24
+ * @member {String} url='../../resources/examples/data/ai_contacts.json'
25
+ */
26
+ url: '../../resources/examples/data/ai_contacts.json'
27
+ }}
28
+ }
29
+
30
+ Neo.applyClassConfig(ImageStore);
31
+
32
+ export default ImageStore;
@@ -1,5 +1,6 @@
1
1
  import CheckBox from '../../../src/form/field/CheckBox.mjs';
2
2
  import Helix from '../../../src/component/Helix.mjs';
3
+ import ImageStore from './ImageStore.mjs';
3
4
  import NumberField from '../../../src/form/field/Number.mjs';
4
5
  import Panel from '../../../src/container/Panel.mjs';
5
6
  import RangeField from '../../../src/form/field/Range.mjs';
@@ -312,6 +313,7 @@ class MainContainer extends Viewport {
312
313
  me.helix = Neo.create({
313
314
  module: Helix,
314
315
  id : 'neo-helix-1',
316
+ store : ImageStore,
315
317
  ...me.helixConfig
316
318
  });
317
319
 
@@ -4,5 +4,6 @@
4
4
  "environment" : "development",
5
5
  "mainPath" : "./Main.mjs",
6
6
  "renderCountDeltas": true,
7
- "themes" : ["neo-theme-dark"]
7
+ "themes" : ["neo-theme-dark"],
8
+ "useServiceWorker" : true
8
9
  }
@@ -10,7 +10,7 @@ class MainStore extends Store {
10
10
  className: 'Neo.examples.list.animate.MainStore',
11
11
  autoLoad : true,
12
12
  model : MainModel,
13
- url : '../../resources/examples/data/circleContacts.json',
13
+ url : '../../resources/examples/data/circles/group1.json',
14
14
 
15
15
  filters: [{
16
16
  disabled : true,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "neo.mjs",
3
- "version": "3.2.3",
3
+ "version": "3.2.6",
4
4
  "description": "The webworkers driven UI framework",
5
5
  "type": "module",
6
6
  "repository": {
@@ -41,16 +41,16 @@
41
41
  "chalk": "^5.0.0",
42
42
  "clean-webpack-plugin": "^4.0.0",
43
43
  "commander": "^9.0.0",
44
- "cssnano": "^5.0.17",
44
+ "cssnano": "^5.1.0",
45
45
  "envinfo": "^7.8.1",
46
- "fs-extra": "^10.0.0",
46
+ "fs-extra": "^10.0.1",
47
47
  "highlightjs-line-numbers.js": "^2.8.0",
48
48
  "inquirer": "^8.1.5",
49
49
  "neo-jsdoc": "^1.0.1",
50
50
  "neo-jsdoc-x": "^1.0.4",
51
- "postcss": "^8.4.6",
52
- "sass": "^1.49.7",
53
- "webpack": "^5.68.0",
51
+ "postcss": "^8.4.7",
52
+ "sass": "^1.49.9",
53
+ "webpack": "^5.70.0",
54
54
  "webpack-cli": "^4.9.2",
55
55
  "webpack-dev-server": "4.7.4",
56
56
  "webpack-hook-plugin": "^1.0.7",
@@ -16,6 +16,7 @@
16
16
 
17
17
  .neo-selected {
18
18
  .neo-item-wrapper {
19
+ opacity : .95;
19
20
  transform : translateZ(180px) scale(1.5);
20
21
  -webkit-box-reflect: unset!important;
21
22
  }
@@ -66,4 +67,4 @@
66
67
  .image-wrap.neo-selected img {
67
68
  transform: inherit;
68
69
  }
69
- }
70
+ }
@@ -62,6 +62,7 @@
62
62
 
63
63
  .neo-selected {
64
64
  .neo-item-wrapper {
65
+ opacity : .95;
65
66
  transform: translate3d(0, 0, 180px) scale(1.5);
66
67
  }
67
68
  }
@@ -69,4 +70,4 @@
69
70
  .image-wrap.neo-selected img {
70
71
  -webkit-box-reflect: unset !important;
71
72
  }
72
- }
73
+ }
@@ -16,6 +16,12 @@
16
16
  outline: 0;
17
17
  }
18
18
 
19
+ &.neo-follow-selection {
20
+ .neo-helix-item {
21
+ transition: all 0.1s linear;
22
+ }
23
+ }
24
+
19
25
  &.neo-transition-100 {
20
26
  .neo-helix-item {
21
27
  transition: all 0.1s ease-in-out !important;
@@ -87,4 +93,4 @@
87
93
  right : 0;
88
94
  text-shadow : 0 0 10px #61DFE5;
89
95
  }
90
- }
96
+ }
@@ -42,6 +42,7 @@
42
42
 
43
43
  .neo-selected {
44
44
  .neo-item-wrapper {
45
+ opacity : .95;
45
46
  transform : translateZ(180px) scale(1.5);
46
47
  -webkit-box-reflect: unset!important;
47
48
  }
@@ -87,4 +88,4 @@
87
88
  .image-wrap.neo-selected img {
88
89
  transform: inherit;
89
90
  }
90
- }
91
+ }
@@ -134,7 +134,7 @@ const DefaultConfig = {
134
134
  * Experimental flag if an offscreen canvas worker should get created.
135
135
  * @default false
136
136
  * @memberOf! module:Neo
137
- * @name config.useCssVars
137
+ * @name config.useCanvasWorker
138
138
  * @type Boolean
139
139
  */
140
140
  useCanvasWorker: false,
@@ -163,6 +163,15 @@ const DefaultConfig = {
163
163
  * @type Boolean
164
164
  */
165
165
  useGoogleAnalytics: false,
166
+ /**
167
+ * True will add the ServiceWorker main thread addon to support caching of assets (PWA)
168
+ * See: https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API
169
+ * @default false
170
+ * @memberOf! module:Neo
171
+ * @name config.useServiceWorker
172
+ * @type Boolean
173
+ */
174
+ useServiceWorker: false,
166
175
  /**
167
176
  * Creates App, Data & VDom as SharedWorkers.
168
177
  * Set this one to true in case you want to connect multiple main threads.