neo.mjs 10.0.0-alpha.5 → 10.0.0-beta.2

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 (188) hide show
  1. package/ServiceWorker.mjs +2 -2
  2. package/apps/colors/view/GridContainer.mjs +1 -1
  3. package/apps/covid/view/AttributionComponent.mjs +1 -1
  4. package/apps/covid/view/HeaderContainer.mjs +6 -6
  5. package/apps/covid/view/MainContainerController.mjs +5 -5
  6. package/apps/covid/view/TableContainerController.mjs +1 -1
  7. package/apps/covid/view/country/Gallery.mjs +13 -13
  8. package/apps/covid/view/country/Helix.mjs +13 -13
  9. package/apps/covid/view/country/HistoricalDataTable.mjs +1 -1
  10. package/apps/email/view/Viewport.mjs +2 -2
  11. package/apps/form/view/SideNavList.mjs +1 -1
  12. package/apps/portal/index.html +1 -1
  13. package/apps/portal/resources/data/examples_devmode.json +26 -27
  14. package/apps/portal/resources/data/examples_dist_dev.json +26 -27
  15. package/apps/portal/resources/data/examples_dist_esm.json +25 -26
  16. package/apps/portal/resources/data/examples_dist_prod.json +26 -27
  17. package/apps/portal/view/HeaderToolbar.mjs +3 -3
  18. package/apps/portal/view/about/Container.mjs +2 -2
  19. package/apps/portal/view/about/MemberContainer.mjs +3 -3
  20. package/apps/portal/view/blog/List.mjs +7 -7
  21. package/apps/portal/view/examples/List.mjs +4 -4
  22. package/apps/portal/view/home/ContentBox.mjs +2 -2
  23. package/apps/portal/view/home/FeatureSection.mjs +3 -3
  24. package/apps/portal/view/home/FooterContainer.mjs +7 -7
  25. package/apps/portal/view/home/parts/AfterMath.mjs +3 -3
  26. package/apps/portal/view/home/parts/MainNeo.mjs +3 -3
  27. package/apps/portal/view/home/parts/References.mjs +6 -6
  28. package/apps/portal/view/learn/ContentComponent.mjs +102 -111
  29. package/apps/portal/view/learn/PageSectionsContainer.mjs +1 -1
  30. package/apps/portal/view/learn/PageSectionsList.mjs +2 -2
  31. package/apps/portal/view/services/Component.mjs +16 -16
  32. package/apps/realworld/view/FooterComponent.mjs +1 -1
  33. package/apps/realworld/view/HeaderComponent.mjs +8 -8
  34. package/apps/realworld/view/HomeComponent.mjs +6 -6
  35. package/apps/realworld/view/article/CommentComponent.mjs +4 -4
  36. package/apps/realworld/view/article/Component.mjs +14 -14
  37. package/apps/realworld/view/article/CreateCommentComponent.mjs +3 -3
  38. package/apps/realworld/view/article/CreateComponent.mjs +3 -3
  39. package/apps/realworld/view/article/PreviewComponent.mjs +1 -1
  40. package/apps/realworld/view/article/TagListComponent.mjs +2 -2
  41. package/apps/realworld/view/user/ProfileComponent.mjs +8 -8
  42. package/apps/realworld/view/user/SettingsComponent.mjs +4 -4
  43. package/apps/realworld/view/user/SignUpComponent.mjs +4 -4
  44. package/apps/realworld2/view/FooterComponent.mjs +1 -1
  45. package/apps/realworld2/view/HomeContainer.mjs +3 -3
  46. package/apps/realworld2/view/article/DetailsContainer.mjs +1 -1
  47. package/apps/realworld2/view/article/PreviewComponent.mjs +7 -7
  48. package/apps/realworld2/view/article/TagListComponent.mjs +2 -2
  49. package/apps/realworld2/view/user/ProfileContainer.mjs +1 -1
  50. package/apps/route/view/center/CardAdministration.mjs +2 -2
  51. package/apps/route/view/center/CardAdministrationDenied.mjs +1 -1
  52. package/apps/route/view/center/CardContact.mjs +2 -2
  53. package/apps/route/view/center/CardHome.mjs +1 -1
  54. package/apps/route/view/center/CardSection1.mjs +1 -1
  55. package/apps/route/view/center/CardSection2.mjs +1 -1
  56. package/apps/sharedcovid/view/AttributionComponent.mjs +1 -1
  57. package/apps/sharedcovid/view/HeaderContainer.mjs +6 -6
  58. package/apps/sharedcovid/view/MainContainerController.mjs +5 -5
  59. package/apps/sharedcovid/view/TableContainerController.mjs +1 -1
  60. package/apps/sharedcovid/view/country/Gallery.mjs +13 -13
  61. package/apps/sharedcovid/view/country/Helix.mjs +13 -13
  62. package/apps/sharedcovid/view/country/HistoricalDataTable.mjs +1 -1
  63. package/apps/shareddialog/childapps/shareddialog2/view/MainContainer.mjs +1 -1
  64. package/apps/shareddialog/view/MainContainer.mjs +1 -1
  65. package/buildScripts/createApp.mjs +2 -2
  66. package/examples/table/cellEditing/MainContainer.mjs +1 -1
  67. package/examples/table/container/MainContainer.mjs +3 -3
  68. package/examples/table/nestedRecordFields/Viewport.mjs +6 -6
  69. package/examples/tableFiltering/MainContainer.mjs +1 -1
  70. package/examples/tablePerformance/MainContainer.mjs +1 -1
  71. package/examples/tablePerformance/MainContainer2.mjs +1 -1
  72. package/examples/tablePerformance/MainContainer3.mjs +2 -2
  73. package/examples/tableStore/MainContainer.mjs +2 -2
  74. package/learn/Glossary.md +261 -0
  75. package/learn/UsingTheseTopics.md +2 -2
  76. package/learn/benefits/ConfigSystem.md +538 -28
  77. package/learn/benefits/Effort.md +47 -2
  78. package/learn/benefits/Features.md +50 -32
  79. package/learn/benefits/FormsEngine.md +68 -38
  80. package/learn/benefits/MultiWindow.md +33 -7
  81. package/learn/benefits/OffTheMainThread.md +2 -2
  82. package/learn/benefits/Quick.md +45 -12
  83. package/learn/benefits/RPCLayer.md +75 -0
  84. package/learn/benefits/Speed.md +16 -11
  85. package/learn/gettingstarted/ComponentModels.md +4 -4
  86. package/learn/gettingstarted/Config.md +6 -6
  87. package/learn/gettingstarted/DescribingTheUI.md +4 -4
  88. package/learn/gettingstarted/Events.md +6 -6
  89. package/learn/gettingstarted/Extending.md +4 -4
  90. package/learn/gettingstarted/References.md +6 -6
  91. package/learn/gettingstarted/Workspaces.md +6 -6
  92. package/learn/guides/ApplicationBootstrap.md +26 -26
  93. package/learn/guides/ComponentsAndContainers.md +12 -12
  94. package/learn/guides/ConfigSystemDeepDive.md +280 -0
  95. package/learn/guides/CustomComponents.md +2 -2
  96. package/learn/guides/DeclarativeComponentTreesVsImperativeVdom.md +17 -17
  97. package/learn/guides/InstanceLifecycle.md +295 -1
  98. package/learn/guides/MainThreadAddons.md +475 -0
  99. package/learn/guides/PortalApp.md +2 -2
  100. package/learn/guides/StateProviders.md +12 -12
  101. package/learn/guides/WorkingWithVDom.md +14 -14
  102. package/learn/guides/events/CustomEvents.md +16 -16
  103. package/learn/guides/events/DomEvents.md +12 -12
  104. package/learn/javascript/ClassFeatures.md +3 -2
  105. package/learn/javascript/Classes.md +8 -8
  106. package/learn/javascript/NewNode.md +4 -4
  107. package/learn/javascript/Overrides.md +8 -8
  108. package/learn/javascript/Super.md +10 -8
  109. package/learn/tree.json +52 -51
  110. package/learn/tutorials/Earthquakes.md +54 -57
  111. package/learn/tutorials/TodoList.md +4 -4
  112. package/package.json +2 -2
  113. package/resources/scss/src/apps/portal/learn/ContentComponent.scss +12 -0
  114. package/resources/scss/src/table/{View.scss → Body.scss} +1 -1
  115. package/resources/scss/src/table/plugin/CellEditing.scss +1 -1
  116. package/resources/scss/theme-dark/table/{View.scss → Body.scss} +1 -1
  117. package/resources/scss/theme-light/table/{View.scss → Body.scss} +1 -1
  118. package/resources/scss/theme-neo-light/Global.scss +1 -2
  119. package/resources/scss/theme-neo-light/table/{View.scss → Body.scss} +1 -1
  120. package/src/DefaultConfig.mjs +2 -2
  121. package/src/Main.mjs +8 -7
  122. package/src/Neo.mjs +16 -2
  123. package/src/button/Base.mjs +2 -2
  124. package/src/calendar/view/SettingsContainer.mjs +2 -2
  125. package/src/calendar/view/YearComponent.mjs +9 -9
  126. package/src/calendar/view/calendars/ColorsList.mjs +1 -1
  127. package/src/calendar/view/calendars/List.mjs +1 -1
  128. package/src/calendar/view/month/Component.mjs +15 -15
  129. package/src/calendar/view/week/Component.mjs +12 -12
  130. package/src/calendar/view/week/EventDragZone.mjs +4 -4
  131. package/src/calendar/view/week/TimeAxisComponent.mjs +3 -3
  132. package/src/component/Base.mjs +17 -2
  133. package/src/component/Carousel.mjs +2 -2
  134. package/src/component/Chip.mjs +3 -3
  135. package/src/component/Circle.mjs +2 -2
  136. package/src/component/DateSelector.mjs +8 -8
  137. package/src/component/Helix.mjs +1 -1
  138. package/src/component/Label.mjs +3 -18
  139. package/src/component/Legend.mjs +3 -3
  140. package/src/component/MagicMoveText.mjs +6 -14
  141. package/src/component/Process.mjs +3 -3
  142. package/src/component/Progress.mjs +1 -1
  143. package/src/component/StatusBadge.mjs +2 -2
  144. package/src/component/Timer.mjs +2 -2
  145. package/src/component/Toast.mjs +5 -3
  146. package/src/container/AccordionItem.mjs +2 -2
  147. package/src/container/Base.mjs +1 -1
  148. package/src/core/Base.mjs +77 -14
  149. package/src/core/Util.mjs +14 -2
  150. package/src/date/DayViewComponent.mjs +2 -2
  151. package/src/date/SelectorContainer.mjs +1 -1
  152. package/src/draggable/grid/header/toolbar/SortZone.mjs +21 -21
  153. package/src/draggable/table/header/toolbar/SortZone.mjs +1 -1
  154. package/src/form/field/CheckBox.mjs +4 -4
  155. package/src/form/field/FileUpload.mjs +25 -39
  156. package/src/form/field/Range.mjs +1 -1
  157. package/src/form/field/Text.mjs +3 -3
  158. package/src/form/field/TextArea.mjs +2 -3
  159. package/src/grid/Body.mjs +8 -5
  160. package/src/grid/_export.mjs +1 -1
  161. package/src/list/Color.mjs +2 -2
  162. package/src/main/DeltaUpdates.mjs +157 -98
  163. package/src/main/addon/AmCharts.mjs +61 -84
  164. package/src/main/addon/Base.mjs +161 -42
  165. package/src/main/addon/GoogleMaps.mjs +9 -16
  166. package/src/main/addon/HighlightJS.mjs +2 -13
  167. package/src/main/addon/IntersectionObserver.mjs +21 -21
  168. package/src/main/addon/MonacoEditor.mjs +32 -64
  169. package/src/manager/ClassHierarchy.mjs +114 -0
  170. package/src/menu/List.mjs +1 -1
  171. package/src/plugin/Popover.mjs +2 -2
  172. package/src/sitemap/Component.mjs +1 -1
  173. package/src/table/{View.mjs → Body.mjs} +25 -22
  174. package/src/table/Container.mjs +43 -43
  175. package/src/table/_export.mjs +2 -2
  176. package/src/table/plugin/CellEditing.mjs +19 -19
  177. package/src/tooltip/Base.mjs +1 -6
  178. package/src/tree/Accordion.mjs +3 -3
  179. package/src/vdom/Helper.mjs +19 -22
  180. package/src/worker/App.mjs +1 -2
  181. package/src/worker/Base.mjs +7 -5
  182. package/src/worker/Canvas.mjs +2 -3
  183. package/src/worker/Data.mjs +5 -7
  184. package/src/worker/Task.mjs +2 -3
  185. package/src/worker/VDom.mjs +3 -4
  186. package/src/worker/mixin/RemoteMethodAccess.mjs +5 -2
  187. package/learn/guides/MainThreadAddonExample.md +0 -15
  188. package/learn/guides/MainThreadAddonIntro.md +0 -44
