@makeswift/runtime 0.15.0 → 0.16.0-canary.0

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 (115) hide show
  1. package/dist/cjs/builder/serialization/control-serialization.js +3 -2
  2. package/dist/cjs/builder/serialization/control-serialization.js.map +1 -1
  3. package/dist/cjs/components/builtin/Button/Button.js.map +1 -1
  4. package/dist/cjs/components/builtin/Button/register.js +13 -12
  5. package/dist/cjs/components/builtin/Button/register.js.map +1 -1
  6. package/dist/cjs/components/builtin/Form/Form.js.map +1 -1
  7. package/dist/cjs/components/builtin/Form/register.js +2 -1
  8. package/dist/cjs/components/builtin/Form/register.js.map +1 -1
  9. package/dist/cjs/components/builtin/Image/Image.js.map +1 -1
  10. package/dist/cjs/components/builtin/Image/register.js +2 -1
  11. package/dist/cjs/components/builtin/Image/register.js.map +1 -1
  12. package/dist/cjs/components/builtin/Navigation/Navigation.js.map +1 -1
  13. package/dist/cjs/components/builtin/Navigation/components/DropDownButton/index.js.map +1 -1
  14. package/dist/cjs/components/builtin/Navigation/components/MobileMenu/components/MobileDropDownButton/index.js.map +1 -1
  15. package/dist/cjs/components/builtin/Navigation/register.js +2 -1
  16. package/dist/cjs/components/builtin/Navigation/register.js.map +1 -1
  17. package/dist/cjs/components/hooks/index.js +3 -1
  18. package/dist/cjs/components/hooks/index.js.map +1 -1
  19. package/dist/cjs/components/hooks/usePropControllerLinkData.js +34 -0
  20. package/dist/cjs/components/hooks/usePropControllerLinkData.js.map +1 -0
  21. package/dist/cjs/components/shared/Link/index.js.map +1 -1
  22. package/dist/cjs/controls/control.js +2 -1
  23. package/dist/cjs/controls/control.js.map +1 -1
  24. package/dist/cjs/controls/rich-text/introspection.js +2 -9
  25. package/dist/cjs/controls/rich-text/introspection.js.map +1 -1
  26. package/dist/cjs/next/api-handler/handlers/manifest.js +1 -1
  27. package/dist/cjs/prop-controllers/copy/navigation-links.js +2 -2
  28. package/dist/cjs/prop-controllers/copy/navigation-links.js.map +1 -1
  29. package/dist/cjs/prop-controllers/copy.js +4 -3
  30. package/dist/cjs/prop-controllers/copy.js.map +1 -1
  31. package/dist/cjs/prop-controllers/descriptors.js +0 -6
  32. package/dist/cjs/prop-controllers/descriptors.js.map +1 -1
  33. package/dist/cjs/prop-controllers/index.js.map +1 -1
  34. package/dist/cjs/prop-controllers/introspection.js +3 -10
  35. package/dist/cjs/prop-controllers/introspection.js.map +1 -1
  36. package/dist/cjs/runtimes/react/controls.js +11 -0
  37. package/dist/cjs/runtimes/react/controls.js.map +1 -1
  38. package/dist/esm/builder/serialization/control-serialization.js +5 -2
  39. package/dist/esm/builder/serialization/control-serialization.js.map +1 -1
  40. package/dist/esm/components/builtin/Button/Button.js.map +1 -1
  41. package/dist/esm/components/builtin/Button/register.js +2 -1
  42. package/dist/esm/components/builtin/Button/register.js.map +1 -1
  43. package/dist/esm/components/builtin/Form/Form.js.map +1 -1
  44. package/dist/esm/components/builtin/Form/register.js +2 -1
  45. package/dist/esm/components/builtin/Form/register.js.map +1 -1
  46. package/dist/esm/components/builtin/Image/Image.js.map +1 -1
  47. package/dist/esm/components/builtin/Image/register.js +2 -1
  48. package/dist/esm/components/builtin/Image/register.js.map +1 -1
  49. package/dist/esm/components/builtin/Navigation/Navigation.js.map +1 -1
  50. package/dist/esm/components/builtin/Navigation/components/DropDownButton/index.js.map +1 -1
  51. package/dist/esm/components/builtin/Navigation/components/MobileMenu/components/MobileDropDownButton/index.js.map +1 -1
  52. package/dist/esm/components/builtin/Navigation/register.js +2 -1
  53. package/dist/esm/components/builtin/Navigation/register.js.map +1 -1
  54. package/dist/esm/components/hooks/index.js +1 -0
  55. package/dist/esm/components/hooks/index.js.map +1 -1
  56. package/dist/esm/components/hooks/usePropControllerLinkData.js +12 -0
  57. package/dist/esm/components/hooks/usePropControllerLinkData.js.map +1 -0
  58. package/dist/esm/components/shared/Link/index.js.map +1 -1
  59. package/dist/esm/controls/control.js +2 -1
  60. package/dist/esm/controls/control.js.map +1 -1
  61. package/dist/esm/controls/rich-text/introspection.js +2 -9
  62. package/dist/esm/controls/rich-text/introspection.js.map +1 -1
  63. package/dist/esm/next/api-handler/handlers/manifest.js +1 -1
  64. package/dist/esm/prop-controllers/copy/navigation-links.js +2 -2
  65. package/dist/esm/prop-controllers/copy/navigation-links.js.map +1 -1
  66. package/dist/esm/prop-controllers/copy.js +4 -3
  67. package/dist/esm/prop-controllers/copy.js.map +1 -1
  68. package/dist/esm/prop-controllers/descriptors.js +0 -5
  69. package/dist/esm/prop-controllers/descriptors.js.map +1 -1
  70. package/dist/esm/prop-controllers/index.js.map +1 -1
  71. package/dist/esm/prop-controllers/introspection.js +6 -10
  72. package/dist/esm/prop-controllers/introspection.js.map +1 -1
  73. package/dist/esm/runtimes/react/controls.js +13 -1
  74. package/dist/esm/runtimes/react/controls.js.map +1 -1
  75. package/dist/types/builder/serialization/control-serialization.d.ts +9 -8
  76. package/dist/types/builder/serialization/control-serialization.d.ts.map +1 -1
  77. package/dist/types/components/builtin/Button/Button.d.ts +3 -2
  78. package/dist/types/components/builtin/Button/Button.d.ts.map +1 -1
  79. package/dist/types/components/builtin/Button/register.d.ts.map +1 -1
  80. package/dist/types/components/builtin/Form/Form.d.ts +3 -2
  81. package/dist/types/components/builtin/Form/Form.d.ts.map +1 -1
  82. package/dist/types/components/builtin/Form/register.d.ts.map +1 -1
  83. package/dist/types/components/builtin/Image/Image.d.ts +3 -2
  84. package/dist/types/components/builtin/Image/Image.d.ts.map +1 -1
  85. package/dist/types/components/builtin/Image/register.d.ts.map +1 -1
  86. package/dist/types/components/builtin/Navigation/Navigation.d.ts +3 -2
  87. package/dist/types/components/builtin/Navigation/Navigation.d.ts.map +1 -1
  88. package/dist/types/components/builtin/Navigation/components/DropDownButton/index.d.ts +3 -2
  89. package/dist/types/components/builtin/Navigation/components/DropDownButton/index.d.ts.map +1 -1
  90. package/dist/types/components/builtin/Navigation/components/MobileMenu/components/MobileDropDownButton/index.d.ts +3 -2
  91. package/dist/types/components/builtin/Navigation/components/MobileMenu/components/MobileDropDownButton/index.d.ts.map +1 -1
  92. package/dist/types/components/builtin/Navigation/register.d.ts.map +1 -1
  93. package/dist/types/components/hooks/index.d.ts +1 -0
  94. package/dist/types/components/hooks/index.d.ts.map +1 -1
  95. package/dist/types/components/hooks/usePropControllerLinkData.d.ts +3 -0
  96. package/dist/types/components/hooks/usePropControllerLinkData.d.ts.map +1 -0
  97. package/dist/types/components/shared/Link/index.d.ts +1 -1
  98. package/dist/types/components/shared/Link/index.d.ts.map +1 -1
  99. package/dist/types/controls/control.d.ts.map +1 -1
  100. package/dist/types/controls/rich-text/introspection.d.ts.map +1 -1
  101. package/dist/types/prop-controllers/copy/navigation-links.d.ts.map +1 -1
  102. package/dist/types/prop-controllers/copy.d.ts.map +1 -1
  103. package/dist/types/prop-controllers/descriptors.d.ts +7 -66
  104. package/dist/types/prop-controllers/descriptors.d.ts.map +1 -1
  105. package/dist/types/prop-controllers/index.d.ts +2 -1
  106. package/dist/types/prop-controllers/index.d.ts.map +1 -1
  107. package/dist/types/prop-controllers/introspection.d.ts.map +1 -1
  108. package/dist/types/runtimes/react/controls.d.ts.map +1 -1
  109. package/package.json +2 -1
  110. package/dist/cjs/prop-controllers/copy/link.js +0 -63
  111. package/dist/cjs/prop-controllers/copy/link.js.map +0 -1
  112. package/dist/esm/prop-controllers/copy/link.js +0 -39
  113. package/dist/esm/prop-controllers/copy/link.js.map +0 -1
  114. package/dist/types/prop-controllers/copy/link.d.ts +0 -4
  115. package/dist/types/prop-controllers/copy/link.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/runtimes/react/controls.tsx"],"sourcesContent":["import { useRef } from 'react'\n\nimport * as ReactPage from '../../state/react-page'\nimport { Props } from '../../prop-controllers'\nimport {\n BorderDescriptor,\n BorderPropControllerFormat,\n BorderRadiusDescriptor,\n BorderRadiusPropControllerFormat,\n BorderRadiusValue,\n BorderValue,\n Descriptor,\n MarginDescriptor,\n MarginPropControllerFormat,\n MarginValue,\n PaddingDescriptor,\n PaddingPropControllerFormat,\n PaddingValue,\n ResolveOptions,\n ResponsiveValue,\n ShadowsDescriptor,\n ShadowsPropControllerFormat,\n ShadowsValue,\n WidthPropControllerFormat,\n WidthDescriptor,\n WidthValue,\n} from '../../prop-controllers/descriptors'\nimport {\n useBoxShadow,\n useResponsiveColor,\n useBorder as useBorderData,\n} from '../../components/hooks'\nimport type { ColorValue } from '../../components/utils/types'\nimport {\n useResponsiveBorder,\n useResponsiveBorderRadius,\n useResponsiveMargin,\n useResponsivePadding,\n useResponsiveShadow,\n useResponsiveWidth,\n} from '../../components/utils/responsive-style'\nimport {\n CheckboxControlType,\n ColorControlType,\n ComboboxControlType,\n ImageControlType,\n LinkControlType,\n ListControlType,\n NumberControlType,\n SelectControlType,\n ShapeControlType,\n SlotControl,\n SlotControlType,\n StyleControlType,\n TextAreaControlType,\n TextInputControlType,\n RichTextControl,\n RichTextControlType,\n StyleControl,\n RichTextV2Control,\n RichTextV2ControlType,\n StyleV2ControlType,\n TypographyControlType,\n} from '../../controls'\nimport { useFormattedStyle } from './controls/style'\nimport { ControlValue } from './controls/control'\nimport { RenderHook } from './components'\nimport { useSlot } from './controls/slot'\nimport { useStyle } from './use-style'\nimport { useRichText } from './controls/rich-text/rich-text'\nimport { useRichTextV2 } from './controls/rich-text-v2'\nimport { IconRadioGroupControlType } from '../../controls/icon-radio-group'\nimport { useStore } from './hooks/use-store'\nimport { useDocumentKey } from './hooks/use-document-key'\nimport { useSelector } from './hooks/use-selector'\n\nexport type ResponsiveColor = ResponsiveValue<ColorValue>\n\nfunction useWidthStyle(value: WidthValue | undefined, descriptor: WidthDescriptor): string {\n return useStyle(useResponsiveWidth(value, descriptor.options.defaultValue))\n}\n\nexport type ResolveWidthControlValue<T extends Descriptor> = T extends WidthDescriptor\n ? undefined extends ResolveOptions<T['options']>['format']\n ? WidthValue | undefined\n : ResolveOptions<T['options']>['format'] extends typeof WidthPropControllerFormat.ClassName\n ? string\n : ResolveOptions<\n T['options']\n >['format'] extends typeof WidthPropControllerFormat.ResponsiveValue\n ? WidthValue | undefined\n : never\n : never\n\nfunction usePaddingStyle(value: PaddingValue | undefined): string {\n return useStyle(useResponsivePadding(value))\n}\n\nexport type ResolvePaddingControlValue<T extends Descriptor> = T extends PaddingDescriptor\n ? undefined extends ResolveOptions<T['options']>['format']\n ? PaddingValue | undefined\n : ResolveOptions<T['options']>['format'] extends typeof PaddingPropControllerFormat.ClassName\n ? string\n : ResolveOptions<\n T['options']\n >['format'] extends typeof PaddingPropControllerFormat.ResponsiveValue\n ? PaddingValue | undefined\n : never\n : never\n\nfunction useMarginStyle(value: MarginValue | undefined): string {\n return useStyle(useResponsiveMargin(value))\n}\n\nexport type ResolveMarginControlValue<T extends Descriptor> = T extends MarginDescriptor\n ? undefined extends ResolveOptions<T['options']>['format']\n ? MarginValue | undefined\n : ResolveOptions<T['options']>['format'] extends typeof MarginPropControllerFormat.ClassName\n ? string\n : ResolveOptions<\n T['options']\n >['format'] extends typeof MarginPropControllerFormat.ResponsiveValue\n ? MarginValue | undefined\n : never\n : never\n\nexport function useBorderRadiusStyle(value: BorderRadiusValue | undefined): string {\n return useStyle(useResponsiveBorderRadius(value))\n}\n\nexport function useShadowsStyle(\n value: ShadowsValue | undefined,\n): string | ShadowsValue | undefined {\n const shadowValue = useBoxShadow(value)\n\n return useStyle(useResponsiveShadow(shadowValue ?? undefined))\n}\n\nexport type ResolveBorderRadiusControlValue<T extends Descriptor> = T extends BorderRadiusDescriptor\n ? undefined extends ResolveOptions<T['options']>['format']\n ? BorderRadiusValue | undefined\n : ResolveOptions<\n T['options']\n >['format'] extends typeof BorderRadiusPropControllerFormat.ClassName\n ? string\n : ResolveOptions<\n T['options']\n >['format'] extends typeof BorderRadiusPropControllerFormat.ResponsiveValue\n ? BorderRadiusValue | undefined\n : never\n : never\n\nexport function useBorderStyle(value: BorderValue | undefined): string | BorderValue | undefined {\n const borderData = useBorderData(value)\n\n return useStyle(useResponsiveBorder(borderData ?? undefined))\n}\nexport type ResolveShadowsControlValue<T extends Descriptor> = T extends ShadowsDescriptor\n ? undefined extends ResolveOptions<T['options']>['format']\n ? ShadowsValue | undefined\n : ResolveOptions<T['options']>['format'] extends typeof ShadowsPropControllerFormat.ClassName\n ? string\n : ResolveOptions<\n T['options']\n >['format'] extends typeof ShadowsPropControllerFormat.ResponsiveValue\n ? ShadowsValue | undefined\n : never\n : never\n\nexport type ResolveBorderControlValue<T extends Descriptor> = T extends BorderDescriptor\n ? undefined extends ResolveOptions<T['options']>['format']\n ? BorderValue | undefined\n : ResolveOptions<T['options']>['format'] extends typeof BorderPropControllerFormat.ClassName\n ? string\n : ResolveOptions<\n T['options']\n >['format'] extends typeof BorderPropControllerFormat.ResponsiveValue\n ? BorderValue | undefined\n : never\n : never\n\ntype PropsValueProps = {\n element: ReactPage.ElementData\n children(props: Record<string, unknown>): JSX.Element\n}\n\nexport function PropsValue({ element, children }: PropsValueProps): JSX.Element {\n const store = useStore()\n const propControllerDescriptorsRef = useRef(\n ReactPage.getComponentPropControllerDescriptors(store.getState(), element.type) ?? {},\n )\n const props = element.props as Record<string, any>\n const documentKey = useDocumentKey()\n\n const propControllers = useSelector(state => {\n if (documentKey == null) return null\n\n return ReactPage.getPropControllers(state, documentKey, element.key)\n })\n\n return Object.entries(propControllerDescriptorsRef.current).reduceRight(\n (renderFn, [propName, descriptor]) =>\n propsValue => {\n switch (descriptor.type) {\n case CheckboxControlType:\n case NumberControlType:\n case TextInputControlType:\n case TextAreaControlType:\n case SelectControlType:\n case ColorControlType:\n case IconRadioGroupControlType:\n case ImageControlType:\n case ComboboxControlType:\n case ShapeControlType:\n case ListControlType:\n case LinkControlType:\n case StyleV2ControlType:\n case TypographyControlType:\n return (\n <ControlValue\n definition={descriptor}\n data={props[propName]}\n control={propControllers?.[propName]}\n >\n {value => renderFn({ ...propsValue, [propName]: value })}\n </ControlValue>\n )\n\n case StyleControlType: {\n const control = (propControllers?.[propName] ?? null) as StyleControl | null\n\n return (\n <RenderHook\n key={descriptor.type}\n hook={useFormattedStyle}\n parameters={[props[propName], descriptor, control]}\n >\n {value => renderFn({ ...propsValue, [propName]: value })}\n </RenderHook>\n )\n }\n\n case RichTextControlType: {\n const control = (propControllers?.[propName] ?? null) as RichTextControl | null\n\n return (\n <RenderHook\n key={descriptor.type}\n hook={useRichText}\n parameters={[props[propName], control]}\n >\n {value => renderFn({ ...propsValue, [propName]: value })}\n </RenderHook>\n )\n }\n\n case RichTextV2ControlType: {\n const control = (propControllers?.[propName] ?? null) as RichTextV2Control | null\n\n return (\n <RenderHook\n key={descriptor.type}\n hook={useRichTextV2}\n parameters={[props[propName], descriptor, control]}\n >\n {value => renderFn({ ...propsValue, [propName]: value })}\n </RenderHook>\n )\n }\n\n case SlotControlType: {\n const control = (propControllers?.[propName] ?? null) as SlotControl | null\n\n return (\n <RenderHook\n key={descriptor.type}\n hook={useSlot}\n parameters={[props[propName], control]}\n >\n {value => renderFn({ ...propsValue, [propName]: value })}\n </RenderHook>\n )\n }\n\n case Props.Types.Width:\n switch (descriptor.options.format) {\n case WidthPropControllerFormat.ClassName:\n return (\n <RenderHook\n key={descriptor.type}\n hook={useWidthStyle}\n parameters={[props[propName], descriptor]}\n >\n {value => renderFn({ ...propsValue, [propName]: value })}\n </RenderHook>\n )\n\n default:\n return renderFn({ ...propsValue, [propName]: props[propName] })\n }\n\n case Props.Types.Padding:\n switch (descriptor.options.format) {\n case PaddingPropControllerFormat.ClassName:\n return (\n <RenderHook\n key={descriptor.type}\n hook={usePaddingStyle}\n parameters={[props[propName]]}\n >\n {value => renderFn({ ...propsValue, [propName]: value })}\n </RenderHook>\n )\n\n default:\n return renderFn({ ...propsValue, [propName]: props[propName] })\n }\n\n case Props.Types.Margin:\n switch (descriptor.options.format) {\n case MarginPropControllerFormat.ClassName:\n return (\n <RenderHook\n key={descriptor.type}\n hook={useMarginStyle}\n parameters={[props[propName]]}\n >\n {value => renderFn({ ...propsValue, [propName]: value })}\n </RenderHook>\n )\n\n default:\n return renderFn({ ...propsValue, [propName]: props[propName] })\n }\n\n case Props.Types.BorderRadius:\n switch (descriptor.options.format) {\n case BorderRadiusPropControllerFormat.ClassName:\n return (\n <RenderHook\n key={descriptor.type}\n hook={useBorderRadiusStyle}\n parameters={[props[propName]]}\n >\n {value => renderFn({ ...propsValue, [propName]: value })}\n </RenderHook>\n )\n\n default:\n return renderFn({ ...propsValue, [propName]: props[propName] })\n }\n\n case Props.Types.Shadows:\n switch (descriptor.options.format) {\n case ShadowsPropControllerFormat.ClassName:\n return (\n <RenderHook\n key={descriptor.type}\n hook={useShadowsStyle}\n parameters={[props[propName]]}\n >\n {value => renderFn({ ...propsValue, [propName]: value })}\n </RenderHook>\n )\n\n default:\n return renderFn({ ...propsValue, [propName]: props[propName] })\n }\n\n case Props.Types.Border:\n switch (descriptor.options.format) {\n case BorderPropControllerFormat.ClassName:\n return (\n <RenderHook\n key={descriptor.type}\n hook={useBorderStyle}\n parameters={[props[propName]]}\n >\n {value => renderFn({ ...propsValue, [propName]: value })}\n </RenderHook>\n )\n\n default:\n return renderFn({ ...propsValue, [propName]: props[propName] })\n }\n\n case Props.Types.ResponsiveColor:\n return (\n <RenderHook\n key={descriptor.type}\n hook={useResponsiveColor}\n parameters={[props[propName]]}\n >\n {value => renderFn({ ...propsValue, [propName]: value })}\n </RenderHook>\n )\n\n default:\n return renderFn({ ...propsValue, [propName]: props[propName] })\n }\n },\n children,\n )({})\n}\n"],"mappings":"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","names":["useBorderData"]}
