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,20 +1 @@
1
- import type * as React from "react";
2
- import type { Component } from "react";
3
- import type { unstable_batchedUpdates, render, findDOMNode, createPortal, unstable_renderSubtreeIntoContainer, hydrate, unmountComponentAtNode } from "react-dom";
4
- import type { createRoot, hydrateRoot } from "react-dom/client";
5
- export interface VDOMType extends Omit<typeof React, "default"> {
6
- allowRenderOutputCaching?: boolean;
7
- Component: typeof Component;
8
- DOM: {
9
- unstable_batchedUpdates: typeof unstable_batchedUpdates;
10
- render: typeof render;
11
- findDOMNode: typeof findDOMNode;
12
- createPortal: typeof createPortal;
13
- createRoot: typeof createRoot;
14
- hydrateRoot: typeof hydrateRoot;
15
- hydrate: typeof hydrate;
16
- unmountComponentAtNode: typeof unmountComponentAtNode;
17
- unstable_renderSubtreeIntoContainer: typeof unstable_renderSubtreeIntoContainer;
18
- };
19
- }
20
- export declare const VDOM: VDOMType;
1
+ export { VDOM } from "cx-react";
package/build/ui/VDOM.js CHANGED
@@ -1,3 +1 @@
1
- // @ts-expect-error
2
- import { VDOM as vdom } from "cx-react";
3
- export const VDOM = vdom;
1
+ export { VDOM } from "cx-react";
@@ -5,7 +5,7 @@ import { RenderingContext } from "./RenderingContext";
5
5
  import type { Controller, ControllerConfig, ControllerFactory } from "./Controller";
6
6
  import { BooleanProp, ClassProp, ModProp, StyleProp } from "./Prop";
7
7
  import { Instance } from "./Instance";
