neo.mjs 10.0.0-beta.1 → 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 (138) 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_dist_esm.json +1 -1
  14. package/apps/portal/resources/data/examples_dist_prod.json +2 -2
  15. package/apps/portal/view/HeaderToolbar.mjs +3 -3
  16. package/apps/portal/view/about/Container.mjs +2 -2
  17. package/apps/portal/view/about/MemberContainer.mjs +3 -3
  18. package/apps/portal/view/blog/List.mjs +7 -7
  19. package/apps/portal/view/examples/List.mjs +4 -4
  20. package/apps/portal/view/home/ContentBox.mjs +2 -2
  21. package/apps/portal/view/home/FeatureSection.mjs +3 -3
  22. package/apps/portal/view/home/FooterContainer.mjs +7 -7
  23. package/apps/portal/view/home/parts/AfterMath.mjs +3 -3
  24. package/apps/portal/view/home/parts/MainNeo.mjs +3 -3
  25. package/apps/portal/view/home/parts/References.mjs +6 -6
  26. package/apps/portal/view/learn/ContentComponent.mjs +3 -3
  27. package/apps/portal/view/learn/PageSectionsContainer.mjs +1 -1
  28. package/apps/portal/view/learn/PageSectionsList.mjs +2 -2
  29. package/apps/portal/view/services/Component.mjs +16 -16
  30. package/apps/realworld/view/FooterComponent.mjs +1 -1
  31. package/apps/realworld/view/HeaderComponent.mjs +8 -8
  32. package/apps/realworld/view/HomeComponent.mjs +6 -6
  33. package/apps/realworld/view/article/CommentComponent.mjs +4 -4
  34. package/apps/realworld/view/article/Component.mjs +14 -14
  35. package/apps/realworld/view/article/CreateCommentComponent.mjs +3 -3
  36. package/apps/realworld/view/article/CreateComponent.mjs +3 -3
  37. package/apps/realworld/view/article/PreviewComponent.mjs +1 -1
  38. package/apps/realworld/view/article/TagListComponent.mjs +2 -2
  39. package/apps/realworld/view/user/ProfileComponent.mjs +8 -8
  40. package/apps/realworld/view/user/SettingsComponent.mjs +4 -4
  41. package/apps/realworld/view/user/SignUpComponent.mjs +4 -4
  42. package/apps/realworld2/view/FooterComponent.mjs +1 -1
  43. package/apps/realworld2/view/HomeContainer.mjs +3 -3
  44. package/apps/realworld2/view/article/DetailsContainer.mjs +1 -1
  45. package/apps/realworld2/view/article/PreviewComponent.mjs +7 -7
  46. package/apps/realworld2/view/article/TagListComponent.mjs +2 -2
  47. package/apps/realworld2/view/user/ProfileContainer.mjs +1 -1
  48. package/apps/route/view/center/CardAdministration.mjs +2 -2
  49. package/apps/route/view/center/CardAdministrationDenied.mjs +1 -1
  50. package/apps/route/view/center/CardContact.mjs +2 -2
  51. package/apps/route/view/center/CardHome.mjs +1 -1
  52. package/apps/route/view/center/CardSection1.mjs +1 -1
  53. package/apps/route/view/center/CardSection2.mjs +1 -1
  54. package/apps/sharedcovid/view/AttributionComponent.mjs +1 -1
  55. package/apps/sharedcovid/view/HeaderContainer.mjs +6 -6
  56. package/apps/sharedcovid/view/MainContainerController.mjs +5 -5
  57. package/apps/sharedcovid/view/TableContainerController.mjs +1 -1
  58. package/apps/sharedcovid/view/country/Gallery.mjs +13 -13
  59. package/apps/sharedcovid/view/country/Helix.mjs +13 -13
  60. package/apps/sharedcovid/view/country/HistoricalDataTable.mjs +1 -1
  61. package/apps/shareddialog/childapps/shareddialog2/view/MainContainer.mjs +1 -1
  62. package/apps/shareddialog/view/MainContainer.mjs +1 -1
  63. package/buildScripts/createApp.mjs +2 -2
  64. package/learn/Glossary.md +261 -0
  65. package/learn/benefits/ConfigSystem.md +536 -26
  66. package/learn/benefits/Effort.md +47 -2
  67. package/learn/benefits/Features.md +50 -32
  68. package/learn/benefits/FormsEngine.md +54 -24
  69. package/learn/benefits/MultiWindow.md +31 -5
  70. package/learn/benefits/Quick.md +45 -12
  71. package/learn/benefits/RPCLayer.md +75 -0
  72. package/learn/benefits/Speed.md +17 -12
  73. package/learn/guides/ConfigSystemDeepDive.md +280 -0
  74. package/learn/guides/DeclarativeComponentTreesVsImperativeVdom.md +17 -17
  75. package/learn/guides/InstanceLifecycle.md +295 -1
  76. package/learn/guides/MainThreadAddons.md +475 -0
  77. package/learn/guides/WorkingWithVDom.md +14 -14
  78. package/learn/tree.json +52 -51
  79. package/package.json +2 -2
  80. package/src/DefaultConfig.mjs +2 -2
  81. package/src/Main.mjs +8 -7
  82. package/src/Neo.mjs +16 -2
  83. package/src/button/Base.mjs +2 -2
  84. package/src/calendar/view/SettingsContainer.mjs +2 -2
  85. package/src/calendar/view/YearComponent.mjs +9 -9
  86. package/src/calendar/view/calendars/ColorsList.mjs +1 -1
  87. package/src/calendar/view/calendars/List.mjs +1 -1
  88. package/src/calendar/view/month/Component.mjs +15 -15
  89. package/src/calendar/view/week/Component.mjs +12 -12
  90. package/src/calendar/view/week/EventDragZone.mjs +4 -4
  91. package/src/calendar/view/week/TimeAxisComponent.mjs +3 -3
  92. package/src/component/Base.mjs +17 -2
  93. package/src/component/Carousel.mjs +2 -2
  94. package/src/component/Chip.mjs +3 -3
  95. package/src/component/Circle.mjs +2 -2
  96. package/src/component/DateSelector.mjs +8 -8
  97. package/src/component/Helix.mjs +1 -1
  98. package/src/component/Label.mjs +3 -18
  99. package/src/component/Legend.mjs +3 -3
  100. package/src/component/MagicMoveText.mjs +6 -14
  101. package/src/component/Process.mjs +3 -3
  102. package/src/component/Progress.mjs +1 -1
  103. package/src/component/StatusBadge.mjs +2 -2
  104. package/src/component/Timer.mjs +2 -2
  105. package/src/component/Toast.mjs +5 -3
  106. package/src/container/AccordionItem.mjs +2 -2
  107. package/src/container/Base.mjs +1 -1
  108. package/src/core/Base.mjs +18 -2
  109. package/src/date/DayViewComponent.mjs +2 -2
  110. package/src/date/SelectorContainer.mjs +1 -1
  111. package/src/form/field/CheckBox.mjs +4 -4
  112. package/src/form/field/FileUpload.mjs +25 -39
  113. package/src/form/field/Range.mjs +1 -1
  114. package/src/form/field/Text.mjs +3 -3
  115. package/src/form/field/TextArea.mjs +2 -3
  116. package/src/grid/Body.mjs +6 -2
  117. package/src/list/Color.mjs +2 -2
  118. package/src/main/DeltaUpdates.mjs +157 -98
  119. package/src/main/addon/AmCharts.mjs +53 -73
  120. package/src/main/addon/Base.mjs +11 -0
  121. package/src/main/addon/MonacoEditor.mjs +31 -58
  122. package/src/manager/ClassHierarchy.mjs +114 -0
  123. package/src/menu/List.mjs +1 -1
  124. package/src/plugin/Popover.mjs +2 -2
  125. package/src/sitemap/Component.mjs +1 -1
  126. package/src/table/Body.mjs +6 -2
  127. package/src/tooltip/Base.mjs +1 -6
  128. package/src/tree/Accordion.mjs +3 -3
  129. package/src/vdom/Helper.mjs +19 -19
  130. package/src/worker/App.mjs +1 -2
  131. package/src/worker/Base.mjs +6 -4
  132. package/src/worker/Canvas.mjs +2 -3
  133. package/src/worker/Data.mjs +5 -7
  134. package/src/worker/Task.mjs +2 -3
  135. package/src/worker/VDom.mjs +3 -4
  136. package/src/worker/mixin/RemoteMethodAccess.mjs +4 -1
  137. package/learn/guides/MainThreadAddonExample.md +0 -15
  138. package/learn/guides/MainThreadAddonIntro.md +0 -44