package/learn/tree.json CHANGED
@@ -1,53 +1,54 @@
1
1
  {"data": [
2
- {"name": "Using These Topics", "parentId": null, "id": "UsingTheseTopics" },
3
- {"name": "Benefits", "parentId": null, "isLeaf": false, "id": "Benefits"},
4
- {"name": "Introduction ", "parentId": "Benefits", "id": "benefits.Introduction"},
5
- {"name": "Off the Main Thread", "parentId": "Benefits", "id": "benefits.OffTheMainThread"},
6
- {"name": "4 Environments", "parentId": "Benefits", "id": "benefits.FourEnvironments"},
7
- {"name": "Unified Config System", "parentId": "Benefits", "id": "benefits.ConfigSystem"},
8
- {"name": "Extreme Speed", "parentId": "Benefits", "id": "benefits.Speed"},
9
- {"name": "Multi-Window Applications", "parentId": "Benefits", "id": "benefits.MultiWindow"},
10
- {"name": "Quick Application Development", "parentId": "Benefits", "id": "benefits.Quick"},
11
- {"name": "Complexity and Effort", "parentId": "Benefits", "id": "benefits.Effort"},
12
- {"name": "Forms Engine", "parentId": "Benefits", "id": "benefits.FormsEngine"},
13
- {"name": "Features and Benefits Summary", "parentId": "Benefits", "id": "benefits.Features"},
14
- {"name": "Getting Started", "parentId": null, "isLeaf": false, "id": "GettingStarted", "collapsed": true},
15
- {"name": "Setup", "parentId": "GettingStarted", "id": "gettingstarted.Setup"},
16
- {"name": "Workspaces and Applications", "parentId": "GettingStarted", "id": "gettingstarted.Workspaces"},
17
- {"name": "Describing a View", "parentId": "GettingStarted", "id": "gettingstarted.DescribingTheUI"},
18
- {"name": "Events", "parentId": "GettingStarted", "id": "gettingstarted.Events"},
19
- {"name": "Component References", "parentId": "GettingStarted", "id": "gettingstarted.References"},
20
- {"name": "Extending Classes", "parentId": "GettingStarted", "id": "gettingstarted.Extending"},
21
- {"name": "Config", "parentId": "GettingStarted", "id": "gettingstarted.Config"},
22
- {"name": "Shared Bindable Data", "parentId": "GettingStarted", "id": "gettingstarted.ComponentModels"},
23
- {"name": "Guides", "parentId": null, "isLeaf": false, "id": "InDepth", "collapsed": true},
24
- {"name": "Application Bootstrap", "parentId": "InDepth", "id": "guides.ApplicationBootstrap"},
25
- {"name": "Declarative Component Trees VS Imperative Vdom", "parentId": "InDepth", "id": "guides.DeclarativeComponentTreesVsImperativeVdom"},
26
- {"name": "Working with VDom", "parentId": "InDepth", "id": "guides.WorkingWithVDom"},
27
- {"name": "Instance Lifecycle", "parentId": "InDepth", "id": "guides.InstanceLifecycle", "hidden": true},
28
- {"name": "User Input (Forms)", "parentId": "InDepth", "id": "guides.Forms", "hidden": true},
29
- {"name": "Component and Container Basics", "parentId": "InDepth", "id": "guides.ComponentsAndContainers"},
30
- {"name": "Layouts", "parentId": "InDepth", "isLeaf": false, "id": "guides.Layouts", "hidden": true},
31
- {"name": "Shared Bindable Data (State Providers)", "parentId": "InDepth", "id": "guides.StateProviders"},
32
- {"name": "Custom Components", "parentId": "InDepth", "id": "guides.CustomComponents", "hidden": true},
33
- {"name": "Events", "parentId": "InDepth", "isLeaf": false, "id": "GuideEvents"},
34
- {"name": "Custom Events", "parentId": "GuideEvents", "id": "guides.events.CustomEvents"},
35
- {"name": "DOM Events", "parentId": "GuideEvents", "id": "guides.events.DomEvents"},
36
- {"name": "Portal App", "parentId": "InDepth", "id": "guides.PortalApp"},
37
- {"name": "Tables (Stores)", "parentId": "InDepth", "id": "guides.Tables", "hidden": true},
38
- {"name": "Multi-Window Applications", "parentId": "InDepth", "id": "guides.MultiWindow", "hidden": true},
39
- {"name": "Main Thread Addons", "parentId": "InDepth", "isLeaf": false, "id": "MainThreadAddons", "hidden": true},
40
- {"name": "Introduction", "parentId": "MainThreadAddons", "id": "guides.MainThreadAddonIntro"},
41
- {"name": "Example", "parentId": "MainThreadAddons", "id": "guides.MainThreadAddonExample"},
42
- {"name": "Mixins", "parentId": "InDepth", "id": "guides.Mixins", "hidden": true},
43
- {"name": "Tutorials", "parentId": null, "isLeaf": false, "id": "Tutorials", "collapsed": true},
44
- {"name": "Rock Scissors Paper", "parentId": "Tutorials", "id": "tutorials.RSP", "hidden": true},
45
- {"name": "Earthquakes", "parentId": "Tutorials", "id": "tutorials.Earthquakes"},
46
- {"name": "Todo List", "parentId": "Tutorials", "id": "tutorials.TodoList"},
47
- {"name": "JavaScript Classes", "parentId": null, "isLeaf": false, "id": "JavaScript", "hidden": true},
48
- {"name": "Classes, Properties, and Methods", "parentId": "JavaScript", "id": "javascript.Classes"},
49
- {"name": "Overriding Methods", "parentId": "JavaScript", "id": "javascript.Overrides"},
50
- {"name": "Other JavaScript Class Features", "parentId": "JavaScript", "id": "javascript.ClassFeatures"},
51
- {"name": "Super", "parentId": "JavaScript", "id": "javascript.Super"},
52
- {"name": "New Node", "parentId": "JavaScript", "id": "javascript.NewNode"}
2
+ {"name": "Using These Topics", "parentId": null, "id": "UsingTheseTopics" },
3
+ {"name": "Benefits", "parentId": null, "isLeaf": false, "id": "Benefits"},
4
+ {"name": "Introduction ", "parentId": "Benefits", "id": "benefits.Introduction"},
5
+ {"name": "Off the Main Thread", "parentId": "Benefits", "id": "benefits.OffTheMainThread"},
6
+ {"name": "4 Environments", "parentId": "Benefits", "id": "benefits.FourEnvironments"},
7
+ {"name": "Unified Config System", "parentId": "Benefits", "id": "benefits.ConfigSystem"},
8
+ {"name": "RPC Layer", "parentId": "Benefits", "id": "benefits.RPCLayer"},
9
+ {"name": "Extreme Speed", "parentId": "Benefits", "id": "benefits.Speed"},
10
+ {"name": "Multi-Window Applications", "parentId": "Benefits", "id": "benefits.MultiWindow"},
11
+ {"name": "Quick Application Development", "parentId": "Benefits", "id": "benefits.Quick"},
12
+ {"name": "Complexity and Effort", "parentId": "Benefits", "id": "benefits.Effort"},
13
+ {"name": "Forms Engine", "parentId": "Benefits", "id": "benefits.FormsEngine"},
14
+ {"name": "Features and Benefits Summary", "parentId": "Benefits", "id": "benefits.Features"},
15
+ {"name": "Getting Started", "parentId": null, "isLeaf": false, "id": "GettingStarted", "collapsed": true},
16
+ {"name": "Setup", "parentId": "GettingStarted", "id": "gettingstarted.Setup"},
17
+ {"name": "Workspaces and Applications", "parentId": "GettingStarted", "id": "gettingstarted.Workspaces"},
18
+ {"name": "Describing a View", "parentId": "GettingStarted", "id": "gettingstarted.DescribingTheUI"},
19
+ {"name": "Events", "parentId": "GettingStarted", "id": "gettingstarted.Events"},
20
+ {"name": "Component References", "parentId": "GettingStarted", "id": "gettingstarted.References"},
21
+ {"name": "Extending Classes", "parentId": "GettingStarted", "id": "gettingstarted.Extending"},
22
+ {"name": "Config", "parentId": "GettingStarted", "id": "gettingstarted.Config"},
23
+ {"name": "Shared Bindable Data", "parentId": "GettingStarted", "id": "gettingstarted.ComponentModels"},
24
+ {"name": "Guides", "parentId": null, "isLeaf": false, "id": "InDepth", "collapsed": true},
25
+ {"name": "Application Bootstrap", "parentId": "InDepth", "id": "guides.ApplicationBootstrap"},
26
+ {"name": "Instance Lifecycle", "parentId": "InDepth", "id": "guides.InstanceLifecycle"},
27
+ {"name": "Declarative Component Trees VS Imperative Vdom", "parentId": "InDepth", "id": "guides.DeclarativeComponentTreesVsImperativeVdom"},
28
+ {"name": "Shared Bindable Data (State Providers)", "parentId": "InDepth", "id": "guides.StateProviders"},
29
+ {"name": "Working with VDom", "parentId": "InDepth", "id": "guides.WorkingWithVDom"},
30
+ {"name": "Config System Deep Dive", "parentId": "InDepth", "id": "guides.ConfigSystemDeepDive"},
31
+ {"name": "Main Thread Addons: Interacting with the Browser", "parentId": "InDepth", "id": "guides.MainThreadAddons"},
32
+ {"name": "User Input (Forms)", "parentId": "InDepth", "id": "guides.Forms", "hidden": true},
33
+ {"name": "Component and Container Basics", "parentId": "InDepth", "id": "guides.ComponentsAndContainers"},
34
+ {"name": "Layouts", "parentId": "InDepth", "isLeaf": false, "id": "guides.Layouts", "hidden": true},
35
+ {"name": "Custom Components", "parentId": "InDepth", "id": "guides.CustomComponents", "hidden": true},
36
+ {"name": "Events", "parentId": "InDepth", "isLeaf": false, "id": "GuideEvents"},
37
+ {"name": "Custom Events", "parentId": "GuideEvents", "id": "guides.events.CustomEvents"},
38
+ {"name": "DOM Events", "parentId": "GuideEvents", "id": "guides.events.DomEvents"},
39
+ {"name": "Portal App", "parentId": "InDepth", "id": "guides.PortalApp"},
40
+ {"name": "Tables (Stores)", "parentId": "InDepth", "id": "guides.Tables", "hidden": true},
41
+ {"name": "Multi-Window Applications", "parentId": "InDepth", "id": "guides.MultiWindow", "hidden": true},
42
+ {"name": "Mixins", "parentId": "InDepth", "id": "guides.Mixins", "hidden": true},
43
+ {"name": "Tutorials", "parentId": null, "isLeaf": false, "id": "Tutorials", "collapsed": true},
44
+ {"name": "Rock Scissors Paper", "parentId": "Tutorials", "id": "tutorials.RSP", "hidden": true},
45
+ {"name": "Earthquakes", "parentId": "Tutorials", "id": "tutorials.Earthquakes"},
46
+ {"name": "Todo List", "parentId": "Tutorials", "id": "tutorials.TodoList"},
47
+ {"name": "JavaScript Classes", "parentId": null, "isLeaf": false, "id": "JavaScript", "hidden": true},
48
+ {"name": "Classes, Properties, and Methods", "parentId": "JavaScript", "id": "javascript.Classes"},
49
+ {"name": "Overriding Methods", "parentId": "JavaScript", "id": "javascript.Overrides"},
50
+ {"name": "Other JavaScript Class Features", "parentId": "JavaScript", "id": "javascript.ClassFeatures"},
51
+ {"name": "Super", "parentId": "JavaScript", "id": "javascript.Super"},
52
+ {"name": "New Node", "parentId": "JavaScript", "id": "javascript.NewNode"},
53
+ {"name": "Glossary", "parentId": null, "id": "Glossary"}
53
54
  ]}