1
+ {"version":3,"sources":["../../../../src/runtimes/react/controls.tsx"],"sourcesContent":["import { useRef } from 'react'\n\nimport * as ReactPage from '../../state/react-page'\nimport { Props } from '../../prop-controllers'\nimport {\n BorderDescriptor,\n BorderPropControllerFormat,\n BorderRadiusDescriptor,\n BorderRadiusPropControllerFormat,\n BorderRadiusValue,\n BorderValue,\n Descriptor,\n MarginDescriptor,\n MarginPropControllerFormat,\n MarginValue,\n PaddingDescriptor,\n PaddingPropControllerFormat,\n PaddingValue,\n ResolveOptions,\n ResponsiveValue,\n ShadowsDescriptor,\n ShadowsPropControllerFormat,\n ShadowsValue,\n WidthPropControllerFormat,\n WidthDescriptor,\n WidthValue,\n} from '../../prop-controllers/descriptors'\nimport {\n useBoxShadow,\n useResponsiveColor,\n useBorder as useBorderData,\n usePropControllerLinkData,\n} from '../../components/hooks'\nimport type { ColorValue } from '../../components/utils/types'\nimport {\n useResponsiveBorder,\n useResponsiveBorderRadius,\n useResponsiveMargin,\n useResponsivePadding,\n useResponsiveShadow,\n useResponsiveWidth,\n} from '../../components/utils/responsive-style'\nimport {\n CheckboxControlType,\n ColorControlType,\n ComboboxControlType,\n ImageControlType,\n LinkControlType,\n ListControlType,\n NumberControlType,\n SelectControlType,\n ShapeControlType,\n SlotControl,\n SlotControlType,\n StyleControlType,\n TextAreaControlType,\n TextInputControlType,\n RichTextControl,\n RichTextControlType,\n StyleControl,\n RichTextV2Control,\n RichTextV2ControlType,\n StyleV2ControlType,\n TypographyControlType,\n} from '../../controls'\nimport { useFormattedStyle } from './controls/style'\nimport { ControlValue } from './controls/control'\nimport { RenderHook } from './components'\nimport { useSlot } from './controls/slot'\nimport { useStyle } from './use-style'\nimport { useRichText } from './controls/rich-text/rich-text'\nimport { useRichTextV2 } from './controls/rich-text-v2'\nimport { IconRadioGroupControlType } from '../../controls/icon-radio-group'\nimport { useStore } from './hooks/use-store'\nimport { useDocumentKey } from './hooks/use-document-key'\nimport { useSelector } from './hooks/use-selector'\nimport { Types as PropControllerTypes } from '@makeswift/prop-controllers'\n\nexport type ResponsiveColor = ResponsiveValue<ColorValue>\n\nfunction useWidthStyle(value: WidthValue | undefined, descriptor: WidthDescriptor): string {\n return useStyle(useResponsiveWidth(value, descriptor.options.defaultValue))\n}\n\nexport type ResolveWidthControlValue<T extends Descriptor> = T extends WidthDescriptor\n ? undefined extends ResolveOptions<T['options']>['format']\n ? WidthValue | undefined\n : ResolveOptions<T['options']>['format'] extends typeof WidthPropControllerFormat.ClassName\n ? string\n : ResolveOptions<\n T['options']\n >['format'] extends typeof WidthPropControllerFormat.ResponsiveValue\n ? WidthValue | undefined\n : never\n : never\n\nfunction usePaddingStyle(value: PaddingValue | undefined): string {\n return useStyle(useResponsivePadding(value))\n}\n\nexport type ResolvePaddingControlValue<T extends Descriptor> = T extends PaddingDescriptor\n ? undefined extends ResolveOptions<T['options']>['format']\n ? PaddingValue | undefined\n : ResolveOptions<T['options']>['format'] extends typeof PaddingPropControllerFormat.ClassName\n ? string\n : ResolveOptions<\n T['options']\n >['format'] extends typeof PaddingPropControllerFormat.ResponsiveValue\n ? PaddingValue | undefined\n : never\n : never\n\nfunction useMarginStyle(value: MarginValue | undefined): string {\n return useStyle(useResponsiveMargin(value))\n}\n\nexport type ResolveMarginControlValue<T extends Descriptor> = T extends MarginDescriptor\n ? undefined extends ResolveOptions<T['options']>['format']\n ? MarginValue | undefined\n : ResolveOptions<T['options']>['format'] extends typeof MarginPropControllerFormat.ClassName\n ? string\n : ResolveOptions<\n T['options']\n >['format'] extends typeof MarginPropControllerFormat.ResponsiveValue\n ? MarginValue | undefined\n : never\n : never\n\nexport function useBorderRadiusStyle(value: BorderRadiusValue | undefined): string {\n return useStyle(useResponsiveBorderRadius(value))\n}\n\nexport function useShadowsStyle(\n value: ShadowsValue | undefined,\n): string | ShadowsValue | undefined {\n const shadowValue = useBoxShadow(value)\n\n return useStyle(useResponsiveShadow(shadowValue ?? undefined))\n}\n\nexport type ResolveBorderRadiusControlValue<T extends Descriptor> = T extends BorderRadiusDescriptor\n ? undefined extends ResolveOptions<T['options']>['format']\n ? BorderRadiusValue | undefined\n : ResolveOptions<\n T['options']\n >['format'] extends typeof BorderRadiusPropControllerFormat.ClassName\n ? string\n : ResolveOptions<\n T['options']\n >['format'] extends typeof BorderRadiusPropControllerFormat.ResponsiveValue\n ? BorderRadiusValue | undefined\n : never\n : never\n\nexport function useBorderStyle(value: BorderValue | undefined): string | BorderValue | undefined {\n const borderData = useBorderData(value)\n\n return useStyle(useResponsiveBorder(borderData ?? undefined))\n}\nexport type ResolveShadowsControlValue<T extends Descriptor> = T extends ShadowsDescriptor\n ? undefined extends ResolveOptions<T['options']>['format']\n ? ShadowsValue | undefined\n : ResolveOptions<T['options']>['format'] extends typeof ShadowsPropControllerFormat.ClassName\n ? string\n : ResolveOptions<\n T['options']\n >['format'] extends typeof ShadowsPropControllerFormat.ResponsiveValue\n ? ShadowsValue | undefined\n : never\n : never\n\nexport type ResolveBorderControlValue<T extends Descriptor> = T extends BorderDescriptor\n ? undefined extends ResolveOptions<T['options']>['format']\n ? BorderValue | undefined\n : ResolveOptions<T['options']>['format'] extends typeof BorderPropControllerFormat.ClassName\n ? string\n : ResolveOptions<\n T['options']\n >['format'] extends typeof BorderPropControllerFormat.ResponsiveValue\n ? BorderValue | undefined\n : never\n : never\n\ntype PropsValueProps = {\n element: ReactPage.ElementData\n children(props: Record<string, unknown>): JSX.Element\n}\n\nexport function PropsValue({ element, children }: PropsValueProps): JSX.Element {\n const store = useStore()\n const propControllerDescriptorsRef = useRef(\n ReactPage.getComponentPropControllerDescriptors(store.getState(), element.type) ?? {},\n )\n const props = element.props as Record<string, any>\n const documentKey = useDocumentKey()\n\n const propControllers = useSelector(state => {\n if (documentKey == null) return null\n\n return ReactPage.getPropControllers(state, documentKey, element.key)\n })\n\n return Object.entries(propControllerDescriptorsRef.current).reduceRight(\n (renderFn, [propName, descriptor]) =>\n propsValue => {\n switch (descriptor.type) {\n case CheckboxControlType:\n case NumberControlType:\n case TextInputControlType:\n case TextAreaControlType:\n case SelectControlType:\n case ColorControlType:\n case IconRadioGroupControlType:\n case ImageControlType:\n case ComboboxControlType:\n case ShapeControlType:\n case ListControlType:\n case LinkControlType:\n case StyleV2ControlType:\n case TypographyControlType:\n return (\n <ControlValue\n definition={descriptor}\n data={props[propName]}\n control={propControllers?.[propName]}\n >\n {value => renderFn({ ...propsValue, [propName]: value })}\n </ControlValue>\n )\n\n case StyleControlType: {\n const control = (propControllers?.[propName] ?? null) as StyleControl | null\n\n return (\n <RenderHook\n key={descriptor.type}\n hook={useFormattedStyle}\n parameters={[props[propName], descriptor, control]}\n >\n {value => renderFn({ ...propsValue, [propName]: value })}\n </RenderHook>\n )\n }\n\n case RichTextControlType: {\n const control = (propControllers?.[propName] ?? null) as RichTextControl | null\n\n return (\n <RenderHook\n key={descriptor.type}\n hook={useRichText}\n parameters={[props[propName], control]}\n >\n {value => renderFn({ ...propsValue, [propName]: value })}\n </RenderHook>\n )\n }\n\n case RichTextV2ControlType: {\n const control = (propControllers?.[propName] ?? null) as RichTextV2Control | null\n\n return (\n <RenderHook\n key={descriptor.type}\n hook={useRichTextV2}\n parameters={[props[propName], descriptor, control]}\n >\n {value => renderFn({ ...propsValue, [propName]: value })}\n </RenderHook>\n )\n }\n\n case SlotControlType: {\n const control = (propControllers?.[propName] ?? null) as SlotControl | null\n\n return (\n <RenderHook\n key={descriptor.type}\n hook={useSlot}\n parameters={[props[propName], control]}\n >\n {value => renderFn({ ...propsValue, [propName]: value })}\n </RenderHook>\n )\n }\n\n case Props.Types.Width:\n switch (descriptor.options.format) {\n case WidthPropControllerFormat.ClassName:\n return (\n <RenderHook\n key={descriptor.type}\n hook={useWidthStyle}\n parameters={[props[propName], descriptor]}\n >\n {value => renderFn({ ...propsValue, [propName]: value })}\n </RenderHook>\n )\n\n default:\n return renderFn({ ...propsValue, [propName]: props[propName] })\n }\n\n case Props.Types.Padding:\n switch (descriptor.options.format) {\n case PaddingPropControllerFormat.ClassName:\n return (\n <RenderHook\n key={descriptor.type}\n hook={usePaddingStyle}\n parameters={[props[propName]]}\n >\n {value => renderFn({ ...propsValue, [propName]: value })}\n </RenderHook>\n )\n\n default:\n return renderFn({ ...propsValue, [propName]: props[propName] })\n }\n\n case Props.Types.Margin:\n switch (descriptor.options.format) {\n case MarginPropControllerFormat.ClassName:\n return (\n <RenderHook\n key={descriptor.type}\n hook={useMarginStyle}\n parameters={[props[propName]]}\n >\n {value => renderFn({ ...propsValue, [propName]: value })}\n </RenderHook>\n )\n\n default:\n return renderFn({ ...propsValue, [propName]: props[propName] })\n }\n\n case Props.Types.BorderRadius:\n switch (descriptor.options.format) {\n case BorderRadiusPropControllerFormat.ClassName:\n return (\n <RenderHook\n key={descriptor.type}\n hook={useBorderRadiusStyle}\n parameters={[props[propName]]}\n >\n {value => renderFn({ ...propsValue, [propName]: value })}\n </RenderHook>\n )\n\n default:\n return renderFn({ ...propsValue, [propName]: props[propName] })\n }\n\n case Props.Types.Shadows:\n switch (descriptor.options.format) {\n case ShadowsPropControllerFormat.ClassName:\n return (\n <RenderHook\n key={descriptor.type}\n hook={useShadowsStyle}\n parameters={[props[propName]]}\n >\n {value => renderFn({ ...propsValue, [propName]: value })}\n </RenderHook>\n )\n\n default:\n return renderFn({ ...propsValue, [propName]: props[propName] })\n }\n\n case Props.Types.Border:\n switch (descriptor.options.format) {\n case BorderPropControllerFormat.ClassName:\n return (\n <RenderHook\n key={descriptor.type}\n hook={useBorderStyle}\n parameters={[props[propName]]}\n >\n {value => renderFn({ ...propsValue, [propName]: value })}\n </RenderHook>\n )\n\n default:\n return renderFn({ ...propsValue, [propName]: props[propName] })\n }\n\n case Props.Types.ResponsiveColor:\n return (\n <RenderHook\n key={descriptor.type}\n hook={useResponsiveColor}\n parameters={[props[propName]]}\n >\n {value => renderFn({ ...propsValue, [propName]: value })}\n </RenderHook>\n )\n\n case PropControllerTypes.Link:\n return (\n <RenderHook\n key={descriptor.type}\n hook={usePropControllerLinkData}\n parameters={[props[propName]]}\n >\n {value => renderFn({ ...propsValue, [propName]: value })}\n </RenderHook>\n )\n\n default:\n return renderFn({ ...propsValue, [propName]: props[propName] })\n }\n },\n children,\n )({})\n}\n"],"mappings":"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","names":["import_prop_controllers","useBorderData","PropControllerTypes"]}
@@ -24,6 +24,9 @@ import {
24
24
  isSerializedFunction,
25
25
  serializeFunction
26
26
  } from "./function-serialization";