@@ -18,13 +18,13 @@ class CardAdministration extends Container {
18
18
 
19
19
  vdom: {
20
20
  tag : 'h1',
21
- html: 'Access Granted.'
21
+ text: 'Access Granted.'
22
22
  }
23
23
  }
24
24
 
25
25
 
26
26
  afterSetUsername(value, oldValue) {
27
- this.vdom.html = `Access Granted to ${this.username}.`;
27
+ this.vdom.text = `Access Granted to ${this.username}.`;
28
28
  }
29
29
  }
30
30
 
@@ -16,7 +16,7 @@ class CardAdministrationDenied extends Container {
16
16
 
17
17
  vdom: {
18
18
  tag : 'h1',
19
- html: 'Access Denied.'
19
+ text: 'Access Denied.'
20
20
  }
21
21
  }
22
22
  }
@@ -16,8 +16,8 @@ class CardContact extends Container {
16
16
 
17
17
  items: [
18
18
  { cls : ['route_card_simple_page'], vdom: { cn: [
19
- {tag: 'h1', html: 'Contact' },
20
- {tag: 'a', href: 'https://github.com/neomjs/neo', target: '_blank', html: 'please visit https://github.com/neomjs/neo'}
19
+ {tag: 'h1', text: 'Contact' },
20
+ {tag: 'a', href: 'https://github.com/neomjs/neo', target: '_blank', text: 'please visit https://github.com/neomjs/neo'}
21
21
  ] } }
22
22
  ]
23
23
  }
