@wordpress/block-editor 8.6.0 → 9.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +7 -0
- package/README.md +4 -2
- package/build/components/block-alignment-control/constants.js +48 -0
- package/build/components/block-alignment-control/constants.js.map +1 -0
- package/build/components/block-alignment-control/ui.js +9 -40
- package/build/components/block-alignment-control/ui.js.map +1 -1
- package/build/components/block-alignment-control/ui.native.js +92 -0
- package/build/components/block-alignment-control/ui.native.js.map +1 -0
- package/build/components/block-list/use-block-props/use-block-class-names.js +1 -7
- package/build/components/block-list/use-block-props/use-block-class-names.js.map +1 -1
- package/build/components/block-navigation/dropdown.js +11 -5
- package/build/components/block-navigation/dropdown.js.map +1 -1
- package/build/components/block-popover/index.js +20 -5
- package/build/components/block-popover/index.js.map +1 -1
- package/build/components/color-style-selector/index.js +9 -0
- package/build/components/color-style-selector/index.js.map +1 -1
- package/build/components/index.js +0 -9
- package/build/components/index.js.map +1 -1
- package/build/components/inserter/index.js +21 -7
- package/build/components/inserter/index.js.map +1 -1
- package/build/components/inserter/index.native.js +1 -1
- package/build/components/inserter/index.native.js.map +1 -1
- package/build/components/inserter/quick-inserter.js +4 -5
- package/build/components/inserter/quick-inserter.js.map +1 -1
- package/build/components/list-view/block.js +15 -15
- package/build/components/list-view/block.js.map +1 -1
- package/build/components/list-view/branch.js +9 -13
- package/build/components/list-view/branch.js.map +1 -1
- package/build/components/list-view/context.js +1 -4
- package/build/components/list-view/context.js.map +1 -1
- package/build/components/list-view/index.js +15 -32
- package/build/components/list-view/index.js.map +1 -1
- package/build/components/url-input/index.js +7 -3
- package/build/components/url-input/index.js.map +1 -1
- package/build/components/use-setting/index.js +42 -18
- package/build/components/use-setting/index.js.map +1 -1
- package/build/components/writing-flow/use-click-selection.js +1 -3
- package/build/components/writing-flow/use-click-selection.js.map +1 -1
- package/build/components/writing-flow/use-selection-observer.js +49 -8
- package/build/components/writing-flow/use-selection-observer.js.map +1 -1
- package/build/hooks/dimensions.js +2 -2
- package/build/hooks/dimensions.js.map +1 -1
- package/build/hooks/index.js +2 -0
- package/build/hooks/index.js.map +1 -1
- package/build/hooks/margin.js +64 -12
- package/build/hooks/margin.js.map +1 -1
- package/build/hooks/padding.js +60 -12
- package/build/hooks/padding.js.map +1 -1
- package/build/hooks/settings.js +32 -0
- package/build/hooks/settings.js.map +1 -0
- package/build/store/defaults.js +0 -1
- package/build/store/defaults.js.map +1 -1
- package/build/store/selectors.js +14 -12
- package/build/store/selectors.js.map +1 -1
- package/build-module/components/block-alignment-control/constants.js +36 -0
- package/build-module/components/block-alignment-control/constants.js.map +1 -0
- package/build-module/components/block-alignment-control/ui.js +4 -35
- package/build-module/components/block-alignment-control/ui.js.map +1 -1
- package/build-module/components/block-alignment-control/ui.native.js +78 -0
- package/build-module/components/block-alignment-control/ui.native.js.map +1 -0
- package/build-module/components/block-list/use-block-props/use-block-class-names.js +1 -7
- package/build-module/components/block-list/use-block-props/use-block-class-names.js.map +1 -1
- package/build-module/components/block-navigation/dropdown.js +10 -5
- package/build-module/components/block-navigation/dropdown.js.map +1 -1
- package/build-module/components/block-popover/index.js +21 -5
- package/build-module/components/block-popover/index.js.map +1 -1
- package/build-module/components/color-style-selector/index.js +6 -0
- package/build-module/components/color-style-selector/index.js.map +1 -1
- package/build-module/components/index.js +0 -1
- package/build-module/components/index.js.map +1 -1
- package/build-module/components/inserter/index.js +21 -7
- package/build-module/components/inserter/index.js.map +1 -1
- package/build-module/components/inserter/index.native.js +1 -1
- package/build-module/components/inserter/index.native.js.map +1 -1
- package/build-module/components/inserter/quick-inserter.js +4 -5
- package/build-module/components/inserter/quick-inserter.js.map +1 -1
- package/build-module/components/list-view/block.js +15 -16
- package/build-module/components/list-view/block.js.map +1 -1
- package/build-module/components/list-view/branch.js +9 -13
- package/build-module/components/list-view/branch.js.map +1 -1
- package/build-module/components/list-view/context.js +1 -4
- package/build-module/components/list-view/context.js.map +1 -1
- package/build-module/components/list-view/index.js +15 -31
- package/build-module/components/list-view/index.js.map +1 -1
- package/build-module/components/url-input/index.js +7 -3
- package/build-module/components/url-input/index.js.map +1 -1
- package/build-module/components/use-setting/index.js +43 -19
- package/build-module/components/use-setting/index.js.map +1 -1
- package/build-module/components/writing-flow/use-click-selection.js +1 -3
- package/build-module/components/writing-flow/use-click-selection.js.map +1 -1
- package/build-module/components/writing-flow/use-selection-observer.js +49 -8
- package/build-module/components/writing-flow/use-selection-observer.js.map +1 -1
- package/build-module/hooks/dimensions.js +5 -5
- package/build-module/hooks/dimensions.js.map +1 -1
- package/build-module/hooks/index.js +1 -0
- package/build-module/hooks/index.js.map +1 -1
- package/build-module/hooks/margin.js +61 -13
- package/build-module/hooks/margin.js.map +1 -1
- package/build-module/hooks/padding.js +57 -13
- package/build-module/hooks/padding.js.map +1 -1
- package/build-module/hooks/settings.js +29 -0
- package/build-module/hooks/settings.js.map +1 -0
- package/build-module/store/defaults.js +0 -1
- package/build-module/store/defaults.js.map +1 -1
- package/build-module/store/selectors.js +14 -12
- package/build-module/store/selectors.js.map +1 -1
- package/build-style/style-rtl.css +17 -31
- package/build-style/style.css +17 -31
- package/package.json +28 -28
- package/src/components/block-alignment-control/constants.js +45 -0
- package/src/components/block-alignment-control/ui.js +69 -109
- package/src/components/block-alignment-control/ui.native.js +86 -0
- package/src/components/block-content-overlay/style.scss +0 -1
- package/src/components/block-list/style.scss +7 -18
- package/src/components/block-list/use-block-props/use-block-class-names.js +1 -11
- package/src/components/block-navigation/dropdown.js +12 -8
- package/src/components/block-popover/index.js +20 -3
- package/src/components/block-popover/style.scss +3 -0
- package/src/components/color-palette/test/__snapshots__/control.js.snap +1 -1
- package/src/components/color-style-selector/index.js +18 -9
- package/src/components/image-size-control/README.md +1 -1
- package/src/components/index.js +0 -1
- package/src/components/inserter/index.js +20 -0
- package/src/components/inserter/index.native.js +1 -1
- package/src/components/inserter/quick-inserter.js +3 -11
- package/src/components/inserter/style.native.scss +1 -0
- package/src/components/list-view/block.js +24 -34
- package/src/components/list-view/branch.js +10 -20
- package/src/components/list-view/context.js +1 -4
- package/src/components/list-view/index.js +11 -41
- package/src/components/url-input/index.js +6 -3
- package/src/components/use-setting/index.js +57 -21
- package/src/components/writing-flow/use-click-selection.js +1 -4
- package/src/components/writing-flow/use-selection-observer.js +55 -10
- package/src/hooks/dimensions.js +44 -38
- package/src/hooks/index.js +1 -0
- package/src/hooks/margin.js +64 -15
- package/src/hooks/padding.js +60 -15
- package/src/hooks/padding.scss +12 -0
- package/src/hooks/settings.js +32 -0
- package/src/hooks/test/settings.js +48 -0
- package/src/store/defaults.js +0 -1
- package/src/store/selectors.js +14 -12
- package/src/store/test/selectors.js +17 -0
- package/src/style.scss +1 -1
- package/tsconfig.tsbuildinfo +1 -1
- package/build/components/border-style-control/index.js +0 -60
- package/build/components/border-style-control/index.js.map +0 -1
- package/build-module/components/border-style-control/index.js +0 -50
- package/build-module/components/border-style-control/index.js.map +0 -1
- package/src/components/border-style-control/index.js +0 -47
- package/src/components/border-style-control/style.scss +0 -18
|
@@ -33,13 +33,16 @@ const defaultRenderToggle = _ref => {
|
|
|
33
33
|
isOpen,
|
|
34
34
|
blockTitle,
|
|
35
35
|
hasSingleBlockType,
|
|
36
|
-
toggleProps = {}
|
|
36
|
+
toggleProps = {},
|
|
37
|
+
prioritizePatterns
|
|
37
38
|
} = _ref;
|
|
38
39
|
let label;
|
|
39
40
|
|
|
40
41
|
if (hasSingleBlockType) {
|
|
41
42
|
label = sprintf( // translators: %s: the name of the block when there is only one
|
|
42
43
|
_x('Add %s', 'directly add the only allowed block'), blockTitle);
|
|
44
|
+
} else if (prioritizePatterns) {
|
|
45
|
+
label = __('Add pattern');
|
|
43
46
|
} else {
|
|
44
47
|
label = _x('Add block', 'Generic label for block inserter button');
|
|
45
48
|
}
|
|
@@ -112,7 +115,8 @@ class Inserter extends Component {
|
|
|
112
115
|
directInsertBlock,
|
|
113
116
|
toggleProps,
|
|
114
117
|
hasItems,
|
|
115
|
-
renderToggle = defaultRenderToggle
|
|
118
|
+
renderToggle = defaultRenderToggle,
|
|
119
|
+
prioritizePatterns
|
|
116
120
|
} = this.props;
|
|
117
121
|
return renderToggle({
|
|
118
122
|
onToggle,
|
|
@@ -121,7 +125,8 @@ class Inserter extends Component {
|
|
|
121
125
|
blockTitle,
|
|
122
126
|
hasSingleBlockType,
|
|
123
127
|
directInsertBlock,
|
|
124
|
-
toggleProps
|
|
128
|
+
toggleProps,
|
|
129
|
+
prioritizePatterns
|
|
125
130
|
});
|
|
126
131
|
}
|
|
127
132
|
/**
|
|
@@ -146,7 +151,8 @@ class Inserter extends Component {
|
|
|
146
151
|
showInserterHelpPanel,
|
|
147
152
|
// This prop is experimental to give some time for the quick inserter to mature
|
|
148
153
|
// Feel free to make them stable after a few releases.
|
|
149
|
-
__experimentalIsQuick: isQuick
|
|
154
|
+
__experimentalIsQuick: isQuick,
|
|
155
|
+
prioritizePatterns
|
|
150
156
|
} = this.props;
|
|
151
157
|
|
|
152
158
|
if (isQuick) {
|
|
@@ -156,7 +162,8 @@ class Inserter extends Component {
|
|
|
156
162
|
},
|
|
157
163
|
rootClientId: rootClientId,
|
|
158
164
|
clientId: clientId,
|
|
159
|
-
isAppender: isAppender
|
|
165
|
+
isAppender: isAppender,
|
|
166
|
+
prioritizePatterns: prioritizePatterns
|
|
160
167
|
});
|
|
161
168
|
}
|
|
162
169
|
|
|
@@ -213,7 +220,10 @@ export default compose([withSelect((select, _ref4) => {
|
|
|
213
220
|
getBlockRootClientId,
|
|
214
221
|
hasInserterItems,
|
|
215
222
|
__experimentalGetAllowedBlocks,
|
|
216
|
-
__experimentalGetDirectInsertBlock
|
|
223
|
+
__experimentalGetDirectInsertBlock,
|
|
224
|
+
getBlockIndex,
|
|
225
|
+
getBlockCount,
|
|
226
|
+
getSettings
|
|
217
227
|
} = select(blockEditorStore);
|
|
218
228
|
const {
|
|
219
229
|
getBlockVariations
|
|
@@ -224,6 +234,9 @@ export default compose([withSelect((select, _ref4) => {
|
|
|
224
234
|
|
|
225
235
|
const directInsertBlock = __experimentalGetDirectInsertBlock(rootClientId);
|
|
226
236
|
|
|
237
|
+
const index = getBlockIndex(clientId);
|
|
238
|
+
const blockCount = getBlockCount();
|
|
239
|
+
const settings = getSettings();
|
|
227
240
|
const hasSingleBlockType = size(allowedBlocks) === 1 && size(getBlockVariations(allowedBlocks[0].name, 'inserter')) === 0;
|
|
228
241
|
let allowedBlockType = false;
|
|
229
242
|
|
|
@@ -237,7 +250,8 @@ export default compose([withSelect((select, _ref4) => {
|
|
|
237
250
|
blockTitle: allowedBlockType ? allowedBlockType.title : '',
|
|
238
251
|
allowedBlockType,
|
|
239
252
|
directInsertBlock,
|
|
240
|
-
rootClientId
|
|
253
|
+
rootClientId,
|
|
254
|
+
prioritizePatterns: settings.__experimentalPreferPatternsOnRoot && !rootClientId && index > 0 && (index < blockCount || blockCount === 0)
|
|
241
255
|
};
|
|
242
256
|
}), withDispatch((dispatch, ownProps, _ref5) => {
|
|
243
257
|
let {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/inserter/index.js"],"names":["size","classnames","speak","__","_x","sprintf","Dropdown","Button","Component","withDispatch","withSelect","compose","ifCondition","createBlock","store","blocksStore","plus","InserterMenu","QuickInserter","blockEditorStore","defaultRenderToggle","onToggle","disabled","isOpen","blockTitle","hasSingleBlockType","toggleProps","label","onClick","rest","handleClick","event","Inserter","constructor","arguments","bind","renderToggle","renderContent","props","directInsertBlock","hasItems","onClose","rootClientId","clientId","isAppender","showInserterHelpPanel","__experimentalIsQuick","isQuick","render","position","insertOnlyAllowedBlock","onSelectOrClose","select","getBlockRootClientId","hasInserterItems","__experimentalGetAllowedBlocks","__experimentalGetDirectInsertBlock","getBlockVariations","undefined","allowedBlocks","name","allowedBlockType","title","dispatch","ownProps","getAdjacentBlockAttributes","attributesToCopy","getBlock","getPreviousBlockClientId","result","adjacentAttributes","parentBlock","innerBlocks","length","lastInnerBlock","attributes","currentBlock","previousBlock","forEach","attribute","hasOwnProperty","getInsertionIndex","getBlockIndex","getBlockSelectionEnd","getBlockOrder","end","insertBlock","blockToInsert","newAttributes","message"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { size } from 'lodash';\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { speak } from '@wordpress/a11y';\nimport { __, _x, sprintf } from '@wordpress/i18n';\nimport { Dropdown, Button } from '@wordpress/components';\nimport { Component } from '@wordpress/element';\nimport { withDispatch, withSelect } from '@wordpress/data';\nimport { compose, ifCondition } from '@wordpress/compose';\nimport { createBlock, store as blocksStore } from '@wordpress/blocks';\nimport { plus } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport InserterMenu from './menu';\nimport QuickInserter from './quick-inserter';\nimport { store as blockEditorStore } from '../../store';\n\nconst defaultRenderToggle = ( {\n\tonToggle,\n\tdisabled,\n\tisOpen,\n\tblockTitle,\n\thasSingleBlockType,\n\ttoggleProps = {},\n} ) => {\n\tlet label;\n\tif ( hasSingleBlockType ) {\n\t\tlabel = sprintf(\n\t\t\t// translators: %s: the name of the block when there is only one\n\t\t\t_x( 'Add %s', 'directly add the only allowed block' ),\n\t\t\tblockTitle\n\t\t);\n\t} else {\n\t\tlabel = _x( 'Add block', 'Generic label for block inserter button' );\n\t}\n\n\tconst { onClick, ...rest } = toggleProps;\n\n\t// Handle both onClick functions from the toggle and the parent component.\n\tfunction handleClick( event ) {\n\t\tif ( onToggle ) {\n\t\t\tonToggle( event );\n\t\t}\n\t\tif ( onClick ) {\n\t\t\tonClick( event );\n\t\t}\n\t}\n\n\treturn (\n\t\t<Button\n\t\t\ticon={ plus }\n\t\t\tlabel={ label }\n\t\t\ttooltipPosition=\"bottom\"\n\t\t\tonClick={ handleClick }\n\t\t\tclassName=\"block-editor-inserter__toggle\"\n\t\t\taria-haspopup={ ! hasSingleBlockType ? 'true' : false }\n\t\t\taria-expanded={ ! hasSingleBlockType ? isOpen : false }\n\t\t\tdisabled={ disabled }\n\t\t\t{ ...rest }\n\t\t/>\n\t);\n};\n\nclass Inserter extends Component {\n\tconstructor() {\n\t\tsuper( ...arguments );\n\n\t\tthis.onToggle = this.onToggle.bind( this );\n\t\tthis.renderToggle = this.renderToggle.bind( this );\n\t\tthis.renderContent = this.renderContent.bind( this );\n\t}\n\n\tonToggle( isOpen ) {\n\t\tconst { onToggle } = this.props;\n\n\t\t// Surface toggle callback to parent component.\n\t\tif ( onToggle ) {\n\t\t\tonToggle( isOpen );\n\t\t}\n\t}\n\n\t/**\n\t * Render callback to display Dropdown toggle element.\n\t *\n\t * @param {Object} options\n\t * @param {Function} options.onToggle Callback to invoke when toggle is\n\t * pressed.\n\t * @param {boolean} options.isOpen Whether dropdown is currently open.\n\t *\n\t * @return {WPElement} Dropdown toggle element.\n\t */\n\trenderToggle( { onToggle, isOpen } ) {\n\t\tconst {\n\t\t\tdisabled,\n\t\t\tblockTitle,\n\t\t\thasSingleBlockType,\n\t\t\tdirectInsertBlock,\n\t\t\ttoggleProps,\n\t\t\thasItems,\n\t\t\trenderToggle = defaultRenderToggle,\n\t\t} = this.props;\n\n\t\treturn renderToggle( {\n\t\t\tonToggle,\n\t\t\tisOpen,\n\t\t\tdisabled: disabled || ! hasItems,\n\t\t\tblockTitle,\n\t\t\thasSingleBlockType,\n\t\t\tdirectInsertBlock,\n\t\t\ttoggleProps,\n\t\t} );\n\t}\n\n\t/**\n\t * Render callback to display Dropdown content element.\n\t *\n\t * @param {Object} options\n\t * @param {Function} options.onClose Callback to invoke when dropdown is\n\t * closed.\n\t *\n\t * @return {WPElement} Dropdown content element.\n\t */\n\trenderContent( { onClose } ) {\n\t\tconst {\n\t\t\trootClientId,\n\t\t\tclientId,\n\t\t\tisAppender,\n\t\t\tshowInserterHelpPanel,\n\n\t\t\t// This prop is experimental to give some time for the quick inserter to mature\n\t\t\t// Feel free to make them stable after a few releases.\n\t\t\t__experimentalIsQuick: isQuick,\n\t\t} = this.props;\n\n\t\tif ( isQuick ) {\n\t\t\treturn (\n\t\t\t\t<QuickInserter\n\t\t\t\t\tonSelect={ () => {\n\t\t\t\t\t\tonClose();\n\t\t\t\t\t} }\n\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\tisAppender={ isAppender }\n\t\t\t\t/>\n\t\t\t);\n\t\t}\n\n\t\treturn (\n\t\t\t<InserterMenu\n\t\t\t\tonSelect={ () => {\n\t\t\t\t\tonClose();\n\t\t\t\t} }\n\t\t\t\trootClientId={ rootClientId }\n\t\t\t\tclientId={ clientId }\n\t\t\t\tisAppender={ isAppender }\n\t\t\t\tshowInserterHelpPanel={ showInserterHelpPanel }\n\t\t\t/>\n\t\t);\n\t}\n\n\trender() {\n\t\tconst {\n\t\t\tposition,\n\t\t\thasSingleBlockType,\n\t\t\tdirectInsertBlock,\n\t\t\tinsertOnlyAllowedBlock,\n\t\t\t__experimentalIsQuick: isQuick,\n\t\t\tonSelectOrClose,\n\t\t} = this.props;\n\n\t\tif ( hasSingleBlockType || directInsertBlock ) {\n\t\t\treturn this.renderToggle( { onToggle: insertOnlyAllowedBlock } );\n\t\t}\n\n\t\treturn (\n\t\t\t<Dropdown\n\t\t\t\tclassName=\"block-editor-inserter\"\n\t\t\t\tcontentClassName={ classnames(\n\t\t\t\t\t'block-editor-inserter__popover',\n\t\t\t\t\t{ 'is-quick': isQuick }\n\t\t\t\t) }\n\t\t\t\tposition={ position }\n\t\t\t\tonToggle={ this.onToggle }\n\t\t\t\texpandOnMobile\n\t\t\t\theaderTitle={ __( 'Add a block' ) }\n\t\t\t\trenderToggle={ this.renderToggle }\n\t\t\t\trenderContent={ this.renderContent }\n\t\t\t\tonClose={ onSelectOrClose }\n\t\t\t/>\n\t\t);\n\t}\n}\n\nexport default compose( [\n\twithSelect( ( select, { clientId, rootClientId } ) => {\n\t\tconst {\n\t\t\tgetBlockRootClientId,\n\t\t\thasInserterItems,\n\t\t\t__experimentalGetAllowedBlocks,\n\t\t\t__experimentalGetDirectInsertBlock,\n\t\t} = select( blockEditorStore );\n\t\tconst { getBlockVariations } = select( blocksStore );\n\n\t\trootClientId =\n\t\t\trootClientId || getBlockRootClientId( clientId ) || undefined;\n\n\t\tconst allowedBlocks = __experimentalGetAllowedBlocks( rootClientId );\n\n\t\tconst directInsertBlock = __experimentalGetDirectInsertBlock(\n\t\t\trootClientId\n\t\t);\n\n\t\tconst hasSingleBlockType =\n\t\t\tsize( allowedBlocks ) === 1 &&\n\t\t\tsize(\n\t\t\t\tgetBlockVariations( allowedBlocks[ 0 ].name, 'inserter' )\n\t\t\t) === 0;\n\n\t\tlet allowedBlockType = false;\n\t\tif ( hasSingleBlockType ) {\n\t\t\tallowedBlockType = allowedBlocks[ 0 ];\n\t\t}\n\n\t\treturn {\n\t\t\thasItems: hasInserterItems( rootClientId ),\n\t\t\thasSingleBlockType,\n\t\t\tblockTitle: allowedBlockType ? allowedBlockType.title : '',\n\t\t\tallowedBlockType,\n\t\t\tdirectInsertBlock,\n\t\t\trootClientId,\n\t\t};\n\t} ),\n\twithDispatch( ( dispatch, ownProps, { select } ) => {\n\t\treturn {\n\t\t\tinsertOnlyAllowedBlock() {\n\t\t\t\tconst {\n\t\t\t\t\trootClientId,\n\t\t\t\t\tclientId,\n\t\t\t\t\tisAppender,\n\t\t\t\t\thasSingleBlockType,\n\t\t\t\t\tallowedBlockType,\n\t\t\t\t\tdirectInsertBlock,\n\t\t\t\t\tonSelectOrClose,\n\t\t\t\t} = ownProps;\n\n\t\t\t\tif ( ! hasSingleBlockType && ! directInsertBlock ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tfunction getAdjacentBlockAttributes( attributesToCopy ) {\n\t\t\t\t\tconst { getBlock, getPreviousBlockClientId } = select(\n\t\t\t\t\t\tblockEditorStore\n\t\t\t\t\t);\n\n\t\t\t\t\tif (\n\t\t\t\t\t\t! attributesToCopy ||\n\t\t\t\t\t\t( ! clientId && ! rootClientId )\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn {};\n\t\t\t\t\t}\n\n\t\t\t\t\tconst result = {};\n\t\t\t\t\tlet adjacentAttributes = {};\n\n\t\t\t\t\t// If there is no clientId, then attempt to get attributes\n\t\t\t\t\t// from the last block within innerBlocks of the root block.\n\t\t\t\t\tif ( ! clientId ) {\n\t\t\t\t\t\tconst parentBlock = getBlock( rootClientId );\n\n\t\t\t\t\t\tif ( parentBlock?.innerBlocks?.length ) {\n\t\t\t\t\t\t\tconst lastInnerBlock =\n\t\t\t\t\t\t\t\tparentBlock.innerBlocks[\n\t\t\t\t\t\t\t\t\tparentBlock.innerBlocks.length - 1\n\t\t\t\t\t\t\t\t];\n\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tdirectInsertBlock &&\n\t\t\t\t\t\t\t\tdirectInsertBlock?.name === lastInnerBlock.name\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tadjacentAttributes = lastInnerBlock.attributes;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Otherwise, attempt to get attributes from the\n\t\t\t\t\t\t// previous block relative to the current clientId.\n\t\t\t\t\t\tconst currentBlock = getBlock( clientId );\n\t\t\t\t\t\tconst previousBlock = getBlock(\n\t\t\t\t\t\t\tgetPreviousBlockClientId( clientId )\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tif ( currentBlock?.name === previousBlock?.name ) {\n\t\t\t\t\t\t\tadjacentAttributes =\n\t\t\t\t\t\t\t\tpreviousBlock?.attributes || {};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Copy over only those attributes flagged to be copied.\n\t\t\t\t\tattributesToCopy.forEach( ( attribute ) => {\n\t\t\t\t\t\tif ( adjacentAttributes.hasOwnProperty( attribute ) ) {\n\t\t\t\t\t\t\tresult[ attribute ] =\n\t\t\t\t\t\t\t\tadjacentAttributes[ attribute ];\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tfunction getInsertionIndex() {\n\t\t\t\t\tconst {\n\t\t\t\t\t\tgetBlockIndex,\n\t\t\t\t\t\tgetBlockSelectionEnd,\n\t\t\t\t\t\tgetBlockOrder,\n\t\t\t\t\t\tgetBlockRootClientId,\n\t\t\t\t\t} = select( blockEditorStore );\n\n\t\t\t\t\t// If the clientId is defined, we insert at the position of the block.\n\t\t\t\t\tif ( clientId ) {\n\t\t\t\t\t\treturn getBlockIndex( clientId );\n\t\t\t\t\t}\n\n\t\t\t\t\t// If there a selected block, we insert after the selected block.\n\t\t\t\t\tconst end = getBlockSelectionEnd();\n\t\t\t\t\tif (\n\t\t\t\t\t\t! isAppender &&\n\t\t\t\t\t\tend &&\n\t\t\t\t\t\tgetBlockRootClientId( end ) === rootClientId\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn getBlockIndex( end ) + 1;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Otherwise, we insert at the end of the current rootClientId.\n\t\t\t\t\treturn getBlockOrder( rootClientId ).length;\n\t\t\t\t}\n\n\t\t\t\tconst { insertBlock } = dispatch( blockEditorStore );\n\n\t\t\t\tlet blockToInsert;\n\n\t\t\t\t// Attempt to augment the directInsertBlock with attributes from an adjacent block.\n\t\t\t\t// This ensures styling from nearby blocks is preserved in the newly inserted block.\n\t\t\t\t// See: https://github.com/WordPress/gutenberg/issues/37904\n\t\t\t\tif ( directInsertBlock ) {\n\t\t\t\t\tconst newAttributes = getAdjacentBlockAttributes(\n\t\t\t\t\t\tdirectInsertBlock.attributesToCopy\n\t\t\t\t\t);\n\n\t\t\t\t\tblockToInsert = createBlock( directInsertBlock.name, {\n\t\t\t\t\t\t...( directInsertBlock.attributes || {} ),\n\t\t\t\t\t\t...newAttributes,\n\t\t\t\t\t} );\n\t\t\t\t} else {\n\t\t\t\t\tblockToInsert = createBlock( allowedBlockType.name );\n\t\t\t\t}\n\n\t\t\t\tinsertBlock( blockToInsert, getInsertionIndex(), rootClientId );\n\n\t\t\t\tif ( onSelectOrClose ) {\n\t\t\t\t\tonSelectOrClose();\n\t\t\t\t}\n\n\t\t\t\tconst message = sprintf(\n\t\t\t\t\t// translators: %s: the name of the block that has been added\n\t\t\t\t\t__( '%s block added' ),\n\t\t\t\t\tallowedBlockType.title\n\t\t\t\t);\n\t\t\t\tspeak( message );\n\t\t\t},\n\t\t};\n\t} ),\n\t// The global inserter should always be visible, we are using ( ! isAppender && ! rootClientId && ! clientId ) as\n\t// a way to detect the global Inserter.\n\tifCondition(\n\t\t( { hasItems, isAppender, rootClientId, clientId } ) =>\n\t\t\thasItems || ( ! isAppender && ! rootClientId && ! clientId )\n\t),\n] )( Inserter );\n"]}
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/inserter/index.js"],"names":["size","classnames","speak","__","_x","sprintf","Dropdown","Button","Component","withDispatch","withSelect","compose","ifCondition","createBlock","store","blocksStore","plus","InserterMenu","QuickInserter","blockEditorStore","defaultRenderToggle","onToggle","disabled","isOpen","blockTitle","hasSingleBlockType","toggleProps","prioritizePatterns","label","onClick","rest","handleClick","event","Inserter","constructor","arguments","bind","renderToggle","renderContent","props","directInsertBlock","hasItems","onClose","rootClientId","clientId","isAppender","showInserterHelpPanel","__experimentalIsQuick","isQuick","render","position","insertOnlyAllowedBlock","onSelectOrClose","select","getBlockRootClientId","hasInserterItems","__experimentalGetAllowedBlocks","__experimentalGetDirectInsertBlock","getBlockIndex","getBlockCount","getSettings","getBlockVariations","undefined","allowedBlocks","index","blockCount","settings","name","allowedBlockType","title","__experimentalPreferPatternsOnRoot","dispatch","ownProps","getAdjacentBlockAttributes","attributesToCopy","getBlock","getPreviousBlockClientId","result","adjacentAttributes","parentBlock","innerBlocks","length","lastInnerBlock","attributes","currentBlock","previousBlock","forEach","attribute","hasOwnProperty","getInsertionIndex","getBlockSelectionEnd","getBlockOrder","end","insertBlock","blockToInsert","newAttributes","message"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { size } from 'lodash';\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { speak } from '@wordpress/a11y';\nimport { __, _x, sprintf } from '@wordpress/i18n';\nimport { Dropdown, Button } from '@wordpress/components';\nimport { Component } from '@wordpress/element';\nimport { withDispatch, withSelect } from '@wordpress/data';\nimport { compose, ifCondition } from '@wordpress/compose';\nimport { createBlock, store as blocksStore } from '@wordpress/blocks';\nimport { plus } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport InserterMenu from './menu';\nimport QuickInserter from './quick-inserter';\nimport { store as blockEditorStore } from '../../store';\n\nconst defaultRenderToggle = ( {\n\tonToggle,\n\tdisabled,\n\tisOpen,\n\tblockTitle,\n\thasSingleBlockType,\n\ttoggleProps = {},\n\tprioritizePatterns,\n} ) => {\n\tlet label;\n\tif ( hasSingleBlockType ) {\n\t\tlabel = sprintf(\n\t\t\t// translators: %s: the name of the block when there is only one\n\t\t\t_x( 'Add %s', 'directly add the only allowed block' ),\n\t\t\tblockTitle\n\t\t);\n\t} else if ( prioritizePatterns ) {\n\t\tlabel = __( 'Add pattern' );\n\t} else {\n\t\tlabel = _x( 'Add block', 'Generic label for block inserter button' );\n\t}\n\n\tconst { onClick, ...rest } = toggleProps;\n\n\t// Handle both onClick functions from the toggle and the parent component.\n\tfunction handleClick( event ) {\n\t\tif ( onToggle ) {\n\t\t\tonToggle( event );\n\t\t}\n\t\tif ( onClick ) {\n\t\t\tonClick( event );\n\t\t}\n\t}\n\n\treturn (\n\t\t<Button\n\t\t\ticon={ plus }\n\t\t\tlabel={ label }\n\t\t\ttooltipPosition=\"bottom\"\n\t\t\tonClick={ handleClick }\n\t\t\tclassName=\"block-editor-inserter__toggle\"\n\t\t\taria-haspopup={ ! hasSingleBlockType ? 'true' : false }\n\t\t\taria-expanded={ ! hasSingleBlockType ? isOpen : false }\n\t\t\tdisabled={ disabled }\n\t\t\t{ ...rest }\n\t\t/>\n\t);\n};\n\nclass Inserter extends Component {\n\tconstructor() {\n\t\tsuper( ...arguments );\n\n\t\tthis.onToggle = this.onToggle.bind( this );\n\t\tthis.renderToggle = this.renderToggle.bind( this );\n\t\tthis.renderContent = this.renderContent.bind( this );\n\t}\n\n\tonToggle( isOpen ) {\n\t\tconst { onToggle } = this.props;\n\n\t\t// Surface toggle callback to parent component.\n\t\tif ( onToggle ) {\n\t\t\tonToggle( isOpen );\n\t\t}\n\t}\n\n\t/**\n\t * Render callback to display Dropdown toggle element.\n\t *\n\t * @param {Object} options\n\t * @param {Function} options.onToggle Callback to invoke when toggle is\n\t * pressed.\n\t * @param {boolean} options.isOpen Whether dropdown is currently open.\n\t *\n\t * @return {WPElement} Dropdown toggle element.\n\t */\n\trenderToggle( { onToggle, isOpen } ) {\n\t\tconst {\n\t\t\tdisabled,\n\t\t\tblockTitle,\n\t\t\thasSingleBlockType,\n\t\t\tdirectInsertBlock,\n\t\t\ttoggleProps,\n\t\t\thasItems,\n\t\t\trenderToggle = defaultRenderToggle,\n\t\t\tprioritizePatterns,\n\t\t} = this.props;\n\n\t\treturn renderToggle( {\n\t\t\tonToggle,\n\t\t\tisOpen,\n\t\t\tdisabled: disabled || ! hasItems,\n\t\t\tblockTitle,\n\t\t\thasSingleBlockType,\n\t\t\tdirectInsertBlock,\n\t\t\ttoggleProps,\n\t\t\tprioritizePatterns,\n\t\t} );\n\t}\n\n\t/**\n\t * Render callback to display Dropdown content element.\n\t *\n\t * @param {Object} options\n\t * @param {Function} options.onClose Callback to invoke when dropdown is\n\t * closed.\n\t *\n\t * @return {WPElement} Dropdown content element.\n\t */\n\trenderContent( { onClose } ) {\n\t\tconst {\n\t\t\trootClientId,\n\t\t\tclientId,\n\t\t\tisAppender,\n\t\t\tshowInserterHelpPanel,\n\n\t\t\t// This prop is experimental to give some time for the quick inserter to mature\n\t\t\t// Feel free to make them stable after a few releases.\n\t\t\t__experimentalIsQuick: isQuick,\n\t\t\tprioritizePatterns,\n\t\t} = this.props;\n\n\t\tif ( isQuick ) {\n\t\t\treturn (\n\t\t\t\t<QuickInserter\n\t\t\t\t\tonSelect={ () => {\n\t\t\t\t\t\tonClose();\n\t\t\t\t\t} }\n\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\tisAppender={ isAppender }\n\t\t\t\t\tprioritizePatterns={ prioritizePatterns }\n\t\t\t\t/>\n\t\t\t);\n\t\t}\n\n\t\treturn (\n\t\t\t<InserterMenu\n\t\t\t\tonSelect={ () => {\n\t\t\t\t\tonClose();\n\t\t\t\t} }\n\t\t\t\trootClientId={ rootClientId }\n\t\t\t\tclientId={ clientId }\n\t\t\t\tisAppender={ isAppender }\n\t\t\t\tshowInserterHelpPanel={ showInserterHelpPanel }\n\t\t\t/>\n\t\t);\n\t}\n\n\trender() {\n\t\tconst {\n\t\t\tposition,\n\t\t\thasSingleBlockType,\n\t\t\tdirectInsertBlock,\n\t\t\tinsertOnlyAllowedBlock,\n\t\t\t__experimentalIsQuick: isQuick,\n\t\t\tonSelectOrClose,\n\t\t} = this.props;\n\n\t\tif ( hasSingleBlockType || directInsertBlock ) {\n\t\t\treturn this.renderToggle( { onToggle: insertOnlyAllowedBlock } );\n\t\t}\n\n\t\treturn (\n\t\t\t<Dropdown\n\t\t\t\tclassName=\"block-editor-inserter\"\n\t\t\t\tcontentClassName={ classnames(\n\t\t\t\t\t'block-editor-inserter__popover',\n\t\t\t\t\t{ 'is-quick': isQuick }\n\t\t\t\t) }\n\t\t\t\tposition={ position }\n\t\t\t\tonToggle={ this.onToggle }\n\t\t\t\texpandOnMobile\n\t\t\t\theaderTitle={ __( 'Add a block' ) }\n\t\t\t\trenderToggle={ this.renderToggle }\n\t\t\t\trenderContent={ this.renderContent }\n\t\t\t\tonClose={ onSelectOrClose }\n\t\t\t/>\n\t\t);\n\t}\n}\n\nexport default compose( [\n\twithSelect( ( select, { clientId, rootClientId } ) => {\n\t\tconst {\n\t\t\tgetBlockRootClientId,\n\t\t\thasInserterItems,\n\t\t\t__experimentalGetAllowedBlocks,\n\t\t\t__experimentalGetDirectInsertBlock,\n\t\t\tgetBlockIndex,\n\t\t\tgetBlockCount,\n\t\t\tgetSettings,\n\t\t} = select( blockEditorStore );\n\n\t\tconst { getBlockVariations } = select( blocksStore );\n\n\t\trootClientId =\n\t\t\trootClientId || getBlockRootClientId( clientId ) || undefined;\n\n\t\tconst allowedBlocks = __experimentalGetAllowedBlocks( rootClientId );\n\n\t\tconst directInsertBlock = __experimentalGetDirectInsertBlock(\n\t\t\trootClientId\n\t\t);\n\n\t\tconst index = getBlockIndex( clientId );\n\t\tconst blockCount = getBlockCount();\n\t\tconst settings = getSettings();\n\n\t\tconst hasSingleBlockType =\n\t\t\tsize( allowedBlocks ) === 1 &&\n\t\t\tsize(\n\t\t\t\tgetBlockVariations( allowedBlocks[ 0 ].name, 'inserter' )\n\t\t\t) === 0;\n\n\t\tlet allowedBlockType = false;\n\t\tif ( hasSingleBlockType ) {\n\t\t\tallowedBlockType = allowedBlocks[ 0 ];\n\t\t}\n\n\t\treturn {\n\t\t\thasItems: hasInserterItems( rootClientId ),\n\t\t\thasSingleBlockType,\n\t\t\tblockTitle: allowedBlockType ? allowedBlockType.title : '',\n\t\t\tallowedBlockType,\n\t\t\tdirectInsertBlock,\n\t\t\trootClientId,\n\t\t\tprioritizePatterns:\n\t\t\t\tsettings.__experimentalPreferPatternsOnRoot &&\n\t\t\t\t! rootClientId &&\n\t\t\t\tindex > 0 &&\n\t\t\t\t( index < blockCount || blockCount === 0 ),\n\t\t};\n\t} ),\n\twithDispatch( ( dispatch, ownProps, { select } ) => {\n\t\treturn {\n\t\t\tinsertOnlyAllowedBlock() {\n\t\t\t\tconst {\n\t\t\t\t\trootClientId,\n\t\t\t\t\tclientId,\n\t\t\t\t\tisAppender,\n\t\t\t\t\thasSingleBlockType,\n\t\t\t\t\tallowedBlockType,\n\t\t\t\t\tdirectInsertBlock,\n\t\t\t\t\tonSelectOrClose,\n\t\t\t\t} = ownProps;\n\n\t\t\t\tif ( ! hasSingleBlockType && ! directInsertBlock ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tfunction getAdjacentBlockAttributes( attributesToCopy ) {\n\t\t\t\t\tconst { getBlock, getPreviousBlockClientId } = select(\n\t\t\t\t\t\tblockEditorStore\n\t\t\t\t\t);\n\n\t\t\t\t\tif (\n\t\t\t\t\t\t! attributesToCopy ||\n\t\t\t\t\t\t( ! clientId && ! rootClientId )\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn {};\n\t\t\t\t\t}\n\n\t\t\t\t\tconst result = {};\n\t\t\t\t\tlet adjacentAttributes = {};\n\n\t\t\t\t\t// If there is no clientId, then attempt to get attributes\n\t\t\t\t\t// from the last block within innerBlocks of the root block.\n\t\t\t\t\tif ( ! clientId ) {\n\t\t\t\t\t\tconst parentBlock = getBlock( rootClientId );\n\n\t\t\t\t\t\tif ( parentBlock?.innerBlocks?.length ) {\n\t\t\t\t\t\t\tconst lastInnerBlock =\n\t\t\t\t\t\t\t\tparentBlock.innerBlocks[\n\t\t\t\t\t\t\t\t\tparentBlock.innerBlocks.length - 1\n\t\t\t\t\t\t\t\t];\n\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tdirectInsertBlock &&\n\t\t\t\t\t\t\t\tdirectInsertBlock?.name === lastInnerBlock.name\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tadjacentAttributes = lastInnerBlock.attributes;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Otherwise, attempt to get attributes from the\n\t\t\t\t\t\t// previous block relative to the current clientId.\n\t\t\t\t\t\tconst currentBlock = getBlock( clientId );\n\t\t\t\t\t\tconst previousBlock = getBlock(\n\t\t\t\t\t\t\tgetPreviousBlockClientId( clientId )\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tif ( currentBlock?.name === previousBlock?.name ) {\n\t\t\t\t\t\t\tadjacentAttributes =\n\t\t\t\t\t\t\t\tpreviousBlock?.attributes || {};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Copy over only those attributes flagged to be copied.\n\t\t\t\t\tattributesToCopy.forEach( ( attribute ) => {\n\t\t\t\t\t\tif ( adjacentAttributes.hasOwnProperty( attribute ) ) {\n\t\t\t\t\t\t\tresult[ attribute ] =\n\t\t\t\t\t\t\t\tadjacentAttributes[ attribute ];\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tfunction getInsertionIndex() {\n\t\t\t\t\tconst {\n\t\t\t\t\t\tgetBlockIndex,\n\t\t\t\t\t\tgetBlockSelectionEnd,\n\t\t\t\t\t\tgetBlockOrder,\n\t\t\t\t\t\tgetBlockRootClientId,\n\t\t\t\t\t} = select( blockEditorStore );\n\n\t\t\t\t\t// If the clientId is defined, we insert at the position of the block.\n\t\t\t\t\tif ( clientId ) {\n\t\t\t\t\t\treturn getBlockIndex( clientId );\n\t\t\t\t\t}\n\n\t\t\t\t\t// If there a selected block, we insert after the selected block.\n\t\t\t\t\tconst end = getBlockSelectionEnd();\n\t\t\t\t\tif (\n\t\t\t\t\t\t! isAppender &&\n\t\t\t\t\t\tend &&\n\t\t\t\t\t\tgetBlockRootClientId( end ) === rootClientId\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn getBlockIndex( end ) + 1;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Otherwise, we insert at the end of the current rootClientId.\n\t\t\t\t\treturn getBlockOrder( rootClientId ).length;\n\t\t\t\t}\n\n\t\t\t\tconst { insertBlock } = dispatch( blockEditorStore );\n\n\t\t\t\tlet blockToInsert;\n\n\t\t\t\t// Attempt to augment the directInsertBlock with attributes from an adjacent block.\n\t\t\t\t// This ensures styling from nearby blocks is preserved in the newly inserted block.\n\t\t\t\t// See: https://github.com/WordPress/gutenberg/issues/37904\n\t\t\t\tif ( directInsertBlock ) {\n\t\t\t\t\tconst newAttributes = getAdjacentBlockAttributes(\n\t\t\t\t\t\tdirectInsertBlock.attributesToCopy\n\t\t\t\t\t);\n\n\t\t\t\t\tblockToInsert = createBlock( directInsertBlock.name, {\n\t\t\t\t\t\t...( directInsertBlock.attributes || {} ),\n\t\t\t\t\t\t...newAttributes,\n\t\t\t\t\t} );\n\t\t\t\t} else {\n\t\t\t\t\tblockToInsert = createBlock( allowedBlockType.name );\n\t\t\t\t}\n\n\t\t\t\tinsertBlock( blockToInsert, getInsertionIndex(), rootClientId );\n\n\t\t\t\tif ( onSelectOrClose ) {\n\t\t\t\t\tonSelectOrClose();\n\t\t\t\t}\n\n\t\t\t\tconst message = sprintf(\n\t\t\t\t\t// translators: %s: the name of the block that has been added\n\t\t\t\t\t__( '%s block added' ),\n\t\t\t\t\tallowedBlockType.title\n\t\t\t\t);\n\t\t\t\tspeak( message );\n\t\t\t},\n\t\t};\n\t} ),\n\t// The global inserter should always be visible, we are using ( ! isAppender && ! rootClientId && ! clientId ) as\n\t// a way to detect the global Inserter.\n\tifCondition(\n\t\t( { hasItems, isAppender, rootClientId, clientId } ) =>\n\t\t\thasItems || ( ! isAppender && ! rootClientId && ! clientId )\n\t),\n] )( Inserter );\n"]}
|
|
@@ -51,7 +51,7 @@ const defaultRenderToggle = _ref => {
|
|
|
51
51
|
};
|
|
52
52
|
const expandedModeViewText = createElement(Text, {
|
|
53
53
|
style: styles['inserter-menu__add-block-button-text']
|
|
54
|
-
}, __('Add
|
|
54
|
+
}, __('Add blocks'));
|
|
55
55
|
return createElement(ToolbarButton, _extends({
|
|
56
56
|
title: _x('Add block', 'Generic label for block inserter button'),
|
|
57
57
|
icon: createElement(Icon, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/inserter/index.native.js"],"names":["AccessibilityInfo","Platform","Text","delay","__","_x","Dropdown","ToolbarButton","Picker","Component","withDispatch","withSelect","compose","withPreferredColorScheme","isUnmodifiedDefaultBlock","Icon","plus","plusCircle","plusCircleFilled","insertAfter","insertBefore","setBlockTypeImpressions","styles","InserterMenu","BlockInsertionPoint","store","blockEditorStore","VOICE_OVER_ANNOUNCEMENT_DELAY","defaultRenderToggle","onToggle","disabled","style","containerStyle","onLongPress","useExpandedMode","expandedModeViewProps","icon","customContainerStyles","fixedRatio","expandedModeViewText","hint","testID","Inserter","constructor","arguments","bind","renderInserterToggle","renderContent","getInsertionOptions","addBeforeOption","value","label","replaceCurrentOption","addAfterOption","addToBeginningOption","addToEndOption","isAnyBlockSelected","isSelectedBlockReplaceable","props","getInsertionIndex","insertionType","insertionIndexDefault","insertionIndexStart","insertionIndexBefore","insertionIndexAfter","insertionIndexEnd","shouldReplaceBlock","isOpen","blockTypeImpressions","updateSettings","impressionsRemain","Object","values","some","count","decrementedImpressions","entries","reduce","acc","blockName","Math","max","impressions","onInserterToggledAnnouncement","isScreenReaderEnabled","done","isEnabled","isIOS","OS","announcement","announceForAccessibility","renderToggle","getStylesFromColorScheme","showSeparator","onPress","setState","destinationRootClientId","insertionIndex","picker","presentPicker","onPickerSelect","instance","onClose","clientId","isAppender","state","render","dispatch","select","rootClientId","getBlockRootClientId","getBlockSelectionEnd","getBlockOrder","getBlockIndex","getBlock","getSettings","getBlockEditorSettings","end","selectedBlockIndex","endOfRootIndex","length","isSelectedUnmodifiedDefaultBlock","undefined","getDefaultInsertionIndex","__experimentalShouldInsertAtTheTop","shouldInsertAtTheTop"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { AccessibilityInfo, Platform, Text } from 'react-native';\nimport { delay } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { __, _x } from '@wordpress/i18n';\nimport { Dropdown, ToolbarButton, Picker } from '@wordpress/components';\nimport { Component } from '@wordpress/element';\nimport { withDispatch, withSelect } from '@wordpress/data';\nimport { compose, withPreferredColorScheme } from '@wordpress/compose';\nimport { isUnmodifiedDefaultBlock } from '@wordpress/blocks';\nimport {\n\tIcon,\n\tplus,\n\tplusCircle,\n\tplusCircleFilled,\n\tinsertAfter,\n\tinsertBefore,\n} from '@wordpress/icons';\nimport { setBlockTypeImpressions } from '@wordpress/react-native-bridge';\n\n/**\n * Internal dependencies\n */\nimport styles from './style.scss';\nimport InserterMenu from './menu';\nimport BlockInsertionPoint from '../block-list/insertion-point';\nimport { store as blockEditorStore } from '../../store';\n\nconst VOICE_OVER_ANNOUNCEMENT_DELAY = 1000;\n\nconst defaultRenderToggle = ( {\n\tonToggle,\n\tdisabled,\n\tstyle,\n\tcontainerStyle,\n\tonLongPress,\n\tuseExpandedMode,\n} ) => {\n\t// The \"expanded mode\" refers to the editor's appearance when no blocks\n\t// are currently selected. The \"add block\" button has a separate style\n\t// for the \"expanded mode\", which are added via the below \"expandedModeViewProps\"\n\t// and \"expandedModeViewText\" variables.\n\tconst expandedModeViewProps = useExpandedMode && {\n\t\ticon: <Icon icon={ plus } style={ style } />,\n\t\tcustomContainerStyles: containerStyle,\n\t\tfixedRatio: false,\n\t};\n\tconst expandedModeViewText = (\n\t\t<Text style={ styles[ 'inserter-menu__add-block-button-text' ] }>\n\t\t\t{ __( 'Add Blocks' ) }\n\t\t</Text>\n\t);\n\n\treturn (\n\t\t<ToolbarButton\n\t\t\ttitle={ _x(\n\t\t\t\t'Add block',\n\t\t\t\t'Generic label for block inserter button'\n\t\t\t) }\n\t\t\ticon={ <Icon icon={ plusCircleFilled } style={ style } /> }\n\t\t\tonClick={ onToggle }\n\t\t\textraProps={ {\n\t\t\t\thint: __( 'Double tap to add a block' ),\n\t\t\t\t// testID is present to disambiguate this element for native UI tests. It's not\n\t\t\t\t// usually required for components. See: https://git.io/JeQ7G.\n\t\t\t\ttestID: 'add-block-button',\n\t\t\t\tonLongPress,\n\t\t\t} }\n\t\t\tisDisabled={ disabled }\n\t\t\t{ ...expandedModeViewProps }\n\t\t>\n\t\t\t{ useExpandedMode && expandedModeViewText }\n\t\t</ToolbarButton>\n\t);\n};\n\nexport class Inserter extends Component {\n\tconstructor() {\n\t\tsuper( ...arguments );\n\n\t\tthis.onToggle = this.onToggle.bind( this );\n\t\tthis.renderInserterToggle = this.renderInserterToggle.bind( this );\n\t\tthis.renderContent = this.renderContent.bind( this );\n\t}\n\n\tgetInsertionOptions() {\n\t\tconst addBeforeOption = {\n\t\t\tvalue: 'before',\n\t\t\tlabel: __( 'Add Block Before' ),\n\t\t\ticon: plusCircle,\n\t\t};\n\n\t\tconst replaceCurrentOption = {\n\t\t\tvalue: 'replace',\n\t\t\tlabel: __( 'Replace Current Block' ),\n\t\t\ticon: plusCircleFilled,\n\t\t};\n\n\t\tconst addAfterOption = {\n\t\t\tvalue: 'after',\n\t\t\tlabel: __( 'Add Block After' ),\n\t\t\ticon: plusCircle,\n\t\t};\n\n\t\tconst addToBeginningOption = {\n\t\t\tvalue: 'start',\n\t\t\tlabel: __( 'Add To Beginning' ),\n\t\t\ticon: insertBefore,\n\t\t};\n\n\t\tconst addToEndOption = {\n\t\t\tvalue: 'end',\n\t\t\tlabel: __( 'Add To End' ),\n\t\t\ticon: insertAfter,\n\t\t};\n\n\t\tconst { isAnyBlockSelected, isSelectedBlockReplaceable } = this.props;\n\t\tif ( isAnyBlockSelected ) {\n\t\t\tif ( isSelectedBlockReplaceable ) {\n\t\t\t\treturn [\n\t\t\t\t\taddToBeginningOption,\n\t\t\t\t\taddBeforeOption,\n\t\t\t\t\treplaceCurrentOption,\n\t\t\t\t\taddAfterOption,\n\t\t\t\t\taddToEndOption,\n\t\t\t\t];\n\t\t\t}\n\t\t\treturn [\n\t\t\t\taddToBeginningOption,\n\t\t\t\taddBeforeOption,\n\t\t\t\taddAfterOption,\n\t\t\t\taddToEndOption,\n\t\t\t];\n\t\t}\n\t\treturn [ addToBeginningOption, addToEndOption ];\n\t}\n\n\tgetInsertionIndex( insertionType ) {\n\t\tconst {\n\t\t\tinsertionIndexDefault,\n\t\t\tinsertionIndexStart,\n\t\t\tinsertionIndexBefore,\n\t\t\tinsertionIndexAfter,\n\t\t\tinsertionIndexEnd,\n\t\t} = this.props;\n\t\tif ( insertionType === 'start' ) {\n\t\t\treturn insertionIndexStart;\n\t\t}\n\t\tif ( insertionType === 'before' || insertionType === 'replace' ) {\n\t\t\treturn insertionIndexBefore;\n\t\t}\n\t\tif ( insertionType === 'after' ) {\n\t\t\treturn insertionIndexAfter;\n\t\t}\n\t\tif ( insertionType === 'end' ) {\n\t\t\treturn insertionIndexEnd;\n\t\t}\n\t\treturn insertionIndexDefault;\n\t}\n\n\tshouldReplaceBlock( insertionType ) {\n\t\tconst { isSelectedBlockReplaceable } = this.props;\n\t\tif ( insertionType === 'replace' ) {\n\t\t\treturn true;\n\t\t}\n\t\tif ( insertionType === 'default' && isSelectedBlockReplaceable ) {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tonToggle( isOpen ) {\n\t\tconst { blockTypeImpressions, onToggle, updateSettings } = this.props;\n\n\t\tif ( ! isOpen ) {\n\t\t\tconst impressionsRemain = Object.values(\n\t\t\t\tblockTypeImpressions\n\t\t\t).some( ( count ) => count > 0 );\n\n\t\t\tif ( impressionsRemain ) {\n\t\t\t\tconst decrementedImpressions = Object.entries(\n\t\t\t\t\tblockTypeImpressions\n\t\t\t\t).reduce(\n\t\t\t\t\t( acc, [ blockName, count ] ) => ( {\n\t\t\t\t\t\t...acc,\n\t\t\t\t\t\t[ blockName ]: Math.max( count - 1, 0 ),\n\t\t\t\t\t} ),\n\t\t\t\t\t{}\n\t\t\t\t);\n\n\t\t\t\t// Persist block type impression to JavaScript store.\n\t\t\t\tupdateSettings( {\n\t\t\t\t\timpressions: decrementedImpressions,\n\t\t\t\t} );\n\n\t\t\t\t// Persist block type impression count to native app store.\n\t\t\t\tsetBlockTypeImpressions( decrementedImpressions );\n\t\t\t}\n\t\t}\n\n\t\t// Surface toggle callback to parent component.\n\t\tif ( onToggle ) {\n\t\t\tonToggle( isOpen );\n\t\t}\n\t\tthis.onInserterToggledAnnouncement( isOpen );\n\t}\n\n\tonInserterToggledAnnouncement( isOpen ) {\n\t\tAccessibilityInfo.isScreenReaderEnabled().done( ( isEnabled ) => {\n\t\t\tif ( isEnabled ) {\n\t\t\t\tconst isIOS = Platform.OS === 'ios';\n\t\t\t\tconst announcement = isOpen\n\t\t\t\t\t? __( 'Scrollable block menu opened. Select a block.' )\n\t\t\t\t\t: __( 'Scrollable block menu closed.' );\n\t\t\t\tdelay(\n\t\t\t\t\t() =>\n\t\t\t\t\t\tAccessibilityInfo.announceForAccessibility(\n\t\t\t\t\t\t\tannouncement\n\t\t\t\t\t\t),\n\t\t\t\t\tisIOS ? VOICE_OVER_ANNOUNCEMENT_DELAY : 0\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Render callback to display Dropdown toggle element.\n\t *\n\t * @param {Object} options\n\t * @param {Function} options.onToggle Callback to invoke when toggle is\n\t * pressed.\n\t * @param {boolean} options.isOpen Whether dropdown is currently open.\n\t *\n\t * @return {WPElement} Dropdown toggle element.\n\t */\n\trenderInserterToggle( { onToggle, isOpen } ) {\n\t\tconst {\n\t\t\tdisabled,\n\t\t\trenderToggle = defaultRenderToggle,\n\t\t\tgetStylesFromColorScheme,\n\t\t\tshowSeparator,\n\t\t\tuseExpandedMode,\n\t\t} = this.props;\n\t\tif ( showSeparator && isOpen ) {\n\t\t\treturn <BlockInsertionPoint />;\n\t\t}\n\t\tconst style = useExpandedMode\n\t\t\t? styles[ 'inserter-menu__add-block-button-icon--expanded' ]\n\t\t\t: getStylesFromColorScheme(\n\t\t\t\t\tstyles[ 'inserter-menu__add-block-button-icon' ],\n\t\t\t\t\tstyles[ 'inserter-menu__add-block-button-icon--dark' ]\n\t\t\t );\n\n\t\tconst containerStyle = getStylesFromColorScheme(\n\t\t\tstyles[ 'inserter-menu__add-block-button' ],\n\t\t\tstyles[ 'inserter-menu__add-block-button--dark' ]\n\t\t);\n\n\t\tconst onPress = () => {\n\t\t\tthis.setState(\n\t\t\t\t{\n\t\t\t\t\tdestinationRootClientId: this.props.destinationRootClientId,\n\t\t\t\t\tshouldReplaceBlock: this.shouldReplaceBlock( 'default' ),\n\t\t\t\t\tinsertionIndex: this.getInsertionIndex( 'default' ),\n\t\t\t\t},\n\t\t\t\tonToggle\n\t\t\t);\n\t\t};\n\n\t\tconst onLongPress = () => {\n\t\t\tif ( this.picker ) {\n\t\t\t\tthis.picker.presentPicker();\n\t\t\t}\n\t\t};\n\n\t\tconst onPickerSelect = ( insertionType ) => {\n\t\t\tthis.setState(\n\t\t\t\t{\n\t\t\t\t\tdestinationRootClientId: this.props.destinationRootClientId,\n\t\t\t\t\tshouldReplaceBlock: this.shouldReplaceBlock(\n\t\t\t\t\t\tinsertionType\n\t\t\t\t\t),\n\t\t\t\t\tinsertionIndex: this.getInsertionIndex( insertionType ),\n\t\t\t\t},\n\t\t\t\tonToggle\n\t\t\t);\n\t\t};\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{ renderToggle( {\n\t\t\t\t\tonToggle: onPress,\n\t\t\t\t\tisOpen,\n\t\t\t\t\tdisabled,\n\t\t\t\t\tstyle,\n\t\t\t\t\tcontainerStyle,\n\t\t\t\t\tonLongPress,\n\t\t\t\t\tuseExpandedMode,\n\t\t\t\t} ) }\n\t\t\t\t<Picker\n\t\t\t\t\tref={ ( instance ) => ( this.picker = instance ) }\n\t\t\t\t\toptions={ this.getInsertionOptions() }\n\t\t\t\t\tonChange={ onPickerSelect }\n\t\t\t\t\thideCancelButton\n\t\t\t\t/>\n\t\t\t</>\n\t\t);\n\t}\n\n\t/**\n\t * Render callback to display Dropdown content element.\n\t *\n\t * @param {Object} options\n\t * @param {Function} options.onClose Callback to invoke when dropdown is\n\t * closed.\n\t * @param {boolean} options.isOpen Whether dropdown is currently open.\n\t *\n\t * @return {WPElement} Dropdown content element.\n\t */\n\trenderContent( { onClose, isOpen } ) {\n\t\tconst { clientId, isAppender } = this.props;\n\t\tconst {\n\t\t\tdestinationRootClientId,\n\t\t\tshouldReplaceBlock,\n\t\t\tinsertionIndex,\n\t\t} = this.state;\n\t\treturn (\n\t\t\t<InserterMenu\n\t\t\t\tisOpen={ isOpen }\n\t\t\t\tonSelect={ onClose }\n\t\t\t\tonDismiss={ onClose }\n\t\t\t\trootClientId={ destinationRootClientId }\n\t\t\t\tclientId={ clientId }\n\t\t\t\tisAppender={ isAppender }\n\t\t\t\tshouldReplaceBlock={ shouldReplaceBlock }\n\t\t\t\tinsertionIndex={ insertionIndex }\n\t\t\t/>\n\t\t);\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<Dropdown\n\t\t\t\tonToggle={ this.onToggle }\n\t\t\t\theaderTitle={ __( 'Add a block' ) }\n\t\t\t\trenderToggle={ this.renderInserterToggle }\n\t\t\t\trenderContent={ this.renderContent }\n\t\t\t/>\n\t\t);\n\t}\n}\n\nexport default compose( [\n\twithDispatch( ( dispatch ) => {\n\t\tconst { updateSettings } = dispatch( blockEditorStore );\n\t\treturn { updateSettings };\n\t} ),\n\twithSelect( ( select, { clientId, isAppender, rootClientId } ) => {\n\t\tconst {\n\t\t\tgetBlockRootClientId,\n\t\t\tgetBlockSelectionEnd,\n\t\t\tgetBlockOrder,\n\t\t\tgetBlockIndex,\n\t\t\tgetBlock,\n\t\t\tgetSettings: getBlockEditorSettings,\n\t\t} = select( blockEditorStore );\n\n\t\tconst end = getBlockSelectionEnd();\n\t\t// `end` argument (id) can refer to the component which is removed\n\t\t// due to pressing `undo` button, that's why we need to check\n\t\t// if `getBlock( end) is valid, otherwise `null` is passed\n\t\tconst isAnyBlockSelected = ! isAppender && end && getBlock( end );\n\t\tconst destinationRootClientId = isAnyBlockSelected\n\t\t\t? getBlockRootClientId( end )\n\t\t\t: rootClientId;\n\t\tconst selectedBlockIndex = getBlockIndex( end );\n\t\tconst endOfRootIndex = getBlockOrder( rootClientId ).length;\n\t\tconst isSelectedUnmodifiedDefaultBlock = isAnyBlockSelected\n\t\t\t? isUnmodifiedDefaultBlock( getBlock( end ) )\n\t\t\t: undefined;\n\n\t\tfunction getDefaultInsertionIndex() {\n\t\t\tconst {\n\t\t\t\t__experimentalShouldInsertAtTheTop: shouldInsertAtTheTop,\n\t\t\t} = getBlockEditorSettings();\n\n\t\t\t// If post title is selected insert as first block.\n\t\t\tif ( shouldInsertAtTheTop ) {\n\t\t\t\treturn 0;\n\t\t\t}\n\n\t\t\t// If the clientId is defined, we insert at the position of the block.\n\t\t\tif ( clientId ) {\n\t\t\t\treturn getBlockIndex( clientId );\n\t\t\t}\n\n\t\t\t// If there is a selected block,\n\t\t\tif ( isAnyBlockSelected ) {\n\t\t\t\t// And the last selected block is unmodified (empty), it will be replaced.\n\t\t\t\tif ( isSelectedUnmodifiedDefaultBlock ) {\n\t\t\t\t\treturn selectedBlockIndex;\n\t\t\t\t}\n\n\t\t\t\t// We insert after the selected block.\n\t\t\t\treturn selectedBlockIndex + 1;\n\t\t\t}\n\n\t\t\t// Otherwise, we insert at the end of the current rootClientId.\n\t\t\treturn endOfRootIndex;\n\t\t}\n\n\t\tconst insertionIndexStart = 0;\n\n\t\tconst insertionIndexBefore = isAnyBlockSelected\n\t\t\t? selectedBlockIndex\n\t\t\t: insertionIndexStart;\n\n\t\tconst insertionIndexAfter = isAnyBlockSelected\n\t\t\t? selectedBlockIndex + 1\n\t\t\t: endOfRootIndex;\n\n\t\tconst insertionIndexEnd = endOfRootIndex;\n\n\t\treturn {\n\t\t\tblockTypeImpressions: getBlockEditorSettings().impressions,\n\t\t\tdestinationRootClientId,\n\t\t\tinsertionIndexDefault: getDefaultInsertionIndex(),\n\t\t\tinsertionIndexBefore,\n\t\t\tinsertionIndexAfter,\n\t\t\tinsertionIndexStart,\n\t\t\tinsertionIndexEnd,\n\t\t\tisAnyBlockSelected: !! isAnyBlockSelected,\n\t\t\tisSelectedBlockReplaceable: isSelectedUnmodifiedDefaultBlock,\n\t\t};\n\t} ),\n\n\twithPreferredColorScheme,\n] )( Inserter );\n"]}
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/inserter/index.native.js"],"names":["AccessibilityInfo","Platform","Text","delay","__","_x","Dropdown","ToolbarButton","Picker","Component","withDispatch","withSelect","compose","withPreferredColorScheme","isUnmodifiedDefaultBlock","Icon","plus","plusCircle","plusCircleFilled","insertAfter","insertBefore","setBlockTypeImpressions","styles","InserterMenu","BlockInsertionPoint","store","blockEditorStore","VOICE_OVER_ANNOUNCEMENT_DELAY","defaultRenderToggle","onToggle","disabled","style","containerStyle","onLongPress","useExpandedMode","expandedModeViewProps","icon","customContainerStyles","fixedRatio","expandedModeViewText","hint","testID","Inserter","constructor","arguments","bind","renderInserterToggle","renderContent","getInsertionOptions","addBeforeOption","value","label","replaceCurrentOption","addAfterOption","addToBeginningOption","addToEndOption","isAnyBlockSelected","isSelectedBlockReplaceable","props","getInsertionIndex","insertionType","insertionIndexDefault","insertionIndexStart","insertionIndexBefore","insertionIndexAfter","insertionIndexEnd","shouldReplaceBlock","isOpen","blockTypeImpressions","updateSettings","impressionsRemain","Object","values","some","count","decrementedImpressions","entries","reduce","acc","blockName","Math","max","impressions","onInserterToggledAnnouncement","isScreenReaderEnabled","done","isEnabled","isIOS","OS","announcement","announceForAccessibility","renderToggle","getStylesFromColorScheme","showSeparator","onPress","setState","destinationRootClientId","insertionIndex","picker","presentPicker","onPickerSelect","instance","onClose","clientId","isAppender","state","render","dispatch","select","rootClientId","getBlockRootClientId","getBlockSelectionEnd","getBlockOrder","getBlockIndex","getBlock","getSettings","getBlockEditorSettings","end","selectedBlockIndex","endOfRootIndex","length","isSelectedUnmodifiedDefaultBlock","undefined","getDefaultInsertionIndex","__experimentalShouldInsertAtTheTop","shouldInsertAtTheTop"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { AccessibilityInfo, Platform, Text } from 'react-native';\nimport { delay } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { __, _x } from '@wordpress/i18n';\nimport { Dropdown, ToolbarButton, Picker } from '@wordpress/components';\nimport { Component } from '@wordpress/element';\nimport { withDispatch, withSelect } from '@wordpress/data';\nimport { compose, withPreferredColorScheme } from '@wordpress/compose';\nimport { isUnmodifiedDefaultBlock } from '@wordpress/blocks';\nimport {\n\tIcon,\n\tplus,\n\tplusCircle,\n\tplusCircleFilled,\n\tinsertAfter,\n\tinsertBefore,\n} from '@wordpress/icons';\nimport { setBlockTypeImpressions } from '@wordpress/react-native-bridge';\n\n/**\n * Internal dependencies\n */\nimport styles from './style.scss';\nimport InserterMenu from './menu';\nimport BlockInsertionPoint from '../block-list/insertion-point';\nimport { store as blockEditorStore } from '../../store';\n\nconst VOICE_OVER_ANNOUNCEMENT_DELAY = 1000;\n\nconst defaultRenderToggle = ( {\n\tonToggle,\n\tdisabled,\n\tstyle,\n\tcontainerStyle,\n\tonLongPress,\n\tuseExpandedMode,\n} ) => {\n\t// The \"expanded mode\" refers to the editor's appearance when no blocks\n\t// are currently selected. The \"add block\" button has a separate style\n\t// for the \"expanded mode\", which are added via the below \"expandedModeViewProps\"\n\t// and \"expandedModeViewText\" variables.\n\tconst expandedModeViewProps = useExpandedMode && {\n\t\ticon: <Icon icon={ plus } style={ style } />,\n\t\tcustomContainerStyles: containerStyle,\n\t\tfixedRatio: false,\n\t};\n\tconst expandedModeViewText = (\n\t\t<Text style={ styles[ 'inserter-menu__add-block-button-text' ] }>\n\t\t\t{ __( 'Add blocks' ) }\n\t\t</Text>\n\t);\n\n\treturn (\n\t\t<ToolbarButton\n\t\t\ttitle={ _x(\n\t\t\t\t'Add block',\n\t\t\t\t'Generic label for block inserter button'\n\t\t\t) }\n\t\t\ticon={ <Icon icon={ plusCircleFilled } style={ style } /> }\n\t\t\tonClick={ onToggle }\n\t\t\textraProps={ {\n\t\t\t\thint: __( 'Double tap to add a block' ),\n\t\t\t\t// testID is present to disambiguate this element for native UI tests. It's not\n\t\t\t\t// usually required for components. See: https://git.io/JeQ7G.\n\t\t\t\ttestID: 'add-block-button',\n\t\t\t\tonLongPress,\n\t\t\t} }\n\t\t\tisDisabled={ disabled }\n\t\t\t{ ...expandedModeViewProps }\n\t\t>\n\t\t\t{ useExpandedMode && expandedModeViewText }\n\t\t</ToolbarButton>\n\t);\n};\n\nexport class Inserter extends Component {\n\tconstructor() {\n\t\tsuper( ...arguments );\n\n\t\tthis.onToggle = this.onToggle.bind( this );\n\t\tthis.renderInserterToggle = this.renderInserterToggle.bind( this );\n\t\tthis.renderContent = this.renderContent.bind( this );\n\t}\n\n\tgetInsertionOptions() {\n\t\tconst addBeforeOption = {\n\t\t\tvalue: 'before',\n\t\t\tlabel: __( 'Add Block Before' ),\n\t\t\ticon: plusCircle,\n\t\t};\n\n\t\tconst replaceCurrentOption = {\n\t\t\tvalue: 'replace',\n\t\t\tlabel: __( 'Replace Current Block' ),\n\t\t\ticon: plusCircleFilled,\n\t\t};\n\n\t\tconst addAfterOption = {\n\t\t\tvalue: 'after',\n\t\t\tlabel: __( 'Add Block After' ),\n\t\t\ticon: plusCircle,\n\t\t};\n\n\t\tconst addToBeginningOption = {\n\t\t\tvalue: 'start',\n\t\t\tlabel: __( 'Add To Beginning' ),\n\t\t\ticon: insertBefore,\n\t\t};\n\n\t\tconst addToEndOption = {\n\t\t\tvalue: 'end',\n\t\t\tlabel: __( 'Add To End' ),\n\t\t\ticon: insertAfter,\n\t\t};\n\n\t\tconst { isAnyBlockSelected, isSelectedBlockReplaceable } = this.props;\n\t\tif ( isAnyBlockSelected ) {\n\t\t\tif ( isSelectedBlockReplaceable ) {\n\t\t\t\treturn [\n\t\t\t\t\taddToBeginningOption,\n\t\t\t\t\taddBeforeOption,\n\t\t\t\t\treplaceCurrentOption,\n\t\t\t\t\taddAfterOption,\n\t\t\t\t\taddToEndOption,\n\t\t\t\t];\n\t\t\t}\n\t\t\treturn [\n\t\t\t\taddToBeginningOption,\n\t\t\t\taddBeforeOption,\n\t\t\t\taddAfterOption,\n\t\t\t\taddToEndOption,\n\t\t\t];\n\t\t}\n\t\treturn [ addToBeginningOption, addToEndOption ];\n\t}\n\n\tgetInsertionIndex( insertionType ) {\n\t\tconst {\n\t\t\tinsertionIndexDefault,\n\t\t\tinsertionIndexStart,\n\t\t\tinsertionIndexBefore,\n\t\t\tinsertionIndexAfter,\n\t\t\tinsertionIndexEnd,\n\t\t} = this.props;\n\t\tif ( insertionType === 'start' ) {\n\t\t\treturn insertionIndexStart;\n\t\t}\n\t\tif ( insertionType === 'before' || insertionType === 'replace' ) {\n\t\t\treturn insertionIndexBefore;\n\t\t}\n\t\tif ( insertionType === 'after' ) {\n\t\t\treturn insertionIndexAfter;\n\t\t}\n\t\tif ( insertionType === 'end' ) {\n\t\t\treturn insertionIndexEnd;\n\t\t}\n\t\treturn insertionIndexDefault;\n\t}\n\n\tshouldReplaceBlock( insertionType ) {\n\t\tconst { isSelectedBlockReplaceable } = this.props;\n\t\tif ( insertionType === 'replace' ) {\n\t\t\treturn true;\n\t\t}\n\t\tif ( insertionType === 'default' && isSelectedBlockReplaceable ) {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tonToggle( isOpen ) {\n\t\tconst { blockTypeImpressions, onToggle, updateSettings } = this.props;\n\n\t\tif ( ! isOpen ) {\n\t\t\tconst impressionsRemain = Object.values(\n\t\t\t\tblockTypeImpressions\n\t\t\t).some( ( count ) => count > 0 );\n\n\t\t\tif ( impressionsRemain ) {\n\t\t\t\tconst decrementedImpressions = Object.entries(\n\t\t\t\t\tblockTypeImpressions\n\t\t\t\t).reduce(\n\t\t\t\t\t( acc, [ blockName, count ] ) => ( {\n\t\t\t\t\t\t...acc,\n\t\t\t\t\t\t[ blockName ]: Math.max( count - 1, 0 ),\n\t\t\t\t\t} ),\n\t\t\t\t\t{}\n\t\t\t\t);\n\n\t\t\t\t// Persist block type impression to JavaScript store.\n\t\t\t\tupdateSettings( {\n\t\t\t\t\timpressions: decrementedImpressions,\n\t\t\t\t} );\n\n\t\t\t\t// Persist block type impression count to native app store.\n\t\t\t\tsetBlockTypeImpressions( decrementedImpressions );\n\t\t\t}\n\t\t}\n\n\t\t// Surface toggle callback to parent component.\n\t\tif ( onToggle ) {\n\t\t\tonToggle( isOpen );\n\t\t}\n\t\tthis.onInserterToggledAnnouncement( isOpen );\n\t}\n\n\tonInserterToggledAnnouncement( isOpen ) {\n\t\tAccessibilityInfo.isScreenReaderEnabled().done( ( isEnabled ) => {\n\t\t\tif ( isEnabled ) {\n\t\t\t\tconst isIOS = Platform.OS === 'ios';\n\t\t\t\tconst announcement = isOpen\n\t\t\t\t\t? __( 'Scrollable block menu opened. Select a block.' )\n\t\t\t\t\t: __( 'Scrollable block menu closed.' );\n\t\t\t\tdelay(\n\t\t\t\t\t() =>\n\t\t\t\t\t\tAccessibilityInfo.announceForAccessibility(\n\t\t\t\t\t\t\tannouncement\n\t\t\t\t\t\t),\n\t\t\t\t\tisIOS ? VOICE_OVER_ANNOUNCEMENT_DELAY : 0\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Render callback to display Dropdown toggle element.\n\t *\n\t * @param {Object} options\n\t * @param {Function} options.onToggle Callback to invoke when toggle is\n\t * pressed.\n\t * @param {boolean} options.isOpen Whether dropdown is currently open.\n\t *\n\t * @return {WPElement} Dropdown toggle element.\n\t */\n\trenderInserterToggle( { onToggle, isOpen } ) {\n\t\tconst {\n\t\t\tdisabled,\n\t\t\trenderToggle = defaultRenderToggle,\n\t\t\tgetStylesFromColorScheme,\n\t\t\tshowSeparator,\n\t\t\tuseExpandedMode,\n\t\t} = this.props;\n\t\tif ( showSeparator && isOpen ) {\n\t\t\treturn <BlockInsertionPoint />;\n\t\t}\n\t\tconst style = useExpandedMode\n\t\t\t? styles[ 'inserter-menu__add-block-button-icon--expanded' ]\n\t\t\t: getStylesFromColorScheme(\n\t\t\t\t\tstyles[ 'inserter-menu__add-block-button-icon' ],\n\t\t\t\t\tstyles[ 'inserter-menu__add-block-button-icon--dark' ]\n\t\t\t );\n\n\t\tconst containerStyle = getStylesFromColorScheme(\n\t\t\tstyles[ 'inserter-menu__add-block-button' ],\n\t\t\tstyles[ 'inserter-menu__add-block-button--dark' ]\n\t\t);\n\n\t\tconst onPress = () => {\n\t\t\tthis.setState(\n\t\t\t\t{\n\t\t\t\t\tdestinationRootClientId: this.props.destinationRootClientId,\n\t\t\t\t\tshouldReplaceBlock: this.shouldReplaceBlock( 'default' ),\n\t\t\t\t\tinsertionIndex: this.getInsertionIndex( 'default' ),\n\t\t\t\t},\n\t\t\t\tonToggle\n\t\t\t);\n\t\t};\n\n\t\tconst onLongPress = () => {\n\t\t\tif ( this.picker ) {\n\t\t\t\tthis.picker.presentPicker();\n\t\t\t}\n\t\t};\n\n\t\tconst onPickerSelect = ( insertionType ) => {\n\t\t\tthis.setState(\n\t\t\t\t{\n\t\t\t\t\tdestinationRootClientId: this.props.destinationRootClientId,\n\t\t\t\t\tshouldReplaceBlock: this.shouldReplaceBlock(\n\t\t\t\t\t\tinsertionType\n\t\t\t\t\t),\n\t\t\t\t\tinsertionIndex: this.getInsertionIndex( insertionType ),\n\t\t\t\t},\n\t\t\t\tonToggle\n\t\t\t);\n\t\t};\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{ renderToggle( {\n\t\t\t\t\tonToggle: onPress,\n\t\t\t\t\tisOpen,\n\t\t\t\t\tdisabled,\n\t\t\t\t\tstyle,\n\t\t\t\t\tcontainerStyle,\n\t\t\t\t\tonLongPress,\n\t\t\t\t\tuseExpandedMode,\n\t\t\t\t} ) }\n\t\t\t\t<Picker\n\t\t\t\t\tref={ ( instance ) => ( this.picker = instance ) }\n\t\t\t\t\toptions={ this.getInsertionOptions() }\n\t\t\t\t\tonChange={ onPickerSelect }\n\t\t\t\t\thideCancelButton\n\t\t\t\t/>\n\t\t\t</>\n\t\t);\n\t}\n\n\t/**\n\t * Render callback to display Dropdown content element.\n\t *\n\t * @param {Object} options\n\t * @param {Function} options.onClose Callback to invoke when dropdown is\n\t * closed.\n\t * @param {boolean} options.isOpen Whether dropdown is currently open.\n\t *\n\t * @return {WPElement} Dropdown content element.\n\t */\n\trenderContent( { onClose, isOpen } ) {\n\t\tconst { clientId, isAppender } = this.props;\n\t\tconst {\n\t\t\tdestinationRootClientId,\n\t\t\tshouldReplaceBlock,\n\t\t\tinsertionIndex,\n\t\t} = this.state;\n\t\treturn (\n\t\t\t<InserterMenu\n\t\t\t\tisOpen={ isOpen }\n\t\t\t\tonSelect={ onClose }\n\t\t\t\tonDismiss={ onClose }\n\t\t\t\trootClientId={ destinationRootClientId }\n\t\t\t\tclientId={ clientId }\n\t\t\t\tisAppender={ isAppender }\n\t\t\t\tshouldReplaceBlock={ shouldReplaceBlock }\n\t\t\t\tinsertionIndex={ insertionIndex }\n\t\t\t/>\n\t\t);\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<Dropdown\n\t\t\t\tonToggle={ this.onToggle }\n\t\t\t\theaderTitle={ __( 'Add a block' ) }\n\t\t\t\trenderToggle={ this.renderInserterToggle }\n\t\t\t\trenderContent={ this.renderContent }\n\t\t\t/>\n\t\t);\n\t}\n}\n\nexport default compose( [\n\twithDispatch( ( dispatch ) => {\n\t\tconst { updateSettings } = dispatch( blockEditorStore );\n\t\treturn { updateSettings };\n\t} ),\n\twithSelect( ( select, { clientId, isAppender, rootClientId } ) => {\n\t\tconst {\n\t\t\tgetBlockRootClientId,\n\t\t\tgetBlockSelectionEnd,\n\t\t\tgetBlockOrder,\n\t\t\tgetBlockIndex,\n\t\t\tgetBlock,\n\t\t\tgetSettings: getBlockEditorSettings,\n\t\t} = select( blockEditorStore );\n\n\t\tconst end = getBlockSelectionEnd();\n\t\t// `end` argument (id) can refer to the component which is removed\n\t\t// due to pressing `undo` button, that's why we need to check\n\t\t// if `getBlock( end) is valid, otherwise `null` is passed\n\t\tconst isAnyBlockSelected = ! isAppender && end && getBlock( end );\n\t\tconst destinationRootClientId = isAnyBlockSelected\n\t\t\t? getBlockRootClientId( end )\n\t\t\t: rootClientId;\n\t\tconst selectedBlockIndex = getBlockIndex( end );\n\t\tconst endOfRootIndex = getBlockOrder( rootClientId ).length;\n\t\tconst isSelectedUnmodifiedDefaultBlock = isAnyBlockSelected\n\t\t\t? isUnmodifiedDefaultBlock( getBlock( end ) )\n\t\t\t: undefined;\n\n\t\tfunction getDefaultInsertionIndex() {\n\t\t\tconst {\n\t\t\t\t__experimentalShouldInsertAtTheTop: shouldInsertAtTheTop,\n\t\t\t} = getBlockEditorSettings();\n\n\t\t\t// If post title is selected insert as first block.\n\t\t\tif ( shouldInsertAtTheTop ) {\n\t\t\t\treturn 0;\n\t\t\t}\n\n\t\t\t// If the clientId is defined, we insert at the position of the block.\n\t\t\tif ( clientId ) {\n\t\t\t\treturn getBlockIndex( clientId );\n\t\t\t}\n\n\t\t\t// If there is a selected block,\n\t\t\tif ( isAnyBlockSelected ) {\n\t\t\t\t// And the last selected block is unmodified (empty), it will be replaced.\n\t\t\t\tif ( isSelectedUnmodifiedDefaultBlock ) {\n\t\t\t\t\treturn selectedBlockIndex;\n\t\t\t\t}\n\n\t\t\t\t// We insert after the selected block.\n\t\t\t\treturn selectedBlockIndex + 1;\n\t\t\t}\n\n\t\t\t// Otherwise, we insert at the end of the current rootClientId.\n\t\t\treturn endOfRootIndex;\n\t\t}\n\n\t\tconst insertionIndexStart = 0;\n\n\t\tconst insertionIndexBefore = isAnyBlockSelected\n\t\t\t? selectedBlockIndex\n\t\t\t: insertionIndexStart;\n\n\t\tconst insertionIndexAfter = isAnyBlockSelected\n\t\t\t? selectedBlockIndex + 1\n\t\t\t: endOfRootIndex;\n\n\t\tconst insertionIndexEnd = endOfRootIndex;\n\n\t\treturn {\n\t\t\tblockTypeImpressions: getBlockEditorSettings().impressions,\n\t\t\tdestinationRootClientId,\n\t\t\tinsertionIndexDefault: getDefaultInsertionIndex(),\n\t\t\tinsertionIndexBefore,\n\t\t\tinsertionIndexAfter,\n\t\t\tinsertionIndexStart,\n\t\t\tinsertionIndexEnd,\n\t\t\tisAnyBlockSelected: !! isAnyBlockSelected,\n\t\t\tisSelectedBlockReplaceable: isSelectedUnmodifiedDefaultBlock,\n\t\t};\n\t} ),\n\n\twithPreferredColorScheme,\n] )( Inserter );\n"]}
|
|
@@ -30,7 +30,8 @@ export default function QuickInserter(_ref) {
|
|
|
30
30
|
onSelect,
|
|
31
31
|
rootClientId,
|
|
32
32
|
clientId,
|
|
33
|
-
isAppender
|
|
33
|
+
isAppender,
|
|
34
|
+
prioritizePatterns
|
|
34
35
|
} = _ref;
|
|
35
36
|
const [filterValue, setFilterValue] = useState('');
|
|
36
37
|
const [destinationRootClientId, onInsertBlocks] = useInsertionPoint({
|
|
@@ -43,8 +44,7 @@ export default function QuickInserter(_ref) {
|
|
|
43
44
|
const [patterns] = usePatternsState(onInsertBlocks, destinationRootClientId);
|
|
44
45
|
const {
|
|
45
46
|
setInserterIsOpened,
|
|
46
|
-
insertionIndex
|
|
47
|
-
prioritizePatterns
|
|
47
|
+
insertionIndex
|
|
48
48
|
} = useSelect(select => {
|
|
49
49
|
const {
|
|
50
50
|
getSettings,
|
|
@@ -56,10 +56,9 @@ export default function QuickInserter(_ref) {
|
|
|
56
56
|
const blockCount = getBlockCount();
|
|
57
57
|
return {
|
|
58
58
|
setInserterIsOpened: settings.__experimentalSetIsInserterOpened,
|
|
59
|
-
prioritizePatterns: settings.__experimentalPreferPatternsOnRoot && !rootClientId && index > 0 && (index < blockCount || blockCount === 0),
|
|
60
59
|
insertionIndex: index === -1 ? blockCount : index
|
|
61
60
|
};
|
|
62
|
-
}, [clientId
|
|
61
|
+
}, [clientId]);
|
|
63
62
|
const showPatterns = patterns.length && (!!filterValue || prioritizePatterns);
|
|
64
63
|
const showSearch = showPatterns && patterns.length > SEARCH_THRESHOLD || blockTypes.length > SEARCH_THRESHOLD;
|
|
65
64
|
useEffect(() => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/inserter/quick-inserter.js"],"names":["classnames","useState","useEffect","__","Button","SearchControl","useSelect","InserterSearchResults","useInsertionPoint","usePatternsState","useBlockTypesState","store","blockEditorStore","SEARCH_THRESHOLD","SHOWN_BLOCK_TYPES","SHOWN_BLOCK_PATTERNS","SHOWN_BLOCK_PATTERNS_WITH_PRIORITIZATION","QuickInserter","onSelect","rootClientId","clientId","isAppender","filterValue","setFilterValue","destinationRootClientId","onInsertBlocks","blockTypes","patterns","setInserterIsOpened","insertionIndex","
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/inserter/quick-inserter.js"],"names":["classnames","useState","useEffect","__","Button","SearchControl","useSelect","InserterSearchResults","useInsertionPoint","usePatternsState","useBlockTypesState","store","blockEditorStore","SEARCH_THRESHOLD","SHOWN_BLOCK_TYPES","SHOWN_BLOCK_PATTERNS","SHOWN_BLOCK_PATTERNS_WITH_PRIORITIZATION","QuickInserter","onSelect","rootClientId","clientId","isAppender","prioritizePatterns","filterValue","setFilterValue","destinationRootClientId","onInsertBlocks","blockTypes","patterns","setInserterIsOpened","insertionIndex","select","getSettings","getBlockIndex","getBlockCount","settings","index","blockCount","__experimentalSetIsInserterOpened","showPatterns","length","showSearch","onBrowseAll","maxBlockPatterns","value"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useState, useEffect } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { Button, SearchControl } from '@wordpress/components';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport InserterSearchResults from './search-results';\nimport useInsertionPoint from './hooks/use-insertion-point';\nimport usePatternsState from './hooks/use-patterns-state';\nimport useBlockTypesState from './hooks/use-block-types-state';\nimport { store as blockEditorStore } from '../../store';\n\nconst SEARCH_THRESHOLD = 6;\nconst SHOWN_BLOCK_TYPES = 6;\nconst SHOWN_BLOCK_PATTERNS = 2;\nconst SHOWN_BLOCK_PATTERNS_WITH_PRIORITIZATION = 4;\n\nexport default function QuickInserter( {\n\tonSelect,\n\trootClientId,\n\tclientId,\n\tisAppender,\n\tprioritizePatterns,\n} ) {\n\tconst [ filterValue, setFilterValue ] = useState( '' );\n\tconst [ destinationRootClientId, onInsertBlocks ] = useInsertionPoint( {\n\t\tonSelect,\n\t\trootClientId,\n\t\tclientId,\n\t\tisAppender,\n\t} );\n\tconst [ blockTypes ] = useBlockTypesState(\n\t\tdestinationRootClientId,\n\t\tonInsertBlocks\n\t);\n\n\tconst [ patterns ] = usePatternsState(\n\t\tonInsertBlocks,\n\t\tdestinationRootClientId\n\t);\n\n\tconst { setInserterIsOpened, insertionIndex } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getSettings, getBlockIndex, getBlockCount } = select(\n\t\t\t\tblockEditorStore\n\t\t\t);\n\t\t\tconst settings = getSettings();\n\t\t\tconst index = getBlockIndex( clientId );\n\t\t\tconst blockCount = getBlockCount();\n\n\t\t\treturn {\n\t\t\t\tsetInserterIsOpened: settings.__experimentalSetIsInserterOpened,\n\t\t\t\tinsertionIndex: index === -1 ? blockCount : index,\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tconst showPatterns =\n\t\tpatterns.length && ( !! filterValue || prioritizePatterns );\n\tconst showSearch =\n\t\t( showPatterns && patterns.length > SEARCH_THRESHOLD ) ||\n\t\tblockTypes.length > SEARCH_THRESHOLD;\n\n\tuseEffect( () => {\n\t\tif ( setInserterIsOpened ) {\n\t\t\tsetInserterIsOpened( false );\n\t\t}\n\t}, [ setInserterIsOpened ] );\n\n\t// When clicking Browse All select the appropriate block so as\n\t// the insertion point can work as expected.\n\tconst onBrowseAll = () => {\n\t\tsetInserterIsOpened( { rootClientId, insertionIndex, filterValue } );\n\t};\n\n\tlet maxBlockPatterns = 0;\n\tif ( showPatterns ) {\n\t\tmaxBlockPatterns = prioritizePatterns\n\t\t\t? SHOWN_BLOCK_PATTERNS_WITH_PRIORITIZATION\n\t\t\t: SHOWN_BLOCK_PATTERNS;\n\t}\n\n\treturn (\n\t\t<div\n\t\t\tclassName={ classnames( 'block-editor-inserter__quick-inserter', {\n\t\t\t\t'has-search': showSearch,\n\t\t\t\t'has-expand': setInserterIsOpened,\n\t\t\t} ) }\n\t\t>\n\t\t\t{ showSearch && (\n\t\t\t\t<SearchControl\n\t\t\t\t\tclassName=\"block-editor-inserter__search\"\n\t\t\t\t\tvalue={ filterValue }\n\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\tsetFilterValue( value );\n\t\t\t\t\t} }\n\t\t\t\t\tlabel={ __( 'Search for blocks and patterns' ) }\n\t\t\t\t\tplaceholder={ __( 'Search' ) }\n\t\t\t\t/>\n\t\t\t) }\n\n\t\t\t<div className=\"block-editor-inserter__quick-inserter-results\">\n\t\t\t\t<InserterSearchResults\n\t\t\t\t\tfilterValue={ filterValue }\n\t\t\t\t\tonSelect={ onSelect }\n\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\tisAppender={ isAppender }\n\t\t\t\t\tmaxBlockPatterns={ maxBlockPatterns }\n\t\t\t\t\tmaxBlockTypes={ SHOWN_BLOCK_TYPES }\n\t\t\t\t\tisDraggable={ false }\n\t\t\t\t\tprioritizePatterns={ prioritizePatterns }\n\t\t\t\t/>\n\t\t\t</div>\n\n\t\t\t{ setInserterIsOpened && (\n\t\t\t\t<Button\n\t\t\t\t\tclassName=\"block-editor-inserter__quick-inserter-expand\"\n\t\t\t\t\tonClick={ onBrowseAll }\n\t\t\t\t\taria-label={ __(\n\t\t\t\t\t\t'Browse all. This will open the main inserter panel in the editor toolbar.'\n\t\t\t\t\t) }\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Browse all' ) }\n\t\t\t\t</Button>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n"]}
|
|
@@ -8,11 +8,12 @@ import classnames from 'classnames';
|
|
|
8
8
|
* WordPress dependencies
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
|
+
import { hasBlockSupport } from '@wordpress/blocks';
|
|
11
12
|
import { __experimentalTreeGridCell as TreeGridCell, __experimentalTreeGridItem as TreeGridItem } from '@wordpress/components';
|
|
12
13
|
import { useInstanceId } from '@wordpress/compose';
|
|
13
14
|
import { moreVertical } from '@wordpress/icons';
|
|
14
15
|
import { useState, useRef, useEffect, useCallback, memo } from '@wordpress/element';
|
|
15
|
-
import { useDispatch } from '@wordpress/data';
|
|
16
|
+
import { useDispatch, useSelect } from '@wordpress/data';
|
|
16
17
|
import { sprintf, __ } from '@wordpress/i18n';
|
|
17
18
|
/**
|
|
18
19
|
* Internal dependencies
|
|
@@ -56,6 +57,11 @@ function ListViewBlock(_ref) {
|
|
|
56
57
|
toggleBlockHighlight
|
|
57
58
|
} = useDispatch(blockEditorStore);
|
|
58
59
|
const blockInformation = useBlockDisplayInformation(clientId);
|
|
60
|
+
const blockName = useSelect(select => select(blockEditorStore).getBlockName(clientId), [clientId]); // When a block hides its toolbar it also hides the block settings menu,
|
|
61
|
+
// since that menu is part of the toolbar in the editor canvas.
|
|
62
|
+
// List View respects this by also hiding the block settings menu.
|
|
63
|
+
|
|
64
|
+
const showBlockActions = hasBlockSupport(blockName, '__experimentalToolbar', true);
|
|
59
65
|
const {
|
|
60
66
|
isLocked
|
|
61
67
|
} = useBlockLock(clientId);
|
|
@@ -74,9 +80,6 @@ function ListViewBlock(_ref) {
|
|
|
74
80
|
const settingsAriaLabel = blockInformation ? sprintf( // translators: %s: The title of the block.
|
|
75
81
|
__('Options for %s block'), blockInformation.title) : __('Options');
|
|
76
82
|
const {
|
|
77
|
-
__experimentalFeatures: withExperimentalFeatures,
|
|
78
|
-
__experimentalPersistentListViewFeatures: withExperimentalPersistentListViewFeatures,
|
|
79
|
-
__experimentalHideContainerBlockActions: hideContainerBlockActions,
|
|
80
83
|
isTreeGridMounted,
|
|
81
84
|
expand,
|
|
82
85
|
collapse
|
|
@@ -93,19 +96,18 @@ function ListViewBlock(_ref) {
|
|
|
93
96
|
// try to steal the focus from the editor canvas.
|
|
94
97
|
|
|
95
98
|
useEffect(() => {
|
|
96
|
-
if (
|
|
99
|
+
if (!isTreeGridMounted && isSelected) {
|
|
97
100
|
cellRef.current.focus();
|
|
98
101
|
}
|
|
99
102
|
}, []);
|
|
100
|
-
const highlightBlock = withExperimentalPersistentListViewFeatures ? toggleBlockHighlight : () => {};
|
|
101
103
|
const onMouseEnter = useCallback(() => {
|
|
102
104
|
setIsHovered(true);
|
|
103
|
-
|
|
104
|
-
}, [clientId, setIsHovered,
|
|
105
|
+
toggleBlockHighlight(clientId, true);
|
|
106
|
+
}, [clientId, setIsHovered, toggleBlockHighlight]);
|
|
105
107
|
const onMouseLeave = useCallback(() => {
|
|
106
108
|
setIsHovered(false);
|
|
107
|
-
|
|
108
|
-
}, [clientId, setIsHovered,
|
|
109
|
+
toggleBlockHighlight(clientId, false);
|
|
110
|
+
}, [clientId, setIsHovered, toggleBlockHighlight]);
|
|
109
111
|
const selectEditorBlock = useCallback(event => {
|
|
110
112
|
selectBlock(event, clientId);
|
|
111
113
|
event.preventDefault();
|
|
@@ -124,14 +126,11 @@ function ListViewBlock(_ref) {
|
|
|
124
126
|
expand(clientId);
|
|
125
127
|
}
|
|
126
128
|
}, [clientId, expand, collapse, isExpanded]);
|
|
127
|
-
const showBlockActions = withExperimentalFeatures && ( // hide actions for blocks like core/widget-areas
|
|
128
|
-
!hideContainerBlockActions || hideContainerBlockActions && level > 1);
|
|
129
|
-
const hideBlockActions = withExperimentalFeatures && !showBlockActions;
|
|
130
129
|
let colSpan;
|
|
131
130
|
|
|
132
131
|
if (hasRenderedMovers) {
|
|
133
132
|
colSpan = 2;
|
|
134
|
-
} else if (
|
|
133
|
+
} else if (!showBlockActions) {
|
|
135
134
|
colSpan = 3;
|
|
136
135
|
}
|
|
137
136
|
|
|
@@ -139,9 +138,9 @@ function ListViewBlock(_ref) {
|
|
|
139
138
|
'is-selected': isSelected,
|
|
140
139
|
'is-first-selected': isFirstSelectedBlock,
|
|
141
140
|
'is-last-selected': isLastSelectedBlock,
|
|
142
|
-
'is-branch-selected':
|
|
141
|
+
'is-branch-selected': isBranchSelected,
|
|
143
142
|
'is-dragging': isDragged,
|
|
144
|
-
'has-single-cell':
|
|
143
|
+
'has-single-cell': !showBlockActions
|
|
145
144
|
}); // Only include all selected blocks if the currently clicked on block
|
|
146
145
|
// is one of the selected blocks. This ensures that if a user attempts
|
|
147
146
|
// to alter a block that isn't part of the selection, they're still able
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/list-view/block.js"],"names":["classnames","__experimentalTreeGridCell","TreeGridCell","__experimentalTreeGridItem","TreeGridItem","useInstanceId","moreVertical","useState","useRef","useEffect","useCallback","memo","useDispatch","sprintf","__","ListViewLeaf","BlockMoverUpButton","BlockMoverDownButton","ListViewBlockContents","BlockSettingsDropdown","useListViewContext","getBlockPositionDescription","store","blockEditorStore","useBlockDisplayInformation","useBlockLock","ListViewBlock","block","isDragged","isSelected","isBranchSelected","selectBlock","position","level","rowCount","siblingBlockCount","showBlockMovers","path","isExpanded","selectedClientIds","preventAnnouncement","cellRef","isHovered","setIsHovered","clientId","isFirstSelectedBlock","isLastSelectedBlock","length","toggleBlockHighlight","blockInformation","isLocked","instanceId","descriptionId","blockPositionDescription","blockAriaLabel","title","settingsAriaLabel","__experimentalFeatures","withExperimentalFeatures","__experimentalPersistentListViewFeatures","withExperimentalPersistentListViewFeatures","__experimentalHideContainerBlockActions","hideContainerBlockActions","isTreeGridMounted","expand","collapse","hasSiblings","hasRenderedMovers","moverCellClassName","listViewBlockSettingsClassName","current","focus","highlightBlock","onMouseEnter","onMouseLeave","selectEditorBlock","event","preventDefault","updateSelection","newClientId","undefined","toggleExpanded","stopPropagation","showBlockActions","hideBlockActions","colSpan","classes","dropdownClientIds","includes","ref","tabIndex","onFocus","className"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalTreeGridCell as TreeGridCell,\n\t__experimentalTreeGridItem as TreeGridItem,\n} from '@wordpress/components';\nimport { useInstanceId } from '@wordpress/compose';\nimport { moreVertical } from '@wordpress/icons';\nimport {\n\tuseState,\n\tuseRef,\n\tuseEffect,\n\tuseCallback,\n\tmemo,\n} from '@wordpress/element';\nimport { useDispatch } from '@wordpress/data';\nimport { sprintf, __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport ListViewLeaf from './leaf';\nimport {\n\tBlockMoverUpButton,\n\tBlockMoverDownButton,\n} from '../block-mover/button';\nimport ListViewBlockContents from './block-contents';\nimport BlockSettingsDropdown from '../block-settings-menu/block-settings-dropdown';\nimport { useListViewContext } from './context';\nimport { getBlockPositionDescription } from './utils';\nimport { store as blockEditorStore } from '../../store';\nimport useBlockDisplayInformation from '../use-block-display-information';\nimport { useBlockLock } from '../block-lock';\n\nfunction ListViewBlock( {\n\tblock,\n\tisDragged,\n\tisSelected,\n\tisBranchSelected,\n\tselectBlock,\n\tposition,\n\tlevel,\n\trowCount,\n\tsiblingBlockCount,\n\tshowBlockMovers,\n\tpath,\n\tisExpanded,\n\tselectedClientIds,\n\tpreventAnnouncement,\n} ) {\n\tconst cellRef = useRef( null );\n\tconst [ isHovered, setIsHovered ] = useState( false );\n\tconst { clientId } = block;\n\tconst isFirstSelectedBlock =\n\t\tisSelected && selectedClientIds[ 0 ] === clientId;\n\tconst isLastSelectedBlock =\n\t\tisSelected &&\n\t\tselectedClientIds[ selectedClientIds.length - 1 ] === clientId;\n\n\tconst { toggleBlockHighlight } = useDispatch( blockEditorStore );\n\n\tconst blockInformation = useBlockDisplayInformation( clientId );\n\tconst { isLocked } = useBlockLock( clientId );\n\tconst instanceId = useInstanceId( ListViewBlock );\n\tconst descriptionId = `list-view-block-select-button__${ instanceId }`;\n\tconst blockPositionDescription = getBlockPositionDescription(\n\t\tposition,\n\t\tsiblingBlockCount,\n\t\tlevel\n\t);\n\n\tlet blockAriaLabel = __( 'Link' );\n\tif ( blockInformation ) {\n\t\tblockAriaLabel = isLocked\n\t\t\t? sprintf(\n\t\t\t\t\t// translators: %s: The title of the block. This string indicates a link to select the locked block.\n\t\t\t\t\t__( '%s link (locked)' ),\n\t\t\t\t\tblockInformation.title\n\t\t\t )\n\t\t\t: sprintf(\n\t\t\t\t\t// translators: %s: The title of the block. This string indicates a link to select the block.\n\t\t\t\t\t__( '%s link' ),\n\t\t\t\t\tblockInformation.title\n\t\t\t );\n\t}\n\n\tconst settingsAriaLabel = blockInformation\n\t\t? sprintf(\n\t\t\t\t// translators: %s: The title of the block.\n\t\t\t\t__( 'Options for %s block' ),\n\t\t\t\tblockInformation.title\n\t\t )\n\t\t: __( 'Options' );\n\n\tconst {\n\t\t__experimentalFeatures: withExperimentalFeatures,\n\t\t__experimentalPersistentListViewFeatures: withExperimentalPersistentListViewFeatures,\n\t\t__experimentalHideContainerBlockActions: hideContainerBlockActions,\n\t\tisTreeGridMounted,\n\t\texpand,\n\t\tcollapse,\n\t} = useListViewContext();\n\n\tconst hasSiblings = siblingBlockCount > 0;\n\tconst hasRenderedMovers = showBlockMovers && hasSiblings;\n\tconst moverCellClassName = classnames(\n\t\t'block-editor-list-view-block__mover-cell',\n\t\t{ 'is-visible': isHovered || isSelected }\n\t);\n\n\tconst listViewBlockSettingsClassName = classnames(\n\t\t'block-editor-list-view-block__menu-cell',\n\t\t{ 'is-visible': isHovered || isFirstSelectedBlock }\n\t);\n\n\t// If ListView has experimental features related to the Persistent List View,\n\t// only focus the selected list item on mount; otherwise the list would always\n\t// try to steal the focus from the editor canvas.\n\tuseEffect( () => {\n\t\tif (\n\t\t\twithExperimentalPersistentListViewFeatures &&\n\t\t\t! isTreeGridMounted &&\n\t\t\tisSelected\n\t\t) {\n\t\t\tcellRef.current.focus();\n\t\t}\n\t}, [] );\n\n\tconst highlightBlock = withExperimentalPersistentListViewFeatures\n\t\t? toggleBlockHighlight\n\t\t: () => {};\n\n\tconst onMouseEnter = useCallback( () => {\n\t\tsetIsHovered( true );\n\t\thighlightBlock( clientId, true );\n\t}, [ clientId, setIsHovered, highlightBlock ] );\n\tconst onMouseLeave = useCallback( () => {\n\t\tsetIsHovered( false );\n\t\thighlightBlock( clientId, false );\n\t}, [ clientId, setIsHovered, highlightBlock ] );\n\n\tconst selectEditorBlock = useCallback(\n\t\t( event ) => {\n\t\t\tselectBlock( event, clientId );\n\t\t\tevent.preventDefault();\n\t\t},\n\t\t[ clientId, selectBlock ]\n\t);\n\n\tconst updateSelection = useCallback(\n\t\t( newClientId ) => {\n\t\t\tselectBlock( undefined, newClientId );\n\t\t},\n\t\t[ selectBlock ]\n\t);\n\n\tconst toggleExpanded = useCallback(\n\t\t( event ) => {\n\t\t\t// Prevent shift+click from opening link in a new window when toggling.\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\tif ( isExpanded === true ) {\n\t\t\t\tcollapse( clientId );\n\t\t\t} else if ( isExpanded === false ) {\n\t\t\t\texpand( clientId );\n\t\t\t}\n\t\t},\n\t\t[ clientId, expand, collapse, isExpanded ]\n\t);\n\n\tconst showBlockActions =\n\t\twithExperimentalFeatures &&\n\t\t// hide actions for blocks like core/widget-areas\n\t\t( ! hideContainerBlockActions ||\n\t\t\t( hideContainerBlockActions && level > 1 ) );\n\n\tconst hideBlockActions = withExperimentalFeatures && ! showBlockActions;\n\n\tlet colSpan;\n\tif ( hasRenderedMovers ) {\n\t\tcolSpan = 2;\n\t} else if ( hideBlockActions ) {\n\t\tcolSpan = 3;\n\t}\n\n\tconst classes = classnames( {\n\t\t'is-selected': isSelected,\n\t\t'is-first-selected': isFirstSelectedBlock,\n\t\t'is-last-selected': isLastSelectedBlock,\n\t\t'is-branch-selected':\n\t\t\twithExperimentalPersistentListViewFeatures && isBranchSelected,\n\t\t'is-dragging': isDragged,\n\t\t'has-single-cell': hideBlockActions,\n\t} );\n\n\t// Only include all selected blocks if the currently clicked on block\n\t// is one of the selected blocks. This ensures that if a user attempts\n\t// to alter a block that isn't part of the selection, they're still able\n\t// to do so.\n\tconst dropdownClientIds = selectedClientIds.includes( clientId )\n\t\t? selectedClientIds\n\t\t: [ clientId ];\n\n\treturn (\n\t\t<ListViewLeaf\n\t\t\tclassName={ classes }\n\t\t\tonMouseEnter={ onMouseEnter }\n\t\t\tonMouseLeave={ onMouseLeave }\n\t\t\tonFocus={ onMouseEnter }\n\t\t\tonBlur={ onMouseLeave }\n\t\t\tlevel={ level }\n\t\t\tposition={ position }\n\t\t\trowCount={ rowCount }\n\t\t\tpath={ path }\n\t\t\tid={ `list-view-block-${ clientId }` }\n\t\t\tdata-block={ clientId }\n\t\t\tisExpanded={ isExpanded }\n\t\t\taria-selected={ !! isSelected }\n\t\t>\n\t\t\t<TreeGridCell\n\t\t\t\tclassName=\"block-editor-list-view-block__contents-cell\"\n\t\t\t\tcolSpan={ colSpan }\n\t\t\t\tref={ cellRef }\n\t\t\t\taria-label={ blockAriaLabel }\n\t\t\t\taria-selected={ !! isSelected }\n\t\t\t\taria-expanded={ isExpanded }\n\t\t\t\taria-describedby={ descriptionId }\n\t\t\t>\n\t\t\t\t{ ( { ref, tabIndex, onFocus } ) => (\n\t\t\t\t\t<div className=\"block-editor-list-view-block__contents-container\">\n\t\t\t\t\t\t<ListViewBlockContents\n\t\t\t\t\t\t\tblock={ block }\n\t\t\t\t\t\t\tonClick={ selectEditorBlock }\n\t\t\t\t\t\t\tonToggleExpanded={ toggleExpanded }\n\t\t\t\t\t\t\tisSelected={ isSelected }\n\t\t\t\t\t\t\tposition={ position }\n\t\t\t\t\t\t\tsiblingBlockCount={ siblingBlockCount }\n\t\t\t\t\t\t\tlevel={ level }\n\t\t\t\t\t\t\tref={ ref }\n\t\t\t\t\t\t\ttabIndex={ tabIndex }\n\t\t\t\t\t\t\tonFocus={ onFocus }\n\t\t\t\t\t\t\tisExpanded={ isExpanded }\n\t\t\t\t\t\t\tselectedClientIds={ selectedClientIds }\n\t\t\t\t\t\t\tpreventAnnouncement={ preventAnnouncement }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName=\"block-editor-list-view-block-select-button__description\"\n\t\t\t\t\t\t\tid={ descriptionId }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ blockPositionDescription }\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t) }\n\t\t\t</TreeGridCell>\n\t\t\t{ hasRenderedMovers && (\n\t\t\t\t<>\n\t\t\t\t\t<TreeGridCell\n\t\t\t\t\t\tclassName={ moverCellClassName }\n\t\t\t\t\t\twithoutGridItem\n\t\t\t\t\t>\n\t\t\t\t\t\t<TreeGridItem>\n\t\t\t\t\t\t\t{ ( { ref, tabIndex, onFocus } ) => (\n\t\t\t\t\t\t\t\t<BlockMoverUpButton\n\t\t\t\t\t\t\t\t\torientation=\"vertical\"\n\t\t\t\t\t\t\t\t\tclientIds={ [ clientId ] }\n\t\t\t\t\t\t\t\t\tref={ ref }\n\t\t\t\t\t\t\t\t\ttabIndex={ tabIndex }\n\t\t\t\t\t\t\t\t\tonFocus={ onFocus }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</TreeGridItem>\n\t\t\t\t\t\t<TreeGridItem>\n\t\t\t\t\t\t\t{ ( { ref, tabIndex, onFocus } ) => (\n\t\t\t\t\t\t\t\t<BlockMoverDownButton\n\t\t\t\t\t\t\t\t\torientation=\"vertical\"\n\t\t\t\t\t\t\t\t\tclientIds={ [ clientId ] }\n\t\t\t\t\t\t\t\t\tref={ ref }\n\t\t\t\t\t\t\t\t\ttabIndex={ tabIndex }\n\t\t\t\t\t\t\t\t\tonFocus={ onFocus }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</TreeGridItem>\n\t\t\t\t\t</TreeGridCell>\n\t\t\t\t</>\n\t\t\t) }\n\n\t\t\t{ showBlockActions && (\n\t\t\t\t<TreeGridCell\n\t\t\t\t\tclassName={ listViewBlockSettingsClassName }\n\t\t\t\t\taria-selected={ !! isSelected }\n\t\t\t\t>\n\t\t\t\t\t{ ( { ref, tabIndex, onFocus } ) => (\n\t\t\t\t\t\t<BlockSettingsDropdown\n\t\t\t\t\t\t\tclientIds={ dropdownClientIds }\n\t\t\t\t\t\t\ticon={ moreVertical }\n\t\t\t\t\t\t\tlabel={ settingsAriaLabel }\n\t\t\t\t\t\t\ttoggleProps={ {\n\t\t\t\t\t\t\t\tref,\n\t\t\t\t\t\t\t\tclassName: 'block-editor-list-view-block__menu',\n\t\t\t\t\t\t\t\ttabIndex,\n\t\t\t\t\t\t\t\tonFocus,\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tdisableOpenOnArrowDown\n\t\t\t\t\t\t\t__experimentalSelectBlock={ updateSelection }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</TreeGridCell>\n\t\t\t) }\n\t\t</ListViewLeaf>\n\t);\n}\n\nexport default memo( ListViewBlock );\n"]}
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/list-view/block.js"],"names":["classnames","hasBlockSupport","__experimentalTreeGridCell","TreeGridCell","__experimentalTreeGridItem","TreeGridItem","useInstanceId","moreVertical","useState","useRef","useEffect","useCallback","memo","useDispatch","useSelect","sprintf","__","ListViewLeaf","BlockMoverUpButton","BlockMoverDownButton","ListViewBlockContents","BlockSettingsDropdown","useListViewContext","getBlockPositionDescription","store","blockEditorStore","useBlockDisplayInformation","useBlockLock","ListViewBlock","block","isDragged","isSelected","isBranchSelected","selectBlock","position","level","rowCount","siblingBlockCount","showBlockMovers","path","isExpanded","selectedClientIds","preventAnnouncement","cellRef","isHovered","setIsHovered","clientId","isFirstSelectedBlock","isLastSelectedBlock","length","toggleBlockHighlight","blockInformation","blockName","select","getBlockName","showBlockActions","isLocked","instanceId","descriptionId","blockPositionDescription","blockAriaLabel","title","settingsAriaLabel","isTreeGridMounted","expand","collapse","hasSiblings","hasRenderedMovers","moverCellClassName","listViewBlockSettingsClassName","current","focus","onMouseEnter","onMouseLeave","selectEditorBlock","event","preventDefault","updateSelection","newClientId","undefined","toggleExpanded","stopPropagation","colSpan","classes","dropdownClientIds","includes","ref","tabIndex","onFocus","className"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { hasBlockSupport } from '@wordpress/blocks';\nimport {\n\t__experimentalTreeGridCell as TreeGridCell,\n\t__experimentalTreeGridItem as TreeGridItem,\n} from '@wordpress/components';\nimport { useInstanceId } from '@wordpress/compose';\nimport { moreVertical } from '@wordpress/icons';\nimport {\n\tuseState,\n\tuseRef,\n\tuseEffect,\n\tuseCallback,\n\tmemo,\n} from '@wordpress/element';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { sprintf, __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport ListViewLeaf from './leaf';\nimport {\n\tBlockMoverUpButton,\n\tBlockMoverDownButton,\n} from '../block-mover/button';\nimport ListViewBlockContents from './block-contents';\nimport BlockSettingsDropdown from '../block-settings-menu/block-settings-dropdown';\nimport { useListViewContext } from './context';\nimport { getBlockPositionDescription } from './utils';\nimport { store as blockEditorStore } from '../../store';\nimport useBlockDisplayInformation from '../use-block-display-information';\nimport { useBlockLock } from '../block-lock';\n\nfunction ListViewBlock( {\n\tblock,\n\tisDragged,\n\tisSelected,\n\tisBranchSelected,\n\tselectBlock,\n\tposition,\n\tlevel,\n\trowCount,\n\tsiblingBlockCount,\n\tshowBlockMovers,\n\tpath,\n\tisExpanded,\n\tselectedClientIds,\n\tpreventAnnouncement,\n} ) {\n\tconst cellRef = useRef( null );\n\tconst [ isHovered, setIsHovered ] = useState( false );\n\tconst { clientId } = block;\n\tconst isFirstSelectedBlock =\n\t\tisSelected && selectedClientIds[ 0 ] === clientId;\n\tconst isLastSelectedBlock =\n\t\tisSelected &&\n\t\tselectedClientIds[ selectedClientIds.length - 1 ] === clientId;\n\n\tconst { toggleBlockHighlight } = useDispatch( blockEditorStore );\n\n\tconst blockInformation = useBlockDisplayInformation( clientId );\n\tconst blockName = useSelect(\n\t\t( select ) => select( blockEditorStore ).getBlockName( clientId ),\n\t\t[ clientId ]\n\t);\n\n\t// When a block hides its toolbar it also hides the block settings menu,\n\t// since that menu is part of the toolbar in the editor canvas.\n\t// List View respects this by also hiding the block settings menu.\n\tconst showBlockActions = hasBlockSupport(\n\t\tblockName,\n\t\t'__experimentalToolbar',\n\t\ttrue\n\t);\n\tconst { isLocked } = useBlockLock( clientId );\n\tconst instanceId = useInstanceId( ListViewBlock );\n\tconst descriptionId = `list-view-block-select-button__${ instanceId }`;\n\tconst blockPositionDescription = getBlockPositionDescription(\n\t\tposition,\n\t\tsiblingBlockCount,\n\t\tlevel\n\t);\n\n\tlet blockAriaLabel = __( 'Link' );\n\tif ( blockInformation ) {\n\t\tblockAriaLabel = isLocked\n\t\t\t? sprintf(\n\t\t\t\t\t// translators: %s: The title of the block. This string indicates a link to select the locked block.\n\t\t\t\t\t__( '%s link (locked)' ),\n\t\t\t\t\tblockInformation.title\n\t\t\t )\n\t\t\t: sprintf(\n\t\t\t\t\t// translators: %s: The title of the block. This string indicates a link to select the block.\n\t\t\t\t\t__( '%s link' ),\n\t\t\t\t\tblockInformation.title\n\t\t\t );\n\t}\n\n\tconst settingsAriaLabel = blockInformation\n\t\t? sprintf(\n\t\t\t\t// translators: %s: The title of the block.\n\t\t\t\t__( 'Options for %s block' ),\n\t\t\t\tblockInformation.title\n\t\t )\n\t\t: __( 'Options' );\n\n\tconst { isTreeGridMounted, expand, collapse } = useListViewContext();\n\n\tconst hasSiblings = siblingBlockCount > 0;\n\tconst hasRenderedMovers = showBlockMovers && hasSiblings;\n\tconst moverCellClassName = classnames(\n\t\t'block-editor-list-view-block__mover-cell',\n\t\t{ 'is-visible': isHovered || isSelected }\n\t);\n\n\tconst listViewBlockSettingsClassName = classnames(\n\t\t'block-editor-list-view-block__menu-cell',\n\t\t{ 'is-visible': isHovered || isFirstSelectedBlock }\n\t);\n\n\t// If ListView has experimental features related to the Persistent List View,\n\t// only focus the selected list item on mount; otherwise the list would always\n\t// try to steal the focus from the editor canvas.\n\tuseEffect( () => {\n\t\tif ( ! isTreeGridMounted && isSelected ) {\n\t\t\tcellRef.current.focus();\n\t\t}\n\t}, [] );\n\n\tconst onMouseEnter = useCallback( () => {\n\t\tsetIsHovered( true );\n\t\ttoggleBlockHighlight( clientId, true );\n\t}, [ clientId, setIsHovered, toggleBlockHighlight ] );\n\tconst onMouseLeave = useCallback( () => {\n\t\tsetIsHovered( false );\n\t\ttoggleBlockHighlight( clientId, false );\n\t}, [ clientId, setIsHovered, toggleBlockHighlight ] );\n\n\tconst selectEditorBlock = useCallback(\n\t\t( event ) => {\n\t\t\tselectBlock( event, clientId );\n\t\t\tevent.preventDefault();\n\t\t},\n\t\t[ clientId, selectBlock ]\n\t);\n\n\tconst updateSelection = useCallback(\n\t\t( newClientId ) => {\n\t\t\tselectBlock( undefined, newClientId );\n\t\t},\n\t\t[ selectBlock ]\n\t);\n\n\tconst toggleExpanded = useCallback(\n\t\t( event ) => {\n\t\t\t// Prevent shift+click from opening link in a new window when toggling.\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\tif ( isExpanded === true ) {\n\t\t\t\tcollapse( clientId );\n\t\t\t} else if ( isExpanded === false ) {\n\t\t\t\texpand( clientId );\n\t\t\t}\n\t\t},\n\t\t[ clientId, expand, collapse, isExpanded ]\n\t);\n\n\tlet colSpan;\n\tif ( hasRenderedMovers ) {\n\t\tcolSpan = 2;\n\t} else if ( ! showBlockActions ) {\n\t\tcolSpan = 3;\n\t}\n\n\tconst classes = classnames( {\n\t\t'is-selected': isSelected,\n\t\t'is-first-selected': isFirstSelectedBlock,\n\t\t'is-last-selected': isLastSelectedBlock,\n\t\t'is-branch-selected': isBranchSelected,\n\t\t'is-dragging': isDragged,\n\t\t'has-single-cell': ! showBlockActions,\n\t} );\n\n\t// Only include all selected blocks if the currently clicked on block\n\t// is one of the selected blocks. This ensures that if a user attempts\n\t// to alter a block that isn't part of the selection, they're still able\n\t// to do so.\n\tconst dropdownClientIds = selectedClientIds.includes( clientId )\n\t\t? selectedClientIds\n\t\t: [ clientId ];\n\n\treturn (\n\t\t<ListViewLeaf\n\t\t\tclassName={ classes }\n\t\t\tonMouseEnter={ onMouseEnter }\n\t\t\tonMouseLeave={ onMouseLeave }\n\t\t\tonFocus={ onMouseEnter }\n\t\t\tonBlur={ onMouseLeave }\n\t\t\tlevel={ level }\n\t\t\tposition={ position }\n\t\t\trowCount={ rowCount }\n\t\t\tpath={ path }\n\t\t\tid={ `list-view-block-${ clientId }` }\n\t\t\tdata-block={ clientId }\n\t\t\tisExpanded={ isExpanded }\n\t\t\taria-selected={ !! isSelected }\n\t\t>\n\t\t\t<TreeGridCell\n\t\t\t\tclassName=\"block-editor-list-view-block__contents-cell\"\n\t\t\t\tcolSpan={ colSpan }\n\t\t\t\tref={ cellRef }\n\t\t\t\taria-label={ blockAriaLabel }\n\t\t\t\taria-selected={ !! isSelected }\n\t\t\t\taria-expanded={ isExpanded }\n\t\t\t\taria-describedby={ descriptionId }\n\t\t\t>\n\t\t\t\t{ ( { ref, tabIndex, onFocus } ) => (\n\t\t\t\t\t<div className=\"block-editor-list-view-block__contents-container\">\n\t\t\t\t\t\t<ListViewBlockContents\n\t\t\t\t\t\t\tblock={ block }\n\t\t\t\t\t\t\tonClick={ selectEditorBlock }\n\t\t\t\t\t\t\tonToggleExpanded={ toggleExpanded }\n\t\t\t\t\t\t\tisSelected={ isSelected }\n\t\t\t\t\t\t\tposition={ position }\n\t\t\t\t\t\t\tsiblingBlockCount={ siblingBlockCount }\n\t\t\t\t\t\t\tlevel={ level }\n\t\t\t\t\t\t\tref={ ref }\n\t\t\t\t\t\t\ttabIndex={ tabIndex }\n\t\t\t\t\t\t\tonFocus={ onFocus }\n\t\t\t\t\t\t\tisExpanded={ isExpanded }\n\t\t\t\t\t\t\tselectedClientIds={ selectedClientIds }\n\t\t\t\t\t\t\tpreventAnnouncement={ preventAnnouncement }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName=\"block-editor-list-view-block-select-button__description\"\n\t\t\t\t\t\t\tid={ descriptionId }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ blockPositionDescription }\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t) }\n\t\t\t</TreeGridCell>\n\t\t\t{ hasRenderedMovers && (\n\t\t\t\t<>\n\t\t\t\t\t<TreeGridCell\n\t\t\t\t\t\tclassName={ moverCellClassName }\n\t\t\t\t\t\twithoutGridItem\n\t\t\t\t\t>\n\t\t\t\t\t\t<TreeGridItem>\n\t\t\t\t\t\t\t{ ( { ref, tabIndex, onFocus } ) => (\n\t\t\t\t\t\t\t\t<BlockMoverUpButton\n\t\t\t\t\t\t\t\t\torientation=\"vertical\"\n\t\t\t\t\t\t\t\t\tclientIds={ [ clientId ] }\n\t\t\t\t\t\t\t\t\tref={ ref }\n\t\t\t\t\t\t\t\t\ttabIndex={ tabIndex }\n\t\t\t\t\t\t\t\t\tonFocus={ onFocus }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</TreeGridItem>\n\t\t\t\t\t\t<TreeGridItem>\n\t\t\t\t\t\t\t{ ( { ref, tabIndex, onFocus } ) => (\n\t\t\t\t\t\t\t\t<BlockMoverDownButton\n\t\t\t\t\t\t\t\t\torientation=\"vertical\"\n\t\t\t\t\t\t\t\t\tclientIds={ [ clientId ] }\n\t\t\t\t\t\t\t\t\tref={ ref }\n\t\t\t\t\t\t\t\t\ttabIndex={ tabIndex }\n\t\t\t\t\t\t\t\t\tonFocus={ onFocus }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</TreeGridItem>\n\t\t\t\t\t</TreeGridCell>\n\t\t\t\t</>\n\t\t\t) }\n\n\t\t\t{ showBlockActions && (\n\t\t\t\t<TreeGridCell\n\t\t\t\t\tclassName={ listViewBlockSettingsClassName }\n\t\t\t\t\taria-selected={ !! isSelected }\n\t\t\t\t>\n\t\t\t\t\t{ ( { ref, tabIndex, onFocus } ) => (\n\t\t\t\t\t\t<BlockSettingsDropdown\n\t\t\t\t\t\t\tclientIds={ dropdownClientIds }\n\t\t\t\t\t\t\ticon={ moreVertical }\n\t\t\t\t\t\t\tlabel={ settingsAriaLabel }\n\t\t\t\t\t\t\ttoggleProps={ {\n\t\t\t\t\t\t\t\tref,\n\t\t\t\t\t\t\t\tclassName: 'block-editor-list-view-block__menu',\n\t\t\t\t\t\t\t\ttabIndex,\n\t\t\t\t\t\t\t\tonFocus,\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tdisableOpenOnArrowDown\n\t\t\t\t\t\t\t__experimentalSelectBlock={ updateSelection }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</TreeGridCell>\n\t\t\t) }\n\t\t</ListViewLeaf>\n\t);\n}\n\nexport default memo( ListViewBlock );\n"]}
|