cx 25.4.1 → 25.5.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 (140) hide show
  1. package/dist/charts.js +2 -2
  2. package/dist/data.js +17 -3
  3. package/dist/manifest.js +732 -732
  4. package/dist/ui.js +94 -61
  5. package/dist/widgets.js +25 -13
  6. package/package.json +1 -1
  7. package/src/charts/Legend.d.ts +45 -45
  8. package/src/charts/LegendEntry.js +128 -128
  9. package/src/charts/LegendEntry.scss +27 -27
  10. package/src/charts/PieChart.d.ts +92 -92
  11. package/src/charts/RangeMarker.js +6 -2
  12. package/src/charts/axis/Axis.d.ts +113 -113
  13. package/src/charts/axis/Axis.js +280 -280
  14. package/src/charts/axis/CategoryAxis.d.ts +30 -30
  15. package/src/charts/axis/CategoryAxis.js +241 -241
  16. package/src/charts/axis/NumericAxis.d.ts +46 -46
  17. package/src/charts/axis/NumericAxis.js +351 -351
  18. package/src/charts/axis/Stack.js +55 -55
  19. package/src/charts/axis/TimeAxis.d.ts +31 -28
  20. package/src/charts/axis/TimeAxis.js +611 -611
  21. package/src/charts/helpers/PointReducer.js +47 -47
  22. package/src/charts/helpers/SnapPointFinder.js +69 -69
  23. package/src/data/AugmentedViewBase.js +77 -75
  24. package/src/data/Binding.spec.js +69 -69
  25. package/src/data/ExposedRecordView.js +75 -70
  26. package/src/data/ExposedValueView.js +73 -72
  27. package/src/data/Expression.js +229 -229
  28. package/src/data/Expression.spec.js +229 -229
  29. package/src/data/Ref.d.ts +24 -24
  30. package/src/data/Ref.spec.js +79 -79
  31. package/src/data/StoreRef.spec.js +24 -24
  32. package/src/data/StringTemplate.js +92 -92
  33. package/src/data/StringTemplate.spec.js +132 -132
  34. package/src/data/StructuredDataAccessor.d.ts +7 -7
  35. package/src/data/StructuredSelector.js +132 -132
  36. package/src/data/SubscribableView.js +54 -54
  37. package/src/data/getAccessor.spec.js +11 -11
  38. package/src/data/getSelector.js +49 -49
  39. package/src/hooks/createLocalStorageRef.d.ts +3 -3
  40. package/src/hooks/createLocalStorageRef.js +20 -20
  41. package/src/index.scss +6 -6
  42. package/src/ui/Container.js +154 -183
  43. package/src/ui/Culture.d.ts +57 -57
  44. package/src/ui/Culture.js +139 -139
  45. package/src/ui/Cx.js +3 -3
  46. package/src/ui/DataProxy.js +45 -44
  47. package/src/ui/DetachedScope.js +98 -94
  48. package/src/ui/FocusManager.js +171 -171
  49. package/src/ui/Format.js +108 -108
  50. package/src/ui/HoverSync.js +147 -147
  51. package/src/ui/Instance.d.ts +1 -1
  52. package/src/ui/Instance.js +25 -16
  53. package/src/ui/IsolatedScope.js +30 -30
  54. package/src/ui/Repeater.d.ts +61 -61
  55. package/src/ui/Repeater.js +109 -102
  56. package/src/ui/Rescope.js +35 -31
  57. package/src/ui/Restate.js +167 -163
  58. package/src/ui/Widget.js +184 -200
  59. package/src/ui/adapter/ArrayAdapter.js +152 -142
  60. package/src/ui/adapter/TreeAdapter.js +101 -100
  61. package/src/ui/createFunctionalComponent.d.ts +1 -1
  62. package/src/ui/createFunctionalComponent.js +31 -36
  63. package/src/ui/layout/ContentPlaceholder.d.ts +19 -19
  64. package/src/ui/layout/ContentPlaceholder.js +105 -105
  65. package/src/ui/layout/ContentPlaceholder.spec.js +579 -579
  66. package/src/ui/layout/LabelsTopLayout.js +134 -134
  67. package/src/ui/layout/exploreChildren.d.ts +12 -15
  68. package/src/ui/layout/exploreChildren.js +27 -40
  69. package/src/util/Format.js +270 -270
  70. package/src/util/date/encodeDate.d.ts +1 -1
  71. package/src/util/date/encodeDate.js +8 -8
  72. package/src/util/date/encodeDateWithTimezoneOffset.d.ts +1 -1
  73. package/src/util/date/index.d.ts +11 -11
  74. package/src/util/date/index.js +11 -11
  75. package/src/util/date/parseDateInvariant.d.ts +3 -3
  76. package/src/util/date/parseDateInvariant.js +20 -20
  77. package/src/util/debounce.js +18 -18
  78. package/src/util/getSearchQueryPredicate.js +59 -59
  79. package/src/util/index.d.ts +51 -51
  80. package/src/util/index.js +54 -54
  81. package/src/util/isValidIdentifierName.d.ts +1 -1
  82. package/src/util/isValidIdentifierName.js +5 -5
  83. package/src/util/isValidIdentifierName.spec.js +33 -33
  84. package/src/util/scss/add-rules.scss +38 -38
  85. package/src/util/validatedDebounce.js +19 -19
  86. package/src/widgets/Button.js +118 -118
  87. package/src/widgets/CxCredit.scss +37 -37
  88. package/src/widgets/HighlightedSearchText.js +36 -36
  89. package/src/widgets/HighlightedSearchText.scss +18 -18
  90. package/src/widgets/List.js +594 -587
  91. package/src/widgets/List.scss +91 -91
  92. package/src/widgets/Sandbox.js +9 -8
  93. package/src/widgets/drag-drop/DropZone.js +214 -214
  94. package/src/widgets/form/Calendar.d.ts +86 -86
  95. package/src/widgets/form/Calendar.js +618 -618
  96. package/src/widgets/form/Calendar.scss +196 -196
  97. package/src/widgets/form/Checkbox.scss +127 -127
  98. package/src/widgets/form/ColorField.js +397 -397
  99. package/src/widgets/form/ColorField.scss +96 -96
  100. package/src/widgets/form/ColorPicker.scss +283 -283
  101. package/src/widgets/form/DateTimeField.js +576 -576
  102. package/src/widgets/form/DateTimePicker.js +392 -392
  103. package/src/widgets/form/LookupField.d.ts +179 -179
  104. package/src/widgets/form/LookupField.scss +219 -219
  105. package/src/widgets/form/MonthField.d.ts +99 -99
  106. package/src/widgets/form/MonthField.js +523 -523
  107. package/src/widgets/form/MonthPicker.d.ts +76 -76
  108. package/src/widgets/form/MonthPicker.js +641 -641
  109. package/src/widgets/form/MonthPicker.scss +118 -118
  110. package/src/widgets/form/NumberField.js +459 -459
  111. package/src/widgets/form/NumberField.scss +61 -61
  112. package/src/widgets/form/Radio.scss +121 -121
  113. package/src/widgets/form/Select.scss +99 -99
  114. package/src/widgets/form/Slider.scss +118 -118
  115. package/src/widgets/form/Switch.scss +140 -140
  116. package/src/widgets/form/TextArea.scss +43 -43
  117. package/src/widgets/form/TextField.js +290 -290
  118. package/src/widgets/form/TextField.scss +55 -55
  119. package/src/widgets/form/UploadButton.d.ts +34 -34
  120. package/src/widgets/form/variables.scss +353 -353
  121. package/src/widgets/grid/Grid.d.ts +442 -442
  122. package/src/widgets/grid/Grid.js +7 -0
  123. package/src/widgets/grid/GridRow.js +228 -228
  124. package/src/widgets/grid/TreeNode.d.ts +23 -23
  125. package/src/widgets/grid/TreeNode.scss +88 -88
  126. package/src/widgets/grid/variables.scss +133 -133
  127. package/src/widgets/nav/LinkButton.js +128 -128
  128. package/src/widgets/nav/Menu.scss +74 -74
  129. package/src/widgets/nav/Route.js +102 -106
  130. package/src/widgets/overlay/Dropdown.js +612 -612
  131. package/src/widgets/overlay/FlyweightTooltipTracker.js +39 -39
  132. package/src/widgets/overlay/Overlay.d.ts +73 -73
  133. package/src/widgets/overlay/Tooltip.js +1 -1
  134. package/src/widgets/overlay/Window.js +202 -202
  135. package/src/widgets/overlay/captureMouse.js +124 -124
  136. package/src/widgets/overlay/createHotPromiseWindowFactory.d.ts +18 -18
  137. package/src/widgets/overlay/createHotPromiseWindowFactory.js +56 -56
  138. package/src/widgets/overlay/index.d.ts +11 -11
  139. package/src/widgets/overlay/index.js +11 -11
  140. package/src/widgets/variables.scss +144 -144
