neo.mjs 10.0.0-beta.5 → 10.0.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 (491) hide show
  1. package/.github/RELEASE_NOTES/v10.0.0-beta.1.md +20 -0
  2. package/.github/RELEASE_NOTES/v10.0.0-beta.2.md +73 -0
  3. package/.github/RELEASE_NOTES/v10.0.0-beta.3.md +39 -0
  4. package/.github/RELEASE_NOTES/v10.0.0-beta.5.md +70 -0
  5. package/.github/RELEASE_NOTES/v10.0.0-beta.6.md +48 -0
  6. package/.github/RELEASE_NOTES/v10.0.0.md +52 -0
  7. package/.github/epic-functional-components.md +498 -0
  8. package/.github/ticket-asymmetric-vdom-updates.md +122 -0
  9. package/README.md +0 -3
  10. package/ServiceWorker.mjs +2 -2
  11. package/apps/colors/store/Colors.mjs +1 -0
  12. package/apps/colors/view/GridContainer.mjs +3 -0
  13. package/apps/colors/view/HeaderToolbar.mjs +2 -0
  14. package/apps/colors/view/Viewport.mjs +3 -0
  15. package/apps/covid/view/FooterContainer.mjs +3 -0
  16. package/apps/covid/view/GalleryContainer.mjs +2 -0
  17. package/apps/covid/view/GalleryContainerController.mjs +1 -0
  18. package/apps/covid/view/HeaderContainer.mjs +2 -0
  19. package/apps/covid/view/HelixContainer.mjs +2 -0
  20. package/apps/covid/view/HelixContainerController.mjs +1 -0
  21. package/apps/covid/view/MainContainer.mjs +3 -0
  22. package/apps/covid/view/TableContainer.mjs +3 -0
  23. package/apps/covid/view/TableContainerController.mjs +1 -0
  24. package/apps/covid/view/WorldMapContainer.mjs +2 -0
  25. package/apps/covid/view/country/Gallery.mjs +3 -0
  26. package/apps/covid/view/country/Helix.mjs +8 -0
  27. package/apps/covid/view/country/HistoricalDataTable.mjs +1 -0
  28. package/apps/covid/view/country/Table.mjs +2 -0
  29. package/apps/covid/view/mapboxGl/Component.mjs +1 -0
  30. package/apps/covid/view/mapboxGl/Container.mjs +2 -0
  31. package/apps/email/EPIC_PLAN.md +58 -0
  32. package/apps/email/neo-config.json +2 -2
  33. package/apps/email/store/Emails.mjs +11 -1
  34. package/apps/email/view/ComposeView.mjs +44 -0
  35. package/apps/email/view/MainView.mjs +89 -0
  36. package/apps/email/view/Viewport.mjs +4 -33
  37. package/apps/email/view/ViewportStateProvider.mjs +3 -3
  38. package/apps/form/store/SideNav.mjs +1 -0
  39. package/apps/form/view/FormContainer.mjs +1 -0
  40. package/apps/form/view/FormPageContainer.mjs +2 -0
  41. package/apps/form/view/SideNavList.mjs +1 -0
  42. package/apps/form/view/Viewport.mjs +3 -0
  43. package/apps/portal/childapps/preview/MainContainer.mjs +1 -0
  44. package/apps/portal/index.html +1 -1
  45. package/apps/portal/store/BlogPosts.mjs +2 -0
  46. package/apps/portal/store/Content.mjs +1 -0
  47. package/apps/portal/store/ContentSections.mjs +1 -0
  48. package/apps/portal/store/Examples.mjs +1 -0
  49. package/apps/portal/view/HeaderToolbar.mjs +1 -0
  50. package/apps/portal/view/Viewport.mjs +5 -0
  51. package/apps/portal/view/ViewportController.mjs +11 -3
  52. package/apps/portal/view/about/Container.mjs +2 -0
  53. package/apps/portal/view/about/MemberContainer.mjs +7 -0
  54. package/apps/portal/view/blog/Container.mjs +2 -0
  55. package/apps/portal/view/blog/List.mjs +2 -0
  56. package/apps/portal/view/examples/List.mjs +29 -19
  57. package/apps/portal/view/examples/TabContainer.mjs +4 -0
  58. package/apps/portal/view/home/ContentBox.mjs +3 -0
  59. package/apps/portal/view/home/FeatureSection.mjs +8 -0
  60. package/apps/portal/view/home/FooterContainer.mjs +4 -1
  61. package/apps/portal/view/home/MainContainer.mjs +2 -0
  62. package/apps/portal/view/home/parts/AfterMath.mjs +2 -0
  63. package/apps/portal/view/home/parts/BaseContainer.mjs +1 -0
  64. package/apps/portal/view/home/parts/Colors.mjs +4 -0
  65. package/apps/portal/view/home/parts/Features.mjs +2 -0
  66. package/apps/portal/view/home/parts/Helix.mjs +5 -0
  67. package/apps/portal/view/home/parts/How.mjs +4 -0
  68. package/apps/portal/view/home/parts/MainNeo.mjs +1 -0
  69. package/apps/portal/view/home/parts/References.mjs +2 -0
  70. package/apps/portal/view/learn/ContentComponent.mjs +11 -5
  71. package/apps/portal/view/learn/ContentTreeList.mjs +2 -0
  72. package/apps/portal/view/learn/CubeLayoutButton.mjs +1 -0
  73. package/apps/portal/view/learn/MainContainer.mjs +4 -0
  74. package/apps/portal/view/learn/PageContainer.mjs +2 -0
  75. package/apps/portal/view/learn/PageSectionsContainer.mjs +3 -0
  76. package/apps/portal/view/learn/PageSectionsList.mjs +1 -0
  77. package/apps/portal/view/services/Component.mjs +1 -0
  78. package/apps/realworld/api/Base.mjs +1 -0
  79. package/apps/realworld/view/HeaderComponent.mjs +4 -0
  80. package/apps/realworld/view/HomeComponent.mjs +7 -0
  81. package/apps/realworld/view/MainContainer.mjs +2 -0
  82. package/apps/realworld/view/MainContainerController.mjs +2 -0
  83. package/apps/realworld/view/article/CommentComponent.mjs +3 -0
  84. package/apps/realworld/view/article/Component.mjs +17 -10
  85. package/apps/realworld/view/article/CreateCommentComponent.mjs +2 -0
  86. package/apps/realworld/view/article/CreateComponent.mjs +5 -0
  87. package/apps/realworld/view/article/PreviewComponent.mjs +9 -0
  88. package/apps/realworld/view/article/TagListComponent.mjs +2 -0
  89. package/apps/realworld/view/user/ProfileComponent.mjs +7 -0
  90. package/apps/realworld/view/user/SettingsComponent.mjs +5 -0
  91. package/apps/realworld/view/user/SignUpComponent.mjs +3 -0
  92. package/apps/realworld2/api/Base.mjs +1 -0
  93. package/apps/realworld2/view/FooterComponent.mjs +1 -0
  94. package/apps/realworld2/view/HeaderToolbar.mjs +3 -0
  95. package/apps/realworld2/view/HomeContainer.mjs +1 -0
  96. package/apps/realworld2/view/MainContainer.mjs +2 -0
  97. package/apps/realworld2/view/MainContainerController.mjs +1 -0
  98. package/apps/realworld2/view/article/Helix.mjs +1 -0
  99. package/apps/realworld2/view/article/PreviewComponent.mjs +9 -0
  100. package/apps/realworld2/view/article/PreviewList.mjs +1 -0
  101. package/apps/realworld2/view/article/TagListComponent.mjs +2 -0
  102. package/apps/route/view/CenterContainer.mjs +1 -0
  103. package/apps/route/view/MainView.mjs +1 -0
  104. package/apps/sharedcovid/childapps/sharedcovidchart/MainContainer.mjs +1 -0
  105. package/apps/sharedcovid/childapps/sharedcovidgallery/MainContainer.mjs +1 -0
  106. package/apps/sharedcovid/childapps/sharedcovidhelix/MainContainer.mjs +1 -0
  107. package/apps/sharedcovid/childapps/sharedcovidmap/MainContainer.mjs +1 -0
  108. package/apps/sharedcovid/view/FooterContainer.mjs +3 -0
  109. package/apps/sharedcovid/view/GalleryContainer.mjs +2 -0
  110. package/apps/sharedcovid/view/GalleryContainerController.mjs +1 -0
  111. package/apps/sharedcovid/view/HeaderContainer.mjs +2 -0
  112. package/apps/sharedcovid/view/HelixContainer.mjs +2 -0
  113. package/apps/sharedcovid/view/HelixContainerController.mjs +1 -0
  114. package/apps/sharedcovid/view/MainContainer.mjs +3 -0
  115. package/apps/sharedcovid/view/TableContainer.mjs +3 -0
  116. package/apps/sharedcovid/view/TableContainerController.mjs +1 -0
  117. package/apps/sharedcovid/view/WorldMapContainer.mjs +2 -0
  118. package/apps/sharedcovid/view/country/Gallery.mjs +3 -0
  119. package/apps/sharedcovid/view/country/Helix.mjs +8 -0
  120. package/apps/sharedcovid/view/country/HistoricalDataTable.mjs +1 -0
  121. package/apps/sharedcovid/view/country/Table.mjs +2 -0
  122. package/apps/sharedcovid/view/mapboxGl/Component.mjs +1 -0
  123. package/apps/sharedcovid/view/mapboxGl/Container.mjs +2 -0
  124. package/apps/shareddialog/childapps/shareddialog2/view/MainContainer.mjs +2 -0
  125. package/apps/shareddialog/view/DemoDialog.mjs +2 -0
  126. package/apps/shareddialog/view/MainContainer.mjs +2 -0
  127. package/apps/shareddialog/view/MainContainerController.mjs +1 -0
  128. package/buildScripts/addReactiveTags.mjs +191 -0
  129. package/buildScripts/checkReactiveTags.mjs +160 -0
  130. package/docs/app/store/Api.mjs +1 -0
  131. package/docs/app/store/Examples.mjs +1 -0
  132. package/docs/app/view/ApiTreeList.mjs +1 -0
  133. package/docs/app/view/ContentTabContainer.mjs +2 -0
  134. package/docs/app/view/ExamplesTreeList.mjs +2 -0
  135. package/docs/app/view/HeaderContainer.mjs +3 -0
  136. package/docs/app/view/MainContainer.mjs +5 -0
  137. package/docs/app/view/classdetails/HeaderComponent.mjs +1 -0
  138. package/docs/app/view/classdetails/MainContainer.mjs +3 -0
  139. package/docs/app/view/classdetails/MembersList.mjs +5 -0
  140. package/docs/app/view/classdetails/SourceViewComponent.mjs +2 -0
  141. package/examples/ConfigurationViewport.mjs +14 -8
  142. package/examples/calendar/weekview/MainContainer.mjs +4 -0
  143. package/examples/component/coronaGallery/CountryGallery.mjs +2 -0
  144. package/examples/component/coronaGallery/CountryStore.mjs +1 -0
  145. package/examples/component/coronaGallery/Viewport.mjs +3 -0
  146. package/examples/component/coronaGallery/ViewportController.mjs +1 -0
  147. package/examples/component/coronaHelix/CountryHelix.mjs +7 -0
  148. package/examples/component/coronaHelix/MainContainer.mjs +1 -0
  149. package/examples/component/gallery/ImageStore.mjs +1 -0
  150. package/examples/component/helix/ImageStore.mjs +1 -0
  151. package/examples/component/helix/Viewport.mjs +3 -0
  152. package/examples/component/helix/ViewportController.mjs +1 -0
  153. package/examples/component/multiWindowCoronaGallery/childapp/Viewport.mjs +1 -0
  154. package/examples/component/multiWindowHelix/childapp/Viewport.mjs +1 -0
  155. package/examples/component/wrapper/googleMaps/MapComponent.mjs +2 -0
  156. package/examples/core/config/MainContainer.mjs +2 -0
  157. package/examples/dialog/DemoDialog.mjs +2 -0
  158. package/examples/dialog/MainContainer.mjs +1 -0
  159. package/examples/form/field/color/MainStore.mjs +1 -0
  160. package/examples/functional/button/base/MainContainer.mjs +207 -0
  161. package/examples/functional/button/base/app.mjs +6 -0
  162. package/examples/functional/button/base/index.html +11 -0
  163. package/examples/functional/button/base/neo-config.json +6 -0
  164. package/examples/functional/defineComponent/Component.mjs +18 -0
  165. package/examples/functional/defineComponent/MainContainer.mjs +41 -0
  166. package/examples/functional/defineComponent/app.mjs +6 -0
  167. package/examples/functional/defineComponent/index.html +11 -0
  168. package/examples/functional/defineComponent/neo-config.json +6 -0
  169. package/examples/functional/hostComponent/Component.mjs +32 -0
  170. package/examples/functional/hostComponent/MainContainer.mjs +48 -0
  171. package/examples/functional/hostComponent/app.mjs +6 -0
  172. package/examples/functional/hostComponent/index.html +11 -0
  173. package/examples/functional/hostComponent/neo-config.json +6 -0
  174. package/examples/grid/animatedRowSorting/Viewport.mjs +1 -1
  175. package/examples/grid/bigData/ControlsContainer.mjs +3 -0
  176. package/examples/grid/bigData/GridContainer.mjs +4 -2
  177. package/examples/grid/bigData/MainContainer.mjs +2 -0
  178. package/examples/grid/bigData/MainModel.mjs +1 -0
  179. package/examples/grid/bigData/MainStore.mjs +3 -0
  180. package/examples/grid/cellEditing/MainContainer.mjs +1 -1
  181. package/examples/grid/container/MainContainer.mjs +1 -1
  182. package/examples/grid/covid/GridContainer.mjs +3 -0
  183. package/examples/grid/covid/MainContainer.mjs +2 -0
  184. package/examples/grid/covid/Store.mjs +1 -0
  185. package/examples/grid/nestedRecordFields/EditUserDialog.mjs +3 -0
  186. package/examples/grid/nestedRecordFields/Viewport.mjs +3 -1
  187. package/examples/list/animate/List.mjs +4 -0
  188. package/examples/list/animate/MainContainer.mjs +2 -0
  189. package/examples/list/circle/MainStore.mjs +1 -0
  190. package/examples/list/color/MainStore.mjs +1 -0
  191. package/examples/preloadingAssets/view/MainContainer.mjs +2 -0
  192. package/examples/stateProvider/advanced/MainContainer.mjs +1 -0
  193. package/examples/stateProvider/dialog/EditUserDialog.mjs +2 -0
  194. package/examples/stateProvider/dialog/MainContainer.mjs +1 -0
  195. package/examples/stateProvider/extendedClass/MainContainer.mjs +2 -0
  196. package/examples/stateProvider/inline/MainContainer.mjs +1 -0
  197. package/examples/stateProvider/inlineNoStateProvider/MainContainer.mjs +1 -0
  198. package/examples/stateProvider/inlineNoStateProvider/MainContainerController.mjs +2 -0
  199. package/examples/stateProvider/multiWindow/EditUserDialog.mjs +3 -0
  200. package/examples/stateProvider/multiWindow/MainContainer.mjs +1 -0
  201. package/examples/stateProvider/multiWindow/Viewport.mjs +1 -0
  202. package/examples/stateProvider/nestedData/MainContainer.mjs +1 -0
  203. package/examples/stateProvider/table/MainContainer.mjs +1 -0
  204. package/examples/table/covid/MainContainer.mjs +2 -0
  205. package/examples/table/covid/Store.mjs +1 -0
  206. package/examples/table/covid/TableContainer.mjs +3 -0
  207. package/examples/table/nestedRecordFields/EditUserDialog.mjs +3 -0
  208. package/examples/table/nestedRecordFields/Viewport.mjs +1 -0
  209. package/examples/todoList/version1/MainComponent.mjs +1 -1
  210. package/examples/toolbar/breadcrumb/view/MainContainer.mjs +2 -0
  211. package/examples/toolbar/paging/store/Users.mjs +1 -0
  212. package/examples/toolbar/paging/view/AddUserDialog.mjs +3 -0
  213. package/examples/toolbar/paging/view/MainContainer.mjs +3 -0
  214. package/examples/treeAccordion/MainContainer.mjs +2 -2
  215. package/examples/worker/task/MainContainer.mjs +1 -0
  216. package/learn/Glossary.md +1 -0
  217. package/learn/UsingTheseTopics.md +1 -0
  218. package/learn/benefits/ConfigSystem.md +2 -0
  219. package/learn/benefits/Effort.md +1 -0
  220. package/learn/benefits/Features.md +1 -0
  221. package/learn/benefits/FormsEngine.md +1 -0
  222. package/learn/benefits/FourEnvironments.md +2 -0
  223. package/learn/benefits/Introduction.md +2 -0
  224. package/learn/benefits/MultiWindow.md +3 -1
  225. package/learn/benefits/OffTheMainThread.md +2 -0
  226. package/learn/benefits/Quick.md +2 -0
  227. package/learn/benefits/RPCLayer.md +2 -0
  228. package/learn/benefits/Speed.md +2 -0
  229. package/learn/blog/v10-deep-dive-functional-components.md +293 -0
  230. package/learn/blog/v10-deep-dive-reactivity.md +522 -0
  231. package/learn/blog/v10-deep-dive-state-provider.md +432 -0
  232. package/learn/blog/v10-deep-dive-vdom-revolution.md +194 -0
  233. package/learn/blog/v10-post1-love-story.md +383 -0
  234. package/learn/comparisons/NeoVsAngular.md +90 -0
  235. package/learn/comparisons/NeoVsExtJs.md +178 -0
  236. package/learn/comparisons/NeoVsNextJs.md +124 -0
  237. package/learn/comparisons/NeoVsReact.md +95 -0
  238. package/learn/comparisons/NeoVsSolid.md +78 -0
  239. package/learn/comparisons/NeoVsVue.md +92 -0
  240. package/learn/comparisons/Overview.md +46 -0
  241. package/learn/gettingstarted/ComponentModels.md +2 -0
  242. package/learn/gettingstarted/Config.md +2 -0
  243. package/learn/gettingstarted/DescribingTheUI.md +2 -0
  244. package/learn/gettingstarted/Events.md +2 -0
  245. package/learn/gettingstarted/Extending.md +2 -0
  246. package/learn/gettingstarted/References.md +2 -0
  247. package/learn/gettingstarted/Setup.md +3 -2
  248. package/learn/gettingstarted/Workspaces.md +2 -0
  249. package/learn/guides/datahandling/Collections.md +1 -0
  250. package/learn/guides/datahandling/Records.md +1 -0
  251. package/learn/guides/datahandling/StateProviders.md +130 -16
  252. package/learn/guides/datahandling/Tables.md +1 -1
  253. package/learn/guides/fundamentals/ConfigSystemDeepDive.md +1 -0
  254. package/learn/guides/fundamentals/DeclarativeComponentTreesVsImperativeVdom.md +2 -0
  255. package/learn/guides/fundamentals/DeclarativeVDOMWithEffects.md +10 -8
  256. package/learn/guides/fundamentals/ExtendingNeoClasses.md +1 -0
  257. package/learn/guides/fundamentals/InstanceLifecycle.md +3 -1
  258. package/learn/guides/fundamentals/MainThreadAddons.md +2 -0
  259. package/learn/guides/specificfeatures/Mixins.md +3 -1
  260. package/learn/guides/specificfeatures/MultiWindow.md +3 -1
  261. package/learn/guides/specificfeatures/PortalApp.md +2 -0
  262. package/learn/guides/uibuildingblocks/ComponentsAndContainers.md +2 -0
  263. package/learn/guides/uibuildingblocks/CustomComponents.md +2 -0
  264. package/learn/guides/uibuildingblocks/Layouts.md +2 -0
  265. package/learn/guides/uibuildingblocks/WorkingWithVDom.md +28 -2
  266. package/learn/guides/userinteraction/Forms.md +2 -0
  267. package/learn/guides/userinteraction/events/CustomEvents.md +2 -1
  268. package/learn/guides/userinteraction/events/DomEvents.md +2 -0
  269. package/learn/javascript/ClassFeatures.md +4 -3
  270. package/learn/javascript/Classes.md +10 -13
  271. package/learn/javascript/Overrides.md +10 -6
  272. package/learn/javascript/Super.md +12 -8
  273. package/learn/tree.json +71 -64
  274. package/learn/tutorials/Earthquakes.md +2 -0
  275. package/learn/tutorials/RSP.md +3 -1
  276. package/learn/tutorials/TodoList.md +103 -7
  277. package/package.json +8 -6
  278. package/resources/scss/src/apps/email/ComposeView.scss +16 -0
  279. package/resources/scss/src/apps/email/MainView.scss +5 -0
  280. package/resources/scss/src/apps/portal/learn/ContentComponent.scss +5 -4
  281. package/src/DefaultConfig.mjs +12 -2
  282. package/src/Main.mjs +1 -0
  283. package/src/Neo.mjs +219 -166
  284. package/src/Xhr.mjs +1 -0
  285. package/src/button/Base.mjs +13 -0
  286. package/src/button/Effect.mjs +16 -2
  287. package/src/button/Split.mjs +2 -0
  288. package/src/calendar/store/Calendars.mjs +1 -0
  289. package/src/calendar/store/Colors.mjs +1 -0
  290. package/src/calendar/store/Events.mjs +1 -0
  291. package/src/calendar/view/DayComponent.mjs +2 -0
  292. package/src/calendar/view/EditEventContainer.mjs +4 -1
  293. package/src/calendar/view/MainContainer.mjs +13 -0
  294. package/src/calendar/view/MainContainerStateProvider.mjs +14 -28
  295. package/src/calendar/view/SettingsContainer.mjs +1 -0
  296. package/src/calendar/view/YearComponent.mjs +16 -0
  297. package/src/calendar/view/calendars/ColorsList.mjs +2 -0
  298. package/src/calendar/view/calendars/Container.mjs +2 -0
  299. package/src/calendar/view/calendars/EditContainer.mjs +1 -0
  300. package/src/calendar/view/month/Component.mjs +11 -0
  301. package/src/calendar/view/settings/GeneralContainer.mjs +1 -0
  302. package/src/calendar/view/settings/MonthContainer.mjs +1 -0
  303. package/src/calendar/view/settings/WeekContainer.mjs +1 -0
  304. package/src/calendar/view/settings/YearContainer.mjs +1 -0
  305. package/src/calendar/view/week/Component.mjs +15 -1
  306. package/src/calendar/view/week/TimeAxisComponent.mjs +4 -0
  307. package/src/code/LivePreview.mjs +51 -23
  308. package/src/collection/Base.mjs +7 -10
  309. package/src/collection/Filter.mjs +6 -0
  310. package/src/collection/Sorter.mjs +3 -0
  311. package/src/component/Abstract.mjs +412 -0
  312. package/src/component/Base.mjs +48 -1077
  313. package/src/component/Canvas.mjs +1 -0
  314. package/src/component/Chip.mjs +4 -0
  315. package/src/component/Circle.mjs +14 -0
  316. package/src/component/Clock.mjs +4 -0
  317. package/src/component/DateSelector.mjs +12 -0
  318. package/src/component/Gallery.mjs +11 -0
  319. package/src/component/Helix.mjs +24 -0
  320. package/src/component/Label.mjs +1 -0
  321. package/src/component/Legend.mjs +3 -0
  322. package/src/component/MagicMoveText.mjs +4 -0
  323. package/src/component/Progress.mjs +3 -0
  324. package/src/component/Splitter.mjs +3 -0
  325. package/src/component/StatusBadge.mjs +6 -0
  326. package/src/component/Timer.mjs +4 -0
  327. package/src/component/Toast.mjs +6 -0
  328. package/src/component/Video.mjs +1 -0
  329. package/src/component/mwc/Button.mjs +7 -0
  330. package/src/component/mwc/TextField.mjs +9 -0
  331. package/src/component/wrapper/AmChart.mjs +2 -0
  332. package/src/component/wrapper/GoogleMaps.mjs +3 -0
  333. package/src/component/wrapper/MapboxGL.mjs +5 -0
  334. package/src/component/wrapper/MonacoEditor.mjs +12 -0
  335. package/src/container/Accordion.mjs +2 -0
  336. package/src/container/Base.mjs +7 -3
  337. package/src/container/Panel.mjs +1 -0
  338. package/src/container/Viewport.mjs +1 -0
  339. package/src/controller/Application.mjs +1 -0
  340. package/src/controller/Base.mjs +1 -0
  341. package/src/controller/Component.mjs +1 -0
  342. package/src/core/Base.mjs +86 -33
  343. package/src/core/Compare.mjs +4 -7
  344. package/src/core/Config.mjs +65 -52
  345. package/src/core/Effect.mjs +86 -24
  346. package/src/core/EffectManager.mjs +117 -8
  347. package/src/core/IdGenerator.mjs +13 -44
  348. package/src/core/Observable.mjs +69 -65
  349. package/src/data/Model.mjs +2 -0
  350. package/src/data/Store.mjs +7 -0
  351. package/src/data/connection/WebSocket.mjs +2 -0
  352. package/src/date/DayViewComponent.mjs +2 -0
  353. package/src/date/SelectorContainer.mjs +14 -0
  354. package/src/dialog/Base.mjs +8 -0
  355. package/src/draggable/DragZone.mjs +5 -0
  356. package/src/draggable/tree/DragZone.mjs +1 -0
  357. package/src/filter/BooleanContainer.mjs +2 -0
  358. package/src/filter/NumberContainer.mjs +3 -0
  359. package/src/filter/ToggleOperatorsButton.mjs +2 -0
  360. package/src/form/Fieldset.mjs +6 -0
  361. package/src/form/field/Base.mjs +7 -0
  362. package/src/form/field/CheckBox.mjs +18 -0
  363. package/src/form/field/Chip.mjs +1 -0
  364. package/src/form/field/ComboBox.mjs +8 -0
  365. package/src/form/field/Country.mjs +1 -0
  366. package/src/form/field/Currency.mjs +2 -0
  367. package/src/form/field/Date.mjs +4 -0
  368. package/src/form/field/Display.mjs +1 -0
  369. package/src/form/field/Email.mjs +1 -0
  370. package/src/form/field/FileUpload.mjs +7 -0
  371. package/src/form/field/Hidden.mjs +1 -0
  372. package/src/form/field/Number.mjs +7 -0
  373. package/src/form/field/Password.mjs +1 -0
  374. package/src/form/field/Phone.mjs +3 -0
  375. package/src/form/field/Picker.mjs +2 -0
  376. package/src/form/field/Radio.mjs +1 -0
  377. package/src/form/field/Range.mjs +3 -0
  378. package/src/form/field/Search.mjs +2 -0
  379. package/src/form/field/Text.mjs +43 -5
  380. package/src/form/field/TextArea.mjs +7 -0
  381. package/src/form/field/Time.mjs +6 -0
  382. package/src/form/field/Url.mjs +3 -0
  383. package/src/form/field/ZipCode.mjs +2 -0
  384. package/src/form/field/trigger/Base.mjs +3 -0
  385. package/src/form/field/trigger/Clear.mjs +2 -0
  386. package/src/form/field/trigger/CopyToClipboard.mjs +2 -0
  387. package/src/form/field/trigger/Date.mjs +1 -0
  388. package/src/form/field/trigger/Picker.mjs +1 -0
  389. package/src/form/field/trigger/Search.mjs +1 -0
  390. package/src/form/field/trigger/SpinDown.mjs +2 -0
  391. package/src/form/field/trigger/SpinUp.mjs +1 -0
  392. package/src/form/field/trigger/Time.mjs +2 -0
  393. package/src/functional/_export.mjs +6 -0
  394. package/src/functional/button/Base.mjs +384 -0
  395. package/src/functional/component/Base.mjs +405 -0
  396. package/src/functional/defineComponent.mjs +102 -0
  397. package/src/functional/useConfig.mjs +52 -0
  398. package/src/functional/useEvent.mjs +43 -0
  399. package/src/grid/Body.mjs +20 -1
  400. package/src/grid/Container.mjs +50 -60
  401. package/src/grid/ScrollManager.mjs +2 -0
  402. package/src/grid/VerticalScrollbar.mjs +2 -0
  403. package/src/grid/column/Base.mjs +2 -0
  404. package/src/grid/header/Button.mjs +7 -0
  405. package/src/grid/header/Toolbar.mjs +6 -0
  406. package/src/grid/plugin/AnimateRows.mjs +2 -0
  407. package/src/layout/Base.mjs +3 -0
  408. package/src/layout/Card.mjs +1 -0
  409. package/src/layout/Cube.mjs +18 -4
  410. package/src/layout/Fit.mjs +1 -0
  411. package/src/layout/Flexbox.mjs +7 -0
  412. package/src/layout/Form.mjs +2 -0
  413. package/src/layout/Grid.mjs +1 -0
  414. package/src/layout/HBox.mjs +1 -0
  415. package/src/layout/VBox.mjs +1 -0
  416. package/src/list/Base.mjs +13 -0
  417. package/src/list/Chip.mjs +1 -0
  418. package/src/list/Circle.mjs +2 -0
  419. package/src/list/Color.mjs +1 -0
  420. package/src/list/plugin/Animate.mjs +2 -0
  421. package/src/main/DeltaUpdates.mjs +1 -0
  422. package/src/main/DomEvents.mjs +2 -0
  423. package/src/main/addon/CloneNode.mjs +1 -0
  424. package/src/main/addon/Cookie.mjs +1 -0
  425. package/src/main/addon/GoogleMaps.mjs +1 -0
  426. package/src/main/addon/LocalStorage.mjs +1 -0
  427. package/src/main/addon/MapboxGL.mjs +1 -0
  428. package/src/main/addon/Markdown.mjs +1 -0
  429. package/src/main/addon/Navigator.mjs +1 -0
  430. package/src/main/addon/Popover.mjs +1 -0
  431. package/src/main/addon/Stylesheet.mjs +1 -0
  432. package/src/main/addon/WindowPosition.mjs +1 -0
  433. package/src/manager/Component.mjs +0 -71
  434. package/src/manager/VDomUpdate.mjs +320 -0
  435. package/src/menu/List.mjs +6 -0
  436. package/src/menu/Model.mjs +1 -0
  437. package/src/menu/Panel.mjs +3 -0
  438. package/src/menu/Store.mjs +1 -0
  439. package/src/mixin/DomEvents.mjs +130 -0
  440. package/src/mixin/VdomLifecycle.mjs +670 -0
  441. package/src/plugin/Base.mjs +1 -0
  442. package/src/plugin/Resizable.mjs +2 -0
  443. package/src/selection/Model.mjs +15 -18
  444. package/src/selection/grid/BaseModel.mjs +1 -0
  445. package/src/sitemap/Component.mjs +1 -0
  446. package/src/state/Provider.mjs +129 -87
  447. package/src/state/createHierarchicalDataProxy.mjs +39 -25
  448. package/src/tab/Container.mjs +6 -0
  449. package/src/tab/Strip.mjs +1 -0
  450. package/src/tab/header/Button.mjs +2 -0
  451. package/src/tab/header/EffectButton.mjs +2 -0
  452. package/src/tab/header/Toolbar.mjs +1 -0
  453. package/src/table/Body.mjs +3 -0
  454. package/src/table/Container.mjs +10 -0
  455. package/src/table/header/Button.mjs +8 -0
  456. package/src/table/header/Toolbar.mjs +5 -0
  457. package/src/table/plugin/CellEditing.mjs +1 -0
  458. package/src/toolbar/Base.mjs +4 -0
  459. package/src/toolbar/Breadcrumb.mjs +3 -0
  460. package/src/toolbar/Paging.mjs +5 -0
  461. package/src/tooltip/Base.mjs +2 -0
  462. package/src/tree/List.mjs +3 -0
  463. package/src/util/HashHistory.mjs +1 -0
  464. package/src/util/KeyNavigation.mjs +2 -0
  465. package/src/util/Matrix.mjs +1 -0
  466. package/src/util/VDom.mjs +18 -5
  467. package/src/util/VNode.mjs +7 -1
  468. package/src/util/vdom/TreeBuilder.mjs +105 -0
  469. package/src/vdom/Helper.mjs +35 -23
  470. package/src/vdom/VNode.mjs +4 -6
  471. package/src/worker/App.mjs +1 -0
  472. package/src/worker/Base.mjs +2 -0
  473. package/src/worker/Manager.mjs +2 -0
  474. package/src/worker/ServiceBase.mjs +6 -1
  475. package/src/worker/mixin/RemoteMethodAccess.mjs +1 -6
  476. package/test/siesta/siesta.js +17 -2
  477. package/test/siesta/tests/VdomCalendar.mjs +19 -15
  478. package/test/siesta/tests/VdomHelper.mjs +7 -7
  479. package/test/siesta/tests/classic/Button.mjs +113 -0
  480. package/test/siesta/tests/core/Effect.mjs +10 -14
  481. package/test/siesta/tests/core/EffectBatching.mjs +72 -79
  482. package/test/siesta/tests/functional/Button.mjs +113 -0
  483. package/test/siesta/tests/state/ProviderNestedDataConfigs.mjs +314 -0
  484. package/test/siesta/tests/state/createHierarchicalDataProxy.mjs +42 -55
  485. package/test/siesta/tests/vdom/Advanced.mjs +14 -8
  486. package/test/siesta/tests/vdom/VdomAsymmetricUpdates.mjs +366 -0
  487. package/test/siesta/tests/vdom/VdomRealWorldUpdates.mjs +249 -0
  488. package/test/siesta/tests/vdom/layout/Cube.mjs +11 -7
  489. package/test/siesta/tests/vdom/table/Container.mjs +9 -5
  490. package/learn/javascript/NewNode.md +0 -31
  491. package/src/core/EffectBatchManager.mjs +0 -68
