cx 26.0.14 → 26.1.0

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 (249) 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/app/startAppLoop.js +2 -10
  5. package/build/widgets/form/Checkbox.d.ts +0 -1
  6. package/build/widgets/form/Checkbox.js +1 -0
  7. package/build/widgets/form/ColorField.d.ts +0 -1
  8. package/build/widgets/form/ColorField.js +2 -2
  9. package/build/widgets/form/DateTimeField.d.ts +0 -2
  10. package/build/widgets/form/DateTimeField.js +1 -0
  11. package/build/widgets/form/DateTimePicker.d.ts +0 -2
  12. package/build/widgets/form/DateTimePicker.js +1 -0
  13. package/build/widgets/form/Radio.d.ts +0 -1
  14. package/build/widgets/form/Slider.js +9 -1
  15. package/build/widgets/form/Switch.d.ts +0 -1
  16. package/build/widgets/form/Switch.js +1 -1
  17. package/build/widgets/form/Wheel.d.ts +0 -1
  18. package/build/widgets/grid/Grid.d.ts +0 -2
  19. package/build/widgets/grid/GridCellEditor.js +3 -1
  20. package/build/widgets/overlay/Overlay.d.ts +3 -0
  21. package/build/widgets/overlay/Overlay.js +3 -2
  22. package/dist/manifest.js +816 -816
  23. package/dist/ui.js +3 -10
  24. package/dist/widgets.js +18 -6
  25. package/package.json +9 -8
  26. package/src/charts/Chart.ts +108 -108
  27. package/src/data/ArrayElementView.ts +90 -90
  28. package/src/data/AugmentedViewBase.ts +88 -88
  29. package/src/data/Binding.ts +104 -104
  30. package/src/data/ExposedRecordView.ts +95 -95
  31. package/src/data/ExposedValueView.ts +89 -89
  32. package/src/data/Expression.spec.ts +229 -229
  33. package/src/data/Expression.ts +233 -233
  34. package/src/data/Grouper.spec.ts +57 -57
  35. package/src/data/Grouper.ts +158 -158
  36. package/src/data/NestedDataView.ts +43 -43
  37. package/src/data/ReadOnlyDataView.ts +39 -39
  38. package/src/data/Ref.ts +104 -104
  39. package/src/data/Selector.ts +10 -10
  40. package/src/data/Store.ts +52 -52
  41. package/src/data/StoreProxy.ts +19 -19
  42. package/src/data/StoreRef.ts +66 -66
  43. package/src/data/StringTemplate.spec.ts +132 -132
  44. package/src/data/StringTemplate.ts +93 -93
  45. package/src/data/StructuredSelector.spec.ts +113 -113
  46. package/src/data/StructuredSelector.ts +146 -146
  47. package/src/data/SubscribableView.ts +63 -63
  48. package/src/data/ZoomIntoPropertyView.spec.ts +64 -64
  49. package/src/data/ZoomIntoPropertyView.ts +45 -45
  50. package/src/data/computable.spec.ts +87 -87
  51. package/src/data/createStructuredSelector.ts +62 -62
  52. package/src/data/getAccessor.spec.ts +11 -11
  53. package/src/data/getAccessor.ts +74 -74
  54. package/src/data/getSelector.spec.ts +43 -43
  55. package/src/data/getSelector.ts +66 -66
  56. package/src/data/ops/filter.spec.ts +35 -35
  57. package/src/data/ops/filter.ts +9 -9
  58. package/src/data/ops/merge.ts +13 -13
  59. package/src/data/ops/removeTreeNodes.spec.ts +37 -37
  60. package/src/data/ops/updateArray.spec.ts +69 -69
  61. package/src/data/test-types.ts +7 -7
  62. package/src/hooks/useTrigger.ts +26 -26
  63. package/src/index.scss +6 -6
  64. package/src/jsx-dev-runtime.ts +4 -4
  65. package/src/svg/BoundedObject.ts +101 -101
  66. package/src/svg/util/Rect.ts +105 -105
  67. package/src/ui/CSSHelper.ts +17 -17
  68. package/src/ui/Culture.ts +159 -159
  69. package/src/ui/DataProxy.ts +55 -55
  70. package/src/ui/FocusManager.ts +171 -171
  71. package/src/ui/Instance.ts +866 -866
  72. package/src/ui/Prop.ts +140 -140
  73. package/src/ui/RenderingContext.ts +99 -99
  74. package/src/ui/Rescope.ts +49 -49
  75. package/src/ui/StructuredInstanceDataAccessor.ts +32 -32
  76. package/src/ui/VDOM.ts +1 -34
  77. package/src/ui/adapter/ArrayAdapter.spec.ts +55 -55
  78. package/src/ui/adapter/TreeAdapter.spec.ts +76 -76
  79. package/src/ui/adapter/TreeAdapter.ts +185 -185
  80. package/src/ui/app/History.ts +133 -133
  81. package/src/ui/app/Url.spec.ts +50 -50
  82. package/src/ui/app/startAppLoop.tsx +5 -9
  83. package/src/ui/app/startHotAppLoop.ts +41 -41
  84. package/src/ui/layout/Content.ts +30 -30
  85. package/src/ui/layout/FirstVisibleChildLayout.ts +60 -60
  86. package/src/util/Console.ts +13 -13
  87. package/src/util/Format.spec.ts +69 -69
  88. package/src/util/Format.ts +267 -267
  89. package/src/util/addEventListenerWithOptions.ts +41 -41
  90. package/src/util/browserSupportsPassiveEventHandlers.ts +20 -20
  91. package/src/util/color/rgbToHsl.ts +35 -35
  92. package/src/util/getActiveElement.ts +4 -4
  93. package/src/util/hasKey.ts +18 -18
  94. package/src/util/index.ts +55 -55
  95. package/src/util/innerTextTrim.ts +10 -10
  96. package/src/util/isArray.ts +3 -3
  97. package/src/util/isDataRecord.ts +5 -5
  98. package/src/util/isDefined.ts +3 -3
  99. package/src/util/isString.ts +3 -3
  100. package/src/widgets/DocumentTitle.ts +95 -95
  101. package/src/widgets/Sandbox.ts +103 -103
  102. package/src/widgets/autoFocus.ts +9 -9
  103. package/src/widgets/cx.ts +63 -63
  104. package/src/widgets/form/Checkbox.tsx +0 -1
  105. package/src/widgets/form/ColorField.tsx +15 -12
  106. package/src/widgets/form/DateTimeField.tsx +0 -2
  107. package/src/widgets/form/DateTimePicker.tsx +0 -2
  108. package/src/widgets/form/Radio.tsx +0 -1
  109. package/src/widgets/form/Slider.tsx +12 -4
  110. package/src/widgets/form/Switch.tsx +2 -3
  111. package/src/widgets/form/Wheel.tsx +0 -1
  112. package/src/widgets/grid/Grid.tsx +0 -1
  113. package/src/widgets/grid/GridCell.ts +143 -143
  114. package/src/widgets/grid/GridCellEditor.tsx +7 -1
  115. package/src/widgets/icons/calendar.tsx +17 -17
  116. package/src/widgets/icons/check.tsx +13 -13
  117. package/src/widgets/icons/clear.tsx +15 -15
  118. package/src/widgets/icons/close.tsx +20 -20
  119. package/src/widgets/icons/cx.tsx +38 -38
  120. package/src/widgets/icons/drop-down.tsx +15 -15
  121. package/src/widgets/icons/file.tsx +13 -13
  122. package/src/widgets/icons/folder-open.tsx +15 -15
  123. package/src/widgets/icons/folder.tsx +13 -13
  124. package/src/widgets/icons/forward.tsx +22 -22
  125. package/src/widgets/icons/loading.tsx +24 -24
  126. package/src/widgets/icons/menu.tsx +17 -17
  127. package/src/widgets/icons/pixel-picker.tsx +18 -18
  128. package/src/widgets/icons/search.tsx +13 -13
  129. package/src/widgets/icons/sort-asc.tsx +14 -14
  130. package/src/widgets/icons/square.tsx +18 -18
  131. package/src/widgets/nav/Route.ts +142 -142
  132. package/src/widgets/overlay/Dropdown.tsx +762 -762
  133. package/src/widgets/overlay/MsgBox.tsx +141 -141
  134. package/src/widgets/overlay/Overlay.tsx +5 -1
  135. package/src/widgets/overlay/Toast.ts +111 -111
  136. package/src/widgets/overlay/Window.tsx +299 -299
  137. package/src/widgets/overlay/alerts.ts +46 -46
  138. package/src/widgets/overlay/captureMouse.ts +195 -195
  139. package/src/widgets/overlay/createHotPromiseWindowFactory.ts +71 -71
  140. package/src/widgets/overlay/index.d.ts +11 -11
  141. package/src/widgets/overlay/index.ts +11 -11
  142. package/src/widgets/overlay/tooltip-ops.ts +173 -173
  143. package/build/data/ArrayElementView.spec.d.ts +0 -1
  144. package/build/data/ArrayElementView.spec.js +0 -81
  145. package/build/data/Binding.spec.d.ts +0 -1
  146. package/build/data/Binding.spec.js +0 -61
  147. package/build/data/Expression.spec.d.ts +0 -1
  148. package/build/data/Expression.spec.js +0 -196
  149. package/build/data/Grouper.spec.d.ts +0 -1
  150. package/build/data/Grouper.spec.js +0 -48
  151. package/build/data/Ref.spec.d.ts +0 -1
  152. package/build/data/Ref.spec.js +0 -72
  153. package/build/data/Store.spec.d.ts +0 -1
  154. package/build/data/Store.spec.js +0 -19
  155. package/build/data/StoreRef.spec.d.ts +0 -1
  156. package/build/data/StoreRef.spec.js +0 -22
  157. package/build/data/StringTemplate.spec.d.ts +0 -1
  158. package/build/data/StringTemplate.spec.js +0 -112
  159. package/build/data/StructuredSelector.spec.d.ts +0 -1
  160. package/build/data/StructuredSelector.spec.js +0 -102
  161. package/build/data/View.spec.d.ts +0 -1
  162. package/build/data/View.spec.js +0 -44
  163. package/build/data/ZoomIntoPropertyView.spec.d.ts +0 -1
  164. package/build/data/ZoomIntoPropertyView.spec.js +0 -54
  165. package/build/data/comparer.spec.d.ts +0 -1
  166. package/build/data/comparer.spec.js +0 -50
  167. package/build/data/computable.spec.d.ts +0 -1
  168. package/build/data/computable.spec.js +0 -56
  169. package/build/data/createAccessorModelProxy.spec.d.ts +0 -1
  170. package/build/data/createAccessorModelProxy.spec.js +0 -30
  171. package/build/data/createStructuredSelector.spec.d.ts +0 -1
  172. package/build/data/createStructuredSelector.spec.js +0 -42
  173. package/build/data/diff/diffs.spec.d.ts +0 -1
  174. package/build/data/diff/diffs.spec.js +0 -45
  175. package/build/data/getAccessor.spec.d.ts +0 -1
  176. package/build/data/getAccessor.spec.js +0 -10
  177. package/build/data/getSelector.spec.d.ts +0 -1
  178. package/build/data/getSelector.spec.js +0 -36
  179. package/build/data/ops/append.spec.d.ts +0 -1
  180. package/build/data/ops/append.spec.js +0 -24
  181. package/build/data/ops/filter.spec.d.ts +0 -1
  182. package/build/data/ops/filter.spec.js +0 -25
  183. package/build/data/ops/findTreeNode.spec.d.ts +0 -1
  184. package/build/data/ops/findTreeNode.spec.js +0 -20
  185. package/build/data/ops/merge.spec.d.ts +0 -1
  186. package/build/data/ops/merge.spec.js +0 -23
  187. package/build/data/ops/removeTreeNodes.spec.d.ts +0 -1
  188. package/build/data/ops/removeTreeNodes.spec.js +0 -35
  189. package/build/data/ops/updateArray.spec.d.ts +0 -1
  190. package/build/data/ops/updateArray.spec.js +0 -33
  191. package/build/data/ops/updateTree.spec.d.ts +0 -1
  192. package/build/data/ops/updateTree.spec.js +0 -44
  193. package/build/hooks/invokeCallback.spec.d.ts +0 -1
  194. package/build/hooks/invokeCallback.spec.js +0 -44
  195. package/build/hooks/resolveCallback.spec.d.ts +0 -1
  196. package/build/hooks/resolveCallback.spec.js +0 -35
  197. package/build/hooks/store.spec.d.ts +0 -1
  198. package/build/hooks/store.spec.js +0 -48
  199. package/build/hooks/useTrigger.spec.d.ts +0 -1
  200. package/build/hooks/useTrigger.spec.js +0 -59
  201. package/build/ui/Controller.spec.d.ts +0 -1
  202. package/build/ui/Controller.spec.js +0 -247
  203. package/build/ui/Cx.spec.d.ts +0 -1
  204. package/build/ui/Cx.spec.js +0 -153
  205. package/build/ui/DataProxy.spec.d.ts +0 -1
  206. package/build/ui/DataProxy.spec.js +0 -208
  207. package/build/ui/IsolatedScope.spec.d.ts +0 -1
  208. package/build/ui/IsolatedScope.spec.js +0 -42
  209. package/build/ui/PureContainer.spec.d.ts +0 -1
  210. package/build/ui/PureContainer.spec.js +0 -149
  211. package/build/ui/Repeater.spec.d.ts +0 -1
  212. package/build/ui/Repeater.spec.js +0 -109
  213. package/build/ui/Rescope.spec.d.ts +0 -1
  214. package/build/ui/Rescope.spec.js +0 -134
  215. package/build/ui/Restate.spec.d.ts +0 -1
  216. package/build/ui/Restate.spec.js +0 -257
  217. package/build/ui/adapter/ArrayAdapter.spec.d.ts +0 -1
  218. package/build/ui/adapter/ArrayAdapter.spec.js +0 -44
  219. package/build/ui/adapter/TreeAdapter.spec.d.ts +0 -1
  220. package/build/ui/adapter/TreeAdapter.spec.js +0 -71
  221. package/build/ui/app/Url.spec.d.ts +0 -1
  222. package/build/ui/app/Url.spec.js +0 -43
  223. package/build/ui/createFunctionalComponent.spec.d.ts +0 -1
  224. package/build/ui/createFunctionalComponent.spec.js +0 -272
  225. package/build/ui/layout/ContentPlaceholder.spec.d.ts +0 -1
  226. package/build/ui/layout/ContentPlaceholder.spec.js +0 -333
  227. package/build/ui/layout/FirstVisibleChildLayout.spec.d.ts +0 -1
  228. package/build/ui/layout/FirstVisibleChildLayout.spec.js +0 -101
  229. package/build/util/Format.spec.d.ts +0 -1
  230. package/build/util/Format.spec.js +0 -58
  231. package/build/util/TraversalStack.spec.d.ts +0 -1
  232. package/build/util/TraversalStack.spec.js +0 -43
  233. package/build/util/date/upperBoundCheck.spec.d.ts +0 -1
  234. package/build/util/date/upperBoundCheck.spec.js +0 -22
  235. package/build/util/getSearchQueryPredicate.spec.d.ts +0 -1
  236. package/build/util/getSearchQueryPredicate.spec.js +0 -33
  237. package/build/util/isValidIdentifierName.spec.d.ts +0 -1
  238. package/build/util/isValidIdentifierName.spec.js +0 -28
  239. package/build/util/routeAppend.spec.d.ts +0 -1
  240. package/build/util/routeAppend.spec.js +0 -14
  241. package/build/widgets/AccessorBindings.spec.d.ts +0 -1
  242. package/build/widgets/AccessorBindings.spec.js +0 -40
  243. package/build/widgets/HtmlElement.spec.d.ts +0 -1
  244. package/build/widgets/HtmlElement.spec.js +0 -38
  245. package/build/widgets/form/ValidationGroup.spec.d.ts +0 -1
  246. package/build/widgets/form/ValidationGroup.spec.js +0 -62
  247. package/build/widgets/nav/Route.spec.d.ts +0 -1
  248. package/build/widgets/nav/Route.spec.js +0 -15
  249. package/dist/manifest.d.ts +0 -1443
