cx 26.0.14 → 26.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (263) hide show
  1. package/build/ui/VDOM.d.ts +1 -20
  2. package/build/ui/VDOM.js +1 -3
  3. package/build/ui/Widget.d.ts +1 -1
  4. package/build/ui/Widget.js +0 -5
  5. package/build/ui/app/startAppLoop.js +2 -10
  6. package/build/util/Component.js +5 -0
  7. package/build/util/test/createTestRenderer.d.ts +3 -1
  8. package/build/util/test/createTestRenderer.js +8 -2
  9. package/build/widgets/form/Checkbox.d.ts +0 -1
  10. package/build/widgets/form/Checkbox.js +1 -0
  11. package/build/widgets/form/ColorField.d.ts +0 -1
  12. package/build/widgets/form/ColorField.js +2 -2
  13. package/build/widgets/form/DateTimeField.d.ts +0 -2
  14. package/build/widgets/form/DateTimeField.js +1 -0
  15. package/build/widgets/form/DateTimePicker.d.ts +0 -2
  16. package/build/widgets/form/DateTimePicker.js +1 -0
  17. package/build/widgets/form/Radio.d.ts +0 -1
  18. package/build/widgets/form/Slider.js +9 -1
  19. package/build/widgets/form/Switch.d.ts +0 -1
  20. package/build/widgets/form/Switch.js +1 -1
  21. package/build/widgets/form/Wheel.d.ts +0 -1
  22. package/build/widgets/grid/Grid.d.ts +0 -2
  23. package/build/widgets/grid/GridCellEditor.js +3 -1
  24. package/build/widgets/icons/calendar.js +4 -3
  25. package/build/widgets/icons/check.js +2 -2
  26. package/build/widgets/icons/clear.js +2 -2
  27. package/build/widgets/icons/close.js +2 -2
  28. package/build/widgets/icons/cx.js +2 -2
  29. package/build/widgets/icons/drop-down.js +2 -2
  30. package/build/widgets/icons/file.js +2 -2
  31. package/build/widgets/icons/folder-open.js +2 -2
  32. package/build/widgets/icons/folder.js +2 -2
  33. package/build/widgets/icons/forward.js +2 -2
  34. package/build/widgets/icons/loading.js +2 -2
  35. package/build/widgets/icons/menu.js +2 -2
  36. package/build/widgets/icons/pixel-picker.js +2 -2
  37. package/build/widgets/icons/search.js +2 -2
  38. package/build/widgets/icons/sort-asc.js +2 -2
  39. package/build/widgets/icons/square.js +2 -2
  40. package/build/widgets/overlay/Overlay.d.ts +3 -0
  41. package/build/widgets/overlay/Overlay.js +3 -2
  42. package/dist/manifest.js +867 -867
  43. package/dist/ui.js +4 -18
  44. package/dist/util.js +4 -0
  45. package/dist/widgets.js +395 -319
  46. package/package.json +11 -8
  47. package/src/charts/Chart.ts +108 -108
  48. package/src/core.d.ts +182 -182
  49. package/src/data/Expression.spec.ts +229 -229
  50. package/src/data/Expression.ts +233 -233
  51. package/src/data/Grouper.ts +158 -158
  52. package/src/data/Selector.ts +10 -10
  53. package/src/data/StringTemplate.spec.ts +132 -132
  54. package/src/data/StructuredSelector.ts +146 -146
  55. package/src/data/ZoomIntoPropertyView.spec.ts +64 -64
  56. package/src/data/comparer.ts +78 -78
  57. package/src/data/computable.spec.ts +87 -87
  58. package/src/data/createStructuredSelector.ts +62 -62
  59. package/src/data/getAccessor.spec.ts +11 -11
  60. package/src/data/getAccessor.ts +74 -74
  61. package/src/data/getSelector.spec.ts +43 -43
  62. package/src/data/getSelector.ts +66 -66
  63. package/src/data/ops/filter.spec.ts +35 -35
  64. package/src/data/ops/filter.ts +9 -9
  65. package/src/data/ops/merge.ts +13 -13
  66. package/src/data/ops/removeTreeNodes.spec.ts +37 -37
  67. package/src/data/ops/updateArray.spec.ts +69 -69
  68. package/src/data/ops/updateArray.ts +31 -31
  69. package/src/data/test-types.ts +7 -7
  70. package/src/hooks/invokeCallback.spec.tsx +4 -4
  71. package/src/hooks/resolveCallback.spec.tsx +4 -4
  72. package/src/hooks/store.spec.tsx +15 -15
  73. package/src/hooks/useTrigger.spec.tsx +16 -10
  74. package/src/hooks/useTrigger.ts +26 -26
  75. package/src/index.scss +6 -6
  76. package/src/jsx-runtime.ts +79 -79
  77. package/src/svg/BoundedObject.ts +101 -101
  78. package/src/svg/util/Rect.ts +105 -105
  79. package/src/ui/CSS.ts +87 -87
  80. package/src/ui/CSSHelper.ts +17 -17
  81. package/src/ui/ContentResolver.spec.tsx +31 -29
  82. package/src/ui/Controller.spec.tsx +47 -39
  83. package/src/ui/Culture.ts +159 -159
  84. package/src/ui/Cx.spec.tsx +10 -8
  85. package/src/ui/DataProxy.spec.tsx +18 -18
  86. package/src/ui/Instance.ts +866 -866
  87. package/src/ui/IsolatedScope.spec.tsx +16 -9
  88. package/src/ui/Prop.ts +140 -140
  89. package/src/ui/PureContainer.spec.tsx +20 -18
  90. package/src/ui/RenderingContext.ts +99 -99
  91. package/src/ui/Repeater.spec.tsx +8 -6
  92. package/src/ui/Rescope.spec.tsx +13 -13
  93. package/src/ui/Restate.spec.tsx +31 -27
  94. package/src/ui/StructuredInstanceDataAccessor.ts +32 -32
  95. package/src/ui/VDOM.ts +1 -34
  96. package/src/ui/Widget.tsx +0 -7
  97. package/src/ui/adapter/TreeAdapter.spec.ts +76 -76
  98. package/src/ui/adapter/TreeAdapter.ts +185 -185
  99. package/src/ui/app/History.ts +133 -133
  100. package/src/ui/app/Url.spec.ts +50 -50
  101. package/src/ui/app/startAppLoop.tsx +5 -9
  102. package/src/ui/app/startHotAppLoop.ts +41 -41
  103. package/src/ui/createFunctionalComponent.spec.tsx +20 -18
  104. package/src/ui/layout/ContentPlaceholder.spec.tsx +46 -34
  105. package/src/ui/layout/FirstVisibleChildLayout.spec.tsx +31 -19
  106. package/src/ui/layout/FirstVisibleChildLayout.ts +60 -60
  107. package/src/ui/selection/PropertySelection.ts +87 -87
  108. package/src/util/Component.spec.ts +30 -0
  109. package/src/util/Component.ts +301 -296
  110. package/src/util/Console.ts +13 -13
  111. package/src/util/DOM.ts +88 -88
  112. package/src/util/hasKey.ts +18 -18
  113. package/src/util/index.ts +55 -55
  114. package/src/util/isArray.ts +3 -3
  115. package/src/util/isDefined.ts +3 -3
  116. package/src/util/isString.ts +3 -3
  117. package/src/util/test/createTestRenderer.tsx +9 -2
  118. package/src/widgets/AccessorBindings.spec.tsx +4 -4
  119. package/src/widgets/DocumentTitle.ts +95 -95
  120. package/src/widgets/HtmlElement.spec.tsx +6 -6
  121. package/src/widgets/ReactElementWrapper.spec.tsx +37 -37
  122. package/src/widgets/autoFocus.ts +9 -9
  123. package/src/widgets/cx.ts +63 -63
  124. package/src/widgets/form/Checkbox.tsx +0 -1
  125. package/src/widgets/form/ColorField.tsx +15 -12
  126. package/src/widgets/form/DateTimeField.tsx +0 -2
  127. package/src/widgets/form/DateTimePicker.tsx +0 -2
  128. package/src/widgets/form/Radio.tsx +0 -1
  129. package/src/widgets/form/Slider.tsx +12 -4
  130. package/src/widgets/form/Switch.tsx +2 -3
  131. package/src/widgets/form/ValidationGroup.spec.tsx +12 -12
  132. package/src/widgets/form/Wheel.tsx +0 -1
  133. package/src/widgets/grid/Grid.tsx +0 -1
  134. package/src/widgets/grid/GridCellEditor.tsx +7 -1
  135. package/src/widgets/icons/calendar.tsx +20 -15
  136. package/src/widgets/icons/check.tsx +2 -1
  137. package/src/widgets/icons/clear.tsx +2 -1
  138. package/src/widgets/icons/close.tsx +2 -2
  139. package/src/widgets/icons/cx.tsx +2 -1
  140. package/src/widgets/icons/drop-down.tsx +2 -1
  141. package/src/widgets/icons/file.tsx +2 -1
  142. package/src/widgets/icons/folder-open.tsx +2 -1
  143. package/src/widgets/icons/folder.tsx +2 -1
  144. package/src/widgets/icons/forward.tsx +2 -1
  145. package/src/widgets/icons/loading.tsx +2 -1
  146. package/src/widgets/icons/menu.tsx +2 -1
  147. package/src/widgets/icons/pixel-picker.tsx +2 -2
  148. package/src/widgets/icons/search.tsx +2 -1
  149. package/src/widgets/icons/sort-asc.tsx +2 -1
  150. package/src/widgets/icons/square.tsx +2 -1
  151. package/src/widgets/nav/Route.spec.tsx +2 -2
  152. package/src/widgets/overlay/Overlay.tsx +5 -1
  153. package/src/widgets/overlay/captureMouse.ts +195 -195
  154. package/src/widgets/overlay/createHotPromiseWindowFactory.ts +71 -71
  155. package/src/widgets/overlay/index.d.ts +11 -11
  156. package/src/widgets/overlay/tooltip-ops.ts +173 -173
  157. package/build/data/ArrayElementView.spec.d.ts +0 -1
  158. package/build/data/ArrayElementView.spec.js +0 -81
  159. package/build/data/Binding.spec.d.ts +0 -1
  160. package/build/data/Binding.spec.js +0 -61
  161. package/build/data/Expression.spec.d.ts +0 -1
  162. package/build/data/Expression.spec.js +0 -196
  163. package/build/data/Grouper.spec.d.ts +0 -1
  164. package/build/data/Grouper.spec.js +0 -48
  165. package/build/data/Ref.spec.d.ts +0 -1
  166. package/build/data/Ref.spec.js +0 -72
  167. package/build/data/Store.spec.d.ts +0 -1
  168. package/build/data/Store.spec.js +0 -19
  169. package/build/data/StoreRef.spec.d.ts +0 -1
  170. package/build/data/StoreRef.spec.js +0 -22
  171. package/build/data/StringTemplate.spec.d.ts +0 -1
  172. package/build/data/StringTemplate.spec.js +0 -112
  173. package/build/data/StructuredSelector.spec.d.ts +0 -1
  174. package/build/data/StructuredSelector.spec.js +0 -102
  175. package/build/data/View.spec.d.ts +0 -1
  176. package/build/data/View.spec.js +0 -44
  177. package/build/data/ZoomIntoPropertyView.spec.d.ts +0 -1
  178. package/build/data/ZoomIntoPropertyView.spec.js +0 -54
  179. package/build/data/comparer.spec.d.ts +0 -1
  180. package/build/data/comparer.spec.js +0 -50
  181. package/build/data/computable.spec.d.ts +0 -1
  182. package/build/data/computable.spec.js +0 -56
  183. package/build/data/createAccessorModelProxy.spec.d.ts +0 -1
  184. package/build/data/createAccessorModelProxy.spec.js +0 -30
  185. package/build/data/createStructuredSelector.spec.d.ts +0 -1
  186. package/build/data/createStructuredSelector.spec.js +0 -42
  187. package/build/data/diff/diffs.spec.d.ts +0 -1
  188. package/build/data/diff/diffs.spec.js +0 -45
  189. package/build/data/getAccessor.spec.d.ts +0 -1
  190. package/build/data/getAccessor.spec.js +0 -10
  191. package/build/data/getSelector.spec.d.ts +0 -1
  192. package/build/data/getSelector.spec.js +0 -36
  193. package/build/data/ops/append.spec.d.ts +0 -1
  194. package/build/data/ops/append.spec.js +0 -24
  195. package/build/data/ops/filter.spec.d.ts +0 -1
  196. package/build/data/ops/filter.spec.js +0 -25
  197. package/build/data/ops/findTreeNode.spec.d.ts +0 -1
  198. package/build/data/ops/findTreeNode.spec.js +0 -20
  199. package/build/data/ops/merge.spec.d.ts +0 -1
  200. package/build/data/ops/merge.spec.js +0 -23
  201. package/build/data/ops/removeTreeNodes.spec.d.ts +0 -1
  202. package/build/data/ops/removeTreeNodes.spec.js +0 -35
  203. package/build/data/ops/updateArray.spec.d.ts +0 -1
  204. package/build/data/ops/updateArray.spec.js +0 -33
  205. package/build/data/ops/updateTree.spec.d.ts +0 -1
  206. package/build/data/ops/updateTree.spec.js +0 -44
  207. package/build/hooks/invokeCallback.spec.d.ts +0 -1
  208. package/build/hooks/invokeCallback.spec.js +0 -44
  209. package/build/hooks/resolveCallback.spec.d.ts +0 -1
  210. package/build/hooks/resolveCallback.spec.js +0 -35
  211. package/build/hooks/store.spec.d.ts +0 -1
  212. package/build/hooks/store.spec.js +0 -48
  213. package/build/hooks/useTrigger.spec.d.ts +0 -1
  214. package/build/hooks/useTrigger.spec.js +0 -59
  215. package/build/ui/Controller.spec.d.ts +0 -1
  216. package/build/ui/Controller.spec.js +0 -247
  217. package/build/ui/Cx.spec.d.ts +0 -1
  218. package/build/ui/Cx.spec.js +0 -153
  219. package/build/ui/DataProxy.spec.d.ts +0 -1
  220. package/build/ui/DataProxy.spec.js +0 -208
  221. package/build/ui/IsolatedScope.spec.d.ts +0 -1
  222. package/build/ui/IsolatedScope.spec.js +0 -42
  223. package/build/ui/PureContainer.spec.d.ts +0 -1
  224. package/build/ui/PureContainer.spec.js +0 -149
  225. package/build/ui/Repeater.spec.d.ts +0 -1
  226. package/build/ui/Repeater.spec.js +0 -109
  227. package/build/ui/Rescope.spec.d.ts +0 -1
  228. package/build/ui/Rescope.spec.js +0 -134
  229. package/build/ui/Restate.spec.d.ts +0 -1
  230. package/build/ui/Restate.spec.js +0 -257
  231. package/build/ui/adapter/ArrayAdapter.spec.d.ts +0 -1
  232. package/build/ui/adapter/ArrayAdapter.spec.js +0 -44
  233. package/build/ui/adapter/TreeAdapter.spec.d.ts +0 -1
  234. package/build/ui/adapter/TreeAdapter.spec.js +0 -71
  235. package/build/ui/app/Url.spec.d.ts +0 -1
  236. package/build/ui/app/Url.spec.js +0 -43
  237. package/build/ui/createFunctionalComponent.spec.d.ts +0 -1
  238. package/build/ui/createFunctionalComponent.spec.js +0 -272
  239. package/build/ui/layout/ContentPlaceholder.spec.d.ts +0 -1
  240. package/build/ui/layout/ContentPlaceholder.spec.js +0 -333
  241. package/build/ui/layout/FirstVisibleChildLayout.spec.d.ts +0 -1
  242. package/build/ui/layout/FirstVisibleChildLayout.spec.js +0 -101
  243. package/build/util/Format.spec.d.ts +0 -1
  244. package/build/util/Format.spec.js +0 -58
  245. package/build/util/TraversalStack.spec.d.ts +0 -1
  246. package/build/util/TraversalStack.spec.js +0 -43
  247. package/build/util/date/upperBoundCheck.spec.d.ts +0 -1
  248. package/build/util/date/upperBoundCheck.spec.js +0 -22
  249. package/build/util/getSearchQueryPredicate.spec.d.ts +0 -1
  250. package/build/util/getSearchQueryPredicate.spec.js +0 -33
  251. package/build/util/isValidIdentifierName.spec.d.ts +0 -1
  252. package/build/util/isValidIdentifierName.spec.js +0 -28
  253. package/build/util/routeAppend.spec.d.ts +0 -1
  254. package/build/util/routeAppend.spec.js +0 -14
  255. package/build/widgets/AccessorBindings.spec.d.ts +0 -1
  256. package/build/widgets/AccessorBindings.spec.js +0 -40
  257. package/build/widgets/HtmlElement.spec.d.ts +0 -1
  258. package/build/widgets/HtmlElement.spec.js +0 -38
  259. package/build/widgets/form/ValidationGroup.spec.d.ts +0 -1
  260. package/build/widgets/form/ValidationGroup.spec.js +0 -62
  261. package/build/widgets/nav/Route.spec.d.ts +0 -1
  262. package/build/widgets/nav/Route.spec.js +0 -15
  263. package/dist/manifest.d.ts +0 -1443
