cx 26.0.14 → 26.1.1
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/build/ui/VDOM.d.ts +1 -20
- package/build/ui/VDOM.js +1 -3
- package/build/ui/Widget.d.ts +1 -1
- package/build/ui/Widget.js +0 -5
- package/build/ui/app/startAppLoop.js +2 -10
- package/build/util/Component.js +5 -0
- package/build/util/test/createTestRenderer.d.ts +3 -1
- package/build/util/test/createTestRenderer.js +8 -2
- package/build/widgets/form/Checkbox.d.ts +0 -1
- package/build/widgets/form/Checkbox.js +1 -0
- package/build/widgets/form/ColorField.d.ts +0 -1
- package/build/widgets/form/ColorField.js +2 -2
- package/build/widgets/form/DateTimeField.d.ts +0 -2
- package/build/widgets/form/DateTimeField.js +1 -0
- package/build/widgets/form/DateTimePicker.d.ts +0 -2
- package/build/widgets/form/DateTimePicker.js +1 -0
- package/build/widgets/form/Radio.d.ts +0 -1
- package/build/widgets/form/Slider.js +9 -1
- package/build/widgets/form/Switch.d.ts +0 -1
- package/build/widgets/form/Switch.js +1 -1
- package/build/widgets/form/Wheel.d.ts +0 -1
- package/build/widgets/grid/Grid.d.ts +0 -2
- package/build/widgets/grid/GridCellEditor.js +3 -1
- package/build/widgets/icons/calendar.js +4 -3
- package/build/widgets/icons/check.js +2 -2
- package/build/widgets/icons/clear.js +2 -2
- package/build/widgets/icons/close.js +2 -2
- package/build/widgets/icons/cx.js +2 -2
- package/build/widgets/icons/drop-down.js +2 -2
- package/build/widgets/icons/file.js +2 -2
- package/build/widgets/icons/folder-open.js +2 -2
- package/build/widgets/icons/folder.js +2 -2
- package/build/widgets/icons/forward.js +2 -2
- package/build/widgets/icons/loading.js +2 -2
- package/build/widgets/icons/menu.js +2 -2
- package/build/widgets/icons/pixel-picker.js +2 -2
- package/build/widgets/icons/search.js +2 -2
- package/build/widgets/icons/sort-asc.js +2 -2
- package/build/widgets/icons/square.js +2 -2
- package/build/widgets/overlay/Overlay.d.ts +3 -0
- package/build/widgets/overlay/Overlay.js +3 -2
- package/dist/manifest.js +867 -867
- package/dist/ui.js +4 -18
- package/dist/util.js +4 -0
- package/dist/widgets.js +395 -319
- package/package.json +11 -8
- package/src/charts/Chart.ts +108 -108
- package/src/core.d.ts +182 -182
- package/src/data/Expression.spec.ts +229 -229
- package/src/data/Expression.ts +233 -233
- package/src/data/Grouper.ts +158 -158
- package/src/data/Selector.ts +10 -10
- package/src/data/StringTemplate.spec.ts +132 -132
- package/src/data/StructuredSelector.ts +146 -146
- package/src/data/ZoomIntoPropertyView.spec.ts +64 -64
- package/src/data/comparer.ts +78 -78
- package/src/data/computable.spec.ts +87 -87
- package/src/data/createStructuredSelector.ts +62 -62
- package/src/data/getAccessor.spec.ts +11 -11
- package/src/data/getAccessor.ts +74 -74
- package/src/data/getSelector.spec.ts +43 -43
- package/src/data/getSelector.ts +66 -66
- package/src/data/ops/filter.spec.ts +35 -35
- package/src/data/ops/filter.ts +9 -9
- package/src/data/ops/merge.ts +13 -13
- package/src/data/ops/removeTreeNodes.spec.ts +37 -37
- package/src/data/ops/updateArray.spec.ts +69 -69
- package/src/data/ops/updateArray.ts +31 -31
- package/src/data/test-types.ts +7 -7
- package/src/hooks/invokeCallback.spec.tsx +4 -4
- package/src/hooks/resolveCallback.spec.tsx +4 -4
- package/src/hooks/store.spec.tsx +15 -15
- package/src/hooks/useTrigger.spec.tsx +16 -10
- package/src/hooks/useTrigger.ts +26 -26
- package/src/index.scss +6 -6
- package/src/jsx-runtime.ts +79 -79
- package/src/svg/BoundedObject.ts +101 -101
- package/src/svg/util/Rect.ts +105 -105
- package/src/ui/CSS.ts +87 -87
- package/src/ui/CSSHelper.ts +17 -17
- package/src/ui/ContentResolver.spec.tsx +31 -29
- package/src/ui/Controller.spec.tsx +47 -39
- package/src/ui/Culture.ts +159 -159
- package/src/ui/Cx.spec.tsx +10 -8
- package/src/ui/DataProxy.spec.tsx +18 -18
- package/src/ui/Instance.ts +866 -866
- package/src/ui/IsolatedScope.spec.tsx +16 -9
- package/src/ui/Prop.ts +140 -140
- package/src/ui/PureContainer.spec.tsx +20 -18
- package/src/ui/RenderingContext.ts +99 -99
- package/src/ui/Repeater.spec.tsx +8 -6
- package/src/ui/Rescope.spec.tsx +13 -13
- package/src/ui/Restate.spec.tsx +31 -27
- package/src/ui/StructuredInstanceDataAccessor.ts +32 -32
- package/src/ui/VDOM.ts +1 -34
- package/src/ui/Widget.tsx +0 -7
- package/src/ui/adapter/TreeAdapter.spec.ts +76 -76
- package/src/ui/adapter/TreeAdapter.ts +185 -185
- package/src/ui/app/History.ts +133 -133
- package/src/ui/app/Url.spec.ts +50 -50
- package/src/ui/app/startAppLoop.tsx +5 -9
- package/src/ui/app/startHotAppLoop.ts +41 -41
- package/src/ui/createFunctionalComponent.spec.tsx +20 -18
- package/src/ui/layout/ContentPlaceholder.spec.tsx +46 -34
- package/src/ui/layout/FirstVisibleChildLayout.spec.tsx +31 -19
- package/src/ui/layout/FirstVisibleChildLayout.ts +60 -60
- package/src/ui/selection/PropertySelection.ts +87 -87
- package/src/util/Component.spec.ts +30 -0
- package/src/util/Component.ts +301 -296
- package/src/util/Console.ts +13 -13
- package/src/util/DOM.ts +88 -88
- package/src/util/hasKey.ts +18 -18
- package/src/util/index.ts +55 -55
- package/src/util/isArray.ts +3 -3
- package/src/util/isDefined.ts +3 -3
- package/src/util/isString.ts +3 -3
- package/src/util/test/createTestRenderer.tsx +9 -2
- package/src/widgets/AccessorBindings.spec.tsx +4 -4
- package/src/widgets/DocumentTitle.ts +95 -95
- package/src/widgets/HtmlElement.spec.tsx +6 -6
- package/src/widgets/ReactElementWrapper.spec.tsx +37 -37
- package/src/widgets/autoFocus.ts +9 -9
- package/src/widgets/cx.ts +63 -63
- package/src/widgets/form/Checkbox.tsx +0 -1
- package/src/widgets/form/ColorField.tsx +15 -12
- package/src/widgets/form/DateTimeField.tsx +0 -2
- package/src/widgets/form/DateTimePicker.tsx +0 -2
- package/src/widgets/form/Radio.tsx +0 -1
- package/src/widgets/form/Slider.tsx +12 -4
- package/src/widgets/form/Switch.tsx +2 -3
- package/src/widgets/form/ValidationGroup.spec.tsx +12 -12
- package/src/widgets/form/Wheel.tsx +0 -1
- package/src/widgets/grid/Grid.tsx +0 -1
- package/src/widgets/grid/GridCellEditor.tsx +7 -1
- package/src/widgets/icons/calendar.tsx +20 -15
- package/src/widgets/icons/check.tsx +2 -1
- package/src/widgets/icons/clear.tsx +2 -1
- package/src/widgets/icons/close.tsx +2 -2
- package/src/widgets/icons/cx.tsx +2 -1
- package/src/widgets/icons/drop-down.tsx +2 -1
- package/src/widgets/icons/file.tsx +2 -1
- package/src/widgets/icons/folder-open.tsx +2 -1
- package/src/widgets/icons/folder.tsx +2 -1
- package/src/widgets/icons/forward.tsx +2 -1
- package/src/widgets/icons/loading.tsx +2 -1
- package/src/widgets/icons/menu.tsx +2 -1
- package/src/widgets/icons/pixel-picker.tsx +2 -2
- package/src/widgets/icons/search.tsx +2 -1
- package/src/widgets/icons/sort-asc.tsx +2 -1
- package/src/widgets/icons/square.tsx +2 -1
- package/src/widgets/nav/Route.spec.tsx +2 -2
- package/src/widgets/overlay/Overlay.tsx +5 -1
- package/src/widgets/overlay/captureMouse.ts +195 -195
- package/src/widgets/overlay/createHotPromiseWindowFactory.ts +71 -71
- package/src/widgets/overlay/index.d.ts +11 -11
- package/src/widgets/overlay/tooltip-ops.ts +173 -173
- package/build/data/ArrayElementView.spec.d.ts +0 -1
- package/build/data/ArrayElementView.spec.js +0 -81
- package/build/data/Binding.spec.d.ts +0 -1
- package/build/data/Binding.spec.js +0 -61
- package/build/data/Expression.spec.d.ts +0 -1
- package/build/data/Expression.spec.js +0 -196
- package/build/data/Grouper.spec.d.ts +0 -1
- package/build/data/Grouper.spec.js +0 -48
- package/build/data/Ref.spec.d.ts +0 -1
- package/build/data/Ref.spec.js +0 -72
- package/build/data/Store.spec.d.ts +0 -1
- package/build/data/Store.spec.js +0 -19
- package/build/data/StoreRef.spec.d.ts +0 -1
- package/build/data/StoreRef.spec.js +0 -22
- package/build/data/StringTemplate.spec.d.ts +0 -1
- package/build/data/StringTemplate.spec.js +0 -112
- package/build/data/StructuredSelector.spec.d.ts +0 -1
- package/build/data/StructuredSelector.spec.js +0 -102
- package/build/data/View.spec.d.ts +0 -1
- package/build/data/View.spec.js +0 -44
- package/build/data/ZoomIntoPropertyView.spec.d.ts +0 -1
- package/build/data/ZoomIntoPropertyView.spec.js +0 -54
- package/build/data/comparer.spec.d.ts +0 -1
- package/build/data/comparer.spec.js +0 -50
- package/build/data/computable.spec.d.ts +0 -1
- package/build/data/computable.spec.js +0 -56
- package/build/data/createAccessorModelProxy.spec.d.ts +0 -1
- package/build/data/createAccessorModelProxy.spec.js +0 -30
- package/build/data/createStructuredSelector.spec.d.ts +0 -1
- package/build/data/createStructuredSelector.spec.js +0 -42
- package/build/data/diff/diffs.spec.d.ts +0 -1
- package/build/data/diff/diffs.spec.js +0 -45
- package/build/data/getAccessor.spec.d.ts +0 -1
- package/build/data/getAccessor.spec.js +0 -10
- package/build/data/getSelector.spec.d.ts +0 -1
- package/build/data/getSelector.spec.js +0 -36
- package/build/data/ops/append.spec.d.ts +0 -1
- package/build/data/ops/append.spec.js +0 -24
- package/build/data/ops/filter.spec.d.ts +0 -1
- package/build/data/ops/filter.spec.js +0 -25
- package/build/data/ops/findTreeNode.spec.d.ts +0 -1
- package/build/data/ops/findTreeNode.spec.js +0 -20
- package/build/data/ops/merge.spec.d.ts +0 -1
- package/build/data/ops/merge.spec.js +0 -23
- package/build/data/ops/removeTreeNodes.spec.d.ts +0 -1
- package/build/data/ops/removeTreeNodes.spec.js +0 -35
- package/build/data/ops/updateArray.spec.d.ts +0 -1
- package/build/data/ops/updateArray.spec.js +0 -33
- package/build/data/ops/updateTree.spec.d.ts +0 -1
- package/build/data/ops/updateTree.spec.js +0 -44
- package/build/hooks/invokeCallback.spec.d.ts +0 -1
- package/build/hooks/invokeCallback.spec.js +0 -44
- package/build/hooks/resolveCallback.spec.d.ts +0 -1
- package/build/hooks/resolveCallback.spec.js +0 -35
- package/build/hooks/store.spec.d.ts +0 -1
- package/build/hooks/store.spec.js +0 -48
- package/build/hooks/useTrigger.spec.d.ts +0 -1
- package/build/hooks/useTrigger.spec.js +0 -59
- package/build/ui/Controller.spec.d.ts +0 -1
- package/build/ui/Controller.spec.js +0 -247
- package/build/ui/Cx.spec.d.ts +0 -1
- package/build/ui/Cx.spec.js +0 -153
- package/build/ui/DataProxy.spec.d.ts +0 -1
- package/build/ui/DataProxy.spec.js +0 -208
- package/build/ui/IsolatedScope.spec.d.ts +0 -1
- package/build/ui/IsolatedScope.spec.js +0 -42
- package/build/ui/PureContainer.spec.d.ts +0 -1
- package/build/ui/PureContainer.spec.js +0 -149
- package/build/ui/Repeater.spec.d.ts +0 -1
- package/build/ui/Repeater.spec.js +0 -109
- package/build/ui/Rescope.spec.d.ts +0 -1
- package/build/ui/Rescope.spec.js +0 -134
- package/build/ui/Restate.spec.d.ts +0 -1
- package/build/ui/Restate.spec.js +0 -257
- package/build/ui/adapter/ArrayAdapter.spec.d.ts +0 -1
- package/build/ui/adapter/ArrayAdapter.spec.js +0 -44
- package/build/ui/adapter/TreeAdapter.spec.d.ts +0 -1
- package/build/ui/adapter/TreeAdapter.spec.js +0 -71
- package/build/ui/app/Url.spec.d.ts +0 -1
- package/build/ui/app/Url.spec.js +0 -43
- package/build/ui/createFunctionalComponent.spec.d.ts +0 -1
- package/build/ui/createFunctionalComponent.spec.js +0 -272
- package/build/ui/layout/ContentPlaceholder.spec.d.ts +0 -1
- package/build/ui/layout/ContentPlaceholder.spec.js +0 -333
- package/build/ui/layout/FirstVisibleChildLayout.spec.d.ts +0 -1
- package/build/ui/layout/FirstVisibleChildLayout.spec.js +0 -101
- package/build/util/Format.spec.d.ts +0 -1
- package/build/util/Format.spec.js +0 -58
- package/build/util/TraversalStack.spec.d.ts +0 -1
- package/build/util/TraversalStack.spec.js +0 -43
- package/build/util/date/upperBoundCheck.spec.d.ts +0 -1
- package/build/util/date/upperBoundCheck.spec.js +0 -22
- package/build/util/getSearchQueryPredicate.spec.d.ts +0 -1
- package/build/util/getSearchQueryPredicate.spec.js +0 -33
- package/build/util/isValidIdentifierName.spec.d.ts +0 -1
- package/build/util/isValidIdentifierName.spec.js +0 -28
- package/build/util/routeAppend.spec.d.ts +0 -1
- package/build/util/routeAppend.spec.js +0 -14
- package/build/widgets/AccessorBindings.spec.d.ts +0 -1
- package/build/widgets/AccessorBindings.spec.js +0 -40
- package/build/widgets/HtmlElement.spec.d.ts +0 -1
- package/build/widgets/HtmlElement.spec.js +0 -38
- package/build/widgets/form/ValidationGroup.spec.d.ts +0 -1
- package/build/widgets/form/ValidationGroup.spec.js +0 -62
- package/build/widgets/nav/Route.spec.d.ts +0 -1
- package/build/widgets/nav/Route.spec.js +0 -15
- package/dist/manifest.d.ts +0 -1443
|
@@ -1,99 +1,99 @@
|
|
|
1
|
-
import { TraversalStack } from "../util/TraversalStack";
|
|
2
|
-
import { reverseSlice } from "../util/reverseSlice";
|
|
3
|
-
import { Widget } from "./Widget";
|
|
4
|
-
|
|
5
|
-
export type CxChild = Record<string, any> | React.ReactElement | Widget | CxChild[] | null | undefined;
|
|
6
|
-
|
|
7
|
-
export class RenderingContext {
|
|
8
|
-
options: any;
|
|
9
|
-
exploreStack: any;
|
|
10
|
-
prepareList: any[];
|
|
11
|
-
cleanupList: any[];
|
|
12
|
-
stacks: any;
|
|
13
|
-
renderList: any;
|
|
14
|
-
|
|
15
|
-
[key: string]: any;
|
|
16
|
-
|
|
17
|
-
constructor(options?: any) {
|
|
18
|
-
this.options = options || {};
|
|
19
|
-
this.exploreStack = new TraversalStack();
|
|
20
|
-
this.prepareList = [];
|
|
21
|
-
this.cleanupList = [];
|
|
22
|
-
this.stacks = {};
|
|
23
|
-
this.renderList = new LinkedListsNode();
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
getStack(key: string) {
|
|
27
|
-
let stack = this.stacks[key];
|
|
28
|
-
if (!stack) stack = this.stacks[key] = [];
|
|
29
|
-
return stack;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
push(key: string, value: any) {
|
|
33
|
-
let stack = this.getStack(key);
|
|
34
|
-
stack.push(this[key]);
|
|
35
|
-
return (this[key] = value);
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
pop(key: string) {
|
|
39
|
-
let stack = this.getStack(key);
|
|
40
|
-
return (this[key] = stack.pop());
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
pushNamedValue(key: string, name: string, value: any) {
|
|
44
|
-
let stack = this.getStack(`${key}:${name}`);
|
|
45
|
-
if (!this[key]) this[key] = {};
|
|
46
|
-
stack.push(this[key][name]);
|
|
47
|
-
return (this[key][name] = value);
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
popNamedValue(key: string, name: string) {
|
|
51
|
-
let stack = this.getStack(`${key}:${name}`);
|
|
52
|
-
return (this[key][name] = stack.pop());
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
get(key: string) {
|
|
56
|
-
return this[key];
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
getRootRenderList() {
|
|
60
|
-
let rl = this.renderList;
|
|
61
|
-
while (rl.left) rl = rl.left;
|
|
62
|
-
return rl;
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
class LinkedListsNode {
|
|
67
|
-
left?: LinkedListsNode;
|
|
68
|
-
right?: LinkedListsNode;
|
|
69
|
-
data: any[];
|
|
70
|
-
reverseIndex?: number;
|
|
71
|
-
|
|
72
|
-
constructor(left?: LinkedListsNode, right?: LinkedListsNode) {
|
|
73
|
-
this.left = left;
|
|
74
|
-
this.right = right;
|
|
75
|
-
this.data = [];
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
insertLeft() {
|
|
79
|
-
let node = new LinkedListsNode(this.left, this);
|
|
80
|
-
if (this.left) this.left.right = node;
|
|
81
|
-
this.left = node;
|
|
82
|
-
return node;
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
insertRight() {
|
|
86
|
-
let node = new LinkedListsNode(this, this.right);
|
|
87
|
-
if (this.right) this.right.left = node;
|
|
88
|
-
this.right = node;
|
|
89
|
-
return node;
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
markReverseIndex() {
|
|
93
|
-
this.reverseIndex = this.data.length;
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
reverse() {
|
|
97
|
-
reverseSlice(this.data, this.reverseIndex!);
|
|
98
|
-
}
|
|
99
|
-
}
|
|
1
|
+
import { TraversalStack } from "../util/TraversalStack";
|
|
2
|
+
import { reverseSlice } from "../util/reverseSlice";
|
|
3
|
+
import { Widget } from "./Widget";
|
|
4
|
+
|
|
5
|
+
export type CxChild = Record<string, any> | React.ReactElement | Widget | CxChild[] | null | undefined;
|
|
6
|
+
|
|
7
|
+
export class RenderingContext {
|
|
8
|
+
options: any;
|
|
9
|
+
exploreStack: any;
|
|
10
|
+
prepareList: any[];
|
|
11
|
+
cleanupList: any[];
|
|
12
|
+
stacks: any;
|
|
13
|
+
renderList: any;
|
|
14
|
+
|
|
15
|
+
[key: string]: any;
|
|
16
|
+
|
|
17
|
+
constructor(options?: any) {
|
|
18
|
+
this.options = options || {};
|
|
19
|
+
this.exploreStack = new TraversalStack();
|
|
20
|
+
this.prepareList = [];
|
|
21
|
+
this.cleanupList = [];
|
|
22
|
+
this.stacks = {};
|
|
23
|
+
this.renderList = new LinkedListsNode();
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
getStack(key: string) {
|
|
27
|
+
let stack = this.stacks[key];
|
|
28
|
+
if (!stack) stack = this.stacks[key] = [];
|
|
29
|
+
return stack;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
push(key: string, value: any) {
|
|
33
|
+
let stack = this.getStack(key);
|
|
34
|
+
stack.push(this[key]);
|
|
35
|
+
return (this[key] = value);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
pop(key: string) {
|
|
39
|
+
let stack = this.getStack(key);
|
|
40
|
+
return (this[key] = stack.pop());
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
pushNamedValue(key: string, name: string, value: any) {
|
|
44
|
+
let stack = this.getStack(`${key}:${name}`);
|
|
45
|
+
if (!this[key]) this[key] = {};
|
|
46
|
+
stack.push(this[key][name]);
|
|
47
|
+
return (this[key][name] = value);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
popNamedValue(key: string, name: string) {
|
|
51
|
+
let stack = this.getStack(`${key}:${name}`);
|
|
52
|
+
return (this[key][name] = stack.pop());
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
get(key: string) {
|
|
56
|
+
return this[key];
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
getRootRenderList() {
|
|
60
|
+
let rl = this.renderList;
|
|
61
|
+
while (rl.left) rl = rl.left;
|
|
62
|
+
return rl;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
class LinkedListsNode {
|
|
67
|
+
left?: LinkedListsNode;
|
|
68
|
+
right?: LinkedListsNode;
|
|
69
|
+
data: any[];
|
|
70
|
+
reverseIndex?: number;
|
|
71
|
+
|
|
72
|
+
constructor(left?: LinkedListsNode, right?: LinkedListsNode) {
|
|
73
|
+
this.left = left;
|
|
74
|
+
this.right = right;
|
|
75
|
+
this.data = [];
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
insertLeft() {
|
|
79
|
+
let node = new LinkedListsNode(this.left, this);
|
|
80
|
+
if (this.left) this.left.right = node;
|
|
81
|
+
this.left = node;
|
|
82
|
+
return node;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
insertRight() {
|
|
86
|
+
let node = new LinkedListsNode(this, this.right);
|
|
87
|
+
if (this.right) this.right.left = node;
|
|
88
|
+
this.right = node;
|
|
89
|
+
return node;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
markReverseIndex() {
|
|
93
|
+
this.reverseIndex = this.data.length;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
reverse() {
|
|
97
|
+
reverseSlice(this.data, this.reverseIndex!);
|
|
98
|
+
}
|
|
99
|
+
}
|
package/src/ui/Repeater.spec.tsx
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { Store } from "../data/Store";
|
|
2
2
|
import { Repeater } from "./Repeater";
|
|
3
3
|
import { bind } from "./bind";
|
|
4
|
-
import { createTestRenderer } from "../util/test/createTestRenderer";
|
|
4
|
+
import { createTestRenderer, act } from "../util/test/createTestRenderer";
|
|
5
5
|
|
|
6
6
|
import assert from "assert";
|
|
7
7
|
|
|
8
8
|
describe("Repeater", () => {
|
|
9
|
-
it("allows sorting", () => {
|
|
9
|
+
it("allows sorting", async () => {
|
|
10
10
|
let data = [
|
|
11
11
|
{
|
|
12
12
|
value: "C",
|
|
@@ -31,7 +31,7 @@ describe("Repeater", () => {
|
|
|
31
31
|
|
|
32
32
|
let store = new Store();
|
|
33
33
|
|
|
34
|
-
const component = createTestRenderer(store, widget);
|
|
34
|
+
const component = await createTestRenderer(store, widget);
|
|
35
35
|
|
|
36
36
|
let tree = component.toJSON();
|
|
37
37
|
assert.deepEqual(tree, {
|
|
@@ -57,7 +57,7 @@ describe("Repeater", () => {
|
|
|
57
57
|
});
|
|
58
58
|
});
|
|
59
59
|
|
|
60
|
-
it("changes are properly updated", () => {
|
|
60
|
+
it("changes are properly updated", async () => {
|
|
61
61
|
let divInstances: any[] = [];
|
|
62
62
|
let widget = (
|
|
63
63
|
<cx>
|
|
@@ -87,7 +87,7 @@ describe("Repeater", () => {
|
|
|
87
87
|
},
|
|
88
88
|
});
|
|
89
89
|
|
|
90
|
-
const component = createTestRenderer(store, widget);
|
|
90
|
+
const component = await createTestRenderer(store, widget);
|
|
91
91
|
|
|
92
92
|
let tree = component.toJSON();
|
|
93
93
|
assert.deepEqual(tree, {
|
|
@@ -109,7 +109,9 @@ describe("Repeater", () => {
|
|
|
109
109
|
|
|
110
110
|
divInstances = [];
|
|
111
111
|
|
|
112
|
-
|
|
112
|
+
await act(async () => {
|
|
113
|
+
store.update("data", (data) => [{ value: "A" }, ...data]);
|
|
114
|
+
});
|
|
113
115
|
|
|
114
116
|
assert.deepEqual(component.toJSON(), {
|
|
115
117
|
type: "div",
|
package/src/ui/Rescope.spec.tsx
CHANGED
|
@@ -8,7 +8,7 @@ import assert from "assert";
|
|
|
8
8
|
import { PureContainer } from "./PureContainer";
|
|
9
9
|
|
|
10
10
|
describe("Rescope", () => {
|
|
11
|
-
it("allows simple access to nested data", () => {
|
|
11
|
+
it("allows simple access to nested data", async () => {
|
|
12
12
|
let store = new Store({
|
|
13
13
|
data: {
|
|
14
14
|
$page: {
|
|
@@ -27,7 +27,7 @@ describe("Rescope", () => {
|
|
|
27
27
|
</cx>
|
|
28
28
|
);
|
|
29
29
|
|
|
30
|
-
const component = createTestRenderer(store, widget);
|
|
30
|
+
const component = await createTestRenderer(store, widget);
|
|
31
31
|
|
|
32
32
|
let tree = component.toJSON();
|
|
33
33
|
assert.deepEqual(tree, {
|
|
@@ -37,7 +37,7 @@ describe("Rescope", () => {
|
|
|
37
37
|
});
|
|
38
38
|
});
|
|
39
39
|
|
|
40
|
-
it("allows parent access through $root", () => {
|
|
40
|
+
it("allows parent access through $root", async () => {
|
|
41
41
|
let store = new Store({
|
|
42
42
|
data: {
|
|
43
43
|
layout: {
|
|
@@ -59,7 +59,7 @@ describe("Rescope", () => {
|
|
|
59
59
|
</cx>
|
|
60
60
|
);
|
|
61
61
|
|
|
62
|
-
const component = createTestRenderer(store, widget);
|
|
62
|
+
const component = await createTestRenderer(store, widget);
|
|
63
63
|
|
|
64
64
|
let tree = component.toJSON();
|
|
65
65
|
assert.deepEqual(tree, {
|
|
@@ -69,7 +69,7 @@ describe("Rescope", () => {
|
|
|
69
69
|
});
|
|
70
70
|
});
|
|
71
71
|
|
|
72
|
-
it("allows nested data access through data", () => {
|
|
72
|
+
it("allows nested data access through data", async () => {
|
|
73
73
|
let store = new Store({
|
|
74
74
|
data: {
|
|
75
75
|
layout: {
|
|
@@ -86,7 +86,7 @@ describe("Rescope", () => {
|
|
|
86
86
|
</cx>
|
|
87
87
|
);
|
|
88
88
|
|
|
89
|
-
const component = createTestRenderer(store, widget);
|
|
89
|
+
const component = await createTestRenderer(store, widget);
|
|
90
90
|
|
|
91
91
|
let tree = component.toJSON();
|
|
92
92
|
assert.deepEqual(tree, {
|
|
@@ -96,7 +96,7 @@ describe("Rescope", () => {
|
|
|
96
96
|
});
|
|
97
97
|
});
|
|
98
98
|
|
|
99
|
-
it("nested data mutations are correctly propagated to the parent store", () => {
|
|
99
|
+
it("nested data mutations are correctly propagated to the parent store", async () => {
|
|
100
100
|
let store = new Store({
|
|
101
101
|
data: {
|
|
102
102
|
item: {
|
|
@@ -108,7 +108,7 @@ describe("Rescope", () => {
|
|
|
108
108
|
let widget = (
|
|
109
109
|
<cx>
|
|
110
110
|
<Rescope bind="$page" data={{ $value: { bind: "item.value" } }}>
|
|
111
|
-
<PureContainer
|
|
111
|
+
<PureContainer
|
|
112
112
|
controller={{
|
|
113
113
|
onInit() {
|
|
114
114
|
this.store.set("$value", 2);
|
|
@@ -120,7 +120,7 @@ describe("Rescope", () => {
|
|
|
120
120
|
</cx>
|
|
121
121
|
);
|
|
122
122
|
|
|
123
|
-
const component = createTestRenderer(store, widget);
|
|
123
|
+
const component = await createTestRenderer(store, widget);
|
|
124
124
|
|
|
125
125
|
let tree = component.toJSON();
|
|
126
126
|
assert.deepEqual(tree, {
|
|
@@ -130,7 +130,7 @@ describe("Rescope", () => {
|
|
|
130
130
|
});
|
|
131
131
|
});
|
|
132
132
|
|
|
133
|
-
it("visible is calculated based on the inner scope", () => {
|
|
133
|
+
it("visible is calculated based on the inner scope", async () => {
|
|
134
134
|
let store = new Store({
|
|
135
135
|
data: {
|
|
136
136
|
layout: {
|
|
@@ -153,7 +153,7 @@ describe("Rescope", () => {
|
|
|
153
153
|
</cx>
|
|
154
154
|
);
|
|
155
155
|
|
|
156
|
-
const component = createTestRenderer(store, widget);
|
|
156
|
+
const component = await createTestRenderer(store, widget);
|
|
157
157
|
|
|
158
158
|
let tree = component.toJSON();
|
|
159
159
|
assert.deepEqual(tree, {
|
|
@@ -163,7 +163,7 @@ describe("Rescope", () => {
|
|
|
163
163
|
});
|
|
164
164
|
});
|
|
165
165
|
|
|
166
|
-
it("controllers see inner scope", () => {
|
|
166
|
+
it("controllers see inner scope", async () => {
|
|
167
167
|
let store = new Store({
|
|
168
168
|
data: {
|
|
169
169
|
$page: {
|
|
@@ -191,7 +191,7 @@ describe("Rescope", () => {
|
|
|
191
191
|
</cx>
|
|
192
192
|
);
|
|
193
193
|
|
|
194
|
-
const component = createTestRenderer(store, widget);
|
|
194
|
+
const component = await createTestRenderer(store, widget);
|
|
195
195
|
|
|
196
196
|
component.toJSON();
|
|
197
197
|
assert.equal(testName, "John");
|
package/src/ui/Restate.spec.tsx
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { Restate } from "./Restate";
|
|
2
2
|
import { Store } from "../data/Store";
|
|
3
|
-
import { createTestRenderer } from "../util/test/createTestRenderer";
|
|
3
|
+
import { createTestRenderer, act } from "../util/test/createTestRenderer";
|
|
4
4
|
import assert from "assert";
|
|
5
5
|
import { Controller } from "./Controller";
|
|
6
6
|
import { bind } from "./bind";
|
|
7
7
|
import { FirstVisibleChildLayout } from "./layout/FirstVisibleChildLayout";
|
|
8
8
|
|
|
9
9
|
describe("Restate", () => {
|
|
10
|
-
it("provides a blank slate", () => {
|
|
10
|
+
it("provides a blank slate", async () => {
|
|
11
11
|
let widget = (
|
|
12
12
|
<cx>
|
|
13
13
|
<div>
|
|
@@ -30,7 +30,7 @@ describe("Restate", () => {
|
|
|
30
30
|
},
|
|
31
31
|
});
|
|
32
32
|
|
|
33
|
-
const component = createTestRenderer(store, widget);
|
|
33
|
+
const component = await createTestRenderer(store, widget);
|
|
34
34
|
|
|
35
35
|
let tree = component.toJSON();
|
|
36
36
|
assert.deepEqual(tree, {
|
|
@@ -51,7 +51,7 @@ describe("Restate", () => {
|
|
|
51
51
|
});
|
|
52
52
|
});
|
|
53
53
|
|
|
54
|
-
it("wires declared data", () => {
|
|
54
|
+
it("wires declared data", async () => {
|
|
55
55
|
let widget = (
|
|
56
56
|
<cx>
|
|
57
57
|
<div>
|
|
@@ -80,7 +80,7 @@ describe("Restate", () => {
|
|
|
80
80
|
changed = true;
|
|
81
81
|
});
|
|
82
82
|
|
|
83
|
-
const component = createTestRenderer(store, widget);
|
|
83
|
+
const component = await createTestRenderer(store, widget);
|
|
84
84
|
|
|
85
85
|
let tree = component.toJSON();
|
|
86
86
|
|
|
@@ -89,7 +89,7 @@ describe("Restate", () => {
|
|
|
89
89
|
assert(changed);
|
|
90
90
|
});
|
|
91
91
|
|
|
92
|
-
it("causes a global update if internal data changes", () => {
|
|
92
|
+
it("causes a global update if internal data changes", async () => {
|
|
93
93
|
let controller: TestController | undefined;
|
|
94
94
|
|
|
95
95
|
class TestController extends Controller {
|
|
@@ -122,7 +122,7 @@ describe("Restate", () => {
|
|
|
122
122
|
changed = true;
|
|
123
123
|
});
|
|
124
124
|
|
|
125
|
-
const component = createTestRenderer(store, widget);
|
|
125
|
+
const component = await createTestRenderer(store, widget);
|
|
126
126
|
|
|
127
127
|
let tree = component.toJSON();
|
|
128
128
|
assert.deepEqual(tree, {
|
|
@@ -137,7 +137,9 @@ describe("Restate", () => {
|
|
|
137
137
|
],
|
|
138
138
|
});
|
|
139
139
|
|
|
140
|
-
|
|
140
|
+
await act(async () => {
|
|
141
|
+
controller!.setNickname("Sale");
|
|
142
|
+
});
|
|
141
143
|
|
|
142
144
|
let tree2 = component.toJSON();
|
|
143
145
|
assert.deepEqual(tree2, {
|
|
@@ -153,7 +155,7 @@ describe("Restate", () => {
|
|
|
153
155
|
});
|
|
154
156
|
});
|
|
155
157
|
|
|
156
|
-
it("doesn't notify parent if not necessary in detached mode", () => {
|
|
158
|
+
it("doesn't notify parent if not necessary in detached mode", async () => {
|
|
157
159
|
class TestController extends Controller {
|
|
158
160
|
onInit() {
|
|
159
161
|
this.store.init("nickname", "Sale");
|
|
@@ -181,13 +183,13 @@ describe("Restate", () => {
|
|
|
181
183
|
changed = true;
|
|
182
184
|
});
|
|
183
185
|
|
|
184
|
-
const component = createTestRenderer(store, widget);
|
|
186
|
+
const component = await createTestRenderer(store, widget);
|
|
185
187
|
|
|
186
188
|
let tree = component.toJSON();
|
|
187
189
|
assert(!changed);
|
|
188
190
|
});
|
|
189
191
|
|
|
190
|
-
it("shared state can be used across components inside and outside Restate", () => {
|
|
192
|
+
it("shared state can be used across components inside and outside Restate", async () => {
|
|
191
193
|
let widget = (
|
|
192
194
|
<cx>
|
|
193
195
|
<div>
|
|
@@ -213,7 +215,7 @@ describe("Restate", () => {
|
|
|
213
215
|
//console.log(store.getData());
|
|
214
216
|
});
|
|
215
217
|
|
|
216
|
-
const component = createTestRenderer(store, widget);
|
|
218
|
+
const component = await createTestRenderer(store, widget);
|
|
217
219
|
|
|
218
220
|
let tree = component.toJSON();
|
|
219
221
|
assert.deepEqual(store.getData(), {
|
|
@@ -226,8 +228,8 @@ describe("Restate", () => {
|
|
|
226
228
|
});
|
|
227
229
|
});
|
|
228
230
|
|
|
229
|
-
it("updates if shared state is changed from outside", () => {
|
|
230
|
-
[true, false]
|
|
231
|
+
it("updates if shared state is changed from outside", async () => {
|
|
232
|
+
for (const detached of [true, false]) {
|
|
231
233
|
let widget = (
|
|
232
234
|
<cx>
|
|
233
235
|
<div>
|
|
@@ -246,7 +248,7 @@ describe("Restate", () => {
|
|
|
246
248
|
|
|
247
249
|
let store = new Store();
|
|
248
250
|
|
|
249
|
-
const component = createTestRenderer(store, widget);
|
|
251
|
+
const component = await createTestRenderer(store, widget);
|
|
250
252
|
|
|
251
253
|
let tree = component.toJSON();
|
|
252
254
|
assert.deepEqual(tree, {
|
|
@@ -265,7 +267,9 @@ describe("Restate", () => {
|
|
|
265
267
|
},
|
|
266
268
|
],
|
|
267
269
|
});
|
|
268
|
-
|
|
270
|
+
await act(async () => {
|
|
271
|
+
store.set("person.firstName", "Jack");
|
|
272
|
+
});
|
|
269
273
|
|
|
270
274
|
tree = component.toJSON();
|
|
271
275
|
assert.deepEqual(tree, {
|
|
@@ -284,11 +288,11 @@ describe("Restate", () => {
|
|
|
284
288
|
},
|
|
285
289
|
],
|
|
286
290
|
});
|
|
287
|
-
}
|
|
291
|
+
}
|
|
288
292
|
});
|
|
289
293
|
|
|
290
|
-
it("allows field initialization in data declaration", () => {
|
|
291
|
-
[true, false]
|
|
294
|
+
it("allows field initialization in data declaration", async () => {
|
|
295
|
+
for (const detached of [true, false]) {
|
|
292
296
|
let widget = (
|
|
293
297
|
<cx>
|
|
294
298
|
<div>
|
|
@@ -306,7 +310,7 @@ describe("Restate", () => {
|
|
|
306
310
|
|
|
307
311
|
let store = new Store();
|
|
308
312
|
|
|
309
|
-
const component = createTestRenderer(store, widget);
|
|
313
|
+
const component = await createTestRenderer(store, widget);
|
|
310
314
|
|
|
311
315
|
let tree = component.toJSON();
|
|
312
316
|
assert.deepEqual(tree, {
|
|
@@ -320,10 +324,10 @@ describe("Restate", () => {
|
|
|
320
324
|
},
|
|
321
325
|
],
|
|
322
326
|
});
|
|
323
|
-
}
|
|
327
|
+
}
|
|
324
328
|
});
|
|
325
329
|
|
|
326
|
-
it("updates if internal data changes", () => {
|
|
330
|
+
it("updates if internal data changes", async () => {
|
|
327
331
|
class TestController extends Controller {
|
|
328
332
|
onInit() {
|
|
329
333
|
this.store.init("nickname", "Sale");
|
|
@@ -348,7 +352,7 @@ describe("Restate", () => {
|
|
|
348
352
|
changed = true;
|
|
349
353
|
});
|
|
350
354
|
|
|
351
|
-
const component = createTestRenderer(store, widget);
|
|
355
|
+
const component = await createTestRenderer(store, widget);
|
|
352
356
|
|
|
353
357
|
let tree = component.toJSON();
|
|
354
358
|
assert.deepEqual(tree, {
|
|
@@ -364,7 +368,7 @@ describe("Restate", () => {
|
|
|
364
368
|
});
|
|
365
369
|
});
|
|
366
370
|
|
|
367
|
-
it("works with FirstVisibleChildLayout", () => {
|
|
371
|
+
it("works with FirstVisibleChildLayout", async () => {
|
|
368
372
|
let widget = (
|
|
369
373
|
<cx>
|
|
370
374
|
<div>
|
|
@@ -380,7 +384,7 @@ describe("Restate", () => {
|
|
|
380
384
|
|
|
381
385
|
let store = new Store();
|
|
382
386
|
|
|
383
|
-
const component = createTestRenderer(store, widget);
|
|
387
|
+
const component = await createTestRenderer(store, widget);
|
|
384
388
|
|
|
385
389
|
let tree = component.toJSON();
|
|
386
390
|
assert.deepEqual(tree, {
|
|
@@ -390,7 +394,7 @@ describe("Restate", () => {
|
|
|
390
394
|
});
|
|
391
395
|
});
|
|
392
396
|
|
|
393
|
-
it("is transparent to FirstVisibleChildLayout", () => {
|
|
397
|
+
it("is transparent to FirstVisibleChildLayout", async () => {
|
|
394
398
|
let widget = (
|
|
395
399
|
<cx>
|
|
396
400
|
<div>
|
|
@@ -406,7 +410,7 @@ describe("Restate", () => {
|
|
|
406
410
|
|
|
407
411
|
let store = new Store();
|
|
408
412
|
|
|
409
|
-
const component = createTestRenderer(store, widget);
|
|
413
|
+
const component = await createTestRenderer(store, widget);
|
|
410
414
|
|
|
411
415
|
let tree = component.toJSON();
|
|
412
416
|
assert.deepEqual(tree, {
|
|
@@ -1,32 +1,32 @@
|
|
|
1
|
-
import { getSelector } from "../data/getSelector";
|
|
2
|
-
import { StructuredDataAccessor } from "../data/NestedDataView";
|
|
3
|
-
|
|
4
|
-
export class StructuredInstanceDataAccessor implements StructuredDataAccessor {
|
|
5
|
-
instance: any;
|
|
6
|
-
dataConfig: any;
|
|
7
|
-
useParentStore: any;
|
|
8
|
-
dataSelector: any;
|
|
9
|
-
|
|
10
|
-
constructor(config: any) {
|
|
11
|
-
this.instance = config.instance;
|
|
12
|
-
this.dataConfig = config.data;
|
|
13
|
-
this.useParentStore = config.useParentStore;
|
|
14
|
-
this.dataSelector = getSelector(config.data);
|
|
15
|
-
if (this.dataSelector.memoize) this.dataSelector = this.dataSelector.memoize();
|
|
16
|
-
}
|
|
17
|
-
getSelector() {
|
|
18
|
-
return this.dataSelector;
|
|
19
|
-
}
|
|
20
|
-
get() {
|
|
21
|
-
return this.dataSelector.get(this.instance.store.getData());
|
|
22
|
-
}
|
|
23
|
-
setItem(key: string, value: any): boolean {
|
|
24
|
-
return this.instance.nestedDataSet(key, value, this.dataConfig, this.useParentStore);
|
|
25
|
-
}
|
|
26
|
-
containsKey(key: string) {
|
|
27
|
-
return this.dataConfig.hasOwnProperty(key);
|
|
28
|
-
}
|
|
29
|
-
getKeys() {
|
|
30
|
-
return Object.keys(this.dataConfig);
|
|
31
|
-
}
|
|
32
|
-
}
|
|
1
|
+
import { getSelector } from "../data/getSelector";
|
|
2
|
+
import { StructuredDataAccessor } from "../data/NestedDataView";
|
|
3
|
+
|
|
4
|
+
export class StructuredInstanceDataAccessor implements StructuredDataAccessor {
|
|
5
|
+
instance: any;
|
|
6
|
+
dataConfig: any;
|
|
7
|
+
useParentStore: any;
|
|
8
|
+
dataSelector: any;
|
|
9
|
+
|
|
10
|
+
constructor(config: any) {
|
|
11
|
+
this.instance = config.instance;
|
|
12
|
+
this.dataConfig = config.data;
|
|
13
|
+
this.useParentStore = config.useParentStore;
|
|
14
|
+
this.dataSelector = getSelector(config.data);
|
|
15
|
+
if (this.dataSelector.memoize) this.dataSelector = this.dataSelector.memoize();
|
|
16
|
+
}
|
|
17
|
+
getSelector() {
|
|
18
|
+
return this.dataSelector;
|
|
19
|
+
}
|
|
20
|
+
get() {
|
|
21
|
+
return this.dataSelector.get(this.instance.store.getData());
|
|
22
|
+
}
|
|
23
|
+
setItem(key: string, value: any): boolean {
|
|
24
|
+
return this.instance.nestedDataSet(key, value, this.dataConfig, this.useParentStore);
|
|
25
|
+
}
|
|
26
|
+
containsKey(key: string) {
|
|
27
|
+
return this.dataConfig.hasOwnProperty(key);
|
|
28
|
+
}
|
|
29
|
+
getKeys() {
|
|
30
|
+
return Object.keys(this.dataConfig);
|
|
31
|
+
}
|
|
32
|
+
}
|
package/src/ui/VDOM.ts
CHANGED
|
@@ -1,34 +1 @@
|
|
|
1
|
-
|
|
2
|
-
import { VDOM as vdom } from "cx-react";
|
|
3
|
-
|
|
4
|
-
import type * as React from "react";
|
|
5
|
-
import type { Component } from "react";
|
|
6
|
-
import type {
|
|
7
|
-
unstable_batchedUpdates,
|
|
8
|
-
render,
|
|
9
|
-
findDOMNode,
|
|
10
|
-
createPortal,
|
|
11
|
-
unstable_renderSubtreeIntoContainer,
|
|
12
|
-
hydrate,
|
|
13
|
-
unmountComponentAtNode,
|
|
14
|
-
} from "react-dom";
|
|
15
|
-
import type { createRoot, hydrateRoot, Root } from "react-dom/client";
|
|
16
|
-
|
|
17
|
-
export interface VDOMType extends Omit<typeof React, "default"> {
|
|
18
|
-
allowRenderOutputCaching?: boolean;
|
|
19
|
-
Component: typeof Component;
|
|
20
|
-
|
|
21
|
-
DOM: {
|
|
22
|
-
unstable_batchedUpdates: typeof unstable_batchedUpdates;
|
|
23
|
-
render: typeof render;
|
|
24
|
-
findDOMNode: typeof findDOMNode;
|
|
25
|
-
createPortal: typeof createPortal;
|
|
26
|
-
createRoot: typeof createRoot;
|
|
27
|
-
hydrateRoot: typeof hydrateRoot;
|
|
28
|
-
hydrate: typeof hydrate;
|
|
29
|
-
unmountComponentAtNode: typeof unmountComponentAtNode;
|
|
30
|
-
unstable_renderSubtreeIntoContainer: typeof unstable_renderSubtreeIntoContainer;
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
export const VDOM = vdom as VDOMType;
|
|
1
|
+
export { VDOM } from "cx-react";
|
package/src/ui/Widget.tsx
CHANGED
|
@@ -152,13 +152,6 @@ export abstract class Widget<
|
|
|
152
152
|
if (this.styles) this.style = this.styles;
|
|
153
153
|
|
|
154
154
|
if (this.styled) this.style = parseStyle(this.style);
|
|
155
|
-
else if (this.style) {
|
|
156
|
-
Console.warn(
|
|
157
|
-
"Components that allow use of the style attribute should set styled = true on their prototype. This will be an error in future versions.",
|
|
158
|
-
);
|
|
159
|
-
this.style = parseStyle(this.style);
|
|
160
|
-
this.styled = true;
|
|
161
|
-
}
|
|
162
155
|
|
|
163
156
|
if (typeof this.if !== "undefined") this.visible = this.if;
|
|
164
157
|
|