@wordpress/global-styles-ui 1.17.0 → 1.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (126) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/build/block-preview-panel.cjs +36 -3
  3. package/build/block-preview-panel.cjs.map +3 -3
  4. package/build/font-library/font-collection.cjs +0 -1
  5. package/build/font-library/font-collection.cjs.map +2 -2
  6. package/build/font-sizes/rename-font-size-dialog.cjs +0 -1
  7. package/build/font-sizes/rename-font-size-dialog.cjs.map +2 -2
  8. package/build/preview-wrapper.cjs +11 -0
  9. package/build/preview-wrapper.cjs.map +2 -2
  10. package/build/screen-block.cjs +35 -23
  11. package/build/screen-block.cjs.map +2 -2
  12. package/build/screen-color-palette.cjs +8 -10
  13. package/build/screen-color-palette.cjs.map +3 -3
  14. package/build/screen-typography-element.cjs +0 -1
  15. package/build/screen-typography-element.cjs.map +2 -2
  16. package/build/shadows-edit-panel.cjs +0 -3
  17. package/build/shadows-edit-panel.cjs.map +2 -2
  18. package/build/size-control/index.cjs +0 -2
  19. package/build/size-control/index.cjs.map +2 -2
  20. package/build/utils.cjs +7 -2
  21. package/build/utils.cjs.map +3 -3
  22. package/build-module/block-preview-panel.mjs +40 -4
  23. package/build-module/block-preview-panel.mjs.map +2 -2
  24. package/build-module/font-library/font-collection.mjs +0 -1
  25. package/build-module/font-library/font-collection.mjs.map +2 -2
  26. package/build-module/font-sizes/rename-font-size-dialog.mjs +0 -1
  27. package/build-module/font-sizes/rename-font-size-dialog.mjs.map +2 -2
  28. package/build-module/preview-wrapper.mjs +11 -0
  29. package/build-module/preview-wrapper.mjs.map +2 -2
  30. package/build-module/screen-block.mjs +35 -23
  31. package/build-module/screen-block.mjs.map +2 -2
  32. package/build-module/screen-color-palette.mjs +8 -10
  33. package/build-module/screen-color-palette.mjs.map +2 -2
  34. package/build-module/screen-typography-element.mjs +0 -1
  35. package/build-module/screen-typography-element.mjs.map +2 -2
  36. package/build-module/shadows-edit-panel.mjs +0 -3
  37. package/build-module/shadows-edit-panel.mjs.map +2 -2
  38. package/build-module/size-control/index.mjs +0 -2
  39. package/build-module/size-control/index.mjs.map +2 -2
  40. package/build-module/utils.mjs +11 -3
  41. package/build-module/utils.mjs.map +2 -2
  42. package/build-style/style-rtl.css +21 -7
  43. package/build-style/style.css +21 -7
  44. package/build-types/background-panel.d.ts +0 -3
  45. package/build-types/background-panel.d.ts.map +1 -1
  46. package/build-types/block-preview-panel.d.ts +5 -4
  47. package/build-types/block-preview-panel.d.ts.map +1 -1
  48. package/build-types/confirm-reset-shadow-dialog.d.ts +1 -1
  49. package/build-types/confirm-reset-shadow-dialog.d.ts.map +1 -1
  50. package/build-types/dimensions-panel.d.ts +0 -3
  51. package/build-types/dimensions-panel.d.ts.map +1 -1
  52. package/build-types/font-library/collection-font-variant.d.ts +1 -1
  53. package/build-types/font-library/collection-font-variant.d.ts.map +1 -1
  54. package/build-types/font-library/font-card.d.ts +1 -1
  55. package/build-types/font-library/font-card.d.ts.map +1 -1
  56. package/build-types/font-library/font-collection.d.ts.map +1 -1
  57. package/build-types/font-library/font-library.d.ts +1 -1
  58. package/build-types/font-library/font-library.d.ts.map +1 -1
  59. package/build-types/font-library/library-font-variant.d.ts +1 -1
  60. package/build-types/font-library/library-font-variant.d.ts.map +1 -1
  61. package/build-types/font-library/modal.d.ts +1 -1
  62. package/build-types/font-library/modal.d.ts.map +1 -1
  63. package/build-types/font-sizes/confirm-delete-font-size-dialog.d.ts +1 -1
  64. package/build-types/font-sizes/confirm-delete-font-size-dialog.d.ts.map +1 -1
  65. package/build-types/font-sizes/confirm-reset-font-sizes-dialog.d.ts +1 -1
  66. package/build-types/font-sizes/confirm-reset-font-sizes-dialog.d.ts.map +1 -1
  67. package/build-types/font-sizes/font-size-preview.d.ts +0 -3
  68. package/build-types/font-sizes/font-size-preview.d.ts.map +1 -1
  69. package/build-types/font-sizes/rename-font-size-dialog.d.ts +1 -1
  70. package/build-types/font-sizes/rename-font-size-dialog.d.ts.map +1 -1
  71. package/build-types/global-styles-ui.d.ts +1 -1
  72. package/build-types/global-styles-ui.d.ts.map +1 -1
  73. package/build-types/gradients-palette-panel.d.ts +1 -1
  74. package/build-types/gradients-palette-panel.d.ts.map +1 -1
  75. package/build-types/highlighted-colors.d.ts +1 -1
  76. package/build-types/highlighted-colors.d.ts.map +1 -1
  77. package/build-types/pagination/index.d.ts +1 -1
  78. package/build-types/pagination/index.d.ts.map +1 -1
  79. package/build-types/preview-styles.d.ts +1 -1
  80. package/build-types/preview-styles.d.ts.map +1 -1
  81. package/build-types/preview-wrapper.d.ts +1 -1
  82. package/build-types/preview-wrapper.d.ts.map +1 -1
  83. package/build-types/provider.d.ts +1 -1
  84. package/build-types/provider.d.ts.map +1 -1
  85. package/build-types/screen-block.d.ts.map +1 -1
  86. package/build-types/screen-color-palette.d.ts.map +1 -1
  87. package/build-types/screen-header.d.ts +1 -1
  88. package/build-types/screen-header.d.ts.map +1 -1
  89. package/build-types/screen-revisions/revisions-buttons.d.ts +1 -1
  90. package/build-types/screen-revisions/revisions-buttons.d.ts.map +1 -1
  91. package/build-types/screen-revisions/use-global-styles-revisions.d.ts +1 -1
  92. package/build-types/screen-revisions/use-global-styles-revisions.d.ts.map +1 -1
  93. package/build-types/screen-typography-element.d.ts.map +1 -1
  94. package/build-types/shadows-edit-panel.d.ts.map +1 -1
  95. package/build-types/size-control/index.d.ts.map +1 -1
  96. package/build-types/style-variations-container.d.ts +1 -1
  97. package/build-types/style-variations-container.d.ts.map +1 -1
  98. package/build-types/typography-example.d.ts +1 -1
  99. package/build-types/typography-example.d.ts.map +1 -1
  100. package/build-types/typography-panel.d.ts +1 -4
  101. package/build-types/typography-panel.d.ts.map +1 -1
  102. package/build-types/typography-preview.d.ts +1 -1
  103. package/build-types/typography-preview.d.ts.map +1 -1
  104. package/build-types/utils.d.ts +3 -2
  105. package/build-types/utils.d.ts.map +1 -1
  106. package/build-types/variations/variation.d.ts +1 -1
  107. package/build-types/variations/variation.d.ts.map +1 -1
  108. package/build-types/variations/variations-color.d.ts +1 -1
  109. package/build-types/variations/variations-color.d.ts.map +1 -1
  110. package/build-types/variations/variations-typography.d.ts +1 -1
  111. package/build-types/variations/variations-typography.d.ts.map +1 -1
  112. package/package.json +22 -22
  113. package/src/block-preview-panel.tsx +56 -4
  114. package/src/font-library/font-collection.tsx +0 -1
  115. package/src/font-library/style.scss +4 -4
  116. package/src/font-sizes/rename-font-size-dialog.tsx +0 -1
  117. package/src/preview-wrapper.tsx +10 -0
  118. package/src/screen-block.tsx +40 -25
  119. package/src/screen-color-palette.tsx +15 -19
  120. package/src/screen-revisions/style.scss +1 -1
  121. package/src/screen-typography-element.tsx +0 -1
  122. package/src/shadows-edit-panel.tsx +0 -3
  123. package/src/size-control/index.tsx +0 -2
  124. package/src/stories/index.story.jsx +1 -1
  125. package/src/style.scss +10 -2
  126. package/src/utils.ts +26 -4
@@ -34,13 +34,11 @@ __export(screen_color_palette_exports, {
34
34
  });
35
35
  module.exports = __toCommonJS(screen_color_palette_exports);
36
36
  var import_i18n = require("@wordpress/i18n");
37
- var import_components = require("@wordpress/components");
37
+ var import_ui = require("@wordpress/ui");
38
38
  var import_screen_header = require("./screen-header.cjs");
39
39
  var import_color_palette_panel = __toESM(require("./color-palette-panel.cjs"));
40
40
  var import_gradients_palette_panel = __toESM(require("./gradients-palette-panel.cjs"));
41
- var import_lock_unlock = require("./lock-unlock.cjs");
42
41
  var import_jsx_runtime = require("react/jsx-runtime");
43
- var { Tabs } = (0, import_lock_unlock.unlock)(import_components.privateApis);
44
42
  function ScreenColorPalette({ name }) {
45
43
  return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
46
44
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
@@ -52,13 +50,13 @@ function ScreenColorPalette({ name }) {
52
50
  )
53
51
  }
54
52
  ),
55
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Tabs, { children: [
56
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Tabs.TabList, { children: [
57
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Tabs.Tab, { tabId: "color", children: (0, import_i18n.__)("Color") }),
58
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Tabs.Tab, { tabId: "gradient", children: (0, import_i18n.__)("Gradient") })
59
- ] }),
60
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Tabs.TabPanel, { tabId: "color", focusable: false, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_color_palette_panel.default, { name }) }),
61
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Tabs.TabPanel, { tabId: "gradient", focusable: false, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_gradients_palette_panel.default, { name }) })
53
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_ui.Tabs.Root, { defaultValue: "color", children: [
54
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "global-styles-ui-color-palette__tablist-container", children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_ui.Tabs.List, { className: "global-styles-ui-color-palette__tablist", children: [
55
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ui.Tabs.Tab, { value: "color", children: (0, import_i18n.__)("Color") }),
56
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ui.Tabs.Tab, { value: "gradient", children: (0, import_i18n.__)("Gradient") })
57
+ ] }) }),
58
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ui.Tabs.Panel, { value: "color", tabIndex: -1, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_color_palette_panel.default, { name }) }),
59
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ui.Tabs.Panel, { value: "gradient", tabIndex: -1, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_gradients_palette_panel.default, { name }) })
62
60
  ] })
63
61
  ] });