@@ -22,6 +22,7 @@ class SideNavList extends List {
22
22
  itemsFocusable: true,
23
23
  /**
24
24
  * @member {Boolean} useHeaders=true
25
+ * @reactive
25
26
  */
26
27
  useHeaders: true
27
28
  }
@@ -17,6 +17,7 @@ class Viewport extends BaseViewport {
17
17
  className: 'Form.view.Viewport',
18
18
  /**
19
19
  * @member {Neo.controller.Component} controller=ViewportController
20
+ * @reactive
20
21
  */
21
22
  controller: ViewportController,
22
23
  /**
@@ -46,10 +47,12 @@ class Viewport extends BaseViewport {
46
47
  }],
47
48
  /**
48
49
  * @member {Object} layout={ntype:'hbox',align:'stretch'}
50
+ * @reactive
49
51
  */
50
52
  layout: {ntype: 'hbox', align: 'stretch'},
51
53
  /**
52
54
  * @member {Neo.state.Provider} stateProvider=ViewportStateProvider
55
+ * @reactive
53
56
  */
54
57
  stateProvider: ViewportStateProvider
55
58
  }
@@ -13,6 +13,7 @@ class MainContainer extends Viewport {
13
13
  className: 'PortalPreview.MainContainer',
14
14
  /**
15
15
  * @member {Object} layout={ntype:'fit'}
16
+ * @reactive
16
17
  */
17
18
  layout: {ntype: 'fit'}
18
19
  }
