@wordpress/block-editor 14.2.0 → 14.2.1-next.1f6eadc42.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 (235) hide show
  1. package/build/components/block-breadcrumb/index.js +4 -10
  2. package/build/components/block-breadcrumb/index.js.map +1 -1
  3. package/build/components/block-compare/block-view.js +2 -4
  4. package/build/components/block-compare/block-view.js.map +1 -1
  5. package/build/components/block-edit/multiple-usage-warning.js +4 -8
  6. package/build/components/block-edit/multiple-usage-warning.js.map +1 -1
  7. package/build/components/block-inspector/index.js +0 -2
  8. package/build/components/block-inspector/index.js.map +1 -1
  9. package/build/components/block-list/block-invalid-warning.js +2 -4
  10. package/build/components/block-list/block-invalid-warning.js.map +1 -1
  11. package/build/components/block-list/index.js +14 -3
  12. package/build/components/block-list/index.js.map +1 -1
  13. package/build/components/block-list/use-block-props/use-zoom-out-mode-exit.js +7 -0
  14. package/build/components/block-list/use-block-props/use-zoom-out-mode-exit.js.map +1 -1
  15. package/build/components/block-list/zoom-out-separator.js +98 -0
  16. package/build/components/block-list/zoom-out-separator.js.map +1 -0
  17. package/build/components/block-mover/button.js +2 -4
  18. package/build/components/block-mover/button.js.map +1 -1
  19. package/build/components/block-mover/index.js +2 -4
  20. package/build/components/block-mover/index.js.map +1 -1
  21. package/build/components/block-pattern-setup/index.js +2 -7
  22. package/build/components/block-pattern-setup/index.js.map +1 -1
  23. package/build/components/block-patterns-list/index.js +2 -7
  24. package/build/components/block-patterns-list/index.js.map +1 -1
  25. package/build/components/block-switcher/index.js +8 -2
  26. package/build/components/block-switcher/index.js.map +1 -1
  27. package/build/components/block-switcher/pattern-transformations-menu.js +2 -7
  28. package/build/components/block-switcher/pattern-transformations-menu.js.map +1 -1
  29. package/build/components/block-toolbar/index.js +10 -4
  30. package/build/components/block-toolbar/index.js.map +1 -1
  31. package/build/components/block-tools/index.js +1 -1
  32. package/build/components/block-tools/index.js.map +1 -1
  33. package/build/components/block-tools/zoom-out-mode-inserters.js +3 -12
  34. package/build/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
  35. package/build/components/block-tools/zoom-out-toolbar.js +13 -3
  36. package/build/components/block-tools/zoom-out-toolbar.js.map +1 -1
  37. package/build/components/button-block-appender/index.js +7 -21
  38. package/build/components/button-block-appender/index.js.map +1 -1
  39. package/build/components/global-styles/shadow-panel-components.js +2 -11
  40. package/build/components/global-styles/shadow-panel-components.js.map +1 -1
  41. package/build/components/grid/grid-item-resizer.js +2 -2
  42. package/build/components/grid/grid-item-resizer.js.map +1 -1
  43. package/build/components/iframe/get-compatibility-styles.js +1 -1
  44. package/build/components/iframe/get-compatibility-styles.js.map +1 -1
  45. package/build/components/inserter/block-patterns-tab/pattern-category-previews.js +23 -13
  46. package/build/components/inserter/block-patterns-tab/pattern-category-previews.js.map +1 -1
  47. package/build/components/inserter/index.js +4 -11
  48. package/build/components/inserter/index.js.map +1 -1
  49. package/build/components/inserter/media-tab/media-list.js +1 -5
  50. package/build/components/inserter/media-tab/media-list.js.map +1 -1
  51. package/build/components/inserter/media-tab/media-preview.js +1 -5
  52. package/build/components/inserter/media-tab/media-preview.js.map +1 -1
  53. package/build/components/inserter/quick-inserter.js +0 -4
  54. package/build/components/inserter/quick-inserter.js.map +1 -1
  55. package/build/components/inserter-listbox/index.js +2 -8
  56. package/build/components/inserter-listbox/index.js.map +1 -1
  57. package/build/components/inserter-listbox/item.js +2 -10
  58. package/build/components/inserter-listbox/item.js.map +1 -1
  59. package/build/components/inserter-listbox/row.js +1 -9
  60. package/build/components/inserter-listbox/row.js.map +1 -1
  61. package/build/components/list-view/index.js +3 -7
  62. package/build/components/list-view/index.js.map +1 -1
  63. package/build/components/media-placeholder/index.js +4 -4
  64. package/build/components/media-placeholder/index.js.map +1 -1
  65. package/build/components/spacing-sizes-control/index.js +8 -9
  66. package/build/components/spacing-sizes-control/index.js.map +1 -1
  67. package/build/components/spacing-sizes-control/linked-button.js +35 -0
  68. package/build/components/spacing-sizes-control/linked-button.js.map +1 -0
  69. package/build/components/spacing-sizes-control/utils.js +4 -15
  70. package/build/components/spacing-sizes-control/utils.js.map +1 -1
  71. package/build/components/use-block-drop-zone/index.js +27 -1
  72. package/build/components/use-block-drop-zone/index.js.map +1 -1
  73. package/build/hooks/block-bindings.js +1 -0
  74. package/build/hooks/block-bindings.js.map +1 -1
  75. package/build/hooks/layout.js +0 -1
  76. package/build/hooks/layout.js.map +1 -1
  77. package/build/layouts/constrained.js +5 -6
  78. package/build/layouts/constrained.js.map +1 -1
  79. package/build/layouts/grid.js +19 -16
  80. package/build/layouts/grid.js.map +1 -1
  81. package/build/private-apis.js +0 -2
  82. package/build/private-apis.js.map +1 -1
  83. package/build/store/private-selectors.js +3 -3
  84. package/build/store/private-selectors.js.map +1 -1
  85. package/build/store/reducer.js +0 -2
  86. package/build/store/reducer.js.map +1 -1
  87. package/build-module/components/block-breadcrumb/index.js +4 -10
  88. package/build-module/components/block-breadcrumb/index.js.map +1 -1
  89. package/build-module/components/block-compare/block-view.js +2 -4
  90. package/build-module/components/block-compare/block-view.js.map +1 -1
  91. package/build-module/components/block-edit/multiple-usage-warning.js +4 -8
  92. package/build-module/components/block-edit/multiple-usage-warning.js.map +1 -1
  93. package/build-module/components/block-inspector/index.js +0 -2
  94. package/build-module/components/block-inspector/index.js.map +1 -1
  95. package/build-module/components/block-list/block-invalid-warning.js +2 -4
  96. package/build-module/components/block-list/block-invalid-warning.js.map +1 -1
  97. package/build-module/components/block-list/index.js +14 -3
  98. package/build-module/components/block-list/index.js.map +1 -1
  99. package/build-module/components/block-list/use-block-props/use-zoom-out-mode-exit.js +8 -1
  100. package/build-module/components/block-list/use-block-props/use-zoom-out-mode-exit.js.map +1 -1
  101. package/build-module/components/block-list/zoom-out-separator.js +90 -0
  102. package/build-module/components/block-list/zoom-out-separator.js.map +1 -0
  103. package/build-module/components/block-mover/button.js +2 -4
  104. package/build-module/components/block-mover/button.js.map +1 -1
  105. package/build-module/components/block-mover/index.js +2 -4
  106. package/build-module/components/block-mover/index.js.map +1 -1
  107. package/build-module/components/block-pattern-setup/index.js +2 -7
  108. package/build-module/components/block-pattern-setup/index.js.map +1 -1
  109. package/build-module/components/block-patterns-list/index.js +2 -7
  110. package/build-module/components/block-patterns-list/index.js.map +1 -1
  111. package/build-module/components/block-switcher/index.js +8 -2
  112. package/build-module/components/block-switcher/index.js.map +1 -1
  113. package/build-module/components/block-switcher/pattern-transformations-menu.js +2 -7
  114. package/build-module/components/block-switcher/pattern-transformations-menu.js.map +1 -1
  115. package/build-module/components/block-toolbar/index.js +10 -4
  116. package/build-module/components/block-toolbar/index.js.map +1 -1
  117. package/build-module/components/block-tools/index.js +1 -1
  118. package/build-module/components/block-tools/index.js.map +1 -1
  119. package/build-module/components/block-tools/zoom-out-mode-inserters.js +3 -13
  120. package/build-module/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
  121. package/build-module/components/block-tools/zoom-out-toolbar.js +13 -3
  122. package/build-module/components/block-tools/zoom-out-toolbar.js.map +1 -1
  123. package/build-module/components/button-block-appender/index.js +8 -23
  124. package/build-module/components/button-block-appender/index.js.map +1 -1
  125. package/build-module/components/global-styles/shadow-panel-components.js +2 -11
  126. package/build-module/components/global-styles/shadow-panel-components.js.map +1 -1
  127. package/build-module/components/grid/grid-item-resizer.js +2 -2
  128. package/build-module/components/grid/grid-item-resizer.js.map +1 -1
  129. package/build-module/components/iframe/get-compatibility-styles.js +1 -1
  130. package/build-module/components/iframe/get-compatibility-styles.js.map +1 -1
  131. package/build-module/components/inserter/block-patterns-tab/pattern-category-previews.js +23 -13
  132. package/build-module/components/inserter/block-patterns-tab/pattern-category-previews.js.map +1 -1
  133. package/build-module/components/inserter/index.js +4 -11
  134. package/build-module/components/inserter/index.js.map +1 -1
  135. package/build-module/components/inserter/media-tab/media-list.js +1 -5
  136. package/build-module/components/inserter/media-tab/media-list.js.map +1 -1
  137. package/build-module/components/inserter/media-tab/media-preview.js +2 -6
  138. package/build-module/components/inserter/media-tab/media-preview.js.map +1 -1
  139. package/build-module/components/inserter/quick-inserter.js +1 -5
  140. package/build-module/components/inserter/quick-inserter.js.map +1 -1
  141. package/build-module/components/inserter-listbox/index.js +1 -5
  142. package/build-module/components/inserter-listbox/index.js.map +1 -1
  143. package/build-module/components/inserter-listbox/item.js +3 -11
  144. package/build-module/components/inserter-listbox/item.js.map +1 -1
  145. package/build-module/components/inserter-listbox/row.js +2 -10
  146. package/build-module/components/inserter-listbox/row.js.map +1 -1
  147. package/build-module/components/list-view/index.js +3 -7
  148. package/build-module/components/list-view/index.js.map +1 -1
  149. package/build-module/components/media-placeholder/index.js +4 -4
  150. package/build-module/components/media-placeholder/index.js.map +1 -1
  151. package/build-module/components/spacing-sizes-control/index.js +9 -10
  152. package/build-module/components/spacing-sizes-control/index.js.map +1 -1
  153. package/build-module/components/spacing-sizes-control/linked-button.js +28 -0
  154. package/build-module/components/spacing-sizes-control/linked-button.js.map +1 -0
  155. package/build-module/components/spacing-sizes-control/utils.js +4 -15
  156. package/build-module/components/spacing-sizes-control/utils.js.map +1 -1
  157. package/build-module/components/use-block-drop-zone/index.js +27 -1
  158. package/build-module/components/use-block-drop-zone/index.js.map +1 -1
  159. package/build-module/hooks/block-bindings.js +1 -0
  160. package/build-module/hooks/block-bindings.js.map +1 -1
  161. package/build-module/hooks/layout.js +0 -1
  162. package/build-module/hooks/layout.js.map +1 -1
  163. package/build-module/layouts/constrained.js +7 -8
  164. package/build-module/layouts/constrained.js.map +1 -1
  165. package/build-module/layouts/grid.js +21 -18
  166. package/build-module/layouts/grid.js.map +1 -1
  167. package/build-module/private-apis.js +0 -2
  168. package/build-module/private-apis.js.map +1 -1
  169. package/build-module/store/private-selectors.js +3 -3
  170. package/build-module/store/private-selectors.js.map +1 -1
  171. package/build-module/store/reducer.js +0 -2
  172. package/build-module/store/reducer.js.map +1 -1
  173. package/build-style/content-rtl.css +17 -0
  174. package/build-style/content.css +17 -0
  175. package/build-style/style-rtl.css +13 -82
  176. package/build-style/style.css +13 -82
  177. package/package.json +32 -32
  178. package/src/components/block-breadcrumb/index.js +2 -6
  179. package/src/components/block-breadcrumb/style.scss +1 -30
  180. package/src/components/block-compare/block-view.js +1 -2
  181. package/src/components/block-compare/test/__snapshots__/block-view.js.snap +1 -1
  182. package/src/components/block-edit/multiple-usage-warning.js +2 -4
  183. package/src/components/block-inspector/index.js +0 -1
  184. package/src/components/block-inspector/style.scss +2 -4
  185. package/src/components/block-list/block-invalid-warning.js +1 -2
  186. package/src/components/block-list/content.scss +21 -0
  187. package/src/components/block-list/index.js +59 -38
  188. package/src/components/block-list/use-block-props/use-zoom-out-mode-exit.js +13 -1
  189. package/src/components/block-list/zoom-out-separator.js +110 -0
  190. package/src/components/block-mover/button.js +1 -2
  191. package/src/components/block-mover/index.js +1 -2
  192. package/src/components/block-pattern-setup/index.js +3 -11
  193. package/src/components/block-patterns-list/index.js +3 -8
  194. package/src/components/block-switcher/index.js +19 -3
  195. package/src/components/block-switcher/pattern-transformations-menu.js +3 -8
  196. package/src/components/block-switcher/style.scss +0 -24
  197. package/src/components/block-toolbar/index.js +10 -3
  198. package/src/components/block-toolbar/style.scss +4 -1
  199. package/src/components/block-tools/index.js +1 -1
  200. package/src/components/block-tools/zoom-out-mode-inserters.js +0 -12
  201. package/src/components/block-tools/zoom-out-toolbar.js +11 -0
  202. package/src/components/button-block-appender/index.js +16 -25
  203. package/src/components/global-styles/shadow-panel-components.js +2 -10
  204. package/src/components/grid/grid-item-resizer.js +2 -2
  205. package/src/components/iframe/get-compatibility-styles.js +6 -1
  206. package/src/components/inserter/block-patterns-tab/pattern-category-previews.js +32 -15
  207. package/src/components/inserter/index.js +4 -10
  208. package/src/components/inserter/media-tab/media-list.js +1 -4
  209. package/src/components/inserter/media-tab/media-preview.js +3 -6
  210. package/src/components/inserter/quick-inserter.js +1 -4
  211. package/src/components/inserter/style.scss +4 -9
  212. package/src/components/inserter-listbox/index.js +1 -4
  213. package/src/components/inserter-listbox/item.js +3 -13
  214. package/src/components/inserter-listbox/row.js +2 -9
  215. package/src/components/list-view/index.js +3 -8
  216. package/src/components/media-placeholder/README.md +2 -2
  217. package/src/components/media-placeholder/index.js +7 -4
  218. package/src/components/spacing-sizes-control/index.js +10 -13
  219. package/src/components/spacing-sizes-control/linked-button.js +32 -0
  220. package/src/components/spacing-sizes-control/test/utils.js +14 -15
  221. package/src/components/spacing-sizes-control/utils.js +5 -18
  222. package/src/components/use-block-drop-zone/index.js +33 -1
  223. package/src/hooks/block-bindings.js +1 -1
  224. package/src/hooks/layout.js +0 -1
  225. package/src/hooks/layout.scss +6 -20
  226. package/src/layouts/constrained.js +9 -7
  227. package/src/layouts/grid.js +29 -22
  228. package/src/private-apis.js +0 -2
  229. package/src/store/private-selectors.js +6 -3
  230. package/src/store/reducer.js +0 -2
  231. package/build/components/spacing-sizes-control/sides-dropdown/index.js +0 -86
  232. package/build/components/spacing-sizes-control/sides-dropdown/index.js.map +0 -1
  233. package/build-module/components/spacing-sizes-control/sides-dropdown/index.js +0 -81
  234. package/build-module/components/spacing-sizes-control/sides-dropdown/index.js.map +0 -1
  235. package/src/components/spacing-sizes-control/sides-dropdown/index.js +0 -91
