cx 25.1.0 → 25.1.2

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 (106) hide show
  1. package/dist/data.js +9 -1
  2. package/dist/manifest.js +731 -731
  3. package/dist/widgets.js +18 -4
  4. package/package.json +32 -32
  5. package/src/charts/Legend.js +167 -167
  6. package/src/charts/Legend.scss +40 -40
  7. package/src/charts/LegendEntry.js +128 -128
  8. package/src/charts/LegendEntry.scss +27 -27
  9. package/src/charts/PieChart.d.ts +92 -92
  10. package/src/charts/PieChart.js +529 -529
  11. package/src/charts/axis/Axis.d.ts +113 -113
  12. package/src/charts/axis/Axis.js +280 -280
  13. package/src/charts/axis/CategoryAxis.d.ts +30 -30
  14. package/src/charts/axis/CategoryAxis.js +241 -241
  15. package/src/charts/axis/NumericAxis.js +351 -351
  16. package/src/charts/axis/Stack.js +55 -55
  17. package/src/charts/axis/TimeAxis.d.ts +28 -28
  18. package/src/charts/axis/TimeAxis.js +611 -611
  19. package/src/charts/helpers/PointReducer.js +47 -47
  20. package/src/charts/helpers/SnapPointFinder.js +69 -69
  21. package/src/data/Binding.spec.js +69 -69
  22. package/src/data/Expression.js +229 -221
  23. package/src/data/Expression.spec.js +229 -217
  24. package/src/data/StringTemplate.js +92 -92
  25. package/src/data/StringTemplate.spec.js +127 -110
  26. package/src/data/getAccessor.spec.js +11 -11
  27. package/src/hooks/createLocalStorageRef.d.ts +3 -3
  28. package/src/hooks/createLocalStorageRef.js +20 -20
  29. package/src/index.scss +6 -6
  30. package/src/ui/Culture.d.ts +57 -57
  31. package/src/ui/Culture.js +139 -139
  32. package/src/ui/FocusManager.js +171 -171
  33. package/src/ui/Format.js +108 -108
  34. package/src/ui/HoverSync.js +147 -147
  35. package/src/ui/Instance.d.ts +72 -72
  36. package/src/ui/Instance.js +614 -614
  37. package/src/ui/Repeater.d.ts +61 -61
  38. package/src/ui/index.d.ts +42 -42
  39. package/src/ui/layout/ContentPlaceholder.d.ts +19 -19
  40. package/src/ui/layout/ContentPlaceholder.js +105 -105
  41. package/src/ui/layout/ContentPlaceholder.spec.js +579 -579
  42. package/src/ui/layout/LabelsTopLayout.js +134 -134
  43. package/src/util/date/encodeDate.d.ts +1 -1
  44. package/src/util/date/encodeDate.js +8 -8
  45. package/src/util/date/encodeDateWithTimezoneOffset.d.ts +1 -1
  46. package/src/util/date/index.d.ts +11 -11
  47. package/src/util/date/index.js +11 -11
  48. package/src/util/date/parseDateInvariant.d.ts +3 -3
  49. package/src/util/date/parseDateInvariant.js +20 -20
  50. package/src/util/getSearchQueryPredicate.js +59 -59
  51. package/src/util/index.d.ts +51 -51
  52. package/src/util/index.js +54 -54
  53. package/src/util/isValidIdentifierName.d.ts +1 -1
  54. package/src/util/isValidIdentifierName.js +5 -5
  55. package/src/util/isValidIdentifierName.spec.js +33 -33
  56. package/src/util/scss/add-rules.scss +38 -38
  57. package/src/widgets/CxCredit.scss +37 -37
  58. package/src/widgets/HighlightedSearchText.js +36 -36
  59. package/src/widgets/HighlightedSearchText.scss +18 -18
  60. package/src/widgets/List.scss +91 -91
  61. package/src/widgets/drag-drop/DropZone.js +214 -214
  62. package/src/widgets/form/Calendar.js +618 -618
  63. package/src/widgets/form/Calendar.scss +196 -196
  64. package/src/widgets/form/Checkbox.scss +127 -127
  65. package/src/widgets/form/ColorField.js +397 -397
  66. package/src/widgets/form/ColorField.scss +96 -96
  67. package/src/widgets/form/ColorPicker.scss +283 -283
  68. package/src/widgets/form/DateTimeField.js +576 -576
  69. package/src/widgets/form/DateTimePicker.js +392 -392
  70. package/src/widgets/form/LookupField.d.ts +179 -179
  71. package/src/widgets/form/LookupField.scss +219 -219
  72. package/src/widgets/form/MonthField.d.ts +99 -95
  73. package/src/widgets/form/MonthField.js +523 -517
  74. package/src/widgets/form/MonthPicker.d.ts +76 -74
  75. package/src/widgets/form/MonthPicker.js +641 -633
  76. package/src/widgets/form/MonthPicker.scss +118 -118
  77. package/src/widgets/form/NumberField.js +459 -459
  78. package/src/widgets/form/NumberField.scss +61 -61
  79. package/src/widgets/form/Radio.scss +121 -121
  80. package/src/widgets/form/Select.scss +99 -99
  81. package/src/widgets/form/Slider.scss +118 -118
  82. package/src/widgets/form/Switch.scss +140 -140
  83. package/src/widgets/form/TextArea.scss +43 -43
  84. package/src/widgets/form/TextField.js +290 -290
  85. package/src/widgets/form/TextField.scss +55 -55
  86. package/src/widgets/form/UploadButton.d.ts +34 -34
  87. package/src/widgets/form/variables.scss +353 -353
  88. package/src/widgets/grid/Grid.d.ts +442 -442
  89. package/src/widgets/grid/Grid.js +3414 -3414
  90. package/src/widgets/grid/Grid.scss +637 -637
  91. package/src/widgets/grid/GridRow.js +228 -228
  92. package/src/widgets/grid/TreeNode.d.ts +23 -23
  93. package/src/widgets/grid/TreeNode.scss +88 -88
  94. package/src/widgets/grid/variables.scss +133 -133
  95. package/src/widgets/nav/Menu.scss +74 -74
  96. package/src/widgets/overlay/Dropdown.js +612 -612
  97. package/src/widgets/overlay/FlyweightTooltipTracker.js +39 -39
  98. package/src/widgets/overlay/Overlay.d.ts +73 -73
  99. package/src/widgets/overlay/Tooltip.js +303 -303
  100. package/src/widgets/overlay/Window.js +202 -202
  101. package/src/widgets/overlay/captureMouse.js +124 -124
  102. package/src/widgets/overlay/createHotPromiseWindowFactory.d.ts +18 -18
  103. package/src/widgets/overlay/createHotPromiseWindowFactory.js +56 -56
  104. package/src/widgets/overlay/index.d.ts +11 -11
  105. package/src/widgets/overlay/index.js +11 -11
  106. package/src/widgets/variables.scss +144 -144
