@makeswift/runtime 0.8.9 → 0.8.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (249) hide show
  1. package/dist/Box.cjs.js +2 -4
  2. package/dist/Box.cjs.js.map +1 -1
  3. package/dist/Box.es.js +2 -4
  4. package/dist/Box.es.js.map +1 -1
  5. package/dist/Button.cjs.js +1 -4
  6. package/dist/Button.cjs.js.map +1 -1
  7. package/dist/Button.es.js +1 -4
  8. package/dist/Button.es.js.map +1 -1
  9. package/dist/Carousel.cjs.js +1 -4
  10. package/dist/Carousel.cjs.js.map +1 -1
  11. package/dist/Carousel.es.js +1 -4
  12. package/dist/Carousel.es.js.map +1 -1
  13. package/dist/Countdown.cjs.js +1 -4
  14. package/dist/Countdown.cjs.js.map +1 -1
  15. package/dist/Countdown.es.js +1 -4
  16. package/dist/Countdown.es.js.map +1 -1
  17. package/dist/Divider.cjs.js +1 -4
  18. package/dist/Divider.cjs.js.map +1 -1
  19. package/dist/Divider.es.js +1 -4
  20. package/dist/Divider.es.js.map +1 -1
  21. package/dist/Embed.cjs.js +3 -5
  22. package/dist/Embed.cjs.js.map +1 -1
  23. package/dist/Embed.es.js +3 -5
  24. package/dist/Embed.es.js.map +1 -1
  25. package/dist/Form.cjs.js +1 -4
  26. package/dist/Form.cjs.js.map +1 -1
  27. package/dist/Form.es.js +2 -5
  28. package/dist/Form.es.js.map +1 -1
  29. package/dist/Image.cjs.js +1 -4
  30. package/dist/Image.cjs.js.map +1 -1
  31. package/dist/Image.es.js +2 -5
  32. package/dist/Image.es.js.map +1 -1
  33. package/dist/LiveProvider.cjs.js +1 -4
  34. package/dist/LiveProvider.cjs.js.map +1 -1
  35. package/dist/LiveProvider.es.js +2 -5
  36. package/dist/LiveProvider.es.js.map +1 -1
  37. package/dist/Navigation.cjs.js +3 -5
  38. package/dist/Navigation.cjs.js.map +1 -1
  39. package/dist/Navigation.es.js +3 -5
  40. package/dist/Navigation.es.js.map +1 -1
  41. package/dist/PreviewProvider.cjs.js +1 -4
  42. package/dist/PreviewProvider.cjs.js.map +1 -1
  43. package/dist/PreviewProvider.es.js +3 -6
  44. package/dist/PreviewProvider.es.js.map +1 -1
  45. package/dist/ReadOnlyText.cjs.js +62 -60
  46. package/dist/ReadOnlyText.cjs.js.map +1 -1
  47. package/dist/ReadOnlyText.es.js +9 -7
  48. package/dist/ReadOnlyText.es.js.map +1 -1
  49. package/dist/ReadOnlyTextV2.cjs.js +318 -0
  50. package/dist/ReadOnlyTextV2.cjs.js.map +1 -0
  51. package/dist/ReadOnlyTextV2.es.js +314 -0
  52. package/dist/ReadOnlyTextV2.es.js.map +1 -0
  53. package/dist/Root.cjs.js +2 -4
  54. package/dist/Root.cjs.js.map +1 -1
  55. package/dist/Root.es.js +2 -4
  56. package/dist/Root.es.js.map +1 -1
  57. package/dist/SocialLinks.cjs.js +1 -4
  58. package/dist/SocialLinks.cjs.js.map +1 -1
  59. package/dist/SocialLinks.es.js +1 -4
  60. package/dist/SocialLinks.es.js.map +1 -1
  61. package/dist/Text.cjs.js +2 -5
  62. package/dist/Text.cjs.js.map +1 -1
  63. package/dist/Text.es.js +3 -6
  64. package/dist/Text.es.js.map +1 -1
  65. package/dist/Video.cjs.js +1 -4
  66. package/dist/Video.cjs.js.map +1 -1
  67. package/dist/Video.es.js +1 -4
  68. package/dist/Video.es.js.map +1 -1
  69. package/dist/actions.cjs.js.map +1 -1
  70. package/dist/actions.es.js.map +1 -1
  71. package/dist/builder.cjs.js +1 -2
  72. package/dist/builder.cjs.js.map +1 -1
  73. package/dist/builder.es.js +1 -2
  74. package/dist/builder.es.js.map +1 -1
  75. package/dist/components.cjs.js +2 -4
  76. package/dist/components.cjs.js.map +1 -1
  77. package/dist/components.es.js +2 -4
  78. package/dist/components.es.js.map +1 -1
  79. package/dist/constants.cjs.js.map +1 -1
  80. package/dist/constants.es.js.map +1 -1
  81. package/dist/control-serialization.cjs.js +0 -2
  82. package/dist/control-serialization.cjs.js.map +1 -1
  83. package/dist/control-serialization.es.js +0 -2
  84. package/dist/control-serialization.es.js.map +1 -1
  85. package/dist/controls.cjs.js +2 -6
  86. package/dist/controls.cjs.js.map +1 -1
  87. package/dist/controls.es.js +2 -3
  88. package/dist/controls.es.js.map +1 -1
  89. package/dist/descriptors.cjs.js +53 -88
  90. package/dist/descriptors.cjs.js.map +1 -1
  91. package/dist/descriptors.es.js +32 -64
  92. package/dist/descriptors.es.js.map +1 -1
  93. package/dist/element.cjs.js +55 -0
  94. package/dist/element.cjs.js.map +1 -0
  95. package/dist/element.es.js +54 -0
  96. package/dist/element.es.js.map +1 -0
  97. package/dist/index.cjs.js +33 -116
  98. package/dist/index.cjs.js.map +1 -1
  99. package/dist/index.cjs2.js +3 -4
  100. package/dist/index.cjs2.js.map +1 -1
  101. package/dist/index.cjs5.js +48 -82
  102. package/dist/index.cjs5.js.map +1 -1
  103. package/dist/index.cjs6.js +41 -42
  104. package/dist/index.cjs6.js.map +1 -1
  105. package/dist/index.cjs7.js +14 -341
  106. package/dist/index.cjs7.js.map +1 -1
  107. package/dist/index.cjs8.js +209 -0
  108. package/dist/index.cjs8.js.map +1 -0
  109. package/dist/index.cjs9.js +370 -0
  110. package/dist/index.cjs9.js.map +1 -0
  111. package/dist/index.es.js +32 -117
  112. package/dist/index.es.js.map +1 -1
  113. package/dist/index.es2.js +2 -3
  114. package/dist/index.es2.js.map +1 -1
  115. package/dist/index.es3.js +1 -1
  116. package/dist/index.es5.js +19 -54
  117. package/dist/index.es5.js.map +1 -1
  118. package/dist/index.es6.js +36 -40
  119. package/dist/index.es6.js.map +1 -1
  120. package/dist/index.es7.js +13 -336
  121. package/dist/index.es7.js.map +1 -1
  122. package/dist/index.es8.js +202 -0
  123. package/dist/index.es8.js.map +1 -0
  124. package/dist/index.es9.js +363 -0
  125. package/dist/index.es9.js.map +1 -0
  126. package/dist/introspection.cjs.js +0 -2
  127. package/dist/introspection.cjs.js.map +1 -1
  128. package/dist/introspection.es.js +0 -2
  129. package/dist/introspection.es.js.map +1 -1
  130. package/dist/leaf.cjs.js.map +1 -1
  131. package/dist/leaf.es.js +1 -1
  132. package/dist/leaf.es.js.map +1 -1
  133. package/dist/main.cjs.js +1 -2
  134. package/dist/main.cjs.js.map +1 -1
  135. package/dist/main.es.js +1 -2
  136. package/dist/main.es.js.map +1 -1
  137. package/dist/next.cjs.js +1 -4
  138. package/dist/next.cjs.js.map +1 -1
  139. package/dist/next.es.js +2 -5
  140. package/dist/next.es.js.map +1 -1
  141. package/dist/prop-controllers.cjs.js +1 -2
  142. package/dist/prop-controllers.cjs.js.map +1 -1
  143. package/dist/prop-controllers.es.js +1 -2
  144. package/dist/prop-controllers.es.js.map +1 -1
  145. package/dist/react.cjs.js +1 -4
  146. package/dist/react.cjs.js.map +1 -1
  147. package/dist/react.es.js +1 -4
  148. package/dist/react.es.js.map +1 -1
  149. package/dist/slate.cjs.js +8 -3
  150. package/dist/slate.cjs.js.map +1 -1
  151. package/dist/slate.cjs2.js +46 -0
  152. package/dist/slate.cjs2.js.map +1 -0
  153. package/dist/slate.es.js +6 -4
  154. package/dist/slate.es.js.map +1 -1
  155. package/dist/slate.es2.js +44 -0
  156. package/dist/slate.es2.js.map +1 -0
  157. package/dist/types/src/components/builtin/Button/Button.d.ts +1 -1
  158. package/dist/types/src/components/builtin/Form/components/Field/components/Checkbox/index.d.ts +1 -1
  159. package/dist/types/src/components/builtin/Text/EditableText/editable-text.d.ts.map +1 -1
  160. package/dist/types/src/components/builtin/Text/ReadOnlyText.d.ts +2 -1
  161. package/dist/types/src/components/builtin/Text/ReadOnlyText.d.ts.map +1 -1
  162. package/dist/types/src/components/builtin/Text/components/Element/block.d.ts +1 -1
  163. package/dist/types/src/components/builtin/Text/components/Element/block.d.ts.map +1 -1
  164. package/dist/types/src/components/builtin/Text/components/Element/inline.d.ts +1 -1
  165. package/dist/types/src/components/builtin/Text/components/Element/inline.d.ts.map +1 -1
  166. package/dist/types/src/components/builtin/Text/components/Leaf/leaf.d.ts +1 -1
  167. package/dist/types/src/components/builtin/Text/components/Leaf/leaf.d.ts.map +1 -1
  168. package/dist/types/src/controls/list.d.ts +2 -1
  169. package/dist/types/src/controls/list.d.ts.map +1 -1
  170. package/dist/types/src/controls/rich-text/dto-types.d.ts +1 -1
  171. package/dist/types/src/controls/rich-text/dto-types.d.ts.map +1 -1
  172. package/dist/types/src/controls/rich-text/index.d.ts +0 -1
  173. package/dist/types/src/controls/rich-text/index.d.ts.map +1 -1
  174. package/dist/types/src/controls/rich-text/rich-text.d.ts +1 -1
  175. package/dist/types/src/controls/rich-text/rich-text.d.ts.map +1 -1
  176. package/dist/types/src/controls/rich-text/translation.d.ts +1 -1
  177. package/dist/types/src/controls/rich-text/translation.d.ts.map +1 -1
  178. package/dist/types/src/controls/rich-text-v2/rich-text-v2.d.ts +25 -4
  179. package/dist/types/src/controls/rich-text-v2/rich-text-v2.d.ts.map +1 -1
  180. package/dist/types/src/controls/shape.d.ts +2 -1
  181. package/dist/types/src/controls/shape.d.ts.map +1 -1
  182. package/dist/types/src/controls/slot.d.ts +1 -1
  183. package/dist/types/src/controls/slot.d.ts.map +1 -1
  184. package/dist/types/src/controls/style.d.ts +2 -1
  185. package/dist/types/src/controls/style.d.ts.map +1 -1
  186. package/dist/types/src/prop-controllers/base.d.ts +7 -0
  187. package/dist/types/src/prop-controllers/base.d.ts.map +1 -0
  188. package/dist/types/src/prop-controllers/instances.d.ts +1 -5
  189. package/dist/types/src/prop-controllers/instances.d.ts.map +1 -1
  190. package/dist/types/src/runtimes/react/controls/rich-text-v2/EditableTextV2/editable-text-v2.d.ts +13 -0
  191. package/dist/types/src/runtimes/react/controls/rich-text-v2/EditableTextV2/editable-text-v2.d.ts.map +1 -0
  192. package/dist/types/src/runtimes/react/controls/rich-text-v2/EditableTextV2/index.d.ts +4 -0
  193. package/dist/types/src/runtimes/react/controls/rich-text-v2/EditableTextV2/index.d.ts.map +1 -0
  194. package/dist/types/src/runtimes/react/controls/rich-text-v2/EditableTextV2/useSyncDOMSelection.d.ts +9 -0
  195. package/dist/types/src/runtimes/react/controls/rich-text-v2/EditableTextV2/useSyncDOMSelection.d.ts.map +1 -0
  196. package/dist/types/src/runtimes/react/controls/rich-text-v2/ReadOnlyTextV2.d.ts +21 -0
  197. package/dist/types/src/runtimes/react/controls/rich-text-v2/ReadOnlyTextV2.d.ts.map +1 -0
  198. package/dist/types/src/runtimes/react/controls/rich-text-v2/index.d.ts +2 -0
  199. package/dist/types/src/runtimes/react/controls/rich-text-v2/index.d.ts.map +1 -0
  200. package/dist/types/src/runtimes/react/controls/rich-text-v2/rich-text-v2.d.ts +8 -0
  201. package/dist/types/src/runtimes/react/controls/rich-text-v2/rich-text-v2.d.ts.map +1 -0
  202. package/dist/types/src/slate/BlockPlugin/index.d.ts +1 -1
  203. package/dist/types/src/slate/BlockPlugin/index.d.ts.map +1 -1
  204. package/dist/types/src/slate/BlockPlugin/types.d.ts +1 -1
  205. package/dist/types/src/slate/BlockPlugin/types.d.ts.map +1 -1
  206. package/dist/types/src/slate/BlockPlugin/unwrapInline.d.ts +1 -1
  207. package/dist/types/src/slate/BlockPlugin/unwrapInline.d.ts.map +1 -1
  208. package/dist/types/src/slate/BlockPlugin/wrapInline.d.ts +1 -1
  209. package/dist/types/src/slate/BlockPlugin/wrapInline.d.ts.map +1 -1
  210. package/dist/types/src/slate/BuilderPlugin/index.d.ts +7 -0
  211. package/dist/types/src/slate/BuilderPlugin/index.d.ts.map +1 -0
  212. package/dist/types/src/slate/InlineModePlugin/index.d.ts +5 -0
  213. package/dist/types/src/slate/InlineModePlugin/index.d.ts.map +1 -0
  214. package/dist/types/src/slate/ListPlugin/index.d.ts +1 -1
  215. package/dist/types/src/slate/ListPlugin/index.d.ts.map +1 -1
  216. package/dist/types/src/slate/ListPlugin/toggleList.d.ts +1 -1
  217. package/dist/types/src/slate/ListPlugin/toggleList.d.ts.map +1 -1
  218. package/dist/types/src/slate/ListPlugin/wrapList.d.ts +1 -1
  219. package/dist/types/src/slate/ListPlugin/wrapList.d.ts.map +1 -1
  220. package/dist/types/src/slate/TypographyPlugin/detachActiveTypography.d.ts +1 -1
  221. package/dist/types/src/slate/TypographyPlugin/detachActiveTypography.d.ts.map +1 -1
  222. package/dist/types/src/slate/TypographyPlugin/index.d.ts +1 -1
  223. package/dist/types/src/slate/TypographyPlugin/index.d.ts.map +1 -1
  224. package/dist/types/src/slate/TypographyPlugin/setActiveTypographyStyle.d.ts.map +1 -1
  225. package/dist/types/src/slate/index.d.ts +2 -0
  226. package/dist/types/src/slate/index.d.ts.map +1 -1
  227. package/dist/types/src/slate/selectors.d.ts +1 -1
  228. package/dist/types/src/slate/selectors.d.ts.map +1 -1
  229. package/dist/types/src/slate/utils/editor.d.ts +1 -1
  230. package/dist/types/src/slate/utils/editor.d.ts.map +1 -1
  231. package/dist/types/src/slate/utils/element.d.ts +1 -1
  232. package/dist/types/src/slate/utils/element.d.ts.map +1 -1
  233. package/dist/types/src/state/actions.d.ts +2 -1
  234. package/dist/types/src/state/actions.d.ts.map +1 -1
  235. package/dist/types/src/state/modules/prop-controller-handles.d.ts +2 -1
  236. package/dist/types/src/state/modules/prop-controller-handles.d.ts.map +1 -1
  237. package/dist/types/src/state/react-builder-preview.d.ts.map +1 -1
  238. package/dist/types/src/state/react-page.d.ts +1 -1
  239. package/dist/types/src/state/react-page.d.ts.map +1 -1
  240. package/dist/types/{src/controls/rich-text/types.d.ts → types/slate.d.ts} +20 -17
  241. package/dist/types/types/slate.d.ts.map +1 -0
  242. package/dist/useIsomorphicLayoutEffect.cjs.js +6 -0
  243. package/dist/useIsomorphicLayoutEffect.cjs.js.map +1 -0
  244. package/dist/useIsomorphicLayoutEffect.es.js +5 -0
  245. package/dist/useIsomorphicLayoutEffect.es.js.map +1 -0
  246. package/package.json +1 -1
  247. package/dist/types/src/controls/rich-text/types.d.ts.map +0 -1
  248. package/dist/types/src/runtimes/react/controls/rich-text-v2.d.ts +0 -15
  249. package/dist/types/src/runtimes/react/controls/rich-text-v2.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"control-serialization.es.js","sources":["../src/builder/serialization/function-serialization.ts","../src/builder/serialization/controls/combobox.ts","../src/builder/serialization/controls/list.ts","../src/builder/serialization/controls/shape.ts","../src/builder/serialization/control-serialization.ts"],"sourcesContent":["declare const SerializedFunctionTag: unique symbol\n\ntype AnyFunction = (...args: any) => any\n\nexport type SerializedFunction<T extends AnyFunction> = MessagePort & {\n readonly [SerializedFunctionTag]: T\n}\n\ntype SerializedFunctionReturnType<T extends AnyFunction> = Awaited<ReturnType<T>>\n\nexport type DeserializedFunction<T extends AnyFunction> = (\n ...args: Parameters<T>\n) => Promise<SerializedFunctionReturnType<T>>\n\nexport function isSerializedFunction(value: any): value is SerializedFunction<AnyFunction> {\n return value instanceof MessagePort\n}\n\ntype CallID = number\n\nexport function serializeFunction<T extends AnyFunction>(func: T): SerializedFunction<T> {\n type CallMessageEvent = MessageEvent<[CallID, Parameters<T>]>\n\n const messageChannel = new MessageChannel()\n\n messageChannel.port1.onmessage = ({ data: [callId, args] }: CallMessageEvent) => {\n Promise.resolve()\n .then(() => func.apply(null, args))\n .then(result => messageChannel.port1.postMessage([callId, result]))\n }\n\n return messageChannel.port2 as SerializedFunction<T>\n}\n\nexport function deserializeFunction<T extends AnyFunction>(\n serializedFunction: SerializedFunction<T>,\n): DeserializedFunction<T> {\n type Result = SerializedFunctionReturnType<T>\n type ResultMessageEvent = MessageEvent<[CallID, Result]>\n type ResolveCallPromise = (value: Result | PromiseLike<Result>) => void\n\n let nextCallId = 0\n const calls = new Map<CallID, ResolveCallPromise>()\n\n serializedFunction.onmessage = ({ data: [callId, result] }: ResultMessageEvent) => {\n calls.get(callId)?.(result)\n\n calls.delete(callId)\n }\n\n return function deserializedFunction(...args) {\n return new Promise(resolve => {\n const callId = nextCallId++\n\n calls.set(callId, resolve)\n\n serializedFunction.postMessage([callId, args])\n })\n }\n}\n\nif (import.meta.vitest) {\n const { describe, test, expect } = import.meta.vitest\n\n describe.concurrent('serializeFunction & deserializeFunction', () => {\n test('simple call', async () => {\n // Arrange\n const add = deserializeFunction(serializeFunction((a, b) => a + b))\n\n // Act\n const result = await add(2, 2)\n\n // Assert\n expect(result).toBe(4)\n })\n\n test('multiple synchronous calls', async () => {\n // Arrange\n const add = deserializeFunction(serializeFunction((a, b) => a + b))\n\n // Act\n const results = await Promise.all(Array.from({ length: 5 }, (_, i) => add(1, i)))\n\n // Assert\n expect(results).toEqual([1, 2, 3, 4, 5])\n })\n })\n\n describe.concurrent('isSerializedFunction', () => {\n test('trivial case', () => {\n // Arrange\n const add = serializeFunction((a, b) => a + b)\n\n // Act\n const result = isSerializedFunction(add)\n\n // Assert\n expect(result).toBe(true)\n })\n\n test('false positive', () => {\n // Arrange\n const add = (a: number, b: number) => a + b\n\n // Act\n const result = isSerializedFunction(add)\n\n // Assert\n expect(result).toBe(false)\n })\n })\n}\n","import { ComboboxControlDefinition } from '../../../controls'\nimport { deserializeFunction, serializeFunction } from '../function-serialization'\nimport { Deserialize, Serialize } from './types'\n\nexport function serializeComboboxControlDefinition(\n definition: ComboboxControlDefinition,\n): [Serialize<ComboboxControlDefinition>, Transferable[]] {\n const transferables = []\n const getOptions = definition.config.getOptions && serializeFunction(definition.config.getOptions)\n\n if (getOptions) transferables.push(getOptions)\n\n return [{ ...definition, config: { ...definition.config, getOptions } }, transferables] as [\n Serialize<ComboboxControlDefinition>,\n Transferable[],\n ]\n}\n\nexport function deserializeComboboxControlDefinition(\n definition: Serialize<ComboboxControlDefinition>,\n): Deserialize<Serialize<ComboboxControlDefinition>> {\n const getOptions =\n definition.config.getOptions && deserializeFunction(definition.config.getOptions)\n\n return {\n ...definition,\n config: { ...definition.config, getOptions },\n } as Deserialize<Serialize<ComboboxControlDefinition>>\n}\n","import { ListControlDefinition } from '../../../controls'\nimport { deserializeControl, serializeControl } from '../control-serialization'\nimport { deserializeFunction, serializeFunction } from '../function-serialization'\nimport { Deserialize, Serialize } from './types'\n\nexport function serializeListControlDefinition(\n definition: ListControlDefinition,\n): [Serialize<ListControlDefinition>, Transferable[]] {\n const [type, transferables] = serializeControl(definition.config.type)\n const getItemLabel =\n definition.config.getItemLabel && serializeFunction(definition.config.getItemLabel)\n\n if (getItemLabel) transferables.push(getItemLabel)\n\n return [\n { ...definition, config: { ...definition.config, type, getItemLabel } },\n transferables,\n ] as [Serialize<ListControlDefinition>, Transferable[]]\n}\n\nexport function deserializeListControlDefinition(\n definition: Serialize<ListControlDefinition>,\n): Deserialize<Serialize<ListControlDefinition>> {\n const type = deserializeControl(definition.config.type)\n const getItemLabel =\n definition.config.getItemLabel && deserializeFunction(definition.config.getItemLabel)\n\n return {\n ...definition,\n config: { ...definition.config, type, getItemLabel },\n } as Deserialize<Serialize<ListControlDefinition>>\n}\n","import { ShapeControlDefinition } from '../../../controls'\nimport {\n deserializeControl,\n DeserializedControl,\n serializeControl,\n SerializedControl,\n} from '../control-serialization'\nimport { Deserialize, Serialize } from './types'\n\nexport function serializeShapeControlDefinition(\n definition: ShapeControlDefinition,\n): [Serialize<ShapeControlDefinition>, Transferable[]] {\n const [type, transferables] = Object.entries(definition.config.type).reduce(\n ([type, transferables], [key, value]) => {\n const [serializedType, serializedTransferables] = serializeControl(value)\n\n type[key] = serializedType\n transferables.push(...serializedTransferables)\n\n return [type, transferables]\n },\n [{} as Record<string, SerializedControl>, [] as Transferable[]],\n )\n\n return [{ ...definition, config: { ...definition.config, type } }, transferables] as [\n Serialize<ShapeControlDefinition>,\n Transferable[],\n ]\n}\n\nexport function deserializeShapeControlDefinition(\n definition: Serialize<ShapeControlDefinition>,\n): Deserialize<Serialize<ShapeControlDefinition>> {\n const type = Object.entries(definition.config.type).reduce((type, [key, value]) => {\n const serializedType = deserializeControl(value)\n\n type[key] = serializedType\n\n return type\n }, {} as Record<string, DeserializedControl>)\n\n return {\n ...definition,\n config: { ...definition.config, type },\n } as Deserialize<Serialize<ShapeControlDefinition>>\n}\n","import {\n ComboboxControlDefinition,\n ComboboxControlType,\n ListControlDefinition,\n ListControlType,\n ShapeControlDefinition,\n ShapeControlType,\n} from '../../controls'\nimport {\n CheckboxDescriptor as CheckboxControl,\n CheckboxValue as CheckboxControlValue,\n Data,\n Device,\n DateDescriptor as DateControl,\n DateValue as DateControlValue,\n Gap,\n GapXDescriptor as GapXControl,\n GapXValue as GapXControlValue,\n GapYDescriptor as GapYControl,\n GapYValue as GapYControlValue,\n ImageDescriptor as ImageControl,\n ImageValue as ImageControlValue,\n LinkDescriptor as LinkControl,\n LinkValue as LinkControlValue,\n ListDescriptor as ListControl,\n ListOptions as ListControlConfig,\n ListValue as ListControlValue,\n NumberDescriptor as NumberControl,\n NumberValue as NumberControlValue,\n ResponsiveColorDescriptor as ResponsiveColorControl,\n ResponsiveColorValue as ResponsiveColorControlValue,\n ResponsiveNumberDescriptor as ResponsiveNumberControl,\n ResponsiveNumberValue as ResponsiveNumberControlValue,\n ResponsiveIconRadioGroupDescriptor as ResponsiveIconRadioGroupControl,\n ResponsiveIconRadioGroupValue as ResponsiveIconRadioGroupControlValue,\n ResponsiveSelectDescriptor as ResponsiveSelectControl,\n ResponsiveSelectValue as ResponsiveSelectControlValue,\n ResponsiveLengthDescriptor as ResponsiveLengthControl,\n ResponsiveLengthValue as ResponsiveLengthControlValue,\n RichTextDescriptor as RichTextControl,\n RichTextValue as RichTextControlValue,\n ShapeDescriptor as ShapeControl,\n ShapeValue as ShapeControlValue,\n TextInputDescriptor as TextInputControl,\n TextInputValue as TextInputControlValue,\n TextStyleDescriptor as TextStyleControl,\n TextStyleValue as TextStyleControlValue,\n TypeaheadDescriptor as TypeaheadControl,\n TypeaheadOptions as TypeaheadControlConfig,\n TypeaheadValue as TypeaheadControlValue,\n PanelDescriptor as PanelControl,\n PanelDescriptorType as PanelControlType,\n PanelDescriptorValueType as PanelControlValueType,\n PropControllerDescriptor as Control,\n Props as Controls,\n} from '../../prop-controllers'\nimport {\n IconRadioGroupOption,\n LengthOption,\n SelectLabelOrientation,\n SelectOption,\n Length,\n} from '../../prop-controllers/descriptors'\nimport {\n deserializeComboboxControlDefinition,\n serializeComboboxControlDefinition,\n} from './controls/combobox'\nimport { deserializeListControlDefinition, serializeListControlDefinition } from './controls/list'\nimport {\n deserializeShapeControlDefinition,\n serializeShapeControlDefinition,\n} from './controls/shape'\nimport { Deserialize, Serialize } from './controls/types'\nimport {\n DeserializedFunction,\n deserializeFunction,\n isSerializedFunction,\n SerializedFunction,\n serializeFunction,\n} from './function-serialization'\n\ntype SerializedShapeControlConfig<T extends Record<string, SerializedPanelControl>> = {\n type: T\n preset?: { [K in keyof T]?: SerializedPanelControlValueType<T[K]> }\n}\n\ntype SerializedShapeControl<\n _T extends Record<string, Data>,\n U extends Record<string, SerializedPanelControl>,\n> = {\n type: typeof Controls.Types.Shape\n options: SerializedShapeControlConfig<U>\n}\n\nfunction serializeShapeControl<\n T extends Record<string, Data>,\n U extends Record<string, PanelControl>,\n>(\n control: ShapeControl<T, U>,\n): [\n SerializedShapeControl<\n T,\n { [K in keyof U]: SerializedPanelControl<PanelControlValueType<U[K]>> }\n >,\n Transferable[],\n] {\n const { type } = control.options\n const transferables: Transferable[] = []\n const serializedType = {} as {\n [K in keyof U]: SerializedPanelControl<PanelControlValueType<U[K]>>\n }\n\n Object.entries(type).forEach(([key, control]) => {\n const [serializedControl, serializedControlTransferables] = serializeControl(control)\n\n serializedType[key as keyof typeof type] = serializedControl as SerializedPanelControl\n transferables.push(...serializedControlTransferables)\n })\n\n // @ts-expect-error: preset types are incompatible\n return [{ ...control, options: { ...control.options, type: serializedType } }, transferables]\n}\n\ntype DeserializedShapeControlConfig<T extends Record<string, DeserializedPanelControl>> = {\n type: T\n preset?: { [K in keyof T]?: DeserializedPanelControlValueType<T[K]> }\n}\n\ntype DeserializedShapeControl<\n _T extends Record<string, Data>,\n U extends Record<string, DeserializedPanelControl>,\n> = {\n type: typeof Controls.Types.Shape\n options: DeserializedShapeControlConfig<U>\n}\n\nfunction deserializeShapeControl<\n T extends Record<string, Data>,\n U extends Record<string, SerializedPanelControl>,\n>(\n control: SerializedShapeControl<T, U>,\n): DeserializedShapeControl<\n T,\n { [K in keyof U]: DeserializedPanelControl<SerializedPanelControlValueType<U[K]>> }\n> {\n const { type } = control.options\n const deserializedType = {} as {\n [K in keyof U]: DeserializedPanelControl<SerializedPanelControlValueType<U[K]>>\n }\n\n Object.entries(type).forEach(([key, control]) => {\n deserializedType[key as keyof typeof type] = deserializeControl(\n control,\n ) as DeserializedPanelControl\n })\n\n // @ts-expect-error: preset types are incompatible\n return { ...control, options: { ...control.options, type: deserializedType } }\n}\n\ntype SerializedListControlConfig<T extends Data> = {\n type: SerializedPanelControl<T>\n label?: string\n getItemLabel?: SerializedFunction<Exclude<ListControlConfig<T>['getItemLabel'], undefined>>\n preset?: ListControlValue<T>\n defaultValue?: ListControlValue<T>\n}\n\ntype SerializedListControl<T extends ListControlValue = ListControlValue> = {\n type: typeof Controls.Types.List\n options: SerializedListControlConfig<T extends ListControlValue<infer U> ? U : never>\n}\n\nfunction serializeListControl<T extends Data>(\n control: ListControl<ListControlValue<T>>,\n): [SerializedListControl<ListControlValue<T>>, Transferable[]] {\n const { type, getItemLabel } = control.options\n const transferables: Transferable[] = []\n\n const [serializedType, serializedTypeTransferables] = serializeControl(type)\n const serializedGetItemLabel = getItemLabel && serializeFunction(getItemLabel)\n\n transferables.push(...serializedTypeTransferables)\n if (serializedGetItemLabel != null) transferables.push(serializedGetItemLabel)\n\n return [\n {\n ...control,\n options: {\n ...control.options,\n type: serializedType as SerializedPanelControl,\n getItemLabel: serializedGetItemLabel,\n },\n },\n transferables,\n ]\n}\n\ntype DeserializedListControlConfig<T extends Data> = {\n type: DeserializedPanelControl<T>\n label?: string\n getItemLabel?: DeserializedFunction<Exclude<ListControlConfig<T>['getItemLabel'], undefined>>\n preset?: ListControlValue<T>\n defaultValue?: ListControlValue<T>\n}\n\ntype DeserializedListControl<T extends ListControlValue = ListControlValue> = {\n type: typeof Controls.Types.List\n options: DeserializedListControlConfig<T extends ListControlValue<infer U> ? U : never>\n}\n\nfunction deserializeListControl<T extends Data>(\n serializedControl: SerializedListControl<ListControlValue<T>>,\n): DeserializedListControl<ListControlValue<T>> {\n const { type, getItemLabel } = serializedControl.options\n\n const deserializedType = deserializeControl(type) as DeserializedPanelControl\n const deserializedGetItemLabel = getItemLabel && deserializeFunction(getItemLabel)\n\n return {\n ...serializedControl,\n options: {\n ...serializedControl.options,\n type: deserializedType,\n getItemLabel: deserializedGetItemLabel,\n },\n }\n}\n\ntype SerializedTypeaheadControlConfig<T extends Data> = {\n getItems: SerializedFunction<TypeaheadControlConfig<T>['getItems']>\n label?: string\n preset?: TypeaheadControlValue<T>\n defaultValue?: TypeaheadControlValue<T>\n}\n\ntype SerializedTypeaheadControl<T extends TypeaheadControlValue = TypeaheadControlValue> = {\n type: typeof Controls.Types.Typeahead\n options: SerializedTypeaheadControlConfig<T['value']>\n}\n\nfunction serializeTypeaheadControl<T extends Data>(\n control: TypeaheadControl<TypeaheadControlValue<T>>,\n): [SerializedTypeaheadControl<TypeaheadControlValue<T>>, Transferable[]] {\n const { getItems } = control.options\n\n const serializedGetItems = getItems && serializeFunction(getItems)\n\n return [\n { ...control, options: { ...control.options, getItems: serializedGetItems } },\n serializedGetItems == null ? [] : [serializedGetItems],\n ]\n}\n\ntype DeserializedTypeaheadControlConfig<T extends Data> = {\n getItems: DeserializedFunction<TypeaheadControlConfig<T>['getItems']>\n label?: string\n preset?: TypeaheadControlValue<T>\n defaultValue?: TypeaheadControlValue<T>\n}\n\ntype DeserializedTypeaheadControl<T extends TypeaheadControlValue = TypeaheadControlValue> = {\n type: typeof Controls.Types.Typeahead\n options: DeserializedTypeaheadControlConfig<T['value']>\n}\n\nfunction deserializeTypeaheadControl<T extends Data>(\n serializedControl: SerializedTypeaheadControl<TypeaheadControlValue<T>>,\n): DeserializedTypeaheadControl<TypeaheadControlValue<T>> {\n const { getItems } = serializedControl.options\n\n const deserializedGetItems = getItems && deserializeFunction(getItems)\n\n return {\n ...serializedControl,\n options: { ...serializedControl.options, getItems: deserializedGetItems },\n }\n}\n\ntype SerializedConfig<T> =\n | T\n | SerializedFunction<(props: Record<string, unknown>, deviceMode: Device) => T>\n\ntype DeserializedConfig<T> =\n | T\n | DeserializedFunction<(props: Record<string, unknown>, deviceMode: Device) => T>\n\ntype GapXControlConfig = {\n preset?: GapXControlValue\n label?: string\n defaultValue?: Gap\n min?: number\n max?: number\n step?: number\n hidden?: boolean\n}\n\ntype SerializedGapXControl<_T = GapXControlValue> = {\n type: typeof Controls.Types.GapX\n options: SerializedConfig<GapXControlConfig>\n}\n\nfunction serializeGapXControl(control: GapXControl): [SerializedGapXControl, Transferable[]] {\n const { options } = control\n\n if (typeof options !== 'function') return [{ ...control, options }, []]\n\n const serializedOptions = serializeFunction(options)\n\n return [{ ...control, options: serializedOptions }, [serializedOptions]]\n}\n\ntype DeserializedGapXControl<_T = GapXControlValue> = {\n type: typeof Controls.Types.GapX\n options: DeserializedConfig<GapXControlConfig>\n}\n\nfunction deserializeGapXControl(serializedControl: SerializedGapXControl): DeserializedGapXControl {\n const { options } = serializedControl\n\n if (!isSerializedFunction(options)) return { ...serializedControl, options }\n\n const deserializedOptions = deserializeFunction(options)\n\n return { ...serializedControl, options: deserializedOptions }\n}\n\ntype GapYControlConfig = {\n preset?: GapYControlValue\n label?: string\n defaultValue?: Gap\n min?: number\n max?: number\n step?: number\n hidden?: boolean\n}\n\ntype SerializedGapYControl<_T = GapYControlValue> = {\n type: typeof Controls.Types.GapY\n options: SerializedConfig<GapYControlConfig>\n}\n\nfunction serializeGapYControl(control: GapYControl): [SerializedGapYControl, Transferable[]] {\n const { options } = control\n\n if (typeof options !== 'function') return [{ ...control, options }, []]\n\n const serializedOptions = serializeFunction(options)\n\n return [{ ...control, options: serializedOptions }, [serializedOptions]]\n}\n\ntype DeserializedGapYControl<_T = GapYControlValue> = {\n type: typeof Controls.Types.GapY\n options: DeserializedConfig<GapYControlConfig>\n}\n\nfunction deserializeGapYControl(serializedControl: SerializedGapYControl): DeserializedGapYControl {\n const { options } = serializedControl\n\n if (!isSerializedFunction(options)) return { ...serializedControl, options }\n\n const deserializedOptions = deserializeFunction(options)\n\n return { ...serializedControl, options: deserializedOptions }\n}\n\ntype ResponsiveNumberControlConfig = {\n preset?: ResponsiveNumberControlValue\n label?: string\n defaultValue?: number\n min?: number\n max?: number\n step?: number\n hidden?: boolean\n}\n\ntype SerializedResponsiveNumberControl<_T = ResponsiveNumberControlValue> = {\n type: typeof Controls.Types.ResponsiveNumber\n options: SerializedConfig<ResponsiveNumberControlConfig>\n}\n\nfunction serializeResponsiveNumberControl(\n control: ResponsiveNumberControl,\n): [SerializedResponsiveNumberControl, Transferable[]] {\n const { options } = control\n\n if (typeof options !== 'function') return [{ ...control, options }, []]\n\n const serializedOptions = serializeFunction(options)\n\n return [{ ...control, options: serializedOptions }, [serializedOptions]]\n}\n\ntype DeserializedResponsiveNumberControl<_T = ResponsiveNumberControlValue> = {\n type: typeof Controls.Types.ResponsiveNumber\n options: DeserializedConfig<ResponsiveNumberControlConfig>\n}\n\nfunction deserializeResponsiveNumberControl(\n serializedControl: SerializedResponsiveNumberControl,\n): DeserializedResponsiveNumberControl {\n const { options } = serializedControl\n\n if (!isSerializedFunction(options)) return { ...serializedControl, options }\n\n const deserializedOptions = deserializeFunction(options)\n\n return { ...serializedControl, options: deserializedOptions }\n}\n\ntype CheckboxControlConfig = {\n preset?: CheckboxControlValue\n label: string\n hidden?: boolean\n}\n\ntype SerializedCheckboxControl<_T = CheckboxControlValue> = {\n type: typeof Controls.Types.Checkbox\n options: SerializedConfig<CheckboxControlConfig>\n}\n\nfunction serializeCheckboxControl(\n control: CheckboxControl,\n): [SerializedCheckboxControl, Transferable[]] {\n const { options } = control\n\n if (typeof options !== 'function') return [{ ...control, options }, []]\n\n const serializedOptions = serializeFunction(options)\n\n return [{ ...control, options: serializedOptions }, [serializedOptions]]\n}\n\ntype DeserializedCheckboxControl<_T = CheckboxControlValue> = {\n type: typeof Controls.Types.Checkbox\n options: DeserializedConfig<CheckboxControlConfig>\n}\n\nfunction deserializeCheckboxControl(\n serializedControl: SerializedCheckboxControl,\n): DeserializedCheckboxControl {\n const { options } = serializedControl\n\n if (!isSerializedFunction(options)) return { ...serializedControl, options }\n\n const deserializedOptions = deserializeFunction(options)\n\n return { ...serializedControl, options: deserializedOptions }\n}\n\ntype ResponsiveColorControlConfig = { label?: string; placeholder?: string; hidden?: boolean }\n\ntype SerializedResponsiveColorControl<_T = ResponsiveColorControlValue> = {\n type: typeof Controls.Types.ResponsiveColor\n options: SerializedConfig<ResponsiveColorControlConfig>\n}\n\nfunction serializeResponsiveColorControl(\n control: ResponsiveColorControl,\n): [SerializedResponsiveColorControl, Transferable[]] {\n const { options } = control\n\n if (typeof options !== 'function') return [{ ...control, options }, []]\n\n const serializedOptions = serializeFunction(options)\n\n return [{ ...control, options: serializedOptions }, [serializedOptions]]\n}\n\ntype DeserializedResponsiveColorControl<_T = ResponsiveColorControlValue> = {\n type: typeof Controls.Types.ResponsiveColor\n options: DeserializedConfig<ResponsiveColorControlConfig>\n}\n\nfunction deserializeResponsiveColorControl(\n serializedControl: SerializedResponsiveColorControl,\n): DeserializedResponsiveColorControl {\n const { options } = serializedControl\n\n if (!isSerializedFunction(options)) return { ...serializedControl, options }\n\n const deserializedOptions = deserializeFunction(options)\n\n return { ...serializedControl, options: deserializedOptions }\n}\ntype NumberControlConfig = {\n preset?: NumberControlValue\n label?: string\n defaultValue?: number\n min?: number\n max?: number\n step?: number\n suffix?: string\n hidden?: boolean\n}\n\ntype SerializedNumberControl<_T = NumberControlValue> = {\n type: typeof Controls.Types.Number\n options: SerializedConfig<NumberControlConfig>\n}\n\nfunction serializeNumberControl(control: NumberControl): [SerializedNumberControl, Transferable[]] {\n const { options } = control\n\n if (typeof options !== 'function') return [{ ...control, options }, []]\n\n const serializedOptions = serializeFunction(options)\n\n return [{ ...control, options: serializedOptions }, [serializedOptions]]\n}\n\ntype DeserializedNumberControl<_T = NumberControlValue> = {\n type: typeof Controls.Types.Number\n options: DeserializedConfig<NumberControlConfig>\n}\n\nfunction deserializeNumberControl(\n serializedControl: SerializedNumberControl,\n): DeserializedNumberControl {\n const { options } = serializedControl\n\n if (!isSerializedFunction(options)) return { ...serializedControl, options }\n\n const deserializedOptions = deserializeFunction(options)\n\n return { ...serializedControl, options: deserializedOptions }\n}\ntype ResponsiveIconRadioGroupControlConfig<T extends string = string, U extends T = T> = {\n label?: string\n options: IconRadioGroupOption<T>[]\n defaultValue?: U\n hidden?: boolean\n}\n\ntype SerializedResponsiveIconRadioGroupControl<_T = ResponsiveIconRadioGroupControlValue> = {\n type: typeof Controls.Types.ResponsiveIconRadioGroup\n options: SerializedConfig<ResponsiveIconRadioGroupControlConfig>\n}\n\nfunction serializeResponsiveIconRadioGroupControl(\n control: ResponsiveIconRadioGroupControl,\n): [SerializedResponsiveIconRadioGroupControl, Transferable[]] {\n const { options } = control\n\n if (typeof options !== 'function') return [{ ...control, options }, []]\n\n const serializedOptions = serializeFunction(options)\n\n return [{ ...control, options: serializedOptions }, [serializedOptions]]\n}\n\ntype DeserializedResponsiveIconRadioGroupControl<_T = ResponsiveIconRadioGroupControlValue> = {\n type: typeof Controls.Types.ResponsiveIconRadioGroup\n options: DeserializedConfig<ResponsiveIconRadioGroupControlConfig>\n}\n\nfunction deserializeResponsiveIconRadioGroupControl(\n serializedControl: SerializedResponsiveIconRadioGroupControl,\n): DeserializedResponsiveIconRadioGroupControl {\n const { options } = serializedControl\n\n if (!isSerializedFunction(options)) return { ...serializedControl, options }\n\n const deserializedOptions = deserializeFunction(options)\n\n return { ...serializedControl, options: deserializedOptions }\n}\n\ntype DateControlConfig = { preset?: DateControlValue }\n\ntype SerializedDateControl<_T = DateControlValue> = {\n type: typeof Controls.Types.Date\n options: SerializedConfig<DateControlConfig>\n}\n\nfunction serializeDateControl(control: DateControl): [SerializedDateControl, Transferable[]] {\n const { options } = control\n\n if (typeof options !== 'function') return [{ ...control, options }, []]\n\n const serializedOptions = serializeFunction(options)\n\n return [{ ...control, options: serializedOptions }, [serializedOptions]]\n}\n\ntype DeserializedDateControl<_T = DateControlValue> = {\n type: typeof Controls.Types.Date\n options: DeserializedConfig<DateControlConfig>\n}\n\nfunction deserializeDateControl(serializedControl: SerializedDateControl): DeserializedDateControl {\n const { options } = serializedControl\n\n if (!isSerializedFunction(options)) return { ...serializedControl, options }\n\n const deserializedOptions = deserializeFunction(options)\n\n return { ...serializedControl, options: deserializedOptions }\n}\n\ntype LinkControlConfig = {\n preset?: LinkControlValue\n label?: string\n defaultValue?: LinkControlValue\n options?: { value: LinkControlValue['type']; label: string }[]\n hidden?: boolean\n}\n\ntype SerializedLinkControl<_T = LinkControlValue> = {\n type: typeof Controls.Types.Link\n options: SerializedConfig<LinkControlConfig>\n}\n\nfunction serializeLinkControl(control: LinkControl): [SerializedLinkControl, Transferable[]] {\n const { options } = control\n\n if (typeof options !== 'function') return [{ ...control, options }, []]\n\n const serializedOptions = serializeFunction(options)\n\n return [{ ...control, options: serializedOptions }, [serializedOptions]]\n}\n\ntype DeserializedLinkControl<_T = LinkControlValue> = {\n type: typeof Controls.Types.Link\n options: DeserializedConfig<LinkControlConfig>\n}\n\nfunction deserializeLinkControl(serializedControl: SerializedLinkControl): DeserializedLinkControl {\n const { options } = serializedControl\n\n if (!isSerializedFunction(options)) return { ...serializedControl, options }\n\n const deserializedOptions = deserializeFunction(options)\n\n return { ...serializedControl, options: deserializedOptions }\n}\n\ntype TextInputControlConfig = { label?: string; placeholder?: string; hidden?: boolean }\n\ntype SerializedTextInputControl<_T = TextInputControlValue> = {\n type: typeof Controls.Types.TextInput\n options: SerializedConfig<TextInputControlConfig>\n}\n\nfunction serializeTextInputControl(\n control: TextInputControl,\n): [SerializedTextInputControl, Transferable[]] {\n const { options } = control\n\n if (typeof options !== 'function') return [{ ...control, options }, []]\n\n const serializedOptions = serializeFunction(options)\n\n return [{ ...control, options: serializedOptions }, [serializedOptions]]\n}\n\ntype DeserializedTextInputControl<_T = TextInputControlValue> = {\n type: typeof Controls.Types.TextInput\n options: DeserializedConfig<TextInputControlConfig>\n}\n\nfunction deserializeTextInputControl(\n serializedControl: SerializedTextInputControl,\n): DeserializedTextInputControl {\n const { options } = serializedControl\n\n if (!isSerializedFunction(options)) return { ...serializedControl, options }\n\n const deserializedOptions = deserializeFunction(options)\n\n return { ...serializedControl, options: deserializedOptions }\n}\n\ntype SerializedResponsiveSelectControl<_T = ResponsiveSelectControlValue> = {\n type: typeof Controls.Types.ResponsiveSelect\n options: SerializedConfig<ResponsiveSelectControlConfig>\n}\n\nfunction serializeResponsiveSelectControl(\n control: ResponsiveSelectControl,\n): [SerializedResponsiveSelectControl, Transferable[]] {\n const { options } = control\n\n if (typeof options !== 'function') return [{ ...control, options }, []]\n\n const serializedOptions = serializeFunction(options)\n\n return [{ ...control, options: serializedOptions }, [serializedOptions]]\n}\n\ntype ResponsiveSelectControlConfig<T extends string = string, U extends T = T> = {\n label?: string\n labelOrientation?: SelectLabelOrientation\n options: SelectOption<T>[]\n defaultValue?: U\n hidden?: boolean\n}\n\ntype DeserializedResponsiveSelectControl<_T = ResponsiveSelectControlValue> = {\n type: typeof Controls.Types.ResponsiveSelect\n options: DeserializedConfig<ResponsiveSelectControlConfig>\n}\n\nfunction deserializeResponsiveSelectControl(\n serializedControl: SerializedResponsiveSelectControl,\n): DeserializedResponsiveSelectControl {\n const { options } = serializedControl\n\n if (!isSerializedFunction(options)) return { ...serializedControl, options }\n\n const deserializedOptions = deserializeFunction(options)\n\n return { ...serializedControl, options: deserializedOptions }\n}\n\ntype ResponsiveLengthControlConfig = {\n label?: string\n options?: LengthOption[]\n defaultValue?: Length\n hidden?: boolean\n}\n\ntype SerializedResponsiveLengthControl<_T = ResponsiveLengthControlValue> = {\n type: typeof Controls.Types.ResponsiveLength\n options: SerializedConfig<ResponsiveLengthControlConfig>\n}\n\nfunction serializeResponsiveLengthControl(\n control: ResponsiveLengthControl,\n): [SerializedResponsiveLengthControl, Transferable[]] {\n const { options } = control\n\n if (typeof options !== 'function') return [{ ...control, options }, []]\n\n const serializedOptions = serializeFunction(options)\n\n return [{ ...control, options: serializedOptions }, [serializedOptions]]\n}\n\ntype DeserializedResponsiveLengthControl<_T = ResponsiveLengthControlValue> = {\n type: typeof Controls.Types.ResponsiveLength\n options: DeserializedConfig<ResponsiveLengthControlConfig>\n}\n\nfunction deserializeResponsiveLengthControl(\n serializedControl: SerializedResponsiveLengthControl,\n): DeserializedResponsiveLengthControl {\n const { options } = serializedControl\n\n if (!isSerializedFunction(options)) return { ...serializedControl, options }\n\n const deserializedOptions = deserializeFunction(options)\n\n return { ...serializedControl, options: deserializedOptions }\n}\n\ntype SerializedTextStyleControl<_T = TextStyleControlValue> = {\n type: typeof Controls.Types.TextStyle\n options: SerializedConfig<TextStyleControlConfig>\n}\n\nfunction serializeTextStyleControl(\n control: TextStyleControl,\n): [SerializedTextStyleControl, Transferable[]] {\n const { options } = control\n\n if (typeof options !== 'function') return [{ ...control, options }, []]\n\n const serializedOptions = serializeFunction(options)\n\n return [{ ...control, options: serializedOptions }, [serializedOptions]]\n}\n\ntype TextStyleControlConfig = {\n preset?: TextStyleControlValue\n label?: string\n hidden?: boolean\n}\n\ntype DeserializedTextStyleControl<_T = TextStyleControlValue> = {\n type: typeof Controls.Types.TextStyle\n options: DeserializedConfig<TextStyleControlConfig>\n}\n\nfunction deserializeTextStyleControl(\n serializedControl: SerializedTextStyleControl,\n): DeserializedTextStyleControl {\n const { options } = serializedControl\n\n if (!isSerializedFunction(options)) return { ...serializedControl, options }\n\n const deserializedOptions = deserializeFunction(options)\n\n return { ...serializedControl, options: deserializedOptions }\n}\n\ntype ImageControlConfig = { label?: string; hidden?: boolean }\n\ntype SerializedImageControl<_T = ImageControlValue> = {\n type: typeof Controls.Types.Image\n options: SerializedConfig<ImageControlConfig>\n}\n\nfunction serializeImageControl(control: ImageControl): [SerializedImageControl, Transferable[]] {\n const { options } = control\n\n if (typeof options !== 'function') return [{ ...control, options }, []]\n\n const serializedOptions = serializeFunction(options)\n\n return [{ ...control, options: serializedOptions }, [serializedOptions]]\n}\n\ntype DeserializedImageControl<_T = ImageControlValue> = {\n type: typeof Controls.Types.Image\n options: DeserializedConfig<ImageControlConfig>\n}\n\nfunction deserializeImageControl(\n serializedControl: SerializedImageControl,\n): DeserializedImageControl {\n const { options } = serializedControl\n\n if (!isSerializedFunction(options)) return { ...serializedControl, options }\n\n const deserializedOptions = deserializeFunction(options)\n\n return { ...serializedControl, options: deserializedOptions }\n}\n\ntype RichTextControlConfig = { preset?: RichTextControlValue }\n\ntype SerializedRichTextControl<_T = RichTextControlValue> = {\n type: typeof Controls.Types.RichText\n options: SerializedConfig<RichTextControlConfig>\n}\n\nfunction serializeRichTextControl(\n control: RichTextControl,\n): [SerializedRichTextControl, Transferable[]] {\n const { options } = control\n\n if (typeof options !== 'function') return [{ ...control, options }, []]\n\n const serializedOptions = serializeFunction(options)\n\n return [{ ...control, options: serializedOptions }, [serializedOptions]]\n}\n\ntype DeserializedRichTextControl<_T = RichTextControlValue> = {\n type: typeof Controls.Types.RichText\n options: DeserializedConfig<RichTextControlConfig>\n}\n\nfunction deserializeRichTextControl(\n serializedControl: SerializedRichTextControl,\n): DeserializedRichTextControl {\n const { options } = serializedControl\n\n if (!isSerializedFunction(options)) return { ...serializedControl, options }\n\n const deserializedOptions = deserializeFunction(options)\n\n return { ...serializedControl, options: deserializedOptions }\n}\n\nexport type SerializedControl<T extends Data = Data> =\n | Exclude<\n Control<T>,\n | ListControl<T extends ListControlValue ? T : ListControlValue>\n | ShapeControl<T extends ShapeControlValue ? T : ShapeControlValue, any>\n | TypeaheadControl<T extends TypeaheadControlValue ? T : TypeaheadControlValue>\n | GapXControl<T>\n | GapYControl<T>\n | ResponsiveNumberControl<T>\n | CheckboxControl<T>\n | ResponsiveColorControl<T>\n | NumberControl<T>\n | ResponsiveIconRadioGroupControl<\n T extends ResponsiveIconRadioGroupControlValue ? T : ResponsiveIconRadioGroupControlValue\n >\n | ResponsiveSelectControl<\n T extends ResponsiveSelectControlValue ? T : ResponsiveSelectControlValue\n >\n | ResponsiveLengthControl<T>\n | DateControl<T>\n | LinkControl<T>\n | TextInputControl<T>\n | TextStyleControl<T>\n | ImageControl<T>\n | RichTextControl<T>\n | ComboboxControlDefinition\n | ShapeControlDefinition\n | ListControlDefinition\n >\n | SerializedListControl<T extends ListControlValue ? T : ListControlValue>\n | SerializedShapeControl<T extends ShapeControlValue ? T : ShapeControlValue, any>\n | SerializedTypeaheadControl<T extends TypeaheadControlValue ? T : TypeaheadControlValue>\n | SerializedGapXControl<T>\n | SerializedGapYControl<T>\n | SerializedResponsiveNumberControl<T>\n | SerializedCheckboxControl<T>\n | SerializedResponsiveColorControl<T>\n | SerializedNumberControl<T>\n | SerializedResponsiveIconRadioGroupControl<T>\n | SerializedResponsiveSelectControl<T>\n | SerializedResponsiveLengthControl<T>\n | SerializedDateControl<T>\n | SerializedLinkControl<T>\n | SerializedTextInputControl<T>\n | SerializedTextStyleControl<T>\n | SerializedImageControl<T>\n | SerializedRichTextControl<T>\n | Serialize<ComboboxControlDefinition>\n | Serialize<ShapeControlDefinition>\n | Serialize<ListControlDefinition>\n\ntype SerializedPanelControl<T extends Data = Data> = Extract<\n SerializedControl<T>,\n { type: PanelControlType }\n>\n\ntype SerializedPanelControlValueType<T extends SerializedPanelControl> =\n T extends SerializedPanelControl<infer U> ? U : never\n\nexport type DeserializedControl<T extends Data = Data> =\n | Exclude<\n Control<T>,\n | ListControl<T extends ListControlValue ? T : ListControlValue>\n | ShapeControl<T extends ShapeControlValue ? T : ShapeControlValue, any>\n | TypeaheadControl<T extends TypeaheadControlValue ? T : TypeaheadControlValue>\n | GapXControl<T>\n | GapYControl<T>\n | ResponsiveNumberControl<T>\n | CheckboxControl<T>\n | ResponsiveColorControl<T>\n | NumberControl<T>\n | ResponsiveIconRadioGroupControl<\n T extends ResponsiveIconRadioGroupControlValue ? T : ResponsiveIconRadioGroupControlValue\n >\n | ResponsiveSelectControl<\n T extends ResponsiveSelectControlValue ? T : ResponsiveSelectControlValue\n >\n | ResponsiveLengthControl<T>\n | DateControl<T>\n | LinkControl<T>\n | TextInputControl<T>\n | TextStyleControl<T>\n | ImageControl<T>\n | RichTextControl<T>\n | ComboboxControlDefinition\n | ShapeControlDefinition\n | ListControlDefinition\n >\n | DeserializedListControl<T extends ListControlValue ? T : ListControlValue>\n | DeserializedShapeControl<T extends ShapeControlValue ? T : ShapeControlValue, any>\n | DeserializedTypeaheadControl<T extends TypeaheadControlValue ? T : TypeaheadControlValue>\n | DeserializedGapXControl<T>\n | DeserializedGapYControl<T>\n | DeserializedResponsiveNumberControl<T>\n | DeserializedCheckboxControl<T>\n | DeserializedResponsiveColorControl<T>\n | DeserializedNumberControl<T>\n | DeserializedResponsiveIconRadioGroupControl<T>\n | DeserializedResponsiveSelectControl<T>\n | DeserializedResponsiveLengthControl<T>\n | DeserializedDateControl<T>\n | DeserializedLinkControl<T>\n | DeserializedTextInputControl<T>\n | DeserializedTextStyleControl<T>\n | DeserializedImageControl<T>\n | DeserializedRichTextControl<T>\n | Deserialize<Serialize<ComboboxControlDefinition>>\n | Deserialize<Serialize<ShapeControlDefinition>>\n | Deserialize<Serialize<ListControlDefinition>>\n\nexport type DeserializedPanelControl<T extends Data = Data> = Extract<\n DeserializedControl<T>,\n { type: PanelControlType }\n>\n\ntype DeserializedPanelControlValueType<T extends DeserializedPanelControl> =\n T extends DeserializedPanelControl<infer U> ? U : never\n\nexport function serializeControl<T extends Data>(\n control: Control<T>,\n): [SerializedControl<T>, Transferable[]] {\n switch (control.type) {\n case Controls.Types.Checkbox:\n return serializeCheckboxControl(control)\n\n case Controls.Types.List:\n return serializeListControl(control)\n\n case Controls.Types.Shape:\n return serializeShapeControl(control)\n\n case Controls.Types.Typeahead:\n return serializeTypeaheadControl(control)\n\n case Controls.Types.GapX:\n return serializeGapXControl(control)\n\n case Controls.Types.GapY:\n return serializeGapYControl(control)\n\n case Controls.Types.ResponsiveColor:\n return serializeResponsiveColorControl(control)\n\n case Controls.Types.ResponsiveNumber:\n return serializeResponsiveNumberControl(control)\n\n case Controls.Types.Number:\n return serializeNumberControl(control)\n\n case Controls.Types.ResponsiveIconRadioGroup:\n return serializeResponsiveIconRadioGroupControl(control)\n\n case Controls.Types.ResponsiveSelect:\n return serializeResponsiveSelectControl(control)\n\n case Controls.Types.ResponsiveLength:\n return serializeResponsiveLengthControl(control)\n\n case Controls.Types.Date:\n return serializeDateControl(control)\n\n case Controls.Types.Link:\n return serializeLinkControl(control)\n\n case Controls.Types.TextInput:\n return serializeTextInputControl(control)\n\n case Controls.Types.TextStyle:\n return serializeTextStyleControl(control)\n\n case Controls.Types.Image:\n return serializeImageControl(control)\n\n case Controls.Types.RichText:\n return serializeRichTextControl(control)\n\n case ComboboxControlType:\n return serializeComboboxControlDefinition(control)\n\n case ShapeControlType:\n return serializeShapeControlDefinition(control)\n\n case ListControlType:\n return serializeListControlDefinition(control)\n\n default:\n return [control, []]\n }\n}\n\nexport function deserializeControl<T extends Data>(\n serializedControl: SerializedControl<T>,\n): DeserializedControl<T> {\n switch (serializedControl.type) {\n case Controls.Types.Checkbox:\n return deserializeCheckboxControl(serializedControl)\n\n case Controls.Types.List:\n return deserializeListControl(serializedControl)\n\n case Controls.Types.Shape:\n return deserializeShapeControl(serializedControl)\n\n case Controls.Types.Typeahead:\n return deserializeTypeaheadControl(serializedControl)\n\n case Controls.Types.GapX:\n return deserializeGapXControl(serializedControl)\n\n case Controls.Types.GapY:\n return deserializeGapYControl(serializedControl)\n\n case Controls.Types.ResponsiveColor:\n return deserializeResponsiveColorControl(serializedControl)\n\n case Controls.Types.ResponsiveNumber:\n return deserializeResponsiveNumberControl(serializedControl)\n\n case Controls.Types.Number:\n return deserializeNumberControl(serializedControl)\n\n case Controls.Types.ResponsiveIconRadioGroup:\n return deserializeResponsiveIconRadioGroupControl(serializedControl)\n\n case Controls.Types.ResponsiveSelect:\n return deserializeResponsiveSelectControl(serializedControl)\n\n case Controls.Types.ResponsiveLength:\n return deserializeResponsiveLengthControl(serializedControl)\n\n case Controls.Types.Date:\n return deserializeDateControl(serializedControl)\n\n case Controls.Types.Link:\n return deserializeLinkControl(serializedControl)\n\n case Controls.Types.TextInput:\n return deserializeTextInputControl(serializedControl)\n\n case Controls.Types.TextStyle:\n return deserializeTextStyleControl(serializedControl)\n\n case Controls.Types.Image:\n return deserializeImageControl(serializedControl)\n\n case Controls.Types.RichText:\n return deserializeRichTextControl(serializedControl)\n\n case ComboboxControlType:\n return deserializeComboboxControlDefinition(serializedControl)\n\n case ShapeControlType:\n return deserializeShapeControlDefinition(serializedControl)\n\n case ListControlType:\n return deserializeListControlDefinition(serializedControl)\n\n default:\n return serializedControl\n }\n}\n\nexport function serializeControls(\n controls: Record<string, Control>,\n): [Record<string, SerializedControl>, Transferable[]] {\n return Object.entries(controls).reduce(\n ([accControls, accTransferables], [key, control]) => {\n const [serializedControl, transferables] = serializeControl(control)\n\n return [{ ...accControls, [key]: serializedControl }, [...accTransferables, ...transferables]]\n },\n [{}, []] as [Record<string, SerializedControl>, Transferable[]],\n )\n}\n\nexport function deserializeControls(\n serializedControls: Record<string, SerializedControl>,\n): Record<string, DeserializedControl> {\n return Object.entries(serializedControls).reduce(\n (deserializedControls, [key, serializedControl]) => {\n return { ...deserializedControls, [key]: deserializeControl(serializedControl) }\n },\n {} as Record<string, DeserializedControl>,\n )\n}\n"],"names":["Controls.Types"],"mappings":"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"}