@@ -157,18 +157,15 @@ After the script runs yous should see these files in the `app/earthquakes` direc
157
157
 
158
158
  If you look in `neo-config.json` you should see this content. Note the `mainThreadAddons` block
159
159
  — it reflects the add-ons you chose when you followed the instructions in the script.
160
- <pre>
160
+ ```json
161
161
  {
162
- "appPath": "../../apps/earthquakes/app.mjs",
163
- "basePath": "../../",
164
- "environment": "development",
165
- "mainPath": "../node_modules/neo.mjs/src/Main.mjs",
166
- "mainThreadAddons": [
167
- "DragDrop",
168
- "Stylesheet"
169
- ],
170
- "workerBasePath": "../../node_modules/neo.mjs/src/worker/"
171
- }</pre>
162
+ "appPath" : "../../apps/earthquakes/app.mjs",
163
+ "basePath" : "../../",
164
+ "environment" : "development",
165
+ "mainPath" : "../node_modules/neo.mjs/src/Main.mjs",
166
+ "mainThreadAddons": ["DragDrop", "Navigator", "Stylesheet"],
167
+ "workerBasePath" : "../../node_modules/neo.mjs/src/worker/"
168
+ }```
172
169
 
173
170
  You're free to edit `neo-config.json` if you were to change your mind later about the theme or need for other add-ons.
