@wordpress/block-editor 10.0.1 → 10.0.3

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/block-popover/inbetween.js"],"names":["classnames","useSelect","useMemo","createContext","useReducer","useLayoutEffect","Popover","isRTL","store","blockEditorStore","__unstableUseBlockElement","useBlockElement","usePopoverScroll","InsertionPointOpenRef","BlockPopoverInbetween","previousClientId","nextClientId","children","__unstablePopoverSlot","__unstableContentRef","props","positionRecompute","forceRecompute","s","orientation","rootClientId","isVisible","select","getBlockListSettings","getBlockRootClientId","isBlockVisible","_rootClientId","previousElement","nextElement","isVertical","style","previousRect","getBoundingClientRect","nextRect","width","height","top","bottom","left","right","popoverAnchor","undefined","ownerDocument","window","DOMRect","popoverScrollRef","observer","MutationObserver","observe","attributes","disconnect","defaultView","addEventListener","removeEventListener","className"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport {\n\tuseMemo,\n\tcreateContext,\n\tuseReducer,\n\tuseLayoutEffect,\n} from '@wordpress/element';\nimport { Popover } from '@wordpress/components';\nimport { isRTL } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport { __unstableUseBlockElement as useBlockElement } from '../block-list/use-block-props/use-block-refs';\nimport usePopoverScroll from './use-popover-scroll';\n\nexport const InsertionPointOpenRef = createContext();\n\nfunction BlockPopoverInbetween( {\n\tpreviousClientId,\n\tnextClientId,\n\tchildren,\n\t__unstablePopoverSlot,\n\t__unstableContentRef,\n\t...props\n} ) {\n\t// This is a temporary hack to get the inbetween inserter to recompute properly.\n\tconst [ positionRecompute, forceRecompute ] = useReducer(\n\t\t( s ) => s + 1,\n\t\t0\n\t);\n\n\tconst { orientation, rootClientId, isVisible } = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockListSettings,\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\tisBlockVisible,\n\t\t\t} = select( blockEditorStore );\n\n\t\t\tconst _rootClientId = getBlockRootClientId(\n\t\t\t\tpreviousClientId ?? nextClientId\n\t\t\t);\n\t\t\treturn {\n\t\t\t\torientation:\n\t\t\t\t\tgetBlockListSettings( _rootClientId )?.orientation ||\n\t\t\t\t\t'vertical',\n\t\t\t\trootClientId: _rootClientId,\n\t\t\t\tisVisible:\n\t\t\t\t\tisBlockVisible( previousClientId ) &&\n\t\t\t\t\tisBlockVisible( nextClientId ),\n\t\t\t};\n\t\t},\n\t\t[ previousClientId, nextClientId ]\n\t);\n\tconst previousElement = useBlockElement( previousClientId );\n\tconst nextElement = useBlockElement( nextClientId );\n\tconst isVertical = orientation === 'vertical';\n\tconst style = useMemo( () => {\n\t\tif ( ( ! previousElement && ! nextElement ) || ! isVisible ) {\n\t\t\treturn {};\n\t\t}\n\n\t\tconst previousRect = previousElement\n\t\t\t? previousElement.getBoundingClientRect()\n\t\t\t: null;\n\t\tconst nextRect = nextElement\n\t\t\t? nextElement.getBoundingClientRect()\n\t\t\t: null;\n\n\t\tif ( isVertical ) {\n\t\t\treturn {\n\t\t\t\twidth: previousRect ? previousRect.width : nextRect.width,\n\t\t\t\theight:\n\t\t\t\t\tnextRect && previousRect\n\t\t\t\t\t\t? nextRect.top - previousRect.bottom\n\t\t\t\t\t\t: 0,\n\t\t\t};\n\t\t}\n\n\t\tlet width = 0;\n\t\tif ( previousRect && nextRect ) {\n\t\t\twidth = isRTL()\n\t\t\t\t? previousRect.left - nextRect.right\n\t\t\t\t: nextRect.left - previousRect.right;\n\t\t}\n\n\t\treturn {\n\t\t\twidth,\n\t\t\theight: previousRect ? previousRect.height : nextRect.height,\n\t\t};\n\t}, [\n\t\tpreviousElement,\n\t\tnextElement,\n\t\tisVertical,\n\t\tpositionRecompute,\n\t\tisVisible,\n\t] );\n\n\tconst popoverAnchor = useMemo( () => {\n\t\tif ( ( ! previousElement && ! nextElement ) || ! isVisible ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst { ownerDocument } = previousElement || nextElement;\n\n\t\treturn {\n\t\t\townerDocument,\n\t\t\tgetBoundingClientRect() {\n\t\t\t\tconst previousRect = previousElement\n\t\t\t\t\t? previousElement.getBoundingClientRect()\n\t\t\t\t\t: null;\n\t\t\t\tconst nextRect = nextElement\n\t\t\t\t\t? nextElement.getBoundingClientRect()\n\t\t\t\t\t: null;\n\n\t\t\t\tlet left = 0;\n\t\t\t\tlet top = 0;\n\n\t\t\t\tif ( isVertical ) {\n\t\t\t\t\t// vertical\n\t\t\t\t\ttop = previousRect ? previousRect.bottom : nextRect.top;\n\n\t\t\t\t\tif ( isRTL() ) {\n\t\t\t\t\t\t// vertical, rtl\n\t\t\t\t\t\tleft = previousRect\n\t\t\t\t\t\t\t? previousRect.right\n\t\t\t\t\t\t\t: nextRect.right;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// vertical, ltr\n\t\t\t\t\t\tleft = previousRect ? previousRect.left : nextRect.left;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\ttop = previousRect ? previousRect.top : nextRect.top;\n\n\t\t\t\t\tif ( isRTL() ) {\n\t\t\t\t\t\t// non vertical, rtl\n\t\t\t\t\t\tleft = previousRect\n\t\t\t\t\t\t\t? previousRect.left\n\t\t\t\t\t\t\t: nextRect.right;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// non vertical, ltr\n\t\t\t\t\t\tleft = previousRect\n\t\t\t\t\t\t\t? previousRect.right\n\t\t\t\t\t\t\t: nextRect.left;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn new window.DOMRect( left, top, 0, 0 );\n\t\t\t},\n\t\t};\n\t}, [\n\t\tpreviousElement,\n\t\tnextElement,\n\t\tpositionRecompute,\n\t\tisVertical,\n\t\tisVisible,\n\t] );\n\n\tconst popoverScrollRef = usePopoverScroll( __unstableContentRef );\n\n\t// This is only needed for a smooth transition when moving blocks.\n\tuseLayoutEffect( () => {\n\t\tif ( ! previousElement ) {\n\t\t\treturn;\n\t\t}\n\t\tconst observer = new window.MutationObserver( forceRecompute );\n\t\tobserver.observe( previousElement, { attributes: true } );\n\n\t\treturn () => {\n\t\t\tobserver.disconnect();\n\t\t};\n\t}, [ previousElement ] );\n\n\tuseLayoutEffect( () => {\n\t\tif ( ! nextElement ) {\n\t\t\treturn;\n\t\t}\n\t\tconst observer = new window.MutationObserver( forceRecompute );\n\t\tobserver.observe( nextElement, { attributes: true } );\n\n\t\treturn () => {\n\t\t\tobserver.disconnect();\n\t\t};\n\t}, [ nextElement ] );\n\n\tuseLayoutEffect( () => {\n\t\tif ( ! previousElement ) {\n\t\t\treturn;\n\t\t}\n\t\tpreviousElement.ownerDocument.defaultView.addEventListener(\n\t\t\t'resize',\n\t\t\tforceRecompute\n\t\t);\n\t\treturn () => {\n\t\t\tpreviousElement.ownerDocument.defaultView.removeEventListener(\n\t\t\t\t'resize',\n\t\t\t\tforceRecompute\n\t\t\t);\n\t\t};\n\t}, [ previousElement ] );\n\n\t// If there's either a previous or a next element, show the inbetween popover.\n\t// Note that drag and drop uses the inbetween popover to show the drop indicator\n\t// before the first block and after the last block.\n\tif ( ( ! previousElement && ! nextElement ) || ! isVisible ) {\n\t\treturn null;\n\t}\n\n\t/* eslint-disable jsx-a11y/no-static-element-interactions, jsx-a11y/click-events-have-key-events */\n\t// While ideally it would be enough to capture the\n\t// bubbling focus event from the Inserter, due to the\n\t// characteristics of click focusing of `button`s in\n\t// Firefox and Safari, it is not reliable.\n\t//\n\t// See: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#Clicking_and_focus\n\treturn (\n\t\t<Popover\n\t\t\tref={ popoverScrollRef }\n\t\t\tanimate={ false }\n\t\t\tanchor={ popoverAnchor }\n\t\t\tfocusOnMount={ false }\n\t\t\t// Render in the old slot if needed for backward compatibility,\n\t\t\t// otherwise render in place (not in the default popover slot).\n\t\t\t__unstableSlotName={ __unstablePopoverSlot || null }\n\t\t\t// Forces a remount of the popover when its position changes\n\t\t\t// This makes sure the popover doesn't animate from its previous position.\n\t\t\tkey={ nextClientId + '--' + rootClientId }\n\t\t\t{ ...props }\n\t\t\tclassName={ classnames(\n\t\t\t\t'block-editor-block-popover',\n\t\t\t\t'block-editor-block-popover__inbetween',\n\t\t\t\tprops.className\n\t\t\t) }\n\t\t\tresize={ false }\n\t\t\tflip={ false }\n\t\t\tplacement=\"bottom-start\"\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName=\"block-editor-block-popover__inbetween-container\"\n\t\t\t\tstyle={ style }\n\t\t\t>\n\t\t\t\t{ children }\n\t\t\t</div>\n\t\t</Popover>\n\t);\n\t/* eslint-enable jsx-a11y/no-static-element-interactions, jsx-a11y/click-events-have-key-events */\n}\n\nexport default BlockPopoverInbetween;\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/block-popover/inbetween.js"],"names":["classnames","useSelect","useMemo","createContext","useReducer","useLayoutEffect","Popover","isRTL","store","blockEditorStore","__unstableUseBlockElement","useBlockElement","usePopoverScroll","MAX_POPOVER_RECOMPUTE_COUNTER","Number","MAX_SAFE_INTEGER","InsertionPointOpenRef","BlockPopoverInbetween","previousClientId","nextClientId","children","__unstablePopoverSlot","__unstableContentRef","props","popoverRecomputeCounter","forcePopoverRecompute","s","orientation","rootClientId","isVisible","select","getBlockListSettings","getBlockRootClientId","isBlockVisible","_rootClientId","previousElement","nextElement","isVertical","style","previousRect","getBoundingClientRect","nextRect","width","height","top","bottom","left","right","popoverAnchor","undefined","ownerDocument","window","DOMRect","popoverScrollRef","observer","MutationObserver","observe","attributes","disconnect","defaultView","addEventListener","removeEventListener","className"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport {\n\tuseMemo,\n\tcreateContext,\n\tuseReducer,\n\tuseLayoutEffect,\n} from '@wordpress/element';\nimport { Popover } from '@wordpress/components';\nimport { isRTL } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport { __unstableUseBlockElement as useBlockElement } from '../block-list/use-block-props/use-block-refs';\nimport usePopoverScroll from './use-popover-scroll';\n\nconst MAX_POPOVER_RECOMPUTE_COUNTER = Number.MAX_SAFE_INTEGER;\n\nexport const InsertionPointOpenRef = createContext();\n\nfunction BlockPopoverInbetween( {\n\tpreviousClientId,\n\tnextClientId,\n\tchildren,\n\t__unstablePopoverSlot,\n\t__unstableContentRef,\n\t...props\n} ) {\n\t// This is a temporary hack to get the inbetween inserter to recompute properly.\n\tconst [ popoverRecomputeCounter, forcePopoverRecompute ] = useReducer(\n\t\t// Module is there to make sure that the counter doesn't overflow.\n\t\t( s ) => ( s + 1 ) % MAX_POPOVER_RECOMPUTE_COUNTER,\n\t\t0\n\t);\n\n\tconst { orientation, rootClientId, isVisible } = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockListSettings,\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\tisBlockVisible,\n\t\t\t} = select( blockEditorStore );\n\n\t\t\tconst _rootClientId = getBlockRootClientId(\n\t\t\t\tpreviousClientId ?? nextClientId\n\t\t\t);\n\t\t\treturn {\n\t\t\t\torientation:\n\t\t\t\t\tgetBlockListSettings( _rootClientId )?.orientation ||\n\t\t\t\t\t'vertical',\n\t\t\t\trootClientId: _rootClientId,\n\t\t\t\tisVisible:\n\t\t\t\t\tisBlockVisible( previousClientId ) &&\n\t\t\t\t\tisBlockVisible( nextClientId ),\n\t\t\t};\n\t\t},\n\t\t[ previousClientId, nextClientId ]\n\t);\n\tconst previousElement = useBlockElement( previousClientId );\n\tconst nextElement = useBlockElement( nextClientId );\n\tconst isVertical = orientation === 'vertical';\n\tconst style = useMemo( () => {\n\t\tif (\n\t\t\t// popoverRecomputeCounter is by definition always equal or greater than 0.\n\t\t\t// This check is only there to satisfy the correctness of the\n\t\t\t// exhaustive-deps rule for the `useMemo` hook.\n\t\t\tpopoverRecomputeCounter < 0 ||\n\t\t\t( ! previousElement && ! nextElement ) ||\n\t\t\t! isVisible\n\t\t) {\n\t\t\treturn {};\n\t\t}\n\n\t\tconst previousRect = previousElement\n\t\t\t? previousElement.getBoundingClientRect()\n\t\t\t: null;\n\t\tconst nextRect = nextElement\n\t\t\t? nextElement.getBoundingClientRect()\n\t\t\t: null;\n\n\t\tif ( isVertical ) {\n\t\t\treturn {\n\t\t\t\twidth: previousRect ? previousRect.width : nextRect.width,\n\t\t\t\theight:\n\t\t\t\t\tnextRect && previousRect\n\t\t\t\t\t\t? nextRect.top - previousRect.bottom\n\t\t\t\t\t\t: 0,\n\t\t\t};\n\t\t}\n\n\t\tlet width = 0;\n\t\tif ( previousRect && nextRect ) {\n\t\t\twidth = isRTL()\n\t\t\t\t? previousRect.left - nextRect.right\n\t\t\t\t: nextRect.left - previousRect.right;\n\t\t}\n\n\t\treturn {\n\t\t\twidth,\n\t\t\theight: previousRect ? previousRect.height : nextRect.height,\n\t\t};\n\t}, [\n\t\tpreviousElement,\n\t\tnextElement,\n\t\tisVertical,\n\t\tpopoverRecomputeCounter,\n\t\tisVisible,\n\t] );\n\n\tconst popoverAnchor = useMemo( () => {\n\t\tif (\n\t\t\t// popoverRecomputeCounter is by definition always equal or greater than 0.\n\t\t\t// This check is only there to satisfy the correctness of the\n\t\t\t// exhaustive-deps rule for the `useMemo` hook.\n\t\t\tpopoverRecomputeCounter < 0 ||\n\t\t\t( ! previousElement && ! nextElement ) ||\n\t\t\t! isVisible\n\t\t) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst { ownerDocument } = previousElement || nextElement;\n\n\t\treturn {\n\t\t\townerDocument,\n\t\t\tgetBoundingClientRect() {\n\t\t\t\tconst previousRect = previousElement\n\t\t\t\t\t? previousElement.getBoundingClientRect()\n\t\t\t\t\t: null;\n\t\t\t\tconst nextRect = nextElement\n\t\t\t\t\t? nextElement.getBoundingClientRect()\n\t\t\t\t\t: null;\n\n\t\t\t\tlet left = 0;\n\t\t\t\tlet top = 0;\n\n\t\t\t\tif ( isVertical ) {\n\t\t\t\t\t// vertical\n\t\t\t\t\ttop = previousRect ? previousRect.bottom : nextRect.top;\n\n\t\t\t\t\tif ( isRTL() ) {\n\t\t\t\t\t\t// vertical, rtl\n\t\t\t\t\t\tleft = previousRect\n\t\t\t\t\t\t\t? previousRect.right\n\t\t\t\t\t\t\t: nextRect.right;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// vertical, ltr\n\t\t\t\t\t\tleft = previousRect ? previousRect.left : nextRect.left;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\ttop = previousRect ? previousRect.top : nextRect.top;\n\n\t\t\t\t\tif ( isRTL() ) {\n\t\t\t\t\t\t// non vertical, rtl\n\t\t\t\t\t\tleft = previousRect\n\t\t\t\t\t\t\t? previousRect.left\n\t\t\t\t\t\t\t: nextRect.right;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// non vertical, ltr\n\t\t\t\t\t\tleft = previousRect\n\t\t\t\t\t\t\t? previousRect.right\n\t\t\t\t\t\t\t: nextRect.left;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn new window.DOMRect( left, top, 0, 0 );\n\t\t\t},\n\t\t};\n\t}, [\n\t\tpreviousElement,\n\t\tnextElement,\n\t\tpopoverRecomputeCounter,\n\t\tisVertical,\n\t\tisVisible,\n\t] );\n\n\tconst popoverScrollRef = usePopoverScroll( __unstableContentRef );\n\n\t// This is only needed for a smooth transition when moving blocks.\n\t// When blocks are moved up/down, their position can be set by\n\t// updating the `transform` property manually (i.e. without using CSS\n\t// transitions or animations). The animation, which can also scroll the block\n\t// editor, can sometimes cause the position of the Popover to get out of sync.\n\t// A MutationObserver is therefore used to make sure that changes to the\n\t// selectedElement's attribute (i.e. `transform`) can be tracked and used to\n\t// trigger the Popover to rerender.\n\tuseLayoutEffect( () => {\n\t\tif ( ! previousElement ) {\n\t\t\treturn;\n\t\t}\n\t\tconst observer = new window.MutationObserver( forcePopoverRecompute );\n\t\tobserver.observe( previousElement, { attributes: true } );\n\n\t\treturn () => {\n\t\t\tobserver.disconnect();\n\t\t};\n\t}, [ previousElement ] );\n\n\tuseLayoutEffect( () => {\n\t\tif ( ! nextElement ) {\n\t\t\treturn;\n\t\t}\n\t\tconst observer = new window.MutationObserver( forcePopoverRecompute );\n\t\tobserver.observe( nextElement, { attributes: true } );\n\n\t\treturn () => {\n\t\t\tobserver.disconnect();\n\t\t};\n\t}, [ nextElement ] );\n\n\tuseLayoutEffect( () => {\n\t\tif ( ! previousElement ) {\n\t\t\treturn;\n\t\t}\n\t\tpreviousElement.ownerDocument.defaultView.addEventListener(\n\t\t\t'resize',\n\t\t\tforcePopoverRecompute\n\t\t);\n\t\treturn () => {\n\t\t\tpreviousElement.ownerDocument.defaultView.removeEventListener(\n\t\t\t\t'resize',\n\t\t\t\tforcePopoverRecompute\n\t\t\t);\n\t\t};\n\t}, [ previousElement ] );\n\n\t// If there's either a previous or a next element, show the inbetween popover.\n\t// Note that drag and drop uses the inbetween popover to show the drop indicator\n\t// before the first block and after the last block.\n\tif ( ( ! previousElement && ! nextElement ) || ! isVisible ) {\n\t\treturn null;\n\t}\n\n\t/* eslint-disable jsx-a11y/no-static-element-interactions, jsx-a11y/click-events-have-key-events */\n\t// While ideally it would be enough to capture the\n\t// bubbling focus event from the Inserter, due to the\n\t// characteristics of click focusing of `button`s in\n\t// Firefox and Safari, it is not reliable.\n\t//\n\t// See: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#Clicking_and_focus\n\treturn (\n\t\t<Popover\n\t\t\tref={ popoverScrollRef }\n\t\t\tanimate={ false }\n\t\t\tanchor={ popoverAnchor }\n\t\t\tfocusOnMount={ false }\n\t\t\t// Render in the old slot if needed for backward compatibility,\n\t\t\t// otherwise render in place (not in the default popover slot).\n\t\t\t__unstableSlotName={ __unstablePopoverSlot || null }\n\t\t\t// Forces a remount of the popover when its position changes\n\t\t\t// This makes sure the popover doesn't animate from its previous position.\n\t\t\tkey={ nextClientId + '--' + rootClientId }\n\t\t\t{ ...props }\n\t\t\tclassName={ classnames(\n\t\t\t\t'block-editor-block-popover',\n\t\t\t\t'block-editor-block-popover__inbetween',\n\t\t\t\tprops.className\n\t\t\t) }\n\t\t\tresize={ false }\n\t\t\tflip={ false }\n\t\t\tplacement=\"bottom-start\"\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName=\"block-editor-block-popover__inbetween-container\"\n\t\t\t\tstyle={ style }\n\t\t\t>\n\t\t\t\t{ children }\n\t\t\t</div>\n\t\t</Popover>\n\t);\n\t/* eslint-enable jsx-a11y/no-static-element-interactions, jsx-a11y/click-events-have-key-events */\n}\n\nexport default BlockPopoverInbetween;\n"]}
@@ -11,13 +11,14 @@ import classnames from 'classnames';
11
11
 
12
12
  import { useMergeRefs } from '@wordpress/compose';
13
13
  import { Popover } from '@wordpress/components';
14
- import { forwardRef, useMemo } from '@wordpress/element';
14
+ import { forwardRef, useMemo, useReducer, useLayoutEffect } from '@wordpress/element';
15
15
  /**
16
16
  * Internal dependencies
17
17
  */
18
18
 
19
19
  import { __unstableUseBlockElement as useBlockElement } from '../block-list/use-block-props/use-block-refs';
20
20
  import usePopoverScroll from './use-popover-scroll';
21
+ const MAX_POPOVER_RECOMPUTE_COUNTER = Number.MAX_SAFE_INTEGER;
21
22
 
22
23
  function BlockPopover(_ref, ref) {
23
24
  let {
@@ -44,8 +45,33 @@ function BlockPopover(_ref, ref) {
44
45
  height: selectedElement.offsetHeight
45
46
  };
46
47
  }, [selectedElement, lastSelectedElement, __unstableRefreshSize]);
48
+ const [popoverAnchorRecomputeCounter, forceRecomputePopoverAnchor] = useReducer( // Module is there to make sure that the counter doesn't overflow.
49
+ s => (s + 1) % MAX_POPOVER_RECOMPUTE_COUNTER, 0); // When blocks are moved up/down, they are animated to their new position by
50
+ // updating the `transform` property manually (i.e. without using CSS
51
+ // transitions or animations). The animation, which can also scroll the block
52
+ // editor, can sometimes cause the position of the Popover to get out of sync.
53
+ // A MutationObserver is therefore used to make sure that changes to the
54
+ // selectedElement's attribute (i.e. `transform`) can be tracked and used to
55
+ // trigger the Popover to rerender.
56
+
57
+ useLayoutEffect(() => {
58
+ if (!selectedElement) {
59
+ return;
60
+ }
61
+
62
+ const observer = new window.MutationObserver(forceRecomputePopoverAnchor);
63
+ observer.observe(selectedElement, {
64
+ attributes: true
65
+ });
66
+ return () => {
67
+ observer.disconnect();
68
+ };
69
+ }, [selectedElement]);
47
70
  const popoverAnchor = useMemo(() => {
48
- if (!selectedElement || bottomClientId && !lastSelectedElement) {
71
+ if ( // popoverAnchorRecomputeCounter is by definition always equal or greater
72
+ // than 0. This check is only there to satisfy the correctness of the
73
+ // exhaustive-deps rule for the `useMemo` hook.
74
+ popoverAnchorRecomputeCounter < 0 || !selectedElement || bottomClientId && !lastSelectedElement) {
49
75
  return undefined;
50
76
  }
51
77
 
@@ -70,7 +96,7 @@ function BlockPopover(_ref, ref) {
70
96
 
71
97
  ownerDocument: selectedElement.ownerDocument
72
98
  };
73
- }, [bottomClientId, lastSelectedElement, selectedElement]);
99
+ }, [bottomClientId, lastSelectedElement, selectedElement, popoverAnchorRecomputeCounter]);
74
100
 
75
101
  if (!selectedElement || bottomClientId && !lastSelectedElement) {
76
102
  return null;
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/block-popover/index.js"],"names":["classnames","useMergeRefs","Popover","forwardRef","useMemo","__unstableUseBlockElement","useBlockElement","usePopoverScroll","BlockPopover","ref","clientId","bottomClientId","children","__unstableRefreshSize","__unstableCoverTarget","__unstablePopoverSlot","__unstableContentRef","props","selectedElement","lastSelectedElement","mergedRefs","style","position","width","offsetWidth","height","offsetHeight","popoverAnchor","undefined","getBoundingClientRect","selectedBCR","lastSelectedBCR","left","Math","min","Infinity","top","right","max","bottom","window","DOMRect","ownerDocument","className"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useMergeRefs } from '@wordpress/compose';\nimport { Popover } from '@wordpress/components';\nimport { forwardRef, useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { __unstableUseBlockElement as useBlockElement } from '../block-list/use-block-props/use-block-refs';\nimport usePopoverScroll from './use-popover-scroll';\n\nfunction BlockPopover(\n\t{\n\t\tclientId,\n\t\tbottomClientId,\n\t\tchildren,\n\t\t__unstableRefreshSize,\n\t\t__unstableCoverTarget = false,\n\t\t__unstablePopoverSlot,\n\t\t__unstableContentRef,\n\t\t...props\n\t},\n\tref\n) {\n\tconst selectedElement = useBlockElement( clientId );\n\tconst lastSelectedElement = useBlockElement( bottomClientId ?? clientId );\n\tconst mergedRefs = useMergeRefs( [\n\t\tref,\n\t\tusePopoverScroll( __unstableContentRef ),\n\t] );\n\tconst style = useMemo( () => {\n\t\tif ( ! selectedElement || lastSelectedElement !== selectedElement ) {\n\t\t\treturn {};\n\t\t}\n\n\t\treturn {\n\t\t\tposition: 'absolute',\n\t\t\twidth: selectedElement.offsetWidth,\n\t\t\theight: selectedElement.offsetHeight,\n\t\t};\n\t}, [ selectedElement, lastSelectedElement, __unstableRefreshSize ] );\n\n\tconst popoverAnchor = useMemo( () => {\n\t\tif (\n\t\t\t! selectedElement ||\n\t\t\t( bottomClientId && ! lastSelectedElement )\n\t\t) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn {\n\t\t\tgetBoundingClientRect() {\n\t\t\t\tconst selectedBCR = selectedElement.getBoundingClientRect();\n\t\t\t\tconst lastSelectedBCR =\n\t\t\t\t\tlastSelectedElement?.getBoundingClientRect();\n\n\t\t\t\t// Get the biggest rectangle that encompasses completely the currently\n\t\t\t\t// selected element and the last selected element:\n\t\t\t\t// - for top/left coordinates, use the smaller numbers\n\t\t\t\t// - for the bottom/right coordinates, use the largest numbers\n\t\t\t\tconst left = Math.min(\n\t\t\t\t\tselectedBCR.left,\n\t\t\t\t\tlastSelectedBCR?.left ?? Infinity\n\t\t\t\t);\n\t\t\t\tconst top = Math.min(\n\t\t\t\t\tselectedBCR.top,\n\t\t\t\t\tlastSelectedBCR?.top ?? Infinity\n\t\t\t\t);\n\t\t\t\tconst right = Math.max(\n\t\t\t\t\tselectedBCR.right,\n\t\t\t\t\tlastSelectedBCR.right ?? -Infinity\n\t\t\t\t);\n\t\t\t\tconst bottom = Math.max(\n\t\t\t\t\tselectedBCR.bottom,\n\t\t\t\t\tlastSelectedBCR.bottom ?? -Infinity\n\t\t\t\t);\n\t\t\t\tconst width = right - left;\n\t\t\t\tconst height = bottom - top;\n\n\t\t\t\treturn new window.DOMRect( left, top, width, height );\n\t\t\t},\n\t\t\townerDocument: selectedElement.ownerDocument,\n\t\t};\n\t}, [ bottomClientId, lastSelectedElement, selectedElement ] );\n\n\tif ( ! selectedElement || ( bottomClientId && ! lastSelectedElement ) ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<Popover\n\t\t\tref={ mergedRefs }\n\t\t\tanimate={ false }\n\t\t\tposition=\"top right left\"\n\t\t\tfocusOnMount={ false }\n\t\t\tanchor={ popoverAnchor }\n\t\t\t// Render in the old slot if needed for backward compatibility,\n\t\t\t// otherwise render in place (not in the default popover slot).\n\t\t\t__unstableSlotName={ __unstablePopoverSlot || null }\n\t\t\tresize={ false }\n\t\t\tflip={ false }\n\t\t\tshift\n\t\t\t{ ...props }\n\t\t\tclassName={ classnames(\n\t\t\t\t'block-editor-block-popover',\n\t\t\t\tprops.className\n\t\t\t) }\n\t\t>\n\t\t\t{ __unstableCoverTarget && <div style={ style }>{ children }</div> }\n\t\t\t{ ! __unstableCoverTarget && children }\n\t\t</Popover>\n\t);\n}\n\nexport default forwardRef( BlockPopover );\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/block-popover/index.js"],"names":["classnames","useMergeRefs","Popover","forwardRef","useMemo","useReducer","useLayoutEffect","__unstableUseBlockElement","useBlockElement","usePopoverScroll","MAX_POPOVER_RECOMPUTE_COUNTER","Number","MAX_SAFE_INTEGER","BlockPopover","ref","clientId","bottomClientId","children","__unstableRefreshSize","__unstableCoverTarget","__unstablePopoverSlot","__unstableContentRef","props","selectedElement","lastSelectedElement","mergedRefs","style","position","width","offsetWidth","height","offsetHeight","popoverAnchorRecomputeCounter","forceRecomputePopoverAnchor","s","observer","window","MutationObserver","observe","attributes","disconnect","popoverAnchor","undefined","getBoundingClientRect","selectedBCR","lastSelectedBCR","left","Math","min","Infinity","top","right","max","bottom","DOMRect","ownerDocument","className"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useMergeRefs } from '@wordpress/compose';\nimport { Popover } from '@wordpress/components';\nimport {\n\tforwardRef,\n\tuseMemo,\n\tuseReducer,\n\tuseLayoutEffect,\n} from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { __unstableUseBlockElement as useBlockElement } from '../block-list/use-block-props/use-block-refs';\nimport usePopoverScroll from './use-popover-scroll';\n\nconst MAX_POPOVER_RECOMPUTE_COUNTER = Number.MAX_SAFE_INTEGER;\n\nfunction BlockPopover(\n\t{\n\t\tclientId,\n\t\tbottomClientId,\n\t\tchildren,\n\t\t__unstableRefreshSize,\n\t\t__unstableCoverTarget = false,\n\t\t__unstablePopoverSlot,\n\t\t__unstableContentRef,\n\t\t...props\n\t},\n\tref\n) {\n\tconst selectedElement = useBlockElement( clientId );\n\tconst lastSelectedElement = useBlockElement( bottomClientId ?? clientId );\n\tconst mergedRefs = useMergeRefs( [\n\t\tref,\n\t\tusePopoverScroll( __unstableContentRef ),\n\t] );\n\tconst style = useMemo( () => {\n\t\tif ( ! selectedElement || lastSelectedElement !== selectedElement ) {\n\t\t\treturn {};\n\t\t}\n\n\t\treturn {\n\t\t\tposition: 'absolute',\n\t\t\twidth: selectedElement.offsetWidth,\n\t\t\theight: selectedElement.offsetHeight,\n\t\t};\n\t}, [ selectedElement, lastSelectedElement, __unstableRefreshSize ] );\n\n\tconst [ popoverAnchorRecomputeCounter, forceRecomputePopoverAnchor ] =\n\t\tuseReducer(\n\t\t\t// Module is there to make sure that the counter doesn't overflow.\n\t\t\t( s ) => ( s + 1 ) % MAX_POPOVER_RECOMPUTE_COUNTER,\n\t\t\t0\n\t\t);\n\n\t// When blocks are moved up/down, they are animated to their new position by\n\t// updating the `transform` property manually (i.e. without using CSS\n\t// transitions or animations). The animation, which can also scroll the block\n\t// editor, can sometimes cause the position of the Popover to get out of sync.\n\t// A MutationObserver is therefore used to make sure that changes to the\n\t// selectedElement's attribute (i.e. `transform`) can be tracked and used to\n\t// trigger the Popover to rerender.\n\tuseLayoutEffect( () => {\n\t\tif ( ! selectedElement ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst observer = new window.MutationObserver(\n\t\t\tforceRecomputePopoverAnchor\n\t\t);\n\t\tobserver.observe( selectedElement, { attributes: true } );\n\n\t\treturn () => {\n\t\t\tobserver.disconnect();\n\t\t};\n\t}, [ selectedElement ] );\n\n\tconst popoverAnchor = useMemo( () => {\n\t\tif (\n\t\t\t// popoverAnchorRecomputeCounter is by definition always equal or greater\n\t\t\t// than 0. This check is only there to satisfy the correctness of the\n\t\t\t// exhaustive-deps rule for the `useMemo` hook.\n\t\t\tpopoverAnchorRecomputeCounter < 0 ||\n\t\t\t! selectedElement ||\n\t\t\t( bottomClientId && ! lastSelectedElement )\n\t\t) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn {\n\t\t\tgetBoundingClientRect() {\n\t\t\t\tconst selectedBCR = selectedElement.getBoundingClientRect();\n\t\t\t\tconst lastSelectedBCR =\n\t\t\t\t\tlastSelectedElement?.getBoundingClientRect();\n\n\t\t\t\t// Get the biggest rectangle that encompasses completely the currently\n\t\t\t\t// selected element and the last selected element:\n\t\t\t\t// - for top/left coordinates, use the smaller numbers\n\t\t\t\t// - for the bottom/right coordinates, use the largest numbers\n\t\t\t\tconst left = Math.min(\n\t\t\t\t\tselectedBCR.left,\n\t\t\t\t\tlastSelectedBCR?.left ?? Infinity\n\t\t\t\t);\n\t\t\t\tconst top = Math.min(\n\t\t\t\t\tselectedBCR.top,\n\t\t\t\t\tlastSelectedBCR?.top ?? Infinity\n\t\t\t\t);\n\t\t\t\tconst right = Math.max(\n\t\t\t\t\tselectedBCR.right,\n\t\t\t\t\tlastSelectedBCR.right ?? -Infinity\n\t\t\t\t);\n\t\t\t\tconst bottom = Math.max(\n\t\t\t\t\tselectedBCR.bottom,\n\t\t\t\t\tlastSelectedBCR.bottom ?? -Infinity\n\t\t\t\t);\n\t\t\t\tconst width = right - left;\n\t\t\t\tconst height = bottom - top;\n\n\t\t\t\treturn new window.DOMRect( left, top, width, height );\n\t\t\t},\n\t\t\townerDocument: selectedElement.ownerDocument,\n\t\t};\n\t}, [\n\t\tbottomClientId,\n\t\tlastSelectedElement,\n\t\tselectedElement,\n\t\tpopoverAnchorRecomputeCounter,\n\t] );\n\n\tif ( ! selectedElement || ( bottomClientId && ! lastSelectedElement ) ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<Popover\n\t\t\tref={ mergedRefs }\n\t\t\tanimate={ false }\n\t\t\tposition=\"top right left\"\n\t\t\tfocusOnMount={ false }\n\t\t\tanchor={ popoverAnchor }\n\t\t\t// Render in the old slot if needed for backward compatibility,\n\t\t\t// otherwise render in place (not in the default popover slot).\n\t\t\t__unstableSlotName={ __unstablePopoverSlot || null }\n\t\t\tresize={ false }\n\t\t\tflip={ false }\n\t\t\tshift\n\t\t\t{ ...props }\n\t\t\tclassName={ classnames(\n\t\t\t\t'block-editor-block-popover',\n\t\t\t\tprops.className\n\t\t\t) }\n\t\t>\n\t\t\t{ __unstableCoverTarget && <div style={ style }>{ children }</div> }\n\t\t\t{ ! __unstableCoverTarget && children }\n\t\t</Popover>\n\t);\n}\n\nexport default forwardRef( BlockPopover );\n"]}
@@ -159,7 +159,8 @@ function ListView(_ref, ref) {
159
159
  ref: treeGridRef,
160
160
  onCollapseRow: collapseRow,
161
161
  onExpandRow: expandRow,
162
- onFocusRow: focusRow
162
+ onFocusRow: focusRow,
163
+ applicationAriaLabel: __('Block navigation structure')
163
164
  }, createElement(ListViewContext.Provider, {
164
165
  value: contextValue
165
166
  }, createElement(ListViewBranch, {
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/list-view/index.js"],"names":["useMergeRefs","__experimentalUseFixedWindowList","useFixedWindowList","__experimentalTreeGrid","TreeGrid","AsyncModeProvider","useSelect","useCallback","useEffect","useMemo","useRef","useReducer","forwardRef","__","ListViewBranch","ListViewContext","ListViewDropIndicator","useBlockSelection","useListViewClientIds","useListViewDropZone","useListViewExpandSelectedItem","store","blockEditorStore","expanded","state","action","Array","isArray","clientIds","reduce","newState","id","type","BLOCK_LIST_ITEM_HEIGHT","ListView","ref","blocks","showBlockMovers","isExpanded","clientIdsTree","draggedClientIds","selectedClientIds","visibleBlockCount","shouldShowInnerBlocks","select","getGlobalBlockCount","getClientIdsOfDescendants","__unstableGetEditorMode","draggedBlockCount","length","updateBlockSelection","expandedState","setExpandedState","dropZoneRef","target","blockDropTarget","elementRef","treeGridRef","isMounted","setSelectedTreeId","firstSelectedBlockClientId","selectEditorBlock","event","clientId","current","fixedListWindow","useWindowing","windowOverscan","expand","collapse","expandRow","row","dataset","block","collapseRow","focusRow","startRow","endRow","shiftKey","contextValue","isTreeGridMounted"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tuseMergeRefs,\n\t__experimentalUseFixedWindowList as useFixedWindowList,\n} from '@wordpress/compose';\nimport { __experimentalTreeGrid as TreeGrid } from '@wordpress/components';\nimport { AsyncModeProvider, useSelect } from '@wordpress/data';\nimport {\n\tuseCallback,\n\tuseEffect,\n\tuseMemo,\n\tuseRef,\n\tuseReducer,\n\tforwardRef,\n} from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport ListViewBranch from './branch';\nimport { ListViewContext } from './context';\nimport ListViewDropIndicator from './drop-indicator';\nimport useBlockSelection from './use-block-selection';\nimport useListViewClientIds from './use-list-view-client-ids';\nimport useListViewDropZone from './use-list-view-drop-zone';\nimport useListViewExpandSelectedItem from './use-list-view-expand-selected-item';\nimport { store as blockEditorStore } from '../../store';\n\nconst expanded = ( state, action ) => {\n\tif ( Array.isArray( action.clientIds ) ) {\n\t\treturn {\n\t\t\t...state,\n\t\t\t...action.clientIds.reduce(\n\t\t\t\t( newState, id ) => ( {\n\t\t\t\t\t...newState,\n\t\t\t\t\t[ id ]: action.type === 'expand',\n\t\t\t\t} ),\n\t\t\t\t{}\n\t\t\t),\n\t\t};\n\t}\n\treturn state;\n};\n\nexport const BLOCK_LIST_ITEM_HEIGHT = 36;\n\n/**\n * Show a hierarchical list of blocks.\n *\n * @param {Object} props Components props.\n * @param {string} props.id An HTML element id for the root element of ListView.\n * @param {Array} props.blocks Custom subset of block client IDs to be used instead of the default hierarchy.\n * @param {boolean} props.showBlockMovers Flag to enable block movers\n * @param {boolean} props.isExpanded Flag to determine whether nested levels are expanded by default.\n * @param {Object} ref Forwarded ref\n */\nfunction ListView(\n\t{ id, blocks, showBlockMovers = false, isExpanded = false },\n\tref\n) {\n\tconst { clientIdsTree, draggedClientIds, selectedClientIds } =\n\t\tuseListViewClientIds( blocks );\n\n\tconst { visibleBlockCount, shouldShowInnerBlocks } = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetGlobalBlockCount,\n\t\t\t\tgetClientIdsOfDescendants,\n\t\t\t\t__unstableGetEditorMode,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst draggedBlockCount =\n\t\t\t\tdraggedClientIds?.length > 0\n\t\t\t\t\t? getClientIdsOfDescendants( draggedClientIds ).length + 1\n\t\t\t\t\t: 0;\n\t\t\treturn {\n\t\t\t\tvisibleBlockCount: getGlobalBlockCount() - draggedBlockCount,\n\t\t\t\tshouldShowInnerBlocks: __unstableGetEditorMode() !== 'zoom-out',\n\t\t\t};\n\t\t},\n\t\t[ draggedClientIds ]\n\t);\n\n\tconst { updateBlockSelection } = useBlockSelection();\n\n\tconst [ expandedState, setExpandedState ] = useReducer( expanded, {} );\n\n\tconst { ref: dropZoneRef, target: blockDropTarget } = useListViewDropZone();\n\tconst elementRef = useRef();\n\tconst treeGridRef = useMergeRefs( [ elementRef, dropZoneRef, ref ] );\n\n\tconst isMounted = useRef( false );\n\tconst { setSelectedTreeId } = useListViewExpandSelectedItem( {\n\t\tfirstSelectedBlockClientId: selectedClientIds[ 0 ],\n\t\tsetExpandedState,\n\t} );\n\tconst selectEditorBlock = useCallback(\n\t\t( event, clientId ) => {\n\t\t\tupdateBlockSelection( event, clientId );\n\t\t\tsetSelectedTreeId( clientId );\n\t\t},\n\t\t[ setSelectedTreeId, updateBlockSelection ]\n\t);\n\tuseEffect( () => {\n\t\tisMounted.current = true;\n\t}, [] );\n\n\t// List View renders a fixed number of items and relies on each having a fixed item height of 36px.\n\t// If this value changes, we should also change the itemHeight value set in useFixedWindowList.\n\t// See: https://github.com/WordPress/gutenberg/pull/35230 for additional context.\n\tconst [ fixedListWindow ] = useFixedWindowList(\n\t\telementRef,\n\t\tBLOCK_LIST_ITEM_HEIGHT,\n\t\tvisibleBlockCount,\n\t\t{\n\t\t\tuseWindowing: true,\n\t\t\twindowOverscan: 40,\n\t\t}\n\t);\n\n\tconst expand = useCallback(\n\t\t( clientId ) => {\n\t\t\tif ( ! clientId ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsetExpandedState( { type: 'expand', clientIds: [ clientId ] } );\n\t\t},\n\t\t[ setExpandedState ]\n\t);\n\tconst collapse = useCallback(\n\t\t( clientId ) => {\n\t\t\tif ( ! clientId ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsetExpandedState( { type: 'collapse', clientIds: [ clientId ] } );\n\t\t},\n\t\t[ setExpandedState ]\n\t);\n\tconst expandRow = useCallback(\n\t\t( row ) => {\n\t\t\texpand( row?.dataset?.block );\n\t\t},\n\t\t[ expand ]\n\t);\n\tconst collapseRow = useCallback(\n\t\t( row ) => {\n\t\t\tcollapse( row?.dataset?.block );\n\t\t},\n\t\t[ collapse ]\n\t);\n\tconst focusRow = useCallback(\n\t\t( event, startRow, endRow ) => {\n\t\t\tif ( event.shiftKey ) {\n\t\t\t\tupdateBlockSelection(\n\t\t\t\t\tevent,\n\t\t\t\t\tstartRow?.dataset?.block,\n\t\t\t\t\tendRow?.dataset?.block\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\t\t[ updateBlockSelection ]\n\t);\n\n\tconst contextValue = useMemo(\n\t\t() => ( {\n\t\t\tisTreeGridMounted: isMounted.current,\n\t\t\tdraggedClientIds,\n\t\t\texpandedState,\n\t\t\texpand,\n\t\t\tcollapse,\n\t\t} ),\n\t\t[ isMounted.current, draggedClientIds, expandedState, expand, collapse ]\n\t);\n\n\treturn (\n\t\t<AsyncModeProvider value={ true }>\n\t\t\t<ListViewDropIndicator\n\t\t\t\tlistViewRef={ elementRef }\n\t\t\t\tblockDropTarget={ blockDropTarget }\n\t\t\t/>\n\t\t\t<TreeGrid\n\t\t\t\tid={ id }\n\t\t\t\tclassName=\"block-editor-list-view-tree\"\n\t\t\t\taria-label={ __( 'Block navigation structure' ) }\n\t\t\t\tref={ treeGridRef }\n\t\t\t\tonCollapseRow={ collapseRow }\n\t\t\t\tonExpandRow={ expandRow }\n\t\t\t\tonFocusRow={ focusRow }\n\t\t\t>\n\t\t\t\t<ListViewContext.Provider value={ contextValue }>\n\t\t\t\t\t<ListViewBranch\n\t\t\t\t\t\tblocks={ clientIdsTree }\n\t\t\t\t\t\tselectBlock={ selectEditorBlock }\n\t\t\t\t\t\tshowBlockMovers={ showBlockMovers }\n\t\t\t\t\t\tfixedListWindow={ fixedListWindow }\n\t\t\t\t\t\tselectedClientIds={ selectedClientIds }\n\t\t\t\t\t\tisExpanded={ isExpanded }\n\t\t\t\t\t\tshouldShowInnerBlocks={ shouldShowInnerBlocks }\n\t\t\t\t\t/>\n\t\t\t\t</ListViewContext.Provider>\n\t\t\t</TreeGrid>\n\t\t</AsyncModeProvider>\n\t);\n}\nexport default forwardRef( ListView );\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/list-view/index.js"],"names":["useMergeRefs","__experimentalUseFixedWindowList","useFixedWindowList","__experimentalTreeGrid","TreeGrid","AsyncModeProvider","useSelect","useCallback","useEffect","useMemo","useRef","useReducer","forwardRef","__","ListViewBranch","ListViewContext","ListViewDropIndicator","useBlockSelection","useListViewClientIds","useListViewDropZone","useListViewExpandSelectedItem","store","blockEditorStore","expanded","state","action","Array","isArray","clientIds","reduce","newState","id","type","BLOCK_LIST_ITEM_HEIGHT","ListView","ref","blocks","showBlockMovers","isExpanded","clientIdsTree","draggedClientIds","selectedClientIds","visibleBlockCount","shouldShowInnerBlocks","select","getGlobalBlockCount","getClientIdsOfDescendants","__unstableGetEditorMode","draggedBlockCount","length","updateBlockSelection","expandedState","setExpandedState","dropZoneRef","target","blockDropTarget","elementRef","treeGridRef","isMounted","setSelectedTreeId","firstSelectedBlockClientId","selectEditorBlock","event","clientId","current","fixedListWindow","useWindowing","windowOverscan","expand","collapse","expandRow","row","dataset","block","collapseRow","focusRow","startRow","endRow","shiftKey","contextValue","isTreeGridMounted"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tuseMergeRefs,\n\t__experimentalUseFixedWindowList as useFixedWindowList,\n} from '@wordpress/compose';\nimport { __experimentalTreeGrid as TreeGrid } from '@wordpress/components';\nimport { AsyncModeProvider, useSelect } from '@wordpress/data';\nimport {\n\tuseCallback,\n\tuseEffect,\n\tuseMemo,\n\tuseRef,\n\tuseReducer,\n\tforwardRef,\n} from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport ListViewBranch from './branch';\nimport { ListViewContext } from './context';\nimport ListViewDropIndicator from './drop-indicator';\nimport useBlockSelection from './use-block-selection';\nimport useListViewClientIds from './use-list-view-client-ids';\nimport useListViewDropZone from './use-list-view-drop-zone';\nimport useListViewExpandSelectedItem from './use-list-view-expand-selected-item';\nimport { store as blockEditorStore } from '../../store';\n\nconst expanded = ( state, action ) => {\n\tif ( Array.isArray( action.clientIds ) ) {\n\t\treturn {\n\t\t\t...state,\n\t\t\t...action.clientIds.reduce(\n\t\t\t\t( newState, id ) => ( {\n\t\t\t\t\t...newState,\n\t\t\t\t\t[ id ]: action.type === 'expand',\n\t\t\t\t} ),\n\t\t\t\t{}\n\t\t\t),\n\t\t};\n\t}\n\treturn state;\n};\n\nexport const BLOCK_LIST_ITEM_HEIGHT = 36;\n\n/**\n * Show a hierarchical list of blocks.\n *\n * @param {Object} props Components props.\n * @param {string} props.id An HTML element id for the root element of ListView.\n * @param {Array} props.blocks Custom subset of block client IDs to be used instead of the default hierarchy.\n * @param {boolean} props.showBlockMovers Flag to enable block movers\n * @param {boolean} props.isExpanded Flag to determine whether nested levels are expanded by default.\n * @param {Object} ref Forwarded ref\n */\nfunction ListView(\n\t{ id, blocks, showBlockMovers = false, isExpanded = false },\n\tref\n) {\n\tconst { clientIdsTree, draggedClientIds, selectedClientIds } =\n\t\tuseListViewClientIds( blocks );\n\n\tconst { visibleBlockCount, shouldShowInnerBlocks } = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetGlobalBlockCount,\n\t\t\t\tgetClientIdsOfDescendants,\n\t\t\t\t__unstableGetEditorMode,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst draggedBlockCount =\n\t\t\t\tdraggedClientIds?.length > 0\n\t\t\t\t\t? getClientIdsOfDescendants( draggedClientIds ).length + 1\n\t\t\t\t\t: 0;\n\t\t\treturn {\n\t\t\t\tvisibleBlockCount: getGlobalBlockCount() - draggedBlockCount,\n\t\t\t\tshouldShowInnerBlocks: __unstableGetEditorMode() !== 'zoom-out',\n\t\t\t};\n\t\t},\n\t\t[ draggedClientIds ]\n\t);\n\n\tconst { updateBlockSelection } = useBlockSelection();\n\n\tconst [ expandedState, setExpandedState ] = useReducer( expanded, {} );\n\n\tconst { ref: dropZoneRef, target: blockDropTarget } = useListViewDropZone();\n\tconst elementRef = useRef();\n\tconst treeGridRef = useMergeRefs( [ elementRef, dropZoneRef, ref ] );\n\n\tconst isMounted = useRef( false );\n\tconst { setSelectedTreeId } = useListViewExpandSelectedItem( {\n\t\tfirstSelectedBlockClientId: selectedClientIds[ 0 ],\n\t\tsetExpandedState,\n\t} );\n\tconst selectEditorBlock = useCallback(\n\t\t( event, clientId ) => {\n\t\t\tupdateBlockSelection( event, clientId );\n\t\t\tsetSelectedTreeId( clientId );\n\t\t},\n\t\t[ setSelectedTreeId, updateBlockSelection ]\n\t);\n\tuseEffect( () => {\n\t\tisMounted.current = true;\n\t}, [] );\n\n\t// List View renders a fixed number of items and relies on each having a fixed item height of 36px.\n\t// If this value changes, we should also change the itemHeight value set in useFixedWindowList.\n\t// See: https://github.com/WordPress/gutenberg/pull/35230 for additional context.\n\tconst [ fixedListWindow ] = useFixedWindowList(\n\t\telementRef,\n\t\tBLOCK_LIST_ITEM_HEIGHT,\n\t\tvisibleBlockCount,\n\t\t{\n\t\t\tuseWindowing: true,\n\t\t\twindowOverscan: 40,\n\t\t}\n\t);\n\n\tconst expand = useCallback(\n\t\t( clientId ) => {\n\t\t\tif ( ! clientId ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsetExpandedState( { type: 'expand', clientIds: [ clientId ] } );\n\t\t},\n\t\t[ setExpandedState ]\n\t);\n\tconst collapse = useCallback(\n\t\t( clientId ) => {\n\t\t\tif ( ! clientId ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsetExpandedState( { type: 'collapse', clientIds: [ clientId ] } );\n\t\t},\n\t\t[ setExpandedState ]\n\t);\n\tconst expandRow = useCallback(\n\t\t( row ) => {\n\t\t\texpand( row?.dataset?.block );\n\t\t},\n\t\t[ expand ]\n\t);\n\tconst collapseRow = useCallback(\n\t\t( row ) => {\n\t\t\tcollapse( row?.dataset?.block );\n\t\t},\n\t\t[ collapse ]\n\t);\n\tconst focusRow = useCallback(\n\t\t( event, startRow, endRow ) => {\n\t\t\tif ( event.shiftKey ) {\n\t\t\t\tupdateBlockSelection(\n\t\t\t\t\tevent,\n\t\t\t\t\tstartRow?.dataset?.block,\n\t\t\t\t\tendRow?.dataset?.block\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\t\t[ updateBlockSelection ]\n\t);\n\n\tconst contextValue = useMemo(\n\t\t() => ( {\n\t\t\tisTreeGridMounted: isMounted.current,\n\t\t\tdraggedClientIds,\n\t\t\texpandedState,\n\t\t\texpand,\n\t\t\tcollapse,\n\t\t} ),\n\t\t[ isMounted.current, draggedClientIds, expandedState, expand, collapse ]\n\t);\n\n\treturn (\n\t\t<AsyncModeProvider value={ true }>\n\t\t\t<ListViewDropIndicator\n\t\t\t\tlistViewRef={ elementRef }\n\t\t\t\tblockDropTarget={ blockDropTarget }\n\t\t\t/>\n\t\t\t<TreeGrid\n\t\t\t\tid={ id }\n\t\t\t\tclassName=\"block-editor-list-view-tree\"\n\t\t\t\taria-label={ __( 'Block navigation structure' ) }\n\t\t\t\tref={ treeGridRef }\n\t\t\t\tonCollapseRow={ collapseRow }\n\t\t\t\tonExpandRow={ expandRow }\n\t\t\t\tonFocusRow={ focusRow }\n\t\t\t\tapplicationAriaLabel={ __( 'Block navigation structure' ) }\n\t\t\t>\n\t\t\t\t<ListViewContext.Provider value={ contextValue }>\n\t\t\t\t\t<ListViewBranch\n\t\t\t\t\t\tblocks={ clientIdsTree }\n\t\t\t\t\t\tselectBlock={ selectEditorBlock }\n\t\t\t\t\t\tshowBlockMovers={ showBlockMovers }\n\t\t\t\t\t\tfixedListWindow={ fixedListWindow }\n\t\t\t\t\t\tselectedClientIds={ selectedClientIds }\n\t\t\t\t\t\tisExpanded={ isExpanded }\n\t\t\t\t\t\tshouldShowInnerBlocks={ shouldShowInnerBlocks }\n\t\t\t\t\t/>\n\t\t\t\t</ListViewContext.Provider>\n\t\t\t</TreeGrid>\n\t\t</AsyncModeProvider>\n\t);\n}\nexport default forwardRef( ListView );\n"]}
@@ -166,6 +166,12 @@ function RichTextWrapper(_ref, forwardedRef) {
166
166
  let adjustedOnChange = originalOnChange; // Handle deprecated format.
167
167
 
168
168
  if (Array.isArray(originalValue)) {
169
+ deprecated('wp.blockEditor.RichText value prop as children type', {
170
+ since: '6.1',
171
+ version: '6.3',
172
+ alternative: 'value prop as string',
173
+ link: 'https://developer.wordpress.org/block-editor/how-to-guides/block-tutorial/introducing-attributes-and-editable-fields/'
174
+ });
169
175
  adjustedValue = childrenSource.toHTML(originalValue);
170
176
 
171
177
  adjustedOnChange = newValue => originalOnChange(childrenSource.fromDOM(__unstableCreateElement(document, newValue).childNodes));
@@ -394,6 +400,12 @@ ForwardedRichTextContainer.Content = _ref3 => {
394
400
 
395
401
  // Handle deprecated `children` and `node` sources.
396
402
  if (Array.isArray(value)) {
403
+ deprecated('wp.blockEditor.RichText value prop as children type', {
404
+ since: '6.1',
405
+ version: '6.3',
406
+ alternative: 'value prop as string',
407
+ link: 'https://developer.wordpress.org/block-editor/how-to-guides/block-tutorial/introducing-attributes-and-editable-fields/'
408
+ });
397
409
  value = childrenSource.toHTML(value);
398
410
  }
399
411
 
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/rich-text/index.js"],"names":["classnames","RawHTML","useRef","useCallback","forwardRef","createContext","useDispatch","useSelect","children","childrenSource","useInstanceId","useMergeRefs","__unstableUseRichText","useRichText","__unstableCreateElement","isEmpty","isCollapsed","removeFormat","deprecated","BACKSPACE","DELETE","Popover","useBlockEditorAutocompleteProps","useBlockEditContext","FormatToolbarContainer","store","blockEditorStore","useUndoAutomaticChange","useMarkPersistent","usePasteHandler","useBeforeInputRules","useInputRules","useEnter","useFormatTypes","useRemoveBrowserShortcuts","useShortcuts","useInputEvents","useFirefoxCompat","FormatEdit","getMultilineTag","getAllowedFormats","keyboardShortcutContext","inputEventContext","removeNativeProps","props","__unstableMobileNoFocusOnMount","deleteEnter","placeholderTextColor","textAlign","selectionColor","tagsToEliminate","rootTagsToEliminate","disableEditingMenu","fontSize","fontFamily","fontWeight","fontStyle","minWidth","maxWidth","setRef","disableSuggestions","disableAutocorrection","restProps","RichTextWrapper","forwardedRef","tagName","value","originalValue","onChange","originalOnChange","isSelected","originalIsSelected","multiline","inlineToolbar","wrapperClassName","autocompleters","onReplace","placeholder","allowedFormats","formattingControls","withoutInteractiveFormatting","onRemove","onMerge","onSplit","__unstableOnSplitAtEnd","onSplitAtEnd","__unstableOnSplitMiddle","onSplitMiddle","identifier","preserveWhiteSpace","__unstablePastePlainText","pastePlainText","__unstableEmbedURLOnPaste","__unstableDisableFormats","disableFormats","disableLineBreaks","unstableOnFocus","__unstableAllowPrefixTransformations","since","version","alternative","link","instanceId","anchorRef","clientId","selector","select","getSelectionStart","getSelectionEnd","selectionStart","selectionEnd","undefined","attributeKey","offset","selectionChange","multilineTag","adjustedAllowedFormats","hasFormats","length","adjustedValue","adjustedOnChange","Array","isArray","toHTML","newValue","fromDOM","document","childNodes","onSelectionChange","start","end","selection","unset","formatTypes","prepareHandlers","valueHandlers","changeHandlers","dependencies","addEditorOnlyFormats","reduce","accumulator","fn","text","formats","removeEditorOnlyFormats","forEach","formatType","__experimentalCreatePrepareEditableTree","name","addInvisibleFormats","ref","richTextRef","html","__unstableFormats","__unstableText","Object","values","changeHandler","__unstableIsSelected","__unstableMultilineTag","__unstableDependencies","__unstableAfterParse","__unstableBeforeSerialize","__unstableAddInvisibleFormats","autocompleteProps","completers","record","keyboardShortcuts","Set","inputEvents","onKeyDown","event","keyCode","defaultPrevented","isReverse","hasActiveFormats","activeFormats","preventDefault","onFocus","current","focus","TagName","className","ForwardedRichTextContainer","Content","Tag","MultilineTag","content","format","RichTextShortcut","RichTextToolbarButton","__unstableRichTextInputEvent"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tRawHTML,\n\tuseRef,\n\tuseCallback,\n\tforwardRef,\n\tcreateContext,\n} from '@wordpress/element';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { children as childrenSource } from '@wordpress/blocks';\nimport { useInstanceId, useMergeRefs } from '@wordpress/compose';\nimport {\n\t__unstableUseRichText as useRichText,\n\t__unstableCreateElement,\n\tisEmpty,\n\tisCollapsed,\n\tremoveFormat,\n} from '@wordpress/rich-text';\nimport deprecated from '@wordpress/deprecated';\nimport { BACKSPACE, DELETE } from '@wordpress/keycodes';\nimport { Popover } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport { useBlockEditorAutocompleteProps } from '../autocomplete';\nimport { useBlockEditContext } from '../block-edit';\nimport FormatToolbarContainer from './format-toolbar-container';\nimport { store as blockEditorStore } from '../../store';\nimport { useUndoAutomaticChange } from './use-undo-automatic-change';\nimport { useMarkPersistent } from './use-mark-persistent';\nimport { usePasteHandler } from './use-paste-handler';\nimport { useBeforeInputRules } from './use-before-input-rules';\nimport { useInputRules } from './use-input-rules';\nimport { useEnter } from './use-enter';\nimport { useFormatTypes } from './use-format-types';\nimport { useRemoveBrowserShortcuts } from './use-remove-browser-shortcuts';\nimport { useShortcuts } from './use-shortcuts';\nimport { useInputEvents } from './use-input-events';\nimport { useFirefoxCompat } from './use-firefox-compat';\nimport FormatEdit from './format-edit';\nimport { getMultilineTag, getAllowedFormats } from './utils';\n\nexport const keyboardShortcutContext = createContext();\nexport const inputEventContext = createContext();\n\n/**\n * Removes props used for the native version of RichText so that they are not\n * passed to the DOM element and log warnings.\n *\n * @param {Object} props Props to filter.\n *\n * @return {Object} Filtered props.\n */\nfunction removeNativeProps( props ) {\n\tconst {\n\t\t__unstableMobileNoFocusOnMount,\n\t\tdeleteEnter,\n\t\tplaceholderTextColor,\n\t\ttextAlign,\n\t\tselectionColor,\n\t\ttagsToEliminate,\n\t\trootTagsToEliminate,\n\t\tdisableEditingMenu,\n\t\tfontSize,\n\t\tfontFamily,\n\t\tfontWeight,\n\t\tfontStyle,\n\t\tminWidth,\n\t\tmaxWidth,\n\t\tsetRef,\n\t\tdisableSuggestions,\n\t\tdisableAutocorrection,\n\t\t...restProps\n\t} = props;\n\treturn restProps;\n}\n\nfunction RichTextWrapper(\n\t{\n\t\tchildren,\n\t\ttagName = 'div',\n\t\tvalue: originalValue = '',\n\t\tonChange: originalOnChange,\n\t\tisSelected: originalIsSelected,\n\t\tmultiline,\n\t\tinlineToolbar,\n\t\twrapperClassName,\n\t\tautocompleters,\n\t\tonReplace,\n\t\tplaceholder,\n\t\tallowedFormats,\n\t\tformattingControls,\n\t\twithoutInteractiveFormatting,\n\t\tonRemove,\n\t\tonMerge,\n\t\tonSplit,\n\t\t__unstableOnSplitAtEnd: onSplitAtEnd,\n\t\t__unstableOnSplitMiddle: onSplitMiddle,\n\t\tidentifier,\n\t\tpreserveWhiteSpace,\n\t\t__unstablePastePlainText: pastePlainText,\n\t\t__unstableEmbedURLOnPaste,\n\t\t__unstableDisableFormats: disableFormats,\n\t\tdisableLineBreaks,\n\t\tunstableOnFocus,\n\t\t__unstableAllowPrefixTransformations,\n\t\t...props\n\t},\n\tforwardedRef\n) {\n\tif ( multiline ) {\n\t\tdeprecated( 'wp.blockEditor.RichText multiline prop', {\n\t\t\tsince: '6.1',\n\t\t\tversion: '6.3',\n\t\t\talternative: 'nested blocks (InnerBlocks)',\n\t\t\tlink: 'https://developer.wordpress.org/block-editor/how-to-guides/block-tutorial/nested-blocks-inner-blocks/',\n\t\t} );\n\t}\n\n\tconst instanceId = useInstanceId( RichTextWrapper );\n\n\tidentifier = identifier || instanceId;\n\tprops = removeNativeProps( props );\n\n\tconst anchorRef = useRef();\n\tconst { clientId } = useBlockEditContext();\n\tconst selector = ( select ) => {\n\t\tconst { getSelectionStart, getSelectionEnd } =\n\t\t\tselect( blockEditorStore );\n\t\tconst selectionStart = getSelectionStart();\n\t\tconst selectionEnd = getSelectionEnd();\n\n\t\tlet isSelected;\n\n\t\tif ( originalIsSelected === undefined ) {\n\t\t\tisSelected =\n\t\t\t\tselectionStart.clientId === clientId &&\n\t\t\t\tselectionEnd.clientId === clientId &&\n\t\t\t\tselectionStart.attributeKey === identifier;\n\t\t} else if ( originalIsSelected ) {\n\t\t\tisSelected = selectionStart.clientId === clientId;\n\t\t}\n\n\t\treturn {\n\t\t\tselectionStart: isSelected ? selectionStart.offset : undefined,\n\t\t\tselectionEnd: isSelected ? selectionEnd.offset : undefined,\n\t\t\tisSelected,\n\t\t};\n\t};\n\t// This selector must run on every render so the right selection state is\n\t// retreived from the store on merge.\n\t// To do: fix this somehow.\n\tconst { selectionStart, selectionEnd, isSelected } = useSelect( selector );\n\tconst { selectionChange } = useDispatch( blockEditorStore );\n\tconst multilineTag = getMultilineTag( multiline );\n\tconst adjustedAllowedFormats = getAllowedFormats( {\n\t\tallowedFormats,\n\t\tformattingControls,\n\t\tdisableFormats,\n\t} );\n\tconst hasFormats =\n\t\t! adjustedAllowedFormats || adjustedAllowedFormats.length > 0;\n\tlet adjustedValue = originalValue;\n\tlet adjustedOnChange = originalOnChange;\n\n\t// Handle deprecated format.\n\tif ( Array.isArray( originalValue ) ) {\n\t\tadjustedValue = childrenSource.toHTML( originalValue );\n\t\tadjustedOnChange = ( newValue ) =>\n\t\t\toriginalOnChange(\n\t\t\t\tchildrenSource.fromDOM(\n\t\t\t\t\t__unstableCreateElement( document, newValue ).childNodes\n\t\t\t\t)\n\t\t\t);\n\t}\n\n\tconst onSelectionChange = useCallback(\n\t\t( start, end ) => {\n\t\t\tconst selection = {};\n\t\t\tconst unset = start === undefined && end === undefined;\n\n\t\t\tif ( typeof start === 'number' || unset ) {\n\t\t\t\tselection.start = {\n\t\t\t\t\tclientId,\n\t\t\t\t\tattributeKey: identifier,\n\t\t\t\t\toffset: start,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif ( typeof end === 'number' || unset ) {\n\t\t\t\tselection.end = {\n\t\t\t\t\tclientId,\n\t\t\t\t\tattributeKey: identifier,\n\t\t\t\t\toffset: end,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tselectionChange( selection );\n\t\t},\n\t\t[ clientId, identifier ]\n\t);\n\n\tconst {\n\t\tformatTypes,\n\t\tprepareHandlers,\n\t\tvalueHandlers,\n\t\tchangeHandlers,\n\t\tdependencies,\n\t} = useFormatTypes( {\n\t\tclientId,\n\t\tidentifier,\n\t\twithoutInteractiveFormatting,\n\t\tallowedFormats: adjustedAllowedFormats,\n\t} );\n\n\tfunction addEditorOnlyFormats( value ) {\n\t\treturn valueHandlers.reduce(\n\t\t\t( accumulator, fn ) => fn( accumulator, value.text ),\n\t\t\tvalue.formats\n\t\t);\n\t}\n\n\tfunction removeEditorOnlyFormats( value ) {\n\t\tformatTypes.forEach( ( formatType ) => {\n\t\t\t// Remove formats created by prepareEditableTree, because they are editor only.\n\t\t\tif ( formatType.__experimentalCreatePrepareEditableTree ) {\n\t\t\t\tvalue = removeFormat(\n\t\t\t\t\tvalue,\n\t\t\t\t\tformatType.name,\n\t\t\t\t\t0,\n\t\t\t\t\tvalue.text.length\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t\treturn value.formats;\n\t}\n\n\tfunction addInvisibleFormats( value ) {\n\t\treturn prepareHandlers.reduce(\n\t\t\t( accumulator, fn ) => fn( accumulator, value.text ),\n\t\t\tvalue.formats\n\t\t);\n\t}\n\n\tconst {\n\t\tvalue,\n\t\tonChange,\n\t\tref: richTextRef,\n\t} = useRichText( {\n\t\tvalue: adjustedValue,\n\t\tonChange( html, { __unstableFormats, __unstableText } ) {\n\t\t\tadjustedOnChange( html );\n\t\t\tObject.values( changeHandlers ).forEach( ( changeHandler ) => {\n\t\t\t\tchangeHandler( __unstableFormats, __unstableText );\n\t\t\t} );\n\t\t},\n\t\tselectionStart,\n\t\tselectionEnd,\n\t\tonSelectionChange,\n\t\tplaceholder,\n\t\t__unstableIsSelected: isSelected,\n\t\t__unstableMultilineTag: multilineTag,\n\t\t__unstableDisableFormats: disableFormats,\n\t\tpreserveWhiteSpace,\n\t\t__unstableDependencies: [ ...dependencies, tagName ],\n\t\t__unstableAfterParse: addEditorOnlyFormats,\n\t\t__unstableBeforeSerialize: removeEditorOnlyFormats,\n\t\t__unstableAddInvisibleFormats: addInvisibleFormats,\n\t} );\n\tconst autocompleteProps = useBlockEditorAutocompleteProps( {\n\t\tonReplace,\n\t\tcompleters: autocompleters,\n\t\trecord: value,\n\t\tonChange,\n\t} );\n\n\tuseMarkPersistent( { html: adjustedValue, value } );\n\n\tconst keyboardShortcuts = useRef( new Set() );\n\tconst inputEvents = useRef( new Set() );\n\n\tfunction onKeyDown( event ) {\n\t\tconst { keyCode } = event;\n\n\t\tif ( event.defaultPrevented ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( keyCode === DELETE || keyCode === BACKSPACE ) {\n\t\t\tconst { start, end, text } = value;\n\t\t\tconst isReverse = keyCode === BACKSPACE;\n\t\t\tconst hasActiveFormats =\n\t\t\t\tvalue.activeFormats && !! value.activeFormats.length;\n\n\t\t\t// Only process delete if the key press occurs at an uncollapsed edge.\n\t\t\tif (\n\t\t\t\t! isCollapsed( value ) ||\n\t\t\t\thasActiveFormats ||\n\t\t\t\t( isReverse && start !== 0 ) ||\n\t\t\t\t( ! isReverse && end !== text.length )\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( onMerge ) {\n\t\t\t\tonMerge( ! isReverse );\n\t\t\t}\n\n\t\t\t// Only handle remove on Backspace. This serves dual-purpose of being\n\t\t\t// an intentional user interaction distinguishing between Backspace and\n\t\t\t// Delete to remove the empty field, but also to avoid merge & remove\n\t\t\t// causing destruction of two fields (merge, then removed merged).\n\t\t\tif ( onRemove && isEmpty( value ) && isReverse ) {\n\t\t\t\tonRemove( ! isReverse );\n\t\t\t}\n\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n\n\tfunction onFocus() {\n\t\tanchorRef.current?.focus();\n\t}\n\n\tconst TagName = tagName;\n\treturn (\n\t\t<>\n\t\t\t{ isSelected && (\n\t\t\t\t<keyboardShortcutContext.Provider value={ keyboardShortcuts }>\n\t\t\t\t\t<inputEventContext.Provider value={ inputEvents }>\n\t\t\t\t\t\t<Popover.__unstableSlotNameProvider value=\"__unstable-block-tools-after\">\n\t\t\t\t\t\t\t{ children &&\n\t\t\t\t\t\t\t\tchildren( { value, onChange, onFocus } ) }\n\t\t\t\t\t\t\t<FormatEdit\n\t\t\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t\t\tonFocus={ onFocus }\n\t\t\t\t\t\t\t\tformatTypes={ formatTypes }\n\t\t\t\t\t\t\t\tforwardedRef={ anchorRef }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Popover.__unstableSlotNameProvider>\n\t\t\t\t\t</inputEventContext.Provider>\n\t\t\t\t</keyboardShortcutContext.Provider>\n\t\t\t) }\n\t\t\t{ isSelected && hasFormats && (\n\t\t\t\t<FormatToolbarContainer\n\t\t\t\t\tinline={ inlineToolbar }\n\t\t\t\t\teditableContentElement={ anchorRef.current }\n\t\t\t\t\tvalue={ value }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t<TagName\n\t\t\t\t// Overridable props.\n\t\t\t\trole=\"textbox\"\n\t\t\t\taria-multiline={ ! disableLineBreaks }\n\t\t\t\taria-label={ placeholder }\n\t\t\t\t{ ...props }\n\t\t\t\t{ ...autocompleteProps }\n\t\t\t\tref={ useMergeRefs( [\n\t\t\t\t\tforwardedRef,\n\t\t\t\t\tautocompleteProps.ref,\n\t\t\t\t\tprops.ref,\n\t\t\t\t\trichTextRef,\n\t\t\t\t\tuseBeforeInputRules( { value, onChange } ),\n\t\t\t\t\tuseInputRules( {\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\tonChange,\n\t\t\t\t\t\t__unstableAllowPrefixTransformations,\n\t\t\t\t\t\tformatTypes,\n\t\t\t\t\t\tonReplace,\n\t\t\t\t\t\tselectionChange,\n\t\t\t\t\t} ),\n\t\t\t\t\tuseRemoveBrowserShortcuts(),\n\t\t\t\t\tuseShortcuts( keyboardShortcuts ),\n\t\t\t\t\tuseInputEvents( inputEvents ),\n\t\t\t\t\tuseUndoAutomaticChange(),\n\t\t\t\t\tusePasteHandler( {\n\t\t\t\t\t\tisSelected,\n\t\t\t\t\t\tdisableFormats,\n\t\t\t\t\t\tonChange,\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\tformatTypes,\n\t\t\t\t\t\ttagName,\n\t\t\t\t\t\tonReplace,\n\t\t\t\t\t\tonSplit,\n\t\t\t\t\t\tonSplitMiddle,\n\t\t\t\t\t\t__unstableEmbedURLOnPaste,\n\t\t\t\t\t\tmultilineTag,\n\t\t\t\t\t\tpreserveWhiteSpace,\n\t\t\t\t\t\tpastePlainText,\n\t\t\t\t\t} ),\n\t\t\t\t\tuseEnter( {\n\t\t\t\t\t\tremoveEditorOnlyFormats,\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\tonReplace,\n\t\t\t\t\t\tonSplit,\n\t\t\t\t\t\tonSplitMiddle,\n\t\t\t\t\t\tmultilineTag,\n\t\t\t\t\t\tonChange,\n\t\t\t\t\t\tdisableLineBreaks,\n\t\t\t\t\t\tonSplitAtEnd,\n\t\t\t\t\t} ),\n\t\t\t\t\tuseFirefoxCompat(),\n\t\t\t\t\tanchorRef,\n\t\t\t\t] ) }\n\t\t\t\tcontentEditable={ true }\n\t\t\t\tsuppressContentEditableWarning={ true }\n\t\t\t\tclassName={ classnames(\n\t\t\t\t\t'block-editor-rich-text__editable',\n\t\t\t\t\tprops.className,\n\t\t\t\t\t'rich-text'\n\t\t\t\t) }\n\t\t\t\tonFocus={ unstableOnFocus }\n\t\t\t\tonKeyDown={ onKeyDown }\n\t\t\t/>\n\t\t</>\n\t);\n}\n\nconst ForwardedRichTextContainer = forwardRef( RichTextWrapper );\n\nForwardedRichTextContainer.Content = ( {\n\tvalue,\n\ttagName: Tag,\n\tmultiline,\n\t...props\n} ) => {\n\t// Handle deprecated `children` and `node` sources.\n\tif ( Array.isArray( value ) ) {\n\t\tvalue = childrenSource.toHTML( value );\n\t}\n\n\tconst MultilineTag = getMultilineTag( multiline );\n\n\tif ( ! value && MultilineTag ) {\n\t\tvalue = `<${ MultilineTag }></${ MultilineTag }>`;\n\t}\n\n\tconst content = <RawHTML>{ value }</RawHTML>;\n\n\tif ( Tag ) {\n\t\tconst { format, ...restProps } = props;\n\t\treturn <Tag { ...restProps }>{ content }</Tag>;\n\t}\n\n\treturn content;\n};\n\nForwardedRichTextContainer.isEmpty = ( value ) => {\n\treturn ! value || value.length === 0;\n};\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/rich-text/README.md\n */\nexport default ForwardedRichTextContainer;\nexport { RichTextShortcut } from './shortcut';\nexport { RichTextToolbarButton } from './toolbar-button';\nexport { __unstableRichTextInputEvent } from './input-event';\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/rich-text/index.js"],"names":["classnames","RawHTML","useRef","useCallback","forwardRef","createContext","useDispatch","useSelect","children","childrenSource","useInstanceId","useMergeRefs","__unstableUseRichText","useRichText","__unstableCreateElement","isEmpty","isCollapsed","removeFormat","deprecated","BACKSPACE","DELETE","Popover","useBlockEditorAutocompleteProps","useBlockEditContext","FormatToolbarContainer","store","blockEditorStore","useUndoAutomaticChange","useMarkPersistent","usePasteHandler","useBeforeInputRules","useInputRules","useEnter","useFormatTypes","useRemoveBrowserShortcuts","useShortcuts","useInputEvents","useFirefoxCompat","FormatEdit","getMultilineTag","getAllowedFormats","keyboardShortcutContext","inputEventContext","removeNativeProps","props","__unstableMobileNoFocusOnMount","deleteEnter","placeholderTextColor","textAlign","selectionColor","tagsToEliminate","rootTagsToEliminate","disableEditingMenu","fontSize","fontFamily","fontWeight","fontStyle","minWidth","maxWidth","setRef","disableSuggestions","disableAutocorrection","restProps","RichTextWrapper","forwardedRef","tagName","value","originalValue","onChange","originalOnChange","isSelected","originalIsSelected","multiline","inlineToolbar","wrapperClassName","autocompleters","onReplace","placeholder","allowedFormats","formattingControls","withoutInteractiveFormatting","onRemove","onMerge","onSplit","__unstableOnSplitAtEnd","onSplitAtEnd","__unstableOnSplitMiddle","onSplitMiddle","identifier","preserveWhiteSpace","__unstablePastePlainText","pastePlainText","__unstableEmbedURLOnPaste","__unstableDisableFormats","disableFormats","disableLineBreaks","unstableOnFocus","__unstableAllowPrefixTransformations","since","version","alternative","link","instanceId","anchorRef","clientId","selector","select","getSelectionStart","getSelectionEnd","selectionStart","selectionEnd","undefined","attributeKey","offset","selectionChange","multilineTag","adjustedAllowedFormats","hasFormats","length","adjustedValue","adjustedOnChange","Array","isArray","toHTML","newValue","fromDOM","document","childNodes","onSelectionChange","start","end","selection","unset","formatTypes","prepareHandlers","valueHandlers","changeHandlers","dependencies","addEditorOnlyFormats","reduce","accumulator","fn","text","formats","removeEditorOnlyFormats","forEach","formatType","__experimentalCreatePrepareEditableTree","name","addInvisibleFormats","ref","richTextRef","html","__unstableFormats","__unstableText","Object","values","changeHandler","__unstableIsSelected","__unstableMultilineTag","__unstableDependencies","__unstableAfterParse","__unstableBeforeSerialize","__unstableAddInvisibleFormats","autocompleteProps","completers","record","keyboardShortcuts","Set","inputEvents","onKeyDown","event","keyCode","defaultPrevented","isReverse","hasActiveFormats","activeFormats","preventDefault","onFocus","current","focus","TagName","className","ForwardedRichTextContainer","Content","Tag","MultilineTag","content","format","RichTextShortcut","RichTextToolbarButton","__unstableRichTextInputEvent"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tRawHTML,\n\tuseRef,\n\tuseCallback,\n\tforwardRef,\n\tcreateContext,\n} from '@wordpress/element';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { children as childrenSource } from '@wordpress/blocks';\nimport { useInstanceId, useMergeRefs } from '@wordpress/compose';\nimport {\n\t__unstableUseRichText as useRichText,\n\t__unstableCreateElement,\n\tisEmpty,\n\tisCollapsed,\n\tremoveFormat,\n} from '@wordpress/rich-text';\nimport deprecated from '@wordpress/deprecated';\nimport { BACKSPACE, DELETE } from '@wordpress/keycodes';\nimport { Popover } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport { useBlockEditorAutocompleteProps } from '../autocomplete';\nimport { useBlockEditContext } from '../block-edit';\nimport FormatToolbarContainer from './format-toolbar-container';\nimport { store as blockEditorStore } from '../../store';\nimport { useUndoAutomaticChange } from './use-undo-automatic-change';\nimport { useMarkPersistent } from './use-mark-persistent';\nimport { usePasteHandler } from './use-paste-handler';\nimport { useBeforeInputRules } from './use-before-input-rules';\nimport { useInputRules } from './use-input-rules';\nimport { useEnter } from './use-enter';\nimport { useFormatTypes } from './use-format-types';\nimport { useRemoveBrowserShortcuts } from './use-remove-browser-shortcuts';\nimport { useShortcuts } from './use-shortcuts';\nimport { useInputEvents } from './use-input-events';\nimport { useFirefoxCompat } from './use-firefox-compat';\nimport FormatEdit from './format-edit';\nimport { getMultilineTag, getAllowedFormats } from './utils';\n\nexport const keyboardShortcutContext = createContext();\nexport const inputEventContext = createContext();\n\n/**\n * Removes props used for the native version of RichText so that they are not\n * passed to the DOM element and log warnings.\n *\n * @param {Object} props Props to filter.\n *\n * @return {Object} Filtered props.\n */\nfunction removeNativeProps( props ) {\n\tconst {\n\t\t__unstableMobileNoFocusOnMount,\n\t\tdeleteEnter,\n\t\tplaceholderTextColor,\n\t\ttextAlign,\n\t\tselectionColor,\n\t\ttagsToEliminate,\n\t\trootTagsToEliminate,\n\t\tdisableEditingMenu,\n\t\tfontSize,\n\t\tfontFamily,\n\t\tfontWeight,\n\t\tfontStyle,\n\t\tminWidth,\n\t\tmaxWidth,\n\t\tsetRef,\n\t\tdisableSuggestions,\n\t\tdisableAutocorrection,\n\t\t...restProps\n\t} = props;\n\treturn restProps;\n}\n\nfunction RichTextWrapper(\n\t{\n\t\tchildren,\n\t\ttagName = 'div',\n\t\tvalue: originalValue = '',\n\t\tonChange: originalOnChange,\n\t\tisSelected: originalIsSelected,\n\t\tmultiline,\n\t\tinlineToolbar,\n\t\twrapperClassName,\n\t\tautocompleters,\n\t\tonReplace,\n\t\tplaceholder,\n\t\tallowedFormats,\n\t\tformattingControls,\n\t\twithoutInteractiveFormatting,\n\t\tonRemove,\n\t\tonMerge,\n\t\tonSplit,\n\t\t__unstableOnSplitAtEnd: onSplitAtEnd,\n\t\t__unstableOnSplitMiddle: onSplitMiddle,\n\t\tidentifier,\n\t\tpreserveWhiteSpace,\n\t\t__unstablePastePlainText: pastePlainText,\n\t\t__unstableEmbedURLOnPaste,\n\t\t__unstableDisableFormats: disableFormats,\n\t\tdisableLineBreaks,\n\t\tunstableOnFocus,\n\t\t__unstableAllowPrefixTransformations,\n\t\t...props\n\t},\n\tforwardedRef\n) {\n\tif ( multiline ) {\n\t\tdeprecated( 'wp.blockEditor.RichText multiline prop', {\n\t\t\tsince: '6.1',\n\t\t\tversion: '6.3',\n\t\t\talternative: 'nested blocks (InnerBlocks)',\n\t\t\tlink: 'https://developer.wordpress.org/block-editor/how-to-guides/block-tutorial/nested-blocks-inner-blocks/',\n\t\t} );\n\t}\n\n\tconst instanceId = useInstanceId( RichTextWrapper );\n\n\tidentifier = identifier || instanceId;\n\tprops = removeNativeProps( props );\n\n\tconst anchorRef = useRef();\n\tconst { clientId } = useBlockEditContext();\n\tconst selector = ( select ) => {\n\t\tconst { getSelectionStart, getSelectionEnd } =\n\t\t\tselect( blockEditorStore );\n\t\tconst selectionStart = getSelectionStart();\n\t\tconst selectionEnd = getSelectionEnd();\n\n\t\tlet isSelected;\n\n\t\tif ( originalIsSelected === undefined ) {\n\t\t\tisSelected =\n\t\t\t\tselectionStart.clientId === clientId &&\n\t\t\t\tselectionEnd.clientId === clientId &&\n\t\t\t\tselectionStart.attributeKey === identifier;\n\t\t} else if ( originalIsSelected ) {\n\t\t\tisSelected = selectionStart.clientId === clientId;\n\t\t}\n\n\t\treturn {\n\t\t\tselectionStart: isSelected ? selectionStart.offset : undefined,\n\t\t\tselectionEnd: isSelected ? selectionEnd.offset : undefined,\n\t\t\tisSelected,\n\t\t};\n\t};\n\t// This selector must run on every render so the right selection state is\n\t// retreived from the store on merge.\n\t// To do: fix this somehow.\n\tconst { selectionStart, selectionEnd, isSelected } = useSelect( selector );\n\tconst { selectionChange } = useDispatch( blockEditorStore );\n\tconst multilineTag = getMultilineTag( multiline );\n\tconst adjustedAllowedFormats = getAllowedFormats( {\n\t\tallowedFormats,\n\t\tformattingControls,\n\t\tdisableFormats,\n\t} );\n\tconst hasFormats =\n\t\t! adjustedAllowedFormats || adjustedAllowedFormats.length > 0;\n\tlet adjustedValue = originalValue;\n\tlet adjustedOnChange = originalOnChange;\n\n\t// Handle deprecated format.\n\tif ( Array.isArray( originalValue ) ) {\n\t\tdeprecated( 'wp.blockEditor.RichText value prop as children type', {\n\t\t\tsince: '6.1',\n\t\t\tversion: '6.3',\n\t\t\talternative: 'value prop as string',\n\t\t\tlink: 'https://developer.wordpress.org/block-editor/how-to-guides/block-tutorial/introducing-attributes-and-editable-fields/',\n\t\t} );\n\n\t\tadjustedValue = childrenSource.toHTML( originalValue );\n\t\tadjustedOnChange = ( newValue ) =>\n\t\t\toriginalOnChange(\n\t\t\t\tchildrenSource.fromDOM(\n\t\t\t\t\t__unstableCreateElement( document, newValue ).childNodes\n\t\t\t\t)\n\t\t\t);\n\t}\n\n\tconst onSelectionChange = useCallback(\n\t\t( start, end ) => {\n\t\t\tconst selection = {};\n\t\t\tconst unset = start === undefined && end === undefined;\n\n\t\t\tif ( typeof start === 'number' || unset ) {\n\t\t\t\tselection.start = {\n\t\t\t\t\tclientId,\n\t\t\t\t\tattributeKey: identifier,\n\t\t\t\t\toffset: start,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif ( typeof end === 'number' || unset ) {\n\t\t\t\tselection.end = {\n\t\t\t\t\tclientId,\n\t\t\t\t\tattributeKey: identifier,\n\t\t\t\t\toffset: end,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tselectionChange( selection );\n\t\t},\n\t\t[ clientId, identifier ]\n\t);\n\n\tconst {\n\t\tformatTypes,\n\t\tprepareHandlers,\n\t\tvalueHandlers,\n\t\tchangeHandlers,\n\t\tdependencies,\n\t} = useFormatTypes( {\n\t\tclientId,\n\t\tidentifier,\n\t\twithoutInteractiveFormatting,\n\t\tallowedFormats: adjustedAllowedFormats,\n\t} );\n\n\tfunction addEditorOnlyFormats( value ) {\n\t\treturn valueHandlers.reduce(\n\t\t\t( accumulator, fn ) => fn( accumulator, value.text ),\n\t\t\tvalue.formats\n\t\t);\n\t}\n\n\tfunction removeEditorOnlyFormats( value ) {\n\t\tformatTypes.forEach( ( formatType ) => {\n\t\t\t// Remove formats created by prepareEditableTree, because they are editor only.\n\t\t\tif ( formatType.__experimentalCreatePrepareEditableTree ) {\n\t\t\t\tvalue = removeFormat(\n\t\t\t\t\tvalue,\n\t\t\t\t\tformatType.name,\n\t\t\t\t\t0,\n\t\t\t\t\tvalue.text.length\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t\treturn value.formats;\n\t}\n\n\tfunction addInvisibleFormats( value ) {\n\t\treturn prepareHandlers.reduce(\n\t\t\t( accumulator, fn ) => fn( accumulator, value.text ),\n\t\t\tvalue.formats\n\t\t);\n\t}\n\n\tconst {\n\t\tvalue,\n\t\tonChange,\n\t\tref: richTextRef,\n\t} = useRichText( {\n\t\tvalue: adjustedValue,\n\t\tonChange( html, { __unstableFormats, __unstableText } ) {\n\t\t\tadjustedOnChange( html );\n\t\t\tObject.values( changeHandlers ).forEach( ( changeHandler ) => {\n\t\t\t\tchangeHandler( __unstableFormats, __unstableText );\n\t\t\t} );\n\t\t},\n\t\tselectionStart,\n\t\tselectionEnd,\n\t\tonSelectionChange,\n\t\tplaceholder,\n\t\t__unstableIsSelected: isSelected,\n\t\t__unstableMultilineTag: multilineTag,\n\t\t__unstableDisableFormats: disableFormats,\n\t\tpreserveWhiteSpace,\n\t\t__unstableDependencies: [ ...dependencies, tagName ],\n\t\t__unstableAfterParse: addEditorOnlyFormats,\n\t\t__unstableBeforeSerialize: removeEditorOnlyFormats,\n\t\t__unstableAddInvisibleFormats: addInvisibleFormats,\n\t} );\n\tconst autocompleteProps = useBlockEditorAutocompleteProps( {\n\t\tonReplace,\n\t\tcompleters: autocompleters,\n\t\trecord: value,\n\t\tonChange,\n\t} );\n\n\tuseMarkPersistent( { html: adjustedValue, value } );\n\n\tconst keyboardShortcuts = useRef( new Set() );\n\tconst inputEvents = useRef( new Set() );\n\n\tfunction onKeyDown( event ) {\n\t\tconst { keyCode } = event;\n\n\t\tif ( event.defaultPrevented ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( keyCode === DELETE || keyCode === BACKSPACE ) {\n\t\t\tconst { start, end, text } = value;\n\t\t\tconst isReverse = keyCode === BACKSPACE;\n\t\t\tconst hasActiveFormats =\n\t\t\t\tvalue.activeFormats && !! value.activeFormats.length;\n\n\t\t\t// Only process delete if the key press occurs at an uncollapsed edge.\n\t\t\tif (\n\t\t\t\t! isCollapsed( value ) ||\n\t\t\t\thasActiveFormats ||\n\t\t\t\t( isReverse && start !== 0 ) ||\n\t\t\t\t( ! isReverse && end !== text.length )\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( onMerge ) {\n\t\t\t\tonMerge( ! isReverse );\n\t\t\t}\n\n\t\t\t// Only handle remove on Backspace. This serves dual-purpose of being\n\t\t\t// an intentional user interaction distinguishing between Backspace and\n\t\t\t// Delete to remove the empty field, but also to avoid merge & remove\n\t\t\t// causing destruction of two fields (merge, then removed merged).\n\t\t\tif ( onRemove && isEmpty( value ) && isReverse ) {\n\t\t\t\tonRemove( ! isReverse );\n\t\t\t}\n\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n\n\tfunction onFocus() {\n\t\tanchorRef.current?.focus();\n\t}\n\n\tconst TagName = tagName;\n\treturn (\n\t\t<>\n\t\t\t{ isSelected && (\n\t\t\t\t<keyboardShortcutContext.Provider value={ keyboardShortcuts }>\n\t\t\t\t\t<inputEventContext.Provider value={ inputEvents }>\n\t\t\t\t\t\t<Popover.__unstableSlotNameProvider value=\"__unstable-block-tools-after\">\n\t\t\t\t\t\t\t{ children &&\n\t\t\t\t\t\t\t\tchildren( { value, onChange, onFocus } ) }\n\t\t\t\t\t\t\t<FormatEdit\n\t\t\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t\t\tonFocus={ onFocus }\n\t\t\t\t\t\t\t\tformatTypes={ formatTypes }\n\t\t\t\t\t\t\t\tforwardedRef={ anchorRef }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Popover.__unstableSlotNameProvider>\n\t\t\t\t\t</inputEventContext.Provider>\n\t\t\t\t</keyboardShortcutContext.Provider>\n\t\t\t) }\n\t\t\t{ isSelected && hasFormats && (\n\t\t\t\t<FormatToolbarContainer\n\t\t\t\t\tinline={ inlineToolbar }\n\t\t\t\t\teditableContentElement={ anchorRef.current }\n\t\t\t\t\tvalue={ value }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t<TagName\n\t\t\t\t// Overridable props.\n\t\t\t\trole=\"textbox\"\n\t\t\t\taria-multiline={ ! disableLineBreaks }\n\t\t\t\taria-label={ placeholder }\n\t\t\t\t{ ...props }\n\t\t\t\t{ ...autocompleteProps }\n\t\t\t\tref={ useMergeRefs( [\n\t\t\t\t\tforwardedRef,\n\t\t\t\t\tautocompleteProps.ref,\n\t\t\t\t\tprops.ref,\n\t\t\t\t\trichTextRef,\n\t\t\t\t\tuseBeforeInputRules( { value, onChange } ),\n\t\t\t\t\tuseInputRules( {\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\tonChange,\n\t\t\t\t\t\t__unstableAllowPrefixTransformations,\n\t\t\t\t\t\tformatTypes,\n\t\t\t\t\t\tonReplace,\n\t\t\t\t\t\tselectionChange,\n\t\t\t\t\t} ),\n\t\t\t\t\tuseRemoveBrowserShortcuts(),\n\t\t\t\t\tuseShortcuts( keyboardShortcuts ),\n\t\t\t\t\tuseInputEvents( inputEvents ),\n\t\t\t\t\tuseUndoAutomaticChange(),\n\t\t\t\t\tusePasteHandler( {\n\t\t\t\t\t\tisSelected,\n\t\t\t\t\t\tdisableFormats,\n\t\t\t\t\t\tonChange,\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\tformatTypes,\n\t\t\t\t\t\ttagName,\n\t\t\t\t\t\tonReplace,\n\t\t\t\t\t\tonSplit,\n\t\t\t\t\t\tonSplitMiddle,\n\t\t\t\t\t\t__unstableEmbedURLOnPaste,\n\t\t\t\t\t\tmultilineTag,\n\t\t\t\t\t\tpreserveWhiteSpace,\n\t\t\t\t\t\tpastePlainText,\n\t\t\t\t\t} ),\n\t\t\t\t\tuseEnter( {\n\t\t\t\t\t\tremoveEditorOnlyFormats,\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\tonReplace,\n\t\t\t\t\t\tonSplit,\n\t\t\t\t\t\tonSplitMiddle,\n\t\t\t\t\t\tmultilineTag,\n\t\t\t\t\t\tonChange,\n\t\t\t\t\t\tdisableLineBreaks,\n\t\t\t\t\t\tonSplitAtEnd,\n\t\t\t\t\t} ),\n\t\t\t\t\tuseFirefoxCompat(),\n\t\t\t\t\tanchorRef,\n\t\t\t\t] ) }\n\t\t\t\tcontentEditable={ true }\n\t\t\t\tsuppressContentEditableWarning={ true }\n\t\t\t\tclassName={ classnames(\n\t\t\t\t\t'block-editor-rich-text__editable',\n\t\t\t\t\tprops.className,\n\t\t\t\t\t'rich-text'\n\t\t\t\t) }\n\t\t\t\tonFocus={ unstableOnFocus }\n\t\t\t\tonKeyDown={ onKeyDown }\n\t\t\t/>\n\t\t</>\n\t);\n}\n\nconst ForwardedRichTextContainer = forwardRef( RichTextWrapper );\n\nForwardedRichTextContainer.Content = ( {\n\tvalue,\n\ttagName: Tag,\n\tmultiline,\n\t...props\n} ) => {\n\t// Handle deprecated `children` and `node` sources.\n\tif ( Array.isArray( value ) ) {\n\t\tdeprecated( 'wp.blockEditor.RichText value prop as children type', {\n\t\t\tsince: '6.1',\n\t\t\tversion: '6.3',\n\t\t\talternative: 'value prop as string',\n\t\t\tlink: 'https://developer.wordpress.org/block-editor/how-to-guides/block-tutorial/introducing-attributes-and-editable-fields/',\n\t\t} );\n\n\t\tvalue = childrenSource.toHTML( value );\n\t}\n\n\tconst MultilineTag = getMultilineTag( multiline );\n\n\tif ( ! value && MultilineTag ) {\n\t\tvalue = `<${ MultilineTag }></${ MultilineTag }>`;\n\t}\n\n\tconst content = <RawHTML>{ value }</RawHTML>;\n\n\tif ( Tag ) {\n\t\tconst { format, ...restProps } = props;\n\t\treturn <Tag { ...restProps }>{ content }</Tag>;\n\t}\n\n\treturn content;\n};\n\nForwardedRichTextContainer.isEmpty = ( value ) => {\n\treturn ! value || value.length === 0;\n};\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/rich-text/README.md\n */\nexport default ForwardedRichTextContainer;\nexport { RichTextShortcut } from './shortcut';\nexport { RichTextToolbarButton } from './toolbar-button';\nexport { __unstableRichTextInputEvent } from './input-event';\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wordpress/block-editor",
3
- "version": "10.0.1",
3
+ "version": "10.0.3",
4
4
  "description": "Generic block editor.",
5
5
  "author": "The WordPress Contributors",
6
6
  "license": "GPL-2.0-or-later",
@@ -33,32 +33,32 @@
33
33
  "dependencies": {
34
34
  "@babel/runtime": "^7.16.0",
35
35
  "@react-spring/web": "^9.4.5",
36
- "@wordpress/a11y": "^3.17.0",
37
- "@wordpress/api-fetch": "^6.14.0",
38
- "@wordpress/blob": "^3.17.0",
39
- "@wordpress/blocks": "^11.16.1",
40
- "@wordpress/components": "^21.0.1",
41
- "@wordpress/compose": "^5.15.1",
42
- "@wordpress/data": "^7.1.1",
43
- "@wordpress/date": "^4.17.0",
44
- "@wordpress/deprecated": "^3.17.0",
45
- "@wordpress/dom": "^3.17.1",
46
- "@wordpress/element": "^4.15.0",
47
- "@wordpress/hooks": "^3.17.0",
48
- "@wordpress/html-entities": "^3.17.0",
49
- "@wordpress/i18n": "^4.17.0",
50
- "@wordpress/icons": "^9.8.0",
51
- "@wordpress/is-shallow-equal": "^4.17.0",
52
- "@wordpress/keyboard-shortcuts": "^3.15.1",
53
- "@wordpress/keycodes": "^3.17.0",
54
- "@wordpress/notices": "^3.17.1",
55
- "@wordpress/rich-text": "^5.15.1",
56
- "@wordpress/shortcode": "^3.17.0",
57
- "@wordpress/style-engine": "^1.0.0",
58
- "@wordpress/token-list": "^2.17.0",
59
- "@wordpress/url": "^3.18.0",
60
- "@wordpress/warning": "^2.17.0",
61
- "@wordpress/wordcount": "^3.17.0",
36
+ "@wordpress/a11y": "^3.17.1",
37
+ "@wordpress/api-fetch": "^6.14.1",
38
+ "@wordpress/blob": "^3.17.1",
39
+ "@wordpress/blocks": "^11.16.3",
40
+ "@wordpress/components": "^21.0.3",
41
+ "@wordpress/compose": "^5.15.2",
42
+ "@wordpress/data": "^7.1.2",
43
+ "@wordpress/date": "^4.17.1",
44
+ "@wordpress/deprecated": "^3.17.1",
45
+ "@wordpress/dom": "^3.17.2",
46
+ "@wordpress/element": "^4.15.1",
47
+ "@wordpress/hooks": "^3.17.1",
48
+ "@wordpress/html-entities": "^3.17.1",
49
+ "@wordpress/i18n": "^4.17.1",
50
+ "@wordpress/icons": "^9.8.1",
51
+ "@wordpress/is-shallow-equal": "^4.17.1",
52
+ "@wordpress/keyboard-shortcuts": "^3.15.2",
53
+ "@wordpress/keycodes": "^3.17.1",
54
+ "@wordpress/notices": "^3.17.2",
55
+ "@wordpress/rich-text": "^5.15.2",
56
+ "@wordpress/shortcode": "^3.17.1",
57
+ "@wordpress/style-engine": "^1.0.2",
58
+ "@wordpress/token-list": "^2.17.1",
59
+ "@wordpress/url": "^3.18.1",
60
+ "@wordpress/warning": "^2.17.1",
61
+ "@wordpress/wordcount": "^3.17.1",
62
62
  "change-case": "^4.1.2",
63
63
  "classnames": "^2.3.1",
64
64
  "colord": "^2.7.0",
@@ -67,7 +67,7 @@
67
67
  "inherits": "^2.0.3",
68
68
  "lodash": "^4.17.21",
69
69
  "react-autosize-textarea": "^7.1.0",
70
- "react-easy-crop": "^3.0.0",
70
+ "react-easy-crop": "^4.5.1",
71
71
  "rememo": "^4.0.0",
72
72
  "remove-accents": "^0.4.2",
73
73
  "traverse": "^0.6.6"
@@ -79,5 +79,5 @@
79
79
  "publishConfig": {
80
80
  "access": "public"
81
81
  },
82
- "gitHead": "56ef3f5a754e44155ee79e827c7a1d0efc1ee5aa"
82
+ "gitHead": "54a676dba557a76062d3bf91bfe8a3e3ea12d254"
83
83
  }
@@ -23,6 +23,8 @@ import { store as blockEditorStore } from '../../store';
23
23
  import { __unstableUseBlockElement as useBlockElement } from '../block-list/use-block-props/use-block-refs';
24
24
  import usePopoverScroll from './use-popover-scroll';
25
25
 
26
+ const MAX_POPOVER_RECOMPUTE_COUNTER = Number.MAX_SAFE_INTEGER;
27
+
26
28
  export const InsertionPointOpenRef = createContext();
27
29
 
28
30
  function BlockPopoverInbetween( {
@@ -34,8 +36,9 @@ function BlockPopoverInbetween( {
34
36
  ...props
35
37
  } ) {
36
38
  // This is a temporary hack to get the inbetween inserter to recompute properly.
37
- const [ positionRecompute, forceRecompute ] = useReducer(
38
- ( s ) => s + 1,
39
+ const [ popoverRecomputeCounter, forcePopoverRecompute ] = useReducer(
40
+ // Module is there to make sure that the counter doesn't overflow.
41
+ ( s ) => ( s + 1 ) % MAX_POPOVER_RECOMPUTE_COUNTER,
39
42
  0
40
43
  );
41
44
 
@@ -66,7 +69,14 @@ function BlockPopoverInbetween( {
66
69
  const nextElement = useBlockElement( nextClientId );
67
70
  const isVertical = orientation === 'vertical';
68
71
  const style = useMemo( () => {
69
- if ( ( ! previousElement && ! nextElement ) || ! isVisible ) {
72
+ if (
73
+ // popoverRecomputeCounter is by definition always equal or greater than 0.
74
+ // This check is only there to satisfy the correctness of the
75
+ // exhaustive-deps rule for the `useMemo` hook.
76
+ popoverRecomputeCounter < 0 ||
77
+ ( ! previousElement && ! nextElement ) ||
78
+ ! isVisible
79
+ ) {
70
80
  return {};
71
81
  }
72
82
 
@@ -102,12 +112,19 @@ function BlockPopoverInbetween( {
102
112
  previousElement,
103
113
  nextElement,
104
114
  isVertical,
105
- positionRecompute,
115
+ popoverRecomputeCounter,
106
116
  isVisible,
107
117
  ] );
108
118
 
109
119
  const popoverAnchor = useMemo( () => {
110
- if ( ( ! previousElement && ! nextElement ) || ! isVisible ) {
120
+ if (
121
+ // popoverRecomputeCounter is by definition always equal or greater than 0.
122
+ // This check is only there to satisfy the correctness of the
123
+ // exhaustive-deps rule for the `useMemo` hook.
124
+ popoverRecomputeCounter < 0 ||
125
+ ( ! previousElement && ! nextElement ) ||
126
+ ! isVisible
127
+ ) {
111
128
  return undefined;
112
129
  }
113
130
 
@@ -161,7 +178,7 @@ function BlockPopoverInbetween( {
161
178
  }, [
162
179
  previousElement,
163
180
  nextElement,
164
- positionRecompute,
181
+ popoverRecomputeCounter,
165
182
  isVertical,
166
183
  isVisible,
167
184
  ] );
@@ -169,11 +186,18 @@ function BlockPopoverInbetween( {
169
186
  const popoverScrollRef = usePopoverScroll( __unstableContentRef );
170
187
 
171
188
  // This is only needed for a smooth transition when moving blocks.
189
+ // When blocks are moved up/down, their position can be set by
190
+ // updating the `transform` property manually (i.e. without using CSS
191
+ // transitions or animations). The animation, which can also scroll the block
192
+ // editor, can sometimes cause the position of the Popover to get out of sync.
193
+ // A MutationObserver is therefore used to make sure that changes to the
194
+ // selectedElement's attribute (i.e. `transform`) can be tracked and used to
195
+ // trigger the Popover to rerender.
172
196
  useLayoutEffect( () => {
173
197
  if ( ! previousElement ) {
174
198
  return;
175
199
  }
176
- const observer = new window.MutationObserver( forceRecompute );
200
+ const observer = new window.MutationObserver( forcePopoverRecompute );
177
201
  observer.observe( previousElement, { attributes: true } );
178
202
 
179
203
  return () => {
@@ -185,7 +209,7 @@ function BlockPopoverInbetween( {
185
209
  if ( ! nextElement ) {
186
210
  return;
187
211
  }
188
- const observer = new window.MutationObserver( forceRecompute );
212
+ const observer = new window.MutationObserver( forcePopoverRecompute );
189
213
  observer.observe( nextElement, { attributes: true } );
190
214
 
191
215
  return () => {
@@ -199,12 +223,12 @@ function BlockPopoverInbetween( {
199
223
  }
200
224
  previousElement.ownerDocument.defaultView.addEventListener(
201
225
  'resize',
202
- forceRecompute
226
+ forcePopoverRecompute
203
227
  );
204
228
  return () => {
205
229
  previousElement.ownerDocument.defaultView.removeEventListener(
206
230
  'resize',
207
- forceRecompute
231
+ forcePopoverRecompute
208
232
  );
209
233
  };
210
234
  }, [ previousElement ] );