neo.mjs 10.0.0-beta.5 → 10.0.0-beta.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (468) hide show
  1. package/.github/RELEASE_NOTES/v10.0.0-beta.5.md +70 -0
  2. package/.github/RELEASE_NOTES/v10.0.0-beta.6.md +48 -0
  3. package/.github/epic-functional-components.md +498 -0
  4. package/.github/ticket-asymmetric-vdom-updates.md +122 -0
  5. package/README.md +0 -3
  6. package/ServiceWorker.mjs +2 -2
  7. package/apps/colors/store/Colors.mjs +1 -0
  8. package/apps/colors/view/GridContainer.mjs +3 -0
  9. package/apps/colors/view/HeaderToolbar.mjs +2 -0
  10. package/apps/colors/view/Viewport.mjs +3 -0
  11. package/apps/covid/view/FooterContainer.mjs +3 -0
  12. package/apps/covid/view/GalleryContainer.mjs +2 -0
  13. package/apps/covid/view/GalleryContainerController.mjs +1 -0
  14. package/apps/covid/view/HeaderContainer.mjs +2 -0
  15. package/apps/covid/view/HelixContainer.mjs +2 -0
  16. package/apps/covid/view/HelixContainerController.mjs +1 -0
  17. package/apps/covid/view/MainContainer.mjs +3 -0
  18. package/apps/covid/view/TableContainer.mjs +3 -0
  19. package/apps/covid/view/TableContainerController.mjs +1 -0
  20. package/apps/covid/view/WorldMapContainer.mjs +2 -0
  21. package/apps/covid/view/country/Gallery.mjs +3 -0
  22. package/apps/covid/view/country/Helix.mjs +8 -0
  23. package/apps/covid/view/country/HistoricalDataTable.mjs +1 -0
  24. package/apps/covid/view/country/Table.mjs +2 -0
  25. package/apps/covid/view/mapboxGl/Component.mjs +1 -0
  26. package/apps/covid/view/mapboxGl/Container.mjs +2 -0
  27. package/apps/email/EPIC_PLAN.md +58 -0
  28. package/apps/email/neo-config.json +2 -2
  29. package/apps/email/store/Emails.mjs +11 -1
  30. package/apps/email/view/ComposeView.mjs +44 -0
  31. package/apps/email/view/MainView.mjs +89 -0
  32. package/apps/email/view/Viewport.mjs +4 -33
  33. package/apps/email/view/ViewportStateProvider.mjs +3 -3
  34. package/apps/form/store/SideNav.mjs +1 -0
  35. package/apps/form/view/FormContainer.mjs +1 -0
  36. package/apps/form/view/FormPageContainer.mjs +2 -0
  37. package/apps/form/view/SideNavList.mjs +1 -0
  38. package/apps/form/view/Viewport.mjs +3 -0
  39. package/apps/portal/childapps/preview/MainContainer.mjs +1 -0
  40. package/apps/portal/index.html +1 -1
  41. package/apps/portal/store/BlogPosts.mjs +2 -0
  42. package/apps/portal/store/Content.mjs +1 -0
  43. package/apps/portal/store/ContentSections.mjs +1 -0
  44. package/apps/portal/store/Examples.mjs +1 -0
  45. package/apps/portal/view/HeaderToolbar.mjs +1 -0
  46. package/apps/portal/view/Viewport.mjs +5 -0
  47. package/apps/portal/view/ViewportController.mjs +8 -2
  48. package/apps/portal/view/about/Container.mjs +2 -0
  49. package/apps/portal/view/about/MemberContainer.mjs +7 -0
  50. package/apps/portal/view/blog/Container.mjs +2 -0
  51. package/apps/portal/view/blog/List.mjs +2 -0
  52. package/apps/portal/view/examples/List.mjs +1 -0
  53. package/apps/portal/view/examples/TabContainer.mjs +4 -0
  54. package/apps/portal/view/home/ContentBox.mjs +3 -0
  55. package/apps/portal/view/home/FeatureSection.mjs +8 -0
  56. package/apps/portal/view/home/FooterContainer.mjs +4 -1
  57. package/apps/portal/view/home/MainContainer.mjs +2 -0
  58. package/apps/portal/view/home/parts/AfterMath.mjs +2 -0
  59. package/apps/portal/view/home/parts/BaseContainer.mjs +1 -0
  60. package/apps/portal/view/home/parts/Colors.mjs +4 -0
  61. package/apps/portal/view/home/parts/Features.mjs +2 -0
  62. package/apps/portal/view/home/parts/Helix.mjs +5 -0
  63. package/apps/portal/view/home/parts/How.mjs +4 -0
  64. package/apps/portal/view/home/parts/MainNeo.mjs +1 -0
  65. package/apps/portal/view/home/parts/References.mjs +2 -0
  66. package/apps/portal/view/learn/ContentComponent.mjs +11 -5
  67. package/apps/portal/view/learn/ContentTreeList.mjs +2 -0
  68. package/apps/portal/view/learn/CubeLayoutButton.mjs +1 -0
  69. package/apps/portal/view/learn/MainContainer.mjs +4 -0
  70. package/apps/portal/view/learn/PageContainer.mjs +2 -0
  71. package/apps/portal/view/learn/PageSectionsContainer.mjs +3 -0
  72. package/apps/portal/view/learn/PageSectionsList.mjs +1 -0
  73. package/apps/portal/view/services/Component.mjs +1 -0
  74. package/apps/realworld/api/Base.mjs +1 -0
  75. package/apps/realworld/view/HeaderComponent.mjs +4 -0
  76. package/apps/realworld/view/HomeComponent.mjs +7 -0
  77. package/apps/realworld/view/MainContainer.mjs +2 -0
  78. package/apps/realworld/view/MainContainerController.mjs +2 -0
  79. package/apps/realworld/view/article/CommentComponent.mjs +3 -0
  80. package/apps/realworld/view/article/Component.mjs +17 -10
  81. package/apps/realworld/view/article/CreateCommentComponent.mjs +2 -0
  82. package/apps/realworld/view/article/CreateComponent.mjs +5 -0
  83. package/apps/realworld/view/article/PreviewComponent.mjs +9 -0
  84. package/apps/realworld/view/article/TagListComponent.mjs +2 -0
  85. package/apps/realworld/view/user/ProfileComponent.mjs +7 -0
  86. package/apps/realworld/view/user/SettingsComponent.mjs +5 -0
  87. package/apps/realworld/view/user/SignUpComponent.mjs +3 -0
  88. package/apps/realworld2/api/Base.mjs +1 -0
  89. package/apps/realworld2/view/FooterComponent.mjs +1 -0
  90. package/apps/realworld2/view/HeaderToolbar.mjs +3 -0
  91. package/apps/realworld2/view/HomeContainer.mjs +1 -0
  92. package/apps/realworld2/view/MainContainer.mjs +2 -0
  93. package/apps/realworld2/view/MainContainerController.mjs +1 -0
  94. package/apps/realworld2/view/article/Helix.mjs +1 -0
  95. package/apps/realworld2/view/article/PreviewComponent.mjs +9 -0
  96. package/apps/realworld2/view/article/PreviewList.mjs +1 -0
  97. package/apps/realworld2/view/article/TagListComponent.mjs +2 -0
  98. package/apps/route/view/CenterContainer.mjs +1 -0
  99. package/apps/route/view/MainView.mjs +1 -0
  100. package/apps/sharedcovid/childapps/sharedcovidchart/MainContainer.mjs +1 -0
  101. package/apps/sharedcovid/childapps/sharedcovidgallery/MainContainer.mjs +1 -0
  102. package/apps/sharedcovid/childapps/sharedcovidhelix/MainContainer.mjs +1 -0
  103. package/apps/sharedcovid/childapps/sharedcovidmap/MainContainer.mjs +1 -0
  104. package/apps/sharedcovid/view/FooterContainer.mjs +3 -0
  105. package/apps/sharedcovid/view/GalleryContainer.mjs +2 -0
  106. package/apps/sharedcovid/view/GalleryContainerController.mjs +1 -0
  107. package/apps/sharedcovid/view/HeaderContainer.mjs +2 -0
  108. package/apps/sharedcovid/view/HelixContainer.mjs +2 -0
  109. package/apps/sharedcovid/view/HelixContainerController.mjs +1 -0
  110. package/apps/sharedcovid/view/MainContainer.mjs +3 -0
  111. package/apps/sharedcovid/view/TableContainer.mjs +3 -0
  112. package/apps/sharedcovid/view/TableContainerController.mjs +1 -0
  113. package/apps/sharedcovid/view/WorldMapContainer.mjs +2 -0
  114. package/apps/sharedcovid/view/country/Gallery.mjs +3 -0
  115. package/apps/sharedcovid/view/country/Helix.mjs +8 -0
  116. package/apps/sharedcovid/view/country/HistoricalDataTable.mjs +1 -0
  117. package/apps/sharedcovid/view/country/Table.mjs +2 -0
  118. package/apps/sharedcovid/view/mapboxGl/Component.mjs +1 -0
  119. package/apps/sharedcovid/view/mapboxGl/Container.mjs +2 -0
  120. package/apps/shareddialog/childapps/shareddialog2/view/MainContainer.mjs +2 -0
  121. package/apps/shareddialog/view/DemoDialog.mjs +2 -0
  122. package/apps/shareddialog/view/MainContainer.mjs +2 -0
  123. package/apps/shareddialog/view/MainContainerController.mjs +1 -0
  124. package/buildScripts/addReactiveTags.mjs +191 -0
  125. package/buildScripts/checkReactiveTags.mjs +160 -0
  126. package/docs/app/store/Api.mjs +1 -0
  127. package/docs/app/store/Examples.mjs +1 -0
  128. package/docs/app/view/ApiTreeList.mjs +1 -0
  129. package/docs/app/view/ContentTabContainer.mjs +2 -0
  130. package/docs/app/view/ExamplesTreeList.mjs +2 -0
  131. package/docs/app/view/HeaderContainer.mjs +3 -0
  132. package/docs/app/view/MainContainer.mjs +5 -0
  133. package/docs/app/view/classdetails/HeaderComponent.mjs +1 -0
  134. package/docs/app/view/classdetails/MainContainer.mjs +3 -0
  135. package/docs/app/view/classdetails/MembersList.mjs +5 -0
  136. package/docs/app/view/classdetails/SourceViewComponent.mjs +2 -0
  137. package/examples/ConfigurationViewport.mjs +14 -8
  138. package/examples/calendar/weekview/MainContainer.mjs +4 -0
  139. package/examples/component/coronaGallery/CountryGallery.mjs +2 -0
  140. package/examples/component/coronaGallery/CountryStore.mjs +1 -0
  141. package/examples/component/coronaGallery/Viewport.mjs +3 -0
  142. package/examples/component/coronaGallery/ViewportController.mjs +1 -0
  143. package/examples/component/coronaHelix/CountryHelix.mjs +7 -0
  144. package/examples/component/coronaHelix/MainContainer.mjs +1 -0
  145. package/examples/component/gallery/ImageStore.mjs +1 -0
  146. package/examples/component/helix/ImageStore.mjs +1 -0
  147. package/examples/component/helix/Viewport.mjs +3 -0
  148. package/examples/component/helix/ViewportController.mjs +1 -0
  149. package/examples/component/multiWindowCoronaGallery/childapp/Viewport.mjs +1 -0
  150. package/examples/component/multiWindowHelix/childapp/Viewport.mjs +1 -0
  151. package/examples/component/wrapper/googleMaps/MapComponent.mjs +2 -0
  152. package/examples/core/config/MainContainer.mjs +2 -0
  153. package/examples/dialog/DemoDialog.mjs +2 -0
  154. package/examples/dialog/MainContainer.mjs +1 -0
  155. package/examples/form/field/color/MainStore.mjs +1 -0
  156. package/examples/functional/defineComponent/Component.mjs +18 -0
  157. package/examples/functional/defineComponent/MainContainer.mjs +41 -0
  158. package/examples/functional/defineComponent/app.mjs +6 -0
  159. package/examples/functional/defineComponent/index.html +11 -0
  160. package/examples/functional/defineComponent/neo-config.json +6 -0
  161. package/examples/functional/hostComponent/Component.mjs +32 -0
  162. package/examples/functional/hostComponent/MainContainer.mjs +48 -0
  163. package/examples/functional/hostComponent/app.mjs +6 -0
  164. package/examples/functional/hostComponent/index.html +11 -0
  165. package/examples/functional/hostComponent/neo-config.json +6 -0
  166. package/examples/grid/animatedRowSorting/Viewport.mjs +1 -1
  167. package/examples/grid/bigData/ControlsContainer.mjs +3 -0
  168. package/examples/grid/bigData/GridContainer.mjs +4 -2
  169. package/examples/grid/bigData/MainContainer.mjs +2 -0
  170. package/examples/grid/bigData/MainModel.mjs +1 -0
  171. package/examples/grid/bigData/MainStore.mjs +3 -0
  172. package/examples/grid/cellEditing/MainContainer.mjs +1 -1
  173. package/examples/grid/container/MainContainer.mjs +1 -1
  174. package/examples/grid/covid/GridContainer.mjs +3 -0
  175. package/examples/grid/covid/MainContainer.mjs +2 -0
  176. package/examples/grid/covid/Store.mjs +1 -0
  177. package/examples/grid/nestedRecordFields/EditUserDialog.mjs +3 -0
  178. package/examples/grid/nestedRecordFields/Viewport.mjs +3 -1
  179. package/examples/list/animate/List.mjs +4 -0
  180. package/examples/list/animate/MainContainer.mjs +2 -0
  181. package/examples/list/circle/MainStore.mjs +1 -0
  182. package/examples/list/color/MainStore.mjs +1 -0
  183. package/examples/preloadingAssets/view/MainContainer.mjs +2 -0
  184. package/examples/stateProvider/advanced/MainContainer.mjs +1 -0
  185. package/examples/stateProvider/dialog/EditUserDialog.mjs +2 -0
  186. package/examples/stateProvider/dialog/MainContainer.mjs +1 -0
  187. package/examples/stateProvider/extendedClass/MainContainer.mjs +2 -0
  188. package/examples/stateProvider/inline/MainContainer.mjs +1 -0
  189. package/examples/stateProvider/inlineNoStateProvider/MainContainer.mjs +1 -0
  190. package/examples/stateProvider/inlineNoStateProvider/MainContainerController.mjs +2 -0
  191. package/examples/stateProvider/multiWindow/EditUserDialog.mjs +3 -0
  192. package/examples/stateProvider/multiWindow/MainContainer.mjs +1 -0
  193. package/examples/stateProvider/multiWindow/Viewport.mjs +1 -0
  194. package/examples/stateProvider/nestedData/MainContainer.mjs +1 -0
  195. package/examples/stateProvider/table/MainContainer.mjs +1 -0
  196. package/examples/table/covid/MainContainer.mjs +2 -0
  197. package/examples/table/covid/Store.mjs +1 -0
  198. package/examples/table/covid/TableContainer.mjs +3 -0
  199. package/examples/table/nestedRecordFields/EditUserDialog.mjs +3 -0
  200. package/examples/table/nestedRecordFields/Viewport.mjs +1 -0
  201. package/examples/todoList/version1/MainComponent.mjs +1 -1
  202. package/examples/toolbar/breadcrumb/view/MainContainer.mjs +2 -0
  203. package/examples/toolbar/paging/store/Users.mjs +1 -0
  204. package/examples/toolbar/paging/view/AddUserDialog.mjs +3 -0
  205. package/examples/toolbar/paging/view/MainContainer.mjs +3 -0
  206. package/examples/treeAccordion/MainContainer.mjs +2 -2
  207. package/examples/worker/task/MainContainer.mjs +1 -0
  208. package/learn/Glossary.md +1 -0
  209. package/learn/UsingTheseTopics.md +1 -0
  210. package/learn/benefits/ConfigSystem.md +2 -0
  211. package/learn/benefits/Effort.md +1 -0
  212. package/learn/benefits/Features.md +1 -0
  213. package/learn/benefits/FormsEngine.md +1 -0
  214. package/learn/benefits/FourEnvironments.md +2 -0
  215. package/learn/benefits/Introduction.md +2 -0
  216. package/learn/benefits/MultiWindow.md +3 -1
  217. package/learn/benefits/OffTheMainThread.md +2 -0
  218. package/learn/benefits/Quick.md +2 -0
  219. package/learn/benefits/RPCLayer.md +2 -0
  220. package/learn/benefits/Speed.md +2 -0
  221. package/learn/comparisons/NeoVsAngular.md +90 -0
  222. package/learn/comparisons/NeoVsExtJs.md +178 -0
  223. package/learn/comparisons/NeoVsNextJs.md +124 -0
  224. package/learn/comparisons/NeoVsReact.md +95 -0
  225. package/learn/comparisons/NeoVsSolid.md +78 -0
  226. package/learn/comparisons/NeoVsVue.md +92 -0
  227. package/learn/comparisons/Overview.md +46 -0
  228. package/learn/gettingstarted/ComponentModels.md +2 -0
  229. package/learn/gettingstarted/Config.md +2 -0
  230. package/learn/gettingstarted/DescribingTheUI.md +2 -0
  231. package/learn/gettingstarted/Events.md +2 -0
  232. package/learn/gettingstarted/Extending.md +2 -0
  233. package/learn/gettingstarted/References.md +2 -0
  234. package/learn/gettingstarted/Setup.md +3 -2
  235. package/learn/gettingstarted/Workspaces.md +2 -0
  236. package/learn/guides/datahandling/Collections.md +1 -0
  237. package/learn/guides/datahandling/Records.md +1 -0
  238. package/learn/guides/datahandling/StateProviders.md +130 -16
  239. package/learn/guides/datahandling/Tables.md +1 -1
  240. package/learn/guides/fundamentals/ConfigSystemDeepDive.md +1 -0
  241. package/learn/guides/fundamentals/DeclarativeComponentTreesVsImperativeVdom.md +2 -0
  242. package/learn/guides/fundamentals/DeclarativeVDOMWithEffects.md +10 -8
  243. package/learn/guides/fundamentals/ExtendingNeoClasses.md +1 -0
  244. package/learn/guides/fundamentals/InstanceLifecycle.md +3 -1
  245. package/learn/guides/fundamentals/MainThreadAddons.md +2 -0
  246. package/learn/guides/specificfeatures/Mixins.md +3 -1
  247. package/learn/guides/specificfeatures/MultiWindow.md +3 -1
  248. package/learn/guides/specificfeatures/PortalApp.md +2 -0
  249. package/learn/guides/uibuildingblocks/ComponentsAndContainers.md +2 -0
  250. package/learn/guides/uibuildingblocks/CustomComponents.md +2 -0
  251. package/learn/guides/uibuildingblocks/Layouts.md +2 -0
  252. package/learn/guides/uibuildingblocks/WorkingWithVDom.md +2 -0
  253. package/learn/guides/userinteraction/Forms.md +2 -0
  254. package/learn/guides/userinteraction/events/CustomEvents.md +2 -1
  255. package/learn/guides/userinteraction/events/DomEvents.md +2 -0
  256. package/learn/javascript/ClassFeatures.md +4 -3
  257. package/learn/javascript/Classes.md +10 -13
  258. package/learn/javascript/Overrides.md +10 -6
  259. package/learn/javascript/Super.md +12 -8
  260. package/learn/tree.json +71 -64
  261. package/learn/tutorials/Earthquakes.md +2 -0
  262. package/learn/tutorials/RSP.md +3 -1
  263. package/learn/tutorials/TodoList.md +103 -7
  264. package/package.json +6 -4
  265. package/resources/scss/src/apps/email/ComposeView.scss +16 -0
  266. package/resources/scss/src/apps/email/MainView.scss +5 -0
  267. package/resources/scss/src/apps/portal/learn/ContentComponent.scss +5 -4
  268. package/src/DefaultConfig.mjs +12 -2
  269. package/src/Main.mjs +1 -0
  270. package/src/Neo.mjs +217 -166
  271. package/src/Xhr.mjs +1 -0
  272. package/src/button/Base.mjs +13 -0
  273. package/src/button/Effect.mjs +16 -2
  274. package/src/button/Split.mjs +2 -0
  275. package/src/calendar/store/Calendars.mjs +1 -0
  276. package/src/calendar/store/Colors.mjs +1 -0
  277. package/src/calendar/store/Events.mjs +1 -0
  278. package/src/calendar/view/DayComponent.mjs +2 -0
  279. package/src/calendar/view/EditEventContainer.mjs +4 -1
  280. package/src/calendar/view/MainContainer.mjs +13 -0
  281. package/src/calendar/view/MainContainerStateProvider.mjs +14 -28
  282. package/src/calendar/view/SettingsContainer.mjs +1 -0
  283. package/src/calendar/view/YearComponent.mjs +16 -0
  284. package/src/calendar/view/calendars/ColorsList.mjs +2 -0
  285. package/src/calendar/view/calendars/Container.mjs +2 -0
  286. package/src/calendar/view/calendars/EditContainer.mjs +1 -0
  287. package/src/calendar/view/month/Component.mjs +11 -0
  288. package/src/calendar/view/settings/GeneralContainer.mjs +1 -0
  289. package/src/calendar/view/settings/MonthContainer.mjs +1 -0
  290. package/src/calendar/view/settings/WeekContainer.mjs +1 -0
  291. package/src/calendar/view/settings/YearContainer.mjs +1 -0
  292. package/src/calendar/view/week/Component.mjs +15 -1
  293. package/src/calendar/view/week/TimeAxisComponent.mjs +4 -0
  294. package/src/code/LivePreview.mjs +51 -23
  295. package/src/collection/Base.mjs +7 -10
  296. package/src/collection/Filter.mjs +6 -0
  297. package/src/collection/Sorter.mjs +3 -0
  298. package/src/component/Base.mjs +104 -771
  299. package/src/component/Canvas.mjs +1 -0
  300. package/src/component/Chip.mjs +4 -0
  301. package/src/component/Circle.mjs +14 -0
  302. package/src/component/Clock.mjs +4 -0
  303. package/src/component/DateSelector.mjs +12 -0
  304. package/src/component/Gallery.mjs +11 -0
  305. package/src/component/Helix.mjs +24 -0
  306. package/src/component/Label.mjs +1 -0
  307. package/src/component/Legend.mjs +3 -0
  308. package/src/component/MagicMoveText.mjs +4 -0
  309. package/src/component/Progress.mjs +3 -0
  310. package/src/component/Splitter.mjs +3 -0
  311. package/src/component/StatusBadge.mjs +6 -0
  312. package/src/component/Timer.mjs +4 -0
  313. package/src/component/Toast.mjs +6 -0
  314. package/src/component/Video.mjs +1 -0
  315. package/src/component/mwc/Button.mjs +7 -0
  316. package/src/component/mwc/TextField.mjs +9 -0
  317. package/src/component/wrapper/AmChart.mjs +2 -0
  318. package/src/component/wrapper/GoogleMaps.mjs +3 -0
  319. package/src/component/wrapper/MapboxGL.mjs +5 -0
  320. package/src/component/wrapper/MonacoEditor.mjs +12 -0
  321. package/src/container/Accordion.mjs +2 -0
  322. package/src/container/Base.mjs +7 -3
  323. package/src/container/Panel.mjs +1 -0
  324. package/src/container/Viewport.mjs +1 -0
  325. package/src/controller/Application.mjs +1 -0
  326. package/src/controller/Base.mjs +1 -0
  327. package/src/controller/Component.mjs +1 -0
  328. package/src/core/Base.mjs +55 -3
  329. package/src/core/Compare.mjs +4 -7
  330. package/src/core/Config.mjs +65 -52
  331. package/src/core/Effect.mjs +79 -13
  332. package/src/core/EffectBatchManager.mjs +18 -19
  333. package/src/core/EffectManager.mjs +25 -3
  334. package/src/core/IdGenerator.mjs +13 -44
  335. package/src/data/Model.mjs +2 -0
  336. package/src/data/Store.mjs +7 -0
  337. package/src/data/connection/WebSocket.mjs +2 -0
  338. package/src/date/DayViewComponent.mjs +2 -0
  339. package/src/date/SelectorContainer.mjs +14 -0
  340. package/src/dialog/Base.mjs +8 -0
  341. package/src/draggable/DragZone.mjs +5 -0
  342. package/src/draggable/tree/DragZone.mjs +1 -0
  343. package/src/filter/BooleanContainer.mjs +2 -0
  344. package/src/filter/NumberContainer.mjs +3 -0
  345. package/src/filter/ToggleOperatorsButton.mjs +2 -0
  346. package/src/form/Fieldset.mjs +6 -0
  347. package/src/form/field/Base.mjs +7 -0
  348. package/src/form/field/CheckBox.mjs +18 -0
  349. package/src/form/field/Chip.mjs +1 -0
  350. package/src/form/field/ComboBox.mjs +8 -0
  351. package/src/form/field/Country.mjs +1 -0
  352. package/src/form/field/Currency.mjs +2 -0
  353. package/src/form/field/Date.mjs +4 -0
  354. package/src/form/field/Display.mjs +1 -0
  355. package/src/form/field/Email.mjs +1 -0
  356. package/src/form/field/FileUpload.mjs +7 -0
  357. package/src/form/field/Hidden.mjs +1 -0
  358. package/src/form/field/Number.mjs +7 -0
  359. package/src/form/field/Password.mjs +1 -0
  360. package/src/form/field/Phone.mjs +3 -0
  361. package/src/form/field/Picker.mjs +2 -0
  362. package/src/form/field/Radio.mjs +1 -0
  363. package/src/form/field/Range.mjs +3 -0
  364. package/src/form/field/Search.mjs +2 -0
  365. package/src/form/field/Text.mjs +32 -0
  366. package/src/form/field/TextArea.mjs +7 -0
  367. package/src/form/field/Time.mjs +6 -0
  368. package/src/form/field/Url.mjs +3 -0
  369. package/src/form/field/ZipCode.mjs +2 -0
  370. package/src/form/field/trigger/Base.mjs +3 -0
  371. package/src/form/field/trigger/Clear.mjs +2 -0
  372. package/src/form/field/trigger/CopyToClipboard.mjs +2 -0
  373. package/src/form/field/trigger/Date.mjs +1 -0
  374. package/src/form/field/trigger/Picker.mjs +1 -0
  375. package/src/form/field/trigger/Search.mjs +1 -0
  376. package/src/form/field/trigger/SpinDown.mjs +2 -0
  377. package/src/form/field/trigger/SpinUp.mjs +1 -0
  378. package/src/form/field/trigger/Time.mjs +2 -0
  379. package/src/functional/_export.mjs +6 -0
  380. package/src/functional/component/Base.mjs +499 -0
  381. package/src/functional/defineComponent.mjs +102 -0
  382. package/src/functional/useConfig.mjs +52 -0
  383. package/src/functional/useEvent.mjs +43 -0
  384. package/src/grid/Body.mjs +20 -1
  385. package/src/grid/Container.mjs +50 -60
  386. package/src/grid/ScrollManager.mjs +2 -0
  387. package/src/grid/VerticalScrollbar.mjs +2 -0
  388. package/src/grid/column/Base.mjs +2 -0
  389. package/src/grid/header/Button.mjs +7 -0
  390. package/src/grid/header/Toolbar.mjs +6 -0
  391. package/src/grid/plugin/AnimateRows.mjs +2 -0
  392. package/src/layout/Base.mjs +3 -0
  393. package/src/layout/Card.mjs +1 -0
  394. package/src/layout/Cube.mjs +11 -1
  395. package/src/layout/Fit.mjs +1 -0
  396. package/src/layout/Flexbox.mjs +7 -0
  397. package/src/layout/Form.mjs +2 -0
  398. package/src/layout/Grid.mjs +1 -0
  399. package/src/layout/HBox.mjs +1 -0
  400. package/src/layout/VBox.mjs +1 -0
  401. package/src/list/Base.mjs +13 -0
  402. package/src/list/Chip.mjs +1 -0
  403. package/src/list/Circle.mjs +2 -0
  404. package/src/list/Color.mjs +1 -0
  405. package/src/list/plugin/Animate.mjs +2 -0
  406. package/src/main/DeltaUpdates.mjs +1 -0
  407. package/src/main/DomEvents.mjs +2 -0
  408. package/src/main/addon/CloneNode.mjs +1 -0
  409. package/src/main/addon/Cookie.mjs +1 -0
  410. package/src/main/addon/GoogleMaps.mjs +1 -0
  411. package/src/main/addon/LocalStorage.mjs +1 -0
  412. package/src/main/addon/MapboxGL.mjs +1 -0
  413. package/src/main/addon/Markdown.mjs +1 -0
  414. package/src/main/addon/Navigator.mjs +1 -0
  415. package/src/main/addon/Popover.mjs +1 -0
  416. package/src/main/addon/Stylesheet.mjs +1 -0
  417. package/src/main/addon/WindowPosition.mjs +1 -0
  418. package/src/manager/Component.mjs +0 -71
  419. package/src/manager/VDomUpdate.mjs +235 -0
  420. package/src/menu/List.mjs +6 -0
  421. package/src/menu/Model.mjs +1 -0
  422. package/src/menu/Panel.mjs +3 -0
  423. package/src/menu/Store.mjs +1 -0
  424. package/src/mixin/DomEvents.mjs +130 -0
  425. package/src/mixin/VdomLifecycle.mjs +667 -0
  426. package/src/plugin/Base.mjs +1 -0
  427. package/src/plugin/Resizable.mjs +2 -0
  428. package/src/selection/Model.mjs +15 -18
  429. package/src/selection/grid/BaseModel.mjs +1 -0
  430. package/src/sitemap/Component.mjs +1 -0
  431. package/src/state/Provider.mjs +98 -70
  432. package/src/state/createHierarchicalDataProxy.mjs +39 -25
  433. package/src/tab/Container.mjs +6 -0
  434. package/src/tab/Strip.mjs +1 -0
  435. package/src/tab/header/Button.mjs +2 -0
  436. package/src/tab/header/EffectButton.mjs +2 -0
  437. package/src/tab/header/Toolbar.mjs +1 -0
  438. package/src/table/Body.mjs +3 -0
  439. package/src/table/Container.mjs +10 -0
  440. package/src/table/header/Button.mjs +8 -0
  441. package/src/table/header/Toolbar.mjs +5 -0
  442. package/src/table/plugin/CellEditing.mjs +1 -0
  443. package/src/toolbar/Base.mjs +4 -0
  444. package/src/toolbar/Breadcrumb.mjs +3 -0
  445. package/src/toolbar/Paging.mjs +5 -0
  446. package/src/tooltip/Base.mjs +2 -0
  447. package/src/tree/List.mjs +3 -0
  448. package/src/util/HashHistory.mjs +1 -0
  449. package/src/util/KeyNavigation.mjs +2 -0
  450. package/src/util/Matrix.mjs +1 -0
  451. package/src/util/VDom.mjs +7 -1
  452. package/src/util/VNode.mjs +7 -1
  453. package/src/util/vdom/TreeBuilder.mjs +129 -0
  454. package/src/vdom/Helper.mjs +35 -23
  455. package/src/vdom/VNode.mjs +4 -6
  456. package/src/worker/App.mjs +1 -0
  457. package/src/worker/Base.mjs +2 -0
  458. package/src/worker/Manager.mjs +2 -0
  459. package/src/worker/ServiceBase.mjs +6 -1
  460. package/test/siesta/siesta.js +5 -2
  461. package/test/siesta/tests/VdomCalendar.mjs +13 -9
  462. package/test/siesta/tests/core/Effect.mjs +10 -14
  463. package/test/siesta/tests/core/EffectBatching.mjs +25 -37
  464. package/test/siesta/tests/state/ProviderNestedDataConfigs.mjs +255 -0
  465. package/test/siesta/tests/state/createHierarchicalDataProxy.mjs +42 -55
  466. package/test/siesta/tests/vdom/VdomAsymmetricUpdates.mjs +366 -0
  467. package/test/siesta/tests/vdom/VdomRealWorldUpdates.mjs +249 -0
  468. package/learn/javascript/NewNode.md +0 -31
