cx 25.6.0 → 25.6.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 (96) hide show
  1. package/dist/manifest.js +708 -708
  2. package/package.json +2 -2
  3. package/src/charts/Legend.d.ts +45 -45
  4. package/src/charts/LegendEntry.js +128 -128
  5. package/src/charts/LegendEntry.scss +27 -27
  6. package/src/charts/PieChart.d.ts +92 -92
  7. package/src/charts/RangeMarker.js +159 -159
  8. package/src/charts/axis/Axis.d.ts +113 -113
  9. package/src/charts/axis/Axis.js +280 -280
  10. package/src/charts/axis/CategoryAxis.d.ts +30 -30
  11. package/src/charts/axis/CategoryAxis.js +241 -241
  12. package/src/charts/axis/NumericAxis.js +351 -351
  13. package/src/charts/axis/Stack.js +55 -55
  14. package/src/charts/axis/TimeAxis.js +611 -611
  15. package/src/charts/helpers/SnapPointFinder.js +69 -69
  16. package/src/data/Binding.spec.js +69 -69
  17. package/src/data/Expression.js +229 -229
  18. package/src/data/Expression.spec.js +229 -229
  19. package/src/data/StringTemplate.js +92 -92
  20. package/src/data/StringTemplate.spec.js +132 -132
  21. package/src/data/StructuredSelector.js +132 -132
  22. package/src/data/getAccessor.spec.js +11 -11
  23. package/src/data/getSelector.js +49 -49
  24. package/src/hooks/createLocalStorageRef.d.ts +3 -3
  25. package/src/hooks/createLocalStorageRef.js +20 -20
  26. package/src/index.scss +6 -6
  27. package/src/ui/Culture.d.ts +57 -57
  28. package/src/ui/Culture.js +139 -139
  29. package/src/ui/FocusManager.js +171 -171
  30. package/src/ui/Format.js +108 -108
  31. package/src/ui/HoverSync.js +147 -147
  32. package/src/ui/Repeater.d.ts +61 -61
  33. package/src/ui/index.d.ts +42 -42
  34. package/src/ui/layout/ContentPlaceholder.d.ts +19 -19
  35. package/src/ui/layout/ContentPlaceholder.js +105 -105
  36. package/src/ui/layout/ContentPlaceholder.spec.js +579 -579
  37. package/src/ui/layout/LabelsTopLayout.js +134 -134
  38. package/src/util/Format.js +270 -270
  39. package/src/util/date/encodeDate.d.ts +1 -1
  40. package/src/util/date/encodeDate.js +8 -8
  41. package/src/util/date/encodeDateWithTimezoneOffset.d.ts +1 -1
  42. package/src/util/date/index.d.ts +11 -11
  43. package/src/util/date/index.js +11 -11
  44. package/src/util/date/parseDateInvariant.d.ts +3 -3
  45. package/src/util/date/parseDateInvariant.js +20 -20
  46. package/src/util/getSearchQueryPredicate.js +59 -59
  47. package/src/util/index.d.ts +51 -51
  48. package/src/util/index.js +54 -54
  49. package/src/util/isValidIdentifierName.d.ts +1 -1
  50. package/src/util/isValidIdentifierName.js +5 -5
  51. package/src/util/isValidIdentifierName.spec.js +33 -33
  52. package/src/util/scss/add-rules.scss +38 -38
  53. package/src/widgets/CxCredit.scss +37 -37
  54. package/src/widgets/HighlightedSearchText.js +36 -36
  55. package/src/widgets/HighlightedSearchText.scss +18 -18
  56. package/src/widgets/List.scss +91 -91
  57. package/src/widgets/drag-drop/DropZone.js +214 -214
  58. package/src/widgets/form/Calendar.js +618 -618
  59. package/src/widgets/form/Calendar.scss +196 -196
  60. package/src/widgets/form/Checkbox.scss +127 -127
  61. package/src/widgets/form/ColorField.js +397 -397
  62. package/src/widgets/form/ColorField.scss +96 -96
  63. package/src/widgets/form/ColorPicker.scss +283 -283
  64. package/src/widgets/form/DateTimeField.js +576 -576
  65. package/src/widgets/form/DateTimePicker.js +392 -392
  66. package/src/widgets/form/LookupField.d.ts +179 -179
  67. package/src/widgets/form/LookupField.scss +219 -219
  68. package/src/widgets/form/MonthPicker.scss +118 -118
  69. package/src/widgets/form/NumberField.js +459 -459
  70. package/src/widgets/form/NumberField.scss +61 -61
  71. package/src/widgets/form/Radio.scss +121 -121
  72. package/src/widgets/form/Select.scss +99 -99
  73. package/src/widgets/form/Slider.scss +118 -118
  74. package/src/widgets/form/Switch.scss +140 -140
  75. package/src/widgets/form/TextArea.scss +43 -43
  76. package/src/widgets/form/TextField.js +290 -290
  77. package/src/widgets/form/TextField.scss +55 -55
  78. package/src/widgets/form/UploadButton.d.ts +34 -34
  79. package/src/widgets/form/variables.scss +353 -353
  80. package/src/widgets/grid/Grid.d.ts +442 -442
  81. package/src/widgets/grid/GridRow.js +228 -228
  82. package/src/widgets/grid/TreeNode.d.ts +23 -23
  83. package/src/widgets/grid/TreeNode.scss +88 -88
  84. package/src/widgets/grid/variables.scss +133 -133
  85. package/src/widgets/nav/LinkButton.js +128 -128
  86. package/src/widgets/nav/Menu.scss +74 -74
  87. package/src/widgets/overlay/Dropdown.js +612 -612
  88. package/src/widgets/overlay/FlyweightTooltipTracker.js +39 -39
  89. package/src/widgets/overlay/Overlay.d.ts +73 -73
  90. package/src/widgets/overlay/Window.js +202 -202
  91. package/src/widgets/overlay/captureMouse.js +124 -124
  92. package/src/widgets/overlay/createHotPromiseWindowFactory.d.ts +18 -18
  93. package/src/widgets/overlay/createHotPromiseWindowFactory.js +56 -56
  94. package/src/widgets/overlay/index.d.ts +11 -11
  95. package/src/widgets/overlay/index.js +11 -11
  96. package/src/widgets/variables.scss +144 -144
