@wordpress/block-editor 12.6.0 → 12.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +2 -0
- package/README.md +2 -2
- package/build/autocompleters/block.js +6 -2
- package/build/autocompleters/block.js.map +1 -1
- package/build/components/block-editing-mode/index.js +1 -1
- package/build/components/block-editing-mode/index.js.map +1 -1
- package/build/components/block-list/block.js +4 -2
- package/build/components/block-list/block.js.map +1 -1
- package/build/components/block-list/index.js +2 -4
- package/build/components/block-list/index.js.map +1 -1
- package/build/components/block-parent-selector/index.js +6 -21
- package/build/components/block-parent-selector/index.js.map +1 -1
- package/build/components/block-preview/auto.js +6 -1
- package/build/components/block-preview/auto.js.map +1 -1
- package/build/components/block-settings-menu/block-settings-dropdown.js +3 -17
- package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build/components/block-toolbar/index.js +4 -34
- package/build/components/block-toolbar/index.js.map +1 -1
- package/build/components/block-toolbar/utils.js +56 -51
- package/build/components/block-toolbar/utils.js.map +1 -1
- package/build/components/block-tools/block-contextual-toolbar.js +4 -2
- package/build/components/block-tools/block-contextual-toolbar.js.map +1 -1
- package/build/components/block-variation-picker/index.native.js +10 -20
- package/build/components/block-variation-picker/index.native.js.map +1 -1
- package/build/components/editor-styles/index.js +2 -2
- package/build/components/editor-styles/index.js.map +1 -1
- package/build/components/font-sizes/fluid-utils.js +11 -11
- package/build/components/font-sizes/fluid-utils.js.map +1 -1
- package/build/components/global-styles/behaviors-panel.js +66 -0
- package/build/components/global-styles/behaviors-panel.js.map +1 -0
- package/build/components/global-styles/hooks.js +118 -4
- package/build/components/global-styles/hooks.js.map +1 -1
- package/build/components/global-styles/index.js +20 -0
- package/build/components/global-styles/index.js.map +1 -1
- package/build/components/global-styles/typography-utils.js +4 -4
- package/build/components/global-styles/typography-utils.js.map +1 -1
- package/build/components/global-styles/utils.js +1 -1
- package/build/components/global-styles/utils.js.map +1 -1
- package/build/components/inserter/hooks/use-block-types-state.js +6 -2
- package/build/components/inserter/hooks/use-block-types-state.js.map +1 -1
- package/build/components/inserter/hooks/use-debounced-input.js +5 -7
- package/build/components/inserter/hooks/use-debounced-input.js.map +1 -1
- package/build/components/inserter/hooks/use-patterns-state.js +3 -2
- package/build/components/inserter/hooks/use-patterns-state.js.map +1 -1
- package/build/components/inserter/reusable-blocks-tab.js +3 -2
- package/build/components/inserter/reusable-blocks-tab.js.map +1 -1
- package/build/components/inserter-list-item/index.js +1 -1
- package/build/components/inserter-list-item/index.js.map +1 -1
- package/build/components/link-control/index.js +47 -6
- package/build/components/link-control/index.js.map +1 -1
- package/build/components/link-control/link-preview.js +3 -3
- package/build/components/link-control/link-preview.js.map +1 -1
- package/build/components/list-view/use-list-view-drop-zone.js +6 -1
- package/build/components/list-view/use-list-view-drop-zone.js.map +1 -1
- package/build/components/media-replace-flow/index.native.js +15 -3
- package/build/components/media-replace-flow/index.native.js.map +1 -1
- package/build/components/rich-text/format-edit.js +57 -28
- package/build/components/rich-text/format-edit.js.map +1 -1
- package/build/components/rich-text/get-rich-text-values.js +11 -18
- package/build/components/rich-text/get-rich-text-values.js.map +1 -1
- package/build/components/spacing-sizes-control/utils.js +2 -2
- package/build/components/spacing-sizes-control/utils.js.map +1 -1
- package/build/hooks/behaviors.js +5 -12
- package/build/hooks/behaviors.js.map +1 -1
- package/build/hooks/border.js +2 -1
- package/build/hooks/border.js.map +1 -1
- package/build/hooks/style.js +11 -2
- package/build/hooks/style.js.map +1 -1
- package/build/private-apis.js +4 -1
- package/build/private-apis.js.map +1 -1
- package/build/store/actions.js +2 -3
- package/build/store/actions.js.map +1 -1
- package/build/store/selectors.js +4 -71
- package/build/store/selectors.js.map +1 -1
- package/build-module/autocompleters/block.js +7 -3
- package/build-module/autocompleters/block.js.map +1 -1
- package/build-module/components/block-editing-mode/index.js +1 -1
- package/build-module/components/block-editing-mode/index.js.map +1 -1
- package/build-module/components/block-list/block.js +4 -2
- package/build-module/components/block-list/block.js.map +1 -1
- package/build-module/components/block-list/index.js +2 -3
- package/build-module/components/block-list/index.js.map +1 -1
- package/build-module/components/block-parent-selector/index.js +7 -22
- package/build-module/components/block-parent-selector/index.js.map +1 -1
- package/build-module/components/block-preview/auto.js +6 -1
- package/build-module/components/block-preview/auto.js.map +1 -1
- package/build-module/components/block-settings-menu/block-settings-dropdown.js +4 -18
- package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build-module/components/block-toolbar/index.js +6 -36
- package/build-module/components/block-toolbar/index.js.map +1 -1
- package/build-module/components/block-toolbar/utils.js +54 -49
- package/build-module/components/block-toolbar/utils.js.map +1 -1
- package/build-module/components/block-tools/block-contextual-toolbar.js +4 -2
- package/build-module/components/block-tools/block-contextual-toolbar.js.map +1 -1
- package/build-module/components/block-variation-picker/index.native.js +13 -23
- package/build-module/components/block-variation-picker/index.native.js.map +1 -1
- package/build-module/components/editor-styles/index.js +2 -2
- package/build-module/components/editor-styles/index.js.map +1 -1
- package/build-module/components/font-sizes/fluid-utils.js +11 -11
- package/build-module/components/font-sizes/fluid-utils.js.map +1 -1
- package/build-module/components/global-styles/behaviors-panel.js +57 -0
- package/build-module/components/global-styles/behaviors-panel.js.map +1 -0
- package/build-module/components/global-styles/hooks.js +115 -5
- package/build-module/components/global-styles/hooks.js.map +1 -1
- package/build-module/components/global-styles/index.js +2 -1
- package/build-module/components/global-styles/index.js.map +1 -1
- package/build-module/components/global-styles/typography-utils.js +4 -4
- package/build-module/components/global-styles/typography-utils.js.map +1 -1
- package/build-module/components/global-styles/utils.js +1 -1
- package/build-module/components/global-styles/utils.js.map +1 -1
- package/build-module/components/inserter/hooks/use-block-types-state.js +7 -3
- package/build-module/components/inserter/hooks/use-block-types-state.js.map +1 -1
- package/build-module/components/inserter/hooks/use-debounced-input.js +5 -7
- package/build-module/components/inserter/hooks/use-debounced-input.js.map +1 -1
- package/build-module/components/inserter/hooks/use-patterns-state.js +3 -2
- package/build-module/components/inserter/hooks/use-patterns-state.js.map +1 -1
- package/build-module/components/inserter/reusable-blocks-tab.js +3 -2
- package/build-module/components/inserter/reusable-blocks-tab.js.map +1 -1
- package/build-module/components/inserter-list-item/index.js +1 -1
- package/build-module/components/inserter-list-item/index.js.map +1 -1
- package/build-module/components/link-control/index.js +45 -6
- package/build-module/components/link-control/index.js.map +1 -1
- package/build-module/components/link-control/link-preview.js +3 -3
- package/build-module/components/link-control/link-preview.js.map +1 -1
- package/build-module/components/list-view/use-list-view-drop-zone.js +6 -1
- package/build-module/components/list-view/use-list-view-drop-zone.js.map +1 -1
- package/build-module/components/media-replace-flow/index.native.js +15 -3
- package/build-module/components/media-replace-flow/index.native.js.map +1 -1
- package/build-module/components/rich-text/format-edit.js +51 -26
- package/build-module/components/rich-text/format-edit.js.map +1 -1
- package/build-module/components/rich-text/get-rich-text-values.js +13 -18
- package/build-module/components/rich-text/get-rich-text-values.js.map +1 -1
- package/build-module/components/spacing-sizes-control/utils.js +2 -2
- package/build-module/components/spacing-sizes-control/utils.js.map +1 -1
- package/build-module/hooks/behaviors.js +5 -12
- package/build-module/hooks/behaviors.js.map +1 -1
- package/build-module/hooks/border.js +2 -1
- package/build-module/hooks/border.js.map +1 -1
- package/build-module/hooks/style.js +11 -2
- package/build-module/hooks/style.js.map +1 -1
- package/build-module/private-apis.js +3 -1
- package/build-module/private-apis.js.map +1 -1
- package/build-module/store/actions.js +2 -3
- package/build-module/store/actions.js.map +1 -1
- package/build-module/store/selectors.js +4 -69
- package/build-module/store/selectors.js.map +1 -1
- package/build-style/style-rtl.css +18 -5
- package/build-style/style.css +18 -5
- package/package.json +31 -31
- package/src/autocompleters/block.js +21 -6
- package/src/components/block-draggable/test/index.native.js +2 -3
- package/src/components/block-editing-mode/index.js +1 -1
- package/src/components/block-list/block.js +6 -1
- package/src/components/block-list/index.js +3 -6
- package/src/components/block-list/test/block-invalid-warning.native.js +8 -1
- package/src/components/block-mover/test/__snapshots__/index.native.js.snap +24 -0
- package/src/components/block-parent-selector/index.js +30 -42
- package/src/components/block-preview/auto.js +8 -1
- package/src/components/block-preview/style.scss +2 -1
- package/src/components/block-settings-menu/block-settings-dropdown.js +4 -13
- package/src/components/block-toolbar/index.js +36 -63
- package/src/components/block-toolbar/utils.js +57 -45
- package/src/components/block-tools/block-contextual-toolbar.js +43 -35
- package/src/components/block-tools/style.scss +17 -5
- package/src/components/block-variation-picker/index.native.js +52 -72
- package/src/components/color-palette/test/__snapshots__/control.js.snap +1 -1
- package/src/components/editor-styles/index.js +2 -2
- package/src/components/font-sizes/fluid-utils.js +17 -17
- package/src/components/font-sizes/test/fluid-utils.js +6 -6
- package/src/components/global-styles/behaviors-panel.js +71 -0
- package/src/components/global-styles/hooks.js +114 -5
- package/src/components/global-styles/index.js +3 -0
- package/src/components/global-styles/test/typography-utils.js +6 -6
- package/src/components/global-styles/typography-utils.js +4 -4
- package/src/components/global-styles/utils.js +2 -1
- package/src/components/inserter/hooks/use-block-types-state.js +15 -6
- package/src/components/inserter/hooks/use-debounced-input.js +8 -7
- package/src/components/inserter/hooks/use-patterns-state.js +2 -1
- package/src/components/inserter/reusable-blocks-tab.js +4 -1
- package/src/components/inserter-list-item/index.js +3 -1
- package/src/components/link-control/README.md +12 -3
- package/src/components/link-control/index.js +43 -6
- package/src/components/link-control/link-preview.js +6 -4
- package/src/components/link-control/style.scss +3 -2
- package/src/components/link-control/test/index.js +2 -1
- package/src/components/list-view/use-list-view-drop-zone.js +5 -1
- package/src/components/media-replace-flow/index.native.js +12 -3
- package/src/components/media-upload/test/index.native.js +1 -0
- package/src/components/rich-text/format-edit.js +62 -38
- package/src/components/rich-text/get-rich-text-values.js +22 -28
- package/src/components/spacing-sizes-control/test/utils.js +9 -1
- package/src/components/spacing-sizes-control/utils.js +2 -2
- package/src/hooks/behaviors.js +10 -16
- package/src/hooks/border.js +2 -1
- package/src/hooks/style.js +7 -3
- package/src/private-apis.js +2 -0
- package/src/store/actions.js +22 -28
- package/src/store/selectors.js +3 -80
- package/src/store/test/selectors.js +7 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/block-settings-menu/block-settings-dropdown.js"],"names":["POPOVER_PROPS","className","placement","CopyMenuItem","blocks","onCopy","label","ref","copyMenuItemBlocksLabel","length","copyMenuItemLabel","BlockSettingsDropdown","clientIds","__experimentalSelectBlock","children","__unstableDisplayLocation","props","blockClientIds","Array","isArray","count","firstBlockClientId","firstParentClientId","isDistractionFree","onlyBlock","parentBlockType","previousBlockClientId","selectedBlockClientIds","select","getBlockCount","getBlockName","getBlockRootClientId","getPreviousBlockClientId","getSelectedBlockClientIds","getSettings","getBlockAttributes","blockEditorStore","getActiveBlockVariation","blocksStore","_firstParentClientId","parentBlockName","getBlockOrder","shortcuts","getShortcutRepresentation","keyboardShortcutsStore","duplicate","remove","insertAfter","insertBefore","isMatch","selectBlock","toggleBlockHighlight","hasSelectedBlocks","updateSelectionAfterDuplicate","clientIdsPromise","ids","updateSelectionAfterRemove","blockToFocus","shouldUpdateSelection","removeBlockLabel","selectParentButtonRef","gestures","showParentOutlineGestures","onChange","isFocused","parentBlockIsSelected","includes","canCopyStyles","canDuplicate","canInsertDefaultBlock","canMove","canRemove","onDuplicate","onInsertAfter","onInsertBefore","onRemove","onPasteStyles","onMoveTo","moreVertical","onKeyDown","event","defaultPrevented","preventDefault","onClose","icon","title","Children","map","child"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tgetBlockType,\n\tserialize,\n\tstore as blocksStore,\n} from '@wordpress/blocks';\nimport { DropdownMenu, MenuGroup, MenuItem } from '@wordpress/components';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { moreVertical } from '@wordpress/icons';\nimport {\n\tChildren,\n\tcloneElement,\n\tuseCallback,\n\tuseRef,\n} from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\nimport {\n\tstore as keyboardShortcutsStore,\n\t__unstableUseShortcutEventMatch,\n} from '@wordpress/keyboard-shortcuts';\nimport { pipe, useCopyToClipboard } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport BlockActions from '../block-actions';\nimport BlockIcon from '../block-icon';\nimport BlockHTMLConvertButton from './block-html-convert-button';\nimport __unstableBlockSettingsMenuFirstItem from './block-settings-menu-first-item';\nimport BlockSettingsMenuControls from '../block-settings-menu-controls';\nimport { store as blockEditorStore } from '../../store';\nimport { useShowMoversGestures } from '../block-toolbar/utils';\n\nconst POPOVER_PROPS = {\n\tclassName: 'block-editor-block-settings-menu__popover',\n\tplacement: 'bottom-start',\n};\n\nfunction CopyMenuItem( { blocks, onCopy, label } ) {\n\tconst ref = useCopyToClipboard( () => serialize( blocks ), onCopy );\n\tconst copyMenuItemBlocksLabel =\n\t\tblocks.length > 1 ? __( 'Copy blocks' ) : __( 'Copy' );\n\tconst copyMenuItemLabel = label ? label : copyMenuItemBlocksLabel;\n\treturn <MenuItem ref={ ref }>{ copyMenuItemLabel }</MenuItem>;\n}\n\nexport function BlockSettingsDropdown( {\n\tclientIds,\n\t__experimentalSelectBlock,\n\tchildren,\n\t__unstableDisplayLocation,\n\t...props\n} ) {\n\tconst blockClientIds = Array.isArray( clientIds )\n\t\t? clientIds\n\t\t: [ clientIds ];\n\tconst count = blockClientIds.length;\n\tconst firstBlockClientId = blockClientIds[ 0 ];\n\tconst {\n\t\tfirstParentClientId,\n\t\tisDistractionFree,\n\t\tonlyBlock,\n\t\tparentBlockType,\n\t\tpreviousBlockClientId,\n\t\tselectedBlockClientIds,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockCount,\n\t\t\t\tgetBlockName,\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\tgetPreviousBlockClientId,\n\t\t\t\tgetSelectedBlockClientIds,\n\t\t\t\tgetSettings,\n\t\t\t\tgetBlockAttributes,\n\t\t\t} = select( blockEditorStore );\n\n\t\t\tconst { getActiveBlockVariation } = select( blocksStore );\n\n\t\t\tconst _firstParentClientId =\n\t\t\t\tgetBlockRootClientId( firstBlockClientId );\n\t\t\tconst parentBlockName =\n\t\t\t\t_firstParentClientId && getBlockName( _firstParentClientId );\n\n\t\t\treturn {\n\t\t\t\tfirstParentClientId: _firstParentClientId,\n\t\t\t\tisDistractionFree: getSettings().isDistractionFree,\n\t\t\t\tonlyBlock: 1 === getBlockCount( _firstParentClientId ),\n\t\t\t\tparentBlockType:\n\t\t\t\t\t_firstParentClientId &&\n\t\t\t\t\t( getActiveBlockVariation(\n\t\t\t\t\t\tparentBlockName,\n\t\t\t\t\t\tgetBlockAttributes( _firstParentClientId )\n\t\t\t\t\t) ||\n\t\t\t\t\t\tgetBlockType( parentBlockName ) ),\n\t\t\t\tpreviousBlockClientId:\n\t\t\t\t\tgetPreviousBlockClientId( firstBlockClientId ),\n\t\t\t\tselectedBlockClientIds: getSelectedBlockClientIds(),\n\t\t\t};\n\t\t},\n\t\t[ firstBlockClientId ]\n\t);\n\tconst { getBlockOrder, getSelectedBlockClientIds } =\n\t\tuseSelect( blockEditorStore );\n\n\tconst shortcuts = useSelect( ( select ) => {\n\t\tconst { getShortcutRepresentation } = select( keyboardShortcutsStore );\n\t\treturn {\n\t\t\tduplicate: getShortcutRepresentation(\n\t\t\t\t'core/block-editor/duplicate'\n\t\t\t),\n\t\t\tremove: getShortcutRepresentation( 'core/block-editor/remove' ),\n\t\t\tinsertAfter: getShortcutRepresentation(\n\t\t\t\t'core/block-editor/insert-after'\n\t\t\t),\n\t\t\tinsertBefore: getShortcutRepresentation(\n\t\t\t\t'core/block-editor/insert-before'\n\t\t\t),\n\t\t};\n\t}, [] );\n\tconst isMatch = __unstableUseShortcutEventMatch();\n\n\tconst { selectBlock, toggleBlockHighlight } =\n\t\tuseDispatch( blockEditorStore );\n\tconst hasSelectedBlocks = selectedBlockClientIds.length > 0;\n\n\tconst updateSelectionAfterDuplicate = useCallback(\n\t\tasync ( clientIdsPromise ) => {\n\t\t\tif ( __experimentalSelectBlock ) {\n\t\t\t\tconst ids = await clientIdsPromise;\n\t\t\t\tif ( ids && ids[ 0 ] ) {\n\t\t\t\t\t__experimentalSelectBlock( ids[ 0 ], false );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[ __experimentalSelectBlock ]\n\t);\n\n\tconst updateSelectionAfterRemove = useCallback( () => {\n\t\tif ( __experimentalSelectBlock ) {\n\t\t\tlet blockToFocus = previousBlockClientId || firstParentClientId;\n\n\t\t\t// Focus the first block if there's no previous block nor parent block.\n\t\t\tif ( ! blockToFocus ) {\n\t\t\t\tblockToFocus = getBlockOrder()[ 0 ];\n\t\t\t}\n\n\t\t\t// Only update the selection if the original selection is removed.\n\t\t\tconst shouldUpdateSelection =\n\t\t\t\thasSelectedBlocks && getSelectedBlockClientIds().length === 0;\n\n\t\t\t__experimentalSelectBlock( blockToFocus, shouldUpdateSelection );\n\t\t}\n\t}, [\n\t\t__experimentalSelectBlock,\n\t\tpreviousBlockClientId,\n\t\tfirstParentClientId,\n\t\tgetBlockOrder,\n\t\thasSelectedBlocks,\n\t\tgetSelectedBlockClientIds,\n\t] );\n\n\tconst removeBlockLabel =\n\t\tcount === 1 ? __( 'Delete' ) : __( 'Delete blocks' );\n\n\t// Allows highlighting the parent block outline when focusing or hovering\n\t// the parent block selector within the child.\n\tconst selectParentButtonRef = useRef();\n\tconst { gestures: showParentOutlineGestures } = useShowMoversGestures( {\n\t\tref: selectParentButtonRef,\n\t\tonChange( isFocused ) {\n\t\t\tif ( isFocused && isDistractionFree ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\ttoggleBlockHighlight( firstParentClientId, isFocused );\n\t\t},\n\t} );\n\n\t// This can occur when the selected block (the parent)\n\t// displays child blocks within a List View.\n\tconst parentBlockIsSelected =\n\t\tselectedBlockClientIds?.includes( firstParentClientId );\n\n\treturn (\n\t\t<BlockActions\n\t\t\tclientIds={ clientIds }\n\t\t\t__experimentalUpdateSelection={ ! __experimentalSelectBlock }\n\t\t>\n\t\t\t{ ( {\n\t\t\t\tcanCopyStyles,\n\t\t\t\tcanDuplicate,\n\t\t\t\tcanInsertDefaultBlock,\n\t\t\t\tcanMove,\n\t\t\t\tcanRemove,\n\t\t\t\tonDuplicate,\n\t\t\t\tonInsertAfter,\n\t\t\t\tonInsertBefore,\n\t\t\t\tonRemove,\n\t\t\t\tonCopy,\n\t\t\t\tonPasteStyles,\n\t\t\t\tonMoveTo,\n\t\t\t\tblocks,\n\t\t\t} ) => (\n\t\t\t\t<DropdownMenu\n\t\t\t\t\ticon={ moreVertical }\n\t\t\t\t\tlabel={ __( 'Options' ) }\n\t\t\t\t\tclassName=\"block-editor-block-settings-menu\"\n\t\t\t\t\tpopoverProps={ POPOVER_PROPS }\n\t\t\t\t\tnoIcons\n\t\t\t\t\tmenuProps={ {\n\t\t\t\t\t\t/**\n\t\t\t\t\t\t * @param {KeyboardEvent} event\n\t\t\t\t\t\t */\n\t\t\t\t\t\tonKeyDown( event ) {\n\t\t\t\t\t\t\tif ( event.defaultPrevented ) return;\n\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tisMatch( 'core/block-editor/remove', event ) &&\n\t\t\t\t\t\t\t\tcanRemove\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\tupdateSelectionAfterRemove( onRemove() );\n\t\t\t\t\t\t\t} else if (\n\t\t\t\t\t\t\t\tisMatch(\n\t\t\t\t\t\t\t\t\t'core/block-editor/duplicate',\n\t\t\t\t\t\t\t\t\tevent\n\t\t\t\t\t\t\t\t) &&\n\t\t\t\t\t\t\t\tcanDuplicate\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\tupdateSelectionAfterDuplicate( onDuplicate() );\n\t\t\t\t\t\t\t} else if (\n\t\t\t\t\t\t\t\tisMatch(\n\t\t\t\t\t\t\t\t\t'core/block-editor/insert-after',\n\t\t\t\t\t\t\t\t\tevent\n\t\t\t\t\t\t\t\t) &&\n\t\t\t\t\t\t\t\tcanInsertDefaultBlock\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\tonInsertAfter();\n\t\t\t\t\t\t\t} else if (\n\t\t\t\t\t\t\t\tisMatch(\n\t\t\t\t\t\t\t\t\t'core/block-editor/insert-before',\n\t\t\t\t\t\t\t\t\tevent\n\t\t\t\t\t\t\t\t) &&\n\t\t\t\t\t\t\t\tcanInsertDefaultBlock\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\tonInsertBefore();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t} }\n\t\t\t\t\t{ ...props }\n\t\t\t\t>\n\t\t\t\t\t{ ( { onClose } ) => (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t\t\t<__unstableBlockSettingsMenuFirstItem.Slot\n\t\t\t\t\t\t\t\t\tfillProps={ { onClose } }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t{ ! parentBlockIsSelected &&\n\t\t\t\t\t\t\t\t\t!! firstParentClientId && (\n\t\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\t\t{ ...showParentOutlineGestures }\n\t\t\t\t\t\t\t\t\t\t\tref={ selectParentButtonRef }\n\t\t\t\t\t\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t\t\t\t\t\t<BlockIcon\n\t\t\t\t\t\t\t\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tparentBlockType.icon\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\t\t\t\t\tselectBlock(\n\t\t\t\t\t\t\t\t\t\t\t\t\tfirstParentClientId\n\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{ sprintf(\n\t\t\t\t\t\t\t\t\t\t\t\t/* translators: %s: Name of the block's parent. */\n\t\t\t\t\t\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t\t\t\t\t\t'Select parent block (%s)'\n\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t\tparentBlockType.title\n\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t{ count === 1 && (\n\t\t\t\t\t\t\t\t\t<BlockHTMLConvertButton\n\t\t\t\t\t\t\t\t\t\tclientId={ firstBlockClientId }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t<CopyMenuItem\n\t\t\t\t\t\t\t\t\tblocks={ blocks }\n\t\t\t\t\t\t\t\t\tonCopy={ onCopy }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t{ canDuplicate && (\n\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\tonClick={ pipe(\n\t\t\t\t\t\t\t\t\t\t\tonClose,\n\t\t\t\t\t\t\t\t\t\t\tonDuplicate,\n\t\t\t\t\t\t\t\t\t\t\tupdateSelectionAfterDuplicate\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\tshortcut={ shortcuts.duplicate }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Duplicate' ) }\n\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t{ canInsertDefaultBlock && (\n\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\t\tonClick={ pipe(\n\t\t\t\t\t\t\t\t\t\t\t\tonClose,\n\t\t\t\t\t\t\t\t\t\t\t\tonInsertBefore\n\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t\tshortcut={ shortcuts.insertBefore }\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{ __( 'Add before' ) }\n\t\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\t\tonClick={ pipe(\n\t\t\t\t\t\t\t\t\t\t\t\tonClose,\n\t\t\t\t\t\t\t\t\t\t\t\tonInsertAfter\n\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t\tshortcut={ shortcuts.insertAfter }\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{ __( 'Add after' ) }\n\t\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t\t\t{ canCopyStyles && (\n\t\t\t\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t\t\t\t<CopyMenuItem\n\t\t\t\t\t\t\t\t\t\tblocks={ blocks }\n\t\t\t\t\t\t\t\t\t\tonCopy={ onCopy }\n\t\t\t\t\t\t\t\t\t\tlabel={ __( 'Copy styles' ) }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t<MenuItem onClick={ onPasteStyles }>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Paste styles' ) }\n\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t<BlockSettingsMenuControls.Slot\n\t\t\t\t\t\t\t\tfillProps={ {\n\t\t\t\t\t\t\t\t\tonClose,\n\t\t\t\t\t\t\t\t\tcanMove,\n\t\t\t\t\t\t\t\t\tonMoveTo,\n\t\t\t\t\t\t\t\t\tonlyBlock,\n\t\t\t\t\t\t\t\t\tcount,\n\t\t\t\t\t\t\t\t\tfirstBlockClientId,\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\tclientIds={ clientIds }\n\t\t\t\t\t\t\t\t__unstableDisplayLocation={\n\t\t\t\t\t\t\t\t\t__unstableDisplayLocation\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t{ typeof children === 'function'\n\t\t\t\t\t\t\t\t? children( { onClose } )\n\t\t\t\t\t\t\t\t: Children.map( ( child ) =>\n\t\t\t\t\t\t\t\t\t\tcloneElement( child, { onClose } )\n\t\t\t\t\t\t\t\t ) }\n\t\t\t\t\t\t\t{ canRemove && (\n\t\t\t\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\tonClick={ pipe(\n\t\t\t\t\t\t\t\t\t\t\tonClose,\n\t\t\t\t\t\t\t\t\t\t\tonRemove,\n\t\t\t\t\t\t\t\t\t\t\tupdateSelectionAfterRemove\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\tshortcut={ shortcuts.remove }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ removeBlockLabel }\n\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</>\n\t\t\t\t\t) }\n\t\t\t\t</DropdownMenu>\n\t\t\t) }\n\t\t</BlockActions>\n\t);\n}\n\nexport default BlockSettingsDropdown;\n"]}
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/block-settings-menu/block-settings-dropdown.js"],"names":["POPOVER_PROPS","className","placement","CopyMenuItem","blocks","onCopy","label","ref","copyMenuItemBlocksLabel","length","copyMenuItemLabel","BlockSettingsDropdown","clientIds","__experimentalSelectBlock","children","__unstableDisplayLocation","props","blockClientIds","Array","isArray","count","firstBlockClientId","firstParentClientId","onlyBlock","parentBlockType","previousBlockClientId","selectedBlockClientIds","select","getBlockCount","getBlockName","getBlockRootClientId","getPreviousBlockClientId","getSelectedBlockClientIds","getBlockAttributes","blockEditorStore","getActiveBlockVariation","blocksStore","_firstParentClientId","parentBlockName","getBlockOrder","shortcuts","getShortcutRepresentation","keyboardShortcutsStore","duplicate","remove","insertAfter","insertBefore","isMatch","selectBlock","hasSelectedBlocks","updateSelectionAfterDuplicate","clientIdsPromise","ids","updateSelectionAfterRemove","blockToFocus","shouldUpdateSelection","removeBlockLabel","selectParentButtonRef","showParentOutlineGestures","highlightParent","parentBlockIsSelected","includes","canCopyStyles","canDuplicate","canInsertDefaultBlock","canMove","canRemove","onDuplicate","onInsertAfter","onInsertBefore","onRemove","onPasteStyles","onMoveTo","moreVertical","onKeyDown","event","defaultPrevented","preventDefault","onClose","icon","title","Children","map","child"],"mappings":";;;;;;;;;;AAWA;;AARA;;AAKA;;AACA;;AACA;;AAOA;;AACA;;AAIA;;AAKA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAjCA;AACA;AACA;;AAsBA;AACA;AACA;AASA,MAAMA,aAAa,GAAG;AACrBC,EAAAA,SAAS,EAAE,2CADU;AAErBC,EAAAA,SAAS,EAAE;AAFU,CAAtB;;AAKA,SAASC,YAAT,CAAuB;AAAEC,EAAAA,MAAF;AAAUC,EAAAA,MAAV;AAAkBC,EAAAA;AAAlB,CAAvB,EAAmD;AAClD,QAAMC,GAAG,GAAG,iCAAoB,MAAM,uBAAWH,MAAX,CAA1B,EAA+CC,MAA/C,CAAZ;AACA,QAAMG,uBAAuB,GAC5BJ,MAAM,CAACK,MAAP,GAAgB,CAAhB,GAAoB,cAAI,aAAJ,CAApB,GAA0C,cAAI,MAAJ,CAD3C;AAEA,QAAMC,iBAAiB,GAAGJ,KAAK,GAAGA,KAAH,GAAWE,uBAA1C;AACA,SAAO,4BAAC,oBAAD;AAAU,IAAA,GAAG,EAAGD;AAAhB,KAAwBG,iBAAxB,CAAP;AACA;;AAEM,SAASC,qBAAT,CAAgC;AACtCC,EAAAA,SADsC;AAEtCC,EAAAA,yBAFsC;AAGtCC,EAAAA,QAHsC;AAItCC,EAAAA,yBAJsC;AAKtC,KAAGC;AALmC,CAAhC,EAMH;AACH,QAAMC,cAAc,GAAGC,KAAK,CAACC,OAAN,CAAeP,SAAf,IACpBA,SADoB,GAEpB,CAAEA,SAAF,CAFH;AAGA,QAAMQ,KAAK,GAAGH,cAAc,CAACR,MAA7B;AACA,QAAMY,kBAAkB,GAAGJ,cAAc,CAAE,CAAF,CAAzC;AACA,QAAM;AACLK,IAAAA,mBADK;AAELC,IAAAA,SAFK;AAGLC,IAAAA,eAHK;AAILC,IAAAA,qBAJK;AAKLC,IAAAA;AALK,MAMF,qBACDC,MAAF,IAAc;AACb,UAAM;AACLC,MAAAA,aADK;AAELC,MAAAA,YAFK;AAGLC,MAAAA,oBAHK;AAILC,MAAAA,wBAJK;AAKLC,MAAAA,yBALK;AAMLC,MAAAA;AANK,QAOFN,MAAM,CAAEO,YAAF,CAPV;AASA,UAAM;AAAEC,MAAAA;AAAF,QAA8BR,MAAM,CAAES,aAAF,CAA1C;;AAEA,UAAMC,oBAAoB,GACzBP,oBAAoB,CAAET,kBAAF,CADrB;;AAEA,UAAMiB,eAAe,GACpBD,oBAAoB,IAAIR,YAAY,CAAEQ,oBAAF,CADrC;;AAGA,WAAO;AACNf,MAAAA,mBAAmB,EAAEe,oBADf;AAENd,MAAAA,SAAS,EAAE,MAAMK,aAAa,CAAES,oBAAF,CAFxB;AAGNb,MAAAA,eAAe,EACda,oBAAoB,KAClBF,uBAAuB,CACxBG,eADwB,EAExBL,kBAAkB,CAAEI,oBAAF,CAFM,CAAvB,IAID,0BAAcC,eAAd,CALmB,CAJf;AAUNb,MAAAA,qBAAqB,EACpBM,wBAAwB,CAAEV,kBAAF,CAXnB;AAYNK,MAAAA,sBAAsB,EAAEM,yBAAyB;AAZ3C,KAAP;AAcA,GAhCE,EAiCH,CAAEX,kBAAF,CAjCG,CANJ;AAyCA,QAAM;AAAEkB,IAAAA,aAAF;AAAiBP,IAAAA;AAAjB,MACL,qBAAWE,YAAX,CADD;AAGA,QAAMM,SAAS,GAAG,qBAAab,MAAF,IAAc;AAC1C,UAAM;AAAEc,MAAAA;AAAF,QAAgCd,MAAM,CAAEe,wBAAF,CAA5C;AACA,WAAO;AACNC,MAAAA,SAAS,EAAEF,yBAAyB,CACnC,6BADmC,CAD9B;AAING,MAAAA,MAAM,EAAEH,yBAAyB,CAAE,0BAAF,CAJ3B;AAKNI,MAAAA,WAAW,EAAEJ,yBAAyB,CACrC,gCADqC,CALhC;AAQNK,MAAAA,YAAY,EAAEL,yBAAyB,CACtC,iCADsC;AARjC,KAAP;AAYA,GAdiB,EAcf,EAde,CAAlB;AAeA,QAAMM,OAAO,GAAG,yDAAhB;AAEA,QAAM;AAAEC,IAAAA;AAAF,MAAkB,uBAAad,YAAb,CAAxB;AACA,QAAMe,iBAAiB,GAAGvB,sBAAsB,CAACjB,MAAvB,GAAgC,CAA1D;AAEA,QAAMyC,6BAA6B,GAAG,0BACrC,MAAQC,gBAAR,IAA8B;AAC7B,QAAKtC,yBAAL,EAAiC;AAChC,YAAMuC,GAAG,GAAG,MAAMD,gBAAlB;;AACA,UAAKC,GAAG,IAAIA,GAAG,CAAE,CAAF,CAAf,EAAuB;AACtBvC,QAAAA,yBAAyB,CAAEuC,GAAG,CAAE,CAAF,CAAL,EAAY,KAAZ,CAAzB;AACA;AACD;AACD,GARoC,EASrC,CAAEvC,yBAAF,CATqC,CAAtC;AAYA,QAAMwC,0BAA0B,GAAG,0BAAa,MAAM;AACrD,QAAKxC,yBAAL,EAAiC;AAChC,UAAIyC,YAAY,GAAG7B,qBAAqB,IAAIH,mBAA5C,CADgC,CAGhC;;AACA,UAAK,CAAEgC,YAAP,EAAsB;AACrBA,QAAAA,YAAY,GAAGf,aAAa,GAAI,CAAJ,CAA5B;AACA,OAN+B,CAQhC;;;AACA,YAAMgB,qBAAqB,GAC1BN,iBAAiB,IAAIjB,yBAAyB,GAAGvB,MAA5B,KAAuC,CAD7D;;AAGAI,MAAAA,yBAAyB,CAAEyC,YAAF,EAAgBC,qBAAhB,CAAzB;AACA;AACD,GAfkC,EAehC,CACF1C,yBADE,EAEFY,qBAFE,EAGFH,mBAHE,EAIFiB,aAJE,EAKFU,iBALE,EAMFjB,yBANE,CAfgC,CAAnC;AAwBA,QAAMwB,gBAAgB,GACrBpC,KAAK,KAAK,CAAV,GAAc,cAAI,QAAJ,CAAd,GAA+B,cAAI,eAAJ,CADhC,CA1GG,CA6GH;AACA;;AACA,QAAMqC,qBAAqB,GAAG,sBAA9B;AACA,QAAMC,yBAAyB,GAAG,4CAAiC;AAClEnD,IAAAA,GAAG,EAAEkD,qBAD6D;AAElEE,IAAAA,eAAe,EAAE;AAFiD,GAAjC,CAAlC,CAhHG,CAqHH;AACA;;AACA,QAAMC,qBAAqB,GAC1BlC,sBAAsB,EAAEmC,QAAxB,CAAkCvC,mBAAlC,CADD;AAGA,SACC,4BAAC,qBAAD;AACC,IAAA,SAAS,EAAGV,SADb;AAEC,IAAA,6BAA6B,EAAG,CAAEC;AAFnC,KAIG,CAAE;AACHiD,IAAAA,aADG;AAEHC,IAAAA,YAFG;AAGHC,IAAAA,qBAHG;AAIHC,IAAAA,OAJG;AAKHC,IAAAA,SALG;AAMHC,IAAAA,WANG;AAOHC,IAAAA,aAPG;AAQHC,IAAAA,cARG;AASHC,IAAAA,QATG;AAUHjE,IAAAA,MAVG;AAWHkE,IAAAA,aAXG;AAYHC,IAAAA,QAZG;AAaHpE,IAAAA;AAbG,GAAF,KAeD,4BAAC,wBAAD;AACC,IAAA,IAAI,EAAGqE,mBADR;AAEC,IAAA,KAAK,EAAG,cAAI,SAAJ,CAFT;AAGC,IAAA,SAAS,EAAC,kCAHX;AAIC,IAAA,YAAY,EAAGzE,aAJhB;AAKC,IAAA,OAAO,MALR;AAMC,IAAA,SAAS,EAAG;AACX;AACN;AACA;AACM0E,MAAAA,SAAS,CAAEC,KAAF,EAAU;AAClB,YAAKA,KAAK,CAACC,gBAAX,EAA8B;;AAE9B,YACC7B,OAAO,CAAE,0BAAF,EAA8B4B,KAA9B,CAAP,IACAT,SAFD,EAGE;AACDS,UAAAA,KAAK,CAACE,cAAN;AACAxB,UAAAA,0BAA0B,CAAEiB,QAAQ,EAAV,CAA1B;AACA,SAND,MAMO,IACNvB,OAAO,CACN,6BADM,EAEN4B,KAFM,CAAP,IAIAZ,YALM,EAML;AACDY,UAAAA,KAAK,CAACE,cAAN;AACA3B,UAAAA,6BAA6B,CAAEiB,WAAW,EAAb,CAA7B;AACA,SATM,MASA,IACNpB,OAAO,CACN,gCADM,EAEN4B,KAFM,CAAP,IAIAX,qBALM,EAML;AACDW,UAAAA,KAAK,CAACE,cAAN;AACAT,UAAAA,aAAa;AACb,SATM,MASA,IACNrB,OAAO,CACN,iCADM,EAEN4B,KAFM,CAAP,IAIAX,qBALM,EAML;AACDW,UAAAA,KAAK,CAACE,cAAN;AACAR,UAAAA,cAAc;AACd;AACD;;AAzCU,KANb;AAAA,OAiDMrD;AAjDN,KAmDG,CAAE;AAAE8D,IAAAA;AAAF,GAAF,KACD,qDACC,4BAAC,qBAAD,QACC,4BAAC,mCAAD,CAAsC,IAAtC;AACC,IAAA,SAAS,EAAG;AAAEA,MAAAA;AAAF;AADb,IADD,EAIG,CAAElB,qBAAF,IACD,CAAC,CAAEtC,mBADF,IAEA,4BAAC,oBAAD,OACMoC,yBADN;AAEC,IAAA,GAAG,EAAGD,qBAFP;AAGC,IAAA,IAAI,EACH,4BAAC,kBAAD;AACC,MAAA,IAAI,EACHjC,eAAe,CAACuD;AAFlB,MAJF;AAUC,IAAA,OAAO,EAAG,MACT/B,WAAW,CACV1B,mBADU;AAXb,KAgBG;AACD;AACA,gBACC,0BADD,CAFC,EAKDE,eAAe,CAACwD,KALf,CAhBH,CANH,EA+BG5D,KAAK,KAAK,CAAV,IACD,4BAAC,+BAAD;AACC,IAAA,QAAQ,EAAGC;AADZ,IAhCF,EAoCC,4BAAC,YAAD;AACC,IAAA,MAAM,EAAGjB,MADV;AAEC,IAAA,MAAM,EAAGC;AAFV,IApCD,EAwCG0D,YAAY,IACb,4BAAC,oBAAD;AACC,IAAA,OAAO,EAAG,mBACTe,OADS,EAETX,WAFS,EAGTjB,6BAHS,CADX;AAMC,IAAA,QAAQ,EAAGV,SAAS,CAACG;AANtB,KAQG,cAAI,WAAJ,CARH,CAzCF,EAoDGqB,qBAAqB,IACtB,qDACC,4BAAC,oBAAD;AACC,IAAA,OAAO,EAAG,mBACTc,OADS,EAETT,cAFS,CADX;AAKC,IAAA,QAAQ,EAAG7B,SAAS,CAACM;AALtB,KAOG,cAAI,YAAJ,CAPH,CADD,EAUC,4BAAC,oBAAD;AACC,IAAA,OAAO,EAAG,mBACTgC,OADS,EAETV,aAFS,CADX;AAKC,IAAA,QAAQ,EAAG5B,SAAS,CAACK;AALtB,KAOG,cAAI,WAAJ,CAPH,CAVD,CArDF,CADD,EA4EGiB,aAAa,IACd,4BAAC,qBAAD,QACC,4BAAC,YAAD;AACC,IAAA,MAAM,EAAG1D,MADV;AAEC,IAAA,MAAM,EAAGC,MAFV;AAGC,IAAA,KAAK,EAAG,cAAI,aAAJ;AAHT,IADD,EAMC,4BAAC,oBAAD;AAAU,IAAA,OAAO,EAAGkE;AAApB,KACG,cAAI,cAAJ,CADH,CAND,CA7EF,EAwFC,4BAAC,kCAAD,CAA2B,IAA3B;AACC,IAAA,SAAS,EAAG;AACXO,MAAAA,OADW;AAEXb,MAAAA,OAFW;AAGXO,MAAAA,QAHW;AAIXjD,MAAAA,SAJW;AAKXH,MAAAA,KALW;AAMXC,MAAAA;AANW,KADb;AASC,IAAA,SAAS,EAAGT,SATb;AAUC,IAAA,yBAAyB,EACxBG;AAXF,IAxFD,EAsGG,OAAOD,QAAP,KAAoB,UAApB,GACCA,QAAQ,CAAE;AAAEgE,IAAAA;AAAF,GAAF,CADT,GAECG,kBAASC,GAAT,CAAgBC,KAAF,IACd,2BAAcA,KAAd,EAAqB;AAAEL,IAAAA;AAAF,GAArB,CADA,CAxGJ,EA2GGZ,SAAS,IACV,4BAAC,qBAAD,QACC,4BAAC,oBAAD;AACC,IAAA,OAAO,EAAG,mBACTY,OADS,EAETR,QAFS,EAGTjB,0BAHS,CADX;AAMC,IAAA,QAAQ,EAAGb,SAAS,CAACI;AANtB,KAQGY,gBARH,CADD,CA5GF,CApDF,CAnBF,CADD;AAuMA;;eAEc7C,qB","sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tgetBlockType,\n\tserialize,\n\tstore as blocksStore,\n} from '@wordpress/blocks';\nimport { DropdownMenu, MenuGroup, MenuItem } from '@wordpress/components';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { moreVertical } from '@wordpress/icons';\nimport {\n\tChildren,\n\tcloneElement,\n\tuseCallback,\n\tuseRef,\n} from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\nimport {\n\tstore as keyboardShortcutsStore,\n\t__unstableUseShortcutEventMatch,\n} from '@wordpress/keyboard-shortcuts';\nimport { pipe, useCopyToClipboard } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport BlockActions from '../block-actions';\nimport BlockIcon from '../block-icon';\nimport BlockHTMLConvertButton from './block-html-convert-button';\nimport __unstableBlockSettingsMenuFirstItem from './block-settings-menu-first-item';\nimport BlockSettingsMenuControls from '../block-settings-menu-controls';\nimport { store as blockEditorStore } from '../../store';\nimport { useShowHoveredOrFocusedGestures } from '../block-toolbar/utils';\n\nconst POPOVER_PROPS = {\n\tclassName: 'block-editor-block-settings-menu__popover',\n\tplacement: 'bottom-start',\n};\n\nfunction CopyMenuItem( { blocks, onCopy, label } ) {\n\tconst ref = useCopyToClipboard( () => serialize( blocks ), onCopy );\n\tconst copyMenuItemBlocksLabel =\n\t\tblocks.length > 1 ? __( 'Copy blocks' ) : __( 'Copy' );\n\tconst copyMenuItemLabel = label ? label : copyMenuItemBlocksLabel;\n\treturn <MenuItem ref={ ref }>{ copyMenuItemLabel }</MenuItem>;\n}\n\nexport function BlockSettingsDropdown( {\n\tclientIds,\n\t__experimentalSelectBlock,\n\tchildren,\n\t__unstableDisplayLocation,\n\t...props\n} ) {\n\tconst blockClientIds = Array.isArray( clientIds )\n\t\t? clientIds\n\t\t: [ clientIds ];\n\tconst count = blockClientIds.length;\n\tconst firstBlockClientId = blockClientIds[ 0 ];\n\tconst {\n\t\tfirstParentClientId,\n\t\tonlyBlock,\n\t\tparentBlockType,\n\t\tpreviousBlockClientId,\n\t\tselectedBlockClientIds,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockCount,\n\t\t\t\tgetBlockName,\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\tgetPreviousBlockClientId,\n\t\t\t\tgetSelectedBlockClientIds,\n\t\t\t\tgetBlockAttributes,\n\t\t\t} = select( blockEditorStore );\n\n\t\t\tconst { getActiveBlockVariation } = select( blocksStore );\n\n\t\t\tconst _firstParentClientId =\n\t\t\t\tgetBlockRootClientId( firstBlockClientId );\n\t\t\tconst parentBlockName =\n\t\t\t\t_firstParentClientId && getBlockName( _firstParentClientId );\n\n\t\t\treturn {\n\t\t\t\tfirstParentClientId: _firstParentClientId,\n\t\t\t\tonlyBlock: 1 === getBlockCount( _firstParentClientId ),\n\t\t\t\tparentBlockType:\n\t\t\t\t\t_firstParentClientId &&\n\t\t\t\t\t( getActiveBlockVariation(\n\t\t\t\t\t\tparentBlockName,\n\t\t\t\t\t\tgetBlockAttributes( _firstParentClientId )\n\t\t\t\t\t) ||\n\t\t\t\t\t\tgetBlockType( parentBlockName ) ),\n\t\t\t\tpreviousBlockClientId:\n\t\t\t\t\tgetPreviousBlockClientId( firstBlockClientId ),\n\t\t\t\tselectedBlockClientIds: getSelectedBlockClientIds(),\n\t\t\t};\n\t\t},\n\t\t[ firstBlockClientId ]\n\t);\n\tconst { getBlockOrder, getSelectedBlockClientIds } =\n\t\tuseSelect( blockEditorStore );\n\n\tconst shortcuts = useSelect( ( select ) => {\n\t\tconst { getShortcutRepresentation } = select( keyboardShortcutsStore );\n\t\treturn {\n\t\t\tduplicate: getShortcutRepresentation(\n\t\t\t\t'core/block-editor/duplicate'\n\t\t\t),\n\t\t\tremove: getShortcutRepresentation( 'core/block-editor/remove' ),\n\t\t\tinsertAfter: getShortcutRepresentation(\n\t\t\t\t'core/block-editor/insert-after'\n\t\t\t),\n\t\t\tinsertBefore: getShortcutRepresentation(\n\t\t\t\t'core/block-editor/insert-before'\n\t\t\t),\n\t\t};\n\t}, [] );\n\tconst isMatch = __unstableUseShortcutEventMatch();\n\n\tconst { selectBlock } = useDispatch( blockEditorStore );\n\tconst hasSelectedBlocks = selectedBlockClientIds.length > 0;\n\n\tconst updateSelectionAfterDuplicate = useCallback(\n\t\tasync ( clientIdsPromise ) => {\n\t\t\tif ( __experimentalSelectBlock ) {\n\t\t\t\tconst ids = await clientIdsPromise;\n\t\t\t\tif ( ids && ids[ 0 ] ) {\n\t\t\t\t\t__experimentalSelectBlock( ids[ 0 ], false );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[ __experimentalSelectBlock ]\n\t);\n\n\tconst updateSelectionAfterRemove = useCallback( () => {\n\t\tif ( __experimentalSelectBlock ) {\n\t\t\tlet blockToFocus = previousBlockClientId || firstParentClientId;\n\n\t\t\t// Focus the first block if there's no previous block nor parent block.\n\t\t\tif ( ! blockToFocus ) {\n\t\t\t\tblockToFocus = getBlockOrder()[ 0 ];\n\t\t\t}\n\n\t\t\t// Only update the selection if the original selection is removed.\n\t\t\tconst shouldUpdateSelection =\n\t\t\t\thasSelectedBlocks && getSelectedBlockClientIds().length === 0;\n\n\t\t\t__experimentalSelectBlock( blockToFocus, shouldUpdateSelection );\n\t\t}\n\t}, [\n\t\t__experimentalSelectBlock,\n\t\tpreviousBlockClientId,\n\t\tfirstParentClientId,\n\t\tgetBlockOrder,\n\t\thasSelectedBlocks,\n\t\tgetSelectedBlockClientIds,\n\t] );\n\n\tconst removeBlockLabel =\n\t\tcount === 1 ? __( 'Delete' ) : __( 'Delete blocks' );\n\n\t// Allows highlighting the parent block outline when focusing or hovering\n\t// the parent block selector within the child.\n\tconst selectParentButtonRef = useRef();\n\tconst showParentOutlineGestures = useShowHoveredOrFocusedGestures( {\n\t\tref: selectParentButtonRef,\n\t\thighlightParent: true,\n\t} );\n\n\t// This can occur when the selected block (the parent)\n\t// displays child blocks within a List View.\n\tconst parentBlockIsSelected =\n\t\tselectedBlockClientIds?.includes( firstParentClientId );\n\n\treturn (\n\t\t<BlockActions\n\t\t\tclientIds={ clientIds }\n\t\t\t__experimentalUpdateSelection={ ! __experimentalSelectBlock }\n\t\t>\n\t\t\t{ ( {\n\t\t\t\tcanCopyStyles,\n\t\t\t\tcanDuplicate,\n\t\t\t\tcanInsertDefaultBlock,\n\t\t\t\tcanMove,\n\t\t\t\tcanRemove,\n\t\t\t\tonDuplicate,\n\t\t\t\tonInsertAfter,\n\t\t\t\tonInsertBefore,\n\t\t\t\tonRemove,\n\t\t\t\tonCopy,\n\t\t\t\tonPasteStyles,\n\t\t\t\tonMoveTo,\n\t\t\t\tblocks,\n\t\t\t} ) => (\n\t\t\t\t<DropdownMenu\n\t\t\t\t\ticon={ moreVertical }\n\t\t\t\t\tlabel={ __( 'Options' ) }\n\t\t\t\t\tclassName=\"block-editor-block-settings-menu\"\n\t\t\t\t\tpopoverProps={ POPOVER_PROPS }\n\t\t\t\t\tnoIcons\n\t\t\t\t\tmenuProps={ {\n\t\t\t\t\t\t/**\n\t\t\t\t\t\t * @param {KeyboardEvent} event\n\t\t\t\t\t\t */\n\t\t\t\t\t\tonKeyDown( event ) {\n\t\t\t\t\t\t\tif ( event.defaultPrevented ) return;\n\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tisMatch( 'core/block-editor/remove', event ) &&\n\t\t\t\t\t\t\t\tcanRemove\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\tupdateSelectionAfterRemove( onRemove() );\n\t\t\t\t\t\t\t} else if (\n\t\t\t\t\t\t\t\tisMatch(\n\t\t\t\t\t\t\t\t\t'core/block-editor/duplicate',\n\t\t\t\t\t\t\t\t\tevent\n\t\t\t\t\t\t\t\t) &&\n\t\t\t\t\t\t\t\tcanDuplicate\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\tupdateSelectionAfterDuplicate( onDuplicate() );\n\t\t\t\t\t\t\t} else if (\n\t\t\t\t\t\t\t\tisMatch(\n\t\t\t\t\t\t\t\t\t'core/block-editor/insert-after',\n\t\t\t\t\t\t\t\t\tevent\n\t\t\t\t\t\t\t\t) &&\n\t\t\t\t\t\t\t\tcanInsertDefaultBlock\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\tonInsertAfter();\n\t\t\t\t\t\t\t} else if (\n\t\t\t\t\t\t\t\tisMatch(\n\t\t\t\t\t\t\t\t\t'core/block-editor/insert-before',\n\t\t\t\t\t\t\t\t\tevent\n\t\t\t\t\t\t\t\t) &&\n\t\t\t\t\t\t\t\tcanInsertDefaultBlock\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\tonInsertBefore();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t} }\n\t\t\t\t\t{ ...props }\n\t\t\t\t>\n\t\t\t\t\t{ ( { onClose } ) => (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t\t\t<__unstableBlockSettingsMenuFirstItem.Slot\n\t\t\t\t\t\t\t\t\tfillProps={ { onClose } }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t{ ! parentBlockIsSelected &&\n\t\t\t\t\t\t\t\t\t!! firstParentClientId && (\n\t\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\t\t{ ...showParentOutlineGestures }\n\t\t\t\t\t\t\t\t\t\t\tref={ selectParentButtonRef }\n\t\t\t\t\t\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t\t\t\t\t\t<BlockIcon\n\t\t\t\t\t\t\t\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tparentBlockType.icon\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\t\t\t\t\tselectBlock(\n\t\t\t\t\t\t\t\t\t\t\t\t\tfirstParentClientId\n\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{ sprintf(\n\t\t\t\t\t\t\t\t\t\t\t\t/* translators: %s: Name of the block's parent. */\n\t\t\t\t\t\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t\t\t\t\t\t'Select parent block (%s)'\n\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t\tparentBlockType.title\n\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t{ count === 1 && (\n\t\t\t\t\t\t\t\t\t<BlockHTMLConvertButton\n\t\t\t\t\t\t\t\t\t\tclientId={ firstBlockClientId }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t<CopyMenuItem\n\t\t\t\t\t\t\t\t\tblocks={ blocks }\n\t\t\t\t\t\t\t\t\tonCopy={ onCopy }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t{ canDuplicate && (\n\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\tonClick={ pipe(\n\t\t\t\t\t\t\t\t\t\t\tonClose,\n\t\t\t\t\t\t\t\t\t\t\tonDuplicate,\n\t\t\t\t\t\t\t\t\t\t\tupdateSelectionAfterDuplicate\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\tshortcut={ shortcuts.duplicate }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Duplicate' ) }\n\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t{ canInsertDefaultBlock && (\n\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\t\tonClick={ pipe(\n\t\t\t\t\t\t\t\t\t\t\t\tonClose,\n\t\t\t\t\t\t\t\t\t\t\t\tonInsertBefore\n\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t\tshortcut={ shortcuts.insertBefore }\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{ __( 'Add before' ) }\n\t\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\t\tonClick={ pipe(\n\t\t\t\t\t\t\t\t\t\t\t\tonClose,\n\t\t\t\t\t\t\t\t\t\t\t\tonInsertAfter\n\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t\tshortcut={ shortcuts.insertAfter }\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{ __( 'Add after' ) }\n\t\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t\t\t{ canCopyStyles && (\n\t\t\t\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t\t\t\t<CopyMenuItem\n\t\t\t\t\t\t\t\t\t\tblocks={ blocks }\n\t\t\t\t\t\t\t\t\t\tonCopy={ onCopy }\n\t\t\t\t\t\t\t\t\t\tlabel={ __( 'Copy styles' ) }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t<MenuItem onClick={ onPasteStyles }>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Paste styles' ) }\n\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t<BlockSettingsMenuControls.Slot\n\t\t\t\t\t\t\t\tfillProps={ {\n\t\t\t\t\t\t\t\t\tonClose,\n\t\t\t\t\t\t\t\t\tcanMove,\n\t\t\t\t\t\t\t\t\tonMoveTo,\n\t\t\t\t\t\t\t\t\tonlyBlock,\n\t\t\t\t\t\t\t\t\tcount,\n\t\t\t\t\t\t\t\t\tfirstBlockClientId,\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\tclientIds={ clientIds }\n\t\t\t\t\t\t\t\t__unstableDisplayLocation={\n\t\t\t\t\t\t\t\t\t__unstableDisplayLocation\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t{ typeof children === 'function'\n\t\t\t\t\t\t\t\t? children( { onClose } )\n\t\t\t\t\t\t\t\t: Children.map( ( child ) =>\n\t\t\t\t\t\t\t\t\t\tcloneElement( child, { onClose } )\n\t\t\t\t\t\t\t\t ) }\n\t\t\t\t\t\t\t{ canRemove && (\n\t\t\t\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\tonClick={ pipe(\n\t\t\t\t\t\t\t\t\t\t\tonClose,\n\t\t\t\t\t\t\t\t\t\t\tonRemove,\n\t\t\t\t\t\t\t\t\t\t\tupdateSelectionAfterRemove\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\tshortcut={ shortcuts.remove }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ removeBlockLabel }\n\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</>\n\t\t\t\t\t) }\n\t\t\t\t</DropdownMenu>\n\t\t\t) }\n\t\t</BlockActions>\n\t);\n}\n\nexport default BlockSettingsDropdown;\n"]}
|
|
@@ -59,14 +59,9 @@ var _lockUnlock = require("../../lock-unlock");
|
|
|
59
59
|
const BlockToolbar = ({
|
|
60
60
|
hideDragHandle
|
|
61
61
|
}) => {
|
|
62
|
-
const {
|
|
63
|
-
getSelectedBlockClientId
|
|
64
|
-
} = (0, _data.useSelect)(_store.store);
|
|
65
62
|
const {
|
|
66
63
|
blockClientIds,
|
|
67
64
|
blockType,
|
|
68
|
-
hasFixedToolbar,
|
|
69
|
-
isDistractionFree,
|
|
70
65
|
isValid,
|
|
71
66
|
isVisual,
|
|
72
67
|
blockEditingMode
|
|
@@ -77,18 +72,14 @@ const BlockToolbar = ({
|
|
|
77
72
|
getSelectedBlockClientIds,
|
|
78
73
|
isBlockValid,
|
|
79
74
|
getBlockRootClientId,
|
|
80
|
-
getSettings,
|
|
81
75
|
getBlockEditingMode
|
|
82
76
|
} = (0, _lockUnlock.unlock)(select(_store.store));
|
|
83
77
|
const selectedBlockClientIds = getSelectedBlockClientIds();
|
|
84
78
|
const selectedBlockClientId = selectedBlockClientIds[0];
|
|
85
79
|
const blockRootClientId = getBlockRootClientId(selectedBlockClientId);
|
|
86
|
-
const settings = getSettings();
|
|
87
80
|
return {
|
|
88
81
|
blockClientIds: selectedBlockClientIds,
|
|
89
82
|
blockType: selectedBlockClientId && (0, _blocks.getBlockType)(getBlockName(selectedBlockClientId)),
|
|
90
|
-
hasFixedToolbar: settings.hasFixedToolbar,
|
|
91
|
-
isDistractionFree: settings.isDistractionFree,
|
|
92
83
|
rootClientId: blockRootClientId,
|
|
93
84
|
isValid: selectedBlockClientIds.every(id => isBlockValid(id)),
|
|
94
85
|
isVisual: selectedBlockClientIds.every(id => getBlockMode(id) === 'visual'),
|
|
@@ -98,28 +89,10 @@ const BlockToolbar = ({
|
|
|
98
89
|
const toolbarWrapperRef = (0, _element.useRef)(null); // Handles highlighting the current block outline on hover or focus of the
|
|
99
90
|
// block type toolbar area.
|
|
100
91
|
|
|
101
|
-
const {
|
|
102
|
-
toggleBlockHighlight
|
|
103
|
-
} = (0, _data.useDispatch)(_store.store);
|
|
104
92
|
const nodeRef = (0, _element.useRef)();
|
|
105
|
-
const {
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
} = (0, _utils.useShowMoversGestures)({
|
|
109
|
-
ref: nodeRef,
|
|
110
|
-
|
|
111
|
-
onChange(isFocused) {
|
|
112
|
-
if (isFocused && isDistractionFree) {
|
|
113
|
-
return;
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
toggleBlockHighlight(getSelectedBlockClientId(), isFocused);
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
}); // Account for the cases where the block toolbar is rendered within the
|
|
120
|
-
// header area and not contextually to the block.
|
|
121
|
-
|
|
122
|
-
const displayHeaderToolbar = (0, _compose.useViewportMatch)('medium', '<') || hasFixedToolbar;
|
|
93
|
+
const showHoveredOrFocusedGestures = (0, _utils.useShowHoveredOrFocusedGestures)({
|
|
94
|
+
ref: nodeRef
|
|
95
|
+
});
|
|
123
96
|
const isLargeViewport = !(0, _compose.useViewportMatch)('medium', '<');
|
|
124
97
|
|
|
125
98
|
if (blockType) {
|
|
@@ -128,8 +101,6 @@ const BlockToolbar = ({
|
|
|
128
101
|
}
|
|
129
102
|
}
|
|
130
103
|
|
|
131
|
-
const shouldShowMovers = displayHeaderToolbar || showMovers;
|
|
132
|
-
|
|
133
104
|
if (blockClientIds.length === 0) {
|
|
134
105
|
return null;
|
|
135
106
|
}
|
|
@@ -138,7 +109,6 @@ const BlockToolbar = ({
|
|
|
138
109
|
const isMultiToolbar = blockClientIds.length > 1;
|
|
139
110
|
const isSynced = (0, _blocks.isReusableBlock)(blockType) || (0, _blocks.isTemplatePart)(blockType);
|
|
140
111
|
const classes = (0, _classnames.default)('block-editor-block-toolbar', {
|
|
141
|
-
'is-showing-movers': shouldShowMovers,
|
|
142
112
|
'is-synced': isSynced
|
|
143
113
|
});
|
|
144
114
|
return (0, _element.createElement)("div", {
|
|
@@ -146,7 +116,7 @@ const BlockToolbar = ({
|
|
|
146
116
|
ref: toolbarWrapperRef
|
|
147
117
|
}, !isMultiToolbar && isLargeViewport && blockEditingMode === 'default' && (0, _element.createElement)(_blockParentSelector.default, null), (shouldShowVisualToolbar || isMultiToolbar) && blockEditingMode === 'default' && (0, _element.createElement)("div", {
|
|
148
118
|
ref: nodeRef,
|
|
149
|
-
...
|
|
119
|
+
...showHoveredOrFocusedGestures
|
|
150
120
|
}, (0, _element.createElement)(_components.ToolbarGroup, {
|
|
151
121
|
className: "block-editor-block-toolbar__block-controls"
|
|
152
122
|
}, (0, _element.createElement)(_blockSwitcher.default, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/block-toolbar/index.js"],"names":["BlockToolbar","hideDragHandle","getSelectedBlockClientId","blockEditorStore","blockClientIds","blockType","hasFixedToolbar","isDistractionFree","isValid","isVisual","blockEditingMode","select","getBlockName","getBlockMode","getSelectedBlockClientIds","isBlockValid","getBlockRootClientId","getSettings","getBlockEditingMode","selectedBlockClientIds","selectedBlockClientId","blockRootClientId","settings","rootClientId","every","id","toolbarWrapperRef","toggleBlockHighlight","nodeRef","showMovers","gestures","showMoversGestures","ref","onChange","isFocused","displayHeaderToolbar","isLargeViewport","shouldShowMovers","length","shouldShowVisualToolbar","isMultiToolbar","isSynced","classes","name"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useRef } from '@wordpress/element';\nimport { useViewportMatch } from '@wordpress/compose';\nimport {\n\tgetBlockType,\n\thasBlockSupport,\n\tisReusableBlock,\n\tisTemplatePart,\n} from '@wordpress/blocks';\nimport { ToolbarGroup } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport BlockMover from '../block-mover';\nimport BlockParentSelector from '../block-parent-selector';\nimport BlockSwitcher from '../block-switcher';\nimport BlockControls from '../block-controls';\nimport __unstableBlockToolbarLastItem from './block-toolbar-last-item';\nimport BlockSettingsMenu from '../block-settings-menu';\nimport { BlockLockToolbar } from '../block-lock';\nimport { BlockGroupToolbar } from '../convert-to-group-buttons';\nimport BlockEditVisuallyButton from '../block-edit-visually-button';\nimport { useShowMoversGestures } from './utils';\nimport { store as blockEditorStore } from '../../store';\nimport __unstableBlockNameContext from './block-name-context';\nimport { unlock } from '../../lock-unlock';\n\nconst BlockToolbar = ( { hideDragHandle } ) => {\n\tconst { getSelectedBlockClientId } = useSelect( blockEditorStore );\n\tconst {\n\t\tblockClientIds,\n\t\tblockType,\n\t\thasFixedToolbar,\n\t\tisDistractionFree,\n\t\tisValid,\n\t\tisVisual,\n\t\tblockEditingMode,\n\t} = useSelect( ( select ) => {\n\t\tconst {\n\t\t\tgetBlockName,\n\t\t\tgetBlockMode,\n\t\t\tgetSelectedBlockClientIds,\n\t\t\tisBlockValid,\n\t\t\tgetBlockRootClientId,\n\t\t\tgetSettings,\n\t\t\tgetBlockEditingMode,\n\t\t} = unlock( select( blockEditorStore ) );\n\t\tconst selectedBlockClientIds = getSelectedBlockClientIds();\n\t\tconst selectedBlockClientId = selectedBlockClientIds[ 0 ];\n\t\tconst blockRootClientId = getBlockRootClientId( selectedBlockClientId );\n\t\tconst settings = getSettings();\n\n\t\treturn {\n\t\t\tblockClientIds: selectedBlockClientIds,\n\t\t\tblockType:\n\t\t\t\tselectedBlockClientId &&\n\t\t\t\tgetBlockType( getBlockName( selectedBlockClientId ) ),\n\t\t\thasFixedToolbar: settings.hasFixedToolbar,\n\t\t\tisDistractionFree: settings.isDistractionFree,\n\t\t\trootClientId: blockRootClientId,\n\t\t\tisValid: selectedBlockClientIds.every( ( id ) =>\n\t\t\t\tisBlockValid( id )\n\t\t\t),\n\t\t\tisVisual: selectedBlockClientIds.every(\n\t\t\t\t( id ) => getBlockMode( id ) === 'visual'\n\t\t\t),\n\t\t\tblockEditingMode: getBlockEditingMode( selectedBlockClientId ),\n\t\t};\n\t}, [] );\n\n\tconst toolbarWrapperRef = useRef( null );\n\n\t// Handles highlighting the current block outline on hover or focus of the\n\t// block type toolbar area.\n\tconst { toggleBlockHighlight } = useDispatch( blockEditorStore );\n\tconst nodeRef = useRef();\n\tconst { showMovers, gestures: showMoversGestures } = useShowMoversGestures(\n\t\t{\n\t\t\tref: nodeRef,\n\t\t\tonChange( isFocused ) {\n\t\t\t\tif ( isFocused && isDistractionFree ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\ttoggleBlockHighlight( getSelectedBlockClientId(), isFocused );\n\t\t\t},\n\t\t}\n\t);\n\n\t// Account for the cases where the block toolbar is rendered within the\n\t// header area and not contextually to the block.\n\tconst displayHeaderToolbar =\n\t\tuseViewportMatch( 'medium', '<' ) || hasFixedToolbar;\n\tconst isLargeViewport = ! useViewportMatch( 'medium', '<' );\n\n\tif ( blockType ) {\n\t\tif ( ! hasBlockSupport( blockType, '__experimentalToolbar', true ) ) {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tconst shouldShowMovers = displayHeaderToolbar || showMovers;\n\n\tif ( blockClientIds.length === 0 ) {\n\t\treturn null;\n\t}\n\n\tconst shouldShowVisualToolbar = isValid && isVisual;\n\tconst isMultiToolbar = blockClientIds.length > 1;\n\tconst isSynced =\n\t\tisReusableBlock( blockType ) || isTemplatePart( blockType );\n\n\tconst classes = classnames( 'block-editor-block-toolbar', {\n\t\t'is-showing-movers': shouldShowMovers,\n\t\t'is-synced': isSynced,\n\t} );\n\n\treturn (\n\t\t<div className={ classes } ref={ toolbarWrapperRef }>\n\t\t\t{ ! isMultiToolbar &&\n\t\t\t\tisLargeViewport &&\n\t\t\t\tblockEditingMode === 'default' && <BlockParentSelector /> }\n\t\t\t{ ( shouldShowVisualToolbar || isMultiToolbar ) &&\n\t\t\t\tblockEditingMode === 'default' && (\n\t\t\t\t\t<div ref={ nodeRef } { ...showMoversGestures }>\n\t\t\t\t\t\t<ToolbarGroup className=\"block-editor-block-toolbar__block-controls\">\n\t\t\t\t\t\t\t<BlockSwitcher clientIds={ blockClientIds } />\n\t\t\t\t\t\t\t{ ! isMultiToolbar && (\n\t\t\t\t\t\t\t\t<BlockLockToolbar\n\t\t\t\t\t\t\t\t\tclientId={ blockClientIds[ 0 ] }\n\t\t\t\t\t\t\t\t\twrapperRef={ toolbarWrapperRef }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t<BlockMover\n\t\t\t\t\t\t\t\tclientIds={ blockClientIds }\n\t\t\t\t\t\t\t\thideDragHandle={ hideDragHandle }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</ToolbarGroup>\n\t\t\t\t\t</div>\n\t\t\t\t) }\n\t\t\t{ shouldShowVisualToolbar && isMultiToolbar && (\n\t\t\t\t<BlockGroupToolbar />\n\t\t\t) }\n\t\t\t{ shouldShowVisualToolbar && (\n\t\t\t\t<>\n\t\t\t\t\t<BlockControls.Slot\n\t\t\t\t\t\tgroup=\"parent\"\n\t\t\t\t\t\tclassName=\"block-editor-block-toolbar__slot\"\n\t\t\t\t\t/>\n\t\t\t\t\t<BlockControls.Slot\n\t\t\t\t\t\tgroup=\"block\"\n\t\t\t\t\t\tclassName=\"block-editor-block-toolbar__slot\"\n\t\t\t\t\t/>\n\t\t\t\t\t<BlockControls.Slot className=\"block-editor-block-toolbar__slot\" />\n\t\t\t\t\t<BlockControls.Slot\n\t\t\t\t\t\tgroup=\"inline\"\n\t\t\t\t\t\tclassName=\"block-editor-block-toolbar__slot\"\n\t\t\t\t\t/>\n\t\t\t\t\t<BlockControls.Slot\n\t\t\t\t\t\tgroup=\"other\"\n\t\t\t\t\t\tclassName=\"block-editor-block-toolbar__slot\"\n\t\t\t\t\t/>\n\t\t\t\t\t<__unstableBlockNameContext.Provider\n\t\t\t\t\t\tvalue={ blockType?.name }\n\t\t\t\t\t>\n\t\t\t\t\t\t<__unstableBlockToolbarLastItem.Slot />\n\t\t\t\t\t</__unstableBlockNameContext.Provider>\n\t\t\t\t</>\n\t\t\t) }\n\t\t\t<BlockEditVisuallyButton clientIds={ blockClientIds } />\n\t\t\t{ blockEditingMode === 'default' && (\n\t\t\t\t<BlockSettingsMenu clientIds={ blockClientIds } />\n\t\t\t) }\n\t\t</div>\n\t);\n};\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/block-toolbar/README.md\n */\nexport default BlockToolbar;\n"]}
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/block-toolbar/index.js"],"names":["BlockToolbar","hideDragHandle","blockClientIds","blockType","isValid","isVisual","blockEditingMode","select","getBlockName","getBlockMode","getSelectedBlockClientIds","isBlockValid","getBlockRootClientId","getBlockEditingMode","blockEditorStore","selectedBlockClientIds","selectedBlockClientId","blockRootClientId","rootClientId","every","id","toolbarWrapperRef","nodeRef","showHoveredOrFocusedGestures","ref","isLargeViewport","length","shouldShowVisualToolbar","isMultiToolbar","isSynced","classes","name"],"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 { useRef } from '@wordpress/element';\nimport { useViewportMatch } from '@wordpress/compose';\nimport {\n\tgetBlockType,\n\thasBlockSupport,\n\tisReusableBlock,\n\tisTemplatePart,\n} from '@wordpress/blocks';\nimport { ToolbarGroup } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport BlockMover from '../block-mover';\nimport BlockParentSelector from '../block-parent-selector';\nimport BlockSwitcher from '../block-switcher';\nimport BlockControls from '../block-controls';\nimport __unstableBlockToolbarLastItem from './block-toolbar-last-item';\nimport BlockSettingsMenu from '../block-settings-menu';\nimport { BlockLockToolbar } from '../block-lock';\nimport { BlockGroupToolbar } from '../convert-to-group-buttons';\nimport BlockEditVisuallyButton from '../block-edit-visually-button';\nimport { useShowHoveredOrFocusedGestures } from './utils';\nimport { store as blockEditorStore } from '../../store';\nimport __unstableBlockNameContext from './block-name-context';\nimport { unlock } from '../../lock-unlock';\n\nconst BlockToolbar = ( { hideDragHandle } ) => {\n\tconst { blockClientIds, blockType, isValid, isVisual, blockEditingMode } =\n\t\tuseSelect( ( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockName,\n\t\t\t\tgetBlockMode,\n\t\t\t\tgetSelectedBlockClientIds,\n\t\t\t\tisBlockValid,\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\tgetBlockEditingMode,\n\t\t\t} = unlock( select( blockEditorStore ) );\n\t\t\tconst selectedBlockClientIds = getSelectedBlockClientIds();\n\t\t\tconst selectedBlockClientId = selectedBlockClientIds[ 0 ];\n\t\t\tconst blockRootClientId = getBlockRootClientId(\n\t\t\t\tselectedBlockClientId\n\t\t\t);\n\t\t\treturn {\n\t\t\t\tblockClientIds: selectedBlockClientIds,\n\t\t\t\tblockType:\n\t\t\t\t\tselectedBlockClientId &&\n\t\t\t\t\tgetBlockType( getBlockName( selectedBlockClientId ) ),\n\t\t\t\trootClientId: blockRootClientId,\n\t\t\t\tisValid: selectedBlockClientIds.every( ( id ) =>\n\t\t\t\t\tisBlockValid( id )\n\t\t\t\t),\n\t\t\t\tisVisual: selectedBlockClientIds.every(\n\t\t\t\t\t( id ) => getBlockMode( id ) === 'visual'\n\t\t\t\t),\n\t\t\t\tblockEditingMode: getBlockEditingMode( selectedBlockClientId ),\n\t\t\t};\n\t\t}, [] );\n\n\tconst toolbarWrapperRef = useRef( null );\n\n\t// Handles highlighting the current block outline on hover or focus of the\n\t// block type toolbar area.\n\tconst nodeRef = useRef();\n\tconst showHoveredOrFocusedGestures = useShowHoveredOrFocusedGestures( {\n\t\tref: nodeRef,\n\t} );\n\n\tconst isLargeViewport = ! useViewportMatch( 'medium', '<' );\n\n\tif ( blockType ) {\n\t\tif ( ! hasBlockSupport( blockType, '__experimentalToolbar', true ) ) {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tif ( blockClientIds.length === 0 ) {\n\t\treturn null;\n\t}\n\n\tconst shouldShowVisualToolbar = isValid && isVisual;\n\tconst isMultiToolbar = blockClientIds.length > 1;\n\tconst isSynced =\n\t\tisReusableBlock( blockType ) || isTemplatePart( blockType );\n\n\tconst classes = classnames( 'block-editor-block-toolbar', {\n\t\t'is-synced': isSynced,\n\t} );\n\n\treturn (\n\t\t<div className={ classes } ref={ toolbarWrapperRef }>\n\t\t\t{ ! isMultiToolbar &&\n\t\t\t\tisLargeViewport &&\n\t\t\t\tblockEditingMode === 'default' && <BlockParentSelector /> }\n\t\t\t{ ( shouldShowVisualToolbar || isMultiToolbar ) &&\n\t\t\t\tblockEditingMode === 'default' && (\n\t\t\t\t\t<div ref={ nodeRef } { ...showHoveredOrFocusedGestures }>\n\t\t\t\t\t\t<ToolbarGroup className=\"block-editor-block-toolbar__block-controls\">\n\t\t\t\t\t\t\t<BlockSwitcher clientIds={ blockClientIds } />\n\t\t\t\t\t\t\t{ ! isMultiToolbar && (\n\t\t\t\t\t\t\t\t<BlockLockToolbar\n\t\t\t\t\t\t\t\t\tclientId={ blockClientIds[ 0 ] }\n\t\t\t\t\t\t\t\t\twrapperRef={ toolbarWrapperRef }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t<BlockMover\n\t\t\t\t\t\t\t\tclientIds={ blockClientIds }\n\t\t\t\t\t\t\t\thideDragHandle={ hideDragHandle }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</ToolbarGroup>\n\t\t\t\t\t</div>\n\t\t\t\t) }\n\t\t\t{ shouldShowVisualToolbar && isMultiToolbar && (\n\t\t\t\t<BlockGroupToolbar />\n\t\t\t) }\n\t\t\t{ shouldShowVisualToolbar && (\n\t\t\t\t<>\n\t\t\t\t\t<BlockControls.Slot\n\t\t\t\t\t\tgroup=\"parent\"\n\t\t\t\t\t\tclassName=\"block-editor-block-toolbar__slot\"\n\t\t\t\t\t/>\n\t\t\t\t\t<BlockControls.Slot\n\t\t\t\t\t\tgroup=\"block\"\n\t\t\t\t\t\tclassName=\"block-editor-block-toolbar__slot\"\n\t\t\t\t\t/>\n\t\t\t\t\t<BlockControls.Slot className=\"block-editor-block-toolbar__slot\" />\n\t\t\t\t\t<BlockControls.Slot\n\t\t\t\t\t\tgroup=\"inline\"\n\t\t\t\t\t\tclassName=\"block-editor-block-toolbar__slot\"\n\t\t\t\t\t/>\n\t\t\t\t\t<BlockControls.Slot\n\t\t\t\t\t\tgroup=\"other\"\n\t\t\t\t\t\tclassName=\"block-editor-block-toolbar__slot\"\n\t\t\t\t\t/>\n\t\t\t\t\t<__unstableBlockNameContext.Provider\n\t\t\t\t\t\tvalue={ blockType?.name }\n\t\t\t\t\t>\n\t\t\t\t\t\t<__unstableBlockToolbarLastItem.Slot />\n\t\t\t\t\t</__unstableBlockNameContext.Provider>\n\t\t\t\t</>\n\t\t\t) }\n\t\t\t<BlockEditVisuallyButton clientIds={ blockClientIds } />\n\t\t\t{ blockEditingMode === 'default' && (\n\t\t\t\t<BlockSettingsMenu clientIds={ blockClientIds } />\n\t\t\t) }\n\t\t</div>\n\t);\n};\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/block-toolbar/README.md\n */\nexport default BlockToolbar;\n"]}
|
|
@@ -3,54 +3,67 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
7
|
-
|
|
6
|
+
exports.useShowHoveredOrFocusedGestures = useShowHoveredOrFocusedGestures;
|
|
7
|
+
|
|
8
|
+
var _data = require("@wordpress/data");
|
|
8
9
|
|
|
9
10
|
var _element = require("@wordpress/element");
|
|
10
11
|
|
|
12
|
+
var _store = require("../../store");
|
|
13
|
+
|
|
11
14
|
/**
|
|
12
15
|
* WordPress dependencies
|
|
13
16
|
*/
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Internal dependencies
|
|
20
|
+
*/
|
|
14
21
|
const {
|
|
15
22
|
clearTimeout,
|
|
16
23
|
setTimeout
|
|
17
24
|
} = window;
|
|
18
|
-
|
|
19
|
-
const noop = () => {};
|
|
20
|
-
|
|
21
25
|
const DEBOUNCE_TIMEOUT = 200;
|
|
22
26
|
/**
|
|
23
|
-
* Hook that creates
|
|
27
|
+
* Hook that creates debounced callbacks when the node is hovered or focused.
|
|
24
28
|
*
|
|
25
|
-
* @param {Object}
|
|
26
|
-
* @param {Object}
|
|
27
|
-
* @param {boolean}
|
|
28
|
-
* @param {number}
|
|
29
|
-
* @param {
|
|
29
|
+
* @param {Object} props Component props.
|
|
30
|
+
* @param {Object} props.ref Element reference.
|
|
31
|
+
* @param {boolean} props.isFocused Whether the component has current focus.
|
|
32
|
+
* @param {number} props.highlightParent Whether to highlight the parent block. It defaults in highlighting the selected block.
|
|
33
|
+
* @param {number} [props.debounceTimeout=250] Debounce timeout in milliseconds.
|
|
30
34
|
*/
|
|
31
35
|
|
|
32
|
-
function
|
|
36
|
+
function useDebouncedShowGestures({
|
|
33
37
|
ref,
|
|
34
38
|
isFocused,
|
|
35
|
-
|
|
36
|
-
|
|
39
|
+
highlightParent,
|
|
40
|
+
debounceTimeout = DEBOUNCE_TIMEOUT
|
|
37
41
|
}) {
|
|
38
|
-
const
|
|
42
|
+
const {
|
|
43
|
+
getSelectedBlockClientId,
|
|
44
|
+
getBlockRootClientId
|
|
45
|
+
} = (0, _data.useSelect)(_store.store);
|
|
46
|
+
const {
|
|
47
|
+
toggleBlockHighlight
|
|
48
|
+
} = (0, _data.useDispatch)(_store.store);
|
|
39
49
|
const timeoutRef = (0, _element.useRef)();
|
|
50
|
+
const isDistractionFree = (0, _data.useSelect)(select => select(_store.store).getSettings().isDistractionFree, []);
|
|
40
51
|
|
|
41
52
|
const handleOnChange = nextIsFocused => {
|
|
42
|
-
if (
|
|
43
|
-
|
|
53
|
+
if (nextIsFocused && isDistractionFree) {
|
|
54
|
+
return;
|
|
44
55
|
}
|
|
45
56
|
|
|
46
|
-
|
|
57
|
+
const selectedBlockClientId = getSelectedBlockClientId();
|
|
58
|
+
const clientId = highlightParent ? getBlockRootClientId(selectedBlockClientId) : selectedBlockClientId;
|
|
59
|
+
toggleBlockHighlight(clientId, nextIsFocused);
|
|
47
60
|
};
|
|
48
61
|
|
|
49
62
|
const getIsHovered = () => {
|
|
50
63
|
return ref?.current && ref.current.matches(':hover');
|
|
51
64
|
};
|
|
52
65
|
|
|
53
|
-
const
|
|
66
|
+
const shouldHideGestures = () => {
|
|
54
67
|
const isHovered = getIsHovered();
|
|
55
68
|
return !isFocused && !isHovered;
|
|
56
69
|
};
|
|
@@ -63,26 +76,23 @@ function useDebouncedShowMovers({
|
|
|
63
76
|
}
|
|
64
77
|
};
|
|
65
78
|
|
|
66
|
-
const
|
|
79
|
+
const debouncedShowGestures = event => {
|
|
67
80
|
if (event) {
|
|
68
81
|
event.stopPropagation();
|
|
69
82
|
}
|
|
70
83
|
|
|
71
84
|
clearTimeoutRef();
|
|
72
|
-
|
|
73
|
-
if (!showMovers) {
|
|
74
|
-
handleOnChange(true);
|
|
75
|
-
}
|
|
85
|
+
handleOnChange(true);
|
|
76
86
|
};
|
|
77
87
|
|
|
78
|
-
const
|
|
88
|
+
const debouncedHideGestures = event => {
|
|
79
89
|
if (event) {
|
|
80
90
|
event.stopPropagation();
|
|
81
91
|
}
|
|
82
92
|
|
|
83
93
|
clearTimeoutRef();
|
|
84
94
|
timeoutRef.current = setTimeout(() => {
|
|
85
|
-
if (
|
|
95
|
+
if (shouldHideGestures()) {
|
|
86
96
|
handleOnChange(false);
|
|
87
97
|
}
|
|
88
98
|
}, debounceTimeout);
|
|
@@ -98,37 +108,35 @@ function useDebouncedShowMovers({
|
|
|
98
108
|
clearTimeoutRef();
|
|
99
109
|
}, []);
|
|
100
110
|
return {
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
debouncedHideMovers
|
|
111
|
+
debouncedShowGestures,
|
|
112
|
+
debouncedHideGestures
|
|
104
113
|
};
|
|
105
114
|
}
|
|
106
115
|
/**
|
|
107
|
-
* Hook that provides
|
|
108
|
-
* that interact with the
|
|
116
|
+
* Hook that provides gesture events for DOM elements
|
|
117
|
+
* that interact with the isFocused state.
|
|
109
118
|
*
|
|
110
|
-
* @param {Object}
|
|
111
|
-
* @param {Object}
|
|
112
|
-
* @param {number}
|
|
113
|
-
* @param {
|
|
119
|
+
* @param {Object} props Component props.
|
|
120
|
+
* @param {Object} props.ref Element reference.
|
|
121
|
+
* @param {number} [props.highlightParent=false] Whether to highlight the parent block. It defaults to highlighting the selected block.
|
|
122
|
+
* @param {number} [props.debounceTimeout=250] Debounce timeout in milliseconds.
|
|
114
123
|
*/
|
|
115
124
|
|
|
116
125
|
|
|
117
|
-
function
|
|
126
|
+
function useShowHoveredOrFocusedGestures({
|
|
118
127
|
ref,
|
|
119
|
-
|
|
120
|
-
|
|
128
|
+
highlightParent = false,
|
|
129
|
+
debounceTimeout = DEBOUNCE_TIMEOUT
|
|
121
130
|
}) {
|
|
122
131
|
const [isFocused, setIsFocused] = (0, _element.useState)(false);
|
|
123
132
|
const {
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
} = useDebouncedShowMovers({
|
|
133
|
+
debouncedShowGestures,
|
|
134
|
+
debouncedHideGestures
|
|
135
|
+
} = useDebouncedShowGestures({
|
|
128
136
|
ref,
|
|
129
137
|
debounceTimeout,
|
|
130
138
|
isFocused,
|
|
131
|
-
|
|
139
|
+
highlightParent
|
|
132
140
|
});
|
|
133
141
|
const registerRef = (0, _element.useRef)(false);
|
|
134
142
|
|
|
@@ -142,14 +150,14 @@ function useShowMoversGestures({
|
|
|
142
150
|
const handleOnFocus = () => {
|
|
143
151
|
if (isFocusedWithin()) {
|
|
144
152
|
setIsFocused(true);
|
|
145
|
-
|
|
153
|
+
debouncedShowGestures();
|
|
146
154
|
}
|
|
147
155
|
};
|
|
148
156
|
|
|
149
157
|
const handleOnBlur = () => {
|
|
150
158
|
if (!isFocusedWithin()) {
|
|
151
159
|
setIsFocused(false);
|
|
152
|
-
|
|
160
|
+
debouncedHideGestures();
|
|
153
161
|
}
|
|
154
162
|
};
|
|
155
163
|
/**
|
|
@@ -170,13 +178,10 @@ function useShowMoversGestures({
|
|
|
170
178
|
node.removeEventListener('blur', handleOnBlur);
|
|
171
179
|
}
|
|
172
180
|
};
|
|
173
|
-
}, [ref, registerRef, setIsFocused,
|
|
181
|
+
}, [ref, registerRef, setIsFocused, debouncedShowGestures, debouncedHideGestures]);
|
|
174
182
|
return {
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
onMouseMove: debouncedShowMovers,
|
|
178
|
-
onMouseLeave: debouncedHideMovers
|
|
179
|
-
}
|
|
183
|
+
onMouseMove: debouncedShowGestures,
|
|
184
|
+
onMouseLeave: debouncedHideGestures
|
|
180
185
|
};
|
|
181
186
|
}
|
|
182
187
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/block-toolbar/utils.js"],"names":["clearTimeout","setTimeout","window","
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/block-toolbar/utils.js"],"names":["clearTimeout","setTimeout","window","DEBOUNCE_TIMEOUT","useDebouncedShowGestures","ref","isFocused","highlightParent","debounceTimeout","getSelectedBlockClientId","getBlockRootClientId","blockEditorStore","toggleBlockHighlight","timeoutRef","isDistractionFree","select","getSettings","handleOnChange","nextIsFocused","selectedBlockClientId","clientId","getIsHovered","current","matches","shouldHideGestures","isHovered","clearTimeoutRef","timeout","debouncedShowGestures","event","stopPropagation","debouncedHideGestures","useShowHoveredOrFocusedGestures","setIsFocused","registerRef","isFocusedWithin","contains","ownerDocument","activeElement","node","handleOnFocus","handleOnBlur","addEventListener","removeEventListener","onMouseMove","onMouseLeave"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useState, useRef, useEffect } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\n\nconst { clearTimeout, setTimeout } = window;\nconst DEBOUNCE_TIMEOUT = 200;\n\n/**\n * Hook that creates debounced callbacks when the node is hovered or focused.\n *\n * @param {Object} props Component props.\n * @param {Object} props.ref Element reference.\n * @param {boolean} props.isFocused Whether the component has current focus.\n * @param {number} props.highlightParent Whether to highlight the parent block. It defaults in highlighting the selected block.\n * @param {number} [props.debounceTimeout=250] Debounce timeout in milliseconds.\n */\nfunction useDebouncedShowGestures( {\n\tref,\n\tisFocused,\n\thighlightParent,\n\tdebounceTimeout = DEBOUNCE_TIMEOUT,\n} ) {\n\tconst { getSelectedBlockClientId, getBlockRootClientId } =\n\t\tuseSelect( blockEditorStore );\n\tconst { toggleBlockHighlight } = useDispatch( blockEditorStore );\n\tconst timeoutRef = useRef();\n\tconst isDistractionFree = useSelect(\n\t\t( select ) =>\n\t\t\tselect( blockEditorStore ).getSettings().isDistractionFree,\n\t\t[]\n\t);\n\tconst handleOnChange = ( nextIsFocused ) => {\n\t\tif ( nextIsFocused && isDistractionFree ) {\n\t\t\treturn;\n\t\t}\n\t\tconst selectedBlockClientId = getSelectedBlockClientId();\n\t\tconst clientId = highlightParent\n\t\t\t? getBlockRootClientId( selectedBlockClientId )\n\t\t\t: selectedBlockClientId;\n\t\ttoggleBlockHighlight( clientId, nextIsFocused );\n\t};\n\n\tconst getIsHovered = () => {\n\t\treturn ref?.current && ref.current.matches( ':hover' );\n\t};\n\n\tconst shouldHideGestures = () => {\n\t\tconst isHovered = getIsHovered();\n\t\treturn ! isFocused && ! isHovered;\n\t};\n\n\tconst clearTimeoutRef = () => {\n\t\tconst timeout = timeoutRef.current;\n\n\t\tif ( timeout && clearTimeout ) {\n\t\t\tclearTimeout( timeout );\n\t\t}\n\t};\n\n\tconst debouncedShowGestures = ( event ) => {\n\t\tif ( event ) {\n\t\t\tevent.stopPropagation();\n\t\t}\n\n\t\tclearTimeoutRef();\n\t\thandleOnChange( true );\n\t};\n\n\tconst debouncedHideGestures = ( event ) => {\n\t\tif ( event ) {\n\t\t\tevent.stopPropagation();\n\t\t}\n\n\t\tclearTimeoutRef();\n\n\t\ttimeoutRef.current = setTimeout( () => {\n\t\t\tif ( shouldHideGestures() ) {\n\t\t\t\thandleOnChange( false );\n\t\t\t}\n\t\t}, debounceTimeout );\n\t};\n\n\tuseEffect(\n\t\t() => () => {\n\t\t\t/**\n\t\t\t * We need to call the change handler with `isFocused`\n\t\t\t * set to false on unmount because we also clear the\n\t\t\t * timeout that would handle that.\n\t\t\t */\n\t\t\thandleOnChange( false );\n\t\t\tclearTimeoutRef();\n\t\t},\n\t\t[]\n\t);\n\n\treturn {\n\t\tdebouncedShowGestures,\n\t\tdebouncedHideGestures,\n\t};\n}\n\n/**\n * Hook that provides gesture events for DOM elements\n * that interact with the isFocused state.\n *\n * @param {Object} props Component props.\n * @param {Object} props.ref Element reference.\n * @param {number} [props.highlightParent=false] Whether to highlight the parent block. It defaults to highlighting the selected block.\n * @param {number} [props.debounceTimeout=250] Debounce timeout in milliseconds.\n */\nexport function useShowHoveredOrFocusedGestures( {\n\tref,\n\thighlightParent = false,\n\tdebounceTimeout = DEBOUNCE_TIMEOUT,\n} ) {\n\tconst [ isFocused, setIsFocused ] = useState( false );\n\tconst { debouncedShowGestures, debouncedHideGestures } =\n\t\tuseDebouncedShowGestures( {\n\t\t\tref,\n\t\t\tdebounceTimeout,\n\t\t\tisFocused,\n\t\t\thighlightParent,\n\t\t} );\n\n\tconst registerRef = useRef( false );\n\n\tconst isFocusedWithin = () => {\n\t\treturn (\n\t\t\tref?.current &&\n\t\t\tref.current.contains( ref.current.ownerDocument.activeElement )\n\t\t);\n\t};\n\n\tuseEffect( () => {\n\t\tconst node = ref.current;\n\n\t\tconst handleOnFocus = () => {\n\t\t\tif ( isFocusedWithin() ) {\n\t\t\t\tsetIsFocused( true );\n\t\t\t\tdebouncedShowGestures();\n\t\t\t}\n\t\t};\n\n\t\tconst handleOnBlur = () => {\n\t\t\tif ( ! isFocusedWithin() ) {\n\t\t\t\tsetIsFocused( false );\n\t\t\t\tdebouncedHideGestures();\n\t\t\t}\n\t\t};\n\n\t\t/**\n\t\t * Events are added via DOM events (vs. React synthetic events),\n\t\t * as the child React components swallow mouse events.\n\t\t */\n\t\tif ( node && ! registerRef.current ) {\n\t\t\tnode.addEventListener( 'focus', handleOnFocus, true );\n\t\t\tnode.addEventListener( 'blur', handleOnBlur, true );\n\t\t\tregisterRef.current = true;\n\t\t}\n\n\t\treturn () => {\n\t\t\tif ( node ) {\n\t\t\t\tnode.removeEventListener( 'focus', handleOnFocus );\n\t\t\t\tnode.removeEventListener( 'blur', handleOnBlur );\n\t\t\t}\n\t\t};\n\t}, [\n\t\tref,\n\t\tregisterRef,\n\t\tsetIsFocused,\n\t\tdebouncedShowGestures,\n\t\tdebouncedHideGestures,\n\t] );\n\n\treturn {\n\t\tonMouseMove: debouncedShowGestures,\n\t\tonMouseLeave: debouncedHideGestures,\n\t};\n}\n"]}
|
|
@@ -55,7 +55,8 @@ function BlockContextualToolbar({
|
|
|
55
55
|
blockType,
|
|
56
56
|
hasParents,
|
|
57
57
|
showParentSelector,
|
|
58
|
-
selectedBlockClientId
|
|
58
|
+
selectedBlockClientId,
|
|
59
|
+
isContentOnly
|
|
59
60
|
} = (0, _data.useSelect)(select => {
|
|
60
61
|
const {
|
|
61
62
|
getBlockName,
|
|
@@ -76,6 +77,7 @@ function BlockContextualToolbar({
|
|
|
76
77
|
selectedBlockClientId: _selectedBlockClientId,
|
|
77
78
|
blockType: _selectedBlockClientId && getBlockType(getBlockName(_selectedBlockClientId)),
|
|
78
79
|
hasParents: parents.length,
|
|
80
|
+
isContentOnly: getBlockEditingMode(_selectedBlockClientId) === 'contentOnly',
|
|
79
81
|
showParentSelector: parentBlockType && getBlockEditingMode(firstParentClientId) === 'default' && (0, _blocks.hasBlockSupport)(parentBlockType, '__experimentalParentSelector', true) && selectedBlockClientIds.length <= 1 && getBlockEditingMode(_selectedBlockClientId) === 'default'
|
|
80
82
|
};
|
|
81
83
|
}, []);
|
|
@@ -83,7 +85,7 @@ function BlockContextualToolbar({
|
|
|
83
85
|
setIsCollapsed(false);
|
|
84
86
|
}, [selectedBlockClientId]);
|
|
85
87
|
|
|
86
|
-
if (blockType && !(0, _blocks.hasBlockSupport)(blockType, '__experimentalToolbar', true)) {
|
|
88
|
+
if (isContentOnly || blockType && !(0, _blocks.hasBlockSupport)(blockType, '__experimentalToolbar', true)) {
|
|
87
89
|
return null;
|
|
88
90
|
} // Shifts the toolbar to make room for the parent block selector.
|
|
89
91
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/block-tools/block-contextual-toolbar.js"],"names":["BlockContextualToolbar","focusOnMount","isFixed","props","isCollapsed","setIsCollapsed","toolbarButtonRef","isLargeViewport","blockType","hasParents","showParentSelector","selectedBlockClientId","select","getBlockName","getBlockParents","getSelectedBlockClientIds","getBlockEditingMode","blockEditorStore","getBlockType","blocksStore","selectedBlockClientIds","_selectedBlockClientId","parents","firstParentClientId","length","parentBlockName","parentBlockType","classes","ToolbarButton","next","previous","collapsed","current","focus"],"mappings":";;;;;;;;;AASA;;AANA;;AAKA;;AAEA;;AACA;;AACA;;AAKA;;AACA;;AAKA;;AACA;;AACA;;AACA;;AA1BA;AACA;AACA;;AAGA;AACA;AACA;;AAaA;AACA;AACA;AAMA,SAASA,sBAAT,CAAiC;AAAEC,EAAAA,YAAF;AAAgBC,EAAAA,OAAhB;AAAyB,KAAGC;AAA5B,CAAjC,EAAuE;AACtE;AACA,QAAM,CAAEC,WAAF,EAAeC,cAAf,IAAkC,uBAAU,KAAV,CAAxC;AACA,QAAMC,gBAAgB,GAAG,sBAAzB;AAEA,QAAMC,eAAe,GAAG,+BAAkB,QAAlB,CAAxB;AACA,QAAM;
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/block-tools/block-contextual-toolbar.js"],"names":["BlockContextualToolbar","focusOnMount","isFixed","props","isCollapsed","setIsCollapsed","toolbarButtonRef","isLargeViewport","blockType","hasParents","showParentSelector","selectedBlockClientId","isContentOnly","select","getBlockName","getBlockParents","getSelectedBlockClientIds","getBlockEditingMode","blockEditorStore","getBlockType","blocksStore","selectedBlockClientIds","_selectedBlockClientId","parents","firstParentClientId","length","parentBlockName","parentBlockType","classes","ToolbarButton","next","previous","collapsed","current","focus"],"mappings":";;;;;;;;;AASA;;AANA;;AAKA;;AAEA;;AACA;;AACA;;AAKA;;AACA;;AAKA;;AACA;;AACA;;AACA;;AA1BA;AACA;AACA;;AAGA;AACA;AACA;;AAaA;AACA;AACA;AAMA,SAASA,sBAAT,CAAiC;AAAEC,EAAAA,YAAF;AAAgBC,EAAAA,OAAhB;AAAyB,KAAGC;AAA5B,CAAjC,EAAuE;AACtE;AACA,QAAM,CAAEC,WAAF,EAAeC,cAAf,IAAkC,uBAAU,KAAV,CAAxC;AACA,QAAMC,gBAAgB,GAAG,sBAAzB;AAEA,QAAMC,eAAe,GAAG,+BAAkB,QAAlB,CAAxB;AACA,QAAM;AACLC,IAAAA,SADK;AAELC,IAAAA,UAFK;AAGLC,IAAAA,kBAHK;AAILC,IAAAA,qBAJK;AAKLC,IAAAA;AALK,MAMF,qBAAaC,MAAF,IAAc;AAC5B,UAAM;AACLC,MAAAA,YADK;AAELC,MAAAA,eAFK;AAGLC,MAAAA,yBAHK;AAILC,MAAAA;AAJK,QAKF,wBAAQJ,MAAM,CAAEK,YAAF,CAAd,CALJ;AAMA,UAAM;AAAEC,MAAAA;AAAF,QAAmBN,MAAM,CAAEO,aAAF,CAA/B;AACA,UAAMC,sBAAsB,GAAGL,yBAAyB,EAAxD;AACA,UAAMM,sBAAsB,GAAGD,sBAAsB,CAAE,CAAF,CAArD;AACA,UAAME,OAAO,GAAGR,eAAe,CAAEO,sBAAF,CAA/B;AACA,UAAME,mBAAmB,GAAGD,OAAO,CAAEA,OAAO,CAACE,MAAR,GAAiB,CAAnB,CAAnC;AACA,UAAMC,eAAe,GAAGZ,YAAY,CAAEU,mBAAF,CAApC;AACA,UAAMG,eAAe,GAAGR,YAAY,CAAEO,eAAF,CAApC;AAEA,WAAO;AACNf,MAAAA,qBAAqB,EAAEW,sBADjB;AAENd,MAAAA,SAAS,EACRc,sBAAsB,IACtBH,YAAY,CAAEL,YAAY,CAAEQ,sBAAF,CAAd,CAJP;AAKNb,MAAAA,UAAU,EAAEc,OAAO,CAACE,MALd;AAMNb,MAAAA,aAAa,EACZK,mBAAmB,CAAEK,sBAAF,CAAnB,KAAkD,aAP7C;AAQNZ,MAAAA,kBAAkB,EACjBiB,eAAe,IACfV,mBAAmB,CAAEO,mBAAF,CAAnB,KAA+C,SAD/C,IAEA,6BACCG,eADD,EAEC,8BAFD,EAGC,IAHD,CAFA,IAOAN,sBAAsB,CAACI,MAAvB,IAAiC,CAPjC,IAQAR,mBAAmB,CAAEK,sBAAF,CAAnB,KAAkD;AAjB7C,KAAP;AAmBA,GAlCG,EAkCD,EAlCC,CANJ;AA0CA,0BAAW,MAAM;AAChBjB,IAAAA,cAAc,CAAE,KAAF,CAAd;AACA,GAFD,EAEG,CAAEM,qBAAF,CAFH;;AAIA,MACCC,aAAa,IACXJ,SAAS,IACV,CAAE,6BAAiBA,SAAjB,EAA4B,uBAA5B,EAAqD,IAArD,CAHJ,EAIE;AACD,WAAO,IAAP;AACA,GA1DqE,CA4DtE;;;AACA,QAAMoB,OAAO,GAAG,yBAAY,uCAAZ,EAAqD;AACpE,kBAAcnB,UAAU,IAAIC,kBADwC;AAEpE,gBAAYR,OAFwD;AAGpE,oBAAgBE;AAHoD,GAArD,CAAhB;AAMA,SACC,4BAAC,yBAAD;AACC,IAAA,YAAY,EAAGH,YADhB;AAEC,IAAA,SAAS,EAAG2B;AACZ;AAHD;AAIC,kBAAa,cAAI,aAAJ,CAJd;AAAA,OAKMzB;AALN,KAOG,CAAEC,WAAF,IAAiB,4BAAC,qBAAD;AAAc,IAAA,cAAc,EAAGF;AAA/B,IAPpB,EAQGA,OAAO,IAAIK,eAAX,IAA8BC,SAA9B,IACD,4BAAC,wBAAD;AACC,IAAA,SAAS,EACRJ,WAAW,GACR,wDADQ,GAER;AAJL,KAOC,4BAAC,uBAAD;AACC,IAAA,EAAE,EAAGyB,yBADN;AAEC,IAAA,GAAG,EAAGvB,gBAFP;AAGC,IAAA,IAAI,EAAGF,WAAW,GAAG0B,WAAH,GAAUC,eAH7B;AAIC,IAAA,OAAO,EAAG,MAAM;AACf1B,MAAAA,cAAc,CAAI2B,SAAF,IAAiB,CAAEA,SAArB,CAAd;AACA1B,MAAAA,gBAAgB,CAAC2B,OAAjB,CAAyBC,KAAzB;AACA,KAPF;AAQC,IAAA,KAAK,EACJ9B,WAAW,GACR,cAAI,kBAAJ,CADQ,GAER,cAAI,kBAAJ;AAXL,IAPD,CATF,CADD;AAmCA;;eAEcJ,sB","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useEffect, useRef, useState } from '@wordpress/element';\nimport { hasBlockSupport, store as blocksStore } from '@wordpress/blocks';\nimport { useSelect } from '@wordpress/data';\nimport {\n\tToolbarItem,\n\tToolbarButton,\n\tToolbarGroup,\n} from '@wordpress/components';\nimport { next, previous } from '@wordpress/icons';\nimport { useViewportMatch } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport NavigableToolbar from '../navigable-toolbar';\nimport BlockToolbar from '../block-toolbar';\nimport { store as blockEditorStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\n\nfunction BlockContextualToolbar( { focusOnMount, isFixed, ...props } ) {\n\t// When the toolbar is fixed it can be collapsed\n\tconst [ isCollapsed, setIsCollapsed ] = useState( false );\n\tconst toolbarButtonRef = useRef();\n\n\tconst isLargeViewport = useViewportMatch( 'medium' );\n\tconst {\n\t\tblockType,\n\t\thasParents,\n\t\tshowParentSelector,\n\t\tselectedBlockClientId,\n\t\tisContentOnly,\n\t} = useSelect( ( select ) => {\n\t\tconst {\n\t\t\tgetBlockName,\n\t\t\tgetBlockParents,\n\t\t\tgetSelectedBlockClientIds,\n\t\t\tgetBlockEditingMode,\n\t\t} = unlock( select( blockEditorStore ) );\n\t\tconst { getBlockType } = select( blocksStore );\n\t\tconst selectedBlockClientIds = getSelectedBlockClientIds();\n\t\tconst _selectedBlockClientId = selectedBlockClientIds[ 0 ];\n\t\tconst parents = getBlockParents( _selectedBlockClientId );\n\t\tconst firstParentClientId = parents[ parents.length - 1 ];\n\t\tconst parentBlockName = getBlockName( firstParentClientId );\n\t\tconst parentBlockType = getBlockType( parentBlockName );\n\n\t\treturn {\n\t\t\tselectedBlockClientId: _selectedBlockClientId,\n\t\t\tblockType:\n\t\t\t\t_selectedBlockClientId &&\n\t\t\t\tgetBlockType( getBlockName( _selectedBlockClientId ) ),\n\t\t\thasParents: parents.length,\n\t\t\tisContentOnly:\n\t\t\t\tgetBlockEditingMode( _selectedBlockClientId ) === 'contentOnly',\n\t\t\tshowParentSelector:\n\t\t\t\tparentBlockType &&\n\t\t\t\tgetBlockEditingMode( firstParentClientId ) === 'default' &&\n\t\t\t\thasBlockSupport(\n\t\t\t\t\tparentBlockType,\n\t\t\t\t\t'__experimentalParentSelector',\n\t\t\t\t\ttrue\n\t\t\t\t) &&\n\t\t\t\tselectedBlockClientIds.length <= 1 &&\n\t\t\t\tgetBlockEditingMode( _selectedBlockClientId ) === 'default',\n\t\t};\n\t}, [] );\n\n\tuseEffect( () => {\n\t\tsetIsCollapsed( false );\n\t}, [ selectedBlockClientId ] );\n\n\tif (\n\t\tisContentOnly ||\n\t\t( blockType &&\n\t\t\t! hasBlockSupport( blockType, '__experimentalToolbar', true ) )\n\t) {\n\t\treturn null;\n\t}\n\n\t// Shifts the toolbar to make room for the parent block selector.\n\tconst classes = classnames( 'block-editor-block-contextual-toolbar', {\n\t\t'has-parent': hasParents && showParentSelector,\n\t\t'is-fixed': isFixed,\n\t\t'is-collapsed': isCollapsed,\n\t} );\n\n\treturn (\n\t\t<NavigableToolbar\n\t\t\tfocusOnMount={ focusOnMount }\n\t\t\tclassName={ classes }\n\t\t\t/* translators: accessibility text for the block toolbar */\n\t\t\taria-label={ __( 'Block tools' ) }\n\t\t\t{ ...props }\n\t\t>\n\t\t\t{ ! isCollapsed && <BlockToolbar hideDragHandle={ isFixed } /> }\n\t\t\t{ isFixed && isLargeViewport && blockType && (\n\t\t\t\t<ToolbarGroup\n\t\t\t\t\tclassName={\n\t\t\t\t\t\tisCollapsed\n\t\t\t\t\t\t\t? 'block-editor-block-toolbar__group-expand-fixed-toolbar'\n\t\t\t\t\t\t\t: 'block-editor-block-toolbar__group-collapse-fixed-toolbar'\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t<ToolbarItem\n\t\t\t\t\t\tas={ ToolbarButton }\n\t\t\t\t\t\tref={ toolbarButtonRef }\n\t\t\t\t\t\ticon={ isCollapsed ? next : previous }\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tsetIsCollapsed( ( collapsed ) => ! collapsed );\n\t\t\t\t\t\t\ttoolbarButtonRef.current.focus();\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\tisCollapsed\n\t\t\t\t\t\t\t\t? __( 'Show block tools' )\n\t\t\t\t\t\t\t\t: __( 'Hide block tools' )\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t</ToolbarGroup>\n\t\t\t) }\n\t\t</NavigableToolbar>\n\t);\n}\n\nexport default BlockContextualToolbar;\n"]}
|