64
62
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/screen-color-palette.tsx"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\n// @ts-ignore - WordPress private APIs\nimport { privateApis as componentsPrivateApis } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport { ScreenHeader } from './screen-header';\nimport ColorPalettePanel from './color-palette-panel';\nimport GradientPalettePanel from './gradients-palette-panel';\n\n/**\n * External dependencies\n */\nimport { unlock } from './lock-unlock';\n\nconst { Tabs } = unlock( componentsPrivateApis );\n\nfunction ScreenColorPalette( { name }: { name?: string } ) {\n\treturn (\n\t\t<>\n\t\t\t<ScreenHeader\n\t\t\t\ttitle={ __( 'Edit palette' ) }\n\t\t\t\tdescription={ __(\n\t\t\t\t\t'The combination of colors used across the site and in color pickers.'\n\t\t\t\t) }\n\t\t\t/>\n\t\t\t<Tabs>\n\t\t\t\t<Tabs.TabList>\n\t\t\t\t\t<Tabs.Tab tabId=\"color\">{ __( 'Color' ) }</Tabs.Tab>\n\t\t\t\t\t<Tabs.Tab tabId=\"gradient\">{ __( 'Gradient' ) }</Tabs.Tab>\n\t\t\t\t</Tabs.TabList>\n\t\t\t\t<Tabs.TabPanel tabId=\"color\" focusable={ false }>\n\t\t\t\t\t<ColorPalettePanel name={ name } />\n\t\t\t\t</Tabs.TabPanel>\n\t\t\t\t<Tabs.TabPanel tabId=\"gradient\" focusable={ false }>\n\t\t\t\t\t<GradientPalettePanel name={ name } />\n\t\t\t\t</Tabs.TabPanel>\n\t\t\t</Tabs>\n\t\t</>\n\t);\n}\n\nexport default ScreenColorPalette;\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,kBAAmB;AAEnB,wBAAqD;AAKrD,2BAA6B;AAC7B,iCAA8B;AAC9B,qCAAiC;AAKjC,yBAAuB;AAMrB;AAJF,IAAM,EAAE,KAAK,QAAI,2BAAQ,kBAAAA,WAAsB;AAE/C,SAAS,mBAAoB,EAAE,KAAK,GAAuB;AAC1D,SACC,4EACC;AAAA;AAAA,MAAC;AAAA;AAAA,QACA,WAAQ,gBAAI,cAAe;AAAA,QAC3B,iBAAc;AAAA,UACb;AAAA,QACD;AAAA;AAAA,IACD;AAAA,IACA,6CAAC,QACA;AAAA,mDAAC,KAAK,SAAL,EACA;AAAA,oDAAC,KAAK,KAAL,EAAS,OAAM,SAAU,8BAAI,OAAQ,GAAG;AAAA,QACzC,4CAAC,KAAK,KAAL,EAAS,OAAM,YAAa,8BAAI,UAAW,GAAG;AAAA,SAChD;AAAA,MACA,4CAAC,KAAK,UAAL,EAAc,OAAM,SAAQ,WAAY,OACxC,sDAAC,2BAAAC,SAAA,EAAkB,MAAc,GAClC;AAAA,MACA,4CAAC,KAAK,UAAL,EAAc,OAAM,YAAW,WAAY,OAC3C,sDAAC,+BAAAC,SAAA,EAAqB,MAAc,GACrC;AAAA,OACD;AAAA,KACD;AAEF;AAEA,IAAO,+BAAQ;",
6
- "names": ["componentsPrivateApis", "ColorPalettePanel", "GradientPalettePanel"]
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { Tabs } from '@wordpress/ui';\n\n/**\n * Internal dependencies\n */\nimport { ScreenHeader } from './screen-header';\nimport ColorPalettePanel from './color-palette-panel';\nimport GradientPalettePanel from './gradients-palette-panel';\n\nfunction ScreenColorPalette( { name }: { name?: string } ) {\n\treturn (\n\t\t<>\n\t\t\t<ScreenHeader\n\t\t\t\ttitle={ __( 'Edit palette' ) }\n\t\t\t\tdescription={ __(\n\t\t\t\t\t'The combination of colors used across the site and in color pickers.'\n\t\t\t\t) }\n\t\t\t/>\n\t\t\t<Tabs.Root defaultValue=\"color\">\n\t\t\t\t<div className=\"global-styles-ui-color-palette__tablist-container\">\n\t\t\t\t\t<Tabs.List className=\"global-styles-ui-color-palette__tablist\">\n\t\t\t\t\t\t<Tabs.Tab value=\"color\">{ __( 'Color' ) }</Tabs.Tab>\n\t\t\t\t\t\t<Tabs.Tab value=\"gradient\">\n\t\t\t\t\t\t\t{ __( 'Gradient' ) }\n\t\t\t\t\t\t</Tabs.Tab>\n\t\t\t\t\t</Tabs.List>\n\t\t\t\t</div>\n\t\t\t\t<Tabs.Panel value=\"color\" tabIndex={ -1 }>\n\t\t\t\t\t<ColorPalettePanel name={ name } />\n\t\t\t\t</Tabs.Panel>\n\t\t\t\t<Tabs.Panel value=\"gradient\" tabIndex={ -1 }>\n\t\t\t\t\t<GradientPalettePanel name={ name } />\n\t\t\t\t</Tabs.Panel>\n\t\t\t</Tabs.Root>\n\t\t</>\n\t);\n}\n\nexport default ScreenColorPalette;\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,kBAAmB;AACnB,gBAAqB;AAKrB,2BAA6B;AAC7B,iCAA8B;AAC9B,qCAAiC;AAI/B;AAFF,SAAS,mBAAoB,EAAE,KAAK,GAAuB;AAC1D,SACC,4EACC;AAAA;AAAA,MAAC;AAAA;AAAA,QACA,WAAQ,gBAAI,cAAe;AAAA,QAC3B,iBAAc;AAAA,UACb;AAAA,QACD;AAAA;AAAA,IACD;AAAA,IACA,6CAAC,eAAK,MAAL,EAAU,cAAa,SACvB;AAAA,kDAAC,SAAI,WAAU,qDACd,uDAAC,eAAK,MAAL,EAAU,WAAU,2CACpB;AAAA,oDAAC,eAAK,KAAL,EAAS,OAAM,SAAU,8BAAI,OAAQ,GAAG;AAAA,QACzC,4CAAC,eAAK,KAAL,EAAS,OAAM,YACb,8BAAI,UAAW,GAClB;AAAA,SACD,GACD;AAAA,MACA,4CAAC,eAAK,OAAL,EAAW,OAAM,SAAQ,UAAW,IACpC,sDAAC,2BAAAA,SAAA,EAAkB,MAAc,GAClC;AAAA,MACA,4CAAC,eAAK,OAAL,EAAW,OAAM,YAAW,UAAW,IACvC,sDAAC,+BAAAC,SAAA,EAAqB,MAAc,GACrC;AAAA,OACD;AAAA,KACD;AAEF;AAEA,IAAO,+BAAQ;",
6
+ "names": ["ColorPalettePanel", "GradientPalettePanel"]
7
7
  }
@@ -87,7 +87,6 @@ function ScreenTypographyElement({ element }) {
87
87
  value: headingLevel,
88
88
  onChange: (value) => setHeadingLevel(value),
89
89
  isBlock: true,
90
- size: "__unstable-large",
91
90
  children: [
92
91
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
93
92
  import_components.__experimentalToggleGroupControlOption,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/screen-typography-element.tsx"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __, _x } from '@wordpress/i18n';\nimport {\n\t__experimentalToggleGroupControl as ToggleGroupControl,\n\t__experimentalToggleGroupControlOption as ToggleGroupControlOption,\n\t__experimentalSpacer as Spacer,\n} from '@wordpress/components';\nimport { useState } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport TypographyPanel from './typography-panel';\nimport { ScreenHeader } from './screen-header';\nimport TypographyPreview from './typography-preview';\n\nconst elements = {\n\ttext: {\n\t\tdescription: __( 'Manage the fonts used on the site.' ),\n\t\ttitle: __( 'Text' ),\n\t},\n\tlink: {\n\t\tdescription: __( 'Manage the fonts and typography used on the links.' ),\n\t\ttitle: __( 'Links' ),\n\t},\n\theading: {\n\t\tdescription: __( 'Manage the fonts and typography used on headings.' ),\n\t\ttitle: __( 'Headings' ),\n\t},\n\tcaption: {\n\t\tdescription: __( 'Manage the fonts and typography used on captions.' ),\n\t\ttitle: __( 'Captions' ),\n\t},\n\tbutton: {\n\t\tdescription: __( 'Manage the fonts and typography used on buttons.' ),\n\t\ttitle: __( 'Buttons' ),\n\t},\n};\n\ninterface ScreenTypographyElementProps {\n\telement: keyof typeof elements;\n}\n\nfunction ScreenTypographyElement( { element }: ScreenTypographyElementProps ) {\n\tconst [ headingLevel, setHeadingLevel ] = useState( 'heading' );\n\n\treturn (\n\t\t<>\n\t\t\t<ScreenHeader\n\t\t\t\ttitle={ elements[ element ].title }\n\t\t\t\tdescription={ elements[ element ].description }\n\t\t\t/>\n\t\t\t<Spacer marginX={ 4 }>\n\t\t\t\t<TypographyPreview\n\t\t\t\t\telement={ element }\n\t\t\t\t\theadingLevel={ headingLevel }\n\t\t\t\t/>\n\t\t\t</Spacer>\n\t\t\t{ element === 'heading' && (\n\t\t\t\t<Spacer marginX={ 4 } marginBottom=\"1em\">\n\t\t\t\t\t<ToggleGroupControl\n\t\t\t\t\t\tlabel={ __( 'Select heading level' ) }\n\t\t\t\t\t\thideLabelFromVision\n\t\t\t\t\t\tvalue={ headingLevel }\n\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\tsetHeadingLevel( value as string )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tisBlock\n\t\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\t\t\tvalue=\"heading\"\n\t\t\t\t\t\t\tshowTooltip\n\t\t\t\t\t\t\taria-label={ __( 'All headings' ) }\n\t\t\t\t\t\t\tlabel={ _x( 'All', 'heading levels' ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\t\t\tvalue=\"h1\"\n\t\t\t\t\t\t\tshowTooltip\n\t\t\t\t\t\t\taria-label={ __( 'Heading 1' ) }\n\t\t\t\t\t\t\tlabel={ __( 'H1' ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\t\t\tvalue=\"h2\"\n\t\t\t\t\t\t\tshowTooltip\n\t\t\t\t\t\t\taria-label={ __( 'Heading 2' ) }\n\t\t\t\t\t\t\tlabel={ __( 'H2' ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\t\t\tvalue=\"h3\"\n\t\t\t\t\t\t\tshowTooltip\n\t\t\t\t\t\t\taria-label={ __( 'Heading 3' ) }\n\t\t\t\t\t\t\tlabel={ __( 'H3' ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\t\t\tvalue=\"h4\"\n\t\t\t\t\t\t\tshowTooltip\n\t\t\t\t\t\t\taria-label={ __( 'Heading 4' ) }\n\t\t\t\t\t\t\tlabel={ __( 'H4' ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\t\t\tvalue=\"h5\"\n\t\t\t\t\t\t\tshowTooltip\n\t\t\t\t\t\t\taria-label={ __( 'Heading 5' ) }\n\t\t\t\t\t\t\tlabel={ __( 'H5' ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\t\t\tvalue=\"h6\"\n\t\t\t\t\t\t\tshowTooltip\n\t\t\t\t\t\t\taria-label={ __( 'Heading 6' ) }\n\t\t\t\t\t\t\tlabel={ __( 'H6' ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</ToggleGroupControl>\n\t\t\t\t</Spacer>\n\t\t\t) }\n\t\t\t<TypographyPanel\n\t\t\t\telement={ element }\n\t\t\t\theadingLevel={ headingLevel }\n\t\t\t/>\n\t\t</>\n\t);\n}\n\nexport default ScreenTypographyElement;\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __, _x } from '@wordpress/i18n';\nimport {\n\t__experimentalToggleGroupControl as ToggleGroupControl,\n\t__experimentalToggleGroupControlOption as ToggleGroupControlOption,\n\t__experimentalSpacer as Spacer,\n} from '@wordpress/components';\nimport { useState } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport TypographyPanel from './typography-panel';\nimport { ScreenHeader } from './screen-header';\nimport TypographyPreview from './typography-preview';\n\nconst elements = {\n\ttext: {\n\t\tdescription: __( 'Manage the fonts used on the site.' ),\n\t\ttitle: __( 'Text' ),\n\t},\n\tlink: {\n\t\tdescription: __( 'Manage the fonts and typography used on the links.' ),\n\t\ttitle: __( 'Links' ),\n\t},\n\theading: {\n\t\tdescription: __( 'Manage the fonts and typography used on headings.' ),\n\t\ttitle: __( 'Headings' ),\n\t},\n\tcaption: {\n\t\tdescription: __( 'Manage the fonts and typography used on captions.' ),\n\t\ttitle: __( 'Captions' ),\n\t},\n\tbutton: {\n\t\tdescription: __( 'Manage the fonts and typography used on buttons.' ),\n\t\ttitle: __( 'Buttons' ),\n\t},\n};\n\ninterface ScreenTypographyElementProps {\n\telement: keyof typeof elements;\n}\n\nfunction ScreenTypographyElement( { element }: ScreenTypographyElementProps ) {\n\tconst [ headingLevel, setHeadingLevel ] = useState( 'heading' );\n\n\treturn (\n\t\t<>\n\t\t\t<ScreenHeader\n\t\t\t\ttitle={ elements[ element ].title }\n\t\t\t\tdescription={ elements[ element ].description }\n\t\t\t/>\n\t\t\t<Spacer marginX={ 4 }>\n\t\t\t\t<TypographyPreview\n\t\t\t\t\telement={ element }\n\t\t\t\t\theadingLevel={ headingLevel }\n\t\t\t\t/>\n\t\t\t</Spacer>\n\t\t\t{ element === 'heading' && (\n\t\t\t\t<Spacer marginX={ 4 } marginBottom=\"1em\">\n\t\t\t\t\t<ToggleGroupControl\n\t\t\t\t\t\tlabel={ __( 'Select heading level' ) }\n\t\t\t\t\t\thideLabelFromVision\n\t\t\t\t\t\tvalue={ headingLevel }\n\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\tsetHeadingLevel( value as string )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tisBlock\n\t\t\t\t\t>\n\t\t\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\t\t\tvalue=\"heading\"\n\t\t\t\t\t\t\tshowTooltip\n\t\t\t\t\t\t\taria-label={ __( 'All headings' ) }\n\t\t\t\t\t\t\tlabel={ _x( 'All', 'heading levels' ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\t\t\tvalue=\"h1\"\n\t\t\t\t\t\t\tshowTooltip\n\t\t\t\t\t\t\taria-label={ __( 'Heading 1' ) }\n\t\t\t\t\t\t\tlabel={ __( 'H1' ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\t\t\tvalue=\"h2\"\n\t\t\t\t\t\t\tshowTooltip\n\t\t\t\t\t\t\taria-label={ __( 'Heading 2' ) }\n\t\t\t\t\t\t\tlabel={ __( 'H2' ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\t\t\tvalue=\"h3\"\n\t\t\t\t\t\t\tshowTooltip\n\t\t\t\t\t\t\taria-label={ __( 'Heading 3' ) }\n\t\t\t\t\t\t\tlabel={ __( 'H3' ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\t\t\tvalue=\"h4\"\n\t\t\t\t\t\t\tshowTooltip\n\t\t\t\t\t\t\taria-label={ __( 'Heading 4' ) }\n\t\t\t\t\t\t\tlabel={ __( 'H4' ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\t\t\tvalue=\"h5\"\n\t\t\t\t\t\t\tshowTooltip\n\t\t\t\t\t\t\taria-label={ __( 'Heading 5' ) }\n\t\t\t\t\t\t\tlabel={ __( 'H5' ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\t\t\tvalue=\"h6\"\n\t\t\t\t\t\t\tshowTooltip\n\t\t\t\t\t\t\taria-label={ __( 'Heading 6' ) }\n\t\t\t\t\t\t\tlabel={ __( 'H6' ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</ToggleGroupControl>\n\t\t\t\t</Spacer>\n\t\t\t) }\n\t\t\t<TypographyPanel\n\t\t\t\telement={ element }\n\t\t\t\theadingLevel={ headingLevel }\n\t\t\t/>\n\t\t</>\n\t);\n}\n\nexport default ScreenTypographyElement;\n"],
5
+ "mappings": "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",
6
6
  "names": ["Spacer", "TypographyPreview", "ToggleGroupControl", "ToggleGroupControlOption", "TypographyPanel"]
7
7
  }
@@ -208,7 +208,6 @@ function ShadowsEditPanel() {
208
208
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
209
209
  import_components.__experimentalInputControl,
210
210
  {
211
- __next40pxDefaultSize: true,
212
211
  autoComplete: "off",
213
212
  label: (0, import_i18n.__)("Name"),
214
213
  placeholder: (0, import_i18n.__)("Shadow name"),
@@ -427,7 +426,6 @@ function ShadowPopover({ shadowObj, onChange }) {
427
426
  isBlock: true,
428
427
  onChange: (value) => onShadowChange("inset", value === "inset"),
429
428
  hideLabelFromVision: true,
430
- __next40pxDefaultSize: true,
431
429
  children: [
432
430
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
433
431
  import_components.__experimentalToggleGroupControlOption,
@@ -496,7 +494,6 @@ function ShadowInputControl({
496
494
  import_components.__experimentalUnitControl,
497
495
  {
498
496
  label,
499
- __next40pxDefaultSize: true,
500
497
  value,
501
498
  onChange: onValueChange
502
499
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/shadows-edit-panel.tsx"],
4
- "sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\t__experimentalSpacer as Spacer,\n\t__experimentalItemGroup as ItemGroup,\n\t__experimentalInputControl as InputControl,\n\t__experimentalUnitControl as UnitControl,\n\t__experimentalGrid as Grid,\n\t__experimentalDropdownContentWrapper as DropdownContentWrapper,\n\tuseNavigator,\n\t__experimentalToggleGroupControl as ToggleGroupControl,\n\t__experimentalToggleGroupControlOption as ToggleGroupControlOption,\n\t__experimentalConfirmDialog as ConfirmDialog,\n\tDropdown,\n\tButton,\n\tFlex,\n\tFlexItem,\n\tColorPalette,\n\tModal,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { __, sprintf } from '@wordpress/i18n';\nimport {\n\tplus,\n\tshadow as shadowIcon,\n\treset,\n\tmoreVertical,\n} from '@wordpress/icons';\nimport { useState, useMemo, useEffect, useRef } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { Subtitle } from './subtitle';\nimport { ScreenHeader } from './screen-header';\nimport { ScreenBody } from './screen-body';\nimport { defaultShadow } from './shadows-panel';\nimport {\n\tgetShadowParts,\n\tshadowStringToObject,\n\tshadowObjectToString,\n} from './shadow-utils';\nimport { useSetting } from './hooks';\nimport { unlock } from './lock-unlock';\n\nconst { Menu } = unlock( componentsPrivateApis );\n\nconst customShadowMenuItems = [\n\t{\n\t\tlabel: __( 'Rename' ),\n\t\taction: 'rename',\n\t},\n\t{\n\t\tlabel: __( 'Delete' ),\n\t\taction: 'delete',\n\t},\n];\n\nconst presetShadowMenuItems = [\n\t{\n\t\tlabel: __( 'Reset' ),\n\t\taction: 'reset',\n\t},\n];\n\nexport default function ShadowsEditPanel() {\n\tconst { goBack, params } = useNavigator();\n\tconst { category, slug } = params;\n\n\tconst [ shadows, setShadows ] = useSetting(\n\t\t`shadow.presets.${ category }`\n\t);\n\n\tuseEffect( () => {\n\t\tconst hasCurrentShadow = shadows?.some(\n\t\t\t( shadow: any ) => shadow.slug === slug\n\t\t);\n\t\t// If the shadow being edited doesn't exist anymore in the global styles setting, navigate back\n\t\t// to prevent the user from editing a non-existent shadow entry.\n\t\t// This can happen, for example:\n\t\t// - when the user deletes the shadow\n\t\t// - when the user resets the styles while editing a custom shadow\n\t\t//\n\t\t// The check on the slug is necessary to prevent a double back navigation when the user triggers\n\t\t// a backward navigation by interacting with the screen's UI.\n\t\tif ( !! slug && ! hasCurrentShadow ) {\n\t\t\tgoBack();\n\t\t}\n\t}, [ shadows, slug, goBack ] );\n\n\tconst [ baseShadows ] = useSetting(\n\t\t`shadow.presets.${ category }`,\n\t\tundefined,\n\t\t'base'\n\t);\n\tconst [ selectedShadow, setSelectedShadow ] = useState( () =>\n\t\t( shadows || [] ).find( ( shadow: any ) => shadow.slug === slug )\n\t);\n\tconst baseSelectedShadow = useMemo(\n\t\t() => ( baseShadows || [] ).find( ( b: any ) => b.slug === slug ),\n\t\t[ baseShadows, slug ]\n\t);\n\tconst [ isConfirmDialogVisible, setIsConfirmDialogVisible ] =\n\t\tuseState( false );\n\tconst [ isRenameModalVisible, setIsRenameModalVisible ] = useState( false );\n\tconst [ shadowName, setShadowName ] = useState< string | undefined >(\n\t\tselectedShadow?.name\n\t);\n\n\tif ( ! category || ! slug ) {\n\t\treturn null;\n\t}\n\n\tconst onShadowChange = ( shadow: string ) => {\n\t\tsetSelectedShadow( { ...selectedShadow, shadow } );\n\t\tconst updatedShadows = shadows.map( ( s: any ) =>\n\t\t\ts.slug === slug ? { ...selectedShadow, shadow } : s\n\t\t);\n\t\tsetShadows( updatedShadows );\n\t};\n\n\tconst onMenuClick = ( action: string ) => {\n\t\tif ( action === 'reset' ) {\n\t\t\tconst updatedShadows = shadows.map( ( s: any ) =>\n\t\t\t\ts.slug === slug ? baseSelectedShadow : s\n\t\t\t);\n\t\t\tsetSelectedShadow( baseSelectedShadow );\n\t\t\tsetShadows( updatedShadows );\n\t\t} else if ( action === 'delete' ) {\n\t\t\tsetIsConfirmDialogVisible( true );\n\t\t} else if ( action === 'rename' ) {\n\t\t\tsetIsRenameModalVisible( true );\n\t\t}\n\t};\n\n\tconst handleShadowDelete = () => {\n\t\tsetShadows( shadows.filter( ( s: any ) => s.slug !== slug ) );\n\t};\n\n\tconst handleShadowRename = ( newName: string | undefined ) => {\n\t\tif ( ! newName ) {\n\t\t\treturn;\n\t\t}\n\t\tconst updatedShadows = shadows.map( ( s: any ) =>\n\t\t\ts.slug === slug ? { ...selectedShadow, name: newName } : s\n\t\t);\n\t\tsetSelectedShadow( { ...selectedShadow, name: newName } );\n\t\tsetShadows( updatedShadows );\n\t};\n\n\treturn ! selectedShadow ? (\n\t\t<ScreenHeader title=\"\" />\n\t) : (\n\t\t<>\n\t\t\t<HStack justify=\"space-between\">\n\t\t\t\t<ScreenHeader title={ selectedShadow.name } />\n\t\t\t\t<FlexItem>\n\t\t\t\t\t<Spacer marginTop={ 2 } marginBottom={ 0 } paddingX={ 4 }>\n\t\t\t\t\t\t<Menu>\n\t\t\t\t\t\t\t<Menu.TriggerButton\n\t\t\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\t\ticon={ moreVertical }\n\t\t\t\t\t\t\t\t\t\tlabel={ __( 'Menu' ) }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<Menu.Popover>\n\t\t\t\t\t\t\t\t{ ( category === 'custom'\n\t\t\t\t\t\t\t\t\t? customShadowMenuItems\n\t\t\t\t\t\t\t\t\t: presetShadowMenuItems\n\t\t\t\t\t\t\t\t).map( ( item ) => (\n\t\t\t\t\t\t\t\t\t<Menu.Item\n\t\t\t\t\t\t\t\t\t\tkey={ item.action }\n\t\t\t\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\t\t\t\tonMenuClick( item.action )\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tdisabled={\n\t\t\t\t\t\t\t\t\t\t\titem.action === 'reset' &&\n\t\t\t\t\t\t\t\t\t\t\tselectedShadow.shadow ===\n\t\t\t\t\t\t\t\t\t\t\t\tbaseSelectedShadow?.shadow\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<Menu.ItemLabel>\n\t\t\t\t\t\t\t\t\t\t\t{ item.label }\n\t\t\t\t\t\t\t\t\t\t</Menu.ItemLabel>\n\t\t\t\t\t\t\t\t\t</Menu.Item>\n\t\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t\t</Menu.Popover>\n\t\t\t\t\t\t</Menu>\n\t\t\t\t\t</Spacer>\n\t\t\t\t</FlexItem>\n\t\t\t</HStack>\n\t\t\t<ScreenBody>\n\t\t\t\t<ShadowsPreview shadow={ selectedShadow.shadow } />\n\t\t\t\t<ShadowEditor\n\t\t\t\t\tshadow={ selectedShadow.shadow }\n\t\t\t\t\tonChange={ onShadowChange }\n\t\t\t\t/>\n\t\t\t</ScreenBody>\n\t\t\t{ isConfirmDialogVisible && (\n\t\t\t\t<ConfirmDialog\n\t\t\t\t\tisOpen\n\t\t\t\t\tonConfirm={ () => {\n\t\t\t\t\t\thandleShadowDelete();\n\t\t\t\t\t\tsetIsConfirmDialogVisible( false );\n\t\t\t\t\t} }\n\t\t\t\t\tonCancel={ () => {\n\t\t\t\t\t\tsetIsConfirmDialogVisible( false );\n\t\t\t\t\t} }\n\t\t\t\t\tconfirmButtonText={ __( 'Delete' ) }\n\t\t\t\t\tsize=\"medium\"\n\t\t\t\t>\n\t\t\t\t\t{ sprintf(\n\t\t\t\t\t\t/* translators: %s: Name of the shadow preset. */\n\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t'Are you sure you want to delete \"%s\" shadow preset?'\n\t\t\t\t\t\t),\n\t\t\t\t\t\tselectedShadow.name\n\t\t\t\t\t) }\n\t\t\t\t</ConfirmDialog>\n\t\t\t) }\n\t\t\t{ isRenameModalVisible && (\n\t\t\t\t<Modal\n\t\t\t\t\ttitle={ __( 'Rename' ) }\n\t\t\t\t\tonRequestClose={ () => setIsRenameModalVisible( false ) }\n\t\t\t\t\tsize=\"small\"\n\t\t\t\t>\n\t\t\t\t\t<form\n\t\t\t\t\t\tonSubmit={ ( event ) => {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\thandleShadowRename( shadowName );\n\t\t\t\t\t\t\tsetIsRenameModalVisible( false );\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t<InputControl\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\t\t\tlabel={ __( 'Name' ) }\n\t\t\t\t\t\t\tplaceholder={ __( 'Shadow name' ) }\n\t\t\t\t\t\t\tvalue={ shadowName ?? '' }\n\t\t\t\t\t\t\tonChange={ setShadowName }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<Spacer marginBottom={ 6 } />\n\t\t\t\t\t\t<Flex\n\t\t\t\t\t\t\tclassName=\"block-editor-shadow-edit-modal__actions\"\n\t\t\t\t\t\t\tjustify=\"flex-end\"\n\t\t\t\t\t\t\texpanded={ false }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\t\t\tsetIsRenameModalVisible( false )\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ __( 'Save' ) }\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t</Flex>\n\t\t\t\t\t</form>\n\t\t\t\t</Modal>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\ninterface ShadowsPreviewProps {\n\tshadow: string;\n}\n\nfunction ShadowsPreview( { shadow }: ShadowsPreviewProps ) {\n\tconst shadowStyle = {\n\t\tboxShadow: shadow,\n\t};\n\n\treturn (\n\t\t<Spacer marginBottom={ 4 } marginTop={ -2 }>\n\t\t\t<HStack\n\t\t\t\talignment=\"center\"\n\t\t\t\tjustify=\"center\"\n\t\t\t\tclassName=\"global-styles-ui__shadow-preview-panel\"\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tclassName=\"global-styles-ui__shadow-preview-block\"\n\t\t\t\t\tstyle={ shadowStyle }\n\t\t\t\t/>\n\t\t\t</HStack>\n\t\t</Spacer>\n\t);\n}\n\ninterface ShadowEditorProps {\n\tshadow: string;\n\tonChange: ( shadow: string ) => void;\n}\n\nfunction ShadowEditor( { shadow, onChange }: ShadowEditorProps ) {\n\tconst addShadowButtonRef = useRef< HTMLButtonElement >( null );\n\tconst shadowParts = useMemo( () => getShadowParts( shadow ), [ shadow ] );\n\n\tconst onChangeShadowPart = ( index: number, part: string ) => {\n\t\tconst newShadowParts = [ ...shadowParts ];\n\t\tnewShadowParts[ index ] = part;\n\t\tonChange( newShadowParts.join( ', ' ) );\n\t};\n\n\tconst onAddShadowPart = () => {\n\t\tonChange( [ ...shadowParts, defaultShadow ].join( ', ' ) );\n\t};\n\n\tconst onRemoveShadowPart = ( index: number ) => {\n\t\tonChange( shadowParts.filter( ( p, i ) => i !== index ).join( ', ' ) );\n\t\taddShadowButtonRef.current?.focus();\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<VStack spacing={ 2 }>\n\t\t\t\t<HStack justify=\"space-between\">\n\t\t\t\t\t<Subtitle level={ 3 }>{ __( 'Shadows' ) }</Subtitle>\n\t\t\t\t\t<FlexItem className=\"global-styles-ui__shadows-panel__options-container\">\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\ticon={ plus }\n\t\t\t\t\t\t\tlabel={ __( 'Add shadow' ) }\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tonAddShadowPart();\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tref={ addShadowButtonRef }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</FlexItem>\n\t\t\t\t</HStack>\n\t\t\t</VStack>\n\t\t\t<Spacer />\n\t\t\t<ItemGroup isBordered isSeparated>\n\t\t\t\t{ shadowParts.map( ( part, index ) => (\n\t\t\t\t\t<ShadowItem\n\t\t\t\t\t\tkey={ index }\n\t\t\t\t\t\tshadow={ part }\n\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\tonChangeShadowPart( index, value )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcanRemove={ shadowParts.length > 1 }\n\t\t\t\t\t\tonRemove={ () => onRemoveShadowPart( index ) }\n\t\t\t\t\t/>\n\t\t\t\t) ) }\n\t\t\t</ItemGroup>\n\t\t</>\n\t);\n}\n\ninterface ShadowItemProps {\n\tshadow: string;\n\tonChange: ( shadow: string ) => void;\n\tcanRemove: boolean;\n\tonRemove: () => void;\n}\n\nfunction ShadowItem( {\n\tshadow,\n\tonChange,\n\tcanRemove,\n\tonRemove,\n}: ShadowItemProps ) {\n\tconst popoverProps = {\n\t\tplacement: 'left-start' as const,\n\t\toffset: 36,\n\t\tshift: true,\n\t};\n\tconst shadowObj = useMemo(\n\t\t() => shadowStringToObject( shadow ),\n\t\t[ shadow ]\n\t);\n\tconst onShadowChange = ( newShadow: any ) => {\n\t\tonChange( shadowObjectToString( newShadow ) );\n\t};\n\n\treturn (\n\t\t<Dropdown\n\t\t\tpopoverProps={ popoverProps }\n\t\t\tclassName=\"global-styles-ui__shadow-editor__dropdown\"\n\t\t\trenderToggle={ ( { onToggle, isOpen } ) => {\n\t\t\t\tconst toggleProps = {\n\t\t\t\t\tonClick: onToggle,\n\t\t\t\t\tclassName: clsx(\n\t\t\t\t\t\t'global-styles-ui__shadow-editor__dropdown-toggle',\n\t\t\t\t\t\t{ 'is-open': isOpen }\n\t\t\t\t\t),\n\t\t\t\t\t'aria-expanded': isOpen,\n\t\t\t\t};\n\t\t\t\tconst removeButtonProps = {\n\t\t\t\t\tonClick: () => {\n\t\t\t\t\t\tif ( isOpen ) {\n\t\t\t\t\t\t\tonToggle();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonRemove();\n\t\t\t\t\t},\n\t\t\t\t\tclassName: clsx(\n\t\t\t\t\t\t'global-styles-ui__shadow-editor__remove-button',\n\t\t\t\t\t\t{ 'is-open': isOpen }\n\t\t\t\t\t),\n\t\t\t\t\tlabel: __( 'Remove shadow' ),\n\t\t\t\t};\n\n\t\t\t\treturn (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\ticon={ shadowIcon }\n\t\t\t\t\t\t\t{ ...toggleProps }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ shadowObj.inset\n\t\t\t\t\t\t\t\t? __( 'Inner shadow' )\n\t\t\t\t\t\t\t\t: __( 'Drop shadow' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t{ canRemove && (\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\ticon={ reset }\n\t\t\t\t\t\t\t\t{ ...removeButtonProps }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</>\n\t\t\t\t);\n\t\t\t} }\n\t\t\trenderContent={ () => (\n\t\t\t\t<DropdownContentWrapper\n\t\t\t\t\tpaddingSize=\"medium\"\n\t\t\t\t\tclassName=\"global-styles-ui__shadow-editor__dropdown-content\"\n\t\t\t\t>\n\t\t\t\t\t<ShadowPopover\n\t\t\t\t\t\tshadowObj={ shadowObj }\n\t\t\t\t\t\tonChange={ onShadowChange }\n\t\t\t\t\t/>\n\t\t\t\t</DropdownContentWrapper>\n\t\t\t) }\n\t\t/>\n\t);\n}\n\ninterface ShadowPopoverProps {\n\tshadowObj: any;\n\tonChange: ( shadow: any ) => void;\n}\n\nfunction ShadowPopover( { shadowObj, onChange }: ShadowPopoverProps ) {\n\tconst __experimentalIsRenderedInSidebar = true;\n\tconst enableAlpha = true;\n\n\tconst onShadowChange = ( key: string, value: any ) => {\n\t\tconst newShadow = {\n\t\t\t...shadowObj,\n\t\t\t[ key ]: value,\n\t\t};\n\t\tonChange( newShadow );\n\t};\n\n\treturn (\n\t\t<VStack spacing={ 4 } className=\"global-styles-ui__shadow-editor-panel\">\n\t\t\t<ColorPalette\n\t\t\t\tclearable={ false }\n\t\t\t\tenableAlpha={ enableAlpha }\n\t\t\t\t__experimentalIsRenderedInSidebar={\n\t\t\t\t\t__experimentalIsRenderedInSidebar\n\t\t\t\t}\n\t\t\t\tvalue={ shadowObj.color }\n\t\t\t\tonChange={ ( value ) => onShadowChange( 'color', value ) }\n\t\t\t/>\n\t\t\t<ToggleGroupControl\n\t\t\t\tlabel={ __( 'Shadow Type' ) }\n\t\t\t\tvalue={ shadowObj.inset ? 'inset' : 'outset' }\n\t\t\t\tisBlock\n\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\tonShadowChange( 'inset', value === 'inset' )\n\t\t\t\t}\n\t\t\t\thideLabelFromVision\n\t\t\t\t__next40pxDefaultSize\n\t\t\t>\n\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\tvalue=\"outset\"\n\t\t\t\t\tlabel={ __( 'Outset' ) }\n\t\t\t\t/>\n\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\tvalue=\"inset\"\n\t\t\t\t\tlabel={ __( 'Inset' ) }\n\t\t\t\t/>\n\t\t\t</ToggleGroupControl>\n\t\t\t<Grid columns={ 2 } gap={ 4 }>\n\t\t\t\t<ShadowInputControl\n\t\t\t\t\tlabel={ __( 'X Position' ) }\n\t\t\t\t\tvalue={ shadowObj.x }\n\t\t\t\t\tonChange={ ( value ) => onShadowChange( 'x', value ) }\n\t\t\t\t/>\n\t\t\t\t<ShadowInputControl\n\t\t\t\t\tlabel={ __( 'Y Position' ) }\n\t\t\t\t\tvalue={ shadowObj.y }\n\t\t\t\t\tonChange={ ( value ) => onShadowChange( 'y', value ) }\n\t\t\t\t/>\n\t\t\t\t<ShadowInputControl\n\t\t\t\t\tlabel={ __( 'Blur' ) }\n\t\t\t\t\tvalue={ shadowObj.blur }\n\t\t\t\t\tonChange={ ( value ) => onShadowChange( 'blur', value ) }\n\t\t\t\t/>\n\t\t\t\t<ShadowInputControl\n\t\t\t\t\tlabel={ __( 'Spread' ) }\n\t\t\t\t\tvalue={ shadowObj.spread }\n\t\t\t\t\tonChange={ ( value ) => onShadowChange( 'spread', value ) }\n\t\t\t\t/>\n\t\t\t</Grid>\n\t\t</VStack>\n\t);\n}\n\ninterface ShadowInputControlProps {\n\tlabel: string;\n\tvalue: string;\n\tonChange: ( value: string ) => void;\n}\n\nfunction ShadowInputControl( {\n\tlabel,\n\tvalue,\n\tonChange,\n}: ShadowInputControlProps ) {\n\tconst onValueChange = ( next: string | undefined ) => {\n\t\tconst isNumeric = next !== undefined && ! isNaN( parseFloat( next ) );\n\t\tconst nextValue = isNumeric ? next : '0px';\n\t\tonChange( nextValue );\n\t};\n\n\treturn (\n\t\t<UnitControl\n\t\t\tlabel={ label }\n\t\t\t__next40pxDefaultSize\n\t\t\tvalue={ value }\n\t\t\tonChange={ onValueChange }\n\t\t/>\n\t);\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,kBAAiB;AAKjB,wBAoBO;AACP,kBAA4B;AAC5B,mBAKO;AACP,qBAAqD;AAKrD,sBAAyB;AACzB,2BAA6B;AAC7B,yBAA2B;AAC3B,2BAA8B;AAC9B,0BAIO;AACP,mBAA2B;AAC3B,yBAAuB;AA4GrB;AA1GF,IAAM,EAAE,KAAK,QAAI,2BAAQ,kBAAAA,WAAsB;AAE/C,IAAM,wBAAwB;AAAA,EAC7B;AAAA,IACC,WAAO,gBAAI,QAAS;AAAA,IACpB,QAAQ;AAAA,EACT;AAAA,EACA;AAAA,IACC,WAAO,gBAAI,QAAS;AAAA,IACpB,QAAQ;AAAA,EACT;AACD;AAEA,IAAM,wBAAwB;AAAA,EAC7B;AAAA,IACC,WAAO,gBAAI,OAAQ;AAAA,IACnB,QAAQ;AAAA,EACT;AACD;AAEe,SAAR,mBAAoC;AAC1C,QAAM,EAAE,QAAQ,OAAO,QAAI,gCAAa;AACxC,QAAM,EAAE,UAAU,KAAK,IAAI;AAE3B,QAAM,CAAE,SAAS,UAAW,QAAI;AAAA,IAC/B,kBAAmB,QAAS;AAAA,EAC7B;AAEA,gCAAW,MAAM;AAChB,UAAM,mBAAmB,SAAS;AAAA,MACjC,CAAE,WAAiB,OAAO,SAAS;AAAA,IACpC;AASA,QAAK,CAAC,CAAE,QAAQ,CAAE,kBAAmB;AACpC,aAAO;AAAA,IACR;AAAA,EACD,GAAG,CAAE,SAAS,MAAM,MAAO,CAAE;AAE7B,QAAM,CAAE,WAAY,QAAI;AAAA,IACvB,kBAAmB,QAAS;AAAA,IAC5B;AAAA,IACA;AAAA,EACD;AACA,QAAM,CAAE,gBAAgB,iBAAkB,QAAI;AAAA,IAAU,OACrD,WAAW,CAAC,GAAI,KAAM,CAAE,WAAiB,OAAO,SAAS,IAAK;AAAA,EACjE;AACA,QAAM,yBAAqB;AAAA,IAC1B,OAAQ,eAAe,CAAC,GAAI,KAAM,CAAE,MAAY,EAAE,SAAS,IAAK;AAAA,IAChE,CAAE,aAAa,IAAK;AAAA,EACrB;AACA,QAAM,CAAE,wBAAwB,yBAA0B,QACzD,yBAAU,KAAM;AACjB,QAAM,CAAE,sBAAsB,uBAAwB,QAAI,yBAAU,KAAM;AAC1E,QAAM,CAAE,YAAY,aAAc,QAAI;AAAA,IACrC,gBAAgB;AAAA,EACjB;AAEA,MAAK,CAAE,YAAY,CAAE,MAAO;AAC3B,WAAO;AAAA,EACR;AAEA,QAAM,iBAAiB,CAAE,WAAoB;AAC5C,sBAAmB,EAAE,GAAG,gBAAgB,OAAO,CAAE;AACjD,UAAM,iBAAiB,QAAQ;AAAA,MAAK,CAAE,MACrC,EAAE,SAAS,OAAO,EAAE,GAAG,gBAAgB,OAAO,IAAI;AAAA,IACnD;AACA,eAAY,cAAe;AAAA,EAC5B;AAEA,QAAM,cAAc,CAAE,WAAoB;AACzC,QAAK,WAAW,SAAU;AACzB,YAAM,iBAAiB,QAAQ;AAAA,QAAK,CAAE,MACrC,EAAE,SAAS,OAAO,qBAAqB;AAAA,MACxC;AACA,wBAAmB,kBAAmB;AACtC,iBAAY,cAAe;AAAA,IAC5B,WAAY,WAAW,UAAW;AACjC,gCAA2B,IAAK;AAAA,IACjC,WAAY,WAAW,UAAW;AACjC,8BAAyB,IAAK;AAAA,IAC/B;AAAA,EACD;AAEA,QAAM,qBAAqB,MAAM;AAChC,eAAY,QAAQ,OAAQ,CAAE,MAAY,EAAE,SAAS,IAAK,CAAE;AAAA,EAC7D;AAEA,QAAM,qBAAqB,CAAE,YAAiC;AAC7D,QAAK,CAAE,SAAU;AAChB;AAAA,IACD;AACA,UAAM,iBAAiB,QAAQ;AAAA,MAAK,CAAE,MACrC,EAAE,SAAS,OAAO,EAAE,GAAG,gBAAgB,MAAM,QAAQ,IAAI;AAAA,IAC1D;AACA,sBAAmB,EAAE,GAAG,gBAAgB,MAAM,QAAQ,CAAE;AACxD,eAAY,cAAe;AAAA,EAC5B;AAEA,SAAO,CAAE,iBACR,4CAAC,qCAAa,OAAM,IAAG,IAEvB,4EACC;AAAA,iDAAC,kBAAAC,sBAAA,EAAO,SAAQ,iBACf;AAAA,kDAAC,qCAAa,OAAQ,eAAe,MAAO;AAAA,MAC5C,4CAAC,8BACA,sDAAC,kBAAAC,sBAAA,EAAO,WAAY,GAAI,cAAe,GAAI,UAAW,GACrD,uDAAC,QACA;AAAA;AAAA,UAAC,KAAK;AAAA,UAAL;AAAA,YACA,QACC;AAAA,cAAC;AAAA;AAAA,gBACA,MAAK;AAAA,gBACL,MAAO;AAAA,gBACP,WAAQ,gBAAI,MAAO;AAAA;AAAA,YACpB;AAAA;AAAA,QAEF;AAAA,QACA,4CAAC,KAAK,SAAL,EACI,wBAAa,WACd,wBACA,uBACD,IAAK,CAAE,SACR;AAAA,UAAC,KAAK;AAAA,UAAL;AAAA,YAEA,SAAU,MACT,YAAa,KAAK,MAAO;AAAA,YAE1B,UACC,KAAK,WAAW,WAChB,eAAe,WACd,oBAAoB;AAAA,YAGtB,sDAAC,KAAK,WAAL,EACE,eAAK,OACR;AAAA;AAAA,UAZM,KAAK;AAAA,QAaZ,CACC,GACH;AAAA,SACD,GACD,GACD;AAAA,OACD;AAAA,IACA,6CAAC,iCACA;AAAA,kDAAC,kBAAe,QAAS,eAAe,QAAS;AAAA,MACjD;AAAA,QAAC;AAAA;AAAA,UACA,QAAS,eAAe;AAAA,UACxB,UAAW;AAAA;AAAA,MACZ;AAAA,OACD;AAAA,IACE,0BACD;AAAA,MAAC,kBAAAC;AAAA,MAAA;AAAA,QACA,QAAM;AAAA,QACN,WAAY,MAAM;AACjB,6BAAmB;AACnB,oCAA2B,KAAM;AAAA,QAClC;AAAA,QACA,UAAW,MAAM;AAChB,oCAA2B,KAAM;AAAA,QAClC;AAAA,QACA,uBAAoB,gBAAI,QAAS;AAAA,QACjC,MAAK;AAAA,QAEH;AAAA;AAAA,cAED;AAAA,YACC;AAAA,UACD;AAAA,UACA,eAAe;AAAA,QAChB;AAAA;AAAA,IACD;AAAA,IAEC,wBACD;AAAA,MAAC;AAAA;AAAA,QACA,WAAQ,gBAAI,QAAS;AAAA,QACrB,gBAAiB,MAAM,wBAAyB,KAAM;AAAA,QACtD,MAAK;AAAA,QAEL;AAAA,UAAC;AAAA;AAAA,YACA,UAAW,CAAE,UAAW;AACvB,oBAAM,eAAe;AACrB,iCAAoB,UAAW;AAC/B,sCAAyB,KAAM;AAAA,YAChC;AAAA,YAEA;AAAA;AAAA,gBAAC,kBAAAC;AAAA,gBAAA;AAAA,kBACA,uBAAqB;AAAA,kBACrB,cAAa;AAAA,kBACb,WAAQ,gBAAI,MAAO;AAAA,kBACnB,iBAAc,gBAAI,aAAc;AAAA,kBAChC,OAAQ,cAAc;AAAA,kBACtB,UAAW;AAAA;AAAA,cACZ;AAAA,cACA,4CAAC,kBAAAF,sBAAA,EAAO,cAAe,GAAI;AAAA,cAC3B;AAAA,gBAAC;AAAA;AAAA,kBACA,WAAU;AAAA,kBACV,SAAQ;AAAA,kBACR,UAAW;AAAA,kBAEX;AAAA,gEAAC,8BACA;AAAA,sBAAC;AAAA;AAAA,wBACA,uBAAqB;AAAA,wBACrB,SAAQ;AAAA,wBACR,SAAU,MACT,wBAAyB,KAAM;AAAA,wBAG9B,8BAAI,QAAS;AAAA;AAAA,oBAChB,GACD;AAAA,oBACA,4CAAC,8BACA;AAAA,sBAAC;AAAA;AAAA,wBACA,uBAAqB;AAAA,wBACrB,SAAQ;AAAA,wBACR,MAAK;AAAA,wBAEH,8BAAI,MAAO;AAAA;AAAA,oBACd,GACD;AAAA;AAAA;AAAA,cACD;AAAA;AAAA;AAAA,QACD;AAAA;AAAA,IACD;AAAA,KAEF;AAEF;AAMA,SAAS,eAAgB,EAAE,OAAO,GAAyB;AAC1D,QAAM,cAAc;AAAA,IACnB,WAAW;AAAA,EACZ;AAEA,SACC,4CAAC,kBAAAA,sBAAA,EAAO,cAAe,GAAI,WAAY,IACtC;AAAA,IAAC,kBAAAD;AAAA,IAAA;AAAA,MACA,WAAU;AAAA,MACV,SAAQ;AAAA,MACR,WAAU;AAAA,MAEV;AAAA,QAAC;AAAA;AAAA,UACA,WAAU;AAAA,UACV,OAAQ;AAAA;AAAA,MACT;AAAA;AAAA,EACD,GACD;AAEF;AAOA,SAAS,aAAc,EAAE,QAAQ,SAAS,GAAuB;AAChE,QAAM,yBAAqB,uBAA6B,IAAK;AAC7D,QAAM,kBAAc,wBAAS,UAAM,oCAAgB,MAAO,GAAG,CAAE,MAAO,CAAE;AAExE,QAAM,qBAAqB,CAAE,OAAe,SAAkB;AAC7D,UAAM,iBAAiB,CAAE,GAAG,WAAY;AACxC,mBAAgB,KAAM,IAAI;AAC1B,aAAU,eAAe,KAAM,IAAK,CAAE;AAAA,EACvC;AAEA,QAAM,kBAAkB,MAAM;AAC7B,aAAU,CAAE,GAAG,aAAa,kCAAc,EAAE,KAAM,IAAK,CAAE;AAAA,EAC1D;AAEA,QAAM,qBAAqB,CAAE,UAAmB;AAC/C,aAAU,YAAY,OAAQ,CAAE,GAAG,MAAO,MAAM,KAAM,EAAE,KAAM,IAAK,CAAE;AACrE,uBAAmB,SAAS,MAAM;AAAA,EACnC;AAEA,SACC,4EACC;AAAA,gDAAC,kBAAAI,sBAAA,EAAO,SAAU,GACjB,uDAAC,kBAAAJ,sBAAA,EAAO,SAAQ,iBACf;AAAA,kDAAC,4BAAS,OAAQ,GAAM,8BAAI,SAAU,GAAG;AAAA,MACzC,4CAAC,8BAAS,WAAU,sDACnB;AAAA,QAAC;AAAA;AAAA,UACA,MAAK;AAAA,UACL,MAAO;AAAA,UACP,WAAQ,gBAAI,YAAa;AAAA,UACzB,SAAU,MAAM;AACf,4BAAgB;AAAA,UACjB;AAAA,UACA,KAAM;AAAA;AAAA,MACP,GACD;AAAA,OACD,GACD;AAAA,IACA,4CAAC,kBAAAC,sBAAA,EAAO;AAAA,IACR,4CAAC,kBAAAI,yBAAA,EAAU,YAAU,MAAC,aAAW,MAC9B,sBAAY,IAAK,CAAE,MAAM,UAC1B;AAAA,MAAC;AAAA;AAAA,QAEA,QAAS;AAAA,QACT,UAAW,CAAE,UACZ,mBAAoB,OAAO,KAAM;AAAA,QAElC,WAAY,YAAY,SAAS;AAAA,QACjC,UAAW,MAAM,mBAAoB,KAAM;AAAA;AAAA,MANrC;AAAA,IAOP,CACC,GACH;AAAA,KACD;AAEF;AASA,SAAS,WAAY;AAAA,EACpB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,GAAqB;AACpB,QAAM,eAAe;AAAA,IACpB,WAAW;AAAA,IACX,QAAQ;AAAA,IACR,OAAO;AAAA,EACR;AACA,QAAM,gBAAY;AAAA,IACjB,UAAM,0CAAsB,MAAO;AAAA,IACnC,CAAE,MAAO;AAAA,EACV;AACA,QAAM,iBAAiB,CAAE,cAAoB;AAC5C,iBAAU,0CAAsB,SAAU,CAAE;AAAA,EAC7C;AAEA,SACC;AAAA,IAAC;AAAA;AAAA,MACA;AAAA,MACA,WAAU;AAAA,MACV,cAAe,CAAE,EAAE,UAAU,OAAO,MAAO;AAC1C,cAAM,cAAc;AAAA,UACnB,SAAS;AAAA,UACT,eAAW,YAAAC;AAAA,YACV;AAAA,YACA,EAAE,WAAW,OAAO;AAAA,UACrB;AAAA,UACA,iBAAiB;AAAA,QAClB;AACA,cAAM,oBAAoB;AAAA,UACzB,SAAS,MAAM;AACd,gBAAK,QAAS;AACb,uBAAS;AAAA,YACV;AACA,qBAAS;AAAA,UACV;AAAA,UACA,eAAW,YAAAA;AAAA,YACV;AAAA,YACA,EAAE,WAAW,OAAO;AAAA,UACrB;AAAA,UACA,WAAO,gBAAI,eAAgB;AAAA,QAC5B;AAEA,eACC,4EACC;AAAA;AAAA,YAAC;AAAA;AAAA,cACA,uBAAqB;AAAA,cACrB,MAAO,aAAAC;AAAA,cACL,GAAG;AAAA,cAEH,oBAAU,YACT,gBAAI,cAAe,QACnB,gBAAI,aAAc;AAAA;AAAA,UACtB;AAAA,UACE,aACD;AAAA,YAAC;AAAA;AAAA,cACA,MAAK;AAAA,cACL,MAAO;AAAA,cACL,GAAG;AAAA;AAAA,UACN;AAAA,WAEF;AAAA,MAEF;AAAA,MACA,eAAgB,MACf;AAAA,QAAC,kBAAAC;AAAA,QAAA;AAAA,UACA,aAAY;AAAA,UACZ,WAAU;AAAA,UAEV;AAAA,YAAC;AAAA;AAAA,cACA;AAAA,cACA,UAAW;AAAA;AAAA,UACZ;AAAA;AAAA,MACD;AAAA;AAAA,EAEF;AAEF;AAOA,SAAS,cAAe,EAAE,WAAW,SAAS,GAAwB;AACrE,QAAM,oCAAoC;AAC1C,QAAM,cAAc;AAEpB,QAAM,iBAAiB,CAAE,KAAa,UAAgB;AACrD,UAAM,YAAY;AAAA,MACjB,GAAG;AAAA,MACH,CAAE,GAAI,GAAG;AAAA,IACV;AACA,aAAU,SAAU;AAAA,EACrB;AAEA,SACC,6CAAC,kBAAAJ,sBAAA,EAAO,SAAU,GAAI,WAAU,yCAC/B;AAAA;AAAA,MAAC;AAAA;AAAA,QACA,WAAY;AAAA,QACZ;AAAA,QACA;AAAA,QAGA,OAAQ,UAAU;AAAA,QAClB,UAAW,CAAE,UAAW,eAAgB,SAAS,KAAM;AAAA;AAAA,IACxD;AAAA,IACA;AAAA,MAAC,kBAAAK;AAAA,MAAA;AAAA,QACA,WAAQ,gBAAI,aAAc;AAAA,QAC1B,OAAQ,UAAU,QAAQ,UAAU;AAAA,QACpC,SAAO;AAAA,QACP,UAAW,CAAE,UACZ,eAAgB,SAAS,UAAU,OAAQ;AAAA,QAE5C,qBAAmB;AAAA,QACnB,uBAAqB;AAAA,QAErB;AAAA;AAAA,YAAC,kBAAAC;AAAA,YAAA;AAAA,cACA,OAAM;AAAA,cACN,WAAQ,gBAAI,QAAS;AAAA;AAAA,UACtB;AAAA,UACA;AAAA,YAAC,kBAAAA;AAAA,YAAA;AAAA,cACA,OAAM;AAAA,cACN,WAAQ,gBAAI,OAAQ;AAAA;AAAA,UACrB;AAAA;AAAA;AAAA,IACD;AAAA,IACA,6CAAC,kBAAAC,oBAAA,EAAK,SAAU,GAAI,KAAM,GACzB;AAAA;AAAA,QAAC;AAAA;AAAA,UACA,WAAQ,gBAAI,YAAa;AAAA,UACzB,OAAQ,UAAU;AAAA,UAClB,UAAW,CAAE,UAAW,eAAgB,KAAK,KAAM;AAAA;AAAA,MACpD;AAAA,MACA;AAAA,QAAC;AAAA;AAAA,UACA,WAAQ,gBAAI,YAAa;AAAA,UACzB,OAAQ,UAAU;AAAA,UAClB,UAAW,CAAE,UAAW,eAAgB,KAAK,KAAM;AAAA;AAAA,MACpD;AAAA,MACA;AAAA,QAAC;AAAA;AAAA,UACA,WAAQ,gBAAI,MAAO;AAAA,UACnB,OAAQ,UAAU;AAAA,UAClB,UAAW,CAAE,UAAW,eAAgB,QAAQ,KAAM;AAAA;AAAA,MACvD;AAAA,MACA;AAAA,QAAC;AAAA;AAAA,UACA,WAAQ,gBAAI,QAAS;AAAA,UACrB,OAAQ,UAAU;AAAA,UAClB,UAAW,CAAE,UAAW,eAAgB,UAAU,KAAM;AAAA;AAAA,MACzD;AAAA,OACD;AAAA,KACD;AAEF;AAQA,SAAS,mBAAoB;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AACD,GAA6B;AAC5B,QAAM,gBAAgB,CAAE,SAA8B;AACrD,UAAM,YAAY,SAAS,UAAa,CAAE,MAAO,WAAY,IAAK,CAAE;AACpE,UAAM,YAAY,YAAY,OAAO;AACrC,aAAU,SAAU;AAAA,EACrB;AAEA,SACC;AAAA,IAAC,kBAAAC;AAAA,IAAA;AAAA,MACA;AAAA,MACA,uBAAqB;AAAA,MACrB;AAAA,MACA,UAAW;AAAA;AAAA,EACZ;AAEF;",
4
+ "sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\t__experimentalSpacer as Spacer,\n\t__experimentalItemGroup as ItemGroup,\n\t__experimentalInputControl as InputControl,\n\t__experimentalUnitControl as UnitControl,\n\t__experimentalGrid as Grid,\n\t__experimentalDropdownContentWrapper as DropdownContentWrapper,\n\tuseNavigator,\n\t__experimentalToggleGroupControl as ToggleGroupControl,\n\t__experimentalToggleGroupControlOption as ToggleGroupControlOption,\n\t__experimentalConfirmDialog as ConfirmDialog,\n\tDropdown,\n\tButton,\n\tFlex,\n\tFlexItem,\n\tColorPalette,\n\tModal,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { __, sprintf } from '@wordpress/i18n';\nimport {\n\tplus,\n\tshadow as shadowIcon,\n\treset,\n\tmoreVertical,\n} from '@wordpress/icons';\nimport { useState, useMemo, useEffect, useRef } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { Subtitle } from './subtitle';\nimport { ScreenHeader } from './screen-header';\nimport { ScreenBody } from './screen-body';\nimport { defaultShadow } from './shadows-panel';\nimport {\n\tgetShadowParts,\n\tshadowStringToObject,\n\tshadowObjectToString,\n} from './shadow-utils';\nimport { useSetting } from './hooks';\nimport { unlock } from './lock-unlock';\n\nconst { Menu } = unlock( componentsPrivateApis );\n\nconst customShadowMenuItems = [\n\t{\n\t\tlabel: __( 'Rename' ),\n\t\taction: 'rename',\n\t},\n\t{\n\t\tlabel: __( 'Delete' ),\n\t\taction: 'delete',\n\t},\n];\n\nconst presetShadowMenuItems = [\n\t{\n\t\tlabel: __( 'Reset' ),\n\t\taction: 'reset',\n\t},\n];\n\nexport default function ShadowsEditPanel() {\n\tconst { goBack, params } = useNavigator();\n\tconst { category, slug } = params;\n\n\tconst [ shadows, setShadows ] = useSetting(\n\t\t`shadow.presets.${ category }`\n\t);\n\n\tuseEffect( () => {\n\t\tconst hasCurrentShadow = shadows?.some(\n\t\t\t( shadow: any ) => shadow.slug === slug\n\t\t);\n\t\t// If the shadow being edited doesn't exist anymore in the global styles setting, navigate back\n\t\t// to prevent the user from editing a non-existent shadow entry.\n\t\t// This can happen, for example:\n\t\t// - when the user deletes the shadow\n\t\t// - when the user resets the styles while editing a custom shadow\n\t\t//\n\t\t// The check on the slug is necessary to prevent a double back navigation when the user triggers\n\t\t// a backward navigation by interacting with the screen's UI.\n\t\tif ( !! slug && ! hasCurrentShadow ) {\n\t\t\tgoBack();\n\t\t}\n\t}, [ shadows, slug, goBack ] );\n\n\tconst [ baseShadows ] = useSetting(\n\t\t`shadow.presets.${ category }`,\n\t\tundefined,\n\t\t'base'\n\t);\n\tconst [ selectedShadow, setSelectedShadow ] = useState( () =>\n\t\t( shadows || [] ).find( ( shadow: any ) => shadow.slug === slug )\n\t);\n\tconst baseSelectedShadow = useMemo(\n\t\t() => ( baseShadows || [] ).find( ( b: any ) => b.slug === slug ),\n\t\t[ baseShadows, slug ]\n\t);\n\tconst [ isConfirmDialogVisible, setIsConfirmDialogVisible ] =\n\t\tuseState( false );\n\tconst [ isRenameModalVisible, setIsRenameModalVisible ] = useState( false );\n\tconst [ shadowName, setShadowName ] = useState< string | undefined >(\n\t\tselectedShadow?.name\n\t);\n\n\tif ( ! category || ! slug ) {\n\t\treturn null;\n\t}\n\n\tconst onShadowChange = ( shadow: string ) => {\n\t\tsetSelectedShadow( { ...selectedShadow, shadow } );\n\t\tconst updatedShadows = shadows.map( ( s: any ) =>\n\t\t\ts.slug === slug ? { ...selectedShadow, shadow } : s\n\t\t);\n\t\tsetShadows( updatedShadows );\n\t};\n\n\tconst onMenuClick = ( action: string ) => {\n\t\tif ( action === 'reset' ) {\n\t\t\tconst updatedShadows = shadows.map( ( s: any ) =>\n\t\t\t\ts.slug === slug ? baseSelectedShadow : s\n\t\t\t);\n\t\t\tsetSelectedShadow( baseSelectedShadow );\n\t\t\tsetShadows( updatedShadows );\n\t\t} else if ( action === 'delete' ) {\n\t\t\tsetIsConfirmDialogVisible( true );\n\t\t} else if ( action === 'rename' ) {\n\t\t\tsetIsRenameModalVisible( true );\n\t\t}\n\t};\n\n\tconst handleShadowDelete = () => {\n\t\tsetShadows( shadows.filter( ( s: any ) => s.slug !== slug ) );\n\t};\n\n\tconst handleShadowRename = ( newName: string | undefined ) => {\n\t\tif ( ! newName ) {\n\t\t\treturn;\n\t\t}\n\t\tconst updatedShadows = shadows.map( ( s: any ) =>\n\t\t\ts.slug === slug ? { ...selectedShadow, name: newName } : s\n\t\t);\n\t\tsetSelectedShadow( { ...selectedShadow, name: newName } );\n\t\tsetShadows( updatedShadows );\n\t};\n\n\treturn ! selectedShadow ? (\n\t\t<ScreenHeader title=\"\" />\n\t) : (\n\t\t<>\n\t\t\t<HStack justify=\"space-between\">\n\t\t\t\t<ScreenHeader title={ selectedShadow.name } />\n\t\t\t\t<FlexItem>\n\t\t\t\t\t<Spacer marginTop={ 2 } marginBottom={ 0 } paddingX={ 4 }>\n\t\t\t\t\t\t<Menu>\n\t\t\t\t\t\t\t<Menu.TriggerButton\n\t\t\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\t\ticon={ moreVertical }\n\t\t\t\t\t\t\t\t\t\tlabel={ __( 'Menu' ) }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<Menu.Popover>\n\t\t\t\t\t\t\t\t{ ( category === 'custom'\n\t\t\t\t\t\t\t\t\t? customShadowMenuItems\n\t\t\t\t\t\t\t\t\t: presetShadowMenuItems\n\t\t\t\t\t\t\t\t).map( ( item ) => (\n\t\t\t\t\t\t\t\t\t<Menu.Item\n\t\t\t\t\t\t\t\t\t\tkey={ item.action }\n\t\t\t\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\t\t\t\tonMenuClick( item.action )\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tdisabled={\n\t\t\t\t\t\t\t\t\t\t\titem.action === 'reset' &&\n\t\t\t\t\t\t\t\t\t\t\tselectedShadow.shadow ===\n\t\t\t\t\t\t\t\t\t\t\t\tbaseSelectedShadow?.shadow\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<Menu.ItemLabel>\n\t\t\t\t\t\t\t\t\t\t\t{ item.label }\n\t\t\t\t\t\t\t\t\t\t</Menu.ItemLabel>\n\t\t\t\t\t\t\t\t\t</Menu.Item>\n\t\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t\t</Menu.Popover>\n\t\t\t\t\t\t</Menu>\n\t\t\t\t\t</Spacer>\n\t\t\t\t</FlexItem>\n\t\t\t</HStack>\n\t\t\t<ScreenBody>\n\t\t\t\t<ShadowsPreview shadow={ selectedShadow.shadow } />\n\t\t\t\t<ShadowEditor\n\t\t\t\t\tshadow={ selectedShadow.shadow }\n\t\t\t\t\tonChange={ onShadowChange }\n\t\t\t\t/>\n\t\t\t</ScreenBody>\n\t\t\t{ isConfirmDialogVisible && (\n\t\t\t\t<ConfirmDialog\n\t\t\t\t\tisOpen\n\t\t\t\t\tonConfirm={ () => {\n\t\t\t\t\t\thandleShadowDelete();\n\t\t\t\t\t\tsetIsConfirmDialogVisible( false );\n\t\t\t\t\t} }\n\t\t\t\t\tonCancel={ () => {\n\t\t\t\t\t\tsetIsConfirmDialogVisible( false );\n\t\t\t\t\t} }\n\t\t\t\t\tconfirmButtonText={ __( 'Delete' ) }\n\t\t\t\t\tsize=\"medium\"\n\t\t\t\t>\n\t\t\t\t\t{ sprintf(\n\t\t\t\t\t\t/* translators: %s: Name of the shadow preset. */\n\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t'Are you sure you want to delete \"%s\" shadow preset?'\n\t\t\t\t\t\t),\n\t\t\t\t\t\tselectedShadow.name\n\t\t\t\t\t) }\n\t\t\t\t</ConfirmDialog>\n\t\t\t) }\n\t\t\t{ isRenameModalVisible && (\n\t\t\t\t<Modal\n\t\t\t\t\ttitle={ __( 'Rename' ) }\n\t\t\t\t\tonRequestClose={ () => setIsRenameModalVisible( false ) }\n\t\t\t\t\tsize=\"small\"\n\t\t\t\t>\n\t\t\t\t\t<form\n\t\t\t\t\t\tonSubmit={ ( event ) => {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\thandleShadowRename( shadowName );\n\t\t\t\t\t\t\tsetIsRenameModalVisible( false );\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t<InputControl\n\t\t\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\t\t\tlabel={ __( 'Name' ) }\n\t\t\t\t\t\t\tplaceholder={ __( 'Shadow name' ) }\n\t\t\t\t\t\t\tvalue={ shadowName ?? '' }\n\t\t\t\t\t\t\tonChange={ setShadowName }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<Spacer marginBottom={ 6 } />\n\t\t\t\t\t\t<Flex\n\t\t\t\t\t\t\tclassName=\"block-editor-shadow-edit-modal__actions\"\n\t\t\t\t\t\t\tjustify=\"flex-end\"\n\t\t\t\t\t\t\texpanded={ false }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\t\t\tsetIsRenameModalVisible( false )\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ __( 'Save' ) }\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t</Flex>\n\t\t\t\t\t</form>\n\t\t\t\t</Modal>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\ninterface ShadowsPreviewProps {\n\tshadow: string;\n}\n\nfunction ShadowsPreview( { shadow }: ShadowsPreviewProps ) {\n\tconst shadowStyle = {\n\t\tboxShadow: shadow,\n\t};\n\n\treturn (\n\t\t<Spacer marginBottom={ 4 } marginTop={ -2 }>\n\t\t\t<HStack\n\t\t\t\talignment=\"center\"\n\t\t\t\tjustify=\"center\"\n\t\t\t\tclassName=\"global-styles-ui__shadow-preview-panel\"\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tclassName=\"global-styles-ui__shadow-preview-block\"\n\t\t\t\t\tstyle={ shadowStyle }\n\t\t\t\t/>\n\t\t\t</HStack>\n\t\t</Spacer>\n\t);\n}\n\ninterface ShadowEditorProps {\n\tshadow: string;\n\tonChange: ( shadow: string ) => void;\n}\n\nfunction ShadowEditor( { shadow, onChange }: ShadowEditorProps ) {\n\tconst addShadowButtonRef = useRef< HTMLButtonElement >( null );\n\tconst shadowParts = useMemo( () => getShadowParts( shadow ), [ shadow ] );\n\n\tconst onChangeShadowPart = ( index: number, part: string ) => {\n\t\tconst newShadowParts = [ ...shadowParts ];\n\t\tnewShadowParts[ index ] = part;\n\t\tonChange( newShadowParts.join( ', ' ) );\n\t};\n\n\tconst onAddShadowPart = () => {\n\t\tonChange( [ ...shadowParts, defaultShadow ].join( ', ' ) );\n\t};\n\n\tconst onRemoveShadowPart = ( index: number ) => {\n\t\tonChange( shadowParts.filter( ( p, i ) => i !== index ).join( ', ' ) );\n\t\taddShadowButtonRef.current?.focus();\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<VStack spacing={ 2 }>\n\t\t\t\t<HStack justify=\"space-between\">\n\t\t\t\t\t<Subtitle level={ 3 }>{ __( 'Shadows' ) }</Subtitle>\n\t\t\t\t\t<FlexItem className=\"global-styles-ui__shadows-panel__options-container\">\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\ticon={ plus }\n\t\t\t\t\t\t\tlabel={ __( 'Add shadow' ) }\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tonAddShadowPart();\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tref={ addShadowButtonRef }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</FlexItem>\n\t\t\t\t</HStack>\n\t\t\t</VStack>\n\t\t\t<Spacer />\n\t\t\t<ItemGroup isBordered isSeparated>\n\t\t\t\t{ shadowParts.map( ( part, index ) => (\n\t\t\t\t\t<ShadowItem\n\t\t\t\t\t\tkey={ index }\n\t\t\t\t\t\tshadow={ part }\n\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\tonChangeShadowPart( index, value )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcanRemove={ shadowParts.length > 1 }\n\t\t\t\t\t\tonRemove={ () => onRemoveShadowPart( index ) }\n\t\t\t\t\t/>\n\t\t\t\t) ) }\n\t\t\t</ItemGroup>\n\t\t</>\n\t);\n}\n\ninterface ShadowItemProps {\n\tshadow: string;\n\tonChange: ( shadow: string ) => void;\n\tcanRemove: boolean;\n\tonRemove: () => void;\n}\n\nfunction ShadowItem( {\n\tshadow,\n\tonChange,\n\tcanRemove,\n\tonRemove,\n}: ShadowItemProps ) {\n\tconst popoverProps = {\n\t\tplacement: 'left-start' as const,\n\t\toffset: 36,\n\t\tshift: true,\n\t};\n\tconst shadowObj = useMemo(\n\t\t() => shadowStringToObject( shadow ),\n\t\t[ shadow ]\n\t);\n\tconst onShadowChange = ( newShadow: any ) => {\n\t\tonChange( shadowObjectToString( newShadow ) );\n\t};\n\n\treturn (\n\t\t<Dropdown\n\t\t\tpopoverProps={ popoverProps }\n\t\t\tclassName=\"global-styles-ui__shadow-editor__dropdown\"\n\t\t\trenderToggle={ ( { onToggle, isOpen } ) => {\n\t\t\t\tconst toggleProps = {\n\t\t\t\t\tonClick: onToggle,\n\t\t\t\t\tclassName: clsx(\n\t\t\t\t\t\t'global-styles-ui__shadow-editor__dropdown-toggle',\n\t\t\t\t\t\t{ 'is-open': isOpen }\n\t\t\t\t\t),\n\t\t\t\t\t'aria-expanded': isOpen,\n\t\t\t\t};\n\t\t\t\tconst removeButtonProps = {\n\t\t\t\t\tonClick: () => {\n\t\t\t\t\t\tif ( isOpen ) {\n\t\t\t\t\t\t\tonToggle();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonRemove();\n\t\t\t\t\t},\n\t\t\t\t\tclassName: clsx(\n\t\t\t\t\t\t'global-styles-ui__shadow-editor__remove-button',\n\t\t\t\t\t\t{ 'is-open': isOpen }\n\t\t\t\t\t),\n\t\t\t\t\tlabel: __( 'Remove shadow' ),\n\t\t\t\t};\n\n\t\t\t\treturn (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\ticon={ shadowIcon }\n\t\t\t\t\t\t\t{ ...toggleProps }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ shadowObj.inset\n\t\t\t\t\t\t\t\t? __( 'Inner shadow' )\n\t\t\t\t\t\t\t\t: __( 'Drop shadow' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t{ canRemove && (\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\ticon={ reset }\n\t\t\t\t\t\t\t\t{ ...removeButtonProps }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</>\n\t\t\t\t);\n\t\t\t} }\n\t\t\trenderContent={ () => (\n\t\t\t\t<DropdownContentWrapper\n\t\t\t\t\tpaddingSize=\"medium\"\n\t\t\t\t\tclassName=\"global-styles-ui__shadow-editor__dropdown-content\"\n\t\t\t\t>\n\t\t\t\t\t<ShadowPopover\n\t\t\t\t\t\tshadowObj={ shadowObj }\n\t\t\t\t\t\tonChange={ onShadowChange }\n\t\t\t\t\t/>\n\t\t\t\t</DropdownContentWrapper>\n\t\t\t) }\n\t\t/>\n\t);\n}\n\ninterface ShadowPopoverProps {\n\tshadowObj: any;\n\tonChange: ( shadow: any ) => void;\n}\n\nfunction ShadowPopover( { shadowObj, onChange }: ShadowPopoverProps ) {\n\tconst __experimentalIsRenderedInSidebar = true;\n\tconst enableAlpha = true;\n\n\tconst onShadowChange = ( key: string, value: any ) => {\n\t\tconst newShadow = {\n\t\t\t...shadowObj,\n\t\t\t[ key ]: value,\n\t\t};\n\t\tonChange( newShadow );\n\t};\n\n\treturn (\n\t\t<VStack spacing={ 4 } className=\"global-styles-ui__shadow-editor-panel\">\n\t\t\t<ColorPalette\n\t\t\t\tclearable={ false }\n\t\t\t\tenableAlpha={ enableAlpha }\n\t\t\t\t__experimentalIsRenderedInSidebar={\n\t\t\t\t\t__experimentalIsRenderedInSidebar\n\t\t\t\t}\n\t\t\t\tvalue={ shadowObj.color }\n\t\t\t\tonChange={ ( value ) => onShadowChange( 'color', value ) }\n\t\t\t/>\n\t\t\t<ToggleGroupControl\n\t\t\t\tlabel={ __( 'Shadow Type' ) }\n\t\t\t\tvalue={ shadowObj.inset ? 'inset' : 'outset' }\n\t\t\t\tisBlock\n\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\tonShadowChange( 'inset', value === 'inset' )\n\t\t\t\t}\n\t\t\t\thideLabelFromVision\n\t\t\t>\n\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\tvalue=\"outset\"\n\t\t\t\t\tlabel={ __( 'Outset' ) }\n\t\t\t\t/>\n\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\tvalue=\"inset\"\n\t\t\t\t\tlabel={ __( 'Inset' ) }\n\t\t\t\t/>\n\t\t\t</ToggleGroupControl>\n\t\t\t<Grid columns={ 2 } gap={ 4 }>\n\t\t\t\t<ShadowInputControl\n\t\t\t\t\tlabel={ __( 'X Position' ) }\n\t\t\t\t\tvalue={ shadowObj.x }\n\t\t\t\t\tonChange={ ( value ) => onShadowChange( 'x', value ) }\n\t\t\t\t/>\n\t\t\t\t<ShadowInputControl\n\t\t\t\t\tlabel={ __( 'Y Position' ) }\n\t\t\t\t\tvalue={ shadowObj.y }\n\t\t\t\t\tonChange={ ( value ) => onShadowChange( 'y', value ) }\n\t\t\t\t/>\n\t\t\t\t<ShadowInputControl\n\t\t\t\t\tlabel={ __( 'Blur' ) }\n\t\t\t\t\tvalue={ shadowObj.blur }\n\t\t\t\t\tonChange={ ( value ) => onShadowChange( 'blur', value ) }\n\t\t\t\t/>\n\t\t\t\t<ShadowInputControl\n\t\t\t\t\tlabel={ __( 'Spread' ) }\n\t\t\t\t\tvalue={ shadowObj.spread }\n\t\t\t\t\tonChange={ ( value ) => onShadowChange( 'spread', value ) }\n\t\t\t\t/>\n\t\t\t</Grid>\n\t\t</VStack>\n\t);\n}\n\ninterface ShadowInputControlProps {\n\tlabel: string;\n\tvalue: string;\n\tonChange: ( value: string ) => void;\n}\n\nfunction ShadowInputControl( {\n\tlabel,\n\tvalue,\n\tonChange,\n}: ShadowInputControlProps ) {\n\tconst onValueChange = ( next: string | undefined ) => {\n\t\tconst isNumeric = next !== undefined && ! isNaN( parseFloat( next ) );\n\t\tconst nextValue = isNumeric ? next : '0px';\n\t\tonChange( nextValue );\n\t};\n\n\treturn (\n\t\t<UnitControl\n\t\t\tlabel={ label }\n\t\t\tvalue={ value }\n\t\t\tonChange={ onValueChange }\n\t\t/>\n\t);\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["componentsPrivateApis", "HStack", "Spacer", "ConfirmDialog", "InputControl", "VStack", "ItemGroup", "clsx", "shadowIcon", "DropdownContentWrapper", "ToggleGroupControl", "ToggleGroupControlOption", "Grid", "UnitControl"]
7
7
  }
@@ -48,7 +48,6 @@ function SizeControl(props) {
48
48
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components.FlexItem, { isBlock: true, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
49
49
  import_components.__experimentalUnitControl,
50
50
  {
51
- __next40pxDefaultSize: true,
52
51
  label,
53
52
  hideLabelFromVision: true,
54
53
  value,
@@ -61,7 +60,6 @@ function SizeControl(props) {
61
60
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components.FlexItem, { isBlock: true, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components.__experimentalSpacer, { marginX: 2, marginBottom: 0, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
62
61
  import_components.RangeControl,
63
62
  {
64
- __next40pxDefaultSize: true,
65
63
  label,
66
64
  hideLabelFromVision: true,
67
65
  value: valueQuantity,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/size-control/index.tsx"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport {\n\tBaseControl,\n\tRangeControl,\n\tFlex,\n\tFlexItem,\n\tuseBaseControlProps,\n\t__experimentalUseCustomUnits as useCustomUnits,\n\t__experimentalParseQuantityAndUnitFromRawValue as parseQuantityAndUnitFromRawValue,\n\t__experimentalUnitControl as UnitControl,\n\t__experimentalSpacer as Spacer,\n} from '@wordpress/components';\n\nconst DEFAULT_UNITS = [ 'px', 'em', 'rem', 'vw', 'vh' ];\n\ninterface SizeControlProps {\n\tvalue?: string;\n\tonChange?: ( value: string | undefined ) => void;\n\tfallbackValue?: number;\n\tdisabled?: boolean;\n\tlabel?: string;\n}\n\nfunction SizeControl( props: SizeControlProps ) {\n\tconst { baseControlProps } = useBaseControlProps( props );\n\tconst { value, onChange, fallbackValue, disabled, label } = props;\n\n\tconst units = useCustomUnits( {\n\t\tavailableUnits: DEFAULT_UNITS,\n\t} );\n\n\tconst [ valueQuantity, valueUnit = 'px' ] =\n\t\tparseQuantityAndUnitFromRawValue( value, units );\n\n\tconst isValueUnitRelative =\n\t\t!! valueUnit && [ 'em', 'rem', 'vw', 'vh' ].includes( valueUnit );\n\n\t// Receives the new value from the UnitControl component as a string containing the value and unit.\n\tconst handleUnitControlChange = ( newValue: string | undefined ) => {\n\t\tonChange?.( newValue );\n\t};\n\n\t// Receives the new value from the RangeControl component as a number.\n\tconst handleRangeControlChange = ( newValue: number | undefined ) => {\n\t\tif ( newValue !== undefined ) {\n\t\t\tonChange?.( newValue + valueUnit );\n\t\t} else {\n\t\t\tonChange?.( undefined );\n\t\t}\n\t};\n\n\treturn (\n\t\t<BaseControl { ...baseControlProps }>\n\t\t\t<Flex>\n\t\t\t\t<FlexItem isBlock>\n\t\t\t\t\t<UnitControl\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\tlabel={ label }\n\t\t\t\t\t\thideLabelFromVision\n\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\tonChange={ handleUnitControlChange }\n\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\tmin={ 0 }\n\t\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\t/>\n\t\t\t\t</FlexItem>\n\t\t\t\t<FlexItem isBlock>\n\t\t\t\t\t<Spacer marginX={ 2 } marginBottom={ 0 }>\n\t\t\t\t\t\t<RangeControl\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\tlabel={ label }\n\t\t\t\t\t\t\thideLabelFromVision\n\t\t\t\t\t\t\tvalue={ valueQuantity }\n\t\t\t\t\t\t\tinitialPosition={ fallbackValue }\n\t\t\t\t\t\t\twithInputField={ false }\n\t\t\t\t\t\t\tonChange={ handleRangeControlChange }\n\t\t\t\t\t\t\tmin={ 0 }\n\t\t\t\t\t\t\tmax={ isValueUnitRelative ? 10 : 100 }\n\t\t\t\t\t\t\tstep={ isValueUnitRelative ? 0.1 : 1 }\n\t\t\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Spacer>\n\t\t\t\t</FlexItem>\n\t\t\t</Flex>\n\t\t</BaseControl>\n\t);\n}\n\nexport { SizeControl };\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,wBAUO;AA0CJ;AAxCH,IAAM,gBAAgB,CAAE,MAAM,MAAM,OAAO,MAAM,IAAK;AAUtD,SAAS,YAAa,OAA0B;AAC/C,QAAM,EAAE,iBAAiB,QAAI,uCAAqB,KAAM;AACxD,QAAM,EAAE,OAAO,UAAU,eAAe,UAAU,MAAM,IAAI;AAE5D,QAAM,YAAQ,kBAAAA,8BAAgB;AAAA,IAC7B,gBAAgB;AAAA,EACjB,CAAE;AAEF,QAAM,CAAE,eAAe,YAAY,IAAK,QACvC,kBAAAC,gDAAkC,OAAO,KAAM;AAEhD,QAAM,sBACL,CAAC,CAAE,aAAa,CAAE,MAAM,OAAO,MAAM,IAAK,EAAE,SAAU,SAAU;AAGjE,QAAM,0BAA0B,CAAE,aAAkC;AACnE,eAAY,QAAS;AAAA,EACtB;AAGA,QAAM,2BAA2B,CAAE,aAAkC;AACpE,QAAK,aAAa,QAAY;AAC7B,iBAAY,WAAW,SAAU;AAAA,IAClC,OAAO;AACN,iBAAY,MAAU;AAAA,IACvB;AAAA,EACD;AAEA,SACC,4CAAC,iCAAc,GAAG,kBACjB,uDAAC,0BACA;AAAA,gDAAC,8BAAS,SAAO,MAChB;AAAA,MAAC,kBAAAC;AAAA,MAAA;AAAA,QACA,uBAAqB;AAAA,QACrB;AAAA,QACA,qBAAmB;AAAA,QACnB;AAAA,QACA,UAAW;AAAA,QACX;AAAA,QACA,KAAM;AAAA,QACN;AAAA;AAAA,IACD,GACD;AAAA,IACA,4CAAC,8BAAS,SAAO,MAChB,sDAAC,kBAAAC,sBAAA,EAAO,SAAU,GAAI,cAAe,GACpC;AAAA,MAAC;AAAA;AAAA,QACA,uBAAqB;AAAA,QACrB;AAAA,QACA,qBAAmB;AAAA,QACnB,OAAQ;AAAA,QACR,iBAAkB;AAAA,QAClB,gBAAiB;AAAA,QACjB,UAAW;AAAA,QACX,KAAM;AAAA,QACN,KAAM,sBAAsB,KAAK;AAAA,QACjC,MAAO,sBAAsB,MAAM;AAAA,QACnC;AAAA;AAAA,IACD,GACD,GACD;AAAA,KACD,GACD;AAEF;",
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport {\n\tBaseControl,\n\tRangeControl,\n\tFlex,\n\tFlexItem,\n\tuseBaseControlProps,\n\t__experimentalUseCustomUnits as useCustomUnits,\n\t__experimentalParseQuantityAndUnitFromRawValue as parseQuantityAndUnitFromRawValue,\n\t__experimentalUnitControl as UnitControl,\n\t__experimentalSpacer as Spacer,\n} from '@wordpress/components';\n\nconst DEFAULT_UNITS = [ 'px', 'em', 'rem', 'vw', 'vh' ];\n\ninterface SizeControlProps {\n\tvalue?: string;\n\tonChange?: ( value: string | undefined ) => void;\n\tfallbackValue?: number;\n\tdisabled?: boolean;\n\tlabel?: string;\n}\n\nfunction SizeControl( props: SizeControlProps ) {\n\tconst { baseControlProps } = useBaseControlProps( props );\n\tconst { value, onChange, fallbackValue, disabled, label } = props;\n\n\tconst units = useCustomUnits( {\n\t\tavailableUnits: DEFAULT_UNITS,\n\t} );\n\n\tconst [ valueQuantity, valueUnit = 'px' ] =\n\t\tparseQuantityAndUnitFromRawValue( value, units );\n\n\tconst isValueUnitRelative =\n\t\t!! valueUnit && [ 'em', 'rem', 'vw', 'vh' ].includes( valueUnit );\n\n\t// Receives the new value from the UnitControl component as a string containing the value and unit.\n\tconst handleUnitControlChange = ( newValue: string | undefined ) => {\n\t\tonChange?.( newValue );\n\t};\n\n\t// Receives the new value from the RangeControl component as a number.\n\tconst handleRangeControlChange = ( newValue: number | undefined ) => {\n\t\tif ( newValue !== undefined ) {\n\t\t\tonChange?.( newValue + valueUnit );\n\t\t} else {\n\t\t\tonChange?.( undefined );\n\t\t}\n\t};\n\n\treturn (\n\t\t<BaseControl { ...baseControlProps }>\n\t\t\t<Flex>\n\t\t\t\t<FlexItem isBlock>\n\t\t\t\t\t<UnitControl\n\t\t\t\t\t\tlabel={ label }\n\t\t\t\t\t\thideLabelFromVision\n\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\tonChange={ handleUnitControlChange }\n\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\tmin={ 0 }\n\t\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\t/>\n\t\t\t\t</FlexItem>\n\t\t\t\t<FlexItem isBlock>\n\t\t\t\t\t<Spacer marginX={ 2 } marginBottom={ 0 }>\n\t\t\t\t\t\t<RangeControl\n\t\t\t\t\t\t\tlabel={ label }\n\t\t\t\t\t\t\thideLabelFromVision\n\t\t\t\t\t\t\tvalue={ valueQuantity }\n\t\t\t\t\t\t\tinitialPosition={ fallbackValue }\n\t\t\t\t\t\t\twithInputField={ false }\n\t\t\t\t\t\t\tonChange={ handleRangeControlChange }\n\t\t\t\t\t\t\tmin={ 0 }\n\t\t\t\t\t\t\tmax={ isValueUnitRelative ? 10 : 100 }\n\t\t\t\t\t\t\tstep={ isValueUnitRelative ? 0.1 : 1 }\n\t\t\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Spacer>\n\t\t\t\t</FlexItem>\n\t\t\t</Flex>\n\t\t</BaseControl>\n\t);\n}\n\nexport { SizeControl };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,wBAUO;AA0CJ;AAxCH,IAAM,gBAAgB,CAAE,MAAM,MAAM,OAAO,MAAM,IAAK;AAUtD,SAAS,YAAa,OAA0B;AAC/C,QAAM,EAAE,iBAAiB,QAAI,uCAAqB,KAAM;AACxD,QAAM,EAAE,OAAO,UAAU,eAAe,UAAU,MAAM,IAAI;AAE5D,QAAM,YAAQ,kBAAAA,8BAAgB;AAAA,IAC7B,gBAAgB;AAAA,EACjB,CAAE;AAEF,QAAM,CAAE,eAAe,YAAY,IAAK,QACvC,kBAAAC,gDAAkC,OAAO,KAAM;AAEhD,QAAM,sBACL,CAAC,CAAE,aAAa,CAAE,MAAM,OAAO,MAAM,IAAK,EAAE,SAAU,SAAU;AAGjE,QAAM,0BAA0B,CAAE,aAAkC;AACnE,eAAY,QAAS;AAAA,EACtB;AAGA,QAAM,2BAA2B,CAAE,aAAkC;AACpE,QAAK,aAAa,QAAY;AAC7B,iBAAY,WAAW,SAAU;AAAA,IAClC,OAAO;AACN,iBAAY,MAAU;AAAA,IACvB;AAAA,EACD;AAEA,SACC,4CAAC,iCAAc,GAAG,kBACjB,uDAAC,0BACA;AAAA,gDAAC,8BAAS,SAAO,MAChB;AAAA,MAAC,kBAAAC;AAAA,MAAA;AAAA,QACA;AAAA,QACA,qBAAmB;AAAA,QACnB;AAAA,QACA,UAAW;AAAA,QACX;AAAA,QACA,KAAM;AAAA,QACN;AAAA;AAAA,IACD,GACD;AAAA,IACA,4CAAC,8BAAS,SAAO,MAChB,sDAAC,kBAAAC,sBAAA,EAAO,SAAU,GAAI,cAAe,GACpC;AAAA,MAAC;AAAA;AAAA,QACA;AAAA,QACA,qBAAmB;AAAA,QACnB,OAAQ;AAAA,QACR,iBAAkB;AAAA,QAClB,gBAAiB;AAAA,QACjB,UAAW;AAAA,QACX,KAAM;AAAA,QACN,KAAM,sBAAsB,KAAK;AAAA,QACjC,MAAO,sBAAsB,MAAM;AAAA,QACnC;AAAA;AAAA,IACD,GACD,GACD;AAAA,KACD,GACD;AAEF;",
6
6
  "names": ["useCustomUnits", "parseQuantityAndUnitFromRawValue", "UnitControl", "Spacer"]
7
7
  }
package/build/utils.cjs CHANGED
@@ -37,6 +37,8 @@ __export(utils_exports, {
37
37
  module.exports = __toCommonJS(utils_exports);
38
38
  var import_global_styles_engine = require("@wordpress/global-styles-engine");
39
39
  var import_i18n = require("@wordpress/i18n");
40
+ var import_lock_unlock = require("./lock-unlock.cjs");
41
+ var { getViewportBreakpoints } = (0, import_lock_unlock.unlock)(import_global_styles_engine.privateApis);
40
42
  var VALID_ELEMENT_STATES = {
41
43
  link: [
42
44
  { value: ":link", label: (0, import_i18n.__)("Link") },
@@ -78,8 +80,11 @@ function getValidPseudoStates(name) {
78
80
  }
79
81
  return [];
80
82
  }
81
- function getValidViewportStates() {
82
- return RESPONSIVE_STATES;
83
+ function getValidViewportStates(viewportSettings) {
84
+ const breakpoints = getViewportBreakpoints(viewportSettings);
85
+ return RESPONSIVE_STATES.filter(
86
+ (state) => (state.value !== "@tablet" || breakpoints.tablet !== void 0) && (state.value !== "@mobile" || breakpoints.mobile !== void 0)
87
+ );
83
88
  }
84
89
  function removePropertiesFromObject(object, properties) {
85
90
  if (!properties?.length) {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/utils.ts"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { areGlobalStylesEqual } from '@wordpress/global-styles-engine';\nimport type { GlobalStylesConfig } from '@wordpress/global-styles-engine';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * State definition with value and label.\n */\nexport interface StateDefinition {\n\tvalue: string;\n\tlabel: string;\n}\n\n/**\n * Valid states for elements with their labels.\n * This mirrors the PHP constant in lib/class-wp-theme-json-gutenberg.php\n */\nexport const VALID_ELEMENT_STATES: Record< string, StateDefinition[] > = {\n\tlink: [\n\t\t{ value: ':link', label: __( 'Link' ) },\n\t\t{ value: ':any-link', label: __( 'Any Link' ) },\n\t\t{ value: ':visited', label: __( 'Visited' ) },\n\t\t{ value: ':hover', label: __( 'Hover' ) },\n\t\t{ value: ':focus', label: __( 'Focus' ) },\n\t\t{ value: ':focus-visible', label: __( 'Focus-visible' ) },\n\t\t{ value: ':active', label: __( 'Active' ) },\n\t],\n\tbutton: [\n\t\t{ value: ':link', label: __( 'Link' ) },\n\t\t{ value: ':any-link', label: __( 'Any Link' ) },\n\t\t{ value: ':visited', label: __( 'Visited' ) },\n\t\t{ value: ':hover', label: __( 'Hover' ) },\n\t\t{ value: ':focus', label: __( 'Focus' ) },\n\t\t{ value: ':focus-visible', label: __( 'Focus-visible' ) },\n\t\t{ value: ':active', label: __( 'Active' ) },\n\t],\n};\n\n/**\n * Valid states for blocks with their labels.\n * This mirrors the PHP constant in lib/class-wp-theme-json-gutenberg.php\n */\nexport const VALID_BLOCK_STATES: Record< string, StateDefinition[] > = {\n\t'core/button': [\n\t\t{ value: ':hover', label: __( 'Hover' ) },\n\t\t{ value: ':focus', label: __( 'Focus' ) },\n\t\t{ value: ':focus-visible', label: __( 'Focus-visible' ) },\n\t\t{ value: ':active', label: __( 'Active' ) },\n\t],\n};\n\n/**\n * Responsive breakpoint states available for all blocks.\n * These map to CSS media queries wrapping the block's styles.\n */\nexport const RESPONSIVE_STATES: StateDefinition[] = [\n\t{ value: '@tablet', label: __( 'Tablet' ) },\n\t{ value: '@mobile', label: __( 'Mobile' ) },\n];\n\n/**\n * Get the valid pseudo states for a given block or element.\n *\n * @param name The block name (e.g., 'core/button') or element name (e.g., 'button')\n * @return Array of valid pseudo state definitions, or empty array if none\n */\nexport function getValidPseudoStates( name: string ): StateDefinition[] {\n\t// Check if it's a block (contains a slash, e.g. 'core/button').\n\tif ( VALID_BLOCK_STATES[ name ] ) {\n\t\treturn VALID_BLOCK_STATES[ name ] ?? [];\n\t}\n\n\t// Check if it's an element\n\tif ( VALID_ELEMENT_STATES[ name ] ) {\n\t\treturn VALID_ELEMENT_STATES[ name ];\n\t}\n\n\treturn [];\n}\n\n/**\n * Get the valid viewport state definitions.\n *\n * @return Array of valid viewport state definitions.\n */\nexport function getValidViewportStates(): StateDefinition[] {\n\treturn RESPONSIVE_STATES;\n}\n\n/**\n * Removes all instances of properties from an object.\n *\n * @param object The object to remove the properties from.\n * @param properties The properties to remove.\n * @return The modified object.\n */\nexport function removePropertiesFromObject(\n\tobject: any,\n\tproperties: string[]\n): any {\n\tif ( ! properties?.length ) {\n\t\treturn object;\n\t}\n\n\tif (\n\t\ttypeof object !== 'object' ||\n\t\t! object ||\n\t\t! Object.keys( object ).length\n\t) {\n\t\treturn object;\n\t}\n\n\tfor ( const key in object ) {\n\t\tif ( properties.includes( key ) ) {\n\t\t\tdelete object[ key ];\n\t\t} else if ( typeof object[ key ] === 'object' ) {\n\t\t\tremovePropertiesFromObject( object[ key ], properties );\n\t\t}\n\t}\n\treturn object;\n}\n\n/**\n * Returns a new object, with properties specified in `properties` array.,\n * maintain the original object tree structure.\n * The function is recursive, so it will perform a deep search for the given properties.\n * E.g., the function will return `{ a: { b: { c: { test: 1 } } } }` if the properties are `[ 'test' ]`.\n *\n * @param object The object to filter\n * @param properties The properties to filter by\n * @return The merged object.\n */\nexport const filterObjectByProperties = (\n\tobject: any,\n\tproperties: string[]\n): any => {\n\tif ( ! object || ! properties?.length ) {\n\t\treturn {};\n\t}\n\n\tconst newObject: any = {};\n\tObject.keys( object ).forEach( ( key ) => {\n\t\tif ( properties.includes( key ) ) {\n\t\t\tnewObject[ key ] = object[ key ];\n\t\t} else if ( typeof object[ key ] === 'object' ) {\n\t\t\tconst newFilter = filterObjectByProperties(\n\t\t\t\tobject[ key ],\n\t\t\t\tproperties\n\t\t\t);\n\t\t\tif ( Object.keys( newFilter ).length ) {\n\t\t\t\tnewObject[ key ] = newFilter;\n\t\t\t}\n\t\t}\n\t} );\n\treturn newObject;\n};\n\n/**\n * Compares a style variation to the same variation filtered by the specified properties.\n * Returns true if the variation contains only the properties specified.\n *\n * @param variation The variation to compare.\n * @param properties The properties to compare.\n * @return Whether the variation contains only the specified properties.\n */\nexport function isVariationWithProperties(\n\tvariation: GlobalStylesConfig,\n\tproperties: string[]\n): boolean {\n\tconst variationWithProperties = filterObjectByProperties(\n\t\tstructuredClone( variation ),\n\t\tproperties\n\t);\n\n\treturn areGlobalStylesEqual( variationWithProperties, variation );\n}\n\nfunction getFontFamilyFromSetting( fontFamilies: any[], setting: string ): any {\n\tif ( ! Array.isArray( fontFamilies ) || ! setting ) {\n\t\treturn null;\n\t}\n\n\tconst fontFamilyVariable = setting.replace( 'var(', '' ).replace( ')', '' );\n\tconst fontFamilySlug = fontFamilyVariable?.split( '--' ).slice( -1 )[ 0 ];\n\n\treturn fontFamilies.find(\n\t\t( fontFamily ) => fontFamily.slug === fontFamilySlug\n\t);\n}\n\n/**\n * Extracts font families from a theme JSON configuration.\n *\n * @param themeJson The theme JSON configuration\n * @return Array containing [bodyFontFamily, headingFontFamily]\n */\nexport function getFontFamilies( themeJson: any ): [ any, any ] {\n\tconst themeFontFamilies =\n\t\tthemeJson?.settings?.typography?.fontFamilies?.theme;\n\tconst customFontFamilies =\n\t\tthemeJson?.settings?.typography?.fontFamilies?.custom;\n\n\tlet fontFamilies: any[] = [];\n\tif ( themeFontFamilies && customFontFamilies ) {\n\t\tfontFamilies = [ ...themeFontFamilies, ...customFontFamilies ];\n\t} else if ( themeFontFamilies ) {\n\t\tfontFamilies = themeFontFamilies;\n\t} else if ( customFontFamilies ) {\n\t\tfontFamilies = customFontFamilies;\n\t}\n\tconst bodyFontFamilySetting = themeJson?.styles?.typography?.fontFamily;\n\tconst bodyFontFamily = getFontFamilyFromSetting(\n\t\tfontFamilies,\n\t\tbodyFontFamilySetting\n\t);\n\n\tconst headingFontFamilySetting =\n\t\tthemeJson?.styles?.elements?.heading?.typography?.fontFamily;\n\n\tlet headingFontFamily;\n\tif ( ! headingFontFamilySetting ) {\n\t\theadingFontFamily = bodyFontFamily;\n\t} else {\n\t\theadingFontFamily = getFontFamilyFromSetting(\n\t\t\tfontFamilies,\n\t\t\tthemeJson?.styles?.elements?.heading?.typography?.fontFamily\n\t\t);\n\t}\n\n\treturn [ bodyFontFamily, headingFontFamily ];\n}\n\nfunction findNearest( input: number, numbers: number[] ): number | null {\n\t// If the numbers array is empty, return null\n\tif ( numbers.length === 0 ) {\n\t\treturn null;\n\t}\n\t// Sort the array based on the absolute difference with the input\n\tnumbers.sort( ( a, b ) => Math.abs( input - a ) - Math.abs( input - b ) );\n\t// Return the first element (which will be the nearest) from the sorted array\n\treturn numbers[ 0 ];\n}\n\nfunction extractFontWeights( fontFaces: any[] ): number[] {\n\tconst result: number[] = [];\n\n\tfontFaces.forEach( ( face ) => {\n\t\tconst weights = String( face.fontWeight ).split( ' ' );\n\n\t\tif ( weights.length === 2 ) {\n\t\t\tconst start = parseInt( weights[ 0 ] );\n\t\t\tconst end = parseInt( weights[ 1 ] );\n\n\t\t\tfor ( let i = start; i <= end; i += 100 ) {\n\t\t\t\tresult.push( i );\n\t\t\t}\n\t\t} else if ( weights.length === 1 ) {\n\t\t\tresult.push( parseInt( weights[ 0 ] ) );\n\t\t}\n\t} );\n\n\treturn result;\n}\n\n/*\n * Format the font family to use in the CSS font-family property of a CSS rule.\n *\n * The input can be a string with the font family name or a string with multiple font family names separated by commas.\n * It follows the recommendations from the CSS Fonts Module Level 4.\n * https://www.w3.org/TR/css-fonts-4/#font-family-prop\n *\n * @param input - The font family.\n * @return The formatted font family.\n */\nexport function formatFontFamily( input: string ): string {\n\t// Matches strings that are not exclusively alphabetic characters or hyphens, and do not exactly follow the pattern generic(alphabetic characters or hyphens).\n\tconst regex = /^(?!generic\\([ a-zA-Z\\-]+\\)$)(?!^[a-zA-Z\\-]+$).+/;\n\tconst output = input.trim();\n\n\tconst formatItem = ( item: string ) => {\n\t\titem = item.trim();\n\t\tif ( item.match( regex ) ) {\n\t\t\t// removes leading and trailing quotes.\n\t\t\titem = item.replace( /^[\"']|[\"']$/g, '' );\n\t\t\treturn `\"${ item }\"`;\n\t\t}\n\t\treturn item;\n\t};\n\n\tif ( output.includes( ',' ) ) {\n\t\treturn output\n\t\t\t.split( ',' )\n\t\t\t.map( formatItem )\n\t\t\t.filter( ( item ) => item !== '' )\n\t\t\t.join( ', ' );\n\t}\n\n\treturn formatItem( output );\n}\n\n/**\n * Gets the preview style for a font family.\n *\n * @param family The font family object\n * @return CSS style object for the font family\n */\nexport function getFamilyPreviewStyle( family: any ): React.CSSProperties {\n\tconst style: React.CSSProperties = {\n\t\tfontFamily: formatFontFamily( family.fontFamily ),\n\t};\n\n\tif ( ! Array.isArray( family.fontFace ) ) {\n\t\tstyle.fontWeight = '400';\n\t\tstyle.fontStyle = 'normal';\n\t\treturn style;\n\t}\n\n\tif ( family.fontFace ) {\n\t\t//get all the font faces with normal style\n\t\tconst normalFaces = family.fontFace.filter(\n\t\t\t( face: any ) =>\n\t\t\t\tface?.fontStyle && face.fontStyle.toLowerCase() === 'normal'\n\t\t);\n\t\tif ( normalFaces.length > 0 ) {\n\t\t\tstyle.fontStyle = 'normal';\n\t\t\tconst normalWeights = extractFontWeights( normalFaces );\n\t\t\tconst nearestWeight = findNearest( 400, normalWeights );\n\t\t\tstyle.fontWeight = String( nearestWeight ) || '400';\n\t\t} else {\n\t\t\tstyle.fontStyle =\n\t\t\t\t( family.fontFace.length && family.fontFace[ 0 ].fontStyle ) ||\n\t\t\t\t'normal';\n\t\t\tstyle.fontWeight =\n\t\t\t\t( family.fontFace.length &&\n\t\t\t\t\tString( family.fontFace[ 0 ].fontWeight ) ) ||\n\t\t\t\t'400';\n\t\t}\n\t}\n\n\treturn style;\n}\n\n/**\n * Iterates through the presets array and searches for slugs that start with the specified\n * slugPrefix followed by a numerical suffix. It identifies the highest numerical suffix found\n * and returns one greater than the highest found suffix, ensuring that the new index is unique.\n *\n * @param presets The array of preset objects, each potentially containing a slug property.\n * @param slugPrefix The prefix to look for in the preset slugs.\n *\n * @return The next available index for a preset with the specified slug prefix, or 1 if no matching slugs are found.\n */\n/**\n * Gets the variation class name for a block style variation.\n *\n * @param variation The variation name.\n * @return The variation class name.\n */\nexport function getVariationClassName( variation: string ): string {\n\tif ( ! variation ) {\n\t\treturn '';\n\t}\n\treturn `is-style-${ variation }`;\n}\n\nexport function getNewIndexFromPresets(\n\tpresets: any[],\n\tslugPrefix: string\n): number {\n\tconst nameRegex = new RegExp( `^${ slugPrefix }([\\\\d]+)$` );\n\tconst highestPresetValue = presets.reduce( ( currentHighest, preset ) => {\n\t\tif ( typeof preset?.slug === 'string' ) {\n\t\t\tconst matches = preset?.slug.match( nameRegex );\n\t\t\tif ( matches ) {\n\t\t\t\tconst id = parseInt( matches[ 1 ], 10 );\n\t\t\t\tif ( id > currentHighest ) {\n\t\t\t\t\treturn id;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn currentHighest;\n\t}, 0 );\n\treturn highestPresetValue + 1;\n}\n"],
5
- "mappings": "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",
6
- "names": []
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport {\n\tareGlobalStylesEqual,\n\tprivateApis as globalStylesEnginePrivateApis,\n} from '@wordpress/global-styles-engine';\nimport type {\n\tGlobalStylesConfig,\n\tGlobalStylesSettings,\n} from '@wordpress/global-styles-engine';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from './lock-unlock';\n\nconst { getViewportBreakpoints } = unlock( globalStylesEnginePrivateApis );\n\n/**\n * State definition with value and label.\n */\nexport interface StateDefinition {\n\tvalue: string;\n\tlabel: string;\n}\n\n/**\n * Valid states for elements with their labels.\n * This mirrors the PHP constant in lib/class-wp-theme-json-gutenberg.php\n */\nexport const VALID_ELEMENT_STATES: Record< string, StateDefinition[] > = {\n\tlink: [\n\t\t{ value: ':link', label: __( 'Link' ) },\n\t\t{ value: ':any-link', label: __( 'Any Link' ) },\n\t\t{ value: ':visited', label: __( 'Visited' ) },\n\t\t{ value: ':hover', label: __( 'Hover' ) },\n\t\t{ value: ':focus', label: __( 'Focus' ) },\n\t\t{ value: ':focus-visible', label: __( 'Focus-visible' ) },\n\t\t{ value: ':active', label: __( 'Active' ) },\n\t],\n\tbutton: [\n\t\t{ value: ':link', label: __( 'Link' ) },\n\t\t{ value: ':any-link', label: __( 'Any Link' ) },\n\t\t{ value: ':visited', label: __( 'Visited' ) },\n\t\t{ value: ':hover', label: __( 'Hover' ) },\n\t\t{ value: ':focus', label: __( 'Focus' ) },\n\t\t{ value: ':focus-visible', label: __( 'Focus-visible' ) },\n\t\t{ value: ':active', label: __( 'Active' ) },\n\t],\n};\n\n/**\n * Valid states for blocks with their labels.\n * This mirrors the PHP constant in lib/class-wp-theme-json-gutenberg.php\n */\nexport const VALID_BLOCK_STATES: Record< string, StateDefinition[] > = {\n\t'core/button': [\n\t\t{ value: ':hover', label: __( 'Hover' ) },\n\t\t{ value: ':focus', label: __( 'Focus' ) },\n\t\t{ value: ':focus-visible', label: __( 'Focus-visible' ) },\n\t\t{ value: ':active', label: __( 'Active' ) },\n\t],\n};\n\n/**\n * Responsive breakpoint states available for all blocks.\n * These map to CSS media queries wrapping the block's styles.\n */\nexport const RESPONSIVE_STATES: StateDefinition[] = [\n\t{ value: '@tablet', label: __( 'Tablet' ) },\n\t{ value: '@mobile', label: __( 'Mobile' ) },\n];\n\n/**\n * Get the valid pseudo states for a given block or element.\n *\n * @param name The block name (e.g., 'core/button') or element name (e.g., 'button')\n * @return Array of valid pseudo state definitions, or empty array if none\n */\nexport function getValidPseudoStates( name: string ): StateDefinition[] {\n\t// Check if it's a block (contains a slash, e.g. 'core/button').\n\tif ( VALID_BLOCK_STATES[ name ] ) {\n\t\treturn VALID_BLOCK_STATES[ name ] ?? [];\n\t}\n\n\t// Check if it's an element\n\tif ( VALID_ELEMENT_STATES[ name ] ) {\n\t\treturn VALID_ELEMENT_STATES[ name ];\n\t}\n\n\treturn [];\n}\n\n/**\n * Get the valid viewport state definitions.\n *\n * @param viewportSettings\n * @return Array of valid viewport state definitions.\n */\nexport function getValidViewportStates(\n\tviewportSettings?: GlobalStylesSettings[ 'viewport' ]\n): StateDefinition[] {\n\tconst breakpoints = getViewportBreakpoints( viewportSettings );\n\n\treturn RESPONSIVE_STATES.filter(\n\t\t( state ) =>\n\t\t\t( state.value !== '@tablet' || breakpoints.tablet !== undefined ) &&\n\t\t\t( state.value !== '@mobile' || breakpoints.mobile !== undefined )\n\t);\n}\n\n/**\n * Removes all instances of properties from an object.\n *\n * @param object The object to remove the properties from.\n * @param properties The properties to remove.\n * @return The modified object.\n */\nexport function removePropertiesFromObject(\n\tobject: any,\n\tproperties: string[]\n): any {\n\tif ( ! properties?.length ) {\n\t\treturn object;\n\t}\n\n\tif (\n\t\ttypeof object !== 'object' ||\n\t\t! object ||\n\t\t! Object.keys( object ).length\n\t) {\n\t\treturn object;\n\t}\n\n\tfor ( const key in object ) {\n\t\tif ( properties.includes( key ) ) {\n\t\t\tdelete object[ key ];\n\t\t} else if ( typeof object[ key ] === 'object' ) {\n\t\t\tremovePropertiesFromObject( object[ key ], properties );\n\t\t}\n\t}\n\treturn object;\n}\n\n/**\n * Returns a new object, with properties specified in `properties` array.,\n * maintain the original object tree structure.\n * The function is recursive, so it will perform a deep search for the given properties.\n * E.g., the function will return `{ a: { b: { c: { test: 1 } } } }` if the properties are `[ 'test' ]`.\n *\n * @param object The object to filter\n * @param properties The properties to filter by\n * @return The merged object.\n */\nexport const filterObjectByProperties = (\n\tobject: any,\n\tproperties: string[]\n): any => {\n\tif ( ! object || ! properties?.length ) {\n\t\treturn {};\n\t}\n\n\tconst newObject: any = {};\n\tObject.keys( object ).forEach( ( key ) => {\n\t\tif ( properties.includes( key ) ) {\n\t\t\tnewObject[ key ] = object[ key ];\n\t\t} else if ( typeof object[ key ] === 'object' ) {\n\t\t\tconst newFilter = filterObjectByProperties(\n\t\t\t\tobject[ key ],\n\t\t\t\tproperties\n\t\t\t);\n\t\t\tif ( Object.keys( newFilter ).length ) {\n\t\t\t\tnewObject[ key ] = newFilter;\n\t\t\t}\n\t\t}\n\t} );\n\treturn newObject;\n};\n\n/**\n * Compares a style variation to the same variation filtered by the specified properties.\n * Returns true if the variation contains only the properties specified.\n *\n * @param variation The variation to compare.\n * @param properties The properties to compare.\n * @return Whether the variation contains only the specified properties.\n */\nexport function isVariationWithProperties(\n\tvariation: GlobalStylesConfig,\n\tproperties: string[]\n): boolean {\n\tconst variationWithProperties = filterObjectByProperties(\n\t\tstructuredClone( variation ),\n\t\tproperties\n\t);\n\n\treturn areGlobalStylesEqual( variationWithProperties, variation );\n}\n\nfunction getFontFamilyFromSetting( fontFamilies: any[], setting: string ): any {\n\tif ( ! Array.isArray( fontFamilies ) || ! setting ) {\n\t\treturn null;\n\t}\n\n\tconst fontFamilyVariable = setting.replace( 'var(', '' ).replace( ')', '' );\n\tconst fontFamilySlug = fontFamilyVariable?.split( '--' ).slice( -1 )[ 0 ];\n\n\treturn fontFamilies.find(\n\t\t( fontFamily ) => fontFamily.slug === fontFamilySlug\n\t);\n}\n\n/**\n * Extracts font families from a theme JSON configuration.\n *\n * @param themeJson The theme JSON configuration\n * @return Array containing [bodyFontFamily, headingFontFamily]\n */\nexport function getFontFamilies( themeJson: any ): [ any, any ] {\n\tconst themeFontFamilies =\n\t\tthemeJson?.settings?.typography?.fontFamilies?.theme;\n\tconst customFontFamilies =\n\t\tthemeJson?.settings?.typography?.fontFamilies?.custom;\n\n\tlet fontFamilies: any[] = [];\n\tif ( themeFontFamilies && customFontFamilies ) {\n\t\tfontFamilies = [ ...themeFontFamilies, ...customFontFamilies ];\n\t} else if ( themeFontFamilies ) {\n\t\tfontFamilies = themeFontFamilies;\n\t} else if ( customFontFamilies ) {\n\t\tfontFamilies = customFontFamilies;\n\t}\n\tconst bodyFontFamilySetting = themeJson?.styles?.typography?.fontFamily;\n\tconst bodyFontFamily = getFontFamilyFromSetting(\n\t\tfontFamilies,\n\t\tbodyFontFamilySetting\n\t);\n\n\tconst headingFontFamilySetting =\n\t\tthemeJson?.styles?.elements?.heading?.typography?.fontFamily;\n\n\tlet headingFontFamily;\n\tif ( ! headingFontFamilySetting ) {\n\t\theadingFontFamily = bodyFontFamily;\n\t} else {\n\t\theadingFontFamily = getFontFamilyFromSetting(\n\t\t\tfontFamilies,\n\t\t\tthemeJson?.styles?.elements?.heading?.typography?.fontFamily\n\t\t);\n\t}\n\n\treturn [ bodyFontFamily, headingFontFamily ];\n}\n\nfunction findNearest( input: number, numbers: number[] ): number | null {\n\t// If the numbers array is empty, return null\n\tif ( numbers.length === 0 ) {\n\t\treturn null;\n\t}\n\t// Sort the array based on the absolute difference with the input\n\tnumbers.sort( ( a, b ) => Math.abs( input - a ) - Math.abs( input - b ) );\n\t// Return the first element (which will be the nearest) from the sorted array\n\treturn numbers[ 0 ];\n}\n\nfunction extractFontWeights( fontFaces: any[] ): number[] {\n\tconst result: number[] = [];\n\n\tfontFaces.forEach( ( face ) => {\n\t\tconst weights = String( face.fontWeight ).split( ' ' );\n\n\t\tif ( weights.length === 2 ) {\n\t\t\tconst start = parseInt( weights[ 0 ] );\n\t\t\tconst end = parseInt( weights[ 1 ] );\n\n\t\t\tfor ( let i = start; i <= end; i += 100 ) {\n\t\t\t\tresult.push( i );\n\t\t\t}\n\t\t} else if ( weights.length === 1 ) {\n\t\t\tresult.push( parseInt( weights[ 0 ] ) );\n\t\t}\n\t} );\n\n\treturn result;\n}\n\n/*\n * Format the font family to use in the CSS font-family property of a CSS rule.\n *\n * The input can be a string with the font family name or a string with multiple font family names separated by commas.\n * It follows the recommendations from the CSS Fonts Module Level 4.\n * https://www.w3.org/TR/css-fonts-4/#font-family-prop\n *\n * @param input - The font family.\n * @return The formatted font family.\n */\nexport function formatFontFamily( input: string ): string {\n\t// Matches strings that are not exclusively alphabetic characters or hyphens, and do not exactly follow the pattern generic(alphabetic characters or hyphens).\n\tconst regex = /^(?!generic\\([ a-zA-Z\\-]+\\)$)(?!^[a-zA-Z\\-]+$).+/;\n\tconst output = input.trim();\n\n\tconst formatItem = ( item: string ) => {\n\t\titem = item.trim();\n\t\tif ( item.match( regex ) ) {\n\t\t\t// removes leading and trailing quotes.\n\t\t\titem = item.replace( /^[\"']|[\"']$/g, '' );\n\t\t\treturn `\"${ item }\"`;\n\t\t}\n\t\treturn item;\n\t};\n\n\tif ( output.includes( ',' ) ) {\n\t\treturn output\n\t\t\t.split( ',' )\n\t\t\t.map( formatItem )\n\t\t\t.filter( ( item ) => item !== '' )\n\t\t\t.join( ', ' );\n\t}\n\n\treturn formatItem( output );\n}\n\n/**\n * Gets the preview style for a font family.\n *\n * @param family The font family object\n * @return CSS style object for the font family\n */\nexport function getFamilyPreviewStyle( family: any ): React.CSSProperties {\n\tconst style: React.CSSProperties = {\n\t\tfontFamily: formatFontFamily( family.fontFamily ),\n\t};\n\n\tif ( ! Array.isArray( family.fontFace ) ) {\n\t\tstyle.fontWeight = '400';\n\t\tstyle.fontStyle = 'normal';\n\t\treturn style;\n\t}\n\n\tif ( family.fontFace ) {\n\t\t//get all the font faces with normal style\n\t\tconst normalFaces = family.fontFace.filter(\n\t\t\t( face: any ) =>\n\t\t\t\tface?.fontStyle && face.fontStyle.toLowerCase() === 'normal'\n\t\t);\n\t\tif ( normalFaces.length > 0 ) {\n\t\t\tstyle.fontStyle = 'normal';\n\t\t\tconst normalWeights = extractFontWeights( normalFaces );\n\t\t\tconst nearestWeight = findNearest( 400, normalWeights );\n\t\t\tstyle.fontWeight = String( nearestWeight ) || '400';\n\t\t} else {\n\t\t\tstyle.fontStyle =\n\t\t\t\t( family.fontFace.length && family.fontFace[ 0 ].fontStyle ) ||\n\t\t\t\t'normal';\n\t\t\tstyle.fontWeight =\n\t\t\t\t( family.fontFace.length &&\n\t\t\t\t\tString( family.fontFace[ 0 ].fontWeight ) ) ||\n\t\t\t\t'400';\n\t\t}\n\t}\n\n\treturn style;\n}\n\n/**\n * Iterates through the presets array and searches for slugs that start with the specified\n * slugPrefix followed by a numerical suffix. It identifies the highest numerical suffix found\n * and returns one greater than the highest found suffix, ensuring that the new index is unique.\n *\n * @param presets The array of preset objects, each potentially containing a slug property.\n * @param slugPrefix The prefix to look for in the preset slugs.\n *\n * @return The next available index for a preset with the specified slug prefix, or 1 if no matching slugs are found.\n */\n/**\n * Gets the variation class name for a block style variation.\n *\n * @param variation The variation name.\n * @return The variation class name.\n */\nexport function getVariationClassName( variation: string ): string {\n\tif ( ! variation ) {\n\t\treturn '';\n\t}\n\treturn `is-style-${ variation }`;\n}\n\nexport function getNewIndexFromPresets(\n\tpresets: any[],\n\tslugPrefix: string\n): number {\n\tconst nameRegex = new RegExp( `^${ slugPrefix }([\\\\d]+)$` );\n\tconst highestPresetValue = presets.reduce( ( currentHighest, preset ) => {\n\t\tif ( typeof preset?.slug === 'string' ) {\n\t\t\tconst matches = preset?.slug.match( nameRegex );\n\t\t\tif ( matches ) {\n\t\t\t\tconst id = parseInt( matches[ 1 ], 10 );\n\t\t\t\tif ( id > currentHighest ) {\n\t\t\t\t\treturn id;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn currentHighest;\n\t}, 0 );\n\treturn highestPresetValue + 1;\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,kCAGO;AAKP,kBAAmB;AAKnB,yBAAuB;AAEvB,IAAM,EAAE,uBAAuB,QAAI,2BAAQ,4BAAAA,WAA8B;AAclE,IAAM,uBAA4D;AAAA,EACxE,MAAM;AAAA,IACL,EAAE,OAAO,SAAS,WAAO,gBAAI,MAAO,EAAE;AAAA,IACtC,EAAE,OAAO,aAAa,WAAO,gBAAI,UAAW,EAAE;AAAA,IAC9C,EAAE,OAAO,YAAY,WAAO,gBAAI,SAAU,EAAE;AAAA,IAC5C,EAAE,OAAO,UAAU,WAAO,gBAAI,OAAQ,EAAE;AAAA,IACxC,EAAE,OAAO,UAAU,WAAO,gBAAI,OAAQ,EAAE;AAAA,IACxC,EAAE,OAAO,kBAAkB,WAAO,gBAAI,eAAgB,EAAE;AAAA,IACxD,EAAE,OAAO,WAAW,WAAO,gBAAI,QAAS,EAAE;AAAA,EAC3C;AAAA,EACA,QAAQ;AAAA,IACP,EAAE,OAAO,SAAS,WAAO,gBAAI,MAAO,EAAE;AAAA,IACtC,EAAE,OAAO,aAAa,WAAO,gBAAI,UAAW,EAAE;AAAA,IAC9C,EAAE,OAAO,YAAY,WAAO,gBAAI,SAAU,EAAE;AAAA,IAC5C,EAAE,OAAO,UAAU,WAAO,gBAAI,OAAQ,EAAE;AAAA,IACxC,EAAE,OAAO,UAAU,WAAO,gBAAI,OAAQ,EAAE;AAAA,IACxC,EAAE,OAAO,kBAAkB,WAAO,gBAAI,eAAgB,EAAE;AAAA,IACxD,EAAE,OAAO,WAAW,WAAO,gBAAI,QAAS,EAAE;AAAA,EAC3C;AACD;AAMO,IAAM,qBAA0D;AAAA,EACtE,eAAe;AAAA,IACd,EAAE,OAAO,UAAU,WAAO,gBAAI,OAAQ,EAAE;AAAA,IACxC,EAAE,OAAO,UAAU,WAAO,gBAAI,OAAQ,EAAE;AAAA,IACxC,EAAE,OAAO,kBAAkB,WAAO,gBAAI,eAAgB,EAAE;AAAA,IACxD,EAAE,OAAO,WAAW,WAAO,gBAAI,QAAS,EAAE;AAAA,EAC3C;AACD;AAMO,IAAM,oBAAuC;AAAA,EACnD,EAAE,OAAO,WAAW,WAAO,gBAAI,QAAS,EAAE;AAAA,EAC1C,EAAE,OAAO,WAAW,WAAO,gBAAI,QAAS,EAAE;AAC3C;AAQO,SAAS,qBAAsB,MAAkC;AAEvE,MAAK,mBAAoB,IAAK,GAAI;AACjC,WAAO,mBAAoB,IAAK,KAAK,CAAC;AAAA,EACvC;AAGA,MAAK,qBAAsB,IAAK,GAAI;AACnC,WAAO,qBAAsB,IAAK;AAAA,EACnC;AAEA,SAAO,CAAC;AACT;AAQO,SAAS,uBACf,kBACoB;AACpB,QAAM,cAAc,uBAAwB,gBAAiB;AAE7D,SAAO,kBAAkB;AAAA,IACxB,CAAE,WACC,MAAM,UAAU,aAAa,YAAY,WAAW,YACpD,MAAM,UAAU,aAAa,YAAY,WAAW;AAAA,EACxD;AACD;AASO,SAAS,2BACf,QACA,YACM;AACN,MAAK,CAAE,YAAY,QAAS;AAC3B,WAAO;AAAA,EACR;AAEA,MACC,OAAO,WAAW,YAClB,CAAE,UACF,CAAE,OAAO,KAAM,MAAO,EAAE,QACvB;AACD,WAAO;AAAA,EACR;AAEA,aAAY,OAAO,QAAS;AAC3B,QAAK,WAAW,SAAU,GAAI,GAAI;AACjC,aAAO,OAAQ,GAAI;AAAA,IACpB,WAAY,OAAO,OAAQ,GAAI,MAAM,UAAW;AAC/C,iCAA4B,OAAQ,GAAI,GAAG,UAAW;AAAA,IACvD;AAAA,EACD;AACA,SAAO;AACR;AAYO,IAAM,2BAA2B,CACvC,QACA,eACS;AACT,MAAK,CAAE,UAAU,CAAE,YAAY,QAAS;AACvC,WAAO,CAAC;AAAA,EACT;AAEA,QAAM,YAAiB,CAAC;AACxB,SAAO,KAAM,MAAO,EAAE,QAAS,CAAE,QAAS;AACzC,QAAK,WAAW,SAAU,GAAI,GAAI;AACjC,gBAAW,GAAI,IAAI,OAAQ,GAAI;AAAA,IAChC,WAAY,OAAO,OAAQ,GAAI,MAAM,UAAW;AAC/C,YAAM,YAAY;AAAA,QACjB,OAAQ,GAAI;AAAA,QACZ;AAAA,MACD;AACA,UAAK,OAAO,KAAM,SAAU,EAAE,QAAS;AACtC,kBAAW,GAAI,IAAI;AAAA,MACpB;AAAA,IACD;AAAA,EACD,CAAE;AACF,SAAO;AACR;AAUO,SAAS,0BACf,WACA,YACU;AACV,QAAM,0BAA0B;AAAA,IAC/B,gBAAiB,SAAU;AAAA,IAC3B;AAAA,EACD;AAEA,aAAO,kDAAsB,yBAAyB,SAAU;AACjE;AAEA,SAAS,yBAA0B,cAAqB,SAAuB;AAC9E,MAAK,CAAE,MAAM,QAAS,YAAa,KAAK,CAAE,SAAU;AACnD,WAAO;AAAA,EACR;AAEA,QAAM,qBAAqB,QAAQ,QAAS,QAAQ,EAAG,EAAE,QAAS,KAAK,EAAG;AAC1E,QAAM,iBAAiB,oBAAoB,MAAO,IAAK,EAAE,MAAO,EAAG,EAAG,CAAE;AAExE,SAAO,aAAa;AAAA,IACnB,CAAE,eAAgB,WAAW,SAAS;AAAA,EACvC;AACD;AAQO,SAAS,gBAAiB,WAA+B;AAC/D,QAAM,oBACL,WAAW,UAAU,YAAY,cAAc;AAChD,QAAM,qBACL,WAAW,UAAU,YAAY,cAAc;AAEhD,MAAI,eAAsB,CAAC;AAC3B,MAAK,qBAAqB,oBAAqB;AAC9C,mBAAe,CAAE,GAAG,mBAAmB,GAAG,kBAAmB;AAAA,EAC9D,WAAY,mBAAoB;AAC/B,mBAAe;AAAA,EAChB,WAAY,oBAAqB;AAChC,mBAAe;AAAA,EAChB;AACA,QAAM,wBAAwB,WAAW,QAAQ,YAAY;AAC7D,QAAM,iBAAiB;AAAA,IACtB;AAAA,IACA;AAAA,EACD;AAEA,QAAM,2BACL,WAAW,QAAQ,UAAU,SAAS,YAAY;AAEnD,MAAI;AACJ,MAAK,CAAE,0BAA2B;AACjC,wBAAoB;AAAA,EACrB,OAAO;AACN,wBAAoB;AAAA,MACnB;AAAA,MACA,WAAW,QAAQ,UAAU,SAAS,YAAY;AAAA,IACnD;AAAA,EACD;AAEA,SAAO,CAAE,gBAAgB,iBAAkB;AAC5C;AAEA,SAAS,YAAa,OAAe,SAAmC;AAEvE,MAAK,QAAQ,WAAW,GAAI;AAC3B,WAAO;AAAA,EACR;AAEA,UAAQ,KAAM,CAAE,GAAG,MAAO,KAAK,IAAK,QAAQ,CAAE,IAAI,KAAK,IAAK,QAAQ,CAAE,CAAE;AAExE,SAAO,QAAS,CAAE;AACnB;AAEA,SAAS,mBAAoB,WAA6B;AACzD,QAAM,SAAmB,CAAC;AAE1B,YAAU,QAAS,CAAE,SAAU;AAC9B,UAAM,UAAU,OAAQ,KAAK,UAAW,EAAE,MAAO,GAAI;AAErD,QAAK,QAAQ,WAAW,GAAI;AAC3B,YAAM,QAAQ,SAAU,QAAS,CAAE,CAAE;AACrC,YAAM,MAAM,SAAU,QAAS,CAAE,CAAE;AAEnC,eAAU,IAAI,OAAO,KAAK,KAAK,KAAK,KAAM;AACzC,eAAO,KAAM,CAAE;AAAA,MAChB;AAAA,IACD,WAAY,QAAQ,WAAW,GAAI;AAClC,aAAO,KAAM,SAAU,QAAS,CAAE,CAAE,CAAE;AAAA,IACvC;AAAA,EACD,CAAE;AAEF,SAAO;AACR;AAYO,SAAS,iBAAkB,OAAwB;AAEzD,QAAM,QAAQ;AACd,QAAM,SAAS,MAAM,KAAK;AAE1B,QAAM,aAAa,CAAE,SAAkB;AACtC,WAAO,KAAK,KAAK;AACjB,QAAK,KAAK,MAAO,KAAM,GAAI;AAE1B,aAAO,KAAK,QAAS,gBAAgB,EAAG;AACxC,aAAO,IAAK,IAAK;AAAA,IAClB;AACA,WAAO;AAAA,EACR;AAEA,MAAK,OAAO,SAAU,GAAI,GAAI;AAC7B,WAAO,OACL,MAAO,GAAI,EACX,IAAK,UAAW,EAChB,OAAQ,CAAE,SAAU,SAAS,EAAG,EAChC,KAAM,IAAK;AAAA,EACd;AAEA,SAAO,WAAY,MAAO;AAC3B;AAQO,SAAS,sBAAuB,QAAmC;AACzE,QAAM,QAA6B;AAAA,IAClC,YAAY,iBAAkB,OAAO,UAAW;AAAA,EACjD;AAEA,MAAK,CAAE,MAAM,QAAS,OAAO,QAAS,GAAI;AACzC,UAAM,aAAa;AACnB,UAAM,YAAY;AAClB,WAAO;AAAA,EACR;AAEA,MAAK,OAAO,UAAW;AAEtB,UAAM,cAAc,OAAO,SAAS;AAAA,MACnC,CAAE,SACD,MAAM,aAAa,KAAK,UAAU,YAAY,MAAM;AAAA,IACtD;AACA,QAAK,YAAY,SAAS,GAAI;AAC7B,YAAM,YAAY;AAClB,YAAM,gBAAgB,mBAAoB,WAAY;AACtD,YAAM,gBAAgB,YAAa,KAAK,aAAc;AACtD,YAAM,aAAa,OAAQ,aAAc,KAAK;AAAA,IAC/C,OAAO;AACN,YAAM,YACH,OAAO,SAAS,UAAU,OAAO,SAAU,CAAE,EAAE,aACjD;AACD,YAAM,aACH,OAAO,SAAS,UACjB,OAAQ,OAAO,SAAU,CAAE,EAAE,UAAW,KACzC;AAAA,IACF;AAAA,EACD;AAEA,SAAO;AACR;AAkBO,SAAS,sBAAuB,WAA4B;AAClE,MAAK,CAAE,WAAY;AAClB,WAAO;AAAA,EACR;AACA,SAAO,YAAa,SAAU;AAC/B;AAEO,SAAS,uBACf,SACA,YACS;AACT,QAAM,YAAY,IAAI,OAAQ,IAAK,UAAW,WAAY;AAC1D,QAAM,qBAAqB,QAAQ,OAAQ,CAAE,gBAAgB,WAAY;AACxE,QAAK,OAAO,QAAQ,SAAS,UAAW;AACvC,YAAM,UAAU,QAAQ,KAAK,MAAO,SAAU;AAC9C,UAAK,SAAU;AACd,cAAM,KAAK,SAAU,QAAS,CAAE,GAAG,EAAG;AACtC,YAAK,KAAK,gBAAiB;AAC1B,iBAAO;AAAA,QACR;AAAA,MACD;AAAA,IACD;AACA,WAAO;AAAA,EACR,GAAG,CAAE;AACL,SAAO,qBAAqB;AAC7B;",
6
+ "names": ["globalStylesEnginePrivateApis"]
7
7
  }
@@ -3,20 +3,56 @@ import { BlockPreview } from "@wordpress/block-editor";
3
3
  import { getBlockType, getBlockFromExample } from "@wordpress/blocks";
4
4
  import { __experimentalSpacer as Spacer } from "@wordpress/components";
5
5
  import { useMemo } from "@wordpress/element";
6
- import { __unstableGeneratePreviewStateStyles as generatePreviewStateStyles } from "@wordpress/global-styles-engine";
6
+ import {
7
+ privateApis as globalStylesEnginePrivateApis,
8
+ __unstableGeneratePreviewStateStyles as generatePreviewStateStyles
9
+ } from "@wordpress/global-styles-engine";
7
10
  import { getVariationClassName } from "./utils.mjs";
11
+ import { unlock } from "./lock-unlock.mjs";
8
12
  import { jsx } from "react/jsx-runtime";
9
- var PREVIEW_WIDTH_BY_VIEWPORT = {
13
+ var { getViewportBreakpoints, getViewportBreakpointValueInPixels } = unlock(
14
+ globalStylesEnginePrivateApis
15
+ );
16
+ var DEFAULT_PREVIEW_WIDTH_BY_VIEWPORT = {
10
17
  default: 783,
11
18
  "@tablet": 600,
12
19
  "@mobile": 480
13
20
  };
21
+ function getPreviewWidthByViewport(selectedViewport, viewportSettings) {
22
+ const breakpoints = getViewportBreakpoints(viewportSettings);
23
+ const mobileWidth = getViewportBreakpointValueInPixels(
24
+ breakpoints.mobile
25
+ );
26
+ if (selectedViewport === "@mobile" && mobileWidth) {
27
+ return mobileWidth;
28
+ }
29
+ const tabletWidth = getViewportBreakpointValueInPixels(
30
+ breakpoints.tablet
31
+ );
32
+ if (selectedViewport === "@tablet" && tabletWidth) {
33
+ if (!mobileWidth) {
34
+ return tabletWidth;
35
+ }
36
+ if (breakpoints.mobile === "480px" && breakpoints.tablet === "782px") {
37
+ return DEFAULT_PREVIEW_WIDTH_BY_VIEWPORT["@tablet"];
38
+ }
39
+ return Math.round((mobileWidth + tabletWidth) / 2);
40
+ }
41
+ if (selectedViewport === "default") {
42
+ const desktopBreakpoint = tabletWidth ?? mobileWidth;
43
+ if (desktopBreakpoint) {
44
+ return desktopBreakpoint + 1;
45
+ }
46
+ }
47
+ return DEFAULT_PREVIEW_WIDTH_BY_VIEWPORT[selectedViewport];
48
+ }
14
49
  var BlockPreviewPanel = ({
15
50
  name,
16
51
  variation = "",
17
52
  selectedViewport = "default",
18
53
  selectedState = "default",
19
- stateStyles
54
+ stateStyles,
55
+ viewportSettings
20
56
  }) => {
21
57
  const blockExample = getBlockType(name)?.example;
22
58
  const blocks = useMemo(() => {
@@ -42,7 +78,7 @@ var BlockPreviewPanel = ({
42
78
  if (!blockExample) {
43
79
  return null;
44
80
  }
45
- const viewportWidth = PREVIEW_WIDTH_BY_VIEWPORT[selectedViewport] ?? blockExample.viewportWidth ?? 500;
81
+ const viewportWidth = getPreviewWidthByViewport(selectedViewport, viewportSettings) ?? blockExample.viewportWidth ?? 500;
46
82
  const normalizedViewportWidth = blockExample.viewportWidth ?? 500;
47
83
  const previewScale = Math.max(viewportWidth / normalizedViewportWidth, 1);
48
84
  const previewPadding = 24 * previewScale;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/block-preview-panel.tsx"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\n// @ts-expect-error: Not typed yet.\nimport { BlockPreview } from '@wordpress/block-editor';\nimport { getBlockType, getBlockFromExample } from '@wordpress/blocks';\nimport { __experimentalSpacer as Spacer } from '@wordpress/components';\nimport { useMemo } from '@wordpress/element';\nimport { __unstableGeneratePreviewStateStyles as generatePreviewStateStyles } from '@wordpress/global-styles-engine';\n\n/**\n * Internal dependencies\n */\nimport { getVariationClassName } from './utils';\n\ninterface BlockPreviewPanelProps {\n\tname: string;\n\tvariation?: string;\n\tselectedViewport?: string;\n\tselectedState?: string;\n\tstateStyles?: any;\n}\n\n// Keep in sync with responsive breakpoint media queries in the global styles engine.\nconst PREVIEW_WIDTH_BY_VIEWPORT: Record< string, number > = {\n\tdefault: 783,\n\t'@tablet': 600,\n\t'@mobile': 480,\n};\n\nconst BlockPreviewPanel = ( {\n\tname,\n\tvariation = '',\n\tselectedViewport = 'default',\n\tselectedState = 'default',\n\tstateStyles,\n}: BlockPreviewPanelProps ) => {\n\tconst blockExample = getBlockType( name )?.example;\n\tconst blocks = useMemo( () => {\n\t\tif ( ! blockExample ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst example = {\n\t\t\t...blockExample,\n\t\t\tattributes: {\n\t\t\t\t...blockExample.attributes,\n\t\t\t\tstyle: undefined,\n\t\t\t\tclassName: variation\n\t\t\t\t\t? getVariationClassName( variation )\n\t\t\t\t\t: blockExample.attributes?.className,\n\t\t\t},\n\t\t};\n\n\t\treturn getBlockFromExample( name, example );\n\t}, [ name, blockExample, variation ] );\n\n\t// Generate CSS for the selected state.\n\tconst stateCSS = useMemo( () => {\n\t\tif ( selectedState === 'default' || ! stateStyles ) {\n\t\t\treturn '';\n\t\t}\n\n\t\treturn generatePreviewStateStyles( stateStyles, name );\n\t}, [ selectedState, stateStyles, name ] );\n\n\tif ( ! blockExample ) {\n\t\treturn null;\n\t}\n\n\tconst viewportWidth =\n\t\tPREVIEW_WIDTH_BY_VIEWPORT[ selectedViewport ] ??\n\t\tblockExample.viewportWidth ??\n\t\t500;\n\tconst normalizedViewportWidth = blockExample.viewportWidth ?? 500;\n\tconst previewScale = Math.max( viewportWidth / normalizedViewportWidth, 1 );\n\tconst previewPadding = 24 * previewScale;\n\t// Same as height of InserterPreviewPanel.\n\tconst previewHeight = 144;\n\tconst sidebarWidth = 235;\n\tconst scale = sidebarWidth / viewportWidth;\n\tconst minHeight =\n\t\tscale !== 0 && scale < 1 && previewHeight\n\t\t\t? previewHeight / scale\n\t\t\t: previewHeight;\n\n\treturn (\n\t\t<Spacer marginX={ 4 } marginBottom={ 4 }>\n\t\t\t<div\n\t\t\t\tclassName=\"global-styles-ui__block-preview-panel\"\n\t\t\t\tstyle={ { maxHeight: previewHeight, boxSizing: 'initial' } }\n\t\t\t>\n\t\t\t\t<BlockPreview\n\t\t\t\t\tblocks={ blocks }\n\t\t\t\t\tviewportWidth={ viewportWidth }\n\t\t\t\t\tminHeight={ previewHeight }\n\t\t\t\t\tadditionalStyles={\n\t\t\t\t\t\t//We want this CSS to be in sync with the one in InserterPreviewPanel.\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tcss: `\n\t\t\t\t\t\t\t\tbody{\n\t\t\t\t\t\t\t\t\tpadding: ${ previewPadding }px;\n\t\t\t\t\t\t\t\t\tmin-height:${ Math.round( minHeight ) }px;\n\t\t\t\t\t\t\t\t\tdisplay:flex;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t.is-root-container {\n\t\t\t\t\t\t\t\t\twidth: ${ 100 / previewScale }%;\n\t\t\t\t\t\t\t\t\ttransform: scale(${ previewScale });\n\t\t\t\t\t\t\t\t\ttransform-origin: top left;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t${ stateCSS }\n\t\t\t\t\t\t\t`,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t]\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</Spacer>\n\t);\n};\n\nexport default BlockPreviewPanel;\n"],
5
- "mappings": ";AAIA,SAAS,oBAAoB;AAC7B,SAAS,cAAc,2BAA2B;AAClD,SAAS,wBAAwB,cAAc;AAC/C,SAAS,eAAe;AACxB,SAAS,wCAAwC,kCAAkC;AAKnF,SAAS,6BAA6B;AA+ElC;AApEJ,IAAM,4BAAsD;AAAA,EAC3D,SAAS;AAAA,EACT,WAAW;AAAA,EACX,WAAW;AACZ;AAEA,IAAM,oBAAoB,CAAE;AAAA,EAC3B;AAAA,EACA,YAAY;AAAA,EACZ,mBAAmB;AAAA,EACnB,gBAAgB;AAAA,EAChB;AACD,MAA+B;AAC9B,QAAM,eAAe,aAAc,IAAK,GAAG;AAC3C,QAAM,SAAS,QAAS,MAAM;AAC7B,QAAK,CAAE,cAAe;AACrB,aAAO;AAAA,IACR;AAEA,UAAM,UAAU;AAAA,MACf,GAAG;AAAA,MACH,YAAY;AAAA,QACX,GAAG,aAAa;AAAA,QAChB,OAAO;AAAA,QACP,WAAW,YACR,sBAAuB,SAAU,IACjC,aAAa,YAAY;AAAA,MAC7B;AAAA,IACD;AAEA,WAAO,oBAAqB,MAAM,OAAQ;AAAA,EAC3C,GAAG,CAAE,MAAM,cAAc,SAAU,CAAE;AAGrC,QAAM,WAAW,QAAS,MAAM;AAC/B,QAAK,kBAAkB,aAAa,CAAE,aAAc;AACnD,aAAO;AAAA,IACR;AAEA,WAAO,2BAA4B,aAAa,IAAK;AAAA,EACtD,GAAG,CAAE,eAAe,aAAa,IAAK,CAAE;AAExC,MAAK,CAAE,cAAe;AACrB,WAAO;AAAA,EACR;AAEA,QAAM,gBACL,0BAA2B,gBAAiB,KAC5C,aAAa,iBACb;AACD,QAAM,0BAA0B,aAAa,iBAAiB;AAC9D,QAAM,eAAe,KAAK,IAAK,gBAAgB,yBAAyB,CAAE;AAC1E,QAAM,iBAAiB,KAAK;AAE5B,QAAM,gBAAgB;AACtB,QAAM,eAAe;AACrB,QAAM,QAAQ,eAAe;AAC7B,QAAM,YACL,UAAU,KAAK,QAAQ,KAAK,gBACzB,gBAAgB,QAChB;AAEJ,SACC,oBAAC,UAAO,SAAU,GAAI,cAAe,GACpC;AAAA,IAAC;AAAA;AAAA,MACA,WAAU;AAAA,MACV,OAAQ,EAAE,WAAW,eAAe,WAAW,UAAU;AAAA,MAEzD;AAAA,QAAC;AAAA;AAAA,UACA;AAAA,UACA;AAAA,UACA,WAAY;AAAA,UACZ;AAAA;AAAA,YAEC;AAAA,cACC;AAAA,gBACC,KAAK;AAAA;AAAA,oBAEQ,cAAe;AAAA,sBACb,KAAK,MAAO,SAAU,CAAE;AAAA;AAAA;AAAA;AAAA,kBAI5B,MAAM,YAAa;AAAA,4BACT,YAAa;AAAA;AAAA;AAAA,UAG/B,QAAS;AAAA;AAAA,cAEb;AAAA,YACD;AAAA;AAAA;AAAA,MAEF;AAAA;AAAA,EACD,GACD;AAEF;AAEA,IAAO,8BAAQ;",
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\n// @ts-expect-error: Not typed yet.\nimport { BlockPreview } from '@wordpress/block-editor';\nimport { getBlockType, getBlockFromExample } from '@wordpress/blocks';\nimport { __experimentalSpacer as Spacer } from '@wordpress/components';\nimport { useMemo } from '@wordpress/element';\nimport {\n\tprivateApis as globalStylesEnginePrivateApis,\n\t__unstableGeneratePreviewStateStyles as generatePreviewStateStyles,\n} from '@wordpress/global-styles-engine';\n\n/**\n * Internal dependencies\n */\nimport { getVariationClassName } from './utils';\nimport { unlock } from './lock-unlock';\n\nconst { getViewportBreakpoints, getViewportBreakpointValueInPixels } = unlock(\n\tglobalStylesEnginePrivateApis\n);\n\ninterface BlockPreviewPanelProps {\n\tname: string;\n\tvariation?: string;\n\tselectedViewport?: string;\n\tselectedState?: string;\n\tstateStyles?: any;\n\tviewportSettings?: {\n\t\tmobile?: string;\n\t\ttablet?: string;\n\t};\n}\n\nconst DEFAULT_PREVIEW_WIDTH_BY_VIEWPORT: Record< string, number > = {\n\tdefault: 783,\n\t'@tablet': 600,\n\t'@mobile': 480,\n};\n\nfunction getPreviewWidthByViewport(\n\tselectedViewport: string,\n\tviewportSettings: BlockPreviewPanelProps[ 'viewportSettings' ]\n) {\n\tconst breakpoints = getViewportBreakpoints( viewportSettings );\n\tconst mobileWidth = getViewportBreakpointValueInPixels(\n\t\tbreakpoints.mobile\n\t);\n\n\tif ( selectedViewport === '@mobile' && mobileWidth ) {\n\t\treturn mobileWidth;\n\t}\n\n\tconst tabletWidth = getViewportBreakpointValueInPixels(\n\t\tbreakpoints.tablet\n\t);\n\n\tif ( selectedViewport === '@tablet' && tabletWidth ) {\n\t\tif ( ! mobileWidth ) {\n\t\t\treturn tabletWidth;\n\t\t}\n\t\tif (\n\t\t\tbreakpoints.mobile === '480px' &&\n\t\t\tbreakpoints.tablet === '782px'\n\t\t) {\n\t\t\treturn DEFAULT_PREVIEW_WIDTH_BY_VIEWPORT[ '@tablet' ];\n\t\t}\n\t\treturn Math.round( ( mobileWidth + tabletWidth ) / 2 );\n\t}\n\n\tif ( selectedViewport === 'default' ) {\n\t\tconst desktopBreakpoint = tabletWidth ?? mobileWidth;\n\t\tif ( desktopBreakpoint ) {\n\t\t\treturn desktopBreakpoint + 1;\n\t\t}\n\t}\n\n\treturn DEFAULT_PREVIEW_WIDTH_BY_VIEWPORT[ selectedViewport ];\n}\n\nconst BlockPreviewPanel = ( {\n\tname,\n\tvariation = '',\n\tselectedViewport = 'default',\n\tselectedState = 'default',\n\tstateStyles,\n\tviewportSettings,\n}: BlockPreviewPanelProps ) => {\n\tconst blockExample = getBlockType( name )?.example;\n\tconst blocks = useMemo( () => {\n\t\tif ( ! blockExample ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst example = {\n\t\t\t...blockExample,\n\t\t\tattributes: {\n\t\t\t\t...blockExample.attributes,\n\t\t\t\tstyle: undefined,\n\t\t\t\tclassName: variation\n\t\t\t\t\t? getVariationClassName( variation )\n\t\t\t\t\t: blockExample.attributes?.className,\n\t\t\t},\n\t\t};\n\n\t\treturn getBlockFromExample( name, example );\n\t}, [ name, blockExample, variation ] );\n\n\t// Generate CSS for the selected state.\n\tconst stateCSS = useMemo( () => {\n\t\tif ( selectedState === 'default' || ! stateStyles ) {\n\t\t\treturn '';\n\t\t}\n\n\t\treturn generatePreviewStateStyles( stateStyles, name );\n\t}, [ selectedState, stateStyles, name ] );\n\n\tif ( ! blockExample ) {\n\t\treturn null;\n\t}\n\n\tconst viewportWidth =\n\t\tgetPreviewWidthByViewport( selectedViewport, viewportSettings ) ??\n\t\tblockExample.viewportWidth ??\n\t\t500;\n\tconst normalizedViewportWidth = blockExample.viewportWidth ?? 500;\n\tconst previewScale = Math.max( viewportWidth / normalizedViewportWidth, 1 );\n\tconst previewPadding = 24 * previewScale;\n\t// Same as height of InserterPreviewPanel.\n\tconst previewHeight = 144;\n\tconst sidebarWidth = 235;\n\tconst scale = sidebarWidth / viewportWidth;\n\tconst minHeight =\n\t\tscale !== 0 && scale < 1 && previewHeight\n\t\t\t? previewHeight / scale\n\t\t\t: previewHeight;\n\n\treturn (\n\t\t<Spacer marginX={ 4 } marginBottom={ 4 }>\n\t\t\t<div\n\t\t\t\tclassName=\"global-styles-ui__block-preview-panel\"\n\t\t\t\tstyle={ { maxHeight: previewHeight, boxSizing: 'initial' } }\n\t\t\t>\n\t\t\t\t<BlockPreview\n\t\t\t\t\tblocks={ blocks }\n\t\t\t\t\tviewportWidth={ viewportWidth }\n\t\t\t\t\tminHeight={ previewHeight }\n\t\t\t\t\tadditionalStyles={\n\t\t\t\t\t\t//We want this CSS to be in sync with the one in InserterPreviewPanel.\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tcss: `\n\t\t\t\t\t\t\t\tbody{\n\t\t\t\t\t\t\t\t\tpadding: ${ previewPadding }px;\n\t\t\t\t\t\t\t\t\tmin-height:${ Math.round( minHeight ) }px;\n\t\t\t\t\t\t\t\t\tdisplay:flex;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t.is-root-container {\n\t\t\t\t\t\t\t\t\twidth: ${ 100 / previewScale }%;\n\t\t\t\t\t\t\t\t\ttransform: scale(${ previewScale });\n\t\t\t\t\t\t\t\t\ttransform-origin: top left;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t${ stateCSS }\n\t\t\t\t\t\t\t`,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t]\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</Spacer>\n\t);\n};\n\nexport default BlockPreviewPanel;\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -240,7 +240,6 @@ function FontCollection({ slug }) {
240
240
  /* @__PURE__ */ jsx(
241
241
  SelectControl,
242
242
  {
243
- __next40pxDefaultSize: true,
244
243
  label: __("Category"),
245
244
  value: filters.category,
246
245
  onChange: handleCategoryFilter,