27
+ import {
28
+ Types as PropControllerTypes
29
+ } from "@makeswift/prop-controllers";
27
30
  function serializeShapeControl(control) {
28
31
  const { type } = control.options;
29
32
  const transferables = [];
@@ -332,7 +335,7 @@ function serializeControl(control) {
332
335
  return serializeResponsiveLengthControl(control);
333
336
  case Controls.Types.Date:
334
337
  return serializeDateControl(control);
335
- case Controls.Types.Link:
338
+ case PropControllerTypes.Link:
336
339
  return serializeLinkControl(control);
337
340
  case Controls.Types.TextInput:
338
341
  return serializeTextInputControl(control);
@@ -384,7 +387,7 @@ function deserializeControl(serializedControl) {
384
387
  return deserializeResponsiveLengthControl(serializedControl);
385
388
  case Controls.Types.Date:
386
389
  return deserializeDateControl(serializedControl);
387
- case Controls.Types.Link:
390
+ case PropControllerTypes.Link:
388
391
  return deserializeLinkControl(serializedControl);
389
392
  case Controls.Types.TextInput:
390
393
  return deserializeTextInputControl(serializedControl);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/builder/serialization/control-serialization.ts"],"sourcesContent":["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"],"mappings":"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","names":["control"]}
1
+ {"version":3,"sources":["../../../../src/builder/serialization/control-serialization.ts"],"sourcesContent":["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 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'\nimport {\n LinkData,\n Types as PropControllerTypes,\n LinkDescriptor as LinkControl,\n LinkPropControllerData,\n} from '@makeswift/prop-controllers'\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?: LinkPropControllerData\n label?: string\n defaultValue?: LinkPropControllerData\n options?: { value: LinkData['type']; label: string }[]\n hidden?: boolean\n}\n\ntype SerializedLinkControl<_T = LinkPropControllerData> = {\n type: typeof PropControllerTypes.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 = LinkPropControllerData> = {\n type: typeof PropControllerTypes.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 PropControllerTypes.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 PropControllerTypes.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"],"mappings":"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","names":["control"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/builtin/Button/Button.tsx"],"sourcesContent":["import {\n ComponentPropsWithoutRef,\n ElementRef,\n ElementType,\n ForwardedRef,\n forwardRef,\n ReactNode,\n} from 'react'\nimport ColorHelper from 'color'\n\nimport {\n ElementIDValue,\n ResponsiveSelectValue,\n ResponsiveIconRadioGroupValue,\n TextStyleValue,\n LinkValue,\n WidthValue,\n} from '../../../prop-controllers/descriptors'\nimport { colorToString } from '../../utils/colorToString'\nimport { Link } from '../../shared/Link'\nimport { ResponsiveColor } from '../../../runtimes/react/controls'\nimport { ButtonVariant } from './contants'\nimport { useStyle } from '../../../runtimes/react/use-style'\nimport {\n useResponsiveStyle,\n useResponsiveTextStyle,\n useResponsiveWidth,\n} from '../../utils/responsive-style'\nimport { cx } from '@emotion/css'\n\ntype BaseProps<T extends ElementType> = {\n as?: T\n id?: ElementIDValue\n children?: ReactNode\n link?: LinkValue\n variant?: ResponsiveSelectValue<ButtonVariant>\n shape?: ResponsiveIconRadioGroupValue<'pill' | 'rounded' | 'square'>\n size?: ResponsiveIconRadioGroupValue<'small' | 'medium' | 'large'>\n color?: ResponsiveColor | null\n textColor?: ResponsiveColor | null\n textStyle?: TextStyleValue\n width?: WidthValue\n margin?: string\n}\n\ntype Props<T extends ElementType> = BaseProps<T> &\n Omit<ComponentPropsWithoutRef<typeof Link>, keyof BaseProps<T>>\n\nconst Button = forwardRef(function Button<T extends ElementType = 'button'>(\n {\n as,\n id,\n children,\n link,\n variant,\n shape,\n size,\n textColor,\n color,\n textStyle,\n width,\n margin,\n className,\n ...restOfProps\n }: Props<T>,\n ref: ForwardedRef<ElementRef<T>>,\n) {\n const Component = as ?? Link\n\n return (\n // @ts-ignore: `ref` prop doesn't match between `Link` and `T`.\n <Component\n {...restOfProps}\n ref={ref}\n id={id}\n className={cx(\n useStyle({\n display: 'table',\n border: 0,\n outline: 0,\n userSelect: 'none',\n cursor: 'pointer',\n fontFamily: 'inherit',\n textDecoration: 'none',\n textAlign: 'center',\n }),\n useStyle(useResponsiveWidth(width, 'auto')),\n margin,\n useStyle(\n useResponsiveStyle(\n [variant, shape, size, textColor, color] as const,\n ([\n variant = 'flat',\n shape = 'rounded',\n size = 'medium',\n textColor = { swatch: { hue: 0, saturation: 0, lightness: 100 }, alpha: 1 },\n color = { swatch: { hue: 0, saturation: 0, lightness: 0 }, alpha: 1 },\n ]) => {\n const fontSize = {\n value: { small: 12, medium: 14, large: 18 }[size],\n unit: 'px',\n }\n\n return {\n color: colorToString(textColor),\n borderRadius: `${{ square: 0, rounded: 4, pill: 500 }[shape]}px`,\n padding: `${{ small: '8px 12px', medium: '12px 16px', large: '16px 20px' }[size]}`,\n fontSize: `${fontSize.value}${fontSize.unit}`,\n ...{\n flat: {\n background: colorToString(color),\n border: 'none',\n transition: ['color', 'background', 'border', 'box-shadow']\n .map(property => `${property} 0.15s ease-in-out`)\n .join(', '),\n\n ':hover': {\n background: ColorHelper(colorToString(color)).darken(0.1).hex(),\n },\n\n ':active': {\n background: ColorHelper(colorToString(color)).darken(0.15).hex(),\n },\n },\n outline: {\n background: 'transparent',\n boxShadow: `inset 0 0 0 2px ${colorToString(color)}`,\n transition: ['color', 'background', 'box-shadow']\n .map(property => `${property} 0.15s ease-in-out`)\n .join(', '),\n\n ':hover': {\n boxShadow: `inset 0 0 0 2px ${ColorHelper(colorToString(color))\n .darken(0.1)\n .hex()}`,\n color: ColorHelper(colorToString(color)).darken(0.1).hex(),\n },\n\n ':active': {\n boxShadow: `inset 0 0 0 2px ${ColorHelper(colorToString(color))\n .darken(0.15)\n .hex()}`,\n color: ColorHelper(colorToString(color)).darken(0.15).hex(),\n },\n },\n shadow: {\n background: colorToString(color),\n boxShadow: '0 2px 4px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.2)',\n transition: ['transform', 'box-shadow']\n .map(property => `${property} 0.18s`)\n .join(', '),\n\n ':hover': {\n boxShadow:\n '0 10px 25px rgba(0, 0, 0, 0.15), 0 8px 10px -6px rgba(0, 0, 0, 0.3)',\n transform: 'translateY(-1px)',\n },\n\n ':active': {\n boxShadow:\n '0 4px 12px rgba(0, 0, 0, 0.15), 0 4px 6px -3px rgba(0, 0, 0, 0.3)',\n transform: 'translateY(0px)',\n },\n },\n clear: {\n background: 'transparent',\n border: 'none',\n\n ':hover': {\n color: ColorHelper(colorToString(textColor)).alpha(0.5).toString(),\n },\n\n ':active': {\n color: ColorHelper(colorToString(textColor)).alpha(0.6).toString(),\n },\n },\n blocky: {\n background: colorToString(color),\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: ColorHelper(colorToString(color)).darken(0.25).hex(),\n boxShadow: `0 4px ${ColorHelper(colorToString(color)).darken(0.25).hex()}`,\n transition: ['transform', 'box-shadow']\n .map(property => `${property} 0.1s`)\n .join(', '),\n\n ':hover': {\n transform: 'translateY(2px)',\n boxShadow: `0 2px ${ColorHelper(colorToString(color)).darken(0.25).hex()}`,\n },\n\n ':active': {\n transform: 'translateY(4px)',\n boxShadow: `0 0 ${ColorHelper(colorToString(color)).darken(0.25).hex()}`,\n },\n },\n bubbly: {\n background: `linear-gradient(\n 180deg,\n ${ColorHelper(colorToString(color)).lighten(0.05).hex()},\n ${ColorHelper(colorToString(color)).darken(0.3).saturate(0.05).hex()}\n )`,\n position: 'relative',\n zIndex: '0',\n\n ':before': {\n position: 'absolute',\n content: '\"\"',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n zIndex: '-1',\n borderRadius: 'inherit',\n background: `linear-gradient(\n 180deg,\n ${ColorHelper(colorToString(color)).lighten(0.2).hex()},\n ${ColorHelper(colorToString(color)).darken(0.2).saturate(0.05).hex()}\n )`,\n opacity: '0',\n transition: 'opacity 0.15s',\n },\n\n ':hover': {\n ':before': {\n opacity: '1',\n },\n },\n\n ':active': {\n ':before': {\n opacity: '0.25',\n },\n },\n } as const,\n skewed: {\n position: 'relative',\n zIndex: '0',\n\n ':before': {\n position: 'absolute',\n content: '\"\"',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n zIndex: '-1',\n background: colorToString(color),\n transform: 'skewX(-12deg)',\n borderRadius: 'inherit',\n transition: 'transform 0.2s cubic-bezier(0.25, 0, 0.25, 1.75)',\n },\n\n ':hover:before': {\n transform: 'skew(0deg)',\n },\n\n ':active:before': {\n transform: 'skew(-8deg)',\n },\n } as const,\n }[variant],\n }\n },\n ),\n ),\n useStyle(useResponsiveTextStyle(textStyle)),\n className,\n )}\n link={link}\n >\n {children == null ? 'Button Text' : children}\n </Component>\n )\n})\n\nexport default Button\n"],"mappings":"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","names":["Button","variant","shape","size","textColor","color"]}
1
+ {"version":3,"sources":["../../../../../src/components/builtin/Button/Button.tsx"],"sourcesContent":["import {\n ComponentPropsWithoutRef,\n ElementRef,\n ElementType,\n ForwardedRef,\n forwardRef,\n ReactNode,\n} from 'react'\nimport ColorHelper from 'color'\n\nimport {\n ElementIDValue,\n ResponsiveSelectValue,\n ResponsiveIconRadioGroupValue,\n TextStyleValue,\n WidthValue,\n} from '../../../prop-controllers/descriptors'\nimport { colorToString } from '../../utils/colorToString'\nimport { Link } from '../../shared/Link'\nimport { ResponsiveColor } from '../../../runtimes/react/controls'\nimport { ButtonVariant } from './contants'\nimport { useStyle } from '../../../runtimes/react/use-style'\nimport {\n useResponsiveStyle,\n useResponsiveTextStyle,\n useResponsiveWidth,\n} from '../../utils/responsive-style'\nimport { cx } from '@emotion/css'\nimport { LinkPropControllerValue } from '@makeswift/prop-controllers'\n\ntype BaseProps<T extends ElementType> = {\n as?: T\n id?: ElementIDValue\n children?: ReactNode\n link?: LinkPropControllerValue\n variant?: ResponsiveSelectValue<ButtonVariant>\n shape?: ResponsiveIconRadioGroupValue<'pill' | 'rounded' | 'square'>\n size?: ResponsiveIconRadioGroupValue<'small' | 'medium' | 'large'>\n color?: ResponsiveColor | null\n textColor?: ResponsiveColor | null\n textStyle?: TextStyleValue\n width?: WidthValue\n margin?: string\n}\n\ntype Props<T extends ElementType> = BaseProps<T> &\n Omit<ComponentPropsWithoutRef<typeof Link>, keyof BaseProps<T>>\n\nconst Button = forwardRef(function Button<T extends ElementType = 'button'>(\n {\n as,\n id,\n children,\n link,\n variant,\n shape,\n size,\n textColor,\n color,\n textStyle,\n width,\n margin,\n className,\n ...restOfProps\n }: Props<T>,\n ref: ForwardedRef<ElementRef<T>>,\n) {\n const Component = as ?? Link\n\n return (\n // @ts-ignore: `ref` prop doesn't match between `Link` and `T`.\n <Component\n {...restOfProps}\n ref={ref}\n id={id}\n className={cx(\n useStyle({\n display: 'table',\n border: 0,\n outline: 0,\n userSelect: 'none',\n cursor: 'pointer',\n fontFamily: 'inherit',\n textDecoration: 'none',\n textAlign: 'center',\n }),\n useStyle(useResponsiveWidth(width, 'auto')),\n margin,\n useStyle(\n useResponsiveStyle(\n [variant, shape, size, textColor, color] as const,\n ([\n variant = 'flat',\n shape = 'rounded',\n size = 'medium',\n textColor = { swatch: { hue: 0, saturation: 0, lightness: 100 }, alpha: 1 },\n color = { swatch: { hue: 0, saturation: 0, lightness: 0 }, alpha: 1 },\n ]) => {\n const fontSize = {\n value: { small: 12, medium: 14, large: 18 }[size],\n unit: 'px',\n }\n\n return {\n color: colorToString(textColor),\n borderRadius: `${{ square: 0, rounded: 4, pill: 500 }[shape]}px`,\n padding: `${{ small: '8px 12px', medium: '12px 16px', large: '16px 20px' }[size]}`,\n fontSize: `${fontSize.value}${fontSize.unit}`,\n ...{\n flat: {\n background: colorToString(color),\n border: 'none',\n transition: ['color', 'background', 'border', 'box-shadow']\n .map(property => `${property} 0.15s ease-in-out`)\n .join(', '),\n\n ':hover': {\n background: ColorHelper(colorToString(color)).darken(0.1).hex(),\n },\n\n ':active': {\n background: ColorHelper(colorToString(color)).darken(0.15).hex(),\n },\n },\n outline: {\n background: 'transparent',\n boxShadow: `inset 0 0 0 2px ${colorToString(color)}`,\n transition: ['color', 'background', 'box-shadow']\n .map(property => `${property} 0.15s ease-in-out`)\n .join(', '),\n\n ':hover': {\n boxShadow: `inset 0 0 0 2px ${ColorHelper(colorToString(color))\n .darken(0.1)\n .hex()}`,\n color: ColorHelper(colorToString(color)).darken(0.1).hex(),\n },\n\n ':active': {\n boxShadow: `inset 0 0 0 2px ${ColorHelper(colorToString(color))\n .darken(0.15)\n .hex()}`,\n color: ColorHelper(colorToString(color)).darken(0.15).hex(),\n },\n },\n shadow: {\n background: colorToString(color),\n boxShadow: '0 2px 4px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.2)',\n transition: ['transform', 'box-shadow']\n .map(property => `${property} 0.18s`)\n .join(', '),\n\n ':hover': {\n boxShadow:\n '0 10px 25px rgba(0, 0, 0, 0.15), 0 8px 10px -6px rgba(0, 0, 0, 0.3)',\n transform: 'translateY(-1px)',\n },\n\n ':active': {\n boxShadow:\n '0 4px 12px rgba(0, 0, 0, 0.15), 0 4px 6px -3px rgba(0, 0, 0, 0.3)',\n transform: 'translateY(0px)',\n },\n },\n clear: {\n background: 'transparent',\n border: 'none',\n\n ':hover': {\n color: ColorHelper(colorToString(textColor)).alpha(0.5).toString(),\n },\n\n ':active': {\n color: ColorHelper(colorToString(textColor)).alpha(0.6).toString(),\n },\n },\n blocky: {\n background: colorToString(color),\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: ColorHelper(colorToString(color)).darken(0.25).hex(),\n boxShadow: `0 4px ${ColorHelper(colorToString(color)).darken(0.25).hex()}`,\n transition: ['transform', 'box-shadow']\n .map(property => `${property} 0.1s`)\n .join(', '),\n\n ':hover': {\n transform: 'translateY(2px)',\n boxShadow: `0 2px ${ColorHelper(colorToString(color)).darken(0.25).hex()}`,\n },\n\n ':active': {\n transform: 'translateY(4px)',\n boxShadow: `0 0 ${ColorHelper(colorToString(color)).darken(0.25).hex()}`,\n },\n },\n bubbly: {\n background: `linear-gradient(\n 180deg,\n ${ColorHelper(colorToString(color)).lighten(0.05).hex()},\n ${ColorHelper(colorToString(color)).darken(0.3).saturate(0.05).hex()}\n )`,\n position: 'relative',\n zIndex: '0',\n\n ':before': {\n position: 'absolute',\n content: '\"\"',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n zIndex: '-1',\n borderRadius: 'inherit',\n background: `linear-gradient(\n 180deg,\n ${ColorHelper(colorToString(color)).lighten(0.2).hex()},\n ${ColorHelper(colorToString(color)).darken(0.2).saturate(0.05).hex()}\n )`,\n opacity: '0',\n transition: 'opacity 0.15s',\n },\n\n ':hover': {\n ':before': {\n opacity: '1',\n },\n },\n\n ':active': {\n ':before': {\n opacity: '0.25',\n },\n },\n } as const,\n skewed: {\n position: 'relative',\n zIndex: '0',\n\n ':before': {\n position: 'absolute',\n content: '\"\"',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n zIndex: '-1',\n background: colorToString(color),\n transform: 'skewX(-12deg)',\n borderRadius: 'inherit',\n transition: 'transform 0.2s cubic-bezier(0.25, 0, 0.25, 1.75)',\n },\n\n ':hover:before': {\n transform: 'skew(0deg)',\n },\n\n ':active:before': {\n transform: 'skew(-8deg)',\n },\n } as const,\n }[variant],\n }\n },\n ),\n ),\n useStyle(useResponsiveTextStyle(textStyle)),\n className,\n )}\n link={link}\n >\n {children == null ? 'Button Text' : children}\n </Component>\n )\n})\n\nexport default Button\n"],"mappings":"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","names":["Button","variant","shape","size","textColor","color"]}
@@ -1,3 +1,4 @@
1
+ import { Link } from "@makeswift/prop-controllers";
1
2
  import { Props } from "../../../prop-controllers";
2
3
  import { findBreakpointOverride } from "../../../state/modules/breakpoints";
3
4
  import { MakeswiftComponentType } from "../constants";
@@ -11,7 +12,7 @@ function registerComponent(runtime) {
11
12
  props: {
12
13
  id: Props.ElementID(),
13
14
  children: Props.TextInput({ placeholder: "Button text" }),
14
- link: Props.Link({
15
+ link: Link({
15
16
  defaultValue: {
16
17
  type: "OPEN_PAGE",
17
18
  payload: {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/builtin/Button/register.ts"],"sourcesContent":["import { Props, ResponsiveValue } from '../../../prop-controllers'\nimport { ReactRuntime } from '../../../runtimes/react'\nimport { findBreakpointOverride } from '../../../state/modules/breakpoints'\nimport { MakeswiftComponentType } from '../constants'\nimport { ButtonVariant } from './contants'\nimport { lazy } from 'react'\n\nexport function registerComponent(runtime: ReactRuntime) {\n return runtime.registerComponent(\n lazy(() => import('./Button')),\n {\n type: MakeswiftComponentType.Button,\n label: 'Button',\n props: {\n id: Props.ElementID(),\n children: Props.TextInput({ placeholder: 'Button text' }),\n link: Props.Link({\n defaultValue: {\n type: 'OPEN_PAGE',\n payload: {\n pageId: null,\n openInNewTab: false,\n },\n },\n }),\n variant: Props.ResponsiveSelect({\n label: 'Style',\n labelOrientation: 'horizontal',\n options: [\n { value: 'flat', label: 'Flat' },\n { value: 'outline', label: 'Outline' },\n { value: 'shadow', label: 'Floating' },\n { value: 'clear', label: 'Clear' },\n { value: 'blocky', label: 'Blocky' },\n { value: 'bubbly', label: 'Bubbly' },\n { value: 'skewed', label: 'Skewed' },\n ],\n defaultValue: 'flat',\n }),\n shape: Props.ResponsiveIconRadioGroup({\n label: 'Shape',\n options: [\n { label: 'Pill', value: 'pill', icon: 'ButtonPill16' },\n { label: 'Rounded', value: 'rounded', icon: 'ButtonRounded16' },\n { label: 'Square', value: 'square', icon: 'ButtonSquare16' },\n ],\n defaultValue: 'rounded',\n }),\n size: Props.ResponsiveIconRadioGroup({\n label: 'Size',\n options: [\n { label: 'Small', value: 'small', icon: 'SizeSmall16' },\n { label: 'Medium', value: 'medium', icon: 'SizeMedium16' },\n { label: 'Large', value: 'large', icon: 'SizeLarge16' },\n ],\n defaultValue: 'medium',\n }),\n color: Props.ResponsiveColor((props, device) => {\n const variant = props.variant as ResponsiveValue<ButtonVariant>\n const hidden =\n findBreakpointOverride<ButtonVariant>(runtime.getBreakpoints(), variant, device)\n ?.value === 'clear'\n\n return { placeholder: 'black', hidden }\n }),\n textColor: Props.ResponsiveColor({\n label: 'Text color',\n placeholder: 'white',\n }),\n textStyle: Props.TextStyle(),\n width: Props.Width(),\n margin: Props.Margin({ format: Props.Margin.Format.ClassName }),\n },\n },\n )\n}\n"],"mappings":"AAAA,SAAS,aAA8B;AAEvC,SAAS,8BAA8B;AACvC,SAAS,8BAA8B;AAEvC,SAAS,YAAY;AAEd,SAAS,kBAAkB,SAAuB;AACvD,SAAO,QAAQ;AAAA,IACb,KAAK,MAAM,OAAO,UAAU,CAAC;AAAA,IAC7B;AAAA,MACE,MAAM,uBAAuB;AAAA,MAC7B,OAAO;AAAA,MACP,OAAO;AAAA,QACL,IAAI,MAAM,UAAU;AAAA,QACpB,UAAU,MAAM,UAAU,EAAE,aAAa,cAAc,CAAC;AAAA,QACxD,MAAM,MAAM,KAAK;AAAA,UACf,cAAc;AAAA,YACZ,MAAM;AAAA,YACN,SAAS;AAAA,cACP,QAAQ;AAAA,cACR,cAAc;AAAA,YAChB;AAAA,UACF;AAAA,QACF,CAAC;AAAA,QACD,SAAS,MAAM,iBAAiB;AAAA,UAC9B,OAAO;AAAA,UACP,kBAAkB;AAAA,UAClB,SAAS;AAAA,YACP,EAAE,OAAO,QAAQ,OAAO,OAAO;AAAA,YAC/B,EAAE,OAAO,WAAW,OAAO,UAAU;AAAA,YACrC,EAAE,OAAO,UAAU,OAAO,WAAW;AAAA,YACrC,EAAE,OAAO,SAAS,OAAO,QAAQ;AAAA,YACjC,EAAE,OAAO,UAAU,OAAO,SAAS;AAAA,YACnC,EAAE,OAAO,UAAU,OAAO,SAAS;AAAA,YACnC,EAAE,OAAO,UAAU,OAAO,SAAS;AAAA,UACrC;AAAA,UACA,cAAc;AAAA,QAChB,CAAC;AAAA,QACD,OAAO,MAAM,yBAAyB;AAAA,UACpC,OAAO;AAAA,UACP,SAAS;AAAA,YACP,EAAE,OAAO,QAAQ,OAAO,QAAQ,MAAM,eAAe;AAAA,YACrD,EAAE,OAAO,WAAW,OAAO,WAAW,MAAM,kBAAkB;AAAA,YAC9D,EAAE,OAAO,UAAU,OAAO,UAAU,MAAM,iBAAiB;AAAA,UAC7D;AAAA,UACA,cAAc;AAAA,QAChB,CAAC;AAAA,QACD,MAAM,MAAM,yBAAyB;AAAA,UACnC,OAAO;AAAA,UACP,SAAS;AAAA,YACP,EAAE,OAAO,SAAS,OAAO,SAAS,MAAM,cAAc;AAAA,YACtD,EAAE,OAAO,UAAU,OAAO,UAAU,MAAM,eAAe;AAAA,YACzD,EAAE,OAAO,SAAS,OAAO,SAAS,MAAM,cAAc;AAAA,UACxD;AAAA,UACA,cAAc;AAAA,QAChB,CAAC;AAAA,QACD,OAAO,MAAM,gBAAgB,CAAC,OAAO,WAAW;AAC9C,gBAAM,UAAU,MAAM;AACtB,gBAAM,SACJ,uBAAsC,QAAQ,eAAe,GAAG,SAAS,MAAM,GAC3E,UAAU;AAEhB,iBAAO,EAAE,aAAa,SAAS,OAAO;AAAA,QACxC,CAAC;AAAA,QACD,WAAW,MAAM,gBAAgB;AAAA,UAC/B,OAAO;AAAA,UACP,aAAa;AAAA,QACf,CAAC;AAAA,QACD,WAAW,MAAM,UAAU;AAAA,QAC3B,OAAO,MAAM,MAAM;AAAA,QACnB,QAAQ,MAAM,OAAO,EAAE,QAAQ,MAAM,OAAO,OAAO,UAAU,CAAC;AAAA,MAChE;AAAA,IACF;AAAA,EACF;AACF;","names":[]}
1
+ {"version":3,"sources":["../../../../../src/components/builtin/Button/register.ts"],"sourcesContent":["import { Link } from '@makeswift/prop-controllers'\nimport { Props, ResponsiveValue } from '../../../prop-controllers'\nimport { ReactRuntime } from '../../../runtimes/react'\nimport { findBreakpointOverride } from '../../../state/modules/breakpoints'\nimport { MakeswiftComponentType } from '../constants'\nimport { ButtonVariant } from './contants'\nimport { lazy } from 'react'\n\nexport function registerComponent(runtime: ReactRuntime) {\n return runtime.registerComponent(\n lazy(() => import('./Button')),\n {\n type: MakeswiftComponentType.Button,\n label: 'Button',\n props: {\n id: Props.ElementID(),\n children: Props.TextInput({ placeholder: 'Button text' }),\n link: Link({\n defaultValue: {\n type: 'OPEN_PAGE',\n payload: {\n pageId: null,\n openInNewTab: false,\n },\n },\n }),\n variant: Props.ResponsiveSelect({\n label: 'Style',\n labelOrientation: 'horizontal',\n options: [\n { value: 'flat', label: 'Flat' },\n { value: 'outline', label: 'Outline' },\n { value: 'shadow', label: 'Floating' },\n { value: 'clear', label: 'Clear' },\n { value: 'blocky', label: 'Blocky' },\n { value: 'bubbly', label: 'Bubbly' },\n { value: 'skewed', label: 'Skewed' },\n ],\n defaultValue: 'flat',\n }),\n shape: Props.ResponsiveIconRadioGroup({\n label: 'Shape',\n options: [\n { label: 'Pill', value: 'pill', icon: 'ButtonPill16' },\n { label: 'Rounded', value: 'rounded', icon: 'ButtonRounded16' },\n { label: 'Square', value: 'square', icon: 'ButtonSquare16' },\n ],\n defaultValue: 'rounded',\n }),\n size: Props.ResponsiveIconRadioGroup({\n label: 'Size',\n options: [\n { label: 'Small', value: 'small', icon: 'SizeSmall16' },\n { label: 'Medium', value: 'medium', icon: 'SizeMedium16' },\n { label: 'Large', value: 'large', icon: 'SizeLarge16' },\n ],\n defaultValue: 'medium',\n }),\n color: Props.ResponsiveColor((props, device) => {\n const variant = props.variant as ResponsiveValue<ButtonVariant>\n const hidden =\n findBreakpointOverride<ButtonVariant>(runtime.getBreakpoints(), variant, device)\n ?.value === 'clear'\n\n return { placeholder: 'black', hidden }\n }),\n textColor: Props.ResponsiveColor({\n label: 'Text color',\n placeholder: 'white',\n }),\n textStyle: Props.TextStyle(),\n width: Props.Width(),\n margin: Props.Margin({ format: Props.Margin.Format.ClassName }),\n },\n },\n )\n}\n"],"mappings":"AAAA,SAAS,YAAY;AACrB,SAAS,aAA8B;AAEvC,SAAS,8BAA8B;AACvC,SAAS,8BAA8B;AAEvC,SAAS,YAAY;AAEd,SAAS,kBAAkB,SAAuB;AACvD,SAAO,QAAQ;AAAA,IACb,KAAK,MAAM,OAAO,UAAU,CAAC;AAAA,IAC7B;AAAA,MACE,MAAM,uBAAuB;AAAA,MAC7B,OAAO;AAAA,MACP,OAAO;AAAA,QACL,IAAI,MAAM,UAAU;AAAA,QACpB,UAAU,MAAM,UAAU,EAAE,aAAa,cAAc,CAAC;AAAA,QACxD,MAAM,KAAK;AAAA,UACT,cAAc;AAAA,YACZ,MAAM;AAAA,YACN,SAAS;AAAA,cACP,QAAQ;AAAA,cACR,cAAc;AAAA,YAChB;AAAA,UACF;AAAA,QACF,CAAC;AAAA,QACD,SAAS,MAAM,iBAAiB;AAAA,UAC9B,OAAO;AAAA,UACP,kBAAkB;AAAA,UAClB,SAAS;AAAA,YACP,EAAE,OAAO,QAAQ,OAAO,OAAO;AAAA,YAC/B,EAAE,OAAO,WAAW,OAAO,UAAU;AAAA,YACrC,EAAE,OAAO,UAAU,OAAO,WAAW;AAAA,YACrC,EAAE,OAAO,SAAS,OAAO,QAAQ;AAAA,YACjC,EAAE,OAAO,UAAU,OAAO,SAAS;AAAA,YACnC,EAAE,OAAO,UAAU,OAAO,SAAS;AAAA,YACnC,EAAE,OAAO,UAAU,OAAO,SAAS;AAAA,UACrC;AAAA,UACA,cAAc;AAAA,QAChB,CAAC;AAAA,QACD,OAAO,MAAM,yBAAyB;AAAA,UACpC,OAAO;AAAA,UACP,SAAS;AAAA,YACP,EAAE,OAAO,QAAQ,OAAO,QAAQ,MAAM,eAAe;AAAA,YACrD,EAAE,OAAO,WAAW,OAAO,WAAW,MAAM,kBAAkB;AAAA,YAC9D,EAAE,OAAO,UAAU,OAAO,UAAU,MAAM,iBAAiB;AAAA,UAC7D;AAAA,UACA,cAAc;AAAA,QAChB,CAAC;AAAA,QACD,MAAM,MAAM,yBAAyB;AAAA,UACnC,OAAO;AAAA,UACP,SAAS;AAAA,YACP,EAAE,OAAO,SAAS,OAAO,SAAS,MAAM,cAAc;AAAA,YACtD,EAAE,OAAO,UAAU,OAAO,UAAU,MAAM,eAAe;AAAA,YACzD,EAAE,OAAO,SAAS,OAAO,SAAS,MAAM,cAAc;AAAA,UACxD;AAAA,UACA,cAAc;AAAA,QAChB,CAAC;AAAA,QACD,OAAO,MAAM,gBAAgB,CAAC,OAAO,WAAW;AAC9C,gBAAM,UAAU,MAAM;AACtB,gBAAM,SACJ,uBAAsC,QAAQ,eAAe,GAAG,SAAS,MAAM,GAC3E,UAAU;AAEhB,iBAAO,EAAE,aAAa,SAAS,OAAO;AAAA,QACxC,CAAC;AAAA,QACD,WAAW,MAAM,gBAAgB;AAAA,UAC/B,OAAO;AAAA,UACP,aAAa;AAAA,QACf,CAAC;AAAA,QACD,WAAW,MAAM,UAAU;AAAA,QAC3B,OAAO,MAAM,MAAM;AAAA,QACnB,QAAQ,MAAM,OAAO,EAAE,QAAQ,MAAM,OAAO,OAAO,UAAU,CAAC;AAAA,MAChE;AAAA,IACF;AAAA,EACF;AACF;","names":[]}