neo.mjs 6.17.2 → 6.18.1

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 (323) hide show
  1. package/apps/ServiceWorker.mjs +3 -5
  2. package/apps/colors/README.md +8 -0
  3. package/apps/colors/app.mjs +6 -0
  4. package/apps/colors/childapps/widget/app.mjs +7 -0
  5. package/apps/colors/childapps/widget/index.html +11 -0
  6. package/apps/colors/childapps/widget/neo-config.json +10 -0
  7. package/apps/colors/childapps/widget/view/Viewport.mjs +19 -0
  8. package/apps/colors/index.html +11 -0
  9. package/apps/colors/model/Color.mjs +43 -0
  10. package/apps/colors/neo-config.json +10 -0
  11. package/apps/colors/remotes-api.json +13 -0
  12. package/apps/colors/store/Colors.mjs +24 -0
  13. package/apps/colors/view/BarChartComponent.mjs +64 -0
  14. package/apps/colors/view/HeaderToolbar.mjs +95 -0
  15. package/apps/colors/view/PieChartComponent.mjs +58 -0
  16. package/apps/colors/view/TableContainer.mjs +91 -0
  17. package/apps/colors/view/Viewport.mjs +57 -0
  18. package/apps/colors/view/ViewportController.mjs +277 -0
  19. package/apps/colors/view/ViewportModel.mjs +53 -0
  20. package/apps/portal/Util.mjs +11 -0
  21. package/apps/portal/childapps/preview/neo-config.json +2 -2
  22. package/apps/portal/neo-config.json +2 -1
  23. package/apps/portal/remotes-api.json +13 -0
  24. package/apps/portal/view/HeaderToolbar.mjs +1 -1
  25. package/apps/portal/view/ViewportController.mjs +89 -1
  26. package/apps/portal/view/home/MainContainer.mjs +34 -6
  27. package/apps/portal/view/home/parts/AfterMath.mjs +1 -1
  28. package/apps/portal/view/home/parts/Colors.mjs +98 -0
  29. package/apps/portal/view/home/parts/Helix.mjs +114 -0
  30. package/apps/portal/view/home/parts/HelloWorld.mjs +6 -3
  31. package/apps/portal/view/home/parts/How.mjs +66 -0
  32. package/apps/portal/view/home/parts/MainNeo.mjs +4 -3
  33. package/apps/portal/view/learn/LivePreview.mjs +56 -15
  34. package/apps/portal/view/learn/MainContainerController.mjs +10 -90
  35. package/apps/realworld/api/Article.mjs +1 -3
  36. package/apps/realworld/api/Favorite.mjs +1 -3
  37. package/apps/realworld/api/Profile.mjs +1 -3
  38. package/apps/realworld/api/Tag.mjs +1 -3
  39. package/apps/realworld/api/User.mjs +1 -3
  40. package/apps/realworld2/api/Article.mjs +1 -3
  41. package/apps/realworld2/api/Favorite.mjs +1 -3
  42. package/apps/realworld2/api/Profile.mjs +1 -3
  43. package/apps/realworld2/api/Tag.mjs +1 -3
  44. package/apps/realworld2/api/User.mjs +1 -3
  45. package/apps/realworld2/view/article/HelixContainer.mjs +5 -5
  46. package/buildScripts/webpack/json/myApps.template.json +1 -0
  47. package/docs/app/view/MainContainer.mjs +5 -0
  48. package/docs/app/view/classdetails/MembersList.mjs +1 -1
  49. package/examples/ServiceWorker.mjs +3 -5
  50. package/examples/component/helix/Viewport.mjs +309 -0
  51. package/examples/component/helix/ViewportController.mjs +122 -0
  52. package/examples/component/helix/app.mjs +2 -2
  53. package/examples/component/helix/neo-config.json +0 -1
  54. package/examples/component/multiWindowHelix/Viewport.mjs +11 -3
  55. package/examples/component/multiWindowHelix/ViewportController.mjs +21 -9
  56. package/examples/component/multiWindowHelix/neo-config.json +0 -1
  57. package/examples/fieldWithPrefix/MainContainer.mjs +1 -6
  58. package/examples/list/animate/MainContainerController.mjs +1 -1
  59. package/examples/worker/task/MyTasks.mjs +1 -3
  60. package/package.json +2 -2
  61. package/resources/data/deck/learnneo/pages/Events.md +15 -9
  62. package/resources/data/deck/learnneo/pages/GuideEvents.md +254 -0
  63. package/resources/data/deck/learnneo/pages/WhyNeo-Speed.md +1 -1
  64. package/resources/images/logo/neo_logo_primary.svg +6 -0
  65. package/resources/images/logo/neo_logo_text_primary.svg +5 -0
  66. package/resources/scss/src/apps/colors/BarChartComponent.scss +3 -0
  67. package/resources/scss/src/apps/colors/HeaderToolbar.scss +11 -0
  68. package/resources/scss/src/apps/colors/PieChartComponent.scss +3 -0
  69. package/resources/scss/src/apps/colors/TableContainer.scss +64 -0
  70. package/resources/scss/src/apps/colors/Viewport.scss +9 -0
  71. package/resources/scss/src/apps/portal/HeaderToolbar.scss +142 -124
  72. package/resources/scss/src/apps/portal/home/MainContainer.scss +9 -22
  73. package/resources/scss/src/apps/portal/home/parts/MainNeo.scss +22 -0
  74. package/resources/scss/src/apps/portal/home/preview/PageCodeContainer.scss +1 -1
  75. package/resources/scss/src/examples/component/multiWindowHelix/Viewport.scss +3 -0
  76. package/resources/scss/src/form/field/CheckBox.scss +1 -0
  77. package/resources/scss/src/tab/header/Button.scss +2 -1
  78. package/resources/scss/theme-dark/Global.scss +8 -0
  79. package/resources/scss/theme-dark/button/Base.scss +1 -1
  80. package/resources/scss/theme-dark/tab/header/Button.scss +1 -0
  81. package/resources/scss/theme-light/Global.scss +8 -0
  82. package/resources/scss/theme-light/button/Base.scss +1 -1
  83. package/resources/scss/theme-light/tab/header/Button.scss +1 -0
  84. package/resources/scss/theme-neo-light/Global.scss +53 -53
  85. package/resources/scss/theme-neo-light/button/Base.scss +3 -4
  86. package/resources/scss/theme-neo-light/tab/header/Button.scss +6 -8
  87. package/src/DefaultConfig.mjs +2 -2
  88. package/src/Fetch.mjs +1 -3
  89. package/src/Main.mjs +13 -11
  90. package/src/MicroLoader.mjs +2 -2
  91. package/src/Neo.mjs +27 -26
  92. package/src/Xhr.mjs +1 -3
  93. package/src/button/Base.mjs +6 -4
  94. package/src/button/Split.mjs +10 -9
  95. package/src/calendar/view/EditEventContainer.mjs +13 -12
  96. package/src/calendar/view/MainContainer.mjs +40 -40
  97. package/src/calendar/view/MainContainerModel.mjs +5 -5
  98. package/src/calendar/view/SettingsContainer.mjs +11 -11
  99. package/src/calendar/view/YearComponent.mjs +73 -75
  100. package/src/calendar/view/calendars/ColorsList.mjs +2 -2
  101. package/src/calendar/view/calendars/EditContainer.mjs +2 -2
  102. package/src/calendar/view/calendars/List.mjs +12 -13
  103. package/src/calendar/view/month/Component.mjs +72 -73
  104. package/src/calendar/view/settings/GeneralContainer.mjs +5 -5
  105. package/src/calendar/view/settings/MonthContainer.mjs +5 -5
  106. package/src/calendar/view/settings/WeekContainer.mjs +6 -6
  107. package/src/calendar/view/settings/YearContainer.mjs +4 -4
  108. package/src/calendar/view/week/Component.mjs +47 -57
  109. package/src/calendar/view/week/EventDragZone.mjs +43 -50
  110. package/src/calendar/view/week/TimeAxisComponent.mjs +21 -21
  111. package/src/calendar/view/week/plugin/DragDrop.mjs +53 -45
  112. package/src/calendar/view/week/plugin/EventResizable.mjs +8 -3
  113. package/src/collection/Base.mjs +15 -22
  114. package/src/collection/Filter.mjs +4 -9
  115. package/src/collection/Sorter.mjs +6 -7
  116. package/src/component/Base.mjs +73 -41
  117. package/src/component/Canvas.mjs +9 -9
  118. package/src/component/Carousel.mjs +31 -33
  119. package/src/component/Chip.mjs +9 -9
  120. package/src/component/Circle.mjs +84 -91
  121. package/src/component/Clock.mjs +8 -8
  122. package/src/component/DateSelector.mjs +14 -15
  123. package/src/component/Gallery.mjs +82 -80
  124. package/src/component/Helix.mjs +131 -126
  125. package/src/component/Iframe.mjs +1 -1
  126. package/src/component/Label.mjs +1 -1
  127. package/src/component/Legend.mjs +3 -3
  128. package/src/component/Process.mjs +39 -37
  129. package/src/component/Splitter.mjs +9 -11
  130. package/src/component/StatusBadge.mjs +2 -3
  131. package/src/component/Timer.mjs +62 -68
  132. package/src/component/Toast.mjs +11 -11
  133. package/src/component/Video.mjs +7 -8
  134. package/src/component/mwc/Button.mjs +10 -10
  135. package/src/component/mwc/TextField.mjs +17 -17
  136. package/src/component/wrapper/AmChart.mjs +5 -5
  137. package/src/component/wrapper/CesiumJS.mjs +11 -17
  138. package/src/component/wrapper/GoogleMaps.mjs +58 -35
  139. package/src/component/wrapper/MapboxGL.mjs +112 -79
  140. package/src/container/Accordion.mjs +18 -20
  141. package/src/container/AccordionItem.mjs +12 -11
  142. package/src/container/Base.mjs +24 -23
  143. package/src/container/Panel.mjs +9 -9
  144. package/src/controller/Base.mjs +12 -14
  145. package/src/controller/Component.mjs +60 -66
  146. package/src/core/Base.mjs +5 -8
  147. package/src/core/IdGenerator.mjs +1 -3
  148. package/src/core/Observable.mjs +40 -24
  149. package/src/core/Util.mjs +5 -5
  150. package/src/data/Model.mjs +3 -3
  151. package/src/data/RecordFactory.mjs +3 -6
  152. package/src/data/Store.mjs +34 -34
  153. package/src/data/connection/Fetch.mjs +3 -3
  154. package/src/data/connection/WebSocket.mjs +21 -25
  155. package/src/data/connection/Xhr.mjs +31 -28
  156. package/src/date/DayViewComponent.mjs +1 -1
  157. package/src/date/SelectorContainer.mjs +2 -2
  158. package/src/dialog/Base.mjs +27 -25
  159. package/src/dialog/header/Toolbar.mjs +5 -4
  160. package/src/draggable/DragProxyComponent.mjs +7 -4
  161. package/src/draggable/DragZone.mjs +30 -30
  162. package/src/draggable/DropZone.mjs +7 -7
  163. package/src/draggable/list/DragZone.mjs +18 -18
  164. package/src/draggable/tab/header/toolbar/SortZone.mjs +7 -7
  165. package/src/draggable/toolbar/DragZone.mjs +15 -15
  166. package/src/draggable/toolbar/SortZone.mjs +30 -31
  167. package/src/draggable/tree/DragZone.mjs +9 -9
  168. package/src/filter/BooleanContainer.mjs +3 -3
  169. package/src/filter/NumberContainer.mjs +5 -5
  170. package/src/filter/ToggleOperatorsButton.mjs +5 -5
  171. package/src/form/Fieldset.mjs +26 -26
  172. package/src/form/field/Base.mjs +1 -1
  173. package/src/form/field/CheckBox.mjs +15 -16
  174. package/src/form/field/Color.mjs +13 -15
  175. package/src/form/field/ComboBox.mjs +16 -24
  176. package/src/form/field/Country.mjs +1 -1
  177. package/src/form/field/Date.mjs +3 -4
  178. package/src/form/field/Display.mjs +1 -1
  179. package/src/form/field/Email.mjs +2 -2
  180. package/src/form/field/Number.mjs +51 -56
  181. package/src/form/field/Picker.mjs +2 -2
  182. package/src/form/field/Radio.mjs +1 -1
  183. package/src/form/field/Range.mjs +7 -6
  184. package/src/form/field/Text.mjs +29 -36
  185. package/src/form/field/TextArea.mjs +9 -9
  186. package/src/form/field/Time.mjs +30 -30
  187. package/src/form/field/trigger/Base.mjs +19 -13
  188. package/src/form/field/trigger/Clear.mjs +13 -13
  189. package/src/form/field/trigger/CopyToClipboard.mjs +7 -7
  190. package/src/form/field/trigger/Picker.mjs +2 -2
  191. package/src/form/field/trigger/SpinDown.mjs +1 -1
  192. package/src/form/field/trigger/SpinUp.mjs +1 -1
  193. package/src/form/field/trigger/SpinUpDown.mjs +3 -3
  194. package/src/form/field/trigger/Time.mjs +3 -3
  195. package/src/grid/Container.mjs +33 -33
  196. package/src/grid/View.mjs +20 -22
  197. package/src/grid/header/Button.mjs +12 -12
  198. package/src/grid/header/Toolbar.mjs +4 -4
  199. package/src/layout/Base.mjs +5 -4
  200. package/src/layout/Card.mjs +15 -16
  201. package/src/layout/Fit.mjs +22 -8
  202. package/src/layout/Flexbox.mjs +30 -29
  203. package/src/layout/Form.mjs +15 -15
  204. package/src/layout/Grid.mjs +2 -2
  205. package/src/layout/HBox.mjs +3 -2
  206. package/src/layout/VBox.mjs +3 -2
  207. package/src/list/Base.mjs +45 -47
  208. package/src/list/Chip.mjs +4 -4
  209. package/src/list/Circle.mjs +3 -3
  210. package/src/list/Color.mjs +4 -4
  211. package/src/list/Component.mjs +10 -10
  212. package/src/list/plugin/Animate.mjs +18 -13
  213. package/src/main/DomAccess.mjs +92 -56
  214. package/src/main/DomEvents.mjs +38 -39
  215. package/src/main/addon/AmCharts.mjs +37 -37
  216. package/src/main/addon/AnalyticsByGoogle.mjs +4 -4
  217. package/src/main/addon/CesiumJS.mjs +8 -8
  218. package/src/main/addon/CloneNode.mjs +5 -5
  219. package/src/main/addon/Cookie.mjs +4 -4
  220. package/src/main/addon/DragDrop.mjs +35 -34
  221. package/src/main/addon/GoogleMaps.mjs +19 -19
  222. package/src/main/addon/IntersectionObserver.mjs +20 -1
  223. package/src/main/addon/LocalStorage.mjs +3 -3
  224. package/src/main/addon/MapboxGL.mjs +40 -41
  225. package/src/main/addon/MonacoEditor.mjs +5 -5
  226. package/src/main/addon/Mwc.mjs +6 -6
  227. package/src/main/addon/Navigator.mjs +35 -39
  228. package/src/main/addon/Popover.mjs +5 -6
  229. package/src/main/addon/PrefixField.mjs +1 -2
  230. package/src/main/addon/ServiceWorker.mjs +9 -9
  231. package/src/main/addon/Siesta.mjs +3 -2
  232. package/src/main/addon/Stylesheet.mjs +37 -37
  233. package/src/main/addon/WebComponent.mjs +2 -3
  234. package/src/main/addon/WindowPosition.mjs +18 -18
  235. package/src/main/draggable/sensor/Base.mjs +2 -2
  236. package/src/main/draggable/sensor/Mouse.mjs +15 -15
  237. package/src/main/draggable/sensor/Touch.mjs +24 -23
  238. package/src/main/mixin/DeltaUpdates.mjs +10 -12
  239. package/src/main/mixin/TouchDomEvents.mjs +6 -6
  240. package/src/manager/Base.mjs +4 -4
  241. package/src/manager/Component.mjs +41 -41
  242. package/src/manager/DomEvent.mjs +41 -44
  243. package/src/manager/Focus.mjs +14 -16
  244. package/src/manager/Instance.mjs +2 -4
  245. package/src/manager/Store.mjs +4 -8
  246. package/src/manager/Task.mjs +20 -22
  247. package/src/manager/Toast.mjs +14 -16
  248. package/src/manager/rpc/Api.mjs +1 -3
  249. package/src/manager/rpc/Message.mjs +16 -18
  250. package/src/menu/List.mjs +16 -16
  251. package/src/menu/Panel.mjs +4 -4
  252. package/src/model/Component.mjs +16 -14
  253. package/src/plugin/Base.mjs +2 -0
  254. package/src/plugin/Popover.mjs +1 -1
  255. package/src/plugin/PrefixField.mjs +35 -45
  256. package/src/plugin/Resizable.mjs +86 -101
  257. package/src/plugin/Responsive.mjs +1 -1
  258. package/src/remotes/Api.mjs +4 -6
  259. package/src/selection/CircleModel.mjs +12 -16
  260. package/src/selection/DateSelectorModel.mjs +21 -23
  261. package/src/selection/GalleryModel.mjs +49 -63
  262. package/src/selection/HelixModel.mjs +35 -41
  263. package/src/selection/ListModel.mjs +9 -14
  264. package/src/selection/Model.mjs +31 -31
  265. package/src/selection/TreeAccordionModel.mjs +74 -80
  266. package/src/selection/grid/CellColumnModel.mjs +10 -10
  267. package/src/selection/grid/CellColumnRowModel.mjs +10 -10
  268. package/src/selection/grid/CellModel.mjs +26 -28
  269. package/src/selection/grid/CellRowModel.mjs +24 -24
  270. package/src/selection/grid/ColumnModel.mjs +16 -20
  271. package/src/selection/grid/RowModel.mjs +27 -29
  272. package/src/selection/menu/ListModel.mjs +2 -2
  273. package/src/selection/table/CellColumnModel.mjs +12 -12
  274. package/src/selection/table/CellColumnRowModel.mjs +12 -12
  275. package/src/selection/table/CellModel.mjs +26 -29
  276. package/src/selection/table/CellRowModel.mjs +19 -19
  277. package/src/selection/table/ColumnModel.mjs +18 -22
  278. package/src/selection/table/RowModel.mjs +27 -29
  279. package/src/sitemap/Component.mjs +20 -20
  280. package/src/sitemap/Store.mjs +1 -1
  281. package/src/tab/Container.mjs +15 -15
  282. package/src/tab/Strip.mjs +1 -1
  283. package/src/tab/header/Toolbar.mjs +4 -4
  284. package/src/table/Container.mjs +8 -10
  285. package/src/table/View.mjs +29 -34
  286. package/src/table/header/Button.mjs +18 -18
  287. package/src/table/header/Toolbar.mjs +2 -2
  288. package/src/toolbar/Base.mjs +14 -14
  289. package/src/toolbar/Breadcrumb.mjs +11 -11
  290. package/src/toolbar/Paging.mjs +18 -18
  291. package/src/tooltip/Base.mjs +20 -22
  292. package/src/tree/Accordion.mjs +69 -75
  293. package/src/tree/List.mjs +22 -25
  294. package/src/util/Array.mjs +19 -18
  295. package/src/util/ClassSystem.mjs +9 -9
  296. package/src/util/Css.mjs +2 -2
  297. package/src/util/Date.mjs +9 -9
  298. package/src/util/Function.mjs +2 -2
  299. package/src/util/HashHistory.mjs +3 -5
  300. package/src/util/KeyNavigation.mjs +17 -17
  301. package/src/util/Logger.mjs +9 -9
  302. package/src/util/Matrix.mjs +19 -19
  303. package/src/util/String.mjs +9 -9
  304. package/src/util/Style.mjs +11 -11
  305. package/src/util/VDom.mjs +12 -14
  306. package/src/util/VNode.mjs +29 -29
  307. package/src/vdom/Helper.mjs +84 -93
  308. package/src/vdom/VNode.mjs +1 -1
  309. package/src/worker/App.mjs +19 -16
  310. package/src/worker/Base.mjs +14 -15
  311. package/src/worker/Canvas.mjs +1 -3
  312. package/src/worker/Data.mjs +4 -8
  313. package/src/worker/Manager.mjs +27 -32
  314. package/src/worker/Message.mjs +1 -1
  315. package/src/worker/ServiceBase.mjs +38 -42
  316. package/src/worker/Task.mjs +1 -3
  317. package/src/worker/VDom.mjs +2 -4
  318. package/src/worker/mixin/RemoteMethodAccess.mjs +5 -6
  319. package/apps/portal/view/home/parts/CoolStuff.mjs +0 -82
  320. package/examples/component/helix/MainContainer.mjs +0 -340
  321. /package/resources/images/{Neo_Logo_Blue.svg → logo/neo_logo_secondary.svg} +0 -0
  322. /package/resources/images/{Neo_Logo_Text.svg → logo/neo_logo_text_secondary.svg} +0 -0
  323. /package/resources/images/{Neo_Logo_White.svg → logo/neo_logo_white.svg} +0 -0
