@wordpress/block-editor 12.3.11 → 12.3.13

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 (39) hide show
  1. package/build/components/block-list/index.js +2 -4
  2. package/build/components/block-list/index.js.map +1 -1
  3. package/build/components/block-tools/block-contextual-toolbar.js +4 -2
  4. package/build/components/block-tools/block-contextual-toolbar.js.map +1 -1
  5. package/build/components/copy-handler/index.js +2 -0
  6. package/build/components/copy-handler/index.js.map +1 -1
  7. package/build/components/inserter/hooks/use-block-types-state.js +6 -2
  8. package/build/components/inserter/hooks/use-block-types-state.js.map +1 -1
  9. package/build/components/inserter-list-item/index.js +1 -1
  10. package/build/components/inserter-list-item/index.js.map +1 -1
  11. package/build/components/rich-text/get-rich-text-values.js +11 -18
  12. package/build/components/rich-text/get-rich-text-values.js.map +1 -1
  13. package/build/components/rich-text/index.js +8 -1
  14. package/build/components/rich-text/index.js.map +1 -1
  15. package/build-module/components/block-list/index.js +2 -3
  16. package/build-module/components/block-list/index.js.map +1 -1
  17. package/build-module/components/block-tools/block-contextual-toolbar.js +4 -2
  18. package/build-module/components/block-tools/block-contextual-toolbar.js.map +1 -1
  19. package/build-module/components/copy-handler/index.js +2 -0
  20. package/build-module/components/copy-handler/index.js.map +1 -1
  21. package/build-module/components/inserter/hooks/use-block-types-state.js +7 -3
  22. package/build-module/components/inserter/hooks/use-block-types-state.js.map +1 -1
  23. package/build-module/components/inserter-list-item/index.js +1 -1
  24. package/build-module/components/inserter-list-item/index.js.map +1 -1
  25. package/build-module/components/rich-text/get-rich-text-values.js +13 -18
  26. package/build-module/components/rich-text/get-rich-text-values.js.map +1 -1
  27. package/build-module/components/rich-text/index.js +8 -1
  28. package/build-module/components/rich-text/index.js.map +1 -1
  29. package/build-style/style-rtl.css +9 -1
  30. package/build-style/style.css +9 -1
  31. package/package.json +3 -3
  32. package/src/components/block-list/index.js +3 -6
  33. package/src/components/block-tools/block-contextual-toolbar.js +43 -35
  34. package/src/components/block-tools/style.scss +12 -3
  35. package/src/components/copy-handler/index.js +1 -0
  36. package/src/components/inserter/hooks/use-block-types-state.js +15 -6
  37. package/src/components/inserter-list-item/index.js +3 -1
  38. package/src/components/rich-text/get-rich-text-values.js +22 -28
  39. package/src/components/rich-text/index.js +7 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/rich-text/index.js"],"names":["classnames","useRef","useCallback","forwardRef","createContext","useDispatch","useSelect","children","childrenSource","useInstanceId","useMergeRefs","__unstableUseRichText","useRichText","__unstableCreateElement","removeFormat","deprecated","Popover","useBlockEditorAutocompleteProps","useBlockEditContext","FormatToolbarContainer","store","blockEditorStore","useUndoAutomaticChange","useMarkPersistent","usePasteHandler","useBeforeInputRules","useInputRules","useDelete","useEnter","useFormatTypes","useRemoveBrowserShortcuts","useShortcuts","useInputEvents","useInsertReplacementText","useFirefoxCompat","FormatEdit","getMultilineTag","getAllowedFormats","Content","keyboardShortcutContext","inputEventContext","removeNativeProps","props","__unstableMobileNoFocusOnMount","deleteEnter","placeholderTextColor","textAlign","selectionColor","tagsToEliminate","disableEditingMenu","fontSize","fontFamily","fontWeight","fontStyle","minWidth","maxWidth","setRef","disableSuggestions","disableAutocorrection","restProps","RichTextWrapper","tagName","value","originalValue","onChange","originalOnChange","isSelected","originalIsSelected","multiline","inlineToolbar","wrapperClassName","autocompleters","onReplace","placeholder","allowedFormats","withoutInteractiveFormatting","onRemove","onMerge","onSplit","__unstableOnSplitAtEnd","onSplitAtEnd","__unstableOnSplitMiddle","onSplitMiddle","identifier","preserveWhiteSpace","__unstablePastePlainText","pastePlainText","__unstableEmbedURLOnPaste","__unstableDisableFormats","disableFormats","disableLineBreaks","__unstableAllowPrefixTransformations","forwardedRef","since","version","alternative","link","instanceId","anchorRef","clientId","selector","select","getSelectionStart","getSelectionEnd","selectionStart","selectionEnd","undefined","attributeKey","offset","getBlockRootClientId","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","getValue","ref","richTextRef","html","__unstableFormats","__unstableText","Object","values","changeHandler","__unstableIsSelected","__unstableMultilineTag","__unstableDependencies","__unstableAfterParse","__unstableBeforeSerialize","__unstableAddInvisibleFormats","autocompleteProps","completers","record","keyboardShortcuts","Set","inputEvents","onFocus","current","focus","TagName","className","ForwardedRichTextContainer","isEmpty","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\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\tremoveFormat,\n} from '@wordpress/rich-text';\nimport deprecated from '@wordpress/deprecated';\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 { useDelete } from './use-delete';\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 { useInsertReplacementText } from './use-insert-replacement-text';\nimport { useFirefoxCompat } from './use-firefox-compat';\nimport FormatEdit from './format-edit';\nimport { getMultilineTag, getAllowedFormats } from './utils';\nimport { Content } from './content';\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\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\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\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 { getSelectionStart, getSelectionEnd, getBlockRootClientId } =\n\t\tuseSelect( blockEditorStore );\n\tconst { selectionChange } = useDispatch( blockEditorStore );\n\tconst multilineTag = getMultilineTag( multiline );\n\tconst adjustedAllowedFormats = getAllowedFormats( {\n\t\tallowedFormats,\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\t// If we are only setting the start (or the end below), which\n\t\t\t\t// means a partial selection, and we're not updating a selection\n\t\t\t\t// with the same client ID, abort. This means the selected block\n\t\t\t\t// is a parent block.\n\t\t\t\tif (\n\t\t\t\t\tend === undefined &&\n\t\t\t\t\tgetBlockRootClientId( clientId ) !==\n\t\t\t\t\t\tgetBlockRootClientId( getSelectionEnd().clientId )\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\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\tif (\n\t\t\t\t\tstart === undefined &&\n\t\t\t\t\tgetBlockRootClientId( clientId ) !==\n\t\t\t\t\t\tgetBlockRootClientId( getSelectionStart().clientId )\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\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\tgetValue,\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 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\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\tgetValue,\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\tuseInsertReplacementText(),\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\tuseDelete( {\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\tonMerge,\n\t\t\t\t\t\tonRemove,\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( { value, onChange } ),\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/>\n\t\t</>\n\t);\n}\n\nconst ForwardedRichTextContainer = forwardRef( RichTextWrapper );\n\nForwardedRichTextContainer.Content = Content;\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","useRef","useCallback","forwardRef","createContext","useDispatch","useSelect","children","childrenSource","useInstanceId","useMergeRefs","__unstableUseRichText","useRichText","__unstableCreateElement","removeFormat","deprecated","Popover","useBlockEditorAutocompleteProps","useBlockEditContext","FormatToolbarContainer","store","blockEditorStore","useUndoAutomaticChange","useMarkPersistent","usePasteHandler","useBeforeInputRules","useInputRules","useDelete","useEnter","useFormatTypes","useRemoveBrowserShortcuts","useShortcuts","useInputEvents","useInsertReplacementText","useFirefoxCompat","FormatEdit","getMultilineTag","getAllowedFormats","Content","keyboardShortcutContext","inputEventContext","removeNativeProps","props","__unstableMobileNoFocusOnMount","deleteEnter","placeholderTextColor","textAlign","selectionColor","tagsToEliminate","disableEditingMenu","fontSize","fontFamily","fontWeight","fontStyle","minWidth","maxWidth","setRef","disableSuggestions","disableAutocorrection","restProps","RichTextWrapper","tagName","value","originalValue","onChange","originalOnChange","isSelected","originalIsSelected","multiline","inlineToolbar","wrapperClassName","autocompleters","onReplace","placeholder","allowedFormats","withoutInteractiveFormatting","onRemove","onMerge","onSplit","__unstableOnSplitAtEnd","onSplitAtEnd","__unstableOnSplitMiddle","onSplitMiddle","identifier","preserveWhiteSpace","__unstablePastePlainText","pastePlainText","__unstableEmbedURLOnPaste","__unstableDisableFormats","disableFormats","disableLineBreaks","__unstableAllowPrefixTransformations","forwardedRef","since","version","alternative","link","instanceId","anchorRef","clientId","selector","select","getSelectionStart","getSelectionEnd","selectionStart","selectionEnd","undefined","attributeKey","offset","getBlockRootClientId","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","getValue","ref","richTextRef","html","__unstableFormats","__unstableText","Object","values","changeHandler","__unstableIsSelected","__unstableMultilineTag","__unstableDependencies","__unstableAfterParse","__unstableBeforeSerialize","__unstableAddInvisibleFormats","autocompleteProps","completers","record","keyboardShortcuts","Set","inputEvents","onFocus","current","focus","TagName","className","tabIndex","ForwardedRichTextContainer","isEmpty","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\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\tremoveFormat,\n} from '@wordpress/rich-text';\nimport deprecated from '@wordpress/deprecated';\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 { useDelete } from './use-delete';\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 { useInsertReplacementText } from './use-insert-replacement-text';\nimport { useFirefoxCompat } from './use-firefox-compat';\nimport FormatEdit from './format-edit';\nimport { getMultilineTag, getAllowedFormats } from './utils';\nimport { Content } from './content';\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\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\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\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 { getSelectionStart, getSelectionEnd, getBlockRootClientId } =\n\t\tuseSelect( blockEditorStore );\n\tconst { selectionChange } = useDispatch( blockEditorStore );\n\tconst multilineTag = getMultilineTag( multiline );\n\tconst adjustedAllowedFormats = getAllowedFormats( {\n\t\tallowedFormats,\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\t// If we are only setting the start (or the end below), which\n\t\t\t\t// means a partial selection, and we're not updating a selection\n\t\t\t\t// with the same client ID, abort. This means the selected block\n\t\t\t\t// is a parent block.\n\t\t\t\tif (\n\t\t\t\t\tend === undefined &&\n\t\t\t\t\tgetBlockRootClientId( clientId ) !==\n\t\t\t\t\t\tgetBlockRootClientId( getSelectionEnd().clientId )\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\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\tif (\n\t\t\t\t\tstart === undefined &&\n\t\t\t\t\tgetBlockRootClientId( clientId ) !==\n\t\t\t\t\t\tgetBlockRootClientId( getSelectionStart().clientId )\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\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\tgetValue,\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 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\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\tgetValue,\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\tuseInsertReplacementText(),\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\tuseDelete( {\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\tonMerge,\n\t\t\t\t\t\tonRemove,\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( { value, onChange } ),\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\t// Setting tabIndex to 0 is unnecessary, the element is already\n\t\t\t\t// focusable because it's contentEditable. This also fixes a\n\t\t\t\t// Safari bug where it's not possible to Shift+Click multi\n\t\t\t\t// select blocks when Shift Clicking into an element with\n\t\t\t\t// tabIndex because Safari will focus the element. However,\n\t\t\t\t// Safari will correctly ignore nested contentEditable elements.\n\t\t\t\ttabIndex={ props.tabIndex === 0 ? null : props.tabIndex }\n\t\t\t/>\n\t\t</>\n\t);\n}\n\nconst ForwardedRichTextContainer = forwardRef( RichTextWrapper );\n\nForwardedRichTextContainer.Content = Content;\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"]}
@@ -331,6 +331,14 @@ body.is-fullscreen-mode .block-editor-block-contextual-toolbar.is-fixed {
331
331
  .block-editor-block-contextual-toolbar:has(.block-editor-block-toolbar:empty) {
332
332
  display: none;
333
333
  }
334
+ .block-editor-block-contextual-toolbar.is-collapsed::after {
335
+ content: "";
336
+ position: absolute;
337
+ right: 100%;
338
+ width: 48px;
339
+ height: 100%;
340
+ background: linear-gradient(to left, #fff, transparent);
341
+ }
334
342
  @media (min-width: 782px) {
335
343
  .block-editor-block-contextual-toolbar.is-fixed {
336
344
  margin-right: 180px;
@@ -475,7 +483,7 @@ body.is-fullscreen-mode .block-editor-block-contextual-toolbar.is-fixed {
475
483
  width: auto;
476
484
  }
477
485
  .is-fullscreen-mode .block-editor-block-contextual-toolbar.is-fixed {
478
- width: calc(100% - 240px - 256px);
486
+ width: calc(100% - 280px - 256px);
479
487
  }
480
488
  }
481
489
 
@@ -331,6 +331,14 @@ body.is-fullscreen-mode .block-editor-block-contextual-toolbar.is-fixed {
331
331
  .block-editor-block-contextual-toolbar:has(.block-editor-block-toolbar:empty) {
332
332
  display: none;
333
333
  }
334
+ .block-editor-block-contextual-toolbar.is-collapsed::after {
335
+ content: "";
336
+ position: absolute;
337
+ left: 100%;
338
+ width: 48px;
339
+ height: 100%;
340
+ background: linear-gradient(to right, #fff, transparent);
341
+ }
334
342
  @media (min-width: 782px) {
335
343
  .block-editor-block-contextual-toolbar.is-fixed {
336
344
  margin-left: 180px;
@@ -475,7 +483,7 @@ body.is-fullscreen-mode .block-editor-block-contextual-toolbar.is-fixed {
475
483
  width: auto;
476
484
  }
477
485
  .is-fullscreen-mode .block-editor-block-contextual-toolbar.is-fixed {
478
- width: calc(100% - 240px - 256px);
486
+ width: calc(100% - 280px - 256px);
479
487
  }
480
488
  }
481
489
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wordpress/block-editor",
3
- "version": "12.3.11",
3
+ "version": "12.3.13",
4
4
  "description": "Generic block editor.",
5
5
  "author": "The WordPress Contributors",
6
6
  "license": "GPL-2.0-or-later",
@@ -37,7 +37,7 @@
37
37
  "@wordpress/a11y": "^3.35.1",
38
38
  "@wordpress/api-fetch": "^6.32.1",
39
39
  "@wordpress/blob": "^3.35.1",
40
- "@wordpress/blocks": "^12.12.6",
40
+ "@wordpress/blocks": "^12.12.7",
41
41
  "@wordpress/components": "^25.1.10",
42
42
  "@wordpress/compose": "^6.12.2",
43
43
  "@wordpress/data": "^9.5.5",
@@ -85,5 +85,5 @@
85
85
  "publishConfig": {
86
86
  "access": "public"
87
87
  },
88
- "gitHead": "a6c8348f0058e714c97df49b4025e5d7d1c9e437"
88
+ "gitHead": "422f6fd382771134156919d2032765e57432be7e"
89
89
  }
@@ -33,7 +33,6 @@ import { useInBetweenInserter } from './use-in-between-inserter';
33
33
  import { store as blockEditorStore } from '../../store';
34
34
  import { usePreParsePatterns } from '../../utils/pre-parse-patterns';
35
35
  import { LayoutProvider, defaultLayout } from './layout';
36
- import BlockToolsBackCompat from '../block-tools/back-compat';
37
36
  import { useBlockSelectionClearer } from '../block-selection-clearer';
38
37
  import { useInnerBlocksProps } from '../inner-blocks';
39
38
  import {
@@ -127,11 +126,9 @@ function Root( { className, ...settings } ) {
127
126
  export default function BlockList( settings ) {
128
127
  usePreParsePatterns();
129
128
  return (
130
- <BlockToolsBackCompat>
131
- <BlockEditContextProvider value={ DEFAULT_BLOCK_EDIT_CONTEXT }>
132
- <Root { ...settings } />
133
- </BlockEditContextProvider>
134
- </BlockToolsBackCompat>
129
+ <BlockEditContextProvider value={ DEFAULT_BLOCK_EDIT_CONTEXT }>
130
+ <Root { ...settings } />
131
+ </BlockEditContextProvider>
135
132
  );
136
133
  }
137
134
 
@@ -32,48 +32,56 @@ function BlockContextualToolbar( { focusOnMount, isFixed, ...props } ) {
32
32
  const toolbarButtonRef = useRef();
33
33
 
34
34
  const isLargeViewport = useViewportMatch( 'medium' );
35
- const { blockType, hasParents, showParentSelector, selectedBlockClientId } =
36
- useSelect( ( select ) => {
37
- const {
38
- getBlockName,
39
- getBlockParents,
40
- getSelectedBlockClientIds,
41
- getBlockEditingMode,
42
- } = unlock( select( blockEditorStore ) );
43
- const { getBlockType } = select( blocksStore );
44
- const selectedBlockClientIds = getSelectedBlockClientIds();
45
- const _selectedBlockClientId = selectedBlockClientIds[ 0 ];
46
- const parents = getBlockParents( _selectedBlockClientId );
47
- const firstParentClientId = parents[ parents.length - 1 ];
48
- const parentBlockName = getBlockName( firstParentClientId );
49
- const parentBlockType = getBlockType( parentBlockName );
35
+ const {
36
+ blockType,
37
+ hasParents,
38
+ showParentSelector,
39
+ selectedBlockClientId,
40
+ isContentOnly,
41
+ } = useSelect( ( select ) => {
42
+ const {
43
+ getBlockName,
44
+ getBlockParents,
45
+ getSelectedBlockClientIds,
46
+ getBlockEditingMode,
47
+ } = unlock( select( blockEditorStore ) );
48
+ const { getBlockType } = select( blocksStore );
49
+ const selectedBlockClientIds = getSelectedBlockClientIds();
50
+ const _selectedBlockClientId = selectedBlockClientIds[ 0 ];
51
+ const parents = getBlockParents( _selectedBlockClientId );
52
+ const firstParentClientId = parents[ parents.length - 1 ];
53
+ const parentBlockName = getBlockName( firstParentClientId );
54
+ const parentBlockType = getBlockType( parentBlockName );
50
55
 
51
- return {
52
- selectedBlockClientId: _selectedBlockClientId,
53
- blockType:
54
- _selectedBlockClientId &&
55
- getBlockType( getBlockName( _selectedBlockClientId ) ),
56
- hasParents: parents.length,
57
- showParentSelector:
58
- parentBlockType &&
59
- getBlockEditingMode( firstParentClientId ) === 'default' &&
60
- hasBlockSupport(
61
- parentBlockType,
62
- '__experimentalParentSelector',
63
- true
64
- ) &&
65
- selectedBlockClientIds.length <= 1 &&
66
- getBlockEditingMode( _selectedBlockClientId ) === 'default',
67
- };
68
- }, [] );
56
+ return {
57
+ selectedBlockClientId: _selectedBlockClientId,
58
+ blockType:
59
+ _selectedBlockClientId &&
60
+ getBlockType( getBlockName( _selectedBlockClientId ) ),
61
+ hasParents: parents.length,
62
+ isContentOnly:
63
+ getBlockEditingMode( _selectedBlockClientId ) === 'contentOnly',
64
+ showParentSelector:
65
+ parentBlockType &&
66
+ getBlockEditingMode( firstParentClientId ) === 'default' &&
67
+ hasBlockSupport(
68
+ parentBlockType,
69
+ '__experimentalParentSelector',
70
+ true
71
+ ) &&
72
+ selectedBlockClientIds.length <= 1 &&
73
+ getBlockEditingMode( _selectedBlockClientId ) === 'default',
74
+ };
75
+ }, [] );
69
76
 
70
77
  useEffect( () => {
71
78
  setIsCollapsed( false );
72
79
  }, [ selectedBlockClientId ] );
73
80
 
74
81
  if (
75
- blockType &&
76
- ! hasBlockSupport( blockType, '__experimentalToolbar', true )
82
+ isContentOnly ||
83
+ ( blockType &&
84
+ ! hasBlockSupport( blockType, '__experimentalToolbar', true ) )
77
85
  ) {
78
86
  return null;
79
87
  }
@@ -125,9 +125,18 @@
125
125
  display: none;
126
126
  }
127
127
 
128
+ // Add a scrim to the right of the collapsed button.
129
+ &.is-collapsed::after {
130
+ content: "";
131
+ position: absolute;
132
+ left: 100%;
133
+ width: $grid-unit-60;
134
+ height: 100%;
135
+ background: linear-gradient(to right, $white, transparent);
136
+ }
137
+
128
138
  // on desktop and tablet viewports the toolbar is fixed
129
139
  // on top of interface header
130
-
131
140
  @include break-medium() {
132
141
  &.is-fixed {
133
142
 
@@ -308,7 +317,7 @@
308
317
  }
309
318
  }
310
319
 
311
- // on tablet vewports the toolbar is fixed
320
+ // on tablet viewports the toolbar is fixed
312
321
  // on top of interface header and covers the whole header
313
322
  // except for the inserter on the left
314
323
  @include break-medium() {
@@ -328,7 +337,7 @@
328
337
  // in full screen mode we need to account for
329
338
  // the combined with of the tools at the right of the header and the margin left
330
339
  // of the toolbar which includes four buttons
331
- width: calc(100% - 240px - #{4 * $grid-unit-80});
340
+ width: calc(100% - 280px - #{4 * $grid-unit-80});
332
341
  }
333
342
  }
334
343
  }
@@ -198,6 +198,7 @@ export function useClipboardHandler() {
198
198
  if ( shouldHandleWholeBlocks && ! expandSelectionIsNeeded ) {
199
199
  removeBlocks( selectedBlockClientIds );
200
200
  } else {
201
+ event.target.ownerDocument.activeElement.contentEditable = false;
201
202
  __unstableDeleteSelection();
202
203
  }
203
204
  } else if ( event.type === 'paste' ) {
@@ -5,6 +5,7 @@ import {
5
5
  createBlock,
6
6
  createBlocksFromInnerBlocksTemplate,
7
7
  store as blocksStore,
8
+ parse,
8
9
  } from '@wordpress/blocks';
9
10
  import { useSelect } from '@wordpress/data';
10
11
  import { useCallback } from '@wordpress/element';
@@ -37,12 +38,20 @@ const useBlockTypesState = ( rootClientId, onInsert ) => {
37
38
  );
38
39
 
39
40
  const onSelectItem = useCallback(
40
- ( { name, initialAttributes, innerBlocks }, shouldFocusBlock ) => {
41
- const insertedBlock = createBlock(
42
- name,
43
- initialAttributes,
44
- createBlocksFromInnerBlocksTemplate( innerBlocks )
45
- );
41
+ (
42
+ { name, initialAttributes, innerBlocks, syncStatus, content },
43
+ shouldFocusBlock
44
+ ) => {
45
+ const insertedBlock =
46
+ syncStatus === 'unsynced'
47
+ ? parse( content, {
48
+ __unstableSkipMigrationLogs: true,
49
+ } )
50
+ : createBlock(
51
+ name,
52
+ initialAttributes,
53
+ createBlocksFromInnerBlocksTemplate( innerBlocks )
54
+ );
46
55
 
47
56
  onInsert( insertedBlock, undefined, shouldFocusBlock );
48
57
  },
@@ -49,7 +49,9 @@ function InserterListItem( {
49
49
  ];
50
50
  }, [ item.name, item.initialAttributes, item.initialAttributes ] );
51
51
 
52
- const isSynced = isReusableBlock( item ) || isTemplatePart( item );
52
+ const isSynced =
53
+ ( isReusableBlock( item ) && item.syncStatus !== 'unsynced' ) ||
54
+ isTemplatePart( item );
53
55
 
54
56
  return (
55
57
  <InserterDraggableBlocks
@@ -18,13 +18,13 @@ import { Content } from './content';
18
18
  * except that it does not render the elements to a string, but instead collects
19
19
  * the values of all rich text `Content` elements.
20
20
  */
21
- function addValuesForElement( element, ...args ) {
21
+ function addValuesForElement( element, values, innerBlocks ) {
22
22
  if ( null === element || undefined === element || false === element ) {
23
23
  return;
24
24
  }
25
25
 
26
26
  if ( Array.isArray( element ) ) {
27
- return addValuesForElements( element, ...args );
27
+ return addValuesForElements( element, values, innerBlocks );
28
28
  }
29
29
 
30
30
  switch ( typeof element ) {
@@ -38,13 +38,12 @@ function addValuesForElement( element, ...args ) {
38
38
  switch ( type ) {
39
39
  case StrictMode:
40
40
  case Fragment:
41
- return addValuesForElements( props.children, ...args );
41
+ return addValuesForElements( props.children, values, innerBlocks );
42
42
  case RawHTML:
43
43
  return;
44
44
  case InnerBlocks.Content:
45
- return addValuesForBlocks( ...args );
45
+ return addValuesForBlocks( values, innerBlocks );
46
46
  case Content:
47
- const [ values ] = args;
48
47
  values.push( props.value );
49
48
  return;
50
49
  }
@@ -52,21 +51,19 @@ function addValuesForElement( element, ...args ) {
52
51
  switch ( typeof type ) {
53
52
  case 'string':
54
53
  if ( typeof props.children !== 'undefined' ) {
55
- return addValuesForElements( props.children, ...args );
54
+ return addValuesForElements(
55
+ props.children,
56
+ values,
57
+ innerBlocks
58
+ );
56
59
  }
57
60
  return;
58
61
  case 'function':
59
- if (
60
- type.prototype &&
61
- typeof type.prototype.render === 'function'
62
- ) {
63
- return addValuesForElement(
64
- new type( props ).render(),
65
- ...args
66
- );
67
- }
68
-
69
- return addValuesForElement( type( props ), ...args );
62
+ const el =
63
+ type.prototype && typeof type.prototype.render === 'function'
64
+ ? new type( props ).render()
65
+ : type( props );
66
+ return addValuesForElement( el, values, innerBlocks );
70
67
  }
71
68
  }
72
69
 
@@ -78,20 +75,17 @@ function addValuesForElements( children, ...args ) {
78
75
  }
79
76
  }
80
77
 
81
- function _getSaveElement( name, attributes, innerBlocks ) {
82
- return getSaveElement(
83
- name,
84
- attributes,
85
- innerBlocks.map( ( block ) =>
86
- _getSaveElement( block.name, block.attributes, block.innerBlocks )
87
- )
88
- );
89
- }
90
-
91
78
  function addValuesForBlocks( values, blocks ) {
92
79
  for ( let i = 0; i < blocks.length; i++ ) {
93
80
  const { name, attributes, innerBlocks } = blocks[ i ];
94
- const saveElement = _getSaveElement( name, attributes, innerBlocks );
81
+ const saveElement = getSaveElement(
82
+ name,
83
+ attributes,
84
+ // Instead of letting save elements use `useInnerBlocksProps.save`,
85
+ // force them to use InnerBlocks.Content instead so we can intercept
86
+ // a single component.
87
+ <InnerBlocks.Content />
88
+ );
95
89
  addValuesForElement( saveElement, values, innerBlocks );
96
90
  }
97
91
  }
@@ -412,6 +412,13 @@ function RichTextWrapper(
412
412
  props.className,
413
413
  'rich-text'
414
414
  ) }
415
+ // Setting tabIndex to 0 is unnecessary, the element is already
416
+ // focusable because it's contentEditable. This also fixes a
417
+ // Safari bug where it's not possible to Shift+Click multi
418
+ // select blocks when Shift Clicking into an element with
419
+ // tabIndex because Safari will focus the element. However,
420
+ // Safari will correctly ignore nested contentEditable elements.
421
+ tabIndex={ props.tabIndex === 0 ? null : props.tabIndex }
415
422
  />
416
423
  </>
417
424
  );