@wordpress/block-editor 16.0.1-next.v.202607070741.0 → 16.1.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 (679) hide show
  1. package/CHANGELOG.md +27 -1
  2. package/README.md +8 -0
  3. package/build/components/alignment-control/ui.cjs +2 -4
  4. package/build/components/alignment-control/ui.cjs.map +2 -2
  5. package/build/components/background-image-control/index.cjs +40 -10
  6. package/build/components/background-image-control/index.cjs.map +2 -2
  7. package/build/components/block-alignment-control/ui.cjs +5 -3
  8. package/build/components/block-alignment-control/ui.cjs.map +2 -2
  9. package/build/components/block-canvas/index.cjs +6 -1
  10. package/build/components/block-canvas/index.cjs.map +2 -2
  11. package/build/components/block-controls/groups.cjs +3 -1
  12. package/build/components/block-controls/groups.cjs.map +2 -2
  13. package/build/components/block-edit/edit.cjs +10 -18
  14. package/build/components/block-edit/edit.cjs.map +2 -2
  15. package/build/components/block-inspector/index.cjs +73 -46
  16. package/build/components/block-inspector/index.cjs.map +2 -2
  17. package/build/components/block-list/block-html.cjs +4 -1
  18. package/build/components/block-list/block-html.cjs.map +2 -2
  19. package/build/components/block-list/block.cjs +9 -3
  20. package/build/components/block-list/block.cjs.map +3 -3
  21. package/build/components/block-list/index.cjs +1 -3
  22. package/build/components/block-list/index.cjs.map +2 -2
  23. package/build/components/block-list/use-block-props/index.cjs +7 -2
  24. package/build/components/block-list/use-block-props/index.cjs.map +2 -2
  25. package/build/components/block-list/use-block-props/use-focus-first-element.cjs +9 -4
  26. package/build/components/block-list/use-block-props/use-focus-first-element.cjs.map +2 -2
  27. package/build/components/block-list/use-block-props/use-focus-handler.cjs +11 -4
  28. package/build/components/block-list/use-block-props/use-focus-handler.cjs.map +2 -2
  29. package/build/components/block-list/use-block-props/use-register-block-event-handlers.cjs +48 -0
  30. package/build/components/block-list/use-block-props/use-register-block-event-handlers.cjs.map +7 -0
  31. package/build/components/block-parent-selector/index.cjs +2 -2
  32. package/build/components/block-parent-selector/index.cjs.map +2 -2
  33. package/build/components/block-toolbar/index.cjs +43 -24
  34. package/build/components/block-toolbar/index.cjs.map +2 -2
  35. package/build/components/block-toolbar/switch-section-style.cjs +4 -2
  36. package/build/components/block-toolbar/switch-section-style.cjs.map +3 -3
  37. package/build/components/block-tools/empty-block-inserter.cjs +2 -7
  38. package/build/components/block-tools/empty-block-inserter.cjs.map +2 -2
  39. package/build/components/block-tools/index.cjs +7 -2
  40. package/build/components/block-tools/index.cjs.map +2 -2
  41. package/build/components/block-vertical-alignment-control/ui.cjs +3 -5
  42. package/build/components/block-vertical-alignment-control/ui.cjs.map +2 -2
  43. package/build/components/block-visibility/modal.cjs +20 -6
  44. package/build/components/block-visibility/modal.cjs.map +2 -2
  45. package/build/components/block-visibility/use-block-visibility.cjs +16 -6
  46. package/build/components/block-visibility/use-block-visibility.cjs.map +3 -3
  47. package/build/components/block-visibility/utils.cjs +15 -2
  48. package/build/components/block-visibility/utils.cjs.map +3 -3
  49. package/build/components/block-visibility/viewport-menu-item.cjs +7 -1
  50. package/build/components/block-visibility/viewport-menu-item.cjs.map +2 -2
  51. package/build/components/block-visibility/viewport-toolbar.cjs +5 -0
  52. package/build/components/block-visibility/viewport-toolbar.cjs.map +2 -2
  53. package/build/components/block-visibility/viewport-visibility-info.cjs +5 -1
  54. package/build/components/block-visibility/viewport-visibility-info.cjs.map +2 -2
  55. package/build/components/border-radius-control/utils.cjs +8 -58
  56. package/build/components/border-radius-control/utils.cjs.map +2 -2
  57. package/build/components/child-layout-control/index.cjs +0 -4
  58. package/build/components/child-layout-control/index.cjs.map +2 -2
  59. package/build/components/colors-gradients/control.cjs +5 -3
  60. package/build/components/colors-gradients/control.cjs.map +2 -2
  61. package/build/components/dimension-control/index.cjs +30 -20
  62. package/build/components/dimension-control/index.cjs.map +3 -3
  63. package/build/components/dimensions-tool/aspect-ratio-tool.cjs +9 -2
  64. package/build/components/dimensions-tool/aspect-ratio-tool.cjs.map +3 -3
  65. package/build/components/editor-styles/index.cjs +9 -1
  66. package/build/components/editor-styles/index.cjs.map +2 -2
  67. package/build/components/global-styles/background-panel.cjs +66 -25
  68. package/build/components/global-styles/background-panel.cjs.map +3 -3
  69. package/build/components/global-styles/border-panel.cjs +153 -55
  70. package/build/components/global-styles/border-panel.cjs.map +3 -3
  71. package/build/components/global-styles/color-gradient-dropdown-item.cjs +46 -14
  72. package/build/components/global-styles/color-gradient-dropdown-item.cjs.map +3 -3
  73. package/build/components/global-styles/color-panel.cjs +63 -17
  74. package/build/components/global-styles/color-panel.cjs.map +2 -2
  75. package/build/components/global-styles/dimensions-panel.cjs +242 -64
  76. package/build/components/global-styles/dimensions-panel.cjs.map +3 -3
  77. package/build/components/global-styles/filters-panel.cjs +59 -20
  78. package/build/components/global-styles/filters-panel.cjs.map +3 -3
  79. package/build/components/global-styles/hooks.cjs +4 -1
  80. package/build/components/global-styles/hooks.cjs.map +2 -2
  81. package/build/components/global-styles/inheritance/index.cjs +142 -0
  82. package/build/components/global-styles/inheritance/index.cjs.map +7 -0
  83. package/build/components/global-styles/inherited-value-context.cjs +173 -0
  84. package/build/components/global-styles/inherited-value-context.cjs.map +7 -0
  85. package/build/components/global-styles/shadow-panel-components.cjs +38 -20
  86. package/build/components/global-styles/shadow-panel-components.cjs.map +2 -2
  87. package/build/components/global-styles/state-control-badges.cjs +39 -3
  88. package/build/components/global-styles/state-control-badges.cjs.map +2 -2
  89. package/build/components/global-styles/state-control.cjs +1 -1
  90. package/build/components/global-styles/state-control.cjs.map +2 -2
  91. package/build/components/global-styles/typography-panel.cjs +271 -79
  92. package/build/components/global-styles/typography-panel.cjs.map +3 -3
  93. package/build/components/image-size-control/index.cjs +2 -4
  94. package/build/components/image-size-control/index.cjs.map +2 -2
  95. package/build/components/inserter/media-tab/hooks.cjs +33 -6
  96. package/build/components/inserter/media-tab/hooks.cjs.map +2 -2
  97. package/build/components/inserter/media-tab/media-panel.cjs +78 -16
  98. package/build/components/inserter/media-tab/media-panel.cjs.map +3 -3
  99. package/build/components/inspector-controls-tabs/styles-tab.cjs +10 -1
  100. package/build/components/inspector-controls-tabs/styles-tab.cjs.map +2 -2
  101. package/build/components/keyboard-shortcuts/index.cjs +19 -11
  102. package/build/components/keyboard-shortcuts/index.cjs.map +2 -2
  103. package/build/components/line-height-control/index.cjs +1 -2
  104. package/build/components/line-height-control/index.cjs.map +2 -2
  105. package/build/components/link-control/index.cjs +3 -1
  106. package/build/components/link-control/index.cjs.map +2 -2
  107. package/build/components/list-view/block.cjs +13 -4
  108. package/build/components/list-view/block.cjs.map +2 -2
  109. package/build/components/media-placeholder/index.cjs +0 -1
  110. package/build/components/media-placeholder/index.cjs.map +2 -2
  111. package/build/components/preset-input-control/index.cjs +2 -1
  112. package/build/components/preset-input-control/index.cjs.map +2 -2
  113. package/build/components/provider/block-refs-provider.cjs +8 -2
  114. package/build/components/provider/block-refs-provider.cjs.map +2 -2
  115. package/build/components/provider/index.cjs +1 -1
  116. package/build/components/provider/index.cjs.map +2 -2
  117. package/build/components/provider/use-block-sync.cjs +18 -6
  118. package/build/components/provider/use-block-sync.cjs.map +2 -2
  119. package/build/components/provider/use-media-upload-settings.cjs +3 -1
  120. package/build/components/provider/use-media-upload-settings.cjs.map +2 -2
  121. package/build/components/rich-text/event-listeners/before-input-rules.cjs +3 -4
  122. package/build/components/rich-text/event-listeners/before-input-rules.cjs.map +3 -3
  123. package/build/components/rich-text/event-listeners/delete.cjs +2 -3
  124. package/build/components/rich-text/event-listeners/delete.cjs.map +3 -3
  125. package/build/components/rich-text/event-listeners/enter.cjs +3 -2
  126. package/build/components/rich-text/event-listeners/enter.cjs.map +3 -3
  127. package/build/components/rich-text/event-listeners/input-events.cjs +3 -3
  128. package/build/components/rich-text/event-listeners/input-events.cjs.map +3 -3
  129. package/build/components/rich-text/event-listeners/input-rules.cjs +3 -4
  130. package/build/components/rich-text/event-listeners/input-rules.cjs.map +3 -3
  131. package/build/components/rich-text/event-listeners/insert-replacement-text.cjs +3 -3
  132. package/build/components/rich-text/event-listeners/insert-replacement-text.cjs.map +3 -3
  133. package/build/components/rich-text/event-listeners/paste-handler.cjs +2 -1
  134. package/build/components/rich-text/event-listeners/paste-handler.cjs.map +3 -3
  135. package/build/components/rich-text/event-listeners/remove-browser-shortcuts.cjs +3 -3
  136. package/build/components/rich-text/event-listeners/remove-browser-shortcuts.cjs.map +3 -3
  137. package/build/components/rich-text/event-listeners/shortcuts.cjs +3 -3
  138. package/build/components/rich-text/event-listeners/shortcuts.cjs.map +3 -3
  139. package/build/components/rich-text/event-listeners/undo-automatic-change.cjs +3 -3
  140. package/build/components/rich-text/event-listeners/undo-automatic-change.cjs.map +3 -3
  141. package/build/components/rich-text/index.cjs +76 -17
  142. package/build/components/rich-text/index.cjs.map +2 -2
  143. package/build/components/spacing-sizes-control/utils.cjs +6 -19
  144. package/build/components/spacing-sizes-control/utils.cjs.map +2 -2
  145. package/build/components/text-indent-control/index.cjs +8 -2
  146. package/build/components/text-indent-control/index.cjs.map +2 -2
  147. package/build/components/typewriter/index.cjs +129 -136
  148. package/build/components/typewriter/index.cjs.map +3 -3
  149. package/build/components/url-input/index.cjs +303 -344
  150. package/build/components/url-input/index.cjs.map +3 -3
  151. package/build/components/use-block-commands/index.cjs +21 -17
  152. package/build/components/use-block-commands/index.cjs.map +2 -2
  153. package/build/components/use-on-block-drop/index.cjs +1 -1
  154. package/build/components/use-on-block-drop/index.cjs.map +2 -2
  155. package/build/components/writing-flow/index.cjs +14 -1
  156. package/build/components/writing-flow/index.cjs.map +3 -3
  157. package/build/components/writing-flow/use-arrow-nav.cjs +42 -6
  158. package/build/components/writing-flow/use-arrow-nav.cjs.map +2 -2
  159. package/build/components/writing-flow/use-click-selection.cjs +29 -3
  160. package/build/components/writing-flow/use-click-selection.cjs.map +2 -2
  161. package/build/components/writing-flow/use-clipboard-handler.cjs +4 -1
  162. package/build/components/writing-flow/use-clipboard-handler.cjs.map +2 -2
  163. package/build/components/writing-flow/use-drag-selection.cjs +3 -8
  164. package/build/components/writing-flow/use-drag-selection.cjs.map +2 -2
  165. package/build/components/writing-flow/use-editable-root-event-handlers.cjs +179 -0
  166. package/build/components/writing-flow/use-editable-root-event-handlers.cjs.map +7 -0
  167. package/build/components/writing-flow/use-editable-root.cjs +75 -0
  168. package/build/components/writing-flow/use-editable-root.cjs.map +7 -0
  169. package/build/components/writing-flow/use-home-end.cjs +64 -0
  170. package/build/components/writing-flow/use-home-end.cjs.map +7 -0
  171. package/build/components/writing-flow/use-input.cjs +15 -5
  172. package/build/components/writing-flow/use-input.cjs.map +2 -2
  173. package/build/components/writing-flow/use-multi-selection.cjs +2 -2
  174. package/build/components/writing-flow/use-multi-selection.cjs.map +2 -2
  175. package/build/components/writing-flow/use-select-all.cjs +14 -2
  176. package/build/components/writing-flow/use-select-all.cjs.map +2 -2
  177. package/build/components/writing-flow/use-selection-observer.cjs +132 -22
  178. package/build/components/writing-flow/use-selection-observer.cjs.map +3 -3
  179. package/build/components/writing-flow/utils.cjs +28 -2
  180. package/build/components/writing-flow/utils.cjs.map +2 -2
  181. package/build/hooks/background.cjs +14 -10
  182. package/build/hooks/background.cjs.map +2 -2
  183. package/build/hooks/block-fields/rich-text/index.cjs +2 -3
  184. package/build/hooks/block-fields/rich-text/index.cjs.map +3 -3
  185. package/build/hooks/block-style-variation.cjs +4 -45
  186. package/build/hooks/block-style-variation.cjs.map +3 -3
  187. package/build/hooks/border.cjs +19 -4
  188. package/build/hooks/border.cjs.map +2 -2
  189. package/build/hooks/custom-css.cjs +6 -2
  190. package/build/hooks/custom-css.cjs.map +2 -2
  191. package/build/hooks/dimensions.cjs +15 -4
  192. package/build/hooks/dimensions.cjs.map +2 -2
  193. package/build/hooks/duotone.cjs +26 -14
  194. package/build/hooks/duotone.cjs.map +3 -3
  195. package/build/hooks/elements.cjs +15 -5
  196. package/build/hooks/elements.cjs.map +2 -2
  197. package/build/hooks/grid-visualizer.cjs +5 -3
  198. package/build/hooks/grid-visualizer.cjs.map +2 -2
  199. package/build/hooks/layout-child.cjs +22 -12
  200. package/build/hooks/layout-child.cjs.map +3 -3
  201. package/build/hooks/layout.cjs +28 -13
  202. package/build/hooks/layout.cjs.map +3 -3
  203. package/build/hooks/line-height.cjs +1 -2
  204. package/build/hooks/line-height.cjs.map +2 -2
  205. package/build/hooks/states.cjs +27 -7
  206. package/build/hooks/states.cjs.map +3 -3
  207. package/build/hooks/style.cjs +31 -9
  208. package/build/hooks/style.cjs.map +3 -3
  209. package/build/hooks/text-align.cjs +36 -6
  210. package/build/hooks/text-align.cjs.map +3 -3
  211. package/build/hooks/typography.cjs +14 -5
  212. package/build/hooks/typography.cjs.map +2 -2
  213. package/build/layouts/constrained.cjs +14 -6
  214. package/build/layouts/constrained.cjs.map +2 -2
  215. package/build/layouts/flex.cjs +27 -19
  216. package/build/layouts/flex.cjs.map +2 -2
  217. package/build/layouts/grid.cjs +0 -2
  218. package/build/layouts/grid.cjs.map +2 -2
  219. package/build/private-apis.cjs +9 -5
  220. package/build/private-apis.cjs.map +3 -3
  221. package/build/store/actions.cjs +11 -6
  222. package/build/store/actions.cjs.map +2 -2
  223. package/build/store/private-selectors.cjs +41 -3
  224. package/build/store/private-selectors.cjs.map +3 -3
  225. package/build/store/reducer.cjs +6 -6
  226. package/build/store/reducer.cjs.map +2 -2
  227. package/build/store/selectors.cjs +23 -0
  228. package/build/store/selectors.cjs.map +2 -2
  229. package/build/utils/block-bindings.cjs +29 -0
  230. package/build/utils/block-bindings.cjs.map +2 -2
  231. package/build/utils/dom.cjs +14 -0
  232. package/build/utils/dom.cjs.map +2 -2
  233. package/build/{components/rich-text/input-event.cjs → utils/native-undo.cjs} +29 -24
  234. package/build/utils/native-undo.cjs.map +7 -0
  235. package/build-module/components/alignment-control/ui.mjs +2 -4
  236. package/build-module/components/alignment-control/ui.mjs.map +2 -2
  237. package/build-module/components/background-image-control/index.mjs +43 -10
  238. package/build-module/components/background-image-control/index.mjs.map +2 -2
  239. package/build-module/components/block-alignment-control/ui.mjs +5 -3
  240. package/build-module/components/block-alignment-control/ui.mjs.map +2 -2
  241. package/build-module/components/block-canvas/index.mjs +7 -2
  242. package/build-module/components/block-canvas/index.mjs.map +2 -2
  243. package/build-module/components/block-controls/groups.mjs +3 -1
  244. package/build-module/components/block-controls/groups.mjs.map +2 -2
  245. package/build-module/components/block-edit/edit.mjs +11 -18
  246. package/build-module/components/block-edit/edit.mjs.map +2 -2
  247. package/build-module/components/block-inspector/index.mjs +74 -46
  248. package/build-module/components/block-inspector/index.mjs.map +2 -2
  249. package/build-module/components/block-list/block-html.mjs +4 -1
  250. package/build-module/components/block-list/block-html.mjs.map +2 -2
  251. package/build-module/components/block-list/block.mjs +9 -3
  252. package/build-module/components/block-list/block.mjs.map +3 -3
  253. package/build-module/components/block-list/index.mjs +1 -3
  254. package/build-module/components/block-list/index.mjs.map +2 -2
  255. package/build-module/components/block-list/use-block-props/index.mjs +7 -2
  256. package/build-module/components/block-list/use-block-props/index.mjs.map +2 -2
  257. package/build-module/components/block-list/use-block-props/use-focus-first-element.mjs +9 -4
  258. package/build-module/components/block-list/use-block-props/use-focus-first-element.mjs.map +2 -2
  259. package/build-module/components/block-list/use-block-props/use-focus-handler.mjs +11 -4
  260. package/build-module/components/block-list/use-block-props/use-focus-handler.mjs.map +2 -2
  261. package/build-module/components/block-list/use-block-props/use-register-block-event-handlers.mjs +28 -0
  262. package/build-module/components/block-list/use-block-props/use-register-block-event-handlers.mjs.map +7 -0
  263. package/build-module/components/block-parent-selector/index.mjs +2 -2
  264. package/build-module/components/block-parent-selector/index.mjs.map +2 -2
  265. package/build-module/components/block-toolbar/index.mjs +43 -24
  266. package/build-module/components/block-toolbar/index.mjs.map +2 -2
  267. package/build-module/components/block-toolbar/switch-section-style.mjs +4 -2
  268. package/build-module/components/block-toolbar/switch-section-style.mjs.map +2 -2
  269. package/build-module/components/block-tools/empty-block-inserter.mjs +2 -7
  270. package/build-module/components/block-tools/empty-block-inserter.mjs.map +2 -2
  271. package/build-module/components/block-tools/index.mjs +7 -2
  272. package/build-module/components/block-tools/index.mjs.map +2 -2
  273. package/build-module/components/block-vertical-alignment-control/ui.mjs +4 -6
  274. package/build-module/components/block-vertical-alignment-control/ui.mjs.map +2 -2
  275. package/build-module/components/block-visibility/modal.mjs +22 -10
  276. package/build-module/components/block-visibility/modal.mjs.map +2 -2
  277. package/build-module/components/block-visibility/use-block-visibility.mjs +17 -7
  278. package/build-module/components/block-visibility/use-block-visibility.mjs.map +2 -2
  279. package/build-module/components/block-visibility/utils.mjs +18 -3
  280. package/build-module/components/block-visibility/utils.mjs.map +2 -2
  281. package/build-module/components/block-visibility/viewport-menu-item.mjs +7 -1
  282. package/build-module/components/block-visibility/viewport-menu-item.mjs.map +2 -2
  283. package/build-module/components/block-visibility/viewport-toolbar.mjs +5 -0
  284. package/build-module/components/block-visibility/viewport-toolbar.mjs.map +2 -2
  285. package/build-module/components/block-visibility/viewport-visibility-info.mjs +5 -1
  286. package/build-module/components/block-visibility/viewport-visibility-info.mjs.map +2 -2
  287. package/build-module/components/border-radius-control/utils.mjs +11 -53
  288. package/build-module/components/border-radius-control/utils.mjs.map +2 -2
  289. package/build-module/components/child-layout-control/index.mjs +0 -4
  290. package/build-module/components/child-layout-control/index.mjs.map +2 -2
  291. package/build-module/components/colors-gradients/control.mjs +5 -3
  292. package/build-module/components/colors-gradients/control.mjs.map +2 -2
  293. package/build-module/components/dimension-control/index.mjs +30 -20
  294. package/build-module/components/dimension-control/index.mjs.map +2 -2
  295. package/build-module/components/dimensions-tool/aspect-ratio-tool.mjs +10 -6
  296. package/build-module/components/dimensions-tool/aspect-ratio-tool.mjs.map +2 -2
  297. package/build-module/components/editor-styles/index.mjs +9 -1
  298. package/build-module/components/editor-styles/index.mjs.map +2 -2
  299. package/build-module/components/global-styles/background-panel.mjs +71 -29
  300. package/build-module/components/global-styles/background-panel.mjs.map +2 -2
  301. package/build-module/components/global-styles/border-panel.mjs +157 -56
  302. package/build-module/components/global-styles/border-panel.mjs.map +2 -2
  303. package/build-module/components/global-styles/color-gradient-dropdown-item.mjs +51 -15
  304. package/build-module/components/global-styles/color-gradient-dropdown-item.mjs.map +2 -2
  305. package/build-module/components/global-styles/color-panel.mjs +63 -17
  306. package/build-module/components/global-styles/color-panel.mjs.map +2 -2
  307. package/build-module/components/global-styles/dimensions-panel.mjs +248 -66
  308. package/build-module/components/global-styles/dimensions-panel.mjs.map +2 -2
  309. package/build-module/components/global-styles/filters-panel.mjs +64 -21
  310. package/build-module/components/global-styles/filters-panel.mjs.map +2 -2
  311. package/build-module/components/global-styles/hooks.mjs +4 -1
  312. package/build-module/components/global-styles/hooks.mjs.map +2 -2
  313. package/build-module/components/global-styles/inheritance/index.mjs +108 -0
  314. package/build-module/components/global-styles/inheritance/index.mjs.map +7 -0
  315. package/build-module/components/global-styles/inherited-value-context.mjs +141 -0
  316. package/build-module/components/global-styles/inherited-value-context.mjs.map +7 -0
  317. package/build-module/components/global-styles/shadow-panel-components.mjs +38 -20
  318. package/build-module/components/global-styles/shadow-panel-components.mjs.map +2 -2
  319. package/build-module/components/global-styles/state-control-badges.mjs +41 -5
  320. package/build-module/components/global-styles/state-control-badges.mjs.map +2 -2
  321. package/build-module/components/global-styles/state-control.mjs +1 -1
  322. package/build-module/components/global-styles/state-control.mjs.map +2 -2
  323. package/build-module/components/global-styles/typography-panel.mjs +276 -80
  324. package/build-module/components/global-styles/typography-panel.mjs.map +2 -2
  325. package/build-module/components/image-size-control/index.mjs +2 -4
  326. package/build-module/components/image-size-control/index.mjs.map +2 -2
  327. package/build-module/components/inserter/media-tab/hooks.mjs +33 -6
  328. package/build-module/components/inserter/media-tab/hooks.mjs.map +2 -2
  329. package/build-module/components/inserter/media-tab/media-panel.mjs +86 -18
  330. package/build-module/components/inserter/media-tab/media-panel.mjs.map +2 -2
  331. package/build-module/components/inspector-controls-tabs/styles-tab.mjs +6 -1
  332. package/build-module/components/inspector-controls-tabs/styles-tab.mjs.map +2 -2
  333. package/build-module/components/keyboard-shortcuts/index.mjs +19 -11
  334. package/build-module/components/keyboard-shortcuts/index.mjs.map +2 -2
  335. package/build-module/components/line-height-control/index.mjs +1 -2
  336. package/build-module/components/line-height-control/index.mjs.map +2 -2
  337. package/build-module/components/link-control/index.mjs +4 -2
  338. package/build-module/components/link-control/index.mjs.map +2 -2
  339. package/build-module/components/list-view/block.mjs +13 -4
  340. package/build-module/components/list-view/block.mjs.map +2 -2
  341. package/build-module/components/media-placeholder/index.mjs +0 -1
  342. package/build-module/components/media-placeholder/index.mjs.map +2 -2
  343. package/build-module/components/preset-input-control/index.mjs +2 -1
  344. package/build-module/components/preset-input-control/index.mjs.map +2 -2
  345. package/build-module/components/provider/block-refs-provider.mjs +8 -2
  346. package/build-module/components/provider/block-refs-provider.mjs.map +2 -2
  347. package/build-module/components/provider/index.mjs +1 -1
  348. package/build-module/components/provider/index.mjs.map +2 -2
  349. package/build-module/components/provider/use-block-sync.mjs +18 -6
  350. package/build-module/components/provider/use-block-sync.mjs.map +2 -2
  351. package/build-module/components/provider/use-media-upload-settings.mjs +3 -1
  352. package/build-module/components/provider/use-media-upload-settings.mjs.map +2 -2
  353. package/build-module/components/rich-text/event-listeners/before-input-rules.mjs +8 -5
  354. package/build-module/components/rich-text/event-listeners/before-input-rules.mjs.map +2 -2
  355. package/build-module/components/rich-text/event-listeners/delete.mjs +7 -4
  356. package/build-module/components/rich-text/event-listeners/delete.mjs.map +2 -2
  357. package/build-module/components/rich-text/event-listeners/enter.mjs +8 -3
  358. package/build-module/components/rich-text/event-listeners/enter.mjs.map +2 -2
  359. package/build-module/components/rich-text/event-listeners/input-events.mjs +3 -3
  360. package/build-module/components/rich-text/event-listeners/input-events.mjs.map +2 -2
  361. package/build-module/components/rich-text/event-listeners/input-rules.mjs +8 -5
  362. package/build-module/components/rich-text/event-listeners/input-rules.mjs.map +2 -2
  363. package/build-module/components/rich-text/event-listeners/insert-replacement-text.mjs +3 -3
  364. package/build-module/components/rich-text/event-listeners/insert-replacement-text.mjs.map +2 -2
  365. package/build-module/components/rich-text/event-listeners/paste-handler.mjs +8 -2
  366. package/build-module/components/rich-text/event-listeners/paste-handler.mjs.map +2 -2
  367. package/build-module/components/rich-text/event-listeners/remove-browser-shortcuts.mjs +3 -3
  368. package/build-module/components/rich-text/event-listeners/remove-browser-shortcuts.mjs.map +2 -2
  369. package/build-module/components/rich-text/event-listeners/shortcuts.mjs +3 -3
  370. package/build-module/components/rich-text/event-listeners/shortcuts.mjs.map +2 -2
  371. package/build-module/components/rich-text/event-listeners/undo-automatic-change.mjs +3 -3
  372. package/build-module/components/rich-text/event-listeners/undo-automatic-change.mjs.map +2 -2
  373. package/build-module/components/rich-text/index.mjs +79 -14
  374. package/build-module/components/rich-text/index.mjs.map +2 -2
  375. package/build-module/components/spacing-sizes-control/utils.mjs +6 -18
  376. package/build-module/components/spacing-sizes-control/utils.mjs.map +2 -2
  377. package/build-module/components/text-indent-control/index.mjs +8 -2
  378. package/build-module/components/text-indent-control/index.mjs.map +2 -2
  379. package/build-module/components/typewriter/index.mjs +129 -136
  380. package/build-module/components/typewriter/index.mjs.map +2 -2
  381. package/build-module/components/url-input/index.mjs +306 -353
  382. package/build-module/components/url-input/index.mjs.map +2 -2
  383. package/build-module/components/use-block-commands/index.mjs +21 -17
  384. package/build-module/components/use-block-commands/index.mjs.map +2 -2
  385. package/build-module/components/use-on-block-drop/index.mjs +2 -2
  386. package/build-module/components/use-on-block-drop/index.mjs.map +2 -2
  387. package/build-module/components/writing-flow/index.mjs +14 -1
  388. package/build-module/components/writing-flow/index.mjs.map +2 -2
  389. package/build-module/components/writing-flow/use-arrow-nav.mjs +43 -7
  390. package/build-module/components/writing-flow/use-arrow-nav.mjs.map +2 -2
  391. package/build-module/components/writing-flow/use-click-selection.mjs +29 -3
  392. package/build-module/components/writing-flow/use-click-selection.mjs.map +2 -2
  393. package/build-module/components/writing-flow/use-clipboard-handler.mjs +5 -2
  394. package/build-module/components/writing-flow/use-clipboard-handler.mjs.map +2 -2
  395. package/build-module/components/writing-flow/use-drag-selection.mjs +1 -6
  396. package/build-module/components/writing-flow/use-drag-selection.mjs.map +2 -2
  397. package/build-module/components/writing-flow/use-editable-root-event-handlers.mjs +154 -0
  398. package/build-module/components/writing-flow/use-editable-root-event-handlers.mjs.map +7 -0
  399. package/build-module/components/writing-flow/use-editable-root.mjs +54 -0
  400. package/build-module/components/writing-flow/use-editable-root.mjs.map +7 -0
  401. package/build-module/components/writing-flow/use-home-end.mjs +43 -0
  402. package/build-module/components/writing-flow/use-home-end.mjs.map +7 -0
  403. package/build-module/components/writing-flow/use-input.mjs +15 -5
  404. package/build-module/components/writing-flow/use-input.mjs.map +2 -2
  405. package/build-module/components/writing-flow/use-multi-selection.mjs +2 -2
  406. package/build-module/components/writing-flow/use-multi-selection.mjs.map +2 -2
  407. package/build-module/components/writing-flow/use-select-all.mjs +19 -3
  408. package/build-module/components/writing-flow/use-select-all.mjs.map +2 -2
  409. package/build-module/components/writing-flow/use-selection-observer.mjs +134 -21
  410. package/build-module/components/writing-flow/use-selection-observer.mjs.map +2 -2
  411. package/build-module/components/writing-flow/utils.mjs +26 -1
  412. package/build-module/components/writing-flow/utils.mjs.map +2 -2
  413. package/build-module/hooks/background.mjs +14 -10
  414. package/build-module/hooks/background.mjs.map +2 -2
  415. package/build-module/hooks/block-fields/rich-text/index.mjs +2 -6
  416. package/build-module/hooks/block-fields/rich-text/index.mjs.map +2 -2
  417. package/build-module/hooks/block-style-variation.mjs +8 -44
  418. package/build-module/hooks/block-style-variation.mjs.map +2 -2
  419. package/build-module/hooks/border.mjs +19 -4
  420. package/build-module/hooks/border.mjs.map +2 -2
  421. package/build-module/hooks/custom-css.mjs +7 -3
  422. package/build-module/hooks/custom-css.mjs.map +2 -2
  423. package/build-module/hooks/dimensions.mjs +15 -4
  424. package/build-module/hooks/dimensions.mjs.map +2 -2
  425. package/build-module/hooks/duotone.mjs +20 -9
  426. package/build-module/hooks/duotone.mjs.map +2 -2
  427. package/build-module/hooks/elements.mjs +15 -5
  428. package/build-module/hooks/elements.mjs.map +2 -2
  429. package/build-module/hooks/grid-visualizer.mjs +5 -3
  430. package/build-module/hooks/grid-visualizer.mjs.map +2 -2
  431. package/build-module/hooks/layout-child.mjs +22 -12
  432. package/build-module/hooks/layout-child.mjs.map +2 -2
  433. package/build-module/hooks/layout.mjs +28 -13
  434. package/build-module/hooks/layout.mjs.map +2 -2
  435. package/build-module/hooks/line-height.mjs +1 -2
  436. package/build-module/hooks/line-height.mjs.map +2 -2
  437. package/build-module/hooks/states.mjs +27 -7
  438. package/build-module/hooks/states.mjs.map +2 -2
  439. package/build-module/hooks/style.mjs +40 -11
  440. package/build-module/hooks/style.mjs.map +2 -2
  441. package/build-module/hooks/text-align.mjs +39 -10
  442. package/build-module/hooks/text-align.mjs.map +2 -2
  443. package/build-module/hooks/typography.mjs +14 -5
  444. package/build-module/hooks/typography.mjs.map +2 -2
  445. package/build-module/layouts/constrained.mjs +14 -6
  446. package/build-module/layouts/constrained.mjs.map +2 -2
  447. package/build-module/layouts/flex.mjs +27 -19
  448. package/build-module/layouts/flex.mjs.map +2 -2
  449. package/build-module/layouts/grid.mjs +0 -2
  450. package/build-module/layouts/grid.mjs.map +2 -2
  451. package/build-module/private-apis.mjs +7 -3
  452. package/build-module/private-apis.mjs.map +2 -2
  453. package/build-module/store/actions.mjs +12 -7
  454. package/build-module/store/actions.mjs.map +2 -2
  455. package/build-module/store/private-selectors.mjs +42 -3
  456. package/build-module/store/private-selectors.mjs.map +2 -2
  457. package/build-module/store/reducer.mjs +6 -6
  458. package/build-module/store/reducer.mjs.map +2 -2
  459. package/build-module/store/selectors.mjs +23 -0
  460. package/build-module/store/selectors.mjs.map +2 -2
  461. package/build-module/utils/block-bindings.mjs +28 -0
  462. package/build-module/utils/block-bindings.mjs.map +2 -2
  463. package/build-module/utils/dom.mjs +13 -0
  464. package/build-module/utils/dom.mjs.map +2 -2
  465. package/build-module/utils/native-undo.mjs +29 -0
  466. package/build-module/utils/native-undo.mjs.map +7 -0
  467. package/build-style/content-rtl.css +14 -27
  468. package/build-style/content.css +14 -27
  469. package/build-style/default-editor-styles-rtl.css +1 -1
  470. package/build-style/default-editor-styles.css +1 -1
  471. package/build-style/style-rtl.css +191 -61
  472. package/build-style/style.css +191 -61
  473. package/build-types/components/block-context/index.d.ts +7 -0
  474. package/build-types/components/block-context/index.d.ts.map +1 -1
  475. package/build-types/utils/block-bindings.d.ts +19 -0
  476. package/build-types/utils/block-bindings.d.ts.map +1 -1
  477. package/build-types/utils/dom.d.ts +11 -0
  478. package/build-types/utils/dom.d.ts.map +1 -1
  479. package/build-types/utils/get-px-from-css-unit.d.ts +2 -2
  480. package/build-types/utils/get-px-from-css-unit.d.ts.map +1 -1
  481. package/build-types/utils/pasting.d.ts +1 -1
  482. package/build-types/utils/pasting.d.ts.map +1 -1
  483. package/package.json +43 -44
  484. package/src/components/alignment-control/test/__snapshots__/index.js.snap +1 -1
  485. package/src/components/alignment-control/ui.js +2 -4
  486. package/src/components/background-image-control/index.js +74 -37
  487. package/src/components/background-image-control/style.scss +13 -4
  488. package/src/components/block-alignment-control/test/__snapshots__/index.js.snap +3 -3
  489. package/src/components/block-alignment-control/test/index.js +1 -1
  490. package/src/components/block-alignment-control/ui.js +4 -2
  491. package/src/components/block-breadcrumb/test/__snapshots__/index.js.snap +1 -1
  492. package/src/components/block-canvas/index.js +9 -2
  493. package/src/components/block-card/style.scss +1 -1
  494. package/src/components/block-compare/test/__snapshots__/block-view.js.snap +1 -1
  495. package/src/components/block-controls/groups.js +2 -0
  496. package/src/components/block-edit/edit.js +13 -31
  497. package/src/components/block-icon/test/__snapshots__/index.js.snap +1 -1
  498. package/src/components/block-inspector/index.js +60 -31
  499. package/src/components/block-list/block-html.js +5 -0
  500. package/src/components/block-list/block.js +6 -0
  501. package/src/components/block-list/content.scss +1 -11
  502. package/src/components/block-list/index.js +0 -2
  503. package/src/components/block-list/use-block-props/index.js +7 -1
  504. package/src/components/block-list/use-block-props/use-focus-first-element.js +23 -4
  505. package/src/components/block-list/use-block-props/use-focus-handler.js +35 -9
  506. package/src/components/block-list/use-block-props/use-register-block-event-handlers.js +45 -0
  507. package/src/components/block-lock/style.scss +1 -1
  508. package/src/components/block-manager/style.scss +1 -1
  509. package/src/components/block-navigation/style.scss +1 -1
  510. package/src/components/block-parent-selector/index.js +5 -2
  511. package/src/components/block-quick-navigation/style.scss +1 -3
  512. package/src/components/block-styles/style.scss +2 -2
  513. package/src/components/block-toolbar/index.js +41 -18
  514. package/src/components/block-toolbar/switch-section-style.js +5 -2
  515. package/src/components/block-tools/empty-block-inserter.js +3 -7
  516. package/src/components/block-tools/index.js +7 -0
  517. package/src/components/block-types-list/style.scss +0 -1
  518. package/src/components/block-vertical-alignment-control/test/__snapshots__/index.js.snap +3 -3
  519. package/src/components/block-vertical-alignment-control/test/index.js +18 -2
  520. package/src/components/block-vertical-alignment-control/ui.js +3 -5
  521. package/src/components/block-visibility/modal.js +24 -10
  522. package/src/components/block-visibility/style.scss +1 -1
  523. package/src/components/block-visibility/test/use-block-visibility.js +128 -35
  524. package/src/components/block-visibility/test/utils.js +11 -0
  525. package/src/components/block-visibility/use-block-visibility.js +33 -11
  526. package/src/components/block-visibility/utils.js +31 -6
  527. package/src/components/block-visibility/viewport-menu-item.js +10 -1
  528. package/src/components/block-visibility/viewport-toolbar.js +6 -0
  529. package/src/components/block-visibility/viewport-visibility-info.js +5 -1
  530. package/src/components/border-radius-control/test/utils.js +0 -41
  531. package/src/components/border-radius-control/utils.js +16 -107
  532. package/src/components/button-block-appender/content.scss +7 -9
  533. package/src/components/child-layout-control/index.js +0 -4
  534. package/src/components/color-palette/test/__snapshots__/control.js.snap +3 -3
  535. package/src/components/colors-gradients/control.js +6 -3
  536. package/src/components/default-block-appender/test/__snapshots__/index.js.snap +1 -1
  537. package/src/components/dimension-control/index.js +13 -1
  538. package/src/components/dimensions-tool/aspect-ratio-tool.js +13 -6
  539. package/src/components/editor-styles/index.js +16 -1
  540. package/src/components/font-family/stories/index.story.jsx +1 -1
  541. package/src/components/global-styles/background-panel.js +107 -34
  542. package/src/components/global-styles/border-panel.js +219 -48
  543. package/src/components/global-styles/color-gradient-dropdown-item.js +93 -28
  544. package/src/components/global-styles/color-panel.js +92 -11
  545. package/src/components/global-styles/dimensions-panel.js +422 -71
  546. package/src/components/global-styles/filters-panel.js +88 -28
  547. package/src/components/global-styles/hooks.js +8 -1
  548. package/src/components/global-styles/inheritance/index.js +204 -0
  549. package/src/components/global-styles/inheritance/style.scss +184 -0
  550. package/src/components/global-styles/inheritance/test/index.js +281 -0
  551. package/src/components/global-styles/inherited-value-context.js +271 -0
  552. package/src/components/global-styles/shadow-panel-components.js +48 -26
  553. package/src/components/global-styles/state-control-badges.js +45 -6
  554. package/src/components/global-styles/state-control.js +2 -2
  555. package/src/components/global-styles/style.scss +5 -0
  556. package/src/components/global-styles/test/background-panel.js +338 -1
  557. package/src/components/global-styles/test/border-panel.js +441 -0
  558. package/src/components/global-styles/test/color-panel.js +182 -2
  559. package/src/components/global-styles/test/dimensions-panel.js +753 -0
  560. package/src/components/global-styles/test/filters-panel.js +194 -0
  561. package/src/components/global-styles/test/inherited-value-context-core.js +98 -0
  562. package/src/components/global-styles/test/inherited-value-context.js +454 -0
  563. package/src/components/global-styles/test/state-control-badges.js +65 -0
  564. package/src/components/global-styles/test/typography-panel-core.js +185 -0
  565. package/src/components/global-styles/test/typography-panel.js +849 -12
  566. package/src/components/global-styles/typography-panel.js +449 -101
  567. package/src/components/image-editor/style.scss +33 -0
  568. package/src/components/image-size-control/index.js +0 -2
  569. package/src/components/inner-blocks/test/__snapshots__/index.js.snap +1 -1
  570. package/src/components/inserter/media-tab/hooks.js +55 -7
  571. package/src/components/inserter/media-tab/media-panel.js +117 -21
  572. package/src/components/inserter/media-tab/test/hooks.js +63 -0
  573. package/src/components/inserter/media-tab/test/media-panel.js +127 -0
  574. package/src/components/inserter/style.scss +19 -16
  575. package/src/components/inserter-list-item/style.scss +0 -15
  576. package/src/components/inspector-controls-tabs/styles-tab.js +5 -1
  577. package/src/components/keyboard-shortcuts/index.js +28 -11
  578. package/src/components/line-height-control/index.js +1 -2
  579. package/src/components/link-control/index.js +7 -2
  580. package/src/components/link-control/style.scss +2 -2
  581. package/src/components/link-control/test/index.js +6 -6
  582. package/src/components/link-picker/style.scss +1 -2
  583. package/src/components/list-view/block.js +13 -4
  584. package/src/components/list-view/style.scss +4 -5
  585. package/src/components/media-placeholder/index.js +0 -1
  586. package/src/components/multi-selection-inspector/style.scss +1 -1
  587. package/src/components/preset-input-control/index.js +4 -1
  588. package/src/components/provider/block-refs-provider.js +12 -2
  589. package/src/components/provider/index.js +2 -2
  590. package/src/components/provider/use-block-sync.js +18 -6
  591. package/src/components/provider/use-media-upload-settings.js +2 -0
  592. package/src/components/responsive-block-control/style.scss +1 -1
  593. package/src/components/rich-text/event-listeners/before-input-rules.js +8 -5
  594. package/src/components/rich-text/event-listeners/delete.js +7 -4
  595. package/src/components/rich-text/event-listeners/enter.js +10 -4
  596. package/src/components/rich-text/event-listeners/input-events.js +4 -3
  597. package/src/components/rich-text/event-listeners/input-rules.js +8 -5
  598. package/src/components/rich-text/event-listeners/insert-replacement-text.js +4 -3
  599. package/src/components/rich-text/event-listeners/paste-handler.js +15 -3
  600. package/src/components/rich-text/event-listeners/remove-browser-shortcuts.js +4 -3
  601. package/src/components/rich-text/event-listeners/shortcuts.js +4 -3
  602. package/src/components/rich-text/event-listeners/undo-automatic-change.js +4 -3
  603. package/src/components/rich-text/index.js +116 -26
  604. package/src/components/skip-to-selected-block/style.scss +1 -1
  605. package/src/components/spacing-sizes-control/test/utils.js +16 -5
  606. package/src/components/spacing-sizes-control/utils.js +11 -28
  607. package/src/components/text-indent-control/index.js +8 -0
  608. package/src/components/typewriter/index.js +228 -224
  609. package/src/components/url-input/index.js +363 -431
  610. package/src/components/url-input/test/index.js +592 -0
  611. package/src/components/use-block-commands/index.js +27 -17
  612. package/src/components/use-on-block-drop/index.js +2 -2
  613. package/src/components/warning/test/__snapshots__/index.js.snap +1 -1
  614. package/src/components/writing-flow/index.js +17 -1
  615. package/src/components/writing-flow/use-arrow-nav.js +90 -13
  616. package/src/components/writing-flow/use-click-selection.js +55 -5
  617. package/src/components/writing-flow/use-clipboard-handler.js +5 -2
  618. package/src/components/writing-flow/use-drag-selection.js +1 -14
  619. package/src/components/writing-flow/use-editable-root-event-handlers.js +266 -0
  620. package/src/components/writing-flow/use-editable-root.js +112 -0
  621. package/src/components/writing-flow/use-home-end.js +71 -0
  622. package/src/components/writing-flow/use-input.js +25 -8
  623. package/src/components/writing-flow/use-multi-selection.js +2 -3
  624. package/src/components/writing-flow/use-select-all.js +33 -3
  625. package/src/components/writing-flow/use-selection-observer.js +218 -42
  626. package/src/components/writing-flow/utils.js +62 -0
  627. package/src/hooks/background.js +27 -24
  628. package/src/hooks/block-fields/link/styles.scss +1 -6
  629. package/src/hooks/block-fields/media/styles.scss +1 -6
  630. package/src/hooks/block-fields/rich-text/index.js +6 -9
  631. package/src/hooks/block-fields/rich-text/styles.scss +1 -1
  632. package/src/hooks/block-style-variation.js +8 -74
  633. package/src/hooks/border.js +19 -4
  634. package/src/hooks/custom-css.js +15 -6
  635. package/src/hooks/dimensions.js +17 -4
  636. package/src/hooks/duotone.js +26 -8
  637. package/src/hooks/elements.js +14 -4
  638. package/src/hooks/grid-visualizer.js +40 -36
  639. package/src/hooks/layout-child.js +19 -9
  640. package/src/hooks/layout.js +48 -31
  641. package/src/hooks/line-height.js +0 -1
  642. package/src/hooks/states.js +38 -9
  643. package/src/hooks/style.js +67 -17
  644. package/src/hooks/test/inherited-value-wiring.js +411 -0
  645. package/src/hooks/test/preset-round-trip.js +456 -0
  646. package/src/hooks/test/style.js +29 -0
  647. package/src/hooks/test/text-align.js +34 -1
  648. package/src/hooks/text-align.js +41 -10
  649. package/src/hooks/typography.js +35 -24
  650. package/src/layouts/constrained.js +5 -1
  651. package/src/layouts/flex.js +5 -1
  652. package/src/layouts/grid.js +0 -2
  653. package/src/private-apis.js +11 -2
  654. package/src/store/actions.js +53 -19
  655. package/src/store/private-selectors.js +82 -6
  656. package/src/store/reducer.js +9 -9
  657. package/src/store/selectors.js +56 -8
  658. package/src/store/test/actions.js +1 -1
  659. package/src/store/test/private-selectors.js +271 -1
  660. package/src/style.scss +2 -0
  661. package/src/utils/block-bindings.ts +50 -0
  662. package/src/utils/dom.ts +33 -0
  663. package/src/utils/native-undo.js +56 -0
  664. package/src/utils/test/block-bindings.js +181 -0
  665. package/build/components/duotone/utils.cjs +0 -87
  666. package/build/components/duotone/utils.cjs.map +0 -7
  667. package/build/components/rich-text/input-event.cjs.map +0 -7
  668. package/build/components/rich-text/shortcut.cjs +0 -51
  669. package/build/components/rich-text/shortcut.cjs.map +0 -7
  670. package/build-module/components/duotone/utils.mjs +0 -59
  671. package/build-module/components/duotone/utils.mjs.map +0 -7
  672. package/build-module/components/rich-text/input-event.mjs +0 -25
  673. package/build-module/components/rich-text/input-event.mjs.map +0 -7
  674. package/build-module/components/rich-text/shortcut.mjs +0 -26
  675. package/build-module/components/rich-text/shortcut.mjs.map +0 -7
  676. package/src/components/duotone/utils.js +0 -90
  677. package/src/components/rich-text/input-event.js +0 -31
  678. package/src/components/rich-text/shortcut.js +0 -32
  679. package/src/hooks/test/get-variation-styles-with-ref-values.js +0 -91
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/block-visibility/modal.js"],
4
- "sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport {\n\tuseState,\n\tuseMemo,\n\tuseCallback,\n\tcreateInterpolateElement,\n} from '@wordpress/element';\nimport {\n\tButton,\n\tCheckboxControl,\n\tFlex,\n\tFlexItem,\n\tIcon as WCIcon,\n\tModal,\n} from '@wordpress/components';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { store as keyboardShortcutsStore } from '@wordpress/keyboard-shortcuts';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport {\n\tBLOCK_VISIBILITY_VIEWPORT_ENTRIES,\n\tBLOCK_VISIBILITY_VIEWPORTS,\n} from './constants';\nimport { store as blockEditorStore } from '../../store';\nimport { cleanEmptyObject } from '../../hooks/utils';\nimport {\n\tgetViewportCheckboxState,\n\tgetHideEverywhereCheckboxState,\n} from './utils';\n\nconst DEFAULT_VIEWPORT_CHECKBOX_VALUES = {\n\t[ BLOCK_VISIBILITY_VIEWPORTS.mobile.key ]: false,\n\t[ BLOCK_VISIBILITY_VIEWPORTS.tablet.key ]: false,\n\t[ BLOCK_VISIBILITY_VIEWPORTS.desktop.key ]: false,\n};\n\nconst EMPTY_BLOCKS = [];\n\n/**\n * Modal component for configuring block visibility across viewports.\n *\n * Allows users to hide blocks on specific viewport sizes (mobile, tablet, desktop)\n * or hide them everywhere. When editing multiple blocks, checkboxes only show as\n * checked if ALL selected blocks share the same setting to avoid ambiguity.\n *\n * @param {Object} props Component props.\n * @param {Array} props.clientIds The client IDs of the blocks to hide.\n * @param {Function} props.onClose Callback function invoked when the modal is closed.\n * @return {React.JSX.Element} The modal component.\n */\nexport default function BlockVisibilityModal( { clientIds, onClose } ) {\n\tconst { createSuccessNotice } = useDispatch( noticesStore );\n\tconst { updateBlockAttributes } = useDispatch( blockEditorStore );\n\n\tconst blocks = useSelect(\n\t\t( select ) =>\n\t\t\tselect( blockEditorStore ).getBlocksByClientId( clientIds ) ??\n\t\t\tEMPTY_BLOCKS,\n\t\t[ clientIds ]\n\t);\n\tconst listViewShortcut = useSelect( ( select ) => {\n\t\treturn select( keyboardShortcutsStore ).getShortcutRepresentation(\n\t\t\t'core/editor/toggle-list-view'\n\t\t);\n\t}, [] );\n\n\tconst initialViewportValues = useMemo( () => {\n\t\tif ( blocks?.length === 0 ) {\n\t\t\treturn {\n\t\t\t\thideEverywhere: false,\n\t\t\t\tviewportChecked: {},\n\t\t\t};\n\t\t}\n\n\t\tconst viewportValues = {};\n\n\t\tBLOCK_VISIBILITY_VIEWPORT_ENTRIES.forEach( ( [ , { key } ] ) => {\n\t\t\tviewportValues[ key ] = getViewportCheckboxState( blocks, key );\n\t\t} );\n\n\t\treturn {\n\t\t\thideEverywhere: getHideEverywhereCheckboxState( blocks ),\n\t\t\tviewportChecked: viewportValues,\n\t\t};\n\t}, [ blocks ] );\n\n\tconst [ viewportChecked, setViewportChecked ] = useState(\n\t\tinitialViewportValues?.viewportChecked ?? {}\n\t);\n\tconst [ hideEverywhere, setHideEverywhere ] = useState(\n\t\tinitialViewportValues?.hideEverywhere ?? false\n\t);\n\n\tconst handleViewportCheckboxChange = useCallback(\n\t\t( viewport, isChecked ) => {\n\t\t\tsetViewportChecked( {\n\t\t\t\t...viewportChecked,\n\t\t\t\t[ viewport ]: isChecked,\n\t\t\t} );\n\t\t},\n\t\t[ viewportChecked ]\n\t);\n\n\tconst noticeMessage = useMemo( () => {\n\t\tif ( ! hideEverywhere ) {\n\t\t\treturn sprintf(\n\t\t\t\t// translators: %s: The shortcut key to access the List View.\n\t\t\t\t__(\n\t\t\t\t\t'Block visibility settings updated. You can access them via the List View (%s).'\n\t\t\t\t),\n\t\t\t\tlistViewShortcut\n\t\t\t);\n\t\t}\n\n\t\tconst message =\n\t\t\tblocks?.length > 1\n\t\t\t\t? // translators: %s: The shortcut key to access the List View.\n\t\t\t\t __(\n\t\t\t\t\t\t'Blocks hidden. You can access them via the List View (%s).'\n\t\t\t\t )\n\t\t\t\t: // translators: %s: The shortcut key to access the List View.\n\t\t\t\t __(\n\t\t\t\t\t\t'Block hidden. You can access it via the List View (%s).'\n\t\t\t\t );\n\n\t\treturn sprintf( message, listViewShortcut );\n\t}, [ hideEverywhere, blocks?.length, listViewShortcut ] );\n\n\tconst isAnyViewportChecked = useMemo(\n\t\t() =>\n\t\t\tObject.values( viewportChecked ).some(\n\t\t\t\t( checked ) => checked === true || checked === null\n\t\t\t),\n\t\t[ viewportChecked ]\n\t);\n\n\tconst isDirty = useMemo( () => {\n\t\tif ( hideEverywhere !== initialViewportValues.hideEverywhere ) {\n\t\t\treturn true;\n\t\t}\n\t\treturn BLOCK_VISIBILITY_VIEWPORT_ENTRIES.some(\n\t\t\t( [ , { key } ] ) =>\n\t\t\t\tviewportChecked[ key ] !==\n\t\t\t\tinitialViewportValues.viewportChecked[ key ]\n\t\t);\n\t}, [ hideEverywhere, viewportChecked, initialViewportValues ] );\n\n\tconst hasIndeterminateValues = useMemo( () => {\n\t\tif ( hideEverywhere === null ) {\n\t\t\treturn true;\n\t\t}\n\t\treturn Object.values( viewportChecked ).some(\n\t\t\t( checked ) => checked === null\n\t\t);\n\t}, [ hideEverywhere, viewportChecked ] );\n\n\tconst handleSubmit = useCallback(\n\t\t( event ) => {\n\t\t\tevent.preventDefault();\n\t\t\tconst newVisibility = hideEverywhere\n\t\t\t\t? false\n\t\t\t\t: {\n\t\t\t\t\t\tviewport: BLOCK_VISIBILITY_VIEWPORT_ENTRIES.reduce(\n\t\t\t\t\t\t\t( acc, [ , { key } ] ) => {\n\t\t\t\t\t\t\t\tif ( viewportChecked[ key ] ) {\n\t\t\t\t\t\t\t\t\t// Values are inverted to hide the block on the selected viewport.\n\t\t\t\t\t\t\t\t\t// In the UI, the checkbox is checked (true) when the block is hidden on the selected viewport,\n\t\t\t\t\t\t\t\t\t// so 'false' means hide the block on the selected viewport.\n\t\t\t\t\t\t\t\t\tacc[ key ] = false;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn acc;\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 };\n\t\t\tconst attributesByClientId = Object.fromEntries(\n\t\t\t\tblocks.map( ( { clientId, attributes } ) => [\n\t\t\t\t\tclientId,\n\t\t\t\t\t{\n\t\t\t\t\t\tmetadata: cleanEmptyObject( {\n\t\t\t\t\t\t\t...attributes?.metadata,\n\t\t\t\t\t\t\tblockVisibility: newVisibility,\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\tupdateBlockAttributes( clientIds, attributesByClientId, {\n\t\t\t\tuniqueByBlock: true,\n\t\t\t} );\n\n\t\t\tcreateSuccessNotice( noticeMessage, {\n\t\t\t\tid: hideEverywhere\n\t\t\t\t\t? 'block-visibility-hidden'\n\t\t\t\t\t: 'block-visibility-viewports-updated',\n\t\t\t\ttype: 'snackbar',\n\t\t\t} );\n\t\t\tonClose();\n\t\t},\n\t\t[\n\t\t\tblocks,\n\t\t\tclientIds,\n\t\t\tcreateSuccessNotice,\n\t\t\thideEverywhere,\n\t\t\tnoticeMessage,\n\t\t\tonClose,\n\t\t\tupdateBlockAttributes,\n\t\t\tviewportChecked,\n\t\t]\n\t);\n\n\tconst hasMultipleBlocks = blocks?.length > 1;\n\n\treturn (\n\t\t<Modal\n\t\t\ttitle={\n\t\t\t\tclientIds?.length > 1 ? __( 'Hide blocks' ) : __( 'Hide block' )\n\t\t\t}\n\t\t\tonRequestClose={ onClose }\n\t\t\toverlayClassName=\"block-editor-block-visibility-modal\"\n\t\t\tsize=\"small\"\n\t\t>\n\t\t\t<form onSubmit={ handleSubmit }>\n\t\t\t\t<fieldset>\n\t\t\t\t\t<legend>\n\t\t\t\t\t\t{ hasMultipleBlocks\n\t\t\t\t\t\t\t? __(\n\t\t\t\t\t\t\t\t\t'Select the viewport sizes for which you want to hide the blocks. Changes will apply to all selected blocks.'\n\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t: __(\n\t\t\t\t\t\t\t\t\t'Select the viewport size for which you want to hide the block.'\n\t\t\t\t\t\t\t ) }\n\t\t\t\t\t</legend>\n\t\t\t\t\t<ul className=\"block-editor-block-visibility-modal__options\">\n\t\t\t\t\t\t<li className=\"block-editor-block-visibility-modal__options-item block-editor-block-visibility-modal__options-item--everywhere\">\n\t\t\t\t\t\t\t<CheckboxControl\n\t\t\t\t\t\t\t\tclassName=\"block-editor-block-visibility-modal__options-checkbox--everywhere\"\n\t\t\t\t\t\t\t\tlabel={ __( 'Omit from published content' ) }\n\t\t\t\t\t\t\t\tchecked={ hideEverywhere === true }\n\t\t\t\t\t\t\t\tindeterminate={ hideEverywhere === null }\n\t\t\t\t\t\t\t\tonChange={ ( checked ) => {\n\t\t\t\t\t\t\t\t\tsetHideEverywhere( checked );\n\t\t\t\t\t\t\t\t\t// Reset viewport checkboxes when hide everywhere is checked.\n\t\t\t\t\t\t\t\t\tsetViewportChecked(\n\t\t\t\t\t\t\t\t\t\tDEFAULT_VIEWPORT_CHECKBOX_VALUES\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{ hideEverywhere !== true && (\n\t\t\t\t\t\t\t\t<ul className=\"block-editor-block-visibility-modal__sub-options\">\n\t\t\t\t\t\t\t\t\t{ BLOCK_VISIBILITY_VIEWPORT_ENTRIES.map(\n\t\t\t\t\t\t\t\t\t\t( [ , { label, icon, key } ] ) => (\n\t\t\t\t\t\t\t\t\t\t\t<li\n\t\t\t\t\t\t\t\t\t\t\t\tkey={ key }\n\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"block-editor-block-visibility-modal__options-item\"\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t<CheckboxControl\n\t\t\t\t\t\t\t\t\t\t\t\t\tlabel={ sprintf(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t// translators: %s: The viewport name.\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t__( 'Hide on %s' ),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tlabel\n\t\t\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t\t\t\tchecked={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tviewportChecked[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tkey\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t] ?? false\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\tindeterminate={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tviewportChecked[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tkey\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t] === null\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\tonChange={ ( checked ) =>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\thandleViewportCheckboxChange(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tchecked\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t<WCIcon\n\t\t\t\t\t\t\t\t\t\t\t\t\ticon={ icon }\n\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={ clsx( {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t'block-editor-block-visibility-modal__options-icon--checked':\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tviewportChecked[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tkey\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t</li>\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</ul>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</li>\n\t\t\t\t\t</ul>\n\t\t\t\t\t{ hasMultipleBlocks && hasIndeterminateValues && (\n\t\t\t\t\t\t<p className=\"block-editor-block-visibility-modal__description\">\n\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t'Selected blocks have different visibility settings. The checkboxes show an indeterminate state when settings differ.'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</p>\n\t\t\t\t\t) }\n\t\t\t\t\t{ ! hasMultipleBlocks && hideEverywhere === true && (\n\t\t\t\t\t\t<p className=\"block-editor-block-visibility-modal__description\">\n\t\t\t\t\t\t\t{ sprintf(\n\t\t\t\t\t\t\t\t// translators: %s: The shortcut key to access the List View.\n\t\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t\t'Block will be hidden in the editor, and omitted from the published markup on the frontend. You can configure it again by selecting it in the List View (%s).'\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\tlistViewShortcut\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</p>\n\t\t\t\t\t) }\n\t\t\t\t\t{ ! hasMultipleBlocks &&\n\t\t\t\t\t\t! hideEverywhere &&\n\t\t\t\t\t\tisAnyViewportChecked && (\n\t\t\t\t\t\t\t<p className=\"block-editor-block-visibility-modal__description\">\n\t\t\t\t\t\t\t\t{ createInterpolateElement(\n\t\t\t\t\t\t\t\t\tsprintf(\n\t\t\t\t\t\t\t\t\t\t// translators: %s: The shortcut key to access the List View\n\t\t\t\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t\t\t\t'Block will be hidden according to the selected viewports. It will be <strong>included in the published markup on the frontend</strong>. You can configure it again by selecting it in the List View (%s).'\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\tlistViewShortcut\n\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\tstrong: <strong />,\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</p>\n\t\t\t\t\t\t) }\n\t\t\t\t</fieldset>\n\t\t\t\t<Flex\n\t\t\t\t\tclassName=\"block-editor-block-visibility-modal__actions\"\n\t\t\t\t\tjustify=\"flex-end\"\n\t\t\t\t\texpanded={ false }\n\t\t\t\t>\n\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\tonClick={ onClose }\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</FlexItem>\n\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\t\tdisabled={ ! isDirty }\n\t\t\t\t\t\t\taccessibleWhenDisabled\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Apply' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</FlexItem>\n\t\t\t\t</Flex>\n\t\t\t</form>\n\t\t</Modal>\n\t);\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport {\n\tuseState,\n\tuseMemo,\n\tuseCallback,\n\tcreateInterpolateElement,\n} from '@wordpress/element';\nimport {\n\tButton,\n\tCheckboxControl,\n\tFlex,\n\tFlexItem,\n\tIcon as WCIcon,\n\tModal,\n} from '@wordpress/components';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { store as keyboardShortcutsStore } from '@wordpress/keyboard-shortcuts';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport { BLOCK_VISIBILITY_VIEWPORTS } from './constants';\nimport { store as blockEditorStore } from '../../store';\nimport { cleanEmptyObject } from '../../hooks/utils';\nimport {\n\tgetBlockVisibilityViewportEntries,\n\tgetViewportCheckboxState,\n\tgetHideEverywhereCheckboxState,\n} from './utils';\n\nconst DEFAULT_VIEWPORT_CHECKBOX_VALUES = {\n\t[ BLOCK_VISIBILITY_VIEWPORTS.mobile.key ]: false,\n\t[ BLOCK_VISIBILITY_VIEWPORTS.tablet.key ]: false,\n\t[ BLOCK_VISIBILITY_VIEWPORTS.desktop.key ]: false,\n};\n\nconst EMPTY_BLOCKS = [];\n\n/**\n * Modal component for configuring block visibility across viewports.\n *\n * Allows users to hide blocks on specific viewport sizes (mobile, tablet, desktop)\n * or hide them everywhere. When editing multiple blocks, checkboxes only show as\n * checked if ALL selected blocks share the same setting to avoid ambiguity.\n *\n * @param {Object} props Component props.\n * @param {Array} props.clientIds The client IDs of the blocks to hide.\n * @param {Function} props.onClose Callback function invoked when the modal is closed.\n * @return {React.JSX.Element} The modal component.\n */\nexport default function BlockVisibilityModal( { clientIds, onClose } ) {\n\tconst { createSuccessNotice } = useDispatch( noticesStore );\n\tconst { updateBlockAttributes } = useDispatch( blockEditorStore );\n\n\tconst blocks = useSelect(\n\t\t( select ) =>\n\t\t\tselect( blockEditorStore ).getBlocksByClientId( clientIds ) ??\n\t\t\tEMPTY_BLOCKS,\n\t\t[ clientIds ]\n\t);\n\tconst listViewShortcut = useSelect( ( select ) => {\n\t\treturn select( keyboardShortcutsStore ).getShortcutRepresentation(\n\t\t\t'core/editor/toggle-list-view'\n\t\t);\n\t}, [] );\n\tconst viewportSettings = useSelect(\n\t\t( select ) =>\n\t\t\tselect( blockEditorStore ).getSettings().__experimentalFeatures\n\t\t\t\t?.viewport,\n\t\t[]\n\t);\n\tconst viewportEntries = useMemo(\n\t\t() => getBlockVisibilityViewportEntries( viewportSettings ),\n\t\t[ viewportSettings ]\n\t);\n\n\tconst initialViewportValues = useMemo( () => {\n\t\tif ( blocks?.length === 0 ) {\n\t\t\treturn {\n\t\t\t\thideEverywhere: false,\n\t\t\t\tviewportChecked: {},\n\t\t\t};\n\t\t}\n\n\t\tconst viewportValues = {};\n\n\t\tviewportEntries.forEach( ( [ , { key } ] ) => {\n\t\t\tviewportValues[ key ] = getViewportCheckboxState( blocks, key );\n\t\t} );\n\n\t\treturn {\n\t\t\thideEverywhere: getHideEverywhereCheckboxState( blocks ),\n\t\t\tviewportChecked: viewportValues,\n\t\t};\n\t}, [ blocks, viewportEntries ] );\n\n\tconst [ viewportChecked, setViewportChecked ] = useState(\n\t\tinitialViewportValues?.viewportChecked ?? {}\n\t);\n\tconst [ hideEverywhere, setHideEverywhere ] = useState(\n\t\tinitialViewportValues?.hideEverywhere ?? false\n\t);\n\n\tconst handleViewportCheckboxChange = useCallback(\n\t\t( viewport, isChecked ) => {\n\t\t\tsetViewportChecked( {\n\t\t\t\t...viewportChecked,\n\t\t\t\t[ viewport ]: isChecked,\n\t\t\t} );\n\t\t},\n\t\t[ viewportChecked ]\n\t);\n\n\tconst noticeMessage = useMemo( () => {\n\t\tif ( ! hideEverywhere ) {\n\t\t\treturn sprintf(\n\t\t\t\t// translators: %s: The shortcut key to access the List View.\n\t\t\t\t__(\n\t\t\t\t\t'Block visibility settings updated. You can access them via the List View (%s).'\n\t\t\t\t),\n\t\t\t\tlistViewShortcut\n\t\t\t);\n\t\t}\n\n\t\tconst message =\n\t\t\tblocks?.length > 1\n\t\t\t\t? // translators: %s: The shortcut key to access the List View.\n\t\t\t\t __(\n\t\t\t\t\t\t'Blocks hidden. You can access them via the List View (%s).'\n\t\t\t\t )\n\t\t\t\t: // translators: %s: The shortcut key to access the List View.\n\t\t\t\t __(\n\t\t\t\t\t\t'Block hidden. You can access it via the List View (%s).'\n\t\t\t\t );\n\n\t\treturn sprintf( message, listViewShortcut );\n\t}, [ hideEverywhere, blocks?.length, listViewShortcut ] );\n\n\tconst isAnyViewportChecked = useMemo(\n\t\t() =>\n\t\t\tObject.values( viewportChecked ).some(\n\t\t\t\t( checked ) => checked === true || checked === null\n\t\t\t),\n\t\t[ viewportChecked ]\n\t);\n\n\tconst isDirty = useMemo( () => {\n\t\tif ( hideEverywhere !== initialViewportValues.hideEverywhere ) {\n\t\t\treturn true;\n\t\t}\n\t\treturn viewportEntries.some(\n\t\t\t( [ , { key } ] ) =>\n\t\t\t\tviewportChecked[ key ] !==\n\t\t\t\tinitialViewportValues.viewportChecked[ key ]\n\t\t);\n\t}, [\n\t\thideEverywhere,\n\t\tviewportChecked,\n\t\tinitialViewportValues,\n\t\tviewportEntries,\n\t] );\n\n\tconst hasIndeterminateValues = useMemo( () => {\n\t\tif ( hideEverywhere === null ) {\n\t\t\treturn true;\n\t\t}\n\t\treturn Object.values( viewportChecked ).some(\n\t\t\t( checked ) => checked === null\n\t\t);\n\t}, [ hideEverywhere, viewportChecked ] );\n\n\tconst handleSubmit = useCallback(\n\t\t( event ) => {\n\t\t\tevent.preventDefault();\n\t\t\tconst newVisibility = hideEverywhere\n\t\t\t\t? false\n\t\t\t\t: {\n\t\t\t\t\t\tviewport: viewportEntries.reduce(\n\t\t\t\t\t\t\t( acc, [ , { key } ] ) => {\n\t\t\t\t\t\t\t\tif ( viewportChecked[ key ] ) {\n\t\t\t\t\t\t\t\t\t// Values are inverted to hide the block on the selected viewport.\n\t\t\t\t\t\t\t\t\t// In the UI, the checkbox is checked (true) when the block is hidden on the selected viewport,\n\t\t\t\t\t\t\t\t\t// so 'false' means hide the block on the selected viewport.\n\t\t\t\t\t\t\t\t\tacc[ key ] = false;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn acc;\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 };\n\t\t\tconst attributesByClientId = Object.fromEntries(\n\t\t\t\tblocks.map( ( { clientId, attributes } ) => [\n\t\t\t\t\tclientId,\n\t\t\t\t\t{\n\t\t\t\t\t\tmetadata: cleanEmptyObject( {\n\t\t\t\t\t\t\t...attributes?.metadata,\n\t\t\t\t\t\t\tblockVisibility: newVisibility,\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\tupdateBlockAttributes( clientIds, attributesByClientId, {\n\t\t\t\tuniqueByBlock: true,\n\t\t\t} );\n\n\t\t\tcreateSuccessNotice( noticeMessage, {\n\t\t\t\tid: hideEverywhere\n\t\t\t\t\t? 'block-visibility-hidden'\n\t\t\t\t\t: 'block-visibility-viewports-updated',\n\t\t\t\ttype: 'snackbar',\n\t\t\t} );\n\t\t\tonClose();\n\t\t},\n\t\t[\n\t\t\tblocks,\n\t\t\tclientIds,\n\t\t\tcreateSuccessNotice,\n\t\t\thideEverywhere,\n\t\t\tnoticeMessage,\n\t\t\tonClose,\n\t\t\tupdateBlockAttributes,\n\t\t\tviewportEntries,\n\t\t\tviewportChecked,\n\t\t]\n\t);\n\n\tconst hasMultipleBlocks = blocks?.length > 1;\n\n\treturn (\n\t\t<Modal\n\t\t\ttitle={\n\t\t\t\tclientIds?.length > 1 ? __( 'Hide blocks' ) : __( 'Hide block' )\n\t\t\t}\n\t\t\tonRequestClose={ onClose }\n\t\t\toverlayClassName=\"block-editor-block-visibility-modal\"\n\t\t\tsize=\"small\"\n\t\t>\n\t\t\t<form onSubmit={ handleSubmit }>\n\t\t\t\t<fieldset>\n\t\t\t\t\t<legend>\n\t\t\t\t\t\t{ hasMultipleBlocks\n\t\t\t\t\t\t\t? __(\n\t\t\t\t\t\t\t\t\t'Select the viewport sizes for which you want to hide the blocks. Changes will apply to all selected blocks.'\n\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t: __(\n\t\t\t\t\t\t\t\t\t'Select the viewport size for which you want to hide the block.'\n\t\t\t\t\t\t\t ) }\n\t\t\t\t\t</legend>\n\t\t\t\t\t<ul className=\"block-editor-block-visibility-modal__options\">\n\t\t\t\t\t\t<li className=\"block-editor-block-visibility-modal__options-item block-editor-block-visibility-modal__options-item--everywhere\">\n\t\t\t\t\t\t\t<CheckboxControl\n\t\t\t\t\t\t\t\tclassName=\"block-editor-block-visibility-modal__options-checkbox--everywhere\"\n\t\t\t\t\t\t\t\tlabel={ __( 'Omit from published content' ) }\n\t\t\t\t\t\t\t\tchecked={ hideEverywhere === true }\n\t\t\t\t\t\t\t\tindeterminate={ hideEverywhere === null }\n\t\t\t\t\t\t\t\tonChange={ ( checked ) => {\n\t\t\t\t\t\t\t\t\tsetHideEverywhere( checked );\n\t\t\t\t\t\t\t\t\t// Reset viewport checkboxes when hide everywhere is checked.\n\t\t\t\t\t\t\t\t\tsetViewportChecked(\n\t\t\t\t\t\t\t\t\t\tDEFAULT_VIEWPORT_CHECKBOX_VALUES\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{ hideEverywhere !== true && (\n\t\t\t\t\t\t\t\t<ul className=\"block-editor-block-visibility-modal__sub-options\">\n\t\t\t\t\t\t\t\t\t{ viewportEntries.map(\n\t\t\t\t\t\t\t\t\t\t( [ , { label, icon, key } ] ) => (\n\t\t\t\t\t\t\t\t\t\t\t<li\n\t\t\t\t\t\t\t\t\t\t\t\tkey={ key }\n\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"block-editor-block-visibility-modal__options-item\"\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t<CheckboxControl\n\t\t\t\t\t\t\t\t\t\t\t\t\tlabel={ sprintf(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t// translators: %s: The viewport name.\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t__( 'Hide on %s' ),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tlabel\n\t\t\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t\t\t\tchecked={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tviewportChecked[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tkey\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t] ?? false\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\tindeterminate={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tviewportChecked[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tkey\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t] === null\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\tonChange={ ( checked ) =>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\thandleViewportCheckboxChange(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tchecked\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t<WCIcon\n\t\t\t\t\t\t\t\t\t\t\t\t\ticon={ icon }\n\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={ clsx( {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t'block-editor-block-visibility-modal__options-icon--checked':\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tviewportChecked[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tkey\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t</li>\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</ul>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</li>\n\t\t\t\t\t</ul>\n\t\t\t\t\t{ hasMultipleBlocks && hasIndeterminateValues && (\n\t\t\t\t\t\t<p className=\"block-editor-block-visibility-modal__description\">\n\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t'Selected blocks have different visibility settings. The checkboxes show an indeterminate state when settings differ.'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</p>\n\t\t\t\t\t) }\n\t\t\t\t\t{ ! hasMultipleBlocks && hideEverywhere === true && (\n\t\t\t\t\t\t<p className=\"block-editor-block-visibility-modal__description\">\n\t\t\t\t\t\t\t{ sprintf(\n\t\t\t\t\t\t\t\t// translators: %s: The shortcut key to access the List View.\n\t\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t\t'Block will be hidden in the editor, and omitted from the published markup on the frontend. You can configure it again by selecting it in the List View (%s).'\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\tlistViewShortcut\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</p>\n\t\t\t\t\t) }\n\t\t\t\t\t{ ! hasMultipleBlocks &&\n\t\t\t\t\t\t! hideEverywhere &&\n\t\t\t\t\t\tisAnyViewportChecked && (\n\t\t\t\t\t\t\t<p className=\"block-editor-block-visibility-modal__description\">\n\t\t\t\t\t\t\t\t{ createInterpolateElement(\n\t\t\t\t\t\t\t\t\tsprintf(\n\t\t\t\t\t\t\t\t\t\t// translators: %s: The shortcut key to access the List View\n\t\t\t\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t\t\t\t'Block will be hidden according to the selected viewports. It will be <strong>included in the published markup on the frontend</strong>. You can configure it again by selecting it in the List View (%s).'\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\tlistViewShortcut\n\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\tstrong: <strong />,\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</p>\n\t\t\t\t\t\t) }\n\t\t\t\t</fieldset>\n\t\t\t\t<Flex\n\t\t\t\t\tclassName=\"block-editor-block-visibility-modal__actions\"\n\t\t\t\t\tjustify=\"flex-end\"\n\t\t\t\t\texpanded={ false }\n\t\t\t\t>\n\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\tonClick={ onClose }\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</FlexItem>\n\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\t\tdisabled={ ! isDirty }\n\t\t\t\t\t\t\taccessibleWhenDisabled\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Apply' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</FlexItem>\n\t\t\t\t</Flex>\n\t\t\t</form>\n\t\t</Modal>\n\t);\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["import_utils", "noticesStore", "blockEditorStore", "keyboardShortcutsStore", "WCIcon", "clsx"]
7
7
  }