@@ -100,7 +100,7 @@ class Panel extends Container {
100
100
  });
101
101
  }
102
102
 
103
- return {...config, ...header};
103
+ return {...config, ...header}
104
104
  }
105
105
 
106
106
  /**
@@ -122,18 +122,18 @@ class Panel extends Container {
122
122
  topHeaders = headers.filter(header => {return header.dock === (hf ?'top' : 'left')}),
123
123
  hasHorizontalHeaders = bottomHeaders.length > 0 || topHeaders .length > 0,
124
124
  hasVerticalHeaders = leftHeaders .length > 0 || rightHeaders.length > 0,
125
- items = me.items,
125
+ {items} = me,
126
126
  horizontalItems = [],
127
127
  verticalItems = [],
128
128
  config;
129
129
 
130
130
  topHeaders.forEach(header => {
131
- verticalItems.push(Panel.createHeaderConfig(header));
131
+ verticalItems.push(Panel.createHeaderConfig(header))
132
132
  });
133
133
 
134
134
  if (hasVerticalHeaders && (hf && hasHorizontalHeaders || !hf && hasHorizontalHeaders)) {
135
135
  leftHeaders.forEach(header => {
136
- horizontalItems.push(Panel.createHeaderConfig(header));
136
+ horizontalItems.push(Panel.createHeaderConfig(header))
137
137
  });
138
138
 
139
139
  config = {
@@ -147,7 +147,7 @@ class Panel extends Container {
147
147
  horizontalItems.push({...me.headerDefaults, ...config});
148
148
 
149
149
  rightHeaders.forEach(header => {
150
- horizontalItems.push(Panel.createHeaderConfig(header));
150
+ horizontalItems.push(Panel.createHeaderConfig(header))
151
151
  });
152
152
 
153
153
  verticalItems.push({
@@ -167,18 +167,18 @@ class Panel extends Container {
167
167
  ...containerConfig
168
168
  };
169
169
 
170
- verticalItems.push({...me.headerDefaults, ...config});
170
+ verticalItems.push({...me.headerDefaults, ...config})
171
171
  }
172
172
 
173
173
  bottomHeaders.forEach(header => {
174
- verticalItems.push(Panel.createHeaderConfig(header));
174
+ verticalItems.push(Panel.createHeaderConfig(header))
175
175
  });
176
176
 
177
177
  me.items = verticalItems;
178
178
 
179
179
  me.itemDefaults = null;
180
180
 
181
- super.createItems();
181
+ super.createItems()
182
182
  }
183
183
  }
184
184
 
@@ -186,7 +186,7 @@ class Panel extends Container {
186
186
  * @returns {Boolean}
187
187
  */