1
+ {"version":3,"file":"control-serialization.es.js","sources":["../src/builder/serialization/function-serialization.ts","../src/builder/serialization/controls/combobox.ts","../src/builder/serialization/controls/list.ts","../src/builder/serialization/controls/shape.ts","../src/builder/serialization/control-serialization.ts"],"sourcesContent":["declare const SerializedFunctionTag: unique symbol\n\ntype AnyFunction = (...args: any) => any\n\nexport type SerializedFunction<T extends AnyFunction> = MessagePort & {\n readonly [SerializedFunctionTag]: T\n}\n\ntype SerializedFunctionReturnType<T extends AnyFunction> = Awaited<ReturnType<T>>\n\nexport type DeserializedFunction<T extends AnyFunction> = (\n ...args: Parameters<T>\n) => Promise<SerializedFunctionReturnType<T>>\n\nexport function isSerializedFunction(value: any): value is SerializedFunction<AnyFunction> {\n return value instanceof MessagePort\n}\n\ntype CallID = number\n\nexport function serializeFunction<T extends AnyFunction>(func: T): SerializedFunction<T> {\n type CallMessageEvent = MessageEvent<[CallID, Parameters<T>]>\n\n const messageChannel = new MessageChannel()\n\n messageChannel.port1.onmessage = ({ data: [callId, args] }: CallMessageEvent) => {\n Promise.resolve()\n .then(() => func.apply(null, args))\n .then(result => messageChannel.port1.postMessage([callId, result]))\n }\n\n return messageChannel.port2 as SerializedFunction<T>\n}\n\nexport function deserializeFunction<T extends AnyFunction>(\n serializedFunction: SerializedFunction<T>,\n): DeserializedFunction<T> {\n type Result = SerializedFunctionReturnType<T>\n type ResultMessageEvent = MessageEvent<[CallID, Result]>\n type ResolveCallPromise = (value: Result | PromiseLike<Result>) => void\n\n let nextCallId = 0\n const calls = new Map<CallID, ResolveCallPromise>()\n\n serializedFunction.onmessage = ({ data: [callId, result] }: ResultMessageEvent) => {\n calls.get(callId)?.(result)\n\n calls.delete(callId)\n }\n\n return function deserializedFunction(...args) {\n return new Promise(resolve => {\n const callId = nextCallId++\n\n calls.set(callId, resolve)\n\n serializedFunction.postMessage([callId, args])\n })\n }\n}\n\nif (import.meta.vitest) {\n const { describe, test, expect } = import.meta.vitest\n\n describe.concurrent('serializeFunction & deserializeFunction', () => {\n test('simple call', async () => {\n // Arrange\n const add = deserializeFunction(serializeFunction((a, b) => a + b))\n\n // Act\n const result = await add(2, 2)\n\n // Assert\n expect(result).toBe(4)\n })\n\n test('multiple synchronous calls', async () => {\n // Arrange\n const add = deserializeFunction(serializeFunction((a, b) => a + b))\n\n // Act\n const results = await Promise.all(Array.from({ length: 5 }, (_, i) => add(1, i)))\n\n // Assert\n expect(results).toEqual([1, 2, 3, 4, 5])\n })\n })\n\n describe.concurrent('isSerializedFunction', () => {\n test('trivial case', () => {\n // Arrange\n const add = serializeFunction((a, b) => a + b)\n\n // Act\n const result = isSerializedFunction(add)\n\n // Assert\n expect(result).toBe(true)\n })\n\n test('false positive', () => {\n // Arrange\n const add = (a: number, b: number) => a + b\n\n // Act\n const result = isSerializedFunction(add)\n\n // Assert\n expect(result).toBe(false)\n })\n })\n}\n","import { ComboboxControlDefinition } from '../../../controls'\nimport { deserializeFunction, serializeFunction } from '../function-serialization'\nimport { Deserialize, Serialize } from './types'\n\nexport function serializeComboboxControlDefinition(\n definition: ComboboxControlDefinition,\n): [Serialize<ComboboxControlDefinition>, Transferable[]] {\n const transferables = []\n const getOptions = definition.config.getOptions && serializeFunction(definition.config.getOptions)\n\n if (getOptions) transferables.push(getOptions)\n\n return [{ ...definition, config: { ...definition.config, getOptions } }, transferables] as [\n Serialize<ComboboxControlDefinition>,\n Transferable[],\n ]\n}\n\nexport function deserializeComboboxControlDefinition(\n definition: Serialize<ComboboxControlDefinition>,\n): Deserialize<Serialize<ComboboxControlDefinition>> {\n const getOptions =\n definition.config.getOptions && deserializeFunction(definition.config.getOptions)\n\n return {\n ...definition,\n config: { ...definition.config, getOptions },\n } as Deserialize<Serialize<ComboboxControlDefinition>>\n}\n","import { ListControlDefinition } from '../../../controls'\nimport { deserializeControl, serializeControl } from '../control-serialization'\nimport { deserializeFunction, serializeFunction } from '../function-serialization'\nimport { Deserialize, Serialize } from './types'\n\nexport function serializeListControlDefinition(\n definition: ListControlDefinition,\n): [Serialize<ListControlDefinition>, Transferable[]] {\n const [type, transferables] = serializeControl(definition.config.type)\n const getItemLabel =\n definition.config.getItemLabel && serializeFunction(definition.config.getItemLabel)\n\n if (getItemLabel) transferables.push(getItemLabel)\n\n return [\n { ...definition, config: { ...definition.config, type, getItemLabel } },\n transferables,\n ] as [Serialize<ListControlDefinition>, Transferable[]]\n}\n\nexport function deserializeListControlDefinition(\n definition: Serialize<ListControlDefinition>,\n): Deserialize<Serialize<ListControlDefinition>> {\n const type = deserializeControl(definition.config.type)\n const getItemLabel =\n definition.config.getItemLabel && deserializeFunction(definition.config.getItemLabel)\n\n return {\n ...definition,\n config: { ...definition.config, type, getItemLabel },\n } as Deserialize<Serialize<ListControlDefinition>>\n}\n","import { ShapeControlDefinition } from '../../../controls'\nimport {\n deserializeControl,\n DeserializedControl,\n serializeControl,\n SerializedControl,\n} from '../control-serialization'\nimport { Deserialize, Serialize } from './types'\n\nexport function serializeShapeControlDefinition(\n definition: ShapeControlDefinition,\n): [Serialize<ShapeControlDefinition>, Transferable[]] {\n const [type, transferables] = Object.entries(definition.config.type).reduce(\n ([type, transferables], [key, value]) => {\n const [serializedType, serializedTransferables] = serializeControl(value)\n\n type[key] = serializedType\n transferables.push(...serializedTransferables)\n\n return [type, transferables]\n },\n [{} as Record<string, SerializedControl>, [] as Transferable[]],\n )\n\n return [{ ...definition, config: { ...definition.config, type } }, transferables] as [\n Serialize<ShapeControlDefinition>,\n Transferable[],\n ]\n}\n\nexport function deserializeShapeControlDefinition(\n definition: Serialize<ShapeControlDefinition>,\n): Deserialize<Serialize<ShapeControlDefinition>> {\n const type = Object.entries(definition.config.type).reduce((type, [key, value]) => {\n const serializedType = deserializeControl(value)\n\n type[key] = serializedType\n\n return type\n }, {} as Record<string, DeserializedControl>)\n\n return {\n ...definition,\n config: { ...definition.config, type },\n } as Deserialize<Serialize<ShapeControlDefinition>>\n}\n","import {\n ComboboxControlDefinition,\n ComboboxControlType,\n ListControlDefinition,\n ListControlType,\n ShapeControlDefinition,\n ShapeControlType,\n} from '../../controls'\nimport {\n CheckboxDescriptor as CheckboxControl,\n CheckboxValue as CheckboxControlValue,\n Data,\n Device,\n DateDescriptor as DateControl,\n DateValue as DateControlValue,\n Gap,\n GapXDescriptor as GapXControl,\n GapXValue as GapXControlValue,\n GapYDescriptor as GapYControl,\n GapYValue as GapYControlValue,\n ImageDescriptor as ImageControl,\n ImageValue as ImageControlValue,\n LinkDescriptor as LinkControl,\n LinkValue as LinkControlValue,\n ListDescriptor as ListControl,\n ListOptions as ListControlConfig,\n ListValue as ListControlValue,\n NumberDescriptor as NumberControl,\n NumberValue as NumberControlValue,\n ResponsiveColorDescriptor as ResponsiveColorControl,\n ResponsiveColorValue as ResponsiveColorControlValue,\n ResponsiveNumberDescriptor as ResponsiveNumberControl,\n ResponsiveNumberValue as ResponsiveNumberControlValue,\n ResponsiveIconRadioGroupDescriptor as ResponsiveIconRadioGroupControl,\n ResponsiveIconRadioGroupValue as ResponsiveIconRadioGroupControlValue,\n ResponsiveSelectDescriptor as ResponsiveSelectControl,\n ResponsiveSelectValue as ResponsiveSelectControlValue,\n ResponsiveLengthDescriptor as ResponsiveLengthControl,\n ResponsiveLengthValue as ResponsiveLengthControlValue,\n RichTextDescriptor as RichTextControl,\n RichTextValue as RichTextControlValue,\n ShapeDescriptor as ShapeControl,\n ShapeValue as ShapeControlValue,\n TextInputDescriptor as TextInputControl,\n TextInputValue as TextInputControlValue,\n TextStyleDescriptor as TextStyleControl,\n TextStyleValue as TextStyleControlValue,\n TypeaheadDescriptor as TypeaheadControl,\n TypeaheadOptions as TypeaheadControlConfig,\n TypeaheadValue as TypeaheadControlValue,\n PanelDescriptor as PanelControl,\n PanelDescriptorType as PanelControlType,\n PanelDescriptorValueType as PanelControlValueType,\n PropControllerDescriptor as Control,\n Props as Controls,\n} from '../../prop-controllers'\nimport {\n IconRadioGroupOption,\n LengthOption,\n SelectLabelOrientation,\n SelectOption,\n Length,\n} from '../../prop-controllers/descriptors'\nimport {\n deserializeComboboxControlDefinition,\n serializeComboboxControlDefinition,\n} from './controls/combobox'\nimport { deserializeListControlDefinition, serializeListControlDefinition } from './controls/list'\nimport {\n deserializeShapeControlDefinition,\n serializeShapeControlDefinition,\n} from './controls/shape'\nimport { Deserialize, Serialize } from './controls/types'\nimport {\n DeserializedFunction,\n deserializeFunction,\n isSerializedFunction,\n SerializedFunction,\n serializeFunction,\n} from './function-serialization'\n\ntype SerializedShapeControlConfig<T extends Record<string, SerializedPanelControl>> = {\n type: T\n preset?: { [K in keyof T]?: SerializedPanelControlValueType<T[K]> }\n}\n\ntype SerializedShapeControl<\n _T extends Record<string, Data>,\n U extends Record<string, SerializedPanelControl>,\n> = {\n type: typeof Controls.Types.Shape\n options: SerializedShapeControlConfig<U>\n}\n\nfunction serializeShapeControl<\n T extends Record<string, Data>,\n U extends Record<string, PanelControl>,\n>(\n control: ShapeControl<T, U>,\n): [\n SerializedShapeControl<\n T,\n { [K in keyof U]: SerializedPanelControl<PanelControlValueType<U[K]>> }\n >,\n Transferable[],\n] {\n const { type } = control.options\n const transferables: Transferable[] = []\n const serializedType = {} as {\n [K in keyof U]: SerializedPanelControl<PanelControlValueType<U[K]>>\n }\n\n Object.entries(type).forEach(([key, control]) => {\n const [serializedControl, serializedControlTransferables] = serializeControl(control)\n\n serializedType[key as keyof typeof type] = serializedControl as SerializedPanelControl\n transferables.push(...serializedControlTransferables)\n })\n\n // @ts-expect-error: preset types are incompatible\n return [{ ...control, options: { ...control.options, type: serializedType } }, transferables]\n}\n\ntype DeserializedShapeControlConfig<T extends Record<string, DeserializedPanelControl>> = {\n type: T\n preset?: { [K in keyof T]?: DeserializedPanelControlValueType<T[K]> }\n}\n\ntype DeserializedShapeControl<\n _T extends Record<string, Data>,\n U extends Record<string, DeserializedPanelControl>,\n> = {\n type: typeof Controls.Types.Shape\n options: DeserializedShapeControlConfig<U>\n}\n\nfunction deserializeShapeControl<\n T extends Record<string, Data>,\n U extends Record<string, SerializedPanelControl>,\n>(\n control: SerializedShapeControl<T, U>,\n): DeserializedShapeControl<\n T,\n { [K in keyof U]: DeserializedPanelControl<SerializedPanelControlValueType<U[K]>> }\n> {\n const { type } = control.options\n const deserializedType = {} as {\n [K in keyof U]: DeserializedPanelControl<SerializedPanelControlValueType<U[K]>>\n }\n\n Object.entries(type).forEach(([key, control]) => {\n deserializedType[key as keyof typeof type] = deserializeControl(\n control,\n ) as DeserializedPanelControl\n })\n\n // @ts-expect-error: preset types are incompatible\n return { ...control, options: { ...control.options, type: deserializedType } }\n}\n\ntype SerializedListControlConfig<T extends Data> = {\n type: SerializedPanelControl<T>\n label?: string\n getItemLabel?: SerializedFunction<Exclude<ListControlConfig<T>['getItemLabel'], undefined>>\n preset?: ListControlValue<T>\n defaultValue?: ListControlValue<T>\n}\n\ntype SerializedListControl<T extends ListControlValue = ListControlValue> = {\n type: typeof Controls.Types.List\n options: SerializedListControlConfig<T extends ListControlValue<infer U> ? U : never>\n}\n\nfunction serializeListControl<T extends Data>(\n control: ListControl<ListControlValue<T>>,\n): [SerializedListControl<ListControlValue<T>>, Transferable[]] {\n const { type, getItemLabel } = control.options\n const transferables: Transferable[] = []\n\n const [serializedType, serializedTypeTransferables] = serializeControl(type)\n const serializedGetItemLabel = getItemLabel && serializeFunction(getItemLabel)\n\n transferables.push(...serializedTypeTransferables)\n if (serializedGetItemLabel != null) transferables.push(serializedGetItemLabel)\n\n return [\n {\n ...control,\n options: {\n ...control.options,\n type: serializedType as SerializedPanelControl,\n getItemLabel: serializedGetItemLabel,\n },\n },\n transferables,\n ]\n}\n\ntype DeserializedListControlConfig<T extends Data> = {\n type: DeserializedPanelControl<T>\n label?: string\n getItemLabel?: DeserializedFunction<Exclude<ListControlConfig<T>['getItemLabel'], undefined>>\n preset?: ListControlValue<T>\n defaultValue?: ListControlValue<T>\n}\n\ntype DeserializedListControl<T extends ListControlValue = ListControlValue> = {\n type: typeof Controls.Types.List\n options: DeserializedListControlConfig<T extends ListControlValue<infer U> ? U : never>\n}\n\nfunction deserializeListControl<T extends Data>(\n serializedControl: SerializedListControl<ListControlValue<T>>,\n): DeserializedListControl<ListControlValue<T>> {\n const { type, getItemLabel } = serializedControl.options\n\n const deserializedType = deserializeControl(type) as DeserializedPanelControl\n const deserializedGetItemLabel = getItemLabel && deserializeFunction(getItemLabel)\n\n return {\n ...serializedControl,\n options: {\n ...serializedControl.options,\n type: deserializedType,\n getItemLabel: deserializedGetItemLabel,\n },\n }\n}\n\ntype SerializedTypeaheadControlConfig<T extends Data> = {\n getItems: SerializedFunction<TypeaheadControlConfig<T>['getItems']>\n label?: string\n preset?: TypeaheadControlValue<T>\n defaultValue?: TypeaheadControlValue<T>\n}\n\ntype SerializedTypeaheadControl<T extends TypeaheadControlValue = TypeaheadControlValue> = {\n type: typeof Controls.Types.Typeahead\n options: SerializedTypeaheadControlConfig<T['value']>\n}\n\nfunction serializeTypeaheadControl<T extends Data>(\n control: TypeaheadControl<TypeaheadControlValue<T>>,\n): [SerializedTypeaheadControl<TypeaheadControlValue<T>>, Transferable[]] {\n const { getItems } = control.options\n\n const serializedGetItems = getItems && serializeFunction(getItems)\n\n return [\n { ...control, options: { ...control.options, getItems: serializedGetItems } },\n serializedGetItems == null ? [] : [serializedGetItems],\n ]\n}\n\ntype DeserializedTypeaheadControlConfig<T extends Data> = {\n getItems: DeserializedFunction<TypeaheadControlConfig<T>['getItems']>\n label?: string\n preset?: TypeaheadControlValue<T>\n defaultValue?: TypeaheadControlValue<T>\n}\n\ntype DeserializedTypeaheadControl<T extends TypeaheadControlValue = TypeaheadControlValue> = {\n type: typeof Controls.Types.Typeahead\n options: DeserializedTypeaheadControlConfig<T['value']>\n}\n\nfunction deserializeTypeaheadControl<T extends Data>(\n serializedControl: SerializedTypeaheadControl<TypeaheadControlValue<T>>,\n): DeserializedTypeaheadControl<TypeaheadControlValue<T>> {\n const { getItems } = serializedControl.options\n\n const deserializedGetItems = getItems && deserializeFunction(getItems)\n\n return {\n ...serializedControl,\n options: { ...serializedControl.options, getItems: deserializedGetItems },\n }\n}\n\ntype SerializedConfig<T> =\n | T\n | SerializedFunction<(props: Record<string, unknown>, deviceMode: Device) => T>\n\ntype DeserializedConfig<T> =\n | T\n | DeserializedFunction<(props: Record<string, unknown>, deviceMode: Device) => T>\n\ntype GapXControlConfig = {\n preset?: GapXControlValue\n label?: string\n defaultValue?: Gap\n min?: number\n max?: number\n step?: number\n hidden?: boolean\n}\n\ntype SerializedGapXControl<_T = GapXControlValue> = {\n type: typeof Controls.Types.GapX\n options: SerializedConfig<GapXControlConfig>\n}\n\nfunction serializeGapXControl(control: GapXControl): [SerializedGapXControl, Transferable[]] {\n const { options } = control\n\n if (typeof options !== 'function') return [{ ...control, options }, []]\n\n const serializedOptions = serializeFunction(options)\n\n return [{ ...control, options: serializedOptions }, [serializedOptions]]\n}\n\ntype DeserializedGapXControl<_T = GapXControlValue> = {\n type: typeof Controls.Types.GapX\n options: DeserializedConfig<GapXControlConfig>\n}\n\nfunction deserializeGapXControl(serializedControl: SerializedGapXControl): DeserializedGapXControl {\n const { options } = serializedControl\n\n if (!isSerializedFunction(options)) return { ...serializedControl, options }\n\n const deserializedOptions = deserializeFunction(options)\n\n return { ...serializedControl, options: deserializedOptions }\n}\n\ntype GapYControlConfig = {\n preset?: GapYControlValue\n label?: string\n defaultValue?: Gap\n min?: number\n max?: number\n step?: number\n hidden?: boolean\n}\n\ntype SerializedGapYControl<_T = GapYControlValue> = {\n type: typeof Controls.Types.GapY\n options: SerializedConfig<GapYControlConfig>\n}\n\nfunction serializeGapYControl(control: GapYControl): [SerializedGapYControl, Transferable[]] {\n const { options } = control\n\n if (typeof options !== 'function') return [{ ...control, options }, []]\n\n const serializedOptions = serializeFunction(options)\n\n return [{ ...control, options: serializedOptions }, [serializedOptions]]\n}\n\ntype DeserializedGapYControl<_T = GapYControlValue> = {\n type: typeof Controls.Types.GapY\n options: DeserializedConfig<GapYControlConfig>\n}\n\nfunction deserializeGapYControl(serializedControl: SerializedGapYControl): DeserializedGapYControl {\n const { options } = serializedControl\n\n if (!isSerializedFunction(options)) return { ...serializedControl, options }\n\n const deserializedOptions = deserializeFunction(options)\n\n return { ...serializedControl, options: deserializedOptions }\n}\n\ntype ResponsiveNumberControlConfig = {\n preset?: ResponsiveNumberControlValue\n label?: string\n defaultValue?: number\n min?: number\n max?: number\n step?: number\n hidden?: boolean\n}\n\ntype SerializedResponsiveNumberControl<_T = ResponsiveNumberControlValue> = {\n type: typeof Controls.Types.ResponsiveNumber\n options: SerializedConfig<ResponsiveNumberControlConfig>\n}\n\nfunction serializeResponsiveNumberControl(\n control: ResponsiveNumberControl,\n): [SerializedResponsiveNumberControl, Transferable[]] {\n const { options } = control\n\n if (typeof options !== 'function') return [{ ...control, options }, []]\n\n const serializedOptions = serializeFunction(options)\n\n return [{ ...control, options: serializedOptions }, [serializedOptions]]\n}\n\ntype DeserializedResponsiveNumberControl<_T = ResponsiveNumberControlValue> = {\n type: typeof Controls.Types.ResponsiveNumber\n options: DeserializedConfig<ResponsiveNumberControlConfig>\n}\n\nfunction deserializeResponsiveNumberControl(\n serializedControl: SerializedResponsiveNumberControl,\n): DeserializedResponsiveNumberControl {\n const { options } = serializedControl\n\n if (!isSerializedFunction(options)) return { ...serializedControl, options }\n\n const deserializedOptions = deserializeFunction(options)\n\n return { ...serializedControl, options: deserializedOptions }\n}\n\ntype CheckboxControlConfig = {\n preset?: CheckboxControlValue\n label: string\n hidden?: boolean\n}\n\ntype SerializedCheckboxControl<_T = CheckboxControlValue> = {\n type: typeof Controls.Types.Checkbox\n options: SerializedConfig<CheckboxControlConfig>\n}\n\nfunction serializeCheckboxControl(\n control: CheckboxControl,\n): [SerializedCheckboxControl, Transferable[]] {\n const { options } = control\n\n if (typeof options !== 'function') return [{ ...control, options }, []]\n\n const serializedOptions = serializeFunction(options)\n\n return [{ ...control, options: serializedOptions }, [serializedOptions]]\n}\n\ntype DeserializedCheckboxControl<_T = CheckboxControlValue> = {\n type: typeof Controls.Types.Checkbox\n options: DeserializedConfig<CheckboxControlConfig>\n}\n\nfunction deserializeCheckboxControl(\n serializedControl: SerializedCheckboxControl,\n): DeserializedCheckboxControl {\n const { options } = serializedControl\n\n if (!isSerializedFunction(options)) return { ...serializedControl, options }\n\n const deserializedOptions = deserializeFunction(options)\n\n return { ...serializedControl, options: deserializedOptions }\n}\n\ntype ResponsiveColorControlConfig = { label?: string; placeholder?: string; hidden?: boolean }\n\ntype SerializedResponsiveColorControl<_T = ResponsiveColorControlValue> = {\n type: typeof Controls.Types.ResponsiveColor\n options: SerializedConfig<ResponsiveColorControlConfig>\n}\n\nfunction serializeResponsiveColorControl(\n control: ResponsiveColorControl,\n): [SerializedResponsiveColorControl, Transferable[]] {\n const { options } = control\n\n if (typeof options !== 'function') return [{ ...control, options }, []]\n\n const serializedOptions = serializeFunction(options)\n\n return [{ ...control, options: serializedOptions }, [serializedOptions]]\n}\n\ntype DeserializedResponsiveColorControl<_T = ResponsiveColorControlValue> = {\n type: typeof Controls.Types.ResponsiveColor\n options: DeserializedConfig<ResponsiveColorControlConfig>\n}\n\nfunction deserializeResponsiveColorControl(\n serializedControl: SerializedResponsiveColorControl,\n): DeserializedResponsiveColorControl {\n const { options } = serializedControl\n\n if (!isSerializedFunction(options)) return { ...serializedControl, options }\n\n const deserializedOptions = deserializeFunction(options)\n\n return { ...serializedControl, options: deserializedOptions }\n}\ntype NumberControlConfig = {\n preset?: NumberControlValue\n label?: string\n defaultValue?: number\n min?: number\n max?: number\n step?: number\n suffix?: string\n hidden?: boolean\n}\n\ntype SerializedNumberControl<_T = NumberControlValue> = {\n type: typeof Controls.Types.Number\n options: SerializedConfig<NumberControlConfig>\n}\n\nfunction serializeNumberControl(control: NumberControl): [SerializedNumberControl, Transferable[]] {\n const { options } = control\n\n if (typeof options !== 'function') return [{ ...control, options }, []]\n\n const serializedOptions = serializeFunction(options)\n\n return [{ ...control, options: serializedOptions }, [serializedOptions]]\n}\n\ntype DeserializedNumberControl<_T = NumberControlValue> = {\n type: typeof Controls.Types.Number\n options: DeserializedConfig<NumberControlConfig>\n}\n\nfunction deserializeNumberControl(\n serializedControl: SerializedNumberControl,\n): DeserializedNumberControl {\n const { options } = serializedControl\n\n if (!isSerializedFunction(options)) return { ...serializedControl, options }\n\n const deserializedOptions = deserializeFunction(options)\n\n return { ...serializedControl, options: deserializedOptions }\n}\ntype ResponsiveIconRadioGroupControlConfig<T extends string = string, U extends T = T> = {\n label?: string\n options: IconRadioGroupOption<T>[]\n defaultValue?: U\n hidden?: boolean\n}\n\ntype SerializedResponsiveIconRadioGroupControl<_T = ResponsiveIconRadioGroupControlValue> = {\n type: typeof Controls.Types.ResponsiveIconRadioGroup\n options: SerializedConfig<ResponsiveIconRadioGroupControlConfig>\n}\n\nfunction serializeResponsiveIconRadioGroupControl(\n control: ResponsiveIconRadioGroupControl,\n): [SerializedResponsiveIconRadioGroupControl, Transferable[]] {\n const { options } = control\n\n if (typeof options !== 'function') return [{ ...control, options }, []]\n\n const serializedOptions = serializeFunction(options)\n\n return [{ ...control, options: serializedOptions }, [serializedOptions]]\n}\n\ntype DeserializedResponsiveIconRadioGroupControl<_T = ResponsiveIconRadioGroupControlValue> = {\n type: typeof Controls.Types.ResponsiveIconRadioGroup\n options: DeserializedConfig<ResponsiveIconRadioGroupControlConfig>\n}\n\nfunction deserializeResponsiveIconRadioGroupControl(\n serializedControl: SerializedResponsiveIconRadioGroupControl,\n): DeserializedResponsiveIconRadioGroupControl {\n const { options } = serializedControl\n\n if (!isSerializedFunction(options)) return { ...serializedControl, options }\n\n const deserializedOptions = deserializeFunction(options)\n\n return { ...serializedControl, options: deserializedOptions }\n}\n\ntype DateControlConfig = { preset?: DateControlValue }\n\ntype SerializedDateControl<_T = DateControlValue> = {\n type: typeof Controls.Types.Date\n options: SerializedConfig<DateControlConfig>\n}\n\nfunction serializeDateControl(control: DateControl): [SerializedDateControl, Transferable[]] {\n const { options } = control\n\n if (typeof options !== 'function') return [{ ...control, options }, []]\n\n const serializedOptions = serializeFunction(options)\n\n return [{ ...control, options: serializedOptions }, [serializedOptions]]\n}\n\ntype DeserializedDateControl<_T = DateControlValue> = {\n type: typeof Controls.Types.Date\n options: DeserializedConfig<DateControlConfig>\n}\n\nfunction deserializeDateControl(serializedControl: SerializedDateControl): DeserializedDateControl {\n const { options } = serializedControl\n\n if (!isSerializedFunction(options)) return { ...serializedControl, options }\n\n const deserializedOptions = deserializeFunction(options)\n\n return { ...serializedControl, options: deserializedOptions }\n}\n\ntype LinkControlConfig = {\n preset?: LinkControlValue\n label?: string\n defaultValue?: LinkControlValue\n options?: { value: LinkControlValue['type']; label: string }[]\n hidden?: boolean\n}\n\ntype SerializedLinkControl<_T = LinkControlValue> = {\n type: typeof Controls.Types.Link\n options: SerializedConfig<LinkControlConfig>\n}\n\nfunction serializeLinkControl(control: LinkControl): [SerializedLinkControl, Transferable[]] {\n const { options } = control\n\n if (typeof options !== 'function') return [{ ...control, options }, []]\n\n const serializedOptions = serializeFunction(options)\n\n return [{ ...control, options: serializedOptions }, [serializedOptions]]\n}\n\ntype DeserializedLinkControl<_T = LinkControlValue> = {\n type: typeof Controls.Types.Link\n options: DeserializedConfig<LinkControlConfig>\n}\n\nfunction deserializeLinkControl(serializedControl: SerializedLinkControl): DeserializedLinkControl {\n const { options } = serializedControl\n\n if (!isSerializedFunction(options)) return { ...serializedControl, options }\n\n const deserializedOptions = deserializeFunction(options)\n\n return { ...serializedControl, options: deserializedOptions }\n}\n\ntype TextInputControlConfig = { label?: string; placeholder?: string; hidden?: boolean }\n\ntype SerializedTextInputControl<_T = TextInputControlValue> = {\n type: typeof Controls.Types.TextInput\n options: SerializedConfig<TextInputControlConfig>\n}\n\nfunction serializeTextInputControl(\n control: TextInputControl,\n): [SerializedTextInputControl, Transferable[]] {\n const { options } = control\n\n if (typeof options !== 'function') return [{ ...control, options }, []]\n\n const serializedOptions = serializeFunction(options)\n\n return [{ ...control, options: serializedOptions }, [serializedOptions]]\n}\n\ntype DeserializedTextInputControl<_T = TextInputControlValue> = {\n type: typeof Controls.Types.TextInput\n options: DeserializedConfig<TextInputControlConfig>\n}\n\nfunction deserializeTextInputControl(\n serializedControl: SerializedTextInputControl,\n): DeserializedTextInputControl {\n const { options } = serializedControl\n\n if (!isSerializedFunction(options)) return { ...serializedControl, options }\n\n const deserializedOptions = deserializeFunction(options)\n\n return { ...serializedControl, options: deserializedOptions }\n}\n\ntype SerializedResponsiveSelectControl<_T = ResponsiveSelectControlValue> = {\n type: typeof Controls.Types.ResponsiveSelect\n options: SerializedConfig<ResponsiveSelectControlConfig>\n}\n\nfunction serializeResponsiveSelectControl(\n control: ResponsiveSelectControl,\n): [SerializedResponsiveSelectControl, Transferable[]] {\n const { options } = control\n\n if (typeof options !== 'function') return [{ ...control, options }, []]\n\n const serializedOptions = serializeFunction(options)\n\n return [{ ...control, options: serializedOptions }, [serializedOptions]]\n}\n\ntype ResponsiveSelectControlConfig<T extends string = string, U extends T = T> = {\n label?: string\n labelOrientation?: SelectLabelOrientation\n options: SelectOption<T>[]\n defaultValue?: U\n hidden?: boolean\n}\n\ntype DeserializedResponsiveSelectControl<_T = ResponsiveSelectControlValue> = {\n type: typeof Controls.Types.ResponsiveSelect\n options: DeserializedConfig<ResponsiveSelectControlConfig>\n}\n\nfunction deserializeResponsiveSelectControl(\n serializedControl: SerializedResponsiveSelectControl,\n): DeserializedResponsiveSelectControl {\n const { options } = serializedControl\n\n if (!isSerializedFunction(options)) return { ...serializedControl, options }\n\n const deserializedOptions = deserializeFunction(options)\n\n return { ...serializedControl, options: deserializedOptions }\n}\n\ntype ResponsiveLengthControlConfig = {\n label?: string\n options?: LengthOption[]\n defaultValue?: Length\n hidden?: boolean\n}\n\ntype SerializedResponsiveLengthControl<_T = ResponsiveLengthControlValue> = {\n type: typeof Controls.Types.ResponsiveLength\n options: SerializedConfig<ResponsiveLengthControlConfig>\n}\n\nfunction serializeResponsiveLengthControl(\n control: ResponsiveLengthControl,\n): [SerializedResponsiveLengthControl, Transferable[]] {\n const { options } = control\n\n if (typeof options !== 'function') return [{ ...control, options }, []]\n\n const serializedOptions = serializeFunction(options)\n\n return [{ ...control, options: serializedOptions }, [serializedOptions]]\n}\n\ntype DeserializedResponsiveLengthControl<_T = ResponsiveLengthControlValue> = {\n type: typeof Controls.Types.ResponsiveLength\n options: DeserializedConfig<ResponsiveLengthControlConfig>\n}\n\nfunction deserializeResponsiveLengthControl(\n serializedControl: SerializedResponsiveLengthControl,\n): DeserializedResponsiveLengthControl {\n const { options } = serializedControl\n\n if (!isSerializedFunction(options)) return { ...serializedControl, options }\n\n const deserializedOptions = deserializeFunction(options)\n\n return { ...serializedControl, options: deserializedOptions }\n}\n\ntype SerializedTextStyleControl<_T = TextStyleControlValue> = {\n type: typeof Controls.Types.TextStyle\n options: SerializedConfig<TextStyleControlConfig>\n}\n\nfunction serializeTextStyleControl(\n control: TextStyleControl,\n): [SerializedTextStyleControl, Transferable[]] {\n const { options } = control\n\n if (typeof options !== 'function') return [{ ...control, options }, []]\n\n const serializedOptions = serializeFunction(options)\n\n return [{ ...control, options: serializedOptions }, [serializedOptions]]\n}\n\ntype TextStyleControlConfig = {\n preset?: TextStyleControlValue\n label?: string\n hidden?: boolean\n}\n\ntype DeserializedTextStyleControl<_T = TextStyleControlValue> = {\n type: typeof Controls.Types.TextStyle\n options: DeserializedConfig<TextStyleControlConfig>\n}\n\nfunction deserializeTextStyleControl(\n serializedControl: SerializedTextStyleControl,\n): DeserializedTextStyleControl {\n const { options } = serializedControl\n\n if (!isSerializedFunction(options)) return { ...serializedControl, options }\n\n const deserializedOptions = deserializeFunction(options)\n\n return { ...serializedControl, options: deserializedOptions }\n}\n\ntype ImageControlConfig = { label?: string; hidden?: boolean }\n\ntype SerializedImageControl<_T = ImageControlValue> = {\n type: typeof Controls.Types.Image\n options: SerializedConfig<ImageControlConfig>\n}\n\nfunction serializeImageControl(control: ImageControl): [SerializedImageControl, Transferable[]] {\n const { options } = control\n\n if (typeof options !== 'function') return [{ ...control, options }, []]\n\n const serializedOptions = serializeFunction(options)\n\n return [{ ...control, options: serializedOptions }, [serializedOptions]]\n}\n\ntype DeserializedImageControl<_T = ImageControlValue> = {\n type: typeof Controls.Types.Image\n options: DeserializedConfig<ImageControlConfig>\n}\n\nfunction deserializeImageControl(\n serializedControl: SerializedImageControl,\n): DeserializedImageControl {\n const { options } = serializedControl\n\n if (!isSerializedFunction(options)) return { ...serializedControl, options }\n\n const deserializedOptions = deserializeFunction(options)\n\n return { ...serializedControl, options: deserializedOptions }\n}\n\ntype RichTextControlConfig = { preset?: RichTextControlValue }\n\ntype SerializedRichTextControl<_T = RichTextControlValue> = {\n type: typeof Controls.Types.RichText\n options: SerializedConfig<RichTextControlConfig>\n}\n\nfunction serializeRichTextControl(\n control: RichTextControl,\n): [SerializedRichTextControl, Transferable[]] {\n const { options } = control\n\n if (typeof options !== 'function') return [{ ...control, options }, []]\n\n const serializedOptions = serializeFunction(options)\n\n return [{ ...control, options: serializedOptions }, [serializedOptions]]\n}\n\ntype DeserializedRichTextControl<_T = RichTextControlValue> = {\n type: typeof Controls.Types.RichText\n options: DeserializedConfig<RichTextControlConfig>\n}\n\nfunction deserializeRichTextControl(\n serializedControl: SerializedRichTextControl,\n): DeserializedRichTextControl {\n const { options } = serializedControl\n\n if (!isSerializedFunction(options)) return { ...serializedControl, options }\n\n const deserializedOptions = deserializeFunction(options)\n\n return { ...serializedControl, options: deserializedOptions }\n}\n\nexport type SerializedControl<T extends Data = Data> =\n | Exclude<\n Control<T>,\n | ListControl<T extends ListControlValue ? T : ListControlValue>\n | ShapeControl<T extends ShapeControlValue ? T : ShapeControlValue, any>\n | TypeaheadControl<T extends TypeaheadControlValue ? T : TypeaheadControlValue>\n | GapXControl<T>\n | GapYControl<T>\n | ResponsiveNumberControl<T>\n | CheckboxControl<T>\n | ResponsiveColorControl<T>\n | NumberControl<T>\n | ResponsiveIconRadioGroupControl<\n T extends ResponsiveIconRadioGroupControlValue ? T : ResponsiveIconRadioGroupControlValue\n >\n | ResponsiveSelectControl<\n T extends ResponsiveSelectControlValue ? T : ResponsiveSelectControlValue\n >\n | ResponsiveLengthControl<T>\n | DateControl<T>\n | LinkControl<T>\n | TextInputControl<T>\n | TextStyleControl<T>\n | ImageControl<T>\n | RichTextControl<T>\n | ComboboxControlDefinition\n | ShapeControlDefinition\n | ListControlDefinition\n >\n | SerializedListControl<T extends ListControlValue ? T : ListControlValue>\n | SerializedShapeControl<T extends ShapeControlValue ? T : ShapeControlValue, any>\n | SerializedTypeaheadControl<T extends TypeaheadControlValue ? T : TypeaheadControlValue>\n | SerializedGapXControl<T>\n | SerializedGapYControl<T>\n | SerializedResponsiveNumberControl<T>\n | SerializedCheckboxControl<T>\n | SerializedResponsiveColorControl<T>\n | SerializedNumberControl<T>\n | SerializedResponsiveIconRadioGroupControl<T>\n | SerializedResponsiveSelectControl<T>\n | SerializedResponsiveLengthControl<T>\n | SerializedDateControl<T>\n | SerializedLinkControl<T>\n | SerializedTextInputControl<T>\n | SerializedTextStyleControl<T>\n | SerializedImageControl<T>\n | SerializedRichTextControl<T>\n | Serialize<ComboboxControlDefinition>\n | Serialize<ShapeControlDefinition>\n | Serialize<ListControlDefinition>\n\ntype SerializedPanelControl<T extends Data = Data> = Extract<\n SerializedControl<T>,\n { type: PanelControlType }\n>\n\ntype SerializedPanelControlValueType<T extends SerializedPanelControl> =\n T extends SerializedPanelControl<infer U> ? U : never\n\nexport type DeserializedControl<T extends Data = Data> =\n | Exclude<\n Control<T>,\n | ListControl<T extends ListControlValue ? T : ListControlValue>\n | ShapeControl<T extends ShapeControlValue ? T : ShapeControlValue, any>\n | TypeaheadControl<T extends TypeaheadControlValue ? T : TypeaheadControlValue>\n | GapXControl<T>\n | GapYControl<T>\n | ResponsiveNumberControl<T>\n | CheckboxControl<T>\n | ResponsiveColorControl<T>\n | NumberControl<T>\n | ResponsiveIconRadioGroupControl<\n T extends ResponsiveIconRadioGroupControlValue ? T : ResponsiveIconRadioGroupControlValue\n >\n | ResponsiveSelectControl<\n T extends ResponsiveSelectControlValue ? T : ResponsiveSelectControlValue\n >\n | ResponsiveLengthControl<T>\n | DateControl<T>\n | LinkControl<T>\n | TextInputControl<T>\n | TextStyleControl<T>\n | ImageControl<T>\n | RichTextControl<T>\n | ComboboxControlDefinition\n | ShapeControlDefinition\n | ListControlDefinition\n >\n | DeserializedListControl<T extends ListControlValue ? T : ListControlValue>\n | DeserializedShapeControl<T extends ShapeControlValue ? T : ShapeControlValue, any>\n | DeserializedTypeaheadControl<T extends TypeaheadControlValue ? T : TypeaheadControlValue>\n | DeserializedGapXControl<T>\n | DeserializedGapYControl<T>\n | DeserializedResponsiveNumberControl<T>\n | DeserializedCheckboxControl<T>\n | DeserializedResponsiveColorControl<T>\n | DeserializedNumberControl<T>\n | DeserializedResponsiveIconRadioGroupControl<T>\n | DeserializedResponsiveSelectControl<T>\n | DeserializedResponsiveLengthControl<T>\n | DeserializedDateControl<T>\n | DeserializedLinkControl<T>\n | DeserializedTextInputControl<T>\n | DeserializedTextStyleControl<T>\n | DeserializedImageControl<T>\n | DeserializedRichTextControl<T>\n | Deserialize<Serialize<ComboboxControlDefinition>>\n | Deserialize<Serialize<ShapeControlDefinition>>\n | Deserialize<Serialize<ListControlDefinition>>\n\nexport type DeserializedPanelControl<T extends Data = Data> = Extract<\n DeserializedControl<T>,\n { type: PanelControlType }\n>\n\ntype DeserializedPanelControlValueType<T extends DeserializedPanelControl> =\n T extends DeserializedPanelControl<infer U> ? U : never\n\nexport function serializeControl<T extends Data>(\n control: Control<T>,\n): [SerializedControl<T>, Transferable[]] {\n switch (control.type) {\n case Controls.Types.Checkbox:\n return serializeCheckboxControl(control)\n\n case Controls.Types.List:\n return serializeListControl(control)\n\n case Controls.Types.Shape:\n return serializeShapeControl(control)\n\n case Controls.Types.Typeahead:\n return serializeTypeaheadControl(control)\n\n case Controls.Types.GapX:\n return serializeGapXControl(control)\n\n case Controls.Types.GapY:\n return serializeGapYControl(control)\n\n case Controls.Types.ResponsiveColor:\n return serializeResponsiveColorControl(control)\n\n case Controls.Types.ResponsiveNumber:\n return serializeResponsiveNumberControl(control)\n\n case Controls.Types.Number:\n return serializeNumberControl(control)\n\n case Controls.Types.ResponsiveIconRadioGroup:\n return serializeResponsiveIconRadioGroupControl(control)\n\n case Controls.Types.ResponsiveSelect:\n return serializeResponsiveSelectControl(control)\n\n case Controls.Types.ResponsiveLength:\n return serializeResponsiveLengthControl(control)\n\n case Controls.Types.Date:\n return serializeDateControl(control)\n\n case Controls.Types.Link:\n return serializeLinkControl(control)\n\n case Controls.Types.TextInput:\n return serializeTextInputControl(control)\n\n case Controls.Types.TextStyle:\n return serializeTextStyleControl(control)\n\n case Controls.Types.Image:\n return serializeImageControl(control)\n\n case Controls.Types.RichText:\n return serializeRichTextControl(control)\n\n case ComboboxControlType:\n return serializeComboboxControlDefinition(control)\n\n case ShapeControlType:\n return serializeShapeControlDefinition(control)\n\n case ListControlType:\n return serializeListControlDefinition(control)\n\n default:\n return [control, []]\n }\n}\n\nexport function deserializeControl<T extends Data>(\n serializedControl: SerializedControl<T>,\n): DeserializedControl<T> {\n switch (serializedControl.type) {\n case Controls.Types.Checkbox:\n return deserializeCheckboxControl(serializedControl)\n\n case Controls.Types.List:\n return deserializeListControl(serializedControl)\n\n case Controls.Types.Shape:\n return deserializeShapeControl(serializedControl)\n\n case Controls.Types.Typeahead:\n return deserializeTypeaheadControl(serializedControl)\n\n case Controls.Types.GapX:\n return deserializeGapXControl(serializedControl)\n\n case Controls.Types.GapY:\n return deserializeGapYControl(serializedControl)\n\n case Controls.Types.ResponsiveColor:\n return deserializeResponsiveColorControl(serializedControl)\n\n case Controls.Types.ResponsiveNumber:\n return deserializeResponsiveNumberControl(serializedControl)\n\n case Controls.Types.Number:\n return deserializeNumberControl(serializedControl)\n\n case Controls.Types.ResponsiveIconRadioGroup:\n return deserializeResponsiveIconRadioGroupControl(serializedControl)\n\n case Controls.Types.ResponsiveSelect:\n return deserializeResponsiveSelectControl(serializedControl)\n\n case Controls.Types.ResponsiveLength:\n return deserializeResponsiveLengthControl(serializedControl)\n\n case Controls.Types.Date:\n return deserializeDateControl(serializedControl)\n\n case Controls.Types.Link:\n return deserializeLinkControl(serializedControl)\n\n case Controls.Types.TextInput:\n return deserializeTextInputControl(serializedControl)\n\n case Controls.Types.TextStyle:\n return deserializeTextStyleControl(serializedControl)\n\n case Controls.Types.Image:\n return deserializeImageControl(serializedControl)\n\n case Controls.Types.RichText:\n return deserializeRichTextControl(serializedControl)\n\n case ComboboxControlType:\n return deserializeComboboxControlDefinition(serializedControl)\n\n case ShapeControlType:\n return deserializeShapeControlDefinition(serializedControl)\n\n case ListControlType:\n return deserializeListControlDefinition(serializedControl)\n\n default:\n return serializedControl\n }\n}\n\nexport function serializeControls(\n controls: Record<string, Control>,\n): [Record<string, SerializedControl>, Transferable[]] {\n return Object.entries(controls).reduce(\n ([accControls, accTransferables], [key, control]) => {\n const [serializedControl, transferables] = serializeControl(control)\n\n return [{ ...accControls, [key]: serializedControl }, [...accTransferables, ...transferables]]\n },\n [{}, []] as [Record<string, SerializedControl>, Transferable[]],\n )\n}\n\nexport function deserializeControls(\n serializedControls: Record<string, SerializedControl>,\n): Record<string, DeserializedControl> {\n return Object.entries(serializedControls).reduce(\n (deserializedControls, [key, serializedControl]) => {\n return { ...deserializedControls, [key]: deserializeControl(serializedControl) }\n },\n {} as Record<string, DeserializedControl>,\n )\n}\n"],"names":["Controls.Types"],"mappings":"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"}
@@ -3,9 +3,8 @@ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toString
3
3
  var textInput = require("./text-input.cjs.js");