@@ -1 +1 @@
1
- {"version":3,"names":["_clsx","_interopRequireDefault","require","_components","_i18n","_element","_data","_icons","_blocks2","_deprecated","_mediaUpload","_check","_urlPopover","_store","_jsxRuntime","noop","InsertFromURLPopover","src","onChange","onSubmit","onClose","popoverAnchor","jsx","default","anchor","children","jsxs","className","type","__","placeholder","value","Button","__next40pxDefaultSize","icon","keyboardReturn","label","URLSelectionUI","onChangeSrc","onSelectURL","setPopoverAnchor","useState","isURLInputVisible","setIsURLInputVisible","openURLInput","closeURLInput","focus","onSubmitSrc","event","preventDefault","onClick","isPressed","variant","ref","MediaPlaceholder","allowedTypes","labels","mediaPreview","notices","isAppender","accept","addToGallery","multiple","handleUpload","disableDropZone","disableMediaButtons","onError","onSelect","onCancel","onToggleFeaturedImage","onDoubleClick","onFilesPreUpload","onHTMLDrop","deprecatedOnHTMLDrop","mediaLibraryButton","style","deprecated","since","version","mediaUpload","useSelect","select","getSettings","blockEditorStore","setSrc","useEffect","_value$src","onlyAllowsImages","length","every","allowedType","startsWith","target","onFilesUpload","files","setMedia","lastMediaPassed","newMedia","filteredMedia","filter","item","id","some","Number","urlSlug","url","includes","concat","map","media","cutOffIndex","lastIndexOf","slice","filesList","onFileChange","handleBlocksDrop","blocks","Array","isArray","recursivelyFindMediaFromBlocks","_blocks","flatMap","block","name","attributes","innerBlocks","mediaBlocks","uploadedMediaList","Promise","all","resolve","reject","window","fetch","then","response","blob","additionalData","title","alt_text","alt","caption","catch","err","HTML","pasteHandler","onUpload","defaultRenderPlaceholder","content","instructions","undefined","typesAllowed","firstAllowedType","isOneType","isAudio","isImage","isVideo","placeholderClassName","clsx","Placeholder","preview","renderPlaceholder","renderDropZone","DropZone","onFilesDrop","renderCancelLink","renderUrlSelectionUI","renderFeaturedImageToggle","renderMediaUploadChecked","defaultButton","open","libraryButton","uploadMediaLibraryButton","gallery","mode","render","Fragment","FormFileUpload","openFileDialog","fallback","_default","exports","withFilters"],"sources":["@wordpress/block-editor/src/components/media-placeholder/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tButton,\n\tFormFileUpload,\n\tPlaceholder,\n\tDropZone,\n\twithFilters,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useState, useEffect } from '@wordpress/element';\nimport { useSelect } from '@wordpress/data';\nimport { keyboardReturn } from '@wordpress/icons';\nimport { pasteHandler } from '@wordpress/blocks';\nimport deprecated from '@wordpress/deprecated';\n\n/**\n * Internal dependencies\n */\nimport MediaUpload from '../media-upload';\nimport MediaUploadCheck from '../media-upload/check';\nimport URLPopover from '../url-popover';\nimport { store as blockEditorStore } from '../../store';\n\nconst noop = () => {};\n\nconst InsertFromURLPopover = ( {\n\tsrc,\n\tonChange,\n\tonSubmit,\n\tonClose,\n\tpopoverAnchor,\n} ) => (\n\t<URLPopover anchor={ popoverAnchor } onClose={ onClose }>\n\t\t<form\n\t\t\tclassName=\"block-editor-media-placeholder__url-input-form\"\n\t\t\tonSubmit={ onSubmit }\n\t\t>\n\t\t\t<input\n\t\t\t\tclassName=\"block-editor-media-placeholder__url-input-field\"\n\t\t\t\ttype=\"text\"\n\t\t\t\taria-label={ __( 'URL' ) }\n\t\t\t\tplaceholder={ __( 'Paste or type URL' ) }\n\t\t\t\tonChange={ onChange }\n\t\t\t\tvalue={ src }\n\t\t\t/>\n\t\t\t<Button\n\t\t\t\t// TODO: Switch to `true` (40px size) if possible\n\t\t\t\t__next40pxDefaultSize={ false }\n\t\t\t\tclassName=\"block-editor-media-placeholder__url-input-submit-button\"\n\t\t\t\ticon={ keyboardReturn }\n\t\t\t\tlabel={ __( 'Apply' ) }\n\t\t\t\ttype=\"submit\"\n\t\t\t/>\n\t\t</form>\n\t</URLPopover>\n);\n\nconst URLSelectionUI = ( { src, onChangeSrc, onSelectURL } ) => {\n\t// Use internal state instead of a ref to make sure that the component\n\t// re-renders when the popover's anchor updates.\n\tconst [ popoverAnchor, setPopoverAnchor ] = useState( null );\n\tconst [ isURLInputVisible, setIsURLInputVisible ] = useState( false );\n\n\tconst openURLInput = () => {\n\t\tsetIsURLInputVisible( true );\n\t};\n\tconst closeURLInput = () => {\n\t\tsetIsURLInputVisible( false );\n\t\tpopoverAnchor?.focus();\n\t};\n\n\tconst onSubmitSrc = ( event ) => {\n\t\tevent.preventDefault();\n\t\tif ( src && onSelectURL ) {\n\t\t\tonSelectURL( src );\n\t\t\tcloseURLInput();\n\t\t}\n\t};\n\n\treturn (\n\t\t<div className=\"block-editor-media-placeholder__url-input-container\">\n\t\t\t<Button\n\t\t\t\t// TODO: Switch to `true` (40px size) if possible\n\t\t\t\t__next40pxDefaultSize={ false }\n\t\t\t\tclassName=\"block-editor-media-placeholder__button\"\n\t\t\t\tonClick={ openURLInput }\n\t\t\t\tisPressed={ isURLInputVisible }\n\t\t\t\tvariant=\"secondary\"\n\t\t\t\taria-haspopup=\"dialog\"\n\t\t\t\tref={ setPopoverAnchor }\n\t\t\t>\n\t\t\t\t{ __( 'Insert from URL' ) }\n\t\t\t</Button>\n\t\t\t{ isURLInputVisible && (\n\t\t\t\t<InsertFromURLPopover\n\t\t\t\t\tsrc={ src }\n\t\t\t\t\tonChange={ onChangeSrc }\n\t\t\t\t\tonSubmit={ onSubmitSrc }\n\t\t\t\t\tonClose={ closeURLInput }\n\t\t\t\t\tpopoverAnchor={ popoverAnchor }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</div>\n\t);\n};\n\nexport function MediaPlaceholder( {\n\tvalue = {},\n\tallowedTypes,\n\tclassName,\n\ticon,\n\tlabels = {},\n\tmediaPreview,\n\tnotices,\n\tisAppender,\n\taccept,\n\taddToGallery,\n\tmultiple = false,\n\thandleUpload = true,\n\tdisableDropZone,\n\tdisableMediaButtons,\n\tonError,\n\tonSelect,\n\tonCancel,\n\tonSelectURL,\n\tonToggleFeaturedImage,\n\tonDoubleClick,\n\tonFilesPreUpload = noop,\n\tonHTMLDrop: deprecatedOnHTMLDrop,\n\tchildren,\n\tmediaLibraryButton,\n\tplaceholder,\n\tstyle,\n} ) {\n\tif ( deprecatedOnHTMLDrop ) {\n\t\tdeprecated( 'wp.blockEditor.MediaPlaceholder onHTMLDrop prop', {\n\t\t\tsince: '6.2',\n\t\t\tversion: '6.4',\n\t\t} );\n\t}\n\n\tconst mediaUpload = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\treturn getSettings().mediaUpload;\n\t}, [] );\n\tconst [ src, setSrc ] = useState( '' );\n\n\tuseEffect( () => {\n\t\tsetSrc( value?.src ?? '' );\n\t}, [ value?.src ] );\n\n\tconst onlyAllowsImages = () => {\n\t\tif ( ! allowedTypes || allowedTypes.length === 0 ) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn allowedTypes.every(\n\t\t\t( allowedType ) =>\n\t\t\t\tallowedType === 'image' || allowedType.startsWith( 'image/' )\n\t\t);\n\t};\n\n\tconst onChangeSrc = ( event ) => {\n\t\tsetSrc( event.target.value );\n\t};\n\n\tconst onFilesUpload = ( files ) => {\n\t\tif ( ! handleUpload ) {\n\t\t\treturn onSelect( files );\n\t\t}\n\t\tonFilesPreUpload( files );\n\t\tlet setMedia;\n\t\tif ( multiple ) {\n\t\t\tif ( addToGallery ) {\n\t\t\t\t// Since the setMedia function runs multiple times per upload group\n\t\t\t\t// and is passed newMedia containing every item in its group each time, we must\n\t\t\t\t// filter out whatever this upload group had previously returned to the\n\t\t\t\t// gallery before adding and returning the image array with replacement newMedia\n\t\t\t\t// values.\n\n\t\t\t\t// Define an array to store urls from newMedia between subsequent function calls.\n\t\t\t\tlet lastMediaPassed = [];\n\t\t\t\tsetMedia = ( newMedia ) => {\n\t\t\t\t\t// Remove any images this upload group is responsible for (lastMediaPassed).\n\t\t\t\t\t// Their replacements are contained in newMedia.\n\t\t\t\t\tconst filteredMedia = ( value ?? [] ).filter( ( item ) => {\n\t\t\t\t\t\t// If Item has id, only remove it if lastMediaPassed has an item with that id.\n\t\t\t\t\t\tif ( item.id ) {\n\t\t\t\t\t\t\treturn ! lastMediaPassed.some(\n\t\t\t\t\t\t\t\t// Be sure to convert to number for comparison.\n\t\t\t\t\t\t\t\t( { id } ) => Number( id ) === Number( item.id )\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Compare transient images via .includes since gallery may append extra info onto the url.\n\t\t\t\t\t\treturn ! lastMediaPassed.some( ( { urlSlug } ) =>\n\t\t\t\t\t\t\titem.url.includes( urlSlug )\n\t\t\t\t\t\t);\n\t\t\t\t\t} );\n\t\t\t\t\t// Return the filtered media array along with newMedia.\n\t\t\t\t\tonSelect( filteredMedia.concat( newMedia ) );\n\t\t\t\t\t// Reset lastMediaPassed and set it with ids and urls from newMedia.\n\t\t\t\t\tlastMediaPassed = newMedia.map( ( media ) => {\n\t\t\t\t\t\t// Add everything up to '.fileType' to compare via .includes.\n\t\t\t\t\t\tconst cutOffIndex = media.url.lastIndexOf( '.' );\n\t\t\t\t\t\tconst urlSlug = media.url.slice( 0, cutOffIndex );\n\t\t\t\t\t\treturn { id: media.id, urlSlug };\n\t\t\t\t\t} );\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\tsetMedia = onSelect;\n\t\t\t}\n\t\t} else {\n\t\t\tsetMedia = ( [ media ] ) => onSelect( media );\n\t\t}\n\t\tmediaUpload( {\n\t\t\tallowedTypes,\n\t\t\tfilesList: files,\n\t\t\tonFileChange: setMedia,\n\t\t\tonError,\n\t\t} );\n\t};\n\n\tasync function handleBlocksDrop( blocks ) {\n\t\tif ( ! blocks || ! Array.isArray( blocks ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tfunction recursivelyFindMediaFromBlocks( _blocks ) {\n\t\t\treturn _blocks.flatMap( ( block ) =>\n\t\t\t\t( block.name === 'core/image' ||\n\t\t\t\t\tblock.name === 'core/audio' ||\n\t\t\t\t\tblock.name === 'core/video' ) &&\n\t\t\t\tblock.attributes.url\n\t\t\t\t\t? [ block ]\n\t\t\t\t\t: recursivelyFindMediaFromBlocks( block.innerBlocks )\n\t\t\t);\n\t\t}\n\n\t\tconst mediaBlocks = recursivelyFindMediaFromBlocks( blocks );\n\n\t\tif ( ! mediaBlocks.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst uploadedMediaList = await Promise.all(\n\t\t\tmediaBlocks.map( ( block ) =>\n\t\t\t\tblock.attributes.id\n\t\t\t\t\t? block.attributes\n\t\t\t\t\t: new Promise( ( resolve, reject ) => {\n\t\t\t\t\t\t\twindow\n\t\t\t\t\t\t\t\t.fetch( block.attributes.url )\n\t\t\t\t\t\t\t\t.then( ( response ) => response.blob() )\n\t\t\t\t\t\t\t\t.then( ( blob ) =>\n\t\t\t\t\t\t\t\t\tmediaUpload( {\n\t\t\t\t\t\t\t\t\t\tfilesList: [ blob ],\n\t\t\t\t\t\t\t\t\t\tadditionalData: {\n\t\t\t\t\t\t\t\t\t\t\ttitle: block.attributes.title,\n\t\t\t\t\t\t\t\t\t\t\talt_text: block.attributes.alt,\n\t\t\t\t\t\t\t\t\t\t\tcaption: block.attributes.caption,\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tonFileChange: ( [ media ] ) => {\n\t\t\t\t\t\t\t\t\t\t\tif ( media.id ) {\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( media );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tallowedTypes,\n\t\t\t\t\t\t\t\t\t\tonError: reject,\n\t\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t.catch( () => resolve( block.attributes.url ) );\n\t\t\t\t\t } )\n\t\t\t)\n\t\t).catch( ( err ) => onError( err ) );\n\n\t\tif ( multiple ) {\n\t\t\tonSelect( uploadedMediaList );\n\t\t} else {\n\t\t\tonSelect( uploadedMediaList[ 0 ] );\n\t\t}\n\t}\n\n\tasync function onHTMLDrop( HTML ) {\n\t\tconst blocks = pasteHandler( { HTML } );\n\t\treturn await handleBlocksDrop( blocks );\n\t}\n\n\tconst onUpload = ( event ) => {\n\t\tonFilesUpload( event.target.files );\n\t};\n\n\tconst defaultRenderPlaceholder = ( content ) => {\n\t\tlet { instructions, title } = labels;\n\n\t\tif ( ! mediaUpload && ! onSelectURL ) {\n\t\t\tinstructions = __(\n\t\t\t\t'To edit this block, you need permission to upload media.'\n\t\t\t);\n\t\t}\n\n\t\tif ( instructions === undefined || title === undefined ) {\n\t\t\tconst typesAllowed = allowedTypes ?? [];\n\n\t\t\tconst [ firstAllowedType ] = typesAllowed;\n\t\t\tconst isOneType = 1 === typesAllowed.length;\n\t\t\tconst isAudio = isOneType && 'audio' === firstAllowedType;\n\t\t\tconst isImage = isOneType && 'image' === firstAllowedType;\n\t\t\tconst isVideo = isOneType && 'video' === firstAllowedType;\n\n\t\t\tif ( instructions === undefined && mediaUpload ) {\n\t\t\t\tinstructions = __(\n\t\t\t\t\t'Upload a media file or pick one from your media library.'\n\t\t\t\t);\n\n\t\t\t\tif ( isAudio ) {\n\t\t\t\t\tinstructions = __(\n\t\t\t\t\t\t'Upload an audio file, pick one from your media library, or add one with a URL.'\n\t\t\t\t\t);\n\t\t\t\t} else if ( isImage ) {\n\t\t\t\t\tinstructions = __(\n\t\t\t\t\t\t'Upload an image file, pick one from your media library, or add one with a URL.'\n\t\t\t\t\t);\n\t\t\t\t} else if ( isVideo ) {\n\t\t\t\t\tinstructions = __(\n\t\t\t\t\t\t'Upload a video file, pick one from your media library, or add one with a URL.'\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( title === undefined ) {\n\t\t\t\ttitle = __( 'Media' );\n\n\t\t\t\tif ( isAudio ) {\n\t\t\t\t\ttitle = __( 'Audio' );\n\t\t\t\t} else if ( isImage ) {\n\t\t\t\t\ttitle = __( 'Image' );\n\t\t\t\t} else if ( isVideo ) {\n\t\t\t\t\ttitle = __( 'Video' );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst placeholderClassName = clsx(\n\t\t\t'block-editor-media-placeholder',\n\t\t\tclassName,\n\t\t\t{\n\t\t\t\t'is-appender': isAppender,\n\t\t\t}\n\t\t);\n\n\t\treturn (\n\t\t\t<Placeholder\n\t\t\t\ticon={ icon }\n\t\t\t\tlabel={ title }\n\t\t\t\tinstructions={ instructions }\n\t\t\t\tclassName={ placeholderClassName }\n\t\t\t\tnotices={ notices }\n\t\t\t\tonDoubleClick={ onDoubleClick }\n\t\t\t\tpreview={ mediaPreview }\n\t\t\t\tstyle={ style }\n\t\t\t>\n\t\t\t\t{ content }\n\t\t\t\t{ children }\n\t\t\t</Placeholder>\n\t\t);\n\t};\n\tconst renderPlaceholder = placeholder ?? defaultRenderPlaceholder;\n\n\tconst renderDropZone = () => {\n\t\tif ( disableDropZone ) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn (\n\t\t\t<DropZone onFilesDrop={ onFilesUpload } onHTMLDrop={ onHTMLDrop } />\n\t\t);\n\t};\n\n\tconst renderCancelLink = () => {\n\t\treturn (\n\t\t\tonCancel && (\n\t\t\t\t<Button\n\t\t\t\t\t// TODO: Switch to `true` (40px size) if possible\n\t\t\t\t\t__next40pxDefaultSize={ false }\n\t\t\t\t\tclassName=\"block-editor-media-placeholder__cancel-button\"\n\t\t\t\t\ttitle={ __( 'Cancel' ) }\n\t\t\t\t\tvariant=\"link\"\n\t\t\t\t\tonClick={ onCancel }\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t</Button>\n\t\t\t)\n\t\t);\n\t};\n\n\tconst renderUrlSelectionUI = () => {\n\t\treturn (\n\t\t\tonSelectURL && (\n\t\t\t\t<URLSelectionUI\n\t\t\t\t\tsrc={ src }\n\t\t\t\t\tonChangeSrc={ onChangeSrc }\n\t\t\t\t\tonSelectURL={ onSelectURL }\n\t\t\t\t/>\n\t\t\t)\n\t\t);\n\t};\n\n\tconst renderFeaturedImageToggle = () => {\n\t\treturn (\n\t\t\tonToggleFeaturedImage && (\n\t\t\t\t<div className=\"block-editor-media-placeholder__url-input-container\">\n\t\t\t\t\t<Button\n\t\t\t\t\t\t// TODO: Switch to `true` (40px size) if possible\n\t\t\t\t\t\t__next40pxDefaultSize={ false }\n\t\t\t\t\t\tclassName=\"block-editor-media-placeholder__button\"\n\t\t\t\t\t\tonClick={ onToggleFeaturedImage }\n\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Use featured image' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t</div>\n\t\t\t)\n\t\t);\n\t};\n\n\tconst renderMediaUploadChecked = () => {\n\t\tconst defaultButton = ( { open } ) => {\n\t\t\treturn (\n\t\t\t\t<Button\n\t\t\t\t\t// TODO: Switch to `true` (40px size) if possible\n\t\t\t\t\t__next40pxDefaultSize={ false }\n\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\topen();\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Media Library' ) }\n\t\t\t\t</Button>\n\t\t\t);\n\t\t};\n\t\tconst libraryButton = mediaLibraryButton ?? defaultButton;\n\t\tconst uploadMediaLibraryButton = (\n\t\t\t<MediaUpload\n\t\t\t\taddToGallery={ addToGallery }\n\t\t\t\tgallery={ multiple && onlyAllowsImages() }\n\t\t\t\tmultiple={ multiple }\n\t\t\t\tonSelect={ onSelect }\n\t\t\t\tallowedTypes={ allowedTypes }\n\t\t\t\tmode=\"browse\"\n\t\t\t\tvalue={\n\t\t\t\t\tArray.isArray( value )\n\t\t\t\t\t\t? value.map( ( { id } ) => id )\n\t\t\t\t\t\t: value.id\n\t\t\t\t}\n\t\t\t\trender={ libraryButton }\n\t\t\t/>\n\t\t);\n\n\t\tif ( mediaUpload && isAppender ) {\n\t\t\treturn (\n\t\t\t\t<>\n\t\t\t\t\t{ renderDropZone() }\n\t\t\t\t\t<FormFileUpload\n\t\t\t\t\t\tonChange={ onUpload }\n\t\t\t\t\t\taccept={ accept }\n\t\t\t\t\t\tmultiple={ !! multiple }\n\t\t\t\t\t\trender={ ( { openFileDialog } ) => {\n\t\t\t\t\t\t\tconst content = (\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t// TODO: Switch to `true` (40px size) if possible\n\t\t\t\t\t\t\t\t\t\t__next40pxDefaultSize={ false }\n\t\t\t\t\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t\t\t\t\t\t'block-editor-media-placeholder__button',\n\t\t\t\t\t\t\t\t\t\t\t'block-editor-media-placeholder__upload-button'\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\tonClick={ openFileDialog }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Upload' ) }\n\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t\t{ uploadMediaLibraryButton }\n\t\t\t\t\t\t\t\t\t{ renderUrlSelectionUI() }\n\t\t\t\t\t\t\t\t\t{ renderFeaturedImageToggle() }\n\t\t\t\t\t\t\t\t\t{ renderCancelLink() }\n\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\treturn renderPlaceholder( content );\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}\n\n\t\tif ( mediaUpload ) {\n\t\t\tconst content = (\n\t\t\t\t<>\n\t\t\t\t\t{ renderDropZone() }\n\t\t\t\t\t<FormFileUpload\n\t\t\t\t\t\trender={ ( { openFileDialog } ) => (\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t// TODO: Switch to `true` (40px size) if possible\n\t\t\t\t\t\t\t\t__next40pxDefaultSize={ false }\n\t\t\t\t\t\t\t\tonClick={ openFileDialog }\n\t\t\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t\t\t\t'block-editor-media-placeholder__button',\n\t\t\t\t\t\t\t\t\t'block-editor-media-placeholder__upload-button'\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\t{ __( 'Upload' ) }\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\tonChange={ onUpload }\n\t\t\t\t\t\taccept={ accept }\n\t\t\t\t\t\tmultiple={ !! multiple }\n\t\t\t\t\t/>\n\t\t\t\t\t{ uploadMediaLibraryButton }\n\t\t\t\t\t{ renderUrlSelectionUI() }\n\t\t\t\t\t{ renderFeaturedImageToggle() }\n\t\t\t\t\t{ renderCancelLink() }\n\t\t\t\t</>\n\t\t\t);\n\t\t\treturn renderPlaceholder( content );\n\t\t}\n\n\t\treturn renderPlaceholder( uploadMediaLibraryButton );\n\t};\n\n\tif ( disableMediaButtons ) {\n\t\treturn <MediaUploadCheck>{ renderDropZone() }</MediaUploadCheck>;\n\t}\n\n\treturn (\n\t\t<MediaUploadCheck\n\t\t\tfallback={ renderPlaceholder( renderUrlSelectionUI() ) }\n\t\t>\n\t\t\t{ renderMediaUploadChecked() }\n\t\t</MediaUploadCheck>\n\t);\n}\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/media-placeholder/README.md\n */\nexport default withFilters( 'editor.MediaPlaceholder' )( MediaPlaceholder );\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_clsx","_interopRequireDefault","require","_components","_i18n","_element","_data","_icons","_blocks2","_deprecated","_mediaUpload","_check","_urlPopover","_store","_jsxRuntime","noop","InsertFromURLPopover","src","onChange","onSubmit","onClose","popoverAnchor","jsx","default","anchor","children","jsxs","className","type","__","placeholder","value","Button","__next40pxDefaultSize","icon","keyboardReturn","label","URLSelectionUI","onChangeSrc","onSelectURL","setPopoverAnchor","useState","isURLInputVisible","setIsURLInputVisible","openURLInput","closeURLInput","focus","onSubmitSrc","event","preventDefault","onClick","isPressed","variant","ref","MediaPlaceholder","allowedTypes","labels","mediaPreview","notices","isAppender","accept","addToGallery","multiple","handleUpload","disableDropZone","disableMediaButtons","onError","onSelect","onCancel","onToggleFeaturedImage","onDoubleClick","onFilesPreUpload","onHTMLDrop","deprecatedOnHTMLDrop","mediaLibraryButton","style","deprecated","since","version","mediaUpload","useSelect","select","getSettings","blockEditorStore","setSrc","useEffect","_value$src","onlyAllowsImages","length","every","allowedType","startsWith","target","onFilesUpload","files","setMedia","lastMediaPassed","newMedia","filteredMedia","filter","item","id","some","Number","urlSlug","url","includes","concat","map","media","cutOffIndex","lastIndexOf","slice","filesList","onFileChange","handleBlocksDrop","blocks","Array","isArray","recursivelyFindMediaFromBlocks","_blocks","flatMap","block","name","attributes","innerBlocks","mediaBlocks","uploadedMediaList","Promise","all","resolve","reject","window","fetch","then","response","blob","additionalData","title","alt_text","alt","caption","catch","err","HTML","pasteHandler","onUpload","defaultRenderPlaceholder","content","instructions","undefined","typesAllowed","firstAllowedType","isOneType","isAudio","isImage","isVideo","placeholderClassName","clsx","Placeholder","preview","renderPlaceholder","renderDropZone","DropZone","onFilesDrop","renderCancelLink","renderUrlSelectionUI","renderFeaturedImageToggle","renderMediaUploadChecked","defaultButton","open","libraryButton","uploadMediaLibraryButton","gallery","mode","render","Fragment","FormFileUpload","openFileDialog","fallback","_default","exports","withFilters"],"sources":["@wordpress/block-editor/src/components/media-placeholder/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tButton,\n\tFormFileUpload,\n\tPlaceholder,\n\tDropZone,\n\twithFilters,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useState, useEffect } from '@wordpress/element';\nimport { useSelect } from '@wordpress/data';\nimport { keyboardReturn } from '@wordpress/icons';\nimport { pasteHandler } from '@wordpress/blocks';\nimport deprecated from '@wordpress/deprecated';\n\n/**\n * Internal dependencies\n */\nimport MediaUpload from '../media-upload';\nimport MediaUploadCheck from '../media-upload/check';\nimport URLPopover from '../url-popover';\nimport { store as blockEditorStore } from '../../store';\n\nconst noop = () => {};\n\nconst InsertFromURLPopover = ( {\n\tsrc,\n\tonChange,\n\tonSubmit,\n\tonClose,\n\tpopoverAnchor,\n} ) => (\n\t<URLPopover anchor={ popoverAnchor } onClose={ onClose }>\n\t\t<form\n\t\t\tclassName=\"block-editor-media-placeholder__url-input-form\"\n\t\t\tonSubmit={ onSubmit }\n\t\t>\n\t\t\t<input\n\t\t\t\tclassName=\"block-editor-media-placeholder__url-input-field\"\n\t\t\t\ttype=\"text\"\n\t\t\t\taria-label={ __( 'URL' ) }\n\t\t\t\tplaceholder={ __( 'Paste or type URL' ) }\n\t\t\t\tonChange={ onChange }\n\t\t\t\tvalue={ src }\n\t\t\t/>\n\t\t\t<Button\n\t\t\t\t// TODO: Switch to `true` (40px size) if possible\n\t\t\t\t__next40pxDefaultSize={ false }\n\t\t\t\tclassName=\"block-editor-media-placeholder__url-input-submit-button\"\n\t\t\t\ticon={ keyboardReturn }\n\t\t\t\tlabel={ __( 'Apply' ) }\n\t\t\t\ttype=\"submit\"\n\t\t\t/>\n\t\t</form>\n\t</URLPopover>\n);\n\nconst URLSelectionUI = ( { src, onChangeSrc, onSelectURL } ) => {\n\t// Use internal state instead of a ref to make sure that the component\n\t// re-renders when the popover's anchor updates.\n\tconst [ popoverAnchor, setPopoverAnchor ] = useState( null );\n\tconst [ isURLInputVisible, setIsURLInputVisible ] = useState( false );\n\n\tconst openURLInput = () => {\n\t\tsetIsURLInputVisible( true );\n\t};\n\tconst closeURLInput = () => {\n\t\tsetIsURLInputVisible( false );\n\t\tpopoverAnchor?.focus();\n\t};\n\n\tconst onSubmitSrc = ( event ) => {\n\t\tevent.preventDefault();\n\t\tif ( src && onSelectURL ) {\n\t\t\tonSelectURL( src );\n\t\t\tcloseURLInput();\n\t\t}\n\t};\n\n\treturn (\n\t\t<div className=\"block-editor-media-placeholder__url-input-container\">\n\t\t\t<Button\n\t\t\t\t// TODO: Switch to `true` (40px size) if possible\n\t\t\t\t__next40pxDefaultSize={ false }\n\t\t\t\tclassName=\"block-editor-media-placeholder__button\"\n\t\t\t\tonClick={ openURLInput }\n\t\t\t\tisPressed={ isURLInputVisible }\n\t\t\t\tvariant=\"secondary\"\n\t\t\t\taria-haspopup=\"dialog\"\n\t\t\t\tref={ setPopoverAnchor }\n\t\t\t>\n\t\t\t\t{ __( 'Insert from URL' ) }\n\t\t\t</Button>\n\t\t\t{ isURLInputVisible && (\n\t\t\t\t<InsertFromURLPopover\n\t\t\t\t\tsrc={ src }\n\t\t\t\t\tonChange={ onChangeSrc }\n\t\t\t\t\tonSubmit={ onSubmitSrc }\n\t\t\t\t\tonClose={ closeURLInput }\n\t\t\t\t\tpopoverAnchor={ popoverAnchor }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</div>\n\t);\n};\n\nexport function MediaPlaceholder( {\n\tvalue = {},\n\tallowedTypes,\n\tclassName,\n\ticon,\n\tlabels = {},\n\tmediaPreview,\n\tnotices,\n\tisAppender,\n\taccept,\n\taddToGallery,\n\tmultiple = false,\n\thandleUpload = true,\n\tdisableDropZone,\n\tdisableMediaButtons,\n\tonError,\n\tonSelect,\n\tonCancel,\n\tonSelectURL,\n\tonToggleFeaturedImage,\n\tonDoubleClick,\n\tonFilesPreUpload = noop,\n\tonHTMLDrop: deprecatedOnHTMLDrop,\n\tchildren,\n\tmediaLibraryButton,\n\tplaceholder,\n\tstyle,\n} ) {\n\tif ( deprecatedOnHTMLDrop ) {\n\t\tdeprecated( 'wp.blockEditor.MediaPlaceholder onHTMLDrop prop', {\n\t\t\tsince: '6.2',\n\t\t\tversion: '6.4',\n\t\t} );\n\t}\n\n\tconst mediaUpload = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\treturn getSettings().mediaUpload;\n\t}, [] );\n\tconst [ src, setSrc ] = useState( '' );\n\n\tuseEffect( () => {\n\t\tsetSrc( value?.src ?? '' );\n\t}, [ value?.src ] );\n\n\tconst onlyAllowsImages = () => {\n\t\tif ( ! allowedTypes || allowedTypes.length === 0 ) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn allowedTypes.every(\n\t\t\t( allowedType ) =>\n\t\t\t\tallowedType === 'image' || allowedType.startsWith( 'image/' )\n\t\t);\n\t};\n\n\tconst onChangeSrc = ( event ) => {\n\t\tsetSrc( event.target.value );\n\t};\n\n\tconst onFilesUpload = ( files ) => {\n\t\tif (\n\t\t\t! handleUpload ||\n\t\t\t( typeof handleUpload === 'function' && ! handleUpload( files ) )\n\t\t) {\n\t\t\treturn onSelect( files );\n\t\t}\n\t\tonFilesPreUpload( files );\n\t\tlet setMedia;\n\t\tif ( multiple ) {\n\t\t\tif ( addToGallery ) {\n\t\t\t\t// Since the setMedia function runs multiple times per upload group\n\t\t\t\t// and is passed newMedia containing every item in its group each time, we must\n\t\t\t\t// filter out whatever this upload group had previously returned to the\n\t\t\t\t// gallery before adding and returning the image array with replacement newMedia\n\t\t\t\t// values.\n\n\t\t\t\t// Define an array to store urls from newMedia between subsequent function calls.\n\t\t\t\tlet lastMediaPassed = [];\n\t\t\t\tsetMedia = ( newMedia ) => {\n\t\t\t\t\t// Remove any images this upload group is responsible for (lastMediaPassed).\n\t\t\t\t\t// Their replacements are contained in newMedia.\n\t\t\t\t\tconst filteredMedia = ( value ?? [] ).filter( ( item ) => {\n\t\t\t\t\t\t// If Item has id, only remove it if lastMediaPassed has an item with that id.\n\t\t\t\t\t\tif ( item.id ) {\n\t\t\t\t\t\t\treturn ! lastMediaPassed.some(\n\t\t\t\t\t\t\t\t// Be sure to convert to number for comparison.\n\t\t\t\t\t\t\t\t( { id } ) => Number( id ) === Number( item.id )\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Compare transient images via .includes since gallery may append extra info onto the url.\n\t\t\t\t\t\treturn ! lastMediaPassed.some( ( { urlSlug } ) =>\n\t\t\t\t\t\t\titem.url.includes( urlSlug )\n\t\t\t\t\t\t);\n\t\t\t\t\t} );\n\t\t\t\t\t// Return the filtered media array along with newMedia.\n\t\t\t\t\tonSelect( filteredMedia.concat( newMedia ) );\n\t\t\t\t\t// Reset lastMediaPassed and set it with ids and urls from newMedia.\n\t\t\t\t\tlastMediaPassed = newMedia.map( ( media ) => {\n\t\t\t\t\t\t// Add everything up to '.fileType' to compare via .includes.\n\t\t\t\t\t\tconst cutOffIndex = media.url.lastIndexOf( '.' );\n\t\t\t\t\t\tconst urlSlug = media.url.slice( 0, cutOffIndex );\n\t\t\t\t\t\treturn { id: media.id, urlSlug };\n\t\t\t\t\t} );\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\tsetMedia = onSelect;\n\t\t\t}\n\t\t} else {\n\t\t\tsetMedia = ( [ media ] ) => onSelect( media );\n\t\t}\n\t\tmediaUpload( {\n\t\t\tallowedTypes,\n\t\t\tfilesList: files,\n\t\t\tonFileChange: setMedia,\n\t\t\tonError,\n\t\t} );\n\t};\n\n\tasync function handleBlocksDrop( blocks ) {\n\t\tif ( ! blocks || ! Array.isArray( blocks ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tfunction recursivelyFindMediaFromBlocks( _blocks ) {\n\t\t\treturn _blocks.flatMap( ( block ) =>\n\t\t\t\t( block.name === 'core/image' ||\n\t\t\t\t\tblock.name === 'core/audio' ||\n\t\t\t\t\tblock.name === 'core/video' ) &&\n\t\t\t\tblock.attributes.url\n\t\t\t\t\t? [ block ]\n\t\t\t\t\t: recursivelyFindMediaFromBlocks( block.innerBlocks )\n\t\t\t);\n\t\t}\n\n\t\tconst mediaBlocks = recursivelyFindMediaFromBlocks( blocks );\n\n\t\tif ( ! mediaBlocks.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst uploadedMediaList = await Promise.all(\n\t\t\tmediaBlocks.map( ( block ) =>\n\t\t\t\tblock.attributes.id\n\t\t\t\t\t? block.attributes\n\t\t\t\t\t: new Promise( ( resolve, reject ) => {\n\t\t\t\t\t\t\twindow\n\t\t\t\t\t\t\t\t.fetch( block.attributes.url )\n\t\t\t\t\t\t\t\t.then( ( response ) => response.blob() )\n\t\t\t\t\t\t\t\t.then( ( blob ) =>\n\t\t\t\t\t\t\t\t\tmediaUpload( {\n\t\t\t\t\t\t\t\t\t\tfilesList: [ blob ],\n\t\t\t\t\t\t\t\t\t\tadditionalData: {\n\t\t\t\t\t\t\t\t\t\t\ttitle: block.attributes.title,\n\t\t\t\t\t\t\t\t\t\t\talt_text: block.attributes.alt,\n\t\t\t\t\t\t\t\t\t\t\tcaption: block.attributes.caption,\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tonFileChange: ( [ media ] ) => {\n\t\t\t\t\t\t\t\t\t\t\tif ( media.id ) {\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( media );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tallowedTypes,\n\t\t\t\t\t\t\t\t\t\tonError: reject,\n\t\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t.catch( () => resolve( block.attributes.url ) );\n\t\t\t\t\t } )\n\t\t\t)\n\t\t).catch( ( err ) => onError( err ) );\n\n\t\tif ( multiple ) {\n\t\t\tonSelect( uploadedMediaList );\n\t\t} else {\n\t\t\tonSelect( uploadedMediaList[ 0 ] );\n\t\t}\n\t}\n\n\tasync function onHTMLDrop( HTML ) {\n\t\tconst blocks = pasteHandler( { HTML } );\n\t\treturn await handleBlocksDrop( blocks );\n\t}\n\n\tconst onUpload = ( event ) => {\n\t\tonFilesUpload( event.target.files );\n\t};\n\n\tconst defaultRenderPlaceholder = ( content ) => {\n\t\tlet { instructions, title } = labels;\n\n\t\tif ( ! mediaUpload && ! onSelectURL ) {\n\t\t\tinstructions = __(\n\t\t\t\t'To edit this block, you need permission to upload media.'\n\t\t\t);\n\t\t}\n\n\t\tif ( instructions === undefined || title === undefined ) {\n\t\t\tconst typesAllowed = allowedTypes ?? [];\n\n\t\t\tconst [ firstAllowedType ] = typesAllowed;\n\t\t\tconst isOneType = 1 === typesAllowed.length;\n\t\t\tconst isAudio = isOneType && 'audio' === firstAllowedType;\n\t\t\tconst isImage = isOneType && 'image' === firstAllowedType;\n\t\t\tconst isVideo = isOneType && 'video' === firstAllowedType;\n\n\t\t\tif ( instructions === undefined && mediaUpload ) {\n\t\t\t\tinstructions = __(\n\t\t\t\t\t'Upload a media file or pick one from your media library.'\n\t\t\t\t);\n\n\t\t\t\tif ( isAudio ) {\n\t\t\t\t\tinstructions = __(\n\t\t\t\t\t\t'Upload or drag an audio file here, or pick one from your library.'\n\t\t\t\t\t);\n\t\t\t\t} else if ( isImage ) {\n\t\t\t\t\tinstructions = __(\n\t\t\t\t\t\t'Upload or drag an image file here, or pick one from your library.'\n\t\t\t\t\t);\n\t\t\t\t} else if ( isVideo ) {\n\t\t\t\t\tinstructions = __(\n\t\t\t\t\t\t'Upload or drag a video file here, or pick one from your library.'\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( title === undefined ) {\n\t\t\t\ttitle = __( 'Media' );\n\n\t\t\t\tif ( isAudio ) {\n\t\t\t\t\ttitle = __( 'Audio' );\n\t\t\t\t} else if ( isImage ) {\n\t\t\t\t\ttitle = __( 'Image' );\n\t\t\t\t} else if ( isVideo ) {\n\t\t\t\t\ttitle = __( 'Video' );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst placeholderClassName = clsx(\n\t\t\t'block-editor-media-placeholder',\n\t\t\tclassName,\n\t\t\t{\n\t\t\t\t'is-appender': isAppender,\n\t\t\t}\n\t\t);\n\n\t\treturn (\n\t\t\t<Placeholder\n\t\t\t\ticon={ icon }\n\t\t\t\tlabel={ title }\n\t\t\t\tinstructions={ instructions }\n\t\t\t\tclassName={ placeholderClassName }\n\t\t\t\tnotices={ notices }\n\t\t\t\tonDoubleClick={ onDoubleClick }\n\t\t\t\tpreview={ mediaPreview }\n\t\t\t\tstyle={ style }\n\t\t\t>\n\t\t\t\t{ content }\n\t\t\t\t{ children }\n\t\t\t</Placeholder>\n\t\t);\n\t};\n\tconst renderPlaceholder = placeholder ?? defaultRenderPlaceholder;\n\n\tconst renderDropZone = () => {\n\t\tif ( disableDropZone ) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn (\n\t\t\t<DropZone onFilesDrop={ onFilesUpload } onHTMLDrop={ onHTMLDrop } />\n\t\t);\n\t};\n\n\tconst renderCancelLink = () => {\n\t\treturn (\n\t\t\tonCancel && (\n\t\t\t\t<Button\n\t\t\t\t\t// TODO: Switch to `true` (40px size) if possible\n\t\t\t\t\t__next40pxDefaultSize={ false }\n\t\t\t\t\tclassName=\"block-editor-media-placeholder__cancel-button\"\n\t\t\t\t\ttitle={ __( 'Cancel' ) }\n\t\t\t\t\tvariant=\"link\"\n\t\t\t\t\tonClick={ onCancel }\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t</Button>\n\t\t\t)\n\t\t);\n\t};\n\n\tconst renderUrlSelectionUI = () => {\n\t\treturn (\n\t\t\tonSelectURL && (\n\t\t\t\t<URLSelectionUI\n\t\t\t\t\tsrc={ src }\n\t\t\t\t\tonChangeSrc={ onChangeSrc }\n\t\t\t\t\tonSelectURL={ onSelectURL }\n\t\t\t\t/>\n\t\t\t)\n\t\t);\n\t};\n\n\tconst renderFeaturedImageToggle = () => {\n\t\treturn (\n\t\t\tonToggleFeaturedImage && (\n\t\t\t\t<div className=\"block-editor-media-placeholder__url-input-container\">\n\t\t\t\t\t<Button\n\t\t\t\t\t\t// TODO: Switch to `true` (40px size) if possible\n\t\t\t\t\t\t__next40pxDefaultSize={ false }\n\t\t\t\t\t\tclassName=\"block-editor-media-placeholder__button\"\n\t\t\t\t\t\tonClick={ onToggleFeaturedImage }\n\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Use featured image' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t</div>\n\t\t\t)\n\t\t);\n\t};\n\n\tconst renderMediaUploadChecked = () => {\n\t\tconst defaultButton = ( { open } ) => {\n\t\t\treturn (\n\t\t\t\t<Button\n\t\t\t\t\t// TODO: Switch to `true` (40px size) if possible\n\t\t\t\t\t__next40pxDefaultSize={ false }\n\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\topen();\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Media Library' ) }\n\t\t\t\t</Button>\n\t\t\t);\n\t\t};\n\t\tconst libraryButton = mediaLibraryButton ?? defaultButton;\n\t\tconst uploadMediaLibraryButton = (\n\t\t\t<MediaUpload\n\t\t\t\taddToGallery={ addToGallery }\n\t\t\t\tgallery={ multiple && onlyAllowsImages() }\n\t\t\t\tmultiple={ multiple }\n\t\t\t\tonSelect={ onSelect }\n\t\t\t\tallowedTypes={ allowedTypes }\n\t\t\t\tmode=\"browse\"\n\t\t\t\tvalue={\n\t\t\t\t\tArray.isArray( value )\n\t\t\t\t\t\t? value.map( ( { id } ) => id )\n\t\t\t\t\t\t: value.id\n\t\t\t\t}\n\t\t\t\trender={ libraryButton }\n\t\t\t/>\n\t\t);\n\n\t\tif ( mediaUpload && isAppender ) {\n\t\t\treturn (\n\t\t\t\t<>\n\t\t\t\t\t{ renderDropZone() }\n\t\t\t\t\t<FormFileUpload\n\t\t\t\t\t\tonChange={ onUpload }\n\t\t\t\t\t\taccept={ accept }\n\t\t\t\t\t\tmultiple={ !! multiple }\n\t\t\t\t\t\trender={ ( { openFileDialog } ) => {\n\t\t\t\t\t\t\tconst content = (\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t// TODO: Switch to `true` (40px size) if possible\n\t\t\t\t\t\t\t\t\t\t__next40pxDefaultSize={ false }\n\t\t\t\t\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t\t\t\t\t\t'block-editor-media-placeholder__button',\n\t\t\t\t\t\t\t\t\t\t\t'block-editor-media-placeholder__upload-button'\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\tonClick={ openFileDialog }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Upload' ) }\n\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t\t{ uploadMediaLibraryButton }\n\t\t\t\t\t\t\t\t\t{ renderUrlSelectionUI() }\n\t\t\t\t\t\t\t\t\t{ renderFeaturedImageToggle() }\n\t\t\t\t\t\t\t\t\t{ renderCancelLink() }\n\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\treturn renderPlaceholder( content );\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}\n\n\t\tif ( mediaUpload ) {\n\t\t\tconst content = (\n\t\t\t\t<>\n\t\t\t\t\t{ renderDropZone() }\n\t\t\t\t\t<FormFileUpload\n\t\t\t\t\t\trender={ ( { openFileDialog } ) => (\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t// TODO: Switch to `true` (40px size) if possible\n\t\t\t\t\t\t\t\t__next40pxDefaultSize={ false }\n\t\t\t\t\t\t\t\tonClick={ openFileDialog }\n\t\t\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t\t\t\t'block-editor-media-placeholder__button',\n\t\t\t\t\t\t\t\t\t'block-editor-media-placeholder__upload-button'\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\t{ __( 'Upload' ) }\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\tonChange={ onUpload }\n\t\t\t\t\t\taccept={ accept }\n\t\t\t\t\t\tmultiple={ !! multiple }\n\t\t\t\t\t/>\n\t\t\t\t\t{ uploadMediaLibraryButton }\n\t\t\t\t\t{ renderUrlSelectionUI() }\n\t\t\t\t\t{ renderFeaturedImageToggle() }\n\t\t\t\t\t{ renderCancelLink() }\n\t\t\t\t</>\n\t\t\t);\n\t\t\treturn renderPlaceholder( content );\n\t\t}\n\n\t\treturn renderPlaceholder( uploadMediaLibraryButton );\n\t};\n\n\tif ( disableMediaButtons ) {\n\t\treturn <MediaUploadCheck>{ renderDropZone() }</MediaUploadCheck>;\n\t}\n\n\treturn (\n\t\t<MediaUploadCheck\n\t\t\tfallback={ renderPlaceholder( renderUrlSelectionUI() ) }\n\t\t>\n\t\t\t{ renderMediaUploadChecked() }\n\t\t</MediaUploadCheck>\n\t);\n}\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/media-placeholder/README.md\n */\nexport default withFilters( 'editor.MediaPlaceholder' )( MediaPlaceholder );\n"],"mappings":"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","ignoreList":[]}
@@ -11,7 +11,7 @@ var _i18n = require("@wordpress/i18n");
11
11
  var _axial = _interopRequireDefault(require("./input-controls/axial"));