@@ -16,7 +16,7 @@
16
16
  "@type": "Organization",
17
17
  "name": "Neo.mjs"
18
18
  },
19
- "datePublished": "2025-07-09",
19
+ "datePublished": "2025-07-24",
20
20
  "publisher": {
21
21
  "@type": "Organization",
22
22
  "name": "Neo.mjs"
@@ -22,10 +22,12 @@ class BlogPosts extends Store {
22
22
  keyProperty: 'id',
23
23
  /**
24
24
  * @member {Neo.data.Model} model=BlogPost
25
+ * @reactive
25
26
  */
26
27
  model: BlogPost,
27
28
  /**
28
29
  * @member {Object[]} sorters=[{property: 'id', direction: 'DESC'}]
30
+ * @reactive
29
31
  */
30
32
  sorters: [{
31
33
  property : 'id',
@@ -14,6 +14,7 @@ class Content extends Store {
14
14
  className: 'Portal.store.Content',
15
15
  /**
16
16
  * @member {Neo.data.Model} model=ContentModel
17
+ * @reactive
17
18
  */
18
19
  model: ContentModel
19
20
  }
@@ -14,6 +14,7 @@ class ContentSections extends Store {
14
14
  className: 'Portal.store.ContentSections',
15
15
  /**
16
16
  * @member {Neo.data.Model} model=ContentSectionModel
17
+ * @reactive
17
18
  */
18
19
  model: ContentSectionModel
19
20
  }
@@ -18,6 +18,7 @@ class Examples extends Store {
18
18
  keyProperty: 'id',
19
19
  /**
20
20
  * @member {Neo.data.Model} model=Example
21
+ * @reactive
21
22
  */
22
23
  model: Example
23
24
  }
@@ -13,6 +13,7 @@ class HeaderToolbar extends Base {
13
13
  className: 'Portal.view.HeaderToolbar',
14
14
  /**
15
15
  * @member {String[]} cls=['portal-header-toolbar']
16
+ * @reactive
16
17
  */
17
18
  cls: ['portal-header-toolbar'],
18
19
  /**
@@ -26,10 +26,12 @@ class Viewport extends BaseViewport {
26
26
  className: 'Portal.view.Viewport',
27
27
  /**
28
28
  * @member {Neo.controller.Component} controller=ViewportController
29
+ * @reactive
29
30
  */
30
31
  controller: ViewportController,
31
32
  /**
32
33
  * @member {Object} layout={ntype:'vbox',align:'stretch'}
34
+ * @reactive
33
35
  */
34
36
  layout: {ntype: 'vbox', align: 'stretch'},
35
37
  /**
@@ -57,15 +59,18 @@ class Viewport extends BaseViewport {
57
59
  }],
58
60
  /**
59
61
  * @member {Boolean} monitorSize=true
62
+ * @reactive
60
63
  */
61
64
  monitorSize: true,
62
65
  /**
63
66
  * Values are: large, medium, small, xSmall
64
67
  * @member {String|null} size_=null
68
+ * @reactive
65
69
  */
66
70
  size_: null,
67
71
  /**
68
72
  * @member {Neo.state.Provider} stateProvider=ViewportStateProvider
73
+ * @reactive
69
74
  */
70
75
  stateProvider: ViewportStateProvider
71
76
  }
@@ -29,6 +29,7 @@ class ViewportController extends Controller {
29
29
  ntype: 'viewport-controller',
30
30
  /**
31
31
  * @member {Number|null} activeIndex_=null
32
+ * @reactive
32
33
  */
33
34
  activeIndex_: null,
34
35
  /**
@@ -37,6 +38,7 @@ class ViewportController extends Controller {
37
38
  defaultHash: '/home',
38
39
  /**
39
40
  * @member {String} mainContentLayout_='card'
41
+ * @reactive
40
42
  */
41
43
  mainContentLayout_: 'card',
42
44
  /**
@@ -56,6 +58,7 @@ class ViewportController extends Controller {
56
58
  /**
57
59
  * Values are: large, medium, small, xSmall
58
60
  * @member {String|null} size_=null
61
+ * @reactive
59
62
  */
60
63
  size_: null
61
64
  }
@@ -316,8 +319,10 @@ class ViewportController extends Controller {
316
319
 
317
320
  // enable "fast clicking" on main nav items => do not replace a cube layout with a new instance of cube
318
321
  if (container.layout.ntype !== 'layout-cube') {
319
- container.layout = {ntype: 'cube', activeIndex, fitContainer: true, hideInactiveCardsOnDestroy: true};
320
- await me.timeout(200);
322
+ await container.set({
323
+ layout: {ntype: 'cube', activeIndex, fitContainer: true, hideInactiveCardsOnDestroy: true}
324
+ });
325
+ await me.timeout(20)
321
326
  }
322
327
 
323
328
  container.layout.activeIndex = index;
@@ -325,7 +330,10 @@ class ViewportController extends Controller {
325
330
  await me.timeout(1100);
326
331
 
327
332
  if (transitionId === me.#transitionId) {
328
- container.layout = {ntype: 'card', activeIndex: index}
333
+ await container.set({
334
+ layout: {ntype: 'card', activeIndex: index}
335
+ });
336
+ await me.timeout(20)
329
337
  }
330
338
  }
331
339
 
@@ -14,6 +14,7 @@ class Container extends Base {
14
14
  className: 'Portal.view.about.Container',
15
15
  /**
16
16
  * @member {String[]} cls=['portal-about-container']
17
+ * @reactive
17
18
  */
18
19
  cls: ['portal-about-container'],
19
20
  /**
@@ -57,6 +58,7 @@ class Container extends Base {
57
58
  }],
58
59
  /**
59
60
  * @member {Object} layout={ntype:'vbox',align:'center'}
61
+ * @reactive
60
62
  */
61
63
  layout: {ntype: 'vbox', align: 'center'}
62
64
  }
@@ -14,30 +14,37 @@ class MemberContainer extends Container {
14
14
  className: 'Portal.view.about.MemberContainer',
15
15
  /**
16
16
  * @member {String[]} cls=['portal-about-member-container']
17
+ * @reactive
17
18
  */
18
19
  cls: ['portal-about-member-container'],
19
20
  /**
20
21
  * @member {String|null} location_=null
22
+ * @reactive
21
23
  */
22
24
  location_: null,
23
25
  /**
24
26
  * @member {String|null} name_=null
27
+ * @reactive
25
28
  */
26
29
  name_: null,
27
30
  /**
28
31
  * @member {String|null} picture_=null
32
+ * @reactive
29
33
  */
30
34
  picture_: null,
31
35
  /**
32
36
  * @member {String|null} profileGitHub_=null
37
+ * @reactive
33
38
  */
34
39
  profileGitHub_: null,
35
40
  /**
36
41
  * @member {String|null} profileLinkedIn_=null
42
+ * @reactive
37
43
  */
38
44
  profileLinkedIn_: null,
39
45
  /**
40
46
  * @member {String|null} teamRole_=null
47
+ * @reactive
41
48
  */
42
49
  teamRole_: null,
43
50
  /**
@@ -15,6 +15,7 @@ class Container extends BaseContainer {
15
15
  className: 'Portal.view.blog.Container',
16
16
  /**
17
17
  * @member {String[]} cls=['portal-blog-container']
18
+ * @reactive
18
19
  */
19
20
  cls: ['portal-blog-container'],
20
21
  /**
@@ -40,6 +41,7 @@ class Container extends BaseContainer {
40
41
  }],
41
42
  /**
42
43
  * @member {Object} layout={ntype:'vbox',align:'stretch'}
44
+ * @reactive
43
45
  */
44
46
  layout: {ntype: 'vbox', align: 'stretch'}
45
47
  }
@@ -38,10 +38,12 @@ class List extends BaseList {
38
38
  preloadImages: 5,
39
39
  /**
40
40
  * @member {Neo.data.Store} store=BlogPosts
41
+ * @reactive
41
42
  */
42
43
  store: BlogPosts,
43
44
  /**
44
45
  * @member {Boolean} useWrapperNode=true
46
+ * @reactive
45
47
  */
46
48
  useWrapperNode: true,
47
49
  /**
@@ -45,6 +45,7 @@ class List extends BaseList {
45
45
  sourceBaseUrl: 'https://github.com/neomjs/neo/tree/dev/',
46
46
  /**
47
47
  * @member {Boolean} useWrapperNode=true
48
+ * @reactive
48
49
  */
49
50
  useWrapperNode: true,
50
51
  /**
@@ -102,16 +103,18 @@ class List extends BaseList {
102
103
 
103
104
  /**
104
105
  * @param {Object} record
106
+ * @param {Number} index
105
107
  */
106
- createItemContent(record) {
107
- let me = this;
108
+ createItemContent(record, index) {
109
+ let me = this,
110
+ imageStyle = index < 4 ? me.getBackgroundImageStyle(record) : null;
108
111
 
109
112
  return [
110
113
  {cls: ['content', 'neo-relative'], data: {recordId: record.id}, removeDom: me.isHiddenItem(record), cn: [
111
114
  {cls: ['neo-multi-window'], data: {neoTooltip: 'Multi Window Demo'}, removeDom: !record.sharedWorkers, cn: [
112
115
  {cls: ['far', 'fa-window-restore']}
113
116
  ]},
114
- {cls: ['neo-full-size', 'preview-image'], flag: `image-${record.id}`},
117
+ {cls: ['neo-full-size', 'preview-image'], flag: `image-${record.id}`, style: imageStyle},
115
118
  {cls: ['neo-absolute', 'neo-item-bottom-position'], cn: [
116
119
  {...me.createLink(record)},
117
120
  {cls: ['neo-top-20'], cn: [
@@ -176,6 +179,22 @@ class List extends BaseList {
176
179
  return vdom
177
180
  }
178
181
 
182
+ /**
183
+ * @param record
184
+ * @returns {{backgroundImage: string}}
185
+ */
186
+ getBackgroundImageStyle(record) {
187
+ return {
188
+ backgroundImage: [
189
+ `url('${this.imageBasePath}/${record.image}'),`,
190
+ 'linear-gradient(',
191
+ 'var(--portal-examples-list-gradient-start),',
192
+ 'var(--portal-examples-list-gradient-end)',
193
+ ')'
194
+ ].join('')
195
+ }
196
+ }
197
+
179
198
  /**
180
199
  * @returns {Object}
181
200
  */
@@ -208,12 +227,12 @@ class List extends BaseList {
208
227
  * @param {Object} data
209
228
  */
210
229
  onIntersect(data) {
211
- let me = this,
212
- {imageBasePath, store} = me,
213
- record = store.get(parseInt(data.data.recordId)),
214
- i = store.indexOf(record),
215
- len = Math.min(i + me.preloadImages, store.getCount()),
216
- needsUpdate = false,
230
+ let me = this,
231
+ {store} = me,
232
+ record = store.get(parseInt(data.data.recordId)),
233
+ i = store.indexOf(record),
234
+ len = Math.min(i + me.preloadImages, store.getCount()),
235
+ needsUpdate = false,
217
236
  node;
218
237
 
219
238
  for (; i < len; i++) {
@@ -221,16 +240,7 @@ class List extends BaseList {
221
240
 
222
241
  if (!node.style) {
223
242
  needsUpdate = true;
224
-
225
- node.style = {
226
- backgroundImage: [
227
- `url('${imageBasePath}/${record.image}'),`,
228
- 'linear-gradient(',
229
- 'var(--portal-examples-list-gradient-start),',
230
- 'var(--portal-examples-list-gradient-end)',
231
- ')'
232
- ].join('')
233
- }
243
+ node.style = me.getBackgroundImageStyle(record)
234
244
  }
235
245
  }
236
246
 
@@ -16,6 +16,7 @@ class TabContainer extends Container {
16
16
  className: 'Portal.view.examples.TabContainer',
17
17
  /**
18
18
  * @member {Number|null} activeIndex=null
19
+ * @reactive
19
20
  */
20
21
  activeIndex: null,
21
22
  /**
@@ -24,6 +25,7 @@ class TabContainer extends Container {
24
25
  baseCls: ['portal-examples-tab-container', 'neo-tab-container'],
25
26
  /**
26
27
  * @member {Neo.controller.Component} controller=TabContainerController
28
+ * @reactive
27
29
  */
28
30
  controller: TabContainerController,
29
31
  /**
@@ -79,10 +81,12 @@ class TabContainer extends Container {
79
81
  }],
80
82
  /**
81
83
  * @member {Boolean} sortable=true
84
+ * @reactive
82
85
  */
83
86
  sortable: true,
84
87
  /**
85
88
  * @member {String} tabBarPosition='left'
89
+ * @reactive
86
90
  */
87
91
  tabBarPosition: 'left',
88
92
  }
@@ -18,14 +18,17 @@ class ContentBox extends Base {
18
18
  baseCls: ['portal-content-box'],
19
19
  /**
20
20
  * @member {String[]|null} content_=null
21
+ * @reactive
21
22
  */
22
23
  content_: null,
23
24
  /**
24
25
  * @member {String|null} header_=null
26
+ * @reactive
25
27
  */
26
28
  header_: null,
27
29
  /**
28
30
  * @member {String|null} route_=null
31
+ * @reactive
29
32
  */
30
33
  route_: null,
31
34
  /**
@@ -30,36 +30,44 @@ class FeatureSection extends Container {
30
30
  * If you want to use the LivePreview, use the config livePreviewCode.
31
31
  * For custom content, use this config instead.
32
32
  * @member {Object[]|null} contentItems_=null
33
+ * @reactive
33
34
  */
34
35
  contentItems_: null,
35
36
  /**
36
37
  * @member {String|null} headline_=null
38
+ * @reactive
37
39
  */
38
40
  headline_: null,
39
41
  /**
40
42
  * Can either contain a route or a URL
41
43
  * @member {String|null} learnMoreRoute_=null
44
+ * @reactive
42
45
  */
43
46
  learnMoreRoute_: null,
44
47
  /**
45
48
  * @member {String|null} livePreviewCode_=null
49
+ * @reactive
46
50
  */
47
51
  livePreviewCode_: null,
48
52
  /**
49
53
  * @member {String|null} paragraph_=null
54
+ * @reactive
50
55
  */
51
56
  paragraph_: null,
52
57
  /**
53
58
  * @member {String|null} subHeadline_=null
59
+ * @reactive
54
60
  */
55
61
  subHeadline_: null,
56
62
  /**
57
63
  * Valid values: 'start' or 'end'
58
64
  * @member {String} textContainerPosition_='start'
65
+ * @reactive
59
66
  */
60
67
  textContainerPosition_: 'start',
61
68
  /**
62
69
  * @member {String} layout='base'
70
+ * @reactive
63
71
  */
64
72
  layout: 'base',
65
73
  /**
@@ -15,6 +15,7 @@ class FooterContainer extends Container {
15
15
  className: 'Portal.view.home.FooterContainer',
16
16
  /**
17
17
  * @member {String[]} cls=['portal-home-footer-container']
18
+ * @reactive
18
19
  */
19
20
  cls: ['portal-home-footer-container'],
20
21
  /**
@@ -107,15 +108,17 @@ class FooterContainer extends Container {
107
108
  }, {
108
109
  module: Component,
109
110
  cls : ['neo-version'],
110
- text : 'v10.0.0-beta.5'
111
+ text : 'v10.0.0'
111
112
  }]
112
113
  }],
113
114
  /**
114
115
  * @member {Object} layout={ntype:'hbox',align:'stretch'}
116
+ * @reactive
115
117
  */
116
118
  layout: {ntype: 'hbox', align: 'stretch'},
117
119
  /**
118
120
  * @member {String} tag='footer'
121
+ * @reactive
119
122
  */
120
123
  tag: 'footer'
121
124
  }
@@ -19,6 +19,7 @@ class MainContainer extends Container {
19
19
  className: 'Portal.view.home.MainContainer',
20
20
  /**
21
21
  * @member {String[]} cls=['portal-home-maincontainer']
22
+ * @reactive
22
23
  */
23
24
  cls: ['portal-home-maincontainer'],
24
25
  /**
@@ -59,6 +60,7 @@ class MainContainer extends Container {
59
60
  ],
60
61
  /**
61
62
  * @member {Boolean} scrollable=true
63
+ * @reactive
62
64
  */
63
65
  scrollable: true
64
66
  }
@@ -14,10 +14,12 @@ class AfterMath extends BaseContainer {
14
14
  className: 'Portal.view.home.parts.AfterMath',
15
15
  /**
16
16
  * @member {String[]} cls=['portal-home-aftermath']
17
+ * @reactive
17
18
  */
18
19
  cls: ['portal-home-aftermath'],
19
20
  /**
20
21
  * @member {Object} layout={ntype:'vbox',align:'stretch',pack:'center'}
22
+ * @reactive
21
23
  */
22
24
  layout: {ntype: 'vbox', align: 'stretch', pack: 'center'},
23
25
  /**
@@ -15,6 +15,7 @@ class BaseContainer extends Container {
15
15
  className: 'Portal.view.home.parts.BaseContainer',
16
16
  /**
17
17
  * @member {String[]} cls=['portal-home-content-view','neo-container']
18
+ * @reactive
18
19
  */
19
20
  baseCls: ['portal-home-content-view', 'neo-container']
20
21
  }
@@ -13,14 +13,17 @@ class Colors extends FeatureSection {
13
13
  className: 'Portal.view.home.parts.Colors',
14
14
  /**
15
15
  * @member {String[]} cls=['portal-home-parts-colors']
16
+ * @reactive
16
17
  */
17
18
  cls: ['portal-home-parts-colors'],
18
19
  /**
19
20
  * @member {String} headline='Amazing Potential'
21
+ * @reactive
20
22
  */
21
23
  headline: 'Amazing Potential',
22
24
  /**
23
25
  * @member {String} learnMoreRoute='https://itnext.io/sharing-real-time-websocket-data-across-multiple-browser-windows-4e0538dd7563?source=friends_link&sk=9efb3e4f38c82fb3e04899c61bb5fcb8'
26
+ * @reactive
24
27
  */
25
28
  learnMoreRoute: 'https://itnext.io/sharing-real-time-websocket-data-across-multiple-browser-windows-4e0538dd7563?source=friends_link&sk=9efb3e4f38c82fb3e04899c61bb5fcb8',
26
29
  /**
@@ -48,6 +51,7 @@ class Colors extends FeatureSection {
48
51
  ].join(''),
49
52
  /**
50
53
  * @member {String} subHeadline='Socket Data'
54
+ * @reactive
51
55
  */
52
56
  subHeadline: 'Shared Socket Data'
53
57
  }
@@ -14,10 +14,12 @@ class Features extends BaseContainer {
14
14
  className: 'Portal.view.home.parts.Features',
15
15
  /**
16
16
  * @member {String[]} cls=['portal-home-features']
17
+ * @reactive
17
18
  */
18
19
  cls: ['portal-home-features'],
19
20
  /**
20
21
  * @member {Object|String} layout='grid'
22
+ * @reactive
21
23
  */
22
24
  layout: 'grid',
23
25
  /**
@@ -13,14 +13,17 @@ class Helix extends FeatureSection {
13
13
  className: 'Portal.view.home.parts.Helix',
14
14
  /**
15
15
  * @member {String[]} cls=['portal-home-parts-helix']
16
+ * @reactive
16
17
  */
17
18
  cls: ['portal-home-parts-helix'],
18
19
  /**
19
20
  * @member {String} headline='Extreme Speed'
21
+ * @reactive
20
22
  */
21
23
  headline: 'Extreme Speed',
22
24
  /**
23
25
  * @member {String} learnMoreRoute='#/learn/WhyNeo-Speed'
26
+ * @reactive
24
27
  */
25
28
  learnMoreRoute: '#/learn/WhyNeo-Speed',
26
29
  /**
@@ -50,10 +53,12 @@ class Helix extends FeatureSection {
50
53
  ].join(''),
51
54
  /**
52
55
  * @member {String} subHeadline='40,000 Updates /s'
56
+ * @reactive
53
57
  */
54
58
  subHeadline: '40,000 Updates /s',
55
59
  /**
56
60
  * @member {String} textContainerPosition='end'
61
+ * @reactive
57
62
  */
58
63
  textContainerPosition: 'end'
59
64
  }
@@ -13,6 +13,7 @@ class How extends FeatureSection {
13
13
  className: 'Portal.view.home.parts.How',
14
14
  /**
15
15
  * @member {String[]} cls=['portal-home-parts-how']
16
+ * @reactive
16
17
  */
17
18
  cls: ['portal-home-parts-how'],
18
19
  /**
@@ -30,10 +31,12 @@ class How extends FeatureSection {
30
31
  }],
31
32
  /**
32
33
  * @member {String} headline='How?'
34
+ * @reactive
33
35
  */
34
36
  headline: 'How?',
35
37
  /**
36
38
  * @member {String} learnMoreRoute='#/learn/benefits.OffTheMainThread'
39
+ * @reactive
37
40
  */
38
41
  learnMoreRoute: '#/learn/benefits.OffTheMainThread',
39
42
  /**
@@ -47,6 +50,7 @@ class How extends FeatureSection {
47
50
  ].join(''),
48
51
  /**
49
52
  * @member {String} subHeadline='How does Neo.mjs do it?'
53
+ * @reactive
50
54
  */
51
55
  subHeadline: 'How does Neo.mjs do it?'
52
56
  }
@@ -15,6 +15,7 @@ class MainNeo extends BaseContainer {
15
15
  className: 'Portal.view.home.parts.MainNeo',
16
16
  /**
17
17
  * @member {String[]} cls=['portal-home-main-neo']
18
+ * @reactive
18
19
  */
19
20
  cls: ['portal-home-main-neo'],
20
21
 
@@ -14,10 +14,12 @@ class References extends BaseContainer {
14
14
  className: 'Portal.view.home.parts.References',
15
15
  /**
16
16
  * @member {String} cls='portal-references'
17
+ * @reactive
17
18
  */
18
19
  cls: 'portal-references',
19
20
  /**
20
21
  * @member {Object} layout={ntype:'vbox',align:'stretch',pack:'center'}
22
+ * @reactive
21
23
  */
22
24
  layout: {ntype: 'vbox', align: 'stretch', pack: 'center'},
23
25
  /**