4
4
  var descriptors = require("./descriptors.cjs.js");
5
5
  var combobox = require("./combobox.cjs.js");
6
- require("slate");
7
- require("slate-react");
8
6
  require("./actions.cjs.js");
7
+ require("./slate.cjs2.js");
9
8
  exports.Checkbox = textInput.Checkbox;
10
9
  exports.CheckboxControlType = textInput.CheckboxControlType;
11
10
  exports.Number = textInput.Number;
@@ -16,14 +15,11 @@ exports.TextArea = textInput.TextArea;
16
15
  exports.TextAreaControlType = textInput.TextAreaControlType;
17
16
  exports.TextInput = textInput.TextInput;
18
17
  exports.TextInputControlType = textInput.TextInputControlType;
19
- exports.BlockTextAlignment = descriptors.BlockTextAlignment;
20
- exports.BlockType = descriptors.BlockType;
21
18
  exports.Color = descriptors.Color;
22
19
  exports.ColorControlType = descriptors.ColorControlType;
23
20
  exports.Image = descriptors.Image$1;
24
21
  exports.ImageControlType = descriptors.ImageControlType;
25
22
  exports.ImageControlValueFormat = descriptors.ImageControlValueFormat;
26
- exports.InlineType = descriptors.InlineType;
27
23
  exports.Link = descriptors.Link$1;
