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.
Files changed (263) hide show
  1. package/build/ui/VDOM.d.ts +1 -20
  2. package/build/ui/VDOM.js +1 -3
  3. package/build/ui/Widget.d.ts +1 -1
  4. package/build/ui/Widget.js +0 -5
  5. package/build/ui/app/startAppLoop.js +2 -10
  6. package/build/util/Component.js +5 -0
  7. package/build/util/test/createTestRenderer.d.ts +3 -1
  8. package/build/util/test/createTestRenderer.js +8 -2
  9. package/build/widgets/form/Checkbox.d.ts +0 -1
  10. package/build/widgets/form/Checkbox.js +1 -0
  11. package/build/widgets/form/ColorField.d.ts +0 -1
  12. package/build/widgets/form/ColorField.js +2 -2
  13. package/build/widgets/form/DateTimeField.d.ts +0 -2
  14. package/build/widgets/form/DateTimeField.js +1 -0
  15. package/build/widgets/form/DateTimePicker.d.ts +0 -2
  16. package/build/widgets/form/DateTimePicker.js +1 -0
  17. package/build/widgets/form/Radio.d.ts +0 -1
  18. package/build/widgets/form/Slider.js +9 -1
  19. package/build/widgets/form/Switch.d.ts +0 -1
  20. package/build/widgets/form/Switch.js +1 -1
  21. package/build/widgets/form/Wheel.d.ts +0 -1
  22. package/build/widgets/grid/Grid.d.ts +0 -2
  23. package/build/widgets/grid/GridCellEditor.js +3 -1
  24. package/build/widgets/icons/calendar.js +4 -3
  25. package/build/widgets/icons/check.js +2 -2
  26. package/build/widgets/icons/clear.js +2 -2
  27. package/build/widgets/icons/close.js +2 -2
  28. package/build/widgets/icons/cx.js +2 -2
  29. package/build/widgets/icons/drop-down.js +2 -2
  30. package/build/widgets/icons/file.js +2 -2
  31. package/build/widgets/icons/folder-open.js +2 -2
  32. package/build/widgets/icons/folder.js +2 -2
  33. package/build/widgets/icons/forward.js +2 -2
  34. package/build/widgets/icons/loading.js +2 -2
  35. package/build/widgets/icons/menu.js +2 -2
  36. package/build/widgets/icons/pixel-picker.js +2 -2
  37. package/build/widgets/icons/search.js +2 -2
  38. package/build/widgets/icons/sort-asc.js +2 -2
  39. package/build/widgets/icons/square.js +2 -2
  40. package/build/widgets/overlay/Overlay.d.ts +3 -0
  41. package/build/widgets/overlay/Overlay.js +3 -2
  42. package/dist/manifest.js +867 -867
  43. package/dist/ui.js +4 -18
  44. package/dist/util.js +4 -0
  45. package/dist/widgets.js +395 -319
  46. package/package.json +11 -8
  47. package/src/charts/Chart.ts +108 -108
  48. package/src/core.d.ts +182 -182
  49. package/src/data/Expression.spec.ts +229 -229
  50. package/src/data/Expression.ts +233 -233
  51. package/src/data/Grouper.ts +158 -158
  52. package/src/data/Selector.ts +10 -10
  53. package/src/data/StringTemplate.spec.ts +132 -132
  54. package/src/data/StructuredSelector.ts +146 -146
  55. package/src/data/ZoomIntoPropertyView.spec.ts +64 -64
  56. package/src/data/comparer.ts +78 -78
  57. package/src/data/computable.spec.ts +87 -87
  58. package/src/data/createStructuredSelector.ts +62 -62
  59. package/src/data/getAccessor.spec.ts +11 -11
  60. package/src/data/getAccessor.ts +74 -74
  61. package/src/data/getSelector.spec.ts +43 -43
  62. package/src/data/getSelector.ts +66 -66
  63. package/src/data/ops/filter.spec.ts +35 -35
  64. package/src/data/ops/filter.ts +9 -9
  65. package/src/data/ops/merge.ts +13 -13
  66. package/src/data/ops/removeTreeNodes.spec.ts +37 -37
  67. package/src/data/ops/updateArray.spec.ts +69 -69
  68. package/src/data/ops/updateArray.ts +31 -31
  69. package/src/data/test-types.ts +7 -7
  70. package/src/hooks/invokeCallback.spec.tsx +4 -4
  71. package/src/hooks/resolveCallback.spec.tsx +4 -4
  72. package/src/hooks/store.spec.tsx +15 -15
  73. package/src/hooks/useTrigger.spec.tsx +16 -10
  74. package/src/hooks/useTrigger.ts +26 -26
  75. package/src/index.scss +6 -6
  76. package/src/jsx-runtime.ts +79 -79
  77. package/src/svg/BoundedObject.ts +101 -101
  78. package/src/svg/util/Rect.ts +105 -105
  79. package/src/ui/CSS.ts +87 -87
  80. package/src/ui/CSSHelper.ts +17 -17
  81. package/src/ui/ContentResolver.spec.tsx +31 -29
  82. package/src/ui/Controller.spec.tsx +47 -39
  83. package/src/ui/Culture.ts +159 -159
  84. package/src/ui/Cx.spec.tsx +10 -8
  85. package/src/ui/DataProxy.spec.tsx +18 -18
  86. package/src/ui/Instance.ts +866 -866
  87. package/src/ui/IsolatedScope.spec.tsx +16 -9
  88. package/src/ui/Prop.ts +140 -140
  89. package/src/ui/PureContainer.spec.tsx +20 -18
  90. package/src/ui/RenderingContext.ts +99 -99
  91. package/src/ui/Repeater.spec.tsx +8 -6
  92. package/src/ui/Rescope.spec.tsx +13 -13
  93. package/src/ui/Restate.spec.tsx +31 -27
  94. package/src/ui/StructuredInstanceDataAccessor.ts +32 -32
  95. package/src/ui/VDOM.ts +1 -34
  96. package/src/ui/Widget.tsx +0 -7
  97. package/src/ui/adapter/TreeAdapter.spec.ts +76 -76
  98. package/src/ui/adapter/TreeAdapter.ts +185 -185
  99. package/src/ui/app/History.ts +133 -133
  100. package/src/ui/app/Url.spec.ts +50 -50
  101. package/src/ui/app/startAppLoop.tsx +5 -9
  102. package/src/ui/app/startHotAppLoop.ts +41 -41
  103. package/src/ui/createFunctionalComponent.spec.tsx +20 -18
  104. package/src/ui/layout/ContentPlaceholder.spec.tsx +46 -34
  105. package/src/ui/layout/FirstVisibleChildLayout.spec.tsx +31 -19
  106. package/src/ui/layout/FirstVisibleChildLayout.ts +60 -60
  107. package/src/ui/selection/PropertySelection.ts +87 -87
  108. package/src/util/Component.spec.ts +30 -0
  109. package/src/util/Component.ts +301 -296
  110. package/src/util/Console.ts +13 -13
  111. package/src/util/DOM.ts +88 -88
  112. package/src/util/hasKey.ts +18 -18
  113. package/src/util/index.ts +55 -55
  114. package/src/util/isArray.ts +3 -3
  115. package/src/util/isDefined.ts +3 -3
  116. package/src/util/isString.ts +3 -3
  117. package/src/util/test/createTestRenderer.tsx +9 -2
  118. package/src/widgets/AccessorBindings.spec.tsx +4 -4
  119. package/src/widgets/DocumentTitle.ts +95 -95
  120. package/src/widgets/HtmlElement.spec.tsx +6 -6
  121. package/src/widgets/ReactElementWrapper.spec.tsx +37 -37
  122. package/src/widgets/autoFocus.ts +9 -9
  123. package/src/widgets/cx.ts +63 -63
  124. package/src/widgets/form/Checkbox.tsx +0 -1
  125. package/src/widgets/form/ColorField.tsx +15 -12
  126. package/src/widgets/form/DateTimeField.tsx +0 -2
  127. package/src/widgets/form/DateTimePicker.tsx +0 -2
  128. package/src/widgets/form/Radio.tsx +0 -1
  129. package/src/widgets/form/Slider.tsx +12 -4
  130. package/src/widgets/form/Switch.tsx +2 -3
  131. package/src/widgets/form/ValidationGroup.spec.tsx +12 -12
  132. package/src/widgets/form/Wheel.tsx +0 -1
  133. package/src/widgets/grid/Grid.tsx +0 -1
  134. package/src/widgets/grid/GridCellEditor.tsx +7 -1
  135. package/src/widgets/icons/calendar.tsx +20 -15
  136. package/src/widgets/icons/check.tsx +2 -1
  137. package/src/widgets/icons/clear.tsx +2 -1
  138. package/src/widgets/icons/close.tsx +2 -2
  139. package/src/widgets/icons/cx.tsx +2 -1
  140. package/src/widgets/icons/drop-down.tsx +2 -1
  141. package/src/widgets/icons/file.tsx +2 -1
  142. package/src/widgets/icons/folder-open.tsx +2 -1
  143. package/src/widgets/icons/folder.tsx +2 -1
  144. package/src/widgets/icons/forward.tsx +2 -1
  145. package/src/widgets/icons/loading.tsx +2 -1
  146. package/src/widgets/icons/menu.tsx +2 -1
  147. package/src/widgets/icons/pixel-picker.tsx +2 -2
  148. package/src/widgets/icons/search.tsx +2 -1
  149. package/src/widgets/icons/sort-asc.tsx +2 -1
  150. package/src/widgets/icons/square.tsx +2 -1
  151. package/src/widgets/nav/Route.spec.tsx +2 -2
  152. package/src/widgets/overlay/Overlay.tsx +5 -1
  153. package/src/widgets/overlay/captureMouse.ts +195 -195
  154. package/src/widgets/overlay/createHotPromiseWindowFactory.ts +71 -71
  155. package/src/widgets/overlay/index.d.ts +11 -11
  156. package/src/widgets/overlay/tooltip-ops.ts +173 -173
  157. package/build/data/ArrayElementView.spec.d.ts +0 -1
  158. package/build/data/ArrayElementView.spec.js +0 -81
  159. package/build/data/Binding.spec.d.ts +0 -1
  160. package/build/data/Binding.spec.js +0 -61
  161. package/build/data/Expression.spec.d.ts +0 -1
  162. package/build/data/Expression.spec.js +0 -196
  163. package/build/data/Grouper.spec.d.ts +0 -1
  164. package/build/data/Grouper.spec.js +0 -48
  165. package/build/data/Ref.spec.d.ts +0 -1
  166. package/build/data/Ref.spec.js +0 -72
  167. package/build/data/Store.spec.d.ts +0 -1
  168. package/build/data/Store.spec.js +0 -19
  169. package/build/data/StoreRef.spec.d.ts +0 -1
  170. package/build/data/StoreRef.spec.js +0 -22
  171. package/build/data/StringTemplate.spec.d.ts +0 -1
  172. package/build/data/StringTemplate.spec.js +0 -112
  173. package/build/data/StructuredSelector.spec.d.ts +0 -1
  174. package/build/data/StructuredSelector.spec.js +0 -102
  175. package/build/data/View.spec.d.ts +0 -1
  176. package/build/data/View.spec.js +0 -44
  177. package/build/data/ZoomIntoPropertyView.spec.d.ts +0 -1
  178. package/build/data/ZoomIntoPropertyView.spec.js +0 -54
  179. package/build/data/comparer.spec.d.ts +0 -1
  180. package/build/data/comparer.spec.js +0 -50
  181. package/build/data/computable.spec.d.ts +0 -1
  182. package/build/data/computable.spec.js +0 -56
  183. package/build/data/createAccessorModelProxy.spec.d.ts +0 -1
  184. package/build/data/createAccessorModelProxy.spec.js +0 -30
  185. package/build/data/createStructuredSelector.spec.d.ts +0 -1
  186. package/build/data/createStructuredSelector.spec.js +0 -42
  187. package/build/data/diff/diffs.spec.d.ts +0 -1
  188. package/build/data/diff/diffs.spec.js +0 -45
  189. package/build/data/getAccessor.spec.d.ts +0 -1
  190. package/build/data/getAccessor.spec.js +0 -10
  191. package/build/data/getSelector.spec.d.ts +0 -1
  192. package/build/data/getSelector.spec.js +0 -36
  193. package/build/data/ops/append.spec.d.ts +0 -1
  194. package/build/data/ops/append.spec.js +0 -24
  195. package/build/data/ops/filter.spec.d.ts +0 -1
  196. package/build/data/ops/filter.spec.js +0 -25
  197. package/build/data/ops/findTreeNode.spec.d.ts +0 -1
  198. package/build/data/ops/findTreeNode.spec.js +0 -20
  199. package/build/data/ops/merge.spec.d.ts +0 -1
  200. package/build/data/ops/merge.spec.js +0 -23
  201. package/build/data/ops/removeTreeNodes.spec.d.ts +0 -1
  202. package/build/data/ops/removeTreeNodes.spec.js +0 -35
  203. package/build/data/ops/updateArray.spec.d.ts +0 -1
  204. package/build/data/ops/updateArray.spec.js +0 -33
  205. package/build/data/ops/updateTree.spec.d.ts +0 -1
  206. package/build/data/ops/updateTree.spec.js +0 -44
  207. package/build/hooks/invokeCallback.spec.d.ts +0 -1
  208. package/build/hooks/invokeCallback.spec.js +0 -44
  209. package/build/hooks/resolveCallback.spec.d.ts +0 -1
  210. package/build/hooks/resolveCallback.spec.js +0 -35
  211. package/build/hooks/store.spec.d.ts +0 -1
  212. package/build/hooks/store.spec.js +0 -48
  213. package/build/hooks/useTrigger.spec.d.ts +0 -1
  214. package/build/hooks/useTrigger.spec.js +0 -59
  215. package/build/ui/Controller.spec.d.ts +0 -1
  216. package/build/ui/Controller.spec.js +0 -247
  217. package/build/ui/Cx.spec.d.ts +0 -1
  218. package/build/ui/Cx.spec.js +0 -153
  219. package/build/ui/DataProxy.spec.d.ts +0 -1
  220. package/build/ui/DataProxy.spec.js +0 -208
  221. package/build/ui/IsolatedScope.spec.d.ts +0 -1
  222. package/build/ui/IsolatedScope.spec.js +0 -42
  223. package/build/ui/PureContainer.spec.d.ts +0 -1
  224. package/build/ui/PureContainer.spec.js +0 -149
  225. package/build/ui/Repeater.spec.d.ts +0 -1
  226. package/build/ui/Repeater.spec.js +0 -109
  227. package/build/ui/Rescope.spec.d.ts +0 -1
  228. package/build/ui/Rescope.spec.js +0 -134
  229. package/build/ui/Restate.spec.d.ts +0 -1
  230. package/build/ui/Restate.spec.js +0 -257
  231. package/build/ui/adapter/ArrayAdapter.spec.d.ts +0 -1
  232. package/build/ui/adapter/ArrayAdapter.spec.js +0 -44
  233. package/build/ui/adapter/TreeAdapter.spec.d.ts +0 -1
  234. package/build/ui/adapter/TreeAdapter.spec.js +0 -71
  235. package/build/ui/app/Url.spec.d.ts +0 -1
  236. package/build/ui/app/Url.spec.js +0 -43
  237. package/build/ui/createFunctionalComponent.spec.d.ts +0 -1
  238. package/build/ui/createFunctionalComponent.spec.js +0 -272
  239. package/build/ui/layout/ContentPlaceholder.spec.d.ts +0 -1
  240. package/build/ui/layout/ContentPlaceholder.spec.js +0 -333
  241. package/build/ui/layout/FirstVisibleChildLayout.spec.d.ts +0 -1
  242. package/build/ui/layout/FirstVisibleChildLayout.spec.js +0 -101
  243. package/build/util/Format.spec.d.ts +0 -1
  244. package/build/util/Format.spec.js +0 -58
  245. package/build/util/TraversalStack.spec.d.ts +0 -1
  246. package/build/util/TraversalStack.spec.js +0 -43
  247. package/build/util/date/upperBoundCheck.spec.d.ts +0 -1
  248. package/build/util/date/upperBoundCheck.spec.js +0 -22
  249. package/build/util/getSearchQueryPredicate.spec.d.ts +0 -1
  250. package/build/util/getSearchQueryPredicate.spec.js +0 -33
  251. package/build/util/isValidIdentifierName.spec.d.ts +0 -1
  252. package/build/util/isValidIdentifierName.spec.js +0 -28
  253. package/build/util/routeAppend.spec.d.ts +0 -1
  254. package/build/util/routeAppend.spec.js +0 -14
  255. package/build/widgets/AccessorBindings.spec.d.ts +0 -1
  256. package/build/widgets/AccessorBindings.spec.js +0 -40
  257. package/build/widgets/HtmlElement.spec.d.ts +0 -1
  258. package/build/widgets/HtmlElement.spec.js +0 -38
  259. package/build/widgets/form/ValidationGroup.spec.d.ts +0 -1
  260. package/build/widgets/form/ValidationGroup.spec.js +0 -62
  261. package/build/widgets/nav/Route.spec.d.ts +0 -1
  262. package/build/widgets/nav/Route.spec.js +0 -15
  263. 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.14",
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-dom": "*"
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": "^22.10.2",
88
- "@types/react-dom": "^18.3.1",
89
- "@types/react-test-renderer": "^18.3.1",
90
- "react-test-renderer": "^18.3.1",
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",
@@ -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
+ }