cx 26.0.5 → 26.0.8
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/Bar.scss +29 -0
- package/build/charts/BarGraph.scss +29 -0
- package/build/charts/BubbleGraph.scss +32 -0
- package/build/charts/Column.scss +29 -0
- package/build/charts/ColumnGraph.scss +30 -0
- package/build/charts/Gridlines.scss +25 -0
- package/build/charts/Legend.scss +50 -0
- package/build/charts/LegendEntry.scss +29 -0
- package/build/charts/LineGraph.d.ts +11 -0
- package/build/charts/LineGraph.js +1 -0
- package/build/charts/LineGraph.scss +25 -0
- package/build/charts/Marker.scss +44 -0
- package/build/charts/MarkerLine.scss +20 -0
- package/build/charts/PieChart.scss +29 -0
- package/build/charts/Range.scss +20 -0
- package/build/charts/RangeMarker.scss +17 -0
- package/build/charts/ScatterGraph.scss +24 -0
- package/build/charts/Swimlane.scss +16 -0
- package/build/charts/Swimlanes.scss +16 -0
- package/build/charts/axis/Axis.scss +23 -0
- package/build/charts/axis/CategoryAxis.scss +35 -0
- package/build/charts/axis/NumericAxis.scss +35 -0
- package/build/charts/axis/TimeAxis.scss +34 -0
- package/build/charts/axis/index.scss +5 -0
- package/build/charts/axis/variables.scss +3 -0
- package/build/charts/index.scss +22 -0
- package/build/charts/palette.scss +97 -0
- package/build/charts/variables.scss +22 -0
- package/build/data/ArrayElementView.spec.js +1 -1
- package/build/global.scss +14 -0
- package/build/hooks/store.spec.js +1 -1
- package/build/hooks/useTrigger.spec.js +1 -1
- package/build/index.scss +6 -0
- package/build/jsx-runtime.d.ts +3 -2
- package/build/svg/Svg.scss +28 -0
- package/build/svg/index.scss +9 -0
- package/build/ui/Controller.spec.js +6 -2
- package/build/ui/app/startAppLoop.d.ts +3 -2
- package/build/ui/app/startHotAppLoop.d.ts +3 -2
- package/build/ui/index.scss +2 -0
- package/build/ui/layout/ContentPlaceholder.spec.js +12 -12
- package/build/ui/layout/LabelsLeftLayout.scss +47 -0
- package/build/ui/layout/LabelsTopLayout.scss +65 -0
- package/build/ui/layout/index.scss +3 -0
- package/build/ui/layout/variables.scss +2 -0
- package/build/ui/variables.scss +2 -0
- package/build/util/addEventListenerWithOptions.d.ts +2 -2
- package/build/util/call-once.scss +7 -0
- package/build/util/index.scss +11 -0
- package/build/util/scss/add-rules.scss +40 -0
- package/build/util/scss/calc.scss +45 -0
- package/build/util/scss/call-once.scss +13 -0
- package/build/util/scss/clockwise.scss +49 -0
- package/build/util/scss/colors.scss +10 -0
- package/build/util/scss/deep-get.scss +12 -0
- package/build/util/scss/deep-merge.scss +21 -0
- package/build/util/scss/divide.scss +3 -0
- package/build/util/scss/include.scss +48 -0
- package/build/util/scss/index.scss +9 -0
- package/build/variables.scss +217 -0
- package/build/widgets/Button.scss +119 -0
- package/build/widgets/Button.variables.scss +117 -0
- package/build/widgets/CxCredit.scss +39 -0
- package/build/widgets/FlexBox.scss +148 -0
- package/build/widgets/Heading.scss +40 -0
- package/build/widgets/HighlightedSearchText.scss +20 -0
- package/build/widgets/Icon.scss +22 -0
- package/build/widgets/List.scss +93 -0
- package/build/widgets/ProgressBar.scss +51 -0
- package/build/widgets/Resizer.scss +44 -0
- package/build/widgets/Section.scss +56 -0
- package/build/widgets/animations.scss +11 -0
- package/build/widgets/drag-drop/DragClone.scss +36 -0
- package/build/widgets/drag-drop/DragHandle.scss +19 -0
- package/build/widgets/drag-drop/DragSource.scss +27 -0
- package/build/widgets/drag-drop/DropZone.scss +77 -0
- package/build/widgets/drag-drop/index.scss +4 -0
- package/build/widgets/drag-drop/variables.scss +15 -0
- package/build/widgets/form/Calendar.scss +199 -0
- package/build/widgets/form/Calendar.variables.scss +64 -0
- package/build/widgets/form/Checkbox.scss +129 -0
- package/build/widgets/form/Checkbox.variables.scss +40 -0
- package/build/widgets/form/ColorField.scss +98 -0
- package/build/widgets/form/ColorPicker.scss +285 -0
- package/build/widgets/form/ColorPicker.variables.scss +22 -0
- package/build/widgets/form/DateTimeField.scss +92 -0
- package/build/widgets/form/DateTimePicker.scss +47 -0
- package/build/widgets/form/Field.scss +164 -0
- package/build/widgets/form/HelpText.scss +24 -0
- package/build/widgets/form/Label.scss +38 -0
- package/build/widgets/form/LookupField.scss +221 -0
- package/build/widgets/form/MonthField.scss +100 -0
- package/build/widgets/form/MonthPicker.scss +125 -0
- package/build/widgets/form/NumberField.scss +63 -0
- package/build/widgets/form/Radio.scss +123 -0
- package/build/widgets/form/Radio.variables.scss +46 -0
- package/build/widgets/form/Select.scss +101 -0
- package/build/widgets/form/Slider.scss +121 -0
- package/build/widgets/form/Switch.scss +142 -0
- package/build/widgets/form/TextArea.scss +45 -0
- package/build/widgets/form/TextField.scss +57 -0
- package/build/widgets/form/UploadButton.scss +49 -0
- package/build/widgets/form/ValidationError.scss +23 -0
- package/build/widgets/form/Wheel.scss +152 -0
- package/build/widgets/form/index.scss +24 -0
- package/build/widgets/form/variables.scss +355 -0
- package/build/widgets/grid/Grid.scss +640 -0
- package/build/widgets/grid/Pagination.scss +115 -0
- package/build/widgets/grid/TreeNode.scss +90 -0
- package/build/widgets/grid/index.scss +4 -0
- package/build/widgets/grid/variables.scss +137 -0
- package/build/widgets/index.scss +16 -0
- package/build/widgets/nav/Link.scss +20 -0
- package/build/widgets/nav/Menu.scss +76 -0
- package/build/widgets/nav/Menu.variables.scss +25 -0
- package/build/widgets/nav/MenuItem.d.ts +1 -0
- package/build/widgets/nav/MenuItem.scss +130 -0
- package/build/widgets/nav/Scroller.scss +148 -0
- package/build/widgets/nav/Tab.scss +82 -0
- package/build/widgets/nav/Tab.variables.scss +84 -0
- package/build/widgets/nav/cover.scss +22 -0
- package/build/widgets/nav/index.scss +6 -0
- package/build/widgets/nav/variables.scss +27 -0
- package/build/widgets/overlay/Dropdown.scss +186 -0
- package/build/widgets/overlay/Overlay.scss +68 -0
- package/build/widgets/overlay/Toast.scss +164 -0
- package/build/widgets/overlay/Tooltip.scss +177 -0
- package/build/widgets/overlay/Window.scss +129 -0
- package/build/widgets/overlay/Window.variables.scss +62 -0
- package/build/widgets/overlay/captureMouse.scss +13 -0
- package/build/widgets/overlay/index.scss +15 -0
- package/build/widgets/overlay/variables.scss +85 -0
- package/build/widgets/variables.scss +146 -0
- package/build.js +133 -129
- package/dist/charts.js +1 -0
- package/dist/manifest.js +849 -743
- package/package.json +4 -2
- package/src/charts/Chart.ts +108 -108
- package/src/charts/LineGraph.tsx +14 -0
- 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 +62 -62
- package/src/data/createAccessorModelProxy.ts +60 -60
- 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/removeTreeNodes.ts +15 -15
- package/src/data/ops/updateArray.spec.ts +69 -69
- package/src/data/ops/updateArray.ts +31 -31
- package/src/data/ops/updateTree.ts +23 -23
- package/src/data/test-types.ts +7 -7
- package/src/hooks/useTrigger.ts +26 -26
- package/src/index.scss +6 -6
- package/src/jsx-runtime.ts +75 -72
- package/src/svg/BoundedObject.ts +101 -101
- package/src/ui/CSSHelper.ts +17 -17
- package/src/ui/ContentResolver.ts +124 -124
- package/src/ui/Controller.ts +189 -189
- 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 +868 -868
- package/src/ui/RenderingContext.ts +99 -99
- package/src/ui/Rescope.ts +49 -49
- package/src/ui/StructuredInstanceDataAccessor.ts +32 -32
- package/src/ui/VDOM.ts +34 -34
- package/src/ui/adapter/ArrayAdapter.spec.ts +55 -55
- package/src/ui/adapter/ArrayAdapter.ts +226 -226
- 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 +2 -1
- package/src/ui/app/startHotAppLoop.ts +2 -1
- package/src/ui/createFunctionalComponent.ts +65 -65
- package/src/ui/index.ts +45 -45
- package/src/ui/layout/Content.ts +30 -30
- package/src/ui/layout/FirstVisibleChildLayout.ts +60 -60
- package/src/ui/selection/KeySelection.ts +165 -165
- package/src/ui/selection/PropertySelection.ts +87 -87
- package/src/ui/selection/Selection.ts +118 -118
- 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/Sandbox.ts +103 -103
- package/src/widgets/autoFocus.ts +9 -9
- package/src/widgets/cx.ts +63 -63
- package/src/widgets/drag-drop/ops.tsx +1 -1
- package/src/widgets/grid/GridCell.ts +143 -143
- 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/nav/MenuItem.tsx +1 -0
- package/src/widgets/nav/Route.ts +142 -142
- 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/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/build/ui/PureContainer.spec.d.ts +0 -1
- package/build/ui/PureContainer.spec.js +0 -149
- package/dist/manifest.d.ts +0 -1443
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "cx",
|
|
3
|
-
"version": "26.0.
|
|
3
|
+
"version": "26.0.8",
|
|
4
4
|
"description": "Advanced JavaScript UI framework for admin and dashboard applications with ready to use grid, form and chart components.",
|
|
5
5
|
"exports": {
|
|
6
6
|
"./data/": "./build/data/",
|
|
@@ -19,7 +19,9 @@
|
|
|
19
19
|
"./charts": "./build/charts/index.js",
|
|
20
20
|
"./jsx-runtime": "./build/jsx-runtime.js",
|
|
21
21
|
"./jsx-runtime.js": "./build/jsx-runtime.js",
|
|
22
|
-
"./
|
|
22
|
+
"./jsx-dev-runtime": "./build/jsx-runtime.js",
|
|
23
|
+
"./jsx-dev-runtime.js": "./build/jsx-runtime.js",
|
|
24
|
+
"./src/": "./src/",
|
|
23
25
|
"./sass/": "./src/",
|
|
24
26
|
"./build/": "./build/",
|
|
25
27
|
"./locale/": "./build/locale/",
|
package/src/charts/Chart.ts
CHANGED
|
@@ -1,108 +1,108 @@
|
|
|
1
|
-
import { Widget, VDOM, getContent } from "../ui/Widget";
|
|
2
|
-
import { BoundedObject, BoundedObjectConfig, BoundedObjectInstance, SvgRenderingContext } from "../svg/BoundedObject";
|
|
3
|
-
import { Axis } from "./axis/Axis";
|
|
4
|
-
import type { NumericAxis } from "./axis/NumericAxis";
|
|
5
|
-
import type { CategoryAxis } from "./axis/CategoryAxis";
|
|
6
|
-
import type { TimeAxis } from "./axis/TimeAxis";
|
|
7
|
-
import { RenderingContext } from "../ui/RenderingContext";
|
|
8
|
-
import { Create } from "../util/Component";
|
|
9
|
-
|
|
10
|
-
/** Typed context interface for chart-related context properties */
|
|
11
|
-
export interface ChartRenderingContext extends SvgRenderingContext {
|
|
12
|
-
axes?: Record<string, any>;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
export interface ChartConfig extends BoundedObjectConfig {
|
|
16
|
-
/** Axis definition. Each key represent an axis, and each value hold axis configuration. */
|
|
17
|
-
axes?: Record<
|
|
18
|
-
string,
|
|
19
|
-
Create<typeof Axis> | Create<typeof NumericAxis> | Create<typeof CategoryAxis> | Create<typeof TimeAxis>
|
|
20
|
-
>;
|
|
21
|
-
|
|
22
|
-
/** Put axes over data series. */
|
|
23
|
-
axesOnTop?: boolean;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
export interface ChartInstance extends BoundedObjectInstance {
|
|
27
|
-
calculators: Record<string, any>;
|
|
28
|
-
axes: Record<string, any>;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
export class Chart extends BoundedObject<ChartConfig, ChartInstance> {
|
|
32
|
-
declare axes: Record<string, any>;
|
|
33
|
-
declare axesOnTop: boolean;
|
|
34
|
-
|
|
35
|
-
constructor(config?: ChartConfig) {
|
|
36
|
-
super(config);
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
init(): void {
|
|
40
|
-
super.init();
|
|
41
|
-
|
|
42
|
-
if (!this.axes) this.axes = {};
|
|
43
|
-
|
|
44
|
-
for (let axis in this.axes) {
|
|
45
|
-
this.axes[axis] = Axis.create(this.axes[axis]);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
explore(context: ChartRenderingContext, instance: ChartInstance): void {
|
|
50
|
-
instance.calculators = { ...context.axes };
|
|
51
|
-
|
|
52
|
-
context.push("axes", instance.calculators);
|
|
53
|
-
instance.axes = {};
|
|
54
|
-
|
|
55
|
-
//axes need to be registered before children to be processed first
|
|
56
|
-
for (let axis in this.axes) {
|
|
57
|
-
let axisInstance = instance.getChild(context, this.axes[axis]);
|
|
58
|
-
if (axisInstance.scheduleExploreIfVisible(context)) {
|
|
59
|
-
instance.axes[axis] = axisInstance;
|
|
60
|
-
instance.calculators[axis] = this.axes[axis].report(context, axisInstance);
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
super.explore(context, instance);
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
exploreCleanup(context: ChartRenderingContext, instance: ChartInstance): void {
|
|
68
|
-
context.pop("axes");
|
|
69
|
-
|
|
70
|
-
for (let axis in instance.axes) {
|
|
71
|
-
instance.axes[axis].widget.reportData(context, instance.axes[axis]);
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
prepare(context: ChartRenderingContext, instance: ChartInstance): void {
|
|
76
|
-
context.push("axes", instance.calculators);
|
|
77
|
-
super.prepare(context, instance);
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
prepareCleanup(context: ChartRenderingContext, instance: ChartInstance): void {
|
|
81
|
-
context.pop("axes");
|
|
82
|
-
super.prepareCleanup(context, instance);
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
render(context: ChartRenderingContext, instance: ChartInstance, key: string): any[] {
|
|
86
|
-
let axes = [];
|
|
87
|
-
for (let k in instance.axes) {
|
|
88
|
-
axes.push(getContent(instance.axes[k].render(context, key + "-axis-" + k)));
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
let result = [];
|
|
92
|
-
|
|
93
|
-
if (!this.axesOnTop) result.push(axes);
|
|
94
|
-
|
|
95
|
-
result.push(this.renderChildren(context, instance));
|
|
96
|
-
|
|
97
|
-
if (this.axesOnTop) result.push(axes);
|
|
98
|
-
|
|
99
|
-
return result;
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
Chart.prototype.anchors = "0 1 1 0";
|
|
104
|
-
Chart.prototype.styled = true;
|
|
105
|
-
Chart.prototype.isPureContainer = true;
|
|
106
|
-
Chart.prototype.axesOnTop = false;
|
|
107
|
-
|
|
108
|
-
Widget.alias("chart", Chart);
|
|
1
|
+
import { Widget, VDOM, getContent } from "../ui/Widget";
|
|
2
|
+
import { BoundedObject, BoundedObjectConfig, BoundedObjectInstance, SvgRenderingContext } from "../svg/BoundedObject";
|
|
3
|
+
import { Axis } from "./axis/Axis";
|
|
4
|
+
import type { NumericAxis } from "./axis/NumericAxis";
|
|
5
|
+
import type { CategoryAxis } from "./axis/CategoryAxis";
|
|
6
|
+
import type { TimeAxis } from "./axis/TimeAxis";
|
|
7
|
+
import { RenderingContext } from "../ui/RenderingContext";
|
|
8
|
+
import { Create } from "../util/Component";
|
|
9
|
+
|
|
10
|
+
/** Typed context interface for chart-related context properties */
|
|
11
|
+
export interface ChartRenderingContext extends SvgRenderingContext {
|
|
12
|
+
axes?: Record<string, any>;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export interface ChartConfig extends BoundedObjectConfig {
|
|
16
|
+
/** Axis definition. Each key represent an axis, and each value hold axis configuration. */
|
|
17
|
+
axes?: Record<
|
|
18
|
+
string,
|
|
19
|
+
Create<typeof Axis> | Create<typeof NumericAxis> | Create<typeof CategoryAxis> | Create<typeof TimeAxis>
|
|
20
|
+
>;
|
|
21
|
+
|
|
22
|
+
/** Put axes over data series. */
|
|
23
|
+
axesOnTop?: boolean;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export interface ChartInstance extends BoundedObjectInstance {
|
|
27
|
+
calculators: Record<string, any>;
|
|
28
|
+
axes: Record<string, any>;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export class Chart extends BoundedObject<ChartConfig, ChartInstance> {
|
|
32
|
+
declare axes: Record<string, any>;
|
|
33
|
+
declare axesOnTop: boolean;
|
|
34
|
+
|
|
35
|
+
constructor(config?: ChartConfig) {
|
|
36
|
+
super(config);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
init(): void {
|
|
40
|
+
super.init();
|
|
41
|
+
|
|
42
|
+
if (!this.axes) this.axes = {};
|
|
43
|
+
|
|
44
|
+
for (let axis in this.axes) {
|
|
45
|
+
this.axes[axis] = Axis.create(this.axes[axis]);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
explore(context: ChartRenderingContext, instance: ChartInstance): void {
|
|
50
|
+
instance.calculators = { ...context.axes };
|
|
51
|
+
|
|
52
|
+
context.push("axes", instance.calculators);
|
|
53
|
+
instance.axes = {};
|
|
54
|
+
|
|
55
|
+
//axes need to be registered before children to be processed first
|
|
56
|
+
for (let axis in this.axes) {
|
|
57
|
+
let axisInstance = instance.getChild(context, this.axes[axis]);
|
|
58
|
+
if (axisInstance.scheduleExploreIfVisible(context)) {
|
|
59
|
+
instance.axes[axis] = axisInstance;
|
|
60
|
+
instance.calculators[axis] = this.axes[axis].report(context, axisInstance);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
super.explore(context, instance);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
exploreCleanup(context: ChartRenderingContext, instance: ChartInstance): void {
|
|
68
|
+
context.pop("axes");
|
|
69
|
+
|
|
70
|
+
for (let axis in instance.axes) {
|
|
71
|
+
instance.axes[axis].widget.reportData(context, instance.axes[axis]);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
prepare(context: ChartRenderingContext, instance: ChartInstance): void {
|
|
76
|
+
context.push("axes", instance.calculators);
|
|
77
|
+
super.prepare(context, instance);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
prepareCleanup(context: ChartRenderingContext, instance: ChartInstance): void {
|
|
81
|
+
context.pop("axes");
|
|
82
|
+
super.prepareCleanup(context, instance);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
render(context: ChartRenderingContext, instance: ChartInstance, key: string): any[] {
|
|
86
|
+
let axes = [];
|
|
87
|
+
for (let k in instance.axes) {
|
|
88
|
+
axes.push(getContent(instance.axes[k].render(context, key + "-axis-" + k)));
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
let result = [];
|
|
92
|
+
|
|
93
|
+
if (!this.axesOnTop) result.push(axes);
|
|
94
|
+
|
|
95
|
+
result.push(this.renderChildren(context, instance));
|
|
96
|
+
|
|
97
|
+
if (this.axesOnTop) result.push(axes);
|
|
98
|
+
|
|
99
|
+
return result;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
Chart.prototype.anchors = "0 1 1 0";
|
|
104
|
+
Chart.prototype.styled = true;
|
|
105
|
+
Chart.prototype.isPureContainer = true;
|
|
106
|
+
Chart.prototype.axesOnTop = false;
|
|
107
|
+
|
|
108
|
+
Widget.alias("chart", Chart);
|
package/src/charts/LineGraph.tsx
CHANGED
|
@@ -7,6 +7,7 @@ import { Instance } from "../ui/Instance";
|
|
|
7
7
|
import { RenderingContext } from "../ui/RenderingContext";
|
|
8
8
|
import { NumberProp, BooleanProp, StringProp, RecordsProp, StyleProp } from "../ui/Prop";
|
|
9
9
|
import type { ChartRenderingContext } from "./Chart";
|
|
10
|
+
import { ClassProp } from "../ui/Prop";
|
|
10
11
|
|
|
11
12
|
interface LinePoint {
|
|
12
13
|
x: number;
|
|
@@ -88,6 +89,18 @@ export interface LineGraphConfig extends WidgetConfig {
|
|
|
88
89
|
|
|
89
90
|
/** Shape to use in legend. */
|
|
90
91
|
legendShape?: string;
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* Additional CSS classes to be applied to the field.
|
|
95
|
+
* If an object is provided, all keys with a "truthy" value will be added to the CSS class list.
|
|
96
|
+
*/
|
|
97
|
+
class?: ClassProp;
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Additional CSS classes to be applied to the field.
|
|
101
|
+
* If an object is provided, all keys with a "truthy" value will be added to the CSS class list.
|
|
102
|
+
*/
|
|
103
|
+
className?: ClassProp;
|
|
91
104
|
}
|
|
92
105
|
|
|
93
106
|
export interface LineGraphInstance extends Instance {
|
|
@@ -437,5 +450,6 @@ LineGraph.prototype.hiddenBase = false;
|
|
|
437
450
|
|
|
438
451
|
LineGraph.prototype.smooth = false;
|
|
439
452
|
LineGraph.prototype.smoothingRatio = 0.05;
|
|
453
|
+
LineGraph.prototype.styled = true;
|
|
440
454
|
|
|
441
455
|
Widget.alias("line-graph", LineGraph);
|
|
@@ -1,90 +1,90 @@
|
|
|
1
|
-
import { AugmentedViewBase } from "./AugmentedViewBase";
|
|
2
|
-
import { isArray } from "../util/isArray";
|
|
3
|
-
import { Binding } from "./Binding";
|
|
4
|
-
import { View } from "./View";
|
|
5
|
-
|
|
6
|
-
export interface ArrayElementViewConfig {
|
|
7
|
-
store: View;
|
|
8
|
-
arrayAccessor: any;
|
|
9
|
-
immutable?: boolean;
|
|
10
|
-
recordAlias?: string;
|
|
11
|
-
indexAlias?: string;
|
|
12
|
-
lengthAlias?: string;
|
|
13
|
-
hasNestedAliases?: boolean;
|
|
14
|
-
recordBinding?: any;
|
|
15
|
-
indexBinding?: any;
|
|
16
|
-
lengthBinding?: any;
|
|
17
|
-
itemIndex: number;
|
|
18
|
-
sealed?: boolean;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
export class ArrayElementView extends AugmentedViewBase {
|
|
22
|
-
declare arrayAccessor: any;
|
|
23
|
-
declare recordAlias: string;
|
|
24
|
-
declare indexAlias: string;
|
|
25
|
-
declare lengthAlias: string;
|
|
26
|
-
declare hasNestedAliases?: boolean;
|
|
27
|
-
declare recordBinding?: any;
|
|
28
|
-
declare indexBinding?: any;
|
|
29
|
-
declare lengthBinding?: any;
|
|
30
|
-
declare itemIndex: number;
|
|
31
|
-
|
|
32
|
-
constructor(config: ArrayElementViewConfig) {
|
|
33
|
-
super(config);
|
|
34
|
-
this.hasNestedAliases =
|
|
35
|
-
this.recordAlias.indexOf(".") >= 0 || this.indexAlias.indexOf(".") >= 0 || this.lengthAlias.indexOf(".") >= 0;
|
|
36
|
-
this.recordBinding = Binding.get(this.recordAlias);
|
|
37
|
-
if (this.hasNestedAliases) {
|
|
38
|
-
this.indexBinding = Binding.get(this.indexAlias);
|
|
39
|
-
this.lengthBinding = Binding.get(this.lengthAlias);
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
getExtraKeyBinding(key: string): any {
|
|
44
|
-
if (!key.startsWith(this.recordAlias)) return null;
|
|
45
|
-
if (key.length == this.recordAlias.length || key[this.recordAlias.length] == ".") return this.recordBinding;
|
|
46
|
-
return null;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
deleteExtraKeyValue(key: string): boolean {
|
|
50
|
-
if (key != this.recordAlias) throw new Error(`Field ${key} cannot be deleted.`);
|
|
51
|
-
const array = this.arrayAccessor.get(this.store.getData());
|
|
52
|
-
if (!array) return false;
|
|
53
|
-
const newArray = [...array.slice(0, this.itemIndex), ...array.slice(this.itemIndex + 1)];
|
|
54
|
-
return this.arrayAccessor.set(newArray, this.store);
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
setExtraKeyValue(key: string, value: any): boolean {
|
|
58
|
-
if (key != this.recordAlias) throw new Error(`Field ${key} is read-only.`);
|
|
59
|
-
const array = this.arrayAccessor.get(this.store.getData());
|
|
60
|
-
if (!array || value === array[this.itemIndex]) return false;
|
|
61
|
-
const newArray = [...array.slice(0, this.itemIndex), value, ...array.slice(this.itemIndex + 1)];
|
|
62
|
-
return this.arrayAccessor.set(newArray, this.store);
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
embedAugmentData(result: any, parentStoreData: any): void {
|
|
66
|
-
let array = this.arrayAccessor.get(parentStoreData);
|
|
67
|
-
if (!isArray(array)) return;
|
|
68
|
-
if (!this.hasNestedAliases) {
|
|
69
|
-
result[this.recordAlias] = array[this.itemIndex];
|
|
70
|
-
result[this.indexAlias] = this.itemIndex;
|
|
71
|
-
result[this.lengthAlias] = array.length;
|
|
72
|
-
} else {
|
|
73
|
-
let copy = result;
|
|
74
|
-
copy = this.recordBinding.set(copy, array[this.itemIndex]);
|
|
75
|
-
copy = this.indexBinding.set(copy, this.itemIndex);
|
|
76
|
-
copy = this.lengthBinding.set(copy, array.length);
|
|
77
|
-
result[this.recordBinding.parts[0]] = copy[this.recordBinding.parts[0]];
|
|
78
|
-
result[this.indexBinding.parts[0]] = copy[this.indexBinding.parts[0]];
|
|
79
|
-
result[this.lengthBinding.parts[0]] = copy[this.lengthBinding.parts[0]];
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
setIndex(itemIndex: number): void {
|
|
84
|
-
this.itemIndex = itemIndex;
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
ArrayElementView.prototype.recordAlias = "$record";
|
|
89
|
-
ArrayElementView.prototype.indexAlias = "$index";
|
|
90
|
-
ArrayElementView.prototype.lengthAlias = "$length";
|
|
1
|
+
import { AugmentedViewBase } from "./AugmentedViewBase";
|
|
2
|
+
import { isArray } from "../util/isArray";
|
|
3
|
+
import { Binding } from "./Binding";
|
|
4
|
+
import { View } from "./View";
|
|
5
|
+
|
|
6
|
+
export interface ArrayElementViewConfig {
|
|
7
|
+
store: View;
|
|
8
|
+
arrayAccessor: any;
|
|
9
|
+
immutable?: boolean;
|
|
10
|
+
recordAlias?: string;
|
|
11
|
+
indexAlias?: string;
|
|
12
|
+
lengthAlias?: string;
|
|
13
|
+
hasNestedAliases?: boolean;
|
|
14
|
+
recordBinding?: any;
|
|
15
|
+
indexBinding?: any;
|
|
16
|
+
lengthBinding?: any;
|
|
17
|
+
itemIndex: number;
|
|
18
|
+
sealed?: boolean;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export class ArrayElementView extends AugmentedViewBase {
|
|
22
|
+
declare arrayAccessor: any;
|
|
23
|
+
declare recordAlias: string;
|
|
24
|
+
declare indexAlias: string;
|
|
25
|
+
declare lengthAlias: string;
|
|
26
|
+
declare hasNestedAliases?: boolean;
|
|
27
|
+
declare recordBinding?: any;
|
|
28
|
+
declare indexBinding?: any;
|
|
29
|
+
declare lengthBinding?: any;
|
|
30
|
+
declare itemIndex: number;
|
|
31
|
+
|
|
32
|
+
constructor(config: ArrayElementViewConfig) {
|
|
33
|
+
super(config);
|
|
34
|
+
this.hasNestedAliases =
|
|
35
|
+
this.recordAlias.indexOf(".") >= 0 || this.indexAlias.indexOf(".") >= 0 || this.lengthAlias.indexOf(".") >= 0;
|
|
36
|
+
this.recordBinding = Binding.get(this.recordAlias);
|
|
37
|
+
if (this.hasNestedAliases) {
|
|
38
|
+
this.indexBinding = Binding.get(this.indexAlias);
|
|
39
|
+
this.lengthBinding = Binding.get(this.lengthAlias);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
getExtraKeyBinding(key: string): any {
|
|
44
|
+
if (!key.startsWith(this.recordAlias)) return null;
|
|
45
|
+
if (key.length == this.recordAlias.length || key[this.recordAlias.length] == ".") return this.recordBinding;
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
deleteExtraKeyValue(key: string): boolean {
|
|
50
|
+
if (key != this.recordAlias) throw new Error(`Field ${key} cannot be deleted.`);
|
|
51
|
+
const array = this.arrayAccessor.get(this.store.getData());
|
|
52
|
+
if (!array) return false;
|
|
53
|
+
const newArray = [...array.slice(0, this.itemIndex), ...array.slice(this.itemIndex + 1)];
|
|
54
|
+
return this.arrayAccessor.set(newArray, this.store);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
setExtraKeyValue(key: string, value: any): boolean {
|
|
58
|
+
if (key != this.recordAlias) throw new Error(`Field ${key} is read-only.`);
|
|
59
|
+
const array = this.arrayAccessor.get(this.store.getData());
|
|
60
|
+
if (!array || value === array[this.itemIndex]) return false;
|
|
61
|
+
const newArray = [...array.slice(0, this.itemIndex), value, ...array.slice(this.itemIndex + 1)];
|
|
62
|
+
return this.arrayAccessor.set(newArray, this.store);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
embedAugmentData(result: any, parentStoreData: any): void {
|
|
66
|
+
let array = this.arrayAccessor.get(parentStoreData);
|
|
67
|
+
if (!isArray(array)) return;
|
|
68
|
+
if (!this.hasNestedAliases) {
|
|
69
|
+
result[this.recordAlias] = array[this.itemIndex];
|
|
70
|
+
result[this.indexAlias] = this.itemIndex;
|
|
71
|
+
result[this.lengthAlias] = array.length;
|
|
72
|
+
} else {
|
|
73
|
+
let copy = result;
|
|
74
|
+
copy = this.recordBinding.set(copy, array[this.itemIndex]);
|
|
75
|
+
copy = this.indexBinding.set(copy, this.itemIndex);
|
|
76
|
+
copy = this.lengthBinding.set(copy, array.length);
|
|
77
|
+
result[this.recordBinding.parts[0]] = copy[this.recordBinding.parts[0]];
|
|
78
|
+
result[this.indexBinding.parts[0]] = copy[this.indexBinding.parts[0]];
|
|
79
|
+
result[this.lengthBinding.parts[0]] = copy[this.lengthBinding.parts[0]];
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
setIndex(itemIndex: number): void {
|
|
84
|
+
this.itemIndex = itemIndex;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
ArrayElementView.prototype.recordAlias = "$record";
|
|
89
|
+
ArrayElementView.prototype.indexAlias = "$index";
|
|
90
|
+
ArrayElementView.prototype.lengthAlias = "$length";
|
|
@@ -1,88 +1,88 @@
|
|
|
1
|
-
import { View, ViewConfig } from "./View";
|
|
2
|
-
import { Binding } from "./Binding";
|
|
3
|
-
|
|
4
|
-
export interface AugmentedViewBaseConfig extends ViewConfig {
|
|
5
|
-
store: View<any>;
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
export class AugmentedViewBase<D = any> extends View<D> {
|
|
9
|
-
declare immutable: boolean;
|
|
10
|
-
declare store: View;
|
|
11
|
-
|
|
12
|
-
constructor(config: AugmentedViewBaseConfig) {
|
|
13
|
-
super(config);
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
getData() {
|
|
17
|
-
if (this.sealed && this.meta.version === this.cache.version && this.meta === this.store.meta)
|
|
18
|
-
return this.cache.result;
|
|
19
|
-
let parentStoreData = this.store.getData();
|
|
20
|
-
let result = this.getBaseData(parentStoreData);
|
|
21
|
-
this.embedAugmentData(result, parentStoreData);
|
|
22
|
-
this.cache.result = result;
|
|
23
|
-
this.cache.parentStoreData = parentStoreData;
|
|
24
|
-
this.cache.version = this.meta.version;
|
|
25
|
-
this.meta = this.store.meta;
|
|
26
|
-
return this.cache.result;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
protected getBaseData(parentStoreData: any): any {
|
|
30
|
-
if (this.sealed || this.immutable || this.store.sealed) return { ...parentStoreData };
|
|
31
|
-
return parentStoreData;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
protected embedAugmentData(result: any, parentStoreData: any): void {
|
|
35
|
-
throw new Error("abstract");
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
protected isExtraKey(key: string): boolean {
|
|
39
|
-
throw new Error("abstract");
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
// Stores which need to support nested aliases should override this method
|
|
43
|
-
protected getExtraKeyBinding(key: string): any {
|
|
44
|
-
let binding = Binding.get(key);
|
|
45
|
-
return this.isExtraKey(binding.parts[0]) ? Binding.get(binding.parts[0]) : null;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
protected setExtraKeyValue(key: string, value: any): boolean {
|
|
49
|
-
throw new Error("abstract");
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
protected deleteExtraKeyValue(key: string): boolean {
|
|
53
|
-
throw new Error("abstract");
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
setItem(path: string, value: any): boolean {
|
|
57
|
-
let extraKeyBinding = this.getExtraKeyBinding(path);
|
|
58
|
-
if (extraKeyBinding) {
|
|
59
|
-
let binding = Binding.get(path);
|
|
60
|
-
let newValue = value;
|
|
61
|
-
if (binding.parts.length > extraKeyBinding.parts.length) {
|
|
62
|
-
let data = {};
|
|
63
|
-
this.embedAugmentData(data, this.store.getData());
|
|
64
|
-
let binding = Binding.get(path);
|
|
65
|
-
data = binding.set(data, value);
|
|
66
|
-
newValue = extraKeyBinding.value(data);
|
|
67
|
-
}
|
|
68
|
-
return this.setExtraKeyValue(extraKeyBinding.path, newValue);
|
|
69
|
-
}
|
|
70
|
-
return super.setItem(path, value);
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
deleteItem(path: string): boolean {
|
|
74
|
-
let extraKeyBinding = this.getExtraKeyBinding(path);
|
|
75
|
-
if (extraKeyBinding) {
|
|
76
|
-
if (path == extraKeyBinding.path) return this.deleteExtraKeyValue(extraKeyBinding.path);
|
|
77
|
-
let data = {};
|
|
78
|
-
this.embedAugmentData(data, this.store.getData());
|
|
79
|
-
let binding = Binding.get(path);
|
|
80
|
-
data = binding.delete(data);
|
|
81
|
-
let newValue = extraKeyBinding.value(data);
|
|
82
|
-
return this.setExtraKeyValue(extraKeyBinding.path, newValue);
|
|
83
|
-
}
|
|
84
|
-
return super.deleteItem(path);
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
AugmentedViewBase.prototype.immutable = false;
|
|
1
|
+
import { View, ViewConfig } from "./View";
|
|
2
|
+
import { Binding } from "./Binding";
|
|
3
|
+
|
|
4
|
+
export interface AugmentedViewBaseConfig extends ViewConfig {
|
|
5
|
+
store: View<any>;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export class AugmentedViewBase<D = any> extends View<D> {
|
|
9
|
+
declare immutable: boolean;
|
|
10
|
+
declare store: View;
|
|
11
|
+
|
|
12
|
+
constructor(config: AugmentedViewBaseConfig) {
|
|
13
|
+
super(config);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
getData() {
|
|
17
|
+
if (this.sealed && this.meta.version === this.cache.version && this.meta === this.store.meta)
|
|
18
|
+
return this.cache.result;
|
|
19
|
+
let parentStoreData = this.store.getData();
|
|
20
|
+
let result = this.getBaseData(parentStoreData);
|
|
21
|
+
this.embedAugmentData(result, parentStoreData);
|
|
22
|
+
this.cache.result = result;
|
|
23
|
+
this.cache.parentStoreData = parentStoreData;
|
|
24
|
+
this.cache.version = this.meta.version;
|
|
25
|
+
this.meta = this.store.meta;
|
|
26
|
+
return this.cache.result;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
protected getBaseData(parentStoreData: any): any {
|
|
30
|
+
if (this.sealed || this.immutable || this.store.sealed) return { ...parentStoreData };
|
|
31
|
+
return parentStoreData;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
protected embedAugmentData(result: any, parentStoreData: any): void {
|
|
35
|
+
throw new Error("abstract");
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
protected isExtraKey(key: string): boolean {
|
|
39
|
+
throw new Error("abstract");
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
// Stores which need to support nested aliases should override this method
|
|
43
|
+
protected getExtraKeyBinding(key: string): any {
|
|
44
|
+
let binding = Binding.get(key);
|
|
45
|
+
return this.isExtraKey(binding.parts[0]) ? Binding.get(binding.parts[0]) : null;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
protected setExtraKeyValue(key: string, value: any): boolean {
|
|
49
|
+
throw new Error("abstract");
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
protected deleteExtraKeyValue(key: string): boolean {
|
|
53
|
+
throw new Error("abstract");
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
setItem(path: string, value: any): boolean {
|
|
57
|
+
let extraKeyBinding = this.getExtraKeyBinding(path);
|
|
58
|
+
if (extraKeyBinding) {
|
|
59
|
+
let binding = Binding.get(path);
|
|
60
|
+
let newValue = value;
|
|
61
|
+
if (binding.parts.length > extraKeyBinding.parts.length) {
|
|
62
|
+
let data = {};
|
|
63
|
+
this.embedAugmentData(data, this.store.getData());
|
|
64
|
+
let binding = Binding.get(path);
|
|
65
|
+
data = binding.set(data, value);
|
|
66
|
+
newValue = extraKeyBinding.value(data);
|
|
67
|
+
}
|
|
68
|
+
return this.setExtraKeyValue(extraKeyBinding.path, newValue);
|
|
69
|
+
}
|
|
70
|
+
return super.setItem(path, value);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
deleteItem(path: string): boolean {
|
|
74
|
+
let extraKeyBinding = this.getExtraKeyBinding(path);
|
|
75
|
+
if (extraKeyBinding) {
|
|
76
|
+
if (path == extraKeyBinding.path) return this.deleteExtraKeyValue(extraKeyBinding.path);
|
|
77
|
+
let data = {};
|
|
78
|
+
this.embedAugmentData(data, this.store.getData());
|
|
79
|
+
let binding = Binding.get(path);
|
|
80
|
+
data = binding.delete(data);
|
|
81
|
+
let newValue = extraKeyBinding.value(data);
|
|
82
|
+
return this.setExtraKeyValue(extraKeyBinding.path, newValue);
|
|
83
|
+
}
|
|
84
|
+
return super.deleteItem(path);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
AugmentedViewBase.prototype.immutable = false;
|