@@ -1,257 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "cx/jsx-runtime";
2
- import { Restate } from "./Restate";
3
- import { Store } from "../data/Store";
4
- import { createTestRenderer } from "../util/test/createTestRenderer";
5
- import assert from "assert";
6
- import { Controller } from "./Controller";
7
- import { bind } from "./bind";
8
- import { FirstVisibleChildLayout } from "./layout/FirstVisibleChildLayout";
9
- describe("Restate", () => {
10
- it("provides a blank slate", () => {
11
- let widget = (_jsx("cx", { children: _jsx("div", { children: _jsxs(Restate, { data: {
12
- value: "good",
13
- }, children: [_jsx("span", { text: bind("value") }), _jsx("span", { text: bind("value2") })] }) }) }));
14
- let store = new Store({
15
- data: {
16
- value: "bad",
17
- value2: "also bad",
18
- },
19
- });
20
- const component = createTestRenderer(store, widget);
21
- let tree = component.toJSON();
22
- assert.deepEqual(tree, {
23
- type: "div",
24
- props: {},
25
- children: [
26
- {
27
- type: "span",
28
- props: {},
29
- children: ["good"],
30
- },
31
- {
32
- type: "span",
33
- props: {},
34
- children: null,
35
- },
36
- ],
37
- });
38
- });
39
- it("wires declared data", () => {
40
- let widget = (_jsx("cx", { children: _jsx("div", { children: _jsx(Restate, { data: {
41
- name: { bind: "person.name" },
42
- }, children: _jsx("div", { controller: {
43
- onInit() {
44
- this.store.init("name", "Sasa");
45
- this.store.init("nickname", "Sale");
46
- },
47
- } }) }) }) }));
48
- let changed = false;
49
- let store = new Store();
50
- store.subscribe(() => {
51
- //console.log(store.getData());
52
- changed = true;
53
- });
54
- const component = createTestRenderer(store, widget);
55
- let tree = component.toJSON();
56
- assert.equal(store.get("person.name"), "Sasa");
57
- assert(store.get("person.nickname") === undefined);
58
- assert(changed);
59
- });
60
- it("causes a global update if internal data changes", () => {
61
- let controller;
62
- class TestController extends Controller {
63
- onInit() {
64
- controller = this;
65
- }
66
- setNickname(nname) {
67
- this.store.set("nickname", nname);
68
- }
69
- }
70
- let widget = (_jsx("cx", { children: _jsx("div", { children: _jsx(Restate, { data: {
71
- name: { bind: "person.name" },
72
- }, children: _jsx("div", { controller: TestController, text: bind("nickname") }) }) }) }));
73
- let changed = false;
74
- let store = new Store();
75
- store.subscribe(() => {
76
- changed = true;
77
- });
78
- const component = createTestRenderer(store, widget);
79
- let tree = component.toJSON();
80
- assert.deepEqual(tree, {
81
- type: "div",
82
- props: {},
83
- children: [
84
- {
85
- type: "div",
86
- props: {},
87
- children: null,
88
- },
89
- ],
90
- });
91
- controller.setNickname("Sale");
92
- let tree2 = component.toJSON();
93
- assert.deepEqual(tree2, {
94
- type: "div",
95
- props: {},
96
- children: [
97
- {
98
- type: "div",
99
- props: {},
100
- children: ["Sale"],
101
- },
102
- ],
103
- });
104
- });
105
- it("doesn't notify parent if not necessary in detached mode", () => {
106
- class TestController extends Controller {
107
- onInit() {
108
- this.store.init("nickname", "Sale");
109
- }
110
- }
111
- let widget = (_jsx("cx", { children: _jsx("div", { children: _jsx(Restate, { detached: true, data: {
112
- name: { bind: "person.name" },
113
- }, children: _jsx("div", { controller: TestController }) }) }) }));
114
- let changed = false;
115
- let store = new Store();
116
- store.subscribe(() => {
117
- changed = true;
118
- });
119
- const component = createTestRenderer(store, widget);
120
- let tree = component.toJSON();
121
- assert(!changed);
122
- });
123
- it("shared state can be used across components inside and outside Restate", () => {
124
- let widget = (_jsx("cx", { children: _jsxs("div", { children: [_jsx("div", { text: bind("person.gender", "Male") }), _jsxs(Restate, { detached: true, data: {
125
- person: { bind: "person" },
126
- }, children: [_jsx("div", { text: bind("person.firstName", "John") }), _jsx("div", { text: bind("person.lastName", "Doe") })] }), _jsx("div", { text: bind("person.address", "Unknown") })] }) }));
127
- let changed = false;
128
- let store = new Store();
129
- store.subscribe(() => {
130
- changed = true;
131
- //console.log(store.getData());
132
- });
133
- const component = createTestRenderer(store, widget);
134
- let tree = component.toJSON();
135
- assert.deepEqual(store.getData(), {
136
- person: {
137
- firstName: "John",
138
- lastName: "Doe",
139
- address: "Unknown",
140
- gender: "Male",
141
- },
142
- });
143
- });
144
- it("updates if shared state is changed from outside", () => {
145
- [true, false].forEach((detached) => {
146
- let widget = (_jsx("cx", { children: _jsxs("div", { children: [_jsx(Restate, { detached: detached, data: {
147
- person: { bind: "person" },
148
- }, children: _jsx("div", { text: bind("person.firstName") }) }), _jsx("div", { text: bind("person.firstName", "John") })] }) }));
149
- let store = new Store();
150
- const component = createTestRenderer(store, widget);
151
- let tree = component.toJSON();
152
- assert.deepEqual(tree, {
153
- type: "div",
154
- props: {},
155
- children: [
156
- {
157
- type: "div",
158
- props: {},
159
- children: ["John"],
160
- },
161
- {
162
- type: "div",
163
- props: {},
164
- children: ["John"],
165
- },
166
- ],
167
- });
168
- store.set("person.firstName", "Jack");
169
- tree = component.toJSON();
170
- assert.deepEqual(tree, {
171
- type: "div",
172
- props: {},
173
- children: [
174
- {
175
- type: "div",
176
- props: {},
177
- children: ["Jack"],
178
- },
179
- {
180
- type: "div",
181
- props: {},
182
- children: ["Jack"],
183
- },
184
- ],
185
- });
186
- });
187
- });
188
- it("allows field initialization in data declaration", () => {
189
- [true, false].forEach((detached) => {
190
- let widget = (_jsx("cx", { children: _jsx("div", { children: _jsx(Restate, { detached: detached, data: {
191
- name: bind("name", "Cx"),
192
- }, children: _jsx("div", { text: bind("name") }) }) }) }));
193
- let store = new Store();
194
- const component = createTestRenderer(store, widget);
195
- let tree = component.toJSON();
196
- assert.deepEqual(tree, {
197
- type: "div",
198
- props: {},
199
- children: [
200
- {
201
- type: "div",
202
- props: {},
203
- children: ["Cx"],
204
- },
205
- ],
206
- });
207
- });
208
- });
209
- it("updates if internal data changes", () => {
210
- class TestController extends Controller {
211
- onInit() {
212
- this.store.init("nickname", "Sale");
213
- }
214
- }
215
- let widget = (_jsx("cx", { children: _jsx("div", { children: _jsx(Restate, { children: _jsx(Restate, { children: _jsx("div", { controller: TestController, text: bind("nickname") }) }) }) }) }));
216
- let changed = false;
217
- let store = new Store();
218
- store.subscribe(() => {
219
- changed = true;
220
- });
221
- const component = createTestRenderer(store, widget);
222
- let tree = component.toJSON();
223
- assert.deepEqual(tree, {
224
- type: "div",
225
- props: {},
226
- children: [
227
- {
228
- type: "div",
229
- props: {},
230
- children: ["Sale"],
231
- },
232
- ],
233
- });
234
- });
235
- it("works with FirstVisibleChildLayout", () => {
236
- let widget = (_jsx("cx", { children: _jsx("div", { children: _jsxs(FirstVisibleChildLayout, { children: [_jsx(Restate, { children: _jsx("div", { children: "First" }) }), _jsx("div", { children: "Second" })] }) }) }));
237
- let store = new Store();
238
- const component = createTestRenderer(store, widget);
239
- let tree = component.toJSON();
240
- assert.deepEqual(tree, {
241
- type: "div",
242
- props: {},
243
- children: [{ type: "div", props: {}, children: ["First"] }],
244
- });
245
- });
246
- it("is transparent to FirstVisibleChildLayout", () => {
247
- let widget = (_jsx("cx", { children: _jsx("div", { children: _jsxs(FirstVisibleChildLayout, { children: [_jsx(Restate, { children: _jsx("div", { visible: false, children: "First" }) }), _jsx("div", { children: "Second" })] }) }) }));
248
- let store = new Store();
249
- const component = createTestRenderer(store, widget);
250
- let tree = component.toJSON();
251
- assert.deepEqual(tree, {
252
- type: "div",
253
- props: {},
254
- children: [{ type: "div", props: {}, children: ["Second"] }],
255
- });
256
- });
257
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,44 +0,0 @@
1
- import { RenderingContext } from "../RenderingContext";
2
- import { Instance } from "../Instance";
3
- import assert from "assert";
4
- import { Store } from "../../data";
5
- import { ArrayAdapter } from "./ArrayAdapter";
6
- describe("ArrayAdapter", () => {
7
- it("maps data into records", () => {
8
- let adapter = new ArrayAdapter();
9
- let data = [
10
- {
11
- id: 1,
12
- text: "1",
13
- },
14
- {
15
- id: 2,
16
- text: "2",
17
- },
18
- ];
19
- let store = new Store();
20
- let records = adapter.mapRecords(new RenderingContext(), new Instance(null, "1", null, store), data, store);
21
- assert.equal(records.length, 2);
22
- assert.equal(records[0].data, records[0].store.get("$record"));
23
- assert.equal(records[1].data, records[1].store.get("$record"));
24
- });
25
- it("can sort data", () => {
26
- let adapter = new ArrayAdapter();
27
- adapter.sort([{ field: "id", direction: "DESC" }]);
28
- let data = [
29
- {
30
- id: 1,
31
- text: "1",
32
- },
33
- {
34
- id: 2,
35
- text: "2",
36
- },
37
- ];
38
- let store = new Store();
39
- let records = adapter.mapRecords(new RenderingContext(), new Instance(null, "1", null, store), data, store);
40
- assert.equal(records.length, 2);
41
- assert.equal(data[1], records[0].store.get("$record"));
42
- assert.equal(data[0], records[1].store.get("$record"));
43
- });
44
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,71 +0,0 @@
1
- import { RenderingContext } from "../RenderingContext";
2
- import { Instance } from "../Instance";
3
- import { TreeAdapter } from "./TreeAdapter";
4
- import assert from "assert";
5
- import { Store } from "../../data";
6
- describe("TreeAdapter", () => {
7
- it("properly expands records", () => {
8
- let tree = new TreeAdapter({
9
- childrenField: "children",
10
- expandedField: "expanded",
11
- });
12
- let data = [
13
- {
14
- id: 1,
15
- text: "1",
16
- expanded: false,
17
- children: [
18
- {
19
- id: 4,
20
- text: "4",
21
- },
22
- ],
23
- },
24
- {
25
- id: 2,
26
- text: "2",
27
- expanded: true,
28
- children: [
29
- {
30
- id: 3,
31
- text: "3",
32
- expanded: true,
33
- children: [
34
- {
35
- id: 5,
36
- text: "5",
37
- expanded: true,
38
- children: [
39
- {
40
- id: 6,
41
- text: "6",
42
- },
43
- ],
44
- },
45
- ],
46
- },
47
- ],
48
- },
49
- {
50
- id: 7,
51
- text: "7",
52
- expanded: false,
53
- },
54
- ];
55
- let store = new Store();
56
- let records = tree.mapRecords(new RenderingContext(), new Instance(null, "1", null, store), data, store);
57
- assert.equal(records.length, 6);
58
- assert.equal(records[0].data.id, 1);
59
- assert.equal(records[1].data.id, 2);
60
- assert.equal(records[2].data.id, 3);
61
- assert.equal(records[3].data.id, 5);
62
- assert.equal(records[4].data.id, 6);
63
- assert.equal(records[5].data.id, 7);
64
- assert.equal(records[5].store.get("$record.id"), 7);
65
- assert.equal(records[2].store.get("$record.id"), 3);
66
- assert.equal(records[3].store.get("$record.id"), 5);
67
- assert.equal(records[2].store.get("$record.id"), 3);
68
- assert.equal(records[0].store.get("$record.id"), 1);
69
- assert.equal(records[1].store.get("$record.id"), 2);
70
- });
71
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,43 +0,0 @@
1
- import { Url } from "./Url";
2
- import Route from "route-parser";
3
- import assert from "assert";
4
- describe("Url", function () {
5
- describe(".unresolve", function () {
6
- it("preserves query parameters", function () {
7
- Url.absoluteBase = "https://cxjs.io/docs/";
8
- assert.equal("~/?state=1", Url.unresolve("https://cxjs.io/docs/?state=1"));
9
- });
10
- it("doesn't touch unresolved urls", function () {
11
- assert.equal("~/test", Url.unresolve("~/test"));
12
- });
13
- });
14
- describe(".getBaseFromScriptSrc", () => {
15
- it("ignores query strings", function () {
16
- assert.equal(Url.getBaseFromScriptSrc("/vendor.js?qs=1", "~/vendor.js"), "/");
17
- });
18
- it("allows wildcards", function () {
19
- assert.equal(Url.getBaseFromScriptSrc("/vendor.123.js?qs=1", "~/vendor.*.js"), "/");
20
- });
21
- it("works for an application folder", function () {
22
- assert.equal(Url.getBaseFromScriptSrc("/datasync/vendor.124c82.js", "~/vendor.*.js"), "/datasync/");
23
- });
24
- });
25
- });
26
- describe("Route", function () {
27
- it("matches query param", function () {
28
- let route = new Route("~/?state=:state");
29
- let result = route.match("~/?state=1");
30
- assert(result !== false);
31
- assert.equal(result.state, "1");
32
- });
33
- it("matches routes with extra query params", function () {
34
- let route = new Route("~/?state=:state");
35
- let result = route.match("~/?state=1&more=2");
36
- assert(result);
37
- });
38
- it.skip("matches query params in any order", function () {
39
- let route = new Route("~/?a=:a&b=:b");
40
- let result = route.match("~/?b=1&a=2");
41
- assert(result);
42
- });
43
- });
@@ -1 +0,0 @@
1
- export {};