package/src/ui/Prop.ts CHANGED
@@ -1,140 +1,140 @@
1
- import { Selector } from "../data/Selector";
2
- import { AccessorChain } from "../data/createAccessorModelProxy";
3
-
4
- export type Bind = {
5
- bind: string;
6
- defaultValue?: any;
7
- throttle?: number;
8
- debounce?: number;
9
- };
10
-
11
- export type Tpl = {
12
- tpl: string;
13
- };
14
-
15
- export type Expr = {
16
- expr: string;
17
- set?: (value: any, instance?: any) => boolean;
18
- throttle?: number;
19
- debounce?: number;
20
- };
21
-
22
- export type Binding = Bind | Tpl | Expr;
23
-
24
- export type GetSet<T> = {
25
- get: Selector<T>;
26
- set?: (value: T, instance?: any) => boolean;
27
- throttle?: number;
28
- debounce?: number;
29
- };
30
-
31
- export interface StructuredSelector {
32
- [prop: string]: Selector<any>;
33
- }
34
-
35
- export type Prop<T> = T | Binding | Selector<T> | AccessorChain<T> | GetSet<T>;
36
-
37
- export type WritableProp<T> = Bind | AccessorChain<T>;
38
-
39
- export interface DataRecord {
40
- [prop: string]: any;
41
- }
42
-
43
- export interface Config {
44
- [prop: string]: any;
45
- }
46
-
47
- export interface StructuredProp {
48
- [prop: string]: Prop<any>;
49
- }
50
-
51
- /**
52
- * Utility type that extracts the resolved value type from a Prop<T>.
53
- * Used to derive the runtime type of structured props.
54
- */
55
- export type ResolveProp<P> =
56
- P extends Selector<infer T>
57
- ? T
58
- : P extends AccessorChain<infer T>
59
- ? T
60
- : P extends GetSet<infer T>
61
- ? T
62
- : P extends Bind
63
- ? any
64
- : P extends Tpl
65
- ? string
66
- : P extends Expr
67
- ? any
68
- : P;
69
-
70
- /**
71
- * Utility type that resolves a structured prop object to its runtime value types.
72
- * Transforms { name: StringProp, count: NumberProp } to { name: string, count: number }
73
- */
74
- export type ResolveStructuredPropType<S> = {
75
- [K in keyof S]: ResolveProp<S[K]>;
76
- };
77
-
78
- /**
79
- * Resolves the runtime value type from either a Prop<T> or a StructuredProp.
80
- * Use this for generic widgets like ContentResolver and Validator where the
81
- * input can be either a single prop or a structured object.
82
- *
83
- * - For Prop<T> (Selector, AccessorChain, GetSet), resolves to T
84
- * - For bindings (Bind, Tpl, Expr), resolves to any/string/any
85
- * - For structured objects, recursively resolves each property via ResolveStructuredProp
86
- * - For literal values, returns them as-is
87
- */
88
- export type ResolvePropType<P> =
89
- P extends Selector<infer T>
90
- ? T
91
- : P extends AccessorChain<infer T>
92
- ? T
93
- : P extends GetSet<infer T>
94
- ? T
95
- : P extends Bind
96
- ? any
97
- : P extends Tpl
98
- ? string
99
- : P extends Expr
100
- ? any
101
- : P extends object
102
- ? ResolveStructuredPropType<P>
103
- : P;
104
-
105
- /**
106
- * Generic structured prop type that provides type safety for params and their resolved values.
107
- * Use with ContentResolver and similar widgets to type the onResolve callback params.
108
- */
109
- export type TypedStructuredProp<T extends Record<string, any>> = {
110
- [K in keyof T]: Prop<T[K]>;
111
- };
112
-
113
- export type StringProp = Prop<string>;
114
- export type StyleProp = Prop<string | React.CSSProperties> | StructuredProp;
115
- export type NumberProp = Prop<number>;
116
- export type BooleanProp = Prop<boolean>;
117
- export type ClassProp = Prop<string> | StructuredProp;
118
- export type RecordsProp = Prop<DataRecord[]>;
119
- export type SortersProp = Prop<Sorter[]>;
120
- export type UnknownProp = Prop<unknown>;
121
- export type ModProp = StringProp | StructuredProp;
122
-
123
- export type RecordAlias = string | { toString(): string };
124
-
125
- export type SortDirection = "ASC" | "DESC";
126
-
127
- export interface Sorter {
128
- field?: string;
129
- value?: (record: DataRecord) => any;
130
- direction: SortDirection;
131
- }
132
-
133
- export interface CollatorOptions {
134
- localeMatcher?: "lookup" | "best fit";
135
- usage?: "sort" | "search";
136
- sensitivity?: "base" | "accent" | "case" | "variant";
137
- ignorePunctuation?: boolean;
138
- numeric?: boolean;
139
- caseFirst?: "upper" | "lower" | "false";
140
- }
1
+ import { Selector } from "../data/Selector";
2
+ import { AccessorChain } from "../data/createAccessorModelProxy";
3
+
4
+ export type Bind = {
5
+ bind: string;
6
+ defaultValue?: any;
7
+ throttle?: number;
8
+ debounce?: number;
9
+ };
10
+
11
+ export type Tpl = {
12
+ tpl: string;
13
+ };
14
+
15
+ export type Expr = {
16
+ expr: string;
17
+ set?: (value: any, instance?: any) => boolean;
18
+ throttle?: number;
19
+ debounce?: number;
20
+ };
21
+
22
+ export type Binding = Bind | Tpl | Expr;
23
+
24
+ export type GetSet<T> = {
25
+ get: Selector<T>;
26
+ set?: (value: T, instance?: any) => boolean;
27
+ throttle?: number;
28
+ debounce?: number;
29
+ };
30
+
31
+ export interface StructuredSelector {
32
+ [prop: string]: Selector<any>;
33
+ }
34
+
35
+ export type Prop<T> = T | Binding | Selector<T> | AccessorChain<T> | GetSet<T>;
36
+
37
+ export type WritableProp<T> = Bind | AccessorChain<T>;
38
+
39
+ export interface DataRecord {
40
+ [prop: string]: any;
41
+ }
42
+
43
+ export interface Config {
44
+ [prop: string]: any;
45
+ }
46
+
47
+ export interface StructuredProp {
48
+ [prop: string]: Prop<any>;
49
+ }
50
+
51
+ /**
52
+ * Utility type that extracts the resolved value type from a Prop<T>.
53
+ * Used to derive the runtime type of structured props.
54
+ */
55
+ export type ResolveProp<P> =
56
+ P extends Selector<infer T>
57
+ ? T
58
+ : P extends AccessorChain<infer T>
59
+ ? T
60
+ : P extends GetSet<infer T>
61
+ ? T
62
+ : P extends Bind
63
+ ? any
64
+ : P extends Tpl
65
+ ? string
66
+ : P extends Expr
67
+ ? any
68
+ : P;
69
+
70
+ /**
71
+ * Utility type that resolves a structured prop object to its runtime value types.
72
+ * Transforms { name: StringProp, count: NumberProp } to { name: string, count: number }
73
+ */
74
+ export type ResolveStructuredPropType<S> = {
75
+ [K in keyof S]: ResolveProp<S[K]>;
76
+ };
77
+
78
+ /**
79
+ * Resolves the runtime value type from either a Prop<T> or a StructuredProp.
80
+ * Use this for generic widgets like ContentResolver and Validator where the
81
+ * input can be either a single prop or a structured object.
82
+ *
83
+ * - For Prop<T> (Selector, AccessorChain, GetSet), resolves to T
84
+ * - For bindings (Bind, Tpl, Expr), resolves to any/string/any
85
+ * - For structured objects, recursively resolves each property via ResolveStructuredProp
86
+ * - For literal values, returns them as-is
87
+ */
88
+ export type ResolvePropType<P> =
89
+ P extends Selector<infer T>
90
+ ? T
91
+ : P extends AccessorChain<infer T>
92
+ ? T
93
+ : P extends GetSet<infer T>
94
+ ? T
95
+ : P extends Bind
96
+ ? any
97
+ : P extends Tpl
98
+ ? string
99
+ : P extends Expr
100
+ ? any
101
+ : P extends object
102
+ ? ResolveStructuredPropType<P>
103
+ : P;
104
+
105
+ /**
106
+ * Generic structured prop type that provides type safety for params and their resolved values.
107
+ * Use with ContentResolver and similar widgets to type the onResolve callback params.
108
+ */
109
+ export type TypedStructuredProp<T extends Record<string, any>> = {
110
+ [K in keyof T]: Prop<T[K]>;
111
+ };
112
+
113
+ export type StringProp = Prop<string>;
114
+ export type StyleProp = Prop<string | React.CSSProperties> | StructuredProp;
115
+ export type NumberProp = Prop<number>;
116
+ export type BooleanProp = Prop<boolean>;
117
+ export type ClassProp = Prop<string> | StructuredProp;
118
+ export type RecordsProp = Prop<DataRecord[]>;
119
+ export type SortersProp = Prop<Sorter[]>;
120
+ export type UnknownProp = Prop<unknown>;
121
+ export type ModProp = StringProp | StructuredProp;
122
+
123
+ export type RecordAlias = string | { toString(): string };
124
+
125
+ export type SortDirection = "ASC" | "DESC";
126
+
127
+ export interface Sorter {
128
+ field?: string;
129
+ value?: (record: DataRecord) => any;
130
+ direction: SortDirection;
131
+ }
132
+
133
+ export interface CollatorOptions {
134
+ localeMatcher?: "lookup" | "best fit";
135
+ usage?: "sort" | "search";
136
+ sensitivity?: "base" | "accent" | "case" | "variant";
137
+ ignorePunctuation?: boolean;
138
+ numeric?: boolean;
139
+ caseFirst?: "upper" | "lower" | "false";
140
+ }
@@ -1,99 +1,99 @@
1
- import { TraversalStack } from "../util/TraversalStack";
2
- import { reverseSlice } from "../util/reverseSlice";
3
- import { Widget } from "./Widget";
4
-
5
- export type CxChild = Record<string, any> | React.ReactElement | Widget | CxChild[] | null | undefined;
6
-
7
- export class RenderingContext {
8
- options: any;
9
- exploreStack: any;
10
- prepareList: any[];
11
- cleanupList: any[];
12
- stacks: any;
13
- renderList: any;
14
-
15
- [key: string]: any;
16
-
17
- constructor(options?: any) {
18
- this.options = options || {};
19
- this.exploreStack = new TraversalStack();
20
- this.prepareList = [];
21
- this.cleanupList = [];
22
- this.stacks = {};
23
- this.renderList = new LinkedListsNode();
24
- }
25
-
26
- getStack(key: string) {
27
- let stack = this.stacks[key];
28
- if (!stack) stack = this.stacks[key] = [];
29
- return stack;
30
- }
31
-
32
- push(key: string, value: any) {
33
- let stack = this.getStack(key);
34
- stack.push(this[key]);
35
- return (this[key] = value);
36
- }
37
-
38
- pop(key: string) {
39
- let stack = this.getStack(key);
40
- return (this[key] = stack.pop());
41
- }
42
-
43
- pushNamedValue(key: string, name: string, value: any) {
44
- let stack = this.getStack(`${key}:${name}`);
45
- if (!this[key]) this[key] = {};
46
- stack.push(this[key][name]);
47
- return (this[key][name] = value);
48
- }
49
-
50
- popNamedValue(key: string, name: string) {
51
- let stack = this.getStack(`${key}:${name}`);
52
- return (this[key][name] = stack.pop());
53
- }
54
-
55
- get(key: string) {
56
- return this[key];
57
- }
58
-
59
- getRootRenderList() {
60
- let rl = this.renderList;
61
- while (rl.left) rl = rl.left;
62
- return rl;
63
- }
64
- }
65
-
66
- class LinkedListsNode {
67
- left?: LinkedListsNode;
68
- right?: LinkedListsNode;
69
- data: any[];
70
- reverseIndex?: number;
71
-
72
- constructor(left?: LinkedListsNode, right?: LinkedListsNode) {
73
- this.left = left;
74
- this.right = right;
75
- this.data = [];
76
- }
77
-
78
- insertLeft() {
79
- let node = new LinkedListsNode(this.left, this);
80
- if (this.left) this.left.right = node;
81
- this.left = node;
82
- return node;
83
- }
84
-
85
- insertRight() {
86
- let node = new LinkedListsNode(this, this.right);
87
- if (this.right) this.right.left = node;
88
- this.right = node;
89
- return node;
90
- }
91
-
92
- markReverseIndex() {
93
- this.reverseIndex = this.data.length;
94
- }
95
-
96
- reverse() {
97
- reverseSlice(this.data, this.reverseIndex!);
98
- }
99
- }
1
+ import { TraversalStack } from "../util/TraversalStack";
2
+ import { reverseSlice } from "../util/reverseSlice";
3
+ import { Widget } from "./Widget";
4
+
5
+ export type CxChild = Record<string, any> | React.ReactElement | Widget | CxChild[] | null | undefined;
6
+
7
+ export class RenderingContext {
8
+ options: any;
9
+ exploreStack: any;
10
+ prepareList: any[];
11
+ cleanupList: any[];
12
+ stacks: any;
13
+ renderList: any;
14
+
15
+ [key: string]: any;
16
+
17
+ constructor(options?: any) {
18
+ this.options = options || {};
19
+ this.exploreStack = new TraversalStack();
20
+ this.prepareList = [];
21
+ this.cleanupList = [];
22
+ this.stacks = {};
23
+ this.renderList = new LinkedListsNode();
24
+ }
25
+
26
+ getStack(key: string) {
27
+ let stack = this.stacks[key];
28
+ if (!stack) stack = this.stacks[key] = [];
29
+ return stack;
30
+ }
31
+
32
+ push(key: string, value: any) {
33
+ let stack = this.getStack(key);
34
+ stack.push(this[key]);
35
+ return (this[key] = value);
36
+ }
37
+
38
+ pop(key: string) {
39
+ let stack = this.getStack(key);
40
+ return (this[key] = stack.pop());
41
+ }
42
+
43
+ pushNamedValue(key: string, name: string, value: any) {
44
+ let stack = this.getStack(`${key}:${name}`);
45
+ if (!this[key]) this[key] = {};
46
+ stack.push(this[key][name]);
47
+ return (this[key][name] = value);
48
+ }
49
+
50
+ popNamedValue(key: string, name: string) {
51
+ let stack = this.getStack(`${key}:${name}`);
52
+ return (this[key][name] = stack.pop());
53
+ }
54
+
55
+ get(key: string) {
56
+ return this[key];
57
+ }
58
+
59
+ getRootRenderList() {
60
+ let rl = this.renderList;
61
+ while (rl.left) rl = rl.left;
62
+ return rl;
63
+ }
64
+ }
65
+
66
+ class LinkedListsNode {
67
+ left?: LinkedListsNode;
68
+ right?: LinkedListsNode;
69
+ data: any[];
70
+ reverseIndex?: number;
71
+
72
+ constructor(left?: LinkedListsNode, right?: LinkedListsNode) {
73
+ this.left = left;
74
+ this.right = right;
75
+ this.data = [];
76
+ }
77
+
78
+ insertLeft() {
79
+ let node = new LinkedListsNode(this.left, this);
80
+ if (this.left) this.left.right = node;
81
+ this.left = node;
82
+ return node;
83
+ }
84
+
85
+ insertRight() {
86
+ let node = new LinkedListsNode(this, this.right);
87
+ if (this.right) this.right.left = node;
88
+ this.right = node;
89
+ return node;
90
+ }
91
+
92
+ markReverseIndex() {
93
+ this.reverseIndex = this.data.length;
94
+ }
95
+
96
+ reverse() {
97
+ reverseSlice(this.data, this.reverseIndex!);
98
+ }
99
+ }
package/src/ui/Rescope.ts CHANGED
@@ -1,49 +1,49 @@
1
- import { Widget } from "./Widget";
2
- import { PureContainerBase, PureContainerConfig } from "./PureContainer";
3
- import { Binding } from "../data/Binding";
4
- import { ZoomIntoPropertyView } from "../data/ZoomIntoPropertyView";
5
- import { StructuredInstanceDataAccessor } from "./StructuredInstanceDataAccessor";
6
- import { isObject } from "../util/isObject";
7
- import { StructuredProp } from "./Prop";
8
-
9
- export interface RescopeConfig extends PureContainerConfig {
10
- bind: string;
11
- rootName?: string;
12
- rootAlias?: string;
13
- data?: StructuredProp;
14
- }
15
-
16
- export class Rescope extends PureContainerBase<RescopeConfig> {
17
- declare bind: string;
18
- declare binding: any;
19
- declare rootAlias?: string;
20
- declare rootName: string;
21
- declare data?: any;
22
-
23
- init() {
24
- this.binding = Binding.get(this.bind);
25
- if (this.rootAlias) this.rootName = this.rootAlias;
26
- super.init();
27
- }
28
-
29
- initInstance(context: any, instance: any) {
30
- instance.store = new ZoomIntoPropertyView({
31
- store: instance.parentStore,
32
- binding: this.binding,
33
- rootName: this.rootName,
34
- nestedData: isObject(this.data)
35
- ? new StructuredInstanceDataAccessor({ instance, data: this.data, useParentStore: true })
36
- : undefined,
37
- });
38
- super.initInstance(context, instance);
39
- }
40
-
41
- applyParentStore(instance: any) {
42
- instance.store.setStore(instance.parentStore);
43
- }
44
- }
45
-
46
- Rescope.prototype.bind = "$page";
47
- Rescope.prototype.rootName = "$root";
48
-
49
- Widget.alias("rescope", Rescope);
1
+ import { Widget } from "./Widget";
2
+ import { PureContainerBase, PureContainerConfig } from "./PureContainer";
3
+ import { Binding } from "../data/Binding";
4
+ import { ZoomIntoPropertyView } from "../data/ZoomIntoPropertyView";
5
+ import { StructuredInstanceDataAccessor } from "./StructuredInstanceDataAccessor";
6
+ import { isObject } from "../util/isObject";
7
+ import { StructuredProp } from "./Prop";
8
+
9
+ export interface RescopeConfig extends PureContainerConfig {
10
+ bind: string;
11
+ rootName?: string;
12
+ rootAlias?: string;
13
+ data?: StructuredProp;
14
+ }
15
+
16
+ export class Rescope extends PureContainerBase<RescopeConfig> {
17
+ declare bind: string;
18
+ declare binding: any;
19
+ declare rootAlias?: string;
20
+ declare rootName: string;
21
+ declare data?: any;
22
+
23
+ init() {
24
+ this.binding = Binding.get(this.bind);
25
+ if (this.rootAlias) this.rootName = this.rootAlias;
26
+ super.init();
27
+ }
28
+
29
+ initInstance(context: any, instance: any) {
30
+ instance.store = new ZoomIntoPropertyView({
31
+ store: instance.parentStore,
32
+ binding: this.binding,
33
+ rootName: this.rootName,
34
+ nestedData: isObject(this.data)
35
+ ? new StructuredInstanceDataAccessor({ instance, data: this.data, useParentStore: true })
36
+ : undefined,
37
+ });
38
+ super.initInstance(context, instance);
39
+ }
40
+
41
+ applyParentStore(instance: any) {
42
+ instance.store.setStore(instance.parentStore);
43
+ }
44
+ }
45
+
46
+ Rescope.prototype.bind = "$page";
47
+ Rescope.prototype.rootName = "$root";
48
+
49
+ Widget.alias("rescope", Rescope);
@@ -1,32 +1,32 @@
1
- import { getSelector } from "../data/getSelector";
2
- import { StructuredDataAccessor } from "../data/NestedDataView";
3
-
4
- export class StructuredInstanceDataAccessor implements StructuredDataAccessor {
5
- instance: any;
6
- dataConfig: any;
7
- useParentStore: any;
8
- dataSelector: any;
9
-
10
- constructor(config: any) {
11
- this.instance = config.instance;
12
- this.dataConfig = config.data;
13
- this.useParentStore = config.useParentStore;
14
- this.dataSelector = getSelector(config.data);
15
- if (this.dataSelector.memoize) this.dataSelector = this.dataSelector.memoize();
16
- }
17
- getSelector() {
18
- return this.dataSelector;
19
- }
20
- get() {
21
- return this.dataSelector.get(this.instance.store.getData());
22
- }
23
- setItem(key: string, value: any): boolean {
24
- return this.instance.nestedDataSet(key, value, this.dataConfig, this.useParentStore);
25
- }
26
- containsKey(key: string) {
27
- return this.dataConfig.hasOwnProperty(key);
28
- }
29
- getKeys() {
30
- return Object.keys(this.dataConfig);
31
- }
32
- }
1
+ import { getSelector } from "../data/getSelector";
2
+ import { StructuredDataAccessor } from "../data/NestedDataView";
3
+
4
+ export class StructuredInstanceDataAccessor implements StructuredDataAccessor {
5
+ instance: any;
6
+ dataConfig: any;
7
+ useParentStore: any;
8
+ dataSelector: any;
9
+
10
+ constructor(config: any) {
11
+ this.instance = config.instance;
12
+ this.dataConfig = config.data;
13
+ this.useParentStore = config.useParentStore;
14
+ this.dataSelector = getSelector(config.data);
15
+ if (this.dataSelector.memoize) this.dataSelector = this.dataSelector.memoize();
16
+ }
17
+ getSelector() {
18
+ return this.dataSelector;
19
+ }
20
+ get() {
21
+ return this.dataSelector.get(this.instance.store.getData());
22
+ }
23
+ setItem(key: string, value: any): boolean {
24
+ return this.instance.nestedDataSet(key, value, this.dataConfig, this.useParentStore);
25
+ }
26
+ containsKey(key: string) {
27
+ return this.dataConfig.hasOwnProperty(key);
28
+ }
29
+ getKeys() {
30
+ return Object.keys(this.dataConfig);
31
+ }
32
+ }
package/src/ui/VDOM.ts CHANGED
@@ -1,34 +1 @@
1
- // @ts-expect-error
2
- import { VDOM as vdom } from "cx-react";
3
-
4
- import type * as React from "react";
5
- import type { Component } from "react";
6
- import type {
7
- unstable_batchedUpdates,
8
- render,
9
- findDOMNode,
10
- createPortal,
11
- unstable_renderSubtreeIntoContainer,
12
- hydrate,
13
- unmountComponentAtNode,
14
- } from "react-dom";
15
- import type { createRoot, hydrateRoot, Root } from "react-dom/client";
16
-
17
- export interface VDOMType extends Omit<typeof React, "default"> {
18
- allowRenderOutputCaching?: boolean;
19
- Component: typeof Component;
20
-
21
- DOM: {
22
- unstable_batchedUpdates: typeof unstable_batchedUpdates;
23
- render: typeof render;
24
- findDOMNode: typeof findDOMNode;
25
- createPortal: typeof createPortal;
26
- createRoot: typeof createRoot;
27
- hydrateRoot: typeof hydrateRoot;
28
- hydrate: typeof hydrate;
29
- unmountComponentAtNode: typeof unmountComponentAtNode;
30
- unstable_renderSubtreeIntoContainer: typeof unstable_renderSubtreeIntoContainer;
31
- };
32
- }
33
-
34
- export const VDOM = vdom as VDOMType;
1
+ export { VDOM } from "cx-react";