@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":["getBlockType","serialize","store","blocksStore","DropdownMenu","MenuGroup","MenuItem","useDispatch","useSelect","moreVertical","Children","cloneElement","useCallback","useRef","__","sprintf","keyboardShortcutsStore","__unstableUseShortcutEventMatch","pipe","useCopyToClipboard","BlockActions","BlockIcon","BlockHTMLConvertButton","__unstableBlockSettingsMenuFirstItem","BlockSettingsMenuControls","blockEditorStore","useShowMoversGestures","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","getActiveBlockVariation","_firstParentClientId","parentBlockName","getBlockOrder","shortcuts","getShortcutRepresentation","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","onKeyDown","event","defaultPrevented","preventDefault","onClose","icon","title","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":["getBlockType","serialize","store","blocksStore","DropdownMenu","MenuGroup","MenuItem","useDispatch","useSelect","moreVertical","Children","cloneElement","useCallback","useRef","__","sprintf","keyboardShortcutsStore","__unstableUseShortcutEventMatch","pipe","useCopyToClipboard","BlockActions","BlockIcon","BlockHTMLConvertButton","__unstableBlockSettingsMenuFirstItem","BlockSettingsMenuControls","blockEditorStore","useShowHoveredOrFocusedGestures","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","getActiveBlockVariation","_firstParentClientId","parentBlockName","getBlockOrder","shortcuts","getShortcutRepresentation","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","onKeyDown","event","defaultPrevented","preventDefault","onClose","icon","title","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 { 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"]}
|
|
@@ -8,7 +8,7 @@ import classnames from 'classnames';
|
|
|
8
8
|
* WordPress dependencies
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
|
-
import { useSelect
|
|
11
|
+
import { useSelect } from '@wordpress/data';
|
|
12
12
|
import { useRef } from '@wordpress/element';
|
|
13
13
|
import { useViewportMatch } from '@wordpress/compose';
|
|
14
14
|
import { getBlockType, hasBlockSupport, isReusableBlock, isTemplatePart } from '@wordpress/blocks';
|
|
@@ -26,7 +26,7 @@ import BlockSettingsMenu from '../block-settings-menu';
|
|
|
26
26
|
import { BlockLockToolbar } from '../block-lock';
|
|
27
27
|
import { BlockGroupToolbar } from '../convert-to-group-buttons';
|
|
28
28
|
import BlockEditVisuallyButton from '../block-edit-visually-button';
|
|
29
|
-
import {
|
|
29
|
+
import { useShowHoveredOrFocusedGestures } from './utils';
|
|
30
30
|
import { store as blockEditorStore } from '../../store';
|
|
31
31
|
import __unstableBlockNameContext from './block-name-context';
|
|
32
32
|
import { unlock } from '../../lock-unlock';
|
|
@@ -34,14 +34,9 @@ import { unlock } from '../../lock-unlock';
|
|
|
34
34
|
const BlockToolbar = ({
|
|
35
35
|
hideDragHandle
|
|
36
36
|
}) => {
|
|
37
|
-
const {
|
|
38
|
-
getSelectedBlockClientId
|
|
39
|
-
} = useSelect(blockEditorStore);
|
|
40
37
|
const {
|
|
41
38
|
blockClientIds,
|
|
42
39
|
blockType,
|
|
43
|
-
hasFixedToolbar,
|
|
44
|
-
isDistractionFree,
|
|
45
40
|
isValid,
|
|
46
41
|
isVisual,
|
|
47
42
|
blockEditingMode
|
|
@@ -52,18 +47,14 @@ const BlockToolbar = ({
|
|
|
52
47
|
getSelectedBlockClientIds,
|
|
53
48
|
isBlockValid,
|
|
54
49
|
getBlockRootClientId,
|
|
55
|
-
getSettings,
|
|
56
50
|
getBlockEditingMode
|
|
57
51
|
} = unlock(select(blockEditorStore));
|
|
58
52
|
const selectedBlockClientIds = getSelectedBlockClientIds();
|
|
59
53
|
const selectedBlockClientId = selectedBlockClientIds[0];
|
|
60
54
|
const blockRootClientId = getBlockRootClientId(selectedBlockClientId);
|
|
61
|
-
const settings = getSettings();
|
|
62
55
|
return {
|
|
63
56
|
blockClientIds: selectedBlockClientIds,
|
|
64
57
|
blockType: selectedBlockClientId && getBlockType(getBlockName(selectedBlockClientId)),
|
|
65
|
-
hasFixedToolbar: settings.hasFixedToolbar,
|
|
66
|
-
isDistractionFree: settings.isDistractionFree,
|
|
67
58
|
rootClientId: blockRootClientId,
|
|
68
59
|
isValid: selectedBlockClientIds.every(id => isBlockValid(id)),
|
|
69
60
|
isVisual: selectedBlockClientIds.every(id => getBlockMode(id) === 'visual'),
|
|
@@ -73,28 +64,10 @@ const BlockToolbar = ({
|
|
|
73
64
|
const toolbarWrapperRef = useRef(null); // Handles highlighting the current block outline on hover or focus of the
|
|
74
65
|
// block type toolbar area.
|
|
75
66
|
|
|
76
|
-
const {
|
|
77
|
-
toggleBlockHighlight
|
|
78
|
-
} = useDispatch(blockEditorStore);
|
|
79
67
|
const nodeRef = useRef();
|
|
80
|
-
const {
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
} = useShowMoversGestures({
|
|
84
|
-
ref: nodeRef,
|
|
85
|
-
|
|
86
|
-
onChange(isFocused) {
|
|
87
|
-
if (isFocused && isDistractionFree) {
|
|
88
|
-
return;
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
toggleBlockHighlight(getSelectedBlockClientId(), isFocused);
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
}); // Account for the cases where the block toolbar is rendered within the
|
|
95
|
-
// header area and not contextually to the block.
|
|
96
|
-
|
|
97
|
-
const displayHeaderToolbar = useViewportMatch('medium', '<') || hasFixedToolbar;
|
|
68
|
+
const showHoveredOrFocusedGestures = useShowHoveredOrFocusedGestures({
|
|
69
|
+
ref: nodeRef
|
|
70
|
+
});
|
|
98
71
|
const isLargeViewport = !useViewportMatch('medium', '<');
|
|
99
72
|
|
|
100
73
|
if (blockType) {
|
|
@@ -103,8 +76,6 @@ const BlockToolbar = ({
|
|
|
103
76
|
}
|
|
104
77
|
}
|
|
105
78
|
|
|
106
|
-
const shouldShowMovers = displayHeaderToolbar || showMovers;
|
|
107
|
-
|
|
108
79
|
if (blockClientIds.length === 0) {
|
|
109
80
|
return null;
|
|
110
81
|
}
|
|
@@ -113,7 +84,6 @@ const BlockToolbar = ({
|
|
|
113
84
|
const isMultiToolbar = blockClientIds.length > 1;
|
|
114
85
|
const isSynced = isReusableBlock(blockType) || isTemplatePart(blockType);
|
|
115
86
|
const classes = classnames('block-editor-block-toolbar', {
|
|
116
|
-
'is-showing-movers': shouldShowMovers,
|
|
117
87
|
'is-synced': isSynced
|
|
118
88
|
});
|
|
119
89
|
return createElement("div", {
|
|
@@ -121,7 +91,7 @@ const BlockToolbar = ({
|
|
|
121
91
|
ref: toolbarWrapperRef
|
|
122
92
|
}, !isMultiToolbar && isLargeViewport && blockEditingMode === 'default' && createElement(BlockParentSelector, null), (shouldShowVisualToolbar || isMultiToolbar) && blockEditingMode === 'default' && createElement("div", {
|
|
123
93
|
ref: nodeRef,
|
|
124
|
-
...
|
|
94
|
+
...showHoveredOrFocusedGestures
|
|
125
95
|
}, createElement(ToolbarGroup, {
|
|
126
96
|
className: "block-editor-block-toolbar__block-controls"
|
|
127
97
|
}, createElement(BlockSwitcher, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/block-toolbar/index.js"],"names":["classnames","useSelect","useDispatch","useRef","useViewportMatch","getBlockType","hasBlockSupport","isReusableBlock","isTemplatePart","ToolbarGroup","BlockMover","BlockParentSelector","BlockSwitcher","BlockControls","__unstableBlockToolbarLastItem","BlockSettingsMenu","BlockLockToolbar","BlockGroupToolbar","BlockEditVisuallyButton","useShowMoversGestures","store","blockEditorStore","__unstableBlockNameContext","unlock","BlockToolbar","hideDragHandle","getSelectedBlockClientId","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":";;AAAA;AACA;AACA;AACA,OAAOA,UAAP,MAAuB,YAAvB;AAEA;AACA;AACA;;AACA,SAASC,SAAT,EAAoBC,WAApB,QAAuC,iBAAvC;AACA,SAASC,MAAT,QAAuB,oBAAvB;AACA,SAASC,gBAAT,QAAiC,oBAAjC;AACA,SACCC,YADD,EAECC,eAFD,EAGCC,eAHD,EAICC,cAJD,QAKO,mBALP;AAMA,SAASC,YAAT,QAA6B,uBAA7B;AAEA;AACA;AACA;;AACA,OAAOC,UAAP,MAAuB,gBAAvB;AACA,OAAOC,mBAAP,MAAgC,0BAAhC;AACA,OAAOC,aAAP,MAA0B,mBAA1B;AACA,OAAOC,aAAP,MAA0B,mBAA1B;AACA,OAAOC,8BAAP,MAA2C,2BAA3C;AACA,OAAOC,iBAAP,MAA8B,wBAA9B;AACA,SAASC,gBAAT,QAAiC,eAAjC;AACA,SAASC,iBAAT,QAAkC,6BAAlC;AACA,OAAOC,uBAAP,MAAoC,+BAApC;AACA,SAASC,qBAAT,QAAsC,SAAtC;AACA,SAASC,KAAK,IAAIC,gBAAlB,QAA0C,aAA1C;AACA,OAAOC,0BAAP,MAAuC,sBAAvC;AACA,SAASC,MAAT,QAAuB,mBAAvB;;AAEA,MAAMC,YAAY,GAAG,CAAE;AAAEC,EAAAA;AAAF,CAAF,KAA0B;AAC9C,QAAM;AAAEC,IAAAA;AAAF,MAA+BzB,SAAS,CAAEoB,gBAAF,CAA9C;AACA,QAAM;AACLM,IAAAA,cADK;AAELC,IAAAA,SAFK;AAGLC,IAAAA,eAHK;AAILC,IAAAA,iBAJK;AAKLC,IAAAA,OALK;AAMLC,IAAAA,QANK;AAOLC,IAAAA;AAPK,MAQFhC,SAAS,CAAIiC,MAAF,IAAc;AAC5B,UAAM;AACLC,MAAAA,YADK;AAELC,MAAAA,YAFK;AAGLC,MAAAA,yBAHK;AAILC,MAAAA,YAJK;AAKLC,MAAAA,oBALK;AAMLC,MAAAA,WANK;AAOLC,MAAAA;AAPK,QAQFlB,MAAM,CAAEW,MAAM,CAAEb,gBAAF,CAAR,CARV;AASA,UAAMqB,sBAAsB,GAAGL,yBAAyB,EAAxD;AACA,UAAMM,qBAAqB,GAAGD,sBAAsB,CAAE,CAAF,CAApD;AACA,UAAME,iBAAiB,GAAGL,oBAAoB,CAAEI,qBAAF,CAA9C;AACA,UAAME,QAAQ,GAAGL,WAAW,EAA5B;AAEA,WAAO;AACNb,MAAAA,cAAc,EAAEe,sBADV;AAENd,MAAAA,SAAS,EACRe,qBAAqB,IACrBtC,YAAY,CAAE8B,YAAY,CAAEQ,qBAAF,CAAd,CAJP;AAKNd,MAAAA,eAAe,EAAEgB,QAAQ,CAAChB,eALpB;AAMNC,MAAAA,iBAAiB,EAAEe,QAAQ,CAACf,iBANtB;AAONgB,MAAAA,YAAY,EAAEF,iBAPR;AAQNb,MAAAA,OAAO,EAAEW,sBAAsB,CAACK,KAAvB,CAAgCC,EAAF,IACtCV,YAAY,CAAEU,EAAF,CADJ,CARH;AAWNhB,MAAAA,QAAQ,EAAEU,sBAAsB,CAACK,KAAvB,CACPC,EAAF,IAAUZ,YAAY,CAAEY,EAAF,CAAZ,KAAuB,QADxB,CAXJ;AAcNf,MAAAA,gBAAgB,EAAEQ,mBAAmB,CAAEE,qBAAF;AAd/B,KAAP;AAgBA,GA/BY,EA+BV,EA/BU,CARb;AAyCA,QAAMM,iBAAiB,GAAG9C,MAAM,CAAE,IAAF,CAAhC,CA3C8C,CA6C9C;AACA;;AACA,QAAM;AAAE+C,IAAAA;AAAF,MAA2BhD,WAAW,CAAEmB,gBAAF,CAA5C;AACA,QAAM8B,OAAO,GAAGhD,MAAM,EAAtB;AACA,QAAM;AAAEiD,IAAAA,UAAF;AAAcC,IAAAA,QAAQ,EAAEC;AAAxB,MAA+CnC,qBAAqB,CACzE;AACCoC,IAAAA,GAAG,EAAEJ,OADN;;AAECK,IAAAA,QAAQ,CAAEC,SAAF,EAAc;AACrB,UAAKA,SAAS,IAAI3B,iBAAlB,EAAsC;AACrC;AACA;;AACDoB,MAAAA,oBAAoB,CAAExB,wBAAwB,EAA1B,EAA8B+B,SAA9B,CAApB;AACA;;AAPF,GADyE,CAA1E,CAjD8C,CA6D9C;AACA;;AACA,QAAMC,oBAAoB,GACzBtD,gBAAgB,CAAE,QAAF,EAAY,GAAZ,CAAhB,IAAqCyB,eADtC;AAEA,QAAM8B,eAAe,GAAG,CAAEvD,gBAAgB,CAAE,QAAF,EAAY,GAAZ,CAA1C;;AAEA,MAAKwB,SAAL,EAAiB;AAChB,QAAK,CAAEtB,eAAe,CAAEsB,SAAF,EAAa,uBAAb,EAAsC,IAAtC,CAAtB,EAAqE;AACpE,aAAO,IAAP;AACA;AACD;;AAED,QAAMgC,gBAAgB,GAAGF,oBAAoB,IAAIN,UAAjD;;AAEA,MAAKzB,cAAc,CAACkC,MAAf,KAA0B,CAA/B,EAAmC;AAClC,WAAO,IAAP;AACA;;AAED,QAAMC,uBAAuB,GAAG/B,OAAO,IAAIC,QAA3C;AACA,QAAM+B,cAAc,GAAGpC,cAAc,CAACkC,MAAf,GAAwB,CAA/C;AACA,QAAMG,QAAQ,GACbzD,eAAe,CAAEqB,SAAF,CAAf,IAAgCpB,cAAc,CAAEoB,SAAF,CAD/C;AAGA,QAAMqC,OAAO,GAAGjE,UAAU,CAAE,4BAAF,EAAgC;AACzD,yBAAqB4D,gBADoC;AAEzD,iBAAaI;AAF4C,GAAhC,CAA1B;AAKA,SACC;AAAK,IAAA,SAAS,EAAGC,OAAjB;AAA2B,IAAA,GAAG,EAAGhB;AAAjC,KACG,CAAEc,cAAF,IACDJ,eADC,IAED1B,gBAAgB,KAAK,SAFpB,IAEiC,cAAC,mBAAD,OAHpC,EAIG,CAAE6B,uBAAuB,IAAIC,cAA7B,KACD9B,gBAAgB,KAAK,SADpB,IAEA;AAAK,IAAA,GAAG,EAAGkB,OAAX;AAAA,OAA0BG;AAA1B,KACC,cAAC,YAAD;AAAc,IAAA,SAAS,EAAC;AAAxB,KACC,cAAC,aAAD;AAAe,IAAA,SAAS,EAAG3B;AAA3B,IADD,EAEG,CAAEoC,cAAF,IACD,cAAC,gBAAD;AACC,IAAA,QAAQ,EAAGpC,cAAc,CAAE,CAAF,CAD1B;AAEC,IAAA,UAAU,EAAGsB;AAFd,IAHF,EAQC,cAAC,UAAD;AACC,IAAA,SAAS,EAAGtB,cADb;AAEC,IAAA,cAAc,EAAGF;AAFlB,IARD,CADD,CANH,EAsBGqC,uBAAuB,IAAIC,cAA3B,IACD,cAAC,iBAAD,OAvBF,EAyBGD,uBAAuB,IACxB,8BACC,cAAC,aAAD,CAAe,IAAf;AACC,IAAA,KAAK,EAAC,QADP;AAEC,IAAA,SAAS,EAAC;AAFX,IADD,EAKC,cAAC,aAAD,CAAe,IAAf;AACC,IAAA,KAAK,EAAC,OADP;AAEC,IAAA,SAAS,EAAC;AAFX,IALD,EASC,cAAC,aAAD,CAAe,IAAf;AAAoB,IAAA,SAAS,EAAC;AAA9B,IATD,EAUC,cAAC,aAAD,CAAe,IAAf;AACC,IAAA,KAAK,EAAC,QADP;AAEC,IAAA,SAAS,EAAC;AAFX,IAVD,EAcC,cAAC,aAAD,CAAe,IAAf;AACC,IAAA,KAAK,EAAC,OADP;AAEC,IAAA,SAAS,EAAC;AAFX,IAdD,EAkBC,cAAC,0BAAD,CAA4B,QAA5B;AACC,IAAA,KAAK,EAAGlC,SAAS,EAAEsC;AADpB,KAGC,cAAC,8BAAD,CAAgC,IAAhC,OAHD,CAlBD,CA1BF,EAmDC,cAAC,uBAAD;AAAyB,IAAA,SAAS,EAAGvC;AAArC,IAnDD,EAoDGM,gBAAgB,KAAK,SAArB,IACD,cAAC,iBAAD;AAAmB,IAAA,SAAS,EAAGN;AAA/B,IArDF,CADD;AA0DA,CAnJD;AAqJA;AACA;AACA;;;AACA,eAAeH,YAAf","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":["classnames","useSelect","useRef","useViewportMatch","getBlockType","hasBlockSupport","isReusableBlock","isTemplatePart","ToolbarGroup","BlockMover","BlockParentSelector","BlockSwitcher","BlockControls","__unstableBlockToolbarLastItem","BlockSettingsMenu","BlockLockToolbar","BlockGroupToolbar","BlockEditVisuallyButton","useShowHoveredOrFocusedGestures","store","blockEditorStore","__unstableBlockNameContext","unlock","BlockToolbar","hideDragHandle","blockClientIds","blockType","isValid","isVisual","blockEditingMode","select","getBlockName","getBlockMode","getSelectedBlockClientIds","isBlockValid","getBlockRootClientId","getBlockEditingMode","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"]}
|
|
@@ -1,47 +1,59 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* WordPress dependencies
|
|
3
3
|
*/
|
|
4
|
+
import { useSelect, useDispatch } from '@wordpress/data';
|
|
4
5
|
import { useState, useRef, useEffect } from '@wordpress/element';
|
|
6
|
+
/**
|
|
7
|
+
* Internal dependencies
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import { store as blockEditorStore } from '../../store';
|
|
5
11
|
const {
|
|
6
12
|
clearTimeout,
|
|
7
13
|
setTimeout
|
|
8
14
|
} = window;
|
|
9
|
-
|
|
10
|
-
const noop = () => {};
|
|
11
|
-
|
|
12
15
|
const DEBOUNCE_TIMEOUT = 200;
|
|
13
16
|
/**
|
|
14
|
-
* Hook that creates
|
|
17
|
+
* Hook that creates debounced callbacks when the node is hovered or focused.
|
|
15
18
|
*
|
|
16
|
-
* @param {Object}
|
|
17
|
-
* @param {Object}
|
|
18
|
-
* @param {boolean}
|
|
19
|
-
* @param {number}
|
|
20
|
-
* @param {
|
|
19
|
+
* @param {Object} props Component props.
|
|
20
|
+
* @param {Object} props.ref Element reference.
|
|
21
|
+
* @param {boolean} props.isFocused Whether the component has current focus.
|
|
22
|
+
* @param {number} props.highlightParent Whether to highlight the parent block. It defaults in highlighting the selected block.
|
|
23
|
+
* @param {number} [props.debounceTimeout=250] Debounce timeout in milliseconds.
|
|
21
24
|
*/
|
|
22
25
|
|
|
23
|
-
|
|
26
|
+
function useDebouncedShowGestures({
|
|
24
27
|
ref,
|
|
25
28
|
isFocused,
|
|
26
|
-
|
|
27
|
-
|
|
29
|
+
highlightParent,
|
|
30
|
+
debounceTimeout = DEBOUNCE_TIMEOUT
|
|
28
31
|
}) {
|
|
29
|
-
const
|
|
32
|
+
const {
|
|
33
|
+
getSelectedBlockClientId,
|
|
34
|
+
getBlockRootClientId
|
|
35
|
+
} = useSelect(blockEditorStore);
|
|
36
|
+
const {
|
|
37
|
+
toggleBlockHighlight
|
|
38
|
+
} = useDispatch(blockEditorStore);
|
|
30
39
|
const timeoutRef = useRef();
|
|
40
|
+
const isDistractionFree = useSelect(select => select(blockEditorStore).getSettings().isDistractionFree, []);
|
|
31
41
|
|
|
32
42
|
const handleOnChange = nextIsFocused => {
|
|
33
|
-
if (
|
|
34
|
-
|
|
43
|
+
if (nextIsFocused && isDistractionFree) {
|
|
44
|
+
return;
|
|
35
45
|
}
|
|
36
46
|
|
|
37
|
-
|
|
47
|
+
const selectedBlockClientId = getSelectedBlockClientId();
|
|
48
|
+
const clientId = highlightParent ? getBlockRootClientId(selectedBlockClientId) : selectedBlockClientId;
|
|
49
|
+
toggleBlockHighlight(clientId, nextIsFocused);
|
|
38
50
|
};
|
|
39
51
|
|
|
40
52
|
const getIsHovered = () => {
|
|
41
53
|
return ref?.current && ref.current.matches(':hover');
|
|
42
54
|
};
|
|
43
55
|
|
|
44
|
-
const
|
|
56
|
+
const shouldHideGestures = () => {
|
|
45
57
|
const isHovered = getIsHovered();
|
|
46
58
|
return !isFocused && !isHovered;
|
|
47
59
|
};
|
|
@@ -54,26 +66,23 @@ export function useDebouncedShowMovers({
|
|
|
54
66
|
}
|
|
55
67
|
};
|
|
56
68
|
|
|
57
|
-
const
|
|
69
|
+
const debouncedShowGestures = event => {
|
|
58
70
|
if (event) {
|
|
59
71
|
event.stopPropagation();
|
|
60
72
|
}
|
|
61
73
|
|
|
62
74
|
clearTimeoutRef();
|
|
63
|
-
|
|
64
|
-
if (!showMovers) {
|
|
65
|
-
handleOnChange(true);
|
|
66
|
-
}
|
|
75
|
+
handleOnChange(true);
|
|
67
76
|
};
|
|
68
77
|
|
|
69
|
-
const
|
|
78
|
+
const debouncedHideGestures = event => {
|
|
70
79
|
if (event) {
|
|
71
80
|
event.stopPropagation();
|
|
72
81
|
}
|
|
73
82
|
|
|
74
83
|
clearTimeoutRef();
|
|
75
84
|
timeoutRef.current = setTimeout(() => {
|
|
76
|
-
if (
|
|
85
|
+
if (shouldHideGestures()) {
|
|
77
86
|
handleOnChange(false);
|
|
78
87
|
}
|
|
79
88
|
}, debounceTimeout);
|
|
@@ -89,36 +98,35 @@ export function useDebouncedShowMovers({
|
|
|
89
98
|
clearTimeoutRef();
|
|
90
99
|
}, []);
|
|
91
100
|
return {
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
debouncedHideMovers
|
|
101
|
+
debouncedShowGestures,
|
|
102
|
+
debouncedHideGestures
|
|
95
103
|
};
|
|
96
104
|
}
|
|
97
105
|
/**
|
|
98
|
-
* Hook that provides
|
|
99
|
-
* that interact with the
|
|
106
|
+
* Hook that provides gesture events for DOM elements
|
|
107
|
+
* that interact with the isFocused state.
|
|
100
108
|
*
|
|
101
|
-
* @param {Object}
|
|
102
|
-
* @param {Object}
|
|
103
|
-
* @param {number}
|
|
104
|
-
* @param {
|
|
109
|
+
* @param {Object} props Component props.
|
|
110
|
+
* @param {Object} props.ref Element reference.
|
|
111
|
+
* @param {number} [props.highlightParent=false] Whether to highlight the parent block. It defaults to highlighting the selected block.
|
|
112
|
+
* @param {number} [props.debounceTimeout=250] Debounce timeout in milliseconds.
|
|
105
113
|
*/
|
|
106
114
|
|
|
107
|
-
|
|
115
|
+
|
|
116
|
+
export function useShowHoveredOrFocusedGestures({
|
|
108
117
|
ref,
|
|
109
|
-
|
|
110
|
-
|
|
118
|
+
highlightParent = false,
|
|
119
|
+
debounceTimeout = DEBOUNCE_TIMEOUT
|
|
111
120
|
}) {
|
|
112
121
|
const [isFocused, setIsFocused] = useState(false);
|
|
113
122
|
const {
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
} = useDebouncedShowMovers({
|
|
123
|
+
debouncedShowGestures,
|
|
124
|
+
debouncedHideGestures
|
|
125
|
+
} = useDebouncedShowGestures({
|
|
118
126
|
ref,
|
|
119
127
|
debounceTimeout,
|
|
120
128
|
isFocused,
|
|
121
|
-
|
|
129
|
+
highlightParent
|
|
122
130
|
});
|
|
123
131
|
const registerRef = useRef(false);
|
|
124
132
|
|
|
@@ -132,14 +140,14 @@ export function useShowMoversGestures({
|
|
|
132
140
|
const handleOnFocus = () => {
|
|
133
141
|
if (isFocusedWithin()) {
|
|
134
142
|
setIsFocused(true);
|
|
135
|
-
|
|
143
|
+
debouncedShowGestures();
|
|
136
144
|
}
|
|
137
145
|
};
|
|
138
146
|
|
|
139
147
|
const handleOnBlur = () => {
|
|
140
148
|
if (!isFocusedWithin()) {
|
|
141
149
|
setIsFocused(false);
|
|
142
|
-
|
|
150
|
+
debouncedHideGestures();
|
|
143
151
|
}
|
|
144
152
|
};
|
|
145
153
|
/**
|
|
@@ -160,13 +168,10 @@ export function useShowMoversGestures({
|
|
|
160
168
|
node.removeEventListener('blur', handleOnBlur);
|
|
161
169
|
}
|
|
162
170
|
};
|
|
163
|
-
}, [ref, registerRef, setIsFocused,
|
|
171
|
+
}, [ref, registerRef, setIsFocused, debouncedShowGestures, debouncedHideGestures]);
|
|
164
172
|
return {
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
onMouseMove: debouncedShowMovers,
|
|
168
|
-
onMouseLeave: debouncedHideMovers
|
|
169
|
-
}
|
|
173
|
+
onMouseMove: debouncedShowGestures,
|
|
174
|
+
onMouseLeave: debouncedHideGestures
|
|
170
175
|
};
|
|
171
176
|
}
|
|
172
177
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/block-toolbar/utils.js"],"names":["useState","useRef","useEffect","clearTimeout","setTimeout","window","
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/block-toolbar/utils.js"],"names":["useSelect","useDispatch","useState","useRef","useEffect","store","blockEditorStore","clearTimeout","setTimeout","window","DEBOUNCE_TIMEOUT","useDebouncedShowGestures","ref","isFocused","highlightParent","debounceTimeout","getSelectedBlockClientId","getBlockRootClientId","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"]}
|
|
@@ -37,7 +37,8 @@ function BlockContextualToolbar({
|
|
|
37
37
|
blockType,
|
|
38
38
|
hasParents,
|
|
39
39
|
showParentSelector,
|
|
40
|
-
selectedBlockClientId
|
|
40
|
+
selectedBlockClientId,
|
|
41
|
+
isContentOnly
|
|
41
42
|
} = useSelect(select => {
|
|
42
43
|
const {
|
|
43
44
|
getBlockName,
|
|
@@ -58,6 +59,7 @@ function BlockContextualToolbar({
|
|
|
58
59
|
selectedBlockClientId: _selectedBlockClientId,
|
|
59
60
|
blockType: _selectedBlockClientId && getBlockType(getBlockName(_selectedBlockClientId)),
|
|
60
61
|
hasParents: parents.length,
|
|
62
|
+
isContentOnly: getBlockEditingMode(_selectedBlockClientId) === 'contentOnly',
|
|
61
63
|
showParentSelector: parentBlockType && getBlockEditingMode(firstParentClientId) === 'default' && hasBlockSupport(parentBlockType, '__experimentalParentSelector', true) && selectedBlockClientIds.length <= 1 && getBlockEditingMode(_selectedBlockClientId) === 'default'
|
|
62
64
|
};
|
|
63
65
|
}, []);
|
|
@@ -65,7 +67,7 @@ function BlockContextualToolbar({
|
|
|
65
67
|
setIsCollapsed(false);
|
|
66
68
|
}, [selectedBlockClientId]);
|
|
67
69
|
|
|
68
|
-
if (blockType && !hasBlockSupport(blockType, '__experimentalToolbar', true)) {
|
|
70
|
+
if (isContentOnly || blockType && !hasBlockSupport(blockType, '__experimentalToolbar', true)) {
|
|
69
71
|
return null;
|
|
70
72
|
} // Shifts the toolbar to make room for the parent block selector.
|
|
71
73
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/block-tools/block-contextual-toolbar.js"],"names":["classnames","__","useEffect","useRef","useState","hasBlockSupport","store","blocksStore","useSelect","ToolbarItem","ToolbarButton","ToolbarGroup","next","previous","useViewportMatch","NavigableToolbar","BlockToolbar","blockEditorStore","unlock","BlockContextualToolbar","focusOnMount","isFixed","props","isCollapsed","setIsCollapsed","toolbarButtonRef","isLargeViewport","blockType","hasParents","showParentSelector","selectedBlockClientId","select","getBlockName","getBlockParents","getSelectedBlockClientIds","getBlockEditingMode","getBlockType","selectedBlockClientIds","_selectedBlockClientId","parents","firstParentClientId","length","parentBlockName","parentBlockType","classes","collapsed","current","focus"],"mappings":";;AAAA;AACA;AACA;AACA,OAAOA,UAAP,MAAuB,YAAvB;AAEA;AACA;AACA;;AACA,SAASC,EAAT,QAAmB,iBAAnB;AACA,SAASC,SAAT,EAAoBC,MAApB,EAA4BC,QAA5B,QAA4C,oBAA5C;AACA,SAASC,eAAT,EAA0BC,KAAK,IAAIC,WAAnC,QAAsD,mBAAtD;AACA,SAASC,SAAT,QAA0B,iBAA1B;AACA,SACCC,WADD,EAECC,aAFD,EAGCC,YAHD,QAIO,uBAJP;AAKA,SAASC,IAAT,EAAeC,QAAf,QAA+B,kBAA/B;AACA,SAASC,gBAAT,QAAiC,oBAAjC;AAEA;AACA;AACA;;AACA,OAAOC,gBAAP,MAA6B,sBAA7B;AACA,OAAOC,YAAP,MAAyB,kBAAzB;AACA,SAASV,KAAK,IAAIW,gBAAlB,QAA0C,aAA1C;AACA,SAASC,MAAT,QAAuB,mBAAvB;;AAEA,SAASC,sBAAT,CAAiC;AAAEC,EAAAA,YAAF;AAAgBC,EAAAA,OAAhB;AAAyB,KAAGC;AAA5B,CAAjC,EAAuE;AACtE;AACA,QAAM,CAAEC,WAAF,EAAeC,cAAf,IAAkCpB,QAAQ,CAAE,KAAF,CAAhD;AACA,QAAMqB,gBAAgB,GAAGtB,MAAM,EAA/B;AAEA,QAAMuB,eAAe,GAAGZ,gBAAgB,CAAE,QAAF,CAAxC;AACA,QAAM;
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/block-tools/block-contextual-toolbar.js"],"names":["classnames","__","useEffect","useRef","useState","hasBlockSupport","store","blocksStore","useSelect","ToolbarItem","ToolbarButton","ToolbarGroup","next","previous","useViewportMatch","NavigableToolbar","BlockToolbar","blockEditorStore","unlock","BlockContextualToolbar","focusOnMount","isFixed","props","isCollapsed","setIsCollapsed","toolbarButtonRef","isLargeViewport","blockType","hasParents","showParentSelector","selectedBlockClientId","isContentOnly","select","getBlockName","getBlockParents","getSelectedBlockClientIds","getBlockEditingMode","getBlockType","selectedBlockClientIds","_selectedBlockClientId","parents","firstParentClientId","length","parentBlockName","parentBlockType","classes","collapsed","current","focus"],"mappings":"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","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"]}
|