@@ -24,23 +24,33 @@ __export(use_block_visibility_exports, {
24
24
  });
25
25
  module.exports = __toCommonJS(use_block_visibility_exports);
26
26
  var import_compose = require("@wordpress/compose");
27
+ var import_global_styles_engine = require("@wordpress/global-styles-engine");
27
28
  var import_constants = require("./constants.cjs");
29
+ var import_lock_unlock = require("../../lock-unlock.cjs");
30
+ var { getViewportBreakpoints } = (0, import_lock_unlock.unlock)(import_global_styles_engine.privateApis);
28
31
  function useBlockVisibility(options = {}) {
29
32
  const {
30
33
  blockVisibility = void 0,
31
34
  deviceType = import_constants.BLOCK_VISIBILITY_VIEWPORTS.desktop.key,
35
+ viewportSettings,
32
36
  view = window
33
37
  } = options;
34
- const isLargerThanMobile = (0, import_compose.useViewportMatch)("mobile", ">=", view);
35
- const isLargerThanTablet = (0, import_compose.useViewportMatch)("medium", ">=", view);
38
+ const viewportBreakpoints = getViewportBreakpoints(viewportSettings);
39
+ const mobileMediaQuery = viewportBreakpoints.mobile ? `(width <= ${viewportBreakpoints.mobile})` : void 0;
40
+ const isMobileViewport = (0, import_compose.useMediaQuery)(mobileMediaQuery, view);
41
+ let tabletMediaQuery;
42
+ if (viewportBreakpoints.tablet) {
43
+ tabletMediaQuery = viewportBreakpoints.mobile ? `(${viewportBreakpoints.mobile} < width <= ${viewportBreakpoints.tablet})` : `(width <= ${viewportBreakpoints.tablet})`;
44
+ }
45
+ const isTabletViewport = (0, import_compose.useMediaQuery)(tabletMediaQuery, view);
36
46
  let currentViewport;
37
- if (deviceType === import_constants.BLOCK_VISIBILITY_VIEWPORTS.mobile.key) {
47
+ if (deviceType === import_constants.BLOCK_VISIBILITY_VIEWPORTS.mobile.key && viewportBreakpoints.mobile) {
38
48
  currentViewport = import_constants.BLOCK_VISIBILITY_VIEWPORTS.mobile.key;
39
- } else if (deviceType === import_constants.BLOCK_VISIBILITY_VIEWPORTS.tablet.key) {
49
+ } else if (deviceType === import_constants.BLOCK_VISIBILITY_VIEWPORTS.tablet.key && viewportBreakpoints.tablet) {
40
50
  currentViewport = import_constants.BLOCK_VISIBILITY_VIEWPORTS.tablet.key;
41
- } else if (!isLargerThanMobile) {
51
+ } else if (isMobileViewport) {
42
52
  currentViewport = import_constants.BLOCK_VISIBILITY_VIEWPORTS.mobile.key;
43
- } else if (isLargerThanMobile && !isLargerThanTablet) {
53
+ } else if (isTabletViewport && viewportBreakpoints.tablet) {
44
54
  currentViewport = import_constants.BLOCK_VISIBILITY_VIEWPORTS.tablet.key;
45
55
  } else {
46
56
  currentViewport = import_constants.BLOCK_VISIBILITY_VIEWPORTS.desktop.key;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/block-visibility/use-block-visibility.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useViewportMatch } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { BLOCK_VISIBILITY_VIEWPORTS } from './constants';\n\n/**\n * Returns information about the current block visibility state.\n *\n * @param {Object} options Parameters to avoid extra store subscriptions.\n * @param {Object|boolean} options.blockVisibility Block visibility metadata.\n * @param {string} options.deviceType Current device type ('desktop', 'tablet', 'mobile').\n * @param {Window?} options.view Window instance in which to perform viewport matching\n * @return {Object} Object with `isBlockCurrentlyHidden` (boolean) and `currentViewport` (string) properties.\n */\nexport default function useBlockVisibility( options = {} ) {\n\tconst {\n\t\tblockVisibility = undefined,\n\t\tdeviceType = BLOCK_VISIBILITY_VIEWPORTS.desktop.key,\n\t\tview = window,\n\t} = options;\n\n\tconst isLargerThanMobile = useViewportMatch( 'mobile', '>=', view ); // >= 480px\n\tconst isLargerThanTablet = useViewportMatch( 'medium', '>=', view ); // >= 782px\n\n\t/*\n\t * Priority:\n\t * 1. Device type override (Mobile/Tablet) - uses device type to determine viewport\n\t * 2. Actual window size (Desktop mode) - uses viewport detection\n\t */\n\tlet currentViewport;\n\tif ( deviceType === BLOCK_VISIBILITY_VIEWPORTS.mobile.key ) {\n\t\tcurrentViewport = BLOCK_VISIBILITY_VIEWPORTS.mobile.key;\n\t} else if ( deviceType === BLOCK_VISIBILITY_VIEWPORTS.tablet.key ) {\n\t\tcurrentViewport = BLOCK_VISIBILITY_VIEWPORTS.tablet.key;\n\t} else if ( ! isLargerThanMobile ) {\n\t\tcurrentViewport = BLOCK_VISIBILITY_VIEWPORTS.mobile.key;\n\t} else if ( isLargerThanMobile && ! isLargerThanTablet ) {\n\t\tcurrentViewport = BLOCK_VISIBILITY_VIEWPORTS.tablet.key;\n\t} else {\n\t\tcurrentViewport = BLOCK_VISIBILITY_VIEWPORTS.desktop.key;\n\t}\n\n\t// Determine if block is currently hidden.\n\tconst isBlockCurrentlyHidden =\n\t\tblockVisibility === false ||\n\t\tblockVisibility?.viewport?.[ currentViewport ] === false;\n\n\treturn { isBlockCurrentlyHidden, currentViewport };\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,qBAAiC;AAKjC,uBAA2C;AAW5B,SAAR,mBAAqC,UAAU,CAAC,GAAI;AAC1D,QAAM;AAAA,IACL,kBAAkB;AAAA,IAClB,aAAa,4CAA2B,QAAQ;AAAA,IAChD,OAAO;AAAA,EACR,IAAI;AAEJ,QAAM,yBAAqB,iCAAkB,UAAU,MAAM,IAAK;AAClE,QAAM,yBAAqB,iCAAkB,UAAU,MAAM,IAAK;AAOlE,MAAI;AACJ,MAAK,eAAe,4CAA2B,OAAO,KAAM;AAC3D,sBAAkB,4CAA2B,OAAO;AAAA,EACrD,WAAY,eAAe,4CAA2B,OAAO,KAAM;AAClE,sBAAkB,4CAA2B,OAAO;AAAA,EACrD,WAAY,CAAE,oBAAqB;AAClC,sBAAkB,4CAA2B,OAAO;AAAA,EACrD,WAAY,sBAAsB,CAAE,oBAAqB;AACxD,sBAAkB,4CAA2B,OAAO;AAAA,EACrD,OAAO;AACN,sBAAkB,4CAA2B,QAAQ;AAAA,EACtD;AAGA,QAAM,yBACL,oBAAoB,SACpB,iBAAiB,WAAY,eAAgB,MAAM;AAEpD,SAAO,EAAE,wBAAwB,gBAAgB;AAClD;",
6
- "names": []
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useMediaQuery } from '@wordpress/compose';\nimport { privateApis as globalStylesEnginePrivateApis } from '@wordpress/global-styles-engine';\n\n/**\n * Internal dependencies\n */\nimport { BLOCK_VISIBILITY_VIEWPORTS } from './constants';\nimport { unlock } from '../../lock-unlock';\n\nconst { getViewportBreakpoints } = unlock( globalStylesEnginePrivateApis );\n\n/**\n * Returns information about the current block visibility state.\n *\n * @param {Object} options Parameters to avoid extra store subscriptions.\n * @param {Object|boolean} options.blockVisibility Block visibility metadata.\n * @param {string} options.deviceType Current device type ('desktop', 'tablet', 'mobile').\n * @param {Object} options.viewportSettings Viewport breakpoint settings.\n * @param {Window?} options.view Window instance in which to perform viewport matching\n * @return {Object} Object with `isBlockCurrentlyHidden` (boolean) and `currentViewport` (string) properties.\n */\nexport default function useBlockVisibility( options = {} ) {\n\tconst {\n\t\tblockVisibility = undefined,\n\t\tdeviceType = BLOCK_VISIBILITY_VIEWPORTS.desktop.key,\n\t\tviewportSettings,\n\t\tview = window,\n\t} = options;\n\n\tconst viewportBreakpoints = getViewportBreakpoints( viewportSettings );\n\tconst mobileMediaQuery = viewportBreakpoints.mobile\n\t\t? `(width <= ${ viewportBreakpoints.mobile })`\n\t\t: undefined;\n\tconst isMobileViewport = useMediaQuery( mobileMediaQuery, view );\n\tlet tabletMediaQuery;\n\tif ( viewportBreakpoints.tablet ) {\n\t\ttabletMediaQuery = viewportBreakpoints.mobile\n\t\t\t? `(${ viewportBreakpoints.mobile } < width <= ${ viewportBreakpoints.tablet })`\n\t\t\t: `(width <= ${ viewportBreakpoints.tablet })`;\n\t}\n\tconst isTabletViewport = useMediaQuery( tabletMediaQuery, view );\n\n\t/*\n\t * Priority:\n\t * 1. Device type override (Mobile/Tablet) - uses device type to determine viewport\n\t * 2. Actual window size (Desktop mode) - uses viewport detection\n\t */\n\tlet currentViewport;\n\tif (\n\t\tdeviceType === BLOCK_VISIBILITY_VIEWPORTS.mobile.key &&\n\t\tviewportBreakpoints.mobile\n\t) {\n\t\tcurrentViewport = BLOCK_VISIBILITY_VIEWPORTS.mobile.key;\n\t} else if (\n\t\tdeviceType === BLOCK_VISIBILITY_VIEWPORTS.tablet.key &&\n\t\tviewportBreakpoints.tablet\n\t) {\n\t\tcurrentViewport = BLOCK_VISIBILITY_VIEWPORTS.tablet.key;\n\t} else if ( isMobileViewport ) {\n\t\tcurrentViewport = BLOCK_VISIBILITY_VIEWPORTS.mobile.key;\n\t} else if ( isTabletViewport && viewportBreakpoints.tablet ) {\n\t\tcurrentViewport = BLOCK_VISIBILITY_VIEWPORTS.tablet.key;\n\t} else {\n\t\tcurrentViewport = BLOCK_VISIBILITY_VIEWPORTS.desktop.key;\n\t}\n\n\t// Determine if block is currently hidden.\n\tconst isBlockCurrentlyHidden =\n\t\tblockVisibility === false ||\n\t\tblockVisibility?.viewport?.[ currentViewport ] === false;\n\n\treturn { isBlockCurrentlyHidden, currentViewport };\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,qBAA8B;AAC9B,kCAA6D;AAK7D,uBAA2C;AAC3C,yBAAuB;AAEvB,IAAM,EAAE,uBAAuB,QAAI,2BAAQ,4BAAAA,WAA8B;AAY1D,SAAR,mBAAqC,UAAU,CAAC,GAAI;AAC1D,QAAM;AAAA,IACL,kBAAkB;AAAA,IAClB,aAAa,4CAA2B,QAAQ;AAAA,IAChD;AAAA,IACA,OAAO;AAAA,EACR,IAAI;AAEJ,QAAM,sBAAsB,uBAAwB,gBAAiB;AACrE,QAAM,mBAAmB,oBAAoB,SAC1C,aAAc,oBAAoB,MAAO,MACzC;AACH,QAAM,uBAAmB,8BAAe,kBAAkB,IAAK;AAC/D,MAAI;AACJ,MAAK,oBAAoB,QAAS;AACjC,uBAAmB,oBAAoB,SACpC,IAAK,oBAAoB,MAAO,eAAgB,oBAAoB,MAAO,MAC3E,aAAc,oBAAoB,MAAO;AAAA,EAC7C;AACA,QAAM,uBAAmB,8BAAe,kBAAkB,IAAK;AAO/D,MAAI;AACJ,MACC,eAAe,4CAA2B,OAAO,OACjD,oBAAoB,QACnB;AACD,sBAAkB,4CAA2B,OAAO;AAAA,EACrD,WACC,eAAe,4CAA2B,OAAO,OACjD,oBAAoB,QACnB;AACD,sBAAkB,4CAA2B,OAAO;AAAA,EACrD,WAAY,kBAAmB;AAC9B,sBAAkB,4CAA2B,OAAO;AAAA,EACrD,WAAY,oBAAoB,oBAAoB,QAAS;AAC5D,sBAAkB,4CAA2B,OAAO;AAAA,EACrD,OAAO;AACN,sBAAkB,4CAA2B,QAAQ;AAAA,EACtD;AAGA,QAAM,yBACL,oBAAoB,SACpB,iBAAiB,WAAY,eAAgB,MAAM;AAEpD,SAAO,EAAE,wBAAwB,gBAAgB;AAClD;",
6
+ "names": ["globalStylesEnginePrivateApis"]
7
7
  }
@@ -21,12 +21,22 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
21
21
  var utils_exports = {};
22
22
  __export(utils_exports, {
23
23
  getBlockVisibilityLabel: () => getBlockVisibilityLabel,
24
+ getBlockVisibilityViewportEntries: () => getBlockVisibilityViewportEntries,
24
25
  getHideEverywhereCheckboxState: () => getHideEverywhereCheckboxState,
25
26
  getViewportCheckboxState: () => getViewportCheckboxState
26
27
  });
27
28
  module.exports = __toCommonJS(utils_exports);
29
+ var import_global_styles_engine = require("@wordpress/global-styles-engine");
28
30
  var import_i18n = require("@wordpress/i18n");
29
31
  var import_constants = require("./constants.cjs");
32
+ var import_lock_unlock = require("../../lock-unlock.cjs");
33
+ var { getViewportBreakpoints } = (0, import_lock_unlock.unlock)(import_global_styles_engine.privateApis);
34
+ function getBlockVisibilityViewportEntries(viewportSettings) {
35
+ const breakpoints = getViewportBreakpoints(viewportSettings);
36
+ return import_constants.BLOCK_VISIBILITY_VIEWPORT_ENTRIES.filter(
37
+ ([viewport]) => (viewport !== import_constants.BLOCK_VISIBILITY_VIEWPORTS.tablet.key || breakpoints.tablet !== void 0) && (viewport !== import_constants.BLOCK_VISIBILITY_VIEWPORTS.mobile.key || breakpoints.mobile !== void 0)
38
+ );
39
+ }
30
40
  function isBlockHiddenForViewport(block, viewport) {
31
41
  if (!block) {
32
42
  return false;
@@ -79,7 +89,7 @@ function getHideEverywhereCheckboxState(blocks) {
79
89
  }
80
90
  return null;
81
91
  }
82
- function getBlockVisibilityLabel(blockVisibility) {
92
+ function getBlockVisibilityLabel(blockVisibility, viewportSettings) {
83
93
  if (!blockVisibility && blockVisibility !== false) {
84
94
  return null;
85
95
  }
@@ -87,7 +97,9 @@ function getBlockVisibilityLabel(blockVisibility) {
87
97
  return (0, import_i18n.__)("Block is hidden");
88
98
  }
89
99
  if (blockVisibility?.viewport) {
90
- const hiddenViewports = import_constants.BLOCK_VISIBILITY_VIEWPORT_ENTRIES.filter(
100
+ const hiddenViewports = getBlockVisibilityViewportEntries(
101
+ viewportSettings
102
+ ).filter(
91
103
  ([key]) => blockVisibility.viewport?.[key] === false
92
104
  ).map(([, viewport]) => viewport.label);
93
105
  if (hiddenViewports.length > 0) {
@@ -103,6 +115,7 @@ function getBlockVisibilityLabel(blockVisibility) {
103
115
  // Annotate the CommonJS export names for ESM import in node:
104
116
  0 && (module.exports = {
105
117
  getBlockVisibilityLabel,
118
+ getBlockVisibilityViewportEntries,
106
119
  getHideEverywhereCheckboxState,
107
120
  getViewportCheckboxState
108
121
  });
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/block-visibility/utils.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { BLOCK_VISIBILITY_VIEWPORT_ENTRIES } from './constants';\n\n/**\n * Checks if a block is hidden for a specific viewport.\n *\n * @param {Object} block The block to check.\n * @param {string} viewport The viewport to check (e.g., 'mobile', 'tablet', 'desktop').\n * @return {boolean} Whether the block is hidden for the viewport.\n */\nfunction isBlockHiddenForViewport( block, viewport ) {\n\tif ( ! block ) {\n\t\treturn false;\n\t}\n\n\tconst blockVisibility = block.attributes?.metadata?.blockVisibility;\n\n\t// If explicitly visible everywhere (true), return false for all viewports.\n\tif ( blockVisibility === true ) {\n\t\treturn false;\n\t}\n\n\t// If null or not an object, block is not hidden for any specific viewport.\n\tif ( 'object' !== typeof blockVisibility ) {\n\t\treturn false;\n\t}\n\n\t// Get viewport configuration from nested structure.\n\tconst viewportConfig = blockVisibility.viewport;\n\n\t// If no viewport config, block is not hidden for any specific viewport.\n\tif ( ! viewportConfig || 'object' !== typeof viewportConfig ) {\n\t\treturn false;\n\t}\n\n\t// Check if the viewport is valid.\n\tif (\n\t\t! BLOCK_VISIBILITY_VIEWPORT_ENTRIES.some(\n\t\t\t( [ , { key } ] ) => key === viewport\n\t\t)\n\t) {\n\t\treturn false;\n\t}\n\n\t// Check if the specific viewport is hidden.\n\treturn viewportConfig[ viewport ] === false;\n}\n\n/**\n * Gets the checkbox state for a viewport across multiple blocks.\n * Returns `true` if all blocks are hidden, `null` if some are hidden, `false` if none are hidden.\n *\n * @param {Array} blocks Array of blocks to check.\n * @param {string} viewport The viewport to check (e.g., 'mobile', 'tablet', 'desktop').\n * @return {boolean|null} `true` if all hidden, `null` if some hidden, `false` if none hidden.\n */\nexport function getViewportCheckboxState( blocks, viewport ) {\n\tif ( ! blocks?.length ) {\n\t\treturn false;\n\t}\n\n\tconst hiddenCount = blocks.filter( ( block ) =>\n\t\tisBlockHiddenForViewport( block, viewport )\n\t).length;\n\n\tif ( hiddenCount === 0 ) {\n\t\treturn false;\n\t}\n\tif ( hiddenCount === blocks.length ) {\n\t\treturn true;\n\t}\n\n\treturn null; // Indeterminate: some hidden, some visible (normal mixed state)\n}\n\n/**\n * Gets the checkbox state for \"hide everywhere\" across multiple blocks.\n * Returns `true` if all blocks are hidden everywhere, `null` if some are hidden everywhere, `false` if none are.\n *\n * @param {Array} blocks Array of blocks to check.\n * @return {boolean|null} `true` if all hidden everywhere, `null` if some hidden everywhere, `false` if none.\n */\nexport function getHideEverywhereCheckboxState( blocks ) {\n\tif ( ! blocks?.length ) {\n\t\treturn false;\n\t}\n\n\tconst hiddenEverywhereCount = blocks.filter(\n\t\t( block ) =>\n\t\t\tblock && block.attributes?.metadata?.blockVisibility === false\n\t).length;\n\n\tif ( hiddenEverywhereCount === 0 ) {\n\t\treturn false;\n\t}\n\tif ( hiddenEverywhereCount === blocks.length ) {\n\t\treturn true;\n\t}\n\n\treturn null; // Indeterminate: some but not all\n}\n\n/**\n * Get a human-readable label describing which viewports a block is hidden on.\n *\n * @param {boolean|Object} blockVisibility The block's visibility metadata.\n * @return {string|null} A descriptive label, or null if the block is not hidden.\n */\nexport function getBlockVisibilityLabel( blockVisibility ) {\n\t// Not hidden at all\n\tif ( ! blockVisibility && blockVisibility !== false ) {\n\t\treturn null;\n\t}\n\n\tif ( blockVisibility === false ) {\n\t\t// Hidden on all viewports\n\t\treturn __( 'Block is hidden' );\n\t}\n\n\tif ( blockVisibility?.viewport ) {\n\t\t// Hidden on specific viewports - list them\n\t\tconst hiddenViewports = BLOCK_VISIBILITY_VIEWPORT_ENTRIES.filter(\n\t\t\t( [ key ] ) => blockVisibility.viewport?.[ key ] === false\n\t\t).map( ( [ , viewport ] ) => viewport.label );\n\n\t\tif ( hiddenViewports.length > 0 ) {\n\t\t\treturn sprintf(\n\t\t\t\t/* translators: %s: comma-separated list of viewport names (Desktop, Tablet, Mobile) */\n\t\t\t\t__( 'Block is hidden on %s' ),\n\t\t\t\thiddenViewports.join( ', ' )\n\t\t\t);\n\t\t}\n\t}\n\n\treturn null;\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,kBAA4B;AAK5B,uBAAkD;AASlD,SAAS,yBAA0B,OAAO,UAAW;AACpD,MAAK,CAAE,OAAQ;AACd,WAAO;AAAA,EACR;AAEA,QAAM,kBAAkB,MAAM,YAAY,UAAU;AAGpD,MAAK,oBAAoB,MAAO;AAC/B,WAAO;AAAA,EACR;AAGA,MAAK,aAAa,OAAO,iBAAkB;AAC1C,WAAO;AAAA,EACR;AAGA,QAAM,iBAAiB,gBAAgB;AAGvC,MAAK,CAAE,kBAAkB,aAAa,OAAO,gBAAiB;AAC7D,WAAO;AAAA,EACR;AAGA,MACC,CAAE,mDAAkC;AAAA,IACnC,CAAE,CAAE,EAAE,EAAE,IAAI,CAAE,MAAO,QAAQ;AAAA,EAC9B,GACC;AACD,WAAO;AAAA,EACR;AAGA,SAAO,eAAgB,QAAS,MAAM;AACvC;AAUO,SAAS,yBAA0B,QAAQ,UAAW;AAC5D,MAAK,CAAE,QAAQ,QAAS;AACvB,WAAO;AAAA,EACR;AAEA,QAAM,cAAc,OAAO;AAAA,IAAQ,CAAE,UACpC,yBAA0B,OAAO,QAAS;AAAA,EAC3C,EAAE;AAEF,MAAK,gBAAgB,GAAI;AACxB,WAAO;AAAA,EACR;AACA,MAAK,gBAAgB,OAAO,QAAS;AACpC,WAAO;AAAA,EACR;AAEA,SAAO;AACR;AASO,SAAS,+BAAgC,QAAS;AACxD,MAAK,CAAE,QAAQ,QAAS;AACvB,WAAO;AAAA,EACR;AAEA,QAAM,wBAAwB,OAAO;AAAA,IACpC,CAAE,UACD,SAAS,MAAM,YAAY,UAAU,oBAAoB;AAAA,EAC3D,EAAE;AAEF,MAAK,0BAA0B,GAAI;AAClC,WAAO;AAAA,EACR;AACA,MAAK,0BAA0B,OAAO,QAAS;AAC9C,WAAO;AAAA,EACR;AAEA,SAAO;AACR;AAQO,SAAS,wBAAyB,iBAAkB;AAE1D,MAAK,CAAE,mBAAmB,oBAAoB,OAAQ;AACrD,WAAO;AAAA,EACR;AAEA,MAAK,oBAAoB,OAAQ;AAEhC,eAAO,gBAAI,iBAAkB;AAAA,EAC9B;AAEA,MAAK,iBAAiB,UAAW;AAEhC,UAAM,kBAAkB,mDAAkC;AAAA,MACzD,CAAE,CAAE,GAAI,MAAO,gBAAgB,WAAY,GAAI,MAAM;AAAA,IACtD,EAAE,IAAK,CAAE,CAAE,EAAE,QAAS,MAAO,SAAS,KAAM;AAE5C,QAAK,gBAAgB,SAAS,GAAI;AACjC,iBAAO;AAAA;AAAA,YAEN,gBAAI,uBAAwB;AAAA,QAC5B,gBAAgB,KAAM,IAAK;AAAA,MAC5B;AAAA,IACD;AAAA,EACD;AAEA,SAAO;AACR;",
6
- "names": []
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { privateApis as globalStylesEnginePrivateApis } from '@wordpress/global-styles-engine';\nimport { __, sprintf } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport {\n\tBLOCK_VISIBILITY_VIEWPORT_ENTRIES,\n\tBLOCK_VISIBILITY_VIEWPORTS,\n} from './constants';\nimport { unlock } from '../../lock-unlock';\n\nconst { getViewportBreakpoints } = unlock( globalStylesEnginePrivateApis );\n\nexport function getBlockVisibilityViewportEntries( viewportSettings ) {\n\tconst breakpoints = getViewportBreakpoints( viewportSettings );\n\n\t// Desktop has no breakpoint, so only filter mobile/tablet by configured viewport support.\n\treturn BLOCK_VISIBILITY_VIEWPORT_ENTRIES.filter(\n\t\t( [ viewport ] ) =>\n\t\t\t( viewport !== BLOCK_VISIBILITY_VIEWPORTS.tablet.key ||\n\t\t\t\tbreakpoints.tablet !== undefined ) &&\n\t\t\t( viewport !== BLOCK_VISIBILITY_VIEWPORTS.mobile.key ||\n\t\t\t\tbreakpoints.mobile !== undefined )\n\t);\n}\n\n/**\n * Checks if a block is hidden for a specific viewport.\n *\n * @param {Object} block The block to check.\n * @param {string} viewport The viewport to check (e.g., 'mobile', 'tablet', 'desktop').\n * @return {boolean} Whether the block is hidden for the viewport.\n */\nfunction isBlockHiddenForViewport( block, viewport ) {\n\tif ( ! block ) {\n\t\treturn false;\n\t}\n\n\tconst blockVisibility = block.attributes?.metadata?.blockVisibility;\n\n\t// If explicitly visible everywhere (true), return false for all viewports.\n\tif ( blockVisibility === true ) {\n\t\treturn false;\n\t}\n\n\t// If null or not an object, block is not hidden for any specific viewport.\n\tif ( 'object' !== typeof blockVisibility ) {\n\t\treturn false;\n\t}\n\n\t// Get viewport configuration from nested structure.\n\tconst viewportConfig = blockVisibility.viewport;\n\n\t// If no viewport config, block is not hidden for any specific viewport.\n\tif ( ! viewportConfig || 'object' !== typeof viewportConfig ) {\n\t\treturn false;\n\t}\n\n\t// Check if the viewport is valid.\n\tif (\n\t\t! BLOCK_VISIBILITY_VIEWPORT_ENTRIES.some(\n\t\t\t( [ , { key } ] ) => key === viewport\n\t\t)\n\t) {\n\t\treturn false;\n\t}\n\n\t// Check if the specific viewport is hidden.\n\treturn viewportConfig[ viewport ] === false;\n}\n\n/**\n * Gets the checkbox state for a viewport across multiple blocks.\n * Returns `true` if all blocks are hidden, `null` if some are hidden, `false` if none are hidden.\n *\n * @param {Array} blocks Array of blocks to check.\n * @param {string} viewport The viewport to check (e.g., 'mobile', 'tablet', 'desktop').\n * @return {boolean|null} `true` if all hidden, `null` if some hidden, `false` if none hidden.\n */\nexport function getViewportCheckboxState( blocks, viewport ) {\n\tif ( ! blocks?.length ) {\n\t\treturn false;\n\t}\n\n\tconst hiddenCount = blocks.filter( ( block ) =>\n\t\tisBlockHiddenForViewport( block, viewport )\n\t).length;\n\n\tif ( hiddenCount === 0 ) {\n\t\treturn false;\n\t}\n\tif ( hiddenCount === blocks.length ) {\n\t\treturn true;\n\t}\n\n\treturn null; // Indeterminate: some hidden, some visible (normal mixed state)\n}\n\n/**\n * Gets the checkbox state for \"hide everywhere\" across multiple blocks.\n * Returns `true` if all blocks are hidden everywhere, `null` if some are hidden everywhere, `false` if none are.\n *\n * @param {Array} blocks Array of blocks to check.\n * @return {boolean|null} `true` if all hidden everywhere, `null` if some hidden everywhere, `false` if none.\n */\nexport function getHideEverywhereCheckboxState( blocks ) {\n\tif ( ! blocks?.length ) {\n\t\treturn false;\n\t}\n\n\tconst hiddenEverywhereCount = blocks.filter(\n\t\t( block ) =>\n\t\t\tblock && block.attributes?.metadata?.blockVisibility === false\n\t).length;\n\n\tif ( hiddenEverywhereCount === 0 ) {\n\t\treturn false;\n\t}\n\tif ( hiddenEverywhereCount === blocks.length ) {\n\t\treturn true;\n\t}\n\n\treturn null; // Indeterminate: some but not all\n}\n\n/**\n * Get a human-readable label describing which viewports a block is hidden on.\n *\n * @param {boolean|Object} blockVisibility The block's visibility metadata.\n * @param {Object} viewportSettings Viewport breakpoint settings.\n * @return {string|null} A descriptive label, or null if the block is not hidden.\n */\nexport function getBlockVisibilityLabel( blockVisibility, viewportSettings ) {\n\t// Not hidden at all\n\tif ( ! blockVisibility && blockVisibility !== false ) {\n\t\treturn null;\n\t}\n\n\tif ( blockVisibility === false ) {\n\t\t// Hidden on all viewports\n\t\treturn __( 'Block is hidden' );\n\t}\n\n\tif ( blockVisibility?.viewport ) {\n\t\t// Hidden on specific viewports - list them\n\t\tconst hiddenViewports = getBlockVisibilityViewportEntries(\n\t\t\tviewportSettings\n\t\t)\n\t\t\t.filter(\n\t\t\t\t( [ key ] ) => blockVisibility.viewport?.[ key ] === false\n\t\t\t)\n\t\t\t.map( ( [ , viewport ] ) => viewport.label );\n\n\t\tif ( hiddenViewports.length > 0 ) {\n\t\t\treturn sprintf(\n\t\t\t\t/* translators: %s: comma-separated list of viewport names (Desktop, Tablet, Mobile) */\n\t\t\t\t__( 'Block is hidden on %s' ),\n\t\t\t\thiddenViewports.join( ', ' )\n\t\t\t);\n\t\t}\n\t}\n\n\treturn null;\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,kCAA6D;AAC7D,kBAA4B;AAK5B,uBAGO;AACP,yBAAuB;AAEvB,IAAM,EAAE,uBAAuB,QAAI,2BAAQ,4BAAAA,WAA8B;AAElE,SAAS,kCAAmC,kBAAmB;AACrE,QAAM,cAAc,uBAAwB,gBAAiB;AAG7D,SAAO,mDAAkC;AAAA,IACxC,CAAE,CAAE,QAAS,OACV,aAAa,4CAA2B,OAAO,OAChD,YAAY,WAAW,YACtB,aAAa,4CAA2B,OAAO,OAChD,YAAY,WAAW;AAAA,EAC1B;AACD;AASA,SAAS,yBAA0B,OAAO,UAAW;AACpD,MAAK,CAAE,OAAQ;AACd,WAAO;AAAA,EACR;AAEA,QAAM,kBAAkB,MAAM,YAAY,UAAU;AAGpD,MAAK,oBAAoB,MAAO;AAC/B,WAAO;AAAA,EACR;AAGA,MAAK,aAAa,OAAO,iBAAkB;AAC1C,WAAO;AAAA,EACR;AAGA,QAAM,iBAAiB,gBAAgB;AAGvC,MAAK,CAAE,kBAAkB,aAAa,OAAO,gBAAiB;AAC7D,WAAO;AAAA,EACR;AAGA,MACC,CAAE,mDAAkC;AAAA,IACnC,CAAE,CAAE,EAAE,EAAE,IAAI,CAAE,MAAO,QAAQ;AAAA,EAC9B,GACC;AACD,WAAO;AAAA,EACR;AAGA,SAAO,eAAgB,QAAS,MAAM;AACvC;AAUO,SAAS,yBAA0B,QAAQ,UAAW;AAC5D,MAAK,CAAE,QAAQ,QAAS;AACvB,WAAO;AAAA,EACR;AAEA,QAAM,cAAc,OAAO;AAAA,IAAQ,CAAE,UACpC,yBAA0B,OAAO,QAAS;AAAA,EAC3C,EAAE;AAEF,MAAK,gBAAgB,GAAI;AACxB,WAAO;AAAA,EACR;AACA,MAAK,gBAAgB,OAAO,QAAS;AACpC,WAAO;AAAA,EACR;AAEA,SAAO;AACR;AASO,SAAS,+BAAgC,QAAS;AACxD,MAAK,CAAE,QAAQ,QAAS;AACvB,WAAO;AAAA,EACR;AAEA,QAAM,wBAAwB,OAAO;AAAA,IACpC,CAAE,UACD,SAAS,MAAM,YAAY,UAAU,oBAAoB;AAAA,EAC3D,EAAE;AAEF,MAAK,0BAA0B,GAAI;AAClC,WAAO;AAAA,EACR;AACA,MAAK,0BAA0B,OAAO,QAAS;AAC9C,WAAO;AAAA,EACR;AAEA,SAAO;AACR;AASO,SAAS,wBAAyB,iBAAiB,kBAAmB;AAE5E,MAAK,CAAE,mBAAmB,oBAAoB,OAAQ;AACrD,WAAO;AAAA,EACR;AAEA,MAAK,oBAAoB,OAAQ;AAEhC,eAAO,gBAAI,iBAAkB;AAAA,EAC9B;AAEA,MAAK,iBAAiB,UAAW;AAEhC,UAAM,kBAAkB;AAAA,MACvB;AAAA,IACD,EACE;AAAA,MACA,CAAE,CAAE,GAAI,MAAO,gBAAgB,WAAY,GAAI,MAAM;AAAA,IACtD,EACC,IAAK,CAAE,CAAE,EAAE,QAAS,MAAO,SAAS,KAAM;AAE5C,QAAK,gBAAgB,SAAS,GAAI;AACjC,iBAAO;AAAA;AAAA,YAEN,gBAAI,uBAAwB;AAAA,QAC5B,gBAAgB,KAAM,IAAK;AAAA,MAC5B;AAAA,IACD;AAAA,EACD;AAEA,SAAO;AACR;",
6
+ "names": ["globalStylesEnginePrivateApis"]
7
7
  }
@@ -29,8 +29,10 @@ var import_data = require("@wordpress/data");
29
29
  var import_keyboard_shortcuts = require("@wordpress/keyboard-shortcuts");
30
30
  var import_store = require("../../store/index.cjs");
31
31
  var import_lock_unlock = require("../../lock-unlock.cjs");
32
+ var import_use_settings = require("../use-settings/index.cjs");
32
33
  var import_jsx_runtime = require("react/jsx-runtime");
33
34
  function BlockVisibilityViewportMenuItem({ clientIds }) {
35
+ const [blockVisibility] = (0, import_use_settings.useSettings)("blockVisibility.allowEditing");
34
36
  const { areBlocksHiddenAnywhere, shortcut } = (0, import_data.useSelect)(
35
37
  (select) => {
36
38
  const { isBlockHiddenAnywhere } = (0, import_lock_unlock.unlock)(
@@ -49,7 +51,11 @@ function BlockVisibilityViewportMenuItem({ clientIds }) {
49
51
  },
50
52
  [clientIds]
51
53
  );
52
- const { showViewportModal } = (0, import_lock_unlock.unlock)((0, import_data.useDispatch)(import_store.store));
54
+ const dispatch = (0, import_data.useDispatch)(import_store.store);
55
+ if (blockVisibility === false) {
56
+ return null;
57
+ }
58
+ const { showViewportModal } = (0, import_lock_unlock.unlock)(dispatch);
53
59
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
54
60
  import_components.MenuItem,
55
61
  {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/block-visibility/viewport-menu-item.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { MenuItem } from '@wordpress/components';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { store as keyboardShortcutsStore } from '@wordpress/keyboard-shortcuts';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\n\nexport default function BlockVisibilityViewportMenuItem( { clientIds } ) {\n\tconst { areBlocksHiddenAnywhere, shortcut } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { isBlockHiddenAnywhere } = unlock(\n\t\t\t\tselect( blockEditorStore )\n\t\t\t);\n\t\t\treturn {\n\t\t\t\tareBlocksHiddenAnywhere: clientIds?.every( ( clientId ) =>\n\t\t\t\t\tisBlockHiddenAnywhere( clientId )\n\t\t\t\t),\n\t\t\t\tshortcut: select(\n\t\t\t\t\tkeyboardShortcutsStore\n\t\t\t\t).getShortcutRepresentation(\n\t\t\t\t\t'core/block-editor/toggle-block-visibility'\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\t[ clientIds ]\n\t);\n\tconst { showViewportModal } = unlock( useDispatch( blockEditorStore ) );\n\treturn (\n\t\t<MenuItem\n\t\t\tonClick={ () => showViewportModal( clientIds ) }\n\t\t\tshortcut={ shortcut }\n\t\t>\n\t\t\t{ areBlocksHiddenAnywhere ? __( 'Show' ) : __( 'Hide' ) }\n\t\t</MenuItem>\n\t);\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,kBAAmB;AACnB,wBAAyB;AACzB,kBAAuC;AACvC,gCAAgD;AAKhD,mBAA0C;AAC1C,yBAAuB;AAuBrB;AArBa,SAAR,gCAAkD,EAAE,UAAU,GAAI;AACxE,QAAM,EAAE,yBAAyB,SAAS,QAAI;AAAA,IAC7C,CAAE,WAAY;AACb,YAAM,EAAE,sBAAsB,QAAI;AAAA,QACjC,OAAQ,aAAAA,KAAiB;AAAA,MAC1B;AACA,aAAO;AAAA,QACN,yBAAyB,WAAW;AAAA,UAAO,CAAE,aAC5C,sBAAuB,QAAS;AAAA,QACjC;AAAA,QACA,UAAU;AAAA,UACT,0BAAAC;AAAA,QACD,EAAE;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA,IACA,CAAE,SAAU;AAAA,EACb;AACA,QAAM,EAAE,kBAAkB,QAAI,+BAAQ,yBAAa,aAAAD,KAAiB,CAAE;AACtE,SACC;AAAA,IAAC;AAAA;AAAA,MACA,SAAU,MAAM,kBAAmB,SAAU;AAAA,MAC7C;AAAA,MAEE,wCAA0B,gBAAI,MAAO,QAAI,gBAAI,MAAO;AAAA;AAAA,EACvD;AAEF;",
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { MenuItem } from '@wordpress/components';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { store as keyboardShortcutsStore } from '@wordpress/keyboard-shortcuts';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\nimport { useSettings } from '../use-settings';\n\nexport default function BlockVisibilityViewportMenuItem( { clientIds } ) {\n\tconst [ blockVisibility ] = useSettings( 'blockVisibility.allowEditing' );\n\tconst { areBlocksHiddenAnywhere, shortcut } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { isBlockHiddenAnywhere } = unlock(\n\t\t\t\tselect( blockEditorStore )\n\t\t\t);\n\t\t\treturn {\n\t\t\t\tareBlocksHiddenAnywhere: clientIds?.every( ( clientId ) =>\n\t\t\t\t\tisBlockHiddenAnywhere( clientId )\n\t\t\t\t),\n\t\t\t\tshortcut: select(\n\t\t\t\t\tkeyboardShortcutsStore\n\t\t\t\t).getShortcutRepresentation(\n\t\t\t\t\t'core/block-editor/toggle-block-visibility'\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\t[ clientIds ]\n\t);\n\tconst dispatch = useDispatch( blockEditorStore );\n\n\tif ( blockVisibility === false ) {\n\t\treturn null;\n\t}\n\n\tconst { showViewportModal } = unlock( dispatch );\n\n\treturn (\n\t\t<MenuItem\n\t\t\tonClick={ () => showViewportModal( clientIds ) }\n\t\t\tshortcut={ shortcut }\n\t\t>\n\t\t\t{ areBlocksHiddenAnywhere ? __( 'Show' ) : __( 'Hide' ) }\n\t\t</MenuItem>\n\t);\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,kBAAmB;AACnB,wBAAyB;AACzB,kBAAuC;AACvC,gCAAgD;AAKhD,mBAA0C;AAC1C,yBAAuB;AACvB,0BAA4B;AA+B1B;AA7Ba,SAAR,gCAAkD,EAAE,UAAU,GAAI;AACxE,QAAM,CAAE,eAAgB,QAAI,iCAAa,8BAA+B;AACxE,QAAM,EAAE,yBAAyB,SAAS,QAAI;AAAA,IAC7C,CAAE,WAAY;AACb,YAAM,EAAE,sBAAsB,QAAI;AAAA,QACjC,OAAQ,aAAAA,KAAiB;AAAA,MAC1B;AACA,aAAO;AAAA,QACN,yBAAyB,WAAW;AAAA,UAAO,CAAE,aAC5C,sBAAuB,QAAS;AAAA,QACjC;AAAA,QACA,UAAU;AAAA,UACT,0BAAAC;AAAA,QACD,EAAE;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA,IACA,CAAE,SAAU;AAAA,EACb;AACA,QAAM,eAAW,yBAAa,aAAAD,KAAiB;AAE/C,MAAK,oBAAoB,OAAQ;AAChC,WAAO;AAAA,EACR;AAEA,QAAM,EAAE,kBAAkB,QAAI,2BAAQ,QAAS;AAE/C,SACC;AAAA,IAAC;AAAA;AAAA,MACA,SAAU,MAAM,kBAAmB,SAAU;AAAA,MAC7C;AAAA,MAEE,wCAA0B,gBAAI,MAAO,QAAI,gBAAI,MAAO;AAAA;AAAA,EACvD;AAEF;",
6
6
  "names": ["blockEditorStore", "keyboardShortcutsStore"]
7
7
  }
@@ -31,9 +31,11 @@ var import_blocks = require("@wordpress/blocks");
31
31
  var import_data = require("@wordpress/data");
32
32
  var import_store = require("../../store/index.cjs");
33
33
  var import_lock_unlock = require("../../lock-unlock.cjs");
34
+ var import_use_settings = require("../use-settings/index.cjs");
34
35
  var import_jsx_runtime = require("react/jsx-runtime");
35
36
  function BlockVisibilityViewportToolbar({ clientIds }) {
36
37
  const hasBlockVisibilityButtonShownRef = (0, import_element.useRef)(false);
38
+ const [blockVisibility] = (0, import_use_settings.useSettings)("blockVisibility.allowEditing");
37
39
  const { canToggleBlockVisibility, areBlocksHiddenAnywhere } = (0, import_data.useSelect)(
38
40
  (select) => {
39
41
  const { getBlocksByClientId, getBlockName, isBlockHiddenAnywhere } = (0, import_lock_unlock.unlock)(select(import_store.store));
@@ -59,6 +61,9 @@ function BlockVisibilityViewportToolbar({ clientIds }) {
59
61
  hasBlockVisibilityButtonShownRef.current = true;
60
62
  }
61
63
  }, [areBlocksHiddenAnywhere]);
64
+ if (blockVisibility === false) {
65
+ return null;
66
+ }
62
67
  if (!areBlocksHiddenAnywhere && !hasBlockVisibilityButtonShownRef.current) {
63
68
  return null;
64
69
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/block-visibility/viewport-toolbar.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { ToolbarButton, ToolbarGroup } from '@wordpress/components';\nimport { useRef, useEffect } from '@wordpress/element';\nimport { seen, unseen } from '@wordpress/icons';\nimport { hasBlockSupport } from '@wordpress/blocks';\nimport { useSelect, useDispatch } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\n\nexport default function BlockVisibilityViewportToolbar( { clientIds } ) {\n\tconst hasBlockVisibilityButtonShownRef = useRef( false );\n\tconst { canToggleBlockVisibility, areBlocksHiddenAnywhere } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlocksByClientId, getBlockName, isBlockHiddenAnywhere } =\n\t\t\t\tunlock( select( blockEditorStore ) );\n\t\t\tconst _blocks = getBlocksByClientId( clientIds );\n\t\t\treturn {\n\t\t\t\tcanToggleBlockVisibility: _blocks.every( ( { clientId } ) =>\n\t\t\t\t\thasBlockSupport(\n\t\t\t\t\t\tgetBlockName( clientId ),\n\t\t\t\t\t\t'visibility',\n\t\t\t\t\t\ttrue\n\t\t\t\t\t)\n\t\t\t\t),\n\t\t\t\tareBlocksHiddenAnywhere: clientIds?.every( ( clientId ) =>\n\t\t\t\t\tisBlockHiddenAnywhere( clientId )\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\n\t\t[ clientIds ]\n\t);\n\tconst blockEditorDispatch = useDispatch( blockEditorStore );\n\n\t/*\n\t * If the block visibility button has been shown, we don't want to\n\t * remove it from the toolbar until the toolbar is rendered again\n\t * without it. Removing it beforehand can cause focus loss issues.\n\t * It needs to return focus from whence it came, and to do that,\n\t * we need to leave the button in the toolbar.\n\t */\n\tuseEffect( () => {\n\t\tif ( areBlocksHiddenAnywhere ) {\n\t\t\thasBlockVisibilityButtonShownRef.current = true;\n\t\t}\n\t}, [ areBlocksHiddenAnywhere ] );\n\n\tif (\n\t\t! areBlocksHiddenAnywhere &&\n\t\t! hasBlockVisibilityButtonShownRef.current\n\t) {\n\t\treturn null;\n\t}\n\n\tconst { showViewportModal } = unlock( blockEditorDispatch );\n\n\treturn (\n\t\t<ToolbarGroup className=\"block-editor-block-visibility-toolbar\">\n\t\t\t<ToolbarButton\n\t\t\t\tdisabled={ ! canToggleBlockVisibility }\n\t\t\t\ticon={ areBlocksHiddenAnywhere ? unseen : seen }\n\t\t\t\tlabel={\n\t\t\t\t\tareBlocksHiddenAnywhere ? __( 'Hidden' ) : __( 'Visible' )\n\t\t\t\t}\n\t\t\t\tonClick={ () => showViewportModal( clientIds ) }\n\t\t\t\taria-haspopup=\"dialog\"\n\t\t\t/>\n\t\t</ToolbarGroup>\n\t);\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,kBAAmB;AACnB,wBAA4C;AAC5C,qBAAkC;AAClC,mBAA6B;AAC7B,oBAAgC;AAChC,kBAAuC;AAKvC,mBAA0C;AAC1C,yBAAuB;AAmDpB;AAjDY,SAAR,+BAAiD,EAAE,UAAU,GAAI;AACvE,QAAM,uCAAmC,uBAAQ,KAAM;AACvD,QAAM,EAAE,0BAA0B,wBAAwB,QAAI;AAAA,IAC7D,CAAE,WAAY;AACb,YAAM,EAAE,qBAAqB,cAAc,sBAAsB,QAChE,2BAAQ,OAAQ,aAAAA,KAAiB,CAAE;AACpC,YAAM,UAAU,oBAAqB,SAAU;AAC/C,aAAO;AAAA,QACN,0BAA0B,QAAQ;AAAA,UAAO,CAAE,EAAE,SAAS,UACrD;AAAA,YACC,aAAc,QAAS;AAAA,YACvB;AAAA,YACA;AAAA,UACD;AAAA,QACD;AAAA,QACA,yBAAyB,WAAW;AAAA,UAAO,CAAE,aAC5C,sBAAuB,QAAS;AAAA,QACjC;AAAA,MACD;AAAA,IACD;AAAA,IAEA,CAAE,SAAU;AAAA,EACb;AACA,QAAM,0BAAsB,yBAAa,aAAAA,KAAiB;AAS1D,gCAAW,MAAM;AAChB,QAAK,yBAA0B;AAC9B,uCAAiC,UAAU;AAAA,IAC5C;AAAA,EACD,GAAG,CAAE,uBAAwB,CAAE;AAE/B,MACC,CAAE,2BACF,CAAE,iCAAiC,SAClC;AACD,WAAO;AAAA,EACR;AAEA,QAAM,EAAE,kBAAkB,QAAI,2BAAQ,mBAAoB;AAE1D,SACC,4CAAC,kCAAa,WAAU,yCACvB;AAAA,IAAC;AAAA;AAAA,MACA,UAAW,CAAE;AAAA,MACb,MAAO,0BAA0B,sBAAS;AAAA,MAC1C,OACC,8BAA0B,gBAAI,QAAS,QAAI,gBAAI,SAAU;AAAA,MAE1D,SAAU,MAAM,kBAAmB,SAAU;AAAA,MAC7C,iBAAc;AAAA;AAAA,EACf,GACD;AAEF;",
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { ToolbarButton, ToolbarGroup } from '@wordpress/components';\nimport { useRef, useEffect } from '@wordpress/element';\nimport { seen, unseen } from '@wordpress/icons';\nimport { hasBlockSupport } from '@wordpress/blocks';\nimport { useSelect, useDispatch } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\nimport { useSettings } from '../use-settings';\n\nexport default function BlockVisibilityViewportToolbar( { clientIds } ) {\n\tconst hasBlockVisibilityButtonShownRef = useRef( false );\n\tconst [ blockVisibility ] = useSettings( 'blockVisibility.allowEditing' );\n\tconst { canToggleBlockVisibility, areBlocksHiddenAnywhere } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlocksByClientId, getBlockName, isBlockHiddenAnywhere } =\n\t\t\t\tunlock( select( blockEditorStore ) );\n\t\t\tconst _blocks = getBlocksByClientId( clientIds );\n\t\t\treturn {\n\t\t\t\tcanToggleBlockVisibility: _blocks.every( ( { clientId } ) =>\n\t\t\t\t\thasBlockSupport(\n\t\t\t\t\t\tgetBlockName( clientId ),\n\t\t\t\t\t\t'visibility',\n\t\t\t\t\t\ttrue\n\t\t\t\t\t)\n\t\t\t\t),\n\t\t\t\tareBlocksHiddenAnywhere: clientIds?.every( ( clientId ) =>\n\t\t\t\t\tisBlockHiddenAnywhere( clientId )\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\n\t\t[ clientIds ]\n\t);\n\tconst blockEditorDispatch = useDispatch( blockEditorStore );\n\n\t/*\n\t * If the block visibility button has been shown, we don't want to\n\t * remove it from the toolbar until the toolbar is rendered again\n\t * without it. Removing it beforehand can cause focus loss issues.\n\t * It needs to return focus from whence it came, and to do that,\n\t * we need to leave the button in the toolbar.\n\t */\n\tuseEffect( () => {\n\t\tif ( areBlocksHiddenAnywhere ) {\n\t\t\thasBlockVisibilityButtonShownRef.current = true;\n\t\t}\n\t}, [ areBlocksHiddenAnywhere ] );\n\n\tif ( blockVisibility === false ) {\n\t\treturn null;\n\t}\n\n\tif (\n\t\t! areBlocksHiddenAnywhere &&\n\t\t! hasBlockVisibilityButtonShownRef.current\n\t) {\n\t\treturn null;\n\t}\n\n\tconst { showViewportModal } = unlock( blockEditorDispatch );\n\n\treturn (\n\t\t<ToolbarGroup className=\"block-editor-block-visibility-toolbar\">\n\t\t\t<ToolbarButton\n\t\t\t\tdisabled={ ! canToggleBlockVisibility }\n\t\t\t\ticon={ areBlocksHiddenAnywhere ? unseen : seen }\n\t\t\t\tlabel={\n\t\t\t\t\tareBlocksHiddenAnywhere ? __( 'Hidden' ) : __( 'Visible' )\n\t\t\t\t}\n\t\t\t\tonClick={ () => showViewportModal( clientIds ) }\n\t\t\t\taria-haspopup=\"dialog\"\n\t\t\t/>\n\t\t</ToolbarGroup>\n\t);\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,kBAAmB;AACnB,wBAA4C;AAC5C,qBAAkC;AAClC,mBAA6B;AAC7B,oBAAgC;AAChC,kBAAuC;AAKvC,mBAA0C;AAC1C,yBAAuB;AACvB,0BAA4B;AAwDzB;AAtDY,SAAR,+BAAiD,EAAE,UAAU,GAAI;AACvE,QAAM,uCAAmC,uBAAQ,KAAM;AACvD,QAAM,CAAE,eAAgB,QAAI,iCAAa,8BAA+B;AACxE,QAAM,EAAE,0BAA0B,wBAAwB,QAAI;AAAA,IAC7D,CAAE,WAAY;AACb,YAAM,EAAE,qBAAqB,cAAc,sBAAsB,QAChE,2BAAQ,OAAQ,aAAAA,KAAiB,CAAE;AACpC,YAAM,UAAU,oBAAqB,SAAU;AAC/C,aAAO;AAAA,QACN,0BAA0B,QAAQ;AAAA,UAAO,CAAE,EAAE,SAAS,UACrD;AAAA,YACC,aAAc,QAAS;AAAA,YACvB;AAAA,YACA;AAAA,UACD;AAAA,QACD;AAAA,QACA,yBAAyB,WAAW;AAAA,UAAO,CAAE,aAC5C,sBAAuB,QAAS;AAAA,QACjC;AAAA,MACD;AAAA,IACD;AAAA,IAEA,CAAE,SAAU;AAAA,EACb;AACA,QAAM,0BAAsB,yBAAa,aAAAA,KAAiB;AAS1D,gCAAW,MAAM;AAChB,QAAK,yBAA0B;AAC9B,uCAAiC,UAAU;AAAA,IAC5C;AAAA,EACD,GAAG,CAAE,uBAAwB,CAAE;AAE/B,MAAK,oBAAoB,OAAQ;AAChC,WAAO;AAAA,EACR;AAEA,MACC,CAAE,2BACF,CAAE,iCAAiC,SAClC;AACD,WAAO;AAAA,EACR;AAEA,QAAM,EAAE,kBAAkB,QAAI,2BAAQ,mBAAoB;AAE1D,SACC,4CAAC,kCAAa,WAAU,yCACvB;AAAA,IAAC;AAAA;AAAA,MACA,UAAW,CAAE;AAAA,MACb,MAAO,0BAA0B,sBAAS;AAAA,MAC1C,OACC,8BAA0B,gBAAI,QAAS,QAAI,gBAAI,SAAU;AAAA,MAE1D,SAAU,MAAM,kBAAmB,SAAU;AAAA,MAC7C,iBAAc;AAAA;AAAA,EACf,GACD;AAEF;",
6
6
  "names": ["blockEditorStore"]
7
7
  }
@@ -54,6 +54,7 @@ function ViewportVisibilityInfo({ clientId }) {
54
54
  const {
55
55
  currentBlockVisibility,
56
56
  selectedDeviceType,
57
+ viewportSettings,
57
58
  hasParentHiddenEverywhere
58
59
  } = (0, import_data.useSelect)(
59
60
  (select) => {
@@ -65,9 +66,11 @@ function ViewportVisibilityInfo({ clientId }) {
65
66
  isBlockParentHiddenEverywhere,
66
67
  getSettings
67
68
  } = (0, import_lock_unlock.unlock)(select(import_store.store));
69
+ const settings = getSettings();
68
70
  return {
69
71
  currentBlockVisibility: getBlockAttributes(clientId)?.metadata?.blockVisibility,
70
- selectedDeviceType: getSettings()?.[import_private_keys.deviceTypeKey]?.toLowerCase() || import_constants.BLOCK_VISIBILITY_VIEWPORTS.desktop.key,
72
+ selectedDeviceType: settings?.[import_private_keys.deviceTypeKey]?.toLowerCase() || import_constants.BLOCK_VISIBILITY_VIEWPORTS.desktop.key,
73
+ viewportSettings: settings?.__experimentalFeatures?.viewport,
71
74
  hasParentHiddenEverywhere: isBlockParentHiddenEverywhere(clientId)
72
75
  };
73
76
  },
@@ -79,6 +82,7 @@ function ViewportVisibilityInfo({ clientId }) {
79
82
  const { isBlockCurrentlyHidden, currentViewport } = (0, import_use_block_visibility.default)({
80
83
  blockVisibility: currentBlockVisibility,
81
84
  deviceType: selectedDeviceType,
85
+ viewportSettings,
82
86
  view: canvasView
83
87
  });
84
88
  const isBlockParentHiddenAtViewport = (0, import_data.useSelect)(
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/block-visibility/viewport-visibility-info.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport {\n\tIcon as WCIcon,\n\t__experimentalText as WCText,\n\t__experimentalHStack as HStack,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { useSelect } from '@wordpress/data';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { unseen } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\nimport { store as blockEditorStore } from '../../store';\nimport useBlockVisibility from './use-block-visibility';\nimport { useBlockElement } from '../block-list/use-block-props/use-block-refs';\nimport { deviceTypeKey } from '../../store/private-keys';\nimport { BLOCK_VISIBILITY_VIEWPORTS } from './constants';\n\nconst { Badge: WCBadge } = unlock( componentsPrivateApis );\nconst DEFAULT_VISIBILITY_STATE = {\n\tcurrentBlockVisibility: undefined,\n\thasParentHiddenEverywhere: false,\n\tselectedDeviceType: BLOCK_VISIBILITY_VIEWPORTS.desktop.key,\n};\n\nexport default function ViewportVisibilityInfo( { clientId } ) {\n\tconst {\n\t\tcurrentBlockVisibility,\n\t\tselectedDeviceType,\n\t\thasParentHiddenEverywhere,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! clientId ) {\n\t\t\t\treturn DEFAULT_VISIBILITY_STATE;\n\t\t\t}\n\t\t\tconst {\n\t\t\t\tgetBlockAttributes,\n\t\t\t\tisBlockParentHiddenEverywhere,\n\t\t\t\tgetSettings,\n\t\t\t} = unlock( select( blockEditorStore ) );\n\n\t\t\treturn {\n\t\t\t\tcurrentBlockVisibility:\n\t\t\t\t\tgetBlockAttributes( clientId )?.metadata?.blockVisibility,\n\t\t\t\tselectedDeviceType:\n\t\t\t\t\tgetSettings()?.[ deviceTypeKey ]?.toLowerCase() ||\n\t\t\t\t\tBLOCK_VISIBILITY_VIEWPORTS.desktop.key,\n\t\t\t\thasParentHiddenEverywhere:\n\t\t\t\t\tisBlockParentHiddenEverywhere( clientId ),\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\t// Get the block's DOM element to derive the canvas iframe window,\n\t// so viewport detection matches the actual block rendering context.\n\tconst blockElement = useBlockElement( clientId );\n\tconst rawCanvasView = blockElement?.ownerDocument?.defaultView;\n\tconst canvasView = rawCanvasView === null ? undefined : rawCanvasView;\n\n\tconst { isBlockCurrentlyHidden, currentViewport } = useBlockVisibility( {\n\t\tblockVisibility: currentBlockVisibility,\n\t\tdeviceType: selectedDeviceType,\n\t\tview: canvasView,\n\t} );\n\n\t/*\n\t * Selector to check if any parent (immediate or further up the chain) is hidden at current viewport.\n\t * Separated because it depends on currentViewport from the hook above.\n\t */\n\tconst isBlockParentHiddenAtViewport = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! clientId || ! currentViewport ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn unlock(\n\t\t\t\tselect( blockEditorStore )\n\t\t\t).isBlockParentHiddenAtViewport( clientId, currentViewport );\n\t\t},\n\t\t[ clientId, currentViewport ]\n\t);\n\n\tif (\n\t\t! (\n\t\t\tisBlockCurrentlyHidden ||\n\t\t\thasParentHiddenEverywhere ||\n\t\t\tisBlockParentHiddenAtViewport\n\t\t)\n\t) {\n\t\treturn null;\n\t}\n\n\t// Determine label based on whether block or parent is hidden\n\tlet label;\n\tif ( isBlockCurrentlyHidden ) {\n\t\t// Block is currently hidden - check if hidden everywhere or at specific viewport\n\t\tif ( currentBlockVisibility === false ) {\n\t\t\tlabel = __( 'Block is hidden' );\n\t\t} else {\n\t\t\tconst viewportLabel =\n\t\t\t\tBLOCK_VISIBILITY_VIEWPORTS[ currentViewport ]?.label ||\n\t\t\t\tcurrentViewport;\n\t\t\tlabel = sprintf(\n\t\t\t\t/* translators: %s: viewport name (Desktop, Tablet, Mobile) */\n\t\t\t\t__( 'Block is hidden on %s' ),\n\t\t\t\tviewportLabel\n\t\t\t);\n\t\t}\n\t}\n\n\t// Parent is hidden - check if hidden everywhere or at specific viewport\n\tif ( hasParentHiddenEverywhere ) {\n\t\tlabel = __( 'Parent block is hidden' );\n\t} else if ( isBlockParentHiddenAtViewport ) {\n\t\tconst viewportLabel =\n\t\t\tBLOCK_VISIBILITY_VIEWPORTS[ currentViewport ]?.label ||\n\t\t\tcurrentViewport;\n\t\tlabel = sprintf(\n\t\t\t/* translators: %s: viewport name (Desktop, Tablet, Mobile) */\n\t\t\t__( 'Parent block is hidden on %s' ),\n\t\t\tviewportLabel\n\t\t);\n\t}\n\n\treturn (\n\t\t<WCBadge className=\"block-editor-block-visibility-info\">\n\t\t\t<HStack spacing={ 2 } justify=\"start\">\n\t\t\t\t<WCIcon icon={ unseen } />\n\t\t\t\t<WCText>{ label }</WCText>\n\t\t\t</HStack>\n\t\t</WCBadge>\n\t);\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,wBAKO;AACP,kBAA0B;AAC1B,kBAA4B;AAC5B,mBAAuB;AAKvB,yBAAuB;AACvB,mBAA0C;AAC1C,kCAA+B;AAC/B,4BAAgC;AAChC,0BAA8B;AAC9B,uBAA2C;AA8GxC;AA5GH,IAAM,EAAE,OAAO,QAAQ,QAAI,2BAAQ,kBAAAA,WAAsB;AACzD,IAAM,2BAA2B;AAAA,EAChC,wBAAwB;AAAA,EACxB,2BAA2B;AAAA,EAC3B,oBAAoB,4CAA2B,QAAQ;AACxD;AAEe,SAAR,uBAAyC,EAAE,SAAS,GAAI;AAC9D,QAAM;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,EACD,QAAI;AAAA,IACH,CAAE,WAAY;AACb,UAAK,CAAE,UAAW;AACjB,eAAO;AAAA,MACR;AACA,YAAM;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,MACD,QAAI,2BAAQ,OAAQ,aAAAC,KAAiB,CAAE;AAEvC,aAAO;AAAA,QACN,wBACC,mBAAoB,QAAS,GAAG,UAAU;AAAA,QAC3C,oBACC,YAAY,IAAK,iCAAc,GAAG,YAAY,KAC9C,4CAA2B,QAAQ;AAAA,QACpC,2BACC,8BAA+B,QAAS;AAAA,MAC1C;AAAA,IACD;AAAA,IACA,CAAE,QAAS;AAAA,EACZ;AAIA,QAAM,mBAAe,uCAAiB,QAAS;AAC/C,QAAM,gBAAgB,cAAc,eAAe;AACnD,QAAM,aAAa,kBAAkB,OAAO,SAAY;AAExD,QAAM,EAAE,wBAAwB,gBAAgB,QAAI,4BAAAC,SAAoB;AAAA,IACvE,iBAAiB;AAAA,IACjB,YAAY;AAAA,IACZ,MAAM;AAAA,EACP,CAAE;AAMF,QAAM,oCAAgC;AAAA,IACrC,CAAE,WAAY;AACb,UAAK,CAAE,YAAY,CAAE,iBAAkB;AACtC,eAAO;AAAA,MACR;AACA,iBAAO;AAAA,QACN,OAAQ,aAAAD,KAAiB;AAAA,MAC1B,EAAE,8BAA+B,UAAU,eAAgB;AAAA,IAC5D;AAAA,IACA,CAAE,UAAU,eAAgB;AAAA,EAC7B;AAEA,MACC,EACC,0BACA,6BACA,gCAEA;AACD,WAAO;AAAA,EACR;AAGA,MAAI;AACJ,MAAK,wBAAyB;AAE7B,QAAK,2BAA2B,OAAQ;AACvC,kBAAQ,gBAAI,iBAAkB;AAAA,IAC/B,OAAO;AACN,YAAM,gBACL,4CAA4B,eAAgB,GAAG,SAC/C;AACD,kBAAQ;AAAA;AAAA,YAEP,gBAAI,uBAAwB;AAAA,QAC5B;AAAA,MACD;AAAA,IACD;AAAA,EACD;AAGA,MAAK,2BAA4B;AAChC,gBAAQ,gBAAI,wBAAyB;AAAA,EACtC,WAAY,+BAAgC;AAC3C,UAAM,gBACL,4CAA4B,eAAgB,GAAG,SAC/C;AACD,gBAAQ;AAAA;AAAA,UAEP,gBAAI,8BAA+B;AAAA,MACnC;AAAA,IACD;AAAA,EACD;AAEA,SACC,4CAAC,WAAQ,WAAU,sCAClB,uDAAC,kBAAAE,sBAAA,EAAO,SAAU,GAAI,SAAQ,SAC7B;AAAA,gDAAC,kBAAAC,MAAA,EAAO,MAAO,qBAAS;AAAA,IACxB,4CAAC,kBAAAC,oBAAA,EAAS,iBAAO;AAAA,KAClB,GACD;AAEF;",
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport {\n\tIcon as WCIcon,\n\t__experimentalText as WCText,\n\t__experimentalHStack as HStack,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { useSelect } from '@wordpress/data';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { unseen } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\nimport { store as blockEditorStore } from '../../store';\nimport useBlockVisibility from './use-block-visibility';\nimport { useBlockElement } from '../block-list/use-block-props/use-block-refs';\nimport { deviceTypeKey } from '../../store/private-keys';\nimport { BLOCK_VISIBILITY_VIEWPORTS } from './constants';\n\nconst { Badge: WCBadge } = unlock( componentsPrivateApis );\nconst DEFAULT_VISIBILITY_STATE = {\n\tcurrentBlockVisibility: undefined,\n\thasParentHiddenEverywhere: false,\n\tselectedDeviceType: BLOCK_VISIBILITY_VIEWPORTS.desktop.key,\n};\n\nexport default function ViewportVisibilityInfo( { clientId } ) {\n\tconst {\n\t\tcurrentBlockVisibility,\n\t\tselectedDeviceType,\n\t\tviewportSettings,\n\t\thasParentHiddenEverywhere,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! clientId ) {\n\t\t\t\treturn DEFAULT_VISIBILITY_STATE;\n\t\t\t}\n\t\t\tconst {\n\t\t\t\tgetBlockAttributes,\n\t\t\t\tisBlockParentHiddenEverywhere,\n\t\t\t\tgetSettings,\n\t\t\t} = unlock( select( blockEditorStore ) );\n\t\t\tconst settings = getSettings();\n\n\t\t\treturn {\n\t\t\t\tcurrentBlockVisibility:\n\t\t\t\t\tgetBlockAttributes( clientId )?.metadata?.blockVisibility,\n\t\t\t\tselectedDeviceType:\n\t\t\t\t\tsettings?.[ deviceTypeKey ]?.toLowerCase() ||\n\t\t\t\t\tBLOCK_VISIBILITY_VIEWPORTS.desktop.key,\n\t\t\t\tviewportSettings: settings?.__experimentalFeatures?.viewport,\n\t\t\t\thasParentHiddenEverywhere:\n\t\t\t\t\tisBlockParentHiddenEverywhere( clientId ),\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\t// Get the block's DOM element to derive the canvas iframe window,\n\t// so viewport detection matches the actual block rendering context.\n\tconst blockElement = useBlockElement( clientId );\n\tconst rawCanvasView = blockElement?.ownerDocument?.defaultView;\n\tconst canvasView = rawCanvasView === null ? undefined : rawCanvasView;\n\n\tconst { isBlockCurrentlyHidden, currentViewport } = useBlockVisibility( {\n\t\tblockVisibility: currentBlockVisibility,\n\t\tdeviceType: selectedDeviceType,\n\t\tviewportSettings,\n\t\tview: canvasView,\n\t} );\n\n\t/*\n\t * Selector to check if any parent (immediate or further up the chain) is hidden at current viewport.\n\t * Separated because it depends on currentViewport from the hook above.\n\t */\n\tconst isBlockParentHiddenAtViewport = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! clientId || ! currentViewport ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn unlock(\n\t\t\t\tselect( blockEditorStore )\n\t\t\t).isBlockParentHiddenAtViewport( clientId, currentViewport );\n\t\t},\n\t\t[ clientId, currentViewport ]\n\t);\n\n\tif (\n\t\t! (\n\t\t\tisBlockCurrentlyHidden ||\n\t\t\thasParentHiddenEverywhere ||\n\t\t\tisBlockParentHiddenAtViewport\n\t\t)\n\t) {\n\t\treturn null;\n\t}\n\n\t// Determine label based on whether block or parent is hidden\n\tlet label;\n\tif ( isBlockCurrentlyHidden ) {\n\t\t// Block is currently hidden - check if hidden everywhere or at specific viewport\n\t\tif ( currentBlockVisibility === false ) {\n\t\t\tlabel = __( 'Block is hidden' );\n\t\t} else {\n\t\t\tconst viewportLabel =\n\t\t\t\tBLOCK_VISIBILITY_VIEWPORTS[ currentViewport ]?.label ||\n\t\t\t\tcurrentViewport;\n\t\t\tlabel = sprintf(\n\t\t\t\t/* translators: %s: viewport name (Desktop, Tablet, Mobile) */\n\t\t\t\t__( 'Block is hidden on %s' ),\n\t\t\t\tviewportLabel\n\t\t\t);\n\t\t}\n\t}\n\n\t// Parent is hidden - check if hidden everywhere or at specific viewport\n\tif ( hasParentHiddenEverywhere ) {\n\t\tlabel = __( 'Parent block is hidden' );\n\t} else if ( isBlockParentHiddenAtViewport ) {\n\t\tconst viewportLabel =\n\t\t\tBLOCK_VISIBILITY_VIEWPORTS[ currentViewport ]?.label ||\n\t\t\tcurrentViewport;\n\t\tlabel = sprintf(\n\t\t\t/* translators: %s: viewport name (Desktop, Tablet, Mobile) */\n\t\t\t__( 'Parent block is hidden on %s' ),\n\t\t\tviewportLabel\n\t\t);\n\t}\n\n\treturn (\n\t\t<WCBadge className=\"block-editor-block-visibility-info\">\n\t\t\t<HStack spacing={ 2 } justify=\"start\">\n\t\t\t\t<WCIcon icon={ unseen } />\n\t\t\t\t<WCText>{ label }</WCText>\n\t\t\t</HStack>\n\t\t</WCBadge>\n\t);\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,wBAKO;AACP,kBAA0B;AAC1B,kBAA4B;AAC5B,mBAAuB;AAKvB,yBAAuB;AACvB,mBAA0C;AAC1C,kCAA+B;AAC/B,4BAAgC;AAChC,0BAA8B;AAC9B,uBAA2C;AAkHxC;AAhHH,IAAM,EAAE,OAAO,QAAQ,QAAI,2BAAQ,kBAAAA,WAAsB;AACzD,IAAM,2BAA2B;AAAA,EAChC,wBAAwB;AAAA,EACxB,2BAA2B;AAAA,EAC3B,oBAAoB,4CAA2B,QAAQ;AACxD;AAEe,SAAR,uBAAyC,EAAE,SAAS,GAAI;AAC9D,QAAM;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD,QAAI;AAAA,IACH,CAAE,WAAY;AACb,UAAK,CAAE,UAAW;AACjB,eAAO;AAAA,MACR;AACA,YAAM;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,MACD,QAAI,2BAAQ,OAAQ,aAAAC,KAAiB,CAAE;AACvC,YAAM,WAAW,YAAY;AAE7B,aAAO;AAAA,QACN,wBACC,mBAAoB,QAAS,GAAG,UAAU;AAAA,QAC3C,oBACC,WAAY,iCAAc,GAAG,YAAY,KACzC,4CAA2B,QAAQ;AAAA,QACpC,kBAAkB,UAAU,wBAAwB;AAAA,QACpD,2BACC,8BAA+B,QAAS;AAAA,MAC1C;AAAA,IACD;AAAA,IACA,CAAE,QAAS;AAAA,EACZ;AAIA,QAAM,mBAAe,uCAAiB,QAAS;AAC/C,QAAM,gBAAgB,cAAc,eAAe;AACnD,QAAM,aAAa,kBAAkB,OAAO,SAAY;AAExD,QAAM,EAAE,wBAAwB,gBAAgB,QAAI,4BAAAC,SAAoB;AAAA,IACvE,iBAAiB;AAAA,IACjB,YAAY;AAAA,IACZ;AAAA,IACA,MAAM;AAAA,EACP,CAAE;AAMF,QAAM,oCAAgC;AAAA,IACrC,CAAE,WAAY;AACb,UAAK,CAAE,YAAY,CAAE,iBAAkB;AACtC,eAAO;AAAA,MACR;AACA,iBAAO;AAAA,QACN,OAAQ,aAAAD,KAAiB;AAAA,MAC1B,EAAE,8BAA+B,UAAU,eAAgB;AAAA,IAC5D;AAAA,IACA,CAAE,UAAU,eAAgB;AAAA,EAC7B;AAEA,MACC,EACC,0BACA,6BACA,gCAEA;AACD,WAAO;AAAA,EACR;AAGA,MAAI;AACJ,MAAK,wBAAyB;AAE7B,QAAK,2BAA2B,OAAQ;AACvC,kBAAQ,gBAAI,iBAAkB;AAAA,IAC/B,OAAO;AACN,YAAM,gBACL,4CAA4B,eAAgB,GAAG,SAC/C;AACD,kBAAQ;AAAA;AAAA,YAEP,gBAAI,uBAAwB;AAAA,QAC5B;AAAA,MACD;AAAA,IACD;AAAA,EACD;AAGA,MAAK,2BAA4B;AAChC,gBAAQ,gBAAI,wBAAyB;AAAA,EACtC,WAAY,+BAAgC;AAC3C,UAAM,gBACL,4CAA4B,eAAgB,GAAG,SAC/C;AACD,gBAAQ;AAAA;AAAA,UAEP,gBAAI,8BAA+B;AAAA,MACnC;AAAA,IACD;AAAA,EACD;AAEA,SACC,4CAAC,WAAQ,WAAU,sCAClB,uDAAC,kBAAAE,sBAAA,EAAO,SAAU,GAAI,SAAQ,SAC7B;AAAA,gDAAC,kBAAAC,MAAA,EAAO,MAAO,qBAAS;AAAA,IACxB,4CAAC,kBAAAC,oBAAA,EAAS,iBAAO;AAAA,KAClB,GACD;AAEF;",
6
6
  "names": ["componentsPrivateApis", "blockEditorStore", "useBlockVisibility", "HStack", "WCIcon", "WCText"]
7
7
  }
@@ -23,18 +23,15 @@ __export(utils_exports, {
23
23
  convertPresetsToCustomValues: () => convertPresetsToCustomValues,
24
24
  getAllUnit: () => getAllUnit,
25
25
  getAllValue: () => getAllValue,
26
- getCustomValueFromPreset: () => getCustomValueFromPreset,
27
- getPresetSlug: () => getPresetSlug,
28
26
  getPresetValueFromControlValue: () => getPresetValueFromControlValue,
29
- getPresetValueFromCustomValue: () => getPresetValueFromCustomValue,
30
- getSliderValueFromPreset: () => getSliderValueFromPreset,
31
27
  hasDefinedValues: () => hasDefinedValues,
32
28
  hasMixedValues: () => hasMixedValues,
33
- isValuePreset: () => isValuePreset,
34
29
  mode: () => mode
35
30
  });
36
31
  module.exports = __toCommonJS(utils_exports);
37
32
  var import_components = require("@wordpress/components");
33
+ var import_utils = require("../preset-input-control/utils.cjs");
34
+ var BORDER_RADIUS_PRESET_TYPE = "border-radius";
38
35
  function mode(inputArray) {
39
36
  const arr = [...inputArray];
40
37
  return arr.sort(
@@ -92,40 +89,6 @@ function hasDefinedValues(values) {
92
89
  });
93
90
  return !!filteredValues.length;
94
91
  }
95
- function isValuePreset(value) {
96
- if (!value?.includes) {
97
- return false;
98
- }
99
- return value === "0" || value.includes("var:preset|border-radius|");
100
- }
101
- function getPresetSlug(value) {
102
- if (!value) {
103
- return;
104
- }
105
- if (value === "0" || value === "default") {
106
- return value;
107
- }
108
- const slug = value.match(/var:preset\|border-radius\|(.+)/);
109
- return slug ? slug[1] : void 0;
110
- }
111
- function getSliderValueFromPreset(presetValue, presets) {
112
- if (presetValue === void 0) {
113
- return 0;
114
- }
115
- const slug = parseFloat(presetValue, 10) === 0 ? "0" : getPresetSlug(presetValue);
116
- const sliderValue = presets.findIndex((size) => {
117
- return String(size.slug) === slug;
118
- });
119
- return sliderValue !== -1 ? sliderValue : NaN;
120
- }
121
- function getCustomValueFromPreset(value, presets) {
122
- if (!isValuePreset(value)) {
123
- return value;
124
- }
125
- const slug = parseFloat(value, 10) === 0 ? "0" : getPresetSlug(value);
126
- const radiusSize = presets.find((size) => String(size.slug) === slug);
127
- return radiusSize?.size;
128
- }
129
92
  function getPresetValueFromControlValue(controlValue, controlType, presets) {
130
93
  const size = parseInt(controlValue, 10);
131
94
  if (controlType === "selectList") {
@@ -137,18 +100,6 @@ function getPresetValueFromControlValue(controlValue, controlType, presets) {
137
100
  }
138
101
  return `var:preset|border-radius|${presets[controlValue]?.slug}`;
139
102
  }
140
- function getPresetValueFromCustomValue(value, presets) {
141
- if (!value || isValuePreset(value) || value === "0") {
142
- return value;
143
- }
144
- const spacingMatch = presets.find(
145
- (size) => String(size.size) === String(value)
146
- );
147
- if (spacingMatch?.slug) {
148
- return `var:preset|border-radius|${spacingMatch.slug}`;
149
- }
150
- return value;
151
- }
152
103
  function convertPresetsToCustomValues(values, presets) {
153
104
  if (!values || typeof values !== "object") {
154
105
  return values;
@@ -156,8 +107,12 @@ function convertPresetsToCustomValues(values, presets) {
156
107
  const converted = {};
157
108
  Object.keys(values).forEach((key) => {
158
109
  const value = values[key];
159
- if (isValuePreset(value)) {
160
- const customValue = getCustomValueFromPreset(value, presets);
110
+ if ((0, import_utils.isValuePreset)(value, BORDER_RADIUS_PRESET_TYPE)) {
111
+ const customValue = (0, import_utils.getCustomValueFromPreset)(
112
+ value,
113
+ presets,
114
+ BORDER_RADIUS_PRESET_TYPE
115
+ );
161
116
  converted[key] = customValue !== void 0 ? customValue : value;
162
117
  } else {
163
118
  converted[key] = value;
@@ -170,14 +125,9 @@ function convertPresetsToCustomValues(values, presets) {
170
125
  convertPresetsToCustomValues,
171
126
  getAllUnit,
172
127
  getAllValue,
173
- getCustomValueFromPreset,
174
- getPresetSlug,
175
128
  getPresetValueFromControlValue,
176
- getPresetValueFromCustomValue,
177
- getSliderValueFromPreset,
178
129
  hasDefinedValues,
179
130
  hasMixedValues,
180
- isValuePreset,
181
131
  mode
182
132
  });
183
133
  //# sourceMappingURL=utils.cjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/border-radius-control/utils.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __experimentalParseQuantityAndUnitFromRawValue as parseQuantityAndUnitFromRawValue } from '@wordpress/components';\n\n/**\n * Gets the (non-undefined) item with the highest occurrence within an array\n * Based in part on: https://stackoverflow.com/a/20762713\n *\n * Undefined values are always sorted to the end by `sort`, so this function\n * returns the first element, to always prioritize real values over undefined\n * values.\n *\n * See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#description\n *\n * @param {Array<any>} inputArray Array of items to check.\n * @return {any} The item with the most occurrences.\n */\nexport function mode( inputArray ) {\n\tconst arr = [ ...inputArray ];\n\treturn arr\n\t\t.sort(\n\t\t\t( a, b ) =>\n\t\t\t\tinputArray.filter( ( v ) => v === b ).length -\n\t\t\t\tinputArray.filter( ( v ) => v === a ).length\n\t\t)\n\t\t.shift();\n}\n\n/**\n * Returns the most common CSS unit from the current CSS unit selections.\n *\n * - If a single flat border radius is set, its unit will be used\n * - If individual corner selections, the most common of those will be used\n * - Failing any unit selections a default of 'px' is returned.\n *\n * @param {Object} selectedUnits Unit selections for flat radius & each corner.\n * @return {string} Most common CSS unit from current selections. Default: `px`.\n */\nexport function getAllUnit( selectedUnits = {} ) {\n\tconst { flat, ...cornerUnits } = selectedUnits;\n\treturn (\n\t\tflat || mode( Object.values( cornerUnits ).filter( Boolean ) ) || 'px'\n\t);\n}\n\n/**\n * Gets the 'all' input value and unit from values data.\n *\n * @param {Object|string} values Radius values.\n * @return {string} A value + unit for the 'all' input.\n */\nexport function getAllValue( values = {} ) {\n\t/**\n\t * Border radius support was originally a single pixel value.\n\t *\n\t * To maintain backwards compatibility treat this case as the all value.\n\t */\n\tif ( typeof values === 'string' ) {\n\t\treturn values;\n\t}\n\n\tconst parsedQuantitiesAndUnits = Object.values( values ).map( ( value ) => {\n\t\tconst newValue = parseQuantityAndUnitFromRawValue( value );\n\t\tif ( typeof value === 'string' && newValue[ 0 ] === undefined ) {\n\t\t\treturn [ value, '' ];\n\t\t}\n\t\treturn newValue;\n\t} );\n\n\tconst allValues = parsedQuantitiesAndUnits.map(\n\t\t( value ) => value[ 0 ] ?? ''\n\t);\n\tconst allUnits = parsedQuantitiesAndUnits.map( ( value ) => value[ 1 ] );\n\n\tconst value = allValues.every( ( v ) => v === allValues[ 0 ] )\n\t\t? allValues[ 0 ]\n\t\t: '';\n\tconst unit = mode( allUnits );\n\n\tconst allValue =\n\t\tvalue === 0 || value ? `${ value }${ unit || '' }` : undefined;\n\n\treturn allValue;\n}\n\n/**\n * Checks to determine if values are mixed.\n *\n * @param {Object} values Radius values.\n * @return {boolean} Whether values are mixed.\n */\nexport function hasMixedValues( values = {} ) {\n\tif ( typeof values === 'string' ) {\n\t\treturn false;\n\t}\n\n\tif ( ! values || typeof values !== 'object' ) {\n\t\treturn false;\n\t}\n\n\tconst cornerValues = Object.values( values );\n\n\tif ( cornerValues.length === 0 ) {\n\t\treturn false;\n\t}\n\n\tconst firstValue = cornerValues[ 0 ];\n\n\t// Check if all values are exactly the same (including undefined)\n\tconst allSame = cornerValues.every( ( value ) => value === firstValue );\n\n\treturn ! allSame;\n}\n\n/**\n * Checks to determine if values are defined.\n *\n * @param {Object} values Radius values.\n * @return {boolean} Whether values are mixed.\n */\nexport function hasDefinedValues( values ) {\n\tif ( ! values ) {\n\t\treturn false;\n\t}\n\n\t// A string value represents a shorthand value.\n\tif ( typeof values === 'string' ) {\n\t\treturn true;\n\t}\n\n\t// An object represents longhand border radius values, if any are set\n\t// flag values as being defined.\n\tconst filteredValues = Object.values( values ).filter( ( value ) => {\n\t\treturn !! value || value === 0;\n\t} );\n\n\treturn !! filteredValues.length;\n}\n\n/**\n * Checks is given value is a radius preset.\n *\n * @param {string} value Value to check\n *\n * @return {boolean} Return true if value is string in format var:preset|border-radius|.\n */\nexport function isValuePreset( value ) {\n\tif ( ! value?.includes ) {\n\t\treturn false;\n\t}\n\treturn value === '0' || value.includes( 'var:preset|border-radius|' );\n}\n\n/**\n * Returns the slug section of the given preset string.\n *\n * @param {string} value Value to extract slug from.\n *\n * @return {string|undefined} The value slug from given preset.\n */\nexport function getPresetSlug( value ) {\n\tif ( ! value ) {\n\t\treturn;\n\t}\n\n\tif ( value === '0' || value === 'default' ) {\n\t\treturn value;\n\t}\n\n\tconst slug = value.match( /var:preset\\|border-radius\\|(.+)/ );\n\n\treturn slug ? slug[ 1 ] : undefined;\n}\n\n/**\n * Converts radius preset value into a Range component value .\n *\n * @param {string} presetValue Value to convert to Range value.\n * @param {Array} presets Array of current radius preset value objects.\n *\n * @return {number} The int value for use in Range control.\n */\nexport function getSliderValueFromPreset( presetValue, presets ) {\n\tif ( presetValue === undefined ) {\n\t\treturn 0;\n\t}\n\tconst slug =\n\t\tparseFloat( presetValue, 10 ) === 0\n\t\t\t? '0'\n\t\t\t: getPresetSlug( presetValue );\n\tconst sliderValue = presets.findIndex( ( size ) => {\n\t\treturn String( size.slug ) === slug;\n\t} );\n\n\t// Returning NaN rather than undefined as undefined makes range control thumb sit in center\n\treturn sliderValue !== -1 ? sliderValue : NaN;\n}\n\n/**\n * Converts a preset into a custom value.\n *\n * @param {string} value Value to convert\n * @param {Array} presets Array of the current radius preset objects\n *\n * @return {string} Mapping of the radius preset to its equivalent custom value.\n */\nexport function getCustomValueFromPreset( value, presets ) {\n\tif ( ! isValuePreset( value ) ) {\n\t\treturn value;\n\t}\n\n\tconst slug = parseFloat( value, 10 ) === 0 ? '0' : getPresetSlug( value );\n\tconst radiusSize = presets.find( ( size ) => String( size.slug ) === slug );\n\n\treturn radiusSize?.size;\n}\n\n/**\n * Converts a control value into a preset value.\n *\n * @param {number} controlValue to convert to preset value.\n * @param {string} controlType Type of control\n * @param {Array} presets Array of current radius preset value objects.\n *\n * @return {string} The custom value for use in Range control.\n */\nexport function getPresetValueFromControlValue(\n\tcontrolValue,\n\tcontrolType,\n\tpresets\n) {\n\tconst size = parseInt( controlValue, 10 );\n\tif ( controlType === 'selectList' ) {\n\t\tif ( size === 0 ) {\n\t\t\treturn undefined;\n\t\t}\n\t} else if ( size === 0 ) {\n\t\treturn '0';\n\t}\n\n\treturn `var:preset|border-radius|${ presets[ controlValue ]?.slug }`;\n}\n\n/**\n * Converts a custom value to preset value if one can be found.\n *\n * Returns value as-is if no match is found.\n *\n * @param {string} value Value to convert\n * @param {Array} presets Array of the current border radius preset objects\n *\n * @return {string} The preset value if it can be found.\n */\nexport function getPresetValueFromCustomValue( value, presets ) {\n\t// Return value as-is if it is undefined or is already a preset, or '0';\n\tif ( ! value || isValuePreset( value ) || value === '0' ) {\n\t\treturn value;\n\t}\n\n\tconst spacingMatch = presets.find(\n\t\t( size ) => String( size.size ) === String( value )\n\t);\n\n\tif ( spacingMatch?.slug ) {\n\t\treturn `var:preset|border-radius|${ spacingMatch.slug }`;\n\t}\n\n\treturn value;\n}\n\n/**\n * Converts all preset values in a values object to their custom equivalents.\n *\n * @param {Object} values Values object to convert\n * @param {Array} presets Array of current border radius preset objects\n *\n * @return {Object} Values with presets converted to custom values\n */\nexport function convertPresetsToCustomValues( values, presets ) {\n\tif ( ! values || typeof values !== 'object' ) {\n\t\treturn values;\n\t}\n\n\tconst converted = {};\n\tObject.keys( values ).forEach( ( key ) => {\n\t\tconst value = values[ key ];\n\t\tif ( isValuePreset( value ) ) {\n\t\t\tconst customValue = getCustomValueFromPreset( value, presets );\n\t\t\tconverted[ key ] = customValue !== undefined ? customValue : value;\n\t\t} else {\n\t\t\tconverted[ key ] = value;\n\t\t}\n\t} );\n\n\treturn converted;\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __experimentalParseQuantityAndUnitFromRawValue as parseQuantityAndUnitFromRawValue } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport {\n\tgetCustomValueFromPreset,\n\tisValuePreset,\n} from '../preset-input-control/utils';\n\nconst BORDER_RADIUS_PRESET_TYPE = 'border-radius';\n\n/**\n * Gets the (non-undefined) item with the highest occurrence within an array\n * Based in part on: https://stackoverflow.com/a/20762713\n *\n * Undefined values are always sorted to the end by `sort`, so this function\n * returns the first element, to always prioritize real values over undefined\n * values.\n *\n * See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#description\n *\n * @param {Array<any>} inputArray Array of items to check.\n * @return {any} The item with the most occurrences.\n */\nexport function mode( inputArray ) {\n\tconst arr = [ ...inputArray ];\n\treturn arr\n\t\t.sort(\n\t\t\t( a, b ) =>\n\t\t\t\tinputArray.filter( ( v ) => v === b ).length -\n\t\t\t\tinputArray.filter( ( v ) => v === a ).length\n\t\t)\n\t\t.shift();\n}\n\n/**\n * Returns the most common CSS unit from the current CSS unit selections.\n *\n * - If a single flat border radius is set, its unit will be used\n * - If individual corner selections, the most common of those will be used\n * - Failing any unit selections a default of 'px' is returned.\n *\n * @param {Object} selectedUnits Unit selections for flat radius & each corner.\n * @return {string} Most common CSS unit from current selections. Default: `px`.\n */\nexport function getAllUnit( selectedUnits = {} ) {\n\tconst { flat, ...cornerUnits } = selectedUnits;\n\treturn (\n\t\tflat || mode( Object.values( cornerUnits ).filter( Boolean ) ) || 'px'\n\t);\n}\n\n/**\n * Gets the 'all' input value and unit from values data.\n *\n * @param {Object|string} values Radius values.\n * @return {string} A value + unit for the 'all' input.\n */\nexport function getAllValue( values = {} ) {\n\t/**\n\t * Border radius support was originally a single pixel value.\n\t *\n\t * To maintain backwards compatibility treat this case as the all value.\n\t */\n\tif ( typeof values === 'string' ) {\n\t\treturn values;\n\t}\n\n\tconst parsedQuantitiesAndUnits = Object.values( values ).map( ( value ) => {\n\t\tconst newValue = parseQuantityAndUnitFromRawValue( value );\n\t\tif ( typeof value === 'string' && newValue[ 0 ] === undefined ) {\n\t\t\treturn [ value, '' ];\n\t\t}\n\t\treturn newValue;\n\t} );\n\n\tconst allValues = parsedQuantitiesAndUnits.map(\n\t\t( value ) => value[ 0 ] ?? ''\n\t);\n\tconst allUnits = parsedQuantitiesAndUnits.map( ( value ) => value[ 1 ] );\n\n\tconst value = allValues.every( ( v ) => v === allValues[ 0 ] )\n\t\t? allValues[ 0 ]\n\t\t: '';\n\tconst unit = mode( allUnits );\n\n\tconst allValue =\n\t\tvalue === 0 || value ? `${ value }${ unit || '' }` : undefined;\n\n\treturn allValue;\n}\n\n/**\n * Checks to determine if values are mixed.\n *\n * @param {Object} values Radius values.\n * @return {boolean} Whether values are mixed.\n */\nexport function hasMixedValues( values = {} ) {\n\tif ( typeof values === 'string' ) {\n\t\treturn false;\n\t}\n\n\tif ( ! values || typeof values !== 'object' ) {\n\t\treturn false;\n\t}\n\n\tconst cornerValues = Object.values( values );\n\n\tif ( cornerValues.length === 0 ) {\n\t\treturn false;\n\t}\n\n\tconst firstValue = cornerValues[ 0 ];\n\n\t// Check if all values are exactly the same (including undefined)\n\tconst allSame = cornerValues.every( ( value ) => value === firstValue );\n\n\treturn ! allSame;\n}\n\n/**\n * Checks to determine if values are defined.\n *\n * @param {Object} values Radius values.\n * @return {boolean} Whether values are mixed.\n */\nexport function hasDefinedValues( values ) {\n\tif ( ! values ) {\n\t\treturn false;\n\t}\n\n\t// A string value represents a shorthand value.\n\tif ( typeof values === 'string' ) {\n\t\treturn true;\n\t}\n\n\t// An object represents longhand border radius values, if any are set\n\t// flag values as being defined.\n\tconst filteredValues = Object.values( values ).filter( ( value ) => {\n\t\treturn !! value || value === 0;\n\t} );\n\n\treturn !! filteredValues.length;\n}\n\n/**\n * Converts a control value into a preset value.\n *\n * @param {number} controlValue to convert to preset value.\n * @param {string} controlType Type of control\n * @param {Array} presets Array of current radius preset value objects.\n *\n * @return {string} The custom value for use in Range control.\n */\nexport function getPresetValueFromControlValue(\n\tcontrolValue,\n\tcontrolType,\n\tpresets\n) {\n\tconst size = parseInt( controlValue, 10 );\n\tif ( controlType === 'selectList' ) {\n\t\tif ( size === 0 ) {\n\t\t\treturn undefined;\n\t\t}\n\t} else if ( size === 0 ) {\n\t\treturn '0';\n\t}\n\n\treturn `var:preset|border-radius|${ presets[ controlValue ]?.slug }`;\n}\n\n/**\n * Converts all preset values in a values object to their custom equivalents.\n *\n * @param {Object} values Values object to convert\n * @param {Array} presets Array of current border radius preset objects\n *\n * @return {Object} Values with presets converted to custom values\n */\nexport function convertPresetsToCustomValues( values, presets ) {\n\tif ( ! values || typeof values !== 'object' ) {\n\t\treturn values;\n\t}\n\n\tconst converted = {};\n\tObject.keys( values ).forEach( ( key ) => {\n\t\tconst value = values[ key ];\n\t\tif ( isValuePreset( value, BORDER_RADIUS_PRESET_TYPE ) ) {\n\t\t\tconst customValue = getCustomValueFromPreset(\n\t\t\t\tvalue,\n\t\t\t\tpresets,\n\t\t\t\tBORDER_RADIUS_PRESET_TYPE\n\t\t\t);\n\t\t\tconverted[ key ] = customValue !== undefined ? customValue : value;\n\t\t} else {\n\t\t\tconverted[ key ] = value;\n\t\t}\n\t} );\n\n\treturn converted;\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["value", "parseQuantityAndUnitFromRawValue"]
7
7
  }