@@ -16,7 +16,7 @@ class CardHome extends Container {
16
16
 
17
17
  vdom: {
18
18
  tag : 'h1',
19
- html: 'This is the landing page of the example.'
19
+ text: 'This is the landing page of the example.'
20
20
  }
21
21
  }
22
22
  }
@@ -16,7 +16,7 @@ class CardSection1 extends Container {
16
16
 
17
17
  vdom: {
18
18
  tag : 'h1',
19
- html: 'This is section 1 of the example.'
19
+ text: 'This is section 1 of the example.'
20
20
  }
21
21
  }
22
22
  }
@@ -16,7 +16,7 @@ class CardSection2 extends Container {
16
16
 
17
17
  vdom: {
18
18
  tag : 'h1',
19
- html: 'This is section 2 of the example.'
19
+ text: 'This is section 2 of the example.'
20
20
  }
21
21
 
22
22
  }
@@ -21,7 +21,7 @@ class AttributionComponent extends Component {
21
21
  */
22
22
  vdom:
23
23
  {style: {margin: '20px'}, cn: [
24
- {tag: 'h2', html: 'Attribution'},
24
+ {tag: 'h2', text: 'Attribution'},
25
25
  {tag: 'ul', cn: [
26
26
  {tag: 'li', html: 'The logos were created by <a target="_blank" href="https://www.driefmeier.com/">Sebastian Driefmeier</a>. Thank you!'},
27
27
  {tag: 'li', html: ['The logos are based on the image from <a target="_blank" href="https://phil.cdc.gov/Details.aspx?pid=23312">CDC Public Health Image Library (PHIL)</a>,</br>',
@@ -56,7 +56,7 @@ class HeaderContainer extends Container {
56
56
  cls : ['covid-numberbox'],
57
57
  vdom: {
58
58
  cn: [
59
- {cls: ['covid-numberbox-title', 'cases'], html:'Cases'},
59
+ {cls: ['covid-numberbox-title', 'cases'], text:'Cases'},
60
60
  {cls: ['covid-numberbox-number', 'cases']}
61
61
  ]
62
62
  }
@@ -64,7 +64,7 @@ class HeaderContainer extends Container {
64
64
  cls : ['covid-numberbox'],
65
65
  vdom: {
66
66
  cn: [
67
- {cls: ['covid-numberbox-title', 'active'], html:'Active'},
67
+ {cls: ['covid-numberbox-title', 'active'], text:'Active'},
68
68
  {cls: ['covid-numberbox-number', 'active']}
69
69
  ]
70
70
  }
@@ -72,7 +72,7 @@ class HeaderContainer extends Container {
72
72
  cls : ['covid-numberbox'],
73
73
  vdom: {
74
74
  cn: [
75
- {cls: ['covid-numberbox-title', 'recovered'], html:'Recovered'},
75
+ {cls: ['covid-numberbox-title', 'recovered'], text:'Recovered'},
76
76
  {cls: ['covid-numberbox-number', 'recovered']}
77
77
  ]
78
78
  }
@@ -80,7 +80,7 @@ class HeaderContainer extends Container {
80
80
  cls : ['covid-numberbox'],
81
81
  vdom: {
82
82
  cn: [
83
- {cls: ['covid-numberbox-title', 'deaths'], html:'Deaths'},
83
+ {cls: ['covid-numberbox-title', 'deaths'], text:'Deaths'},
84
84
  {cls: ['covid-numberbox-number', 'deaths']}
85
85
  ]
86
86
  }
@@ -97,7 +97,7 @@ class HeaderContainer extends Container {
97
97
  'data-show-count': 'true',
98
98
  'data-size' : 'large',
99
99
  href : 'https://github.com/neomjs/neo',
100
- html : 'Star'
100
+ text : 'Star'
101
101
  }]
102
102
  }
103
103
  }, {
@@ -111,7 +111,7 @@ class HeaderContainer extends Container {
111
111
  'data-icon' : 'octicon-heart',
112
112
  'data-size' : 'large',
113
113
  href : 'https://github.com/sponsors/tobiu',
114
- html : 'Sponsor'
114
+ text : 'Sponsor'
115
115
  }]
116
116
  }
117
117
  }]
@@ -139,10 +139,10 @@ class MainContainerController extends ComponentController {
139
139
 
140
140
  me.summaryData = data;
141
141
 
142
- container.items[0].vdom.cn[1].html = Util.formatNumber({value: data.cases});
143
- container.items[1].vdom.cn[1].html = Util.formatNumber({value: data.active});
144
- container.items[2].vdom.cn[1].html = Util.formatNumber({value: data.recovered});
145
- container.items[3].vdom.cn[1].html = Util.formatNumber({value: data.deaths});
142
+ container.items[0].vdom.cn[1].text = Util.formatNumber({value: data.cases});
143
+ container.items[1].vdom.cn[1].text = Util.formatNumber({value: data.active});
144
+ container.items[2].vdom.cn[1].text = Util.formatNumber({value: data.recovered});
145
+ container.items[3].vdom.cn[1].text = Util.formatNumber({value: data.deaths});
146
146
 
147
147
  container.updateDepth = 2;
148
148
  container.update();
@@ -150,7 +150,7 @@ class MainContainerController extends ComponentController {
150
150
  container = me.getReference('last-update');
151
151
  vdom = container.vdom;
152
152
 
153
- vdom.html = 'Last Update: ' + new Intl.DateTimeFormat('default', {
153
+ vdom.text = 'Last Update: ' + new Intl.DateTimeFormat('default', {
154
154
  hour : 'numeric',
155
155
  minute: 'numeric',
156
156
  second: 'numeric'
@@ -225,7 +225,7 @@ class TableContainerController extends ComponentController {
225
225
  // removed optional chaining for now, see: https://github.com/neomjs/neo/issues/467
226
226
  me.loadHistoricalData(record?.countryInfo?.iso2 || 'all');
227
227
 
228
- me.getReference('historical-data-label').html = 'Historical Data (' + (record?.country || 'World') + ')';
228
+ me.getReference('historical-data-label').text = 'Historical Data (' + (record?.country || 'World') + ')';
229
229
  }
230
230
 
231
231
  /**
@@ -45,24 +45,24 @@ class CountryGallery extends Gallery {
45
45
  ]},
46
46
  {tag: 'table', cls: ['neo-content-table'], cn: [
47
47
  {tag: 'tr', cn: [
48
- {tag: 'td', html: 'Cases'},
48
+ {tag: 'td', text: 'Cases'},
49
49
  {tag: 'td', cls: ['neo-align-right']},
50
50
  {tag: 'td', style: {width: '100%'}},
51
- {tag: 'td', html: 'Cases today'},
51
+ {tag: 'td', text: 'Cases today'},
52
52
  {tag: 'td', cls: ['neo-align-right']}
53
53
  ]},
54
54
  {tag: 'tr', cn: [
55
- {tag: 'td', html: 'Deaths'},
55
+ {tag: 'td', text: 'Deaths'},
56
56
  {tag: 'td', cls: ['neo-align-right', 'neo-content-deaths']},
57
57
  {tag: 'td', style: {width: '100%'}},
58
- {tag: 'td', html: 'Deaths today'},
58
+ {tag: 'td', text: 'Deaths today'},
59
59
  {tag: 'td', cls: ['neo-align-right', 'neo-content-deaths']}
60
60
  ]},
61
61
  {tag: 'tr', cn: [
62
- {tag: 'td', html: 'Recovered'},
62
+ {tag: 'td', text: 'Recovered'},
63
63
  {tag: 'td', cls: ['neo-align-right', 'neo-content-recovered']},
64
64
  {tag: 'td', style: {width: '100%'}},
65
- {tag: 'td', html: 'Critical'},
65
+ {tag: 'td', text: 'Critical'},
66
66
  {tag: 'td', cls: ['neo-align-right', 'neo-content-critical']}
67
67
  ]}
68
68
  ]}
@@ -127,15 +127,15 @@ class CountryGallery extends Gallery {
127
127
  firstChild.style.width = me.itemWidth + 'px';
128
128
 
129
129
  firstChild.cn[0].cn[0].src = Util.getCountryFlagUrl(record.country);
130
- firstChild.cn[0].cn[1].html = record.country;
130
+ firstChild.cn[0].cn[1].text = record.country;
131
131
 
132
- table.cn[0].cn[1].html = fN({value: record.cases});
133
- table.cn[1].cn[1].html = fN({value: record.deaths});
134
- table.cn[2].cn[1].html = fN({value: record.recovered});
132
+ table.cn[0].cn[1].text = fN({value: record.cases});
133
+ table.cn[1].cn[1].text = fN({value: record.deaths});
134
+ table.cn[2].cn[1].text = fN({value: record.recovered});
135
135
 
136
- table.cn[0].cn[4].html = fN({value: record.todayCases});
137
- table.cn[1].cn[4].html = fN({value: record.todayDeaths});
138
- table.cn[2].cn[4].html = fN({value: record.critical});
136
+ table.cn[0].cn[4].text = fN({value: record.todayCases});
137
+ table.cn[1].cn[4].text = fN({value: record.todayDeaths});
138
+ table.cn[2].cn[4].text = fN({value: record.critical});
139
139
 
140
140
  return vdomItem;
141
141
  }
@@ -45,24 +45,24 @@ class CountryHelix extends Helix {
45
45
  ]},
46
46
  {tag: 'table', cls: ['neo-content-table'], cn: [
47
47
  {tag: 'tr', cn: [
48
- {tag: 'td', html: 'Cases'},
48
+ {tag: 'td', text: 'Cases'},
49
49
  {tag: 'td', cls: ['neo-align-right']},
50
50
  {tag: 'td', style: {width: '100%'}},
51
- {tag: 'td', html: 'Cases today'},
51
+ {tag: 'td', text: 'Cases today'},
52
52
  {tag: 'td', cls: ['neo-align-right']}
53
53
  ]},
54
54
  {tag: 'tr', cn: [
55
- {tag: 'td', html: 'Deaths'},
55
+ {tag: 'td', text: 'Deaths'},
56
56
  {tag: 'td', cls: ['neo-align-right', 'neo-content-deaths']},
57
57
  {tag: 'td', style: {width: '100%'}},
58
- {tag: 'td', html: 'Deaths today'},
58
+ {tag: 'td', text: 'Deaths today'},
59
59
  {tag: 'td', cls: ['neo-align-right', 'neo-content-deaths']}
60
60
  ]},
61
61
  {tag: 'tr', cn: [
62
- {tag: 'td', html: 'Recovered'},
62
+ {tag: 'td', text: 'Recovered'},
63
63
  {tag: 'td', cls: ['neo-align-right', 'neo-content-recovered']},
64
64
  {tag: 'td', style: {width: '100%'}},
65
- {tag: 'td', html: 'Critical'},
65
+ {tag: 'td', text: 'Critical'},
66
66
  {tag: 'td', cls: ['neo-align-right', 'neo-content-critical']}
67
67
  ]}
68
68
  ]}
@@ -138,15 +138,15 @@ class CountryHelix extends Helix {
138
138
  vdomItem.id = me.getItemVnodeId(record[me.keyProperty]);
139
139
 
140
140
  firstChild.cn[0].cn[0].src = Util.getCountryFlagUrl(record.country);
141
- firstChild.cn[0].cn[1].html = record.country;
141
+ firstChild.cn[0].cn[1].text = record.country;
142
142
 
143
- table.cn[0].cn[1].html = fN({value: record.cases});
144
- table.cn[1].cn[1].html = fN({value: record.deaths});
145
- table.cn[2].cn[1].html = fN({value: record.recovered});
143
+ table.cn[0].cn[1].text = fN({value: record.cases});
144
+ table.cn[1].cn[1].text = fN({value: record.deaths});
145
+ table.cn[2].cn[1].text = fN({value: record.recovered});
146
146
 
147
- table.cn[0].cn[4].html = fN({value: record.todayCases});
148
- table.cn[1].cn[4].html = fN({value: record.todayDeaths});
149
- table.cn[2].cn[4].html = fN({value: record.critical});
147
+ table.cn[0].cn[4].text = fN({value: record.todayCases});
148
+ table.cn[1].cn[4].text = fN({value: record.todayDeaths});
149
+ table.cn[2].cn[4].text = fN({value: record.critical});
150
150
 
151
151
  return vdomItem;
152
152
  }
@@ -38,7 +38,7 @@ class HistoricalDataTable extends Container {
38
38
  renderer : function(data) {
39
39
  return {
40
40
  cls : ['neo-date-column', 'neo-table-cell'],
41
- html: new Intl.DateTimeFormat('default', {
41
+ text: new Intl.DateTimeFormat('default', {
42
42
  day : 'numeric',
43
43
  month: 'numeric',
44
44
  year : 'numeric'
@@ -35,7 +35,7 @@ class MainContainer extends Viewport {
35
35
  }, {
36
36
  ntype: 'component',
37
37
  flex : 1,
38
- html : '#2',
38
+ text : '#2',
39
39
 
40
40
  style: {
41
41
  alignItems : 'center',
@@ -92,7 +92,7 @@ class MainContainer extends Viewport {
92
92
  }, {
93
93
  ntype: 'component',
94
94
  flex : 1,
95
- html : '#1',
95
+ text : '#1',
96
96
 
97
97
  style: {
98
98
  alignItems : 'center',
@@ -234,13 +234,13 @@ if (programOpts.info) {
234
234
  " iconCls: 'fa fa-home',",
235
235
  " text : 'Tab 1'",
236
236
  " },",
237
- " vdom: {html: 'Welcome to your new Neo App.'}",
237
+ " text: 'Welcome to your new Neo App.'",
238
238
  " }, {",
239
239
  " header: {",
240
240
  " iconCls: 'fa fa-play-circle',",
241
241
  " text : 'Tab 2'",
242
242
  " },",
243
- " vdom: {html: 'Have fun creating something awesome!'}",
243
+ " text: 'Have fun creating something awesome!'",
244
244
  " }]",
245
245
  " }]",
246
246
  " }",
package/learn/Glossary.md CHANGED
@@ -0,0 +1,261 @@
1
+
2
+ This glossary provides definitions for key terms and concepts used throughout the Neo.mjs documentation. Understanding
3
+ these terms is essential for grasping the framework's unique architecture and capabilities.
4
+
5
+ ## A
6
+
7
+ ### Actor Model
8
+
9
+ A programming paradigm where "actors" are the universal primitives of concurrent computation. In Neo.mjs, this concept
10
+ is applied to web workers, where each worker acts as an independent actor communicating via messages, enabling robust
11
+ multi-threaded applications.
12
+
13
+ ### App Worker
14
+
15
+ The primary Web Worker in Neo.mjs where the majority of your application's logic, components, and business code reside.
16
+ It operates off the main thread, ensuring the UI remains responsive.
17
+
18
+ ### Application Worker being the Main Actor Paradigm
19
+
20
+ A core architectural principle in Neo.mjs where the App Worker is the central hub for application logic and state, rather
21
+ than the main browser thread. This ensures UI responsiveness and efficient resource utilization.
22
+
23
+ ## C
24
+
25
+ ### Canvas Worker
26
+
27
+ A specialized Web Worker in Neo.mjs that can take ownership of an `OffscreenCanvas` DOM node. This allows computationally
28
+ intensive graphics rendering to occur entirely off the main thread, preventing UI blocking.
29
+
30
+ ### Class Config System
31
+
32
+ Neo.mjs's unified, declarative system for defining and managing properties for all classes (components, models,
33
+ controllers, etc.) through a `static config` object. It provides consistency, reactivity, and powerful lifecycle hooks.
34
+
35
+ ### Component Lifecycle
36
+
37
+ The series of well-defined stages an Neo.mjs class instance goes through, from its creation and initialization to its
38
+ destruction. The framework provides hooks (e.g., `construct`, `initAsync`, `destroy`) to tap into these stages.
39
+
40
+ ### Component Library
41
+
42
+ A comprehensive collection of pre-built, production-ready UI components provided by Neo.mjs, designed to be highly
43
+ configurable and performant within the OMT architecture.
44
+
45
+ ### Cross-worker communication
46
+
47
+ The mechanism by which different Web Workers (e.g., App Worker, Main Thread, VDom Worker) exchange messages and data.
48
+ Neo.mjs provides an efficient RPC layer for this.
49
+
50
+ ## D
51
+
52
+ ### Data Store
53
+
54
+ A Neo.mjs class (`Neo.data.Store`) that manages collections of data records. It can be configured declaratively and is
55
+ often used to provide data to UI components like grids.
56
+
57
+ ### Data Worker
58
+
59
+ A specialized Web Worker in Neo.mjs primarily responsible for handling backend communication (e.g., AJAX calls, WebSocket
60
+ messages) and performing data transformations off the main thread.
61
+
62
+ ### Declarative component trees
63
+
64
+ A method of building user interfaces in Neo.mjs by defining the desired structure and properties of components using
65
+ declarative configurations (often JSON-like objects) rather than imperative step-by-step instructions.
66
+
67
+ ### Delta-updates
68
+
69
+ The minimal changes calculated by the VDom Worker (by comparing new and old Virtual DOM trees) that need to be applied
70
+ to the actual browser DOM. Sending only deltas optimizes UI updates.
71
+
72
+ ### dist/development
73
+
74
+ One of Neo.mjs's four environments, representing a traditional "dev mode" with bundled but unminified code and source
75
+ maps. Used for debugging production-specific issues or by developers preferring TypeScript.
76
+
77
+ ### dist/esm
78
+
79
+ One of Neo.mjs's four environments, designed for modern deployment. It preserves the native ES Module structure,
80
+ allowing browsers to load individual module files efficiently via HTTP/2 or HTTP/3.
81
+
82
+ ### dist/production
83
+
84
+ One of Neo.mjs's four environments, providing highly optimized, minified, and thread-specific bundles (using Webpack)
85
+ for maximum compatibility and smallest payload, ideal for broad deployment.
86
+
87
+ ## L
88
+
89
+ ### Lazy-loaded Forms
90
+
91
+ A feature in Neo.mjs forms where form fields or sections are only loaded (but not necessarily mounted to the DOM) when
92
+ they are actually needed, optimizing initial load times for complex forms.
93
+
94
+ ### Lifecycle hooks
95
+
96
+ Methods provided by the Neo.mjs framework that allow developers to execute custom logic at specific points during a
97
+ class instance's lifecycle (e.g., `beforeSet`, `afterSet`, `initAsync`, `destroy`).
98
+
99
+ ## M
100
+
101
+ ### Main Thread
102
+
103
+ The single browser thread responsible for rendering the user interface (DOM), handling user interactions, and executing
104
+ most traditional JavaScript. Neo.mjs aims to keep this thread as idle as possible for maximum responsiveness.
105
+
106
+ ### Main-Thread Addons
107
+
108
+ Libraries or functionalities that require direct access to the browser's Main Thread (e.g., for DOM manipulation or
109
+ specific browser APIs). Neo.mjs provides mechanisms to integrate these while maintaining OMT benefits.
110
+
111
+ ### MicroLoader
112
+
113
+ A lightweight JavaScript file that is the first part of the Neo.mjs framework loaded by the browser. It's responsible
114
+ for fetching the application's configuration and dynamically importing the main thread part of the framework.
115
+
116
+ ### Mixins
117
+
118
+ A mechanism in JavaScript (and utilized by Neo.mjs) to compose classes by injecting properties and methods from other
119
+ classes, promoting code reuse without traditional inheritance. **Currently, Neo.mjs mixins copy methods but do not
120
+ automatically merge `static config` properties from the mixin into the consuming class's `static config`.**
121
+
122
+ ### Multi-threaded architecture
123
+
124
+ The fundamental design of Neo.mjs that leverages Web Workers to distribute application logic and processing across
125
+ multiple CPU cores, ensuring a highly responsive user interface.
126
+
127
+ ### Multi-Window Applications
128
+
129
+ Neo.mjs's native capability to run a single application across multiple browser windows, allowing seamless data and
130
+ state sharing, and enabling complex multi-screen user experiences.
131
+
132
+ ## N
133
+
134
+ ### Native ES modules
135
+
136
+ Modern JavaScript modules that can be directly loaded and executed by browsers without requiring a build step
137
+ (transpilation or bundling). Neo.mjs heavily relies on these for its zero-build development.
138
+
139
+ ### ntype
140
+
141
+ A string alias used in Neo.mjs to declaratively specify the type of a component or class within a configuration object
142
+ (e.g., `ntype: 'button'`, `ntype: 'container'`).
143
+
144
+ ## O
145
+
146
+ ### Observable
147
+
148
+ A mixin (`Neo.core.Observable`) that provides event-driven capabilities to classes that include it. It enables objects
149
+ to emit custom events using the `fire()` method, and allows other objects to subscribe to these events using the `on()`
150
+ (or `addListener()`) method. This mechanism facilitates a publish-subscribe pattern, allowing components and other parts
151
+ of the application to react automatically to specific updates or actions.
152
+
153
+ ### Off the Main Thread (OMT)
154
+
155
+ The core architectural principle of Neo.mjs, where the majority of the application's logic and processing runs in Web
156
+ Workers, separate from the browser's main thread, to ensure UI responsiveness.
157
+
158
+ ## P
159
+
160
+ ### Plugins
161
+
162
+ Extensible modules that can be added to Neo.mjs components to enhance their functionality without modifying their core
163
+ code, promoting modularity and reusability.
164
+
165
+ ### Property lifecycle hooks
166
+
167
+ Specific methods (e.g., `beforeGet`, `beforeSet`, `afterSet`) that are automatically invoked when a Neo.mjs config
168
+ property is accessed or modified, allowing for validation, transformation, or reactive side effects.
169
+
170
+ ## R
171
+
172
+ ### Reactive Config
173
+
174
+ A feature of the Neo.mjs Class Config System where changes to config properties automatically trigger updates in the UI
175
+ or other dependent parts of the application.
176
+
177
+ ### Remote Method Access (RMA)
178
+
179
+ Neo.mjs's mechanism for seamlessly calling methods on objects that reside in different Web Workers, Main Threads
180
+ (especially multiple ones in multi-window applications), or even backend services, abstracting away the complexities of
181
+ cross-context communication.
182
+
183
+ ### RPC Layer
184
+
185
+ Remote Procedure Call layer. In Neo.mjs, this refers to the framework's built-in system for enabling methods to be called
186
+ on objects residing in different execution contexts (e.g., between workers, or to a backend) as if they were local.
187
+
188
+ ### Routing
189
+
190
+ The process of mapping URL hash patterns to specific application states or views. Neo.mjs supports declarative routing
191
+ within its class config system, implemented inside `Neo.controller.Base`.
192
+
193
+ ## S
194
+
195
+ ### Service Worker
196
+
197
+ A type of Web Worker that acts as a programmable proxy between the browser and the network. In Neo.mjs, it's used for
198
+ predictive caching of assets and enabling offline capabilities.
199
+
200
+ ### Shared Web Workers
201
+
202
+ A type of Web Worker that can be accessed by multiple browsing contexts (e.g., multiple browser tabs or windows) from
203
+ the same origin. Neo.mjs leverages these for its multi-window application capabilities.
204
+
205
+ ### Source maps
206
+
207
+ Files that map transpiled or minified code back to its original source code, aiding debugging in environments where the
208
+ deployed code is not directly readable.
209
+
210
+ ### State Management
211
+
212
+ The process of managing and synchronizing the data (state) of an application. Neo.mjs provides elegant features for this,
213
+ including reactive configs, state providers and observable patterns.
214
+
215
+ ### State Provider
216
+
217
+ A Neo.mjs class responsible for managing and providing shared, bindable data (state) across different parts of an
218
+ application. Forms can include their own state providers.
219
+
220
+ ## T
221
+
222
+ ### Task Worker
223
+ A specialized Web Worker in Neo.mjs that can be used to offload specific, computationally expensive tasks that don't fit
224
+ into the other worker categories, ensuring the app worker and main thread remain free.
225
+
226
+ ## U
227
+
228
+ ### Unified Config System
229
+
230
+ See Class Config System.
231
+
232
+ ## V
233
+
234
+ ### Virtual DOM (VDom)
235
+
236
+ An in-memory representation of the actual browser DOM. Neo.mjs uses a lightweight, JSON-like VDom to describe UI
237
+ structures, enabling efficient delta calculations and updates to the real DOM.
238
+
239
+ ### VDom Worker
240
+
241
+ A specialized Web Worker in Neo.mjs responsible for processing Virtual DOM trees, calculating delta updates (diffing)
242
+ between the current and new UI states, and sending these minimal changes to the Main Thread for rendering.
243
+
244
+ ## W
245
+
246
+ ### Web Workers
247
+
248
+ A browser technology that allows scripts to run in background threads, separate from the main execution thread. Neo.mjs
249
+ extensively uses various types of Web Workers to achieve its Off-Main-Thread architecture.
250
+
251
+ ### Webpack
252
+
253
+ A popular open-source JavaScript module bundler. Neo.mjs uses Webpack in its `dist/production` and `dist/development`
254
+ environments to create optimized bundles for deployment.
255
+
256
+ ## Z
257
+
258
+ ### Zero-Build Development
259
+
260
+ A core feature of Neo.mjs that allows developers to run and debug applications directly in the browser using native ES
261
+ modules, without requiring a compilation or bundling step during development.