neo.mjs 2.3.13 → 2.3.17

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 (44) hide show
  1. package/README.md +8 -16
  2. package/apps/covid/view/HeaderContainer.mjs +1 -3
  3. package/apps/covid/view/HelixContainer.mjs +1 -1
  4. package/apps/covid/view/MainContainer.mjs +1 -1
  5. package/apps/covid/view/MainContainerController.mjs +3 -20
  6. package/apps/covid/view/TableContainerController.mjs +8 -8
  7. package/apps/covid/view/country/Table.mjs +1 -3
  8. package/apps/realworld/api/config.mjs +2 -2
  9. package/apps/sharedcovid/view/GalleryContainer.mjs +7 -0
  10. package/apps/sharedcovid/view/HeaderContainer.mjs +6 -3
  11. package/apps/sharedcovid/view/HelixContainer.mjs +8 -1
  12. package/apps/sharedcovid/view/MainContainer.mjs +7 -2
  13. package/apps/sharedcovid/view/MainContainerController.mjs +48 -134
  14. package/apps/sharedcovid/view/MainContainerModel.mjs +51 -0
  15. package/apps/sharedcovid/view/TableContainer.mjs +24 -0
  16. package/apps/sharedcovid/view/TableContainerController.mjs +26 -39
  17. package/apps/sharedcovid/view/country/Gallery.mjs +36 -2
  18. package/apps/sharedcovid/view/country/Helix.mjs +37 -1
  19. package/apps/sharedcovid/view/country/Table.mjs +65 -1
  20. package/apps/sharedcovid/view/mapboxGl/Container.mjs +24 -4
  21. package/apps/website/data/blog.json +17 -4
  22. package/apps/website/data/examples_devmode.json +18 -18
  23. package/buildScripts/webpack/development/webpack.config.main.js +2 -1
  24. package/buildScripts/webpack/production/webpack.config.main.js +2 -1
  25. package/examples/list/animate/List.mjs +50 -0
  26. package/examples/list/animate/MainContainer.mjs +79 -0
  27. package/examples/list/animate/MainModel.mjs +33 -0
  28. package/examples/list/animate/MainStore.mjs +31 -0
  29. package/examples/list/animate/app.mjs +8 -0
  30. package/examples/list/animate/index.html +11 -0
  31. package/examples/list/animate/neo-config.json +7 -0
  32. package/examples/list/base/neo-config.json +1 -1
  33. package/package.json +11 -11
  34. package/resources/scss/src/examples/list/animate/List.scss +30 -0
  35. package/src/Main.mjs +0 -8
  36. package/src/Neo.mjs +1 -3
  37. package/src/calendar/view/week/Component.mjs +1 -1
  38. package/src/collection/Base.mjs +7 -4
  39. package/src/component/Base.mjs +4 -11
  40. package/src/core/Base.mjs +1 -1
  41. package/src/list/Base.mjs +39 -8
  42. package/src/list/plugin/Animate.mjs +177 -0
  43. package/src/model/Component.mjs +3 -14
  44. package/src/worker/Manager.mjs +6 -1
@@ -22,10 +22,20 @@ class TableContainer extends Container {
22
22
  * @member {Boolean} autoMount=true
23
23
  */
24
24
  autoMount: true,
25
+ /**
26
+ * @member {Object} bind
27
+ */
28
+ bind: {
29
+ countryRecord: data => data.countryRecord
30
+ },
25
31
  /**
26
32
  * @member {Neo.controller.Component|null} controller=TableContainerController
27
33
  */
28
34
  controller: TableContainerController,
35
+ /**
36
+ * @member {Object} countryRecord_=null
37
+ */
38
+ countryRecord_: null,
29
39
  /**
30
40
  * @member {Number} historyPanelWidth=520
31
41
  * @protected
@@ -160,6 +170,8 @@ class TableContainer extends Container {
160
170
 
161
171
  me.table = Neo.create({
162
172
  module : Table,
173
+ appName : me.appName,
174
+ parentId : me.id,
163
175
  reference: 'table',
164
176
  ...me.tableConfig
165
177
  });
@@ -167,6 +179,18 @@ class TableContainer extends Container {
167
179
  me.items[0].items.push(me.table);
168
180
  }
169
181
 
182
+ /**
183
+ * Triggered after the countryRecord config got changed
184
+ * @param {String|null} value
185
+ * @param {String|null} oldValue
186
+ * @protected
187
+ */
188
+ afterSetCountryRecord(value, oldValue) {
189
+ setTimeout(() => {
190
+ this.controller.onCountryChange(value);
191
+ }, this.isConstructed ? 0 : 50);
192
+ }
193
+
170
194
  /**
171
195
  *
172
196
  */
@@ -41,17 +41,6 @@ class TableContainerController extends ComponentController {
41
41
  table_: null
42
42
  }}