8
- export declare const VDOM: import("./VDOM").VDOMType;
8
+ export declare const VDOM: import("cx-react").CxVDOM;
9
9
  export type ControllerProp = CreateConfig<typeof Controller> | (ControllerConfig & {
10
10
  type?: never;
11
11
  $type?: never;
@@ -39,11 +39,6 @@ export class Widget extends Component {
39
39
  this.style = this.styles;
40
40
  if (this.styled)
41
41
  this.style = parseStyle(this.style);
42
- else if (this.style) {
43
- Console.warn("Components that allow use of the style attribute should set styled = true on their prototype. This will be an error in future versions.");
44
- this.style = parseStyle(this.style);
45
- this.styled = true;
46
- }
47
42
  if (typeof this.if !== "undefined")
48
43
  this.visible = this.if;
49
44
  this.declareData();
@@ -1,5 +1,4 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- /** @jsxImportSource react */
3
2
  import { VDOM } from "../Widget";
4
3
  import { Store } from "../../data/Store";
5
4
  import { Cx } from "../Cx";
@@ -22,13 +21,8 @@ export function startAppLoop(parentDOMElement, storeOrInstance, widget, options
22
21
  else
23
22
  throw new Error("Second argument to startAppLoop should be either of type Store or Instance");
24
23
  let content = (_jsx(Cx, { store: store, widget: widget, instance: instance, parentInstance: parentInstance, options: options, subscribe: true }));
25
- let root = null;
26
- if (VDOM.DOM.createRoot) {
27
- root = VDOM.DOM.createRoot(parentDOMElement);
28
- root.render(content);
29
- }
30
- else
31
- VDOM.DOM.render(content, parentDOMElement);
24
+ let root = VDOM.DOM.createRoot(parentDOMElement);
25
+ root.render(content);
32
26
  let stopped = false;
33
27
  return function () {
34
28
  if (stopped)
@@ -46,8 +40,6 @@ export function startAppLoop(parentDOMElement, storeOrInstance, widget, options
46
40
  function destroy(parentDOMElement, options, root) {
47
41
  if (root)
48
42
  root.unmount();
49
- else
50
- VDOM.DOM.unmountComponentAtNode(parentDOMElement);
51
43
  if (options.removeParentDOMElement && parentDOMElement.parentNode)
52
44
  parentDOMElement.parentNode.removeChild(parentDOMElement);
53
45
  }
@@ -85,6 +85,11 @@ export class Component {
85
85
  let cfg = config;
86
86
  if (more)
87
87
  cfg = Object.assign({}, config, more);
88
+ // Check if merged cfg has type/$type that should override cmpType
89
+ // Only redirect if cfgType is a class (not a string alias or factory) to prevent infinite recursion
90
+ let cfgType = cfg && (cfg.type || cfg.$type);
91
+ if (cfgType && cfgType.isComponentType && cfgType !== cmpType)
92
+ return this.create(cfg);
88
93
  let cmp = new cmpType(cfg);
89
94
  if (cmpType.autoInit && cmp.init)
90
95
  cmp.init();
@@ -1,5 +1,7 @@
1
1
  /** @jsxImportSource react */
2
2
  import renderer from "react-test-renderer";
3
+ import { act } from "react";
3
4
  import { View } from "../../data/View";
4
- export declare function createTestRenderer(store: View, widget: any): renderer.ReactTestRenderer;
5
+ export declare function createTestRenderer(store: View, widget: any): Promise<renderer.ReactTestRenderer>;
5
6
  export declare function createTestWidget(store: View, widget: any): import("react/jsx-runtime").JSX.Element;
7
+ export { act };
@@ -1,10 +1,16 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  /** @jsxImportSource react */
3
3
  import renderer from "react-test-renderer";
4
+ import { act } from "react";
4
5
  import { Cx } from "../../ui/Cx";
5
- export function createTestRenderer(store, widget) {
6
- return renderer.create(createTestWidget(store, widget));
6
+ export async function createTestRenderer(store, widget) {
7
+ let result;
8
+ await act(async () => {
9
+ result = renderer.create(createTestWidget(store, widget));
10
+ });
11
+ return result;
7
12
  }
8
13
  export function createTestWidget(store, widget) {
9
14
  return _jsx(Cx, { widget: widget, store: store, subscribe: true, immediate: true });
10
15
  }
16
+ export { act };
@@ -1,5 +1,4 @@
1
1
  /** @jsxImportSource react */
2
- import * as React from "react";
3
2
  import type { Instance } from "../../ui/Instance";
4
3
  import type { RenderingContext } from "../../ui/RenderingContext";
5
4
  import { Field, FieldConfig, FieldInstance } from "./Field";
@@ -1,4 +1,5 @@
1
1
  import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
+ /** @jsxImportSource react */
2
3
  import { VDOM } from "../../ui/VDOM";
3
4
  import { Widget, getContent } from "../../ui/Widget";
4
5
  import { stopPropagation } from "../../util/eventCallbacks";
@@ -1,5 +1,4 @@
1
1
  /** @jsxImportSource react */
2
- import * as React from "react";
3
2
  import { DropdownWidgetProps, Instance } from "../../ui/Instance";
4
3
  import type { RenderingContext } from "../../ui/RenderingContext";
5
4
  import { DropdownConfig } from "../overlay/Dropdown";
@@ -1,4 +1,5 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /** @jsxImportSource react */
2
3
  import { Cx } from "../../ui/Cx";
3
4
  import { VDOM, Widget, getContent } from "../../ui/Widget";
4
5
  import { parseColor } from "../../util/color/parseColor";
@@ -129,8 +130,7 @@ class ColorInput extends VDOM.Component {
129
130
  let { CSS, baseClass, suppressErrorsUntilVisited, showClear, alwaysShowClear } = widget;
130
131
  let insideButton;
131
132
  if (!data.readOnly && !data.disabled) {
132
- if (showClear &&
133
- (((!data.required || alwaysShowClear) && !data.empty) || instance.state?.inputError))
133
+ if (showClear && (((!data.required || alwaysShowClear) && !data.empty) || instance.state?.inputError))
134
134
  insideButton = (_jsx("div", { className: CSS.element(baseClass, "clear"), onMouseDown: (e) => {
135
135
  e.preventDefault();
136
136
  e.stopPropagation();
@@ -1,5 +1,3 @@
1
- /** @jsxImportSource react */
2
- import * as React from "react";
3
1
  import type { Instance } from "../../ui/Instance";
4
2
  import { FieldInstance } from "./Field";
5
3
  import type { RenderingContext } from "../../ui/RenderingContext";
@@ -1,4 +1,5 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /** @jsxImportSource react */
2
3
  import { StringTemplate } from "../../data/StringTemplate";
3
4
  import { Culture } from "../../ui/Culture";
4
5
  import { Cx } from "../../ui/Cx";
@@ -1,5 +1,3 @@
1
- /** @jsxImportSource react */
2
- import * as React from "react";
3
1
  import type { Instance } from "../../ui/Instance";
4
2
  import type { RenderingContext } from "../../ui/RenderingContext";
5
3
  import { Widget } from "../../ui/Widget";
@@ -1,4 +1,5 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /** @jsxImportSource react */
2
3
  import { Culture } from "../../ui/Culture";
3
4
  import { offFocusOut, oneFocusOut } from "../../ui/FocusManager";
4
5
  import { enableCultureSensitiveFormatting } from "../../ui/Format";
@@ -2,7 +2,6 @@
2
2
  import type { RenderingContext } from "../../ui/RenderingContext";
3
3
  import type { Instance } from "../../ui/Instance";
4
4
  import { Field, FieldConfig, FieldInstance } from "./Field";
5
- import * as React from "react";
6
5
  import { BooleanProp, Prop, StringProp } from "../../ui/Prop";
7
6
  export interface RadioConfig extends FieldConfig {
8
7
  /** Selected value. If the value is equal to `option`, the radio button appears checked. */
@@ -108,7 +108,15 @@ class SliderComponent extends VDOM.Component {
108
108
  [anchor]: `${(100 * rangeStart) / (maxValue - minValue)}%`,
109
109
  [widget.vertical ? "height" : "width"]: `${(100 * rangeSize) / (maxValue - minValue)}%`,
110
110
  };
111
- return (_jsxs("div", { className: data.classNames, style: data.style, id: data.id, onClick: (e) => this.onClick(e), ref: (el) => (this.dom.el = el || undefined), onMouseMove: (e) => tooltipMouseMove(e, ...getFieldTooltip(instance)), onMouseLeave: (e) => tooltipMouseLeave(e, ...getFieldTooltip(instance)), children: [label, "\u00A0", _jsxs("div", { className: CSS.element(baseClass, "axis"), children: [rangeSize > 0 && _jsx("div", { className: CSS.element(baseClass, "range"), style: rangeStyle }, "range"), _jsxs("div", { className: CSS.element(baseClass, "space"), ref: (c) => (this.dom.range = c || undefined), children: [widget.showFrom && (_jsx("div", { className: CSS.element(baseClass, "handle"), tabIndex: data.disabled ? undefined : data.tabIndex || 0, style: fromHandleStyle, onMouseDown: (e) => this.onHandleMouseDown(e, "from"), onMouseMove: (e) => tooltipMouseMove(e, instance, widget.fromTooltip, { tooltipName: "fromTooltip" }), onMouseLeave: (e) => this.onHandleMouseLeave(e, "from"), onTouchStart: (e) => this.onHandleMouseDown(e, "from"), ref: (c) => (this.dom.from = c || undefined) }, "from")), widget.showTo && (_jsx("div", { className: CSS.element(baseClass, "handle"), tabIndex: data.disabled ? undefined : 0, style: toHandleStyle, onMouseDown: (e) => this.onHandleMouseDown(e, "to"), onMouseMove: (e) => tooltipMouseMove(e, instance, widget.toTooltip, { tooltipName: "toTooltip" }), onMouseLeave: (e) => this.onHandleMouseLeave(e, "to"), onTouchStart: (e) => this.onHandleMouseDown(e, "to"), ref: (c) => (this.dom.to = c || undefined) }, "to"))] }, "space")] })] }));
111
+ return (_jsxs("div", { className: data.classNames, style: data.style, id: data.id, onClick: (e) => this.onClick(e), ref: (el) => {
112
+ this.dom.el = el || undefined;
113
+ }, onMouseMove: (e) => tooltipMouseMove(e, ...getFieldTooltip(instance)), onMouseLeave: (e) => tooltipMouseLeave(e, ...getFieldTooltip(instance)), children: [label, "\u00A0", _jsxs("div", { className: CSS.element(baseClass, "axis"), children: [rangeSize > 0 && _jsx("div", { className: CSS.element(baseClass, "range"), style: rangeStyle }, "range"), _jsxs("div", { className: CSS.element(baseClass, "space"), ref: (c) => {
114
+ this.dom.range = c || undefined;
115
+ }, children: [widget.showFrom && (_jsx("div", { className: CSS.element(baseClass, "handle"), tabIndex: data.disabled ? undefined : data.tabIndex || 0, style: fromHandleStyle, onMouseDown: (e) => this.onHandleMouseDown(e, "from"), onMouseMove: (e) => tooltipMouseMove(e, instance, widget.fromTooltip, { tooltipName: "fromTooltip" }), onMouseLeave: (e) => this.onHandleMouseLeave(e, "from"), onTouchStart: (e) => this.onHandleMouseDown(e, "from"), ref: (c) => {
116
+ this.dom.from = c || undefined;
117
+ } }, "from")), widget.showTo && (_jsx("div", { className: CSS.element(baseClass, "handle"), tabIndex: data.disabled ? undefined : 0, style: toHandleStyle, onMouseDown: (e) => this.onHandleMouseDown(e, "to"), onMouseMove: (e) => tooltipMouseMove(e, instance, widget.toTooltip, { tooltipName: "toTooltip" }), onMouseLeave: (e) => this.onHandleMouseLeave(e, "to"), onTouchStart: (e) => this.onHandleMouseDown(e, "to"), ref: (c) => {
118
+ this.dom.to = c || undefined;
119
+ } }, "to"))] }, "space")] })] }));
112
120
  }
113
121
  UNSAFE_componentWillReceiveProps(props) {
114
122
  this.setState({
@@ -2,7 +2,6 @@
2
2
  import type { RenderingContext } from "../../ui/RenderingContext";
3
3
  import type { Instance } from "../../ui/Instance";
4
4
  import { Field, FieldConfig, FieldInstance } from "./Field";
5
- import * as React from "react";
6
5
  import { BooleanProp, StringProp, StyleProp } from "../../ui/Prop";
7
6
  export interface SwitchConfig extends FieldConfig {
8
7
  /** Value indicating that switch is on. */
@@ -54,7 +54,7 @@ export class Switch extends Field {
54
54
  let { CSS, baseClass } = this;
55
55
  let text = data.text || this.renderChildren(context, instance);
56
56
  let renderTextElement = text?.length != 0;
57
- return (_jsxs("div", { className: data.classNames, style: data.style, id: data.id, tabIndex: data.disabled ? undefined : (data.tabIndex || 0), onMouseDown: (e) => {
57
+ return (_jsxs("div", { className: data.classNames, style: data.style, id: data.id, tabIndex: data.disabled ? undefined : data.tabIndex || 0, onMouseDown: (e) => {
58
58
  e.stopPropagation();
59
59
  if (!this.focusOnMouseDown)
60
60
  preventFocus(e);
@@ -4,7 +4,6 @@ import { PureContainerBase, PureContainerConfig } from "../../ui/PureContainer";
4
4
  import type { RenderingContext } from "../../ui/RenderingContext";
5
5
  import type { Instance } from "../../ui/Instance";
6
6
  import type { CSS } from "../../ui/CSS";
7
- import * as React from "react";
8
7
  import { Prop, StructuredProp } from "../../ui/Prop";
9
8
  export interface WheelConfig extends PureContainerConfig {
10
9
  /** The selected value. */
@@ -1,5 +1,3 @@
1
- /** @jsxImportSource react */
2
- import * as React from "react";
3
1
  import { ArrayAdapter } from "../../ui/adapter/ArrayAdapter";
4
2
  import { DataAdapter, DataAdapterRecord } from "../../ui/adapter/DataAdapter";
5
3
  import { GroupAdapter } from "../../ui/adapter/GroupAdapter";
@@ -17,7 +17,9 @@ class GridCellEditorCmp extends VDOM.Component {
17
17
  el = null;
18
18
  render() {
19
19
  let { className, style, children } = this.props;
20
- return (_jsx("div", { ref: (el) => (this.el = el), className: className, style: style, children: children }));
20
+ return (_jsx("div", { ref: (el) => {
21
+ this.el = el;
22
+ }, className: className, style: style, children: children }));
21
23
  }
22
24
  componentDidMount() {
23
25
  if (!isFocusedDeep(this.el)) {
@@ -1,5 +1,6 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { registerIcon } from './registry';
3
- export default registerIcon('calendar', (props) => {
4
- return _jsxs("svg", { ...props, viewBox: "0 0 32 32", children: [_jsx("path", { d: "M4 3h6m10 0h6", fill: "none", stroke: "currentColor", strokeWidth: "2" }), _jsx("path", { d: "M19 21h4v4h-4z", fill: "currentColor" }), _jsx("path", { d: "M3 25h24M3 21h24M3 17h24M7 28V13m-4 0h24M11 28V13.2M15 28V13.27M19 28V13.03M23 28V13.5", fill: "none", stroke: "currentColor" }), _jsx("path", { fill: "currentColor", d: "M10 8h10v2H10z" }), _jsx("path", { fill: "none", stroke: "currentColor", strokeWidth: "2", d: "M3 5h24v24H3z" })] });
2
+ /** @jsxImportSource react */
3
+ import { registerIcon } from "./registry";
4
+ export default registerIcon("calendar", ({ key, ...props }) => {
5
+ return (_jsxs("svg", { ...props, viewBox: "0 0 32 32", children: [_jsx("path", { d: "M4 3h6m10 0h6", fill: "none", stroke: "currentColor", strokeWidth: "2" }), _jsx("path", { d: "M19 21h4v4h-4z", fill: "currentColor" }), _jsx("path", { d: "M3 25h24M3 21h24M3 17h24M7 28V13m-4 0h24M11 28V13.2M15 28V13.27M19 28V13.03M23 28V13.5", fill: "none", stroke: "currentColor" }), _jsx("path", { fill: "currentColor", d: "M10 8h10v2H10z" }), _jsx("path", { fill: "none", stroke: "currentColor", strokeWidth: "2", d: "M3 5h24v24H3z" })] }, key));
5
6
  }, true);
@@ -1,5 +1,5 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { registerIcon } from './registry';
3
- export default registerIcon('check', (props) => {
4
- return _jsx("svg", { ...props, viewBox: "0 0 64 64", children: _jsx("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", fill: "currentColor" }) });
3
+ export default registerIcon('check', ({ key, ...props }) => {
4
+ return _jsx("svg", { ...props, viewBox: "0 0 64 64", children: _jsx("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", fill: "currentColor" }) }, key);
5
5
  }, true);
@@ -1,5 +1,5 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { registerIcon } from './registry';
3
- export default registerIcon('clear', (props) => {
4
- return _jsx("svg", { ...props, viewBox: "0 0 32 32", children: _jsx("path", { fill: "currentColor", strokeWidth: "1", stroke: "currentColor", d: "M16.9 16l4.92-4.92c.24-.24.24-.6 0-.84s-.6-.24-.84 0l-4.92 4.92-5.04-4.98c-.24-.24-.6-.24-.84 0s-.24.6 0 .84L15.16 16l-4.98 4.98c-.24.24-.24.6 0 .84s.6.24.84 0L16 16.84l4.98 4.98c.24.24.6.24.84 0s.24-.6 0-.84L16.9 16z" }) });
3
+ export default registerIcon('clear', ({ key, ...props }) => {
4
+ return _jsx("svg", { ...props, viewBox: "0 0 32 32", children: _jsx("path", { fill: "currentColor", strokeWidth: "1", stroke: "currentColor", d: "M16.9 16l4.92-4.92c.24-.24.24-.6 0-.84s-.6-.24-.84 0l-4.92 4.92-5.04-4.98c-.24-.24-.6-.24-.84 0s-.24.6 0 .84L15.16 16l-4.98 4.98c-.24.24-.24.6 0 .84s.6.24.84 0L16 16.84l4.98 4.98c.24.24.6.24.84 0s.24-.6 0-.84L16.9 16z" }) }, key);
5
5
  }, true);
@@ -1,5 +1,5 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { registerIcon } from "./registry";
3
- export default registerIcon("close", (props) => {
4
- return (_jsx("svg", { ...props, viewBox: "0 0 32 32", children: _jsx("path", { fill: "currentColor", strokeWidth: "1", stroke: "currentColor", d: "M17.8 16l9.84-9.84c.48-.48.48-1.2 0-1.68s-1.2-.48-1.68 0l-9.84 9.84L6.04 4.36c-.48-.48-1.2-.48-1.68 0s-.48 1.2 0 1.68L14.32 16l-9.96 9.96c-.48.48-.48 1.2 0 1.68s1.2.48 1.68 0L16 17.68l9.96 9.96c.48.48 1.2.48 1.68 0s.48-1.2 0-1.68L17.8 16z" }) }));
3
+ export default registerIcon("close", ({ key, ...props }) => {
4
+ return (_jsx("svg", { ...props, viewBox: "0 0 32 32", children: _jsx("path", { fill: "currentColor", strokeWidth: "1", stroke: "currentColor", d: "M17.8 16l9.84-9.84c.48-.48.48-1.2 0-1.68s-1.2-.48-1.68 0l-9.84 9.84L6.04 4.36c-.48-.48-1.2-.48-1.68 0s-.48 1.2 0 1.68L14.32 16l-9.96 9.96c-.48.48-.48 1.2 0 1.68s1.2.48 1.68 0L16 17.68l9.96 9.96c.48.48 1.2.48 1.68 0s.48-1.2 0-1.68L17.8 16z" }) }, key));
5
5
  }, true);
@@ -1,5 +1,5 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { registerIcon } from './registry';
3
- export default registerIcon('cx', (props) => {
4
- return _jsx("svg", { ...props, viewBox: "-347 249.7 48 48", children: _jsxs("g", { children: [_jsx("path", { fill: "currentColor", opacity: "0.7", d: "M-337.1 273.16l-4.23-7.33h8.46z" }), _jsx("path", { fill: "currentColor", d: "M-318.32 273.16l-4.23-7.33h8.46z" }), _jsx("path", { fill: "currentColor", opacity: "0.7", d: "M-337.53 273.43h-8.45l4.22-7.33z" }), _jsx("path", { fill: "currentColor", d: "M-309.38 273.43h-8.46l4.23-7.33z" }), _jsx("path", { fill: "currentColor", opacity: "0.7", d: "M-332.4 265.03l-4.22-7.33h8.46z" }), _jsx("path", { fill: "currentColor", d: "M-304.24 265.03l-4.23-7.33h8.45z" }), _jsx("path", { fill: "currentColor", d: "M-322.97 265.03l-4.28-7.33h8.5z" }), _jsx("path", { fill: "currentColor", opacity: "0.7", d: "M-332.87 265.3h-8.46l4.23-7.33z" }), _jsx("path", { fill: "currentColor", opacity: "0.7", d: "M-323.45 265.3h-8.46l4.2-7.33z" }), _jsx("path", { fill: "currentColor", d: "M-314.1 265.3h-8.45l4.23-7.33z" }), _jsx("path", { fill: "currentColor", d: "M-308.9 273.16l-4.23-7.33h8.46z" }), _jsx("path", { fill: "currentColor", d: "M-304.67 265.3h-8.46l4.23-7.33z" }), _jsx("path", { fill: "currentColor", d: "M-314.1 281.57h-8.45l4.23-7.33z" }), _jsx("path", { fill: "currentColor", d: "M-313.6 281.3l-4.24-7.33h8.46z" }), _jsx("path", { fill: "currentColor", d: "M-318.32 289.43l-4.23-7.33h8.46z" }), _jsx("path", { fill: "currentColor", d: "M-304.67 281.57h-8.46l4.23-7.33z" }), _jsx("path", { fill: "currentColor", d: "M-308.9 289.43l-4.23-7.33h8.46z" }), _jsx("path", { fill: "currentColor", opacity: "0.7", d: "M-341.76 281.3l-4.22-7.33h8.45z" }), _jsx("path", { fill: "currentColor", opacity: "0.7", d: "M-332.87 281.57h-8.46l4.23-7.33z" }), _jsx("path", { fill: "currentColor", opacity: "0.7", d: "M-337.1 289.43l-4.23-7.33h8.46z" }), _jsx("path", { fill: "currentColor", opacity: "0.7", d: "M-327.68 289.43l-4.23-7.33h8.43z" }), _jsx("path", { fill: "currentColor", opacity: "0.7", d: "M-328.16 289.7h-8.46l4.23-7.33z" }), _jsx("path", { fill: "currentColor", d: "M-318.75 289.7h-8.5l4.28-7.33z" }), _jsx("path", { fill: "currentColor", d: "M-300.02 289.7h-8.45l4.23-7.33z" })] }) });
3
+ export default registerIcon('cx', ({ key, ...props }) => {
4
+ return _jsx("svg", { ...props, viewBox: "-347 249.7 48 48", children: _jsxs("g", { children: [_jsx("path", { fill: "currentColor", opacity: "0.7", d: "M-337.1 273.16l-4.23-7.33h8.46z" }), _jsx("path", { fill: "currentColor", d: "M-318.32 273.16l-4.23-7.33h8.46z" }), _jsx("path", { fill: "currentColor", opacity: "0.7", d: "M-337.53 273.43h-8.45l4.22-7.33z" }), _jsx("path", { fill: "currentColor", d: "M-309.38 273.43h-8.46l4.23-7.33z" }), _jsx("path", { fill: "currentColor", opacity: "0.7", d: "M-332.4 265.03l-4.22-7.33h8.46z" }), _jsx("path", { fill: "currentColor", d: "M-304.24 265.03l-4.23-7.33h8.45z" }), _jsx("path", { fill: "currentColor", d: "M-322.97 265.03l-4.28-7.33h8.5z" }), _jsx("path", { fill: "currentColor", opacity: "0.7", d: "M-332.87 265.3h-8.46l4.23-7.33z" }), _jsx("path", { fill: "currentColor", opacity: "0.7", d: "M-323.45 265.3h-8.46l4.2-7.33z" }), _jsx("path", { fill: "currentColor", d: "M-314.1 265.3h-8.45l4.23-7.33z" }), _jsx("path", { fill: "currentColor", d: "M-308.9 273.16l-4.23-7.33h8.46z" }), _jsx("path", { fill: "currentColor", d: "M-304.67 265.3h-8.46l4.23-7.33z" }), _jsx("path", { fill: "currentColor", d: "M-314.1 281.57h-8.45l4.23-7.33z" }), _jsx("path", { fill: "currentColor", d: "M-313.6 281.3l-4.24-7.33h8.46z" }), _jsx("path", { fill: "currentColor", d: "M-318.32 289.43l-4.23-7.33h8.46z" }), _jsx("path", { fill: "currentColor", d: "M-304.67 281.57h-8.46l4.23-7.33z" }), _jsx("path", { fill: "currentColor", d: "M-308.9 289.43l-4.23-7.33h8.46z" }), _jsx("path", { fill: "currentColor", opacity: "0.7", d: "M-341.76 281.3l-4.22-7.33h8.45z" }), _jsx("path", { fill: "currentColor", opacity: "0.7", d: "M-332.87 281.57h-8.46l4.23-7.33z" }), _jsx("path", { fill: "currentColor", opacity: "0.7", d: "M-337.1 289.43l-4.23-7.33h8.46z" }), _jsx("path", { fill: "currentColor", opacity: "0.7", d: "M-327.68 289.43l-4.23-7.33h8.43z" }), _jsx("path", { fill: "currentColor", opacity: "0.7", d: "M-328.16 289.7h-8.46l4.23-7.33z" }), _jsx("path", { fill: "currentColor", d: "M-318.75 289.7h-8.5l4.28-7.33z" }), _jsx("path", { fill: "currentColor", d: "M-300.02 289.7h-8.45l4.23-7.33z" })] }) }, key);
5
5
  }, true);
@@ -1,5 +1,5 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { registerIcon } from './registry';
3
- export default registerIcon('drop-down', (props) => {
4
- return _jsx("svg", { ...props, viewBox: "0 0 20 20", children: _jsx("path", { fill: "currentColor", strokeWidth: "0", stroke: "currentColor", d: "M4.516 8.147L10.01 12.5l5.474-4.33-.473-.65-5 3.98-5-4z" }) });
3
+ export default registerIcon('drop-down', ({ key, ...props }) => {
4
+ return _jsx("svg", { ...props, viewBox: "0 0 20 20", children: _jsx("path", { fill: "currentColor", strokeWidth: "0", stroke: "currentColor", d: "M4.516 8.147L10.01 12.5l5.474-4.33-.473-.65-5 3.98-5-4z" }) }, key);
5
5
  }, true);
@@ -1,5 +1,5 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { registerIcon } from './registry';
3
- export default registerIcon('file', (props) => {
4
- return _jsxs("svg", { ...props, viewBox: "0 0 16 16", children: [_jsx("path", { d: "M2 2h5v5h5v7H2z", fill: "currentColor", stroke: "none" }), _jsx("path", { d: "M8 2v4h4z", fill: "currentColor", stroke: "none" })] });
3
+ export default registerIcon('file', ({ key, ...props }) => {
4
+ return _jsxs("svg", { ...props, viewBox: "0 0 16 16", children: [_jsx("path", { d: "M2 2h5v5h5v7H2z", fill: "currentColor", stroke: "none" }), _jsx("path", { d: "M8 2v4h4z", fill: "currentColor", stroke: "none" })] }, key);
5
5
  }, true);
@@ -1,5 +1,5 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { registerIcon } from './registry';
3
- export default registerIcon('folder-open', (props) => {
4
- return _jsxs("svg", { ...props, viewBox: "0 0 16 16", children: [_jsx("path", { d: "M0 5v7l2.5-6H13V5zm1 0h6L6 3H2z", fill: "currentColor", stroke: "none" }), _jsx("path", { d: "M3 7h13l-3 7H0z", fill: "currentColor", stroke: "none" })] });
3
+ export default registerIcon('folder-open', ({ key, ...props }) => {
4
+ return _jsxs("svg", { ...props, viewBox: "0 0 16 16", children: [_jsx("path", { d: "M0 5v7l2.5-6H13V5zm1 0h6L6 3H2z", fill: "currentColor", stroke: "none" }), _jsx("path", { d: "M3 7h13l-3 7H0z", fill: "currentColor", stroke: "none" })] }, key);
5
5
  }, true);
@@ -1,5 +1,5 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { registerIcon } from './registry';
3
- export default registerIcon('folder', (props) => {
4
- return _jsx("svg", { ...props, viewBox: "0 0 16 16", children: _jsx("path", { d: "M1 5h13v9H1zm1 0h6L7 3H3z", fill: "currentColor", stroke: "none" }) });
3
+ export default registerIcon('folder', ({ key, ...props }) => {
4
+ return _jsx("svg", { ...props, viewBox: "0 0 16 16", children: _jsx("path", { d: "M1 5h13v9H1zm1 0h6L7 3H3z", fill: "currentColor", stroke: "none" }) }, key);
5
5
  }, true);
@@ -1,5 +1,5 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { registerIcon } from './registry';
3
- export default registerIcon('forward', (props) => {
4
- return _jsxs("svg", { ...props, viewBox: "0 0 20 20", children: [_jsx("path", { fill: "currentColor", strokeWidth: "0", stroke: "currentColor", d: "M10.15 15.5L14.5 10l-4.33-5.47-.65.47 3.98 5-4 5z" }), _jsx("path", { fill: "currentColor", strokeWidth: "0", stroke: "currentColor", d: "M6.15 15.5L10.5 10 6.17 4.53 5.52 5l3.98 5-4 5z" })] });
3
+ export default registerIcon('forward', ({ key, ...props }) => {
4
+ return _jsxs("svg", { ...props, viewBox: "0 0 20 20", children: [_jsx("path", { fill: "currentColor", strokeWidth: "0", stroke: "currentColor", d: "M10.15 15.5L14.5 10l-4.33-5.47-.65.47 3.98 5-4 5z" }), _jsx("path", { fill: "currentColor", strokeWidth: "0", stroke: "currentColor", d: "M6.15 15.5L10.5 10 6.17 4.53 5.52 5l3.98 5-4 5z" })] }, key);
5
5
  }, true);
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { registerIcon } from './registry';
3
- export default registerIcon('loading', (props) => {
3
+ export default registerIcon('loading', ({ key, ...props }) => {
4
4
  let style = {
5
5
  animation: 'linear infinite 0.5s cx-rotate'
6
6
  };
@@ -10,5 +10,5 @@ export default registerIcon('loading', (props) => {
10
10
  ...props,
11
11
  style
12
12
  };
13
- return _jsx("svg", { ...props, viewBox: "0 0 50 50", children: _jsx("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" }) });
13
+ return _jsx("svg", { ...props, viewBox: "0 0 50 50", children: _jsx("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" }) }, key);
14
14
  }, true);
@@ -1,5 +1,5 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { registerIcon } from './registry';
3
- export default registerIcon('menu', (props) => {
4
- return _jsxs("svg", { ...props, viewBox: "0 0 24 24", children: [_jsx("path", { d: "M0 0h24v24H0z", fill: "none" }), _jsx("path", { d: "M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z", fill: "currentColor" })] });
3
+ export default registerIcon('menu', ({ key, ...props }) => {
4
+ return _jsxs("svg", { ...props, viewBox: "0 0 24 24", children: [_jsx("path", { d: "M0 0h24v24H0z", fill: "none" }), _jsx("path", { d: "M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z", fill: "currentColor" })] }, key);
5
5
  }, true);
@@ -1,5 +1,5 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { registerIcon } from "./registry";
3
- export default registerIcon("pixel-picker", (props) => {
4
- return (_jsx("svg", { ...props, viewBox: "0 0 30 30", children: _jsx("path", { 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", fill: "currentColor" }) }));
3
+ export default registerIcon("pixel-picker", ({ key, ...props }) => {
4
+ return (_jsx("svg", { ...props, viewBox: "0 0 30 30", children: _jsx("path", { 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", fill: "currentColor" }) }, key));
5
5
  }, true);
@@ -1,5 +1,5 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { registerIcon } from './registry';
3
- export default registerIcon('search', (props) => {
4
- return _jsx("svg", { ...props, viewBox: "0 0 32 32", children: _jsx("path", { fill: "currentColor", d: "M25.595 22.036l-5.26-5.075c.75-1.18 1.206-2.56 1.206-4.05 0-4.32-3.63-7.82-8.103-7.82-4.477 0-8.107 3.503-8.107 7.82 0 4.32 3.63 7.825 8.106 7.825 1.544 0 2.972-.44 4.198-1.162l5.26 5.074c.37.356.98.354 1.35 0l1.352-1.304c.37-.357.37-.947 0-1.304zm-12.16-3.91c-2.985 0-5.405-2.336-5.405-5.216 0-2.88 2.42-5.214 5.405-5.214 2.984 0 5.404 2.335 5.404 5.214 0 2.88-2.42 5.215-5.407 5.215z" }) });
3
+ export default registerIcon('search', ({ key, ...props }) => {
4
+ return _jsx("svg", { ...props, viewBox: "0 0 32 32", children: _jsx("path", { fill: "currentColor", d: "M25.595 22.036l-5.26-5.075c.75-1.18 1.206-2.56 1.206-4.05 0-4.32-3.63-7.82-8.103-7.82-4.477 0-8.107 3.503-8.107 7.82 0 4.32 3.63 7.825 8.106 7.825 1.544 0 2.972-.44 4.198-1.162l5.26 5.074c.37.356.98.354 1.35 0l1.352-1.304c.37-.357.37-.947 0-1.304zm-12.16-3.91c-2.985 0-5.405-2.336-5.405-5.216 0-2.88 2.42-5.214 5.405-5.214 2.984 0 5.404 2.335 5.404 5.214 0 2.88-2.42 5.215-5.407 5.215z" }) }, key);
5
5
  }, true);
@@ -1,5 +1,5 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { registerIcon } from './registry';
3
- export default registerIcon('sort-asc', (props) => {
4
- return _jsx("svg", { ...props, viewBox: "0 0 16 16", children: _jsx("path", { fill: "currentColor", d: "M10.5 5.8l-3-3-3 3 .707.708L7 4.688v8.312h1V4.69l1.793 1.817z" }) });
3
+ export default registerIcon('sort-asc', ({ key, ...props }) => {
4
+ return _jsx("svg", { ...props, viewBox: "0 0 16 16", children: _jsx("path", { fill: "currentColor", d: "M10.5 5.8l-3-3-3 3 .707.708L7 4.688v8.312h1V4.69l1.793 1.817z" }) }, key);
5
5
  }, true);
@@ -1,5 +1,5 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { registerIcon } from './registry';
3
- export default registerIcon('square', (props) => {
4
- return _jsx("svg", { ...props, viewBox: "0 0 64 64", children: _jsx("rect", { x: "12", y: "12", width: "40", height: "40", fill: "currentColor" }) });
3
+ export default registerIcon('square', ({ key, ...props }) => {
4
+ return _jsx("svg", { ...props, viewBox: "0 0 64 64", children: _jsx("rect", { x: "12", y: "12", width: "40", height: "40", fill: "currentColor" }) }, key);
5
5
  }, true);
@@ -1,3 +1,5 @@
1
+ /** @jsxImportSource react */
2
+ import type { Root } from "cx-react";
1
3
  import { Store } from "../../data/Store";
2
4
  import { ContainerBase, StyledContainerConfig } from "../../ui/Container";
3
5
  import { Instance } from "../../ui/Instance";
@@ -152,6 +154,7 @@ export declare class OverlayComponent<Props extends OverlayComponentProps = Over
152
154
  onPopState?: () => void;
153
155
  unsubscribeWheelBlock?: () => void;
154
156
  customStyle: any;
157
+ root: Root;
155
158
  constructor(props: Props);
156
159
  render(): import("react/jsx-runtime").JSX.Element | null;
157
160
  renderOverlay(): import("react/jsx-runtime").JSX.Element;
@@ -1,5 +1,4 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- /** @jsxImportSource react */
3
2
  import { isBinding, isBindingObject } from "../../data/Binding";
4
3
  import { startAppLoop } from "../../ui/app/startAppLoop";
5
4
  import { ContainerBase } from "../../ui/Container";
@@ -531,6 +530,7 @@ export class OverlayComponent extends VDOM.Component {
531
530
  widget.overlayWillUnmount(this.props.instance, this);
532
531
  if (this.ownedEl) {
533
532
  setTimeout(() => {
533
+ this.root?.unmount();
534
534
  if (this.ownedEl?.parentNode)
535
535
  this.ownedEl.parentNode.removeChild(this.ownedEl);
536
536
  this.ownedEl = null;
@@ -590,7 +590,8 @@ export class OverlayComponent extends VDOM.Component {
590
590
  }
591
591
  componentDidUpdate() {
592
592
  if (this.containerEl && !VDOM.DOM.createPortal) {
593
- VDOM.DOM.render(this.renderOverlay(), this.containerEl);
593
+ this.root = VDOM.DOM.createRoot(this.containerEl);
594
+ this.root.render(this.renderOverlay());
594
595
  }
595
596
  this.overlayDidUpdate();
596
597
  }