@makeswift/runtime 0.19.2-canary.0 → 0.19.2-canary.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/dist/cjs/controls/style.js +8 -2
  2. package/dist/cjs/controls/style.js.map +1 -1
  3. package/dist/cjs/jest-setup.js +4 -0
  4. package/dist/cjs/jest-setup.js.map +1 -1
  5. package/dist/cjs/mocks/server.js +30 -0
  6. package/dist/cjs/mocks/server.js.map +1 -0
  7. package/dist/cjs/next/api-handler/handlers/manifest.js +1 -1
  8. package/dist/cjs/next/components/tests/controls/page-control-prop-rendering.js +91 -0
  9. package/dist/cjs/next/components/tests/controls/page-control-prop-rendering.js.map +1 -0
  10. package/dist/cjs/prop-controllers/introspection.js +3 -0
  11. package/dist/cjs/prop-controllers/introspection.js.map +1 -1
  12. package/dist/cjs/utils/tests/element-data-test-test.js +2 -2
  13. package/dist/cjs/utils/tests/element-data-test-test.js.map +1 -1
  14. package/dist/esm/controls/style.js +6 -1
  15. package/dist/esm/controls/style.js.map +1 -1
  16. package/dist/esm/jest-setup.js +4 -0
  17. package/dist/esm/jest-setup.js.map +1 -1
  18. package/dist/esm/mocks/server.js +6 -0
  19. package/dist/esm/mocks/server.js.map +1 -0
  20. package/dist/esm/next/api-handler/handlers/manifest.js +1 -1
  21. package/dist/esm/next/components/tests/controls/page-control-prop-rendering.js +70 -0
  22. package/dist/esm/next/components/tests/controls/page-control-prop-rendering.js.map +1 -0
  23. package/dist/esm/prop-controllers/introspection.js +5 -0
  24. package/dist/esm/prop-controllers/introspection.js.map +1 -1
  25. package/dist/esm/utils/tests/element-data-test-test.js +2 -2
  26. package/dist/esm/utils/tests/element-data-test-test.js.map +1 -1
  27. package/dist/types/controls/style.d.ts +1 -0
  28. package/dist/types/controls/style.d.ts.map +1 -1
  29. package/dist/types/mocks/server.d.ts +2 -0
  30. package/dist/types/mocks/server.d.ts.map +1 -0
  31. package/dist/types/next/components/tests/controls/checkbox-control.test.d.ts +1 -2
  32. package/dist/types/next/components/tests/controls/checkbox-control.test.d.ts.map +1 -1
  33. package/dist/types/next/components/tests/controls/color-control.test.d.ts +3 -0
  34. package/dist/types/next/components/tests/controls/color-control.test.d.ts.map +1 -0
  35. package/dist/types/next/components/tests/controls/page-control-prop-rendering.d.ts +12 -0
  36. package/dist/types/next/components/tests/controls/page-control-prop-rendering.d.ts.map +1 -0
  37. package/dist/types/prop-controllers/introspection.d.ts.map +1 -1
  38. package/dist/types/utils/tests/element-data-test-test.d.ts +1 -1
  39. package/dist/types/utils/tests/element-data-test-test.d.ts.map +1 -1
  40. package/package.json +3 -2
@@ -23,10 +23,12 @@ __export(style_exports, {
23
23
  StyleControlMessageType: () => StyleControlMessageType,
24
24
  StyleControlProperty: () => StyleControlProperty,
25
25
  StyleControlType: () => StyleControlType,
26
- copyStyleData: () => copyStyleData
26
+ copyStyleData: () => copyStyleData,
27
+ getStyleSwatchIds: () => getStyleSwatchIds
27
28
  });
28
29
  module.exports = __toCommonJS(style_exports);
29
30
  var import_controls = require("@makeswift/controls");
31
+ var import_prop_controllers = require("@makeswift/prop-controllers");
30
32
  var import_base = require("../prop-controllers/base");
31
33
  const StyleControlType = "makeswift::controls::style";