@@ -1,18 +1,18 @@
1
- export function debounce(callback, delay) {
2
- let timer;
3
-
4
- let result = function (...args) {
5
- let context = this;
6
- clearTimeout(timer);
7
- timer = setTimeout(function () {
8
- callback.apply(context, args);
9
- }, delay);
10
- };
11
-
12
- result.reset = function reset(...args) {
13
- clearTimeout(timer);
14
- callback.apply(this, args);
15
- };
16
-
17
- return result;
18
- }
1
+ export function debounce(callback, delay) {
2
+ let timer;
3
+
4
+ let result = function (...args) {
5
+ let context = this;
6
+ clearTimeout(timer);
7
+ timer = setTimeout(function () {
8
+ callback.apply(context, args);
9
+ }, delay);
10
+ };
11
+
12
+ result.reset = function reset(...args) {
13
+ clearTimeout(timer);
14
+ callback.apply(this, args);
15
+ };
16
+
17
+ return result;
18
+ }
@@ -1,59 +1,59 @@
1
- import { escapeSpecialRegexCharacters } from "./escapeSpecialRegexCharacters";
2
-
3
- function getTermsAndRegularExpressions(query) {
4
- if (!query) return [[], []];
5
- let terms = query.split(" ").filter(Boolean);
6
- let regexes = terms.map((word) => new RegExp(escapeSpecialRegexCharacters(word), "gi"));
7
- return [terms, regexes];
8
- }
9
-
10
- export function getSearchQueryPredicate(query, options) {
11
- let [terms, regexes] = getTermsAndRegularExpressions(query);
12
- if (terms.length == 0) return () => true;
13
- if (regexes.length == 1) {
14
- let regex = regexes[0];
15
- return (text) => text && text.match(regex);
16
- }
17
- return (text) => text && regexes.every((re) => text.match(re));
18
- }
19
-
20
- var highlighterCache = {};
21
-
22
- export function getSearchQueryHighlighter(query, options) {
23
- let [terms, regexes] = getTermsAndRegularExpressions(query);
24
- if (terms.length == 0) return (text) => [text];
25
-
26
- if (highlighterCache[query]) return highlighterCache[query];
27
-
28
- let result = (query) => {
29
- query = new String(query);
30
- let chunks = [query];
31
- for (let i = 0; i < regexes.length; i++) {
32
- let newChunks = [];
33
- for (let j = 0; j < chunks.length; j++) {
34
- let at = 0;
35
- let chunk = chunks[j];
36
- let parts = chunk.split(regexes[i]);
37
- for (let k = 0; k < parts.length; k++) {
38
- newChunks.push(parts[k]);
39
- at += parts[k].length;
40
- if (k < parts.length - 1) {
41
- newChunks.push(chunk.substr(at, terms[i].length));
42
- at += terms[i].length;
43
- }
44
- }
45
- }
46
- chunks = newChunks;
47
- }
48
- return chunks;
49
- };
50
-
51
- if (options?.cache) {
52
- highlighterCache[query] = result;
53
- setTimeout(() => {
54
- delete highlighterCache[query];
55
- }, options?.cachePeriod || 5000);
56
- }
57
-
58
- return result;
59
- }
1
+ import { escapeSpecialRegexCharacters } from "./escapeSpecialRegexCharacters";
2
+
3
+ function getTermsAndRegularExpressions(query) {
4
+ if (!query) return [[], []];
5
+ let terms = query.split(" ").filter(Boolean);
6
+ let regexes = terms.map((word) => new RegExp(escapeSpecialRegexCharacters(word), "gi"));
7
+ return [terms, regexes];
8
+ }
9
+
10
+ export function getSearchQueryPredicate(query, options) {
11
+ let [terms, regexes] = getTermsAndRegularExpressions(query);
12
+ if (terms.length == 0) return () => true;
13
+ if (regexes.length == 1) {
14
+ let regex = regexes[0];
15
+ return (text) => text && text.match(regex);
16
+ }
17
+ return (text) => text && regexes.every((re) => text.match(re));
18
+ }
19
+
20
+ var highlighterCache = {};
21
+
22
+ export function getSearchQueryHighlighter(query, options) {
23
+ let [terms, regexes] = getTermsAndRegularExpressions(query);
24
+ if (terms.length == 0) return (text) => [text];
25
+
26
+ if (highlighterCache[query]) return highlighterCache[query];
27
+
28
+ let result = (query) => {
29
+ query = new String(query);
30
+ let chunks = [query];
31
+ for (let i = 0; i < regexes.length; i++) {
32
+ let newChunks = [];
33
+ for (let j = 0; j < chunks.length; j++) {
34
+ let at = 0;
35
+ let chunk = chunks[j];
36
+ let parts = chunk.split(regexes[i]);
37
+ for (let k = 0; k < parts.length; k++) {
38
+ newChunks.push(parts[k]);
39
+ at += parts[k].length;
40
+ if (k < parts.length - 1) {
41
+ newChunks.push(chunk.substr(at, terms[i].length));
42
+ at += terms[i].length;
43
+ }
44
+ }
45
+ }
46
+ chunks = newChunks;
47
+ }
48
+ return chunks;
49
+ };
50
+
51
+ if (options?.cache) {
52
+ highlighterCache[query] = result;
53
+ setTimeout(() => {
54
+ delete highlighterCache[query];
55
+ }, options?.cachePeriod || 5000);
56
+ }
57
+
58
+ return result;
59
+ }
@@ -1,51 +1,51 @@
1
- export * from "./Console";
2
- export * from "./Debug";
3
- export * from "./DOM";
4
- export * from "./Format";
5
- export * from "./expandFatArrows";
6
- export * from "./GlobalCacheIdentifier";
7
- export * from "./innerTextTrim";
8
- export * from "./isDigit";
9
- export * from "./isPromise";
10
- export * from "./isTouchDevice";
11
- export * from "./KeyCode";
12
- export * from "./parseStyle";
13
- export * from "./quote";
14
- export * from "./scrollElementIntoView";
15
- export * from "./shallowEquals";
16
- export * from "./Timing";
17
- export * from "./date/index";
18
- export * from "./color/index";
19
- export * from "./getVendorPrefix";
20
- export * from "./eventCallbacks";
21
- export * from "./getSearchQueryPredicate";
22
- export * from "./escapeSpecialRegexCharacters";
23
- export * from "./browserSupportsPassiveEventHandlers";
24
- export * from "./isTouchEvent";
25
- export * from "./debounce";
26
- export * from "./throttle";
27
- export * from "./SubscriberList";
28
- export * from "./findScrollableParent";
29
- export * from "./getScrollerBoundingClientRect";
30
- export * from "./isNonEmptyArray";
31
- export * from "./isArray";
32
- export * from "./isObject";
33
- export * from "./isNumber";
34
- export * from "./isFunction";
35
- export * from "./isString";
36
- export * from "./isUndefined";
37
- export * from "./isDefined";
38
- export * from "./routeAppend";
39
- export * from "./reverseSlice";
40
- export * from "./getTopLevelBoundingClientRect";
41
- export * from "./getParentFrameBoundingClientRect";
42
- export * from "./getActiveElement";
43
- export * from "./Component";
44
- export * from "./onIdleCallback";
45
- export * from "./validatedDebounce";
46
- export * from "./addEventListenerWithOptions";
47
- export * from "./coalesce";
48
- export * from "./dummyCallback";
49
- export * from "./calculateNaturalElementHeight";
50
- export * from "./isTextInputElement";
51
- export * from "./isValidIdentifierName";
1
+ export * from "./Console";
2
+ export * from "./Debug";
3
+ export * from "./DOM";
4
+ export * from "./Format";
5
+ export * from "./expandFatArrows";
6
+ export * from "./GlobalCacheIdentifier";
7
+ export * from "./innerTextTrim";
8
+ export * from "./isDigit";
9
+ export * from "./isPromise";
10
+ export * from "./isTouchDevice";
11
+ export * from "./KeyCode";
12
+ export * from "./parseStyle";
13
+ export * from "./quote";
14
+ export * from "./scrollElementIntoView";
15
+ export * from "./shallowEquals";
16
+ export * from "./Timing";
17
+ export * from "./date/index";
18
+ export * from "./color/index";
19
+ export * from "./getVendorPrefix";
20
+ export * from "./eventCallbacks";
21
+ export * from "./getSearchQueryPredicate";
22
+ export * from "./escapeSpecialRegexCharacters";
23
+ export * from "./browserSupportsPassiveEventHandlers";
24
+ export * from "./isTouchEvent";
25
+ export * from "./debounce";
26
+ export * from "./throttle";
27
+ export * from "./SubscriberList";
28
+ export * from "./findScrollableParent";
29
+ export * from "./getScrollerBoundingClientRect";
30
+ export * from "./isNonEmptyArray";
31
+ export * from "./isArray";
32
+ export * from "./isObject";
33
+ export * from "./isNumber";
34
+ export * from "./isFunction";
35
+ export * from "./isString";
36
+ export * from "./isUndefined";
37
+ export * from "./isDefined";
38
+ export * from "./routeAppend";
39
+ export * from "./reverseSlice";
40
+ export * from "./getTopLevelBoundingClientRect";
41
+ export * from "./getParentFrameBoundingClientRect";
42
+ export * from "./getActiveElement";
43
+ export * from "./Component";
44
+ export * from "./onIdleCallback";
45
+ export * from "./validatedDebounce";
46
+ export * from "./addEventListenerWithOptions";
47
+ export * from "./coalesce";
48
+ export * from "./dummyCallback";
49
+ export * from "./calculateNaturalElementHeight";
50
+ export * from "./isTextInputElement";
51
+ export * from "./isValidIdentifierName";
package/src/util/index.js CHANGED
@@ -1,54 +1,54 @@
1
- export * from "./Console";
2
- export * from "./Debug";
3
- export * from "./DOM";
4
- export * from "./Format";
5
- export * from "./expandFatArrows";
6
- export * from "./GlobalCacheIdentifier";
7
- export * from "./innerTextTrim";
8
- export * from "./isDigit";
9
- export * from "./isPromise";
10
- export * from "./isTouchDevice";
11
- export * from "./KeyCode";
12
- export * from "./parseStyle";
13
- export * from "./quote";
14
- export * from "./scrollElementIntoView";
15
- export * from "./shallowEquals";
16
- export * from "./Timing";
17
- export * from "./date/index";
18
- export * from "./color/index";
19
- export * from "./getVendorPrefix";
20
- export * from "./eventCallbacks";
21
- export * from "./getSearchQueryPredicate";
22
- export * from "./escapeSpecialRegexCharacters";
23
- export * from "./browserSupportsPassiveEventHandlers";
24
- export * from "./isTouchEvent";
25
- export * from "./debounce";
26
- export * from "./throttle";
27
- export * from "./SubscriberList";
28
- export * from "./findScrollableParent";
29
- export * from "./getScrollerBoundingClientRect";
30
- export * from "./isNonEmptyArray";
31
- export * from "./isArray";
32
- export * from "./isObject";
33
- export * from "./isNumber";
34
- export * from "./isFunction";
35
- export * from "./isString";
36
- export * from "./isUndefined";
37
- export * from "./isDefined";
38
- export * from "./routeAppend";
39
- export * from "./reverseSlice";
40
- export * from "./getTopLevelBoundingClientRect";
41
- export * from "./getParentFrameBoundingClientRect";
42
- export * from "./getActiveElement";
43
- export * from "./Component";
44
- export * from "./onIdleCallback";
45
- export * from "./validatedDebounce";
46
- export * from "./addEventListenerWithOptions";
47
- export * from "./coalesce";
48
- export * from "./dummyCallback";
49
- export * from "./calculateNaturalElementHeight";
50
- export * from "./isTextInputElement";
51
- export * from "./capitalize";
52
- export * from "./isValidIdentifierName";
53
-
54
- export * from "./TraversalStack";
1
+ export * from "./Console";
2
+ export * from "./Debug";
3
+ export * from "./DOM";
4
+ export * from "./Format";
5
+ export * from "./expandFatArrows";
6
+ export * from "./GlobalCacheIdentifier";
7
+ export * from "./innerTextTrim";
8
+ export * from "./isDigit";
9
+ export * from "./isPromise";
10
+ export * from "./isTouchDevice";
11
+ export * from "./KeyCode";
12
+ export * from "./parseStyle";
13
+ export * from "./quote";
14
+ export * from "./scrollElementIntoView";
15
+ export * from "./shallowEquals";
16
+ export * from "./Timing";
17
+ export * from "./date/index";
18
+ export * from "./color/index";
19
+ export * from "./getVendorPrefix";
20
+ export * from "./eventCallbacks";
21
+ export * from "./getSearchQueryPredicate";
22
+ export * from "./escapeSpecialRegexCharacters";
23
+ export * from "./browserSupportsPassiveEventHandlers";
24
+ export * from "./isTouchEvent";
25
+ export * from "./debounce";
26
+ export * from "./throttle";
27
+ export * from "./SubscriberList";
28
+ export * from "./findScrollableParent";
29
+ export * from "./getScrollerBoundingClientRect";
30
+ export * from "./isNonEmptyArray";
31
+ export * from "./isArray";
32
+ export * from "./isObject";
33
+ export * from "./isNumber";
34
+ export * from "./isFunction";
35
+ export * from "./isString";
36
+ export * from "./isUndefined";
37
+ export * from "./isDefined";
38
+ export * from "./routeAppend";
39
+ export * from "./reverseSlice";
40
+ export * from "./getTopLevelBoundingClientRect";
41
+ export * from "./getParentFrameBoundingClientRect";
42
+ export * from "./getActiveElement";
43
+ export * from "./Component";
44
+ export * from "./onIdleCallback";
45
+ export * from "./validatedDebounce";
46
+ export * from "./addEventListenerWithOptions";
47
+ export * from "./coalesce";
48
+ export * from "./dummyCallback";
49
+ export * from "./calculateNaturalElementHeight";
50
+ export * from "./isTextInputElement";
51
+ export * from "./capitalize";
52
+ export * from "./isValidIdentifierName";
53
+
54
+ export * from "./TraversalStack";
@@ -1 +1 @@
1
- export function isValidIdentifierName(name: string): boolean;
1
+ export function isValidIdentifierName(name: string): boolean;
@@ -1,5 +1,5 @@
1
- const regex = /^[$_\p{ID_Start}][$_\u{200C}\u{200D}\p{ID_Continue}]*$/u;
2
-
3
- export function isValidIdentifierName(name) {
4
- return regex.test(name);
5
- }
1
+ const regex = /^[$_\p{ID_Start}][$_\u{200C}\u{200D}\p{ID_Continue}]*$/u;
2
+
3
+ export function isValidIdentifierName(name) {
4
+ return regex.test(name);
5
+ }
@@ -1,33 +1,33 @@
1
- import { isValidIdentifierName } from "./isValidIdentifierName";
2
- import assert from "assert";
3
-
4
- describe("isValidIdentifierName", function () {
5
- it("names starting with a number are not valid", function () {
6
- assert(!isValidIdentifierName("1a"));
7
- assert(!isValidIdentifierName("00"));
8
- assert(!isValidIdentifierName("0_abc"));
9
- });
10
-
11
- it("names starting with a dollar sign are valid", function () {
12
- assert(isValidIdentifierName("$a"));
13
- assert(isValidIdentifierName("$"));
14
- });
15
-
16
- it("names starting with an underscore are valid", function () {
17
- assert(isValidIdentifierName("_a"));
18
- assert(isValidIdentifierName("_"));
19
- });
20
-
21
- it("names starting with a letter are valid", function () {
22
- assert(isValidIdentifierName("a"));
23
- assert(isValidIdentifierName("abc"));
24
- assert(isValidIdentifierName("abc0123"));
25
- });
26
-
27
- it("names with invalid characters are not valid", function () {
28
- assert(!isValidIdentifierName("a b"));
29
- assert(!isValidIdentifierName("a-b"));
30
- assert(!isValidIdentifierName("a.b"));
31
- assert(!isValidIdentifierName("a!b"));
32
- });
33
- });
1
+ import { isValidIdentifierName } from "./isValidIdentifierName";
2
+ import assert from "assert";
3
+
4
+ describe("isValidIdentifierName", function () {
5
+ it("names starting with a number are not valid", function () {
6
+ assert(!isValidIdentifierName("1a"));
7
+ assert(!isValidIdentifierName("00"));
8
+ assert(!isValidIdentifierName("0_abc"));
9
+ });
10
+
11
+ it("names starting with a dollar sign are valid", function () {
12
+ assert(isValidIdentifierName("$a"));
13
+ assert(isValidIdentifierName("$"));
14
+ });
15
+
16
+ it("names starting with an underscore are valid", function () {
17
+ assert(isValidIdentifierName("_a"));
18
+ assert(isValidIdentifierName("_"));
19
+ });
20
+
21
+ it("names starting with a letter are valid", function () {
22
+ assert(isValidIdentifierName("a"));
23
+ assert(isValidIdentifierName("abc"));
24
+ assert(isValidIdentifierName("abc0123"));
25
+ });
26
+
27
+ it("names with invalid characters are not valid", function () {
28
+ assert(!isValidIdentifierName("a b"));
29
+ assert(!isValidIdentifierName("a-b"));
30
+ assert(!isValidIdentifierName("a.b"));
31
+ assert(!isValidIdentifierName("a!b"));
32
+ });
33
+ });
@@ -1,38 +1,38 @@
1
- @mixin cx-add-rules($styles) {
2
- @each $rule, $value in $styles {
3
- #{$rule}: $value;
4
- }
5
- }
6
-
7
- @mixin cx-add-state-rules($state-style-map, $key) {
8
- @include cx-add-rules(map-get($state-style-map, $key));
9
- }
10
-
11
- @function cx-merge-state-style-maps($state-style-map, $override-style-map) {
12
- $result: $state-style-map;
13
-
14
- @if ($override-style-map != null) {
15
- @each $key, $new-value in $override-style-map {
16
- $old-value: map-get($state-style-map, $key);
17
- @if ($old-value != null) {
18
- $new-value: map-merge($old-value, $new-value);
19
- }
20
- $result: map-merge(
21
- $result,
22
- (
23
- $key: $new-value,
24
- )
25
- );
26
- }
27
- }
28
-
29
- @return $result;
30
- }
31
-
32
- @function cx-get-state-rule($state-style-map, $key, $rule, $default: null) {
33
- $result: map-get(map-get($state-style-map, $key), $rule);
34
- @if ($result != null) {
35
- @return $result;
36
- }
37
- @return $default;
38
- }
1
+ @mixin cx-add-rules($styles) {
2
+ @each $rule, $value in $styles {
3
+ #{$rule}: $value;
4
+ }
5
+ }
6
+
7
+ @mixin cx-add-state-rules($state-style-map, $key) {
8
+ @include cx-add-rules(map-get($state-style-map, $key));
9
+ }
10
+
11
+ @function cx-merge-state-style-maps($state-style-map, $override-style-map) {
12
+ $result: $state-style-map;
13
+
14
+ @if ($override-style-map != null) {
15
+ @each $key, $new-value in $override-style-map {
16
+ $old-value: map-get($state-style-map, $key);
17
+ @if ($old-value != null) {
18
+ $new-value: map-merge($old-value, $new-value);
19
+ }
20
+ $result: map-merge(
21
+ $result,
22
+ (
23
+ $key: $new-value,
24
+ )
25
+ );
26
+ }
27
+ }
28
+
29
+ @return $result;
30
+ }
31
+
32
+ @function cx-get-state-rule($state-style-map, $key, $rule, $default: null) {
33
+ $result: map-get(map-get($state-style-map, $key), $rule);
34
+ @if ($result != null) {
35
+ @return $result;
36
+ }
37
+ @return $default;
38
+ }
@@ -1,19 +1,19 @@
1
- export function validatedDebounce(callback, valueGetter, delay) {
2
- let timer;
3
- let result = function (...args) {
4
- clearTimeout(timer);
5
- let prev = valueGetter();
6
- timer = setTimeout(function () {
7
- let now = valueGetter();
8
- if (prev !== now) return;
9
- callback(...args);
10
- }, delay);
11
- };
12
-
13
- result.reset = function reset(...args) {
14
- clearTimeout(timer);
15
- callback(...args);
16
- };
17
-
18
- return result;
19
- }
1
+ export function validatedDebounce(callback, valueGetter, delay) {
2
+ let timer;
3
+ let result = function (...args) {
4
+ clearTimeout(timer);
5
+ let prev = valueGetter();
6
+ timer = setTimeout(function () {
7
+ let now = valueGetter();
8
+ if (prev !== now) return;
9
+ callback(...args);
10
+ }, delay);
11
+ };
12
+
13
+ result.reset = function reset(...args) {
14
+ clearTimeout(timer);
15
+ callback(...args);
16
+ };
17
+
18
+ return result;
19
+ }