cx 26.0.12 → 26.0.13
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/charts/ScatterGraph.d.ts +4 -4
- package/build/charts/ScatterGraph.js +2 -2
- package/build/data/ArrayElementView.spec.d.ts +1 -0
- package/build/data/ArrayElementView.spec.js +81 -0
- package/build/data/Binding.spec.d.ts +1 -0
- package/build/data/Binding.spec.js +61 -0
- package/build/data/Expression.spec.d.ts +1 -0
- package/build/data/Expression.spec.js +196 -0
- package/build/data/Grouper.spec.d.ts +1 -0
- package/build/data/Grouper.spec.js +48 -0
- package/build/data/Ref.spec.d.ts +1 -0
- package/build/data/Ref.spec.js +72 -0
- package/build/data/Selector.d.ts +1 -1
- package/build/data/Store.spec.d.ts +1 -0
- package/build/data/Store.spec.js +19 -0
- package/build/data/StoreRef.spec.d.ts +1 -0
- package/build/data/StoreRef.spec.js +22 -0
- package/build/data/StringTemplate.spec.d.ts +1 -0
- package/build/data/StringTemplate.spec.js +112 -0
- package/build/data/StructuredSelector.spec.d.ts +1 -0
- package/build/data/StructuredSelector.spec.js +102 -0
- package/build/data/View.spec.d.ts +1 -0
- package/build/data/View.spec.js +44 -0
- package/build/data/ZoomIntoPropertyView.spec.d.ts +1 -0
- package/build/data/ZoomIntoPropertyView.spec.js +54 -0
- package/build/data/comparer.spec.d.ts +1 -0
- package/build/data/comparer.spec.js +50 -0
- package/build/data/computable.d.ts +3 -6
- package/build/data/computable.spec.d.ts +1 -0
- package/build/data/computable.spec.js +56 -0
- package/build/data/createAccessorModelProxy.d.ts +5 -3
- package/build/data/createAccessorModelProxy.spec.d.ts +1 -0
- package/build/data/createAccessorModelProxy.spec.js +30 -0
- package/build/data/createStructuredSelector.spec.d.ts +1 -0
- package/build/data/createStructuredSelector.spec.js +42 -0
- package/build/data/diff/diffs.spec.d.ts +1 -0
- package/build/data/diff/diffs.spec.js +45 -0
- package/build/data/getAccessor.spec.d.ts +1 -0
- package/build/data/getAccessor.spec.js +10 -0
- package/build/data/getSelector.spec.d.ts +1 -0
- package/build/data/getSelector.spec.js +36 -0
- package/build/data/ops/append.spec.d.ts +1 -0
- package/build/data/ops/append.spec.js +24 -0
- package/build/data/ops/filter.spec.d.ts +1 -0
- package/build/data/ops/filter.spec.js +25 -0
- package/build/data/ops/findTreeNode.d.ts +1 -1
- package/build/data/ops/findTreeNode.js +1 -1
- package/build/data/ops/findTreeNode.spec.d.ts +1 -0
- package/build/data/ops/findTreeNode.spec.js +20 -0
- package/build/data/ops/findTreePath.d.ts +1 -1
- package/build/data/ops/merge.spec.d.ts +1 -0
- package/build/data/ops/merge.spec.js +23 -0
- package/build/data/ops/removeTreeNodes.d.ts +1 -1
- package/build/data/ops/removeTreeNodes.js +1 -1
- package/build/data/ops/removeTreeNodes.spec.d.ts +1 -0
- package/build/data/ops/removeTreeNodes.spec.js +35 -0
- package/build/data/ops/updateArray.spec.d.ts +1 -0
- package/build/data/ops/updateArray.spec.js +33 -0
- package/build/data/ops/updateTree.d.ts +1 -1
- package/build/data/ops/updateTree.spec.d.ts +1 -0
- package/build/data/ops/updateTree.spec.js +44 -0
- package/build/hooks/invokeCallback.spec.d.ts +1 -0
- package/build/hooks/invokeCallback.spec.js +44 -0
- package/build/hooks/resolveCallback.spec.d.ts +1 -0
- package/build/hooks/resolveCallback.spec.js +35 -0
- package/build/hooks/store.spec.d.ts +1 -0
- package/build/hooks/store.spec.js +48 -0
- package/build/hooks/useTrigger.spec.d.ts +1 -0
- package/build/hooks/useTrigger.spec.js +59 -0
- package/build/jsx-runtime.d.ts +10 -10
- package/build/jsx-runtime.js +6 -0
- package/build/svg/util/Rect.d.ts +1 -1
- package/build/ui/ContentResolver.d.ts +16 -6
- package/build/ui/Controller.d.ts +7 -0
- package/build/ui/Controller.js +2 -1
- package/build/ui/Controller.spec.d.ts +1 -0
- package/build/ui/Controller.spec.js +247 -0
- package/build/ui/Cx.spec.d.ts +1 -0
- package/build/ui/Cx.spec.js +153 -0
- package/build/ui/DataProxy.spec.d.ts +1 -0
- package/build/ui/DataProxy.spec.js +208 -0
- package/build/ui/Instance.d.ts +1 -1
- package/build/ui/Instance.js +10 -10
- package/build/ui/IsolatedScope.spec.d.ts +1 -0
- package/build/ui/IsolatedScope.spec.js +42 -0
- package/build/ui/Prop.d.ts +12 -1
- package/build/ui/PureContainer.spec.d.ts +1 -0
- package/build/ui/PureContainer.spec.js +149 -0
- package/build/ui/Repeater.d.ts +3 -3
- package/build/ui/Repeater.spec.d.ts +1 -0
- package/build/ui/Repeater.spec.js +109 -0
- package/build/ui/Rescope.spec.d.ts +1 -0
- package/build/ui/Rescope.spec.js +134 -0
- package/build/ui/Restate.spec.d.ts +1 -0
- package/build/ui/Restate.spec.js +257 -0
- package/build/ui/Text.d.ts +14 -2
- package/build/ui/Text.js +3 -0
- package/build/ui/adapter/ArrayAdapter.js +4 -1
- package/build/ui/adapter/ArrayAdapter.spec.d.ts +1 -0
- package/build/ui/adapter/ArrayAdapter.spec.js +44 -0
- package/build/ui/adapter/TreeAdapter.spec.d.ts +1 -0
- package/build/ui/adapter/TreeAdapter.spec.js +71 -0
- package/build/ui/app/Url.spec.d.ts +1 -0
- package/build/ui/app/Url.spec.js +43 -0
- package/build/ui/app/startHotAppLoop.js +1 -1
- package/build/ui/createFunctionalComponent.d.ts +14 -1
- package/build/ui/createFunctionalComponent.js +7 -4
- package/build/ui/createFunctionalComponent.spec.d.ts +1 -0
- package/build/ui/createFunctionalComponent.spec.js +272 -0
- package/build/ui/expr.d.ts +3 -1
- package/build/ui/exprHelpers.d.ts +32 -0
- package/build/ui/exprHelpers.js +61 -0
- package/build/ui/index.d.ts +1 -0
- package/build/ui/index.js +1 -0
- package/build/ui/layout/ContentPlaceholder.spec.d.ts +1 -0
- package/build/ui/layout/ContentPlaceholder.spec.js +333 -0
- package/build/ui/layout/FirstVisibleChildLayout.spec.d.ts +1 -0
- package/build/ui/layout/FirstVisibleChildLayout.spec.js +101 -0
- package/build/util/Console.d.ts +1 -0
- package/build/util/Console.js +7 -3
- package/build/util/Format.spec.d.ts +1 -0
- package/build/util/Format.spec.js +58 -0
- package/build/util/TraversalStack.spec.d.ts +1 -0
- package/build/util/TraversalStack.spec.js +43 -0
- package/build/util/date/upperBoundCheck.spec.d.ts +1 -0
- package/build/util/date/upperBoundCheck.spec.js +22 -0
- package/build/util/getSearchQueryPredicate.spec.d.ts +1 -0
- package/build/util/getSearchQueryPredicate.spec.js +33 -0
- package/build/util/isValidIdentifierName.spec.d.ts +1 -0
- package/build/util/isValidIdentifierName.spec.js +28 -0
- package/build/util/routeAppend.spec.d.ts +1 -0
- package/build/util/routeAppend.spec.js +14 -0
- package/build/widgets/AccessorBindings.spec.d.ts +1 -0
- package/build/widgets/AccessorBindings.spec.js +40 -0
- package/build/widgets/Button.d.ts +3 -6
- package/build/widgets/Button.js +1 -1
- package/build/widgets/DocumentTitle.d.ts +2 -0
- package/build/widgets/Heading.d.ts +2 -2
- package/build/widgets/HtmlElement.d.ts +31 -8
- package/build/widgets/HtmlElement.js +7 -9
- package/build/widgets/HtmlElement.spec.d.ts +1 -0
- package/build/widgets/HtmlElement.spec.js +38 -0
- package/build/widgets/Icon.d.ts +3 -13
- package/build/widgets/List.d.ts +4 -0
- package/build/widgets/ReactElementWrapper.d.ts +29 -0
- package/build/widgets/ReactElementWrapper.js +59 -0
- package/build/widgets/drag-drop/DragSource.d.ts +3 -3
- package/build/widgets/drag-drop/DragSource.js +2 -3
- package/build/widgets/drag-drop/DropZone.d.ts +3 -3
- package/build/widgets/drag-drop/DropZone.js +2 -3
- package/build/widgets/form/Checkbox.d.ts +2 -0
- package/build/widgets/form/ColorField.d.ts +2 -0
- package/build/widgets/form/DateTimeField.d.ts +2 -0
- package/build/widgets/form/Field.d.ts +0 -2
- package/build/widgets/form/LabeledContainer.d.ts +9 -8
- package/build/widgets/form/LabeledContainer.js +9 -9
- package/build/widgets/form/LookupField.d.ts +57 -9
- package/build/widgets/form/MonthField.d.ts +2 -0
- package/build/widgets/form/NumberField.d.ts +2 -0
- package/build/widgets/form/Radio.d.ts +2 -0
- package/build/widgets/form/Select.d.ts +2 -0
- package/build/widgets/form/Slider.d.ts +3 -0
- package/build/widgets/form/Switch.d.ts +2 -0
- package/build/widgets/form/TextField.d.ts +34 -0
- package/build/widgets/form/TimeList.d.ts +16 -1
- package/build/widgets/form/TimeList.js +34 -62
- package/build/widgets/form/UploadButton.d.ts +34 -2
- package/build/widgets/form/UploadButton.js +3 -1
- package/build/widgets/form/ValidationGroup.spec.d.ts +1 -0
- package/build/widgets/form/ValidationGroup.spec.js +62 -0
- package/build/widgets/form/Validator.d.ts +33 -2
- package/build/widgets/form/Validator.js +3 -0
- package/build/widgets/grid/Grid.d.ts +9 -9
- package/build/widgets/grid/TreeNode.d.ts +6 -0
- package/build/widgets/index.d.ts +1 -0
- package/build/widgets/index.js +1 -0
- package/build/widgets/nav/MenuItem.d.ts +3 -2
- package/build/widgets/nav/Route.spec.d.ts +1 -0
- package/build/widgets/nav/Route.spec.js +15 -0
- package/build/widgets/nav/Scroller.d.ts +4 -6
- package/build/widgets/nav/Scroller.js +6 -3
- package/build/widgets/nav/Tab.d.ts +2 -2
- package/build/widgets/overlay/ContextMenu.d.ts +3 -3
- package/build/widgets/overlay/Overlay.d.ts +2 -1
- package/build/widgets/overlay/Overlay.js +1 -1
- package/build.js +133 -133
- package/dist/data.js +2 -2
- package/dist/jsx-runtime.js +6 -1
- package/dist/manifest.d.ts +1443 -0
- package/dist/manifest.js +855 -807
- package/dist/ui.js +91 -5
- package/dist/util.js +3 -0
- package/dist/widgets.js +520 -161
- package/package.json +46 -20
- package/src/charts/Chart.ts +108 -108
- package/src/charts/ScatterGraph.tsx +6 -6
- package/src/data/ArrayElementView.ts +90 -90
- package/src/data/AugmentedViewBase.ts +88 -88
- package/src/data/Binding.ts +104 -104
- package/src/data/ExposedRecordView.ts +95 -95
- package/src/data/ExposedValueView.ts +89 -89
- package/src/data/Expression.spec.ts +229 -229
- package/src/data/Expression.ts +233 -233
- package/src/data/Grouper.spec.ts +57 -57
- package/src/data/Grouper.ts +158 -158
- package/src/data/NestedDataView.ts +43 -43
- package/src/data/ReadOnlyDataView.ts +39 -39
- package/src/data/Ref.ts +104 -104
- package/src/data/Selector.ts +10 -10
- package/src/data/Store.ts +52 -52
- package/src/data/StoreProxy.ts +19 -19
- package/src/data/StoreRef.ts +66 -66
- package/src/data/StringTemplate.spec.ts +132 -132
- package/src/data/StringTemplate.ts +93 -93
- package/src/data/StructuredSelector.spec.ts +113 -113
- package/src/data/StructuredSelector.ts +146 -146
- package/src/data/SubscribableView.ts +63 -63
- package/src/data/ZoomIntoPropertyView.spec.ts +64 -64
- package/src/data/ZoomIntoPropertyView.ts +45 -45
- package/src/data/computable.spec.ts +87 -62
- package/src/data/computable.ts +3 -6
- package/src/data/createAccessorModelProxy.spec.tsx +102 -1
- package/src/data/createAccessorModelProxy.ts +9 -3
- 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/findTreeNode.ts +1 -5
- package/src/data/ops/findTreePath.ts +1 -1
- package/src/data/ops/merge.ts +13 -13
- package/src/data/ops/removeTreeNodes.spec.ts +37 -37
- package/src/data/ops/removeTreeNodes.ts +2 -2
- package/src/data/ops/updateArray.spec.ts +69 -69
- package/src/data/ops/updateArray.ts +31 -31
- package/src/data/ops/updateTree.ts +1 -1
- package/src/data/test-types.ts +7 -7
- package/src/hooks/resolveCallback.spec.tsx +30 -7
- package/src/hooks/useTrigger.ts +26 -26
- package/src/index.scss +6 -6
- package/src/jsx-dev-runtime.ts +4 -4
- package/src/jsx-runtime.spec.tsx +402 -0
- package/src/jsx-runtime.ts +26 -22
- package/src/svg/BoundedObject.ts +101 -101
- package/src/svg/util/Rect.ts +105 -105
- package/src/ui/CSSHelper.ts +17 -17
- package/src/ui/ContentResolver.spec.tsx +172 -19
- package/src/ui/ContentResolver.ts +16 -8
- package/src/ui/Controller.ts +15 -2
- package/src/ui/Culture.ts +159 -159
- package/src/ui/DataProxy.ts +55 -55
- package/src/ui/FocusManager.ts +171 -171
- package/src/ui/Instance.ts +866 -868
- package/src/ui/Prop.ts +140 -112
- package/src/ui/RenderingContext.ts +99 -99
- package/src/ui/Repeater.ts +3 -12
- package/src/ui/Rescope.ts +49 -49
- package/src/ui/StructuredInstanceDataAccessor.ts +32 -32
- package/src/ui/Text.ts +21 -2
- package/src/ui/VDOM.ts +34 -34
- package/src/ui/adapter/ArrayAdapter.spec.ts +55 -55
- package/src/ui/adapter/ArrayAdapter.ts +4 -1
- 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/startHotAppLoop.ts +41 -41
- package/src/ui/createFunctionalComponent.spec.tsx +53 -0
- package/src/ui/createFunctionalComponent.ts +86 -65
- package/src/ui/expr.ts +4 -1
- package/src/ui/exprHelpers.spec.ts +379 -0
- package/src/ui/exprHelpers.ts +78 -0
- package/src/ui/index.ts +47 -46
- package/src/ui/layout/Content.ts +30 -30
- package/src/ui/layout/FirstVisibleChildLayout.spec.tsx +1 -1
- package/src/ui/layout/FirstVisibleChildLayout.ts +60 -60
- package/src/ui/selection/KeySelection.ts +153 -153
- package/src/ui/selection/Selection.ts +128 -128
- package/src/util/Console.ts +13 -11
- package/src/util/Format.ts +267 -267
- package/src/util/addEventListenerWithOptions.ts +41 -41
- package/src/util/browserSupportsPassiveEventHandlers.ts +20 -20
- package/src/util/color/rgbToHsl.ts +35 -35
- package/src/util/getActiveElement.ts +4 -4
- package/src/util/hasKey.ts +18 -18
- package/src/util/index.ts +55 -55
- package/src/util/innerTextTrim.ts +10 -10
- package/src/util/isArray.ts +3 -3
- package/src/util/isDataRecord.ts +5 -5
- package/src/util/isDefined.ts +3 -3
- package/src/util/isString.ts +3 -3
- package/src/widgets/AccessorBindings.spec.tsx +26 -0
- package/src/widgets/Button.tsx +5 -17
- package/src/widgets/DocumentTitle.ts +95 -92
- package/src/widgets/Heading.ts +2 -2
- package/src/widgets/HtmlElement.spec.helpers.tsx +108 -0
- package/src/widgets/HtmlElement.spec.tsx +20 -12
- package/src/widgets/HtmlElement.tsx +77 -23
- package/src/widgets/Icon.ts +3 -17
- package/src/widgets/List.tsx +6 -0
- package/src/widgets/ReactElementWrapper.spec.tsx +452 -0
- package/src/widgets/ReactElementWrapper.tsx +108 -0
- package/src/widgets/Sandbox.ts +103 -103
- package/src/widgets/autoFocus.ts +9 -9
- package/src/widgets/cx.ts +63 -63
- package/src/widgets/drag-drop/DragSource.tsx +3 -4
- package/src/widgets/drag-drop/DropZone.tsx +3 -4
- package/src/widgets/form/Checkbox.tsx +3 -0
- package/src/widgets/form/ColorField.tsx +3 -0
- package/src/widgets/form/DateTimeField.tsx +5 -0
- package/src/widgets/form/Field.tsx +0 -3
- package/src/widgets/form/Label.tsx +1 -0
- package/src/widgets/form/LabeledContainer.ts +22 -26
- package/src/widgets/form/LookupField.spec.tsx +93 -0
- package/src/widgets/form/LookupField.tsx +104 -9
- package/src/widgets/form/MonthField.tsx +5 -0
- package/src/widgets/form/NumberField.tsx +3 -0
- package/src/widgets/form/Radio.tsx +5 -0
- package/src/widgets/form/Select.tsx +5 -0
- package/src/widgets/form/Slider.tsx +4 -0
- package/src/widgets/form/Switch.tsx +3 -0
- package/src/widgets/form/TextField.tsx +62 -0
- package/src/widgets/form/TimeList.tsx +84 -73
- package/src/widgets/form/UploadButton.tsx +53 -2
- package/src/widgets/form/Validator.ts +40 -3
- package/src/widgets/grid/Grid.tsx +9 -12
- package/src/widgets/grid/GridCell.ts +143 -143
- package/src/widgets/grid/TreeNode.tsx +9 -0
- package/src/widgets/icons/calendar.tsx +17 -17
- package/src/widgets/icons/check.tsx +13 -13
- package/src/widgets/icons/clear.tsx +15 -15
- package/src/widgets/icons/close.tsx +20 -20
- package/src/widgets/icons/cx.tsx +38 -38
- package/src/widgets/icons/drop-down.tsx +15 -15
- package/src/widgets/icons/file.tsx +13 -13
- package/src/widgets/icons/folder-open.tsx +15 -15
- package/src/widgets/icons/folder.tsx +13 -13
- package/src/widgets/icons/forward.tsx +22 -22
- package/src/widgets/icons/loading.tsx +24 -24
- package/src/widgets/icons/menu.tsx +17 -17
- package/src/widgets/icons/pixel-picker.tsx +18 -18
- package/src/widgets/icons/search.tsx +13 -13
- package/src/widgets/icons/sort-asc.tsx +14 -14
- package/src/widgets/icons/square.tsx +18 -18
- package/src/widgets/index.ts +1 -0
- package/src/widgets/nav/MenuItem.tsx +3 -2
- package/src/widgets/nav/Route.ts +142 -142
- package/src/widgets/nav/Scroller.tsx +8 -9
- package/src/widgets/nav/Tab.ts +2 -2
- package/src/widgets/overlay/ContextMenu.ts +42 -42
- package/src/widgets/overlay/Dropdown.tsx +762 -762
- package/src/widgets/overlay/MsgBox.tsx +141 -141
- package/src/widgets/overlay/Overlay.tsx +5 -4
- package/src/widgets/overlay/Toast.ts +111 -111
- package/src/widgets/overlay/Window.tsx +299 -299
- package/src/widgets/overlay/alerts.ts +46 -46
- package/src/widgets/overlay/captureMouse.ts +195 -195
- package/src/widgets/overlay/createHotPromiseWindowFactory.ts +72 -72
- package/src/widgets/overlay/index.d.ts +11 -11
- package/src/widgets/overlay/index.ts +11 -11
- package/src/widgets/overlay/tooltip-ops.ts +173 -173
package/src/ui/Prop.ts
CHANGED
|
@@ -1,112 +1,140 @@
|
|
|
1
|
-
import { Selector } from "../data/Selector";
|
|
2
|
-
import { AccessorChain } from "../data/createAccessorModelProxy";
|
|
3
|
-
|
|
4
|
-
export type Bind = {
|
|
5
|
-
bind: string;
|
|
6
|
-
defaultValue?: any;
|
|
7
|
-
throttle?: number;
|
|
8
|
-
debounce?: number;
|
|
9
|
-
};
|
|
10
|
-
|
|
11
|
-
export type Tpl = {
|
|
12
|
-
tpl: string;
|
|
13
|
-
};
|
|
14
|
-
|
|
15
|
-
export type Expr = {
|
|
16
|
-
expr: string;
|
|
17
|
-
set?: (value: any, instance?: any) => boolean;
|
|
18
|
-
throttle?: number;
|
|
19
|
-
debounce?: number;
|
|
20
|
-
};
|
|
21
|
-
|
|
22
|
-
export type Binding = Bind | Tpl | Expr;
|
|
23
|
-
|
|
24
|
-
export type GetSet<T> = {
|
|
25
|
-
get: Selector<T>;
|
|
26
|
-
set?: (value: T, instance?: any) => boolean;
|
|
27
|
-
throttle?: number;
|
|
28
|
-
debounce?: number;
|
|
29
|
-
};
|
|
30
|
-
|
|
31
|
-
export interface StructuredSelector {
|
|
32
|
-
[prop: string]: Selector<any>;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
export type Prop<T> = T | Binding | Selector<T> | AccessorChain<T> | GetSet<T>;
|
|
36
|
-
|
|
37
|
-
export type WritableProp<T> = Bind | AccessorChain<T>;
|
|
38
|
-
|
|
39
|
-
export interface DataRecord {
|
|
40
|
-
[prop: string]: any;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
export interface Config {
|
|
44
|
-
[prop: string]: any;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
export interface StructuredProp {
|
|
48
|
-
[prop: string]: Prop<any>;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
/**
|
|
52
|
-
* Utility type that extracts the resolved value type from a Prop<T>.
|
|
53
|
-
* Used to derive the runtime type of structured props.
|
|
54
|
-
*/
|
|
55
|
-
export type ResolveProp<P> =
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
*
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
*
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
export type
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
1
|
+
import { Selector } from "../data/Selector";
|
|
2
|
+
import { AccessorChain } from "../data/createAccessorModelProxy";
|
|
3
|
+
|
|
4
|
+
export type Bind = {
|
|
5
|
+
bind: string;
|
|
6
|
+
defaultValue?: any;
|
|
7
|
+
throttle?: number;
|
|
8
|
+
debounce?: number;
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
export type Tpl = {
|
|
12
|
+
tpl: string;
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
export type Expr = {
|
|
16
|
+
expr: string;
|
|
17
|
+
set?: (value: any, instance?: any) => boolean;
|
|
18
|
+
throttle?: number;
|
|
19
|
+
debounce?: number;
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
export type Binding = Bind | Tpl | Expr;
|
|
23
|
+
|
|
24
|
+
export type GetSet<T> = {
|
|
25
|
+
get: Selector<T>;
|
|
26
|
+
set?: (value: T, instance?: any) => boolean;
|
|
27
|
+
throttle?: number;
|
|
28
|
+
debounce?: number;
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
export interface StructuredSelector {
|
|
32
|
+
[prop: string]: Selector<any>;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export type Prop<T> = T | Binding | Selector<T> | AccessorChain<T> | GetSet<T>;
|
|
36
|
+
|
|
37
|
+
export type WritableProp<T> = Bind | AccessorChain<T>;
|
|
38
|
+
|
|
39
|
+
export interface DataRecord {
|
|
40
|
+
[prop: string]: any;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export interface Config {
|
|
44
|
+
[prop: string]: any;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export interface StructuredProp {
|
|
48
|
+
[prop: string]: Prop<any>;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Utility type that extracts the resolved value type from a Prop<T>.
|
|
53
|
+
* Used to derive the runtime type of structured props.
|
|
54
|
+
*/
|
|
55
|
+
export type ResolveProp<P> =
|
|
56
|
+
P extends Selector<infer T>
|
|
57
|
+
? T
|
|
58
|
+
: P extends AccessorChain<infer T>
|
|
59
|
+
? T
|
|
60
|
+
: P extends GetSet<infer T>
|
|
61
|
+
? T
|
|
62
|
+
: P extends Bind
|
|
63
|
+
? any
|
|
64
|
+
: P extends Tpl
|
|
65
|
+
? string
|
|
66
|
+
: P extends Expr
|
|
67
|
+
? any
|
|
68
|
+
: P;
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Utility type that resolves a structured prop object to its runtime value types.
|
|
72
|
+
* Transforms { name: StringProp, count: NumberProp } to { name: string, count: number }
|
|
73
|
+
*/
|
|
74
|
+
export type ResolveStructuredPropType<S> = {
|
|
75
|
+
[K in keyof S]: ResolveProp<S[K]>;
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Resolves the runtime value type from either a Prop<T> or a StructuredProp.
|
|
80
|
+
* Use this for generic widgets like ContentResolver and Validator where the
|
|
81
|
+
* input can be either a single prop or a structured object.
|
|
82
|
+
*
|
|
83
|
+
* - For Prop<T> (Selector, AccessorChain, GetSet), resolves to T
|
|
84
|
+
* - For bindings (Bind, Tpl, Expr), resolves to any/string/any
|
|
85
|
+
* - For structured objects, recursively resolves each property via ResolveStructuredProp
|
|
86
|
+
* - For literal values, returns them as-is
|
|
87
|
+
*/
|
|
88
|
+
export type ResolvePropType<P> =
|
|
89
|
+
P extends Selector<infer T>
|
|
90
|
+
? T
|
|
91
|
+
: P extends AccessorChain<infer T>
|
|
92
|
+
? T
|
|
93
|
+
: P extends GetSet<infer T>
|
|
94
|
+
? T
|
|
95
|
+
: P extends Bind
|
|
96
|
+
? any
|
|
97
|
+
: P extends Tpl
|
|
98
|
+
? string
|
|
99
|
+
: P extends Expr
|
|
100
|
+
? any
|
|
101
|
+
: P extends object
|
|
102
|
+
? ResolveStructuredPropType<P>
|
|
103
|
+
: P;
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* Generic structured prop type that provides type safety for params and their resolved values.
|
|
107
|
+
* Use with ContentResolver and similar widgets to type the onResolve callback params.
|
|
108
|
+
*/
|
|
109
|
+
export type TypedStructuredProp<T extends Record<string, any>> = {
|
|
110
|
+
[K in keyof T]: Prop<T[K]>;
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
export type StringProp = Prop<string>;
|
|
114
|
+
export type StyleProp = Prop<string | React.CSSProperties> | StructuredProp;
|
|
115
|
+
export type NumberProp = Prop<number>;
|
|
116
|
+
export type BooleanProp = Prop<boolean>;
|
|
117
|
+
export type ClassProp = Prop<string> | StructuredProp;
|
|
118
|
+
export type RecordsProp = Prop<DataRecord[]>;
|
|
119
|
+
export type SortersProp = Prop<Sorter[]>;
|
|
120
|
+
export type UnknownProp = Prop<unknown>;
|
|
121
|
+
export type ModProp = StringProp | StructuredProp;
|
|
122
|
+
|
|
123
|
+
export type RecordAlias = string | { toString(): string };
|
|
124
|
+
|
|
125
|
+
export type SortDirection = "ASC" | "DESC";
|
|
126
|
+
|
|
127
|
+
export interface Sorter {
|
|
128
|
+
field?: string;
|
|
129
|
+
value?: (record: DataRecord) => any;
|
|
130
|
+
direction: SortDirection;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
export interface CollatorOptions {
|
|
134
|
+
localeMatcher?: "lookup" | "best fit";
|
|
135
|
+
usage?: "sort" | "search";
|
|
136
|
+
sensitivity?: "base" | "accent" | "case" | "variant";
|
|
137
|
+
ignorePunctuation?: boolean;
|
|
138
|
+
numeric?: boolean;
|
|
139
|
+
caseFirst?: "upper" | "lower" | "false";
|
|
140
|
+
}
|
|
@@ -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.ts
CHANGED
|
@@ -5,23 +5,14 @@ import { ArrayAdapter } from "./adapter/ArrayAdapter";
|
|
|
5
5
|
import { UseParentLayout } from "./layout/UseParentLayout";
|
|
6
6
|
import { getAccessor } from "../data/getAccessor";
|
|
7
7
|
import { RenderingContext } from "./RenderingContext";
|
|
8
|
-
import {
|
|
9
|
-
Prop,
|
|
10
|
-
StringProp,
|
|
11
|
-
StructuredProp,
|
|
12
|
-
RecordAlias,
|
|
13
|
-
SortersProp,
|
|
14
|
-
CollatorOptions,
|
|
15
|
-
SortDirection,
|
|
16
|
-
DataRecord,
|
|
17
|
-
} from "./Prop";
|
|
8
|
+
import { Prop, StringProp, StructuredProp, RecordAlias, SortersProp, CollatorOptions, SortDirection } from "./Prop";
|
|
18
9
|
import { Instance } from "./Instance";
|
|
19
10
|
import { DataAdapter, DataAdapterRecord } from "./adapter/DataAdapter";
|
|
20
11
|
import type { GroupAdapter } from "./adapter/GroupAdapter";
|
|
21
12
|
import type { TreeAdapter } from "./adapter/TreeAdapter";
|
|
22
13
|
import { Create } from "../util/Component";
|
|
23
14
|
|
|
24
|
-
export interface RepeaterConfig<T =
|
|
15
|
+
export interface RepeaterConfig<T = any> extends ContainerConfig {
|
|
25
16
|
/** An array of records to be displayed. */
|
|
26
17
|
records?: Prop<T[]>;
|
|
27
18
|
|
|
@@ -82,7 +73,7 @@ export interface RepeaterConfig<T = DataRecord> extends ContainerConfig {
|
|
|
82
73
|
| Create<typeof GroupAdapter>;
|
|
83
74
|
}
|
|
84
75
|
|
|
85
|
-
export class Repeater<
|
|
76
|
+
export class Repeater<T = any> extends ContainerBase<RepeaterConfig<T>> {
|
|
86
77
|
declare records?: any;
|
|
87
78
|
recordsAccessor: any;
|
|
88
79
|
declare recordAlias?: string;
|
package/src/ui/Rescope.ts
CHANGED
|
@@ -1,49 +1,49 @@
|
|
|
1
|
-
import { Widget } from "./Widget";
|
|
2
|
-
import { PureContainerBase, PureContainerConfig } from "./PureContainer";
|
|
3
|
-
import { Binding } from "../data/Binding";
|
|
4
|
-
import { ZoomIntoPropertyView } from "../data/ZoomIntoPropertyView";
|
|
5
|
-
import { StructuredInstanceDataAccessor } from "./StructuredInstanceDataAccessor";
|
|
6
|
-
import { isObject } from "../util/isObject";
|
|
7
|
-
import { StructuredProp } from "./Prop";
|
|
8
|
-
|
|
9
|
-
export interface RescopeConfig extends PureContainerConfig {
|
|
10
|
-
bind: string;
|
|
11
|
-
rootName?: string;
|
|
12
|
-
rootAlias?: string;
|
|
13
|
-
data?: StructuredProp;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
export class Rescope extends PureContainerBase<RescopeConfig> {
|
|
17
|
-
declare bind: string;
|
|
18
|
-
declare binding: any;
|
|
19
|
-
declare rootAlias?: string;
|
|
20
|
-
declare rootName: string;
|
|
21
|
-
declare data?: any;
|
|
22
|
-
|
|
23
|
-
init() {
|
|
24
|
-
this.binding = Binding.get(this.bind);
|
|
25
|
-
if (this.rootAlias) this.rootName = this.rootAlias;
|
|
26
|
-
super.init();
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
initInstance(context: any, instance: any) {
|
|
30
|
-
instance.store = new ZoomIntoPropertyView({
|
|
31
|
-
store: instance.parentStore,
|
|
32
|
-
binding: this.binding,
|
|
33
|
-
rootName: this.rootName,
|
|
34
|
-
nestedData: isObject(this.data)
|
|
35
|
-
? new StructuredInstanceDataAccessor({ instance, data: this.data, useParentStore: true })
|
|
36
|
-
: undefined,
|
|
37
|
-
});
|
|
38
|
-
super.initInstance(context, instance);
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
applyParentStore(instance: any) {
|
|
42
|
-
instance.store.setStore(instance.parentStore);
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
Rescope.prototype.bind = "$page";
|
|
47
|
-
Rescope.prototype.rootName = "$root";
|
|
48
|
-
|
|
49
|
-
Widget.alias("rescope", Rescope);
|
|
1
|
+
import { Widget } from "./Widget";
|
|
2
|
+
import { PureContainerBase, PureContainerConfig } from "./PureContainer";
|
|
3
|
+
import { Binding } from "../data/Binding";
|
|
4
|
+
import { ZoomIntoPropertyView } from "../data/ZoomIntoPropertyView";
|
|
5
|
+
import { StructuredInstanceDataAccessor } from "./StructuredInstanceDataAccessor";
|
|
6
|
+
import { isObject } from "../util/isObject";
|
|
7
|
+
import { StructuredProp } from "./Prop";
|
|
8
|
+
|
|
9
|
+
export interface RescopeConfig extends PureContainerConfig {
|
|
10
|
+
bind: string;
|
|
11
|
+
rootName?: string;
|
|
12
|
+
rootAlias?: string;
|
|
13
|
+
data?: StructuredProp;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export class Rescope extends PureContainerBase<RescopeConfig> {
|
|
17
|
+
declare bind: string;
|
|
18
|
+
declare binding: any;
|
|
19
|
+
declare rootAlias?: string;
|
|
20
|
+
declare rootName: string;
|
|
21
|
+
declare data?: any;
|
|
22
|
+
|
|
23
|
+
init() {
|
|
24
|
+
this.binding = Binding.get(this.bind);
|
|
25
|
+
if (this.rootAlias) this.rootName = this.rootAlias;
|
|
26
|
+
super.init();
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
initInstance(context: any, instance: any) {
|
|
30
|
+
instance.store = new ZoomIntoPropertyView({
|
|
31
|
+
store: instance.parentStore,
|
|
32
|
+
binding: this.binding,
|
|
33
|
+
rootName: this.rootName,
|
|
34
|
+
nestedData: isObject(this.data)
|
|
35
|
+
? new StructuredInstanceDataAccessor({ instance, data: this.data, useParentStore: true })
|
|
36
|
+
: undefined,
|
|
37
|
+
});
|
|
38
|
+
super.initInstance(context, instance);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
applyParentStore(instance: any) {
|
|
42
|
+
instance.store.setStore(instance.parentStore);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
Rescope.prototype.bind = "$page";
|
|
47
|
+
Rescope.prototype.rootName = "$root";
|
|
48
|
+
|
|
49
|
+
Widget.alias("rescope", Rescope);
|
|
@@ -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
|
+
}
|