43
43
 
44
- /**
45
- *
46
- */
47
- onConstructed() {
48
- super.onConstructed();
49
-
50
- const me = this;
51
-
52
- me.component.on('countrySelect', me.onTableSelect, me);
53
- }
54
-
55
44
  /**
56
45
  *
57
46
  * @param {Object} data
@@ -166,8 +155,8 @@ class TableContainerController extends ComponentController {
166
155
  * @param {String} countryName
167
156
  */
168
157
  loadHistoricalData(countryName) {
169
- const me = this,
170
- apiPath = me.apiBaseUrl + me.apiHistoricalDataEndpoint + countryName + '?lastdays=' + me.apiHistoricalDataTimeRange;
158
+ let me = this,
159
+ apiPath = me.apiBaseUrl + me.apiHistoricalDataEndpoint + countryName + '?lastdays=' + me.apiHistoricalDataTimeRange;
171
160
 
172
161
  fetch(apiPath)
173
162
  .then(response => response.json())
@@ -193,21 +182,39 @@ class TableContainerController extends ComponentController {
193
182
  * {Object} data
194
183
  */
195
184
  onCollapseButtonClick(data) {
196
- const panel = this.getReference('controls-panel'),
197
- expand = panel.width === 40;
185
+ let panel = this.getReference('controls-panel'),
186
+ expand = panel.width === 40;
198
187
 
199
188
  panel.width = expand ? this.component.historyPanelWidth : 40;
200
189
 
201
190
  data.component.text = expand ? 'X' : '+';
202
191
  }
203
192
 
193
+ /**
194
+ * {Object} record
195
+ */
196
+ onCountryChange(record) {
197
+ let me = this;
198
+
199
+ if (record) {
200
+ me.selectedRecord = {...record};
201
+ } else {
202
+ me.selectedRecord = null;
203
+ }
204
+
205
+ // removed optional chaining for now, see: https://github.com/neomjs/neo/issues/467
206
+ me.loadHistoricalData(record?.countryInfo?.iso2 || 'all');
207
+
208
+ me.getReference('historical-data-label').html = 'Historical Data (' + (record?.country || 'World') + ')';
209
+ }
210
+
204
211
  /**
205
212
  * {Object} data
206
213
  */
207
214
  onDailyValuesChange(data) {
208
- const chartId = this.getReference('line-chart').id,
209
- logCheckbox = this.getReference('logarithmic-scale-checkbox'),
210
- value = data.value;
215
+ let chartId = this.getReference('line-chart').id,
216
+ logCheckbox = this.getReference('logarithmic-scale-checkbox'),
217
+ value = data.value;
211
218
 
212
219
  if (value) {
213
220
  logCheckbox.set({
@@ -240,7 +247,7 @@ class TableContainerController extends ComponentController {
240
247
  * {Object} data
241
248
  */
242
249
  onLogarithmicScaleChange(data) {
243
- const lineChart = this.getReference('line-chart');
250
+ let lineChart = this.getReference('line-chart');
244
251
 
245
252
  Neo.main.addon.AmCharts.setProperty({
246
253
  appName: lineChart.appName,
@@ -250,26 +257,6 @@ class TableContainerController extends ComponentController {
250
257
  });
251
258
  }
252
259
 
253
- /**
254
- * {Object} data
255
- * {Object} data.record
256
- */
257
- onTableSelect(data) {
258
- const me = this,
259
- record = data.record;
260
-
261
- if (data.record) {
262
- me.selectedRecord = {...record};
263
- } else {
264
- me.selectedRecord = null;
265
- }
266
-
267
- // removed optional chaining for now, see: https://github.com/neomjs/neo/issues/467
268
- me.loadHistoricalData(record?.countryInfo?.iso2 || 'all');
269
-
270
- me.getReference('historical-data-label').html = 'Historical Data (' + (record?.country || 'World') + ')';
271
- }
272
-
273
260
  /**
274
261
  *
275
262
  */
@@ -13,10 +13,20 @@ class CountryGallery extends Gallery {
13
13
  * @protected
14
14
  */
15
15
  className: 'SharedCovid.view.country.Gallery',
16
+ /**
17
+ * @member {Object} bind
18
+ */
19
+ bind: {
20
+ country: {twoWay: true, value: data => data.country}
21
+ },
16
22
  /**
17
23
  * @member {String[]} cls=['covid-country-gallery', 'neo-gallery', 'page', 'view']
18
24
  */
19
25
  cls: ['covid-country-gallery', 'neo-gallery', 'page', 'view'],
26
+ /**
27
+ * @member {String|null} country_=null
28
+ */
29
+ country_: null,
20
30
  /**
21
31
  * The image height of the gallery
22
32
  * @member {Number} imageHeight=240
@@ -100,6 +110,22 @@ class CountryGallery extends Gallery {
100
110
  store: CountryStore
101
111
  }}
102
112
 
113
+ /**
114
+ * Triggered after the country config got changed
115
+ * @param {String|null} value
116
+ * @param {String|null} oldValue
117
+ * @protected
118
+ */
119
+ afterSetCountry(value, oldValue) {
120
+ if (oldValue !== undefined) {
121
+ let selectionModel = this.selectionModel;
122
+
123
+ if (value && !selectionModel.isSelected(value)) {
124
+ selectionModel.select(value, false);
125
+ }
126
+ }
127
+ }
128
+
103
129
  /**
104
130
  * Override this method to get different item-markups
105
131
  * @param {Object} vdomItem
@@ -143,6 +169,14 @@ class CountryGallery extends Gallery {
143
169
  return vnodeId.split('__')[1];
144
170
  }
145
171
 
172
+ /**
173
+ * Gets triggered from selection.Model: select()
174
+ * @param {String[]} items
175
+ */
176
+ onSelect(items) {
177
+ this.country = items[0] || null;
178
+ }
179
+
146
180
  /**
147
181
  *
148
182
  * @param {Array} items
@@ -153,10 +187,10 @@ class CountryGallery extends Gallery {
153
187
  setTimeout(() => {
154
188
  this.selectOnMount = true;
155
189
  this.afterSetMounted(true, false);
156
- }, 200);
190
+ }, 400);
157
191
  }
158
192
  }
159
193
 
160
194
  Neo.applyClassConfig(CountryGallery);
161
195
 
162
- export {CountryGallery as default};
196
+ export {CountryGallery as default};
@@ -13,10 +13,20 @@ class CountryHelix extends Helix {
13
13
  * @protected
14
14
  */
15
15
  className: 'SharedCovid.view.country.Helix',
16
+ /**
17
+ * @member {Object} bind
18
+ */
19
+ bind: {
20
+ country: {twoWay: true, value: data => data.country}
21
+ },
16
22
  /**
17
23
  * @member {String[]} cls=['covid-country-helix', 'neo-helix']
18
24
  */
19
25
  cls: ['covid-country-helix', 'neo-helix'],
26
+ /**
27
+ * @member {String|null} country_=null
28
+ */
29
+ country_: null,
20
30
  /**
21
31
  * The vertical delta between each helix item (increasing this value will create a spiral)
22
32
  * @member {Number} deltaY=1.2
@@ -95,6 +105,24 @@ class CountryHelix extends Helix {
95
105
  translateZ: -2300
96
106
  }}
97
107
 
108
+ /**
109
+ * Triggered after the country config got changed
110
+ * @param {String|null} value
111
+ * @param {String|null} oldValue
112
+ * @protected
113
+ */
114
+ afterSetCountry(value, oldValue) {
115
+ if (oldValue !== undefined) {
116
+ let me = this,
117
+ selectionModel = me.selectionModel;
118
+
119
+ if (value && !selectionModel.isSelected(value)) {
120
+ selectionModel.select(value, false);
121
+ me.onKeyDownSpace(null);
122
+ }
123
+ }
124
+ }
125
+
98
126
  /**
99
127
  *
100
128
  * @param {Object} vdomItem
@@ -144,8 +172,16 @@ class CountryHelix extends Helix {
144
172
  getItemId(vnodeId) {
145
173
  return vnodeId.split('__')[1];
146
174
  }
175
+
176
+ /**
177
+ * Gets triggered from selection.Model: select()
178
+ * @param {String[]} items
179
+ */
180
+ onSelect(items) {
181
+ this.country = items[0] || null;
182
+ }
147
183
  }
148
184
 
149
185
  Neo.applyClassConfig(CountryHelix);
150
186
 
151
- export {CountryHelix as default};
187
+ export {CountryHelix as default};
@@ -13,6 +13,12 @@ class Table extends Container {
13
13
  * @protected
14
14
  */
15
15
  className: 'SharedCovid.view.country.Table',
16
+ /**
17
+ * @member {Object} bind
18
+ */
19
+ bind: {
20
+ country: {twoWay: true, value: data => data.country}
21
+ },
16
22
  /**
17
23
  * @member {String[]} cls=['covid-country-table', 'neo-table-container']
18
24
  */
@@ -95,13 +101,71 @@ class Table extends Container {
95
101
  dataField: 'testsPerOneMillion',
96
102
  text : 'Tests / 1M'
97
103
  }],
104
+ /**
105
+ * @member {String|null} country_=null
106
+ */
107
+ country_: null,
98
108
  /**
99
109
  * @member {Neo.data.Store} store=CountryStore
100
110
  */
101
111
  store: CountryStore
102
112
  }}
113
+
114
+ /**
115
+ * Triggered after the country config got changed
116
+ * @param {String|null} value
117
+ * @param {String|null} oldValue
118
+ * @protected
119
+ */
120
+ afterSetCountry(value, oldValue) {
121
+ if (oldValue !== undefined) {
122
+ let me = this,
123
+ selectionModel = me.selectionModel,
124
+ id;
125
+
126
+ if (value) {
127
+ id = `${me.getView().id}__tr__${value}`; // the store can not be loaded on the first selection
128
+
129
+ if (!selectionModel.isSelected(id)) {
130
+ selectionModel.select(id);
131
+
132
+ me.mounted && Neo.main.DomAccess.scrollToTableRow({id: id});
133
+ }
134
+ } else {
135
+ selectionModel.deselectAll();
136
+ }
137
+ }
138
+ }
139
+
140
+ /**
141
+ * Gets triggered from selection.Model: deselect()
142
+ * @param {String[]} items
143
+ */
144
+ onDeselect(items) {
145
+ this.country = null;
146
+ }
147
+
148
+ /**
149
+ * Gets triggered from selection.Model: select()
150
+ * @param {String[]} items
151
+ */
152
+ onSelect(items) {
153
+ let me = this,
154
+ item = items[0] || null;
155
+
156
+ if (me.store.getCount() > 0) {
157
+ if (item) {
158
+ item = me.getView().getRecordByRowId(item)?.country;
159
+ }
160
+
161
+ // in case getRecordByRowId() has no match, the initial row creation will include the selection
162
+ if (item) {
163
+ me.country = item;
164
+ }
165
+ }
166
+ }
103
167
  }
104
168
 
105
169
  Neo.applyClassConfig(Table);
106
170
 
107
- export {Table as default};
171
+ export {Table as default};
@@ -28,9 +28,6 @@ class Container extends BaseContainer {
28
28
  * @member {Object[]} items
29
29
  */
30
30
  items: [{
31
- module : Component,
32
- reference: 'mapboxglmap'
33
- }, {
34
31
  module : Panel,
35
32
  height : 150,
36
33
  ignoreLayout: true,
@@ -106,6 +103,29 @@ class Container extends BaseContainer {
106
103
  }
107
104
  }}
108
105
 
106
+ /**
107
+ *
108
+ * @param {Object} config
109
+ */
110
+ constructor(config) {
111
+ super(config);
112
+
113
+ let me = this,
114
+
115
+ map = Neo.create({
116
+ module : Component,
117
+ appName : me.appName,
118
+ parentId : me.id,
119
+ reference: 'mapboxglmap',
120
+
121
+ model: {
122
+ parent: me.getModel()
123
+ }
124
+ });
125
+
126
+ me.items.unshift(map);
127
+ }
128
+
109
129
  /**
110
130
  *
111
131
  */
@@ -123,4 +143,4 @@ class Container extends BaseContainer {
123
143
 
124
144
  Neo.applyClassConfig(Container);
125
145
 
126
- export {Container as default};
146
+ export {Container as default};
@@ -2,10 +2,23 @@
2
2
  {
3
3
  "author" : "Tobias Uhlig",
4
4
  "authorImage" : "author_TobiasUhlig.jpeg",
5
- "date" : "Aug 25, 2022",
5
+ "date" : "Sep 23, 2021",
6
+ "id" : 46,
7
+ "image" : "safari-just-released-support-for-js-modules-inside-the-worker-scope.png",
8
+ "name" : "Safari (Webkit) just released support for JS modules inside the worker scope",
9
+ "provider" : "Medium",
10
+ "publisher" : "ITNEXT",
11
+ "selectedInto": [],
12
+ "type" : "Blog Post",
13
+ "url" : "https://itnext.io/safari-webkit-just-released-support-for-js-modules-inside-the-worker-scope-b2d29e67178?source=friends_link&sk=dfabc5dd91430f11e2c49dd10b698544"
14
+ },
15
+ {
16
+ "author" : "Tobias Uhlig",
17
+ "authorImage" : "author_TobiasUhlig.jpeg",
18
+ "date" : "Aug 25, 2021",
6
19
  "id" : 45,
7
20
  "image" : "define-a-web-4.0-app-to-be-multi-threaded.png",
8
- "name" : "Define a web 4.0 app to be multi threaded",
21
+ "name" : "Tutorial: Create your first app in neo v2",
9
22
  "provider" : "Medium",
10
23
  "publisher" : "ITNEXT",
11
24
  "selectedInto": [],
@@ -15,7 +28,7 @@
15
28
  {
16
29
  "author" : "Tobias Uhlig",
17
30
  "authorImage" : "author_TobiasUhlig.jpeg",
18
- "date" : "Aug 20, 2022",
31
+ "date" : "Aug 20, 2021",
19
32
  "id" : 44,
20
33
  "image" : "the-best-frontend-development-strategies-in-2022.png",
21
34
  "name" : "The best frontend development strategies in 2022",
@@ -28,7 +41,7 @@
28
41
  {
29
42
  "author" : "Tobias Uhlig",
30
43
  "authorImage" : "author_TobiasUhlig.jpeg",
31
- "date" : "Aug 13, 2022",
44
+ "date" : "Aug 13, 2021",
32
45
  "id" : 43,
33
46
  "image" : "using-material-web-components-within-the-neomjs-application-worker.png",
34
47
  "name" : "Using Material Web Components within the neo.mjs application worker",
@@ -1,6 +1,6 @@
1
1
  [
2
2
  {
3
- "browsers" : ["Chrome", "Edge"],
3
+ "browsers" : ["Chrome", "Edge", "Safari"],
4
4
  "environments": ["Desktop"],
5
5
  "id" : 19,
6
6
  "image" : "devmode/model-component-example.png",
@@ -9,7 +9,7 @@
9
9
  "url" : "https://neomjs.github.io/pages/node_modules/neo.mjs/examples/model/advanced/index.html"
10
10
  },
11
11
  {
12
- "browsers" : ["Chrome", "(SharedWorkers)"],
12
+ "browsers" : ["Chrome", "Edge"],
13
13
  "environments": ["Desktop"],
14
14
  "id" : 18,
15
15
  "image" : "devmode/sharedcovid.png",
@@ -18,7 +18,7 @@
18
18
  "url" : "https://neomjs.github.io/pages/node_modules/neo.mjs/apps/sharedcovid/index.html#mainview=table"
19
19
  },
20
20
  {
21
- "browsers" : ["Chrome", "Edge"],
21
+ "browsers" : ["Chrome", "Edge", "Safari"],
22
22
  "environments": ["Desktop"],
23
23
  "id" : 17,
24
24
  "image" : "devmode/calendar-preview.png",
@@ -27,7 +27,7 @@
27
27
  "url" : "https://neomjs.github.io/pages/node_modules/neo.mjs/examples/calendar/basic/index.html"
28
28
  },
29
29
  {
30
- "browsers" : ["Chrome", "Edge"],
30
+ "browsers" : ["Chrome", "Edge", "Safari"],
31
31
  "environments": ["Desktop"],
32
32
  "id" : 16,
33
33
  "image" : "devmode/covidDashboard.png",
@@ -45,7 +45,7 @@
45
45
  "url" : "https://neomjs.github.io/pages/node_modules/neo.mjs/apps/shareddialog/index.html"
46
46
  },
47
47
  {
48
- "browsers" : ["Chrome", "Edge"],
48
+ "browsers" : ["Chrome", "Edge", "Safari"],
49
49
  "environments": ["Desktop"],
50
50
  "id" : 14,
51
51
  "image" : "devmode/realworldApp.png",
@@ -54,7 +54,7 @@
54
54
  "url" : "https://neomjs.github.io/pages/node_modules/neo.mjs/apps/realworld/index.html"
55
55
  },
56
56
  {
57
- "browsers" : ["Chrome", "Edge"],
57
+ "browsers" : ["Chrome", "Edge", "Safari"],
58
58
  "environments": ["Desktop"],
59
59
  "id" : 13,
60
60
  "image" : "devmode/coronaGallery.png",
@@ -63,7 +63,7 @@
63
63
  "url" : "https://neomjs.github.io/pages/node_modules/neo.mjs/examples/component/coronaGallery/index.html"
64
64
  },
65
65
  {
66
- "browsers" : ["Chrome", "Edge"],
66
+ "browsers" : ["Chrome", "Edge", "Safari"],
67
67
  "environments": ["Desktop"],
68
68
  "id" : 12,
69
69
  "image" : "devmode/coronaHelix.png",
@@ -72,7 +72,7 @@
72
72
  "url" : "https://neomjs.github.io/pages/node_modules/neo.mjs/examples/component/coronaHelix/index.html"
73
73
  },
74
74
  {
75
- "browsers" : ["Chrome", "Edge"],
75
+ "browsers" : ["Chrome", "Edge", "Safari"],
76
76
  "environments": ["Desktop"],
77
77
  "id" : 11,
78
78
  "image" : "devmode/website.png",
@@ -81,7 +81,7 @@
81
81
  "url" : "https://neomjs.github.io/pages/node_modules/neo.mjs/apps/website/index.html#mainview=blog"
82
82
  },
83
83
  {
84
- "browsers" : ["Chrome", "Edge"],
84
+ "browsers" : ["Chrome", "Edge", "Safari"],
85
85
  "environments": ["Desktop"],
86
86
  "id" : 10,
87
87
  "image" : "devmode/tableFiltering.png",
@@ -90,7 +90,7 @@
90
90
  "url" : "https://neomjs.github.io/pages/node_modules/neo.mjs/examples/tableFiltering/"
91
91
  },
92
92
  {
93
- "browsers" : ["Chrome", "Edge"],
93
+ "browsers" : ["Chrome", "Edge", "Safari"],
94
94
  "environments": ["Desktop"],
95
95
  "id" : 9,
96
96
  "image" : "devmode/dragdrop.png",
@@ -99,7 +99,7 @@
99
99
  "url" : "https://neomjs.github.io/pages/node_modules/neo.mjs/examples/dialog/"
100
100
  },
101
101
  {
102
- "browsers" : ["Chrome", "Edge"],
102
+ "browsers" : ["Chrome", "Edge", "Safari"],
103
103
  "environments": ["Desktop"],
104
104
  "id" : 8,
105
105
  "image" : "devmode/realworldApp2.png",
@@ -108,7 +108,7 @@
108
108
  "url" : "https://neomjs.github.io/pages/node_modules/neo.mjs/apps/realworld2/index.html#/gallery"
109
109
  },
110
110
  {
111
- "browsers" : ["Chrome", "Edge"],
111
+ "browsers" : ["Chrome", "Edge", "Safari"],
112
112
  "environments": ["Desktop"],
113
113
  "id" : 7,
114
114
  "image" : "devmode/dateSelector.png",
@@ -117,7 +117,7 @@
117
117
  "url" : "https://neomjs.github.io/pages/node_modules/neo.mjs/examples/component/dateSelector/index.html"
118
118
  },
119
119
  {
120
- "browsers" : ["Chrome", "Edge"],
120
+ "browsers" : ["Chrome", "Edge", "Safari"],
121
121
  "environments": ["Desktop"],
122
122
  "id" : 6,
123
123
  "image" : "devmode/gallery.png",
@@ -126,7 +126,7 @@
126
126
  "url" : "https://neomjs.github.io/pages/node_modules/neo.mjs/examples/component/gallery/index.html"
127
127
  },
128
128
  {
129
- "browsers" : ["Chrome", "Edge"],
129
+ "browsers" : ["Chrome", "Edge", "Safari"],
130
130
  "environments": ["Desktop"],
131
131
  "id" : 5,
132
132
  "image" : "devmode/helix.png",
@@ -135,7 +135,7 @@
135
135
  "url" : "https://neomjs.github.io/pages/node_modules/neo.mjs/examples/component/helix/index.html"
136
136
  },
137
137
  {
138
- "browsers" : ["Chrome", "Edge"],
138
+ "browsers" : ["Chrome", "Edge", "Safari"],
139
139
  "environments": ["Desktop"],
140
140
  "id" : 4,
141
141
  "image" : "devmode/dateField.png",
@@ -144,7 +144,7 @@
144
144
  "url" : "https://neomjs.github.io/pages/node_modules/neo.mjs/examples/form/field/date/index.html"
145
145
  },
146
146
  {
147
- "browsers" : ["Chrome", "Edge"],
147
+ "browsers" : ["Chrome", "Edge", "Safari"],
148
148
  "environments": ["Desktop"],
149
149
  "id" : 3,
150
150
  "image" : "devmode/selectField.png",
@@ -153,7 +153,7 @@
153
153
  "url" : "https://neomjs.github.io/pages/node_modules/neo.mjs/examples/form/field/select/index.html"
154
154
  },
155
155
  {
156
- "browsers" : ["Chrome", "Edge"],
156
+ "browsers" : ["Chrome", "Edge", "Safari"],
157
157
  "environments": ["Desktop"],
158
158
  "id" : 2,
159
159
  "image" : "devmode/tabContainer.png",
@@ -162,7 +162,7 @@
162
162
  "url" : "https://neomjs.github.io/pages/node_modules/neo.mjs/examples/tab/container/index.html"
163
163
  },
164
164
  {
165
- "browsers" : ["Chrome", "Edge"],
165
+ "browsers" : ["Chrome", "Edge", "Safari"],
166
166
  "environments": ["Desktop"],
167
167
  "id" : 1,
168
168
  "image" : "devmode/siesta.png",
@@ -15,6 +15,7 @@ module.exports = {
15
15
  output: {
16
16
  chunkFilename: 'chunks/main/[id].js',
17
17
  filename : filenameConfig.mainOutput,
18
- path : path.resolve(processRoot, buildTarget.folder)
18
+ path : path.resolve(processRoot, buildTarget.folder),
19
+ publicPath : ''
19
20
  }
20
21
  };
@@ -14,6 +14,7 @@ module.exports = {
14
14
  output: {
15
15
  chunkFilename: 'chunks/main/[id].js',
16
16
  filename : filenameConfig.mainOutput,
17
- path : path.resolve(processRoot, buildTarget.folder)
17
+ path : path.resolve(processRoot, buildTarget.folder),
18
+ publicPath : ''
18
19
  }
19
20
  };