32
34
  const StyleControlProperty = {
@@ -76,6 +78,9 @@ class StyleControl extends import_base.PropController {
76
78
  recv() {
77
79
  }
78
80
  }
81
+ function getStyleSwatchIds(data) {
82
+ return (0, import_prop_controllers.getBorderPropControllerDataSwatchIds)(data.border);
83
+ }
79
84
  function copyStyleData(value, context) {
80
85
  if (value == null)
81
86
  return value;
@@ -114,6 +119,7 @@ function copyStyleData(value, context) {
114
119
  StyleControlMessageType,
115
120
  StyleControlProperty,
116
121
  StyleControlType,
117
- copyStyleData
122
+ copyStyleData,
123
+ getStyleSwatchIds
118
124
  });
119
125
  //# sourceMappingURL=style.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/controls/style.ts"],"sourcesContent":["import { ColorData, copyColorData, ResponsiveValue } from '@makeswift/controls'\nimport { BorderRadiusPropertyData } from '../css/border-radius'\nimport type { LengthPercentageData } from '../css/length-percentage'\nimport { MarginPropertyData } from '../css/margin'\nimport { PaddingPropertyData } from '../css/padding'\nimport { CopyContext } from '../state/react-page'\nimport { Send } from '../prop-controllers/instances'\nimport { PropController } from '../prop-controllers/base'\nimport { BoxModel } from '../state/modules/box-models'\n\n/** @see https://developer.mozilla.org/en-US/docs/Web/CSS/width */\nexport type WidthPropertyData = LengthPercentageData\n\n/**\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/border-style\n */\ntype BorderStyle = 'dotted' | 'dashed' | 'solid'\n\n/**\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/border-top#constituent_properties\n *\n * @todos\n * - Change `width` to be a `Length`\n * - Remove `null` from possible values\n * - Remove `undefined` from possible values and make fields optional\n */\nexport type BorderSideShorthandPropertyData = {\n width: number | null | undefined\n style: BorderStyle\n color?: ColorData | null\n}\n\n/**\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/border\n *\n * @todos\n * - Remove `null` from possible values\n * - Remove `undefined` from possible values and make fields optional\n */\nexport type BorderPropertyData = {\n borderTop: BorderSideShorthandPropertyData | null | undefined\n borderRight: BorderSideShorthandPropertyData | null | undefined\n borderBottom: BorderSideShorthandPropertyData | null | undefined\n borderLeft: BorderSideShorthandPropertyData | null | undefined\n}\n\n/**\n * https://developer.mozilla.org/en-US/docs/Web/CSS/font-family\n *\n * @todos\n * - Remove `null` from possible values of longhand properties\n * - Remove `undefined` from possible values and make fields optional\n */\nexport type FontFamilyPropertyData = string | null | undefined\n\n/**\n * https://developer.mozilla.org/en-US/docs/Web/CSS/letter-spacing\n *\n * @todos\n * - Remove `null` from possible values of longhand properties\n * - Remove `undefined` from possible values and make fields optional\n */\nexport type LetterSpacingPropertyData = number | null | undefined\n\n/**\n * https://developer.mozilla.org/en-US/docs/Web/CSS/font-size\n *\n * @todos\n * - Remove `null` from possible values of longhand properties\n * - Remove `undefined` from possible values and make fields optional\n */\nexport type FontSizePropertyData =\n | {\n value: number\n unit: 'px'\n }\n | null\n | undefined\n\n/**\n * https://developer.mozilla.org/en-US/docs/Web/CSS/font-weight\n *\n * @todos\n * - Remove `null` from possible values of longhand properties\n * - Remove `undefined` from possible values and make fields optional\n */\nexport type FontWeightPropertyData = number | null | undefined\n\n/**\n * https://developer.mozilla.org/en-US/docs/Web/CSS/text-transform\n *\n * @todos\n * - Match the type with specification\n */\nexport type TextTransformPropertyData = 'uppercase'[]\n\n/**\n * https://developer.mozilla.org/en-US/docs/Web/CSS/font-style\n *\n * @todos\n * - Match the type with specification\n */\nexport type FontStylePropertyData = 'italic'[]\n\n/**\n * @todos\n * - Remove `null` from possible values of longhand properties\n * - Remove `undefined` from possible values and make fields optional\n */\nexport type TextStylePropertyData = {\n fontFamily?: FontFamilyPropertyData | null | undefined\n letterSpacing: LetterSpacingPropertyData | null | undefined\n fontSize: FontSizePropertyData | null | undefined\n fontWeight: FontWeightPropertyData | null | undefined\n textTransform: TextTransformPropertyData\n fontStyle: FontStylePropertyData\n}\n\n/**\n * Primitives like `string` and `number` are excluded from the style data because the relevant\n * panels from the Makeswift builder were originally implemented only to support object values, and\n * not CSS strings. For example, 100 pixels would be `{ value: 100, unit: 'px' }` but never `100` or\n * `'100px'`.\n */\nexport type StyleControlData = {\n width?: ResponsiveValue<Exclude<WidthPropertyData, string | number>>\n margin?: ResponsiveValue<{\n [K in keyof MarginPropertyData]: Exclude<MarginPropertyData[K], string | number> | 'auto'\n }>\n padding?: ResponsiveValue<{\n [K in keyof PaddingPropertyData]: Exclude<PaddingPropertyData[K], string | number>\n }>\n border?: ResponsiveValue<BorderPropertyData>\n borderRadius?: ResponsiveValue<{\n [K in keyof BorderRadiusPropertyData]: Exclude<BorderRadiusPropertyData[K], string | number>\n }>\n textStyle?: ResponsiveValue<TextStylePropertyData>\n}\n\nexport const StyleControlType = 'makeswift::controls::style'\n\nexport const StyleControlProperty = {\n Width: 'makeswift::controls::style::property::width',\n Margin: 'makeswift::controls::style::property::margin',\n Padding: 'makeswift::controls::style::property::padding',\n Border: 'makeswift::controls::style::property::border',\n BorderRadius: 'makeswift::controls::style::property::border-radius',\n TextStyle: 'makeswift::controls::style::property::text-style',\n} as const\n\nexport type StyleControlProperty = typeof StyleControlProperty[keyof typeof StyleControlProperty]\n\ntype StyleControlParams = { properties?: StyleControlProperty[] }\n\nexport type StyleControlConfig = { properties: StyleControlProperty[] }\n\nconst StyleControlDefaultProperties: StyleControlProperty[] = [\n StyleControlProperty.Width,\n StyleControlProperty.Margin,\n]\n\nconst AllStyleControlProperties: StyleControlProperty[] = [\n StyleControlProperty.Width,\n StyleControlProperty.Margin,\n StyleControlProperty.Padding,\n StyleControlProperty.Border,\n StyleControlProperty.BorderRadius,\n StyleControlProperty.TextStyle,\n]\n\nexport type StyleControlDefinition = {\n type: typeof StyleControlType\n config: StyleControlConfig\n}\n\n/**\n * @todos\n * - Add support for custom panel labels.\n * - Add support for default values. Internally, default values must be represented with the same\n * format as the underlying data so that controls can show these values.\n */\nexport function Style(params?: StyleControlParams): StyleControlDefinition {\n return {\n type: StyleControlType,\n config: { properties: params?.properties ?? StyleControlDefaultProperties },\n }\n}\n\nStyle.Default = StyleControlDefaultProperties\nStyle.All = AllStyleControlProperties\n\nStyle.Width = StyleControlProperty.Width\nStyle.Margin = StyleControlProperty.Margin\nStyle.Padding = StyleControlProperty.Padding\nStyle.Border = StyleControlProperty.Border\nStyle.BorderRadius = StyleControlProperty.BorderRadius\nStyle.TextStyle = StyleControlProperty.TextStyle\n\nexport const StyleControlMessageType = {\n CHANGE_BOX_MODEL: 'makeswift::controls::style::message::change-box-model',\n} as const\n\ntype StyleControlItemBoxModelChangeMessage = {\n type: typeof StyleControlMessageType.CHANGE_BOX_MODEL\n payload: { boxModel: BoxModel | null }\n}\n\nexport type StyleControlMessage = StyleControlItemBoxModelChangeMessage\n\nexport class StyleControl extends PropController<StyleControlMessage> {\n constructor(send: Send<StyleControlMessage>) {\n super(send)\n }\n\n changeBoxModel(boxModel: BoxModel | null): void {\n this.send({ type: StyleControlMessageType.CHANGE_BOX_MODEL, payload: { boxModel } })\n }\n\n recv() {}\n}\n\nexport function copyStyleData(\n value: StyleControlData | undefined,\n context: CopyContext,\n): StyleControlData | undefined {\n if (value == null) return value\n\n function copyResponsiveBorder(\n responsiveBorder: ResponsiveValue<BorderPropertyData> | undefined,\n ): ResponsiveValue<BorderPropertyData> | undefined {\n if (responsiveBorder == null) return undefined\n return responsiveBorder.map(deviceBorder => ({\n ...deviceBorder,\n value: copyBorder(deviceBorder.value),\n }))\n }\n\n function copyBorder(border: BorderPropertyData): BorderPropertyData {\n function copyBorderSide(side: BorderSideShorthandPropertyData | null | undefined) {\n if (side == null) return null\n\n if (side.color == null) return side\n\n return {\n ...side,\n color: copyColorData(side.color, context),\n }\n }\n\n return {\n borderTop: copyBorderSide(border.borderTop),\n borderBottom: copyBorderSide(border.borderBottom),\n borderRight: copyBorderSide(border.borderRight),\n borderLeft: copyBorderSide(border.borderLeft),\n }\n }\n\n return { ...value, border: copyResponsiveBorder(value.border) }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAA0D;AAO1D,kBAA+B;AAoIxB,MAAM,mBAAmB;AAEzB,MAAM,uBAAuB;AAAA,EAClC,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,cAAc;AAAA,EACd,WAAW;AACb;AAQA,MAAM,gCAAwD;AAAA,EAC5D,qBAAqB;AAAA,EACrB,qBAAqB;AACvB;AAEA,MAAM,4BAAoD;AAAA,EACxD,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AACvB;AAaO,SAAS,MAAM,QAAqD;AACzE,SAAO;AAAA,IACL,MAAM;AAAA,IACN,QAAQ,EAAE,YAAY,QAAQ,cAAc,8BAA8B;AAAA,EAC5E;AACF;AAEA,MAAM,UAAU;AAChB,MAAM,MAAM;AAEZ,MAAM,QAAQ,qBAAqB;AACnC,MAAM,SAAS,qBAAqB;AACpC,MAAM,UAAU,qBAAqB;AACrC,MAAM,SAAS,qBAAqB;AACpC,MAAM,eAAe,qBAAqB;AAC1C,MAAM,YAAY,qBAAqB;AAEhC,MAAM,0BAA0B;AAAA,EACrC,kBAAkB;AACpB;AASO,MAAM,qBAAqB,2BAAoC;AAAA,EACpE,YAAY,MAAiC;AAC3C,UAAM,IAAI;AAAA,EACZ;AAAA,EAEA,eAAe,UAAiC;AAC9C,SAAK,KAAK,EAAE,MAAM,wBAAwB,kBAAkB,SAAS,EAAE,SAAS,EAAE,CAAC;AAAA,EACrF;AAAA,EAEA,OAAO;AAAA,EAAC;AACV;AAEO,SAAS,cACd,OACA,SAC8B;AAC9B,MAAI,SAAS;AAAM,WAAO;AAE1B,WAAS,qBACP,kBACiD;AACjD,QAAI,oBAAoB;AAAM,aAAO;AACrC,WAAO,iBAAiB,IAAI,mBAAiB;AAAA,MAC3C,GAAG;AAAA,MACH,OAAO,WAAW,aAAa,KAAK;AAAA,IACtC,EAAE;AAAA,EACJ;AAEA,WAAS,WAAW,QAAgD;AAClE,aAAS,eAAe,MAA0D;AAChF,UAAI,QAAQ;AAAM,eAAO;AAEzB,UAAI,KAAK,SAAS;AAAM,eAAO;AAE/B,aAAO;AAAA,QACL,GAAG;AAAA,QACH,WAAO,+BAAc,KAAK,OAAO,OAAO;AAAA,MAC1C;AAAA,IACF;AAEA,WAAO;AAAA,MACL,WAAW,eAAe,OAAO,SAAS;AAAA,MAC1C,cAAc,eAAe,OAAO,YAAY;AAAA,MAChD,aAAa,eAAe,OAAO,WAAW;AAAA,MAC9C,YAAY,eAAe,OAAO,UAAU;AAAA,IAC9C;AAAA,EACF;AAEA,SAAO,EAAE,GAAG,OAAO,QAAQ,qBAAqB,MAAM,MAAM,EAAE;AAChE;","names":[]}
1
+ {"version":3,"sources":["../../../src/controls/style.ts"],"sourcesContent":["import { ColorData, copyColorData, ResponsiveValue } from '@makeswift/controls'\nimport { getBorderPropControllerDataSwatchIds } from '@makeswift/prop-controllers'\n\nimport { BorderRadiusPropertyData } from '../css/border-radius'\nimport type { LengthPercentageData } from '../css/length-percentage'\nimport { MarginPropertyData } from '../css/margin'\nimport { PaddingPropertyData } from '../css/padding'\nimport { CopyContext } from '../state/react-page'\nimport { Send } from '../prop-controllers/instances'\nimport { PropController } from '../prop-controllers/base'\nimport { BoxModel } from '../state/modules/box-models'\n\n/** @see https://developer.mozilla.org/en-US/docs/Web/CSS/width */\nexport type WidthPropertyData = LengthPercentageData\n\n/**\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/border-style\n */\ntype BorderStyle = 'dotted' | 'dashed' | 'solid'\n\n/**\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/border-top#constituent_properties\n *\n * @todos\n * - Change `width` to be a `Length`\n * - Remove `null` from possible values\n * - Remove `undefined` from possible values and make fields optional\n */\nexport type BorderSideShorthandPropertyData = {\n width: number | null | undefined\n style: BorderStyle\n color?: ColorData | null\n}\n\n/**\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/border\n *\n * @todos\n * - Remove `null` from possible values\n * - Remove `undefined` from possible values and make fields optional\n */\nexport type BorderPropertyData = {\n borderTop: BorderSideShorthandPropertyData | null | undefined\n borderRight: BorderSideShorthandPropertyData | null | undefined\n borderBottom: BorderSideShorthandPropertyData | null | undefined\n borderLeft: BorderSideShorthandPropertyData | null | undefined\n}\n\n/**\n * https://developer.mozilla.org/en-US/docs/Web/CSS/font-family\n *\n * @todos\n * - Remove `null` from possible values of longhand properties\n * - Remove `undefined` from possible values and make fields optional\n */\nexport type FontFamilyPropertyData = string | null | undefined\n\n/**\n * https://developer.mozilla.org/en-US/docs/Web/CSS/letter-spacing\n *\n * @todos\n * - Remove `null` from possible values of longhand properties\n * - Remove `undefined` from possible values and make fields optional\n */\nexport type LetterSpacingPropertyData = number | null | undefined\n\n/**\n * https://developer.mozilla.org/en-US/docs/Web/CSS/font-size\n *\n * @todos\n * - Remove `null` from possible values of longhand properties\n * - Remove `undefined` from possible values and make fields optional\n */\nexport type FontSizePropertyData =\n | {\n value: number\n unit: 'px'\n }\n | null\n | undefined\n\n/**\n * https://developer.mozilla.org/en-US/docs/Web/CSS/font-weight\n *\n * @todos\n * - Remove `null` from possible values of longhand properties\n * - Remove `undefined` from possible values and make fields optional\n */\nexport type FontWeightPropertyData = number | null | undefined\n\n/**\n * https://developer.mozilla.org/en-US/docs/Web/CSS/text-transform\n *\n * @todos\n * - Match the type with specification\n */\nexport type TextTransformPropertyData = 'uppercase'[]\n\n/**\n * https://developer.mozilla.org/en-US/docs/Web/CSS/font-style\n *\n * @todos\n * - Match the type with specification\n */\nexport type FontStylePropertyData = 'italic'[]\n\n/**\n * @todos\n * - Remove `null` from possible values of longhand properties\n * - Remove `undefined` from possible values and make fields optional\n */\nexport type TextStylePropertyData = {\n fontFamily?: FontFamilyPropertyData | null | undefined\n letterSpacing: LetterSpacingPropertyData | null | undefined\n fontSize: FontSizePropertyData | null | undefined\n fontWeight: FontWeightPropertyData | null | undefined\n textTransform: TextTransformPropertyData\n fontStyle: FontStylePropertyData\n}\n\n/**\n * Primitives like `string` and `number` are excluded from the style data because the relevant\n * panels from the Makeswift builder were originally implemented only to support object values, and\n * not CSS strings. For example, 100 pixels would be `{ value: 100, unit: 'px' }` but never `100` or\n * `'100px'`.\n */\nexport type StyleControlData = {\n width?: ResponsiveValue<Exclude<WidthPropertyData, string | number>>\n margin?: ResponsiveValue<{\n [K in keyof MarginPropertyData]: Exclude<MarginPropertyData[K], string | number> | 'auto'\n }>\n padding?: ResponsiveValue<{\n [K in keyof PaddingPropertyData]: Exclude<PaddingPropertyData[K], string | number>\n }>\n border?: ResponsiveValue<BorderPropertyData>\n borderRadius?: ResponsiveValue<{\n [K in keyof BorderRadiusPropertyData]: Exclude<BorderRadiusPropertyData[K], string | number>\n }>\n textStyle?: ResponsiveValue<TextStylePropertyData>\n}\n\nexport const StyleControlType = 'makeswift::controls::style'\n\nexport const StyleControlProperty = {\n Width: 'makeswift::controls::style::property::width',\n Margin: 'makeswift::controls::style::property::margin',\n Padding: 'makeswift::controls::style::property::padding',\n Border: 'makeswift::controls::style::property::border',\n BorderRadius: 'makeswift::controls::style::property::border-radius',\n TextStyle: 'makeswift::controls::style::property::text-style',\n} as const\n\nexport type StyleControlProperty = typeof StyleControlProperty[keyof typeof StyleControlProperty]\n\ntype StyleControlParams = { properties?: StyleControlProperty[] }\n\nexport type StyleControlConfig = { properties: StyleControlProperty[] }\n\nconst StyleControlDefaultProperties: StyleControlProperty[] = [\n StyleControlProperty.Width,\n StyleControlProperty.Margin,\n]\n\nconst AllStyleControlProperties: StyleControlProperty[] = [\n StyleControlProperty.Width,\n StyleControlProperty.Margin,\n StyleControlProperty.Padding,\n StyleControlProperty.Border,\n StyleControlProperty.BorderRadius,\n StyleControlProperty.TextStyle,\n]\n\nexport type StyleControlDefinition = {\n type: typeof StyleControlType\n config: StyleControlConfig\n}\n\n/**\n * @todos\n * - Add support for custom panel labels.\n * - Add support for default values. Internally, default values must be represented with the same\n * format as the underlying data so that controls can show these values.\n */\nexport function Style(params?: StyleControlParams): StyleControlDefinition {\n return {\n type: StyleControlType,\n config: { properties: params?.properties ?? StyleControlDefaultProperties },\n }\n}\n\nStyle.Default = StyleControlDefaultProperties\nStyle.All = AllStyleControlProperties\n\nStyle.Width = StyleControlProperty.Width\nStyle.Margin = StyleControlProperty.Margin\nStyle.Padding = StyleControlProperty.Padding\nStyle.Border = StyleControlProperty.Border\nStyle.BorderRadius = StyleControlProperty.BorderRadius\nStyle.TextStyle = StyleControlProperty.TextStyle\n\nexport const StyleControlMessageType = {\n CHANGE_BOX_MODEL: 'makeswift::controls::style::message::change-box-model',\n} as const\n\ntype StyleControlItemBoxModelChangeMessage = {\n type: typeof StyleControlMessageType.CHANGE_BOX_MODEL\n payload: { boxModel: BoxModel | null }\n}\n\nexport type StyleControlMessage = StyleControlItemBoxModelChangeMessage\n\nexport class StyleControl extends PropController<StyleControlMessage> {\n constructor(send: Send<StyleControlMessage>) {\n super(send)\n }\n\n changeBoxModel(boxModel: BoxModel | null): void {\n this.send({ type: StyleControlMessageType.CHANGE_BOX_MODEL, payload: { boxModel } })\n }\n\n recv() {}\n}\n\nexport function getStyleSwatchIds(data: StyleControlData): string[] {\n return getBorderPropControllerDataSwatchIds(data.border)\n}\n\nexport function copyStyleData(\n value: StyleControlData | undefined,\n context: CopyContext,\n): StyleControlData | undefined {\n if (value == null) return value\n\n function copyResponsiveBorder(\n responsiveBorder: ResponsiveValue<BorderPropertyData> | undefined,\n ): ResponsiveValue<BorderPropertyData> | undefined {\n if (responsiveBorder == null) return undefined\n return responsiveBorder.map(deviceBorder => ({\n ...deviceBorder,\n value: copyBorder(deviceBorder.value),\n }))\n }\n\n function copyBorder(border: BorderPropertyData): BorderPropertyData {\n function copyBorderSide(side: BorderSideShorthandPropertyData | null | undefined) {\n if (side == null) return null\n\n if (side.color == null) return side\n\n return {\n ...side,\n color: copyColorData(side.color, context),\n }\n }\n\n return {\n borderTop: copyBorderSide(border.borderTop),\n borderBottom: copyBorderSide(border.borderBottom),\n borderRight: copyBorderSide(border.borderRight),\n borderLeft: copyBorderSide(border.borderLeft),\n }\n }\n\n return { ...value, border: copyResponsiveBorder(value.border) }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAA0D;AAC1D,8BAAqD;AAQrD,kBAA+B;AAoIxB,MAAM,mBAAmB;AAEzB,MAAM,uBAAuB;AAAA,EAClC,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,cAAc;AAAA,EACd,WAAW;AACb;AAQA,MAAM,gCAAwD;AAAA,EAC5D,qBAAqB;AAAA,EACrB,qBAAqB;AACvB;AAEA,MAAM,4BAAoD;AAAA,EACxD,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AACvB;AAaO,SAAS,MAAM,QAAqD;AACzE,SAAO;AAAA,IACL,MAAM;AAAA,IACN,QAAQ,EAAE,YAAY,QAAQ,cAAc,8BAA8B;AAAA,EAC5E;AACF;AAEA,MAAM,UAAU;AAChB,MAAM,MAAM;AAEZ,MAAM,QAAQ,qBAAqB;AACnC,MAAM,SAAS,qBAAqB;AACpC,MAAM,UAAU,qBAAqB;AACrC,MAAM,SAAS,qBAAqB;AACpC,MAAM,eAAe,qBAAqB;AAC1C,MAAM,YAAY,qBAAqB;AAEhC,MAAM,0BAA0B;AAAA,EACrC,kBAAkB;AACpB;AASO,MAAM,qBAAqB,2BAAoC;AAAA,EACpE,YAAY,MAAiC;AAC3C,UAAM,IAAI;AAAA,EACZ;AAAA,EAEA,eAAe,UAAiC;AAC9C,SAAK,KAAK,EAAE,MAAM,wBAAwB,kBAAkB,SAAS,EAAE,SAAS,EAAE,CAAC;AAAA,EACrF;AAAA,EAEA,OAAO;AAAA,EAAC;AACV;AAEO,SAAS,kBAAkB,MAAkC;AAClE,aAAO,8DAAqC,KAAK,MAAM;AACzD;AAEO,SAAS,cACd,OACA,SAC8B;AAC9B,MAAI,SAAS;AAAM,WAAO;AAE1B,WAAS,qBACP,kBACiD;AACjD,QAAI,oBAAoB;AAAM,aAAO;AACrC,WAAO,iBAAiB,IAAI,mBAAiB;AAAA,MAC3C,GAAG;AAAA,MACH,OAAO,WAAW,aAAa,KAAK;AAAA,IACtC,EAAE;AAAA,EACJ;AAEA,WAAS,WAAW,QAAgD;AAClE,aAAS,eAAe,MAA0D;AAChF,UAAI,QAAQ;AAAM,eAAO;AAEzB,UAAI,KAAK,SAAS;AAAM,eAAO;AAE/B,aAAO;AAAA,QACL,GAAG;AAAA,QACH,WAAO,+BAAc,KAAK,OAAO,OAAO;AAAA,MAC1C;AAAA,IACF;AAEA,WAAO;AAAA,MACL,WAAW,eAAe,OAAO,SAAS;AAAA,MAC1C,cAAc,eAAe,OAAO,YAAY;AAAA,MAChD,aAAa,eAAe,OAAO,WAAW;AAAA,MAC9C,YAAY,eAAe,OAAO,UAAU;AAAA,IAC9C;AAAA,EACF;AAEA,SAAO,EAAE,GAAG,OAAO,QAAQ,qBAAqB,MAAM,MAAM,EAAE;AAChE;","names":[]}
@@ -1,6 +1,10 @@
1
1
  "use strict";
2
2
  var import_jest_dom = require("@testing-library/jest-dom");
3
3
  var import_jest = require("@emotion/jest");
4
+ var import_server = require("./mocks/server");
5
+ beforeAll(() => import_server.server.listen());
6
+ afterEach(() => import_server.server.resetHandlers());
7
+ afterAll(() => import_server.server.close());
4
8
  expect.extend(import_jest.matchers);
5
9
  if (typeof window !== "undefined") {
6
10
  Object.defineProperty(window, "matchMedia", {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/jest-setup.ts"],"sourcesContent":["import '@testing-library/jest-dom'\nimport { matchers } from '@emotion/jest'\n\nexpect.extend(matchers)\n\nif (typeof window !== 'undefined') {\n Object.defineProperty(window, 'matchMedia', {\n writable: true,\n value: jest.fn().mockImplementation(query => ({\n matches: false,\n media: query,\n onchange: null,\n addListener: jest.fn(), // deprecated\n removeListener: jest.fn(), // deprecated\n addEventListener: jest.fn(),\n removeEventListener: jest.fn(),\n dispatchEvent: jest.fn(),\n })),\n })\n\n Object.defineProperty(window, 'IntersectionObserver', {\n writable: true,\n value: jest.fn().mockImplementation(() => ({\n observe: jest.fn(),\n unobserve: jest.fn(),\n disconnect: jest.fn(),\n })),\n })\n}\n"],"mappings":";AAAA,sBAAO;AACP,kBAAyB;AAEzB,OAAO,OAAO,oBAAQ;AAEtB,IAAI,OAAO,WAAW,aAAa;AACjC,SAAO,eAAe,QAAQ,cAAc;AAAA,IAC1C,UAAU;AAAA,IACV,OAAO,KAAK,GAAG,EAAE,mBAAmB,YAAU;AAAA,MAC5C,SAAS;AAAA,MACT,OAAO;AAAA,MACP,UAAU;AAAA,MACV,aAAa,KAAK,GAAG;AAAA;AAAA,MACrB,gBAAgB,KAAK,GAAG;AAAA;AAAA,MACxB,kBAAkB,KAAK,GAAG;AAAA,MAC1B,qBAAqB,KAAK,GAAG;AAAA,MAC7B,eAAe,KAAK,GAAG;AAAA,IACzB,EAAE;AAAA,EACJ,CAAC;AAED,SAAO,eAAe,QAAQ,wBAAwB;AAAA,IACpD,UAAU;AAAA,IACV,OAAO,KAAK,GAAG,EAAE,mBAAmB,OAAO;AAAA,MACzC,SAAS,KAAK,GAAG;AAAA,MACjB,WAAW,KAAK,GAAG;AAAA,MACnB,YAAY,KAAK,GAAG;AAAA,IACtB,EAAE;AAAA,EACJ,CAAC;AACH;","names":[]}
1
+ {"version":3,"sources":["../../src/jest-setup.ts"],"sourcesContent":["import '@testing-library/jest-dom'\nimport { matchers } from '@emotion/jest'\nimport { server } from './mocks/server'\n\nbeforeAll(() => server.listen())\nafterEach(() => server.resetHandlers())\nafterAll(() => server.close())\n\nexpect.extend(matchers)\n\nif (typeof window !== 'undefined') {\n Object.defineProperty(window, 'matchMedia', {\n writable: true,\n value: jest.fn().mockImplementation(query => ({\n matches: false,\n media: query,\n onchange: null,\n addListener: jest.fn(), // deprecated\n removeListener: jest.fn(), // deprecated\n addEventListener: jest.fn(),\n removeEventListener: jest.fn(),\n dispatchEvent: jest.fn(),\n })),\n })\n\n Object.defineProperty(window, 'IntersectionObserver', {\n writable: true,\n value: jest.fn().mockImplementation(() => ({\n observe: jest.fn(),\n unobserve: jest.fn(),\n disconnect: jest.fn(),\n })),\n })\n}\n"],"mappings":";AAAA,sBAAO;AACP,kBAAyB;AACzB,oBAAuB;AAEvB,UAAU,MAAM,qBAAO,OAAO,CAAC;AAC/B,UAAU,MAAM,qBAAO,cAAc,CAAC;AACtC,SAAS,MAAM,qBAAO,MAAM,CAAC;AAE7B,OAAO,OAAO,oBAAQ;AAEtB,IAAI,OAAO,WAAW,aAAa;AACjC,SAAO,eAAe,QAAQ,cAAc;AAAA,IAC1C,UAAU;AAAA,IACV,OAAO,KAAK,GAAG,EAAE,mBAAmB,YAAU;AAAA,MAC5C,SAAS;AAAA,MACT,OAAO;AAAA,MACP,UAAU;AAAA,MACV,aAAa,KAAK,GAAG;AAAA;AAAA,MACrB,gBAAgB,KAAK,GAAG;AAAA;AAAA,MACxB,kBAAkB,KAAK,GAAG;AAAA,MAC1B,qBAAqB,KAAK,GAAG;AAAA,MAC7B,eAAe,KAAK,GAAG;AAAA,IACzB,EAAE;AAAA,EACJ,CAAC;AAED,SAAO,eAAe,QAAQ,wBAAwB;AAAA,IACpD,UAAU;AAAA,IACV,OAAO,KAAK,GAAG,EAAE,mBAAmB,OAAO;AAAA,MACzC,SAAS,KAAK,GAAG;AAAA,MACjB,WAAW,KAAK,GAAG;AAAA,MACnB,YAAY,KAAK,GAAG;AAAA,IACtB,EAAE;AAAA,EACJ,CAAC;AACH;","names":[]}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var server_exports = {};
20
+ __export(server_exports, {
21
+ server: () => server
22
+ });
23
+ module.exports = __toCommonJS(server_exports);
24
+ var import_node = require("msw/node");
25
+ const server = (0, import_node.setupServer)();
26
+ // Annotate the CommonJS export names for ESM import in node:
27
+ 0 && (module.exports = {
28
+ server
29
+ });
30
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/mocks/server.ts"],"sourcesContent":["import { setupServer } from 'msw/node'\n\nexport const server = setupServer()\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAA4B;AAErB,MAAM,aAAS,yBAAY;","names":[]}
@@ -36,7 +36,7 @@ async function handler(...args) {
36
36
  const supportsPreviewMode = (0, import_ts_pattern.match)(args).with(routeHandlerPattern, () => false).with(apiRoutePattern, () => true).exhaustive();
37
37
  const supportsDraftMode = (0, import_ts_pattern.match)(args).with(routeHandlerPattern, () => true).with(apiRoutePattern, () => false).exhaustive();
38
38
  const body = {
39
- version: "0.19.2-canary.0",
39
+ version: "0.19.2-canary.1",
40
40
  previewMode: supportsPreviewMode,
41
41
  draftMode: supportsDraftMode,
42
42
  interactionMode: true,
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var page_control_prop_rendering_exports = {};
20
+ __export(page_control_prop_rendering_exports, {
21
+ testPageControlPropRendering: () => testPageControlPropRendering
22
+ });
23
+ module.exports = __toCommonJS(page_control_prop_rendering_exports);
24
+ var import_jsx_runtime = require("react/jsx-runtime");
25
+ var import_react = require("react");
26
+ var import_test_utils = require("react-dom/test-utils");
27
+ var import_react2 = require("@testing-library/react");
28
+ var import_jest_dom = require("@testing-library/jest-dom");
29
+ var import_page = require("../../page");
30
+ var import_react_runtime = require("../../../context/react-runtime");
31
+ var import_react3 = require("../../../../react");
32
+ var import_element_data_test_test = require("../../../../utils/tests/element-data-test-test");
33
+ const ROOT_ID = "00000000-0000-0000-0000-000000000000";
34
+ const ELEMENT_ID = "11111111-1111-1111-1111-111111111111";
35
+ async function testPageControlPropRendering(controlDefinition, {
36
+ toData,
37
+ value,
38
+ cacheData,
39
+ expectedRenders
40
+ }) {
41
+ const controlData = toData(value);
42
+ const TestComponentType = "TestComponent";
43
+ const testId = "test-id";
44
+ const renderCountTestId = "render-count-test-id";
45
+ const elementData = (0, import_element_data_test_test.createRootComponent)(
46
+ [
47
+ {
48
+ key: ELEMENT_ID,
49
+ type: TestComponentType,
50
+ props: {
51
+ propKey: controlData
52
+ }
53
+ }
54
+ ],
55
+ ROOT_ID
56
+ );
57
+ const snapshot = (0, import_element_data_test_test.createMakeswiftPageSnapshot)(elementData, {}, cacheData);
58
+ const runtime = new import_react3.ReactRuntime();
59
+ runtime.registerComponent(
60
+ (0, import_react.forwardRef)(({ propKey }, ref) => {
61
+ const renderCount = (0, import_react.useRef)(0);
62
+ ++renderCount.current;
63
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { ref, children: [
64
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { "data-testid": renderCountTestId, children: renderCount.current }),
65
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { "data-testid": testId, children: JSON.stringify(propKey) })
66
+ ] });
67
+ }),
68
+ {
69
+ type: TestComponentType,
70
+ label: "TestComponent",
71
+ props: {
72
+ propKey: controlDefinition
73
+ }
74
+ }
75
+ );
76
+ await (0, import_test_utils.act)(
77
+ async () => (0, import_react2.render)(
78
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react_runtime.ReactRuntimeProvider, { runtime, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_page.Page, { snapshot }) })
79
+ )
80
+ );
81
+ expect(snapshot).toMatchSnapshot("snapshot");
82
+ expect(JSON.parse(import_react2.screen.getByTestId(testId).textContent ?? "")).toMatchSnapshot("resolvedValue");
83
+ if (expectedRenders != null) {
84
+ expect(Number(import_react2.screen.getByTestId(renderCountTestId).textContent)).toBe(expectedRenders);
85
+ }
86
+ }
87
+ // Annotate the CommonJS export names for ESM import in node:
88
+ 0 && (module.exports = {
89
+ testPageControlPropRendering
90
+ });
91
+ //# sourceMappingURL=page-control-prop-rendering.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../src/next/components/tests/controls/page-control-prop-rendering.tsx"],"sourcesContent":["/** @jest-environment jsdom */\n\nimport { forwardRef, useRef } from 'react'\nimport { act } from 'react-dom/test-utils'\nimport { render, screen } from '@testing-library/react'\nimport '@testing-library/jest-dom'\n\nimport { Data } from '@makeswift/controls'\n\nimport { ElementData } from '../../../../state/react-page'\nimport { Page } from '../../page'\nimport { ReactRuntimeProvider } from '../../../context/react-runtime'\nimport { ReactRuntime } from '../../../../react'\n\nimport {\n createMakeswiftPageSnapshot,\n createRootComponent,\n} from '../../../../utils/tests/element-data-test-test'\n\nimport { type MakeswiftPageSnapshot } from '../../../../next'\nimport { ControlDefinition, ControlDefinitionData } from '../../../../controls'\n\nconst ROOT_ID = '00000000-0000-0000-0000-000000000000'\nconst ELEMENT_ID = '11111111-1111-1111-1111-111111111111'\n\nexport async function testPageControlPropRendering<T extends ControlDefinition>(\n controlDefinition: T,\n {\n toData,\n value,\n cacheData,\n expectedRenders,\n }: {\n toData: (value: Data) => ControlDefinitionData<T>\n value: Data\n cacheData?: MakeswiftPageSnapshot['cacheData']\n expectedRenders?: number\n },\n) {\n // Arrange\n const controlData = toData(value)\n const TestComponentType = 'TestComponent'\n const testId = 'test-id'\n const renderCountTestId = 'render-count-test-id'\n const elementData: ElementData = createRootComponent(\n [\n {\n key: ELEMENT_ID,\n type: TestComponentType,\n props: {\n propKey: controlData,\n },\n },\n ],\n ROOT_ID,\n )\n const snapshot = createMakeswiftPageSnapshot(elementData, {}, cacheData)\n const runtime = new ReactRuntime()\n\n // Act\n runtime.registerComponent(\n forwardRef<HTMLDivElement, { propKey?: any }>(({ propKey }, ref) => {\n const renderCount = useRef(0)\n ++renderCount.current\n return (\n <div ref={ref}>\n <div data-testid={renderCountTestId}>{renderCount.current}</div>\n <div data-testid={testId}>{JSON.stringify(propKey)}</div>\n </div>\n )\n }),\n {\n type: TestComponentType,\n label: 'TestComponent',\n props: {\n propKey: controlDefinition,\n },\n },\n )\n\n // Assert\n await act(async () =>\n render(\n <ReactRuntimeProvider runtime={runtime}>\n <Page snapshot={snapshot} />\n </ReactRuntimeProvider>,\n ),\n )\n\n expect(snapshot).toMatchSnapshot('snapshot')\n expect(JSON.parse(screen.getByTestId(testId).textContent ?? '')).toMatchSnapshot('resolvedValue')\n\n if (expectedRenders != null) {\n expect(Number(screen.getByTestId(renderCountTestId).textContent)).toBe(expectedRenders)\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAiEQ;AA/DR,mBAAmC;AACnC,wBAAoB;AACpB,IAAAA,gBAA+B;AAC/B,sBAAO;AAKP,kBAAqB;AACrB,2BAAqC;AACrC,IAAAA,gBAA6B;AAE7B,oCAGO;AAKP,MAAM,UAAU;AAChB,MAAM,aAAa;AAEnB,eAAsB,6BACpB,mBACA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAMA;AAEA,QAAM,cAAc,OAAO,KAAK;AAChC,QAAM,oBAAoB;AAC1B,QAAM,SAAS;AACf,QAAM,oBAAoB;AAC1B,QAAM,kBAA2B;AAAA,IAC/B;AAAA,MACE;AAAA,QACE,KAAK;AAAA,QACL,MAAM;AAAA,QACN,OAAO;AAAA,UACL,SAAS;AAAA,QACX;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,EACF;AACA,QAAM,eAAW,2DAA4B,aAAa,CAAC,GAAG,SAAS;AACvE,QAAM,UAAU,IAAI,2BAAa;AAGjC,UAAQ;AAAA,QACN,yBAA8C,CAAC,EAAE,QAAQ,GAAG,QAAQ;AAClE,YAAM,kBAAc,qBAAO,CAAC;AAC5B,QAAE,YAAY;AACd,aACE,6CAAC,SAAI,KACH;AAAA,oDAAC,SAAI,eAAa,mBAAoB,sBAAY,SAAQ;AAAA,QAC1D,4CAAC,SAAI,eAAa,QAAS,eAAK,UAAU,OAAO,GAAE;AAAA,SACrD;AAAA,IAEJ,CAAC;AAAA,IACD;AAAA,MACE,MAAM;AAAA,MACN,OAAO;AAAA,MACP,OAAO;AAAA,QACL,SAAS;AAAA,MACX;AAAA,IACF;AAAA,EACF;AAGA,YAAM;AAAA,IAAI,gBACR;AAAA,MACE,4CAAC,6CAAqB,SACpB,sDAAC,oBAAK,UAAoB,GAC5B;AAAA,IACF;AAAA,EACF;AAEA,SAAO,QAAQ,EAAE,gBAAgB,UAAU;AAC3C,SAAO,KAAK,MAAM,qBAAO,YAAY,MAAM,EAAE,eAAe,EAAE,CAAC,EAAE,gBAAgB,eAAe;AAEhG,MAAI,mBAAmB,MAAM;AAC3B,WAAO,OAAO,qBAAO,YAAY,iBAAiB,EAAE,WAAW,CAAC,EAAE,KAAK,eAAe;AAAA,EACxF;AACF;","names":["import_react"]}
@@ -92,6 +92,9 @@ function getSwatchIds(descriptor, prop) {
92
92
  case import_controls.TypographyControlType: {
93
93
  return (0, import_controls.getTypographySwatchIds)(prop);
94
94
  }
95
+ case import_controls.StyleControlType: {
96
+ return (0, import_controls.getStyleSwatchIds)(prop);
97
+ }
95
98
  case import_controls.StyleV2ControlType: {
96
99
  const value = prop;
97
100
  return value?.flatMap((value2) => getSwatchIds(descriptor.config.type, value2.value)) ?? [];
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/prop-controllers/introspection.ts"],"sourcesContent":["import { Descriptor } from './descriptors'\nimport { Data, Element } from '../state/react-page'\nimport {\n ColorControlData,\n ColorControlType,\n getListElementChildren,\n getListFileIds,\n getListPageIds,\n getListSwatchIds,\n getListTypographyIds,\n getShapeElementChildren,\n getShapeFileIds,\n getShapePageIds,\n getShapeSwatchIds,\n getShapeTypographyIds,\n getTypographySwatchIds,\n getTypographyTypographyIds,\n ImageControlData,\n ImageControlType,\n LinkControlData,\n LinkControlType,\n ListControlData,\n ListControlType,\n RichTextControlData,\n RichTextControlType,\n RichTextValue,\n ShapeControlData,\n ShapeControlType,\n SlotControlData,\n SlotControlType,\n StyleV2ControlData,\n StyleV2ControlType,\n TypographyControlData,\n TypographyControlType,\n} from '../controls'\nimport {\n getRichTextPageIds,\n getRichTextSwatchIds,\n getRichTextTypographyIds,\n} from '../controls/rich-text/introspection'\nimport {\n getRichTextV2PageIds,\n getRichTextV2SwatchIds,\n getRichTextV2TypographyIds,\n} from '../controls/rich-text-v2/introspection'\nimport {\n RichTextV2ControlType,\n RichTextV2ControlData,\n isRichTextV1Data,\n} from '../controls/rich-text-v2/rich-text-v2'\nimport { match, P } from 'ts-pattern'\nimport {\n getLinkPropControllerPageIds,\n getResponsiveColorPropControllerDataSawtchIds,\n getShadowsPropControllerDataSwatchIds,\n LinkPropControllerData,\n Types as PropControllerTypes,\n ResponsiveColorData,\n ShadowsPropControllerData,\n getBorderPropControllerDataSwatchIds,\n TablePropControllerData,\n getTablePropControllerDataTableIds,\n getNavigationLinksPropControllerPageIds,\n NavigationLinksPropControllerData,\n getNavigationLinksPropControllerSwatchIds,\n BorderPropControllerData,\n getElementIDPropControllerDataElementID,\n ElementIDPropControllerData,\n getGridPropControllerElementChildren,\n GridPropControllerData,\n getImagePropControllerFileIds,\n ImagePropControllerData,\n getImagesPropControllerFileIds,\n ImagesPropControllerData,\n getBackgroundsPropControllerFileIds,\n getBackgroundsPropControllerSwatchIds,\n BackgroundsPropControllerData,\n} from '@makeswift/prop-controllers'\nimport { DELETED_PROP_CONTROLLER_TYPES } from './deleted'\n\nexport function getElementChildren<T extends Data>(\n descriptor: Descriptor<T>,\n prop: T | undefined,\n): Element[] {\n if (prop == null) return []\n\n switch (descriptor.type) {\n case PropControllerTypes.Grid:\n return getGridPropControllerElementChildren(prop as GridPropControllerData | undefined)\n\n case SlotControlType:\n return (prop as SlotControlData).elements\n\n case ListControlType:\n return (prop as ListControlData).flatMap(({ value }) =>\n getElementChildren(descriptor.config.type, value),\n )\n\n case ShapeControlType: {\n return getShapeElementChildren(descriptor, prop as ShapeControlData)\n }\n\n case ListControlType: {\n return getListElementChildren(descriptor, prop as ListControlData)\n }\n\n default:\n return []\n }\n}\n\nexport function getElementId<T extends Data>(\n descriptor: Descriptor<T>,\n prop: T | undefined,\n): string | null {\n if (prop == null) return null\n\n switch (descriptor.type) {\n case PropControllerTypes.ElementID:\n return getElementIDPropControllerDataElementID(prop as ElementIDPropControllerData) ?? null\n\n default:\n return null\n }\n}\n\nexport function getSwatchIds<T extends Data>(\n descriptor: Descriptor<T>,\n prop: T | undefined,\n): string[] {\n if (prop == null) return []\n switch (descriptor.type) {\n case PropControllerTypes.Backgrounds:\n return getBackgroundsPropControllerSwatchIds(prop as BackgroundsPropControllerData)\n\n case PropControllerTypes.Border:\n return getBorderPropControllerDataSwatchIds(prop as BorderPropControllerData)\n\n case PropControllerTypes.NavigationLinks: {\n return getNavigationLinksPropControllerSwatchIds(prop as NavigationLinksPropControllerData)\n }\n\n case PropControllerTypes.ResponsiveColor:\n return getResponsiveColorPropControllerDataSawtchIds(prop as ResponsiveColorData)\n\n case PropControllerTypes.Shadows:\n return getShadowsPropControllerDataSwatchIds(prop as ShadowsPropControllerData)\n\n case RichTextControlType:\n case DELETED_PROP_CONTROLLER_TYPES.RichText: {\n return getRichTextSwatchIds(prop as RichTextValue)\n }\n\n case ColorControlType: {\n const value = prop as ColorControlData\n return value?.swatchId == null ? [] : [value.swatchId]\n }\n\n case TypographyControlType: {\n return getTypographySwatchIds(prop as TypographyControlData[number])\n }\n\n case StyleV2ControlType: {\n const value = prop as StyleV2ControlData\n\n return value?.flatMap(value => getSwatchIds(descriptor.config.type, value.value)) ?? []\n }\n\n case RichTextV2ControlType: {\n const data = prop as RichTextV2ControlData | RichTextControlData\n\n if (isRichTextV1Data(data)) return getRichTextSwatchIds(data)\n\n return getRichTextV2SwatchIds(descriptor, data)\n }\n\n case ShapeControlType: {\n return getShapeSwatchIds(descriptor, prop as ShapeControlData)\n }\n\n case ListControlType: {\n return getListSwatchIds(descriptor, prop as ListControlData)\n }\n\n default:\n return []\n }\n}\n\nexport function getFileIds<T extends Data>(\n descriptor: Descriptor<T>,\n prop: T | undefined,\n): string[] {\n if (prop == null) return []\n\n switch (descriptor.type) {\n case PropControllerTypes.Backgrounds:\n return getBackgroundsPropControllerFileIds(prop as BackgroundsPropControllerData)\n\n case PropControllerTypes.Image: {\n return getImagePropControllerFileIds(prop as ImagePropControllerData)\n }\n\n case PropControllerTypes.Images: {\n return getImagesPropControllerFileIds(prop as ImagesPropControllerData)\n }\n\n case ImageControlType: {\n const value = prop as ImageControlData\n return match(value)\n .with(P.string, f => [f])\n .with({ type: 'makeswift-file' }, f => [f.id])\n .with({ type: 'external-file' }, () => [])\n .otherwise(() => [])\n }\n\n case ShapeControlType: {\n return getShapeFileIds(descriptor, prop as ShapeControlData)\n }\n\n case ListControlType: {\n return getListFileIds(descriptor, prop as ListControlData)\n }\n\n default:\n return []\n }\n}\n\nexport function getTypographyIds<T extends Data>(\n descriptor: Descriptor<T>,\n prop: T | undefined,\n): string[] {\n if (prop == null) return []\n\n switch (descriptor.type) {\n case TypographyControlType: {\n return getTypographyTypographyIds(prop as TypographyControlData[number])\n }\n case RichTextControlType:\n case DELETED_PROP_CONTROLLER_TYPES.RichText: {\n return getRichTextTypographyIds(prop as RichTextControlData)\n }\n\n case RichTextV2ControlType: {\n const data = prop as RichTextV2ControlData | RichTextControlData\n\n if (isRichTextV1Data(data)) return getRichTextTypographyIds(data)\n\n return getRichTextV2TypographyIds(descriptor, data)\n }\n\n case ShapeControlType: {\n return getShapeTypographyIds(descriptor, prop as ShapeControlData)\n }\n\n case ListControlType: {\n return getListTypographyIds(descriptor, prop as ListControlData)\n }\n\n default:\n return []\n }\n}\n\nexport function getTableIds<T extends Data>(\n descriptor: Descriptor<T>,\n prop: T | undefined,\n): string[] {\n if (prop == null) return []\n\n switch (descriptor.type) {\n case PropControllerTypes.Table: {\n return getTablePropControllerDataTableIds(prop as TablePropControllerData)\n }\n\n default:\n return []\n }\n}\n\nexport function getPageIds<T extends Data>(\n descriptor: Descriptor<T>,\n prop: T | undefined,\n): string[] {\n if (prop == null) return []\n\n switch (descriptor.type) {\n case PropControllerTypes.Link: {\n return getLinkPropControllerPageIds(prop as LinkPropControllerData)\n }\n\n case LinkControlType: {\n const value = prop as LinkControlData\n\n if (value == null) return []\n\n switch (value.type) {\n case 'OPEN_PAGE':\n return value.payload.pageId == null ? [] : [value.payload.pageId]\n\n default:\n return []\n }\n }\n\n case PropControllerTypes.NavigationLinks: {\n return getNavigationLinksPropControllerPageIds(prop as NavigationLinksPropControllerData)\n }\n\n case RichTextControlType:\n case DELETED_PROP_CONTROLLER_TYPES.RichText: {\n return getRichTextPageIds(prop as RichTextControlData)\n }\n\n case RichTextV2ControlType: {\n const data = prop as RichTextV2ControlData | RichTextControlData\n\n if (isRichTextV1Data(data)) return getRichTextPageIds(data)\n\n return getRichTextV2PageIds(descriptor, data)\n }\n\n case ShapeControlType: {\n return getShapePageIds(descriptor, prop as ShapeControlData)\n }\n\n case ListControlType: {\n return getListPageIds(descriptor, prop as ListControlData)\n }\n\n default:\n return []\n }\n}\n"],"mappings":"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","names":["import_introspection","PropControllerTypes","value"]}
1
+ {"version":3,"sources":["../../../src/prop-controllers/introspection.ts"],"sourcesContent":["import { Descriptor } from './descriptors'\nimport { Data, Element } from '../state/react-page'\nimport {\n ColorControlData,\n ColorControlType,\n getListElementChildren,\n getListFileIds,\n getListPageIds,\n getListSwatchIds,\n getListTypographyIds,\n getShapeElementChildren,\n getShapeFileIds,\n getShapePageIds,\n getShapeSwatchIds,\n getShapeTypographyIds,\n getStyleSwatchIds,\n getTypographySwatchIds,\n getTypographyTypographyIds,\n ImageControlData,\n ImageControlType,\n LinkControlData,\n LinkControlType,\n ListControlData,\n ListControlType,\n RichTextControlData,\n RichTextControlType,\n RichTextValue,\n ShapeControlData,\n ShapeControlType,\n SlotControlData,\n SlotControlType,\n StyleControlData,\n StyleControlType,\n StyleV2ControlData,\n StyleV2ControlType,\n TypographyControlData,\n TypographyControlType,\n} from '../controls'\nimport {\n getRichTextPageIds,\n getRichTextSwatchIds,\n getRichTextTypographyIds,\n} from '../controls/rich-text/introspection'\nimport {\n getRichTextV2PageIds,\n getRichTextV2SwatchIds,\n getRichTextV2TypographyIds,\n} from '../controls/rich-text-v2/introspection'\nimport {\n RichTextV2ControlType,\n RichTextV2ControlData,\n isRichTextV1Data,\n} from '../controls/rich-text-v2/rich-text-v2'\nimport { match, P } from 'ts-pattern'\nimport {\n getLinkPropControllerPageIds,\n getResponsiveColorPropControllerDataSawtchIds,\n getShadowsPropControllerDataSwatchIds,\n LinkPropControllerData,\n Types as PropControllerTypes,\n ResponsiveColorData,\n ShadowsPropControllerData,\n getBorderPropControllerDataSwatchIds,\n TablePropControllerData,\n getTablePropControllerDataTableIds,\n getNavigationLinksPropControllerPageIds,\n NavigationLinksPropControllerData,\n getNavigationLinksPropControllerSwatchIds,\n BorderPropControllerData,\n getElementIDPropControllerDataElementID,\n ElementIDPropControllerData,\n getGridPropControllerElementChildren,\n GridPropControllerData,\n getImagePropControllerFileIds,\n ImagePropControllerData,\n getImagesPropControllerFileIds,\n ImagesPropControllerData,\n getBackgroundsPropControllerFileIds,\n getBackgroundsPropControllerSwatchIds,\n BackgroundsPropControllerData,\n} from '@makeswift/prop-controllers'\nimport { DELETED_PROP_CONTROLLER_TYPES } from './deleted'\n\nexport function getElementChildren<T extends Data>(\n descriptor: Descriptor<T>,\n prop: T | undefined,\n): Element[] {\n if (prop == null) return []\n\n switch (descriptor.type) {\n case PropControllerTypes.Grid:\n return getGridPropControllerElementChildren(prop as GridPropControllerData | undefined)\n\n case SlotControlType:\n return (prop as SlotControlData).elements\n\n case ListControlType:\n return (prop as ListControlData).flatMap(({ value }) =>\n getElementChildren(descriptor.config.type, value),\n )\n\n case ShapeControlType: {\n return getShapeElementChildren(descriptor, prop as ShapeControlData)\n }\n\n case ListControlType: {\n return getListElementChildren(descriptor, prop as ListControlData)\n }\n\n default:\n return []\n }\n}\n\nexport function getElementId<T extends Data>(\n descriptor: Descriptor<T>,\n prop: T | undefined,\n): string | null {\n if (prop == null) return null\n\n switch (descriptor.type) {\n case PropControllerTypes.ElementID:\n return getElementIDPropControllerDataElementID(prop as ElementIDPropControllerData) ?? null\n\n default:\n return null\n }\n}\n\nexport function getSwatchIds<T extends Data>(\n descriptor: Descriptor<T>,\n prop: T | undefined,\n): string[] {\n if (prop == null) return []\n switch (descriptor.type) {\n case PropControllerTypes.Backgrounds:\n return getBackgroundsPropControllerSwatchIds(prop as BackgroundsPropControllerData)\n\n case PropControllerTypes.Border:\n return getBorderPropControllerDataSwatchIds(prop as BorderPropControllerData)\n\n case PropControllerTypes.NavigationLinks: {\n return getNavigationLinksPropControllerSwatchIds(prop as NavigationLinksPropControllerData)\n }\n\n case PropControllerTypes.ResponsiveColor:\n return getResponsiveColorPropControllerDataSawtchIds(prop as ResponsiveColorData)\n\n case PropControllerTypes.Shadows:\n return getShadowsPropControllerDataSwatchIds(prop as ShadowsPropControllerData)\n\n case RichTextControlType:\n case DELETED_PROP_CONTROLLER_TYPES.RichText: {\n return getRichTextSwatchIds(prop as RichTextValue)\n }\n\n case ColorControlType: {\n const value = prop as ColorControlData\n return value?.swatchId == null ? [] : [value.swatchId]\n }\n\n case TypographyControlType: {\n return getTypographySwatchIds(prop as TypographyControlData[number])\n }\n\n case StyleControlType: {\n return getStyleSwatchIds(prop as StyleControlData)\n }\n\n case StyleV2ControlType: {\n const value = prop as StyleV2ControlData\n\n return value?.flatMap(value => getSwatchIds(descriptor.config.type, value.value)) ?? []\n }\n\n case RichTextV2ControlType: {\n const data = prop as RichTextV2ControlData | RichTextControlData\n\n if (isRichTextV1Data(data)) return getRichTextSwatchIds(data)\n\n return getRichTextV2SwatchIds(descriptor, data)\n }\n\n case ShapeControlType: {\n return getShapeSwatchIds(descriptor, prop as ShapeControlData)\n }\n\n case ListControlType: {\n return getListSwatchIds(descriptor, prop as ListControlData)\n }\n\n default:\n return []\n }\n}\n\nexport function getFileIds<T extends Data>(\n descriptor: Descriptor<T>,\n prop: T | undefined,\n): string[] {\n if (prop == null) return []\n\n switch (descriptor.type) {\n case PropControllerTypes.Backgrounds:\n return getBackgroundsPropControllerFileIds(prop as BackgroundsPropControllerData)\n\n case PropControllerTypes.Image: {\n return getImagePropControllerFileIds(prop as ImagePropControllerData)\n }\n\n case PropControllerTypes.Images: {\n return getImagesPropControllerFileIds(prop as ImagesPropControllerData)\n }\n\n case ImageControlType: {\n const value = prop as ImageControlData\n return match(value)\n .with(P.string, f => [f])\n .with({ type: 'makeswift-file' }, f => [f.id])\n .with({ type: 'external-file' }, () => [])\n .otherwise(() => [])\n }\n\n case ShapeControlType: {\n return getShapeFileIds(descriptor, prop as ShapeControlData)\n }\n\n case ListControlType: {\n return getListFileIds(descriptor, prop as ListControlData)\n }\n\n default:\n return []\n }\n}\n\nexport function getTypographyIds<T extends Data>(\n descriptor: Descriptor<T>,\n prop: T | undefined,\n): string[] {\n if (prop == null) return []\n\n switch (descriptor.type) {\n case TypographyControlType: {\n return getTypographyTypographyIds(prop as TypographyControlData[number])\n }\n case RichTextControlType:\n case DELETED_PROP_CONTROLLER_TYPES.RichText: {\n return getRichTextTypographyIds(prop as RichTextControlData)\n }\n\n case RichTextV2ControlType: {\n const data = prop as RichTextV2ControlData | RichTextControlData\n\n if (isRichTextV1Data(data)) return getRichTextTypographyIds(data)\n\n return getRichTextV2TypographyIds(descriptor, data)\n }\n\n case ShapeControlType: {\n return getShapeTypographyIds(descriptor, prop as ShapeControlData)\n }\n\n case ListControlType: {\n return getListTypographyIds(descriptor, prop as ListControlData)\n }\n\n default:\n return []\n }\n}\n\nexport function getTableIds<T extends Data>(\n descriptor: Descriptor<T>,\n prop: T | undefined,\n): string[] {\n if (prop == null) return []\n\n switch (descriptor.type) {\n case PropControllerTypes.Table: {\n return getTablePropControllerDataTableIds(prop as TablePropControllerData)\n }\n\n default:\n return []\n }\n}\n\nexport function getPageIds<T extends Data>(\n descriptor: Descriptor<T>,\n prop: T | undefined,\n): string[] {\n if (prop == null) return []\n\n switch (descriptor.type) {\n case PropControllerTypes.Link: {\n return getLinkPropControllerPageIds(prop as LinkPropControllerData)\n }\n\n case LinkControlType: {\n const value = prop as LinkControlData\n\n if (value == null) return []\n\n switch (value.type) {\n case 'OPEN_PAGE':\n return value.payload.pageId == null ? [] : [value.payload.pageId]\n\n default:\n return []\n }\n }\n\n case PropControllerTypes.NavigationLinks: {\n return getNavigationLinksPropControllerPageIds(prop as NavigationLinksPropControllerData)\n }\n\n case RichTextControlType:\n case DELETED_PROP_CONTROLLER_TYPES.RichText: {\n return getRichTextPageIds(prop as RichTextControlData)\n }\n\n case RichTextV2ControlType: {\n const data = prop as RichTextV2ControlData | RichTextControlData\n\n if (isRichTextV1Data(data)) return getRichTextPageIds(data)\n\n return getRichTextV2PageIds(descriptor, data)\n }\n\n case ShapeControlType: {\n return getShapePageIds(descriptor, prop as ShapeControlData)\n }\n\n case ListControlType: {\n return getListPageIds(descriptor, prop as ListControlData)\n }\n\n default:\n return []\n }\n}\n"],"mappings":"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","names":["import_introspection","PropControllerTypes","value"]}
@@ -44,7 +44,7 @@ function createRootComponent(elements, rootId) {
44
44
  }
45
45
  };
46
46
  }
47
- function createMakeswiftPageSnapshot(elementData, partialSnapshot = {}) {
47
+ function createMakeswiftPageSnapshot(elementData, partialSnapshot = {}, cacheData = {}) {
48
48
  return {
49
49
  document: {
50
50
  id: "test-page-id",
@@ -59,7 +59,7 @@ function createMakeswiftPageSnapshot(elementData, partialSnapshot = {}) {
59
59
  ...partialSnapshot.document
60
60
  },
61
61
  apiOrigin: "https://test-api-origin.com",
62
- cacheData: {},
62
+ cacheData,
63
63
  preview: false,
64
64
  localizedResourcesMap: {},
65
65
  locale: null,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/utils/tests/element-data-test-test.ts"],"sourcesContent":["import { randomUUID } from 'crypto'\nimport { MakeswiftPageSnapshot } from '../../next'\nimport { ElementData } from '../../state/react-page'\nimport { MakeswiftComponentType } from '../../components'\n\nexport function createRootComponent(elements: ElementData[], rootId?: string) {\n return {\n key: rootId ?? randomUUID(),\n type: MakeswiftComponentType.Root,\n props: {\n children: {\n columns: [\n {\n deviceId: 'desktop',\n value: {\n count: 12,\n spans: elements?.map(() => [12]),\n },\n },\n ],\n elements,\n },\n },\n }\n}\n\nexport function createMakeswiftPageSnapshot(\n elementData: ElementData,\n partialSnapshot: Partial<MakeswiftPageSnapshot> = {},\n): MakeswiftPageSnapshot {\n return {\n document: {\n id: 'test-page-id',\n site: { id: 'test-site-id' },\n data: elementData,\n snippets: [],\n fonts: [],\n meta: {},\n seo: {},\n localizedPages: [],\n locale: null,\n ...partialSnapshot.document,\n },\n apiOrigin: 'https://test-api-origin.com',\n cacheData: {},\n preview: false,\n localizedResourcesMap: {},\n locale: null,\n ...partialSnapshot,\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAA2B;AAG3B,wBAAuC;AAEhC,SAAS,oBAAoB,UAAyB,QAAiB;AAC5E,SAAO;AAAA,IACL,KAAK,cAAU,0BAAW;AAAA,IAC1B,MAAM,yCAAuB;AAAA,IAC7B,OAAO;AAAA,MACL,UAAU;AAAA,QACR,SAAS;AAAA,UACP;AAAA,YACE,UAAU;AAAA,YACV,OAAO;AAAA,cACL,OAAO;AAAA,cACP,OAAO,UAAU,IAAI,MAAM,CAAC,EAAE,CAAC;AAAA,YACjC;AAAA,UACF;AAAA,QACF;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEO,SAAS,4BACd,aACA,kBAAkD,CAAC,GAC5B;AACvB,SAAO;AAAA,IACL,UAAU;AAAA,MACR,IAAI;AAAA,MACJ,MAAM,EAAE,IAAI,eAAe;AAAA,MAC3B,MAAM;AAAA,MACN,UAAU,CAAC;AAAA,MACX,OAAO,CAAC;AAAA,MACR,MAAM,CAAC;AAAA,MACP,KAAK,CAAC;AAAA,MACN,gBAAgB,CAAC;AAAA,MACjB,QAAQ;AAAA,MACR,GAAG,gBAAgB;AAAA,IACrB;AAAA,IACA,WAAW;AAAA,IACX,WAAW,CAAC;AAAA,IACZ,SAAS;AAAA,IACT,uBAAuB,CAAC;AAAA,IACxB,QAAQ;AAAA,IACR,GAAG;AAAA,EACL;AACF;","names":[]}
1
+ {"version":3,"sources":["../../../../src/utils/tests/element-data-test-test.ts"],"sourcesContent":["import { randomUUID } from 'crypto'\nimport { MakeswiftPageSnapshot } from '../../next'\nimport { ElementData } from '../../state/react-page'\nimport { MakeswiftComponentType } from '../../components'\n\nexport function createRootComponent(elements: ElementData[], rootId?: string) {\n return {\n key: rootId ?? randomUUID(),\n type: MakeswiftComponentType.Root,\n props: {\n children: {\n columns: [\n {\n deviceId: 'desktop',\n value: {\n count: 12,\n spans: elements?.map(() => [12]),\n },\n },\n ],\n elements,\n },\n },\n }\n}\n\nexport function createMakeswiftPageSnapshot(\n elementData: ElementData,\n partialSnapshot: Partial<MakeswiftPageSnapshot> = {},\n cacheData: MakeswiftPageSnapshot['cacheData'] = {},\n): MakeswiftPageSnapshot {\n return {\n document: {\n id: 'test-page-id',\n site: { id: 'test-site-id' },\n data: elementData,\n snippets: [],\n fonts: [],\n meta: {},\n seo: {},\n localizedPages: [],\n locale: null,\n ...partialSnapshot.document,\n },\n apiOrigin: 'https://test-api-origin.com',\n cacheData,\n preview: false,\n localizedResourcesMap: {},\n locale: null,\n ...partialSnapshot,\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAA2B;AAG3B,wBAAuC;AAEhC,SAAS,oBAAoB,UAAyB,QAAiB;AAC5E,SAAO;AAAA,IACL,KAAK,cAAU,0BAAW;AAAA,IAC1B,MAAM,yCAAuB;AAAA,IAC7B,OAAO;AAAA,MACL,UAAU;AAAA,QACR,SAAS;AAAA,UACP;AAAA,YACE,UAAU;AAAA,YACV,OAAO;AAAA,cACL,OAAO;AAAA,cACP,OAAO,UAAU,IAAI,MAAM,CAAC,EAAE,CAAC;AAAA,YACjC;AAAA,UACF;AAAA,QACF;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEO,SAAS,4BACd,aACA,kBAAkD,CAAC,GACnD,YAAgD,CAAC,GAC1B;AACvB,SAAO;AAAA,IACL,UAAU;AAAA,MACR,IAAI;AAAA,MACJ,MAAM,EAAE,IAAI,eAAe;AAAA,MAC3B,MAAM;AAAA,MACN,UAAU,CAAC;AAAA,MACX,OAAO,CAAC;AAAA,MACR,MAAM,CAAC;AAAA,MACP,KAAK,CAAC;AAAA,MACN,gBAAgB,CAAC;AAAA,MACjB,QAAQ;AAAA,MACR,GAAG,gBAAgB;AAAA,IACrB;AAAA,IACA,WAAW;AAAA,IACX;AAAA,IACA,SAAS;AAAA,IACT,uBAAuB,CAAC;AAAA,IACxB,QAAQ;AAAA,IACR,GAAG;AAAA,EACL;AACF;","names":[]}
@@ -1,4 +1,5 @@
1
1
  import { copyColorData } from "@makeswift/controls";
2
+ import { getBorderPropControllerDataSwatchIds } from "@makeswift/prop-controllers";
2
3
  import { PropController } from "../prop-controllers/base";
3
4
  const StyleControlType = "makeswift::controls::style";
4
5
  const StyleControlProperty = {
@@ -48,6 +49,9 @@ class StyleControl extends PropController {
48
49
  recv() {
49
50
  }
50
51
  }
52
+ function getStyleSwatchIds(data) {
53
+ return getBorderPropControllerDataSwatchIds(data.border);
54
+ }
51
55
  function copyStyleData(value, context) {
52
56
  if (value == null)
53
57
  return value;
@@ -85,6 +89,7 @@ export {
85
89
  StyleControlMessageType,
86
90
  StyleControlProperty,
87
91
  StyleControlType,
88
- copyStyleData
92
+ copyStyleData,
93
+ getStyleSwatchIds
89
94
  };
90
95
  //# sourceMappingURL=style.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/controls/style.ts"],"sourcesContent":["import { ColorData, copyColorData, ResponsiveValue } from '@makeswift/controls'\nimport { BorderRadiusPropertyData } from '../css/border-radius'\nimport type { LengthPercentageData } from '../css/length-percentage'\nimport { MarginPropertyData } from '../css/margin'\nimport { PaddingPropertyData } from '../css/padding'\nimport { CopyContext } from '../state/react-page'\nimport { Send } from '../prop-controllers/instances'\nimport { PropController } from '../prop-controllers/base'\nimport { BoxModel } from '../state/modules/box-models'\n\n/** @see https://developer.mozilla.org/en-US/docs/Web/CSS/width */\nexport type WidthPropertyData = LengthPercentageData\n\n/**\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/border-style\n */\ntype BorderStyle = 'dotted' | 'dashed' | 'solid'\n\n/**\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/border-top#constituent_properties\n *\n * @todos\n * - Change `width` to be a `Length`\n * - Remove `null` from possible values\n * - Remove `undefined` from possible values and make fields optional\n */\nexport type BorderSideShorthandPropertyData = {\n width: number | null | undefined\n style: BorderStyle\n color?: ColorData | null\n}\n\n/**\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/border\n *\n * @todos\n * - Remove `null` from possible values\n * - Remove `undefined` from possible values and make fields optional\n */\nexport type BorderPropertyData = {\n borderTop: BorderSideShorthandPropertyData | null | undefined\n borderRight: BorderSideShorthandPropertyData | null | undefined\n borderBottom: BorderSideShorthandPropertyData | null | undefined\n borderLeft: BorderSideShorthandPropertyData | null | undefined\n}\n\n/**\n * https://developer.mozilla.org/en-US/docs/Web/CSS/font-family\n *\n * @todos\n * - Remove `null` from possible values of longhand properties\n * - Remove `undefined` from possible values and make fields optional\n */\nexport type FontFamilyPropertyData = string | null | undefined\n\n/**\n * https://developer.mozilla.org/en-US/docs/Web/CSS/letter-spacing\n *\n * @todos\n * - Remove `null` from possible values of longhand properties\n * - Remove `undefined` from possible values and make fields optional\n */\nexport type LetterSpacingPropertyData = number | null | undefined\n\n/**\n * https://developer.mozilla.org/en-US/docs/Web/CSS/font-size\n *\n * @todos\n * - Remove `null` from possible values of longhand properties\n * - Remove `undefined` from possible values and make fields optional\n */\nexport type FontSizePropertyData =\n | {\n value: number\n unit: 'px'\n }\n | null\n | undefined\n\n/**\n * https://developer.mozilla.org/en-US/docs/Web/CSS/font-weight\n *\n * @todos\n * - Remove `null` from possible values of longhand properties\n * - Remove `undefined` from possible values and make fields optional\n */\nexport type FontWeightPropertyData = number | null | undefined\n\n/**\n * https://developer.mozilla.org/en-US/docs/Web/CSS/text-transform\n *\n * @todos\n * - Match the type with specification\n */\nexport type TextTransformPropertyData = 'uppercase'[]\n\n/**\n * https://developer.mozilla.org/en-US/docs/Web/CSS/font-style\n *\n * @todos\n * - Match the type with specification\n */\nexport type FontStylePropertyData = 'italic'[]\n\n/**\n * @todos\n * - Remove `null` from possible values of longhand properties\n * - Remove `undefined` from possible values and make fields optional\n */\nexport type TextStylePropertyData = {\n fontFamily?: FontFamilyPropertyData | null | undefined\n letterSpacing: LetterSpacingPropertyData | null | undefined\n fontSize: FontSizePropertyData | null | undefined\n fontWeight: FontWeightPropertyData | null | undefined\n textTransform: TextTransformPropertyData\n fontStyle: FontStylePropertyData\n}\n\n/**\n * Primitives like `string` and `number` are excluded from the style data because the relevant\n * panels from the Makeswift builder were originally implemented only to support object values, and\n * not CSS strings. For example, 100 pixels would be `{ value: 100, unit: 'px' }` but never `100` or\n * `'100px'`.\n */\nexport type StyleControlData = {\n width?: ResponsiveValue<Exclude<WidthPropertyData, string | number>>\n margin?: ResponsiveValue<{\n [K in keyof MarginPropertyData]: Exclude<MarginPropertyData[K], string | number> | 'auto'\n }>\n padding?: ResponsiveValue<{\n [K in keyof PaddingPropertyData]: Exclude<PaddingPropertyData[K], string | number>\n }>\n border?: ResponsiveValue<BorderPropertyData>\n borderRadius?: ResponsiveValue<{\n [K in keyof BorderRadiusPropertyData]: Exclude<BorderRadiusPropertyData[K], string | number>\n }>\n textStyle?: ResponsiveValue<TextStylePropertyData>\n}\n\nexport const StyleControlType = 'makeswift::controls::style'\n\nexport const StyleControlProperty = {\n Width: 'makeswift::controls::style::property::width',\n Margin: 'makeswift::controls::style::property::margin',\n Padding: 'makeswift::controls::style::property::padding',\n Border: 'makeswift::controls::style::property::border',\n BorderRadius: 'makeswift::controls::style::property::border-radius',\n TextStyle: 'makeswift::controls::style::property::text-style',\n} as const\n\nexport type StyleControlProperty = typeof StyleControlProperty[keyof typeof StyleControlProperty]\n\ntype StyleControlParams = { properties?: StyleControlProperty[] }\n\nexport type StyleControlConfig = { properties: StyleControlProperty[] }\n\nconst StyleControlDefaultProperties: StyleControlProperty[] = [\n StyleControlProperty.Width,\n StyleControlProperty.Margin,\n]\n\nconst AllStyleControlProperties: StyleControlProperty[] = [\n StyleControlProperty.Width,\n StyleControlProperty.Margin,\n StyleControlProperty.Padding,\n StyleControlProperty.Border,\n StyleControlProperty.BorderRadius,\n StyleControlProperty.TextStyle,\n]\n\nexport type StyleControlDefinition = {\n type: typeof StyleControlType\n config: StyleControlConfig\n}\n\n/**\n * @todos\n * - Add support for custom panel labels.\n * - Add support for default values. Internally, default values must be represented with the same\n * format as the underlying data so that controls can show these values.\n */\nexport function Style(params?: StyleControlParams): StyleControlDefinition {\n return {\n type: StyleControlType,\n config: { properties: params?.properties ?? StyleControlDefaultProperties },\n }\n}\n\nStyle.Default = StyleControlDefaultProperties\nStyle.All = AllStyleControlProperties\n\nStyle.Width = StyleControlProperty.Width\nStyle.Margin = StyleControlProperty.Margin\nStyle.Padding = StyleControlProperty.Padding\nStyle.Border = StyleControlProperty.Border\nStyle.BorderRadius = StyleControlProperty.BorderRadius\nStyle.TextStyle = StyleControlProperty.TextStyle\n\nexport const StyleControlMessageType = {\n CHANGE_BOX_MODEL: 'makeswift::controls::style::message::change-box-model',\n} as const\n\ntype StyleControlItemBoxModelChangeMessage = {\n type: typeof StyleControlMessageType.CHANGE_BOX_MODEL\n payload: { boxModel: BoxModel | null }\n}\n\nexport type StyleControlMessage = StyleControlItemBoxModelChangeMessage\n\nexport class StyleControl extends PropController<StyleControlMessage> {\n constructor(send: Send<StyleControlMessage>) {\n super(send)\n }\n\n changeBoxModel(boxModel: BoxModel | null): void {\n this.send({ type: StyleControlMessageType.CHANGE_BOX_MODEL, payload: { boxModel } })\n }\n\n recv() {}\n}\n\nexport function copyStyleData(\n value: StyleControlData | undefined,\n context: CopyContext,\n): StyleControlData | undefined {\n if (value == null) return value\n\n function copyResponsiveBorder(\n responsiveBorder: ResponsiveValue<BorderPropertyData> | undefined,\n ): ResponsiveValue<BorderPropertyData> | undefined {\n if (responsiveBorder == null) return undefined\n return responsiveBorder.map(deviceBorder => ({\n ...deviceBorder,\n value: copyBorder(deviceBorder.value),\n }))\n }\n\n function copyBorder(border: BorderPropertyData): BorderPropertyData {\n function copyBorderSide(side: BorderSideShorthandPropertyData | null | undefined) {\n if (side == null) return null\n\n if (side.color == null) return side\n\n return {\n ...side,\n color: copyColorData(side.color, context),\n }\n }\n\n return {\n borderTop: copyBorderSide(border.borderTop),\n borderBottom: copyBorderSide(border.borderBottom),\n borderRight: copyBorderSide(border.borderRight),\n borderLeft: copyBorderSide(border.borderLeft),\n }\n }\n\n return { ...value, border: copyResponsiveBorder(value.border) }\n}\n"],"mappings":"AAAA,SAAoB,qBAAsC;AAO1D,SAAS,sBAAsB;AAoIxB,MAAM,mBAAmB;AAEzB,MAAM,uBAAuB;AAAA,EAClC,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,cAAc;AAAA,EACd,WAAW;AACb;AAQA,MAAM,gCAAwD;AAAA,EAC5D,qBAAqB;AAAA,EACrB,qBAAqB;AACvB;AAEA,MAAM,4BAAoD;AAAA,EACxD,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AACvB;AAaO,SAAS,MAAM,QAAqD;AACzE,SAAO;AAAA,IACL,MAAM;AAAA,IACN,QAAQ,EAAE,YAAY,QAAQ,cAAc,8BAA8B;AAAA,EAC5E;AACF;AAEA,MAAM,UAAU;AAChB,MAAM,MAAM;AAEZ,MAAM,QAAQ,qBAAqB;AACnC,MAAM,SAAS,qBAAqB;AACpC,MAAM,UAAU,qBAAqB;AACrC,MAAM,SAAS,qBAAqB;AACpC,MAAM,eAAe,qBAAqB;AAC1C,MAAM,YAAY,qBAAqB;AAEhC,MAAM,0BAA0B;AAAA,EACrC,kBAAkB;AACpB;AASO,MAAM,qBAAqB,eAAoC;AAAA,EACpE,YAAY,MAAiC;AAC3C,UAAM,IAAI;AAAA,EACZ;AAAA,EAEA,eAAe,UAAiC;AAC9C,SAAK,KAAK,EAAE,MAAM,wBAAwB,kBAAkB,SAAS,EAAE,SAAS,EAAE,CAAC;AAAA,EACrF;AAAA,EAEA,OAAO;AAAA,EAAC;AACV;AAEO,SAAS,cACd,OACA,SAC8B;AAC9B,MAAI,SAAS;AAAM,WAAO;AAE1B,WAAS,qBACP,kBACiD;AACjD,QAAI,oBAAoB;AAAM,aAAO;AACrC,WAAO,iBAAiB,IAAI,mBAAiB;AAAA,MAC3C,GAAG;AAAA,MACH,OAAO,WAAW,aAAa,KAAK;AAAA,IACtC,EAAE;AAAA,EACJ;AAEA,WAAS,WAAW,QAAgD;AAClE,aAAS,eAAe,MAA0D;AAChF,UAAI,QAAQ;AAAM,eAAO;AAEzB,UAAI,KAAK,SAAS;AAAM,eAAO;AAE/B,aAAO;AAAA,QACL,GAAG;AAAA,QACH,OAAO,cAAc,KAAK,OAAO,OAAO;AAAA,MAC1C;AAAA,IACF;AAEA,WAAO;AAAA,MACL,WAAW,eAAe,OAAO,SAAS;AAAA,MAC1C,cAAc,eAAe,OAAO,YAAY;AAAA,MAChD,aAAa,eAAe,OAAO,WAAW;AAAA,MAC9C,YAAY,eAAe,OAAO,UAAU;AAAA,IAC9C;AAAA,EACF;AAEA,SAAO,EAAE,GAAG,OAAO,QAAQ,qBAAqB,MAAM,MAAM,EAAE;AAChE;","names":[]}
1
+ {"version":3,"sources":["../../../src/controls/style.ts"],"sourcesContent":["import { ColorData, copyColorData, ResponsiveValue } from '@makeswift/controls'\nimport { getBorderPropControllerDataSwatchIds } from '@makeswift/prop-controllers'\n\nimport { BorderRadiusPropertyData } from '../css/border-radius'\nimport type { LengthPercentageData } from '../css/length-percentage'\nimport { MarginPropertyData } from '../css/margin'\nimport { PaddingPropertyData } from '../css/padding'\nimport { CopyContext } from '../state/react-page'\nimport { Send } from '../prop-controllers/instances'\nimport { PropController } from '../prop-controllers/base'\nimport { BoxModel } from '../state/modules/box-models'\n\n/** @see https://developer.mozilla.org/en-US/docs/Web/CSS/width */\nexport type WidthPropertyData = LengthPercentageData\n\n/**\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/border-style\n */\ntype BorderStyle = 'dotted' | 'dashed' | 'solid'\n\n/**\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/border-top#constituent_properties\n *\n * @todos\n * - Change `width` to be a `Length`\n * - Remove `null` from possible values\n * - Remove `undefined` from possible values and make fields optional\n */\nexport type BorderSideShorthandPropertyData = {\n width: number | null | undefined\n style: BorderStyle\n color?: ColorData | null\n}\n\n/**\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/border\n *\n * @todos\n * - Remove `null` from possible values\n * - Remove `undefined` from possible values and make fields optional\n */\nexport type BorderPropertyData = {\n borderTop: BorderSideShorthandPropertyData | null | undefined\n borderRight: BorderSideShorthandPropertyData | null | undefined\n borderBottom: BorderSideShorthandPropertyData | null | undefined\n borderLeft: BorderSideShorthandPropertyData | null | undefined\n}\n\n/**\n * https://developer.mozilla.org/en-US/docs/Web/CSS/font-family\n *\n * @todos\n * - Remove `null` from possible values of longhand properties\n * - Remove `undefined` from possible values and make fields optional\n */\nexport type FontFamilyPropertyData = string | null | undefined\n\n/**\n * https://developer.mozilla.org/en-US/docs/Web/CSS/letter-spacing\n *\n * @todos\n * - Remove `null` from possible values of longhand properties\n * - Remove `undefined` from possible values and make fields optional\n */\nexport type LetterSpacingPropertyData = number | null | undefined\n\n/**\n * https://developer.mozilla.org/en-US/docs/Web/CSS/font-size\n *\n * @todos\n * - Remove `null` from possible values of longhand properties\n * - Remove `undefined` from possible values and make fields optional\n */\nexport type FontSizePropertyData =\n | {\n value: number\n unit: 'px'\n }\n | null\n | undefined\n\n/**\n * https://developer.mozilla.org/en-US/docs/Web/CSS/font-weight\n *\n * @todos\n * - Remove `null` from possible values of longhand properties\n * - Remove `undefined` from possible values and make fields optional\n */\nexport type FontWeightPropertyData = number | null | undefined\n\n/**\n * https://developer.mozilla.org/en-US/docs/Web/CSS/text-transform\n *\n * @todos\n * - Match the type with specification\n */\nexport type TextTransformPropertyData = 'uppercase'[]\n\n/**\n * https://developer.mozilla.org/en-US/docs/Web/CSS/font-style\n *\n * @todos\n * - Match the type with specification\n */\nexport type FontStylePropertyData = 'italic'[]\n\n/**\n * @todos\n * - Remove `null` from possible values of longhand properties\n * - Remove `undefined` from possible values and make fields optional\n */\nexport type TextStylePropertyData = {\n fontFamily?: FontFamilyPropertyData | null | undefined\n letterSpacing: LetterSpacingPropertyData | null | undefined\n fontSize: FontSizePropertyData | null | undefined\n fontWeight: FontWeightPropertyData | null | undefined\n textTransform: TextTransformPropertyData\n fontStyle: FontStylePropertyData\n}\n\n/**\n * Primitives like `string` and `number` are excluded from the style data because the relevant\n * panels from the Makeswift builder were originally implemented only to support object values, and\n * not CSS strings. For example, 100 pixels would be `{ value: 100, unit: 'px' }` but never `100` or\n * `'100px'`.\n */\nexport type StyleControlData = {\n width?: ResponsiveValue<Exclude<WidthPropertyData, string | number>>\n margin?: ResponsiveValue<{\n [K in keyof MarginPropertyData]: Exclude<MarginPropertyData[K], string | number> | 'auto'\n }>\n padding?: ResponsiveValue<{\n [K in keyof PaddingPropertyData]: Exclude<PaddingPropertyData[K], string | number>\n }>\n border?: ResponsiveValue<BorderPropertyData>\n borderRadius?: ResponsiveValue<{\n [K in keyof BorderRadiusPropertyData]: Exclude<BorderRadiusPropertyData[K], string | number>\n }>\n textStyle?: ResponsiveValue<TextStylePropertyData>\n}\n\nexport const StyleControlType = 'makeswift::controls::style'\n\nexport const StyleControlProperty = {\n Width: 'makeswift::controls::style::property::width',\n Margin: 'makeswift::controls::style::property::margin',\n Padding: 'makeswift::controls::style::property::padding',\n Border: 'makeswift::controls::style::property::border',\n BorderRadius: 'makeswift::controls::style::property::border-radius',\n TextStyle: 'makeswift::controls::style::property::text-style',\n} as const\n\nexport type StyleControlProperty = typeof StyleControlProperty[keyof typeof StyleControlProperty]\n\ntype StyleControlParams = { properties?: StyleControlProperty[] }\n\nexport type StyleControlConfig = { properties: StyleControlProperty[] }\n\nconst StyleControlDefaultProperties: StyleControlProperty[] = [\n StyleControlProperty.Width,\n StyleControlProperty.Margin,\n]\n\nconst AllStyleControlProperties: StyleControlProperty[] = [\n StyleControlProperty.Width,\n StyleControlProperty.Margin,\n StyleControlProperty.Padding,\n StyleControlProperty.Border,\n StyleControlProperty.BorderRadius,\n StyleControlProperty.TextStyle,\n]\n\nexport type StyleControlDefinition = {\n type: typeof StyleControlType\n config: StyleControlConfig\n}\n\n/**\n * @todos\n * - Add support for custom panel labels.\n * - Add support for default values. Internally, default values must be represented with the same\n * format as the underlying data so that controls can show these values.\n */\nexport function Style(params?: StyleControlParams): StyleControlDefinition {\n return {\n type: StyleControlType,\n config: { properties: params?.properties ?? StyleControlDefaultProperties },\n }\n}\n\nStyle.Default = StyleControlDefaultProperties\nStyle.All = AllStyleControlProperties\n\nStyle.Width = StyleControlProperty.Width\nStyle.Margin = StyleControlProperty.Margin\nStyle.Padding = StyleControlProperty.Padding\nStyle.Border = StyleControlProperty.Border\nStyle.BorderRadius = StyleControlProperty.BorderRadius\nStyle.TextStyle = StyleControlProperty.TextStyle\n\nexport const StyleControlMessageType = {\n CHANGE_BOX_MODEL: 'makeswift::controls::style::message::change-box-model',\n} as const\n\ntype StyleControlItemBoxModelChangeMessage = {\n type: typeof StyleControlMessageType.CHANGE_BOX_MODEL\n payload: { boxModel: BoxModel | null }\n}\n\nexport type StyleControlMessage = StyleControlItemBoxModelChangeMessage\n\nexport class StyleControl extends PropController<StyleControlMessage> {\n constructor(send: Send<StyleControlMessage>) {\n super(send)\n }\n\n changeBoxModel(boxModel: BoxModel | null): void {\n this.send({ type: StyleControlMessageType.CHANGE_BOX_MODEL, payload: { boxModel } })\n }\n\n recv() {}\n}\n\nexport function getStyleSwatchIds(data: StyleControlData): string[] {\n return getBorderPropControllerDataSwatchIds(data.border)\n}\n\nexport function copyStyleData(\n value: StyleControlData | undefined,\n context: CopyContext,\n): StyleControlData | undefined {\n if (value == null) return value\n\n function copyResponsiveBorder(\n responsiveBorder: ResponsiveValue<BorderPropertyData> | undefined,\n ): ResponsiveValue<BorderPropertyData> | undefined {\n if (responsiveBorder == null) return undefined\n return responsiveBorder.map(deviceBorder => ({\n ...deviceBorder,\n value: copyBorder(deviceBorder.value),\n }))\n }\n\n function copyBorder(border: BorderPropertyData): BorderPropertyData {\n function copyBorderSide(side: BorderSideShorthandPropertyData | null | undefined) {\n if (side == null) return null\n\n if (side.color == null) return side\n\n return {\n ...side,\n color: copyColorData(side.color, context),\n }\n }\n\n return {\n borderTop: copyBorderSide(border.borderTop),\n borderBottom: copyBorderSide(border.borderBottom),\n borderRight: copyBorderSide(border.borderRight),\n borderLeft: copyBorderSide(border.borderLeft),\n }\n }\n\n return { ...value, border: copyResponsiveBorder(value.border) }\n}\n"],"mappings":"AAAA,SAAoB,qBAAsC;AAC1D,SAAS,4CAA4C;AAQrD,SAAS,sBAAsB;AAoIxB,MAAM,mBAAmB;AAEzB,MAAM,uBAAuB;AAAA,EAClC,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,cAAc;AAAA,EACd,WAAW;AACb;AAQA,MAAM,gCAAwD;AAAA,EAC5D,qBAAqB;AAAA,EACrB,qBAAqB;AACvB;AAEA,MAAM,4BAAoD;AAAA,EACxD,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,qBAAqB;AACvB;AAaO,SAAS,MAAM,QAAqD;AACzE,SAAO;AAAA,IACL,MAAM;AAAA,IACN,QAAQ,EAAE,YAAY,QAAQ,cAAc,8BAA8B;AAAA,EAC5E;AACF;AAEA,MAAM,UAAU;AAChB,MAAM,MAAM;AAEZ,MAAM,QAAQ,qBAAqB;AACnC,MAAM,SAAS,qBAAqB;AACpC,MAAM,UAAU,qBAAqB;AACrC,MAAM,SAAS,qBAAqB;AACpC,MAAM,eAAe,qBAAqB;AAC1C,MAAM,YAAY,qBAAqB;AAEhC,MAAM,0BAA0B;AAAA,EACrC,kBAAkB;AACpB;AASO,MAAM,qBAAqB,eAAoC;AAAA,EACpE,YAAY,MAAiC;AAC3C,UAAM,IAAI;AAAA,EACZ;AAAA,EAEA,eAAe,UAAiC;AAC9C,SAAK,KAAK,EAAE,MAAM,wBAAwB,kBAAkB,SAAS,EAAE,SAAS,EAAE,CAAC;AAAA,EACrF;AAAA,EAEA,OAAO;AAAA,EAAC;AACV;AAEO,SAAS,kBAAkB,MAAkC;AAClE,SAAO,qCAAqC,KAAK,MAAM;AACzD;AAEO,SAAS,cACd,OACA,SAC8B;AAC9B,MAAI,SAAS;AAAM,WAAO;AAE1B,WAAS,qBACP,kBACiD;AACjD,QAAI,oBAAoB;AAAM,aAAO;AACrC,WAAO,iBAAiB,IAAI,mBAAiB;AAAA,MAC3C,GAAG;AAAA,MACH,OAAO,WAAW,aAAa,KAAK;AAAA,IACtC,EAAE;AAAA,EACJ;AAEA,WAAS,WAAW,QAAgD;AAClE,aAAS,eAAe,MAA0D;AAChF,UAAI,QAAQ;AAAM,eAAO;AAEzB,UAAI,KAAK,SAAS;AAAM,eAAO;AAE/B,aAAO;AAAA,QACL,GAAG;AAAA,QACH,OAAO,cAAc,KAAK,OAAO,OAAO;AAAA,MAC1C;AAAA,IACF;AAEA,WAAO;AAAA,MACL,WAAW,eAAe,OAAO,SAAS;AAAA,MAC1C,cAAc,eAAe,OAAO,YAAY;AAAA,MAChD,aAAa,eAAe,OAAO,WAAW;AAAA,MAC9C,YAAY,eAAe,OAAO,UAAU;AAAA,IAC9C;AAAA,EACF;AAEA,SAAO,EAAE,GAAG,OAAO,QAAQ,qBAAqB,MAAM,MAAM,EAAE;AAChE;","names":[]}
@@ -1,5 +1,9 @@
1
1
  import "@testing-library/jest-dom";
2
2
  import { matchers } from "@emotion/jest";
3
+ import { server } from "./mocks/server";
4
+ beforeAll(() => server.listen());
5
+ afterEach(() => server.resetHandlers());
6
+ afterAll(() => server.close());
3
7
  expect.extend(matchers);
4
8
  if (typeof window !== "undefined") {
5
9
  Object.defineProperty(window, "matchMedia", {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/jest-setup.ts"],"sourcesContent":["import '@testing-library/jest-dom'\nimport { matchers } from '@emotion/jest'\n\nexpect.extend(matchers)\n\nif (typeof window !== 'undefined') {\n Object.defineProperty(window, 'matchMedia', {\n writable: true,\n value: jest.fn().mockImplementation(query => ({\n matches: false,\n media: query,\n onchange: null,\n addListener: jest.fn(), // deprecated\n removeListener: jest.fn(), // deprecated\n addEventListener: jest.fn(),\n removeEventListener: jest.fn(),\n dispatchEvent: jest.fn(),\n })),\n })\n\n Object.defineProperty(window, 'IntersectionObserver', {\n writable: true,\n value: jest.fn().mockImplementation(() => ({\n observe: jest.fn(),\n unobserve: jest.fn(),\n disconnect: jest.fn(),\n })),\n })\n}\n"],"mappings":"AAAA,OAAO;AACP,SAAS,gBAAgB;AAEzB,OAAO,OAAO,QAAQ;AAEtB,IAAI,OAAO,WAAW,aAAa;AACjC,SAAO,eAAe,QAAQ,cAAc;AAAA,IAC1C,UAAU;AAAA,IACV,OAAO,KAAK,GAAG,EAAE,mBAAmB,YAAU;AAAA,MAC5C,SAAS;AAAA,MACT,OAAO;AAAA,MACP,UAAU;AAAA,MACV,aAAa,KAAK,GAAG;AAAA;AAAA,MACrB,gBAAgB,KAAK,GAAG;AAAA;AAAA,MACxB,kBAAkB,KAAK,GAAG;AAAA,MAC1B,qBAAqB,KAAK,GAAG;AAAA,MAC7B,eAAe,KAAK,GAAG;AAAA,IACzB,EAAE;AAAA,EACJ,CAAC;AAED,SAAO,eAAe,QAAQ,wBAAwB;AAAA,IACpD,UAAU;AAAA,IACV,OAAO,KAAK,GAAG,EAAE,mBAAmB,OAAO;AAAA,MACzC,SAAS,KAAK,GAAG;AAAA,MACjB,WAAW,KAAK,GAAG;AAAA,MACnB,YAAY,KAAK,GAAG;AAAA,IACtB,EAAE;AAAA,EACJ,CAAC;AACH;","names":[]}
1
+ {"version":3,"sources":["../../src/jest-setup.ts"],"sourcesContent":["import '@testing-library/jest-dom'\nimport { matchers } from '@emotion/jest'\nimport { server } from './mocks/server'\n\nbeforeAll(() => server.listen())\nafterEach(() => server.resetHandlers())\nafterAll(() => server.close())\n\nexpect.extend(matchers)\n\nif (typeof window !== 'undefined') {\n Object.defineProperty(window, 'matchMedia', {\n writable: true,\n value: jest.fn().mockImplementation(query => ({\n matches: false,\n media: query,\n onchange: null,\n addListener: jest.fn(), // deprecated\n removeListener: jest.fn(), // deprecated\n addEventListener: jest.fn(),\n removeEventListener: jest.fn(),\n dispatchEvent: jest.fn(),\n })),\n })\n\n Object.defineProperty(window, 'IntersectionObserver', {\n writable: true,\n value: jest.fn().mockImplementation(() => ({\n observe: jest.fn(),\n unobserve: jest.fn(),\n disconnect: jest.fn(),\n })),\n })\n}\n"],"mappings":"AAAA,OAAO;AACP,SAAS,gBAAgB;AACzB,SAAS,cAAc;AAEvB,UAAU,MAAM,OAAO,OAAO,CAAC;AAC/B,UAAU,MAAM,OAAO,cAAc,CAAC;AACtC,SAAS,MAAM,OAAO,MAAM,CAAC;AAE7B,OAAO,OAAO,QAAQ;AAEtB,IAAI,OAAO,WAAW,aAAa;AACjC,SAAO,eAAe,QAAQ,cAAc;AAAA,IAC1C,UAAU;AAAA,IACV,OAAO,KAAK,GAAG,EAAE,mBAAmB,YAAU;AAAA,MAC5C,SAAS;AAAA,MACT,OAAO;AAAA,MACP,UAAU;AAAA,MACV,aAAa,KAAK,GAAG;AAAA;AAAA,MACrB,gBAAgB,KAAK,GAAG;AAAA;AAAA,MACxB,kBAAkB,KAAK,GAAG;AAAA,MAC1B,qBAAqB,KAAK,GAAG;AAAA,MAC7B,eAAe,KAAK,GAAG;AAAA,IACzB,EAAE;AAAA,EACJ,CAAC;AAED,SAAO,eAAe,QAAQ,wBAAwB;AAAA,IACpD,UAAU;AAAA,IACV,OAAO,KAAK,GAAG,EAAE,mBAAmB,OAAO;AAAA,MACzC,SAAS,KAAK,GAAG;AAAA,MACjB,WAAW,KAAK,GAAG;AAAA,MACnB,YAAY,KAAK,GAAG;AAAA,IACtB,EAAE;AAAA,EACJ,CAAC;AACH;","names":[]}
@@ -0,0 +1,6 @@
1
+ import { setupServer } from "msw/node";
2
+ const server = setupServer();
3
+ export {
4
+ server
5
+ };
6
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/mocks/server.ts"],"sourcesContent":["import { setupServer } from 'msw/node'\n\nexport const server = setupServer()\n"],"mappings":"AAAA,SAAS,mBAAmB;AAErB,MAAM,SAAS,YAAY;","names":[]}
@@ -13,7 +13,7 @@ async function handler(...args) {
13
13
  const supportsPreviewMode = match(args).with(routeHandlerPattern, () => false).with(apiRoutePattern, () => true).exhaustive();
14
14
  const supportsDraftMode = match(args).with(routeHandlerPattern, () => true).with(apiRoutePattern, () => false).exhaustive();
15
15
  const body = {
16
- version: "0.19.2-canary.0",
16
+ version: "0.19.2-canary.1",
17
17
  previewMode: supportsPreviewMode,
18
18
  draftMode: supportsDraftMode,
19
19
  interactionMode: true,
@@ -0,0 +1,70 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import { forwardRef, useRef } from "react";
3
+ import { act } from "react-dom/test-utils";
4
+ import { render, screen } from "@testing-library/react";
5
+ import "@testing-library/jest-dom";
6
+ import { Page } from "../../page";
7
+ import { ReactRuntimeProvider } from "../../../context/react-runtime";
8
+ import { ReactRuntime } from "../../../../react";
9
+ import {
10
+ createMakeswiftPageSnapshot,
11
+ createRootComponent
12
+ } from "../../../../utils/tests/element-data-test-test";
13
+ const ROOT_ID = "00000000-0000-0000-0000-000000000000";
14
+ const ELEMENT_ID = "11111111-1111-1111-1111-111111111111";
15
+ async function testPageControlPropRendering(controlDefinition, {
16
+ toData,
17
+ value,
18
+ cacheData,
19
+ expectedRenders
20
+ }) {
21
+ const controlData = toData(value);
22
+ const TestComponentType = "TestComponent";
23
+ const testId = "test-id";
24
+ const renderCountTestId = "render-count-test-id";
25
+ const elementData = createRootComponent(
26
+ [
27
+ {
28
+ key: ELEMENT_ID,
29
+ type: TestComponentType,
30
+ props: {
31
+ propKey: controlData
32
+ }
33
+ }
34
+ ],
35
+ ROOT_ID
36
+ );
37
+ const snapshot = createMakeswiftPageSnapshot(elementData, {}, cacheData);
38
+ const runtime = new ReactRuntime();
39
+ runtime.registerComponent(
40
+ forwardRef(({ propKey }, ref) => {
41
+ const renderCount = useRef(0);
42
+ ++renderCount.current;
43
+ return /* @__PURE__ */ jsxs("div", { ref, children: [
44
+ /* @__PURE__ */ jsx("div", { "data-testid": renderCountTestId, children: renderCount.current }),
45
+ /* @__PURE__ */ jsx("div", { "data-testid": testId, children: JSON.stringify(propKey) })
46
+ ] });
47
+ }),
48
+ {
49
+ type: TestComponentType,
50
+ label: "TestComponent",
51
+ props: {
52
+ propKey: controlDefinition
53
+ }
54
+ }
55
+ );
56
+ await act(
57
+ async () => render(
58
+ /* @__PURE__ */ jsx(ReactRuntimeProvider, { runtime, children: /* @__PURE__ */ jsx(Page, { snapshot }) })
59
+ )
60
+ );
61
+ expect(snapshot).toMatchSnapshot("snapshot");
62
+ expect(JSON.parse(screen.getByTestId(testId).textContent ?? "")).toMatchSnapshot("resolvedValue");
63
+ if (expectedRenders != null) {
64
+ expect(Number(screen.getByTestId(renderCountTestId).textContent)).toBe(expectedRenders);
65
+ }
66
+ }
67
+ export {
68
+ testPageControlPropRendering
69
+ };
70
+ //# sourceMappingURL=page-control-prop-rendering.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../src/next/components/tests/controls/page-control-prop-rendering.tsx"],"sourcesContent":["/** @jest-environment jsdom */\n\nimport { forwardRef, useRef } from 'react'\nimport { act } from 'react-dom/test-utils'\nimport { render, screen } from '@testing-library/react'\nimport '@testing-library/jest-dom'\n\nimport { Data } from '@makeswift/controls'\n\nimport { ElementData } from '../../../../state/react-page'\nimport { Page } from '../../page'\nimport { ReactRuntimeProvider } from '../../../context/react-runtime'\nimport { ReactRuntime } from '../../../../react'\n\nimport {\n createMakeswiftPageSnapshot,\n createRootComponent,\n} from '../../../../utils/tests/element-data-test-test'\n\nimport { type MakeswiftPageSnapshot } from '../../../../next'\nimport { ControlDefinition, ControlDefinitionData } from '../../../../controls'\n\nconst ROOT_ID = '00000000-0000-0000-0000-000000000000'\nconst ELEMENT_ID = '11111111-1111-1111-1111-111111111111'\n\nexport async function testPageControlPropRendering<T extends ControlDefinition>(\n controlDefinition: T,\n {\n toData,\n value,\n cacheData,\n expectedRenders,\n }: {\n toData: (value: Data) => ControlDefinitionData<T>\n value: Data\n cacheData?: MakeswiftPageSnapshot['cacheData']\n expectedRenders?: number\n },\n) {\n // Arrange\n const controlData = toData(value)\n const TestComponentType = 'TestComponent'\n const testId = 'test-id'\n const renderCountTestId = 'render-count-test-id'\n const elementData: ElementData = createRootComponent(\n [\n {\n key: ELEMENT_ID,\n type: TestComponentType,\n props: {\n propKey: controlData,\n },\n },\n ],\n ROOT_ID,\n )\n const snapshot = createMakeswiftPageSnapshot(elementData, {}, cacheData)\n const runtime = new ReactRuntime()\n\n // Act\n runtime.registerComponent(\n forwardRef<HTMLDivElement, { propKey?: any }>(({ propKey }, ref) => {\n const renderCount = useRef(0)\n ++renderCount.current\n return (\n <div ref={ref}>\n <div data-testid={renderCountTestId}>{renderCount.current}</div>\n <div data-testid={testId}>{JSON.stringify(propKey)}</div>\n </div>\n )\n }),\n {\n type: TestComponentType,\n label: 'TestComponent',\n props: {\n propKey: controlDefinition,\n },\n },\n )\n\n // Assert\n await act(async () =>\n render(\n <ReactRuntimeProvider runtime={runtime}>\n <Page snapshot={snapshot} />\n </ReactRuntimeProvider>,\n ),\n )\n\n expect(snapshot).toMatchSnapshot('snapshot')\n expect(JSON.parse(screen.getByTestId(testId).textContent ?? '')).toMatchSnapshot('resolvedValue')\n\n if (expectedRenders != null) {\n expect(Number(screen.getByTestId(renderCountTestId).textContent)).toBe(expectedRenders)\n }\n}\n"],"mappings":"AAiEQ,SACE,KADF;AA/DR,SAAS,YAAY,cAAc;AACnC,SAAS,WAAW;AACpB,SAAS,QAAQ,cAAc;AAC/B,OAAO;AAKP,SAAS,YAAY;AACrB,SAAS,4BAA4B;AACrC,SAAS,oBAAoB;AAE7B;AAAA,EACE;AAAA,EACA;AAAA,OACK;AAKP,MAAM,UAAU;AAChB,MAAM,aAAa;AAEnB,eAAsB,6BACpB,mBACA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAMA;AAEA,QAAM,cAAc,OAAO,KAAK;AAChC,QAAM,oBAAoB;AAC1B,QAAM,SAAS;AACf,QAAM,oBAAoB;AAC1B,QAAM,cAA2B;AAAA,IAC/B;AAAA,MACE;AAAA,QACE,KAAK;AAAA,QACL,MAAM;AAAA,QACN,OAAO;AAAA,UACL,SAAS;AAAA,QACX;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,EACF;AACA,QAAM,WAAW,4BAA4B,aAAa,CAAC,GAAG,SAAS;AACvE,QAAM,UAAU,IAAI,aAAa;AAGjC,UAAQ;AAAA,IACN,WAA8C,CAAC,EAAE,QAAQ,GAAG,QAAQ;AAClE,YAAM,cAAc,OAAO,CAAC;AAC5B,QAAE,YAAY;AACd,aACE,qBAAC,SAAI,KACH;AAAA,4BAAC,SAAI,eAAa,mBAAoB,sBAAY,SAAQ;AAAA,QAC1D,oBAAC,SAAI,eAAa,QAAS,eAAK,UAAU,OAAO,GAAE;AAAA,SACrD;AAAA,IAEJ,CAAC;AAAA,IACD;AAAA,MACE,MAAM;AAAA,MACN,OAAO;AAAA,MACP,OAAO;AAAA,QACL,SAAS;AAAA,MACX;AAAA,IACF;AAAA,EACF;AAGA,QAAM;AAAA,IAAI,YACR;AAAA,MACE,oBAAC,wBAAqB,SACpB,8BAAC,QAAK,UAAoB,GAC5B;AAAA,IACF;AAAA,EACF;AAEA,SAAO,QAAQ,EAAE,gBAAgB,UAAU;AAC3C,SAAO,KAAK,MAAM,OAAO,YAAY,MAAM,EAAE,eAAe,EAAE,CAAC,EAAE,gBAAgB,eAAe;AAEhG,MAAI,mBAAmB,MAAM;AAC3B,WAAO,OAAO,OAAO,YAAY,iBAAiB,EAAE,WAAW,CAAC,EAAE,KAAK,eAAe;AAAA,EACxF;AACF;","names":[]}
@@ -10,6 +10,7 @@ import {
10
10
  getShapePageIds,
11
11
  getShapeSwatchIds,
12
12
  getShapeTypographyIds,
13
+ getStyleSwatchIds,
13
14
  getTypographySwatchIds,
14
15
  getTypographyTypographyIds,
15
16
  ImageControlType,
@@ -18,6 +19,7 @@ import {
18
19
  RichTextControlType,
19
20
  ShapeControlType,
20
21
  SlotControlType,
22
+ StyleControlType,
21
23
  StyleV2ControlType,
22
24
  TypographyControlType
23
25
  } from "../controls";
@@ -111,6 +113,9 @@ function getSwatchIds(descriptor, prop) {
111
113
  case TypographyControlType: {
112
114
  return getTypographySwatchIds(prop);
113
115
  }
116
+ case StyleControlType: {
117
+ return getStyleSwatchIds(prop);
118
+ }
114
119
  case StyleV2ControlType: {
115
120
  const value = prop;
116
121
  return value?.flatMap((value2) => getSwatchIds(descriptor.config.type, value2.value)) ?? [];
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/prop-controllers/introspection.ts"],"sourcesContent":["import { Descriptor } from './descriptors'\nimport { Data, Element } from '../state/react-page'\nimport {\n ColorControlData,\n ColorControlType,\n getListElementChildren,\n getListFileIds,\n getListPageIds,\n getListSwatchIds,\n getListTypographyIds,\n getShapeElementChildren,\n getShapeFileIds,\n getShapePageIds,\n getShapeSwatchIds,\n getShapeTypographyIds,\n getTypographySwatchIds,\n getTypographyTypographyIds,\n ImageControlData,\n ImageControlType,\n LinkControlData,\n LinkControlType,\n ListControlData,\n ListControlType,\n RichTextControlData,\n RichTextControlType,\n RichTextValue,\n ShapeControlData,\n ShapeControlType,\n SlotControlData,\n SlotControlType,\n StyleV2ControlData,\n StyleV2ControlType,\n TypographyControlData,\n TypographyControlType,\n} from '../controls'\nimport {\n getRichTextPageIds,\n getRichTextSwatchIds,\n getRichTextTypographyIds,\n} from '../controls/rich-text/introspection'\nimport {\n getRichTextV2PageIds,\n getRichTextV2SwatchIds,\n getRichTextV2TypographyIds,\n} from '../controls/rich-text-v2/introspection'\nimport {\n RichTextV2ControlType,\n RichTextV2ControlData,\n isRichTextV1Data,\n} from '../controls/rich-text-v2/rich-text-v2'\nimport { match, P } from 'ts-pattern'\nimport {\n getLinkPropControllerPageIds,\n getResponsiveColorPropControllerDataSawtchIds,\n getShadowsPropControllerDataSwatchIds,\n LinkPropControllerData,\n Types as PropControllerTypes,\n ResponsiveColorData,\n ShadowsPropControllerData,\n getBorderPropControllerDataSwatchIds,\n TablePropControllerData,\n getTablePropControllerDataTableIds,\n getNavigationLinksPropControllerPageIds,\n NavigationLinksPropControllerData,\n getNavigationLinksPropControllerSwatchIds,\n BorderPropControllerData,\n getElementIDPropControllerDataElementID,\n ElementIDPropControllerData,\n getGridPropControllerElementChildren,\n GridPropControllerData,\n getImagePropControllerFileIds,\n ImagePropControllerData,\n getImagesPropControllerFileIds,\n ImagesPropControllerData,\n getBackgroundsPropControllerFileIds,\n getBackgroundsPropControllerSwatchIds,\n BackgroundsPropControllerData,\n} from '@makeswift/prop-controllers'\nimport { DELETED_PROP_CONTROLLER_TYPES } from './deleted'\n\nexport function getElementChildren<T extends Data>(\n descriptor: Descriptor<T>,\n prop: T | undefined,\n): Element[] {\n if (prop == null) return []\n\n switch (descriptor.type) {\n case PropControllerTypes.Grid:\n return getGridPropControllerElementChildren(prop as GridPropControllerData | undefined)\n\n case SlotControlType:\n return (prop as SlotControlData).elements\n\n case ListControlType:\n return (prop as ListControlData).flatMap(({ value }) =>\n getElementChildren(descriptor.config.type, value),\n )\n\n case ShapeControlType: {\n return getShapeElementChildren(descriptor, prop as ShapeControlData)\n }\n\n case ListControlType: {\n return getListElementChildren(descriptor, prop as ListControlData)\n }\n\n default:\n return []\n }\n}\n\nexport function getElementId<T extends Data>(\n descriptor: Descriptor<T>,\n prop: T | undefined,\n): string | null {\n if (prop == null) return null\n\n switch (descriptor.type) {\n case PropControllerTypes.ElementID:\n return getElementIDPropControllerDataElementID(prop as ElementIDPropControllerData) ?? null\n\n default:\n return null\n }\n}\n\nexport function getSwatchIds<T extends Data>(\n descriptor: Descriptor<T>,\n prop: T | undefined,\n): string[] {\n if (prop == null) return []\n switch (descriptor.type) {\n case PropControllerTypes.Backgrounds:\n return getBackgroundsPropControllerSwatchIds(prop as BackgroundsPropControllerData)\n\n case PropControllerTypes.Border:\n return getBorderPropControllerDataSwatchIds(prop as BorderPropControllerData)\n\n case PropControllerTypes.NavigationLinks: {\n return getNavigationLinksPropControllerSwatchIds(prop as NavigationLinksPropControllerData)\n }\n\n case PropControllerTypes.ResponsiveColor:\n return getResponsiveColorPropControllerDataSawtchIds(prop as ResponsiveColorData)\n\n case PropControllerTypes.Shadows:\n return getShadowsPropControllerDataSwatchIds(prop as ShadowsPropControllerData)\n\n case RichTextControlType:\n case DELETED_PROP_CONTROLLER_TYPES.RichText: {\n return getRichTextSwatchIds(prop as RichTextValue)\n }\n\n case ColorControlType: {\n const value = prop as ColorControlData\n return value?.swatchId == null ? [] : [value.swatchId]\n }\n\n case TypographyControlType: {\n return getTypographySwatchIds(prop as TypographyControlData[number])\n }\n\n case StyleV2ControlType: {\n const value = prop as StyleV2ControlData\n\n return value?.flatMap(value => getSwatchIds(descriptor.config.type, value.value)) ?? []\n }\n\n case RichTextV2ControlType: {\n const data = prop as RichTextV2ControlData | RichTextControlData\n\n if (isRichTextV1Data(data)) return getRichTextSwatchIds(data)\n\n return getRichTextV2SwatchIds(descriptor, data)\n }\n\n case ShapeControlType: {\n return getShapeSwatchIds(descriptor, prop as ShapeControlData)\n }\n\n case ListControlType: {\n return getListSwatchIds(descriptor, prop as ListControlData)\n }\n\n default:\n return []\n }\n}\n\nexport function getFileIds<T extends Data>(\n descriptor: Descriptor<T>,\n prop: T | undefined,\n): string[] {\n if (prop == null) return []\n\n switch (descriptor.type) {\n case PropControllerTypes.Backgrounds:\n return getBackgroundsPropControllerFileIds(prop as BackgroundsPropControllerData)\n\n case PropControllerTypes.Image: {\n return getImagePropControllerFileIds(prop as ImagePropControllerData)\n }\n\n case PropControllerTypes.Images: {\n return getImagesPropControllerFileIds(prop as ImagesPropControllerData)\n }\n\n case ImageControlType: {\n const value = prop as ImageControlData\n return match(value)\n .with(P.string, f => [f])\n .with({ type: 'makeswift-file' }, f => [f.id])\n .with({ type: 'external-file' }, () => [])\n .otherwise(() => [])\n }\n\n case ShapeControlType: {\n return getShapeFileIds(descriptor, prop as ShapeControlData)\n }\n\n case ListControlType: {\n return getListFileIds(descriptor, prop as ListControlData)\n }\n\n default:\n return []\n }\n}\n\nexport function getTypographyIds<T extends Data>(\n descriptor: Descriptor<T>,\n prop: T | undefined,\n): string[] {\n if (prop == null) return []\n\n switch (descriptor.type) {\n case TypographyControlType: {\n return getTypographyTypographyIds(prop as TypographyControlData[number])\n }\n case RichTextControlType:\n case DELETED_PROP_CONTROLLER_TYPES.RichText: {\n return getRichTextTypographyIds(prop as RichTextControlData)\n }\n\n case RichTextV2ControlType: {\n const data = prop as RichTextV2ControlData | RichTextControlData\n\n if (isRichTextV1Data(data)) return getRichTextTypographyIds(data)\n\n return getRichTextV2TypographyIds(descriptor, data)\n }\n\n case ShapeControlType: {\n return getShapeTypographyIds(descriptor, prop as ShapeControlData)\n }\n\n case ListControlType: {\n return getListTypographyIds(descriptor, prop as ListControlData)\n }\n\n default:\n return []\n }\n}\n\nexport function getTableIds<T extends Data>(\n descriptor: Descriptor<T>,\n prop: T | undefined,\n): string[] {\n if (prop == null) return []\n\n switch (descriptor.type) {\n case PropControllerTypes.Table: {\n return getTablePropControllerDataTableIds(prop as TablePropControllerData)\n }\n\n default:\n return []\n }\n}\n\nexport function getPageIds<T extends Data>(\n descriptor: Descriptor<T>,\n prop: T | undefined,\n): string[] {\n if (prop == null) return []\n\n switch (descriptor.type) {\n case PropControllerTypes.Link: {\n return getLinkPropControllerPageIds(prop as LinkPropControllerData)\n }\n\n case LinkControlType: {\n const value = prop as LinkControlData\n\n if (value == null) return []\n\n switch (value.type) {\n case 'OPEN_PAGE':\n return value.payload.pageId == null ? [] : [value.payload.pageId]\n\n default:\n return []\n }\n }\n\n case PropControllerTypes.NavigationLinks: {\n return getNavigationLinksPropControllerPageIds(prop as NavigationLinksPropControllerData)\n }\n\n case RichTextControlType:\n case DELETED_PROP_CONTROLLER_TYPES.RichText: {\n return getRichTextPageIds(prop as RichTextControlData)\n }\n\n case RichTextV2ControlType: {\n const data = prop as RichTextV2ControlData | RichTextControlData\n\n if (isRichTextV1Data(data)) return getRichTextPageIds(data)\n\n return getRichTextV2PageIds(descriptor, data)\n }\n\n case ShapeControlType: {\n return getShapePageIds(descriptor, prop as ShapeControlData)\n }\n\n case ListControlType: {\n return getListPageIds(descriptor, prop as ListControlData)\n }\n\n default:\n return []\n }\n}\n"],"mappings":"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","names":["value"]}
1
+ {"version":3,"sources":["../../../src/prop-controllers/introspection.ts"],"sourcesContent":["import { Descriptor } from './descriptors'\nimport { Data, Element } from '../state/react-page'\nimport {\n ColorControlData,\n ColorControlType,\n getListElementChildren,\n getListFileIds,\n getListPageIds,\n getListSwatchIds,\n getListTypographyIds,\n getShapeElementChildren,\n getShapeFileIds,\n getShapePageIds,\n getShapeSwatchIds,\n getShapeTypographyIds,\n getStyleSwatchIds,\n getTypographySwatchIds,\n getTypographyTypographyIds,\n ImageControlData,\n ImageControlType,\n LinkControlData,\n LinkControlType,\n ListControlData,\n ListControlType,\n RichTextControlData,\n RichTextControlType,\n RichTextValue,\n ShapeControlData,\n ShapeControlType,\n SlotControlData,\n SlotControlType,\n StyleControlData,\n StyleControlType,\n StyleV2ControlData,\n StyleV2ControlType,\n TypographyControlData,\n TypographyControlType,\n} from '../controls'\nimport {\n getRichTextPageIds,\n getRichTextSwatchIds,\n getRichTextTypographyIds,\n} from '../controls/rich-text/introspection'\nimport {\n getRichTextV2PageIds,\n getRichTextV2SwatchIds,\n getRichTextV2TypographyIds,\n} from '../controls/rich-text-v2/introspection'\nimport {\n RichTextV2ControlType,\n RichTextV2ControlData,\n isRichTextV1Data,\n} from '../controls/rich-text-v2/rich-text-v2'\nimport { match, P } from 'ts-pattern'\nimport {\n getLinkPropControllerPageIds,\n getResponsiveColorPropControllerDataSawtchIds,\n getShadowsPropControllerDataSwatchIds,\n LinkPropControllerData,\n Types as PropControllerTypes,\n ResponsiveColorData,\n ShadowsPropControllerData,\n getBorderPropControllerDataSwatchIds,\n TablePropControllerData,\n getTablePropControllerDataTableIds,\n getNavigationLinksPropControllerPageIds,\n NavigationLinksPropControllerData,\n getNavigationLinksPropControllerSwatchIds,\n BorderPropControllerData,\n getElementIDPropControllerDataElementID,\n ElementIDPropControllerData,\n getGridPropControllerElementChildren,\n GridPropControllerData,\n getImagePropControllerFileIds,\n ImagePropControllerData,\n getImagesPropControllerFileIds,\n ImagesPropControllerData,\n getBackgroundsPropControllerFileIds,\n getBackgroundsPropControllerSwatchIds,\n BackgroundsPropControllerData,\n} from '@makeswift/prop-controllers'\nimport { DELETED_PROP_CONTROLLER_TYPES } from './deleted'\n\nexport function getElementChildren<T extends Data>(\n descriptor: Descriptor<T>,\n prop: T | undefined,\n): Element[] {\n if (prop == null) return []\n\n switch (descriptor.type) {\n case PropControllerTypes.Grid:\n return getGridPropControllerElementChildren(prop as GridPropControllerData | undefined)\n\n case SlotControlType:\n return (prop as SlotControlData).elements\n\n case ListControlType:\n return (prop as ListControlData).flatMap(({ value }) =>\n getElementChildren(descriptor.config.type, value),\n )\n\n case ShapeControlType: {\n return getShapeElementChildren(descriptor, prop as ShapeControlData)\n }\n\n case ListControlType: {\n return getListElementChildren(descriptor, prop as ListControlData)\n }\n\n default:\n return []\n }\n}\n\nexport function getElementId<T extends Data>(\n descriptor: Descriptor<T>,\n prop: T | undefined,\n): string | null {\n if (prop == null) return null\n\n switch (descriptor.type) {\n case PropControllerTypes.ElementID:\n return getElementIDPropControllerDataElementID(prop as ElementIDPropControllerData) ?? null\n\n default:\n return null\n }\n}\n\nexport function getSwatchIds<T extends Data>(\n descriptor: Descriptor<T>,\n prop: T | undefined,\n): string[] {\n if (prop == null) return []\n switch (descriptor.type) {\n case PropControllerTypes.Backgrounds:\n return getBackgroundsPropControllerSwatchIds(prop as BackgroundsPropControllerData)\n\n case PropControllerTypes.Border:\n return getBorderPropControllerDataSwatchIds(prop as BorderPropControllerData)\n\n case PropControllerTypes.NavigationLinks: {\n return getNavigationLinksPropControllerSwatchIds(prop as NavigationLinksPropControllerData)\n }\n\n case PropControllerTypes.ResponsiveColor:\n return getResponsiveColorPropControllerDataSawtchIds(prop as ResponsiveColorData)\n\n case PropControllerTypes.Shadows:\n return getShadowsPropControllerDataSwatchIds(prop as ShadowsPropControllerData)\n\n case RichTextControlType:\n case DELETED_PROP_CONTROLLER_TYPES.RichText: {\n return getRichTextSwatchIds(prop as RichTextValue)\n }\n\n case ColorControlType: {\n const value = prop as ColorControlData\n return value?.swatchId == null ? [] : [value.swatchId]\n }\n\n case TypographyControlType: {\n return getTypographySwatchIds(prop as TypographyControlData[number])\n }\n\n case StyleControlType: {\n return getStyleSwatchIds(prop as StyleControlData)\n }\n\n case StyleV2ControlType: {\n const value = prop as StyleV2ControlData\n\n return value?.flatMap(value => getSwatchIds(descriptor.config.type, value.value)) ?? []\n }\n\n case RichTextV2ControlType: {\n const data = prop as RichTextV2ControlData | RichTextControlData\n\n if (isRichTextV1Data(data)) return getRichTextSwatchIds(data)\n\n return getRichTextV2SwatchIds(descriptor, data)\n }\n\n case ShapeControlType: {\n return getShapeSwatchIds(descriptor, prop as ShapeControlData)\n }\n\n case ListControlType: {\n return getListSwatchIds(descriptor, prop as ListControlData)\n }\n\n default:\n return []\n }\n}\n\nexport function getFileIds<T extends Data>(\n descriptor: Descriptor<T>,\n prop: T | undefined,\n): string[] {\n if (prop == null) return []\n\n switch (descriptor.type) {\n case PropControllerTypes.Backgrounds:\n return getBackgroundsPropControllerFileIds(prop as BackgroundsPropControllerData)\n\n case PropControllerTypes.Image: {\n return getImagePropControllerFileIds(prop as ImagePropControllerData)\n }\n\n case PropControllerTypes.Images: {\n return getImagesPropControllerFileIds(prop as ImagesPropControllerData)\n }\n\n case ImageControlType: {\n const value = prop as ImageControlData\n return match(value)\n .with(P.string, f => [f])\n .with({ type: 'makeswift-file' }, f => [f.id])\n .with({ type: 'external-file' }, () => [])\n .otherwise(() => [])\n }\n\n case ShapeControlType: {\n return getShapeFileIds(descriptor, prop as ShapeControlData)\n }\n\n case ListControlType: {\n return getListFileIds(descriptor, prop as ListControlData)\n }\n\n default:\n return []\n }\n}\n\nexport function getTypographyIds<T extends Data>(\n descriptor: Descriptor<T>,\n prop: T | undefined,\n): string[] {\n if (prop == null) return []\n\n switch (descriptor.type) {\n case TypographyControlType: {\n return getTypographyTypographyIds(prop as TypographyControlData[number])\n }\n case RichTextControlType:\n case DELETED_PROP_CONTROLLER_TYPES.RichText: {\n return getRichTextTypographyIds(prop as RichTextControlData)\n }\n\n case RichTextV2ControlType: {\n const data = prop as RichTextV2ControlData | RichTextControlData\n\n if (isRichTextV1Data(data)) return getRichTextTypographyIds(data)\n\n return getRichTextV2TypographyIds(descriptor, data)\n }\n\n case ShapeControlType: {\n return getShapeTypographyIds(descriptor, prop as ShapeControlData)\n }\n\n case ListControlType: {\n return getListTypographyIds(descriptor, prop as ListControlData)\n }\n\n default:\n return []\n }\n}\n\nexport function getTableIds<T extends Data>(\n descriptor: Descriptor<T>,\n prop: T | undefined,\n): string[] {\n if (prop == null) return []\n\n switch (descriptor.type) {\n case PropControllerTypes.Table: {\n return getTablePropControllerDataTableIds(prop as TablePropControllerData)\n }\n\n default:\n return []\n }\n}\n\nexport function getPageIds<T extends Data>(\n descriptor: Descriptor<T>,\n prop: T | undefined,\n): string[] {\n if (prop == null) return []\n\n switch (descriptor.type) {\n case PropControllerTypes.Link: {\n return getLinkPropControllerPageIds(prop as LinkPropControllerData)\n }\n\n case LinkControlType: {\n const value = prop as LinkControlData\n\n if (value == null) return []\n\n switch (value.type) {\n case 'OPEN_PAGE':\n return value.payload.pageId == null ? [] : [value.payload.pageId]\n\n default:\n return []\n }\n }\n\n case PropControllerTypes.NavigationLinks: {\n return getNavigationLinksPropControllerPageIds(prop as NavigationLinksPropControllerData)\n }\n\n case RichTextControlType:\n case DELETED_PROP_CONTROLLER_TYPES.RichText: {\n return getRichTextPageIds(prop as RichTextControlData)\n }\n\n case RichTextV2ControlType: {\n const data = prop as RichTextV2ControlData | RichTextControlData\n\n if (isRichTextV1Data(data)) return getRichTextPageIds(data)\n\n return getRichTextV2PageIds(descriptor, data)\n }\n\n case ShapeControlType: {\n return getShapePageIds(descriptor, prop as ShapeControlData)\n }\n\n case ListControlType: {\n return getListPageIds(descriptor, prop as ListControlData)\n }\n\n default:\n return []\n }\n}\n"],"mappings":"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","names":["value"]}
@@ -20,7 +20,7 @@ function createRootComponent(elements, rootId) {
20
20
  }
21
21
  };
22
22
  }
23
- function createMakeswiftPageSnapshot(elementData, partialSnapshot = {}) {
23
+ function createMakeswiftPageSnapshot(elementData, partialSnapshot = {}, cacheData = {}) {
24
24
  return {
25
25
  document: {
26
26
  id: "test-page-id",
@@ -35,7 +35,7 @@ function createMakeswiftPageSnapshot(elementData, partialSnapshot = {}) {
35
35
  ...partialSnapshot.document
36
36
  },
37
37
  apiOrigin: "https://test-api-origin.com",
38
- cacheData: {},
38
+ cacheData,
39
39
  preview: false,
40
40
  localizedResourcesMap: {},
41
41
  locale: null,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/utils/tests/element-data-test-test.ts"],"sourcesContent":["import { randomUUID } from 'crypto'\nimport { MakeswiftPageSnapshot } from '../../next'\nimport { ElementData } from '../../state/react-page'\nimport { MakeswiftComponentType } from '../../components'\n\nexport function createRootComponent(elements: ElementData[], rootId?: string) {\n return {\n key: rootId ?? randomUUID(),\n type: MakeswiftComponentType.Root,\n props: {\n children: {\n columns: [\n {\n deviceId: 'desktop',\n value: {\n count: 12,\n spans: elements?.map(() => [12]),\n },\n },\n ],\n elements,\n },\n },\n }\n}\n\nexport function createMakeswiftPageSnapshot(\n elementData: ElementData,\n partialSnapshot: Partial<MakeswiftPageSnapshot> = {},\n): MakeswiftPageSnapshot {\n return {\n document: {\n id: 'test-page-id',\n site: { id: 'test-site-id' },\n data: elementData,\n snippets: [],\n fonts: [],\n meta: {},\n seo: {},\n localizedPages: [],\n locale: null,\n ...partialSnapshot.document,\n },\n apiOrigin: 'https://test-api-origin.com',\n cacheData: {},\n preview: false,\n localizedResourcesMap: {},\n locale: null,\n ...partialSnapshot,\n }\n}\n"],"mappings":"AAAA,SAAS,kBAAkB;AAG3B,SAAS,8BAA8B;AAEhC,SAAS,oBAAoB,UAAyB,QAAiB;AAC5E,SAAO;AAAA,IACL,KAAK,UAAU,WAAW;AAAA,IAC1B,MAAM,uBAAuB;AAAA,IAC7B,OAAO;AAAA,MACL,UAAU;AAAA,QACR,SAAS;AAAA,UACP;AAAA,YACE,UAAU;AAAA,YACV,OAAO;AAAA,cACL,OAAO;AAAA,cACP,OAAO,UAAU,IAAI,MAAM,CAAC,EAAE,CAAC;AAAA,YACjC;AAAA,UACF;AAAA,QACF;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEO,SAAS,4BACd,aACA,kBAAkD,CAAC,GAC5B;AACvB,SAAO;AAAA,IACL,UAAU;AAAA,MACR,IAAI;AAAA,MACJ,MAAM,EAAE,IAAI,eAAe;AAAA,MAC3B,MAAM;AAAA,MACN,UAAU,CAAC;AAAA,MACX,OAAO,CAAC;AAAA,MACR,MAAM,CAAC;AAAA,MACP,KAAK,CAAC;AAAA,MACN,gBAAgB,CAAC;AAAA,MACjB,QAAQ;AAAA,MACR,GAAG,gBAAgB;AAAA,IACrB;AAAA,IACA,WAAW;AAAA,IACX,WAAW,CAAC;AAAA,IACZ,SAAS;AAAA,IACT,uBAAuB,CAAC;AAAA,IACxB,QAAQ;AAAA,IACR,GAAG;AAAA,EACL;AACF;","names":[]}
1
+ {"version":3,"sources":["../../../../src/utils/tests/element-data-test-test.ts"],"sourcesContent":["import { randomUUID } from 'crypto'\nimport { MakeswiftPageSnapshot } from '../../next'\nimport { ElementData } from '../../state/react-page'\nimport { MakeswiftComponentType } from '../../components'\n\nexport function createRootComponent(elements: ElementData[], rootId?: string) {\n return {\n key: rootId ?? randomUUID(),\n type: MakeswiftComponentType.Root,\n props: {\n children: {\n columns: [\n {\n deviceId: 'desktop',\n value: {\n count: 12,\n spans: elements?.map(() => [12]),\n },\n },\n ],\n elements,\n },\n },\n }\n}\n\nexport function createMakeswiftPageSnapshot(\n elementData: ElementData,\n partialSnapshot: Partial<MakeswiftPageSnapshot> = {},\n cacheData: MakeswiftPageSnapshot['cacheData'] = {},\n): MakeswiftPageSnapshot {\n return {\n document: {\n id: 'test-page-id',\n site: { id: 'test-site-id' },\n data: elementData,\n snippets: [],\n fonts: [],\n meta: {},\n seo: {},\n localizedPages: [],\n locale: null,\n ...partialSnapshot.document,\n },\n apiOrigin: 'https://test-api-origin.com',\n cacheData,\n preview: false,\n localizedResourcesMap: {},\n locale: null,\n ...partialSnapshot,\n }\n}\n"],"mappings":"AAAA,SAAS,kBAAkB;AAG3B,SAAS,8BAA8B;AAEhC,SAAS,oBAAoB,UAAyB,QAAiB;AAC5E,SAAO;AAAA,IACL,KAAK,UAAU,WAAW;AAAA,IAC1B,MAAM,uBAAuB;AAAA,IAC7B,OAAO;AAAA,MACL,UAAU;AAAA,QACR,SAAS;AAAA,UACP;AAAA,YACE,UAAU;AAAA,YACV,OAAO;AAAA,cACL,OAAO;AAAA,cACP,OAAO,UAAU,IAAI,MAAM,CAAC,EAAE,CAAC;AAAA,YACjC;AAAA,UACF;AAAA,QACF;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEO,SAAS,4BACd,aACA,kBAAkD,CAAC,GACnD,YAAgD,CAAC,GAC1B;AACvB,SAAO;AAAA,IACL,UAAU;AAAA,MACR,IAAI;AAAA,MACJ,MAAM,EAAE,IAAI,eAAe;AAAA,MAC3B,MAAM;AAAA,MACN,UAAU,CAAC;AAAA,MACX,OAAO,CAAC;AAAA,MACR,MAAM,CAAC;AAAA,MACP,KAAK,CAAC;AAAA,MACN,gBAAgB,CAAC;AAAA,MACjB,QAAQ;AAAA,MACR,GAAG,gBAAgB;AAAA,IACrB;AAAA,IACA,WAAW;AAAA,IACX;AAAA,IACA,SAAS;AAAA,IACT,uBAAuB,CAAC;AAAA,IACxB,QAAQ;AAAA,IACR,GAAG;AAAA,EACL;AACF;","names":[]}
@@ -173,6 +173,7 @@ export declare class StyleControl extends PropController<StyleControlMessage> {
173
173
  changeBoxModel(boxModel: BoxModel | null): void;
174
174
  recv(): void;
175
175
  }
176
+ export declare function getStyleSwatchIds(data: StyleControlData): string[];
176
177
  export declare function copyStyleData(value: StyleControlData | undefined, context: CopyContext): StyleControlData | undefined;
177
178
  export {};
178
179
  //# sourceMappingURL=style.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"style.d.ts","sourceRoot":"","sources":["../../../src/controls/style.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"style.d.ts","sourceRoot":"","sources":["../../../src/controls/style.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const server: import("msw/lib/node").SetupServerApi;
2
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/mocks/server.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM,uCAAgB,CAAA"}
@@ -1,3 +1,2 @@
1
- /** @jest-environment jsdom */
2
- import '@testing-library/jest-dom';
1
+ export {};
3
2
  //# sourceMappingURL=checkbox-control.test.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"checkbox-control.test.d.ts","sourceRoot":"","sources":["../../../../../../src/next/components/tests/controls/checkbox-control.test.tsx"],"names":[],"mappings":"AAAA,8BAA8B;AAG9B,OAAO,2BAA2B,CAAA"}
1
+ {"version":3,"file":"checkbox-control.test.d.ts","sourceRoot":"","sources":["../../../../../../src/next/components/tests/controls/checkbox-control.test.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ /** @jest-environment jsdom */
2
+ export {};
3
+ //# sourceMappingURL=color-control.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"color-control.test.d.ts","sourceRoot":"","sources":["../../../../../../src/next/components/tests/controls/color-control.test.tsx"],"names":[],"mappings":"AAAA,8BAA8B"}
@@ -0,0 +1,12 @@
1
+ /** @jest-environment jsdom */
2
+ import '@testing-library/jest-dom';
3
+ import { Data } from '@makeswift/controls';
4
+ import { type MakeswiftPageSnapshot } from '../../../../next';
5
+ import { ControlDefinition, ControlDefinitionData } from '../../../../controls';
6
+ export declare function testPageControlPropRendering<T extends ControlDefinition>(controlDefinition: T, { toData, value, cacheData, expectedRenders, }: {
7
+ toData: (value: Data) => ControlDefinitionData<T>;
8
+ value: Data;
9
+ cacheData?: MakeswiftPageSnapshot['cacheData'];
10
+ expectedRenders?: number;
11
+ }): Promise<void>;
12
+ //# sourceMappingURL=page-control-prop-rendering.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page-control-prop-rendering.d.ts","sourceRoot":"","sources":["../../../../../../src/next/components/tests/controls/page-control-prop-rendering.tsx"],"names":[],"mappings":"AAAA,8BAA8B;AAK9B,OAAO,2BAA2B,CAAA;AAElC,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAY1C,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,kBAAkB,CAAA;AAC7D,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAK/E,wBAAsB,4BAA4B,CAAC,CAAC,SAAS,iBAAiB,EAC5E,iBAAiB,EAAE,CAAC,EACpB,EACE,MAAM,EACN,KAAK,EACL,SAAS,EACT,eAAe,GAChB,EAAE;IACD,MAAM,EAAE,CAAC,KAAK,EAAE,IAAI,KAAK,qBAAqB,CAAC,CAAC,CAAC,CAAA;IACjD,KAAK,EAAE,IAAI,CAAA;IACX,SAAS,CAAC,EAAE,qBAAqB,CAAC,WAAW,CAAC,CAAA;IAC9C,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB,iBA0DF"}
@@ -1 +1 @@
1
- {"version":3,"file":"introspection.d.ts","sourceRoot":"","sources":["../../../src/prop-controllers/introspection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AA+EnD,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,IAAI,EAC/C,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,EACzB,IAAI,EAAE,CAAC,GAAG,SAAS,GAClB,OAAO,EAAE,CA0BX;AAED,wBAAgB,YAAY,CAAC,CAAC,SAAS,IAAI,EACzC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,EACzB,IAAI,EAAE,CAAC,GAAG,SAAS,GAClB,MAAM,GAAG,IAAI,CAUf;AAED,wBAAgB,YAAY,CAAC,CAAC,SAAS,IAAI,EACzC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,EACzB,IAAI,EAAE,CAAC,GAAG,SAAS,GAClB,MAAM,EAAE,CA0DV;AAED,wBAAgB,UAAU,CAAC,CAAC,SAAS,IAAI,EACvC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,EACzB,IAAI,EAAE,CAAC,GAAG,SAAS,GAClB,MAAM,EAAE,CAmCV;AAED,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,IAAI,EAC7C,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,EACzB,IAAI,EAAE,CAAC,GAAG,SAAS,GAClB,MAAM,EAAE,CA+BV;AAED,wBAAgB,WAAW,CAAC,CAAC,SAAS,IAAI,EACxC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,EACzB,IAAI,EAAE,CAAC,GAAG,SAAS,GAClB,MAAM,EAAE,CAWV;AAED,wBAAgB,UAAU,CAAC,CAAC,SAAS,IAAI,EACvC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,EACzB,IAAI,EAAE,CAAC,GAAG,SAAS,GAClB,MAAM,EAAE,CAkDV"}
1
+ {"version":3,"file":"introspection.d.ts","sourceRoot":"","sources":["../../../src/prop-controllers/introspection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAkFnD,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,IAAI,EAC/C,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,EACzB,IAAI,EAAE,CAAC,GAAG,SAAS,GAClB,OAAO,EAAE,CA0BX;AAED,wBAAgB,YAAY,CAAC,CAAC,SAAS,IAAI,EACzC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,EACzB,IAAI,EAAE,CAAC,GAAG,SAAS,GAClB,MAAM,GAAG,IAAI,CAUf;AAED,wBAAgB,YAAY,CAAC,CAAC,SAAS,IAAI,EACzC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,EACzB,IAAI,EAAE,CAAC,GAAG,SAAS,GAClB,MAAM,EAAE,CA8DV;AAED,wBAAgB,UAAU,CAAC,CAAC,SAAS,IAAI,EACvC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,EACzB,IAAI,EAAE,CAAC,GAAG,SAAS,GAClB,MAAM,EAAE,CAmCV;AAED,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,IAAI,EAC7C,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,EACzB,IAAI,EAAE,CAAC,GAAG,SAAS,GAClB,MAAM,EAAE,CA+BV;AAED,wBAAgB,WAAW,CAAC,CAAC,SAAS,IAAI,EACxC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,EACzB,IAAI,EAAE,CAAC,GAAG,SAAS,GAClB,MAAM,EAAE,CAWV;AAED,wBAAgB,UAAU,CAAC,CAAC,SAAS,IAAI,EACvC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,EACzB,IAAI,EAAE,CAAC,GAAG,SAAS,GAClB,MAAM,EAAE,CAkDV"}
@@ -16,5 +16,5 @@ export declare function createRootComponent(elements: ElementData[], rootId?: st
16
16
  };
17
17
  };
18
18
  };
19
- export declare function createMakeswiftPageSnapshot(elementData: ElementData, partialSnapshot?: Partial<MakeswiftPageSnapshot>): MakeswiftPageSnapshot;
19
+ export declare function createMakeswiftPageSnapshot(elementData: ElementData, partialSnapshot?: Partial<MakeswiftPageSnapshot>, cacheData?: MakeswiftPageSnapshot['cacheData']): MakeswiftPageSnapshot;
20
20
  //# sourceMappingURL=element-data-test-test.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"element-data-test-test.d.ts","sourceRoot":"","sources":["../../../../src/utils/tests/element-data-test-test.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAGpD,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,MAAM,CAAC,EAAE,MAAM;;;;;;;;;;;;;;;EAmB3E;AAED,wBAAgB,2BAA2B,CACzC,WAAW,EAAE,WAAW,EACxB,eAAe,GAAE,OAAO,CAAC,qBAAqB,CAAM,GACnD,qBAAqB,CAqBvB"}
1
+ {"version":3,"file":"element-data-test-test.d.ts","sourceRoot":"","sources":["../../../../src/utils/tests/element-data-test-test.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAGpD,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,MAAM,CAAC,EAAE,MAAM;;;;;;;;;;;;;;;EAmB3E;AAED,wBAAgB,2BAA2B,CACzC,WAAW,EAAE,WAAW,EACxB,eAAe,GAAE,OAAO,CAAC,qBAAqB,CAAM,EACpD,SAAS,GAAE,qBAAqB,CAAC,WAAW,CAAM,GACjD,qBAAqB,CAqBvB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@makeswift/runtime",
3
- "version": "0.19.2-canary.0",
3
+ "version": "0.19.2-canary.1",
4
4
  "license": "MIT",
5
5
  "files": [
6
6
  "dist",
@@ -172,7 +172,8 @@
172
172
  "slate-hyperscript": "^0.77.0",
173
173
  "slate-react": "^0.91.7",
174
174
  "tsup": "^8.0.1",
175
- "typescript": "^5.1.6"
175
+ "typescript": "^5.1.6",
176
+ "undici": "^6.19.2"
176
177
  },
177
178
  "scripts": {
178
179
  "dev": "concurrently -k 'tsc --watch --preserveWatchOutput' 'tsup --watch'",