28
24
  exports.LinkControlType = descriptors.LinkControlType;
29
25
  exports.List = descriptors.List;
@@ -38,7 +34,7 @@ exports.RichTextControlType = descriptors.RichTextControlType;
38
34
  exports.RichTextV2Control = descriptors.RichTextV2Control;
39
35
  exports.RichTextV2ControlMessageType = descriptors.RichTextV2ControlMessageType;
40
36
  exports.RichTextV2ControlType = descriptors.RichTextV2ControlType;
41
- exports.RootBlockType = descriptors.RootBlockType;
37
+ exports.RichTextV2Mode = descriptors.RichTextV2Mode;
42
38
  exports.Shape = descriptors.Shape;
43
39
  exports.ShapeControl = descriptors.ShapeControl;
44
40
  exports.ShapeControlMessageType = descriptors.ShapeControlMessageType;
@@ -1 +1 @@
1
- {"version":3,"file":"controls.cjs.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"controls.cjs.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,7 +1,6 @@
1
1
  export { b as Checkbox, C as CheckboxControlType, c as Number, N as NumberControlType, d as Select, S as SelectControlType, e as TextArea, T as TextAreaControlType, f as TextInput, a as TextInputControlType } from "./text-input.es.js";
2
- export { aB as BlockTextAlignment, Q as BlockType, a5 as Color, C as ColorControlType, a7 as Image, I as ImageControlType, O as ImageControlValueFormat, aA as InlineType, a9 as Link, _ as LinkControlType, ab as List, ad as ListControl, ac as ListControlMessageType, L as ListControlType, ar as ObjectType, as as RichText, au as RichTextControl, at as RichTextControlMessageType, Z as RichTextControlType, aE as RichTextV2Control, aD as RichTextV2ControlMessageType, Y as RichTextV2ControlType, az as RootBlockType, af as Shape, ah as ShapeControl, ag as ShapeControlMessageType, S as ShapeControlType, aj as Slot, al as SlotControl, ak as SlotControlMessageType, b as SlotControlType, an as Style, ap as StyleControl, ao as StyleControlMessageType, K as StyleControlProperty, X as StyleControlType, a as copy, a6 as copyColorData, a8 as copyImageData, aa as copyLinkData, ae as copyListData, ai as copyShapeData, am as copySlotData, aq as copyStyleData, ay as richTextDAOToDTO, aw as richTextDTOtoDAO, av as richTextDTOtoSelection, ax as toSelectionDTO, aC as unstable_RichTextV2 } from "./descriptors.es.js";
2
+ export { a3 as Color, C as ColorControlType, a5 as Image, I as ImageControlType, O as ImageControlValueFormat, a7 as Link, Y as LinkControlType, a9 as List, ab as ListControl, aa as ListControlMessageType, L as ListControlType, ap as ObjectType, aq as RichText, as as RichTextControl, ar as RichTextControlMessageType, X as RichTextControlType, aA as RichTextV2Control, az as RichTextV2ControlMessageType, U as RichTextV2ControlType, ax as RichTextV2Mode, ad as Shape, af as ShapeControl, ae as ShapeControlMessageType, S as ShapeControlType, ah as Slot, aj as SlotControl, ai as SlotControlMessageType, b as SlotControlType, al as Style, an as StyleControl, am as StyleControlMessageType, K as StyleControlProperty, Q as StyleControlType, a as copy, a4 as copyColorData, a6 as copyImageData, a8 as copyLinkData, ac as copyListData, ag as copyShapeData, ak as copySlotData, ao as copyStyleData, aw as richTextDAOToDTO, au as richTextDTOtoDAO, at as richTextDTOtoSelection, av as toSelectionDTO, ay as unstable_RichTextV2 } from "./descriptors.es.js";
3
3
  export { a as Combobox, C as ComboboxControlType } from "./combobox.es.js";
4
- import "slate";
5
- import "slate-react";
6
4
  import "./actions.es.js";
5
+ import "./slate.es2.js";
7
6
  //# sourceMappingURL=controls.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"controls.es.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
1
+ {"version":3,"file":"controls.es.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;"}
@@ -22,9 +22,8 @@ var __publicField = (obj, key, value) => {
22
22
  __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
23
23
  return value;
24
24
  };
25
- var slate = require("slate");
26
- var slateReact = require("slate-react");
27
25
  var actions = require("./actions.cjs.js");
26
+ var slate = require("./slate.cjs2.js");
28
27
  const BuilderEditMode = {
29
28
  BUILD: "build",
30
29
  CONTENT: "content",
@@ -146,6 +145,12 @@ if (void 0) {
146
145
  });
147
146
  });