174
171
 
@@ -187,7 +184,7 @@ later in the lab.
187
184
  Use a code editor and look at `workspace/apps/earthquakes/src/view/MainView.mjs`. You'll see the
188
185
  following class definition:
189
186
 
190
- <pre data-code-readonly>
187
+ ```javascript readonly
191
188
  import Base from '../../../node_modules/neo.mjs/src/container/Base.mjs';
192
189
  import Controller from './MainViewController.mjs';
193
190
  import MainStateProvider from './MainStateProvider.mjs';
@@ -206,7 +203,7 @@ class MainView extends Base {
206
203
  }
207
204
 
208
205
  export default Neo.setupClass(MainView);
209
- </pre>
206
+ ```
210
207
 
211
208
  As you can see, `MainView extends Base`, and `Base` is a _container_ (`Neo.container.Base`).
212
209
  A container is a component &mdash; it holds other components, specified in `items:[]`. There
@@ -223,7 +220,7 @@ that buttons have various configs, such as `text`, which is the button text, `ic
223
220
  is typically a FontAwesome CSS class used to show an icon, and `handler`, which specifies
224
221
  which method to run when the button is clicked. We'll use `text`.
225
222
 
226
- <pre data-code-readonly>
223
+ ```javascript readonly
227
224
 
228
225
  import Base from '../../../node_modules/neo.mjs/src/container/Base.mjs';