@@ -0,0 +1,89 @@
1
+ import Button from '../../../src/button/Base.mjs';
2
+ import ComposeView from './ComposeView.mjs';
3
+ import EmailsStore from '../store/Emails.mjs';
4
+ import GridContainer from '../../../src/grid/Container.mjs';
5
+ import RowModel from '../../../src/selection/grid/RowModel.mjs';
6
+ import {defineComponent, useConfig} from '../../../src/functional/_export.mjs';
7
+
8
+ export default defineComponent({
9
+ config: {
10
+ className: 'Email.view.MainView',
11
+ cls : ['email-main-view']
12
+ },
13
+ createVdom() {
14
+ const
15
+ [isComposing, setIsComposing] = useConfig(false),
16
+ [selectedEmail, setSelectedEmail] = useConfig(null);
17
+
18
+ const paneStyle = {
19
+ border : '1px solid #c0c0c0',
20
+ margin : '10px',
21
+ padding: '10px'
22
+ };
23
+
24
+ const onComposeClick = () => {
25
+ setIsComposing(true)
26
+ };
27
+
28
+ const onCloseCompose = () => {
29
+ setIsComposing(false);
30
+ };
31
+
32
+ const onSelectionChange = ({records}) => {
33
+ setSelectedEmail(records[0] || null)
34
+ };
35
+
36
+ return {
37
+ cn: [{
38
+ style: {...paneStyle, flex: '0 0 200px'},
39
+ cn: [{
40
+ module : Button,
41
+ handler: onComposeClick,
42
+ id : 'compose-button',
43
+ text : 'Compose',
44
+ style : {marginBottom: '10px', width: '100%'}
45
+ }, {
46
+ text : 'Folders'
47
+ }]
48
+ }, {
49
+ style: {...paneStyle, flex: '1 1 600px', padding: '0'},
50
+ cn: [{
51
+ module : GridContainer,
52
+ id : 'email-grid',
53
+ store : EmailsStore,
54
+ wrapperStyle: {height: '100%', width: '100%'},
55
+ body: {
56
+ selectionModel: {
57
+ module : RowModel,
58
+ listeners: {selectionChange: onSelectionChange}
59
+ }
60
+ },
61
+ columns: [
62
+ {dataField: 'sender', text: 'Sender', width: 150},
63
+ {dataField: 'title', text: 'Title', flex: 1, minWidth: 200},
64
+ {
65
+ cellAlign: 'right',
66
+ dataField: 'dateSent',
67
+ renderer : (({value}) => new Date(value).toLocaleDateString()),
68
+ text : 'Date',
69
+ width : 100
70
+ }
71
+ ]
72
+ }]
73
+ }, {
74
+ style: {...paneStyle, flex: '1 1 600px'},
75
+ cn: selectedEmail ? [
76
+ {tag: 'h2', text: selectedEmail.title},
77
+ {tag: 'p', text: `From: ${selectedEmail.sender}`},
78
+ {tag: 'div', style: {marginTop: '10px'}, text: selectedEmail.content}
79
+ ] : [{
80
+ text: 'Select an email to read'
81
+ }]
82
+ }, isComposing && {
83
+ module : ComposeView,
84
+ id : 'compose-view',
85
+ onClose: onCloseCompose
86
+ }]
87
+ }
88
+ }
89
+ });
@@ -1,7 +1,5 @@
1
- import BaseViewport from '../../../src/container/Viewport.mjs';
2
- import Component from '../../../src/component/Base.mjs';
3
- import TabContainer from '../../../src/tab/Container.mjs';
4
- import ViewportStateProvider from './ViewportStateProvider.mjs';
1
+ import BaseViewport from '../../../src/container/Viewport.mjs';
2
+ import MainView from './MainView.mjs';
5
3
 
