@makeswift/runtime 0.10.10 → 0.10.12

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 (145) hide show
  1. package/dist/Box.cjs.js +1 -0
  2. package/dist/Box.cjs.js.map +1 -1
  3. package/dist/Box.es.js +2 -1
  4. package/dist/Box.es.js.map +1 -1
  5. package/dist/Button.cjs.js +1 -0
  6. package/dist/Button.cjs.js.map +1 -1
  7. package/dist/Button.es.js +2 -1
  8. package/dist/Button.es.js.map +1 -1
  9. package/dist/Carousel.cjs.js +1 -0
  10. package/dist/Carousel.cjs.js.map +1 -1
  11. package/dist/Carousel.es.js +2 -1
  12. package/dist/Carousel.es.js.map +1 -1
  13. package/dist/Countdown.cjs.js +1 -0
  14. package/dist/Countdown.cjs.js.map +1 -1
  15. package/dist/Countdown.es.js +2 -1
  16. package/dist/Countdown.es.js.map +1 -1
  17. package/dist/Divider.cjs.js +1 -0
  18. package/dist/Divider.cjs.js.map +1 -1
  19. package/dist/Divider.es.js +2 -1
  20. package/dist/Divider.es.js.map +1 -1
  21. package/dist/Embed.cjs.js +1 -0
  22. package/dist/Embed.cjs.js.map +1 -1
  23. package/dist/Embed.es.js +2 -1
  24. package/dist/Embed.es.js.map +1 -1
  25. package/dist/Form.cjs.js +1 -0
  26. package/dist/Form.cjs.js.map +1 -1
  27. package/dist/Form.es.js +2 -1
  28. package/dist/Form.es.js.map +1 -1
  29. package/dist/Image.cjs.js +19 -3
  30. package/dist/Image.cjs.js.map +1 -1
  31. package/dist/Image.es.js +20 -4
  32. package/dist/Image.es.js.map +1 -1
  33. package/dist/LiveProvider.cjs.js +1 -0
  34. package/dist/LiveProvider.cjs.js.map +1 -1
  35. package/dist/LiveProvider.es.js +2 -1
  36. package/dist/LiveProvider.es.js.map +1 -1
  37. package/dist/Navigation.cjs.js +1 -0
  38. package/dist/Navigation.cjs.js.map +1 -1
  39. package/dist/Navigation.es.js +2 -1
  40. package/dist/Navigation.es.js.map +1 -1
  41. package/dist/PreviewProvider.cjs.js +1 -0
  42. package/dist/PreviewProvider.cjs.js.map +1 -1
  43. package/dist/PreviewProvider.es.js +2 -1
  44. package/dist/PreviewProvider.es.js.map +1 -1
  45. package/dist/ReadOnlyText.cjs.js +1 -0
  46. package/dist/ReadOnlyText.cjs.js.map +1 -1
  47. package/dist/ReadOnlyText.es.js +2 -1
  48. package/dist/ReadOnlyText.es.js.map +1 -1
  49. package/dist/ReadOnlyTextV2.cjs.js +1 -0
  50. package/dist/ReadOnlyTextV2.cjs.js.map +1 -1
  51. package/dist/ReadOnlyTextV2.es.js +2 -1
  52. package/dist/ReadOnlyTextV2.es.js.map +1 -1
  53. package/dist/Root.cjs.js +1 -0
  54. package/dist/Root.cjs.js.map +1 -1
  55. package/dist/Root.es.js +2 -1
  56. package/dist/Root.es.js.map +1 -1
  57. package/dist/SocialLinks.cjs.js +1 -0
  58. package/dist/SocialLinks.cjs.js.map +1 -1
  59. package/dist/SocialLinks.es.js +2 -1
  60. package/dist/SocialLinks.es.js.map +1 -1
  61. package/dist/Video.cjs.js +1 -0
  62. package/dist/Video.cjs.js.map +1 -1
  63. package/dist/Video.es.js +2 -1
  64. package/dist/Video.es.js.map +1 -1
  65. package/dist/builder.cjs.js +1 -0
  66. package/dist/builder.cjs.js.map +1 -1
  67. package/dist/builder.es.js +1 -0
  68. package/dist/builder.es.js.map +1 -1
  69. package/dist/components.cjs.js +1 -0
  70. package/dist/components.cjs.js.map +1 -1
  71. package/dist/components.es.js +1 -0
  72. package/dist/components.es.js.map +1 -1
  73. package/dist/control-serialization.cjs.js +1 -0
  74. package/dist/control-serialization.cjs.js.map +1 -1
  75. package/dist/control-serialization.es.js +2 -1
  76. package/dist/control-serialization.es.js.map +1 -1
  77. package/dist/controls.cjs.js +2 -1
  78. package/dist/controls.cjs.js.map +1 -1
  79. package/dist/controls.es.js +2 -1
  80. package/dist/controls.es.js.map +1 -1
  81. package/dist/index.cjs.js +30 -31
  82. package/dist/index.cjs.js.map +1 -1
  83. package/dist/index.cjs2.js +1 -0
  84. package/dist/index.cjs2.js.map +1 -1
  85. package/dist/index.cjs8.js +1 -0
  86. package/dist/index.cjs8.js.map +1 -1
  87. package/dist/index.cjs9.js +1 -0
  88. package/dist/index.cjs9.js.map +1 -1
  89. package/dist/index.es.js +31 -32
  90. package/dist/index.es.js.map +1 -1
  91. package/dist/index.es2.js +2 -1
  92. package/dist/index.es2.js.map +1 -1
  93. package/dist/index.es4.js +1 -1
  94. package/dist/index.es5.js +1 -1
  95. package/dist/index.es6.js +1 -1
  96. package/dist/index.es8.js +2 -1
  97. package/dist/index.es8.js.map +1 -1
  98. package/dist/index.es9.js +2 -1
  99. package/dist/index.es9.js.map +1 -1
  100. package/dist/main.cjs.js +1 -0
  101. package/dist/main.cjs.js.map +1 -1
  102. package/dist/main.es.js +1 -0
  103. package/dist/main.es.js.map +1 -1
  104. package/dist/next.cjs.js +1 -0
  105. package/dist/next.cjs.js.map +1 -1
  106. package/dist/next.es.js +1 -0
  107. package/dist/next.es.js.map +1 -1
  108. package/dist/prop-controllers.cjs.js +2 -0
  109. package/dist/prop-controllers.cjs.js.map +1 -1
  110. package/dist/prop-controllers.es.js +2 -1
  111. package/dist/prop-controllers.es.js.map +1 -1
  112. package/dist/react-page.cjs.js +16 -13
  113. package/dist/react-page.cjs.js.map +1 -1
  114. package/dist/react-page.es.js +19 -17
  115. package/dist/react-page.es.js.map +1 -1
  116. package/dist/react.cjs.js +1 -0
  117. package/dist/react.cjs.js.map +1 -1
  118. package/dist/react.es.js +1 -0
  119. package/dist/react.es.js.map +1 -1
  120. package/dist/slate.cjs.js +1 -0
  121. package/dist/slate.cjs.js.map +1 -1
  122. package/dist/slate.es.js +2 -1
  123. package/dist/slate.es.js.map +1 -1
  124. package/dist/toText.cjs.js +1 -0
  125. package/dist/toText.cjs.js.map +1 -1
  126. package/dist/toText.es.js +2 -1
  127. package/dist/toText.es.js.map +1 -1
  128. package/dist/types/src/components/builtin/Image/Image.d.ts.map +1 -1
  129. package/dist/types/src/next/api-handler/handlers/manifest.d.ts +3 -2
  130. package/dist/types/src/next/api-handler/handlers/manifest.d.ts.map +1 -1
  131. package/dist/types/src/next/api-handler/index.d.ts +2 -2
  132. package/dist/types/src/next/api-handler/index.d.ts.map +1 -1
  133. package/dist/types/src/next/client.d.ts +4 -2
  134. package/dist/types/src/next/client.d.ts.map +1 -1
  135. package/dist/types/src/next/index.d.ts.map +1 -1
  136. package/dist/types/src/next/preview-mode.d.ts +3 -3
  137. package/dist/types/src/prop-controllers/copy/image.d.ts +2 -2
  138. package/dist/types/src/prop-controllers/copy/image.d.ts.map +1 -1
  139. package/dist/types/src/prop-controllers/descriptors.d.ts +16 -1
  140. package/dist/types/src/prop-controllers/descriptors.d.ts.map +1 -1
  141. package/dist/types/src/prop-controllers/index.d.ts +2 -1
  142. package/dist/types/src/prop-controllers/index.d.ts.map +1 -1
  143. package/dist/types/src/prop-controllers/introspection.d.ts.map +1 -1
  144. package/dist/types/types/locale.d.ts +1 -1
  145. package/package.json +2 -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/rich-text-v2.ts","../src/builder/serialization/controls/shape.ts","../src/builder/serialization/controls/style-v2.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 { RichTextV2ControlDefinition } from '../../../controls'\nimport { deserializeControl, serializeControl } from '../control-serialization'\nimport { deserializeFunction, serializeFunction } from '../function-serialization'\nimport { Deserialize, Serialize } from './types'\n\nexport function serializeRichTextControlV2(\n definition: RichTextV2ControlDefinition,\n): [Serialize<RichTextV2ControlDefinition>, Transferable[]] {\n const { plugins, ...config } = definition.config\n const transferables: Transferable[] = []\n\n return [\n {\n ...definition,\n config: {\n ...config,\n plugins:\n plugins?.map(plugin => {\n const onKeyDown = plugin.onKeyDown && serializeFunction(plugin.onKeyDown)\n if (onKeyDown) transferables.push(onKeyDown)\n const withPlugin = plugin.withPlugin && serializeFunction(plugin.withPlugin)\n if (withPlugin) transferables.push(withPlugin)\n\n if (plugin.control) {\n const [definition, pluginTransferables] = serializeControl(plugin.control.definition)\n transferables.push(...pluginTransferables)\n const getValue = serializeFunction(plugin.control.getValue)\n if (getValue) transferables.push(getValue)\n const onChange = serializeFunction(plugin.control.onChange)\n if (onChange) transferables.push(onChange)\n\n return {\n control: {\n definition,\n onChange,\n getValue,\n },\n onKeyDown,\n withPlugin,\n }\n }\n\n return {\n onKeyDown,\n withPlugin,\n }\n }) ?? [],\n },\n },\n transferables,\n ] as [Serialize<RichTextV2ControlDefinition>, Transferable[]]\n}\n\nexport function deserializeRichTextControlV2(\n definition: Serialize<RichTextV2ControlDefinition>,\n): Deserialize<Serialize<RichTextV2ControlDefinition>> {\n return {\n ...definition,\n config: {\n ...definition.config,\n plugins:\n definition.config.plugins?.map(plugin => {\n // TODO: you shouldn't need to cast all the functions\n // There is a type missmatch where functions within the plugin aren't typed as Serialize<T>\n // This prevents them from being used with `deserializeFunction`\n const onKeyDown = plugin.onKeyDown && deserializeFunction(plugin.onKeyDown as any)\n const withPlugin = plugin.withPlugin && deserializeFunction(plugin.withPlugin as any)\n\n if (plugin.control) {\n const definition = deserializeControl(plugin.control.definition as any)\n const getValue = deserializeFunction(plugin.control.getValue as any)\n const onChange = deserializeFunction(plugin.control.onChange as any)\n\n return {\n control: {\n definition,\n onChange,\n getValue,\n },\n onKeyDown,\n withPlugin,\n }\n }\n\n return {\n onKeyDown,\n withPlugin,\n }\n }) ?? [],\n },\n } as Deserialize<Serialize<RichTextV2ControlDefinition>>\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 { StyleV2ControlDefinition } from '../../../controls'\nimport { deserializeControl, serializeControl } from '../control-serialization'\nimport { deserializeFunction, serializeFunction } from '../function-serialization'\nimport { Serialize, Deserialize } from './types'\n\nexport function serializeStyleV2Control(\n definition: StyleV2ControlDefinition,\n): [Serialize<StyleV2ControlDefinition>, Transferable[]] {\n const [type, transferables] = serializeControl(definition.config.type)\n const getStyle = definition.config.getStyle && serializeFunction(definition.config.getStyle)\n\n if (getStyle) {\n transferables.push(getStyle)\n }\n\n return [\n {\n ...definition,\n config: {\n ...definition.config,\n type,\n getStyle,\n },\n },\n transferables,\n ] as [Serialize<StyleV2ControlDefinition>, Transferable[]]\n}\n\nexport function deserializeStyleV2Control(\n definition: Serialize<StyleV2ControlDefinition>,\n): Deserialize<Serialize<StyleV2ControlDefinition>> {\n const type = deserializeControl(definition.config.type)\n const getStyle = definition.config.getStyle && deserializeFunction(definition.config.getStyle)\n\n return {\n ...definition,\n config: {\n ...definition.config,\n getStyle,\n type,\n },\n } as Deserialize<Serialize<StyleV2ControlDefinition>>\n}\n","import {\n ComboboxControlDefinition,\n ComboboxControlType,\n ListControlDefinition,\n ListControlType,\n RichTextV2ControlDefinition,\n RichTextV2ControlType,\n ShapeControlDefinition,\n ShapeControlType,\n StyleV2ControlDefinition,\n StyleV2ControlType,\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 { deserializeRichTextControlV2, serializeRichTextControlV2 } from './controls/rich-text-v2'\nimport {\n deserializeShapeControlDefinition,\n serializeShapeControlDefinition,\n} from './controls/shape'\nimport { deserializeStyleV2Control, serializeStyleV2Control } from './controls/style-v2'\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 | RichTextV2ControlDefinition\n | ComboboxControlDefinition\n | ShapeControlDefinition\n | ListControlDefinition\n | StyleV2ControlDefinition\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<RichTextV2ControlDefinition>\n | Serialize<ComboboxControlDefinition>\n | Serialize<ShapeControlDefinition>\n | Serialize<ListControlDefinition>\n | Serialize<StyleV2ControlDefinition>\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 | RichTextV2ControlDefinition\n | ComboboxControlDefinition\n | ShapeControlDefinition\n | ListControlDefinition\n | StyleV2ControlDefinition\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<RichTextV2ControlDefinition>>\n | Deserialize<Serialize<ComboboxControlDefinition>>\n | Deserialize<Serialize<ShapeControlDefinition>>\n | Deserialize<Serialize<ListControlDefinition>>\n | Deserialize<Serialize<StyleV2ControlDefinition>>\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 RichTextV2ControlType:\n return serializeRichTextControlV2(control)\n\n case StyleV2ControlType:\n return serializeStyleV2Control(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 RichTextV2ControlType:\n return deserializeRichTextControlV2(serializedControl)\n\n case StyleV2ControlType:\n return deserializeStyleV2Control(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/rich-text-v2.ts","../src/builder/serialization/controls/shape.ts","../src/builder/serialization/controls/style-v2.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 { RichTextV2ControlDefinition } from '../../../controls'\nimport { deserializeControl, serializeControl } from '../control-serialization'\nimport { deserializeFunction, serializeFunction } from '../function-serialization'\nimport { Deserialize, Serialize } from './types'\n\nexport function serializeRichTextControlV2(\n definition: RichTextV2ControlDefinition,\n): [Serialize<RichTextV2ControlDefinition>, Transferable[]] {\n const { plugins, ...config } = definition.config\n const transferables: Transferable[] = []\n\n return [\n {\n ...definition,\n config: {\n ...config,\n plugins:\n plugins?.map(plugin => {\n const onKeyDown = plugin.onKeyDown && serializeFunction(plugin.onKeyDown)\n if (onKeyDown) transferables.push(onKeyDown)\n const withPlugin = plugin.withPlugin && serializeFunction(plugin.withPlugin)\n if (withPlugin) transferables.push(withPlugin)\n\n if (plugin.control) {\n const [definition, pluginTransferables] = serializeControl(plugin.control.definition)\n transferables.push(...pluginTransferables)\n const getValue = serializeFunction(plugin.control.getValue)\n if (getValue) transferables.push(getValue)\n const onChange = serializeFunction(plugin.control.onChange)\n if (onChange) transferables.push(onChange)\n\n return {\n control: {\n definition,\n onChange,\n getValue,\n },\n onKeyDown,\n withPlugin,\n }\n }\n\n return {\n onKeyDown,\n withPlugin,\n }\n }) ?? [],\n },\n },\n transferables,\n ] as [Serialize<RichTextV2ControlDefinition>, Transferable[]]\n}\n\nexport function deserializeRichTextControlV2(\n definition: Serialize<RichTextV2ControlDefinition>,\n): Deserialize<Serialize<RichTextV2ControlDefinition>> {\n return {\n ...definition,\n config: {\n ...definition.config,\n plugins:\n definition.config.plugins?.map(plugin => {\n // TODO: you shouldn't need to cast all the functions\n // There is a type missmatch where functions within the plugin aren't typed as Serialize<T>\n // This prevents them from being used with `deserializeFunction`\n const onKeyDown = plugin.onKeyDown && deserializeFunction(plugin.onKeyDown as any)\n const withPlugin = plugin.withPlugin && deserializeFunction(plugin.withPlugin as any)\n\n if (plugin.control) {\n const definition = deserializeControl(plugin.control.definition as any)\n const getValue = deserializeFunction(plugin.control.getValue as any)\n const onChange = deserializeFunction(plugin.control.onChange as any)\n\n return {\n control: {\n definition,\n onChange,\n getValue,\n },\n onKeyDown,\n withPlugin,\n }\n }\n\n return {\n onKeyDown,\n withPlugin,\n }\n }) ?? [],\n },\n } as Deserialize<Serialize<RichTextV2ControlDefinition>>\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 { StyleV2ControlDefinition } from '../../../controls'\nimport { deserializeControl, serializeControl } from '../control-serialization'\nimport { deserializeFunction, serializeFunction } from '../function-serialization'\nimport { Serialize, Deserialize } from './types'\n\nexport function serializeStyleV2Control(\n definition: StyleV2ControlDefinition,\n): [Serialize<StyleV2ControlDefinition>, Transferable[]] {\n const [type, transferables] = serializeControl(definition.config.type)\n const getStyle = definition.config.getStyle && serializeFunction(definition.config.getStyle)\n\n if (getStyle) {\n transferables.push(getStyle)\n }\n\n return [\n {\n ...definition,\n config: {\n ...definition.config,\n type,\n getStyle,\n },\n },\n transferables,\n ] as [Serialize<StyleV2ControlDefinition>, Transferable[]]\n}\n\nexport function deserializeStyleV2Control(\n definition: Serialize<StyleV2ControlDefinition>,\n): Deserialize<Serialize<StyleV2ControlDefinition>> {\n const type = deserializeControl(definition.config.type)\n const getStyle = definition.config.getStyle && deserializeFunction(definition.config.getStyle)\n\n return {\n ...definition,\n config: {\n ...definition.config,\n getStyle,\n type,\n },\n } as Deserialize<Serialize<StyleV2ControlDefinition>>\n}\n","import {\n ComboboxControlDefinition,\n ComboboxControlType,\n ListControlDefinition,\n ListControlType,\n RichTextV2ControlDefinition,\n RichTextV2ControlType,\n ShapeControlDefinition,\n ShapeControlType,\n StyleV2ControlDefinition,\n StyleV2ControlType,\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 { deserializeRichTextControlV2, serializeRichTextControlV2 } from './controls/rich-text-v2'\nimport {\n deserializeShapeControlDefinition,\n serializeShapeControlDefinition,\n} from './controls/shape'\nimport { deserializeStyleV2Control, serializeStyleV2Control } from './controls/style-v2'\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 | RichTextV2ControlDefinition\n | ComboboxControlDefinition\n | ShapeControlDefinition\n | ListControlDefinition\n | StyleV2ControlDefinition\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<RichTextV2ControlDefinition>\n | Serialize<ComboboxControlDefinition>\n | Serialize<ShapeControlDefinition>\n | Serialize<ListControlDefinition>\n | Serialize<StyleV2ControlDefinition>\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 | RichTextV2ControlDefinition\n | ComboboxControlDefinition\n | ShapeControlDefinition\n | ListControlDefinition\n | StyleV2ControlDefinition\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<RichTextV2ControlDefinition>>\n | Deserialize<Serialize<ComboboxControlDefinition>>\n | Deserialize<Serialize<ShapeControlDefinition>>\n | Deserialize<Serialize<ListControlDefinition>>\n | Deserialize<Serialize<StyleV2ControlDefinition>>\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 RichTextV2ControlType:\n return serializeRichTextControlV2(control)\n\n case StyleV2ControlType:\n return serializeStyleV2Control(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 RichTextV2ControlType:\n return deserializeRichTextControlV2(serializedControl)\n\n case StyleV2ControlType:\n return deserializeStyleV2Control(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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"}
@@ -8,6 +8,7 @@ require("redux-thunk");
8
8
  require("./actions.cjs.js");
9
9
  require("zod");
10
10
  require("./state/breakpoints.cjs.js");
11
+ require("ts-pattern");
11
12
  require("corporate-ipsum");
12
13
  require("slate");
13
14
  require("uuid");
@@ -65,7 +66,7 @@ exports.StyleV2Control = reactPage.StyleV2Control;
65
66
  exports.StyleV2ControlMessageType = reactPage.StyleV2ControlMessageType;
66
67
  exports.StyleV2ControlType = reactPage.StyleV2ControlType;
67
68
  exports.TypographyControlType = reactPage.TypographyControlType;
68
- exports.copy = reactPage.copy;
69
+ exports.copy = reactPage.copy$1;
69
70
  exports.copyColorData = reactPage.copyColorData;
70
71
  exports.copyImageData = reactPage.copyImageData;
71
72
  exports.copyLinkData = reactPage.copyLinkData;
@@ -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,11 +1,12 @@
1
1
  export { b as Checkbox, C as CheckboxControlType, c as Number, N as NumberControlType, d as TextArea, T as TextAreaControlType, e as TextInput, a as TextInputControlType } from "./text-input.es.js";
2
- export { aE as Color, ah as ColorControlType, ag as IconRadioGroupControlType, aK as Image, af as ImageControlType, a2 as ImageControlValueFormat, aM as Link, ae as LinkControlType, aO as List, aQ as ListControl, aP as ListControlMessageType, ac as ListControlType, bj as ObjectType, X as RichText, bl as RichTextControl, bk as RichTextControlMessageType, a9 as RichTextControlType, bs as RichTextV2Control, br as RichTextV2ControlMessageType, a8 as RichTextV2ControlType, bq as RichTextV2Mode, aX as Select, ai as SelectControlType, aY as Shape, a_ as ShapeControl, aZ as ShapeControlMessageType, ad as ShapeControlType, b5 as Slot, b7 as SlotControl, b6 as SlotControlMessageType, aa as SlotControlType, ba as Style, bc as StyleControl, bb as StyleControlMessageType, a1 as StyleControlProperty, a7 as StyleControlType, bh as StyleV2Control, bg as StyleV2ControlMessageType, ab as StyleV2ControlType, a6 as TypographyControlType, aG as copy, aF as copyColorData, aL as copyImageData, aN as copyLinkData, aR as copyListData, bi as copyRichTextData, a$ as copyShapeData, b8 as copySlotData, bd as copyStyleData, bv as createRichTextV2Plugin, aS as getListElementChildren, aU as getListFileIds, aW as getListPageIds, aT as getListSwatchIds, aV as getListTypographyIds, b0 as getShapeElementChildren, b4 as getShapeFileIds, b3 as getShapePageIds, b1 as getShapeSwatchIds, b2 as getShapeTypographyIds, bx as getTypographySwatchIds, by as getTypographyTypographyIds, a4 as isRichTextV1Data, aH as merge, b9 as mergeSlotData, bp as richTextDAOToDTO, bn as richTextDTOtoDAO, bm as richTextDTOtoSelection, bt as richTextV2DataToDescendents, bu as richTextV2DescendentsToData, bo as toSelectionDTO, aJ as unstable_IconRadioGroup, aI as unstable_IconRadioGroupIcon, bf as unstable_StyleV2, bw as unstable_Typography, be as unstable_useStyleV2ClassName } from "./react-page.es.js";
2
+ export { aF as Color, ai as ColorControlType, ah as IconRadioGroupControlType, aL as Image, ag as ImageControlType, a3 as ImageControlValueFormat, aN as Link, af as LinkControlType, aP as List, aR as ListControl, aQ as ListControlMessageType, ad as ListControlType, bk as ObjectType, Y as RichText, bm as RichTextControl, bl as RichTextControlMessageType, aa as RichTextControlType, bt as RichTextV2Control, bs as RichTextV2ControlMessageType, a9 as RichTextV2ControlType, br as RichTextV2Mode, aY as Select, aj as SelectControlType, aZ as Shape, a$ as ShapeControl, a_ as ShapeControlMessageType, ae as ShapeControlType, b6 as Slot, b8 as SlotControl, b7 as SlotControlMessageType, ab as SlotControlType, bb as Style, bd as StyleControl, bc as StyleControlMessageType, a2 as StyleControlProperty, a8 as StyleControlType, bi as StyleV2Control, bh as StyleV2ControlMessageType, ac as StyleV2ControlType, a7 as TypographyControlType, aH as copy, aG as copyColorData, aM as copyImageData, aO as copyLinkData, aS as copyListData, bj as copyRichTextData, b0 as copyShapeData, b9 as copySlotData, be as copyStyleData, bw as createRichTextV2Plugin, aT as getListElementChildren, aV as getListFileIds, aX as getListPageIds, aU as getListSwatchIds, aW as getListTypographyIds, b1 as getShapeElementChildren, b5 as getShapeFileIds, b4 as getShapePageIds, b2 as getShapeSwatchIds, b3 as getShapeTypographyIds, by as getTypographySwatchIds, bz as getTypographyTypographyIds, a5 as isRichTextV1Data, aI as merge, ba as mergeSlotData, bq as richTextDAOToDTO, bo as richTextDTOtoDAO, bn as richTextDTOtoSelection, bu as richTextV2DataToDescendents, bv as richTextV2DescendentsToData, bp as toSelectionDTO, aK as unstable_IconRadioGroup, aJ as unstable_IconRadioGroupIcon, bg as unstable_StyleV2, bx as unstable_Typography, bf as unstable_useStyleV2ClassName } from "./react-page.es.js";
3
3
  export { a as Combobox, C as ComboboxControlType } from "./combobox.es.js";
4
4
  import "redux";
5
5
  import "redux-thunk";
6
6
  import "./actions.es.js";
7
7
  import "zod";
8
8
  import "./state/breakpoints.es.js";
9
+ import "ts-pattern";
9
10
  import "corporate-ipsum";
10
11
  import "slate";
11
12
  import "uuid";
@@ -1 +1 @@
1
- {"version":3,"file":"controls.es.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"controls.es.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;"}
package/dist/index.cjs.js CHANGED
@@ -45,6 +45,7 @@ var textInput = require("./text-input.cjs.js");
45
45
  var combobox = require("./combobox.cjs.js");
46
46
  var uuid = require("uuid");
47
47
  require("slate");
48
+ require("ts-pattern");
48
49
  var shim = require("use-sync-external-store/shim");
49
50
  var redux = require("redux");
50
51
  var thunk = require("redux-thunk");
@@ -702,12 +703,12 @@ const makeswiftSiteVersionSchema = zod.z.enum(["Live", "Working"]);
702
703
  const MakeswiftSiteVersion = makeswiftSiteVersionSchema.Enum;
703
704
  const makeswiftPreviewDataSchema = zod.z.object({
704
705
  makeswift: zod.z.literal(true),
705
- unstable_siteVersion: makeswiftSiteVersionSchema
706
+ siteVersion: makeswiftSiteVersionSchema
706
707
  });
707
708
  function getMakeswiftSiteVersion(previewData) {
708
709
  const result = makeswiftPreviewDataSchema.safeParse(previewData);
709
710
  if (result.success)
710
- return result.data.unstable_siteVersion;
711
+ return result.data.siteVersion;
711
712
  return null;
712
713
  }
713
714
  function PreviewModeScript({
@@ -805,7 +806,7 @@ class Makeswift {
805
806
  constructor(apiKey, {
806
807
  apiOrigin = "https://api.makeswift.com",
807
808
  runtime = ReactRuntime,
808
- unstable_previewData
809
+ siteVersion
809
810
  } = {}) {
810
811
  __publicField(this, "apiKey");
811
812
  __publicField(this, "apiOrigin");
@@ -824,7 +825,11 @@ Received "${apiKey}" instead.`);
824
825
  }
825
826
  this.graphqlClient = new GraphQLClient(new URL("graphql", apiOrigin).href);
826
827
  this.runtime = runtime;
827
- this.siteVersion = getMakeswiftSiteVersion(unstable_previewData);
828
+ this.siteVersion = siteVersion != null ? siteVersion : null;
829
+ }
830
+ static getSiteVersion(previewData) {
831
+ var _a;
832
+ return (_a = getMakeswiftSiteVersion(previewData)) != null ? _a : MakeswiftSiteVersion.Live;
828
833
  }
829
834
  async fetch(path, init) {
830
835
  var _a;
@@ -838,8 +843,7 @@ Received "${apiKey}" instead.`);
838
843
  return response;
839
844
  }
840
845
  async getPages() {
841
- const isUsingVersioning = this.siteVersion != null;
842
- const response = await this.fetch(`/${isUsingVersioning ? "v3" : "v2"}/pages`, {
846
+ const response = await this.fetch(`/${this.siteVersion == null ? "v2" : "v3"}/pages`, {
843
847
  headers: {
844
848
  "Makeswift-Site-Version": MakeswiftSiteVersion.Live
845
849
  }
@@ -853,8 +857,7 @@ Received "${apiKey}" instead.`);
853
857
  }
854
858
  async getTypographies(typographyIds, preview) {
855
859
  var _a;
856
- const isUsingVersioning = this.siteVersion != null;
857
- const url = new URL(`${isUsingVersioning ? "v2" : "v1"}/typographies/bulk`, this.apiOrigin);
860
+ const url = new URL(`${this.siteVersion == null ? "v1" : "v2"}/typographies/bulk`, this.apiOrigin);
858
861
  typographyIds.forEach((id) => {
859
862
  url.searchParams.append("ids", id);
860
863
  });
@@ -872,8 +875,7 @@ Received "${apiKey}" instead.`);
872
875
  }
873
876
  async getSwatches(ids, preview) {
874
877
  var _a;
875
- const isUsingVersioning = this.siteVersion != null;
876
- const url = new URL(`${isUsingVersioning ? "v2" : "v1"}/swatches/bulk`, this.apiOrigin);
878
+ const url = new URL(`${this.siteVersion == null ? "v1" : "v2"}/swatches/bulk`, this.apiOrigin);
877
879
  ids.forEach((id) => {
878
880
  url.searchParams.append("ids", id);
879
881
  });
@@ -1026,7 +1028,6 @@ Received "${apiKey}" instead.`);
1026
1028
  unstable_locale
1027
1029
  } = {}) {
1028
1030
  var _a, _b, _c;
1029
- const isUsingVersioning = this.siteVersion != null;
1030
1031
  const siteVersion = (_a = this.siteVersion) != null ? _a : previewOverride ? MakeswiftSiteVersion.Working : MakeswiftSiteVersion.Live;
1031
1032
  const defaultLocale = (_b = reactPage.getDefaultLocale(this.runtime.store.getState())) == null ? void 0 : _b.toString();
1032
1033
  const locale = unstable_locale === defaultLocale ? null : unstable_locale;
@@ -1038,7 +1039,7 @@ Received "${apiKey}" instead.`);
1038
1039
  }
1039
1040
  searchParams.set("locale", locale);
1040
1041
  }
1041
- const response = await this.fetch(`/${isUsingVersioning ? "v3" : "v2"}/pages/${encodeURIComponent(pathname)}/document?${searchParams.toString()}`, {
1042
+ const response = await this.fetch(`/${this.siteVersion == null ? "v2" : "v3"}/pages/${encodeURIComponent(pathname)}/document?${searchParams.toString()}`, {
1042
1043
  headers: { "Makeswift-Site-Version": siteVersion }
1043
1044
  });
1044
1045
  if (!response.ok) {
@@ -1062,8 +1063,7 @@ Received "${apiKey}" instead.`);
1062
1063
  };
1063
1064
  }
1064
1065
  async getSwatch(swatchId) {
1065
- const isUsingVersioning = this.siteVersion != null;
1066
- const response = await this.fetch(`${isUsingVersioning ? "v2" : "v1"}/swatches/${swatchId}`);
1066
+ const response = await this.fetch(`${this.siteVersion == null ? "v1" : "v2"}/swatches/${swatchId}`);
1067
1067
  if (!response.ok) {
1068
1068
  if (response.status !== 404)
1069
1069
  console.error("Failed to get swatch", await response.json());
@@ -1077,8 +1077,7 @@ Received "${apiKey}" instead.`);
1077
1077
  return result.file;
1078
1078
  }
1079
1079
  async getTypography(typographyId) {
1080
- const isUsingVersioning = this.siteVersion != null;
1081
- const response = await this.fetch(`${isUsingVersioning ? "v2" : "v1"}/typographies/${typographyId}`);
1080
+ const response = await this.fetch(`${this.siteVersion == null ? "v1" : "v2"}/typographies/${typographyId}`);
1082
1081
  if (!response.ok) {
1083
1082
  if (response.status !== 404)
1084
1083
  console.error("Failed to get typography", await response.json());
@@ -1088,8 +1087,7 @@ Received "${apiKey}" instead.`);
1088
1087
  return typography;
1089
1088
  }
1090
1089
  async getGlobalElement(globalElementId) {
1091
- const isUsingVersioning = this.siteVersion != null;
1092
- const response = await this.fetch(`${isUsingVersioning ? "v2" : "v1"}/global-elements/${globalElementId}`);
1090
+ const response = await this.fetch(`${this.siteVersion == null ? "v1" : "v2"}/global-elements/${globalElementId}`);
1093
1091
  if (!response.ok) {
1094
1092
  if (response.status !== 404)
1095
1093
  console.error("Failed to get global element", await response.json());
@@ -1099,8 +1097,7 @@ Received "${apiKey}" instead.`);
1099
1097
  return globalElement;
1100
1098
  }
1101
1099
  async getLocalizedGlobalElement(globalElementId, locale) {
1102
- const isUsingVersioning = this.siteVersion != null;
1103
- const response = await this.fetch(`${isUsingVersioning ? "v2" : "v1"}/localized-global-elements/${globalElementId}?locale=${locale}`);
1100
+ const response = await this.fetch(`${this.siteVersion == null ? "v1" : "v2"}/localized-global-elements/${globalElementId}?locale=${locale}`);
1104
1101
  if (!response.ok) {
1105
1102
  if (response.status !== 404)
1106
1103
  console.error("Failed to get localized global element", await response.json());
@@ -1192,8 +1189,8 @@ async function fonts(_req, res, { getFonts } = {}) {
1192
1189
  const fonts2 = (_a = await (getFonts == null ? void 0 : getFonts())) != null ? _a : [];
1193
1190
  return res.json(fonts2);
1194
1191
  }
1195
- const version = "0.10.10";
1196
- async function handler(req, res, { apiKey, unstable_siteVersions }) {
1192
+ const version = "0.10.12";
1193
+ async function handler(req, res, { apiKey, siteVersions }) {
1197
1194
  if (req.query.secret !== apiKey) {
1198
1195
  return res.status(401).json({ message: "Unauthorized" });
1199
1196
  }
@@ -1204,7 +1201,8 @@ async function handler(req, res, { apiKey, unstable_siteVersions }) {
1204
1201
  clientSideNavigation: true,
1205
1202
  elementFromPoint: false,
1206
1203
  customBreakpoints: true,
1207
- unstable_siteVersions,
1204
+ siteVersions,
1205
+ unstable_siteVersions: siteVersions,
1208
1206
  localizedPageSSR: true
1209
1207
  });
1210
1208
  }
@@ -1249,7 +1247,7 @@ async function proxyPreviewMode(req, res, { apiKey }) {
1249
1247
  const secure = process.env["NODE_ENV"] === "production";
1250
1248
  const previewData = {
1251
1249
  makeswift: true,
1252
- unstable_siteVersion: MakeswiftSiteVersion.Working
1250
+ siteVersion: MakeswiftSiteVersion.Working
1253
1251
  };
1254
1252
  const setCookie = res.setPreviewData(previewData).getHeader("Set-Cookie");
1255
1253
  res.removeHeader("Set-Cookie");
@@ -1294,7 +1292,7 @@ function MakeswiftApiHandler(apiKey, {
1294
1292
  appOrigin = "https://app.makeswift.com",
1295
1293
  apiOrigin = "https://api.makeswift.com",
1296
1294
  getFonts,
1297
- unstable_siteVersions = false
1295
+ siteVersions = false
1298
1296
  } = {}) {
1299
1297
  const cors = Cors__default["default"]({ origin: appOrigin });
1300
1298
  if (typeof apiKey !== "string") {
@@ -1316,12 +1314,15 @@ Received "${apiKey}" instead.`);
1316
1314
  Received "${makeswift}" for the \`makeswift\` param instead.
1317
1315
  Read more about dynamic catch-all routes here: https://nextjs.org/docs/routing/dynamic-routes#catch-all-routes`);
1318
1316
  }
1319
- const client = new Makeswift(apiKey, { apiOrigin, unstable_previewData: req.previewData });
1317
+ const client = new Makeswift(apiKey, {
1318
+ apiOrigin,
1319
+ siteVersion: siteVersions ? Makeswift.getSiteVersion(req.previewData) : void 0
1320
+ });
1320
1321
  const action = "/" + makeswift.join("/");
1321
1322
  const matches = (pattern) => pathToRegexp.match(pattern, { decode: decodeURIComponent })(action);
1322
1323
  let m;
1323
1324
  if (matches("/manifest"))
1324
- return handler(req, res, { apiKey, unstable_siteVersions });
1325
+ return handler(req, res, { apiKey, siteVersions });
1325
1326
  if (matches("/revalidate"))
1326
1327
  return revalidate(req, res, { apiKey });
1327
1328
  if (matches("/proxy-preview-mode"))
@@ -1430,8 +1431,7 @@ async function getStaticProps(ctx) {
1430
1431
  var _a, _b, _c;
1431
1432
  deprecationWarning("getStaticProps");
1432
1433
  const makeswift = new Makeswift(getApiKey(), {
1433
- apiOrigin: getApiOrigin(),
1434
- unstable_previewData: ctx.previewData
1434
+ apiOrigin: getApiOrigin()
1435
1435
  });
1436
1436
  const path = "/" + ((_b = (_a = ctx.params) == null ? void 0 : _a.path) != null ? _b : []).join("/");
1437
1437
  const snapshot = await makeswift.getPageSnapshot(path, {
@@ -1453,8 +1453,7 @@ async function getServerSideProps(ctx) {
1453
1453
  var _a, _b;
1454
1454
  deprecationWarning("getServerSideProps");
1455
1455
  const makeswift = new Makeswift(getApiKey(), {
1456
- apiOrigin: getApiOrigin(),
1457
- unstable_previewData: ctx.previewData
1456
+ apiOrigin: getApiOrigin()
1458
1457
  });
1459
1458
  const path = "/" + ((_b = (_a = ctx.params) == null ? void 0 : _a.path) != null ? _b : []).join("/");
1460
1459
  const snapshot = await makeswift.getPageSnapshot(path, {