@wordpress/block-editor 14.3.2 → 14.3.4

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 (128) hide show
  1. package/README.md +42 -0
  2. package/build/components/block-heading-level-dropdown/index.js +3 -1
  3. package/build/components/block-heading-level-dropdown/index.js.map +1 -1
  4. package/build/components/block-list/block.js +27 -4
  5. package/build/components/block-list/block.js.map +1 -1
  6. package/build/components/block-list/use-block-props/use-focus-first-element.js +0 -1
  7. package/build/components/block-list/use-block-props/use-focus-first-element.js.map +1 -1
  8. package/build/components/block-list/zoom-out-separator.js +18 -1
  9. package/build/components/block-list/zoom-out-separator.js.map +1 -1
  10. package/build/components/block-switcher/utils.js +1 -1
  11. package/build/components/block-switcher/utils.js.map +1 -1
  12. package/build/components/block-variation-transforms/index.js +6 -3
  13. package/build/components/block-variation-transforms/index.js.map +1 -1
  14. package/build/components/media-placeholder/index.js +17 -19
  15. package/build/components/media-placeholder/index.js.map +1 -1
  16. package/build/components/rich-text/event-listeners/paste-handler.js +2 -13
  17. package/build/components/rich-text/event-listeners/paste-handler.js.map +1 -1
  18. package/build/components/rich-text/index.js +35 -25
  19. package/build/components/rich-text/index.js.map +1 -1
  20. package/build/components/writing-flow/index.js +1 -2
  21. package/build/components/writing-flow/index.js.map +1 -1
  22. package/build/components/writing-flow/use-arrow-nav.js +1 -4
  23. package/build/components/writing-flow/use-arrow-nav.js.map +1 -1
  24. package/build/components/writing-flow/use-input.js +1 -31
  25. package/build/components/writing-flow/use-input.js.map +1 -1
  26. package/build/components/writing-flow/use-select-all.js +1 -14
  27. package/build/components/writing-flow/use-select-all.js.map +1 -1
  28. package/build/components/writing-flow/use-selection-observer.js +2 -6
  29. package/build/components/writing-flow/use-selection-observer.js.map +1 -1
  30. package/build/components/writing-flow/utils.js +0 -27
  31. package/build/components/writing-flow/utils.js.map +1 -1
  32. package/build/hooks/block-bindings.js +6 -13
  33. package/build/hooks/block-bindings.js.map +1 -1
  34. package/build/hooks/layout.js +12 -8
  35. package/build/hooks/layout.js.map +1 -1
  36. package/build/hooks/use-bindings-attributes.js +24 -29
  37. package/build/hooks/use-bindings-attributes.js.map +1 -1
  38. package/build/private-apis.js +0 -2
  39. package/build/private-apis.js.map +1 -1
  40. package/build/store/selectors.js +6 -3
  41. package/build/store/selectors.js.map +1 -1
  42. package/build/utils/block-bindings.js +48 -0
  43. package/build/utils/block-bindings.js.map +1 -1
  44. package/build/utils/index.js +7 -0
  45. package/build/utils/index.js.map +1 -1
  46. package/build-module/components/block-heading-level-dropdown/index.js +3 -1
  47. package/build-module/components/block-heading-level-dropdown/index.js.map +1 -1
  48. package/build-module/components/block-list/block.js +28 -7
  49. package/build-module/components/block-list/block.js.map +1 -1
  50. package/build-module/components/block-list/use-block-props/use-focus-first-element.js +0 -1
  51. package/build-module/components/block-list/use-block-props/use-focus-first-element.js.map +1 -1
  52. package/build-module/components/block-list/zoom-out-separator.js +18 -1
  53. package/build-module/components/block-list/zoom-out-separator.js.map +1 -1
  54. package/build-module/components/block-switcher/utils.js +1 -1
  55. package/build-module/components/block-switcher/utils.js.map +1 -1
  56. package/build-module/components/block-variation-transforms/index.js +6 -3
  57. package/build-module/components/block-variation-transforms/index.js.map +1 -1
  58. package/build-module/components/media-placeholder/index.js +18 -20
  59. package/build-module/components/media-placeholder/index.js.map +1 -1
  60. package/build-module/components/rich-text/event-listeners/paste-handler.js +2 -13
  61. package/build-module/components/rich-text/event-listeners/paste-handler.js.map +1 -1
  62. package/build-module/components/rich-text/index.js +35 -25
  63. package/build-module/components/rich-text/index.js.map +1 -1
  64. package/build-module/components/writing-flow/index.js +1 -2
  65. package/build-module/components/writing-flow/index.js.map +1 -1
  66. package/build-module/components/writing-flow/use-arrow-nav.js +1 -4
  67. package/build-module/components/writing-flow/use-arrow-nav.js.map +1 -1
  68. package/build-module/components/writing-flow/use-input.js +1 -31
  69. package/build-module/components/writing-flow/use-input.js.map +1 -1
  70. package/build-module/components/writing-flow/use-select-all.js +1 -14
  71. package/build-module/components/writing-flow/use-select-all.js.map +1 -1
  72. package/build-module/components/writing-flow/use-selection-observer.js +2 -6
  73. package/build-module/components/writing-flow/use-selection-observer.js.map +1 -1
  74. package/build-module/components/writing-flow/utils.js +0 -26
  75. package/build-module/components/writing-flow/utils.js.map +1 -1
  76. package/build-module/hooks/block-bindings.js +6 -13
  77. package/build-module/hooks/block-bindings.js.map +1 -1
  78. package/build-module/hooks/layout.js +13 -9
  79. package/build-module/hooks/layout.js.map +1 -1
  80. package/build-module/hooks/use-bindings-attributes.js +24 -29
  81. package/build-module/hooks/use-bindings-attributes.js.map +1 -1
  82. package/build-module/private-apis.js +0 -2
  83. package/build-module/private-apis.js.map +1 -1
  84. package/build-module/store/selectors.js +6 -3
  85. package/build-module/store/selectors.js.map +1 -1
  86. package/build-module/utils/block-bindings.js +48 -0
  87. package/build-module/utils/block-bindings.js.map +1 -1
  88. package/build-module/utils/index.js +1 -0
  89. package/build-module/utils/index.js.map +1 -1
  90. package/build-style/content-rtl.css +12 -14
  91. package/build-style/content.css +12 -14
  92. package/build-style/style-rtl.css +4 -0
  93. package/build-style/style.css +4 -0
  94. package/package.json +20 -20
  95. package/src/components/block-heading-level-dropdown/index.js +7 -1
  96. package/src/components/block-list/block.js +47 -11
  97. package/src/components/block-list/content.scss +12 -0
  98. package/src/components/block-list/use-block-props/use-focus-first-element.js +0 -1
  99. package/src/components/block-list/zoom-out-separator.js +14 -1
  100. package/src/components/block-switcher/test/use-transformed.patterns.js +3 -3
  101. package/src/components/block-switcher/test/utils.js +3 -3
  102. package/src/components/block-switcher/utils.js +1 -1
  103. package/src/components/block-toolbar/style.scss +7 -0
  104. package/src/components/block-variation-transforms/index.js +6 -7
  105. package/src/components/media-placeholder/content.scss +3 -19
  106. package/src/components/media-placeholder/index.js +17 -17
  107. package/src/components/rich-text/event-listeners/paste-handler.js +2 -7
  108. package/src/components/rich-text/index.js +37 -33
  109. package/src/components/writing-flow/index.js +0 -2
  110. package/src/components/writing-flow/use-arrow-nav.js +2 -9
  111. package/src/components/writing-flow/use-input.js +1 -36
  112. package/src/components/writing-flow/use-select-all.js +1 -18
  113. package/src/components/writing-flow/use-selection-observer.js +3 -14
  114. package/src/components/writing-flow/utils.js +0 -30
  115. package/src/hooks/block-bindings.js +9 -10
  116. package/src/hooks/layout.js +17 -12
  117. package/src/hooks/use-bindings-attributes.js +74 -76
  118. package/src/private-apis.js +0 -2
  119. package/src/store/selectors.js +6 -6
  120. package/src/store/test/private-selectors.js +2 -2
  121. package/src/store/test/selectors.js +10 -6
  122. package/src/utils/block-bindings.js +47 -0
  123. package/src/utils/index.js +1 -0
  124. package/build/components/writing-flow/use-event-redirect.js +0 -66
  125. package/build/components/writing-flow/use-event-redirect.js.map +0 -1
  126. package/build-module/components/writing-flow/use-event-redirect.js +0 -60
  127. package/build-module/components/writing-flow/use-event-redirect.js.map +0 -1
  128. package/src/components/writing-flow/use-event-redirect.js +0 -72