@@ -1,241 +1,241 @@
1
- import { Axis } from "./Axis";
2
- import { VDOM } from "../../ui/Widget";
3
- import { isUndefined } from "../../util/isUndefined";
4
- import { isArray } from "../../util/isArray";
5
- import { Format } from "../../util/Format";
6
-
7
- export class CategoryAxis extends Axis {
8
- declareData() {
9
- super.declareData(...arguments, {
10
- inverted: undefined,
11
- uniform: undefined,
12
- names: undefined,
13
- values: undefined,
14
- minSize: undefined,
15
- categoryCount: undefined,
16
- format: undefined,
17
- });
18
- }
19
-
20
- initInstance(context, instance) {
21
- instance.calculator = new CategoryScale();
22
- }
23
-
24
- explore(context, instance) {
25
- super.explore(context, instance);
26
- var { values, names, inverted, uniform, minSize } = instance.data;
27
- instance.calculator.reset(inverted, uniform, values, names, minSize, this.minTickDistance, this.minLabelDistance);
28
- }
29
-
30
- reportData(context, instance) {
31
- instance.set("categoryCount", instance.calculator.valueList.length);
32
- }
33
-
34
- render(context, instance, key) {
35
- var { data, calculator } = instance;
36
-
37
- if (!data.bounds.valid()) return null;
38
-
39
- let labelGetter = (v) => calculator.names[v] ?? v;
40
- let labelFormatter = labelGetter;
41
- if (data.format) {
42
- let formatter = Format.parse(data.format);
43
- labelFormatter = (v) => formatter(labelGetter(v));
44
- }
45
- return (
46
- <g key={key} className={data.classNames} style={data.style}>
47
- {this.renderTicksAndLabels(context, instance, labelFormatter)}
48
- </g>
49
- );
50
- }
51
- }
52
-
53
- CategoryAxis.prototype.baseClass = "categoryaxis";
54
- CategoryAxis.prototype.anchors = "0 1 1 0";
55
- CategoryAxis.prototype.vertical = false;
56
- CategoryAxis.prototype.inverted = false;
57
- CategoryAxis.prototype.uniform = false;
58
- CategoryAxis.prototype.labelOffset = 10;
59
- CategoryAxis.prototype.labelRotation = 0;
60
- CategoryAxis.prototype.labelAnchor = "auto";
61
- CategoryAxis.prototype.labelDx = "auto";
62
- CategoryAxis.prototype.labelDy = "auto";
63
- CategoryAxis.prototype.minSize = 1;
64
- CategoryAxis.prototype.minLabelDistanceHorizontal = 0;
65
- CategoryAxis.prototype.minLabelDistanceVertical = 0;
66
- CategoryAxis.prototype.minTickDistance = 0;
67
-
68
- Axis.alias("category", CategoryAxis);
69
-
70
- class CategoryScale {
71
- reset(inverted, uniform, values, names, minSize, minTickDistance, minLabelDistance) {
72
- this.padding = 0.5;
73
- delete this.min;
74
- delete this.max;
75
- delete this.minValue;
76
- delete this.maxValue;
77
- this.minSize = minSize;
78
- this.valuesMap = {};
79
- this.valueList = [];
80
- this.inverted = inverted;
81
- this.uniform = uniform;
82
- this.valueStacks = {};
83
- this.names = {};
84
- this.minTickDistance = minTickDistance;
85
- this.minLabelDistance = minLabelDistance;
86
-
87
- if (values) {
88
- if (isArray(values)) values.forEach((v) => this.acknowledge(v));
89
- else if (typeof values == "object")
90
- for (var k in values) {
91
- this.acknowledge(k);
92
- this.names[k] = values[k];
93
- }
94
- }
95
-
96
- if (names) {
97
- if (isArray(names)) {
98
- values = values || [];
99
- names.forEach((name, index) => {
100
- var value = values[index];
101
- this.names[value != null ? value : index] = name;
102
- });
103
- } else this.names = names;
104
- }
105
- }
106
-
107
- decodeValue(n) {
108
- return n;
109
- }
110
-
111
- encodeValue(v) {
112
- return v;
113
- }
114
-
115
- map(v, offset = 0) {
116
- var index = this.valuesMap[v] || 0;
117
-
118
- return this.origin + (index + offset - this.min + this.padding) * this.factor;
119
- }
120
-
121
- measure(a, b) {
122
- this.a = a;
123
- this.b = b;
124
-
125
- if (this.min == null) this.min = this.minValue || 0;
126
-
127
- if (this.max == null) this.max = !isNaN(this.maxValue) ? this.maxValue : 100;
128
-
129
- var sign = this.inverted ? -1 : 1;
130
-
131
- if (this.max - this.min + 1 < this.minSize) {
132
- this.factor = (sign * (this.b - this.a)) / this.minSize;
133
- this.origin = (this.b + this.a) * 0.5 - (this.factor * (this.max - this.min + 1)) / 2;
134
- } else {
135
- this.factor = (sign * (this.b - this.a)) / (this.max - this.min + 2 * this.padding);
136
- this.origin = (this.a * (1 + sign)) / 2 + (this.b * (1 - sign)) / 2; //a || b
137
- }
138
-
139
- this.tickSizes = [];
140
- let tickMultiplier = [1, 2, 5];
141
- let absFactor = Math.abs(this.factor);
142
- for (let base = 1; base < 10000 && this.tickSizes.length < 2; base *= 10) {
143
- for (let m of tickMultiplier) {
144
- if (base * m * absFactor >= this.minTickDistance && this.tickSizes.length == 0)
145
- this.tickSizes.push(base * m);
146
- if (base * m * absFactor >= this.minLabelDistance) {
147
- this.tickSizes.push(base * m);
148
- break;
149
- }
150
- }
151
- }
152
- }
153
-
154
- hash() {
155
- return {
156
- origin: this.origin,
157
- factor: this.factor,
158
- min: this.min,
159
- minSize: this.minSize,
160
- padding: this.padding,
161
- values: this.valueList.join(":"),
162
- names: JSON.stringify(this.names),
163
- };
164
- }
165
-
166
- isSame(x) {
167
- var h = this.hash();
168
- var same = x && !Object.keys(h).some((k) => x[k] !== h[k]);
169
- this.shouldUpdate = !same;
170
- return same;
171
- }
172
-
173
- acknowledge(value, width = 0, offset = 0) {
174
- var index = this.valuesMap[value];
175
- if (isUndefined(index)) {
176
- index = this.valueList.length;
177
- this.valueList.push(value);
178
- this.valuesMap[value] = index;
179
- }
180
-
181
- if (this.minValue == null || index < this.minValue) {
182
- this.minValue = index;
183
- this.padding = Math.max(this.padding, Math.abs(offset - width / 2));
184
- }
185
-
186
- if (this.maxValue == null || index > this.maxValue) {
187
- this.maxValue = index;
188
- this.padding = Math.max(this.padding, Math.abs(offset + width / 2));
189
- }
190
- }
191
-
192
- book(value, name) {
193
- if (this.uniform) value = 0;
194
-
195
- var stack = this.valueStacks[value];
196
- if (!stack)
197
- stack = this.valueStacks[value] = {
198
- index: {},
199
- count: 0,
200
- };
201
- if (!stack.index.hasOwnProperty(name)) stack.index[name] = stack.count++;
202
- }
203
-
204
- locate(value, name) {
205
- if (this.uniform) value = 0;
206
-
207
- var stack = this.valueStacks[value];
208
- if (!stack) return [0, 1];
209
-
210
- return [stack.index[name], stack.count];
211
- }
212
-
213
- trackValue(v, offset = 0, constrain = false) {
214
- let index = Math.round((v - this.origin) / this.factor - offset + this.min - this.padding);
215
- if (index < this.min) index = this.min;
216
- if (index > this.max) index = this.max;
217
- return this.valueList[index];
218
- }
219
-
220
- findTickSize(minPxDist) {
221
- for (let tickSize of this.tickSizes) if (tickSize * Math.abs(this.factor) >= minPxDist) return tickSize;
222
- return 1;
223
- }
224
-
225
- getTickSizes() {
226
- return this.tickSizes;
227
- }
228
-
229
- getTicks(tickSizes) {
230
- return tickSizes.map((size) => this.valueList.filter((_, i) => i % size == 0));
231
- }
232
-
233
- mapGridlines() {
234
- let result = [];
235
- if (this.tickSizes.length == 0) return result;
236
- let step = this.tickSizes[0];
237
- for (let index = this.min; index <= this.max + 1; index += step)
238
- result.push(this.origin + (index - 0.5 - this.min + this.padding) * this.factor);
239
- return result;
240
- }
241
- }
1
+ import { Axis } from "./Axis";
2
+ import { VDOM } from "../../ui/Widget";
3
+ import { isUndefined } from "../../util/isUndefined";
4
+ import { isArray } from "../../util/isArray";
5
+ import { Format } from "../../util/Format";
6
+
7
+ export class CategoryAxis extends Axis {
8
+ declareData() {
9
+ super.declareData(...arguments, {
10
+ inverted: undefined,
11
+ uniform: undefined,
12
+ names: undefined,
13
+ values: undefined,
14
+ minSize: undefined,
15
+ categoryCount: undefined,
16
+ format: undefined,
17
+ });
18
+ }
19
+
20
+ initInstance(context, instance) {
21
+ instance.calculator = new CategoryScale();
22
+ }
23
+
24
+ explore(context, instance) {
25
+ super.explore(context, instance);
26
+ var { values, names, inverted, uniform, minSize } = instance.data;
27
+ instance.calculator.reset(inverted, uniform, values, names, minSize, this.minTickDistance, this.minLabelDistance);
28
+ }
29
+
30
+ reportData(context, instance) {
31
+ instance.set("categoryCount", instance.calculator.valueList.length);
32
+ }
33
+
34
+ render(context, instance, key) {
35
+ var { data, calculator } = instance;
36
+
37
+ if (!data.bounds.valid()) return null;
38
+
39
+ let labelGetter = (v) => calculator.names[v] ?? v;
40
+ let labelFormatter = labelGetter;
41
+ if (data.format) {
42
+ let formatter = Format.parse(data.format);
43
+ labelFormatter = (v) => formatter(labelGetter(v));
44
+ }
45
+ return (
46
+ <g key={key} className={data.classNames} style={data.style}>
47
+ {this.renderTicksAndLabels(context, instance, labelFormatter)}
48
+ </g>
49
+ );
50
+ }
51
+ }
52
+
53
+ CategoryAxis.prototype.baseClass = "categoryaxis";
54
+ CategoryAxis.prototype.anchors = "0 1 1 0";
55
+ CategoryAxis.prototype.vertical = false;
56
+ CategoryAxis.prototype.inverted = false;
57
+ CategoryAxis.prototype.uniform = false;
58
+ CategoryAxis.prototype.labelOffset = 10;
59
+ CategoryAxis.prototype.labelRotation = 0;
60
+ CategoryAxis.prototype.labelAnchor = "auto";
61
+ CategoryAxis.prototype.labelDx = "auto";
62
+ CategoryAxis.prototype.labelDy = "auto";
63
+ CategoryAxis.prototype.minSize = 1;
64
+ CategoryAxis.prototype.minLabelDistanceHorizontal = 0;
65
+ CategoryAxis.prototype.minLabelDistanceVertical = 0;
66
+ CategoryAxis.prototype.minTickDistance = 0;
67
+
68
+ Axis.alias("category", CategoryAxis);
69
+
70
+ class CategoryScale {
71
+ reset(inverted, uniform, values, names, minSize, minTickDistance, minLabelDistance) {
72
+ this.padding = 0.5;
73
+ delete this.min;
74
+ delete this.max;
75
+ delete this.minValue;
76
+ delete this.maxValue;
77
+ this.minSize = minSize;
78
+ this.valuesMap = {};
79
+ this.valueList = [];
80
+ this.inverted = inverted;
81
+ this.uniform = uniform;
82
+ this.valueStacks = {};
83
+ this.names = {};
84
+ this.minTickDistance = minTickDistance;
85
+ this.minLabelDistance = minLabelDistance;
86
+
87
+ if (values) {
88
+ if (isArray(values)) values.forEach((v) => this.acknowledge(v));
89
+ else if (typeof values == "object")
90
+ for (var k in values) {
91
+ this.acknowledge(k);
92
+ this.names[k] = values[k];
93
+ }
94
+ }
95
+
96
+ if (names) {
97
+ if (isArray(names)) {
98
+ values = values || [];
99
+ names.forEach((name, index) => {
100
+ var value = values[index];
101
+ this.names[value != null ? value : index] = name;
102
+ });
103
+ } else this.names = names;
104
+ }
105
+ }
106
+
107
+ decodeValue(n) {
108
+ return n;
109
+ }
110
+
111
+ encodeValue(v) {
112
+ return v;
113
+ }
114
+
115
+ map(v, offset = 0) {
116
+ var index = this.valuesMap[v] || 0;
117
+
118
+ return this.origin + (index + offset - this.min + this.padding) * this.factor;
119
+ }
120
+
121
+ measure(a, b) {
122
+ this.a = a;
123
+ this.b = b;
124
+
125
+ if (this.min == null) this.min = this.minValue || 0;
126
+
127
+ if (this.max == null) this.max = !isNaN(this.maxValue) ? this.maxValue : 100;
128
+
129
+ var sign = this.inverted ? -1 : 1;
130
+
131
+ if (this.max - this.min + 1 < this.minSize) {
132
+ this.factor = (sign * (this.b - this.a)) / this.minSize;
133
+ this.origin = (this.b + this.a) * 0.5 - (this.factor * (this.max - this.min + 1)) / 2;
134
+ } else {
135
+ this.factor = (sign * (this.b - this.a)) / (this.max - this.min + 2 * this.padding);
136
+ this.origin = (this.a * (1 + sign)) / 2 + (this.b * (1 - sign)) / 2; //a || b
137
+ }
138
+
139
+ this.tickSizes = [];
140
+ let tickMultiplier = [1, 2, 5];
141
+ let absFactor = Math.abs(this.factor);
142
+ for (let base = 1; base < 10000 && this.tickSizes.length < 2; base *= 10) {
143
+ for (let m of tickMultiplier) {
144
+ if (base * m * absFactor >= this.minTickDistance && this.tickSizes.length == 0)
145
+ this.tickSizes.push(base * m);
146
+ if (base * m * absFactor >= this.minLabelDistance) {
147
+ this.tickSizes.push(base * m);
148
+ break;
149
+ }
150
+ }
151
+ }
152
+ }
153
+
154
+ hash() {
155
+ return {
156
+ origin: this.origin,
157
+ factor: this.factor,
158
+ min: this.min,
159
+ minSize: this.minSize,
160
+ padding: this.padding,
161
+ values: this.valueList.join(":"),
162
+ names: JSON.stringify(this.names),
163
+ };
164
+ }
165
+
166
+ isSame(x) {
167
+ var h = this.hash();
168
+ var same = x && !Object.keys(h).some((k) => x[k] !== h[k]);
169
+ this.shouldUpdate = !same;
170
+ return same;
171
+ }
172
+
173
+ acknowledge(value, width = 0, offset = 0) {
174
+ var index = this.valuesMap[value];
175
+ if (isUndefined(index)) {
176
+ index = this.valueList.length;
177
+ this.valueList.push(value);
178
+ this.valuesMap[value] = index;
179
+ }
180
+
181
+ if (this.minValue == null || index < this.minValue) {
182
+ this.minValue = index;
183
+ this.padding = Math.max(this.padding, Math.abs(offset - width / 2));
184
+ }
185
+
186
+ if (this.maxValue == null || index > this.maxValue) {
187
+ this.maxValue = index;
188
+ this.padding = Math.max(this.padding, Math.abs(offset + width / 2));
189
+ }
190
+ }
191
+
192
+ book(value, name) {
193
+ if (this.uniform) value = 0;
194
+
195
+ var stack = this.valueStacks[value];
196
+ if (!stack)
197
+ stack = this.valueStacks[value] = {
198
+ index: {},
199
+ count: 0,
200
+ };
201
+ if (!stack.index.hasOwnProperty(name)) stack.index[name] = stack.count++;
202
+ }
203
+
204
+ locate(value, name) {
205
+ if (this.uniform) value = 0;
206
+
207
+ var stack = this.valueStacks[value];
208
+ if (!stack) return [0, 1];
209
+
210
+ return [stack.index[name], stack.count];
211
+ }
212
+
213
+ trackValue(v, offset = 0, constrain = false) {
214
+ let index = Math.round((v - this.origin) / this.factor - offset + this.min - this.padding);
215
+ if (index < this.min) index = this.min;
216
+ if (index > this.max) index = this.max;
217
+ return this.valueList[index];
218
+ }
219
+
220
+ findTickSize(minPxDist) {
221
+ for (let tickSize of this.tickSizes) if (tickSize * Math.abs(this.factor) >= minPxDist) return tickSize;
222
+ return 1;
223
+ }
224
+
225
+ getTickSizes() {
226
+ return this.tickSizes;
227
+ }
228
+
229
+ getTicks(tickSizes) {
230
+ return tickSizes.map((size) => this.valueList.filter((_, i) => i % size == 0));
231
+ }
232
+
233
+ mapGridlines() {
234
+ let result = [];
235
+ if (this.tickSizes.length == 0) return result;
236
+ let step = this.tickSizes[0];
237
+ for (let index = this.min; index <= this.max + 1; index += step)
238
+ result.push(this.origin + (index - 0.5 - this.min + this.padding) * this.factor);
239
+ return result;
240
+ }
241
+ }