6
4
  /**
7
5
  * @class Email.view.Viewport
@@ -14,42 +12,15 @@ class Viewport extends BaseViewport {
14
12
  * @protected
15
13
  */
16
14
  className: 'Email.view.Viewport',
17
- /*
15
+ /**
18
16
  * @member {Object} layout={ntype:'fit'}
19
17
  */
20
18
  layout: {ntype: 'fit'},
21
- /**
22
- * @member {Neo.state.Provider} stateProvider=ViewportStateProvider
23
- */
24
- stateProvider: ViewportStateProvider,
25
19
  /**
26
20
  * @member {Object[]} items
27
21
  */
28
22
  items: [{
29
- module: TabContainer,
30
- height: 300,
31
- width : 500,
32
- style : {flex: 'none', margin: '20px'},
33
-
34
- itemDefaults: {
35
- module: Component,
36
- cls : ['neo-examples-tab-component'],
37
- style : {padding: '20px'},
38
- },
39
-
40
- items: [{
41
- header: {
42
- iconCls: 'fa fa-home',
43
- text : 'Tab 1'
44
- },
45
- text: 'Welcome to your new Neo App.'
46
- }, {
47
- header: {
48
- iconCls: 'fa fa-play-circle',
49
- text : 'Tab 2'
50
- },
51
- text: 'Have fun creating something awesome!'
52
- }]
23
+ module: MainView
53
24
  }]