@@ -13,6 +13,7 @@ import { chevronDown } from '@wordpress/icons';
13
13
  */
14
14
  import BlockIcon from '../block-icon';
15
15
  import { store as blockEditorStore } from '../../store';
16
+ import { unlock } from '../../lock-unlock';
16
17
  import { jsx as _jsx } from "react/jsx-runtime";
17
18
  import { jsxs as _jsxs } from "react/jsx-runtime";
18
19
  function VariationsButtons({
@@ -122,8 +123,7 @@ function __experimentalBlockVariationTransforms({
122
123
  } = useSelect(select => {
123
124
  const {
124
125
  getActiveBlockVariation,
125
- getBlockVariations,
126
- __experimentalHasContentRoleAttribute
126
+ getBlockVariations
127
127
  } = select(blocksStore);
128
128
  const {
129
129
  getBlockName,
@@ -131,7 +131,10 @@ function __experimentalBlockVariationTransforms({
131
131
  getBlockEditingMode
132
132
  } = select(blockEditorStore);
133
133
  const name = blockClientId && getBlockName(blockClientId);
134
- const isContentBlock = __experimentalHasContentRoleAttribute(name);
134
+ const {
135
+ hasContentRoleAttribute
136
+ } = unlock(select(blocksStore));
137
+ const isContentBlock = hasContentRoleAttribute(name);
135
138
  return {
136
139
  activeBlockVariation: getActiveBlockVariation(name, getBlockAttributes(blockClientId)),
137
140
  variations: name && getBlockVariations(name, 'transform'),
@@ -1 +1 @@
1
- {"version":3,"names":["store","blocksStore","__","sprintf","Button","DropdownMenu","MenuGroup","MenuItemsChoice","__experimentalToggleGroupControl","ToggleGroupControl","__experimentalToggleGroupControlOptionIcon","ToggleGroupControlOptionIcon","VisuallyHidden","useSelect","useDispatch","useMemo","chevronDown","BlockIcon","blockEditorStore","jsx","_jsx","jsxs","_jsxs","VariationsButtons","className","onSelectVariation","selectedValue","variations","children","as","map","variation","__next40pxDefaultSize","icon","showColors","isPressed","name","label","title","onClick","showTooltip","VariationsDropdown","selectOptions","description","value","info","text","popoverProps","position","toggleProps","iconPosition","choices","onSelect","VariationsToggleGroupControl","hideLabelFromVision","onChange","__nextHasNoMarginBottom","__experimentalBlockVariationTransforms","blockClientId","updateBlockAttributes","activeBlockVariation","isContentOnly","select","getActiveBlockVariation","getBlockVariations","__experimentalHasContentRoleAttribute","getBlockName","getBlockAttributes","getBlockEditingMode","isContentBlock","hasUniqueIcons","variationIcons","Set","forEach","add","src","size","length","variationName","find","attributes","baseClass","showButtons","ButtonComponent","Component"],"sources":["@wordpress/block-editor/src/components/block-variation-transforms/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { store as blocksStore } from '@wordpress/blocks';\nimport { __, sprintf } from '@wordpress/i18n';\nimport {\n\tButton,\n\tDropdownMenu,\n\tMenuGroup,\n\tMenuItemsChoice,\n\t__experimentalToggleGroupControl as ToggleGroupControl,\n\t__experimentalToggleGroupControlOptionIcon as ToggleGroupControlOptionIcon,\n\tVisuallyHidden,\n} from '@wordpress/components';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useMemo } from '@wordpress/element';\nimport { chevronDown } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport BlockIcon from '../block-icon';\nimport { store as blockEditorStore } from '../../store';\n\nfunction VariationsButtons( {\n\tclassName,\n\tonSelectVariation,\n\tselectedValue,\n\tvariations,\n} ) {\n\treturn (\n\t\t<fieldset className={ className }>\n\t\t\t<VisuallyHidden as=\"legend\">\n\t\t\t\t{ __( 'Transform to variation' ) }\n\t\t\t</VisuallyHidden>\n\t\t\t{ variations.map( ( variation ) => (\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\tkey={ variation.name }\n\t\t\t\t\ticon={ <BlockIcon icon={ variation.icon } showColors /> }\n\t\t\t\t\tisPressed={ selectedValue === variation.name }\n\t\t\t\t\tlabel={\n\t\t\t\t\t\tselectedValue === variation.name\n\t\t\t\t\t\t\t? variation.title\n\t\t\t\t\t\t\t: sprintf(\n\t\t\t\t\t\t\t\t\t/* translators: %s: Name of the block variation */\n\t\t\t\t\t\t\t\t\t__( 'Transform to %s' ),\n\t\t\t\t\t\t\t\t\tvariation.title\n\t\t\t\t\t\t\t )\n\t\t\t\t\t}\n\t\t\t\t\tonClick={ () => onSelectVariation( variation.name ) }\n\t\t\t\t\taria-label={ variation.title }\n\t\t\t\t\tshowTooltip\n\t\t\t\t/>\n\t\t\t) ) }\n\t\t</fieldset>\n\t);\n}\n\nfunction VariationsDropdown( {\n\tclassName,\n\tonSelectVariation,\n\tselectedValue,\n\tvariations,\n} ) {\n\tconst selectOptions = variations.map(\n\t\t( { name, title, description } ) => ( {\n\t\t\tvalue: name,\n\t\t\tlabel: title,\n\t\t\tinfo: description,\n\t\t} )\n\t);\n\n\treturn (\n\t\t<DropdownMenu\n\t\t\tclassName={ className }\n\t\t\tlabel={ __( 'Transform to variation' ) }\n\t\t\ttext={ __( 'Transform to variation' ) }\n\t\t\tpopoverProps={ {\n\t\t\t\tposition: 'bottom center',\n\t\t\t\tclassName: `${ className }__popover`,\n\t\t\t} }\n\t\t\ticon={ chevronDown }\n\t\t\ttoggleProps={ { iconPosition: 'right' } }\n\t\t>\n\t\t\t{ () => (\n\t\t\t\t<div className={ `${ className }__container` }>\n\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t<MenuItemsChoice\n\t\t\t\t\t\t\tchoices={ selectOptions }\n\t\t\t\t\t\t\tvalue={ selectedValue }\n\t\t\t\t\t\t\tonSelect={ onSelectVariation }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</MenuGroup>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t</DropdownMenu>\n\t);\n}\n\nfunction VariationsToggleGroupControl( {\n\tclassName,\n\tonSelectVariation,\n\tselectedValue,\n\tvariations,\n} ) {\n\treturn (\n\t\t<div className={ className }>\n\t\t\t<ToggleGroupControl\n\t\t\t\tlabel={ __( 'Transform to variation' ) }\n\t\t\t\tvalue={ selectedValue }\n\t\t\t\thideLabelFromVision\n\t\t\t\tonChange={ onSelectVariation }\n\t\t\t\t__next40pxDefaultSize\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t>\n\t\t\t\t{ variations.map( ( variation ) => (\n\t\t\t\t\t<ToggleGroupControlOptionIcon\n\t\t\t\t\t\tkey={ variation.name }\n\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t<BlockIcon icon={ variation.icon } showColors />\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvalue={ variation.name }\n\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\tselectedValue === variation.name\n\t\t\t\t\t\t\t\t? variation.title\n\t\t\t\t\t\t\t\t: sprintf(\n\t\t\t\t\t\t\t\t\t\t/* translators: %s: Name of the block variation */\n\t\t\t\t\t\t\t\t\t\t__( 'Transform to %s' ),\n\t\t\t\t\t\t\t\t\t\tvariation.title\n\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t) ) }\n\t\t\t</ToggleGroupControl>\n\t\t</div>\n\t);\n}\n\nfunction __experimentalBlockVariationTransforms( { blockClientId } ) {\n\tconst { updateBlockAttributes } = useDispatch( blockEditorStore );\n\tconst { activeBlockVariation, variations, isContentOnly } = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetActiveBlockVariation,\n\t\t\t\tgetBlockVariations,\n\t\t\t\t__experimentalHasContentRoleAttribute,\n\t\t\t} = select( blocksStore );\n\t\t\tconst { getBlockName, getBlockAttributes, getBlockEditingMode } =\n\t\t\t\tselect( blockEditorStore );\n\n\t\t\tconst name = blockClientId && getBlockName( blockClientId );\n\n\t\t\tconst isContentBlock =\n\t\t\t\t__experimentalHasContentRoleAttribute( name );\n\n\t\t\treturn {\n\t\t\t\tactiveBlockVariation: getActiveBlockVariation(\n\t\t\t\t\tname,\n\t\t\t\t\tgetBlockAttributes( blockClientId )\n\t\t\t\t),\n\t\t\t\tvariations: name && getBlockVariations( name, 'transform' ),\n\t\t\t\tisContentOnly:\n\t\t\t\t\tgetBlockEditingMode( blockClientId ) === 'contentOnly' &&\n\t\t\t\t\t! isContentBlock,\n\t\t\t};\n\t\t},\n\t\t[ blockClientId ]\n\t);\n\n\tconst selectedValue = activeBlockVariation?.name;\n\n\t// Check if each variation has a unique icon.\n\tconst hasUniqueIcons = useMemo( () => {\n\t\tconst variationIcons = new Set();\n\t\tif ( ! variations ) {\n\t\t\treturn false;\n\t\t}\n\t\tvariations.forEach( ( variation ) => {\n\t\t\tif ( variation.icon ) {\n\t\t\t\tvariationIcons.add( variation.icon?.src || variation.icon );\n\t\t\t}\n\t\t} );\n\t\treturn variationIcons.size === variations.length;\n\t}, [ variations ] );\n\n\tconst onSelectVariation = ( variationName ) => {\n\t\tupdateBlockAttributes( blockClientId, {\n\t\t\t...variations.find( ( { name } ) => name === variationName )\n\t\t\t\t.attributes,\n\t\t} );\n\t};\n\n\tif ( ! variations?.length || isContentOnly ) {\n\t\treturn null;\n\t}\n\n\tconst baseClass = 'block-editor-block-variation-transforms';\n\n\t// Show buttons if there are more than 5 variations because the ToggleGroupControl does not wrap\n\tconst showButtons = variations.length > 5;\n\n\tconst ButtonComponent = showButtons\n\t\t? VariationsButtons\n\t\t: VariationsToggleGroupControl;\n\n\tconst Component = hasUniqueIcons ? ButtonComponent : VariationsDropdown;\n\n\treturn (\n\t\t<Component\n\t\t\tclassName={ baseClass }\n\t\t\tonSelectVariation={ onSelectVariation }\n\t\t\tselectedValue={ selectedValue }\n\t\t\tvariations={ variations }\n\t\t/>\n\t);\n}\n\nexport default __experimentalBlockVariationTransforms;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["store","blocksStore","__","sprintf","Button","DropdownMenu","MenuGroup","MenuItemsChoice","__experimentalToggleGroupControl","ToggleGroupControl","__experimentalToggleGroupControlOptionIcon","ToggleGroupControlOptionIcon","VisuallyHidden","useSelect","useDispatch","useMemo","chevronDown","BlockIcon","blockEditorStore","unlock","jsx","_jsx","jsxs","_jsxs","VariationsButtons","className","onSelectVariation","selectedValue","variations","children","as","map","variation","__next40pxDefaultSize","icon","showColors","isPressed","name","label","title","onClick","showTooltip","VariationsDropdown","selectOptions","description","value","info","text","popoverProps","position","toggleProps","iconPosition","choices","onSelect","VariationsToggleGroupControl","hideLabelFromVision","onChange","__nextHasNoMarginBottom","__experimentalBlockVariationTransforms","blockClientId","updateBlockAttributes","activeBlockVariation","isContentOnly","select","getActiveBlockVariation","getBlockVariations","getBlockName","getBlockAttributes","getBlockEditingMode","hasContentRoleAttribute","isContentBlock","hasUniqueIcons","variationIcons","Set","forEach","add","src","size","length","variationName","find","attributes","baseClass","showButtons","ButtonComponent","Component"],"sources":["@wordpress/block-editor/src/components/block-variation-transforms/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { store as blocksStore } from '@wordpress/blocks';\nimport { __, sprintf } from '@wordpress/i18n';\nimport {\n\tButton,\n\tDropdownMenu,\n\tMenuGroup,\n\tMenuItemsChoice,\n\t__experimentalToggleGroupControl as ToggleGroupControl,\n\t__experimentalToggleGroupControlOptionIcon as ToggleGroupControlOptionIcon,\n\tVisuallyHidden,\n} from '@wordpress/components';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useMemo } from '@wordpress/element';\nimport { chevronDown } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport BlockIcon from '../block-icon';\nimport { store as blockEditorStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\n\nfunction VariationsButtons( {\n\tclassName,\n\tonSelectVariation,\n\tselectedValue,\n\tvariations,\n} ) {\n\treturn (\n\t\t<fieldset className={ className }>\n\t\t\t<VisuallyHidden as=\"legend\">\n\t\t\t\t{ __( 'Transform to variation' ) }\n\t\t\t</VisuallyHidden>\n\t\t\t{ variations.map( ( variation ) => (\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\tkey={ variation.name }\n\t\t\t\t\ticon={ <BlockIcon icon={ variation.icon } showColors /> }\n\t\t\t\t\tisPressed={ selectedValue === variation.name }\n\t\t\t\t\tlabel={\n\t\t\t\t\t\tselectedValue === variation.name\n\t\t\t\t\t\t\t? variation.title\n\t\t\t\t\t\t\t: sprintf(\n\t\t\t\t\t\t\t\t\t/* translators: %s: Name of the block variation */\n\t\t\t\t\t\t\t\t\t__( 'Transform to %s' ),\n\t\t\t\t\t\t\t\t\tvariation.title\n\t\t\t\t\t\t\t )\n\t\t\t\t\t}\n\t\t\t\t\tonClick={ () => onSelectVariation( variation.name ) }\n\t\t\t\t\taria-label={ variation.title }\n\t\t\t\t\tshowTooltip\n\t\t\t\t/>\n\t\t\t) ) }\n\t\t</fieldset>\n\t);\n}\n\nfunction VariationsDropdown( {\n\tclassName,\n\tonSelectVariation,\n\tselectedValue,\n\tvariations,\n} ) {\n\tconst selectOptions = variations.map(\n\t\t( { name, title, description } ) => ( {\n\t\t\tvalue: name,\n\t\t\tlabel: title,\n\t\t\tinfo: description,\n\t\t} )\n\t);\n\n\treturn (\n\t\t<DropdownMenu\n\t\t\tclassName={ className }\n\t\t\tlabel={ __( 'Transform to variation' ) }\n\t\t\ttext={ __( 'Transform to variation' ) }\n\t\t\tpopoverProps={ {\n\t\t\t\tposition: 'bottom center',\n\t\t\t\tclassName: `${ className }__popover`,\n\t\t\t} }\n\t\t\ticon={ chevronDown }\n\t\t\ttoggleProps={ { iconPosition: 'right' } }\n\t\t>\n\t\t\t{ () => (\n\t\t\t\t<div className={ `${ className }__container` }>\n\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t<MenuItemsChoice\n\t\t\t\t\t\t\tchoices={ selectOptions }\n\t\t\t\t\t\t\tvalue={ selectedValue }\n\t\t\t\t\t\t\tonSelect={ onSelectVariation }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</MenuGroup>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t</DropdownMenu>\n\t);\n}\n\nfunction VariationsToggleGroupControl( {\n\tclassName,\n\tonSelectVariation,\n\tselectedValue,\n\tvariations,\n} ) {\n\treturn (\n\t\t<div className={ className }>\n\t\t\t<ToggleGroupControl\n\t\t\t\tlabel={ __( 'Transform to variation' ) }\n\t\t\t\tvalue={ selectedValue }\n\t\t\t\thideLabelFromVision\n\t\t\t\tonChange={ onSelectVariation }\n\t\t\t\t__next40pxDefaultSize\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t>\n\t\t\t\t{ variations.map( ( variation ) => (\n\t\t\t\t\t<ToggleGroupControlOptionIcon\n\t\t\t\t\t\tkey={ variation.name }\n\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t<BlockIcon icon={ variation.icon } showColors />\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvalue={ variation.name }\n\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\tselectedValue === variation.name\n\t\t\t\t\t\t\t\t? variation.title\n\t\t\t\t\t\t\t\t: sprintf(\n\t\t\t\t\t\t\t\t\t\t/* translators: %s: Name of the block variation */\n\t\t\t\t\t\t\t\t\t\t__( 'Transform to %s' ),\n\t\t\t\t\t\t\t\t\t\tvariation.title\n\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t) ) }\n\t\t\t</ToggleGroupControl>\n\t\t</div>\n\t);\n}\n\nfunction __experimentalBlockVariationTransforms( { blockClientId } ) {\n\tconst { updateBlockAttributes } = useDispatch( blockEditorStore );\n\tconst { activeBlockVariation, variations, isContentOnly } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getActiveBlockVariation, getBlockVariations } =\n\t\t\t\tselect( blocksStore );\n\n\t\t\tconst { getBlockName, getBlockAttributes, getBlockEditingMode } =\n\t\t\t\tselect( blockEditorStore );\n\n\t\t\tconst name = blockClientId && getBlockName( blockClientId );\n\n\t\t\tconst { hasContentRoleAttribute } = unlock( select( blocksStore ) );\n\t\t\tconst isContentBlock = hasContentRoleAttribute( name );\n\n\t\t\treturn {\n\t\t\t\tactiveBlockVariation: getActiveBlockVariation(\n\t\t\t\t\tname,\n\t\t\t\t\tgetBlockAttributes( blockClientId )\n\t\t\t\t),\n\t\t\t\tvariations: name && getBlockVariations( name, 'transform' ),\n\t\t\t\tisContentOnly:\n\t\t\t\t\tgetBlockEditingMode( blockClientId ) === 'contentOnly' &&\n\t\t\t\t\t! isContentBlock,\n\t\t\t};\n\t\t},\n\t\t[ blockClientId ]\n\t);\n\n\tconst selectedValue = activeBlockVariation?.name;\n\n\t// Check if each variation has a unique icon.\n\tconst hasUniqueIcons = useMemo( () => {\n\t\tconst variationIcons = new Set();\n\t\tif ( ! variations ) {\n\t\t\treturn false;\n\t\t}\n\t\tvariations.forEach( ( variation ) => {\n\t\t\tif ( variation.icon ) {\n\t\t\t\tvariationIcons.add( variation.icon?.src || variation.icon );\n\t\t\t}\n\t\t} );\n\t\treturn variationIcons.size === variations.length;\n\t}, [ variations ] );\n\n\tconst onSelectVariation = ( variationName ) => {\n\t\tupdateBlockAttributes( blockClientId, {\n\t\t\t...variations.find( ( { name } ) => name === variationName )\n\t\t\t\t.attributes,\n\t\t} );\n\t};\n\n\tif ( ! variations?.length || isContentOnly ) {\n\t\treturn null;\n\t}\n\n\tconst baseClass = 'block-editor-block-variation-transforms';\n\n\t// Show buttons if there are more than 5 variations because the ToggleGroupControl does not wrap\n\tconst showButtons = variations.length > 5;\n\n\tconst ButtonComponent = showButtons\n\t\t? VariationsButtons\n\t\t: VariationsToggleGroupControl;\n\n\tconst Component = hasUniqueIcons ? ButtonComponent : VariationsDropdown;\n\n\treturn (\n\t\t<Component\n\t\t\tclassName={ baseClass }\n\t\t\tonSelectVariation={ onSelectVariation }\n\t\t\tselectedValue={ selectedValue }\n\t\t\tvariations={ variations }\n\t\t/>\n\t);\n}\n\nexport default __experimentalBlockVariationTransforms;\n"],"mappings":"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","ignoreList":[]}
@@ -6,7 +6,7 @@ import clsx from 'clsx';
6
6
  /**
7
7
  * WordPress dependencies
8
8
  */
9
- import { Button, FormFileUpload, Placeholder, DropZone, withFilters } from '@wordpress/components';
9
+ import { Button, FormFileUpload, Placeholder, DropZone, __experimentalInputControl as InputControl, __experimentalInputControlSuffixWrapper as InputControlSuffixWrapper, withFilters } from '@wordpress/components';
10
10
  import { __ } from '@wordpress/i18n';
11
11
  import { useState, useEffect } from '@wordpress/element';
12
12
  import { useSelect } from '@wordpress/data';
@@ -34,25 +34,26 @@ const InsertFromURLPopover = ({
34
34
  }) => /*#__PURE__*/_jsx(URLPopover, {
35
35
  anchor: popoverAnchor,
36
36
  onClose: onClose,
37
- children: /*#__PURE__*/_jsxs("form", {
37
+ children: /*#__PURE__*/_jsx("form", {
38
38
  className: "block-editor-media-placeholder__url-input-form",
39
39
  onSubmit: onSubmit,
40
- children: [/*#__PURE__*/_jsx("input", {
41
- className: "block-editor-media-placeholder__url-input-field",
42
- type: "text",
43
- "aria-label": __('URL'),
40
+ children: /*#__PURE__*/_jsx(InputControl, {
41
+ __next40pxDefaultSize: true,
42
+ label: __('URL'),
43
+ hideLabelFromVision: true,
44
44
  placeholder: __('Paste or type URL'),
45
45
  onChange: onChange,
46
- value: src
47
- }), /*#__PURE__*/_jsx(Button
48
- // TODO: Switch to `true` (40px size) if possible
49
- , {
50
- __next40pxDefaultSize: false,
51
- className: "block-editor-media-placeholder__url-input-submit-button",
52
- icon: keyboardReturn,
53
- label: __('Apply'),
54
- type: "submit"
55
- })]
46
+ value: src,
47
+ suffix: /*#__PURE__*/_jsx(InputControlSuffixWrapper, {
48
+ variant: "control",
49
+ children: /*#__PURE__*/_jsx(Button, {
50
+ size: "small",
51
+ icon: keyboardReturn,
52
+ label: __('Apply'),
53
+ type: "submit"
54
+ })
55
+ })
56
+ })
56
57
  })
57
58
  });
58
59
  const URLSelectionUI = ({
@@ -151,9 +152,6 @@ export function MediaPlaceholder({
151
152
  }
152
153
  return allowedTypes.every(allowedType => allowedType === 'image' || allowedType.startsWith('image/'));
153
154
  };
154
- const onChangeSrc = event => {
155
- setSrc(event.target.value);
156
- };
157
155
  const onFilesUpload = files => {
158
156
  if (!handleUpload || typeof handleUpload === 'function' && !handleUpload(files)) {
159
157
  return onSelect(files);
@@ -332,7 +330,7 @@ export function MediaPlaceholder({
332
330
  const renderUrlSelectionUI = () => {
333
331
  return onSelectURL && /*#__PURE__*/_jsx(URLSelectionUI, {
334
332
  src: src,
335
- onChangeSrc: onChangeSrc,
333
+ onChangeSrc: setSrc,
336
334
  onSelectURL: onSelectURL
337
335
  });
338
336
  };
@@ -1 +1 @@
1
- {"version":3,"names":["clsx","Button","FormFileUpload","Placeholder","DropZone","withFilters","__","useState","useEffect","useSelect","keyboardReturn","pasteHandler","deprecated","MediaUpload","MediaUploadCheck","URLPopover","store","blockEditorStore","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","noop","InsertFromURLPopover","src","onChange","onSubmit","onClose","popoverAnchor","anchor","children","className","type","placeholder","value","__next40pxDefaultSize","icon","label","URLSelectionUI","onChangeSrc","onSelectURL","setPopoverAnchor","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","since","version","mediaUpload","select","getSettings","setSrc","_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","onUpload","defaultRenderPlaceholder","content","instructions","undefined","typesAllowed","firstAllowedType","isOneType","isAudio","isImage","isVideo","placeholderClassName","preview","renderPlaceholder","renderDropZone","onFilesDrop","renderCancelLink","renderUrlSelectionUI","renderFeaturedImageToggle","renderMediaUploadChecked","defaultButton","open","libraryButton","uploadMediaLibraryButton","gallery","mode","render","openFileDialog","fallback"],"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":[]}
1
+ {"version":3,"names":["clsx","Button","FormFileUpload","Placeholder","DropZone","__experimentalInputControl","InputControl","__experimentalInputControlSuffixWrapper","InputControlSuffixWrapper","withFilters","__","useState","useEffect","useSelect","keyboardReturn","pasteHandler","deprecated","MediaUpload","MediaUploadCheck","URLPopover","store","blockEditorStore","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","noop","InsertFromURLPopover","src","onChange","onSubmit","onClose","popoverAnchor","anchor","children","className","__next40pxDefaultSize","label","hideLabelFromVision","placeholder","value","suffix","variant","size","icon","type","URLSelectionUI","onChangeSrc","onSelectURL","setPopoverAnchor","isURLInputVisible","setIsURLInputVisible","openURLInput","closeURLInput","focus","onSubmitSrc","event","preventDefault","onClick","isPressed","ref","MediaPlaceholder","allowedTypes","labels","mediaPreview","notices","isAppender","accept","addToGallery","multiple","handleUpload","disableDropZone","disableMediaButtons","onError","onSelect","onCancel","onToggleFeaturedImage","onDoubleClick","onFilesPreUpload","onHTMLDrop","deprecatedOnHTMLDrop","mediaLibraryButton","style","since","version","mediaUpload","select","getSettings","setSrc","_value$src","onlyAllowsImages","length","every","allowedType","startsWith","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","onUpload","target","defaultRenderPlaceholder","content","instructions","undefined","typesAllowed","firstAllowedType","isOneType","isAudio","isImage","isVideo","placeholderClassName","preview","renderPlaceholder","renderDropZone","onFilesDrop","renderCancelLink","renderUrlSelectionUI","renderFeaturedImageToggle","renderMediaUploadChecked","defaultButton","open","libraryButton","uploadMediaLibraryButton","gallery","mode","render","openFileDialog","fallback"],"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\t__experimentalInputControl as InputControl,\n\t__experimentalInputControlSuffixWrapper as InputControlSuffixWrapper,\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<InputControl\n\t\t\t\t__next40pxDefaultSize\n\t\t\t\tlabel={ __( 'URL' ) }\n\t\t\t\thideLabelFromVision\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\tsuffix={\n\t\t\t\t\t<InputControlSuffixWrapper variant=\"control\">\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\ticon={ keyboardReturn }\n\t\t\t\t\t\t\tlabel={ __( 'Apply' ) }\n\t\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</InputControlSuffixWrapper>\n\t\t\t\t}\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 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={ setSrc }\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":[]}
@@ -26,21 +26,10 @@ export default (props => element => {
26
26
  preserveWhiteSpace,
27
27
  pastePlainText
28
28
  } = props.current;
29
- const {
30
- ownerDocument
31
- } = element;
32
- const {
33
- defaultView
34
- } = ownerDocument;
35
- const {
36
- anchorNode,
37
- focusNode
38
- } = defaultView.getSelection();
39
- const containsSelection = element.contains(anchorNode) && element.contains(focusNode);
40
29
 
41
30
  // The event listener is attached to the window, so we need to check if
42
- // the target is the element.
43
- if (!containsSelection) {
31
+ // the target is the element or inside the element.
32
+ if (!element.contains(event.target)) {
44
33
  return;
45
34
  }
46
35
  if (event.defaultPrevented) {
@@ -1 +1 @@
1
- {"version":3,"names":["pasteHandler","isEmpty","insert","create","isURL","addActiveFormats","getPasteEventData","props","element","_onPaste","event","disableFormats","onChange","value","formatTypes","tagName","onReplace","__unstableEmbedURLOnPaste","preserveWhiteSpace","pastePlainText","current","ownerDocument","defaultView","anchorNode","focusNode","getSelection","containsSelection","contains","defaultPrevented","plainText","html","preventDefault","window","console","log","isInternal","clipboardData","getData","pasteInline","content","transformed","reduce","accumulator","__unstablePasteRule","valueToInsert","activeFormats","text","mode","trimmedPlainText","trim","test","HTML","length","addEventListener","removeEventListener"],"sources":["@wordpress/block-editor/src/components/rich-text/event-listeners/paste-handler.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { pasteHandler } from '@wordpress/blocks';\nimport { isEmpty, insert, create } from '@wordpress/rich-text';\nimport { isURL } from '@wordpress/url';\n\n/**\n * Internal dependencies\n */\nimport { addActiveFormats } from '../utils';\nimport { getPasteEventData } from '../../../utils/pasting';\n\n/** @typedef {import('@wordpress/rich-text').RichTextValue} RichTextValue */\n\nexport default ( props ) => ( element ) => {\n\tfunction _onPaste( event ) {\n\t\tconst {\n\t\t\tdisableFormats,\n\t\t\tonChange,\n\t\t\tvalue,\n\t\t\tformatTypes,\n\t\t\ttagName,\n\t\t\tonReplace,\n\t\t\t__unstableEmbedURLOnPaste,\n\t\t\tpreserveWhiteSpace,\n\t\t\tpastePlainText,\n\t\t} = props.current;\n\t\tconst { ownerDocument } = element;\n\t\tconst { defaultView } = ownerDocument;\n\t\tconst { anchorNode, focusNode } = defaultView.getSelection();\n\t\tconst containsSelection =\n\t\t\telement.contains( anchorNode ) && element.contains( focusNode );\n\n\t\t// The event listener is attached to the window, so we need to check if\n\t\t// the target is the element.\n\t\tif ( ! containsSelection ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( event.defaultPrevented ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst { plainText, html } = getPasteEventData( event );\n\n\t\tevent.preventDefault();\n\n\t\t// Allows us to ask for this information when we get a report.\n\t\twindow.console.log( 'Received HTML:\\n\\n', html );\n\t\twindow.console.log( 'Received plain text:\\n\\n', plainText );\n\n\t\tif ( disableFormats ) {\n\t\t\tonChange( insert( value, plainText ) );\n\t\t\treturn;\n\t\t}\n\n\t\tconst isInternal =\n\t\t\tevent.clipboardData.getData( 'rich-text' ) === 'true';\n\n\t\tfunction pasteInline( content ) {\n\t\t\tconst transformed = formatTypes.reduce(\n\t\t\t\t( accumulator, { __unstablePasteRule } ) => {\n\t\t\t\t\t// Only allow one transform.\n\t\t\t\t\tif ( __unstablePasteRule && accumulator === value ) {\n\t\t\t\t\t\taccumulator = __unstablePasteRule( value, {\n\t\t\t\t\t\t\thtml,\n\t\t\t\t\t\t\tplainText,\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn accumulator;\n\t\t\t\t},\n\t\t\t\tvalue\n\t\t\t);\n\t\t\tif ( transformed !== value ) {\n\t\t\t\tonChange( transformed );\n\t\t\t} else {\n\t\t\t\tconst valueToInsert = create( { html: content } );\n\t\t\t\taddActiveFormats( valueToInsert, value.activeFormats );\n\t\t\t\tonChange( insert( value, valueToInsert ) );\n\t\t\t}\n\t\t}\n\n\t\t// If the data comes from a rich text instance, we can directly use it\n\t\t// without filtering the data. The filters are only meant for externally\n\t\t// pasted content and remove inline styles.\n\t\tif ( isInternal ) {\n\t\t\tpasteInline( html );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( pastePlainText ) {\n\t\t\tonChange( insert( value, create( { text: plainText } ) ) );\n\t\t\treturn;\n\t\t}\n\n\t\tlet mode = 'INLINE';\n\n\t\tconst trimmedPlainText = plainText.trim();\n\n\t\tif (\n\t\t\t__unstableEmbedURLOnPaste &&\n\t\t\tisEmpty( value ) &&\n\t\t\tisURL( trimmedPlainText ) &&\n\t\t\t// For the link pasting feature, allow only http(s) protocols.\n\t\t\t/^https?:/.test( trimmedPlainText )\n\t\t) {\n\t\t\tmode = 'BLOCKS';\n\t\t}\n\n\t\tconst content = pasteHandler( {\n\t\t\tHTML: html,\n\t\t\tplainText,\n\t\t\tmode,\n\t\t\ttagName,\n\t\t\tpreserveWhiteSpace,\n\t\t} );\n\n\t\tif ( typeof content === 'string' ) {\n\t\t\tpasteInline( content );\n\t\t} else if ( content.length > 0 ) {\n\t\t\tif ( onReplace && isEmpty( value ) ) {\n\t\t\t\tonReplace( content, content.length - 1, -1 );\n\t\t\t}\n\t\t}\n\t}\n\n\tconst { defaultView } = element.ownerDocument;\n\n\t// Attach the listener to the window so parent elements have the chance to\n\t// prevent the default behavior.\n\tdefaultView.addEventListener( 'paste', _onPaste );\n\treturn () => {\n\t\tdefaultView.removeEventListener( 'paste', _onPaste );\n\t};\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["pasteHandler","isEmpty","insert","create","isURL","addActiveFormats","getPasteEventData","props","element","_onPaste","event","disableFormats","onChange","value","formatTypes","tagName","onReplace","__unstableEmbedURLOnPaste","preserveWhiteSpace","pastePlainText","current","contains","target","defaultPrevented","plainText","html","preventDefault","window","console","log","isInternal","clipboardData","getData","pasteInline","content","transformed","reduce","accumulator","__unstablePasteRule","valueToInsert","activeFormats","text","mode","trimmedPlainText","trim","test","HTML","length","defaultView","ownerDocument","addEventListener","removeEventListener"],"sources":["@wordpress/block-editor/src/components/rich-text/event-listeners/paste-handler.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { pasteHandler } from '@wordpress/blocks';\nimport { isEmpty, insert, create } from '@wordpress/rich-text';\nimport { isURL } from '@wordpress/url';\n\n/**\n * Internal dependencies\n */\nimport { addActiveFormats } from '../utils';\nimport { getPasteEventData } from '../../../utils/pasting';\n\n/** @typedef {import('@wordpress/rich-text').RichTextValue} RichTextValue */\n\nexport default ( props ) => ( element ) => {\n\tfunction _onPaste( event ) {\n\t\tconst {\n\t\t\tdisableFormats,\n\t\t\tonChange,\n\t\t\tvalue,\n\t\t\tformatTypes,\n\t\t\ttagName,\n\t\t\tonReplace,\n\t\t\t__unstableEmbedURLOnPaste,\n\t\t\tpreserveWhiteSpace,\n\t\t\tpastePlainText,\n\t\t} = props.current;\n\n\t\t// The event listener is attached to the window, so we need to check if\n\t\t// the target is the element or inside the element.\n\t\tif ( ! element.contains( event.target ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( event.defaultPrevented ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst { plainText, html } = getPasteEventData( event );\n\n\t\tevent.preventDefault();\n\n\t\t// Allows us to ask for this information when we get a report.\n\t\twindow.console.log( 'Received HTML:\\n\\n', html );\n\t\twindow.console.log( 'Received plain text:\\n\\n', plainText );\n\n\t\tif ( disableFormats ) {\n\t\t\tonChange( insert( value, plainText ) );\n\t\t\treturn;\n\t\t}\n\n\t\tconst isInternal =\n\t\t\tevent.clipboardData.getData( 'rich-text' ) === 'true';\n\n\t\tfunction pasteInline( content ) {\n\t\t\tconst transformed = formatTypes.reduce(\n\t\t\t\t( accumulator, { __unstablePasteRule } ) => {\n\t\t\t\t\t// Only allow one transform.\n\t\t\t\t\tif ( __unstablePasteRule && accumulator === value ) {\n\t\t\t\t\t\taccumulator = __unstablePasteRule( value, {\n\t\t\t\t\t\t\thtml,\n\t\t\t\t\t\t\tplainText,\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn accumulator;\n\t\t\t\t},\n\t\t\t\tvalue\n\t\t\t);\n\t\t\tif ( transformed !== value ) {\n\t\t\t\tonChange( transformed );\n\t\t\t} else {\n\t\t\t\tconst valueToInsert = create( { html: content } );\n\t\t\t\taddActiveFormats( valueToInsert, value.activeFormats );\n\t\t\t\tonChange( insert( value, valueToInsert ) );\n\t\t\t}\n\t\t}\n\n\t\t// If the data comes from a rich text instance, we can directly use it\n\t\t// without filtering the data. The filters are only meant for externally\n\t\t// pasted content and remove inline styles.\n\t\tif ( isInternal ) {\n\t\t\tpasteInline( html );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( pastePlainText ) {\n\t\t\tonChange( insert( value, create( { text: plainText } ) ) );\n\t\t\treturn;\n\t\t}\n\n\t\tlet mode = 'INLINE';\n\n\t\tconst trimmedPlainText = plainText.trim();\n\n\t\tif (\n\t\t\t__unstableEmbedURLOnPaste &&\n\t\t\tisEmpty( value ) &&\n\t\t\tisURL( trimmedPlainText ) &&\n\t\t\t// For the link pasting feature, allow only http(s) protocols.\n\t\t\t/^https?:/.test( trimmedPlainText )\n\t\t) {\n\t\t\tmode = 'BLOCKS';\n\t\t}\n\n\t\tconst content = pasteHandler( {\n\t\t\tHTML: html,\n\t\t\tplainText,\n\t\t\tmode,\n\t\t\ttagName,\n\t\t\tpreserveWhiteSpace,\n\t\t} );\n\n\t\tif ( typeof content === 'string' ) {\n\t\t\tpasteInline( content );\n\t\t} else if ( content.length > 0 ) {\n\t\t\tif ( onReplace && isEmpty( value ) ) {\n\t\t\t\tonReplace( content, content.length - 1, -1 );\n\t\t\t}\n\t\t}\n\t}\n\n\tconst { defaultView } = element.ownerDocument;\n\n\t// Attach the listener to the window so parent elements have the chance to\n\t// prevent the default behavior.\n\tdefaultView.addEventListener( 'paste', _onPaste );\n\treturn () => {\n\t\tdefaultView.removeEventListener( 'paste', _onPaste );\n\t};\n};\n"],"mappings":"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","ignoreList":[]}
@@ -11,7 +11,7 @@ import { useDispatch, useRegistry, useSelect } from '@wordpress/data';
11
11
  import { useMergeRefs, useInstanceId } from '@wordpress/compose';
12
12
  import { __unstableUseRichText as useRichText, removeFormat } from '@wordpress/rich-text';
13
13
  import { Popover } from '@wordpress/components';
14
- import { store as blocksStore } from '@wordpress/blocks';
14
+ import { getBlockBindingsSource } from '@wordpress/blocks';
15
15
  import deprecated from '@wordpress/deprecated';
16
16
  import { __, sprintf } from '@wordpress/i18n';
17
17
 
@@ -30,7 +30,6 @@ import FormatEdit from './format-edit';
30
30
  import { getAllowedFormats } from './utils';
31
31
  import { Content, valueToHTMLString } from './content';
32
32
  import { withDeprecations } from './with-deprecations';
33
- import { unlock } from '../../lock-unlock';
34
33
  import { canBindBlock } from '../../hooks/use-bindings-attributes';
35
34
  import BlockContext from '../block-context';
36
35
  import { jsx as _jsx } from "react/jsx-runtime";
@@ -149,34 +148,55 @@ export function RichTextWrapper({
149
148
  } = useSelect(selector, [clientId, identifier, instanceId, originalIsSelected, isBlockSelected]);
150
149
  const {
151
150
  disableBoundBlock,
152
- bindingsPlaceholder
151
+ bindingsPlaceholder,
152
+ bindingsLabel
153
153
  } = useSelect(select => {
154
154
  var _fieldsList$relatedBi;
155
155
  if (!blockBindings?.[identifier] || !canBindBlock(blockName)) {
156
156
  return {};
157
157
  }
158
158
  const relatedBinding = blockBindings[identifier];
159
- const {
160
- getBlockBindingsSource
161
- } = unlock(select(blocksStore));
162
159
  const blockBindingsSource = getBlockBindingsSource(relatedBinding.source);
163
- const fieldsList = blockBindingsSource?.getFieldsList?.({
164
- registry,
165
- context: blockContext
166
- });
160
+ const blockBindingsContext = {};
161
+ if (blockBindingsSource?.usesContext?.length) {
162
+ for (const key of blockBindingsSource.usesContext) {
163
+ blockBindingsContext[key] = blockContext[key];
164
+ }
165
+ }
167
166
  const _disableBoundBlock = !blockBindingsSource?.canUserEditValue?.({
168
167
  select,
169
- context: blockContext,
168
+ context: blockBindingsContext,
170
169
  args: relatedBinding.args
171
170
  });
171
+
172
+ // Don't modify placeholders if value is not empty.
173
+ if (adjustedValue.length > 0) {
174
+ return {
175
+ disableBoundBlock: _disableBoundBlock,
176
+ // Null values will make them fall back to the default behavior.
177
+ bindingsPlaceholder: null,
178
+ bindingsLabel: null
179
+ };
180
+ }
181
+ const {
182
+ getBlockAttributes
183
+ } = select(blockEditorStore);
184
+ const blockAttributes = getBlockAttributes(clientId);
185
+ const fieldsList = blockBindingsSource?.getFieldsList?.({
186
+ select,
187
+ context: blockBindingsContext
188
+ });
172
189
  const bindingKey = (_fieldsList$relatedBi = fieldsList?.[relatedBinding?.args?.key]?.label) !== null && _fieldsList$relatedBi !== void 0 ? _fieldsList$relatedBi : blockBindingsSource?.label;
173
190
  const _bindingsPlaceholder = _disableBoundBlock ? bindingKey : sprintf( /* translators: %s: connected field label or source label */
174
191
  __('Add %s'), bindingKey);
192
+ const _bindingsLabel = _disableBoundBlock ? relatedBinding?.args?.key || blockBindingsSource?.label : sprintf( /* translators: %s: source label or key */
193
+ __('Empty %s; start writing to edit its value'), relatedBinding?.args?.key || blockBindingsSource?.label);
175
194
  return {
176
195
  disableBoundBlock: _disableBoundBlock,
177
- bindingsPlaceholder: (!adjustedValue || adjustedValue.length === 0) && _bindingsPlaceholder
196
+ bindingsPlaceholder: blockAttributes?.placeholder || _bindingsPlaceholder,
197
+ bindingsLabel: _bindingsLabel
178
198
  };
179
- }, [blockBindings, identifier, blockName, blockContext, registry, adjustedValue]);
199
+ }, [blockBindings, identifier, blockName, blockContext, adjustedValue]);
180
200
  const shouldDisableEditing = readOnly || disableBoundBlock;
181
201
  const {
182
202
  getSelectionStart,
@@ -290,17 +310,7 @@ export function RichTextWrapper({
290
310
  const keyboardShortcuts = useRef(new Set());
291
311
  const inputEvents = useRef(new Set());
292
312
  function onFocus() {
293
- let element = anchorRef.current;
294
- if (!element) {
295
- return;
296
- }
297
-
298
- // Writing flow might be editable, so we should make sure focus goes to
299
- // the root editable element.
300
- while (element.parentElement?.isContentEditable) {
301
- element = element.parentElement;
302
- }
303
- element.focus();
313
+ anchorRef.current?.focus();
304
314
  }
305
315
  const TagName = tagName;
306
316
  return /*#__PURE__*/_jsxs(_Fragment, {
@@ -333,7 +343,7 @@ export function RichTextWrapper({
333
343
  "aria-multiline": !disableLineBreaks,
334
344
  "aria-readonly": shouldDisableEditing,
335
345
  ...props,
336
- "aria-label": bindingsPlaceholder || props['aria-label'] || placeholder,
346
+ "aria-label": bindingsLabel || props['aria-label'] || placeholder,
337
347
  ...autocompleteProps,
338
348
  ref: useMergeRefs([
339
349
  // Rich text ref must be first because its focus listener