188
188
  hasHeaders() {
189
- return Array.isArray(this.headers) && this.headers.length > 0;
189
+ return Array.isArray(this.headers) && this.headers.length > 0
190
190
  }
191
191
  }
192
192
 
@@ -96,9 +96,9 @@ class Base extends CoreBase {
96
96
  *
97
97
  */
98
98
  async onConstructed() {
99
- let me = this,
100
- currentHash = HashHistory.first(),
101
- defaultHash = me.defaultHash;
99
+ let me = this,
100
+ currentHash = HashHistory.first(),
101
+ {defaultHash} = me;
102
102
 
103
103
  // get outside the construction chain => a related cmp & vm has to be constructed too
104
104
  await me.timeout(1);
@@ -128,14 +128,13 @@ class Base extends CoreBase {
128
128
  return
129
129
  }
130
130
 
131
- let me = this,
132
- counter = 0,
133
- hasRouteBeenFound = false,
134
- handleRoutes = me.handleRoutes,
135
- routeKeys = Object.keys(handleRoutes),
136
- routeKeysLength = routeKeys.length,
137
- routes = me.routes,
138
- handler, key, paramObject, preHandler, responsePreHandler, result, route;
131
+ let me = this,
132
+ counter = 0,
133
+ hasRouteBeenFound = false,
134
+ {handleRoutes, routes} = me,
135
+ routeKeys = Object.keys(handleRoutes),
136
+ routeKeysLength = routeKeys.length,
137
+ arrayParamIds, arrayParamValues, handler, key, paramObject, preHandler, responsePreHandler, result, route;
139
138
 
140
139
  while (routeKeysLength > 0 && counter < routeKeysLength && !hasRouteBeenFound) {
141
140
  key = routeKeys[counter];
@@ -146,9 +145,8 @@ class Base extends CoreBase {
146
145
  result = value.hashString.match(handleRoutes[key]);
147
146
 
148
147
  if (result) {
149
- const
150
- arrayParamIds = key.match(routeParamRegex),
151
- arrayParamValues = result.splice(1, result.length - 1);
148
+ arrayParamIds = key.match(routeParamRegex);
149
+ arrayParamValues = result.splice(1, result.length - 1);
152
150
 
153
151
  if (arrayParamIds && arrayParamIds.length !== arrayParamValues.length) {
154
152
  throw 'Number of IDs and number of Values do not match'
@@ -43,8 +43,8 @@ class Component extends Base {
43
43
  construct(config) {
44
44
  super.construct(config);
45
45
 
46
- let me = this,
47
- component = me.component,
46
+ let me = this,
47
+ {component} = me,
48
48
  listenerId;
49
49
 
50
50
  me.references = {};
@@ -55,7 +55,7 @@ class Component extends Base {
55
55
  listenerId = component.on('constructed', () => {
56
56
  component.un('constructed', listenerId);
57
57
  me.onComponentConstructed()
58
- });
58
+ })
59
59
  }
60
60
  }
61
61
 
@@ -75,8 +75,8 @@ class Component extends Base {
75
75
  * @returns {Neo.controller.Component|Boolean|null}
76
76
  */
77
77
  getHandlerScope(handlerName, component) {
78
- let me = this,
79
- parent = me.parent;
78
+ let me = this,
79
+ {parent} = me;
80
80
 
81
81
  if (component) {
82
82
  // Look for ths function *name* first in the Component itself.
@@ -101,7 +101,7 @@ class Component extends Base {
101
101
  * @param {Boolean} [sameLevelOnly=false]
102
102
  */
103
103
  getModel(sameLevelOnly=false) {
104
- let component = this.component;
104
+ let {component} = this;
105
105
  return sameLevelOnly ? component.model : component.getModel()
106
106
  }
107
107
 
@@ -110,10 +110,11 @@ class Component extends Base {
110
110
  * @returns {Neo.controller.Component|null}
111
111
  */
112
112
  getParent() {
113
- let me = this;
113
+ let me = this,
114
+ {parent} = me;
114
115
 
115
- if (me.parent) {
116
- return me.parent;
116
+ if (parent) {
117
+ return parent;
117
118
  }
118
119
 
119
120
  return me.component.parent?.getController() || null
@@ -158,11 +159,8 @@ class Component extends Base {
158
159
  * @param {Neo.component.Base} component=this.component
159
160
  */
160
161
  parseConfig(component=this.component) {
161
- let me = this,
162
- handler = component.handler,
163
- listeners = component.listeners,
164
- reference = component.reference,
165
- validator = component.validator,
162
+ let me = this,
163
+ {handler, listeners, reference, validator} = component,
166
164
  eventHandler, handlerScope;
167
165
 
168
166
  if (handler && typeof handler === 'string') {
@@ -174,36 +172,34 @@ class Component extends Base {
174
172
  }
175
173
  }
176
174
 
177
- if (listeners) {
178
- Object.entries(listeners).forEach(([key, value]) => {
179
- if (key !== 'scope' && key !== 'delegate') {
180
- if (Neo.isString(value)) {
181
- eventHandler = value;
182
- handlerScope = me.getHandlerScope(eventHandler, component);
183
-
184
- if (!handlerScope) {
185
- Logger.logError('Unknown event handler for', eventHandler, component)
186
- } else if (handlerScope !== true) {
187
- listeners[key] = {};
188
- listeners[key].fn = handlerScope[eventHandler].bind(handlerScope)
189
- }
190
- } else {
191
- value.forEach(listener => {
192
- if (Neo.isObject(listener) && listener.hasOwnProperty('fn') && Neo.isString(listener.fn)) {
193
- eventHandler = listener.fn;
194
- handlerScope = me.getHandlerScope(eventHandler, component);
195
-
196
- if (!handlerScope) {
197
- console.error('Unknown event handler for', eventHandler, component)
198
- } else if (handlerScope !== true) {
199
- listener.fn = handlerScope[eventHandler].bind(handlerScope)
200
- }
201
- }
202
- });
175
+ listeners && Object.entries(listeners).forEach(([key, value]) => {
176
+ if (key !== 'scope' && key !== 'delegate') {
177
+ if (Neo.isString(value)) {
178
+ eventHandler = value;
179
+ handlerScope = me.getHandlerScope(eventHandler, component);
180
+
181
+ if (!handlerScope) {
182
+ Logger.logError('Unknown event handler for', eventHandler, component)
183
+ } else if (handlerScope !== true) {
184
+ listeners[key] = {};
185
+ listeners[key].fn = handlerScope[eventHandler].bind(handlerScope)
203
186
  }
187
+ } else {
188
+ value.forEach(listener => {
189
+ if (Neo.isObject(listener) && listener.hasOwnProperty('fn') && Neo.isString(listener.fn)) {
190
+ eventHandler = listener.fn;
191
+ handlerScope = me.getHandlerScope(eventHandler, component);
192
+
193
+ if (!handlerScope) {
194
+ console.error('Unknown event handler for', eventHandler, component)
195
+ } else if (handlerScope !== true) {
196
+ listener.fn = handlerScope[eventHandler].bind(handlerScope)
197
+ }
198
+ }
199
+ })
204
200
  }
205
- });
206
- }
201
+ }
202
+ });
207
203
 
208
204
  if (Neo.isString(validator)) {
209
205
  handlerScope = me.getHandlerScope(validator);
@@ -224,35 +220,33 @@ class Component extends Base {
224
220
  * @param {Neo.component.Base} component=this.component
225
221
  */
226
222
  parseDomListeners(component=this.component) {
227
- let me = this,
228
- domListeners = component.domListeners,
223
+ let me = this,
224
+ {domListeners} = component,
229
225
  eventHandler, scope;
230
226
 
231
- if (domListeners) {
232
- domListeners.forEach(domListener => {
233
- Object.entries(domListener).forEach(([key, value]) => {
234
- eventHandler = null;
227
+ domListeners?.forEach(domListener => {
228
+ Object.entries(domListener).forEach(([key, value]) => {
229
+ eventHandler = null;
235
230
 
236
- if (key !== 'scope' && key !== 'delegate') {
237
- if (Neo.isString(value)) {
238
- eventHandler = value;
239
- } else if (Neo.isObject(value) && value.hasOwnProperty('fn') && Neo.isString(value.fn)) {
240
- eventHandler = value.fn;
241
- }
231
+ if (key !== 'scope' && key !== 'delegate') {
232
+ if (Neo.isString(value)) {
233
+ eventHandler = value;
234
+ } else if (Neo.isObject(value) && value.hasOwnProperty('fn') && Neo.isString(value.fn)) {
235
+ eventHandler = value.fn;
236
+ }
242
237
 
243
- if (eventHandler) {
244
- scope = me.getHandlerScope(eventHandler);
238
+ if (eventHandler) {
239
+ scope = me.getHandlerScope(eventHandler);
245
240
 
246
- if (!scope) {
247
- Logger.logError('Unknown domEvent handler for', eventHandler, component)
248
- } else {
249
- domListener[key] = scope[eventHandler].bind(scope)
250
- }
241
+ if (!scope) {
242
+ Logger.logError('Unknown domEvent handler for', eventHandler, component)
243
+ } else {
244
+ domListener[key] = scope[eventHandler].bind(scope)
251
245
  }
252
246
  }
253
- })
247
+ }
254
248
  })
255
- }
249
+ })
256
250
  }
257
251
 
258
252
  /**
@@ -260,14 +254,14 @@ class Component extends Base {
260
254
  * @param {Neo.component.Base} component
261
255
  */
262
256
  removeReference(component) {
263
- let me = this,
264
- references = me.references,
257
+ let me = this,
258
+ {references} = me,
265
259
  key;
266
260
 
267
261
  for (key in references) {
268
262
  if (component === references[key]) {
269
263
  delete references[key];
270
- break;
264
+ break
271
265
  }
272
266
  }
273
267
 
package/src/core/Base.mjs CHANGED
@@ -382,11 +382,9 @@ class Base {
382
382
  * @protected
383
383
  */
384
384
  initRemote() {
385
- let me = this,
386
- remote = me.remote,
387
- className = me.className,
388
- currentWorker = Neo.currentWorker,
389
- listenerId;
385
+ let me = this,
386
+ {className, remote} = me,
387
+ {currentWorker} = Neo;
390
388
 
391
389
  if (!me.singleton && !me.isMainThreadAddon) {
392
390
  throw new Error('Remote method access is only functional for Singleton classes ' + className)
@@ -394,10 +392,9 @@ class Base {
394
392
 
395
393
  if (!Neo.config.unitTestMode && Neo.isObject(remote)) {
396
394
  if (Neo.workerId !== 'main' && currentWorker.isSharedWorker && !currentWorker.isConnected) {
397
- listenerId = currentWorker.on('connected', () => {
398
- currentWorker.un('connected', listenerId);
395
+ currentWorker.on('connected', () => {
399
396
  Base.sendRemotes(className, remote)
400
- });
397
+ }, me, {once: true})
401
398
  } else {
402
399
  Base.sendRemotes(className, remote)
403
400
  }
@@ -72,6 +72,4 @@ class IdGenerator {
72
72
  onConstructed() {}
73
73
  }
74
74
 
75
- let instance = Neo.setupClass(IdGenerator);
76
-
77
- export default instance;
75
+ export default Neo.setupClass(IdGenerator);
@@ -33,12 +33,28 @@ class Observable extends Base {
33
33
  * @returns {String|null} eventId null in case an object gets passed as the name (multiple ids)
34
34
  */
35
35
  addListener(name, opts, scope, eventId, data, order) {
36
- let me = this,
37
- delay = 0,
38
- nameObject = typeof name === 'object',
39
- once = false,
36
+ let me = this,
37
+ delay = 0,
38
+ eventIdObject = typeof eventId === 'object',
39
+ nameObject = typeof name === 'object',
40
+ once = false,
41
+ optsType = typeof opts,
40
42
  listener, existing, eventConfig;
41
43
 
44
+ /*
45
+ * let us support the following format too:
46
+ *
47
+ * currentWorker.on('connected', () => {
48
+ * Base.sendRemotes(className, remote)
49
+ * }, me, {once: true})
50
+ */
51
+ if (eventIdObject && optsType === 'function') {
52
+ eventId.fn = opts;
53
+ opts = eventId;
54
+ optsType = 'object';
55
+ eventId = null;
56
+ }
57
+
42
58
  if (nameObject) {
43
59
  if (name.hasOwnProperty('delay')) {
44
60
  delay = name.delay;
@@ -62,19 +78,19 @@ class Observable extends Base {
62
78
  me.addListener(key, {delay, fn: value, once, scope})
63
79
  }
64
80
  })
65
- } else if (typeof opts === 'object') {
81
+ } else if (optsType === 'object') {
66
82
  delay = delay || opts.delay;
67
83
  eventId = eventId || opts.eventId;
68
84
  listener = opts.fn;
69
85
  once = once || opts.once;
70
86
  order = order || opts.order;
71
- scope = scope || opts.scope;
72
- } else if (typeof opts === 'function') {
73
- listener = opts;
74
- } else if (typeof opts === 'string') {
75
- listener = opts; // VC hook, can get parsed after onConstructed in case the view uses the parent VC
87
+ scope = scope || opts.scope
88
+ } else if (optsType === 'function') {
89
+ listener = opts
90
+ } else if (optsType === 'string') {
91
+ listener = opts // VC hook, can get parsed after onConstructed in case the view uses the parent VC
76
92
  } else {
77
- throw new Error('Invalid addListener call: ' + name);
93
+ throw new Error('Invalid addListener call: ' + name)
78
94
  }
79
95
 
80
96
  if (!nameObject) {
@@ -90,19 +106,19 @@ class Observable extends Base {
90
106
  if (existing = me.listeners?.[name]) {
91
107
  existing.forEach(cfg => {
92
108
  if (cfg.id === eventId || (cfg.fn === listener && cfg.scope === scope)) {
93
- console.error('Duplicate event handler attached:', name, me);
109
+ console.error('Duplicate event handler attached:', name, me)
94
110
  }
95
111
  });
96
112
 
97
113
  if (typeof order === 'number') {
98
- existing.splice(order, 0, eventConfig);
114
+ existing.splice(order, 0, eventConfig)
99
115
  } else if (order === 'before') {
100
- existing.unshift(eventConfig);
116
+ existing.unshift(eventConfig)
101
117
  } else {
102
- existing.push(eventConfig);
118
+ existing.push(eventConfig)
103
119
  }
104
120
  } else {
105
- me.listeners[name] = [eventConfig];
121
+ me.listeners[name] = [eventConfig]
106
122
  }
107
123
 
108
124
  return eventConfig.id
@@ -193,7 +209,7 @@ class Observable extends Base {
193
209
 
194
210
  if (config.listeners) {
195
211
  me.listeners = config.listeners;
196
- delete config.listeners;
212
+ delete config.listeners
197
213
  }
198
214
 
199
215
  listeners = me.listeners;
@@ -202,7 +218,7 @@ class Observable extends Base {
202
218
 
203
219
  if (listeners) {
204
220
  if (Neo.isObject(listeners)) {
205
- listeners = {...listeners};
221
+ listeners = {...listeners}
206
222
  }
207
223
 
208
224
  me.addListener(listeners);
@@ -219,10 +235,10 @@ class Observable extends Base {
219
235
  on : me.on,
220
236
  removeListener: me.removeListener,
221
237
  un : me.un
222
- });
238
+ })
223
239
  }
224
240
 
225
- proto = proto.__proto__;
241
+ proto = proto.__proto__
226
242
  }
227
243
  }
228
244
 
@@ -237,7 +253,7 @@ class Observable extends Base {
237
253
  * @returns {String} eventId
238
254
  */
239
255
  on(...args) {
240
- return this.addListener(...args);
256
+ return this.addListener(...args)
241
257
  }
242
258
 
243
259
  /**
@@ -290,7 +306,7 @@ class Observable extends Base {
290
306
  listener.scope === scope
291
307
  ) {
292
308
  listeners.splice(i, 1);
293
- break;
309
+ break
294
310
  }
295
311
  }
296
312
  });
@@ -300,12 +316,12 @@ class Observable extends Base {
300
316
 
301
317
  listeners.forEach((eventConfig, idx) => {
302
318
  if (eventConfig.id === eventId) {
303
- return match = idx;
319
+ return match = idx
304
320
  }
305
321
  });
306
322
 
307
323
  if (match !== false) {
308
- listeners.splice(match, 1);
324
+ listeners.splice(match, 1)
309
325
  }
310
326
  }
311
327
  }
package/src/core/Util.mjs CHANGED
@@ -32,8 +32,8 @@ class Util extends Base {
32
32
  */
33
33
  static bindMethods(scope, values) {
34
34
  values.forEach(value => {
35
- scope[value] = scope[value].bind(scope);
36
- });
35
+ scope[value] = scope[value].bind(scope)
36
+ })
37
37
  }
38
38
 
39
39
  /**
@@ -54,17 +54,17 @@ class Util extends Base {
54
54
  parts = el.split((/:(.+)/)).map(function (x) {
55
55
  let num = parseFloat(x);
56
56
 
57
- return x == num ? num : x.trim();
57
+ return x == num ? num : x.trim()
58
58
  });
59
59
 
60
60
  if (parts[0] !== '') {
61
61
  parts[0] = parts[0].replace(/-([a-z])/g, (str, letter) => {
62
- return letter.toUpperCase();
62
+ return letter.toUpperCase()
63
63
  });
64
64
 
65
65
  obj[parts[0]] = parts[1]
66
66
  }
67
- return obj;
67
+ return obj
68
68
  }, {})
69
69
  }
70
70
 
@@ -43,7 +43,7 @@ class Model extends Base {
43
43
  * @property {Boolean} isRecord=true
44
44
  * @readonly
45
45
  */
46
- isRecord = true;
46
+ isRecord = true
47
47
 
48
48
  /**
49
49
  * Finds a field config by a given field name
@@ -57,11 +57,11 @@ class Model extends Base {
57
57
 
58
58
  for (; i < len; i++) {
59
59
  if (me.fields[i].name === name) {
60
- return me.fields[i];
60
+ return me.fields[i]
61
61
  }
62
62
  }
63
63
 
64
- return null;
64
+ return null
65
65
  }
66
66
  }
67
67
 
@@ -98,7 +98,7 @@ class RecordFactory extends Base {
98
98
  configurable: true,
99
99
  enumerable : true,
100
100
  get() {
101
- return this[symbol];
101
+ return this[symbol]
102
102
  },
103
103
  set(value) {
104
104
  let me = this,
@@ -203,7 +203,7 @@ class RecordFactory extends Base {
203
203
  return !Neo.isEqual(record[fieldName], record[modifiedField])
204
204
  }
205
205
 
206
- return null;
206
+ return null
207
207
  }
208
208
 
209
209
  /**
@@ -245,10 +245,7 @@ class RecordFactory extends Base {
245
245
  }
246
246
 
247
247
  let fieldName = field.name,
248
- mapping = field.mapping,
249
- maxLength = field.maxLength,
250
- minLength = field.minLength,
251
- nullable = field.nullable,
248
+ {mapping, maxLength, minLength, nullable} = field,
252
249
  oldValue = recordConfig?.[fieldName] || record[fieldName],
253
250
  type = field.type?.toLowerCase();
254
251