54
25
  }
55
26
  }
@@ -1,11 +1,11 @@
1
- import EmailStore from '../store/Emails.mjs';
2
- import Provider from '../../../src/state/Provider.mjs';
1
+ import EmailStore from '../store/Emails.mjs';
2
+ import StateProvider from '../../../src/state/Provider.mjs';
3
3
 
4
4
  /**
5
5
  * @class Email.view.ViewportStateProvider
6
6
  * @extends Neo.state.Provider
7
7
  */
8
- class ViewportStateProvider extends Provider {
8
+ class ViewportStateProvider extends StateProvider {
9
9
  static config = {
10
10
  /**
11
11
  * @member {String} className='Email.view.ViewportStateProvider'
@@ -14,6 +14,7 @@ class SideNav extends Store {
14
14
  className: 'Form.store.SideNav',
15
15
  /**
16
16
  * @member {Neo.data.Model} model=SideNavModel
17
+ * @reactive
17
18
  */
18
19
  model: SideNavModel
19
20
  }
@@ -22,6 +22,7 @@ class FormContainer extends BaseFormContainer {
22
22
  baseCls: ['form-form-container', 'neo-container'],
23
23
  /**
24
24
  * @member {Neo.controller.Component} controller=FormContainerController
25
+ * @reactive
25
26
  */
26
27
  controller: FormContainerController,
27
28
  /**
@@ -19,6 +19,7 @@ class FormPageContainer extends FormContainer {
19
19
  },
20
20
  /**
21
21
  * @member {Object} layout={ntype:'vbox'}
22
+ * @reactive
22
23
  */
23
24
  layout: {ntype: 'vbox'},
24
25
  /**
@@ -27,6 +28,7 @@ class FormPageContainer extends FormContainer {
27
28
  style: {overflow: 'auto'},
28
29
  /**
29
30
  * @member {String} tag='div'
31
+ * @reactive
30
32
  */
31
33
  tag: 'div' // using a div instead of a form tag
32
34
  }
@@ -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-18",
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,11 @@ 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
+ container.setSilent({
323
+ layout: {ntype: 'cube', activeIndex, fitContainer: true, hideInactiveCardsOnDestroy: true}
324
+ });
325
+ await container.promiseUpdate();
326
+ await me.timeout(50);
321
327
  }
322
328
 
323
329
  container.layout.activeIndex = index;
@@ -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
  /**
@@ -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-beta.6'
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
  /**