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
@@ -37,7 +37,13 @@ class GridCellEditorCmp extends VDOM.Component<GridCellEditorCmpProps> {
37
37
  let { className, style, children } = this.props;
38
38
 
39
39
  return (
40
- <div ref={(el) => (this.el = el)} className={className} style={style}>
40
+ <div
41
+ ref={(el) => {
42
+ this.el = el;
43
+ }}
44
+ className={className}
45
+ style={style}
46
+ >
41
47
  {children}
42
48
  </div>
43
49
  );
@@ -1,17 +1,22 @@
1
1
  /** @jsxImportSource react */
2
- import {VDOM} from '../../ui/Widget';
3
- import {registerIcon} from './registry';
4
-
5
- export default registerIcon('calendar', (props: any) => {
6
- return <svg
7
- {...props}
8
- viewBox="0 0 32 32">
9
-
10
- <path d="M4 3h6m10 0h6" fill="none" stroke="currentColor" strokeWidth="2"/>
11
- <path d="M19 21h4v4h-4z" fill="currentColor"/>
12
- <path d="M3 25h24M3 21h24M3 17h24M7 28V13m-4 0h24M11 28V13.2M15 28V13.27M19 28V13.03M23 28V13.5" fill="none" stroke="currentColor"/>
13
- <path fill="currentColor" d="M10 8h10v2H10z"/>
14
- <path fill="none" stroke="currentColor" strokeWidth="2" d="M3 5h24v24H3z"/>
15
- </svg>
16
- }, true);
2
+ import { registerIcon } from "./registry";
17
3
 
4
+ export default registerIcon(
5
+ "calendar",
6
+ ({ key, ...props }: any) => {
7
+ return (
8
+ <svg key={key} {...props} viewBox="0 0 32 32">
9
+ <path d="M4 3h6m10 0h6" fill="none" stroke="currentColor" strokeWidth="2" />
10
+ <path d="M19 21h4v4h-4z" fill="currentColor" />
11
+ <path
12
+ d="M3 25h24M3 21h24M3 17h24M7 28V13m-4 0h24M11 28V13.2M15 28V13.27M19 28V13.03M23 28V13.5"
13
+ fill="none"
14
+ stroke="currentColor"
15
+ />
16
+ <path fill="currentColor" d="M10 8h10v2H10z" />
17
+ <path fill="none" stroke="currentColor" strokeWidth="2" d="M3 5h24v24H3z" />
18
+ </svg>
19
+ );
20
+ },
21
+ true,
22
+ );
@@ -2,8 +2,9 @@
2
2
  import {VDOM} from '../../ui/Widget';
3
3
  import {registerIcon} from './registry';
4
4
 
5
- export default registerIcon('check', (props: any) => {
5
+ export default registerIcon('check', ({ key, ...props }: any) => {
6
6
  return <svg
7
+ key={key}
7
8
  {...props}
8
9
  viewBox="0 0 64 64">
9
10
  <path d="M7.136 42.94l20.16 14.784 29.568-40.32-9.72-7.128-22.598 30.816-10.44-7.656z"
@@ -2,8 +2,9 @@
2
2
  import {VDOM} from '../../ui/Widget';
3
3
  import {registerIcon} from './registry';
4
4
 
5
- export default registerIcon('clear', (props: any) => {
5
+ export default registerIcon('clear', ({ key, ...props }: any) => {
6
6
  return <svg
7
+ key={key}
7
8
  {...props}
8
9
  viewBox="0 0 32 32">
9
10
  <path fill="currentColor"
@@ -4,9 +4,9 @@ import { registerIcon } from "./registry";
4
4
 
5
5
  export default registerIcon(
6
6
  "close",
7
- (props: any) => {
7
+ ({ key, ...props }: any) => {
8
8
  return (
9
- <svg {...props} viewBox="0 0 32 32">
9
+ <svg key={key} {...props} viewBox="0 0 32 32">
10
10
  <path
11
11
  fill="currentColor"
12
12
  strokeWidth="1"
@@ -2,8 +2,9 @@
2
2
  import {VDOM} from '../../ui/Widget';
3
3
  import {registerIcon} from './registry';
4
4
 
5
- export default registerIcon('cx', (props: any) => {
5
+ export default registerIcon('cx', ({ key, ...props }: any) => {
6
6
  return <svg
7
+ key={key}
7
8
  {...props}
8
9
  viewBox="-347 249.7 48 48"
9
10
  >
@@ -2,8 +2,9 @@
2
2
  import {VDOM} from '../../ui/Widget';
3
3
  import {registerIcon} from './registry';
4
4
 
5
- export default registerIcon('drop-down', (props: any) => {
5
+ export default registerIcon('drop-down', ({ key, ...props }: any) => {
6
6
  return <svg
7
+ key={key}
7
8
  {...props}
8
9
  viewBox="0 0 20 20">
9
10
  <path fill="currentColor"
@@ -2,8 +2,9 @@
2
2
  import {VDOM} from '../../ui/Widget';
3
3
  import {registerIcon} from './registry';
4
4
 
5
- export default registerIcon('file', (props: any) => {
5
+ export default registerIcon('file', ({ key, ...props }: any) => {
6
6
  return <svg
7
+ key={key}
7
8
  {...props}
8
9
  viewBox="0 0 16 16">
9
10
  <path d="M2 2h5v5h5v7H2z" fill="currentColor" stroke="none"/>
@@ -2,8 +2,9 @@
2
2
  import {VDOM} from '../../ui/Widget';
3
3
  import {registerIcon} from './registry';
4
4
 
5
- export default registerIcon('folder-open', (props: any) => {
5
+ export default registerIcon('folder-open', ({ key, ...props }: any) => {
6
6
  return <svg
7
+ key={key}
7
8
  {...props}
8
9
  viewBox="0 0 16 16">
9
10
 
@@ -2,8 +2,9 @@
2
2
  import {VDOM} from '../../ui/Widget';
3
3
  import {registerIcon} from './registry';
4
4
 
5
- export default registerIcon('folder', (props: any) => {
5
+ export default registerIcon('folder', ({ key, ...props }: any) => {
6
6
  return <svg
7
+ key={key}
7
8
  {...props}
8
9
  viewBox="0 0 16 16">
9
10
 
@@ -2,8 +2,9 @@
2
2
  import {VDOM} from '../../ui/Widget';
3
3
  import {registerIcon} from './registry';
4
4
 
5
- export default registerIcon('forward', (props: any) => {
5
+ export default registerIcon('forward', ({ key, ...props }: any) => {
6
6
  return <svg
7
+ key={key}
7
8
  {...props}
8
9
  viewBox="0 0 20 20">
9
10
 
@@ -2,7 +2,7 @@
2
2
  import {VDOM} from '../../ui/Widget';
3
3
  import {registerIcon} from './registry';
4
4
 
5
- export default registerIcon('loading', (props: any) => {
5
+ export default registerIcon('loading', ({ key, ...props }: any) => {
6
6
  let style = {
7
7
  animation: 'linear infinite 0.5s cx-rotate'
8
8
  };
@@ -16,6 +16,7 @@ export default registerIcon('loading', (props: any) => {
16
16
  };
17
17
 
18
18
  return <svg
19
+ key={key}
19
20
  {...props}
20
21
  viewBox="0 0 50 50">
21
22
  <path fill="currentColor" d="M43.94 25.14c0-10.3-8.37-18.68-18.7-18.68-10.3 0-18.67 8.37-18.67 18.68h4.07c0-8.07 6.54-14.6 14.6-14.6 8.08 0 14.63 6.53 14.63 14.6h4.07z" />
@@ -2,8 +2,9 @@
2
2
  import {VDOM} from '../../ui/Widget';
3
3
  import {registerIcon} from './registry';
4
4
 
5
- export default registerIcon('menu', (props: any) => {
5
+ export default registerIcon('menu', ({ key, ...props }: any) => {
6
6
  return <svg
7
+ key={key}
7
8
  {...props}
8
9
  viewBox="0 0 24 24">
9
10
 
@@ -4,9 +4,9 @@ import { registerIcon } from "./registry";
4
4
 
5
5
  export default registerIcon(
6
6
  "pixel-picker",
7
- (props: any) => {
7
+ ({ key, ...props }: any) => {
8
8
  return (
9
- <svg {...props} viewBox="0 0 30 30">
9
+ <svg key={key} {...props} viewBox="0 0 30 30">
10
10
  <path
11
11
  d="M27.7,3.3c-1.5-1.5-3.9-1.5-5.4,0L17,8.6l-1.3-1.3c-0.4-0.4-1-0.4-1.4,0s-0.4,1,0,1.4l1.3,1.3L5,20.6 c-0.6,0.6-1,1.4-1.1,2.3C3.3,23.4,3,24.2,3,25c0,1.7,1.3,3,3,3c0.8,0,1.6-0.3,2.2-0.9C9,27,9.8,26.6,10.4,26L21,15.4l1.3,1.3 c0.2,0.2,0.5,0.3,0.7,0.3s0.5-0.1,0.7-0.3c0.4-0.4,0.4-1,0-1.4L22.4,14l5.3-5.3C29.2,7.2,29.2,4.8,27.7,3.3z M9,24.6 c-0.4,0.4-0.8,0.6-1.3,0.5c-0.4,0-0.7,0.2-0.9,0.5C6.7,25.8,6.3,26,6,26c-0.6,0-1-0.4-1-1c0-0.3,0.2-0.7,0.5-0.8 c0.3-0.2,0.5-0.5,0.5-0.9c0-0.5,0.2-1,0.5-1.3L17,11.4l2.6,2.6L9,24.6z"
12
12
  fill="currentColor"
@@ -2,8 +2,9 @@
2
2
  import {VDOM} from '../../ui/Widget';
3
3
  import {registerIcon} from './registry';
4
4
 
5
- export default registerIcon('search', (props: any) => {
5
+ export default registerIcon('search', ({ key, ...props }: any) => {
6
6
  return <svg
7
+ key={key}
7
8
  {...props}
8
9
  viewBox="0 0 32 32">
9
10
  <path fill="currentColor"
@@ -2,8 +2,9 @@
2
2
  import {VDOM} from '../../ui/Widget';
3
3
  import {registerIcon} from './registry';
4
4
 
5
- export default registerIcon('sort-asc', (props: any) => {
5
+ export default registerIcon('sort-asc', ({ key, ...props }: any) => {
6
6
  return <svg
7
+ key={key}
7
8
  {...props}
8
9
  viewBox="0 0 16 16">
9
10
  <path fill="currentColor"
@@ -2,8 +2,9 @@
2
2
  import {VDOM} from '../../ui/Widget';
3
3
  import {registerIcon} from './registry';
4
4
 
5
- export default registerIcon('square', (props: any) => {
5
+ export default registerIcon('square', ({ key, ...props }: any) => {
6
6
  return <svg
7
+ key={key}
7
8
  {...props}
8
9
  viewBox="0 0 64 64">
9
10
  <rect
@@ -4,7 +4,7 @@ import { createTestRenderer } from "../../util/test/createTestRenderer";
4
4
  import assert from "assert";
5
5
 
6
6
  describe("Route", () => {
7
- it("matching works for ~/widgets/color-pickers", () => {
7
+ it("matching works for ~/widgets/color-pickers", async () => {
8
8
  let widget = (
9
9
  <cx>
10
10
  <Route url="~/widgets/color-pickers" route="~/widgets/color-pickers">
@@ -15,7 +15,7 @@ describe("Route", () => {
15
15
 
16
16
  let store = new Store();
17
17
 
18
- const component = createTestRenderer(store, widget);
18
+ const component = await createTestRenderer(store, widget);
19
19
 
20
20
  let tree = component.toJSON();
21
21
  assert(tree && !Array.isArray(tree));
@@ -1,4 +1,5 @@
1
1
  /** @jsxImportSource react */
2
+ import type { Root } from "cx-react";
2
3
  import { isBinding, isBindingObject } from "../../data/Binding";
3
4
  import { Store } from "../../data/Store";
4
5
  import { startAppLoop } from "../../ui/app/startAppLoop";
@@ -469,6 +470,7 @@ export class OverlayComponent<
469
470
  onPopState?: () => void;
470
471
  unsubscribeWheelBlock?: () => void;
471
472
  declare customStyle: any;
473
+ declare root: Root;
472
474
 
473
475
  constructor(props: Props) {
474
476
  super(props);
@@ -865,6 +867,7 @@ export class OverlayComponent<
865
867
 
866
868
  if (this.ownedEl) {
867
869
  setTimeout(() => {
870
+ this.root?.unmount();
868
871
  if (this.ownedEl?.parentNode) this.ownedEl.parentNode.removeChild(this.ownedEl);
869
872
  this.ownedEl = null;
870
873
  }, widget.destroyDelay);
@@ -936,7 +939,8 @@ export class OverlayComponent<
936
939
 
937
940
  componentDidUpdate() {
938
941
  if (this.containerEl && !VDOM.DOM.createPortal) {
939
- VDOM.DOM.render(this.renderOverlay(), this.containerEl);
942
+ this.root = VDOM.DOM.createRoot(this.containerEl);
943
+ this.root.render(this.renderOverlay());
940
944
  }
941
945
  this.overlayDidUpdate();
942
946
  }