12
12
  var _separated = _interopRequireDefault(require("./input-controls/separated"));
13
13
  var _single = _interopRequireDefault(require("./input-controls/single"));
14
- var _sidesDropdown = _interopRequireDefault(require("./sides-dropdown"));
14
+ var _linkedButton = _interopRequireDefault(require("./linked-button"));
15
15
  var _useSpacingSizes = _interopRequireDefault(require("./hooks/use-spacing-sizes"));
16
16
  var _utils = require("./utils");
17
17
  var _jsxRuntime = require("react/jsx-runtime");
@@ -40,6 +40,9 @@ function SpacingSizesControl({
40
40
  const hasOneSide = sides?.length === 1;
41
41
  const hasOnlyAxialSides = sides?.includes('horizontal') && sides?.includes('vertical') && sides?.length === 2;
42
42
  const [view, setView] = (0, _element.useState)((0, _utils.getInitialView)(inputValues, sides));
43
+ const toggleLinked = () => {
44
+ setView(view === _utils.VIEWS.axial ? _utils.VIEWS.custom : _utils.VIEWS.axial);
45
+ };
43
46
  const handleOnChange = nextValue => {
44
47
  const newValues = {
45
48
  ...values,
@@ -80,9 +83,6 @@ function SpacingSizesControl({
80
83
  const label = (0, _i18n.sprintf)(
81
84
  // translators: 2. Type of spacing being modified (Padding, margin, etc). 1: The side of the block being modified (top, bottom, left etc.).
82
85
  (0, _i18n.__)('%1$s %2$s'), labelProp, sideLabel).trim();
83
- const dropdownLabelText = (0, _i18n.sprintf)(
84
- // translators: %s: The current spacing property e.g. "Padding", "Margin".
85
- (0, _i18n._x)('%s options', 'Button label to reveal side configuration options'), labelProp);
86
86
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)("fieldset", {
87
87
  className: "spacing-sizes-control",
88
88
  children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_components.__experimentalHStack, {
@@ -91,11 +91,10 @@ function SpacingSizesControl({
91
91
  as: "legend",
92
92
  className: "spacing-sizes-control__label",
93
93
  children: label
94
- }), !hasOneSide && !hasOnlyAxialSides && /*#__PURE__*/(0, _jsxRuntime.jsx)(_sidesDropdown.default, {
95
- label: dropdownLabelText,
96
- onChange: setView,
97
- sides: sides,
98
- value: view
94
+ }), !hasOneSide && !hasOnlyAxialSides && /*#__PURE__*/(0, _jsxRuntime.jsx)(_linkedButton.default, {
95
+ label: labelProp,
96
+ onClick: toggleLinked,
97
+ isLinked: view === _utils.VIEWS.axial
99
98
  })]
100
99
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.__experimentalVStack, {
101
100
  spacing: 0.5,
@@ -1 +1 @@
1
- {"version":3,"names":["_components","require","_element","_i18n","_axial","_interopRequireDefault","_separated","_single","_sidesDropdown","_useSpacingSizes","_utils","_jsxRuntime","SpacingSizesControl","inputProps","label","labelProp","minimumCustomValue","onChange","onMouseOut","onMouseOver","showSideInLabel","sides","ALL_SIDES","useSelect","values","spacingSizes","useSpacingSizes","inputValues","DEFAULT_VALUES","hasOneSide","length","hasOnlyAxialSides","includes","view","setView","useState","getInitialView","handleOnChange","nextValue","newValues","inputControlProps","type","renderControls","VIEWS","axial","jsx","default","custom","side","sideLabel","LABELS","sprintf","__","trim","dropdownLabelText","_x","jsxs","className","children","__experimentalHStack","BaseControl","VisualLabel","as","value","__experimentalVStack","spacing"],"sources":["@wordpress/block-editor/src/components/spacing-sizes-control/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tBaseControl,\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n} from '@wordpress/components';\nimport { useState } from '@wordpress/element';\nimport { __, _x, sprintf } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport AxialInputControls from './input-controls/axial';\nimport SeparatedInputControls from './input-controls/separated';\nimport SingleInputControl from './input-controls/single';\nimport SidesDropdown from './sides-dropdown';\nimport useSpacingSizes from './hooks/use-spacing-sizes';\nimport {\n\tALL_SIDES,\n\tDEFAULT_VALUES,\n\tLABELS,\n\tVIEWS,\n\tgetInitialView,\n} from './utils';\n\nexport default function SpacingSizesControl( {\n\tinputProps,\n\tlabel: labelProp,\n\tminimumCustomValue = 0,\n\tonChange,\n\tonMouseOut,\n\tonMouseOver,\n\tshowSideInLabel = true,\n\tsides = ALL_SIDES,\n\tuseSelect,\n\tvalues,\n} ) {\n\tconst spacingSizes = useSpacingSizes();\n\tconst inputValues = values || DEFAULT_VALUES;\n\tconst hasOneSide = sides?.length === 1;\n\tconst hasOnlyAxialSides =\n\t\tsides?.includes( 'horizontal' ) &&\n\t\tsides?.includes( 'vertical' ) &&\n\t\tsides?.length === 2;\n\n\tconst [ view, setView ] = useState( getInitialView( inputValues, sides ) );\n\n\tconst handleOnChange = ( nextValue ) => {\n\t\tconst newValues = { ...values, ...nextValue };\n\t\tonChange( newValues );\n\t};\n\n\tconst inputControlProps = {\n\t\t...inputProps,\n\t\tminimumCustomValue,\n\t\tonChange: handleOnChange,\n\t\tonMouseOut,\n\t\tonMouseOver,\n\t\tsides,\n\t\tspacingSizes,\n\t\ttype: labelProp,\n\t\tuseSelect,\n\t\tvalues: inputValues,\n\t};\n\n\tconst renderControls = () => {\n\t\tif ( view === VIEWS.axial ) {\n\t\t\treturn <AxialInputControls { ...inputControlProps } />;\n\t\t}\n\t\tif ( view === VIEWS.custom ) {\n\t\t\treturn <SeparatedInputControls { ...inputControlProps } />;\n\t\t}\n\t\treturn (\n\t\t\t<SingleInputControl\n\t\t\t\tside={ view }\n\t\t\t\t{ ...inputControlProps }\n\t\t\t\tshowSideInLabel={ showSideInLabel }\n\t\t\t/>\n\t\t);\n\t};\n\n\tconst sideLabel =\n\t\tALL_SIDES.includes( view ) && showSideInLabel ? LABELS[ view ] : '';\n\n\tconst label = sprintf(\n\t\t// translators: 2. Type of spacing being modified (Padding, margin, etc). 1: The side of the block being modified (top, bottom, left etc.).\n\t\t__( '%1$s %2$s' ),\n\t\tlabelProp,\n\t\tsideLabel\n\t).trim();\n\n\tconst dropdownLabelText = sprintf(\n\t\t// translators: %s: The current spacing property e.g. \"Padding\", \"Margin\".\n\t\t_x( '%s options', 'Button label to reveal side configuration options' ),\n\t\tlabelProp\n\t);\n\n\treturn (\n\t\t<fieldset className=\"spacing-sizes-control\">\n\t\t\t<HStack className=\"spacing-sizes-control__header\">\n\t\t\t\t<BaseControl.VisualLabel\n\t\t\t\t\tas=\"legend\"\n\t\t\t\t\tclassName=\"spacing-sizes-control__label\"\n\t\t\t\t>\n\t\t\t\t\t{ label }\n\t\t\t\t</BaseControl.VisualLabel>\n\t\t\t\t{ ! hasOneSide && ! hasOnlyAxialSides && (\n\t\t\t\t\t<SidesDropdown\n\t\t\t\t\t\tlabel={ dropdownLabelText }\n\t\t\t\t\t\tonChange={ setView }\n\t\t\t\t\t\tsides={ sides }\n\t\t\t\t\t\tvalue={ view }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</HStack>\n\t\t\t<VStack spacing={ 0.5 }>{ renderControls() }</VStack>\n\t\t</fieldset>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_components","require","_element","_i18n","_axial","_interopRequireDefault","_separated","_single","_linkedButton","_useSpacingSizes","_utils","_jsxRuntime","SpacingSizesControl","inputProps","label","labelProp","minimumCustomValue","onChange","onMouseOut","onMouseOver","showSideInLabel","sides","ALL_SIDES","useSelect","values","spacingSizes","useSpacingSizes","inputValues","DEFAULT_VALUES","hasOneSide","length","hasOnlyAxialSides","includes","view","setView","useState","getInitialView","toggleLinked","VIEWS","axial","custom","handleOnChange","nextValue","newValues","inputControlProps","type","renderControls","jsx","default","side","sideLabel","LABELS","sprintf","__","trim","jsxs","className","children","__experimentalHStack","BaseControl","VisualLabel","as","onClick","isLinked","__experimentalVStack","spacing"],"sources":["@wordpress/block-editor/src/components/spacing-sizes-control/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tBaseControl,\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n} from '@wordpress/components';\nimport { useState } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport AxialInputControls from './input-controls/axial';\nimport SeparatedInputControls from './input-controls/separated';\nimport SingleInputControl from './input-controls/single';\nimport LinkedButton from './linked-button';\nimport useSpacingSizes from './hooks/use-spacing-sizes';\nimport {\n\tALL_SIDES,\n\tDEFAULT_VALUES,\n\tLABELS,\n\tVIEWS,\n\tgetInitialView,\n} from './utils';\n\nexport default function SpacingSizesControl( {\n\tinputProps,\n\tlabel: labelProp,\n\tminimumCustomValue = 0,\n\tonChange,\n\tonMouseOut,\n\tonMouseOver,\n\tshowSideInLabel = true,\n\tsides = ALL_SIDES,\n\tuseSelect,\n\tvalues,\n} ) {\n\tconst spacingSizes = useSpacingSizes();\n\tconst inputValues = values || DEFAULT_VALUES;\n\tconst hasOneSide = sides?.length === 1;\n\tconst hasOnlyAxialSides =\n\t\tsides?.includes( 'horizontal' ) &&\n\t\tsides?.includes( 'vertical' ) &&\n\t\tsides?.length === 2;\n\n\tconst [ view, setView ] = useState( getInitialView( inputValues, sides ) );\n\n\tconst toggleLinked = () => {\n\t\tsetView( view === VIEWS.axial ? VIEWS.custom : VIEWS.axial );\n\t};\n\n\tconst handleOnChange = ( nextValue ) => {\n\t\tconst newValues = { ...values, ...nextValue };\n\t\tonChange( newValues );\n\t};\n\n\tconst inputControlProps = {\n\t\t...inputProps,\n\t\tminimumCustomValue,\n\t\tonChange: handleOnChange,\n\t\tonMouseOut,\n\t\tonMouseOver,\n\t\tsides,\n\t\tspacingSizes,\n\t\ttype: labelProp,\n\t\tuseSelect,\n\t\tvalues: inputValues,\n\t};\n\n\tconst renderControls = () => {\n\t\tif ( view === VIEWS.axial ) {\n\t\t\treturn <AxialInputControls { ...inputControlProps } />;\n\t\t}\n\t\tif ( view === VIEWS.custom ) {\n\t\t\treturn <SeparatedInputControls { ...inputControlProps } />;\n\t\t}\n\t\treturn (\n\t\t\t<SingleInputControl\n\t\t\t\tside={ view }\n\t\t\t\t{ ...inputControlProps }\n\t\t\t\tshowSideInLabel={ showSideInLabel }\n\t\t\t/>\n\t\t);\n\t};\n\n\tconst sideLabel =\n\t\tALL_SIDES.includes( view ) && showSideInLabel ? LABELS[ view ] : '';\n\n\tconst label = sprintf(\n\t\t// translators: 2. Type of spacing being modified (Padding, margin, etc). 1: The side of the block being modified (top, bottom, left etc.).\n\t\t__( '%1$s %2$s' ),\n\t\tlabelProp,\n\t\tsideLabel\n\t).trim();\n\n\treturn (\n\t\t<fieldset className=\"spacing-sizes-control\">\n\t\t\t<HStack className=\"spacing-sizes-control__header\">\n\t\t\t\t<BaseControl.VisualLabel\n\t\t\t\t\tas=\"legend\"\n\t\t\t\t\tclassName=\"spacing-sizes-control__label\"\n\t\t\t\t>\n\t\t\t\t\t{ label }\n\t\t\t\t</BaseControl.VisualLabel>\n\t\t\t\t{ ! hasOneSide && ! hasOnlyAxialSides && (\n\t\t\t\t\t<LinkedButton\n\t\t\t\t\t\tlabel={ labelProp }\n\t\t\t\t\t\tonClick={ toggleLinked }\n\t\t\t\t\t\tisLinked={ view === VIEWS.axial }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</HStack>\n\t\t\t<VStack spacing={ 0.5 }>{ renderControls() }</VStack>\n\t\t</fieldset>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = LinkedButton;
7
+ var _components = require("@wordpress/components");
8
+ var _icons = require("@wordpress/icons");
9
+ var _i18n = require("@wordpress/i18n");
10
+ var _jsxRuntime = require("react/jsx-runtime");
11
+ /**
12
+ * WordPress dependencies
13
+ */
14
+
15
+ function LinkedButton({
16
+ isLinked,
17
+ ...props
18
+ }) {
19
+ const label = isLinked ? (0, _i18n.sprintf)(
20
+ // translators: 1. Type of spacing being modified (padding, margin, etc).
21
+ (0, _i18n.__)('Unlink %1$s'), props.label.toLowerCase()).trim() : (0, _i18n.sprintf)(
22
+ // translators: 1. Type of spacing being modified (padding, margin, etc).
23
+ (0, _i18n.__)('Link %1$s'), props.label.toLowerCase()).trim();
24
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Tooltip, {
25
+ text: label,
26
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Button, {
27
+ ...props,
28
+ size: "small",
29
+ icon: isLinked ? _icons.link : _icons.linkOff,
30
+ iconSize: 24,
31
+ "aria-label": label
32
+ })
33
+ });
34
+ }
35
+ //# sourceMappingURL=linked-button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_components","require","_icons","_i18n","_jsxRuntime","LinkedButton","isLinked","props","label","sprintf","__","toLowerCase","trim","jsx","Tooltip","text","children","Button","size","icon","link","linkOff","iconSize"],"sources":["@wordpress/block-editor/src/components/spacing-sizes-control/linked-button.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { Button, Tooltip } from '@wordpress/components';\nimport { link, linkOff } from '@wordpress/icons';\nimport { __, sprintf } from '@wordpress/i18n';\n\nexport default function LinkedButton( { isLinked, ...props } ) {\n\tconst label = isLinked\n\t\t? sprintf(\n\t\t\t\t// translators: 1. Type of spacing being modified (padding, margin, etc).\n\t\t\t\t__( 'Unlink %1$s' ),\n\t\t\t\tprops.label.toLowerCase()\n\t\t ).trim()\n\t\t: sprintf(\n\t\t\t\t// translators: 1. Type of spacing being modified (padding, margin, etc).\n\t\t\t\t__( 'Link %1$s' ),\n\t\t\t\tprops.label.toLowerCase()\n\t\t ).trim();\n\n\treturn (\n\t\t<Tooltip text={ label }>\n\t\t\t<Button\n\t\t\t\t{ ...props }\n\t\t\t\tsize=\"small\"\n\t\t\t\ticon={ isLinked ? link : linkOff }\n\t\t\t\ticonSize={ 24 }\n\t\t\t\taria-label={ label }\n\t\t\t/>\n\t\t</Tooltip>\n\t);\n}\n"],"mappings":";;;;;;AAGA,IAAAA,WAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAF,OAAA;AAA8C,IAAAG,WAAA,GAAAH,OAAA;AAL9C;AACA;AACA;;AAKe,SAASI,YAAYA,CAAE;EAAEC,QAAQ;EAAE,GAAGC;AAAM,CAAC,EAAG;EAC9D,MAAMC,KAAK,GAAGF,QAAQ,GACnB,IAAAG,aAAO;EACP;EACA,IAAAC,QAAE,EAAE,aAAc,CAAC,EACnBH,KAAK,CAACC,KAAK,CAACG,WAAW,CAAC,CACxB,CAAC,CAACC,IAAI,CAAC,CAAC,GACR,IAAAH,aAAO;EACP;EACA,IAAAC,QAAE,EAAE,WAAY,CAAC,EACjBH,KAAK,CAACC,KAAK,CAACG,WAAW,CAAC,CACxB,CAAC,CAACC,IAAI,CAAC,CAAC;EAEX,oBACC,IAAAR,WAAA,CAAAS,GAAA,EAACb,WAAA,CAAAc,OAAO;IAACC,IAAI,EAAGP,KAAO;IAAAQ,QAAA,eACtB,IAAAZ,WAAA,CAAAS,GAAA,EAACb,WAAA,CAAAiB,MAAM;MAAA,GACDV,KAAK;MACVW,IAAI,EAAC,OAAO;MACZC,IAAI,EAAGb,QAAQ,GAAGc,WAAI,GAAGC,cAAS;MAClCC,QAAQ,EAAG,EAAI;MACf,cAAad;IAAO,CACpB;EAAC,CACM,CAAC;AAEZ","ignoreList":[]}
@@ -344,25 +344,14 @@ function getInitialView(values = {}, sides) {
344
344
  // - Has no values and the supported sides are balanced
345
345
  const hasMatchingAxialValues = top === bottom && left === right && (!!top || !!left);
346
346
  const hasNoValuesAndBalancedSides = !sideValues.length && hasBalancedSidesSupport(sides);
347
- if (hasAxisSupport(sides) && (hasMatchingAxialValues || hasNoValuesAndBalancedSides)) {
348
- return VIEWS.axial;
349
- }
350
-
351
- // Single side.
352
- // - Ensure the side returned is the first side that has a value.
353
- if (sideValues.length === 1) {
354
- let side;
355
- Object.entries(values).some(([key, value]) => {
356
- side = key;
357
- return value !== undefined;
358
- });
359
- return side;
360
- }
361
347
 
362
348
  // Only single side supported and no value defined.
363
- if (sides?.length === 1 && !sideValues.length) {
349
+ if (sides?.length === 1) {
364
350
  return sides[0];
365
351
  }
352
+ if (hasAxisSupport(sides) && (hasMatchingAxialValues || hasNoValuesAndBalancedSides)) {
353
+ return VIEWS.axial;
354
+ }
366
355
 
367
356
  // Default to the Custom (separated sides) view.
368
357
  return VIEWS.custom;
@@ -1 +1 @@
1
- {"version":3,"names":["_i18n","require","_icons","RANGE_CONTROL_MAX_SIZE","exports","ALL_SIDES","DEFAULT_VALUES","top","undefined","right","bottom","left","ICONS","custom","sidesAll","axial","horizontal","sidesHorizontal","vertical","sidesVertical","sidesTop","sidesRight","sidesBottom","sidesLeft","LABELS","default","__","mixed","VIEWS","isValueSpacingPreset","value","includes","getCustomValueFromPreset","spacingSizes","slug","getSpacingPresetSlug","spacingSize","find","size","String","getPresetValueFromCustomValue","spacingMatch","getSpacingPresetCssVar","match","getSliderValueFromPreset","presetValue","parseFloat","sliderValue","findIndex","NaN","mode","arr","sort","a","b","filter","v","length","pop","getAllRawValue","values","Object","isValuesMixed","sides","Set","isValuesDefined","hasAxisSupport","axis","hasHorizontalSupport","hasVerticalSupport","getSupportedMenuItems","menuItems","label","icon","numberOfIndividualSides","forEach","side","hasBalancedSidesSupport","counts","getInitialView","sideValues","Boolean","hasMatchingAxialValues","hasNoValuesAndBalancedSides","entries","some","key"],"sources":["@wordpress/block-editor/src/components/spacing-sizes-control/utils.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\tsidesAll,\n\tsidesBottom,\n\tsidesHorizontal,\n\tsidesLeft,\n\tsidesRight,\n\tsidesTop,\n\tsidesVertical,\n} from '@wordpress/icons';\n\nexport const RANGE_CONTROL_MAX_SIZE = 8;\n\nexport const ALL_SIDES = [ 'top', 'right', 'bottom', 'left' ];\n\nexport const DEFAULT_VALUES = {\n\ttop: undefined,\n\tright: undefined,\n\tbottom: undefined,\n\tleft: undefined,\n};\n\nexport const ICONS = {\n\tcustom: sidesAll,\n\taxial: sidesAll,\n\thorizontal: sidesHorizontal,\n\tvertical: sidesVertical,\n\ttop: sidesTop,\n\tright: sidesRight,\n\tbottom: sidesBottom,\n\tleft: sidesLeft,\n};\n\nexport const LABELS = {\n\tdefault: __( 'Spacing control' ),\n\ttop: __( 'Top' ),\n\tbottom: __( 'Bottom' ),\n\tleft: __( 'Left' ),\n\tright: __( 'Right' ),\n\tmixed: __( 'Mixed' ),\n\tvertical: __( 'Vertical' ),\n\thorizontal: __( 'Horizontal' ),\n\taxial: __( 'Horizontal & vertical' ),\n\tcustom: __( 'Custom' ),\n};\n\nexport const VIEWS = {\n\taxial: 'axial',\n\ttop: 'top',\n\tright: 'right',\n\tbottom: 'bottom',\n\tleft: 'left',\n\tcustom: 'custom',\n};\n\n/**\n * Checks is given value is a spacing preset.\n *\n * @param {string} value Value to check\n *\n * @return {boolean} Return true if value is string in format var:preset|spacing|.\n */\nexport function isValueSpacingPreset( value ) {\n\tif ( ! value?.includes ) {\n\t\treturn false;\n\t}\n\treturn value === '0' || value.includes( 'var:preset|spacing|' );\n}\n\n/**\n * Converts a spacing preset into a custom value.\n *\n * @param {string} value Value to convert\n * @param {Array} spacingSizes Array of the current spacing preset objects\n *\n * @return {string} Mapping of the spacing preset to its equivalent custom value.\n */\nexport function getCustomValueFromPreset( value, spacingSizes ) {\n\tif ( ! isValueSpacingPreset( value ) ) {\n\t\treturn value;\n\t}\n\n\tconst slug = getSpacingPresetSlug( value );\n\tconst spacingSize = spacingSizes.find(\n\t\t( size ) => String( size.slug ) === slug\n\t);\n\n\treturn spacingSize?.size;\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} spacingSizes Array of the current spacing preset objects\n *\n * @return {string} The preset value if it can be found.\n */\nexport function getPresetValueFromCustomValue( value, spacingSizes ) {\n\t// Return value as-is if it is undefined or is already a preset, or '0';\n\tif ( ! value || isValueSpacingPreset( value ) || value === '0' ) {\n\t\treturn value;\n\t}\n\n\tconst spacingMatch = spacingSizes.find(\n\t\t( size ) => String( size.size ) === String( value )\n\t);\n\n\tif ( spacingMatch?.slug ) {\n\t\treturn `var:preset|spacing|${ spacingMatch.slug }`;\n\t}\n\n\treturn value;\n}\n\n/**\n * Converts a spacing preset into a custom value.\n *\n * @param {string} value Value to convert.\n *\n * @return {string | undefined} CSS var string for given spacing preset value.\n */\nexport function getSpacingPresetCssVar( value ) {\n\tif ( ! value ) {\n\t\treturn;\n\t}\n\n\tconst slug = value.match( /var:preset\\|spacing\\|(.+)/ );\n\n\tif ( ! slug ) {\n\t\treturn value;\n\t}\n\n\treturn `var(--wp--preset--spacing--${ slug[ 1 ] })`;\n}\n\n/**\n * Returns the slug section of the given spacing preset string.\n *\n * @param {string} value Value to extract slug from.\n *\n * @return {string|undefined} The int value of the slug from given spacing preset.\n */\nexport function getSpacingPresetSlug( 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\\|spacing\\|(.+)/ );\n\n\treturn slug ? slug[ 1 ] : undefined;\n}\n\n/**\n * Converts spacing preset value into a Range component value .\n *\n * @param {string} presetValue Value to convert to Range value.\n * @param {Array} spacingSizes Array of current spacing preset value objects.\n *\n * @return {number} The int value for use in Range control.\n */\nexport function getSliderValueFromPreset( presetValue, spacingSizes ) {\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: getSpacingPresetSlug( presetValue );\n\tconst sliderValue = spacingSizes.findIndex( ( spacingSize ) => {\n\t\treturn String( spacingSize.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 * Gets an items with the most occurrence within an array\n * https://stackoverflow.com/a/20762713\n *\n * @param {Array<any>} arr Array of items to check.\n * @return {any} The item with the most occurrences.\n */\nfunction mode( arr ) {\n\treturn arr\n\t\t.sort(\n\t\t\t( a, b ) =>\n\t\t\t\tarr.filter( ( v ) => v === a ).length -\n\t\t\t\tarr.filter( ( v ) => v === b ).length\n\t\t)\n\t\t.pop();\n}\n\n/**\n * Gets the 'all' input value from values data.\n *\n * @param {Object} values Box spacing values\n *\n * @return {string} The most common value from all sides of box.\n */\nexport function getAllRawValue( values = {} ) {\n\treturn mode( Object.values( values ) );\n}\n\n/**\n * Checks to determine if values are mixed.\n *\n * @param {Object} values Box values.\n * @param {Array} sides Sides that values relate to.\n *\n * @return {boolean} Whether values are mixed.\n */\nexport function isValuesMixed( values = {}, sides = ALL_SIDES ) {\n\treturn (\n\t\t( Object.values( values ).length >= 1 &&\n\t\t\tObject.values( values ).length < sides.length ) ||\n\t\tnew Set( Object.values( values ) ).size > 1\n\t);\n}\n\n/**\n * Checks to determine if values are defined.\n *\n * @param {Object} values Box values.\n *\n * @return {boolean} Whether values are defined.\n */\nexport function isValuesDefined( values ) {\n\tif ( values === undefined || values === null ) {\n\t\treturn false;\n\t}\n\treturn Object.values( values ).filter( ( value ) => !! value ).length > 0;\n}\n\n/**\n * Determines whether a particular axis has support. If no axis is\n * specified, this function checks if either axis is supported.\n *\n * @param {Array} sides Supported sides.\n * @param {string} axis Which axis to check.\n *\n * @return {boolean} Whether there is support for the specified axis or both axes.\n */\nexport function hasAxisSupport( sides, axis ) {\n\tif ( ! sides || ! sides.length ) {\n\t\treturn false;\n\t}\n\n\tconst hasHorizontalSupport =\n\t\tsides.includes( 'horizontal' ) ||\n\t\t( sides.includes( 'left' ) && sides.includes( 'right' ) );\n\n\tconst hasVerticalSupport =\n\t\tsides.includes( 'vertical' ) ||\n\t\t( sides.includes( 'top' ) && sides.includes( 'bottom' ) );\n\n\tif ( axis === 'horizontal' ) {\n\t\treturn hasHorizontalSupport;\n\t}\n\n\tif ( axis === 'vertical' ) {\n\t\treturn hasVerticalSupport;\n\t}\n\n\treturn hasHorizontalSupport || hasVerticalSupport;\n}\n\n/**\n * Determines which menu options should be included in the SidePicker.\n *\n * @param {Array} sides Supported sides.\n *\n * @return {Object} Menu options with each option containing label & icon.\n */\nexport function getSupportedMenuItems( sides ) {\n\tif ( ! sides || ! sides.length ) {\n\t\treturn {};\n\t}\n\n\tconst menuItems = {};\n\n\t// Determine the primary \"side\" menu options.\n\tconst hasHorizontalSupport = hasAxisSupport( sides, 'horizontal' );\n\tconst hasVerticalSupport = hasAxisSupport( sides, 'vertical' );\n\n\tif ( hasHorizontalSupport && hasVerticalSupport ) {\n\t\tmenuItems.axial = { label: LABELS.axial, icon: ICONS.axial };\n\t} else if ( hasHorizontalSupport ) {\n\t\tmenuItems.axial = { label: LABELS.horizontal, icon: ICONS.horizontal };\n\t} else if ( hasVerticalSupport ) {\n\t\tmenuItems.axial = { label: LABELS.vertical, icon: ICONS.vertical };\n\t}\n\n\t// Track whether we have any individual sides so we can omit the custom\n\t// option if required.\n\tlet numberOfIndividualSides = 0;\n\n\tALL_SIDES.forEach( ( side ) => {\n\t\tif ( sides.includes( side ) ) {\n\t\t\tnumberOfIndividualSides += 1;\n\t\t\tmenuItems[ side ] = {\n\t\t\t\tlabel: LABELS[ side ],\n\t\t\t\ticon: ICONS[ side ],\n\t\t\t};\n\t\t}\n\t} );\n\n\t// Add custom item if there are enough sides to warrant a separated view.\n\tif ( numberOfIndividualSides > 1 ) {\n\t\tmenuItems.custom = { label: LABELS.custom, icon: ICONS.custom };\n\t}\n\n\treturn menuItems;\n}\n\n/**\n * Checks if the supported sides are balanced for each axis.\n * - Horizontal - both left and right sides are supported.\n * - Vertical - both top and bottom are supported.\n *\n * @param {Array} sides The supported sides which may be axes as well.\n *\n * @return {boolean} Whether or not the supported sides are balanced.\n */\nexport function hasBalancedSidesSupport( sides = [] ) {\n\tconst counts = { top: 0, right: 0, bottom: 0, left: 0 };\n\tsides.forEach( ( side ) => ( counts[ side ] += 1 ) );\n\n\treturn (\n\t\t( counts.top + counts.bottom ) % 2 === 0 &&\n\t\t( counts.left + counts.right ) % 2 === 0\n\t);\n}\n\n/**\n * Determines which view the SpacingSizesControl should default to on its\n * first render; Axial, Custom, or Single side.\n *\n * @param {Object} values Current side values.\n * @param {Array} sides Supported sides.\n *\n * @return {string} View to display.\n */\nexport function getInitialView( values = {}, sides ) {\n\tconst { top, right, bottom, left } = values;\n\tconst sideValues = [ top, right, bottom, left ].filter( Boolean );\n\n\t// Axial ( Horizontal & vertical ).\n\t// - Has axial side support\n\t// - Has axial side values which match\n\t// - Has no values and the supported sides are balanced\n\tconst hasMatchingAxialValues =\n\t\ttop === bottom && left === right && ( !! top || !! left );\n\tconst hasNoValuesAndBalancedSides =\n\t\t! sideValues.length && hasBalancedSidesSupport( sides );\n\n\tif (\n\t\thasAxisSupport( sides ) &&\n\t\t( hasMatchingAxialValues || hasNoValuesAndBalancedSides )\n\t) {\n\t\treturn VIEWS.axial;\n\t}\n\n\t// Single side.\n\t// - Ensure the side returned is the first side that has a value.\n\tif ( sideValues.length === 1 ) {\n\t\tlet side;\n\n\t\tObject.entries( values ).some( ( [ key, value ] ) => {\n\t\t\tside = key;\n\t\t\treturn value !== undefined;\n\t\t} );\n\n\t\treturn side;\n\t}\n\n\t// Only single side supported and no value defined.\n\tif ( sides?.length === 1 && ! sideValues.length ) {\n\t\treturn sides[ 0 ];\n\t}\n\n\t// Default to the Custom (separated sides) view.\n\treturn VIEWS.custom;\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_i18n","require","_icons","RANGE_CONTROL_MAX_SIZE","exports","ALL_SIDES","DEFAULT_VALUES","top","undefined","right","bottom","left","ICONS","custom","sidesAll","axial","horizontal","sidesHorizontal","vertical","sidesVertical","sidesTop","sidesRight","sidesBottom","sidesLeft","LABELS","default","__","mixed","VIEWS","isValueSpacingPreset","value","includes","getCustomValueFromPreset","spacingSizes","slug","getSpacingPresetSlug","spacingSize","find","size","String","getPresetValueFromCustomValue","spacingMatch","getSpacingPresetCssVar","match","getSliderValueFromPreset","presetValue","parseFloat","sliderValue","findIndex","NaN","mode","arr","sort","a","b","filter","v","length","pop","getAllRawValue","values","Object","isValuesMixed","sides","Set","isValuesDefined","hasAxisSupport","axis","hasHorizontalSupport","hasVerticalSupport","getSupportedMenuItems","menuItems","label","icon","numberOfIndividualSides","forEach","side","hasBalancedSidesSupport","counts","getInitialView","sideValues","Boolean","hasMatchingAxialValues","hasNoValuesAndBalancedSides"],"sources":["@wordpress/block-editor/src/components/spacing-sizes-control/utils.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\tsidesAll,\n\tsidesBottom,\n\tsidesHorizontal,\n\tsidesLeft,\n\tsidesRight,\n\tsidesTop,\n\tsidesVertical,\n} from '@wordpress/icons';\n\nexport const RANGE_CONTROL_MAX_SIZE = 8;\n\nexport const ALL_SIDES = [ 'top', 'right', 'bottom', 'left' ];\n\nexport const DEFAULT_VALUES = {\n\ttop: undefined,\n\tright: undefined,\n\tbottom: undefined,\n\tleft: undefined,\n};\n\nexport const ICONS = {\n\tcustom: sidesAll,\n\taxial: sidesAll,\n\thorizontal: sidesHorizontal,\n\tvertical: sidesVertical,\n\ttop: sidesTop,\n\tright: sidesRight,\n\tbottom: sidesBottom,\n\tleft: sidesLeft,\n};\n\nexport const LABELS = {\n\tdefault: __( 'Spacing control' ),\n\ttop: __( 'Top' ),\n\tbottom: __( 'Bottom' ),\n\tleft: __( 'Left' ),\n\tright: __( 'Right' ),\n\tmixed: __( 'Mixed' ),\n\tvertical: __( 'Vertical' ),\n\thorizontal: __( 'Horizontal' ),\n\taxial: __( 'Horizontal & vertical' ),\n\tcustom: __( 'Custom' ),\n};\n\nexport const VIEWS = {\n\taxial: 'axial',\n\ttop: 'top',\n\tright: 'right',\n\tbottom: 'bottom',\n\tleft: 'left',\n\tcustom: 'custom',\n};\n\n/**\n * Checks is given value is a spacing preset.\n *\n * @param {string} value Value to check\n *\n * @return {boolean} Return true if value is string in format var:preset|spacing|.\n */\nexport function isValueSpacingPreset( value ) {\n\tif ( ! value?.includes ) {\n\t\treturn false;\n\t}\n\treturn value === '0' || value.includes( 'var:preset|spacing|' );\n}\n\n/**\n * Converts a spacing preset into a custom value.\n *\n * @param {string} value Value to convert\n * @param {Array} spacingSizes Array of the current spacing preset objects\n *\n * @return {string} Mapping of the spacing preset to its equivalent custom value.\n */\nexport function getCustomValueFromPreset( value, spacingSizes ) {\n\tif ( ! isValueSpacingPreset( value ) ) {\n\t\treturn value;\n\t}\n\n\tconst slug = getSpacingPresetSlug( value );\n\tconst spacingSize = spacingSizes.find(\n\t\t( size ) => String( size.slug ) === slug\n\t);\n\n\treturn spacingSize?.size;\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} spacingSizes Array of the current spacing preset objects\n *\n * @return {string} The preset value if it can be found.\n */\nexport function getPresetValueFromCustomValue( value, spacingSizes ) {\n\t// Return value as-is if it is undefined or is already a preset, or '0';\n\tif ( ! value || isValueSpacingPreset( value ) || value === '0' ) {\n\t\treturn value;\n\t}\n\n\tconst spacingMatch = spacingSizes.find(\n\t\t( size ) => String( size.size ) === String( value )\n\t);\n\n\tif ( spacingMatch?.slug ) {\n\t\treturn `var:preset|spacing|${ spacingMatch.slug }`;\n\t}\n\n\treturn value;\n}\n\n/**\n * Converts a spacing preset into a custom value.\n *\n * @param {string} value Value to convert.\n *\n * @return {string | undefined} CSS var string for given spacing preset value.\n */\nexport function getSpacingPresetCssVar( value ) {\n\tif ( ! value ) {\n\t\treturn;\n\t}\n\n\tconst slug = value.match( /var:preset\\|spacing\\|(.+)/ );\n\n\tif ( ! slug ) {\n\t\treturn value;\n\t}\n\n\treturn `var(--wp--preset--spacing--${ slug[ 1 ] })`;\n}\n\n/**\n * Returns the slug section of the given spacing preset string.\n *\n * @param {string} value Value to extract slug from.\n *\n * @return {string|undefined} The int value of the slug from given spacing preset.\n */\nexport function getSpacingPresetSlug( 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\\|spacing\\|(.+)/ );\n\n\treturn slug ? slug[ 1 ] : undefined;\n}\n\n/**\n * Converts spacing preset value into a Range component value .\n *\n * @param {string} presetValue Value to convert to Range value.\n * @param {Array} spacingSizes Array of current spacing preset value objects.\n *\n * @return {number} The int value for use in Range control.\n */\nexport function getSliderValueFromPreset( presetValue, spacingSizes ) {\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: getSpacingPresetSlug( presetValue );\n\tconst sliderValue = spacingSizes.findIndex( ( spacingSize ) => {\n\t\treturn String( spacingSize.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 * Gets an items with the most occurrence within an array\n * https://stackoverflow.com/a/20762713\n *\n * @param {Array<any>} arr Array of items to check.\n * @return {any} The item with the most occurrences.\n */\nfunction mode( arr ) {\n\treturn arr\n\t\t.sort(\n\t\t\t( a, b ) =>\n\t\t\t\tarr.filter( ( v ) => v === a ).length -\n\t\t\t\tarr.filter( ( v ) => v === b ).length\n\t\t)\n\t\t.pop();\n}\n\n/**\n * Gets the 'all' input value from values data.\n *\n * @param {Object} values Box spacing values\n *\n * @return {string} The most common value from all sides of box.\n */\nexport function getAllRawValue( values = {} ) {\n\treturn mode( Object.values( values ) );\n}\n\n/**\n * Checks to determine if values are mixed.\n *\n * @param {Object} values Box values.\n * @param {Array} sides Sides that values relate to.\n *\n * @return {boolean} Whether values are mixed.\n */\nexport function isValuesMixed( values = {}, sides = ALL_SIDES ) {\n\treturn (\n\t\t( Object.values( values ).length >= 1 &&\n\t\t\tObject.values( values ).length < sides.length ) ||\n\t\tnew Set( Object.values( values ) ).size > 1\n\t);\n}\n\n/**\n * Checks to determine if values are defined.\n *\n * @param {Object} values Box values.\n *\n * @return {boolean} Whether values are defined.\n */\nexport function isValuesDefined( values ) {\n\tif ( values === undefined || values === null ) {\n\t\treturn false;\n\t}\n\treturn Object.values( values ).filter( ( value ) => !! value ).length > 0;\n}\n\n/**\n * Determines whether a particular axis has support. If no axis is\n * specified, this function checks if either axis is supported.\n *\n * @param {Array} sides Supported sides.\n * @param {string} axis Which axis to check.\n *\n * @return {boolean} Whether there is support for the specified axis or both axes.\n */\nexport function hasAxisSupport( sides, axis ) {\n\tif ( ! sides || ! sides.length ) {\n\t\treturn false;\n\t}\n\n\tconst hasHorizontalSupport =\n\t\tsides.includes( 'horizontal' ) ||\n\t\t( sides.includes( 'left' ) && sides.includes( 'right' ) );\n\n\tconst hasVerticalSupport =\n\t\tsides.includes( 'vertical' ) ||\n\t\t( sides.includes( 'top' ) && sides.includes( 'bottom' ) );\n\n\tif ( axis === 'horizontal' ) {\n\t\treturn hasHorizontalSupport;\n\t}\n\n\tif ( axis === 'vertical' ) {\n\t\treturn hasVerticalSupport;\n\t}\n\n\treturn hasHorizontalSupport || hasVerticalSupport;\n}\n\n/**\n * Determines which menu options should be included in the SidePicker.\n *\n * @param {Array} sides Supported sides.\n *\n * @return {Object} Menu options with each option containing label & icon.\n */\nexport function getSupportedMenuItems( sides ) {\n\tif ( ! sides || ! sides.length ) {\n\t\treturn {};\n\t}\n\n\tconst menuItems = {};\n\n\t// Determine the primary \"side\" menu options.\n\tconst hasHorizontalSupport = hasAxisSupport( sides, 'horizontal' );\n\tconst hasVerticalSupport = hasAxisSupport( sides, 'vertical' );\n\n\tif ( hasHorizontalSupport && hasVerticalSupport ) {\n\t\tmenuItems.axial = { label: LABELS.axial, icon: ICONS.axial };\n\t} else if ( hasHorizontalSupport ) {\n\t\tmenuItems.axial = { label: LABELS.horizontal, icon: ICONS.horizontal };\n\t} else if ( hasVerticalSupport ) {\n\t\tmenuItems.axial = { label: LABELS.vertical, icon: ICONS.vertical };\n\t}\n\n\t// Track whether we have any individual sides so we can omit the custom\n\t// option if required.\n\tlet numberOfIndividualSides = 0;\n\n\tALL_SIDES.forEach( ( side ) => {\n\t\tif ( sides.includes( side ) ) {\n\t\t\tnumberOfIndividualSides += 1;\n\t\t\tmenuItems[ side ] = {\n\t\t\t\tlabel: LABELS[ side ],\n\t\t\t\ticon: ICONS[ side ],\n\t\t\t};\n\t\t}\n\t} );\n\n\t// Add custom item if there are enough sides to warrant a separated view.\n\tif ( numberOfIndividualSides > 1 ) {\n\t\tmenuItems.custom = { label: LABELS.custom, icon: ICONS.custom };\n\t}\n\n\treturn menuItems;\n}\n\n/**\n * Checks if the supported sides are balanced for each axis.\n * - Horizontal - both left and right sides are supported.\n * - Vertical - both top and bottom are supported.\n *\n * @param {Array} sides The supported sides which may be axes as well.\n *\n * @return {boolean} Whether or not the supported sides are balanced.\n */\nexport function hasBalancedSidesSupport( sides = [] ) {\n\tconst counts = { top: 0, right: 0, bottom: 0, left: 0 };\n\tsides.forEach( ( side ) => ( counts[ side ] += 1 ) );\n\n\treturn (\n\t\t( counts.top + counts.bottom ) % 2 === 0 &&\n\t\t( counts.left + counts.right ) % 2 === 0\n\t);\n}\n\n/**\n * Determines which view the SpacingSizesControl should default to on its\n * first render; Axial, Custom, or Single side.\n *\n * @param {Object} values Current side values.\n * @param {Array} sides Supported sides.\n *\n * @return {string} View to display.\n */\nexport function getInitialView( values = {}, sides ) {\n\tconst { top, right, bottom, left } = values;\n\tconst sideValues = [ top, right, bottom, left ].filter( Boolean );\n\n\t// Axial ( Horizontal & vertical ).\n\t// - Has axial side support\n\t// - Has axial side values which match\n\t// - Has no values and the supported sides are balanced\n\tconst hasMatchingAxialValues =\n\t\ttop === bottom && left === right && ( !! top || !! left );\n\tconst hasNoValuesAndBalancedSides =\n\t\t! sideValues.length && hasBalancedSidesSupport( sides );\n\n\t// Only single side supported and no value defined.\n\tif ( sides?.length === 1 ) {\n\t\treturn sides[ 0 ];\n\t}\n\n\tif (\n\t\thasAxisSupport( sides ) &&\n\t\t( hasMatchingAxialValues || hasNoValuesAndBalancedSides )\n\t) {\n\t\treturn VIEWS.axial;\n\t}\n\n\t// Default to the Custom (separated sides) view.\n\treturn VIEWS.custom;\n}\n"],"mappings":"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","ignoreList":[]}
@@ -193,6 +193,20 @@ function isDropTargetValid(getBlockType, allowedBlocks, draggedBlockNames, targe
193
193
  return areBlocksAllowed && targetMatchesDraggedBlockParents;
194
194
  }
195
195
 
196
+ /**
197
+ * Checks if the given element is an insertion point.
198
+ *
199
+ * @param {EventTarget|null} targetToCheck - The element to check.
200
+ * @param {Document} ownerDocument - The owner document of the element.
201
+ * @return {boolean} True if the element is a insertion point, false otherwise.
202
+ */
203
+ function isInsertionPoint(targetToCheck, ownerDocument) {
204
+ const {
205
+ defaultView
206
+ } = ownerDocument;
207
+ return !!(defaultView && targetToCheck instanceof defaultView.HTMLElement && targetToCheck.dataset.isInsertionPoint);
208
+ }
209
+
196
210
  /**
197
211
  * @typedef {Object} WPBlockDropZoneConfig
198
212
  * @property {?HTMLElement} dropZoneElement Optional element to be used as the drop zone.
@@ -302,6 +316,9 @@ function useBlockDropZone({
302
316
  rootBlockIndex: getBlockIndex(targetRootClientId)
303
317
  });
304
318
  const [targetIndex, operation, nearestSide] = dropTargetPosition;
319
+ if (isZoomOutMode() && operation !== 'insert') {
320
+ return;
321
+ }
305
322
  if (operation === 'group') {
306
323
  const targetBlock = blocks[targetIndex];
307
324
  const areAllImages = [targetBlock.name, ...draggedBlockNames].every(name => name === 'core/image');
@@ -346,7 +363,16 @@ function useBlockDropZone({
346
363
  // https://developer.mozilla.org/en-US/docs/Web/API/Event/currentTarget
347
364
  throttled(event, event.currentTarget.ownerDocument);
348
365
  },
349
- onDragLeave() {
366
+ onDragLeave(event) {
367
+ const {
368
+ ownerDocument
369
+ } = event.currentTarget;
370
+
371
+ // If the drag event is leaving the drop zone and entering an insertion point,
372
+ // do not hide the insertion point as it is conceptually within the dropzone.
373
+ if (isInsertionPoint(event.relatedTarget, ownerDocument) || isInsertionPoint(event.target, ownerDocument)) {
374
+ return;
375
+ }
350
376
  throttled.cancel();
351
377
  hideInsertionPoint();
352
378
  },