@@ -1,47 +1,47 @@
1
- import { PureContainer } from "../../ui/PureContainer";
2
-
3
- export class PointReducer extends PureContainer {
4
- explore(context, instance) {
5
- let parentPointReducer = context.pointReducer;
6
- instance.parentPointTracker = parentPointReducer;
7
-
8
- if (!instance.pointReducer) {
9
- let onMap = this.onMap && instance.getCallback("onMap");
10
- let accumulator = {};
11
- instance.resetAccumulator = () => {
12
- accumulator = {};
13
- if (this.onInitAccumulator) instance.invoke("onInitAccumulator", accumulator, instance);
14
- };
15
-
16
- let pointFilter = null;
17
- if (this.onCreatePointFilter) pointFilter = instance.invoke("onCreatePointFilter", instance);
18
-
19
- instance.pointReducer = (x, y, name, data, array, index) => {
20
- if (!pointFilter || pointFilter(x, y, name, data, array, index))
21
- onMap(accumulator, x, y, name, data, array, index);
22
- if (parentPointReducer) parentPointReducer(x, y, name, data, array, index);
23
- };
24
- instance.write = () => {
25
- if (this.onReduce) instance.invoke("onReduce", accumulator, instance);
26
- };
27
- }
28
-
29
- instance.resetAccumulator();
30
- context.push("pointReducer", instance.pointReducer);
31
-
32
- super.explore(context, instance);
33
- }
34
-
35
- exploreCleanup(context, instance) {
36
- context.pop("pointReducer");
37
- }
38
-
39
- prepare(context, instance) {
40
- context.push("pointReducer", instance.pointReducer);
41
- }
42
-
43
- prepareCleanup(context, instance) {
44
- context.pop("pointReducer");
45
- instance.write();
46
- }
47
- }
1
+ import { PureContainer } from "../../ui/PureContainer";
2
+
3
+ export class PointReducer extends PureContainer {
4
+ explore(context, instance) {
5
+ let parentPointReducer = context.pointReducer;
6
+ instance.parentPointTracker = parentPointReducer;
7
+
8
+ if (!instance.pointReducer) {
9
+ let onMap = this.onMap && instance.getCallback("onMap");
10
+ let accumulator = {};
11
+ instance.resetAccumulator = () => {
12
+ accumulator = {};
13
+ if (this.onInitAccumulator) instance.invoke("onInitAccumulator", accumulator, instance);
14
+ };
15
+
16
+ let pointFilter = null;
17
+ if (this.onCreatePointFilter) pointFilter = instance.invoke("onCreatePointFilter", instance);
18
+
19
+ instance.pointReducer = (x, y, name, data, array, index) => {
20
+ if (!pointFilter || pointFilter(x, y, name, data, array, index))
21
+ onMap(accumulator, x, y, name, data, array, index);
22
+ if (parentPointReducer) parentPointReducer(x, y, name, data, array, index);
23
+ };
24
+ instance.write = () => {
25
+ if (this.onReduce) instance.invoke("onReduce", accumulator, instance);
26
+ };
27
+ }
28
+
29
+ instance.resetAccumulator();
30
+ context.push("pointReducer", instance.pointReducer);
31
+
32
+ super.explore(context, instance);
33
+ }
34
+
35
+ exploreCleanup(context, instance) {
36
+ context.pop("pointReducer");
37
+ }
38
+
39
+ prepare(context, instance) {
40
+ context.push("pointReducer", instance.pointReducer);
41
+ }
42
+
43
+ prepareCleanup(context, instance) {
44
+ context.pop("pointReducer");
45
+ instance.write();
46
+ }
47
+ }
@@ -1,69 +1,69 @@
1
- import { PointReducer } from "./PointReducer";
2
-
3
- export class SnapPointFinder extends PointReducer {
4
- declareData() {
5
- return super.declareData(...arguments, {
6
- cursorX: undefined,
7
- cursorY: undefined,
8
- snapX: undefined,
9
- snapY: undefined,
10
- snapRecord: undefined,
11
- maxDistance: undefined,
12
- });
13
- }
14
-
15
- explore(context, instance) {
16
- instance.xAxis = context.axes[this.xAxis];
17
- instance.yAxis = context.axes[this.yAxis];
18
- super.explore(context, instance);
19
- }
20
-
21
- onInitAccumulator(acc, { data, xAxis, yAxis }) {
22
- acc.cursor = {
23
- x: data.cursorX,
24
- y: data.cursorY,
25
- mapped: false,
26
- };
27
- acc.dist = data.maxDistance > 0 ? Math.pow(data.maxDistance, 2) : Number.POSITIVE_INFINITY;
28
- acc.snapX = null;
29
- acc.snapY = null;
30
- acc.xAxis = xAxis;
31
- acc.yAxis = yAxis;
32
- }
33
-
34
- onMap(acc, x, y, name, p) {
35
- let { xAxis, yAxis, cursor } = acc;
36
-
37
- if (!cursor.mapped) {
38
- cursor.mappedX = cursor.x != null ? xAxis?.map(this.convertX(cursor.x)) : null;
39
- cursor.mappedY = cursor.y != null ? yAxis?.map(this.convertY(cursor.y)) : null;
40
- cursor.mapped = true;
41
- }
42
-
43
- let d = null;
44
- let cx = x != null ? xAxis?.map(this.convertX(x)) : null;
45
- let cy = y != null ? yAxis?.map(this.convertY(y)) : null;
46
-
47
- if (cursor.mappedX != null && cx != null) d = (d || 0) + Math.pow(Math.abs(cx - cursor.mappedX), 2);
48
- if (cursor.mappedY != null && cy != null) d = (d || 0) + Math.pow(Math.abs(cy - cursor.mappedY), 2);
49
-
50
- if (d != null && d < acc.dist) {
51
- acc.dist = d;
52
- acc.snapX = x;
53
- acc.snapY = y;
54
- acc.snapRecord = p;
55
- }
56
- }
57
-
58
- onReduce(acc, instance) {
59
- instance.set("snapX", acc.snapX);
60
- instance.set("snapY", acc.snapY);
61
- instance.set("snapRecord", acc.snapRecord);
62
- }
63
- }
64
-
65
- SnapPointFinder.prototype.maxDistance = 50;
66
- SnapPointFinder.prototype.convertX = (x) => x;
67
- SnapPointFinder.prototype.convertY = (y) => y;
68
- SnapPointFinder.prototype.xAxis = "x";
69
- SnapPointFinder.prototype.yAxis = "y";
1
+ import { PointReducer } from "./PointReducer";
2
+
3
+ export class SnapPointFinder extends PointReducer {
4
+ declareData() {
5
+ return super.declareData(...arguments, {
6
+ cursorX: undefined,
7
+ cursorY: undefined,
8
+ snapX: undefined,
9
+ snapY: undefined,
10
+ snapRecord: undefined,
11
+ maxDistance: undefined,
12
+ });
13
+ }
14
+
15
+ explore(context, instance) {
16
+ instance.xAxis = context.axes[this.xAxis];
17
+ instance.yAxis = context.axes[this.yAxis];
18
+ super.explore(context, instance);
19
+ }
20
+
21
+ onInitAccumulator(acc, { data, xAxis, yAxis }) {
22
+ acc.cursor = {
23
+ x: data.cursorX,
24
+ y: data.cursorY,
25
+ mapped: false,
26
+ };
27
+ acc.dist = data.maxDistance > 0 ? Math.pow(data.maxDistance, 2) : Number.POSITIVE_INFINITY;
28
+ acc.snapX = null;
29
+ acc.snapY = null;
30
+ acc.xAxis = xAxis;
31
+ acc.yAxis = yAxis;
32
+ }
33
+
34
+ onMap(acc, x, y, name, p) {
35
+ let { xAxis, yAxis, cursor } = acc;
36
+
37
+ if (!cursor.mapped) {
38
+ cursor.mappedX = cursor.x != null ? xAxis?.map(this.convertX(cursor.x)) : null;
39
+ cursor.mappedY = cursor.y != null ? yAxis?.map(this.convertY(cursor.y)) : null;
40
+ cursor.mapped = true;
41
+ }
42
+
43
+ let d = null;
44
+ let cx = x != null ? xAxis?.map(this.convertX(x)) : null;
45
+ let cy = y != null ? yAxis?.map(this.convertY(y)) : null;
46
+
47
+ if (cursor.mappedX != null && cx != null) d = (d || 0) + Math.pow(Math.abs(cx - cursor.mappedX), 2);
48
+ if (cursor.mappedY != null && cy != null) d = (d || 0) + Math.pow(Math.abs(cy - cursor.mappedY), 2);
49
+
50
+ if (d != null && d < acc.dist) {
51
+ acc.dist = d;
52
+ acc.snapX = x;
53
+ acc.snapY = y;
54
+ acc.snapRecord = p;
55
+ }
56
+ }
57
+
58
+ onReduce(acc, instance) {
59
+ instance.set("snapX", acc.snapX);
60
+ instance.set("snapY", acc.snapY);
61
+ instance.set("snapRecord", acc.snapRecord);
62
+ }
63
+ }
64
+
65
+ SnapPointFinder.prototype.maxDistance = 50;
66
+ SnapPointFinder.prototype.convertX = (x) => x;
67
+ SnapPointFinder.prototype.convertY = (y) => y;
68
+ SnapPointFinder.prototype.xAxis = "x";
69
+ SnapPointFinder.prototype.yAxis = "y";
@@ -1,69 +1,69 @@
1
- import { Binding } from "./Binding";
2
- import assert from "assert";
3
- import { createAccessorModelProxy } from "./createAccessorModelProxy";
4
-
5
- describe("Binding", function () {
6
- describe("#get()", function () {
7
- it("should get value if value is defined", function () {
8
- var state = { person: { name: "Joe" } };
9
- var b = Binding.get("person.name");
10
- assert.equal(b.value(state), "Joe");
11
- });
12
-
13
- it("allows non-standard property identifiers", function () {
14
- var state = { person: { "@schema": "Person" } };
15
- var b = Binding.get("person.@schema");
16
- assert.equal(b.path, "person.@schema");
17
- assert.equal(b.value(state), "Person");
18
- });
19
-
20
- it("properly resolves accessor models", function () {
21
- var state = { person: { schema: "Person" } };
22
- var b = Binding.get(createAccessorModelProxy("person.schema"));
23
- assert.equal(b.value(state), "Person");
24
- });
25
- });
26
-
27
- describe("#set()", function () {
28
- it("produces new objects along the binding path", function () {
29
- var state = { person: { name: "Joe" } };
30
- var b = Binding.get("person.name");
31
- var ns = b.set(state, "Jack");
32
- assert.equal(ns.person.name, "Jack");
33
- assert.notEqual(state, ns);
34
- assert.notEqual(state.person, ns.person);
35
- assert.notEqual(state.person.name, ns.person.name);
36
- });
37
-
38
- it("returns same state object if value does not change", function () {
39
- var state = { person: { name: "Joe" } };
40
- var b = Binding.get("person.name");
41
- var ns = b.set(state, "Joe");
42
- assert.equal(state, ns);
43
- });
44
-
45
- it("allows non-standard property identifiers", function () {
46
- var state = { person: { "@schema": "Person" } };
47
- var b = Binding.get("person.@schema");
48
- var ns = b.set(state, "Test");
49
- assert.equal(ns.person["@schema"], "Test");
50
- });
51
- });
52
-
53
- describe(".delete()", function () {
54
- it("correctly removes pointed properties", function () {
55
- var state = { person: { name: "Joe" } };
56
- var b = Binding.get("person.name");
57
- var ns = b.delete(state);
58
- assert("person" in ns);
59
- assert(!("name" in ns.person));
60
- });
61
-
62
- it("does not change state if property is non-existent", function () {
63
- var state = { person: { name: "Joe" } };
64
- var b = Binding.get("person.name2");
65
- var ns = b.delete(state);
66
- assert(ns == state);
67
- });
68
- });
69
- });
1
+ import { Binding } from "./Binding";
2
+ import assert from "assert";
3
+ import { createAccessorModelProxy } from "./createAccessorModelProxy";
4
+
5
+ describe("Binding", function () {
6
+ describe("#get()", function () {
7
+ it("should get value if value is defined", function () {
8
+ var state = { person: { name: "Joe" } };
9
+ var b = Binding.get("person.name");
10
+ assert.equal(b.value(state), "Joe");
11
+ });
12
+
13
+ it("allows non-standard property identifiers", function () {
14
+ var state = { person: { "@schema": "Person" } };
15
+ var b = Binding.get("person.@schema");
16
+ assert.equal(b.path, "person.@schema");
17
+ assert.equal(b.value(state), "Person");
18
+ });
19
+
20
+ it("properly resolves accessor models", function () {
21
+ var state = { person: { schema: "Person" } };
22
+ var b = Binding.get(createAccessorModelProxy("person.schema"));
23
+ assert.equal(b.value(state), "Person");
24
+ });
25
+ });
26
+
27
+ describe("#set()", function () {
28
+ it("produces new objects along the binding path", function () {
29
+ var state = { person: { name: "Joe" } };
30
+ var b = Binding.get("person.name");
31
+ var ns = b.set(state, "Jack");
32
+ assert.equal(ns.person.name, "Jack");
33
+ assert.notEqual(state, ns);
34
+ assert.notEqual(state.person, ns.person);
35
+ assert.notEqual(state.person.name, ns.person.name);
36
+ });
37
+
38
+ it("returns same state object if value does not change", function () {
39
+ var state = { person: { name: "Joe" } };
40
+ var b = Binding.get("person.name");
41
+ var ns = b.set(state, "Joe");
42
+ assert.equal(state, ns);
43
+ });
44
+
45
+ it("allows non-standard property identifiers", function () {
46
+ var state = { person: { "@schema": "Person" } };
47
+ var b = Binding.get("person.@schema");
48
+ var ns = b.set(state, "Test");
49
+ assert.equal(ns.person["@schema"], "Test");
50
+ });
51
+ });
52
+
53
+ describe(".delete()", function () {
54
+ it("correctly removes pointed properties", function () {
55
+ var state = { person: { name: "Joe" } };
56
+ var b = Binding.get("person.name");
57
+ var ns = b.delete(state);
58
+ assert("person" in ns);
59
+ assert(!("name" in ns.person));
60
+ });
61
+
62
+ it("does not change state if property is non-existent", function () {
63
+ var state = { person: { name: "Joe" } };
64
+ var b = Binding.get("person.name2");
65
+ var ns = b.delete(state);
66
+ assert(ns == state);
67
+ });
68
+ });
69
+ });