229
226
  import Button from '../../../node_modules/neo.mjs/src/button/Base.mjs';
@@ -247,7 +244,7 @@ class MainView extends Base {
247
244
  }
248
245
 
249
246
  export default Neo.setupClass(MainView);
250
- </pre>
247
+ ```
251
248
 
252
249
 
253
250
  When you run the app you'll see the single button.
@@ -271,12 +268,12 @@ for the classes you define.
271
268
 
272
269
  Let's change the layout to arrange items vertically, with items aligned horizontally at the start.
273
270
 
274
- <pre data-code-readonly>
271
+ ```javascript readonly
275
272
  layout: {
276
273
  ntype: 'vbox',
277
274
  align: 'start'
278
275
  }
279
- </pre>
276
+ ```
280
277
 
281
278
  <img src="https://s3.amazonaws.com/mjs.neo.learning.images/earthquakes/EarthquakesSingleVoxStartButton.png" style="width:80%"/>
282
279
 
@@ -422,7 +419,7 @@ its methods. Let's try that out by adding a method.
422
419
 
423
420
  Edit `apps/earthquakes/view/MainView.mjs` and add a method.
424
421
 
425
- <pre data-code-readonly>
422
+ ```javascript readonly
426
423
 
427
424
  import Base from '../../../node_modules/neo.mjs/src/container/Base.mjs';
428
425
  import Button from '../../../node_modules/neo.mjs/src/button/Base.mjs';
@@ -453,7 +450,7 @@ class MainView extends Base {
453
450
  }
454
451
 
455
452
  export default Neo.setupClass(MainView);
456
- </pre>
453
+ ```
457
454
 
458
455
  Save your changes.
459
456
 
@@ -494,7 +491,7 @@ At this point we have a application with minimal content. You also know how to d
494
491
 
495
492
  Replace the button with a table by replacing `MainView.mjs` with the following content.
496
493
 
497
- <pre data-code-readonly>
494
+ ```javascript readonly
498
495
 
