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
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "cx",
|
|
3
|
-
"version": "26.
|
|
3
|
+
"version": "26.1.1",
|
|
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": {
|
|
@@ -73,9 +73,11 @@
|
|
|
73
73
|
"route-parser": "^0.0.5"
|
|
74
74
|
},
|
|
75
75
|
"peerDependencies": {
|
|
76
|
-
"@types/react": "
|
|
77
|
-
"react": "
|
|
78
|
-
"react
|
|
76
|
+
"@types/react": ">=18",
|
|
77
|
+
"@types/react-dom": ">=18",
|
|
78
|
+
"cx-react": ">=26",
|
|
79
|
+
"react": ">=18",
|
|
80
|
+
"react-dom": ">=18"
|
|
79
81
|
},
|
|
80
82
|
"repository": {
|
|
81
83
|
"type": "git",
|
|
@@ -84,10 +86,11 @@
|
|
|
84
86
|
"devDependencies": {
|
|
85
87
|
"@types/jest": "^30.0.0",
|
|
86
88
|
"@types/mocha": "^10.0.10",
|
|
87
|
-
"@types/node": "^
|
|
88
|
-
"@types/react-dom": "^
|
|
89
|
-
"@types/react-test-renderer": "^
|
|
90
|
-
"
|
|
89
|
+
"@types/node": "^25.0.3",
|
|
90
|
+
"@types/react-dom": "^19.2.3",
|
|
91
|
+
"@types/react-test-renderer": "^19.1.0",
|
|
92
|
+
"mocha": "^11.7.5",
|
|
93
|
+
"react-test-renderer": "^19.2.3",
|
|
91
94
|
"ts-mocha": "^11.1.0",
|
|
92
95
|
"ts-node": "^10.9.2",
|
|
93
96
|
"tsconfig-paths": "^4.2.0",
|
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/core.d.ts
CHANGED
|
@@ -1,182 +1,182 @@
|
|
|
1
|
-
export = Cx;
|
|
2
|
-
export as namespace Cx;
|
|
3
|
-
|
|
4
|
-
import * as React from "react";
|
|
5
|
-
import { Instance } from "./ui/Instance";
|
|
6
|
-
import { RenderingContext } from "./ui/RenderingContext";
|
|
7
|
-
import { AccessorChain as AccessorChainType } from "./data/createAccessorModelProxy";
|
|
8
|
-
import { Selector as SelectorType } from "./data/Selector";
|
|
9
|
-
import type {
|
|
10
|
-
Bind as BindType,
|
|
11
|
-
Tpl as TplType,
|
|
12
|
-
Expr as ExprType,
|
|
13
|
-
Binding as BindingType,
|
|
14
|
-
GetSet as GetSetType,
|
|
15
|
-
Prop as PropType,
|
|
16
|
-
StructuredSelector as StructuredSelectorType,
|
|
17
|
-
DataRecord,
|
|
18
|
-
Config as ConfigType,
|
|
19
|
-
StructuredProp as StructuredPropType,
|
|
20
|
-
StringProp as StringPropType,
|
|
21
|
-
StyleProp as StylePropType,
|
|
22
|
-
NumberProp as NumberPropType,
|
|
23
|
-
BooleanProp as BooleanPropType,
|
|
24
|
-
ClassProp as ClassPropType,
|
|
25
|
-
RecordsProp as RecordsPropType,
|
|
26
|
-
SortersProp as SortersPropType,
|
|
27
|
-
UnknownProp as UnknownPropType,
|
|
28
|
-
RecordAlias as RecordAliasType,
|
|
29
|
-
SortDirection as SortDirectionType,
|
|
30
|
-
Sorter as SorterType,
|
|
31
|
-
CollatorOptions as CollatorOptionsType,
|
|
32
|
-
} from "./ui/Prop";
|
|
33
|
-
|
|
34
|
-
/** @deprecated */
|
|
35
|
-
declare namespace Cx {
|
|
36
|
-
// Re-export AccessorChain type from createAccessorModelProxy
|
|
37
|
-
type AccessorChain<M> = AccessorChainType<M>;
|
|
38
|
-
|
|
39
|
-
// Re-export Selector type from data/Selector
|
|
40
|
-
type Selector<T> = SelectorType<T>;
|
|
41
|
-
|
|
42
|
-
// Re-export binding types from Prop.ts
|
|
43
|
-
type Bind = BindType;
|
|
44
|
-
type Tpl = TplType;
|
|
45
|
-
type Expr = ExprType;
|
|
46
|
-
type Binding = BindingType;
|
|
47
|
-
type GetSet<T> = GetSetType<T>;
|
|
48
|
-
|
|
49
|
-
// Re-export types from Prop.ts
|
|
50
|
-
type Prop<T> = PropType<T>;
|
|
51
|
-
|
|
52
|
-
interface StructuredSelector extends StructuredSelectorType {}
|
|
53
|
-
|
|
54
|
-
interface Record extends DataRecord {}
|
|
55
|
-
|
|
56
|
-
interface Config extends ConfigType {}
|
|
57
|
-
|
|
58
|
-
interface StructuredProp extends StructuredPropType {}
|
|
59
|
-
|
|
60
|
-
type StringProp = StringPropType;
|
|
61
|
-
type StyleProp = StylePropType;
|
|
62
|
-
type NumberProp = NumberPropType;
|
|
63
|
-
type BooleanProp = BooleanPropType;
|
|
64
|
-
type ClassProp = ClassPropType;
|
|
65
|
-
type RecordsProp = RecordsPropType;
|
|
66
|
-
type SortersProp = SortersPropType;
|
|
67
|
-
type UnknownProp = UnknownPropType;
|
|
68
|
-
|
|
69
|
-
type RecordAlias = RecordAliasType;
|
|
70
|
-
|
|
71
|
-
/** @deprecated */
|
|
72
|
-
interface WidgetProps {
|
|
73
|
-
/** Inner layout used to display children inside the widget. */
|
|
74
|
-
layout?: any;
|
|
75
|
-
|
|
76
|
-
/** Outer (wrapper) layout used to display the widget in. */
|
|
77
|
-
outerLayout?: any;
|
|
78
|
-
|
|
79
|
-
/** Name of the ContentPlaceholder that should be used to display the widget. */
|
|
80
|
-
putInto?: string;
|
|
81
|
-
|
|
82
|
-
/** Name of the ContentPlaceholder that should be used to display the widget. */
|
|
83
|
-
contentFor?: string;
|
|
84
|
-
|
|
85
|
-
/** Controller. */
|
|
86
|
-
controller?: any;
|
|
87
|
-
|
|
88
|
-
/** Visibility of the widget. Defaults to `true`. */
|
|
89
|
-
visible?: BooleanProp;
|
|
90
|
-
|
|
91
|
-
/** Visibility of the widget. Defaults to `true`. */
|
|
92
|
-
if?: BooleanProp;
|
|
93
|
-
|
|
94
|
-
/** Appearance modifier. For example, mod="big" will add the CSS class `.cxm-big` to the block element. */
|
|
95
|
-
mod?: StringProp | Prop<string[]> | StructuredProp;
|
|
96
|
-
|
|
97
|
-
/** Cache render output. Default is `true`. */
|
|
98
|
-
memoize?: BooleanProp;
|
|
99
|
-
|
|
100
|
-
/** Widget supports class, className and style attributes. */
|
|
101
|
-
styled?: boolean;
|
|
102
|
-
|
|
103
|
-
/** Key that will be used as the key when rendering the React component. */
|
|
104
|
-
vdomKey?: string;
|
|
105
|
-
|
|
106
|
-
onExplore?(context?: any, instance?: any): void;
|
|
107
|
-
|
|
108
|
-
onPrepare?(context?: any, instance?: any): void;
|
|
109
|
-
|
|
110
|
-
onCleanup?(context?: any, instance?: any): void;
|
|
111
|
-
|
|
112
|
-
onDestroy?(): void;
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
/** @deprecated */
|
|
116
|
-
interface PureContainerProps extends WidgetProps {
|
|
117
|
-
/** Keep whitespace in text based children. Default is `false`. See also `trimWhitespace`. */
|
|
118
|
-
ws?: boolean;
|
|
119
|
-
|
|
120
|
-
/** Remove all whitespace in text based children. Default is `true`. See also `preserveWhitespace`. */
|
|
121
|
-
trimWhitespace?: boolean;
|
|
122
|
-
|
|
123
|
-
/** Keep whitespace in text based children. Default is `false`. See also `trimWhitespace`. */
|
|
124
|
-
preserveWhitespace?: boolean;
|
|
125
|
-
|
|
126
|
-
/** List of child elements. */
|
|
127
|
-
items?: any;
|
|
128
|
-
|
|
129
|
-
/** List of child elements. */
|
|
130
|
-
children?: React.ReactNode;
|
|
131
|
-
|
|
132
|
-
plainText?: boolean;
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
/** @deprecated */
|
|
136
|
-
interface StyledContainerProps extends PureContainerProps {
|
|
137
|
-
/**
|
|
138
|
-
* Additional CSS classes to be applied to the element.
|
|
139
|
-
* If an object is provided, all keys with a "truthy" value will be added to the CSS class list.
|
|
140
|
-
*/
|
|
141
|
-
class?: ClassProp;
|
|
142
|
-
|
|
143
|
-
/**
|
|
144
|
-
* Additional CSS classes to be applied to the element.
|
|
145
|
-
* If an object is provided, all keys with a "truthy" value will be added to the CSS class list.
|
|
146
|
-
*/
|
|
147
|
-
className?: ClassProp;
|
|
148
|
-
|
|
149
|
-
/** Style object applied to the element */
|
|
150
|
-
style?: StyleProp;
|
|
151
|
-
|
|
152
|
-
/** Style object applied to the element */
|
|
153
|
-
styles?: StyleProp;
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
/** @deprecated */
|
|
157
|
-
interface HtmlElementProps extends StyledContainerProps {
|
|
158
|
-
/** Id of the element */
|
|
159
|
-
id?: Cx.StringProp | Cx.NumberProp;
|
|
160
|
-
|
|
161
|
-
/** Inner text contents. */
|
|
162
|
-
text?: Cx.StringProp | Cx.NumberProp;
|
|
163
|
-
|
|
164
|
-
/** Tooltip configuration. */
|
|
165
|
-
tooltip?: StringProp | StructuredProp;
|
|
166
|
-
|
|
167
|
-
// onMouseDown?: string | ((event: MouseEvent, instance: any) => void);
|
|
168
|
-
// onMouseMove?: string | ((event: MouseEvent, instance: any) => void);
|
|
169
|
-
// onMouseUp?: string | ((event: MouseEvent, instance: any) => void);
|
|
170
|
-
// onTouchStart?: string | ((event: TouchEvent, instance: any) => void);
|
|
171
|
-
// onTouchMove?: string | ((event: TouchEvent, instance: any) => void);
|
|
172
|
-
// onTouchEnd?: string | ((event: TouchEvent, instance: any) => void);
|
|
173
|
-
// onClick?: string | ((event: MouseEvent, instance: any) => void);
|
|
174
|
-
// onContextMenu?: string | ((event: MouseEvent, instance: any) => void);
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
type SortDirection = SortDirectionType;
|
|
178
|
-
|
|
179
|
-
interface Sorter extends SorterType {}
|
|
180
|
-
|
|
181
|
-
interface CollatorOptions extends CollatorOptionsType {}
|
|
182
|
-
}
|
|
1
|
+
export = Cx;
|
|
2
|
+
export as namespace Cx;
|
|
3
|
+
|
|
4
|
+
import * as React from "react";
|
|
5
|
+
import { Instance } from "./ui/Instance";
|
|
6
|
+
import { RenderingContext } from "./ui/RenderingContext";
|
|
7
|
+
import { AccessorChain as AccessorChainType } from "./data/createAccessorModelProxy";
|
|
8
|
+
import { Selector as SelectorType } from "./data/Selector";
|
|
9
|
+
import type {
|
|
10
|
+
Bind as BindType,
|
|
11
|
+
Tpl as TplType,
|
|
12
|
+
Expr as ExprType,
|
|
13
|
+
Binding as BindingType,
|
|
14
|
+
GetSet as GetSetType,
|
|
15
|
+
Prop as PropType,
|
|
16
|
+
StructuredSelector as StructuredSelectorType,
|
|
17
|
+
DataRecord,
|
|
18
|
+
Config as ConfigType,
|
|
19
|
+
StructuredProp as StructuredPropType,
|
|
20
|
+
StringProp as StringPropType,
|
|
21
|
+
StyleProp as StylePropType,
|
|
22
|
+
NumberProp as NumberPropType,
|
|
23
|
+
BooleanProp as BooleanPropType,
|
|
24
|
+
ClassProp as ClassPropType,
|
|
25
|
+
RecordsProp as RecordsPropType,
|
|
26
|
+
SortersProp as SortersPropType,
|
|
27
|
+
UnknownProp as UnknownPropType,
|
|
28
|
+
RecordAlias as RecordAliasType,
|
|
29
|
+
SortDirection as SortDirectionType,
|
|
30
|
+
Sorter as SorterType,
|
|
31
|
+
CollatorOptions as CollatorOptionsType,
|
|
32
|
+
} from "./ui/Prop";
|
|
33
|
+
|
|
34
|
+
/** @deprecated */
|
|
35
|
+
declare namespace Cx {
|
|
36
|
+
// Re-export AccessorChain type from createAccessorModelProxy
|
|
37
|
+
type AccessorChain<M> = AccessorChainType<M>;
|
|
38
|
+
|
|
39
|
+
// Re-export Selector type from data/Selector
|
|
40
|
+
type Selector<T> = SelectorType<T>;
|
|
41
|
+
|
|
42
|
+
// Re-export binding types from Prop.ts
|
|
43
|
+
type Bind = BindType;
|
|
44
|
+
type Tpl = TplType;
|
|
45
|
+
type Expr = ExprType;
|
|
46
|
+
type Binding = BindingType;
|
|
47
|
+
type GetSet<T> = GetSetType<T>;
|
|
48
|
+
|
|
49
|
+
// Re-export types from Prop.ts
|
|
50
|
+
type Prop<T> = PropType<T>;
|
|
51
|
+
|
|
52
|
+
interface StructuredSelector extends StructuredSelectorType {}
|
|
53
|
+
|
|
54
|
+
interface Record extends DataRecord {}
|
|
55
|
+
|
|
56
|
+
interface Config extends ConfigType {}
|
|
57
|
+
|
|
58
|
+
interface StructuredProp extends StructuredPropType {}
|
|
59
|
+
|
|
60
|
+
type StringProp = StringPropType;
|
|
61
|
+
type StyleProp = StylePropType;
|
|
62
|
+
type NumberProp = NumberPropType;
|
|
63
|
+
type BooleanProp = BooleanPropType;
|
|
64
|
+
type ClassProp = ClassPropType;
|
|
65
|
+
type RecordsProp = RecordsPropType;
|
|
66
|
+
type SortersProp = SortersPropType;
|
|
67
|
+
type UnknownProp = UnknownPropType;
|
|
68
|
+
|
|
69
|
+
type RecordAlias = RecordAliasType;
|
|
70
|
+
|
|
71
|
+
/** @deprecated */
|
|
72
|
+
interface WidgetProps {
|
|
73
|
+
/** Inner layout used to display children inside the widget. */
|
|
74
|
+
layout?: any;
|
|
75
|
+
|
|
76
|
+
/** Outer (wrapper) layout used to display the widget in. */
|
|
77
|
+
outerLayout?: any;
|
|
78
|
+
|
|
79
|
+
/** Name of the ContentPlaceholder that should be used to display the widget. */
|
|
80
|
+
putInto?: string;
|
|
81
|
+
|
|
82
|
+
/** Name of the ContentPlaceholder that should be used to display the widget. */
|
|
83
|
+
contentFor?: string;
|
|
84
|
+
|
|
85
|
+
/** Controller. */
|
|
86
|
+
controller?: any;
|
|
87
|
+
|
|
88
|
+
/** Visibility of the widget. Defaults to `true`. */
|
|
89
|
+
visible?: BooleanProp;
|
|
90
|
+
|
|
91
|
+
/** Visibility of the widget. Defaults to `true`. */
|
|
92
|
+
if?: BooleanProp;
|
|
93
|
+
|
|
94
|
+
/** Appearance modifier. For example, mod="big" will add the CSS class `.cxm-big` to the block element. */
|
|
95
|
+
mod?: StringProp | Prop<string[]> | StructuredProp;
|
|
96
|
+
|
|
97
|
+
/** Cache render output. Default is `true`. */
|
|
98
|
+
memoize?: BooleanProp;
|
|
99
|
+
|
|
100
|
+
/** Widget supports class, className and style attributes. */
|
|
101
|
+
styled?: boolean;
|
|
102
|
+
|
|
103
|
+
/** Key that will be used as the key when rendering the React component. */
|
|
104
|
+
vdomKey?: string;
|
|
105
|
+
|
|
106
|
+
onExplore?(context?: any, instance?: any): void;
|
|
107
|
+
|
|
108
|
+
onPrepare?(context?: any, instance?: any): void;
|
|
109
|
+
|
|
110
|
+
onCleanup?(context?: any, instance?: any): void;
|
|
111
|
+
|
|
112
|
+
onDestroy?(): void;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/** @deprecated */
|
|
116
|
+
interface PureContainerProps extends WidgetProps {
|
|
117
|
+
/** Keep whitespace in text based children. Default is `false`. See also `trimWhitespace`. */
|
|
118
|
+
ws?: boolean;
|
|
119
|
+
|
|
120
|
+
/** Remove all whitespace in text based children. Default is `true`. See also `preserveWhitespace`. */
|
|
121
|
+
trimWhitespace?: boolean;
|
|
122
|
+
|
|
123
|
+
/** Keep whitespace in text based children. Default is `false`. See also `trimWhitespace`. */
|
|
124
|
+
preserveWhitespace?: boolean;
|
|
125
|
+
|
|
126
|
+
/** List of child elements. */
|
|
127
|
+
items?: any;
|
|
128
|
+
|
|
129
|
+
/** List of child elements. */
|
|
130
|
+
children?: React.ReactNode;
|
|
131
|
+
|
|
132
|
+
plainText?: boolean;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/** @deprecated */
|
|
136
|
+
interface StyledContainerProps extends PureContainerProps {
|
|
137
|
+
/**
|
|
138
|
+
* Additional CSS classes to be applied to the element.
|
|
139
|
+
* If an object is provided, all keys with a "truthy" value will be added to the CSS class list.
|
|
140
|
+
*/
|
|
141
|
+
class?: ClassProp;
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* Additional CSS classes to be applied to the element.
|
|
145
|
+
* If an object is provided, all keys with a "truthy" value will be added to the CSS class list.
|
|
146
|
+
*/
|
|
147
|
+
className?: ClassProp;
|
|
148
|
+
|
|
149
|
+
/** Style object applied to the element */
|
|
150
|
+
style?: StyleProp;
|
|
151
|
+
|
|
152
|
+
/** Style object applied to the element */
|
|
153
|
+
styles?: StyleProp;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
/** @deprecated */
|
|
157
|
+
interface HtmlElementProps extends StyledContainerProps {
|
|
158
|
+
/** Id of the element */
|
|
159
|
+
id?: Cx.StringProp | Cx.NumberProp;
|
|
160
|
+
|
|
161
|
+
/** Inner text contents. */
|
|
162
|
+
text?: Cx.StringProp | Cx.NumberProp;
|
|
163
|
+
|
|
164
|
+
/** Tooltip configuration. */
|
|
165
|
+
tooltip?: StringProp | StructuredProp;
|
|
166
|
+
|
|
167
|
+
// onMouseDown?: string | ((event: MouseEvent, instance: any) => void);
|
|
168
|
+
// onMouseMove?: string | ((event: MouseEvent, instance: any) => void);
|
|
169
|
+
// onMouseUp?: string | ((event: MouseEvent, instance: any) => void);
|
|
170
|
+
// onTouchStart?: string | ((event: TouchEvent, instance: any) => void);
|
|
171
|
+
// onTouchMove?: string | ((event: TouchEvent, instance: any) => void);
|
|
172
|
+
// onTouchEnd?: string | ((event: TouchEvent, instance: any) => void);
|
|
173
|
+
// onClick?: string | ((event: MouseEvent, instance: any) => void);
|
|
174
|
+
// onContextMenu?: string | ((event: MouseEvent, instance: any) => void);
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
type SortDirection = SortDirectionType;
|
|
178
|
+
|
|
179
|
+
interface Sorter extends SorterType {}
|
|
180
|
+
|
|
181
|
+
interface CollatorOptions extends CollatorOptionsType {}
|
|
182
|
+
}
|