@wordpress/block-editor 15.4.1-next.233ccab9b.0 → 15.5.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.
Files changed (106) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/components/background-image-control/index.js +51 -24
  3. package/build/components/background-image-control/index.js.map +1 -1
  4. package/build/components/block-edit/edit.js +13 -5
  5. package/build/components/block-edit/edit.js.map +1 -1
  6. package/build/components/block-list/block.js +14 -4
  7. package/build/components/block-list/block.js.map +1 -1
  8. package/build/components/block-list/use-block-props/index.js +5 -4
  9. package/build/components/block-list/use-block-props/index.js.map +1 -1
  10. package/build/components/block-settings-menu-controls/index.js +10 -2
  11. package/build/components/block-settings-menu-controls/index.js.map +1 -1
  12. package/build/components/block-toolbar/index.js +5 -0
  13. package/build/components/block-toolbar/index.js.map +1 -1
  14. package/build/components/block-visibility/index.js +21 -0
  15. package/build/components/block-visibility/index.js.map +1 -0
  16. package/build/components/block-visibility/menu-item.js +52 -0
  17. package/build/components/block-visibility/menu-item.js.map +1 -0
  18. package/build/components/block-visibility/toolbar.js +88 -0
  19. package/build/components/block-visibility/toolbar.js.map +1 -0
  20. package/build/components/inspector-controls-tabs/index.js +23 -0
  21. package/build/components/inspector-controls-tabs/index.js.map +1 -1
  22. package/build/components/link-control/index.js +1 -1
  23. package/build/components/link-control/index.js.map +1 -1
  24. package/build/components/list-view/block-select-button.js +23 -4
  25. package/build/components/list-view/block-select-button.js.map +1 -1
  26. package/build/components/list-view/block.js +9 -3
  27. package/build/components/list-view/block.js.map +1 -1
  28. package/build/components/rich-text/index.js +4 -2
  29. package/build/components/rich-text/index.js.map +1 -1
  30. package/build/components/use-block-drop-zone/index.js +5 -1
  31. package/build/components/use-block-drop-zone/index.js.map +1 -1
  32. package/build/hooks/block-bindings.js +9 -4
  33. package/build/hooks/block-bindings.js.map +1 -1
  34. package/build/store/private-selectors.js +19 -1
  35. package/build/store/private-selectors.js.map +1 -1
  36. package/build/store/reducer.js +1 -5
  37. package/build/store/reducer.js.map +1 -1
  38. package/build/utils/block-bindings.js +3 -48
  39. package/build/utils/block-bindings.js.map +1 -1
  40. package/build-module/components/background-image-control/index.js +52 -25
  41. package/build-module/components/background-image-control/index.js.map +1 -1
  42. package/build-module/components/block-edit/edit.js +14 -6
  43. package/build-module/components/block-edit/edit.js.map +1 -1
  44. package/build-module/components/block-list/block.js +14 -4
  45. package/build-module/components/block-list/block.js.map +1 -1
  46. package/build-module/components/block-list/use-block-props/index.js +5 -4
  47. package/build-module/components/block-list/use-block-props/index.js.map +1 -1
  48. package/build-module/components/block-settings-menu-controls/index.js +10 -2
  49. package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
  50. package/build-module/components/block-toolbar/index.js +5 -0
  51. package/build-module/components/block-toolbar/index.js.map +1 -1
  52. package/build-module/components/block-visibility/index.js +3 -0
  53. package/build-module/components/block-visibility/index.js.map +1 -0
  54. package/build-module/components/block-visibility/menu-item.js +45 -0
  55. package/build-module/components/block-visibility/menu-item.js.map +1 -0
  56. package/build-module/components/block-visibility/toolbar.js +81 -0
  57. package/build-module/components/block-visibility/toolbar.js.map +1 -0
  58. package/build-module/components/inspector-controls-tabs/index.js +23 -0
  59. package/build-module/components/inspector-controls-tabs/index.js.map +1 -1
  60. package/build-module/components/link-control/index.js +1 -1
  61. package/build-module/components/link-control/index.js.map +1 -1
  62. package/build-module/components/list-view/block-select-button.js +24 -5
  63. package/build-module/components/list-view/block-select-button.js.map +1 -1
  64. package/build-module/components/list-view/block.js +9 -3
  65. package/build-module/components/list-view/block.js.map +1 -1
  66. package/build-module/components/rich-text/index.js +4 -2
  67. package/build-module/components/rich-text/index.js.map +1 -1
  68. package/build-module/components/use-block-drop-zone/index.js +6 -2
  69. package/build-module/components/use-block-drop-zone/index.js.map +1 -1
  70. package/build-module/hooks/block-bindings.js +10 -5
  71. package/build-module/hooks/block-bindings.js.map +1 -1
  72. package/build-module/store/private-selectors.js +18 -1
  73. package/build-module/store/private-selectors.js.map +1 -1
  74. package/build-module/store/reducer.js +1 -5
  75. package/build-module/store/reducer.js.map +1 -1
  76. package/build-module/utils/block-bindings.js +3 -45
  77. package/build-module/utils/block-bindings.js.map +1 -1
  78. package/build-style/content-rtl.css +13 -0
  79. package/build-style/content.css +13 -0
  80. package/build-style/style-rtl.css +27 -0
  81. package/build-style/style.css +27 -0
  82. package/package.json +34 -34
  83. package/src/components/background-image-control/index.js +54 -27
  84. package/src/components/background-image-control/style.scss +28 -0
  85. package/src/components/block-edit/edit.js +23 -5
  86. package/src/components/block-list/block.js +16 -0
  87. package/src/components/block-list/content.scss +19 -0
  88. package/src/components/block-list/use-block-props/index.js +9 -9
  89. package/src/components/block-settings-menu-controls/index.js +21 -1
  90. package/src/components/block-toolbar/index.js +9 -0
  91. package/src/components/block-visibility/index.js +2 -0
  92. package/src/components/block-visibility/menu-item.js +53 -0
  93. package/src/components/block-visibility/toolbar.js +88 -0
  94. package/src/components/inspector-controls-tabs/index.js +33 -1
  95. package/src/components/link-control/index.js +1 -1
  96. package/src/components/link-control/test/index.js +4 -4
  97. package/src/components/list-view/block-select-button.js +32 -9
  98. package/src/components/list-view/block.js +24 -14
  99. package/src/components/list-view/style.scss +1 -0
  100. package/src/components/media-replace-flow/test/index.js +1 -1
  101. package/src/components/rich-text/index.js +6 -2
  102. package/src/components/use-block-drop-zone/index.js +14 -1
  103. package/src/hooks/block-bindings.js +49 -43
  104. package/src/store/private-selectors.js +21 -1
  105. package/src/store/reducer.js +1 -6
  106. package/src/utils/block-bindings.js +6 -48
@@ -23,6 +23,7 @@ import BlockControls from '../block-controls';
23
23
  import __unstableBlockToolbarLastItem from './block-toolbar-last-item';
24
24
  import BlockSettingsMenu from '../block-settings-menu';
25
25
  import { BlockLockToolbar } from '../block-lock';
26
+ import { BlockVisibilityToolbar } from '../block-visibility';
26
27
  import { BlockGroupToolbar } from '../convert-to-group-buttons';
27
28
  import BlockEditVisuallyButton from '../block-edit-visually-button';
28
29
  import { useShowHoveredOrFocusedGestures } from './utils';
