neo.mjs 6.17.1 → 6.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/apps/ServiceWorker.mjs +3 -5
- package/apps/colors/README.md +8 -0
- package/apps/colors/app.mjs +6 -0
- package/apps/colors/childapps/widget/app.mjs +7 -0
- package/apps/colors/childapps/widget/index.html +11 -0
- package/apps/colors/childapps/widget/neo-config.json +10 -0
- package/apps/colors/childapps/widget/view/Viewport.mjs +19 -0
- package/apps/colors/index.html +11 -0
- package/apps/colors/model/Color.mjs +43 -0
- package/apps/colors/neo-config.json +10 -0
- package/apps/colors/remotes-api.json +13 -0
- package/apps/colors/store/Colors.mjs +24 -0
- package/apps/colors/view/BarChartComponent.mjs +64 -0
- package/apps/colors/view/HeaderToolbar.mjs +95 -0
- package/apps/colors/view/PieChartComponent.mjs +58 -0
- package/apps/colors/view/TableContainer.mjs +91 -0
- package/apps/colors/view/Viewport.mjs +57 -0
- package/apps/colors/view/ViewportController.mjs +277 -0
- package/apps/colors/view/ViewportModel.mjs +53 -0
- package/apps/portal/Util.mjs +11 -0
- package/apps/portal/childapps/preview/neo-config.json +2 -2
- package/apps/portal/neo-config.json +2 -1
- package/apps/portal/remotes-api.json +13 -0
- package/apps/portal/view/HeaderToolbar.mjs +44 -27
- package/apps/portal/view/Viewport.mjs +12 -1
- package/apps/portal/view/ViewportController.mjs +89 -1
- package/apps/portal/view/home/MainContainer.mjs +27 -60
- package/apps/portal/view/home/parts/AfterMath.mjs +58 -0
- package/apps/portal/view/home/parts/Colors.mjs +74 -0
- package/apps/portal/view/home/parts/Features.mjs +52 -0
- package/apps/portal/view/home/parts/Helix.mjs +75 -0
- package/apps/portal/view/home/parts/HelloWorld.mjs +82 -0
- package/apps/portal/view/home/parts/MainNeo.mjs +55 -0
- package/apps/portal/view/home/preview/PageCodeContainer.mjs +55 -0
- package/apps/portal/view/learn/LivePreview.mjs +72 -29
- package/apps/portal/view/learn/MainContainerController.mjs +10 -90
- package/apps/realworld/api/Article.mjs +1 -3
- package/apps/realworld/api/Favorite.mjs +1 -3
- package/apps/realworld/api/Profile.mjs +1 -3
- package/apps/realworld/api/Tag.mjs +1 -3
- package/apps/realworld/api/User.mjs +1 -3
- package/apps/realworld2/api/Article.mjs +1 -3
- package/apps/realworld2/api/Favorite.mjs +1 -3
- package/apps/realworld2/api/Profile.mjs +1 -3
- package/apps/realworld2/api/Tag.mjs +1 -3
- package/apps/realworld2/api/User.mjs +1 -3
- package/apps/realworld2/view/article/HelixContainer.mjs +5 -5
- package/buildScripts/webpack/json/myApps.template.json +1 -0
- package/buildScripts/webpack/webpack.server.config.mjs +4 -1
- package/docs/app/view/MainContainer.mjs +5 -0
- package/docs/app/view/classdetails/MembersList.mjs +1 -1
- package/examples/ServiceWorker.mjs +3 -5
- package/examples/component/helix/Viewport.mjs +309 -0
- package/examples/component/helix/ViewportController.mjs +122 -0
- package/examples/component/helix/app.mjs +2 -2
- package/examples/component/helix/neo-config.json +0 -1
- package/examples/component/multiWindowHelix/Viewport.mjs +11 -3
- package/examples/component/multiWindowHelix/ViewportController.mjs +21 -9
- package/examples/component/multiWindowHelix/neo-config.json +0 -1
- package/examples/fieldWithPrefix/MainContainer.mjs +1 -6
- package/examples/list/animate/MainContainerController.mjs +1 -1
- package/examples/worker/task/MyTasks.mjs +1 -3
- package/package.json +5 -5
- package/resources/data/deck/learnneo/pages/GuideEvents.md +131 -0
- package/resources/data/deck/learnneo/pages/WhyNeo-Speed.md +1 -1
- package/resources/images/logo/neo_logo_primary.svg +6 -0
- package/resources/images/logo/neo_logo_secondary.svg +6 -0
- package/resources/images/logo/neo_logo_text_primary.svg +5 -0
- package/resources/images/logo/neo_logo_text_secondary.svg +5 -0
- package/resources/images/logo/neo_logo_white.svg +6 -0
- package/resources/scss/src/apps/colors/BarChartComponent.scss +3 -0
- package/resources/scss/src/apps/colors/HeaderToolbar.scss +11 -0
- package/resources/scss/src/apps/colors/PieChartComponent.scss +3 -0
- package/resources/scss/src/apps/colors/TableContainer.scss +64 -0
- package/resources/scss/src/apps/colors/Viewport.scss +9 -0
- package/resources/scss/src/apps/portal/HeaderToolbar.scss +189 -17
- package/resources/scss/src/apps/portal/home/MainContainer.scss +46 -20
- package/resources/scss/src/apps/portal/home/parts/Features.scss +3 -0
- package/resources/scss/src/apps/portal/home/preview/PageCodeContainer.scss +115 -0
- package/resources/scss/src/component/Base.scss +2 -0
- package/resources/scss/src/examples/component/multiWindowHelix/Viewport.scss +3 -0
- package/resources/scss/src/form/field/CheckBox.scss +1 -0
- package/resources/scss/src/tab/header/Button.scss +2 -1
- package/resources/scss/theme-dark/Global.scss +8 -0
- package/resources/scss/theme-dark/button/Base.scss +1 -1
- package/resources/scss/theme-dark/tab/header/Button.scss +1 -0
- package/resources/scss/theme-light/Global.scss +8 -0
- package/resources/scss/theme-light/button/Base.scss +1 -1
- package/resources/scss/theme-light/tab/header/Button.scss +1 -0
- package/resources/scss/theme-neo-light/Global.scss +53 -53
- package/resources/scss/theme-neo-light/button/Base.scss +3 -4
- package/resources/scss/theme-neo-light/tab/header/Button.scss +6 -8
- package/src/DefaultConfig.mjs +2 -2
- package/src/Fetch.mjs +1 -3
- package/src/Main.mjs +13 -11
- package/src/MicroLoader.mjs +2 -2
- package/src/Neo.mjs +27 -26
- package/src/Xhr.mjs +1 -3
- package/src/button/Base.mjs +6 -4
- package/src/button/Split.mjs +10 -9
- package/src/calendar/view/EditEventContainer.mjs +13 -12
- package/src/calendar/view/MainContainer.mjs +40 -40
- package/src/calendar/view/MainContainerModel.mjs +5 -5
- package/src/calendar/view/SettingsContainer.mjs +11 -11
- package/src/calendar/view/YearComponent.mjs +73 -75
- package/src/calendar/view/calendars/ColorsList.mjs +2 -2
- package/src/calendar/view/calendars/EditContainer.mjs +2 -2
- package/src/calendar/view/calendars/List.mjs +12 -13
- package/src/calendar/view/month/Component.mjs +72 -73
- package/src/calendar/view/settings/GeneralContainer.mjs +5 -5
- package/src/calendar/view/settings/MonthContainer.mjs +5 -5
- package/src/calendar/view/settings/WeekContainer.mjs +6 -6
- package/src/calendar/view/settings/YearContainer.mjs +4 -4
- package/src/calendar/view/week/Component.mjs +47 -57
- package/src/calendar/view/week/EventDragZone.mjs +43 -50
- package/src/calendar/view/week/TimeAxisComponent.mjs +21 -21
- package/src/calendar/view/week/plugin/DragDrop.mjs +53 -45
- package/src/calendar/view/week/plugin/EventResizable.mjs +8 -3
- package/src/collection/Base.mjs +15 -22
- package/src/collection/Filter.mjs +4 -9
- package/src/collection/Sorter.mjs +6 -7
- package/src/component/Base.mjs +149 -87
- package/src/component/Canvas.mjs +9 -9
- package/src/component/Carousel.mjs +31 -33
- package/src/component/Chip.mjs +9 -9
- package/src/component/Circle.mjs +84 -91
- package/src/component/Clock.mjs +8 -8
- package/src/component/DateSelector.mjs +14 -15
- package/src/component/Gallery.mjs +82 -80
- package/src/component/Helix.mjs +131 -126
- package/src/component/Iframe.mjs +1 -1
- package/src/component/Label.mjs +1 -1
- package/src/component/Legend.mjs +3 -3
- package/src/component/Process.mjs +39 -37
- package/src/component/Splitter.mjs +9 -11
- package/src/component/StatusBadge.mjs +2 -3
- package/src/component/Timer.mjs +62 -68
- package/src/component/Toast.mjs +11 -11
- package/src/component/Video.mjs +7 -8
- package/src/component/mwc/Button.mjs +10 -10
- package/src/component/mwc/TextField.mjs +17 -17
- package/src/component/wrapper/AmChart.mjs +5 -5
- package/src/component/wrapper/CesiumJS.mjs +11 -17
- package/src/component/wrapper/GoogleMaps.mjs +58 -35
- package/src/component/wrapper/MapboxGL.mjs +112 -79
- package/src/component/wrapper/MonacoEditor.mjs +1 -6
- package/src/container/Accordion.mjs +18 -20
- package/src/container/AccordionItem.mjs +12 -11
- package/src/container/Base.mjs +29 -28
- package/src/container/Panel.mjs +9 -9
- package/src/container/Viewport.mjs +30 -1
- package/src/controller/Base.mjs +12 -14
- package/src/controller/Component.mjs +60 -66
- package/src/core/Base.mjs +5 -8
- package/src/core/IdGenerator.mjs +1 -3
- package/src/core/Observable.mjs +17 -17
- package/src/core/Util.mjs +5 -5
- package/src/data/Model.mjs +3 -3
- package/src/data/RecordFactory.mjs +3 -6
- package/src/data/Store.mjs +34 -34
- package/src/data/connection/Fetch.mjs +3 -3
- package/src/data/connection/WebSocket.mjs +21 -25
- package/src/data/connection/Xhr.mjs +31 -28
- package/src/date/DayViewComponent.mjs +1 -1
- package/src/date/SelectorContainer.mjs +2 -2
- package/src/dialog/Base.mjs +27 -25
- package/src/dialog/header/Toolbar.mjs +5 -4
- package/src/draggable/DragProxyComponent.mjs +7 -4
- package/src/draggable/DragZone.mjs +30 -30
- package/src/draggable/DropZone.mjs +7 -7
- package/src/draggable/list/DragZone.mjs +18 -18
- package/src/draggable/tab/header/toolbar/SortZone.mjs +7 -7
- package/src/draggable/toolbar/DragZone.mjs +15 -15
- package/src/draggable/toolbar/SortZone.mjs +30 -31
- package/src/draggable/tree/DragZone.mjs +9 -9
- package/src/filter/BooleanContainer.mjs +3 -3
- package/src/filter/NumberContainer.mjs +5 -5
- package/src/filter/ToggleOperatorsButton.mjs +5 -5
- package/src/form/Fieldset.mjs +26 -26
- package/src/form/field/Base.mjs +1 -1
- package/src/form/field/CheckBox.mjs +15 -16
- package/src/form/field/Color.mjs +13 -15
- package/src/form/field/ComboBox.mjs +16 -24
- package/src/form/field/Country.mjs +1 -1
- package/src/form/field/Date.mjs +3 -4
- package/src/form/field/Display.mjs +1 -1
- package/src/form/field/Email.mjs +2 -2
- package/src/form/field/Number.mjs +51 -56
- package/src/form/field/Picker.mjs +2 -2
- package/src/form/field/Radio.mjs +1 -1
- package/src/form/field/Range.mjs +7 -6
- package/src/form/field/Text.mjs +29 -36
- package/src/form/field/TextArea.mjs +9 -9
- package/src/form/field/Time.mjs +30 -30
- package/src/form/field/trigger/Base.mjs +19 -13
- package/src/form/field/trigger/Clear.mjs +13 -13
- package/src/form/field/trigger/CopyToClipboard.mjs +7 -7
- package/src/form/field/trigger/Picker.mjs +2 -2
- package/src/form/field/trigger/SpinDown.mjs +1 -1
- package/src/form/field/trigger/SpinUp.mjs +1 -1
- package/src/form/field/trigger/SpinUpDown.mjs +3 -3
- package/src/form/field/trigger/Time.mjs +3 -3
- package/src/grid/Container.mjs +33 -33
- package/src/grid/View.mjs +20 -22
- package/src/grid/header/Button.mjs +12 -12
- package/src/grid/header/Toolbar.mjs +4 -4
- package/src/layout/Base.mjs +5 -4
- package/src/layout/Card.mjs +15 -16
- package/src/layout/Fit.mjs +22 -8
- package/src/layout/Flexbox.mjs +30 -29
- package/src/layout/Form.mjs +15 -15
- package/src/layout/Grid.mjs +2 -2
- package/src/layout/HBox.mjs +3 -2
- package/src/layout/VBox.mjs +3 -2
- package/src/list/Base.mjs +45 -47
- package/src/list/Chip.mjs +4 -4
- package/src/list/Circle.mjs +3 -3
- package/src/list/Color.mjs +4 -4
- package/src/list/Component.mjs +10 -10
- package/src/list/plugin/Animate.mjs +18 -13
- package/src/main/DomAccess.mjs +92 -56
- package/src/main/DomEvents.mjs +38 -39
- package/src/main/addon/AmCharts.mjs +37 -37
- package/src/main/addon/AnalyticsByGoogle.mjs +4 -4
- package/src/main/addon/CesiumJS.mjs +8 -8
- package/src/main/addon/CloneNode.mjs +5 -5
- package/src/main/addon/Cookie.mjs +4 -4
- package/src/main/addon/DragDrop.mjs +35 -34
- package/src/main/addon/GoogleMaps.mjs +19 -19
- package/src/main/addon/LocalStorage.mjs +3 -3
- package/src/main/addon/MapboxGL.mjs +40 -41
- package/src/main/addon/MonacoEditor.mjs +5 -5
- package/src/main/addon/Mwc.mjs +6 -6
- package/src/main/addon/Navigator.mjs +35 -39
- package/src/main/addon/Popover.mjs +5 -6
- package/src/main/addon/PrefixField.mjs +1 -2
- package/src/main/addon/ServiceWorker.mjs +9 -9
- package/src/main/addon/Siesta.mjs +3 -2
- package/src/main/addon/Stylesheet.mjs +37 -37
- package/src/main/addon/WebComponent.mjs +2 -3
- package/src/main/addon/WindowPosition.mjs +18 -18
- package/src/main/draggable/sensor/Base.mjs +2 -2
- package/src/main/draggable/sensor/Mouse.mjs +15 -15
- package/src/main/draggable/sensor/Touch.mjs +24 -23
- package/src/main/mixin/DeltaUpdates.mjs +10 -12
- package/src/main/mixin/TouchDomEvents.mjs +6 -6
- package/src/manager/Base.mjs +4 -4
- package/src/manager/Component.mjs +41 -41
- package/src/manager/DomEvent.mjs +52 -50
- package/src/manager/Focus.mjs +14 -16
- package/src/manager/Instance.mjs +2 -4
- package/src/manager/Store.mjs +4 -8
- package/src/manager/Task.mjs +20 -22
- package/src/manager/Toast.mjs +14 -16
- package/src/manager/rpc/Api.mjs +1 -3
- package/src/manager/rpc/Message.mjs +16 -18
- package/src/menu/List.mjs +16 -16
- package/src/menu/Panel.mjs +4 -4
- package/src/model/Component.mjs +5 -5
- package/src/plugin/Base.mjs +2 -0
- package/src/plugin/Popover.mjs +1 -1
- package/src/plugin/PrefixField.mjs +35 -45
- package/src/plugin/Resizable.mjs +86 -101
- package/src/plugin/Responsive.mjs +175 -0
- package/src/remotes/Api.mjs +4 -6
- package/src/selection/CircleModel.mjs +12 -16
- package/src/selection/DateSelectorModel.mjs +21 -23
- package/src/selection/GalleryModel.mjs +49 -63
- package/src/selection/HelixModel.mjs +35 -41
- package/src/selection/ListModel.mjs +9 -14
- package/src/selection/Model.mjs +31 -31
- package/src/selection/TreeAccordionModel.mjs +74 -80
- package/src/selection/grid/CellColumnModel.mjs +10 -10
- package/src/selection/grid/CellColumnRowModel.mjs +10 -10
- package/src/selection/grid/CellModel.mjs +26 -28
- package/src/selection/grid/CellRowModel.mjs +24 -24
- package/src/selection/grid/ColumnModel.mjs +16 -20
- package/src/selection/grid/RowModel.mjs +27 -29
- package/src/selection/menu/ListModel.mjs +2 -2
- package/src/selection/table/CellColumnModel.mjs +12 -12
- package/src/selection/table/CellColumnRowModel.mjs +12 -12
- package/src/selection/table/CellModel.mjs +26 -29
- package/src/selection/table/CellRowModel.mjs +19 -19
- package/src/selection/table/ColumnModel.mjs +18 -22
- package/src/selection/table/RowModel.mjs +27 -29
- package/src/sitemap/Component.mjs +20 -20
- package/src/sitemap/Store.mjs +1 -1
- package/src/tab/Container.mjs +15 -15
- package/src/tab/Strip.mjs +1 -1
- package/src/tab/header/Toolbar.mjs +4 -4
- package/src/table/Container.mjs +8 -10
- package/src/table/View.mjs +29 -34
- package/src/table/header/Button.mjs +18 -18
- package/src/table/header/Toolbar.mjs +2 -2
- package/src/toolbar/Base.mjs +14 -14
- package/src/toolbar/Breadcrumb.mjs +11 -11
- package/src/toolbar/Paging.mjs +18 -18
- package/src/tooltip/Base.mjs +20 -22
- package/src/tree/Accordion.mjs +69 -75
- package/src/tree/List.mjs +22 -25
- package/src/util/Array.mjs +19 -18
- package/src/util/ClassSystem.mjs +9 -9
- package/src/util/Css.mjs +2 -2
- package/src/util/Date.mjs +9 -9
- package/src/util/Function.mjs +2 -2
- package/src/util/HashHistory.mjs +3 -5
- package/src/util/KeyNavigation.mjs +17 -17
- package/src/util/Logger.mjs +9 -9
- package/src/util/Matrix.mjs +19 -19
- package/src/util/String.mjs +9 -9
- package/src/util/Style.mjs +11 -11
- package/src/util/VDom.mjs +12 -14
- package/src/util/VNode.mjs +29 -29
- package/src/vdom/Helper.mjs +84 -93
- package/src/vdom/VNode.mjs +1 -1
- package/src/worker/App.mjs +19 -16
- package/src/worker/Base.mjs +14 -15
- package/src/worker/Canvas.mjs +1 -3
- package/src/worker/Data.mjs +4 -8
- package/src/worker/Manager.mjs +27 -32
- package/src/worker/Message.mjs +1 -1
- package/src/worker/ServiceBase.mjs +38 -42
- package/src/worker/Task.mjs +1 -3
- package/src/worker/VDom.mjs +2 -4
- package/src/worker/mixin/RemoteMethodAccess.mjs +5 -6
- package/examples/component/helix/MainContainer.mjs +0 -340
- package/resources/images/Neo_Vector.svg +0 -3
- package/resources/images/logos/Github-logo-black.svg +0 -1
- package/resources/images/logos/Slack-logo-black.svg +0 -17
package/src/vdom/Helper.mjs
CHANGED
@@ -86,12 +86,9 @@ class Helper extends Base {
|
|
86
86
|
* @returns {Neo.vdom.VNode|Promise<Neo.vdom.VNode>}
|
87
87
|
*/
|
88
88
|
create(opts) {
|
89
|
-
let me
|
90
|
-
|
91
|
-
|
92
|
-
parentId = opts.parentId,
|
93
|
-
parentIndex = opts.parentIndex,
|
94
|
-
windowId = opts.windowId,
|
89
|
+
let me = this,
|
90
|
+
autoMount = opts.autoMount === true,
|
91
|
+
{appName, parentId, parentIndex, windowId} = opts,
|
95
92
|
node;
|
96
93
|
|
97
94
|
delete opts.appName;
|
@@ -113,7 +110,7 @@ class Helper extends Base {
|
|
113
110
|
})
|
114
111
|
}
|
115
112
|
|
116
|
-
return Neo.config.useVdomWorker ? node : Promise.resolve(node)
|
113
|
+
return Neo.config.useVdomWorker ? node : Promise.resolve(node)
|
117
114
|
}
|
118
115
|
|
119
116
|
/**
|
@@ -121,7 +118,7 @@ class Helper extends Base {
|
|
121
118
|
* @protected
|
122
119
|
*/
|
123
120
|
createCloseTag(vnode) {
|
124
|
-
return this.voidElements.indexOf(vnode.nodeName) > -1 ? '' : '</' + vnode.nodeName + '>'
|
121
|
+
return this.voidElements.indexOf(vnode.nodeName) > -1 ? '' : '</' + vnode.nodeName + '>'
|
125
122
|
}
|
126
123
|
|
127
124
|
/**
|
@@ -136,21 +133,17 @@ class Helper extends Base {
|
|
136
133
|
* @returns {Array} deltas
|
137
134
|
*/
|
138
135
|
createDeltas(config) {
|
139
|
-
let
|
140
|
-
|
141
|
-
index = config.index,
|
142
|
-
newVnode = config.newVnode,
|
136
|
+
let {deltas=[], index, newVnode, oldVnode, parentId} = config,
|
137
|
+
me = this,
|
143
138
|
newVnodeRoot = config.newVnodeRoot || newVnode,
|
144
|
-
oldVnode = config.oldVnode,
|
145
139
|
oldVnodeRoot = config.oldVnodeRoot || oldVnode,
|
146
|
-
parentId = config.parentId,
|
147
140
|
attributes, delta, value, i, indexDelta, keys, len, movedNode, movedOldNode, styles, add, remove, returnValue, tmp, wrappedNode;
|
148
141
|
|
149
142
|
// console.log('createDeltas', newVnode && newVnode.id, oldVnode && oldVnode.id, newVnode, oldVnode);
|
150
143
|
|
151
144
|
if (newVnode && !oldVnode) { // new node at top level or at the end of a child array
|
152
145
|
if (oldVnodeRoot) {
|
153
|
-
movedOldNode = me.findVnode(oldVnodeRoot, newVnode.id, oldVnode)
|
146
|
+
movedOldNode = me.findVnode(oldVnodeRoot, newVnode.id, oldVnode)
|
154
147
|
}
|
155
148
|
|
156
149
|
if (!movedOldNode) {
|
@@ -162,11 +155,11 @@ class Helper extends Base {
|
|
162
155
|
index,
|
163
156
|
outerHTML: me.createStringFromVnode(newVnode),
|
164
157
|
parentId
|
165
|
-
})
|
158
|
+
})
|
166
159
|
}
|
167
160
|
} else if (!newVnode && oldVnode) {
|
168
161
|
if (newVnodeRoot) {
|
169
|
-
movedNode = me.findVnode(newVnodeRoot, oldVnode.id, newVnode)
|
162
|
+
movedNode = me.findVnode(newVnodeRoot, oldVnode.id, newVnode)
|
170
163
|
}
|
171
164
|
|
172
165
|
// use case: calendar week view => move an event into a column on the right side
|
@@ -190,7 +183,7 @@ class Helper extends Base {
|
|
190
183
|
parentId: movedNode.parentNode.id
|
191
184
|
});
|
192
185
|
|
193
|
-
movedOldNode.vnode.childNodes.splice(movedNode.index, 0, movedNode.vnode)
|
186
|
+
movedOldNode.vnode.childNodes.splice(movedNode.index, 0, movedNode.vnode)
|
194
187
|
} else {
|
195
188
|
// console.log('top level removed node', oldVnode.id, oldVnode);
|
196
189
|
|
@@ -256,7 +249,7 @@ class Helper extends Base {
|
|
256
249
|
});
|
257
250
|
|
258
251
|
// see: https://github.com/neomjs/neo/issues/3116
|
259
|
-
movedOldNode.parentNode.childNodes.splice(index, 0, movedOldNode)
|
252
|
+
movedOldNode.parentNode.childNodes.splice(index, 0, movedOldNode)
|
260
253
|
} else if (!movedNode && movedOldNode) {
|
261
254
|
if (newVnode.id === movedOldNode.vnode.id) {
|
262
255
|
indexDelta = 0;
|
@@ -270,7 +263,7 @@ class Helper extends Base {
|
|
270
263
|
fromId: oldVnode.id,
|
271
264
|
parentId,
|
272
265
|
toId : newVnode.id
|
273
|
-
})
|
266
|
+
})
|
274
267
|
} else {
|
275
268
|
// the old vnode got moved into a different higher level branch
|
276
269
|
// and its parent got removed
|
@@ -299,7 +292,7 @@ class Helper extends Base {
|
|
299
292
|
// console.log(tmp[i]);
|
300
293
|
if (!VNodeUtil.findChildVnode(newVnodeDetails.parentNode, tmp[i].id)) {
|
301
294
|
// console.log('not found');
|
302
|
-
targetIndex
|
295
|
+
targetIndex ++
|
303
296
|
}
|
304
297
|
}
|
305
298
|
|
@@ -314,19 +307,19 @@ class Helper extends Base {
|
|
314
307
|
id : movedOldNode.vnode.id,
|
315
308
|
index,
|
316
309
|
parentId
|
317
|
-
})
|
310
|
+
})
|
318
311
|
}
|
319
312
|
|
320
313
|
// console.log(movedOldNodeDetails);
|
321
314
|
|
322
|
-
indexDelta = 0
|
315
|
+
indexDelta = 0
|
323
316
|
}
|
324
317
|
|
325
318
|
deltas.push({
|
326
319
|
action: 'removeNode',
|
327
320
|
id : oldVnode.id,
|
328
321
|
parentId
|
329
|
-
})
|
322
|
+
})
|
330
323
|
}
|
331
324
|
|
332
325
|
me.createDeltas({
|
@@ -338,7 +331,7 @@ class Helper extends Base {
|
|
338
331
|
parentId
|
339
332
|
});
|
340
333
|
|
341
|
-
return {indexDelta}
|
334
|
+
return {indexDelta}
|
342
335
|
} else {
|
343
336
|
// console.log('removed node', oldVnode.id, '('+newVnode.id+')');
|
344
337
|
|
@@ -349,7 +342,7 @@ class Helper extends Base {
|
|
349
342
|
|
350
343
|
return {
|
351
344
|
indexDelta: 1
|
352
|
-
}
|
345
|
+
}
|
353
346
|
}
|
354
347
|
} else if (!movedOldNode) {
|
355
348
|
// new node inside of a child array
|
@@ -366,7 +359,7 @@ class Helper extends Base {
|
|
366
359
|
deltas.push({
|
367
360
|
action: 'removeNode',
|
368
361
|
id : movedNode.vnode.id
|
369
|
-
})
|
362
|
+
})
|
370
363
|
}
|
371
364
|
|
372
365
|
deltas.push({
|
@@ -392,7 +385,7 @@ class Helper extends Base {
|
|
392
385
|
if (sameParent) {
|
393
386
|
if (newVnodeDetails.index > movedNode.index) {
|
394
387
|
// todo: needs testing => index gaps > 1
|
395
|
-
indexDelta = newVnodeDetails.index - movedNode.index
|
388
|
+
indexDelta = newVnodeDetails.index - movedNode.index
|
396
389
|
}
|
397
390
|
}
|
398
391
|
|
@@ -402,7 +395,7 @@ class Helper extends Base {
|
|
402
395
|
id : movedNode.vnode.id,
|
403
396
|
index : movedNode.index,
|
404
397
|
parentId: movedNode.parentNode.id
|
405
|
-
})
|
398
|
+
})
|
406
399
|
}
|
407
400
|
|
408
401
|
me.createDeltas({
|
@@ -433,13 +426,13 @@ class Helper extends Base {
|
|
433
426
|
|
434
427
|
Object.keys(oldVnode).forEach(prop => {
|
435
428
|
if (!newVnode.hasOwnProperty(prop)) {
|
436
|
-
keys.push(prop)
|
429
|
+
keys.push(prop)
|
437
430
|
} else if (prop === 'attributes') { // find removed attributes
|
438
431
|
Object.keys(oldVnode[prop]).forEach(attr => {
|
439
432
|
if (!newVnode[prop].hasOwnProperty(attr)) {
|
440
433
|
newVnode[prop][attr] = null;
|
441
434
|
}
|
442
|
-
})
|
435
|
+
})
|
443
436
|
}
|
444
437
|
});
|
445
438
|
|
@@ -456,7 +449,7 @@ class Helper extends Base {
|
|
456
449
|
if (value !== null && !Neo.isString(value) && Neo.isEmpty(value)) {
|
457
450
|
// ignore empty arrays & objects
|
458
451
|
} else {
|
459
|
-
attributes[key] = value
|
452
|
+
attributes[key] = value
|
460
453
|
}
|
461
454
|
}
|
462
455
|
});
|
@@ -466,11 +459,11 @@ class Helper extends Base {
|
|
466
459
|
|
467
460
|
Object.entries(attributes).forEach(([key, value]) => {
|
468
461
|
if (value === null || value === '') {
|
469
|
-
delete newVnode.attributes[key]
|
462
|
+
delete newVnode.attributes[key]
|
470
463
|
}
|
471
|
-
})
|
464
|
+
})
|
472
465
|
}
|
473
|
-
break
|
466
|
+
break
|
474
467
|
case 'childNodes':
|
475
468
|
i = 0;
|
476
469
|
indexDelta = 0;
|
@@ -488,7 +481,7 @@ class Helper extends Base {
|
|
488
481
|
});
|
489
482
|
|
490
483
|
if (returnValue && returnValue.indexDelta) {
|
491
|
-
indexDelta += returnValue.indexDelta
|
484
|
+
indexDelta += returnValue.indexDelta
|
492
485
|
}
|
493
486
|
}
|
494
487
|
|
@@ -499,48 +492,48 @@ class Helper extends Base {
|
|
499
492
|
deltas.push({
|
500
493
|
action: 'removeNode',
|
501
494
|
id : oldVnode.childNodes[i].id
|
502
|
-
})
|
495
|
+
})
|
503
496
|
}
|
504
497
|
}
|
505
498
|
|
506
|
-
break
|
499
|
+
break
|
507
500
|
case 'nodeName':
|
508
501
|
case 'innerHTML':
|
509
502
|
if (value !== oldVnode[prop]) {
|
510
|
-
delta[prop] = value
|
503
|
+
delta[prop] = value
|
511
504
|
}
|
512
|
-
break
|
505
|
+
break
|
513
506
|
case 'style':
|
514
507
|
styles = Style.compareStyles(value, oldVnode.style);
|
515
508
|
if (styles) {
|
516
|
-
delta.style = styles
|
509
|
+
delta.style = styles
|
517
510
|
}
|
518
|
-
break
|
511
|
+
break
|
519
512
|
case 'className':
|
520
513
|
if (oldVnode.className) {
|
521
514
|
add = NeoArray.difference(value, oldVnode.className);
|
522
|
-
remove = NeoArray.difference(oldVnode.className, value)
|
515
|
+
remove = NeoArray.difference(oldVnode.className, value)
|
523
516
|
} else {
|
524
517
|
add = value;
|
525
|
-
remove = []
|
518
|
+
remove = []
|
526
519
|
}
|
527
520
|
|
528
521
|
if (add.length > 0 || remove.length > 0) {
|
529
|
-
delta.cls = {add, remove}
|
522
|
+
delta.cls = {add, remove}
|
530
523
|
}
|
531
|
-
break
|
524
|
+
break
|
532
525
|
}
|
533
526
|
|
534
527
|
if (Object.keys(delta).length > 0) {
|
535
528
|
delta.id = newVnode.id;
|
536
|
-
deltas.push(delta)
|
529
|
+
deltas.push(delta)
|
537
530
|
}
|
538
|
-
})
|
531
|
+
})
|
539
532
|
}
|
540
533
|
}
|
541
534
|
}
|
542
535
|
|
543
|
-
return deltas
|
536
|
+
return deltas
|
544
537
|
}
|
545
538
|
|
546
539
|
/**
|
@@ -548,34 +541,34 @@ class Helper extends Base {
|
|
548
541
|
* @protected
|
549
542
|
*/
|
550
543
|
createOpenTag(vnode) {
|
551
|
-
let string
|
552
|
-
attributes = vnode
|
553
|
-
cls
|
544
|
+
let string = '<' + vnode.nodeName,
|
545
|
+
{attributes} = vnode,
|
546
|
+
cls = vnode.className,
|
554
547
|
style;
|
555
548
|
|
556
549
|
if (vnode.style) {
|
557
550
|
style = Neo.createStyles(vnode.style);
|
558
551
|
|
559
552
|
if (style !== '') {
|
560
|
-
string += ` style="${style}"
|
553
|
+
string += ` style="${style}"`
|
561
554
|
}
|
562
555
|
}
|
563
556
|
|
564
557
|
if (cls) {
|
565
558
|
if (Array.isArray(cls)) {
|
566
|
-
cls = cls.join(' ')
|
559
|
+
cls = cls.join(' ')
|
567
560
|
}
|
568
561
|
|
569
562
|
if (cls !== '') {
|
570
|
-
string += ` class="${cls}"
|
563
|
+
string += ` class="${cls}"`
|
571
564
|
}
|
572
565
|
}
|
573
566
|
|
574
567
|
if (vnode.id) {
|
575
568
|
if (Neo.config.useDomIds) {
|
576
|
-
string += ` id="${vnode.id}"
|
569
|
+
string += ` id="${vnode.id}"`
|
577
570
|
} else {
|
578
|
-
string += ` data-neo-id="${vnode.id}"
|
571
|
+
string += ` data-neo-id="${vnode.id}"`
|
579
572
|
}
|
580
573
|
}
|
581
574
|
|
@@ -604,13 +597,13 @@ class Helper extends Base {
|
|
604
597
|
|
605
598
|
switch (vnode.vtype) {
|
606
599
|
case 'root':
|
607
|
-
return me.createStringFromVnode(vnode.childNodes[0])
|
600
|
+
return me.createStringFromVnode(vnode.childNodes[0])
|
608
601
|
case 'text':
|
609
|
-
return vnode.innerHTML === undefined ? '' : String(vnode.innerHTML)
|
602
|
+
return vnode.innerHTML === undefined ? '' : String(vnode.innerHTML)
|
610
603
|
case 'vnode':
|
611
|
-
return me.createOpenTag(vnode) + me.createTagContent(vnode) + me.createCloseTag(vnode)
|
604
|
+
return me.createOpenTag(vnode) + me.createTagContent(vnode) + me.createCloseTag(vnode)
|
612
605
|
default:
|
613
|
-
return ''
|
606
|
+
return ''
|
614
607
|
}
|
615
608
|
}
|
616
609
|
|
@@ -620,7 +613,7 @@ class Helper extends Base {
|
|
620
613
|
*/
|
621
614
|
createTagContent(vnode) {
|
622
615
|
if (vnode.innerHTML) {
|
623
|
-
return vnode.innerHTML
|
616
|
+
return vnode.innerHTML
|
624
617
|
}
|
625
618
|
|
626
619
|
let string = '',
|
@@ -634,14 +627,14 @@ class Helper extends Base {
|
|
634
627
|
|
635
628
|
if (childNode.innerHTML !== outerHTML) {
|
636
629
|
if (this.returnChildNodeOuterHtml) {
|
637
|
-
childNode.outerHTML = outerHTML
|
630
|
+
childNode.outerHTML = outerHTML
|
638
631
|
}
|
639
632
|
}
|
640
633
|
|
641
|
-
string += outerHTML
|
634
|
+
string += outerHTML
|
642
635
|
}
|
643
636
|
|
644
|
-
return string
|
637
|
+
return string
|
645
638
|
}
|
646
639
|
|
647
640
|
/**
|
@@ -656,14 +649,14 @@ class Helper extends Base {
|
|
656
649
|
*/
|
657
650
|
findVnode(vnode, id, parentNode, index) {
|
658
651
|
if (!index) {
|
659
|
-
index = 0
|
652
|
+
index = 0
|
660
653
|
}
|
661
654
|
|
662
655
|
let returnValue = null,
|
663
656
|
children, childValue, i, len;
|
664
657
|
|
665
658
|
if (vnode.id === id) {
|
666
|
-
returnValue = {index, parentNode, vnode}
|
659
|
+
returnValue = {index, parentNode, vnode}
|
667
660
|
} else if (vnode.vtype !== 'text') {
|
668
661
|
children = vnode.childNodes;
|
669
662
|
i = 0;
|
@@ -674,13 +667,13 @@ class Helper extends Base {
|
|
674
667
|
|
675
668
|
if (childValue && childValue.vnode.id === id) {
|
676
669
|
returnValue = childValue;
|
677
|
-
break
|
670
|
+
break
|
678
671
|
}
|
679
672
|
}
|
680
673
|
}
|
681
674
|
|
682
675
|
if (returnValue && returnValue.parentId === 'root') {
|
683
|
-
returnValue.index = null
|
676
|
+
returnValue.index = null
|
684
677
|
}
|
685
678
|
|
686
679
|
return returnValue;
|
@@ -692,7 +685,7 @@ class Helper extends Base {
|
|
692
685
|
*/
|
693
686
|
parseHelper(opts) {
|
694
687
|
if (opts.removeDom === true) {
|
695
|
-
return null
|
688
|
+
return null
|
696
689
|
}
|
697
690
|
|
698
691
|
if (typeof opts === 'string') {
|
@@ -701,12 +694,12 @@ class Helper extends Base {
|
|
701
694
|
|
702
695
|
if (opts.vtype === 'text') {
|
703
696
|
if (!opts.id) {
|
704
|
-
opts.id = Neo.getId('vtext')
|
697
|
+
opts.id = Neo.getId('vtext') // adding an id to be able to find vtype='text' items inside the vnode tree
|
705
698
|
}
|
706
699
|
|
707
700
|
opts.innerHTML = `<!-- ${opts.id} -->${opts.html || ''}<!-- /neo-vtext -->`;
|
708
701
|
delete opts.html;
|
709
|
-
return opts
|
702
|
+
return opts
|
710
703
|
}
|
711
704
|
|
712
705
|
let me = this,
|
@@ -714,7 +707,7 @@ class Helper extends Base {
|
|
714
707
|
potentialNode;
|
715
708
|
|
716
709
|
if (!opts.tag) {
|
717
|
-
opts.tag = 'div'
|
710
|
+
opts.tag = 'div'
|
718
711
|
}
|
719
712
|
|
720
713
|
Object.entries(opts).forEach(([key, value]) => {
|
@@ -725,16 +718,16 @@ class Helper extends Base {
|
|
725
718
|
case 'tag':
|
726
719
|
case 'nodeName':
|
727
720
|
node.nodeName = value;
|
728
|
-
break
|
721
|
+
break
|
729
722
|
case 'html':
|
730
723
|
case 'innerHTML':
|
731
724
|
node.innerHTML = value.toString(); // support for numbers
|
732
|
-
break
|
725
|
+
break
|
733
726
|
case 'children':
|
734
727
|
case 'childNodes':
|
735
728
|
case 'cn':
|
736
729
|
if (!Array.isArray(value)) {
|
737
|
-
value = [value]
|
730
|
+
value = [value]
|
738
731
|
}
|
739
732
|
|
740
733
|
newValue = [];
|
@@ -745,20 +738,20 @@ class Helper extends Base {
|
|
745
738
|
potentialNode = me.parseHelper(item);
|
746
739
|
|
747
740
|
if (potentialNode) { // don't add null values
|
748
|
-
newValue.push(potentialNode)
|
741
|
+
newValue.push(potentialNode)
|
749
742
|
}
|
750
743
|
}
|
751
744
|
});
|
752
745
|
|
753
746
|
node.childNodes = newValue;
|
754
|
-
break
|
747
|
+
break
|
755
748
|
case 'cls':
|
756
749
|
if (value && !Array.isArray(value)) {
|
757
|
-
node.className = [value]
|
750
|
+
node.className = [value]
|
758
751
|
} else if (!(Array.isArray(value) && value.length < 1)) {
|
759
|
-
node.className = value
|
752
|
+
node.className = value
|
760
753
|
}
|
761
|
-
break
|
754
|
+
break
|
762
755
|
case 'data':
|
763
756
|
if (value && Neo.typeOf(value) === 'Object') {
|
764
757
|
Object.entries(value).forEach(([key, val]) => {
|
@@ -774,28 +767,28 @@ class Helper extends Base {
|
|
774
767
|
case 'width':
|
775
768
|
hasUnit = value != parseInt(value);
|
776
769
|
node.style[key] = value + (hasUnit ? '' : 'px');
|
777
|
-
break
|
770
|
+
break
|
778
771
|
case 'id':
|
779
772
|
node.id = value;
|
780
|
-
break
|
773
|
+
break
|
781
774
|
case 'style':
|
782
775
|
style = node.style;
|
783
776
|
if (Neo.isString(value)) {
|
784
|
-
node.style = Object.assign(style, Neo.core.Util.createStyleObject(value))
|
777
|
+
node.style = Object.assign(style, Neo.core.Util.createStyleObject(value))
|
785
778
|
} else {
|
786
|
-
node.style = Object.assign(style, value)
|
779
|
+
node.style = Object.assign(style, value)
|
787
780
|
}
|
788
|
-
break
|
781
|
+
break
|
789
782
|
default:
|
790
783
|
if (key !== 'removeDom') { // could be set to false
|
791
|
-
node.attributes[key] = value + ''
|
784
|
+
node.attributes[key] = value + ''
|
792
785
|
}
|
793
|
-
break
|
786
|
+
break
|
794
787
|
}
|
795
788
|
}
|
796
789
|
});
|
797
790
|
|
798
|
-
return new VNode(node)
|
791
|
+
return new VNode(node)
|
799
792
|
}
|
800
793
|
|
801
794
|
/**
|
@@ -821,10 +814,8 @@ class Helper extends Base {
|
|
821
814
|
vnode : node
|
822
815
|
};
|
823
816
|
|
824
|
-
return Neo.config.useVdomWorker ? returnObj : Promise.resolve(returnObj)
|
817
|
+
return Neo.config.useVdomWorker ? returnObj : Promise.resolve(returnObj)
|
825
818
|
}
|
826
819
|
}
|
827
820
|
|
828
|
-
|
829
|
-
|
830
|
-
export default instance;
|
821
|
+
export default Neo.setupClass(Helper);
|
package/src/vdom/VNode.mjs
CHANGED
package/src/worker/App.mjs
CHANGED
@@ -238,7 +238,7 @@ class App extends Base {
|
|
238
238
|
*/
|
239
239
|
getConfigs(data) {
|
240
240
|
let instance = Neo.get(data.id),
|
241
|
-
keys
|
241
|
+
{keys} = data,
|
242
242
|
returnArray = [];
|
243
243
|
|
244
244
|
if (instance) {
|
@@ -284,24 +284,24 @@ class App extends Base {
|
|
284
284
|
if (Neo.config.themes.length > 0) {
|
285
285
|
className = className || proto.className;
|
286
286
|
//console.log(windowId, className);
|
287
|
-
let me
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
classPath, classRoot, fileName, mapClassName, ns, themeFolders;
|
287
|
+
let me = this,
|
288
|
+
cssMap = Neo.cssMap,
|
289
|
+
parent = proto?.__proto__,
|
290
|
+
classPath, classRoot, fileName, lClassRoot, mapClassName, ns, themeFolders;
|
292
291
|
|
293
292
|
if (!cssMap) {
|
294
293
|
me.themeFilesCache.push([appName, windowId, proto])
|
295
294
|
} else {
|
296
295
|
// we need to modify app related class names
|
297
296
|
if (!className.startsWith('Neo.')) {
|
298
|
-
className
|
299
|
-
classRoot
|
297
|
+
className = className.split('.');
|
298
|
+
classRoot = className.shift();
|
299
|
+
lClassRoot = classRoot.toLowerCase();
|
300
300
|
|
301
301
|
className[0] === 'view' && className.shift();
|
302
302
|
|
303
|
-
mapClassName = `apps.${Neo.apps[
|
304
|
-
className = `apps.${
|
303
|
+
mapClassName = `apps.${Neo.apps[classRoot]?.appThemeFolder || lClassRoot}.${className.join('.')}`;
|
304
|
+
className = `apps.${lClassRoot}.${className.join('.')}`;
|
305
305
|
}
|
306
306
|
|
307
307
|
if (parent && parent !== Neo.core.Base.prototype) {
|
@@ -352,8 +352,8 @@ class App extends Base {
|
|
352
352
|
* @param {Object} data
|
353
353
|
*/
|
354
354
|
onLoadApplication(data) {
|
355
|
-
let me
|
356
|
-
config = Neo
|
355
|
+
let me = this,
|
356
|
+
{config} = Neo,
|
357
357
|
app, path;
|
358
358
|
|
359
359
|
if (data) {
|
@@ -399,8 +399,13 @@ class App extends Base {
|
|
399
399
|
super.onRegisterNeoConfig(msg);
|
400
400
|
|
401
401
|
let config = Neo.config,
|
402
|
+
{data} = msg,
|
402
403
|
url = 'resources/theme-map.json';
|
403
404
|
|
405
|
+
Neo.windowConfigs = Neo.windowConfigs || {};
|
406
|
+
|
407
|
+
Neo.windowConfigs[data.windowId] = data;
|
408
|
+
|
404
409
|
if (config.environment === 'development') {
|
405
410
|
url = `../../${url}`
|
406
411
|
}
|
@@ -506,7 +511,7 @@ class App extends Base {
|
|
506
511
|
return Promise.reject('Neo.main.addon.Stylesheet not imported')
|
507
512
|
} else {
|
508
513
|
if (theme.startsWith('neo-')) {
|
509
|
-
theme = theme.substring(4)
|
514
|
+
theme = theme.substring(4)
|
510
515
|
}
|
511
516
|
|
512
517
|
return addon.setCssVariable({theme, ...data})
|
@@ -514,6 +519,4 @@ class App extends Base {
|
|
514
519
|
}
|
515
520
|
}
|
516
521
|
|
517
|
-
|
518
|
-
|
519
|
-
export default instance;
|
522
|
+
export default Neo.setupClass(App);
|