499
496
  import Base from '../../../node_modules/neo.mjs/src/container/Base.mjs';
500
497
  import Table from '../../../node_modules/neo.mjs/src/table/Container.mjs';
@@ -550,7 +547,7 @@ class MainView extends Base {
550
547
  }
551
548
 
552
549
  export default Neo.setupClass(MainView);
553
- </pre>
550
+ ```
554
551
 
555
552
  Save and refresh.
556
553
 
@@ -582,7 +579,7 @@ Let's review the code and see what it's doing.
582
579
  A store is a collection of records. A record is described in the `model` and the model's `fields`.
583
580
  Here's the config for the store.
584
581
 
585
- <pre data-code-readonly>
582
+ ```javascript readonly
586
583
  {
587
584
  module: Store,
588
585
  model: {
@@ -599,10 +596,10 @@ Here's the config for the store.
599
596
  responseRoot: "data",
600
597
  autoLoad: true,
601
598
  }
602
- </pre>
599
+ ```
603
600
 
604
601
  The feed looks like this.
605
- <pre data-code-readonly>
602
+ ```json readonly
606
603
  {
607
604
  "data": [{
608
605
  "timestamp": "2024-09-29T16:45:14.000Z",
@@ -621,7 +618,7 @@ The feed looks like this.
621
618
  }, ...
622
619
  ]
623
620
  }
624
- </pre>
621
+ ```
625
622
 
626
623
  The store defines a `type` for the date field. There are a few pre-defined field types that convert
627
624
  the value from the feed into what's stored in the store's record. The store specifies the URL for the
@@ -632,7 +629,7 @@ of items.
632
629
 
633
630
  Tables have two key configs: `store` and `columns`. Here's the columns config:
634
631
 
635
- <pre data-code-readonly>
632
+ ```javascript readonly
636
633
  columns: [{
637
634
  dataField: "timestamp",
638
635
  text: "Date",
@@ -646,7 +643,7 @@ columns: [{
646
643
  align: "right",
647
644
  renderer: (data) => data.value.toLocaleString(),
648
645
  }]
649
- </pre>
646
+ ```
650
647
 
651
648
  By default, a column just runs `toString()` on the record property specified in the column's `dataField`.
652
649
  You can also provide a `renderer`, which is a function you provide to format the value any way you'd like.
@@ -672,7 +669,7 @@ abstract, and it allows those classes to be tested in isolation.
672
669
 
673
670
  Create a new file named `apps/earthquakes/view/earthquakes/Table.mjs` with this content.
674
671
 
675
- <pre data-code-readonly>
672
+ ```javascript readonly
676
673
  import Base from '../../../../node_modules/neo.mjs/src/table/Container.mjs';
677
674
 
678
675
  class Table extends Base {
@@ -698,7 +695,7 @@ class Table extends Base {
698
695
  }
699
696
 
700
697
  export default Neo.setupClass(Table);
701
- </pre>
698
+ ```
702
699
 
703
700
  </details>
704
701
 
@@ -735,7 +732,7 @@ You can confirm that an instance _was created_ by using the DevTools console and
735
732
  <details>
736
733
  <summary>Here's the code</summary>
737
734
 
738
- <pre data-code-readonly>
735
+ ```javascript readonly
739
736
  import Base from '../../../node_modules/neo.mjs/src/container/Base.mjs';
740
737
  import Controller from './MainViewController.mjs';
741
738
  import EarthquakesTable from './earthquakes/Table.mjs';
@@ -775,7 +772,7 @@ static config = {
775
772
  }
776
773
 
777
774
  export default Neo.setupClass(MainView);
778
- </pre>
775
+ ```
779
776
 
780
777
  </details>
781
778
 
@@ -858,7 +855,7 @@ State Providers have two key configs: `data` and `stores`.
858
855
 
859
856
  Add a `stores` property to the state provider config that holds a copy of the store.
860
857
 
861
- <pre data-code-readonly>
858
+ ```javascript readonly
862
859
  import Base from '../../../node_modules/neo.mjs/src/container/Base.mjs';
863
860
  import Controller from './MainViewController.mjs';
864
861
  import EarthquakesTable from './earthquakes/Table.mjs';
@@ -939,8 +936,7 @@ class MainView extends Base {
939
936
  }
940
937
 
941
938
  export default Neo.setupClass(MainView);
942
-
943
- </pre>
939
+ ```
944
940
 
945
941
  In the `stores` config we named the store _earthquakes_. We could have named it anything, like _foo_
946
942
  or _myStore_. We're calling it _earthquakes_ simply because that seems like a good descriptive name
@@ -972,7 +968,7 @@ value is assigned to the table's `store` property.
972
968
 
973
969
  Replace each table's `store` config with the binding.
974
970
 
975
- <pre data-code-readonly>
971
+ ```javascript readonly
976
972
 
977
973
  import Base from '../../../node_modules/neo.mjs/src/container/Base.mjs';
978
974
  import Controller from './MainViewController.mjs';
@@ -1025,7 +1021,7 @@ class MainView extends Base {
1025
1021
  }
1026
1022
 
1027
1023
  export default Neo.setupClass(MainView);
1028
- </pre>
1024
+ ```
1029
1025
 
1030
1026
  Save, refresh, and look at network traffic: you'll see a _single_ call to the web service.
1031
1027
 
@@ -1033,13 +1029,13 @@ Save, refresh, and look at network traffic: you'll see a _single_ call to the we
1033
1029
 
1034
1030
  You can further prove we're using a shared instance by running these statements in the console.
1035
1031
 
1036
- <pre data-code-readonly>
1032
+ ```javascript readonly
1037
1033
  a = Neo.findFirst({ntype:'earthquakes-main'}).stateProvider.stores.earthquakes;
1038
1034
  b = Neo.find({ntype:'earthquakes-table'})[0].store;
1039
1035
  c = Neo.find({ntype:'earthquakes-table'})[1].store;
1040
1036
 
1041
1037
  (a === b) && (a === c) && (b === c) // true
1042
- </pre>
1038
+ ```
1043
1039
 
1044
1040
  </details>
1045
1041
 
@@ -1056,7 +1052,7 @@ Since the starter app already provides `MainStateProvider`, all we need to do is
1056
1052
 
1057
1053
  Here's the resulting code you should place into `MainStateProvider.mjs`.
1058
1054
 
1059
- <pre data-code-readonly>
1055
+ ```javascript readonly
1060
1056
  import StateProvider from '../../../node_modules/neo.mjs/src/state/Provider.mjs';
1061
1057
  import Store from '../../../node_modules/neo.mjs/src/data/Store.mjs';
1062
1058
 
@@ -1087,11 +1083,11 @@ class MainStateProvider extends StateProvider {
1087
1083
  }
1088
1084
 
1089
1085
  export default Neo.setupClass(MainStateProvider);
1090
- </pre>
1086
+ ```
1091
1087
 
1092
1088
  And you need to remove the `stores` config from the main view as follows.
1093
1089
 
1094
- <pre data-code-readonly>
1090
+ ```javascript readonly
1095
1091
  import Container from '../../../node_modules/neo.mjs/src/container/Base.mjs';
1096
1092
  import Controller from './MainViewController.mjs';
1097
1093
  import EarthquakesTable from './earthquakes/Table.mjs';
@@ -1124,7 +1120,7 @@ class MainView extends Container {
1124
1120
  }
1125
1121
 
1126
1122
  export default Neo.setupClass(MainView);
1127
- </pre>
1123
+ ```
1128
1124
 
1129
1125
  The refactorings to have separate table and state provider classes means the code is more modular, more reusable,
1130
1126
  and each class is simpler than using complex source files that try to configure every detail.
@@ -1188,7 +1184,7 @@ directory, but instead, move the files to their individual locations.
1188
1184
 
1189
1185
  Edit `apps/earthquakes/neo-config.json` and add entries for the Google Maps add-on and the map key.
1190
1186
 
1191
- <pre data-code-readonly>
1187
+ ```json readonly
1192
1188
  {
1193
1189
  "appPath": "../../apps/earthquakes/app.mjs",
1194
1190
  "basePath": "../../",
@@ -1196,6 +1192,7 @@ Edit `apps/earthquakes/neo-config.json` and add entries for the Google Maps add-
1196
1192
  "mainPath": "../node_modules/neo.mjs/src/Main.mjs",
1197
1193
  "mainThreadAddons": [
1198
1194
  "DragDrop",
1195
+ "Navigator",
1199
1196
  "WS/GoogleMaps",
1200
1197
  "Stylesheet"
1201
1198
  ],
@@ -1203,7 +1200,7 @@ Edit `apps/earthquakes/neo-config.json` and add entries for the Google Maps add-
1203
1200
  "themes" : ["neo-theme-neo-light"],
1204
1201
  "workerBasePath": "../../node_modules/neo.mjs/src/worker/"
1205
1202
  }
1206
- </pre>
1203
+ ```
1207
1204
 
1208
1205
  It's unusual to need to edit `neo-config.json`. The app theme is specified there, and so are main thread add-ons.
1209
1206
  In our case, we're adding `WS/GoogleMaps` which in turn requires that we specify the map key. The `WS/`
@@ -1227,7 +1224,7 @@ lets us implement those via two properties:
1227
1224
 
1228
1225
  Edit `apps/earthquakes/view/MainStateProvider.mjs` and modify `fields` as follows.
1229
1226
 
1230
- <pre data-code-readonly>
1227
+ ```javascript readonly
1231
1228
  fields: [{
1232
1229
  name: "location",
1233
1230
  }, {
@@ -1242,7 +1239,7 @@ fields: [{
1242
1239
  name: "position",
1243
1240
  calculate: (data, field, item)=>({lat: item.latitude, lng: item.longitude})
1244
1241
  }],
1245
- </pre>
1242
+ ```
1246
1243
 
1247
1244
  As you can see, _title_ is mapped to the existing feed value _location_, and _position_ is
1248
1245
  calculated by returning an object with _lat_ and _lng_ set to the corresponding values from the feed.
@@ -1262,9 +1259,9 @@ Look at one of the items, and you should see that _title_ and _location_ are in
1262
1259
  <summary>Use the Google Map Component</summary>
1263
1260
 
1264
1261
  We're going to replace the top table with a Google Map. To do that we need to import the Google Maps component
1265
- and show it implace of the top table. The map should be centered on Iceland. To wit
1262
+ and show it inplace of the top table. The map should be centered on Iceland.
1266
1263
 
1267
- <pre>
1264
+ ```javascript readonly
1268
1265
  {
1269
1266
  module: GoogleMapsComponent,
1270
1267
  flex: 1,
@@ -1274,11 +1271,11 @@ and show it implace of the top table. The map should be centered on Iceland. To
1274
1271
  },
1275
1272
  zoom: 6
1276
1273
  }
1277
- </pre>
1274
+ ```
1278
1275
 
1279
1276
  If we replace the top table with the map, `view/MainView.mjs` ends up with this content.
1280
1277
 
1281
- <pre data-code-readonly>
1278
+ ```javascript readonly
1282
1279
 
1283
1280
  import Container from '../container/Base.mjs';
1284
1281
  import Controller from './MainViewController.mjs';
@@ -1318,7 +1315,7 @@ class MainView extends Container {
1318
1315
  }
1319
1316
 
1320
1317
  export default Neo.setupClass(MainView);
1321
- </pre>
1318
+ ```
1322
1319
 
1323
1320
  <img style="width:80%" src="https://s3.amazonaws.com/mjs.neo.learning.images/earthquakes/CenteredMap.png"></img>
1324
1321
 
@@ -1333,11 +1330,11 @@ export default Neo.setupClass(MainView);
1333
1330
 
1334
1331
  Add this config to the map.
1335
1332
 
1336
- <pre data-code-readonly>
1333
+ ```javascript readonly
1337
1334
  bind: {
1338
1335
  markerStore: 'stores.earthquakes'
1339
1336
  }
1340
- </pre>
1337
+ ```
1341
1338
  <img style="width:80%" src="https://s3.amazonaws.com/mjs.neo.learning.images/earthquakes/InitialMapWithMarkers.png"></img>
1342
1339
 
1343
1340
  </details>
@@ -1365,13 +1362,13 @@ Table Views fire a select event, passing an object that contains a reference to
1365
1362
 
1366
1363
  Add this table config:
1367
1364
 
1368
- <pre data-code-readonly>
1365
+ ```javascript readonly
1369
1366
  viewConfig: {
1370
1367
  listeners: {
1371
1368
  select: (data) => console.log(data.record)
1372
1369
  }
1373
1370
  }
1374
- </pre>
1371
+ ```
1375
1372
 
1376
1373
  Save and refresh, then click on a table row. If you look at the debugger console you'll see the record being logged.
1377
1374
 
@@ -1391,11 +1388,11 @@ After changing the value you should immediately see it reflected in the table ro
1391
1388
 
1392
1389
  Now add a `markerClick` listener to the Google Map.
1393
1390
 
1394
- <pre data-code-readonly>
1391
+ ```javascript readonly
1395
1392
  listeners: {
1396
1393
  markerClick: data => console.log(data.data.record)
1397
1394
  }
1398
- </pre>
1395
+ ```
1399
1396
 
1400
1397
  Save, refresh, and confirm that you see the value logged when you click on a map marker.
1401
1398
 
@@ -3,7 +3,7 @@
3
3
  In case you did not work with neo yet, but come from a more HTML driven ecosystem,
4
4
  you could achieve the task in a similar way.
5
5
 
6
- <pre data-code-livepreview>
6
+ ```javascript live-preview
7
7
  import Component from '../component/Base.mjs';
8
8
  import NeoArray from '../util/Array.mjs';
9
9
  import VdomUtil from '../util/VDom.mjs';
@@ -110,13 +110,13 @@ class MainComponent extends Component {
110
110
  }
111
111
 
112
112
  MainComponent = Neo.setupClass(MainComponent);
113
- </pre>
113
+ ```
114
114
 
115
115
  ## Neo Style
116
116
 
117
117
  content
118
118
 
119
- <pre data-code-livepreview>
119
+ ```javascript live-preview
120
120
  import Container from '../container/Base.mjs';
121
121
  import List from '../list/Base.mjs';
122
122
  import Model from '../data/Model.mjs';
@@ -228,4 +228,4 @@ class MainContainer extends Container {
228
228
  }
229
229
 
230
230
  MainContainer = Neo.setupClass(MainContainer);
231
- </pre>
231
+ ```
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name" : "neo.mjs",
3
- "version" : "10.0.0-alpha.5",
3
+ "version" : "10.0.0-beta.2",
4
4
  "description" : "Neo.mjs: The multi-threaded UI framework for building ultra-fast, desktop-like web applications with uncompromised responsiveness, inherent security, and a transpilation-free dev mode.",
5
5
  "type" : "module",
6
6
  "repository" : {
@@ -87,7 +87,7 @@
87
87
  "highlightjs-line-numbers.js" : "^2.9.0",
88
88
  "html-minifier-terser" : "^7.2.0",
89
89
  "inquirer" : "^12.6.3",
90
- "marked" : "^15.0.12",
90
+ "marked" : "^16.0.0",
91
91
  "monaco-editor" : "0.50.0",
92
92
  "neo-jsdoc" : "1.0.1",
93
93
  "neo-jsdoc-x" : "1.0.5",
@@ -84,6 +84,18 @@
84
84
  margin: 0.5em 0 0.7em 0;
85
85
  }
86
86
 
87
+ pre code.language-text {
88
+ &:not(.hljs) {
89
+ background-color: #F8F8F8;
90
+ border : thin solid lightgray;
91
+ display : block;
92
+ font-size : 13px;
93
+ overflow-x : auto;
94
+ padding : 12px;
95
+ white-space : pre;
96
+ }
97
+ }
98
+
87
99
  pre[data-javascript] {
88
100
  border : thin solid lightgray;
89
101
  border-radius: 4px;
@@ -1,4 +1,4 @@
1
- .neo-table-view {
1
+ .neo-table-body {
2
2
  &:focus {
3
3
  outline: none;
4
4
  }
@@ -1,4 +1,4 @@
1
- .neo-table-view {
1
+ .neo-table-body {
2
2
  .neo-table-cell {
3
3
  &:has(.neo-table-editor) {
4
4
  padding: 1px 4px 2px;
@@ -1,4 +1,4 @@
1
- :root .neo-theme-dark { // .neo-table-view
1
+ :root .neo-theme-dark { // .neo-table-body
2
2
  --table-cell-background-color-hover : #54595c;
3
3
  --table-cell-ismodified-color : orange;
4
4
  --table-cell-ismodified-size : 10px;
@@ -1,6 +1,6 @@
1
1
  @use "sass:color";
2
2
 
3
- :root .neo-theme-light { // .neo-table-view
3
+ :root .neo-theme-light { // .neo-table-body
4
4
  --table-cell-background-color-hover : #{color.adjust(#33343d, $lightness: 70%)};
5
5
  --table-cell-ismodified-color : orange;
6
6
  --table-cell-ismodified-size : 10px;
@@ -53,11 +53,10 @@
53
53
  border-radius : 4px;
54
54
  color : var(--sem-color-fg-neutral-contrast);
55
55
  font-family : var(--core-fontfamily-mono);
56
- font-size : var(--core-fontsize-body);
56
+ font-size : 14px;
57
57
  font-weight : var(--core-fontweight-regular);
58
58
  line-height : var(--core-lineheight-headline);
59
59
  padding : 2px 0.3em;
60
- font-size : 16px;
61
60
  }
62
61
  }
63
62