@@ -69,6 +70,7 @@ export function PrivateBlockToolbar({
69
70
  showSlots,
70
71
  showGroupButtons,
71
72
  showLockButtons,
73
+ showBlockVisibilityButton,
72
74
  showSwitchSectionStyleButton,
73
75
  hasFixedToolbar,
74
76
  isNavigationMode
@@ -127,6 +129,7 @@ export function PrivateBlockToolbar({
127
129
  showSlots: !_isZoomOut,
128
130
  showGroupButtons: !_isZoomOut,
129
131
  showLockButtons: !_isZoomOut,
132
+ showBlockVisibilityButton: !_isZoomOut,
130
133
  showSwitchSectionStyleButton: _showSwitchSectionStyleButton,
131
134
  hasFixedToolbar: getSettings().hasFixedToolbar,
132
135
  isNavigationMode: isNavigationModeEnabled
@@ -181,6 +184,8 @@ export function PrivateBlockToolbar({
181
184
  className: "block-editor-block-toolbar__block-controls",
182
185
  children: [/*#__PURE__*/_jsx(BlockSwitcher, {
183
186
  clientIds: blockClientIds
187
+ }), isDefaultEditingMode && showBlockVisibilityButton && /*#__PURE__*/_jsx(BlockVisibilityToolbar, {
188
+ clientIds: blockClientIds
184
189
  }), !isMultiToolbar && isDefaultEditingMode && showLockButtons && /*#__PURE__*/_jsx(BlockLockToolbar, {
185
190
  clientId: blockClientId
186
191
  }), /*#__PURE__*/_jsx(BlockMover, {
@@ -1 +1 @@
1
- {"version":3,"names":["clsx","__","useSelect","useRef","useViewportMatch","getBlockType","hasBlockSupport","isReusableBlock","isTemplatePart","ToolbarGroup","BlockMover","BlockParentSelector","BlockSwitcher","BlockControls","__unstableBlockToolbarLastItem","BlockSettingsMenu","BlockLockToolbar","BlockGroupToolbar","BlockEditVisuallyButton","useShowHoveredOrFocusedGestures","store","blockEditorStore","__unstableBlockNameContext","NavigableToolbar","useHasBlockToolbar","ChangeDesign","SwitchSectionStyle","unlock","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","PrivateBlockToolbar","hideDragHandle","focusOnMount","__experimentalInitialIndex","__experimentalOnIndexChange","variant","blockClientId","blockClientIds","isDefaultEditingMode","blockType","toolbarKey","shouldShowVisualToolbar","showParentSelector","isUsingBindings","hasParentPattern","hasContentOnlyLocking","showShuffleButton","showSlots","showGroupButtons","showLockButtons","showSwitchSectionStyleButton","hasFixedToolbar","isNavigationMode","select","getBlockName","getBlockMode","getBlockParents","getSelectedBlockClientIds","isBlockValid","getBlockEditingMode","getBlockAttributes","getBlockParentsByBlockName","getTemplateLock","getSettings","getParentSectionBlock","isZoomOut","_isNavigationMode","isSectionBlock","selectedBlockClientIds","selectedBlockClientId","parents","parentSection","parentClientId","length","parentBlockName","parentBlockType","editingMode","isNavigationModeEnabled","_isDefaultEditingMode","_blockName","isValid","every","id","isVisual","_isUsingBindings","clientId","metadata","bindings","_hasParentPattern","_hasTemplateLock","some","_isZoomOut","_showSwitchSectionStyleButton","window","__experimentalContentOnlyPatternInsertion","toolbarWrapperRef","nodeRef","showHoveredOrFocusedGestures","ref","isLargeViewport","hasBlockToolbar","isMultiToolbar","isSynced","classes","innerClasses","focusEditorOnEscape","className","undefined","children","clientIds","Slot","group","Provider","value","name","BlockToolbar"],"sources":["@wordpress/block-editor/src/components/block-toolbar/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\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 NavigableToolbar from '../navigable-toolbar';\nimport { useHasBlockToolbar } from './use-has-block-toolbar';\nimport ChangeDesign from './change-design';\nimport SwitchSectionStyle from './switch-section-style';\nimport { unlock } from '../../lock-unlock';\n\n/**\n * Renders the block toolbar.\n *\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/block-toolbar/README.md\n *\n * @param {Object} props Components props.\n * @param {boolean} props.hideDragHandle Show or hide the Drag Handle for drag and drop functionality.\n * @param {boolean} props.focusOnMount Focus the toolbar when mounted.\n * @param {number} props.__experimentalInitialIndex The initial index of the toolbar item to focus.\n * @param {Function} props.__experimentalOnIndexChange Callback function to be called when the index of the focused toolbar item changes.\n * @param {string} props.variant Style variant of the toolbar, also passed to the Dropdowns rendered from Block Toolbar Buttons.\n */\nexport function PrivateBlockToolbar( {\n\thideDragHandle,\n\tfocusOnMount,\n\t__experimentalInitialIndex,\n\t__experimentalOnIndexChange,\n\tvariant = 'unstyled',\n} ) {\n\tconst {\n\t\tblockClientId,\n\t\tblockClientIds,\n\t\tisDefaultEditingMode,\n\t\tblockType,\n\t\ttoolbarKey,\n\t\tshouldShowVisualToolbar,\n\t\tshowParentSelector,\n\t\tisUsingBindings,\n\t\thasParentPattern,\n\t\thasContentOnlyLocking,\n\t\tshowShuffleButton,\n\t\tshowSlots,\n\t\tshowGroupButtons,\n\t\tshowLockButtons,\n\t\tshowSwitchSectionStyleButton,\n\t\thasFixedToolbar,\n\t\tisNavigationMode,\n\t} = useSelect( ( select ) => {\n\t\tconst {\n\t\t\tgetBlockName,\n\t\t\tgetBlockMode,\n\t\t\tgetBlockParents,\n\t\t\tgetSelectedBlockClientIds,\n\t\t\tisBlockValid,\n\t\t\tgetBlockEditingMode,\n\t\t\tgetBlockAttributes,\n\t\t\tgetBlockParentsByBlockName,\n\t\t\tgetTemplateLock,\n\t\t\tgetSettings,\n\t\t\tgetParentSectionBlock,\n\t\t\tisZoomOut,\n\t\t\tisNavigationMode: _isNavigationMode,\n\t\t\tisSectionBlock,\n\t\t} = unlock( select( blockEditorStore ) );\n\t\tconst selectedBlockClientIds = getSelectedBlockClientIds();\n\t\tconst selectedBlockClientId = selectedBlockClientIds[ 0 ];\n\t\tconst parents = getBlockParents( selectedBlockClientId );\n\t\tconst parentSection = getParentSectionBlock( selectedBlockClientId );\n\t\tconst parentClientId = parentSection ?? parents[ parents.length - 1 ];\n\t\tconst parentBlockName = getBlockName( parentClientId );\n\t\tconst parentBlockType = getBlockType( parentBlockName );\n\t\tconst editingMode = getBlockEditingMode( selectedBlockClientId );\n\t\tconst isNavigationModeEnabled = _isNavigationMode();\n\t\tconst _isDefaultEditingMode = editingMode === 'default';\n\t\tconst _blockName = getBlockName( selectedBlockClientId );\n\t\tconst isValid = selectedBlockClientIds.every( ( id ) =>\n\t\t\tisBlockValid( id )\n\t\t);\n\t\tconst isVisual = selectedBlockClientIds.every(\n\t\t\t( id ) => getBlockMode( id ) === 'visual'\n\t\t);\n\t\tconst _isUsingBindings = selectedBlockClientIds.every(\n\t\t\t( clientId ) =>\n\t\t\t\t!! getBlockAttributes( clientId )?.metadata?.bindings\n\t\t);\n\n\t\tconst _hasParentPattern = selectedBlockClientIds.every(\n\t\t\t( clientId ) =>\n\t\t\t\tgetBlockParentsByBlockName( clientId, 'core/block', true )\n\t\t\t\t\t.length > 0\n\t\t);\n\n\t\t// If one or more selected blocks are locked, do not show the BlockGroupToolbar.\n\t\tconst _hasTemplateLock = selectedBlockClientIds.some(\n\t\t\t( id ) => getTemplateLock( id ) === 'contentOnly'\n\t\t);\n\n\t\tconst _isZoomOut = isZoomOut();\n\n\t\t// The switch style button appears more prominently with the\n\t\t// content only pattern experiment.\n\t\tconst _showSwitchSectionStyleButton =\n\t\t\twindow?.__experimentalContentOnlyPatternInsertion\n\t\t\t\t? _isZoomOut || isSectionBlock( selectedBlockClientId )\n\t\t\t\t: _isZoomOut ||\n\t\t\t\t ( isNavigationModeEnabled &&\n\t\t\t\t\t\teditingMode === 'contentOnly' &&\n\t\t\t\t\t\tisSectionBlock( selectedBlockClientId ) );\n\n\t\treturn {\n\t\t\tblockClientId: selectedBlockClientId,\n\t\t\tblockClientIds: selectedBlockClientIds,\n\t\t\tisDefaultEditingMode: _isDefaultEditingMode,\n\t\t\tblockType: selectedBlockClientId && getBlockType( _blockName ),\n\t\t\tshouldShowVisualToolbar: isValid && isVisual,\n\t\t\ttoolbarKey: `${ selectedBlockClientId }${ parentClientId }`,\n\t\t\tshowParentSelector:\n\t\t\t\t! _isZoomOut &&\n\t\t\t\tparentBlockType &&\n\t\t\t\teditingMode !== 'contentOnly' &&\n\t\t\t\tgetBlockEditingMode( parentClientId ) !== 'disabled' &&\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\tisUsingBindings: _isUsingBindings,\n\t\t\thasParentPattern: _hasParentPattern,\n\t\t\thasContentOnlyLocking: _hasTemplateLock,\n\t\t\tshowShuffleButton: _isZoomOut,\n\t\t\tshowSlots: ! _isZoomOut,\n\t\t\tshowGroupButtons: ! _isZoomOut,\n\t\t\tshowLockButtons: ! _isZoomOut,\n\t\t\tshowSwitchSectionStyleButton: _showSwitchSectionStyleButton,\n\t\t\thasFixedToolbar: getSettings().hasFixedToolbar,\n\t\t\tisNavigationMode: isNavigationModeEnabled,\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 nodeRef = useRef();\n\tconst showHoveredOrFocusedGestures = useShowHoveredOrFocusedGestures( {\n\t\tref: nodeRef,\n\t} );\n\n\tconst isLargeViewport = ! useViewportMatch( 'medium', '<' );\n\n\tconst hasBlockToolbar = useHasBlockToolbar();\n\tif ( ! hasBlockToolbar ) {\n\t\treturn null;\n\t}\n\n\tconst isMultiToolbar = blockClientIds.length > 1;\n\tconst isSynced =\n\t\tisReusableBlock( blockType ) || isTemplatePart( blockType );\n\n\t// Shifts the toolbar to make room for the parent block selector.\n\tconst classes = clsx( 'block-editor-block-contextual-toolbar', {\n\t\t'has-parent': showParentSelector,\n\t\t'is-inverted-toolbar': isNavigationMode && ! hasFixedToolbar,\n\t} );\n\n\tconst innerClasses = clsx( 'block-editor-block-toolbar', {\n\t\t'is-synced': isSynced,\n\t\t'is-connected': isUsingBindings,\n\t} );\n\n\treturn (\n\t\t<NavigableToolbar\n\t\t\tfocusEditorOnEscape\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// The variant is applied as \"toolbar\" when undefined, which is the black border style of the dropdown from the toolbar popover.\n\t\t\tvariant={ variant === 'toolbar' ? undefined : variant }\n\t\t\tfocusOnMount={ focusOnMount }\n\t\t\t__experimentalInitialIndex={ __experimentalInitialIndex }\n\t\t\t__experimentalOnIndexChange={ __experimentalOnIndexChange }\n\t\t\t// Resets the index whenever the active block changes so\n\t\t\t// this is not persisted. See https://github.com/WordPress/gutenberg/pull/25760#issuecomment-717906169\n\t\t\tkey={ toolbarKey }\n\t\t>\n\t\t\t<div ref={ toolbarWrapperRef } className={ innerClasses }>\n\t\t\t\t{ showParentSelector && ! isMultiToolbar && isLargeViewport && (\n\t\t\t\t\t<BlockParentSelector />\n\t\t\t\t) }\n\t\t\t\t{ ( shouldShowVisualToolbar || isMultiToolbar ) &&\n\t\t\t\t\t! hasParentPattern && (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tref={ nodeRef }\n\t\t\t\t\t\t\t{ ...showHoveredOrFocusedGestures }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<ToolbarGroup className=\"block-editor-block-toolbar__block-controls\">\n\t\t\t\t\t\t\t\t<BlockSwitcher clientIds={ blockClientIds } />\n\t\t\t\t\t\t\t\t{ ! isMultiToolbar &&\n\t\t\t\t\t\t\t\t\tisDefaultEditingMode &&\n\t\t\t\t\t\t\t\t\tshowLockButtons && (\n\t\t\t\t\t\t\t\t\t\t<BlockLockToolbar\n\t\t\t\t\t\t\t\t\t\t\tclientId={ blockClientId }\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t<BlockMover\n\t\t\t\t\t\t\t\t\tclientIds={ blockClientIds }\n\t\t\t\t\t\t\t\t\thideDragHandle={ hideDragHandle }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</ToolbarGroup>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) }\n\t\t\t\t{ ! hasContentOnlyLocking &&\n\t\t\t\t\tshouldShowVisualToolbar &&\n\t\t\t\t\tisMultiToolbar &&\n\t\t\t\t\tshowGroupButtons && <BlockGroupToolbar /> }\n\t\t\t\t{ showShuffleButton && (\n\t\t\t\t\t<ChangeDesign clientId={ blockClientIds[ 0 ] } />\n\t\t\t\t) }\n\t\t\t\t{ showSwitchSectionStyleButton && (\n\t\t\t\t\t<SwitchSectionStyle clientId={ blockClientIds[ 0 ] } />\n\t\t\t\t) }\n\t\t\t\t{ shouldShowVisualToolbar && showSlots && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<BlockControls.Slot\n\t\t\t\t\t\t\tgroup=\"parent\"\n\t\t\t\t\t\t\tclassName=\"block-editor-block-toolbar__slot\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<BlockControls.Slot\n\t\t\t\t\t\t\tgroup=\"block\"\n\t\t\t\t\t\t\tclassName=\"block-editor-block-toolbar__slot\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<BlockControls.Slot className=\"block-editor-block-toolbar__slot\" />\n\t\t\t\t\t\t<BlockControls.Slot\n\t\t\t\t\t\t\tgroup=\"inline\"\n\t\t\t\t\t\t\tclassName=\"block-editor-block-toolbar__slot\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<BlockControls.Slot\n\t\t\t\t\t\t\tgroup=\"other\"\n\t\t\t\t\t\t\tclassName=\"block-editor-block-toolbar__slot\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<__unstableBlockNameContext.Provider\n\t\t\t\t\t\t\tvalue={ blockType?.name }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<__unstableBlockToolbarLastItem.Slot />\n\t\t\t\t\t\t</__unstableBlockNameContext.Provider>\n\t\t\t\t\t</>\n\t\t\t\t) }\n\t\t\t\t<BlockEditVisuallyButton clientIds={ blockClientIds } />\n\t\t\t\t<BlockSettingsMenu clientIds={ blockClientIds } />\n\t\t\t</div>\n\t\t</NavigableToolbar>\n\t);\n}\n\n/**\n * Renders the block toolbar.\n *\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/block-toolbar/README.md\n *\n * @param {Object} props Components props.\n * @param {boolean} props.hideDragHandle Show or hide the Drag Handle for drag and drop functionality.\n * @param {string} props.variant Style variant of the toolbar, also passed to the Dropdowns rendered from Block Toolbar Buttons.\n */\nexport default function BlockToolbar( { hideDragHandle, variant } ) {\n\treturn (\n\t\t<PrivateBlockToolbar\n\t\t\thideDragHandle={ hideDragHandle }\n\t\t\tvariant={ variant }\n\t\t\tfocusOnMount={ undefined }\n\t\t\t__experimentalInitialIndex={ undefined }\n\t\t\t__experimentalOnIndexChange={ undefined }\n\t\t/>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["clsx","__","useSelect","useRef","useViewportMatch","getBlockType","hasBlockSupport","isReusableBlock","isTemplatePart","ToolbarGroup","BlockMover","BlockParentSelector","BlockSwitcher","BlockControls","__unstableBlockToolbarLastItem","BlockSettingsMenu","BlockLockToolbar","BlockVisibilityToolbar","BlockGroupToolbar","BlockEditVisuallyButton","useShowHoveredOrFocusedGestures","store","blockEditorStore","__unstableBlockNameContext","NavigableToolbar","useHasBlockToolbar","ChangeDesign","SwitchSectionStyle","unlock","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","PrivateBlockToolbar","hideDragHandle","focusOnMount","__experimentalInitialIndex","__experimentalOnIndexChange","variant","blockClientId","blockClientIds","isDefaultEditingMode","blockType","toolbarKey","shouldShowVisualToolbar","showParentSelector","isUsingBindings","hasParentPattern","hasContentOnlyLocking","showShuffleButton","showSlots","showGroupButtons","showLockButtons","showBlockVisibilityButton","showSwitchSectionStyleButton","hasFixedToolbar","isNavigationMode","select","getBlockName","getBlockMode","getBlockParents","getSelectedBlockClientIds","isBlockValid","getBlockEditingMode","getBlockAttributes","getBlockParentsByBlockName","getTemplateLock","getSettings","getParentSectionBlock","isZoomOut","_isNavigationMode","isSectionBlock","selectedBlockClientIds","selectedBlockClientId","parents","parentSection","parentClientId","length","parentBlockName","parentBlockType","editingMode","isNavigationModeEnabled","_isDefaultEditingMode","_blockName","isValid","every","id","isVisual","_isUsingBindings","clientId","metadata","bindings","_hasParentPattern","_hasTemplateLock","some","_isZoomOut","_showSwitchSectionStyleButton","window","__experimentalContentOnlyPatternInsertion","toolbarWrapperRef","nodeRef","showHoveredOrFocusedGestures","ref","isLargeViewport","hasBlockToolbar","isMultiToolbar","isSynced","classes","innerClasses","focusEditorOnEscape","className","undefined","children","clientIds","Slot","group","Provider","value","name","BlockToolbar"],"sources":["@wordpress/block-editor/src/components/block-toolbar/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\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 { BlockVisibilityToolbar } from '../block-visibility';\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 NavigableToolbar from '../navigable-toolbar';\nimport { useHasBlockToolbar } from './use-has-block-toolbar';\nimport ChangeDesign from './change-design';\nimport SwitchSectionStyle from './switch-section-style';\nimport { unlock } from '../../lock-unlock';\n\n/**\n * Renders the block toolbar.\n *\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/block-toolbar/README.md\n *\n * @param {Object} props Components props.\n * @param {boolean} props.hideDragHandle Show or hide the Drag Handle for drag and drop functionality.\n * @param {boolean} props.focusOnMount Focus the toolbar when mounted.\n * @param {number} props.__experimentalInitialIndex The initial index of the toolbar item to focus.\n * @param {Function} props.__experimentalOnIndexChange Callback function to be called when the index of the focused toolbar item changes.\n * @param {string} props.variant Style variant of the toolbar, also passed to the Dropdowns rendered from Block Toolbar Buttons.\n */\nexport function PrivateBlockToolbar( {\n\thideDragHandle,\n\tfocusOnMount,\n\t__experimentalInitialIndex,\n\t__experimentalOnIndexChange,\n\tvariant = 'unstyled',\n} ) {\n\tconst {\n\t\tblockClientId,\n\t\tblockClientIds,\n\t\tisDefaultEditingMode,\n\t\tblockType,\n\t\ttoolbarKey,\n\t\tshouldShowVisualToolbar,\n\t\tshowParentSelector,\n\t\tisUsingBindings,\n\t\thasParentPattern,\n\t\thasContentOnlyLocking,\n\t\tshowShuffleButton,\n\t\tshowSlots,\n\t\tshowGroupButtons,\n\t\tshowLockButtons,\n\t\tshowBlockVisibilityButton,\n\t\tshowSwitchSectionStyleButton,\n\t\thasFixedToolbar,\n\t\tisNavigationMode,\n\t} = useSelect( ( select ) => {\n\t\tconst {\n\t\t\tgetBlockName,\n\t\t\tgetBlockMode,\n\t\t\tgetBlockParents,\n\t\t\tgetSelectedBlockClientIds,\n\t\t\tisBlockValid,\n\t\t\tgetBlockEditingMode,\n\t\t\tgetBlockAttributes,\n\t\t\tgetBlockParentsByBlockName,\n\t\t\tgetTemplateLock,\n\t\t\tgetSettings,\n\t\t\tgetParentSectionBlock,\n\t\t\tisZoomOut,\n\t\t\tisNavigationMode: _isNavigationMode,\n\t\t\tisSectionBlock,\n\t\t} = unlock( select( blockEditorStore ) );\n\t\tconst selectedBlockClientIds = getSelectedBlockClientIds();\n\t\tconst selectedBlockClientId = selectedBlockClientIds[ 0 ];\n\t\tconst parents = getBlockParents( selectedBlockClientId );\n\t\tconst parentSection = getParentSectionBlock( selectedBlockClientId );\n\t\tconst parentClientId = parentSection ?? parents[ parents.length - 1 ];\n\t\tconst parentBlockName = getBlockName( parentClientId );\n\t\tconst parentBlockType = getBlockType( parentBlockName );\n\t\tconst editingMode = getBlockEditingMode( selectedBlockClientId );\n\t\tconst isNavigationModeEnabled = _isNavigationMode();\n\t\tconst _isDefaultEditingMode = editingMode === 'default';\n\t\tconst _blockName = getBlockName( selectedBlockClientId );\n\t\tconst isValid = selectedBlockClientIds.every( ( id ) =>\n\t\t\tisBlockValid( id )\n\t\t);\n\t\tconst isVisual = selectedBlockClientIds.every(\n\t\t\t( id ) => getBlockMode( id ) === 'visual'\n\t\t);\n\t\tconst _isUsingBindings = selectedBlockClientIds.every(\n\t\t\t( clientId ) =>\n\t\t\t\t!! getBlockAttributes( clientId )?.metadata?.bindings\n\t\t);\n\n\t\tconst _hasParentPattern = selectedBlockClientIds.every(\n\t\t\t( clientId ) =>\n\t\t\t\tgetBlockParentsByBlockName( clientId, 'core/block', true )\n\t\t\t\t\t.length > 0\n\t\t);\n\n\t\t// If one or more selected blocks are locked, do not show the BlockGroupToolbar.\n\t\tconst _hasTemplateLock = selectedBlockClientIds.some(\n\t\t\t( id ) => getTemplateLock( id ) === 'contentOnly'\n\t\t);\n\n\t\tconst _isZoomOut = isZoomOut();\n\n\t\t// The switch style button appears more prominently with the\n\t\t// content only pattern experiment.\n\t\tconst _showSwitchSectionStyleButton =\n\t\t\twindow?.__experimentalContentOnlyPatternInsertion\n\t\t\t\t? _isZoomOut || isSectionBlock( selectedBlockClientId )\n\t\t\t\t: _isZoomOut ||\n\t\t\t\t ( isNavigationModeEnabled &&\n\t\t\t\t\t\teditingMode === 'contentOnly' &&\n\t\t\t\t\t\tisSectionBlock( selectedBlockClientId ) );\n\n\t\treturn {\n\t\t\tblockClientId: selectedBlockClientId,\n\t\t\tblockClientIds: selectedBlockClientIds,\n\t\t\tisDefaultEditingMode: _isDefaultEditingMode,\n\t\t\tblockType: selectedBlockClientId && getBlockType( _blockName ),\n\t\t\tshouldShowVisualToolbar: isValid && isVisual,\n\t\t\ttoolbarKey: `${ selectedBlockClientId }${ parentClientId }`,\n\t\t\tshowParentSelector:\n\t\t\t\t! _isZoomOut &&\n\t\t\t\tparentBlockType &&\n\t\t\t\teditingMode !== 'contentOnly' &&\n\t\t\t\tgetBlockEditingMode( parentClientId ) !== 'disabled' &&\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\tisUsingBindings: _isUsingBindings,\n\t\t\thasParentPattern: _hasParentPattern,\n\t\t\thasContentOnlyLocking: _hasTemplateLock,\n\t\t\tshowShuffleButton: _isZoomOut,\n\t\t\tshowSlots: ! _isZoomOut,\n\t\t\tshowGroupButtons: ! _isZoomOut,\n\t\t\tshowLockButtons: ! _isZoomOut,\n\t\t\tshowBlockVisibilityButton: ! _isZoomOut,\n\t\t\tshowSwitchSectionStyleButton: _showSwitchSectionStyleButton,\n\t\t\thasFixedToolbar: getSettings().hasFixedToolbar,\n\t\t\tisNavigationMode: isNavigationModeEnabled,\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 nodeRef = useRef();\n\tconst showHoveredOrFocusedGestures = useShowHoveredOrFocusedGestures( {\n\t\tref: nodeRef,\n\t} );\n\n\tconst isLargeViewport = ! useViewportMatch( 'medium', '<' );\n\n\tconst hasBlockToolbar = useHasBlockToolbar();\n\tif ( ! hasBlockToolbar ) {\n\t\treturn null;\n\t}\n\n\tconst isMultiToolbar = blockClientIds.length > 1;\n\tconst isSynced =\n\t\tisReusableBlock( blockType ) || isTemplatePart( blockType );\n\n\t// Shifts the toolbar to make room for the parent block selector.\n\tconst classes = clsx( 'block-editor-block-contextual-toolbar', {\n\t\t'has-parent': showParentSelector,\n\t\t'is-inverted-toolbar': isNavigationMode && ! hasFixedToolbar,\n\t} );\n\n\tconst innerClasses = clsx( 'block-editor-block-toolbar', {\n\t\t'is-synced': isSynced,\n\t\t'is-connected': isUsingBindings,\n\t} );\n\n\treturn (\n\t\t<NavigableToolbar\n\t\t\tfocusEditorOnEscape\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// The variant is applied as \"toolbar\" when undefined, which is the black border style of the dropdown from the toolbar popover.\n\t\t\tvariant={ variant === 'toolbar' ? undefined : variant }\n\t\t\tfocusOnMount={ focusOnMount }\n\t\t\t__experimentalInitialIndex={ __experimentalInitialIndex }\n\t\t\t__experimentalOnIndexChange={ __experimentalOnIndexChange }\n\t\t\t// Resets the index whenever the active block changes so\n\t\t\t// this is not persisted. See https://github.com/WordPress/gutenberg/pull/25760#issuecomment-717906169\n\t\t\tkey={ toolbarKey }\n\t\t>\n\t\t\t<div ref={ toolbarWrapperRef } className={ innerClasses }>\n\t\t\t\t{ showParentSelector && ! isMultiToolbar && isLargeViewport && (\n\t\t\t\t\t<BlockParentSelector />\n\t\t\t\t) }\n\t\t\t\t{ ( shouldShowVisualToolbar || isMultiToolbar ) &&\n\t\t\t\t\t! hasParentPattern && (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tref={ nodeRef }\n\t\t\t\t\t\t\t{ ...showHoveredOrFocusedGestures }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<ToolbarGroup className=\"block-editor-block-toolbar__block-controls\">\n\t\t\t\t\t\t\t\t<BlockSwitcher clientIds={ blockClientIds } />\n\t\t\t\t\t\t\t\t{ isDefaultEditingMode &&\n\t\t\t\t\t\t\t\t\tshowBlockVisibilityButton && (\n\t\t\t\t\t\t\t\t\t\t<BlockVisibilityToolbar\n\t\t\t\t\t\t\t\t\t\t\tclientIds={ blockClientIds }\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t{ ! isMultiToolbar &&\n\t\t\t\t\t\t\t\t\tisDefaultEditingMode &&\n\t\t\t\t\t\t\t\t\tshowLockButtons && (\n\t\t\t\t\t\t\t\t\t\t<BlockLockToolbar\n\t\t\t\t\t\t\t\t\t\t\tclientId={ blockClientId }\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t<BlockMover\n\t\t\t\t\t\t\t\t\tclientIds={ blockClientIds }\n\t\t\t\t\t\t\t\t\thideDragHandle={ hideDragHandle }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</ToolbarGroup>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) }\n\t\t\t\t{ ! hasContentOnlyLocking &&\n\t\t\t\t\tshouldShowVisualToolbar &&\n\t\t\t\t\tisMultiToolbar &&\n\t\t\t\t\tshowGroupButtons && <BlockGroupToolbar /> }\n\t\t\t\t{ showShuffleButton && (\n\t\t\t\t\t<ChangeDesign clientId={ blockClientIds[ 0 ] } />\n\t\t\t\t) }\n\t\t\t\t{ showSwitchSectionStyleButton && (\n\t\t\t\t\t<SwitchSectionStyle clientId={ blockClientIds[ 0 ] } />\n\t\t\t\t) }\n\t\t\t\t{ shouldShowVisualToolbar && showSlots && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<BlockControls.Slot\n\t\t\t\t\t\t\tgroup=\"parent\"\n\t\t\t\t\t\t\tclassName=\"block-editor-block-toolbar__slot\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<BlockControls.Slot\n\t\t\t\t\t\t\tgroup=\"block\"\n\t\t\t\t\t\t\tclassName=\"block-editor-block-toolbar__slot\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<BlockControls.Slot className=\"block-editor-block-toolbar__slot\" />\n\t\t\t\t\t\t<BlockControls.Slot\n\t\t\t\t\t\t\tgroup=\"inline\"\n\t\t\t\t\t\t\tclassName=\"block-editor-block-toolbar__slot\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<BlockControls.Slot\n\t\t\t\t\t\t\tgroup=\"other\"\n\t\t\t\t\t\t\tclassName=\"block-editor-block-toolbar__slot\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<__unstableBlockNameContext.Provider\n\t\t\t\t\t\t\tvalue={ blockType?.name }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<__unstableBlockToolbarLastItem.Slot />\n\t\t\t\t\t\t</__unstableBlockNameContext.Provider>\n\t\t\t\t\t</>\n\t\t\t\t) }\n\t\t\t\t<BlockEditVisuallyButton clientIds={ blockClientIds } />\n\t\t\t\t<BlockSettingsMenu clientIds={ blockClientIds } />\n\t\t\t</div>\n\t\t</NavigableToolbar>\n\t);\n}\n\n/**\n * Renders the block toolbar.\n *\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/block-toolbar/README.md\n *\n * @param {Object} props Components props.\n * @param {boolean} props.hideDragHandle Show or hide the Drag Handle for drag and drop functionality.\n * @param {string} props.variant Style variant of the toolbar, also passed to the Dropdowns rendered from Block Toolbar Buttons.\n */\nexport default function BlockToolbar( { hideDragHandle, variant } ) {\n\treturn (\n\t\t<PrivateBlockToolbar\n\t\t\thideDragHandle={ hideDragHandle }\n\t\t\tvariant={ variant }\n\t\t\tfocusOnMount={ undefined }\n\t\t\t__experimentalInitialIndex={ undefined }\n\t\t\t__experimentalOnIndexChange={ undefined }\n\t\t/>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,3 @@
1
+ export { default as BlockVisibilityMenuItem } from './menu-item';
2
+ export { default as BlockVisibilityToolbar } from './toolbar';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["default","BlockVisibilityMenuItem","BlockVisibilityToolbar"],"sources":["@wordpress/block-editor/src/components/block-visibility/index.js"],"sourcesContent":["export { default as BlockVisibilityMenuItem } from './menu-item';\nexport { default as BlockVisibilityToolbar } from './toolbar';\n"],"mappings":"AAAA,SAASA,OAAO,IAAIC,uBAAuB,QAAQ,aAAa;AAChE,SAASD,OAAO,IAAIE,sBAAsB,QAAQ,WAAW","ignoreList":[]}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { __ } from '@wordpress/i18n';
5
+ import { MenuItem } from '@wordpress/components';
6
+ import { seen, unseen } from '@wordpress/icons';
7
+ import { useSelect, useDispatch } from '@wordpress/data';
8
+
9
+ /**
10
+ * Internal dependencies
11
+ */
12
+ import { cleanEmptyObject } from '../../hooks/utils';
13
+ import { store as blockEditorStore } from '../../store';
14
+ import { jsx as _jsx } from "react/jsx-runtime";
15
+ export default function BlockVisibilityMenuItem({
16
+ clientIds
17
+ }) {
18
+ const {
19
+ updateBlockAttributes
20
+ } = useDispatch(blockEditorStore);
21
+ const blocks = useSelect(select => {
22
+ return select(blockEditorStore).getBlocksByClientId(clientIds);
23
+ }, [clientIds]);
24
+ const hasHiddenBlock = blocks.some(block => block.attributes.metadata?.blockVisibility === false);
25
+ const toggleBlockVisibility = () => {
26
+ const attributesByClientId = Object.fromEntries(blocks?.map(({
27
+ clientId,
28
+ attributes
29
+ }) => [clientId, {
30
+ metadata: cleanEmptyObject({
31
+ ...attributes?.metadata,
32
+ blockVisibility: hasHiddenBlock ? undefined : false
33
+ })
34
+ }]));
35
+ updateBlockAttributes(clientIds, attributesByClientId, {
36
+ uniqueByBlock: true
37
+ });
38
+ };
39
+ return /*#__PURE__*/_jsx(MenuItem, {
40
+ icon: hasHiddenBlock ? seen : unseen,
41
+ onClick: toggleBlockVisibility,
42
+ children: hasHiddenBlock ? __('Show') : __('Hide')
43
+ });
44
+ }
45
+ //# sourceMappingURL=menu-item.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["__","MenuItem","seen","unseen","useSelect","useDispatch","cleanEmptyObject","store","blockEditorStore","jsx","_jsx","BlockVisibilityMenuItem","clientIds","updateBlockAttributes","blocks","select","getBlocksByClientId","hasHiddenBlock","some","block","attributes","metadata","blockVisibility","toggleBlockVisibility","attributesByClientId","Object","fromEntries","map","clientId","undefined","uniqueByBlock","icon","onClick","children"],"sources":["@wordpress/block-editor/src/components/block-visibility/menu-item.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { MenuItem } from '@wordpress/components';\nimport { seen, unseen } from '@wordpress/icons';\nimport { useSelect, useDispatch } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { cleanEmptyObject } from '../../hooks/utils';\nimport { store as blockEditorStore } from '../../store';\n\nexport default function BlockVisibilityMenuItem( { clientIds } ) {\n\tconst { updateBlockAttributes } = useDispatch( blockEditorStore );\n\tconst blocks = useSelect(\n\t\t( select ) => {\n\t\t\treturn select( blockEditorStore ).getBlocksByClientId( clientIds );\n\t\t},\n\t\t[ clientIds ]\n\t);\n\n\tconst hasHiddenBlock = blocks.some(\n\t\t( block ) => block.attributes.metadata?.blockVisibility === false\n\t);\n\n\tconst toggleBlockVisibility = () => {\n\t\tconst attributesByClientId = Object.fromEntries(\n\t\t\tblocks?.map( ( { clientId, attributes } ) => [\n\t\t\t\tclientId,\n\t\t\t\t{\n\t\t\t\t\tmetadata: cleanEmptyObject( {\n\t\t\t\t\t\t...attributes?.metadata,\n\t\t\t\t\t\tblockVisibility: hasHiddenBlock ? undefined : false,\n\t\t\t\t\t} ),\n\t\t\t\t},\n\t\t\t] )\n\t\t);\n\t\tupdateBlockAttributes( clientIds, attributesByClientId, {\n\t\t\tuniqueByBlock: true,\n\t\t} );\n\t};\n\n\treturn (\n\t\t<MenuItem\n\t\t\ticon={ hasHiddenBlock ? seen : unseen }\n\t\t\tonClick={ toggleBlockVisibility }\n\t\t>\n\t\t\t{ hasHiddenBlock ? __( 'Show' ) : __( 'Hide' ) }\n\t\t</MenuItem>\n\t);\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,EAAE,QAAQ,iBAAiB;AACpC,SAASC,QAAQ,QAAQ,uBAAuB;AAChD,SAASC,IAAI,EAAEC,MAAM,QAAQ,kBAAkB;AAC/C,SAASC,SAAS,EAAEC,WAAW,QAAQ,iBAAiB;;AAExD;AACA;AACA;AACA,SAASC,gBAAgB,QAAQ,mBAAmB;AACpD,SAASC,KAAK,IAAIC,gBAAgB,QAAQ,aAAa;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAExD,eAAe,SAASC,uBAAuBA,CAAE;EAAEC;AAAU,CAAC,EAAG;EAChE,MAAM;IAAEC;EAAsB,CAAC,GAAGR,WAAW,CAAEG,gBAAiB,CAAC;EACjE,MAAMM,MAAM,GAAGV,SAAS,CACrBW,MAAM,IAAM;IACb,OAAOA,MAAM,CAAEP,gBAAiB,CAAC,CAACQ,mBAAmB,CAAEJ,SAAU,CAAC;EACnE,CAAC,EACD,CAAEA,SAAS,CACZ,CAAC;EAED,MAAMK,cAAc,GAAGH,MAAM,CAACI,IAAI,CAC/BC,KAAK,IAAMA,KAAK,CAACC,UAAU,CAACC,QAAQ,EAAEC,eAAe,KAAK,KAC7D,CAAC;EAED,MAAMC,qBAAqB,GAAGA,CAAA,KAAM;IACnC,MAAMC,oBAAoB,GAAGC,MAAM,CAACC,WAAW,CAC9CZ,MAAM,EAAEa,GAAG,CAAE,CAAE;MAAEC,QAAQ;MAAER;IAAW,CAAC,KAAM,CAC5CQ,QAAQ,EACR;MACCP,QAAQ,EAAEf,gBAAgB,CAAE;QAC3B,GAAGc,UAAU,EAAEC,QAAQ;QACvBC,eAAe,EAAEL,cAAc,GAAGY,SAAS,GAAG;MAC/C,CAAE;IACH,CAAC,CACA,CACH,CAAC;IACDhB,qBAAqB,CAAED,SAAS,EAAEY,oBAAoB,EAAE;MACvDM,aAAa,EAAE;IAChB,CAAE,CAAC;EACJ,CAAC;EAED,oBACCpB,IAAA,CAACT,QAAQ;IACR8B,IAAI,EAAGd,cAAc,GAAGf,IAAI,GAAGC,MAAQ;IACvC6B,OAAO,EAAGT,qBAAuB;IAAAU,QAAA,EAE/BhB,cAAc,GAAGjB,EAAE,CAAE,MAAO,CAAC,GAAGA,EAAE,CAAE,MAAO;EAAC,CACrC,CAAC;AAEb","ignoreList":[]}
@@ -0,0 +1,81 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { __ } from '@wordpress/i18n';
5
+ import { ToolbarButton, ToolbarGroup } from '@wordpress/components';
6
+ import { useRef, useEffect } from '@wordpress/element';
7
+ import { seen, unseen } from '@wordpress/icons';
8
+ import { useSelect, useDispatch } from '@wordpress/data';
9
+ import { hasBlockSupport } from '@wordpress/blocks';
10
+
11
+ /**
12
+ * Internal dependencies
13
+ */
14
+ import { store as blockEditorStore } from '../../store';
15
+ import { cleanEmptyObject } from '../../hooks/utils';
16
+ import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
17
+ export default function BlockVisibilityToolbar({
18
+ clientIds
19
+ }) {
20
+ const {
21
+ blocks,
22
+ canToggleBlockVisibility
23
+ } = useSelect(select => {
24
+ const {
25
+ getBlockName,
26
+ getBlocksByClientId
27
+ } = select(blockEditorStore);
28
+ const _blocks = getBlocksByClientId(clientIds);
29
+ return {
30
+ blocks: _blocks,
31
+ canToggleBlockVisibility: _blocks.every(({
32
+ clientId
33
+ }) => hasBlockSupport(getBlockName(clientId), 'blockVisibility', true))
34
+ };
35
+ }, [clientIds]);
36
+ const hasHiddenBlock = blocks.some(block => block.attributes.metadata?.blockVisibility === false);
37
+ const hasBlockVisibilityButtonShownRef = useRef(false);
38
+ const {
39
+ updateBlockAttributes
40
+ } = useDispatch(blockEditorStore);
41
+
42
+ // If the block visibility button has been shown, we don't want to
43
+ // remove it from the toolbar until the toolbar is rendered again
44
+ // without it. Removing it beforehand can cause focus loss issues.
45
+ // It needs to return focus from whence it came, and to do that,
46
+ // we need to leave the button in the toolbar.
47
+ useEffect(() => {
48
+ if (hasHiddenBlock) {
49
+ hasBlockVisibilityButtonShownRef.current = true;
50
+ }
51
+ }, [hasHiddenBlock]);
52
+ if (!hasHiddenBlock && !hasBlockVisibilityButtonShownRef.current) {
53
+ return null;
54
+ }
55
+ const toggleBlockVisibility = () => {
56
+ const attributesByClientId = Object.fromEntries(blocks?.map(({
57
+ clientId,
58
+ attributes
59
+ }) => [clientId, {
60
+ metadata: cleanEmptyObject({
61
+ ...attributes?.metadata,
62
+ blockVisibility: hasHiddenBlock ? undefined : false
63
+ })
64
+ }]));
65
+ updateBlockAttributes(clientIds, attributesByClientId, {
66
+ uniqueByBlock: true
67
+ });
68
+ };
69
+ return /*#__PURE__*/_jsx(_Fragment, {
70
+ children: /*#__PURE__*/_jsx(ToolbarGroup, {
71
+ className: "block-editor-block-lock-toolbar",
72
+ children: /*#__PURE__*/_jsx(ToolbarButton, {
73
+ disabled: !canToggleBlockVisibility,
74
+ icon: hasHiddenBlock ? unseen : seen,
75
+ label: hasHiddenBlock ? __('Hidden') : __('Visible'),
76
+ onClick: toggleBlockVisibility
77
+ })
78
+ })
79
+ });
80
+ }
81
+ //# sourceMappingURL=toolbar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["__","ToolbarButton","ToolbarGroup","useRef","useEffect","seen","unseen","useSelect","useDispatch","hasBlockSupport","store","blockEditorStore","cleanEmptyObject","jsx","_jsx","Fragment","_Fragment","BlockVisibilityToolbar","clientIds","blocks","canToggleBlockVisibility","select","getBlockName","getBlocksByClientId","_blocks","every","clientId","hasHiddenBlock","some","block","attributes","metadata","blockVisibility","hasBlockVisibilityButtonShownRef","updateBlockAttributes","current","toggleBlockVisibility","attributesByClientId","Object","fromEntries","map","undefined","uniqueByBlock","children","className","disabled","icon","label","onClick"],"sources":["@wordpress/block-editor/src/components/block-visibility/toolbar.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { ToolbarButton, ToolbarGroup } from '@wordpress/components';\nimport { useRef, useEffect } from '@wordpress/element';\nimport { seen, unseen } from '@wordpress/icons';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { hasBlockSupport } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport { cleanEmptyObject } from '../../hooks/utils';\n\nexport default function BlockVisibilityToolbar( { clientIds } ) {\n\tconst { blocks, canToggleBlockVisibility } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlockName, getBlocksByClientId } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\tconst _blocks = getBlocksByClientId( clientIds );\n\t\t\treturn {\n\t\t\t\tblocks: _blocks,\n\t\t\t\tcanToggleBlockVisibility: _blocks.every( ( { clientId } ) =>\n\t\t\t\t\thasBlockSupport(\n\t\t\t\t\t\tgetBlockName( clientId ),\n\t\t\t\t\t\t'blockVisibility',\n\t\t\t\t\t\ttrue\n\t\t\t\t\t)\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\t[ clientIds ]\n\t);\n\n\tconst hasHiddenBlock = blocks.some(\n\t\t( block ) => block.attributes.metadata?.blockVisibility === false\n\t);\n\n\tconst hasBlockVisibilityButtonShownRef = useRef( false );\n\tconst { updateBlockAttributes } = useDispatch( blockEditorStore );\n\n\t// If the block visibility button has been shown, we don't want to\n\t// remove it from the toolbar until the toolbar is rendered again\n\t// without it. Removing it beforehand can cause focus loss issues.\n\t// It needs to return focus from whence it came, and to do that,\n\t// we need to leave the button in the toolbar.\n\tuseEffect( () => {\n\t\tif ( hasHiddenBlock ) {\n\t\t\thasBlockVisibilityButtonShownRef.current = true;\n\t\t}\n\t}, [ hasHiddenBlock ] );\n\n\tif ( ! hasHiddenBlock && ! hasBlockVisibilityButtonShownRef.current ) {\n\t\treturn null;\n\t}\n\n\tconst toggleBlockVisibility = () => {\n\t\tconst attributesByClientId = Object.fromEntries(\n\t\t\tblocks?.map( ( { clientId, attributes } ) => [\n\t\t\t\tclientId,\n\t\t\t\t{\n\t\t\t\t\tmetadata: cleanEmptyObject( {\n\t\t\t\t\t\t...attributes?.metadata,\n\t\t\t\t\t\tblockVisibility: hasHiddenBlock ? undefined : false,\n\t\t\t\t\t} ),\n\t\t\t\t},\n\t\t\t] )\n\t\t);\n\t\tupdateBlockAttributes( clientIds, attributesByClientId, {\n\t\t\tuniqueByBlock: true,\n\t\t} );\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<ToolbarGroup className=\"block-editor-block-lock-toolbar\">\n\t\t\t\t<ToolbarButton\n\t\t\t\t\tdisabled={ ! canToggleBlockVisibility }\n\t\t\t\t\ticon={ hasHiddenBlock ? unseen : seen }\n\t\t\t\t\tlabel={ hasHiddenBlock ? __( 'Hidden' ) : __( 'Visible' ) }\n\t\t\t\t\tonClick={ toggleBlockVisibility }\n\t\t\t\t/>\n\t\t\t</ToolbarGroup>\n\t\t</>\n\t);\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,EAAE,QAAQ,iBAAiB;AACpC,SAASC,aAAa,EAAEC,YAAY,QAAQ,uBAAuB;AACnE,SAASC,MAAM,EAAEC,SAAS,QAAQ,oBAAoB;AACtD,SAASC,IAAI,EAAEC,MAAM,QAAQ,kBAAkB;AAC/C,SAASC,SAAS,EAAEC,WAAW,QAAQ,iBAAiB;AACxD,SAASC,eAAe,QAAQ,mBAAmB;;AAEnD;AACA;AACA;AACA,SAASC,KAAK,IAAIC,gBAAgB,QAAQ,aAAa;AACvD,SAASC,gBAAgB,QAAQ,mBAAmB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,QAAA,IAAAC,SAAA;AAErD,eAAe,SAASC,sBAAsBA,CAAE;EAAEC;AAAU,CAAC,EAAG;EAC/D,MAAM;IAAEC,MAAM;IAAEC;EAAyB,CAAC,GAAGb,SAAS,CACnDc,MAAM,IAAM;IACb,MAAM;MAAEC,YAAY;MAAEC;IAAoB,CAAC,GAC1CF,MAAM,CAAEV,gBAAiB,CAAC;IAC3B,MAAMa,OAAO,GAAGD,mBAAmB,CAAEL,SAAU,CAAC;IAChD,OAAO;MACNC,MAAM,EAAEK,OAAO;MACfJ,wBAAwB,EAAEI,OAAO,CAACC,KAAK,CAAE,CAAE;QAAEC;MAAS,CAAC,KACtDjB,eAAe,CACda,YAAY,CAAEI,QAAS,CAAC,EACxB,iBAAiB,EACjB,IACD,CACD;IACD,CAAC;EACF,CAAC,EACD,CAAER,SAAS,CACZ,CAAC;EAED,MAAMS,cAAc,GAAGR,MAAM,CAACS,IAAI,CAC/BC,KAAK,IAAMA,KAAK,CAACC,UAAU,CAACC,QAAQ,EAAEC,eAAe,KAAK,KAC7D,CAAC;EAED,MAAMC,gCAAgC,GAAG9B,MAAM,CAAE,KAAM,CAAC;EACxD,MAAM;IAAE+B;EAAsB,CAAC,GAAG1B,WAAW,CAAEG,gBAAiB,CAAC;;EAEjE;EACA;EACA;EACA;EACA;EACAP,SAAS,CAAE,MAAM;IAChB,IAAKuB,cAAc,EAAG;MACrBM,gCAAgC,CAACE,OAAO,GAAG,IAAI;IAChD;EACD,CAAC,EAAE,CAAER,cAAc,CAAG,CAAC;EAEvB,IAAK,CAAEA,cAAc,IAAI,CAAEM,gCAAgC,CAACE,OAAO,EAAG;IACrE,OAAO,IAAI;EACZ;EAEA,MAAMC,qBAAqB,GAAGA,CAAA,KAAM;IACnC,MAAMC,oBAAoB,GAAGC,MAAM,CAACC,WAAW,CAC9CpB,MAAM,EAAEqB,GAAG,CAAE,CAAE;MAAEd,QAAQ;MAAEI;IAAW,CAAC,KAAM,CAC5CJ,QAAQ,EACR;MACCK,QAAQ,EAAEnB,gBAAgB,CAAE;QAC3B,GAAGkB,UAAU,EAAEC,QAAQ;QACvBC,eAAe,EAAEL,cAAc,GAAGc,SAAS,GAAG;MAC/C,CAAE;IACH,CAAC,CACA,CACH,CAAC;IACDP,qBAAqB,CAAEhB,SAAS,EAAEmB,oBAAoB,EAAE;MACvDK,aAAa,EAAE;IAChB,CAAE,CAAC;EACJ,CAAC;EAED,oBACC5B,IAAA,CAAAE,SAAA;IAAA2B,QAAA,eACC7B,IAAA,CAACZ,YAAY;MAAC0C,SAAS,EAAC,iCAAiC;MAAAD,QAAA,eACxD7B,IAAA,CAACb,aAAa;QACb4C,QAAQ,EAAG,CAAEzB,wBAA0B;QACvC0B,IAAI,EAAGnB,cAAc,GAAGrB,MAAM,GAAGD,IAAM;QACvC0C,KAAK,EAAGpB,cAAc,GAAG3B,EAAE,CAAE,QAAS,CAAC,GAAGA,EAAE,CAAE,SAAU,CAAG;QAC3DgD,OAAO,EAAGZ;MAAuB,CACjC;IAAC,CACW;EAAC,CACd,CAAC;AAEL","ignoreList":[]}
@@ -2,6 +2,7 @@
2
2
  * WordPress dependencies
3
3
  */
4
4
  import { Icon, Tooltip, privateApis as componentsPrivateApis } from '@wordpress/components';
5
+ import { useEffect, useState } from '@wordpress/element';
5
6
  import { store as preferencesStore } from '@wordpress/preferences';
6
7
  import { useSelect } from '@wordpress/data';
7
8
 
@@ -37,10 +38,32 @@ export default function InspectorControlsTabs({
37
38
  // which at the time is the first tab. This check allows blocks known to
38
39
  // include the list view tab to set it as the tab selected by default.
39
40
  const initialTabName = !useIsListViewTabDisabled(blockName) ? TAB_LIST_VIEW.name : undefined;
41
+ const [selectedTabId, setSelectedTabId] = useState(initialTabName !== null && initialTabName !== void 0 ? initialTabName : tabs[0]?.name);
42
+
43
+ // When the active tab is not amongst the available `tabs`, it indicates
44
+ // the list of tabs was changed dynamically with the active one being
45
+ // removed. Set the active tab back to the first tab.
46
+ useEffect(() => {
47
+ // Skip this behavior if `initialTabName` is supplied. In the navigation
48
+ // block, the list view tab isn't present in `tabs` initially. The early
49
+ // return here prevents the dynamic behavior that follows from overriding
50
+ // `initialTabName`.
51
+ if (initialTabName) {
52
+ return;
53
+ }
54
+ if (tabs?.length && selectedTabId) {
55
+ const activeTab = tabs.find(tab => tab.name === selectedTabId);
56
+ if (!activeTab) {
57
+ setSelectedTabId(tabs[0].name);
58
+ }
59
+ }
60
+ }, [tabs, selectedTabId, initialTabName]);
40
61
  return /*#__PURE__*/_jsx("div", {
41
62
  className: "block-editor-block-inspector__tabs",
42
63
  children: /*#__PURE__*/_jsxs(Tabs, {
43
64
  defaultTabId: initialTabName,
65
+ selectedTabId: selectedTabId,
66
+ onSelect: setSelectedTabId,
44
67
  children: [/*#__PURE__*/_jsx(Tabs.TabList, {
45
68
  children: tabs.map(tab => showIconLabels ? /*#__PURE__*/_jsx(Tabs.Tab, {
46
69
  tabId: tab.name,
@@ -1 +1 @@
1
- {"version":3,"names":["Icon","Tooltip","privateApis","componentsPrivateApis","store","preferencesStore","useSelect","TAB_SETTINGS","TAB_STYLES","TAB_LIST_VIEW","TAB_CONTENT","SettingsTab","StylesTab","ContentTab","InspectorControls","useIsListViewTabDisabled","unlock","jsx","_jsx","jsxs","_jsxs","Tabs","InspectorControlsTabs","blockName","clientId","hasBlockStyles","tabs","isSectionBlock","contentClientIds","showIconLabels","select","get","initialTabName","name","undefined","className","children","defaultTabId","TabList","map","tab","Tab","tabId","title","text","icon","TabPanel","focusable","showAdvancedControls","Slot","group"],"sources":["@wordpress/block-editor/src/components/inspector-controls-tabs/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tIcon,\n\tTooltip,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { store as preferencesStore } from '@wordpress/preferences';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { TAB_SETTINGS, TAB_STYLES, TAB_LIST_VIEW, TAB_CONTENT } from './utils';\nimport SettingsTab from './settings-tab';\nimport StylesTab from './styles-tab';\nimport ContentTab from './content-tab';\nimport InspectorControls from '../inspector-controls';\nimport useIsListViewTabDisabled from './use-is-list-view-tab-disabled';\nimport { unlock } from '../../lock-unlock';\n\nconst { Tabs } = unlock( componentsPrivateApis );\n\nexport default function InspectorControlsTabs( {\n\tblockName,\n\tclientId,\n\thasBlockStyles,\n\ttabs,\n\tisSectionBlock,\n\tcontentClientIds,\n} ) {\n\tconst showIconLabels = useSelect( ( select ) => {\n\t\treturn select( preferencesStore ).get( 'core', 'showIconLabels' );\n\t}, [] );\n\n\t// The tabs panel will mount before fills are rendered to the list view\n\t// slot. This means the list view tab isn't initially included in the\n\t// available tabs so the panel defaults selection to the settings tab\n\t// which at the time is the first tab. This check allows blocks known to\n\t// include the list view tab to set it as the tab selected by default.\n\tconst initialTabName = ! useIsListViewTabDisabled( blockName )\n\t\t? TAB_LIST_VIEW.name\n\t\t: undefined;\n\n\treturn (\n\t\t<div className=\"block-editor-block-inspector__tabs\">\n\t\t\t<Tabs defaultTabId={ initialTabName } key={ clientId }>\n\t\t\t\t<Tabs.TabList>\n\t\t\t\t\t{ tabs.map( ( tab ) =>\n\t\t\t\t\t\tshowIconLabels ? (\n\t\t\t\t\t\t\t<Tabs.Tab key={ tab.name } tabId={ tab.name }>\n\t\t\t\t\t\t\t\t{ tab.title }\n\t\t\t\t\t\t\t</Tabs.Tab>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<Tooltip text={ tab.title } key={ tab.name }>\n\t\t\t\t\t\t\t\t<Tabs.Tab\n\t\t\t\t\t\t\t\t\ttabId={ tab.name }\n\t\t\t\t\t\t\t\t\taria-label={ tab.title }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<Icon icon={ tab.icon } />\n\t\t\t\t\t\t\t\t</Tabs.Tab>\n\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t)\n\t\t\t\t\t) }\n\t\t\t\t</Tabs.TabList>\n\t\t\t\t<Tabs.TabPanel tabId={ TAB_SETTINGS.name } focusable={ false }>\n\t\t\t\t\t<SettingsTab showAdvancedControls={ !! blockName } />\n\t\t\t\t</Tabs.TabPanel>\n\t\t\t\t<Tabs.TabPanel tabId={ TAB_STYLES.name } focusable={ false }>\n\t\t\t\t\t<StylesTab\n\t\t\t\t\t\tblockName={ blockName }\n\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t\thasBlockStyles={ hasBlockStyles }\n\t\t\t\t\t\tisSectionBlock={ isSectionBlock }\n\t\t\t\t\t/>\n\t\t\t\t</Tabs.TabPanel>\n\t\t\t\t<Tabs.TabPanel tabId={ TAB_CONTENT.name } focusable={ false }>\n\t\t\t\t\t<ContentTab contentClientIds={ contentClientIds } />\n\t\t\t\t</Tabs.TabPanel>\n\t\t\t\t<Tabs.TabPanel tabId={ TAB_LIST_VIEW.name } focusable={ false }>\n\t\t\t\t\t<InspectorControls.Slot group=\"list\" />\n\t\t\t\t</Tabs.TabPanel>\n\t\t\t</Tabs>\n\t\t</div>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["Icon","Tooltip","privateApis","componentsPrivateApis","useEffect","useState","store","preferencesStore","useSelect","TAB_SETTINGS","TAB_STYLES","TAB_LIST_VIEW","TAB_CONTENT","SettingsTab","StylesTab","ContentTab","InspectorControls","useIsListViewTabDisabled","unlock","jsx","_jsx","jsxs","_jsxs","Tabs","InspectorControlsTabs","blockName","clientId","hasBlockStyles","tabs","isSectionBlock","contentClientIds","showIconLabels","select","get","initialTabName","name","undefined","selectedTabId","setSelectedTabId","length","activeTab","find","tab","className","children","defaultTabId","onSelect","TabList","map","Tab","tabId","title","text","icon","TabPanel","focusable","showAdvancedControls","Slot","group"],"sources":["@wordpress/block-editor/src/components/inspector-controls-tabs/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tIcon,\n\tTooltip,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { useEffect, useState } from '@wordpress/element';\nimport { store as preferencesStore } from '@wordpress/preferences';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { TAB_SETTINGS, TAB_STYLES, TAB_LIST_VIEW, TAB_CONTENT } from './utils';\nimport SettingsTab from './settings-tab';\nimport StylesTab from './styles-tab';\nimport ContentTab from './content-tab';\nimport InspectorControls from '../inspector-controls';\nimport useIsListViewTabDisabled from './use-is-list-view-tab-disabled';\nimport { unlock } from '../../lock-unlock';\n\nconst { Tabs } = unlock( componentsPrivateApis );\n\nexport default function InspectorControlsTabs( {\n\tblockName,\n\tclientId,\n\thasBlockStyles,\n\ttabs,\n\tisSectionBlock,\n\tcontentClientIds,\n} ) {\n\tconst showIconLabels = useSelect( ( select ) => {\n\t\treturn select( preferencesStore ).get( 'core', 'showIconLabels' );\n\t}, [] );\n\n\t// The tabs panel will mount before fills are rendered to the list view\n\t// slot. This means the list view tab isn't initially included in the\n\t// available tabs so the panel defaults selection to the settings tab\n\t// which at the time is the first tab. This check allows blocks known to\n\t// include the list view tab to set it as the tab selected by default.\n\tconst initialTabName = ! useIsListViewTabDisabled( blockName )\n\t\t? TAB_LIST_VIEW.name\n\t\t: undefined;\n\n\tconst [ selectedTabId, setSelectedTabId ] = useState(\n\t\tinitialTabName ?? tabs[ 0 ]?.name\n\t);\n\n\t// When the active tab is not amongst the available `tabs`, it indicates\n\t// the list of tabs was changed dynamically with the active one being\n\t// removed. Set the active tab back to the first tab.\n\tuseEffect( () => {\n\t\t// Skip this behavior if `initialTabName` is supplied. In the navigation\n\t\t// block, the list view tab isn't present in `tabs` initially. The early\n\t\t// return here prevents the dynamic behavior that follows from overriding\n\t\t// `initialTabName`.\n\t\tif ( initialTabName ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( tabs?.length && selectedTabId ) {\n\t\t\tconst activeTab = tabs.find(\n\t\t\t\t( tab ) => tab.name === selectedTabId\n\t\t\t);\n\t\t\tif ( ! activeTab ) {\n\t\t\t\tsetSelectedTabId( tabs[ 0 ].name );\n\t\t\t}\n\t\t}\n\t}, [ tabs, selectedTabId, initialTabName ] );\n\n\treturn (\n\t\t<div className=\"block-editor-block-inspector__tabs\">\n\t\t\t<Tabs\n\t\t\t\tdefaultTabId={ initialTabName }\n\t\t\t\tselectedTabId={ selectedTabId }\n\t\t\t\tonSelect={ setSelectedTabId }\n\t\t\t\tkey={ clientId }\n\t\t\t>\n\t\t\t\t<Tabs.TabList>\n\t\t\t\t\t{ tabs.map( ( tab ) =>\n\t\t\t\t\t\tshowIconLabels ? (\n\t\t\t\t\t\t\t<Tabs.Tab key={ tab.name } tabId={ tab.name }>\n\t\t\t\t\t\t\t\t{ tab.title }\n\t\t\t\t\t\t\t</Tabs.Tab>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<Tooltip text={ tab.title } key={ tab.name }>\n\t\t\t\t\t\t\t\t<Tabs.Tab\n\t\t\t\t\t\t\t\t\ttabId={ tab.name }\n\t\t\t\t\t\t\t\t\taria-label={ tab.title }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<Icon icon={ tab.icon } />\n\t\t\t\t\t\t\t\t</Tabs.Tab>\n\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t)\n\t\t\t\t\t) }\n\t\t\t\t</Tabs.TabList>\n\t\t\t\t<Tabs.TabPanel tabId={ TAB_SETTINGS.name } focusable={ false }>\n\t\t\t\t\t<SettingsTab showAdvancedControls={ !! blockName } />\n\t\t\t\t</Tabs.TabPanel>\n\t\t\t\t<Tabs.TabPanel tabId={ TAB_STYLES.name } focusable={ false }>\n\t\t\t\t\t<StylesTab\n\t\t\t\t\t\tblockName={ blockName }\n\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t\thasBlockStyles={ hasBlockStyles }\n\t\t\t\t\t\tisSectionBlock={ isSectionBlock }\n\t\t\t\t\t/>\n\t\t\t\t</Tabs.TabPanel>\n\t\t\t\t<Tabs.TabPanel tabId={ TAB_CONTENT.name } focusable={ false }>\n\t\t\t\t\t<ContentTab contentClientIds={ contentClientIds } />\n\t\t\t\t</Tabs.TabPanel>\n\t\t\t\t<Tabs.TabPanel tabId={ TAB_LIST_VIEW.name } focusable={ false }>\n\t\t\t\t\t<InspectorControls.Slot group=\"list\" />\n\t\t\t\t</Tabs.TabPanel>\n\t\t\t</Tabs>\n\t\t</div>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
@@ -394,7 +394,7 @@ function LinkControl({
394
394
  onClick: isDisabled ? noop : handleSubmit,
395
395
  className: "block-editor-link-control__search-submit",
396
396
  "aria-disabled": isDisabled,
397
- children: __('Save')
397
+ children: __('Apply')
398
398
  })]
399
399
  }), !isCreatingPage && renderControlBottom && renderControlBottom()]
400
400
  });
@@ -1 +1 @@
1
- {"version":3,"names":["clsx","Button","Spinner","Notice","TextControl","__experimentalHStack","HStack","__experimentalInputControlSuffixWrapper","InputControlSuffixWrapper","__","useRef","useState","useEffect","focus","ENTER","isShallowEqualObjects","useSelect","useDispatch","store","preferencesStore","keyboardReturn","LinkControlSettingsDrawer","LinkControlSearchInput","LinkPreview","LinkSettings","useCreatePage","useInternalValue","ViewerFill","DEFAULT_LINK_SETTINGS","deprecated","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","noop","PREFERENCE_SCOPE","PREFERENCE_KEY","LinkControl","searchInputPlaceholder","value","settings","onChange","onRemove","onCancel","noDirectEntry","showSuggestions","showInitialSuggestions","forceIsEditingLink","createSuggestion","withCreateSuggestion","inputValue","propInputValue","suggestionsQuery","noURLSuggestion","createSuggestionButtonText","hasRichPreviews","hasTextControl","renderControlBottom","undefined","settingsOpen","setSettingsOpen","advancedSettingsPreference","select","_prefsStore$get","prefsStore","get","set","setPreference","setSettingsOpenWithPreference","prefVal","isSettingsOpen","isMountingRef","wrapperNode","textInputRef","isEndingEditWithFocusRef","settingsKeys","map","id","internalControlValue","setInternalControlValue","setInternalURLInputValue","setInternalTextInputValue","createSetInternalSettingValueHandler","valueHasChanges","isEditingLink","setIsEditingLink","url","createPage","isCreatingPage","errorMessage","current","nextFocusTarget","focusable","find","hasLinkValue","trim","length","stopEditing","contains","ownerDocument","activeElement","handleSelectSuggestion","updatedValue","nonSettingsChanges","Object","keys","reduce","acc","key","includes","title","handleSubmit","currentUrlInputValue","handleSubmitWithEnter","event","keyCode","currentInputIsEmpty","preventDefault","resetInternalValues","handleCancel","stopPropagation","shownUnlinkControl","showActions","showTextControl","isEditing","isDisabled","showSettings","tabIndex","ref","className","children","__nextHasNoMarginBottom","label","onKeyDown","__next40pxDefaultSize","currentLink","placeholder","onCreateSuggestion","onSelect","allowDirectEntry","withURLSuggestion","hideLabelFromVision","suffix","variant","onClick","icon","size","status","isDismissible","onEditClick","hasUnlinkControl","justify","DeprecatedExperimentalLinkControl","props","since","alternative"],"sources":["@wordpress/block-editor/src/components/link-control/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tButton,\n\tSpinner,\n\tNotice,\n\tTextControl,\n\t__experimentalHStack as HStack,\n\t__experimentalInputControlSuffixWrapper as InputControlSuffixWrapper,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useRef, useState, useEffect } from '@wordpress/element';\nimport { focus } from '@wordpress/dom';\nimport { ENTER } from '@wordpress/keycodes';\nimport { isShallowEqualObjects } from '@wordpress/is-shallow-equal';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { store as preferencesStore } from '@wordpress/preferences';\nimport { keyboardReturn } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport LinkControlSettingsDrawer from './settings-drawer';\nimport LinkControlSearchInput from './search-input';\nimport LinkPreview from './link-preview';\nimport LinkSettings from './settings';\nimport useCreatePage from './use-create-page';\nimport useInternalValue from './use-internal-value';\nimport { ViewerFill } from './viewer-slot';\nimport { DEFAULT_LINK_SETTINGS } from './constants';\nimport deprecated from '@wordpress/deprecated';\n\n/**\n * Default properties associated with a link control value.\n *\n * @typedef WPLinkControlDefaultValue\n *\n * @property {string} url Link URL.\n * @property {string=} title Link title.\n * @property {boolean=} opensInNewTab Whether link should open in a new browser\n * tab. This value is only assigned if not\n * providing a custom `settings` prop.\n */\n\n/* eslint-disable jsdoc/valid-types */\n/**\n * Custom settings values associated with a link.\n *\n * @typedef {{[setting:string]:any}} WPLinkControlSettingsValue\n */\n/* eslint-enable */\n\n/**\n * Custom settings values associated with a link.\n *\n * @typedef WPLinkControlSetting\n *\n * @property {string} id Identifier to use as property for setting value.\n * @property {string} title Human-readable label to show in user interface.\n */\n\n/**\n * Properties associated with a link control value, composed as a union of the\n * default properties and any custom settings values.\n *\n * @typedef {WPLinkControlDefaultValue&WPLinkControlSettingsValue} WPLinkControlValue\n */\n\n/** @typedef {(nextValue:WPLinkControlValue)=>void} WPLinkControlOnChangeProp */\n\n/**\n * Properties associated with a search suggestion used within the LinkControl.\n *\n * @typedef WPLinkControlSuggestion\n *\n * @property {string} id Identifier to use to uniquely identify the suggestion.\n * @property {string} type Identifies the type of the suggestion (eg: `post`,\n * `page`, `url`...etc)\n * @property {string} title Human-readable label to show in user interface.\n * @property {string} url A URL for the suggestion.\n */\n\n/** @typedef {(title:string)=>WPLinkControlSuggestion} WPLinkControlCreateSuggestionProp */\n\n/**\n * @typedef WPLinkControlProps\n *\n * @property {(WPLinkControlSetting[])=} settings An array of settings objects. Each object will used to\n * render a `ToggleControl` for that setting.\n * @property {boolean=} forceIsEditingLink If passed as either `true` or `false`, controls the\n * internal editing state of the component to respective\n * show or not show the URL input field.\n * @property {WPLinkControlValue=} value Current link value.\n * @property {WPLinkControlOnChangeProp=} onChange Value change handler, called with the updated value if\n * the user selects a new link or updates settings.\n * @property {boolean=} noDirectEntry Whether to allow turning a URL-like search query directly into a link.\n * @property {boolean=} showSuggestions Whether to present suggestions when typing the URL.\n * @property {boolean=} showInitialSuggestions Whether to present initial suggestions immediately.\n * @property {boolean=} withCreateSuggestion Whether to allow creation of link value from suggestion.\n * @property {Object=} suggestionsQuery Query parameters to pass along to wp.blockEditor.__experimentalFetchLinkSuggestions.\n * @property {boolean=} noURLSuggestion Whether to add a fallback suggestion which treats the search query as a URL.\n * @property {boolean=} hasTextControl Whether to add a text field to the UI to update the value.title.\n * @property {string|Function|undefined} createSuggestionButtonText The text to use in the button that calls createSuggestion.\n * @property {Function} renderControlBottom Optional controls to be rendered at the bottom of the component.\n */\n\nconst noop = () => {};\n\nconst PREFERENCE_SCOPE = 'core/block-editor';\nconst PREFERENCE_KEY = 'linkControlSettingsDrawer';\n\n/**\n * Renders a link control. A link control is a controlled input which maintains\n * a value associated with a link (HTML anchor element) and relevant settings\n * for how that link is expected to behave.\n *\n * @param {WPLinkControlProps} props Component props.\n */\nfunction LinkControl( {\n\tsearchInputPlaceholder,\n\tvalue,\n\tsettings = DEFAULT_LINK_SETTINGS,\n\tonChange = noop,\n\tonRemove,\n\tonCancel,\n\tnoDirectEntry = false,\n\tshowSuggestions = true,\n\tshowInitialSuggestions,\n\tforceIsEditingLink,\n\tcreateSuggestion,\n\twithCreateSuggestion,\n\tinputValue: propInputValue = '',\n\tsuggestionsQuery = {},\n\tnoURLSuggestion = false,\n\tcreateSuggestionButtonText,\n\thasRichPreviews = false,\n\thasTextControl = false,\n\trenderControlBottom = null,\n} ) {\n\tif ( withCreateSuggestion === undefined && createSuggestion ) {\n\t\twithCreateSuggestion = true;\n\t}\n\n\tconst [ settingsOpen, setSettingsOpen ] = useState( false );\n\n\tconst { advancedSettingsPreference } = useSelect( ( select ) => {\n\t\tconst prefsStore = select( preferencesStore );\n\n\t\treturn {\n\t\t\tadvancedSettingsPreference:\n\t\t\t\tprefsStore.get( PREFERENCE_SCOPE, PREFERENCE_KEY ) ?? false,\n\t\t};\n\t}, [] );\n\n\tconst { set: setPreference } = useDispatch( preferencesStore );\n\n\t/**\n\t * Sets the open/closed state of the Advanced Settings Drawer,\n\t * optionlly persisting the state to the user's preferences.\n\t *\n\t * Note that Block Editor components can be consumed by non-WordPress\n\t * environments which may not have preferences setup.\n\t * Therefore a local state is also used as a fallback.\n\t *\n\t * @param {boolean} prefVal the open/closed state of the Advanced Settings Drawer.\n\t */\n\tconst setSettingsOpenWithPreference = ( prefVal ) => {\n\t\tif ( setPreference ) {\n\t\t\tsetPreference( PREFERENCE_SCOPE, PREFERENCE_KEY, prefVal );\n\t\t}\n\t\tsetSettingsOpen( prefVal );\n\t};\n\n\t// Block Editor components can be consumed by non-WordPress environments\n\t// which may not have these preferences setup.\n\t// Therefore a local state is used as a fallback.\n\tconst isSettingsOpen = advancedSettingsPreference || settingsOpen;\n\n\tconst isMountingRef = useRef( true );\n\tconst wrapperNode = useRef();\n\tconst textInputRef = useRef();\n\tconst isEndingEditWithFocusRef = useRef( false );\n\n\tconst settingsKeys = settings.map( ( { id } ) => id );\n\n\tconst [\n\t\tinternalControlValue,\n\t\tsetInternalControlValue,\n\t\tsetInternalURLInputValue,\n\t\tsetInternalTextInputValue,\n\t\tcreateSetInternalSettingValueHandler,\n\t] = useInternalValue( value );\n\n\tconst valueHasChanges =\n\t\tvalue && ! isShallowEqualObjects( internalControlValue, value );\n\n\tconst [ isEditingLink, setIsEditingLink ] = useState(\n\t\tforceIsEditingLink !== undefined\n\t\t\t? forceIsEditingLink\n\t\t\t: ! value || ! value.url\n\t);\n\n\tconst { createPage, isCreatingPage, errorMessage } =\n\t\tuseCreatePage( createSuggestion );\n\n\tuseEffect( () => {\n\t\tif ( forceIsEditingLink === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tsetIsEditingLink( forceIsEditingLink );\n\t}, [ forceIsEditingLink ] );\n\n\tuseEffect( () => {\n\t\t// We don't auto focus into the Link UI on mount\n\t\t// because otherwise using the keyboard to select text\n\t\t// *within* the link format is not possible.\n\t\tif ( isMountingRef.current ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Scenario - when:\n\t\t// - switching between editable and non editable LinkControl\n\t\t// - clicking on a link\n\t\t// ...then move focus to the *first* element to avoid focus loss\n\t\t// and to ensure focus is *within* the Link UI.\n\t\tconst nextFocusTarget =\n\t\t\tfocus.focusable.find( wrapperNode.current )[ 0 ] ||\n\t\t\twrapperNode.current;\n\n\t\tnextFocusTarget.focus();\n\n\t\tisEndingEditWithFocusRef.current = false;\n\t}, [ isEditingLink, isCreatingPage ] );\n\n\t// The component mounting reference is maintained separately\n\t// to correctly reset values in `StrictMode`.\n\tuseEffect( () => {\n\t\tisMountingRef.current = false;\n\n\t\treturn () => {\n\t\t\tisMountingRef.current = true;\n\t\t};\n\t}, [] );\n\n\tconst hasLinkValue = value?.url?.trim()?.length > 0;\n\n\t/**\n\t * Cancels editing state and marks that focus may need to be restored after\n\t * the next render, if focus was within the wrapper when editing finished.\n\t */\n\tconst stopEditing = () => {\n\t\tisEndingEditWithFocusRef.current = !! wrapperNode.current?.contains(\n\t\t\twrapperNode.current.ownerDocument.activeElement\n\t\t);\n\n\t\tsetIsEditingLink( false );\n\t};\n\n\tconst handleSelectSuggestion = ( updatedValue ) => {\n\t\t// Suggestions may contains \"settings\" values (e.g. `opensInNewTab`)\n\t\t// which should not override any existing settings values set by the\n\t\t// user. This filters out any settings values from the suggestion.\n\t\tconst nonSettingsChanges = Object.keys( updatedValue ).reduce(\n\t\t\t( acc, key ) => {\n\t\t\t\tif ( ! settingsKeys.includes( key ) ) {\n\t\t\t\t\tacc[ key ] = updatedValue[ key ];\n\t\t\t\t}\n\t\t\t\treturn acc;\n\t\t\t},\n\t\t\t{}\n\t\t);\n\n\t\tonChange( {\n\t\t\t...internalControlValue,\n\t\t\t...nonSettingsChanges,\n\t\t\t// As title is not a setting, it must be manually applied\n\t\t\t// in such a way as to preserve the users changes over\n\t\t\t// any \"title\" value provided by the \"suggestion\".\n\t\t\ttitle: internalControlValue?.title || updatedValue?.title,\n\t\t} );\n\n\t\tstopEditing();\n\t};\n\n\tconst handleSubmit = () => {\n\t\tif ( valueHasChanges ) {\n\t\t\t// Submit the original value with new stored values applied\n\t\t\t// on top. URL is a special case as it may also be a prop.\n\t\t\tonChange( {\n\t\t\t\t...value,\n\t\t\t\t...internalControlValue,\n\t\t\t\turl: currentUrlInputValue,\n\t\t\t} );\n\t\t}\n\t\tstopEditing();\n\t};\n\n\tconst handleSubmitWithEnter = ( event ) => {\n\t\tconst { keyCode } = event;\n\n\t\tif (\n\t\t\tkeyCode === ENTER &&\n\t\t\t! currentInputIsEmpty // Disallow submitting empty values.\n\t\t) {\n\t\t\tevent.preventDefault();\n\t\t\thandleSubmit();\n\t\t}\n\t};\n\n\tconst resetInternalValues = () => {\n\t\tsetInternalControlValue( value );\n\t};\n\n\tconst handleCancel = ( event ) => {\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\n\t\t// Ensure that any unsubmitted input changes are reset.\n\t\tresetInternalValues();\n\n\t\tif ( hasLinkValue ) {\n\t\t\t// If there is a link then exist editing mode and show preview.\n\t\t\tstopEditing();\n\t\t} else {\n\t\t\t// If there is no link value, then remove the link entirely.\n\t\t\tonRemove?.();\n\t\t}\n\n\t\tonCancel?.();\n\t};\n\n\tconst currentUrlInputValue =\n\t\tpropInputValue || internalControlValue?.url || '';\n\n\tconst currentInputIsEmpty = ! currentUrlInputValue?.trim()?.length;\n\n\tconst shownUnlinkControl =\n\t\tonRemove && value && ! isEditingLink && ! isCreatingPage;\n\n\tconst showActions = isEditingLink && hasLinkValue;\n\n\t// Only show text control once a URL value has been committed\n\t// and it isn't just empty whitespace.\n\t// See https://github.com/WordPress/gutenberg/pull/33849/#issuecomment-932194927.\n\tconst showTextControl = hasLinkValue && hasTextControl;\n\n\tconst isEditing = ( isEditingLink || ! value ) && ! isCreatingPage;\n\tconst isDisabled = ! valueHasChanges || currentInputIsEmpty;\n\tconst showSettings = !! settings?.length && isEditingLink && hasLinkValue;\n\n\treturn (\n\t\t<div\n\t\t\ttabIndex={ -1 }\n\t\t\tref={ wrapperNode }\n\t\t\tclassName=\"block-editor-link-control\"\n\t\t>\n\t\t\t{ isCreatingPage && (\n\t\t\t\t<div className=\"block-editor-link-control__loading\">\n\t\t\t\t\t<Spinner /> { __( 'Creating' ) }…\n\t\t\t\t</div>\n\t\t\t) }\n\n\t\t\t{ isEditing && (\n\t\t\t\t<>\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={ clsx( {\n\t\t\t\t\t\t\t'block-editor-link-control__search-input-wrapper': true,\n\t\t\t\t\t\t\t'has-text-control': showTextControl,\n\t\t\t\t\t\t\t'has-actions': showActions,\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ showTextControl && (\n\t\t\t\t\t\t\t<TextControl\n\t\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\t\tref={ textInputRef }\n\t\t\t\t\t\t\t\tclassName=\"block-editor-link-control__field block-editor-link-control__text-content\"\n\t\t\t\t\t\t\t\tlabel={ __( 'Text' ) }\n\t\t\t\t\t\t\t\tvalue={ internalControlValue?.title }\n\t\t\t\t\t\t\t\tonChange={ setInternalTextInputValue }\n\t\t\t\t\t\t\t\tonKeyDown={ handleSubmitWithEnter }\n\t\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t<LinkControlSearchInput\n\t\t\t\t\t\t\tcurrentLink={ value }\n\t\t\t\t\t\t\tclassName=\"block-editor-link-control__field block-editor-link-control__search-input\"\n\t\t\t\t\t\t\tplaceholder={ searchInputPlaceholder }\n\t\t\t\t\t\t\tvalue={ currentUrlInputValue }\n\t\t\t\t\t\t\twithCreateSuggestion={ withCreateSuggestion }\n\t\t\t\t\t\t\tonCreateSuggestion={ createPage }\n\t\t\t\t\t\t\tonChange={ setInternalURLInputValue }\n\t\t\t\t\t\t\tonSelect={ handleSelectSuggestion }\n\t\t\t\t\t\t\tshowInitialSuggestions={ showInitialSuggestions }\n\t\t\t\t\t\t\tallowDirectEntry={ ! noDirectEntry }\n\t\t\t\t\t\t\tshowSuggestions={ showSuggestions }\n\t\t\t\t\t\t\tsuggestionsQuery={ suggestionsQuery }\n\t\t\t\t\t\t\twithURLSuggestion={ ! noURLSuggestion }\n\t\t\t\t\t\t\tcreateSuggestionButtonText={\n\t\t\t\t\t\t\t\tcreateSuggestionButtonText\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\thideLabelFromVision={ ! showTextControl }\n\t\t\t\t\t\t\tsuffix={\n\t\t\t\t\t\t\t\tshowActions ? undefined : (\n\t\t\t\t\t\t\t\t\t<InputControlSuffixWrapper variant=\"control\">\n\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\tonClick={\n\t\t\t\t\t\t\t\t\t\t\t\tisDisabled ? noop : handleSubmit\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tlabel={ __( 'Submit' ) }\n\t\t\t\t\t\t\t\t\t\t\ticon={ keyboardReturn }\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"block-editor-link-control__search-submit\"\n\t\t\t\t\t\t\t\t\t\t\taria-disabled={ isDisabled }\n\t\t\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</InputControlSuffixWrapper>\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t\t{ errorMessage && (\n\t\t\t\t\t\t<Notice\n\t\t\t\t\t\t\tclassName=\"block-editor-link-control__search-error\"\n\t\t\t\t\t\t\tstatus=\"error\"\n\t\t\t\t\t\t\tisDismissible={ false }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ errorMessage }\n\t\t\t\t\t\t</Notice>\n\t\t\t\t\t) }\n\t\t\t\t</>\n\t\t\t) }\n\n\t\t\t{ value && ! isEditingLink && ! isCreatingPage && (\n\t\t\t\t<LinkPreview\n\t\t\t\t\tkey={ value?.url } // force remount when URL changes to avoid race conditions for rich previews\n\t\t\t\t\tvalue={ value }\n\t\t\t\t\tonEditClick={ () => setIsEditingLink( true ) }\n\t\t\t\t\thasRichPreviews={ hasRichPreviews }\n\t\t\t\t\thasUnlinkControl={ shownUnlinkControl }\n\t\t\t\t\tonRemove={ () => {\n\t\t\t\t\t\tonRemove();\n\t\t\t\t\t\tsetIsEditingLink( true );\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t) }\n\n\t\t\t{ showSettings && (\n\t\t\t\t<div className=\"block-editor-link-control__tools\">\n\t\t\t\t\t{ ! currentInputIsEmpty && (\n\t\t\t\t\t\t<LinkControlSettingsDrawer\n\t\t\t\t\t\t\tsettingsOpen={ isSettingsOpen }\n\t\t\t\t\t\t\tsetSettingsOpen={ setSettingsOpenWithPreference }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<LinkSettings\n\t\t\t\t\t\t\t\tvalue={ internalControlValue }\n\t\t\t\t\t\t\t\tsettings={ settings }\n\t\t\t\t\t\t\t\tonChange={ createSetInternalSettingValueHandler(\n\t\t\t\t\t\t\t\t\tsettingsKeys\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</LinkControlSettingsDrawer>\n\t\t\t\t\t) }\n\t\t\t\t</div>\n\t\t\t) }\n\n\t\t\t{ showActions && (\n\t\t\t\t<HStack\n\t\t\t\t\tjustify=\"right\"\n\t\t\t\t\tclassName=\"block-editor-link-control__search-actions\"\n\t\t\t\t>\n\t\t\t\t\t<Button\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\tonClick={ handleCancel }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t\t<Button\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\tonClick={ isDisabled ? noop : handleSubmit }\n\t\t\t\t\t\tclassName=\"block-editor-link-control__search-submit\"\n\t\t\t\t\t\taria-disabled={ isDisabled }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Save' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t</HStack>\n\t\t\t) }\n\n\t\t\t{ ! isCreatingPage && renderControlBottom && renderControlBottom() }\n\t\t</div>\n\t);\n}\n\nLinkControl.ViewerFill = ViewerFill;\nLinkControl.DEFAULT_LINK_SETTINGS = DEFAULT_LINK_SETTINGS;\n\nconst DeprecatedExperimentalLinkControl = ( props ) => {\n\tdeprecated( 'wp.blockEditor.__experimentalLinkControl', {\n\t\tsince: '6.8',\n\t\talternative: 'wp.blockEditor.LinkControl',\n\t} );\n\n\treturn <LinkControl { ...props } />;\n};\n\nDeprecatedExperimentalLinkControl.ViewerFill = LinkControl.ViewerFill;\nDeprecatedExperimentalLinkControl.DEFAULT_LINK_SETTINGS =\n\tLinkControl.DEFAULT_LINK_SETTINGS;\n\nexport { DeprecatedExperimentalLinkControl };\nexport default LinkControl;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["clsx","Button","Spinner","Notice","TextControl","__experimentalHStack","HStack","__experimentalInputControlSuffixWrapper","InputControlSuffixWrapper","__","useRef","useState","useEffect","focus","ENTER","isShallowEqualObjects","useSelect","useDispatch","store","preferencesStore","keyboardReturn","LinkControlSettingsDrawer","LinkControlSearchInput","LinkPreview","LinkSettings","useCreatePage","useInternalValue","ViewerFill","DEFAULT_LINK_SETTINGS","deprecated","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","noop","PREFERENCE_SCOPE","PREFERENCE_KEY","LinkControl","searchInputPlaceholder","value","settings","onChange","onRemove","onCancel","noDirectEntry","showSuggestions","showInitialSuggestions","forceIsEditingLink","createSuggestion","withCreateSuggestion","inputValue","propInputValue","suggestionsQuery","noURLSuggestion","createSuggestionButtonText","hasRichPreviews","hasTextControl","renderControlBottom","undefined","settingsOpen","setSettingsOpen","advancedSettingsPreference","select","_prefsStore$get","prefsStore","get","set","setPreference","setSettingsOpenWithPreference","prefVal","isSettingsOpen","isMountingRef","wrapperNode","textInputRef","isEndingEditWithFocusRef","settingsKeys","map","id","internalControlValue","setInternalControlValue","setInternalURLInputValue","setInternalTextInputValue","createSetInternalSettingValueHandler","valueHasChanges","isEditingLink","setIsEditingLink","url","createPage","isCreatingPage","errorMessage","current","nextFocusTarget","focusable","find","hasLinkValue","trim","length","stopEditing","contains","ownerDocument","activeElement","handleSelectSuggestion","updatedValue","nonSettingsChanges","Object","keys","reduce","acc","key","includes","title","handleSubmit","currentUrlInputValue","handleSubmitWithEnter","event","keyCode","currentInputIsEmpty","preventDefault","resetInternalValues","handleCancel","stopPropagation","shownUnlinkControl","showActions","showTextControl","isEditing","isDisabled","showSettings","tabIndex","ref","className","children","__nextHasNoMarginBottom","label","onKeyDown","__next40pxDefaultSize","currentLink","placeholder","onCreateSuggestion","onSelect","allowDirectEntry","withURLSuggestion","hideLabelFromVision","suffix","variant","onClick","icon","size","status","isDismissible","onEditClick","hasUnlinkControl","justify","DeprecatedExperimentalLinkControl","props","since","alternative"],"sources":["@wordpress/block-editor/src/components/link-control/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tButton,\n\tSpinner,\n\tNotice,\n\tTextControl,\n\t__experimentalHStack as HStack,\n\t__experimentalInputControlSuffixWrapper as InputControlSuffixWrapper,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useRef, useState, useEffect } from '@wordpress/element';\nimport { focus } from '@wordpress/dom';\nimport { ENTER } from '@wordpress/keycodes';\nimport { isShallowEqualObjects } from '@wordpress/is-shallow-equal';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { store as preferencesStore } from '@wordpress/preferences';\nimport { keyboardReturn } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport LinkControlSettingsDrawer from './settings-drawer';\nimport LinkControlSearchInput from './search-input';\nimport LinkPreview from './link-preview';\nimport LinkSettings from './settings';\nimport useCreatePage from './use-create-page';\nimport useInternalValue from './use-internal-value';\nimport { ViewerFill } from './viewer-slot';\nimport { DEFAULT_LINK_SETTINGS } from './constants';\nimport deprecated from '@wordpress/deprecated';\n\n/**\n * Default properties associated with a link control value.\n *\n * @typedef WPLinkControlDefaultValue\n *\n * @property {string} url Link URL.\n * @property {string=} title Link title.\n * @property {boolean=} opensInNewTab Whether link should open in a new browser\n * tab. This value is only assigned if not\n * providing a custom `settings` prop.\n */\n\n/* eslint-disable jsdoc/valid-types */\n/**\n * Custom settings values associated with a link.\n *\n * @typedef {{[setting:string]:any}} WPLinkControlSettingsValue\n */\n/* eslint-enable */\n\n/**\n * Custom settings values associated with a link.\n *\n * @typedef WPLinkControlSetting\n *\n * @property {string} id Identifier to use as property for setting value.\n * @property {string} title Human-readable label to show in user interface.\n */\n\n/**\n * Properties associated with a link control value, composed as a union of the\n * default properties and any custom settings values.\n *\n * @typedef {WPLinkControlDefaultValue&WPLinkControlSettingsValue} WPLinkControlValue\n */\n\n/** @typedef {(nextValue:WPLinkControlValue)=>void} WPLinkControlOnChangeProp */\n\n/**\n * Properties associated with a search suggestion used within the LinkControl.\n *\n * @typedef WPLinkControlSuggestion\n *\n * @property {string} id Identifier to use to uniquely identify the suggestion.\n * @property {string} type Identifies the type of the suggestion (eg: `post`,\n * `page`, `url`...etc)\n * @property {string} title Human-readable label to show in user interface.\n * @property {string} url A URL for the suggestion.\n */\n\n/** @typedef {(title:string)=>WPLinkControlSuggestion} WPLinkControlCreateSuggestionProp */\n\n/**\n * @typedef WPLinkControlProps\n *\n * @property {(WPLinkControlSetting[])=} settings An array of settings objects. Each object will used to\n * render a `ToggleControl` for that setting.\n * @property {boolean=} forceIsEditingLink If passed as either `true` or `false`, controls the\n * internal editing state of the component to respective\n * show or not show the URL input field.\n * @property {WPLinkControlValue=} value Current link value.\n * @property {WPLinkControlOnChangeProp=} onChange Value change handler, called with the updated value if\n * the user selects a new link or updates settings.\n * @property {boolean=} noDirectEntry Whether to allow turning a URL-like search query directly into a link.\n * @property {boolean=} showSuggestions Whether to present suggestions when typing the URL.\n * @property {boolean=} showInitialSuggestions Whether to present initial suggestions immediately.\n * @property {boolean=} withCreateSuggestion Whether to allow creation of link value from suggestion.\n * @property {Object=} suggestionsQuery Query parameters to pass along to wp.blockEditor.__experimentalFetchLinkSuggestions.\n * @property {boolean=} noURLSuggestion Whether to add a fallback suggestion which treats the search query as a URL.\n * @property {boolean=} hasTextControl Whether to add a text field to the UI to update the value.title.\n * @property {string|Function|undefined} createSuggestionButtonText The text to use in the button that calls createSuggestion.\n * @property {Function} renderControlBottom Optional controls to be rendered at the bottom of the component.\n */\n\nconst noop = () => {};\n\nconst PREFERENCE_SCOPE = 'core/block-editor';\nconst PREFERENCE_KEY = 'linkControlSettingsDrawer';\n\n/**\n * Renders a link control. A link control is a controlled input which maintains\n * a value associated with a link (HTML anchor element) and relevant settings\n * for how that link is expected to behave.\n *\n * @param {WPLinkControlProps} props Component props.\n */\nfunction LinkControl( {\n\tsearchInputPlaceholder,\n\tvalue,\n\tsettings = DEFAULT_LINK_SETTINGS,\n\tonChange = noop,\n\tonRemove,\n\tonCancel,\n\tnoDirectEntry = false,\n\tshowSuggestions = true,\n\tshowInitialSuggestions,\n\tforceIsEditingLink,\n\tcreateSuggestion,\n\twithCreateSuggestion,\n\tinputValue: propInputValue = '',\n\tsuggestionsQuery = {},\n\tnoURLSuggestion = false,\n\tcreateSuggestionButtonText,\n\thasRichPreviews = false,\n\thasTextControl = false,\n\trenderControlBottom = null,\n} ) {\n\tif ( withCreateSuggestion === undefined && createSuggestion ) {\n\t\twithCreateSuggestion = true;\n\t}\n\n\tconst [ settingsOpen, setSettingsOpen ] = useState( false );\n\n\tconst { advancedSettingsPreference } = useSelect( ( select ) => {\n\t\tconst prefsStore = select( preferencesStore );\n\n\t\treturn {\n\t\t\tadvancedSettingsPreference:\n\t\t\t\tprefsStore.get( PREFERENCE_SCOPE, PREFERENCE_KEY ) ?? false,\n\t\t};\n\t}, [] );\n\n\tconst { set: setPreference } = useDispatch( preferencesStore );\n\n\t/**\n\t * Sets the open/closed state of the Advanced Settings Drawer,\n\t * optionlly persisting the state to the user's preferences.\n\t *\n\t * Note that Block Editor components can be consumed by non-WordPress\n\t * environments which may not have preferences setup.\n\t * Therefore a local state is also used as a fallback.\n\t *\n\t * @param {boolean} prefVal the open/closed state of the Advanced Settings Drawer.\n\t */\n\tconst setSettingsOpenWithPreference = ( prefVal ) => {\n\t\tif ( setPreference ) {\n\t\t\tsetPreference( PREFERENCE_SCOPE, PREFERENCE_KEY, prefVal );\n\t\t}\n\t\tsetSettingsOpen( prefVal );\n\t};\n\n\t// Block Editor components can be consumed by non-WordPress environments\n\t// which may not have these preferences setup.\n\t// Therefore a local state is used as a fallback.\n\tconst isSettingsOpen = advancedSettingsPreference || settingsOpen;\n\n\tconst isMountingRef = useRef( true );\n\tconst wrapperNode = useRef();\n\tconst textInputRef = useRef();\n\tconst isEndingEditWithFocusRef = useRef( false );\n\n\tconst settingsKeys = settings.map( ( { id } ) => id );\n\n\tconst [\n\t\tinternalControlValue,\n\t\tsetInternalControlValue,\n\t\tsetInternalURLInputValue,\n\t\tsetInternalTextInputValue,\n\t\tcreateSetInternalSettingValueHandler,\n\t] = useInternalValue( value );\n\n\tconst valueHasChanges =\n\t\tvalue && ! isShallowEqualObjects( internalControlValue, value );\n\n\tconst [ isEditingLink, setIsEditingLink ] = useState(\n\t\tforceIsEditingLink !== undefined\n\t\t\t? forceIsEditingLink\n\t\t\t: ! value || ! value.url\n\t);\n\n\tconst { createPage, isCreatingPage, errorMessage } =\n\t\tuseCreatePage( createSuggestion );\n\n\tuseEffect( () => {\n\t\tif ( forceIsEditingLink === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tsetIsEditingLink( forceIsEditingLink );\n\t}, [ forceIsEditingLink ] );\n\n\tuseEffect( () => {\n\t\t// We don't auto focus into the Link UI on mount\n\t\t// because otherwise using the keyboard to select text\n\t\t// *within* the link format is not possible.\n\t\tif ( isMountingRef.current ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Scenario - when:\n\t\t// - switching between editable and non editable LinkControl\n\t\t// - clicking on a link\n\t\t// ...then move focus to the *first* element to avoid focus loss\n\t\t// and to ensure focus is *within* the Link UI.\n\t\tconst nextFocusTarget =\n\t\t\tfocus.focusable.find( wrapperNode.current )[ 0 ] ||\n\t\t\twrapperNode.current;\n\n\t\tnextFocusTarget.focus();\n\n\t\tisEndingEditWithFocusRef.current = false;\n\t}, [ isEditingLink, isCreatingPage ] );\n\n\t// The component mounting reference is maintained separately\n\t// to correctly reset values in `StrictMode`.\n\tuseEffect( () => {\n\t\tisMountingRef.current = false;\n\n\t\treturn () => {\n\t\t\tisMountingRef.current = true;\n\t\t};\n\t}, [] );\n\n\tconst hasLinkValue = value?.url?.trim()?.length > 0;\n\n\t/**\n\t * Cancels editing state and marks that focus may need to be restored after\n\t * the next render, if focus was within the wrapper when editing finished.\n\t */\n\tconst stopEditing = () => {\n\t\tisEndingEditWithFocusRef.current = !! wrapperNode.current?.contains(\n\t\t\twrapperNode.current.ownerDocument.activeElement\n\t\t);\n\n\t\tsetIsEditingLink( false );\n\t};\n\n\tconst handleSelectSuggestion = ( updatedValue ) => {\n\t\t// Suggestions may contains \"settings\" values (e.g. `opensInNewTab`)\n\t\t// which should not override any existing settings values set by the\n\t\t// user. This filters out any settings values from the suggestion.\n\t\tconst nonSettingsChanges = Object.keys( updatedValue ).reduce(\n\t\t\t( acc, key ) => {\n\t\t\t\tif ( ! settingsKeys.includes( key ) ) {\n\t\t\t\t\tacc[ key ] = updatedValue[ key ];\n\t\t\t\t}\n\t\t\t\treturn acc;\n\t\t\t},\n\t\t\t{}\n\t\t);\n\n\t\tonChange( {\n\t\t\t...internalControlValue,\n\t\t\t...nonSettingsChanges,\n\t\t\t// As title is not a setting, it must be manually applied\n\t\t\t// in such a way as to preserve the users changes over\n\t\t\t// any \"title\" value provided by the \"suggestion\".\n\t\t\ttitle: internalControlValue?.title || updatedValue?.title,\n\t\t} );\n\n\t\tstopEditing();\n\t};\n\n\tconst handleSubmit = () => {\n\t\tif ( valueHasChanges ) {\n\t\t\t// Submit the original value with new stored values applied\n\t\t\t// on top. URL is a special case as it may also be a prop.\n\t\t\tonChange( {\n\t\t\t\t...value,\n\t\t\t\t...internalControlValue,\n\t\t\t\turl: currentUrlInputValue,\n\t\t\t} );\n\t\t}\n\t\tstopEditing();\n\t};\n\n\tconst handleSubmitWithEnter = ( event ) => {\n\t\tconst { keyCode } = event;\n\n\t\tif (\n\t\t\tkeyCode === ENTER &&\n\t\t\t! currentInputIsEmpty // Disallow submitting empty values.\n\t\t) {\n\t\t\tevent.preventDefault();\n\t\t\thandleSubmit();\n\t\t}\n\t};\n\n\tconst resetInternalValues = () => {\n\t\tsetInternalControlValue( value );\n\t};\n\n\tconst handleCancel = ( event ) => {\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\n\t\t// Ensure that any unsubmitted input changes are reset.\n\t\tresetInternalValues();\n\n\t\tif ( hasLinkValue ) {\n\t\t\t// If there is a link then exist editing mode and show preview.\n\t\t\tstopEditing();\n\t\t} else {\n\t\t\t// If there is no link value, then remove the link entirely.\n\t\t\tonRemove?.();\n\t\t}\n\n\t\tonCancel?.();\n\t};\n\n\tconst currentUrlInputValue =\n\t\tpropInputValue || internalControlValue?.url || '';\n\n\tconst currentInputIsEmpty = ! currentUrlInputValue?.trim()?.length;\n\n\tconst shownUnlinkControl =\n\t\tonRemove && value && ! isEditingLink && ! isCreatingPage;\n\n\tconst showActions = isEditingLink && hasLinkValue;\n\n\t// Only show text control once a URL value has been committed\n\t// and it isn't just empty whitespace.\n\t// See https://github.com/WordPress/gutenberg/pull/33849/#issuecomment-932194927.\n\tconst showTextControl = hasLinkValue && hasTextControl;\n\n\tconst isEditing = ( isEditingLink || ! value ) && ! isCreatingPage;\n\tconst isDisabled = ! valueHasChanges || currentInputIsEmpty;\n\tconst showSettings = !! settings?.length && isEditingLink && hasLinkValue;\n\n\treturn (\n\t\t<div\n\t\t\ttabIndex={ -1 }\n\t\t\tref={ wrapperNode }\n\t\t\tclassName=\"block-editor-link-control\"\n\t\t>\n\t\t\t{ isCreatingPage && (\n\t\t\t\t<div className=\"block-editor-link-control__loading\">\n\t\t\t\t\t<Spinner /> { __( 'Creating' ) }…\n\t\t\t\t</div>\n\t\t\t) }\n\n\t\t\t{ isEditing && (\n\t\t\t\t<>\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={ clsx( {\n\t\t\t\t\t\t\t'block-editor-link-control__search-input-wrapper': true,\n\t\t\t\t\t\t\t'has-text-control': showTextControl,\n\t\t\t\t\t\t\t'has-actions': showActions,\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ showTextControl && (\n\t\t\t\t\t\t\t<TextControl\n\t\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\t\tref={ textInputRef }\n\t\t\t\t\t\t\t\tclassName=\"block-editor-link-control__field block-editor-link-control__text-content\"\n\t\t\t\t\t\t\t\tlabel={ __( 'Text' ) }\n\t\t\t\t\t\t\t\tvalue={ internalControlValue?.title }\n\t\t\t\t\t\t\t\tonChange={ setInternalTextInputValue }\n\t\t\t\t\t\t\t\tonKeyDown={ handleSubmitWithEnter }\n\t\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t<LinkControlSearchInput\n\t\t\t\t\t\t\tcurrentLink={ value }\n\t\t\t\t\t\t\tclassName=\"block-editor-link-control__field block-editor-link-control__search-input\"\n\t\t\t\t\t\t\tplaceholder={ searchInputPlaceholder }\n\t\t\t\t\t\t\tvalue={ currentUrlInputValue }\n\t\t\t\t\t\t\twithCreateSuggestion={ withCreateSuggestion }\n\t\t\t\t\t\t\tonCreateSuggestion={ createPage }\n\t\t\t\t\t\t\tonChange={ setInternalURLInputValue }\n\t\t\t\t\t\t\tonSelect={ handleSelectSuggestion }\n\t\t\t\t\t\t\tshowInitialSuggestions={ showInitialSuggestions }\n\t\t\t\t\t\t\tallowDirectEntry={ ! noDirectEntry }\n\t\t\t\t\t\t\tshowSuggestions={ showSuggestions }\n\t\t\t\t\t\t\tsuggestionsQuery={ suggestionsQuery }\n\t\t\t\t\t\t\twithURLSuggestion={ ! noURLSuggestion }\n\t\t\t\t\t\t\tcreateSuggestionButtonText={\n\t\t\t\t\t\t\t\tcreateSuggestionButtonText\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\thideLabelFromVision={ ! showTextControl }\n\t\t\t\t\t\t\tsuffix={\n\t\t\t\t\t\t\t\tshowActions ? undefined : (\n\t\t\t\t\t\t\t\t\t<InputControlSuffixWrapper variant=\"control\">\n\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\tonClick={\n\t\t\t\t\t\t\t\t\t\t\t\tisDisabled ? noop : handleSubmit\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tlabel={ __( 'Submit' ) }\n\t\t\t\t\t\t\t\t\t\t\ticon={ keyboardReturn }\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"block-editor-link-control__search-submit\"\n\t\t\t\t\t\t\t\t\t\t\taria-disabled={ isDisabled }\n\t\t\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</InputControlSuffixWrapper>\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t\t{ errorMessage && (\n\t\t\t\t\t\t<Notice\n\t\t\t\t\t\t\tclassName=\"block-editor-link-control__search-error\"\n\t\t\t\t\t\t\tstatus=\"error\"\n\t\t\t\t\t\t\tisDismissible={ false }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ errorMessage }\n\t\t\t\t\t\t</Notice>\n\t\t\t\t\t) }\n\t\t\t\t</>\n\t\t\t) }\n\n\t\t\t{ value && ! isEditingLink && ! isCreatingPage && (\n\t\t\t\t<LinkPreview\n\t\t\t\t\tkey={ value?.url } // force remount when URL changes to avoid race conditions for rich previews\n\t\t\t\t\tvalue={ value }\n\t\t\t\t\tonEditClick={ () => setIsEditingLink( true ) }\n\t\t\t\t\thasRichPreviews={ hasRichPreviews }\n\t\t\t\t\thasUnlinkControl={ shownUnlinkControl }\n\t\t\t\t\tonRemove={ () => {\n\t\t\t\t\t\tonRemove();\n\t\t\t\t\t\tsetIsEditingLink( true );\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t) }\n\n\t\t\t{ showSettings && (\n\t\t\t\t<div className=\"block-editor-link-control__tools\">\n\t\t\t\t\t{ ! currentInputIsEmpty && (\n\t\t\t\t\t\t<LinkControlSettingsDrawer\n\t\t\t\t\t\t\tsettingsOpen={ isSettingsOpen }\n\t\t\t\t\t\t\tsetSettingsOpen={ setSettingsOpenWithPreference }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<LinkSettings\n\t\t\t\t\t\t\t\tvalue={ internalControlValue }\n\t\t\t\t\t\t\t\tsettings={ settings }\n\t\t\t\t\t\t\t\tonChange={ createSetInternalSettingValueHandler(\n\t\t\t\t\t\t\t\t\tsettingsKeys\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</LinkControlSettingsDrawer>\n\t\t\t\t\t) }\n\t\t\t\t</div>\n\t\t\t) }\n\n\t\t\t{ showActions && (\n\t\t\t\t<HStack\n\t\t\t\t\tjustify=\"right\"\n\t\t\t\t\tclassName=\"block-editor-link-control__search-actions\"\n\t\t\t\t>\n\t\t\t\t\t<Button\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\tonClick={ handleCancel }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t\t<Button\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\tonClick={ isDisabled ? noop : handleSubmit }\n\t\t\t\t\t\tclassName=\"block-editor-link-control__search-submit\"\n\t\t\t\t\t\taria-disabled={ isDisabled }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Apply' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t</HStack>\n\t\t\t) }\n\n\t\t\t{ ! isCreatingPage && renderControlBottom && renderControlBottom() }\n\t\t</div>\n\t);\n}\n\nLinkControl.ViewerFill = ViewerFill;\nLinkControl.DEFAULT_LINK_SETTINGS = DEFAULT_LINK_SETTINGS;\n\nconst DeprecatedExperimentalLinkControl = ( props ) => {\n\tdeprecated( 'wp.blockEditor.__experimentalLinkControl', {\n\t\tsince: '6.8',\n\t\talternative: 'wp.blockEditor.LinkControl',\n\t} );\n\n\treturn <LinkControl { ...props } />;\n};\n\nDeprecatedExperimentalLinkControl.ViewerFill = LinkControl.ViewerFill;\nDeprecatedExperimentalLinkControl.DEFAULT_LINK_SETTINGS =\n\tLinkControl.DEFAULT_LINK_SETTINGS;\n\nexport { DeprecatedExperimentalLinkControl };\nexport default LinkControl;\n"],"mappings":"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","ignoreList":[]}
@@ -8,9 +8,10 @@ import clsx from 'clsx';
8
8
  */
9
9
  import { __experimentalHStack as HStack, __experimentalTruncate as Truncate, privateApis as componentsPrivateApis } from '@wordpress/components';
10
10
  import { forwardRef } from '@wordpress/element';
11
- import { Icon, lockSmall as lock, pinSmall } from '@wordpress/icons';
11
+ import { Icon, lockSmall as lock, pinSmall, unseen } from '@wordpress/icons';
12
12
  import { SPACE, ENTER } from '@wordpress/keycodes';
13
13
  import { useSelect } from '@wordpress/data';
14
+ import { hasBlockSupport } from '@wordpress/blocks';
14
15
 
15
16
  /**
16
17
  * Internal dependencies
@@ -53,11 +54,24 @@ function ListViewBlockSelectButton({
53
54
  isLocked
54
55
  } = useBlockLock(clientId);
55
56
  const {
57
+ canToggleBlockVisibility,
58
+ isBlockHidden,
56
59
  isContentOnly
57
- } = useSelect(select => ({
58
- isContentOnly: select(blockEditorStore).getBlockEditingMode(clientId) === 'contentOnly'
59
- }), [clientId]);
60
+ } = useSelect(select => {
61
+ const {
62
+ getBlockName
63
+ } = select(blockEditorStore);
64
+ const {
65
+ isBlockHidden: _isBlockHidden
66
+ } = unlock(select(blockEditorStore));
67
+ return {
68
+ canToggleBlockVisibility: hasBlockSupport(getBlockName(clientId), 'blockVisibility', true),
69
+ isBlockHidden: _isBlockHidden(clientId),
70
+ isContentOnly: select(blockEditorStore).getBlockEditingMode(clientId) === 'contentOnly'
71
+ };
72
+ }, [clientId]);
60
73
  const shouldShowLockIcon = isLocked && !isContentOnly;
74
+ const shouldShowBlockVisibilityIcon = canToggleBlockVisibility && isBlockHidden;
61
75
  const isSticky = blockInformation?.positionType === 'sticky';
62
76
  const images = useListViewImages({
63
77
  clientId,
@@ -134,7 +148,12 @@ function ListViewBlockSelectButton({
134
148
  zIndex: images.length - index // Ensure the first image is on top, and subsequent images are behind.
135
149
  }
136
150
  }, image.clientId))
137
- }) : null, shouldShowLockIcon && /*#__PURE__*/_jsx("span", {
151
+ }) : null, shouldShowBlockVisibilityIcon && /*#__PURE__*/_jsx("span", {
152
+ className: "block-editor-list-view-block-select-button__block-visibility",
153
+ children: /*#__PURE__*/_jsx(Icon, {
154
+ icon: unseen
155
+ })
156
+ }), shouldShowLockIcon && /*#__PURE__*/_jsx("span", {
138
157
  className: "block-editor-list-view-block-select-button__lock",
139
158
  children: /*#__PURE__*/_jsx(Icon, {
140
159
  icon: lock