148
147
  }
148
+ class PropController {
149
+ constructor(send) {
150
+ __publicField(this, "send");
151
+ this.send = send;
152
+ }
153
+ }
149
154
  const RichTextPropControllerMessageType = {
150
155
  CHANGE_BUILDER_EDIT_MODE: "CHANGE_BUILDER_EDIT_MODE",
151
156
  INITIALIZE_EDITOR: "INITIALIZE_EDITOR",
@@ -156,12 +161,6 @@ const RichTextPropControllerMessageType = {
156
161
  REDO: "REDO",
157
162
  CHANGE_BOX_MODEL: "CHANGE_BOX_MODEL"
158
163
  };
159
- class PropController {
160
- constructor(send) {
161
- __publicField(this, "send");
162
- this.send = send;
163
- }
164
- }
165
164
  class DefaultPropController extends PropController {
166
165
  constructor() {
167
166
  super(...arguments);
@@ -181,17 +180,12 @@ class RichTextPropController extends PropController {
181
180
  switch (message.editMode) {
182
181
  case BuilderEditMode.BUILD:
183
182
  case BuilderEditMode.INTERACT:
184
- slateReact.ReactEditor.deselect(this.editor);
185
- slateReact.ReactEditor.blur(this.editor);
183
+ this.editor.deselectAndBlur();
186
184
  }
187
185
  break;
188
186
  }
189
187
  case RichTextPropControllerMessageType.FOCUS: {
190
- slateReact.ReactEditor.focus(this.editor);
191
- slate.Transforms.select(this.editor, {
192
- anchor: slate.Editor.start(this.editor, []),
193
- focus: slate.Editor.end(this.editor, [])
194
- });
188
+ this.editor.focusAndSelectAll();
195
189
  break;
196
190
  }
197
191
  }
@@ -258,7 +252,7 @@ function createPropController(descriptor, send) {
258
252
  case RichTextControlType:
259
253
  return new RichTextControl(send);
260
254
  case RichTextV2ControlType:
261
- return new RichTextV2Control(send);
255
+ return new RichTextV2Control(send, descriptor);
262
256
  case ListControlType:
263
257
  return new ListControl(send, descriptor);
264
258
  case ShapeControlType:
@@ -1404,35 +1398,11 @@ const ObjectType = {
1404
1398
  Point: "point",
1405
1399
  Operation: "operation"
1406
1400
  };
1407
- const RootBlockType = {
1408
- Text: "text",
1409
- Paragraph: "paragraph",
1410
- Heading1: "heading-one",
1411
- Heading2: "heading-two",
1412
- Heading3: "heading-three",
1413
- Heading4: "heading-four",
1414
- Heading5: "heading-five",
1415
- Heading6: "heading-six",
1416
- BlockQuote: "blockquote",
1417
- UnorderedList: "unordered-list",
1418
- OrderedList: "ordered-list"
1419
- };
1420
- const BlockType = __spreadProps(__spreadValues({}, RootBlockType), {
1421
- ListItem: "list-item",
1422
- ListItemChild: "list-item-child"
1423
- });
1424
- const InlineType = {
1425
- Code: "code",
1426
- SuperScript: "superscript",
1427
- SubScript: "subscript",
1428
- Link: "link"
1429
- };
1430
- const BlockTextAlignment = {
1431
- Left: "left",
1432
- Center: "center",
1433
- Right: "right",
1434
- Justify: "justify"
1435
- };
1401
+ function isText(node) {
1402
+ if (typeof node === "object" && "text" in node)
1403
+ return true;
1404
+ return false;
1405
+ }
1436
1406
  function toTextDAO(node) {
1437
1407
  var _a, _b, _c, _d;
1438
1408
  const typographyMark = (_a = node.marks) == null ? void 0 : _a.find((mark) => mark.type === "typography");
@@ -1446,7 +1416,7 @@ function toTextDAO(node) {
1446
1416
  function toInlineDAO(node) {
1447
1417
  var _a, _b, _c, _d;
1448
1418
  switch (node.type) {
1449
- case InlineType.Link:
1419
+ case slate.InlineType.Link:
1450
1420
  return [
1451
1421
  {
1452
1422
  children: (_b = (_a = node.nodes) == null ? void 0 : _a.flatMap(toInlineOrTextDAO)) != null ? _b : [],
@@ -1454,9 +1424,9 @@ function toInlineDAO(node) {
1454
1424
  type: node.type
1455
1425
  }
1456
1426
  ];
1457
- case InlineType.Code:
1458
- case InlineType.SubScript:
1459
- case InlineType.SuperScript:
1427
+ case slate.InlineType.Code:
1428
+ case slate.InlineType.SubScript:
1429
+ case slate.InlineType.SuperScript:
1460
1430
  return [
1461
1431
  {
1462
1432
  children: (_d = (_c = node.nodes) == null ? void 0 : _c.flatMap(toInlineOrTextDAO)) != null ? _d : [],
@@ -1515,7 +1485,7 @@ function richTextDTOtoDAO(data) {
1515
1485
  return (_c = (_b = (_a = data.document) == null ? void 0 : _a.nodes) == null ? void 0 : _b.flatMap(toNodeDAO)) != null ? _c : [];
1516
1486
  }
1517
1487
  function toInlineOrTextDTO(node) {
1518
- if (slate.Text.isText(node)) {
1488
+ if (isText(node)) {
1519
1489
  return [
1520
1490
  {
1521
1491
  text: node.text,
@@ -1533,7 +1503,7 @@ function toInlineOrTextDTO(node) {
1533
1503
  ];
1534
1504
  }
1535
1505
  switch (node.type) {
1536
- case InlineType.Link:
1506
+ case slate.InlineType.Link:
1537
1507
  return [
1538
1508
  {
1539
1509
  object: ObjectType.Inline,
@@ -1542,9 +1512,9 @@ function toInlineOrTextDTO(node) {
1542
1512
  data: node.link
1543
1513
  }
1544
1514
  ];
1545
- case InlineType.Code:
1546
- case InlineType.SubScript:
1547
- case InlineType.SuperScript:
1515
+ case slate.InlineType.Code:
1516
+ case slate.InlineType.SubScript:
1517
+ case slate.InlineType.SuperScript:
1548
1518
  return [
1549
1519
  {
1550
1520
  object: "inline",
@@ -1557,23 +1527,23 @@ function toInlineOrTextDTO(node) {
1557
1527
  }
1558
1528
  function toNodeDTO(node) {
1559
1529
  var _a, _b;
1560
- if (slate.Text.isText(node))
1530
+ if (isText(node))
1561
1531
  return toInlineOrTextDTO(node);
1562
1532
  switch (node.type) {
1563
- case InlineType.Link:
1564
- case InlineType.Code:
1565
- case InlineType.SubScript:
1566
- case InlineType.SuperScript:
1533
+ case slate.InlineType.Link:
1534
+ case slate.InlineType.Code:
1535
+ case slate.InlineType.SubScript:
1536
+ case slate.InlineType.SuperScript:
1567
1537
  return toInlineOrTextDTO(node);
1568
- case BlockType.Heading1:
1569
- case BlockType.Heading2:
1570
- case BlockType.Heading3:
1571
- case BlockType.BlockQuote:
1572
- case BlockType.Paragraph:
1573
- case BlockType.OrderedList:
1574
- case BlockType.UnorderedList:
1575
- case BlockType.ListItem:
1576
- case BlockType.ListItemChild:
1538
+ case slate.BlockType.Heading1:
1539
+ case slate.BlockType.Heading2:
1540
+ case slate.BlockType.Heading3:
1541
+ case slate.BlockType.BlockQuote:
1542
+ case slate.BlockType.Paragraph:
1543
+ case slate.BlockType.OrderedList:
1544
+ case slate.BlockType.UnorderedList:
1545
+ case slate.BlockType.ListItem:
1546
+ case slate.BlockType.ListItemChild:
1577
1547
  return [
1578
1548
  {
1579
1549
  type: node.type,
@@ -1646,17 +1616,12 @@ class RichTextControl extends PropController {
1646
1616
  switch (message.editMode) {
1647
1617
  case BuilderEditMode.BUILD:
1648
1618
  case BuilderEditMode.INTERACT:
1649
- slateReact.ReactEditor.deselect(this.editor);
1650
- slateReact.ReactEditor.blur(this.editor);
1619
+ this.editor.deselectAndBlur();
1651
1620
  }
1652
1621
  break;
1653
1622
  }
1654
1623
  case RichTextControlMessageType.FOCUS: {
1655
- slateReact.ReactEditor.focus(this.editor);
1656
- slate.Transforms.select(this.editor, {
1657
- anchor: slate.Editor.start(this.editor, []),
1658
- focus: slate.Editor.end(this.editor, [])
1659
- });
1624
+ this.editor.focusAndSelectAll();
1660
1625
  break;
1661
1626
  }
1662
1627
  }
@@ -1696,8 +1661,12 @@ class RichTextControl extends PropController {
1696
1661
  }
1697
1662
  }
1698
1663
  const RichTextV2ControlType = "makeswift::controls::rich-text-v2";
1699
- function unstable_RichTextV2() {
1700
- return { type: RichTextV2ControlType };
1664
+ const RichTextV2Mode = {
1665
+ Inline: "makeswift::controls::rich-text-v2::mode::inline",
1666
+ Block: "makeswift::controls::rich-text-v2::mode::block"
1667
+ };
1668
+ function unstable_RichTextV2(config = {}) {
1669
+ return { type: RichTextV2ControlType, config };
1701
1670
  }
1702
1671
  const RichTextV2ControlMessageType = {
1703
1672
  RESET_VALUE: "RESET_VALUE",
@@ -1709,20 +1678,17 @@ const RichTextV2ControlMessageType = {
1709
1678
  CHANGE_BOX_MODEL: "CHANGE_BOX_MODEL"
1710
1679
  };
1711
1680
  class RichTextV2Control extends PropController {
1712
- constructor() {
1713
- super(...arguments);
1681
+ constructor(send, descriptor) {
1682
+ super(send);
1714
1683
  __publicField(this, "editor", null);
1715
1684
  __publicField(this, "defaultValue", null);
1685
+ __publicField(this, "descriptor");
1716
1686
  __publicField(this, "recv", (message) => {
1717
1687
  if (!this.editor)
1718
1688
  return;
1719
1689
  switch (message.type) {
1720
1690
  case RichTextV2ControlMessageType.FOCUS: {
1721
- slateReact.ReactEditor.focus(this.editor);
1722
- slate.Transforms.select(this.editor, {
1723
- anchor: slate.Editor.start(this.editor, []),
1724
- focus: slate.Editor.end(this.editor, [])
1725
- });
1691
+ this.editor.focusAndSelectAll();
1726
1692
  break;
1727
1693
  }
1728
1694
  case RichTextV2ControlMessageType.RESET_VALUE: {
@@ -1734,6 +1700,8 @@ class RichTextV2Control extends PropController {
1734
1700
  }
1735
1701
  }
1736
1702
  });
1703
+ this.descriptor = descriptor;
1704
+ this.send = send;
1737
1705
  }
1738
1706
  setEditor(editor) {
1739
1707
  this.editor = editor;
@@ -1982,8 +1950,6 @@ var descriptors = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.definePro
1982
1950
  Width
1983
1951
  }, Symbol.toStringTag, { value: "Module" }));
1984
1952
  exports.Backgrounds = Backgrounds;
1985
- exports.BlockTextAlignment = BlockTextAlignment;
1986
- exports.BlockType = BlockType;
1987
1953
  exports.Border = Border;
1988
1954
  exports.BorderPropControllerFormat = BorderPropControllerFormat;
1989
1955
  exports.BorderRadius = BorderRadius;
@@ -2003,7 +1969,6 @@ exports.Image$1 = Image$1;
2003
1969
  exports.ImageControlType = ImageControlType;
2004
1970
  exports.ImageControlValueFormat = ImageControlValueFormat;
2005
1971
  exports.Images = Images;
2006
- exports.InlineType = InlineType;
2007
1972
  exports.Link = Link;
2008
1973
  exports.Link$1 = Link$1;
2009
1974
  exports.LinkControlType = LinkControlType;
@@ -2033,7 +1998,7 @@ exports.RichTextPropControllerMessageType = RichTextPropControllerMessageType;
2033
1998
  exports.RichTextV2Control = RichTextV2Control;
2034
1999
  exports.RichTextV2ControlMessageType = RichTextV2ControlMessageType;
2035
2000
  exports.RichTextV2ControlType = RichTextV2ControlType;
2036
- exports.RootBlockType = RootBlockType;
2001
+ exports.RichTextV2Mode = RichTextV2Mode;
2037
2002
  exports.Shadows = Shadows;
2038
2003
  exports.ShadowsPropControllerFormat = ShadowsPropControllerFormat;
2039
2004
  exports.Shape = Shape$1;