@wordpress/block-editor 14.3.2 → 14.3.3
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/build/components/block-heading-level-dropdown/index.js +3 -1
- package/build/components/block-heading-level-dropdown/index.js.map +1 -1
- package/build/components/block-list/block.js +27 -4
- package/build/components/block-list/block.js.map +1 -1
- package/build/components/block-list/use-block-props/use-focus-first-element.js +0 -1
- package/build/components/block-list/use-block-props/use-focus-first-element.js.map +1 -1
- package/build/components/block-list/zoom-out-separator.js +18 -1
- package/build/components/block-list/zoom-out-separator.js.map +1 -1
- package/build/components/block-switcher/utils.js +1 -1
- package/build/components/block-switcher/utils.js.map +1 -1
- package/build/components/block-variation-transforms/index.js +6 -3
- package/build/components/block-variation-transforms/index.js.map +1 -1
- package/build/components/rich-text/event-listeners/paste-handler.js +2 -13
- package/build/components/rich-text/event-listeners/paste-handler.js.map +1 -1
- package/build/components/rich-text/index.js +34 -20
- package/build/components/rich-text/index.js.map +1 -1
- package/build/components/writing-flow/index.js +1 -2
- package/build/components/writing-flow/index.js.map +1 -1
- package/build/components/writing-flow/use-arrow-nav.js +1 -4
- package/build/components/writing-flow/use-arrow-nav.js.map +1 -1
- package/build/components/writing-flow/use-input.js +1 -31
- package/build/components/writing-flow/use-input.js.map +1 -1
- package/build/components/writing-flow/use-select-all.js +1 -14
- package/build/components/writing-flow/use-select-all.js.map +1 -1
- package/build/components/writing-flow/use-selection-observer.js +2 -6
- package/build/components/writing-flow/use-selection-observer.js.map +1 -1
- package/build/components/writing-flow/utils.js +0 -27
- package/build/components/writing-flow/utils.js.map +1 -1
- package/build/hooks/layout.js +12 -8
- package/build/hooks/layout.js.map +1 -1
- package/build/hooks/use-bindings-attributes.js +20 -26
- package/build/hooks/use-bindings-attributes.js.map +1 -1
- package/build/store/selectors.js +6 -3
- package/build/store/selectors.js.map +1 -1
- package/build-module/components/block-heading-level-dropdown/index.js +3 -1
- package/build-module/components/block-heading-level-dropdown/index.js.map +1 -1
- package/build-module/components/block-list/block.js +28 -7
- package/build-module/components/block-list/block.js.map +1 -1
- package/build-module/components/block-list/use-block-props/use-focus-first-element.js +0 -1
- package/build-module/components/block-list/use-block-props/use-focus-first-element.js.map +1 -1
- package/build-module/components/block-list/zoom-out-separator.js +18 -1
- package/build-module/components/block-list/zoom-out-separator.js.map +1 -1
- package/build-module/components/block-switcher/utils.js +1 -1
- package/build-module/components/block-switcher/utils.js.map +1 -1
- package/build-module/components/block-variation-transforms/index.js +6 -3
- package/build-module/components/block-variation-transforms/index.js.map +1 -1
- package/build-module/components/rich-text/event-listeners/paste-handler.js +2 -13
- package/build-module/components/rich-text/event-listeners/paste-handler.js.map +1 -1
- package/build-module/components/rich-text/index.js +34 -20
- package/build-module/components/rich-text/index.js.map +1 -1
- package/build-module/components/writing-flow/index.js +1 -2
- package/build-module/components/writing-flow/index.js.map +1 -1
- package/build-module/components/writing-flow/use-arrow-nav.js +1 -4
- package/build-module/components/writing-flow/use-arrow-nav.js.map +1 -1
- package/build-module/components/writing-flow/use-input.js +1 -31
- package/build-module/components/writing-flow/use-input.js.map +1 -1
- package/build-module/components/writing-flow/use-select-all.js +1 -14
- package/build-module/components/writing-flow/use-select-all.js.map +1 -1
- package/build-module/components/writing-flow/use-selection-observer.js +2 -6
- package/build-module/components/writing-flow/use-selection-observer.js.map +1 -1
- package/build-module/components/writing-flow/utils.js +0 -26
- package/build-module/components/writing-flow/utils.js.map +1 -1
- package/build-module/hooks/layout.js +13 -9
- package/build-module/hooks/layout.js.map +1 -1
- package/build-module/hooks/use-bindings-attributes.js +20 -26
- package/build-module/hooks/use-bindings-attributes.js.map +1 -1
- package/build-module/store/selectors.js +6 -3
- package/build-module/store/selectors.js.map +1 -1
- package/build-style/content-rtl.css +10 -0
- package/build-style/content.css +10 -0
- package/build-style/style-rtl.css +4 -0
- package/build-style/style.css +4 -0
- package/package.json +20 -20
- package/src/components/block-heading-level-dropdown/index.js +7 -1
- package/src/components/block-list/block.js +47 -11
- package/src/components/block-list/content.scss +12 -0
- package/src/components/block-list/use-block-props/use-focus-first-element.js +0 -1
- package/src/components/block-list/zoom-out-separator.js +14 -1
- package/src/components/block-switcher/test/use-transformed.patterns.js +3 -3
- package/src/components/block-switcher/test/utils.js +3 -3
- package/src/components/block-switcher/utils.js +1 -1
- package/src/components/block-toolbar/style.scss +7 -0
- package/src/components/block-variation-transforms/index.js +6 -7
- package/src/components/rich-text/event-listeners/paste-handler.js +2 -7
- package/src/components/rich-text/index.js +36 -23
- package/src/components/writing-flow/index.js +0 -2
- package/src/components/writing-flow/use-arrow-nav.js +2 -9
- package/src/components/writing-flow/use-input.js +1 -36
- package/src/components/writing-flow/use-select-all.js +1 -18
- package/src/components/writing-flow/use-selection-observer.js +3 -14
- package/src/components/writing-flow/utils.js +0 -30
- package/src/hooks/layout.js +17 -12
- package/src/hooks/use-bindings-attributes.js +24 -29
- package/src/store/selectors.js +6 -6
- package/src/store/test/private-selectors.js +2 -2
- package/src/store/test/selectors.js +10 -6
- package/build/components/writing-flow/use-event-redirect.js +0 -66
- package/build/components/writing-flow/use-event-redirect.js.map +0 -1
- package/build-module/components/writing-flow/use-event-redirect.js +0 -60
- package/build-module/components/writing-flow/use-event-redirect.js.map +0 -1
- package/src/components/writing-flow/use-event-redirect.js +0 -72
|
@@ -29,21 +29,10 @@ var _default = props => element => {
|
|
|
29
29
|
preserveWhiteSpace,
|
|
30
30
|
pastePlainText
|
|
31
31
|
} = props.current;
|
|
32
|
-
const {
|
|
33
|
-
ownerDocument
|
|
34
|
-
} = element;
|
|
35
|
-
const {
|
|
36
|
-
defaultView
|
|
37
|
-
} = ownerDocument;
|
|
38
|
-
const {
|
|
39
|
-
anchorNode,
|
|
40
|
-
focusNode
|
|
41
|
-
} = defaultView.getSelection();
|
|
42
|
-
const containsSelection = element.contains(anchorNode) && element.contains(focusNode);
|
|
43
32
|
|
|
44
33
|
// The event listener is attached to the window, so we need to check if
|
|
45
|
-
// the target is the element.
|
|
46
|
-
if (!
|
|
34
|
+
// the target is the element or inside the element.
|
|
35
|
+
if (!element.contains(event.target)) {
|
|
47
36
|
return;
|
|
48
37
|
}
|
|
49
38
|
if (event.defaultPrevented) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_blocks","require","_richText","_url","_utils","_pasting","_default","props","element","_onPaste","event","disableFormats","onChange","value","formatTypes","tagName","onReplace","__unstableEmbedURLOnPaste","preserveWhiteSpace","pastePlainText","current","
|
|
1
|
+
{"version":3,"names":["_blocks","require","_richText","_url","_utils","_pasting","_default","props","element","_onPaste","event","disableFormats","onChange","value","formatTypes","tagName","onReplace","__unstableEmbedURLOnPaste","preserveWhiteSpace","pastePlainText","current","contains","target","defaultPrevented","plainText","html","getPasteEventData","preventDefault","window","console","log","insert","isInternal","clipboardData","getData","pasteInline","content","transformed","reduce","accumulator","__unstablePasteRule","valueToInsert","create","addActiveFormats","activeFormats","text","mode","trimmedPlainText","trim","isEmpty","isURL","test","pasteHandler","HTML","length","defaultView","ownerDocument","addEventListener","removeEventListener","exports","default"],"sources":["@wordpress/block-editor/src/components/rich-text/event-listeners/paste-handler.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { pasteHandler } from '@wordpress/blocks';\nimport { isEmpty, insert, create } from '@wordpress/rich-text';\nimport { isURL } from '@wordpress/url';\n\n/**\n * Internal dependencies\n */\nimport { addActiveFormats } from '../utils';\nimport { getPasteEventData } from '../../../utils/pasting';\n\n/** @typedef {import('@wordpress/rich-text').RichTextValue} RichTextValue */\n\nexport default ( props ) => ( element ) => {\n\tfunction _onPaste( event ) {\n\t\tconst {\n\t\t\tdisableFormats,\n\t\t\tonChange,\n\t\t\tvalue,\n\t\t\tformatTypes,\n\t\t\ttagName,\n\t\t\tonReplace,\n\t\t\t__unstableEmbedURLOnPaste,\n\t\t\tpreserveWhiteSpace,\n\t\t\tpastePlainText,\n\t\t} = props.current;\n\n\t\t// The event listener is attached to the window, so we need to check if\n\t\t// the target is the element or inside the element.\n\t\tif ( ! element.contains( event.target ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( event.defaultPrevented ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst { plainText, html } = getPasteEventData( event );\n\n\t\tevent.preventDefault();\n\n\t\t// Allows us to ask for this information when we get a report.\n\t\twindow.console.log( 'Received HTML:\\n\\n', html );\n\t\twindow.console.log( 'Received plain text:\\n\\n', plainText );\n\n\t\tif ( disableFormats ) {\n\t\t\tonChange( insert( value, plainText ) );\n\t\t\treturn;\n\t\t}\n\n\t\tconst isInternal =\n\t\t\tevent.clipboardData.getData( 'rich-text' ) === 'true';\n\n\t\tfunction pasteInline( content ) {\n\t\t\tconst transformed = formatTypes.reduce(\n\t\t\t\t( accumulator, { __unstablePasteRule } ) => {\n\t\t\t\t\t// Only allow one transform.\n\t\t\t\t\tif ( __unstablePasteRule && accumulator === value ) {\n\t\t\t\t\t\taccumulator = __unstablePasteRule( value, {\n\t\t\t\t\t\t\thtml,\n\t\t\t\t\t\t\tplainText,\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn accumulator;\n\t\t\t\t},\n\t\t\t\tvalue\n\t\t\t);\n\t\t\tif ( transformed !== value ) {\n\t\t\t\tonChange( transformed );\n\t\t\t} else {\n\t\t\t\tconst valueToInsert = create( { html: content } );\n\t\t\t\taddActiveFormats( valueToInsert, value.activeFormats );\n\t\t\t\tonChange( insert( value, valueToInsert ) );\n\t\t\t}\n\t\t}\n\n\t\t// If the data comes from a rich text instance, we can directly use it\n\t\t// without filtering the data. The filters are only meant for externally\n\t\t// pasted content and remove inline styles.\n\t\tif ( isInternal ) {\n\t\t\tpasteInline( html );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( pastePlainText ) {\n\t\t\tonChange( insert( value, create( { text: plainText } ) ) );\n\t\t\treturn;\n\t\t}\n\n\t\tlet mode = 'INLINE';\n\n\t\tconst trimmedPlainText = plainText.trim();\n\n\t\tif (\n\t\t\t__unstableEmbedURLOnPaste &&\n\t\t\tisEmpty( value ) &&\n\t\t\tisURL( trimmedPlainText ) &&\n\t\t\t// For the link pasting feature, allow only http(s) protocols.\n\t\t\t/^https?:/.test( trimmedPlainText )\n\t\t) {\n\t\t\tmode = 'BLOCKS';\n\t\t}\n\n\t\tconst content = pasteHandler( {\n\t\t\tHTML: html,\n\t\t\tplainText,\n\t\t\tmode,\n\t\t\ttagName,\n\t\t\tpreserveWhiteSpace,\n\t\t} );\n\n\t\tif ( typeof content === 'string' ) {\n\t\t\tpasteInline( content );\n\t\t} else if ( content.length > 0 ) {\n\t\t\tif ( onReplace && isEmpty( value ) ) {\n\t\t\t\tonReplace( content, content.length - 1, -1 );\n\t\t\t}\n\t\t}\n\t}\n\n\tconst { defaultView } = element.ownerDocument;\n\n\t// Attach the listener to the window so parent elements have the chance to\n\t// prevent the default behavior.\n\tdefaultView.addEventListener( 'paste', _onPaste );\n\treturn () => {\n\t\tdefaultView.removeEventListener( 'paste', _onPaste );\n\t};\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -178,7 +178,8 @@ function RichTextWrapper({
|
|
|
178
178
|
} = (0, _data.useSelect)(selector, [clientId, identifier, instanceId, originalIsSelected, isBlockSelected]);
|
|
179
179
|
const {
|
|
180
180
|
disableBoundBlock,
|
|
181
|
-
bindingsPlaceholder
|
|
181
|
+
bindingsPlaceholder,
|
|
182
|
+
bindingsLabel
|
|
182
183
|
} = (0, _data.useSelect)(select => {
|
|
183
184
|
var _fieldsList$relatedBi;
|
|
184
185
|
if (!blockBindings?.[identifier] || !(0, _useBindingsAttributes.canBindBlock)(blockName)) {
|
|
@@ -189,21 +190,44 @@ function RichTextWrapper({
|
|
|
189
190
|
getBlockBindingsSource
|
|
190
191
|
} = (0, _lockUnlock.unlock)(select(_blocks.store));
|
|
191
192
|
const blockBindingsSource = getBlockBindingsSource(relatedBinding.source);
|
|
192
|
-
const
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
193
|
+
const blockBindingsContext = {};
|
|
194
|
+
if (blockBindingsSource?.usesContext?.length) {
|
|
195
|
+
for (const key of blockBindingsSource.usesContext) {
|
|
196
|
+
blockBindingsContext[key] = blockContext[key];
|
|
197
|
+
}
|
|
198
|
+
}
|
|
196
199
|
const _disableBoundBlock = !blockBindingsSource?.canUserEditValue?.({
|
|
197
|
-
|
|
198
|
-
context:
|
|
200
|
+
registry,
|
|
201
|
+
context: blockBindingsContext,
|
|
199
202
|
args: relatedBinding.args
|
|
200
203
|
});
|
|
204
|
+
|
|
205
|
+
// Don't modify placeholders if value is not empty.
|
|
206
|
+
if (adjustedValue.length > 0) {
|
|
207
|
+
return {
|
|
208
|
+
disableBoundBlock: _disableBoundBlock,
|
|
209
|
+
// Null values will make them fall back to the default behavior.
|
|
210
|
+
bindingsPlaceholder: null,
|
|
211
|
+
bindingsLabel: null
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
const {
|
|
215
|
+
getBlockAttributes
|
|
216
|
+
} = select(_store.store);
|
|
217
|
+
const blockAttributes = getBlockAttributes(clientId);
|
|
218
|
+
const fieldsList = blockBindingsSource?.getFieldsList?.({
|
|
219
|
+
registry,
|
|
220
|
+
context: blockBindingsContext
|
|
221
|
+
});
|
|
201
222
|
const bindingKey = (_fieldsList$relatedBi = fieldsList?.[relatedBinding?.args?.key]?.label) !== null && _fieldsList$relatedBi !== void 0 ? _fieldsList$relatedBi : blockBindingsSource?.label;
|
|
202
223
|
const _bindingsPlaceholder = _disableBoundBlock ? bindingKey : (0, _i18n.sprintf)( /* translators: %s: connected field label or source label */
|
|
203
224
|
(0, _i18n.__)('Add %s'), bindingKey);
|
|
225
|
+
const _bindingsLabel = _disableBoundBlock ? relatedBinding?.args?.key || blockBindingsSource?.label : (0, _i18n.sprintf)( /* translators: %s: source label or key */
|
|
226
|
+
(0, _i18n.__)('Empty %s; start writing to edit its value'), relatedBinding?.args?.key || blockBindingsSource?.label);
|
|
204
227
|
return {
|
|
205
228
|
disableBoundBlock: _disableBoundBlock,
|
|
206
|
-
bindingsPlaceholder:
|
|
229
|
+
bindingsPlaceholder: blockAttributes?.placeholder || _bindingsPlaceholder,
|
|
230
|
+
bindingsLabel: _bindingsLabel
|
|
207
231
|
};
|
|
208
232
|
}, [blockBindings, identifier, blockName, blockContext, registry, adjustedValue]);
|
|
209
233
|
const shouldDisableEditing = readOnly || disableBoundBlock;
|
|
@@ -319,17 +343,7 @@ function RichTextWrapper({
|
|
|
319
343
|
const keyboardShortcuts = (0, _element.useRef)(new Set());
|
|
320
344
|
const inputEvents = (0, _element.useRef)(new Set());
|
|
321
345
|
function onFocus() {
|
|
322
|
-
|
|
323
|
-
if (!element) {
|
|
324
|
-
return;
|
|
325
|
-
}
|
|
326
|
-
|
|
327
|
-
// Writing flow might be editable, so we should make sure focus goes to
|
|
328
|
-
// the root editable element.
|
|
329
|
-
while (element.parentElement?.isContentEditable) {
|
|
330
|
-
element = element.parentElement;
|
|
331
|
-
}
|
|
332
|
-
element.focus();
|
|
346
|
+
anchorRef.current?.focus();
|
|
333
347
|
}
|
|
334
348
|
const TagName = tagName;
|
|
335
349
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
@@ -362,7 +376,7 @@ function RichTextWrapper({
|
|
|
362
376
|
"aria-multiline": !disableLineBreaks,
|
|
363
377
|
"aria-readonly": shouldDisableEditing,
|
|
364
378
|
...props,
|
|
365
|
-
"aria-label":
|
|
379
|
+
"aria-label": bindingsLabel || props['aria-label'] || placeholder,
|
|
366
380
|
...autocompleteProps,
|
|
367
381
|
ref: (0, _compose.useMergeRefs)([
|
|
368
382
|
// Rich text ref must be first because its focus listener
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_clsx","_interopRequireDefault","require","_element","_data","_compose","_richText","_components","_blocks","_deprecated","_i18n","_autocomplete","_blockEdit","_context","_formatToolbarContainer","_store","_useMarkPersistent","_useFormatTypes","_eventListeners","_formatEdit","_utils","_content","_withDeprecations","_lockUnlock","_useBindingsAttributes","_blockContext","_jsxRuntime","_shortcut","_toolbarButton","_inputEvent","keyboardShortcutContext","exports","createContext","inputEventContext","instanceIdKey","Symbol","removeNativeProps","props","__unstableMobileNoFocusOnMount","deleteEnter","placeholderTextColor","textAlign","selectionColor","tagsToEliminate","disableEditingMenu","fontSize","fontFamily","fontWeight","fontStyle","minWidth","maxWidth","disableSuggestions","disableAutocorrection","restProps","RichTextWrapper","children","tagName","value","adjustedValue","onChange","adjustedOnChange","isSelected","originalIsSelected","multiline","inlineToolbar","wrapperClassName","autocompleters","onReplace","placeholder","allowedFormats","withoutInteractiveFormatting","onRemove","onMerge","onSplit","__unstableOnSplitAtEnd","onSplitAtEnd","__unstableOnSplitAtDoubleLineEnd","onSplitAtDoubleLineEnd","identifier","preserveWhiteSpace","__unstablePastePlainText","pastePlainText","__unstableEmbedURLOnPaste","__unstableDisableFormats","disableFormats","disableLineBreaks","__unstableAllowPrefixTransformations","readOnly","forwardedRef","deprecated","since","alternative","instanceId","useInstanceId","anchorRef","useRef","context","useBlockEditContext","clientId","isBlockSelected","name","blockName","blockBindings","blockBindingsKey","blockContext","useContext","BlockContext","registry","useRegistry","selector","select","getSelectionStart","getSelectionEnd","blockEditorStore","selectionStart","selectionEnd","undefined","attributeKey","offset","useSelect","disableBoundBlock","bindingsPlaceholder","_fieldsList$relatedBi","canBindBlock","relatedBinding","getBlockBindingsSource","unlock","blocksStore","blockBindingsSource","source","fieldsList","getFieldsList","_disableBoundBlock","canUserEditValue","args","bindingKey","key","label","_bindingsPlaceholder","sprintf","__","length","shouldDisableEditing","getBlockRootClientId","selectionChange","useDispatch","adjustedAllowedFormats","getAllowedFormats","hasFormats","onSelectionChange","useCallback","start","end","selection","unset","baseSelection","formatTypes","prepareHandlers","valueHandlers","changeHandlers","dependencies","useFormatTypes","addEditorOnlyFormats","reduce","accumulator","fn","text","formats","removeEditorOnlyFormats","forEach","formatType","__experimentalCreatePrepareEditableTree","removeFormat","addInvisibleFormats","getValue","ref","richTextRef","useRichText","html","__unstableFormats","__unstableText","Object","values","changeHandler","__unstableIsSelected","__unstableDependencies","__unstableAfterParse","__unstableBeforeSerialize","__unstableAddInvisibleFormats","autocompleteProps","useBlockEditorAutocompleteProps","completers","record","useMarkPersistent","keyboardShortcuts","Set","inputEvents","onFocus","element","current","parentElement","isContentEditable","focus","TagName","jsxs","Fragment","jsx","Provider","Popover","__unstableSlotNameProvider","default","inline","editableContentElement","role","useMergeRefs","useEventListeners","contentEditable","suppressContentEditableWarning","className","clsx","tabIndex","PrivateRichText","withDeprecations","forwardRef","Content","isEmpty","PublicForwardedRichTextContainer","isPreviewMode","isPreviewModeKey","Tag","contentProps","dangerouslySetInnerHTML","__html","valueToHTMLString","_default"],"sources":["@wordpress/block-editor/src/components/rich-text/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tuseRef,\n\tuseCallback,\n\tforwardRef,\n\tcreateContext,\n\tuseContext,\n} from '@wordpress/element';\nimport { useDispatch, useRegistry, useSelect } from '@wordpress/data';\nimport { useMergeRefs, useInstanceId } from '@wordpress/compose';\nimport {\n\t__unstableUseRichText as useRichText,\n\tremoveFormat,\n} from '@wordpress/rich-text';\nimport { Popover } from '@wordpress/components';\nimport { store as blocksStore } from '@wordpress/blocks';\nimport deprecated from '@wordpress/deprecated';\nimport { __, sprintf } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { useBlockEditorAutocompleteProps } from '../autocomplete';\nimport { useBlockEditContext } from '../block-edit';\nimport { blockBindingsKey, isPreviewModeKey } from '../block-edit/context';\nimport FormatToolbarContainer from './format-toolbar-container';\nimport { store as blockEditorStore } from '../../store';\nimport { useMarkPersistent } from './use-mark-persistent';\nimport { useFormatTypes } from './use-format-types';\nimport { useEventListeners } from './event-listeners';\nimport FormatEdit from './format-edit';\nimport { getAllowedFormats } from './utils';\nimport { Content, valueToHTMLString } from './content';\nimport { withDeprecations } from './with-deprecations';\nimport { unlock } from '../../lock-unlock';\nimport { canBindBlock } from '../../hooks/use-bindings-attributes';\nimport BlockContext from '../block-context';\n\nexport const keyboardShortcutContext = createContext();\nexport const inputEventContext = createContext();\n\nconst instanceIdKey = Symbol( 'instanceId' );\n\n/**\n * Removes props used for the native version of RichText so that they are not\n * passed to the DOM element and log warnings.\n *\n * @param {Object} props Props to filter.\n *\n * @return {Object} Filtered props.\n */\nfunction removeNativeProps( props ) {\n\tconst {\n\t\t__unstableMobileNoFocusOnMount,\n\t\tdeleteEnter,\n\t\tplaceholderTextColor,\n\t\ttextAlign,\n\t\tselectionColor,\n\t\ttagsToEliminate,\n\t\tdisableEditingMenu,\n\t\tfontSize,\n\t\tfontFamily,\n\t\tfontWeight,\n\t\tfontStyle,\n\t\tminWidth,\n\t\tmaxWidth,\n\t\tdisableSuggestions,\n\t\tdisableAutocorrection,\n\t\t...restProps\n\t} = props;\n\treturn restProps;\n}\n\nexport function RichTextWrapper(\n\t{\n\t\tchildren,\n\t\ttagName = 'div',\n\t\tvalue: adjustedValue = '',\n\t\tonChange: adjustedOnChange,\n\t\tisSelected: originalIsSelected,\n\t\tmultiline,\n\t\tinlineToolbar,\n\t\twrapperClassName,\n\t\tautocompleters,\n\t\tonReplace,\n\t\tplaceholder,\n\t\tallowedFormats,\n\t\twithoutInteractiveFormatting,\n\t\tonRemove,\n\t\tonMerge,\n\t\tonSplit,\n\t\t__unstableOnSplitAtEnd: onSplitAtEnd,\n\t\t__unstableOnSplitAtDoubleLineEnd: onSplitAtDoubleLineEnd,\n\t\tidentifier,\n\t\tpreserveWhiteSpace,\n\t\t__unstablePastePlainText: pastePlainText,\n\t\t__unstableEmbedURLOnPaste,\n\t\t__unstableDisableFormats: disableFormats,\n\t\tdisableLineBreaks,\n\t\t__unstableAllowPrefixTransformations,\n\t\treadOnly,\n\t\t...props\n\t},\n\tforwardedRef\n) {\n\tprops = removeNativeProps( props );\n\n\tif ( onSplit ) {\n\t\tdeprecated( 'wp.blockEditor.RichText onSplit prop', {\n\t\t\tsince: '6.4',\n\t\t\talternative: 'block.json support key: \"splitting\"',\n\t\t} );\n\t}\n\n\tconst instanceId = useInstanceId( RichTextWrapper );\n\tconst anchorRef = useRef();\n\tconst context = useBlockEditContext();\n\tconst { clientId, isSelected: isBlockSelected, name: blockName } = context;\n\tconst blockBindings = context[ blockBindingsKey ];\n\tconst blockContext = useContext( BlockContext );\n\tconst registry = useRegistry();\n\tconst selector = ( select ) => {\n\t\t// Avoid subscribing to the block editor store if the block is not\n\t\t// selected.\n\t\tif ( ! isBlockSelected ) {\n\t\t\treturn { isSelected: false };\n\t\t}\n\n\t\tconst { getSelectionStart, getSelectionEnd } =\n\t\t\tselect( blockEditorStore );\n\t\tconst selectionStart = getSelectionStart();\n\t\tconst selectionEnd = getSelectionEnd();\n\n\t\tlet isSelected;\n\n\t\tif ( originalIsSelected === undefined ) {\n\t\t\tisSelected =\n\t\t\t\tselectionStart.clientId === clientId &&\n\t\t\t\tselectionEnd.clientId === clientId &&\n\t\t\t\t( identifier\n\t\t\t\t\t? selectionStart.attributeKey === identifier\n\t\t\t\t\t: selectionStart[ instanceIdKey ] === instanceId );\n\t\t} else if ( originalIsSelected ) {\n\t\t\tisSelected = selectionStart.clientId === clientId;\n\t\t}\n\n\t\treturn {\n\t\t\tselectionStart: isSelected ? selectionStart.offset : undefined,\n\t\t\tselectionEnd: isSelected ? selectionEnd.offset : undefined,\n\t\t\tisSelected,\n\t\t};\n\t};\n\tconst { selectionStart, selectionEnd, isSelected } = useSelect( selector, [\n\t\tclientId,\n\t\tidentifier,\n\t\tinstanceId,\n\t\toriginalIsSelected,\n\t\tisBlockSelected,\n\t] );\n\n\tconst { disableBoundBlock, bindingsPlaceholder } = useSelect(\n\t\t( select ) => {\n\t\t\tif (\n\t\t\t\t! blockBindings?.[ identifier ] ||\n\t\t\t\t! canBindBlock( blockName )\n\t\t\t) {\n\t\t\t\treturn {};\n\t\t\t}\n\n\t\t\tconst relatedBinding = blockBindings[ identifier ];\n\t\t\tconst { getBlockBindingsSource } = unlock( select( blocksStore ) );\n\t\t\tconst blockBindingsSource = getBlockBindingsSource(\n\t\t\t\trelatedBinding.source\n\t\t\t);\n\t\t\tconst fieldsList = blockBindingsSource?.getFieldsList?.( {\n\t\t\t\tregistry,\n\t\t\t\tcontext: blockContext,\n\t\t\t} );\n\n\t\t\tconst _disableBoundBlock =\n\t\t\t\t! blockBindingsSource?.canUserEditValue?.( {\n\t\t\t\t\tselect,\n\t\t\t\t\tcontext: blockContext,\n\t\t\t\t\targs: relatedBinding.args,\n\t\t\t\t} );\n\n\t\t\tconst bindingKey =\n\t\t\t\tfieldsList?.[ relatedBinding?.args?.key ]?.label ??\n\t\t\t\tblockBindingsSource?.label;\n\n\t\t\tconst _bindingsPlaceholder = _disableBoundBlock\n\t\t\t\t? bindingKey\n\t\t\t\t: sprintf(\n\t\t\t\t\t\t/* translators: %s: connected field label or source label */\n\t\t\t\t\t\t__( 'Add %s' ),\n\t\t\t\t\t\tbindingKey\n\t\t\t\t );\n\n\t\t\treturn {\n\t\t\t\tdisableBoundBlock: _disableBoundBlock,\n\t\t\t\tbindingsPlaceholder:\n\t\t\t\t\t( ! adjustedValue || adjustedValue.length === 0 ) &&\n\t\t\t\t\t_bindingsPlaceholder,\n\t\t\t};\n\t\t},\n\t\t[\n\t\t\tblockBindings,\n\t\t\tidentifier,\n\t\t\tblockName,\n\t\t\tblockContext,\n\t\t\tregistry,\n\t\t\tadjustedValue,\n\t\t]\n\t);\n\n\tconst shouldDisableEditing = readOnly || disableBoundBlock;\n\n\tconst { getSelectionStart, getSelectionEnd, getBlockRootClientId } =\n\t\tuseSelect( blockEditorStore );\n\tconst { selectionChange } = useDispatch( blockEditorStore );\n\tconst adjustedAllowedFormats = getAllowedFormats( {\n\t\tallowedFormats,\n\t\tdisableFormats,\n\t} );\n\tconst hasFormats =\n\t\t! adjustedAllowedFormats || adjustedAllowedFormats.length > 0;\n\n\tconst onSelectionChange = useCallback(\n\t\t( start, end ) => {\n\t\t\tconst selection = {};\n\t\t\tconst unset = start === undefined && end === undefined;\n\n\t\t\tconst baseSelection = {\n\t\t\t\tclientId,\n\t\t\t\t[ identifier ? 'attributeKey' : instanceIdKey ]: identifier\n\t\t\t\t\t? identifier\n\t\t\t\t\t: instanceId,\n\t\t\t};\n\n\t\t\tif ( typeof start === 'number' || unset ) {\n\t\t\t\t// If we are only setting the start (or the end below), which\n\t\t\t\t// means a partial selection, and we're not updating a selection\n\t\t\t\t// with the same client ID, abort. This means the selected block\n\t\t\t\t// is a parent block.\n\t\t\t\tif (\n\t\t\t\t\tend === undefined &&\n\t\t\t\t\tgetBlockRootClientId( clientId ) !==\n\t\t\t\t\t\tgetBlockRootClientId( getSelectionEnd().clientId )\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tselection.start = {\n\t\t\t\t\t...baseSelection,\n\t\t\t\t\toffset: start,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif ( typeof end === 'number' || unset ) {\n\t\t\t\tif (\n\t\t\t\t\tstart === undefined &&\n\t\t\t\t\tgetBlockRootClientId( clientId ) !==\n\t\t\t\t\t\tgetBlockRootClientId( getSelectionStart().clientId )\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tselection.end = {\n\t\t\t\t\t...baseSelection,\n\t\t\t\t\toffset: end,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tselectionChange( selection );\n\t\t},\n\t\t[\n\t\t\tclientId,\n\t\t\tgetBlockRootClientId,\n\t\t\tgetSelectionEnd,\n\t\t\tgetSelectionStart,\n\t\t\tidentifier,\n\t\t\tinstanceId,\n\t\t\tselectionChange,\n\t\t]\n\t);\n\n\tconst {\n\t\tformatTypes,\n\t\tprepareHandlers,\n\t\tvalueHandlers,\n\t\tchangeHandlers,\n\t\tdependencies,\n\t} = useFormatTypes( {\n\t\tclientId,\n\t\tidentifier,\n\t\twithoutInteractiveFormatting,\n\t\tallowedFormats: adjustedAllowedFormats,\n\t} );\n\n\tfunction addEditorOnlyFormats( value ) {\n\t\treturn valueHandlers.reduce(\n\t\t\t( accumulator, fn ) => fn( accumulator, value.text ),\n\t\t\tvalue.formats\n\t\t);\n\t}\n\n\tfunction removeEditorOnlyFormats( value ) {\n\t\tformatTypes.forEach( ( formatType ) => {\n\t\t\t// Remove formats created by prepareEditableTree, because they are editor only.\n\t\t\tif ( formatType.__experimentalCreatePrepareEditableTree ) {\n\t\t\t\tvalue = removeFormat(\n\t\t\t\t\tvalue,\n\t\t\t\t\tformatType.name,\n\t\t\t\t\t0,\n\t\t\t\t\tvalue.text.length\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t\treturn value.formats;\n\t}\n\n\tfunction addInvisibleFormats( value ) {\n\t\treturn prepareHandlers.reduce(\n\t\t\t( accumulator, fn ) => fn( accumulator, value.text ),\n\t\t\tvalue.formats\n\t\t);\n\t}\n\n\tconst {\n\t\tvalue,\n\t\tgetValue,\n\t\tonChange,\n\t\tref: richTextRef,\n\t} = useRichText( {\n\t\tvalue: adjustedValue,\n\t\tonChange( html, { __unstableFormats, __unstableText } ) {\n\t\t\tadjustedOnChange( html );\n\t\t\tObject.values( changeHandlers ).forEach( ( changeHandler ) => {\n\t\t\t\tchangeHandler( __unstableFormats, __unstableText );\n\t\t\t} );\n\t\t},\n\t\tselectionStart,\n\t\tselectionEnd,\n\t\tonSelectionChange,\n\t\tplaceholder: bindingsPlaceholder || placeholder,\n\t\t__unstableIsSelected: isSelected,\n\t\t__unstableDisableFormats: disableFormats,\n\t\tpreserveWhiteSpace,\n\t\t__unstableDependencies: [ ...dependencies, tagName ],\n\t\t__unstableAfterParse: addEditorOnlyFormats,\n\t\t__unstableBeforeSerialize: removeEditorOnlyFormats,\n\t\t__unstableAddInvisibleFormats: addInvisibleFormats,\n\t} );\n\tconst autocompleteProps = useBlockEditorAutocompleteProps( {\n\t\tonReplace,\n\t\tcompleters: autocompleters,\n\t\trecord: value,\n\t\tonChange,\n\t} );\n\n\tuseMarkPersistent( { html: adjustedValue, value } );\n\n\tconst keyboardShortcuts = useRef( new Set() );\n\tconst inputEvents = useRef( new Set() );\n\n\tfunction onFocus() {\n\t\tlet element = anchorRef.current;\n\n\t\tif ( ! element ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Writing flow might be editable, so we should make sure focus goes to\n\t\t// the root editable element.\n\t\twhile ( element.parentElement?.isContentEditable ) {\n\t\t\telement = element.parentElement;\n\t\t}\n\n\t\telement.focus();\n\t}\n\n\tconst TagName = tagName;\n\treturn (\n\t\t<>\n\t\t\t{ isSelected && (\n\t\t\t\t<keyboardShortcutContext.Provider value={ keyboardShortcuts }>\n\t\t\t\t\t<inputEventContext.Provider value={ inputEvents }>\n\t\t\t\t\t\t<Popover.__unstableSlotNameProvider value=\"__unstable-block-tools-after\">\n\t\t\t\t\t\t\t{ children &&\n\t\t\t\t\t\t\t\tchildren( { value, onChange, onFocus } ) }\n\n\t\t\t\t\t\t\t<FormatEdit\n\t\t\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t\t\tonFocus={ onFocus }\n\t\t\t\t\t\t\t\tformatTypes={ formatTypes }\n\t\t\t\t\t\t\t\tforwardedRef={ anchorRef }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Popover.__unstableSlotNameProvider>\n\t\t\t\t\t</inputEventContext.Provider>\n\t\t\t\t</keyboardShortcutContext.Provider>\n\t\t\t) }\n\t\t\t{ isSelected && hasFormats && (\n\t\t\t\t<FormatToolbarContainer\n\t\t\t\t\tinline={ inlineToolbar }\n\t\t\t\t\teditableContentElement={ anchorRef.current }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t<TagName\n\t\t\t\t// Overridable props.\n\t\t\t\trole=\"textbox\"\n\t\t\t\taria-multiline={ ! disableLineBreaks }\n\t\t\t\taria-readonly={ shouldDisableEditing }\n\t\t\t\t{ ...props }\n\t\t\t\taria-label={\n\t\t\t\t\tbindingsPlaceholder || props[ 'aria-label' ] || placeholder\n\t\t\t\t}\n\t\t\t\t{ ...autocompleteProps }\n\t\t\t\tref={ useMergeRefs( [\n\t\t\t\t\t// Rich text ref must be first because its focus listener\n\t\t\t\t\t// must be set up before any other ref calls .focus() on\n\t\t\t\t\t// mount.\n\t\t\t\t\trichTextRef,\n\t\t\t\t\tforwardedRef,\n\t\t\t\t\tautocompleteProps.ref,\n\t\t\t\t\tprops.ref,\n\t\t\t\t\tuseEventListeners( {\n\t\t\t\t\t\tregistry,\n\t\t\t\t\t\tgetValue,\n\t\t\t\t\t\tonChange,\n\t\t\t\t\t\t__unstableAllowPrefixTransformations,\n\t\t\t\t\t\tformatTypes,\n\t\t\t\t\t\tonReplace,\n\t\t\t\t\t\tselectionChange,\n\t\t\t\t\t\tisSelected,\n\t\t\t\t\t\tdisableFormats,\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\ttagName,\n\t\t\t\t\t\tonSplit,\n\t\t\t\t\t\t__unstableEmbedURLOnPaste,\n\t\t\t\t\t\tpastePlainText,\n\t\t\t\t\t\tonMerge,\n\t\t\t\t\t\tonRemove,\n\t\t\t\t\t\tremoveEditorOnlyFormats,\n\t\t\t\t\t\tdisableLineBreaks,\n\t\t\t\t\t\tonSplitAtEnd,\n\t\t\t\t\t\tonSplitAtDoubleLineEnd,\n\t\t\t\t\t\tkeyboardShortcuts,\n\t\t\t\t\t\tinputEvents,\n\t\t\t\t\t} ),\n\t\t\t\t\tanchorRef,\n\t\t\t\t] ) }\n\t\t\t\tcontentEditable={ ! shouldDisableEditing }\n\t\t\t\tsuppressContentEditableWarning\n\t\t\t\tclassName={ clsx(\n\t\t\t\t\t'block-editor-rich-text__editable',\n\t\t\t\t\tprops.className,\n\t\t\t\t\t'rich-text'\n\t\t\t\t) }\n\t\t\t\t// Setting tabIndex to 0 is unnecessary, the element is already\n\t\t\t\t// focusable because it's contentEditable. This also fixes a\n\t\t\t\t// Safari bug where it's not possible to Shift+Click multi\n\t\t\t\t// select blocks when Shift Clicking into an element with\n\t\t\t\t// tabIndex because Safari will focus the element. However,\n\t\t\t\t// Safari will correctly ignore nested contentEditable elements.\n\t\t\t\ttabIndex={\n\t\t\t\t\tprops.tabIndex === 0 && ! shouldDisableEditing\n\t\t\t\t\t\t? null\n\t\t\t\t\t\t: props.tabIndex\n\t\t\t\t}\n\t\t\t\tdata-wp-block-attribute-key={ identifier }\n\t\t\t/>\n\t\t</>\n\t);\n}\n\n// This is the private API for the RichText component.\n// It allows access to all props, not just the public ones.\nexport const PrivateRichText = withDeprecations(\n\tforwardRef( RichTextWrapper )\n);\n\nPrivateRichText.Content = Content;\nPrivateRichText.isEmpty = ( value ) => {\n\treturn ! value || value.length === 0;\n};\n\n// This is the public API for the RichText component.\n// We wrap the PrivateRichText component to hide some props from the public API.\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/rich-text/README.md\n */\nconst PublicForwardedRichTextContainer = forwardRef( ( props, ref ) => {\n\tconst context = useBlockEditContext();\n\tconst isPreviewMode = context[ isPreviewModeKey ];\n\n\tif ( isPreviewMode ) {\n\t\t// Remove all non-content props.\n\t\tconst {\n\t\t\tchildren,\n\t\t\ttagName: Tag = 'div',\n\t\t\tvalue,\n\t\t\tonChange,\n\t\t\tisSelected,\n\t\t\tmultiline,\n\t\t\tinlineToolbar,\n\t\t\twrapperClassName,\n\t\t\tautocompleters,\n\t\t\tonReplace,\n\t\t\tplaceholder,\n\t\t\tallowedFormats,\n\t\t\twithoutInteractiveFormatting,\n\t\t\tonRemove,\n\t\t\tonMerge,\n\t\t\tonSplit,\n\t\t\t__unstableOnSplitAtEnd,\n\t\t\t__unstableOnSplitAtDoubleLineEnd,\n\t\t\tidentifier,\n\t\t\tpreserveWhiteSpace,\n\t\t\t__unstablePastePlainText,\n\t\t\t__unstableEmbedURLOnPaste,\n\t\t\t__unstableDisableFormats,\n\t\t\tdisableLineBreaks,\n\t\t\t__unstableAllowPrefixTransformations,\n\t\t\treadOnly,\n\t\t\t...contentProps\n\t\t} = removeNativeProps( props );\n\t\treturn (\n\t\t\t<Tag\n\t\t\t\t{ ...contentProps }\n\t\t\t\tdangerouslySetInnerHTML={ {\n\t\t\t\t\t__html: valueToHTMLString( value, multiline ),\n\t\t\t\t} }\n\t\t\t/>\n\t\t);\n\t}\n\n\treturn <PrivateRichText ref={ ref } { ...props } readOnly={ false } />;\n} );\n\nPublicForwardedRichTextContainer.Content = Content;\nPublicForwardedRichTextContainer.isEmpty = ( value ) => {\n\treturn ! value || value.length === 0;\n};\n\nexport default PublicForwardedRichTextContainer;\nexport { RichTextShortcut } from './shortcut';\nexport { RichTextToolbarButton } from './toolbar-button';\nexport { __unstableRichTextInputEvent } from './input-event';\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_clsx","_interopRequireDefault","require","_element","_data","_compose","_richText","_components","_blocks","_deprecated","_i18n","_autocomplete","_blockEdit","_context","_formatToolbarContainer","_store","_useMarkPersistent","_useFormatTypes","_eventListeners","_formatEdit","_utils","_content","_withDeprecations","_lockUnlock","_useBindingsAttributes","_blockContext","_jsxRuntime","_shortcut","_toolbarButton","_inputEvent","keyboardShortcutContext","exports","createContext","inputEventContext","instanceIdKey","Symbol","removeNativeProps","props","__unstableMobileNoFocusOnMount","deleteEnter","placeholderTextColor","textAlign","selectionColor","tagsToEliminate","disableEditingMenu","fontSize","fontFamily","fontWeight","fontStyle","minWidth","maxWidth","disableSuggestions","disableAutocorrection","restProps","RichTextWrapper","children","tagName","value","adjustedValue","onChange","adjustedOnChange","isSelected","originalIsSelected","multiline","inlineToolbar","wrapperClassName","autocompleters","onReplace","placeholder","allowedFormats","withoutInteractiveFormatting","onRemove","onMerge","onSplit","__unstableOnSplitAtEnd","onSplitAtEnd","__unstableOnSplitAtDoubleLineEnd","onSplitAtDoubleLineEnd","identifier","preserveWhiteSpace","__unstablePastePlainText","pastePlainText","__unstableEmbedURLOnPaste","__unstableDisableFormats","disableFormats","disableLineBreaks","__unstableAllowPrefixTransformations","readOnly","forwardedRef","deprecated","since","alternative","instanceId","useInstanceId","anchorRef","useRef","context","useBlockEditContext","clientId","isBlockSelected","name","blockName","blockBindings","blockBindingsKey","blockContext","useContext","BlockContext","registry","useRegistry","selector","select","getSelectionStart","getSelectionEnd","blockEditorStore","selectionStart","selectionEnd","undefined","attributeKey","offset","useSelect","disableBoundBlock","bindingsPlaceholder","bindingsLabel","_fieldsList$relatedBi","canBindBlock","relatedBinding","getBlockBindingsSource","unlock","blocksStore","blockBindingsSource","source","blockBindingsContext","usesContext","length","key","_disableBoundBlock","canUserEditValue","args","getBlockAttributes","blockAttributes","fieldsList","getFieldsList","bindingKey","label","_bindingsPlaceholder","sprintf","__","_bindingsLabel","shouldDisableEditing","getBlockRootClientId","selectionChange","useDispatch","adjustedAllowedFormats","getAllowedFormats","hasFormats","onSelectionChange","useCallback","start","end","selection","unset","baseSelection","formatTypes","prepareHandlers","valueHandlers","changeHandlers","dependencies","useFormatTypes","addEditorOnlyFormats","reduce","accumulator","fn","text","formats","removeEditorOnlyFormats","forEach","formatType","__experimentalCreatePrepareEditableTree","removeFormat","addInvisibleFormats","getValue","ref","richTextRef","useRichText","html","__unstableFormats","__unstableText","Object","values","changeHandler","__unstableIsSelected","__unstableDependencies","__unstableAfterParse","__unstableBeforeSerialize","__unstableAddInvisibleFormats","autocompleteProps","useBlockEditorAutocompleteProps","completers","record","useMarkPersistent","keyboardShortcuts","Set","inputEvents","onFocus","current","focus","TagName","jsxs","Fragment","jsx","Provider","Popover","__unstableSlotNameProvider","default","inline","editableContentElement","role","useMergeRefs","useEventListeners","contentEditable","suppressContentEditableWarning","className","clsx","tabIndex","PrivateRichText","withDeprecations","forwardRef","Content","isEmpty","PublicForwardedRichTextContainer","isPreviewMode","isPreviewModeKey","Tag","contentProps","dangerouslySetInnerHTML","__html","valueToHTMLString","_default"],"sources":["@wordpress/block-editor/src/components/rich-text/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tuseRef,\n\tuseCallback,\n\tforwardRef,\n\tcreateContext,\n\tuseContext,\n} from '@wordpress/element';\nimport { useDispatch, useRegistry, useSelect } from '@wordpress/data';\nimport { useMergeRefs, useInstanceId } from '@wordpress/compose';\nimport {\n\t__unstableUseRichText as useRichText,\n\tremoveFormat,\n} from '@wordpress/rich-text';\nimport { Popover } from '@wordpress/components';\nimport { store as blocksStore } from '@wordpress/blocks';\nimport deprecated from '@wordpress/deprecated';\nimport { __, sprintf } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { useBlockEditorAutocompleteProps } from '../autocomplete';\nimport { useBlockEditContext } from '../block-edit';\nimport { blockBindingsKey, isPreviewModeKey } from '../block-edit/context';\nimport FormatToolbarContainer from './format-toolbar-container';\nimport { store as blockEditorStore } from '../../store';\nimport { useMarkPersistent } from './use-mark-persistent';\nimport { useFormatTypes } from './use-format-types';\nimport { useEventListeners } from './event-listeners';\nimport FormatEdit from './format-edit';\nimport { getAllowedFormats } from './utils';\nimport { Content, valueToHTMLString } from './content';\nimport { withDeprecations } from './with-deprecations';\nimport { unlock } from '../../lock-unlock';\nimport { canBindBlock } from '../../hooks/use-bindings-attributes';\nimport BlockContext from '../block-context';\n\nexport const keyboardShortcutContext = createContext();\nexport const inputEventContext = createContext();\n\nconst instanceIdKey = Symbol( 'instanceId' );\n\n/**\n * Removes props used for the native version of RichText so that they are not\n * passed to the DOM element and log warnings.\n *\n * @param {Object} props Props to filter.\n *\n * @return {Object} Filtered props.\n */\nfunction removeNativeProps( props ) {\n\tconst {\n\t\t__unstableMobileNoFocusOnMount,\n\t\tdeleteEnter,\n\t\tplaceholderTextColor,\n\t\ttextAlign,\n\t\tselectionColor,\n\t\ttagsToEliminate,\n\t\tdisableEditingMenu,\n\t\tfontSize,\n\t\tfontFamily,\n\t\tfontWeight,\n\t\tfontStyle,\n\t\tminWidth,\n\t\tmaxWidth,\n\t\tdisableSuggestions,\n\t\tdisableAutocorrection,\n\t\t...restProps\n\t} = props;\n\treturn restProps;\n}\n\nexport function RichTextWrapper(\n\t{\n\t\tchildren,\n\t\ttagName = 'div',\n\t\tvalue: adjustedValue = '',\n\t\tonChange: adjustedOnChange,\n\t\tisSelected: originalIsSelected,\n\t\tmultiline,\n\t\tinlineToolbar,\n\t\twrapperClassName,\n\t\tautocompleters,\n\t\tonReplace,\n\t\tplaceholder,\n\t\tallowedFormats,\n\t\twithoutInteractiveFormatting,\n\t\tonRemove,\n\t\tonMerge,\n\t\tonSplit,\n\t\t__unstableOnSplitAtEnd: onSplitAtEnd,\n\t\t__unstableOnSplitAtDoubleLineEnd: onSplitAtDoubleLineEnd,\n\t\tidentifier,\n\t\tpreserveWhiteSpace,\n\t\t__unstablePastePlainText: pastePlainText,\n\t\t__unstableEmbedURLOnPaste,\n\t\t__unstableDisableFormats: disableFormats,\n\t\tdisableLineBreaks,\n\t\t__unstableAllowPrefixTransformations,\n\t\treadOnly,\n\t\t...props\n\t},\n\tforwardedRef\n) {\n\tprops = removeNativeProps( props );\n\n\tif ( onSplit ) {\n\t\tdeprecated( 'wp.blockEditor.RichText onSplit prop', {\n\t\t\tsince: '6.4',\n\t\t\talternative: 'block.json support key: \"splitting\"',\n\t\t} );\n\t}\n\n\tconst instanceId = useInstanceId( RichTextWrapper );\n\tconst anchorRef = useRef();\n\tconst context = useBlockEditContext();\n\tconst { clientId, isSelected: isBlockSelected, name: blockName } = context;\n\tconst blockBindings = context[ blockBindingsKey ];\n\tconst blockContext = useContext( BlockContext );\n\tconst registry = useRegistry();\n\tconst selector = ( select ) => {\n\t\t// Avoid subscribing to the block editor store if the block is not\n\t\t// selected.\n\t\tif ( ! isBlockSelected ) {\n\t\t\treturn { isSelected: false };\n\t\t}\n\n\t\tconst { getSelectionStart, getSelectionEnd } =\n\t\t\tselect( blockEditorStore );\n\t\tconst selectionStart = getSelectionStart();\n\t\tconst selectionEnd = getSelectionEnd();\n\n\t\tlet isSelected;\n\n\t\tif ( originalIsSelected === undefined ) {\n\t\t\tisSelected =\n\t\t\t\tselectionStart.clientId === clientId &&\n\t\t\t\tselectionEnd.clientId === clientId &&\n\t\t\t\t( identifier\n\t\t\t\t\t? selectionStart.attributeKey === identifier\n\t\t\t\t\t: selectionStart[ instanceIdKey ] === instanceId );\n\t\t} else if ( originalIsSelected ) {\n\t\t\tisSelected = selectionStart.clientId === clientId;\n\t\t}\n\n\t\treturn {\n\t\t\tselectionStart: isSelected ? selectionStart.offset : undefined,\n\t\t\tselectionEnd: isSelected ? selectionEnd.offset : undefined,\n\t\t\tisSelected,\n\t\t};\n\t};\n\tconst { selectionStart, selectionEnd, isSelected } = useSelect( selector, [\n\t\tclientId,\n\t\tidentifier,\n\t\tinstanceId,\n\t\toriginalIsSelected,\n\t\tisBlockSelected,\n\t] );\n\n\tconst { disableBoundBlock, bindingsPlaceholder, bindingsLabel } = useSelect(\n\t\t( select ) => {\n\t\t\tif (\n\t\t\t\t! blockBindings?.[ identifier ] ||\n\t\t\t\t! canBindBlock( blockName )\n\t\t\t) {\n\t\t\t\treturn {};\n\t\t\t}\n\n\t\t\tconst relatedBinding = blockBindings[ identifier ];\n\t\t\tconst { getBlockBindingsSource } = unlock( select( blocksStore ) );\n\t\t\tconst blockBindingsSource = getBlockBindingsSource(\n\t\t\t\trelatedBinding.source\n\t\t\t);\n\t\t\tconst blockBindingsContext = {};\n\t\t\tif ( blockBindingsSource?.usesContext?.length ) {\n\t\t\t\tfor ( const key of blockBindingsSource.usesContext ) {\n\t\t\t\t\tblockBindingsContext[ key ] = blockContext[ key ];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst _disableBoundBlock =\n\t\t\t\t! blockBindingsSource?.canUserEditValue?.( {\n\t\t\t\t\tregistry,\n\t\t\t\t\tcontext: blockBindingsContext,\n\t\t\t\t\targs: relatedBinding.args,\n\t\t\t\t} );\n\n\t\t\t// Don't modify placeholders if value is not empty.\n\t\t\tif ( adjustedValue.length > 0 ) {\n\t\t\t\treturn {\n\t\t\t\t\tdisableBoundBlock: _disableBoundBlock,\n\t\t\t\t\t// Null values will make them fall back to the default behavior.\n\t\t\t\t\tbindingsPlaceholder: null,\n\t\t\t\t\tbindingsLabel: null,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tconst { getBlockAttributes } = select( blockEditorStore );\n\t\t\tconst blockAttributes = getBlockAttributes( clientId );\n\t\t\tconst fieldsList = blockBindingsSource?.getFieldsList?.( {\n\t\t\t\tregistry,\n\t\t\t\tcontext: blockBindingsContext,\n\t\t\t} );\n\t\t\tconst bindingKey =\n\t\t\t\tfieldsList?.[ relatedBinding?.args?.key ]?.label ??\n\t\t\t\tblockBindingsSource?.label;\n\n\t\t\tconst _bindingsPlaceholder = _disableBoundBlock\n\t\t\t\t? bindingKey\n\t\t\t\t: sprintf(\n\t\t\t\t\t\t/* translators: %s: connected field label or source label */\n\t\t\t\t\t\t__( 'Add %s' ),\n\t\t\t\t\t\tbindingKey\n\t\t\t\t );\n\t\t\tconst _bindingsLabel = _disableBoundBlock\n\t\t\t\t? relatedBinding?.args?.key || blockBindingsSource?.label\n\t\t\t\t: sprintf(\n\t\t\t\t\t\t/* translators: %s: source label or key */\n\t\t\t\t\t\t__( 'Empty %s; start writing to edit its value' ),\n\t\t\t\t\t\trelatedBinding?.args?.key || blockBindingsSource?.label\n\t\t\t\t );\n\n\t\t\treturn {\n\t\t\t\tdisableBoundBlock: _disableBoundBlock,\n\t\t\t\tbindingsPlaceholder:\n\t\t\t\t\tblockAttributes?.placeholder || _bindingsPlaceholder,\n\t\t\t\tbindingsLabel: _bindingsLabel,\n\t\t\t};\n\t\t},\n\t\t[\n\t\t\tblockBindings,\n\t\t\tidentifier,\n\t\t\tblockName,\n\t\t\tblockContext,\n\t\t\tregistry,\n\t\t\tadjustedValue,\n\t\t]\n\t);\n\n\tconst shouldDisableEditing = readOnly || disableBoundBlock;\n\n\tconst { getSelectionStart, getSelectionEnd, getBlockRootClientId } =\n\t\tuseSelect( blockEditorStore );\n\tconst { selectionChange } = useDispatch( blockEditorStore );\n\tconst adjustedAllowedFormats = getAllowedFormats( {\n\t\tallowedFormats,\n\t\tdisableFormats,\n\t} );\n\tconst hasFormats =\n\t\t! adjustedAllowedFormats || adjustedAllowedFormats.length > 0;\n\n\tconst onSelectionChange = useCallback(\n\t\t( start, end ) => {\n\t\t\tconst selection = {};\n\t\t\tconst unset = start === undefined && end === undefined;\n\n\t\t\tconst baseSelection = {\n\t\t\t\tclientId,\n\t\t\t\t[ identifier ? 'attributeKey' : instanceIdKey ]: identifier\n\t\t\t\t\t? identifier\n\t\t\t\t\t: instanceId,\n\t\t\t};\n\n\t\t\tif ( typeof start === 'number' || unset ) {\n\t\t\t\t// If we are only setting the start (or the end below), which\n\t\t\t\t// means a partial selection, and we're not updating a selection\n\t\t\t\t// with the same client ID, abort. This means the selected block\n\t\t\t\t// is a parent block.\n\t\t\t\tif (\n\t\t\t\t\tend === undefined &&\n\t\t\t\t\tgetBlockRootClientId( clientId ) !==\n\t\t\t\t\t\tgetBlockRootClientId( getSelectionEnd().clientId )\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tselection.start = {\n\t\t\t\t\t...baseSelection,\n\t\t\t\t\toffset: start,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif ( typeof end === 'number' || unset ) {\n\t\t\t\tif (\n\t\t\t\t\tstart === undefined &&\n\t\t\t\t\tgetBlockRootClientId( clientId ) !==\n\t\t\t\t\t\tgetBlockRootClientId( getSelectionStart().clientId )\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tselection.end = {\n\t\t\t\t\t...baseSelection,\n\t\t\t\t\toffset: end,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tselectionChange( selection );\n\t\t},\n\t\t[\n\t\t\tclientId,\n\t\t\tgetBlockRootClientId,\n\t\t\tgetSelectionEnd,\n\t\t\tgetSelectionStart,\n\t\t\tidentifier,\n\t\t\tinstanceId,\n\t\t\tselectionChange,\n\t\t]\n\t);\n\n\tconst {\n\t\tformatTypes,\n\t\tprepareHandlers,\n\t\tvalueHandlers,\n\t\tchangeHandlers,\n\t\tdependencies,\n\t} = useFormatTypes( {\n\t\tclientId,\n\t\tidentifier,\n\t\twithoutInteractiveFormatting,\n\t\tallowedFormats: adjustedAllowedFormats,\n\t} );\n\n\tfunction addEditorOnlyFormats( value ) {\n\t\treturn valueHandlers.reduce(\n\t\t\t( accumulator, fn ) => fn( accumulator, value.text ),\n\t\t\tvalue.formats\n\t\t);\n\t}\n\n\tfunction removeEditorOnlyFormats( value ) {\n\t\tformatTypes.forEach( ( formatType ) => {\n\t\t\t// Remove formats created by prepareEditableTree, because they are editor only.\n\t\t\tif ( formatType.__experimentalCreatePrepareEditableTree ) {\n\t\t\t\tvalue = removeFormat(\n\t\t\t\t\tvalue,\n\t\t\t\t\tformatType.name,\n\t\t\t\t\t0,\n\t\t\t\t\tvalue.text.length\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t\treturn value.formats;\n\t}\n\n\tfunction addInvisibleFormats( value ) {\n\t\treturn prepareHandlers.reduce(\n\t\t\t( accumulator, fn ) => fn( accumulator, value.text ),\n\t\t\tvalue.formats\n\t\t);\n\t}\n\n\tconst {\n\t\tvalue,\n\t\tgetValue,\n\t\tonChange,\n\t\tref: richTextRef,\n\t} = useRichText( {\n\t\tvalue: adjustedValue,\n\t\tonChange( html, { __unstableFormats, __unstableText } ) {\n\t\t\tadjustedOnChange( html );\n\t\t\tObject.values( changeHandlers ).forEach( ( changeHandler ) => {\n\t\t\t\tchangeHandler( __unstableFormats, __unstableText );\n\t\t\t} );\n\t\t},\n\t\tselectionStart,\n\t\tselectionEnd,\n\t\tonSelectionChange,\n\t\tplaceholder: bindingsPlaceholder || placeholder,\n\t\t__unstableIsSelected: isSelected,\n\t\t__unstableDisableFormats: disableFormats,\n\t\tpreserveWhiteSpace,\n\t\t__unstableDependencies: [ ...dependencies, tagName ],\n\t\t__unstableAfterParse: addEditorOnlyFormats,\n\t\t__unstableBeforeSerialize: removeEditorOnlyFormats,\n\t\t__unstableAddInvisibleFormats: addInvisibleFormats,\n\t} );\n\tconst autocompleteProps = useBlockEditorAutocompleteProps( {\n\t\tonReplace,\n\t\tcompleters: autocompleters,\n\t\trecord: value,\n\t\tonChange,\n\t} );\n\n\tuseMarkPersistent( { html: adjustedValue, value } );\n\n\tconst keyboardShortcuts = useRef( new Set() );\n\tconst inputEvents = useRef( new Set() );\n\n\tfunction onFocus() {\n\t\tanchorRef.current?.focus();\n\t}\n\n\tconst TagName = tagName;\n\treturn (\n\t\t<>\n\t\t\t{ isSelected && (\n\t\t\t\t<keyboardShortcutContext.Provider value={ keyboardShortcuts }>\n\t\t\t\t\t<inputEventContext.Provider value={ inputEvents }>\n\t\t\t\t\t\t<Popover.__unstableSlotNameProvider value=\"__unstable-block-tools-after\">\n\t\t\t\t\t\t\t{ children &&\n\t\t\t\t\t\t\t\tchildren( { value, onChange, onFocus } ) }\n\n\t\t\t\t\t\t\t<FormatEdit\n\t\t\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t\t\tonFocus={ onFocus }\n\t\t\t\t\t\t\t\tformatTypes={ formatTypes }\n\t\t\t\t\t\t\t\tforwardedRef={ anchorRef }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Popover.__unstableSlotNameProvider>\n\t\t\t\t\t</inputEventContext.Provider>\n\t\t\t\t</keyboardShortcutContext.Provider>\n\t\t\t) }\n\t\t\t{ isSelected && hasFormats && (\n\t\t\t\t<FormatToolbarContainer\n\t\t\t\t\tinline={ inlineToolbar }\n\t\t\t\t\teditableContentElement={ anchorRef.current }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t<TagName\n\t\t\t\t// Overridable props.\n\t\t\t\trole=\"textbox\"\n\t\t\t\taria-multiline={ ! disableLineBreaks }\n\t\t\t\taria-readonly={ shouldDisableEditing }\n\t\t\t\t{ ...props }\n\t\t\t\taria-label={\n\t\t\t\t\tbindingsLabel || props[ 'aria-label' ] || placeholder\n\t\t\t\t}\n\t\t\t\t{ ...autocompleteProps }\n\t\t\t\tref={ useMergeRefs( [\n\t\t\t\t\t// Rich text ref must be first because its focus listener\n\t\t\t\t\t// must be set up before any other ref calls .focus() on\n\t\t\t\t\t// mount.\n\t\t\t\t\trichTextRef,\n\t\t\t\t\tforwardedRef,\n\t\t\t\t\tautocompleteProps.ref,\n\t\t\t\t\tprops.ref,\n\t\t\t\t\tuseEventListeners( {\n\t\t\t\t\t\tregistry,\n\t\t\t\t\t\tgetValue,\n\t\t\t\t\t\tonChange,\n\t\t\t\t\t\t__unstableAllowPrefixTransformations,\n\t\t\t\t\t\tformatTypes,\n\t\t\t\t\t\tonReplace,\n\t\t\t\t\t\tselectionChange,\n\t\t\t\t\t\tisSelected,\n\t\t\t\t\t\tdisableFormats,\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\ttagName,\n\t\t\t\t\t\tonSplit,\n\t\t\t\t\t\t__unstableEmbedURLOnPaste,\n\t\t\t\t\t\tpastePlainText,\n\t\t\t\t\t\tonMerge,\n\t\t\t\t\t\tonRemove,\n\t\t\t\t\t\tremoveEditorOnlyFormats,\n\t\t\t\t\t\tdisableLineBreaks,\n\t\t\t\t\t\tonSplitAtEnd,\n\t\t\t\t\t\tonSplitAtDoubleLineEnd,\n\t\t\t\t\t\tkeyboardShortcuts,\n\t\t\t\t\t\tinputEvents,\n\t\t\t\t\t} ),\n\t\t\t\t\tanchorRef,\n\t\t\t\t] ) }\n\t\t\t\tcontentEditable={ ! shouldDisableEditing }\n\t\t\t\tsuppressContentEditableWarning\n\t\t\t\tclassName={ clsx(\n\t\t\t\t\t'block-editor-rich-text__editable',\n\t\t\t\t\tprops.className,\n\t\t\t\t\t'rich-text'\n\t\t\t\t) }\n\t\t\t\t// Setting tabIndex to 0 is unnecessary, the element is already\n\t\t\t\t// focusable because it's contentEditable. This also fixes a\n\t\t\t\t// Safari bug where it's not possible to Shift+Click multi\n\t\t\t\t// select blocks when Shift Clicking into an element with\n\t\t\t\t// tabIndex because Safari will focus the element. However,\n\t\t\t\t// Safari will correctly ignore nested contentEditable elements.\n\t\t\t\ttabIndex={\n\t\t\t\t\tprops.tabIndex === 0 && ! shouldDisableEditing\n\t\t\t\t\t\t? null\n\t\t\t\t\t\t: props.tabIndex\n\t\t\t\t}\n\t\t\t\tdata-wp-block-attribute-key={ identifier }\n\t\t\t/>\n\t\t</>\n\t);\n}\n\n// This is the private API for the RichText component.\n// It allows access to all props, not just the public ones.\nexport const PrivateRichText = withDeprecations(\n\tforwardRef( RichTextWrapper )\n);\n\nPrivateRichText.Content = Content;\nPrivateRichText.isEmpty = ( value ) => {\n\treturn ! value || value.length === 0;\n};\n\n// This is the public API for the RichText component.\n// We wrap the PrivateRichText component to hide some props from the public API.\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/rich-text/README.md\n */\nconst PublicForwardedRichTextContainer = forwardRef( ( props, ref ) => {\n\tconst context = useBlockEditContext();\n\tconst isPreviewMode = context[ isPreviewModeKey ];\n\n\tif ( isPreviewMode ) {\n\t\t// Remove all non-content props.\n\t\tconst {\n\t\t\tchildren,\n\t\t\ttagName: Tag = 'div',\n\t\t\tvalue,\n\t\t\tonChange,\n\t\t\tisSelected,\n\t\t\tmultiline,\n\t\t\tinlineToolbar,\n\t\t\twrapperClassName,\n\t\t\tautocompleters,\n\t\t\tonReplace,\n\t\t\tplaceholder,\n\t\t\tallowedFormats,\n\t\t\twithoutInteractiveFormatting,\n\t\t\tonRemove,\n\t\t\tonMerge,\n\t\t\tonSplit,\n\t\t\t__unstableOnSplitAtEnd,\n\t\t\t__unstableOnSplitAtDoubleLineEnd,\n\t\t\tidentifier,\n\t\t\tpreserveWhiteSpace,\n\t\t\t__unstablePastePlainText,\n\t\t\t__unstableEmbedURLOnPaste,\n\t\t\t__unstableDisableFormats,\n\t\t\tdisableLineBreaks,\n\t\t\t__unstableAllowPrefixTransformations,\n\t\t\treadOnly,\n\t\t\t...contentProps\n\t\t} = removeNativeProps( props );\n\t\treturn (\n\t\t\t<Tag\n\t\t\t\t{ ...contentProps }\n\t\t\t\tdangerouslySetInnerHTML={ {\n\t\t\t\t\t__html: valueToHTMLString( value, multiline ),\n\t\t\t\t} }\n\t\t\t/>\n\t\t);\n\t}\n\n\treturn <PrivateRichText ref={ ref } { ...props } readOnly={ false } />;\n} );\n\nPublicForwardedRichTextContainer.Content = Content;\nPublicForwardedRichTextContainer.isEmpty = ( value ) => {\n\treturn ! value || value.length === 0;\n};\n\nexport default PublicForwardedRichTextContainer;\nexport { RichTextShortcut } from './shortcut';\nexport { RichTextToolbarButton } from './toolbar-button';\nexport { __unstableRichTextInputEvent } from './input-event';\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -20,7 +20,6 @@ var _useSelectionObserver = _interopRequireDefault(require("./use-selection-obse
|
|
|
20
20
|
var _useClickSelection = _interopRequireDefault(require("./use-click-selection"));
|
|
21
21
|
var _useInput = _interopRequireDefault(require("./use-input"));
|
|
22
22
|
var _useClipboardHandler = _interopRequireDefault(require("./use-clipboard-handler"));
|
|
23
|
-
var _useEventRedirect = _interopRequireDefault(require("./use-event-redirect"));
|
|
24
23
|
var _store = require("../../store");
|
|
25
24
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
26
25
|
/**
|
|
@@ -49,7 +48,7 @@ function useWritingFlow() {
|
|
|
49
48
|
node.classList.remove('has-multi-selection');
|
|
50
49
|
node.removeAttribute('aria-label');
|
|
51
50
|
};
|
|
52
|
-
}, [hasMultiSelection])
|
|
51
|
+
}, [hasMultiSelection])]), after];
|
|
53
52
|
}
|
|
54
53
|
function WritingFlow({
|
|
55
54
|
children,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_clsx","_interopRequireDefault","require","_data","_i18n","_compose","_element","_useMultiSelection","_useTabNav","_useArrowNav","_useSelectAll","_useDragSelection","_useSelectionObserver","_useClickSelection","_useInput","_useClipboardHandler","
|
|
1
|
+
{"version":3,"names":["_clsx","_interopRequireDefault","require","_data","_i18n","_compose","_element","_useMultiSelection","_useTabNav","_useArrowNav","_useSelectAll","_useDragSelection","_useSelectionObserver","_useClickSelection","_useInput","_useClipboardHandler","_store","_jsxRuntime","useWritingFlow","before","ref","after","useTabNav","hasMultiSelection","useSelect","select","blockEditorStore","useMergeRefs","useClipboardHandler","useInput","useDragSelection","useSelectionObserver","useClickSelection","useMultiSelection","useSelectAll","useArrowNav","useRefEffect","node","tabIndex","classList","add","setAttribute","__","remove","removeAttribute","WritingFlow","children","props","forwardedRef","jsxs","Fragment","jsx","className","clsx","_default","exports","default","forwardRef"],"sources":["@wordpress/block-editor/src/components/writing-flow/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { __ } from '@wordpress/i18n';\nimport { useMergeRefs, useRefEffect } from '@wordpress/compose';\nimport { forwardRef } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport useMultiSelection from './use-multi-selection';\nimport useTabNav from './use-tab-nav';\nimport useArrowNav from './use-arrow-nav';\nimport useSelectAll from './use-select-all';\nimport useDragSelection from './use-drag-selection';\nimport useSelectionObserver from './use-selection-observer';\nimport useClickSelection from './use-click-selection';\nimport useInput from './use-input';\nimport useClipboardHandler from './use-clipboard-handler';\nimport { store as blockEditorStore } from '../../store';\n\nexport function useWritingFlow() {\n\tconst [ before, ref, after ] = useTabNav();\n\tconst hasMultiSelection = useSelect(\n\t\t( select ) => select( blockEditorStore ).hasMultiSelection(),\n\t\t[]\n\t);\n\n\treturn [\n\t\tbefore,\n\t\tuseMergeRefs( [\n\t\t\tref,\n\t\t\tuseClipboardHandler(),\n\t\t\tuseInput(),\n\t\t\tuseDragSelection(),\n\t\t\tuseSelectionObserver(),\n\t\t\tuseClickSelection(),\n\t\t\tuseMultiSelection(),\n\t\t\tuseSelectAll(),\n\t\t\tuseArrowNav(),\n\t\t\tuseRefEffect(\n\t\t\t\t( node ) => {\n\t\t\t\t\tnode.tabIndex = 0;\n\n\t\t\t\t\tif ( ! hasMultiSelection ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tnode.classList.add( 'has-multi-selection' );\n\t\t\t\t\tnode.setAttribute(\n\t\t\t\t\t\t'aria-label',\n\t\t\t\t\t\t__( 'Multiple selected blocks' )\n\t\t\t\t\t);\n\n\t\t\t\t\treturn () => {\n\t\t\t\t\t\tnode.classList.remove( 'has-multi-selection' );\n\t\t\t\t\t\tnode.removeAttribute( 'aria-label' );\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t\t[ hasMultiSelection ]\n\t\t\t),\n\t\t] ),\n\t\tafter,\n\t];\n}\n\nfunction WritingFlow( { children, ...props }, forwardedRef ) {\n\tconst [ before, ref, after ] = useWritingFlow();\n\treturn (\n\t\t<>\n\t\t\t{ before }\n\t\t\t<div\n\t\t\t\t{ ...props }\n\t\t\t\tref={ useMergeRefs( [ ref, forwardedRef ] ) }\n\t\t\t\tclassName={ clsx(\n\t\t\t\t\tprops.className,\n\t\t\t\t\t'block-editor-writing-flow'\n\t\t\t\t) }\n\t\t\t>\n\t\t\t\t{ children }\n\t\t\t</div>\n\t\t\t{ after }\n\t\t</>\n\t);\n}\n\n/**\n * Handles selection and navigation across blocks. This component should be\n * wrapped around BlockList.\n *\n * @param {Object} props Component properties.\n * @param {Element} props.children Children to be rendered.\n */\nexport default forwardRef( WritingFlow );\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -12,7 +12,6 @@ var _data = require("@wordpress/data");
|
|
|
12
12
|
var _compose = require("@wordpress/compose");
|
|
13
13
|
var _dom2 = require("../../utils/dom");
|
|
14
14
|
var _store = require("../../store");
|
|
15
|
-
var _utils = require("./utils");
|
|
16
15
|
/**
|
|
17
16
|
* WordPress dependencies
|
|
18
17
|
*/
|
|
@@ -148,6 +147,7 @@ function useArrowNav() {
|
|
|
148
147
|
}
|
|
149
148
|
const {
|
|
150
149
|
keyCode,
|
|
150
|
+
target,
|
|
151
151
|
shiftKey,
|
|
152
152
|
ctrlKey,
|
|
153
153
|
altKey,
|
|
@@ -193,7 +193,6 @@ function useArrowNav() {
|
|
|
193
193
|
}
|
|
194
194
|
return;
|
|
195
195
|
}
|
|
196
|
-
const target = ownerDocument.activeElement === node ? (0, _utils.getSelectionRoot)(ownerDocument) : event.target;
|
|
197
196
|
|
|
198
197
|
// Abort if our current target is not a candidate for navigation
|
|
199
198
|
// (e.g. preserve native input behaviors).
|
|
@@ -230,7 +229,6 @@ function useArrowNav() {
|
|
|
230
229
|
// When Alt is pressed, only intercept if the caret is also at
|
|
231
230
|
// the horizontal edge.
|
|
232
231
|
altKey ? (0, _dom.isHorizontalEdge)(target, isReverseDir) : true) && !keepCaretInsideBlock) {
|
|
233
|
-
node.contentEditable = false;
|
|
234
232
|
const closestTabbable = getClosestTabbable(target, isReverse, node, true);
|
|
235
233
|
if (closestTabbable) {
|
|
236
234
|
(0, _dom.placeCaretAtVerticalEdge)(closestTabbable,
|
|
@@ -240,7 +238,6 @@ function useArrowNav() {
|
|
|
240
238
|
event.preventDefault();
|
|
241
239
|
}
|
|
242
240
|
} else if (isHorizontal && defaultView.getSelection().isCollapsed && (0, _dom.isHorizontalEdge)(target, isReverseDir) && !keepCaretInsideBlock) {
|
|
243
|
-
node.contentEditable = false;
|
|
244
241
|
const closestTabbable = getClosestTabbable(target, isReverseDir, node);
|
|
245
242
|
(0, _dom.placeCaretAtHorizontalEdge)(closestTabbable, isReverse);
|
|
246
243
|
event.preventDefault();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_dom","require","_keycodes","_data","_compose","_dom2","_store","_utils","isNavigationCandidate","element","keyCode","hasModifier","isVertical","UP","DOWN","tagName","elementType","getAttribute","verticalInputTypes","includes","simpleInputTypes","getClosestTabbable","target","isReverse","containerElement","onlyVertical","focusableNodes","focus","focusable","find","reverse","slice","indexOf","targetRect","getBoundingClientRect","isTabCandidate","node","closest","children","length","isInSameBlock","firstElementChild","tabbable","isTabbableIndex","isContentEditable","contentEditable","nodeRect","left","right","useArrowNav","getMultiSelectedBlocksStartClientId","getMultiSelectedBlocksEndClientId","getSettings","hasMultiSelection","__unstableIsFullySelected","useSelect","blockEditorStore","selectBlock","useDispatch","useRefEffect","verticalRect","onMouseDown","isClosestTabbableABlock","closestTabbable","getBlockClientId","onKeyDown","event","defaultPrevented","shiftKey","ctrlKey","altKey","metaKey","isUp","isDown","isLeft","LEFT","isRight","RIGHT","isHorizontal","isNav","isNavEdge","isVerticalEdge","isHorizontalEdge","ownerDocument","defaultView","preventDefault","activeElement","getSelectionRoot","computeCaretRect","isReverseDir","isRTL","keepCaretInsideBlock","placeCaretAtVerticalEdge","undefined","getSelection","isCollapsed","placeCaretAtHorizontalEdge","addEventListener","removeEventListener"],"sources":["@wordpress/block-editor/src/components/writing-flow/use-arrow-nav.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tcomputeCaretRect,\n\tfocus,\n\tisHorizontalEdge,\n\tisVerticalEdge,\n\tplaceCaretAtHorizontalEdge,\n\tplaceCaretAtVerticalEdge,\n\tisRTL,\n} from '@wordpress/dom';\nimport { UP, DOWN, LEFT, RIGHT } from '@wordpress/keycodes';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { useRefEffect } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { getBlockClientId, isInSameBlock } from '../../utils/dom';\nimport { store as blockEditorStore } from '../../store';\nimport { getSelectionRoot } from './utils';\n\n/**\n * Returns true if the element should consider edge navigation upon a keyboard\n * event of the given directional key code, or false otherwise.\n *\n * @param {Element} element HTML element to test.\n * @param {number} keyCode KeyboardEvent keyCode to test.\n * @param {boolean} hasModifier Whether a modifier is pressed.\n *\n * @return {boolean} Whether element should consider edge navigation.\n */\nexport function isNavigationCandidate( element, keyCode, hasModifier ) {\n\tconst isVertical = keyCode === UP || keyCode === DOWN;\n\tconst { tagName } = element;\n\tconst elementType = element.getAttribute( 'type' );\n\n\t// Native inputs should not navigate vertically, unless they are simple types that don't need up/down arrow keys.\n\tif ( isVertical && ! hasModifier ) {\n\t\tif ( tagName === 'INPUT' ) {\n\t\t\tconst verticalInputTypes = [\n\t\t\t\t'date',\n\t\t\t\t'datetime-local',\n\t\t\t\t'month',\n\t\t\t\t'number',\n\t\t\t\t'range',\n\t\t\t\t'time',\n\t\t\t\t'week',\n\t\t\t];\n\t\t\treturn ! verticalInputTypes.includes( elementType );\n\t\t}\n\t\treturn true;\n\t}\n\n\t// Native inputs should not navigate horizontally, unless they are simple types that don't need left/right arrow keys.\n\tif ( tagName === 'INPUT' ) {\n\t\tconst simpleInputTypes = [\n\t\t\t'button',\n\t\t\t'checkbox',\n\t\t\t'number',\n\t\t\t'color',\n\t\t\t'file',\n\t\t\t'image',\n\t\t\t'radio',\n\t\t\t'reset',\n\t\t\t'submit',\n\t\t];\n\t\treturn simpleInputTypes.includes( elementType );\n\t}\n\n\t// Native textareas should not navigate horizontally.\n\treturn tagName !== 'TEXTAREA';\n}\n\n/**\n * Returns the optimal tab target from the given focused element in the desired\n * direction. A preference is made toward text fields, falling back to the block\n * focus stop if no other candidates exist for the block.\n *\n * @param {Element} target Currently focused text field.\n * @param {boolean} isReverse True if considering as the first field.\n * @param {Element} containerElement Element containing all blocks.\n * @param {boolean} onlyVertical Whether to only consider tabbable elements\n * that are visually above or under the\n * target.\n *\n * @return {?Element} Optimal tab target, if one exists.\n */\nexport function getClosestTabbable(\n\ttarget,\n\tisReverse,\n\tcontainerElement,\n\tonlyVertical\n) {\n\t// Since the current focus target is not guaranteed to be a text field, find\n\t// all focusables. Tabbability is considered later.\n\tlet focusableNodes = focus.focusable.find( containerElement );\n\n\tif ( isReverse ) {\n\t\tfocusableNodes.reverse();\n\t}\n\n\t// Consider as candidates those focusables after the current target. It's\n\t// assumed this can only be reached if the target is focusable (on its\n\t// keydown event), so no need to verify it exists in the set.\n\tfocusableNodes = focusableNodes.slice(\n\t\tfocusableNodes.indexOf( target ) + 1\n\t);\n\n\tlet targetRect;\n\n\tif ( onlyVertical ) {\n\t\ttargetRect = target.getBoundingClientRect();\n\t}\n\n\tfunction isTabCandidate( node ) {\n\t\tif ( node.closest( '[inert]' ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Skip if there's only one child that is content editable (and thus a\n\t\t// better candidate).\n\t\tif (\n\t\t\tnode.children.length === 1 &&\n\t\t\tisInSameBlock( node, node.firstElementChild ) &&\n\t\t\tnode.firstElementChild.getAttribute( 'contenteditable' ) === 'true'\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Not a candidate if the node is not tabbable.\n\t\tif ( ! focus.tabbable.isTabbableIndex( node ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Skip focusable elements such as links within content editable nodes.\n\t\tif ( node.isContentEditable && node.contentEditable !== 'true' ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( onlyVertical ) {\n\t\t\tconst nodeRect = node.getBoundingClientRect();\n\n\t\t\tif (\n\t\t\t\tnodeRect.left >= targetRect.right ||\n\t\t\t\tnodeRect.right <= targetRect.left\n\t\t\t) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n\n\treturn focusableNodes.find( isTabCandidate );\n}\n\nexport default function useArrowNav() {\n\tconst {\n\t\tgetMultiSelectedBlocksStartClientId,\n\t\tgetMultiSelectedBlocksEndClientId,\n\t\tgetSettings,\n\t\thasMultiSelection,\n\t\t__unstableIsFullySelected,\n\t} = useSelect( blockEditorStore );\n\tconst { selectBlock } = useDispatch( blockEditorStore );\n\treturn useRefEffect( ( node ) => {\n\t\t// Here a DOMRect is stored while moving the caret vertically so\n\t\t// vertical position of the start position can be restored. This is to\n\t\t// recreate browser behaviour across blocks.\n\t\tlet verticalRect;\n\n\t\tfunction onMouseDown() {\n\t\t\tverticalRect = null;\n\t\t}\n\n\t\tfunction isClosestTabbableABlock( target, isReverse ) {\n\t\t\tconst closestTabbable = getClosestTabbable(\n\t\t\t\ttarget,\n\t\t\t\tisReverse,\n\t\t\t\tnode\n\t\t\t);\n\t\t\treturn closestTabbable && getBlockClientId( closestTabbable );\n\t\t}\n\n\t\tfunction onKeyDown( event ) {\n\t\t\t// Abort if navigation has already been handled (e.g. RichText\n\t\t\t// inline boundaries).\n\t\t\tif ( event.defaultPrevented ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst { keyCode, shiftKey, ctrlKey, altKey, metaKey } = event;\n\t\t\tconst isUp = keyCode === UP;\n\t\t\tconst isDown = keyCode === DOWN;\n\t\t\tconst isLeft = keyCode === LEFT;\n\t\t\tconst isRight = keyCode === RIGHT;\n\t\t\tconst isReverse = isUp || isLeft;\n\t\t\tconst isHorizontal = isLeft || isRight;\n\t\t\tconst isVertical = isUp || isDown;\n\t\t\tconst isNav = isHorizontal || isVertical;\n\t\t\tconst hasModifier = shiftKey || ctrlKey || altKey || metaKey;\n\t\t\tconst isNavEdge = isVertical ? isVerticalEdge : isHorizontalEdge;\n\t\t\tconst { ownerDocument } = node;\n\t\t\tconst { defaultView } = ownerDocument;\n\n\t\t\tif ( ! isNav ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If there is a multi-selection, the arrow keys should collapse the\n\t\t\t// selection to the start or end of the selection.\n\t\t\tif ( hasMultiSelection() ) {\n\t\t\t\tif ( shiftKey ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Only handle if we have a full selection (not a native partial\n\t\t\t\t// selection).\n\t\t\t\tif ( ! __unstableIsFullySelected() ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tevent.preventDefault();\n\n\t\t\t\tif ( isReverse ) {\n\t\t\t\t\tselectBlock( getMultiSelectedBlocksStartClientId() );\n\t\t\t\t} else {\n\t\t\t\t\tselectBlock( getMultiSelectedBlocksEndClientId(), -1 );\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst target =\n\t\t\t\townerDocument.activeElement === node\n\t\t\t\t\t? getSelectionRoot( ownerDocument )\n\t\t\t\t\t: event.target;\n\n\t\t\t// Abort if our current target is not a candidate for navigation\n\t\t\t// (e.g. preserve native input behaviors).\n\t\t\tif ( ! isNavigationCandidate( target, keyCode, hasModifier ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// When presing any key other than up or down, the initial vertical\n\t\t\t// position must ALWAYS be reset. The vertical position is saved so\n\t\t\t// it can be restored as well as possible on sebsequent vertical\n\t\t\t// arrow key presses. It may not always be possible to restore the\n\t\t\t// exact same position (such as at an empty line), so it wouldn't be\n\t\t\t// good to compute the position right before any vertical arrow key\n\t\t\t// press.\n\t\t\tif ( ! isVertical ) {\n\t\t\t\tverticalRect = null;\n\t\t\t} else if ( ! verticalRect ) {\n\t\t\t\tverticalRect = computeCaretRect( defaultView );\n\t\t\t}\n\n\t\t\t// In the case of RTL scripts, right means previous and left means\n\t\t\t// next, which is the exact reverse of LTR.\n\t\t\tconst isReverseDir = isRTL( target ) ? ! isReverse : isReverse;\n\t\t\tconst { keepCaretInsideBlock } = getSettings();\n\n\t\t\tif ( shiftKey ) {\n\t\t\t\tif (\n\t\t\t\t\tisClosestTabbableABlock( target, isReverse ) &&\n\t\t\t\t\tisNavEdge( target, isReverse )\n\t\t\t\t) {\n\t\t\t\t\tnode.contentEditable = true;\n\t\t\t\t\t// Firefox doesn't automatically move focus.\n\t\t\t\t\tnode.focus();\n\t\t\t\t}\n\t\t\t} else if (\n\t\t\t\tisVertical &&\n\t\t\t\tisVerticalEdge( target, isReverse ) &&\n\t\t\t\t// When Alt is pressed, only intercept if the caret is also at\n\t\t\t\t// the horizontal edge.\n\t\t\t\t( altKey ? isHorizontalEdge( target, isReverseDir ) : true ) &&\n\t\t\t\t! keepCaretInsideBlock\n\t\t\t) {\n\t\t\t\tnode.contentEditable = false;\n\t\t\t\tconst closestTabbable = getClosestTabbable(\n\t\t\t\t\ttarget,\n\t\t\t\t\tisReverse,\n\t\t\t\t\tnode,\n\t\t\t\t\ttrue\n\t\t\t\t);\n\n\t\t\t\tif ( closestTabbable ) {\n\t\t\t\t\tplaceCaretAtVerticalEdge(\n\t\t\t\t\t\tclosestTabbable,\n\t\t\t\t\t\t// When Alt is pressed, place the caret at the furthest\n\t\t\t\t\t\t// horizontal edge and the furthest vertical edge.\n\t\t\t\t\t\taltKey ? ! isReverse : isReverse,\n\t\t\t\t\t\taltKey ? undefined : verticalRect\n\t\t\t\t\t);\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t} else if (\n\t\t\t\tisHorizontal &&\n\t\t\t\tdefaultView.getSelection().isCollapsed &&\n\t\t\t\tisHorizontalEdge( target, isReverseDir ) &&\n\t\t\t\t! keepCaretInsideBlock\n\t\t\t) {\n\t\t\t\tnode.contentEditable = false;\n\t\t\t\tconst closestTabbable = getClosestTabbable(\n\t\t\t\t\ttarget,\n\t\t\t\t\tisReverseDir,\n\t\t\t\t\tnode\n\t\t\t\t);\n\t\t\t\tplaceCaretAtHorizontalEdge( closestTabbable, isReverse );\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t}\n\n\t\tnode.addEventListener( 'mousedown', onMouseDown );\n\t\tnode.addEventListener( 'keydown', onKeyDown );\n\t\treturn () => {\n\t\t\tnode.removeEventListener( 'mousedown', onMouseDown );\n\t\t\tnode.removeEventListener( 'keydown', onKeyDown );\n\t\t};\n\t}, [] );\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_dom","require","_keycodes","_data","_compose","_dom2","_store","isNavigationCandidate","element","keyCode","hasModifier","isVertical","UP","DOWN","tagName","elementType","getAttribute","verticalInputTypes","includes","simpleInputTypes","getClosestTabbable","target","isReverse","containerElement","onlyVertical","focusableNodes","focus","focusable","find","reverse","slice","indexOf","targetRect","getBoundingClientRect","isTabCandidate","node","closest","children","length","isInSameBlock","firstElementChild","tabbable","isTabbableIndex","isContentEditable","contentEditable","nodeRect","left","right","useArrowNav","getMultiSelectedBlocksStartClientId","getMultiSelectedBlocksEndClientId","getSettings","hasMultiSelection","__unstableIsFullySelected","useSelect","blockEditorStore","selectBlock","useDispatch","useRefEffect","verticalRect","onMouseDown","isClosestTabbableABlock","closestTabbable","getBlockClientId","onKeyDown","event","defaultPrevented","shiftKey","ctrlKey","altKey","metaKey","isUp","isDown","isLeft","LEFT","isRight","RIGHT","isHorizontal","isNav","isNavEdge","isVerticalEdge","isHorizontalEdge","ownerDocument","defaultView","preventDefault","computeCaretRect","isReverseDir","isRTL","keepCaretInsideBlock","placeCaretAtVerticalEdge","undefined","getSelection","isCollapsed","placeCaretAtHorizontalEdge","addEventListener","removeEventListener"],"sources":["@wordpress/block-editor/src/components/writing-flow/use-arrow-nav.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tcomputeCaretRect,\n\tfocus,\n\tisHorizontalEdge,\n\tisVerticalEdge,\n\tplaceCaretAtHorizontalEdge,\n\tplaceCaretAtVerticalEdge,\n\tisRTL,\n} from '@wordpress/dom';\nimport { UP, DOWN, LEFT, RIGHT } from '@wordpress/keycodes';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { useRefEffect } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { getBlockClientId, isInSameBlock } from '../../utils/dom';\nimport { store as blockEditorStore } from '../../store';\n\n/**\n * Returns true if the element should consider edge navigation upon a keyboard\n * event of the given directional key code, or false otherwise.\n *\n * @param {Element} element HTML element to test.\n * @param {number} keyCode KeyboardEvent keyCode to test.\n * @param {boolean} hasModifier Whether a modifier is pressed.\n *\n * @return {boolean} Whether element should consider edge navigation.\n */\nexport function isNavigationCandidate( element, keyCode, hasModifier ) {\n\tconst isVertical = keyCode === UP || keyCode === DOWN;\n\tconst { tagName } = element;\n\tconst elementType = element.getAttribute( 'type' );\n\n\t// Native inputs should not navigate vertically, unless they are simple types that don't need up/down arrow keys.\n\tif ( isVertical && ! hasModifier ) {\n\t\tif ( tagName === 'INPUT' ) {\n\t\t\tconst verticalInputTypes = [\n\t\t\t\t'date',\n\t\t\t\t'datetime-local',\n\t\t\t\t'month',\n\t\t\t\t'number',\n\t\t\t\t'range',\n\t\t\t\t'time',\n\t\t\t\t'week',\n\t\t\t];\n\t\t\treturn ! verticalInputTypes.includes( elementType );\n\t\t}\n\t\treturn true;\n\t}\n\n\t// Native inputs should not navigate horizontally, unless they are simple types that don't need left/right arrow keys.\n\tif ( tagName === 'INPUT' ) {\n\t\tconst simpleInputTypes = [\n\t\t\t'button',\n\t\t\t'checkbox',\n\t\t\t'number',\n\t\t\t'color',\n\t\t\t'file',\n\t\t\t'image',\n\t\t\t'radio',\n\t\t\t'reset',\n\t\t\t'submit',\n\t\t];\n\t\treturn simpleInputTypes.includes( elementType );\n\t}\n\n\t// Native textareas should not navigate horizontally.\n\treturn tagName !== 'TEXTAREA';\n}\n\n/**\n * Returns the optimal tab target from the given focused element in the desired\n * direction. A preference is made toward text fields, falling back to the block\n * focus stop if no other candidates exist for the block.\n *\n * @param {Element} target Currently focused text field.\n * @param {boolean} isReverse True if considering as the first field.\n * @param {Element} containerElement Element containing all blocks.\n * @param {boolean} onlyVertical Whether to only consider tabbable elements\n * that are visually above or under the\n * target.\n *\n * @return {?Element} Optimal tab target, if one exists.\n */\nexport function getClosestTabbable(\n\ttarget,\n\tisReverse,\n\tcontainerElement,\n\tonlyVertical\n) {\n\t// Since the current focus target is not guaranteed to be a text field, find\n\t// all focusables. Tabbability is considered later.\n\tlet focusableNodes = focus.focusable.find( containerElement );\n\n\tif ( isReverse ) {\n\t\tfocusableNodes.reverse();\n\t}\n\n\t// Consider as candidates those focusables after the current target. It's\n\t// assumed this can only be reached if the target is focusable (on its\n\t// keydown event), so no need to verify it exists in the set.\n\tfocusableNodes = focusableNodes.slice(\n\t\tfocusableNodes.indexOf( target ) + 1\n\t);\n\n\tlet targetRect;\n\n\tif ( onlyVertical ) {\n\t\ttargetRect = target.getBoundingClientRect();\n\t}\n\n\tfunction isTabCandidate( node ) {\n\t\tif ( node.closest( '[inert]' ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Skip if there's only one child that is content editable (and thus a\n\t\t// better candidate).\n\t\tif (\n\t\t\tnode.children.length === 1 &&\n\t\t\tisInSameBlock( node, node.firstElementChild ) &&\n\t\t\tnode.firstElementChild.getAttribute( 'contenteditable' ) === 'true'\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Not a candidate if the node is not tabbable.\n\t\tif ( ! focus.tabbable.isTabbableIndex( node ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Skip focusable elements such as links within content editable nodes.\n\t\tif ( node.isContentEditable && node.contentEditable !== 'true' ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( onlyVertical ) {\n\t\t\tconst nodeRect = node.getBoundingClientRect();\n\n\t\t\tif (\n\t\t\t\tnodeRect.left >= targetRect.right ||\n\t\t\t\tnodeRect.right <= targetRect.left\n\t\t\t) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n\n\treturn focusableNodes.find( isTabCandidate );\n}\n\nexport default function useArrowNav() {\n\tconst {\n\t\tgetMultiSelectedBlocksStartClientId,\n\t\tgetMultiSelectedBlocksEndClientId,\n\t\tgetSettings,\n\t\thasMultiSelection,\n\t\t__unstableIsFullySelected,\n\t} = useSelect( blockEditorStore );\n\tconst { selectBlock } = useDispatch( blockEditorStore );\n\treturn useRefEffect( ( node ) => {\n\t\t// Here a DOMRect is stored while moving the caret vertically so\n\t\t// vertical position of the start position can be restored. This is to\n\t\t// recreate browser behaviour across blocks.\n\t\tlet verticalRect;\n\n\t\tfunction onMouseDown() {\n\t\t\tverticalRect = null;\n\t\t}\n\n\t\tfunction isClosestTabbableABlock( target, isReverse ) {\n\t\t\tconst closestTabbable = getClosestTabbable(\n\t\t\t\ttarget,\n\t\t\t\tisReverse,\n\t\t\t\tnode\n\t\t\t);\n\t\t\treturn closestTabbable && getBlockClientId( closestTabbable );\n\t\t}\n\n\t\tfunction onKeyDown( event ) {\n\t\t\t// Abort if navigation has already been handled (e.g. RichText\n\t\t\t// inline boundaries).\n\t\t\tif ( event.defaultPrevented ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst { keyCode, target, shiftKey, ctrlKey, altKey, metaKey } =\n\t\t\t\tevent;\n\t\t\tconst isUp = keyCode === UP;\n\t\t\tconst isDown = keyCode === DOWN;\n\t\t\tconst isLeft = keyCode === LEFT;\n\t\t\tconst isRight = keyCode === RIGHT;\n\t\t\tconst isReverse = isUp || isLeft;\n\t\t\tconst isHorizontal = isLeft || isRight;\n\t\t\tconst isVertical = isUp || isDown;\n\t\t\tconst isNav = isHorizontal || isVertical;\n\t\t\tconst hasModifier = shiftKey || ctrlKey || altKey || metaKey;\n\t\t\tconst isNavEdge = isVertical ? isVerticalEdge : isHorizontalEdge;\n\t\t\tconst { ownerDocument } = node;\n\t\t\tconst { defaultView } = ownerDocument;\n\n\t\t\tif ( ! isNav ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If there is a multi-selection, the arrow keys should collapse the\n\t\t\t// selection to the start or end of the selection.\n\t\t\tif ( hasMultiSelection() ) {\n\t\t\t\tif ( shiftKey ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Only handle if we have a full selection (not a native partial\n\t\t\t\t// selection).\n\t\t\t\tif ( ! __unstableIsFullySelected() ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tevent.preventDefault();\n\n\t\t\t\tif ( isReverse ) {\n\t\t\t\t\tselectBlock( getMultiSelectedBlocksStartClientId() );\n\t\t\t\t} else {\n\t\t\t\t\tselectBlock( getMultiSelectedBlocksEndClientId(), -1 );\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Abort if our current target is not a candidate for navigation\n\t\t\t// (e.g. preserve native input behaviors).\n\t\t\tif ( ! isNavigationCandidate( target, keyCode, hasModifier ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// When presing any key other than up or down, the initial vertical\n\t\t\t// position must ALWAYS be reset. The vertical position is saved so\n\t\t\t// it can be restored as well as possible on sebsequent vertical\n\t\t\t// arrow key presses. It may not always be possible to restore the\n\t\t\t// exact same position (such as at an empty line), so it wouldn't be\n\t\t\t// good to compute the position right before any vertical arrow key\n\t\t\t// press.\n\t\t\tif ( ! isVertical ) {\n\t\t\t\tverticalRect = null;\n\t\t\t} else if ( ! verticalRect ) {\n\t\t\t\tverticalRect = computeCaretRect( defaultView );\n\t\t\t}\n\n\t\t\t// In the case of RTL scripts, right means previous and left means\n\t\t\t// next, which is the exact reverse of LTR.\n\t\t\tconst isReverseDir = isRTL( target ) ? ! isReverse : isReverse;\n\t\t\tconst { keepCaretInsideBlock } = getSettings();\n\n\t\t\tif ( shiftKey ) {\n\t\t\t\tif (\n\t\t\t\t\tisClosestTabbableABlock( target, isReverse ) &&\n\t\t\t\t\tisNavEdge( target, isReverse )\n\t\t\t\t) {\n\t\t\t\t\tnode.contentEditable = true;\n\t\t\t\t\t// Firefox doesn't automatically move focus.\n\t\t\t\t\tnode.focus();\n\t\t\t\t}\n\t\t\t} else if (\n\t\t\t\tisVertical &&\n\t\t\t\tisVerticalEdge( target, isReverse ) &&\n\t\t\t\t// When Alt is pressed, only intercept if the caret is also at\n\t\t\t\t// the horizontal edge.\n\t\t\t\t( altKey ? isHorizontalEdge( target, isReverseDir ) : true ) &&\n\t\t\t\t! keepCaretInsideBlock\n\t\t\t) {\n\t\t\t\tconst closestTabbable = getClosestTabbable(\n\t\t\t\t\ttarget,\n\t\t\t\t\tisReverse,\n\t\t\t\t\tnode,\n\t\t\t\t\ttrue\n\t\t\t\t);\n\n\t\t\t\tif ( closestTabbable ) {\n\t\t\t\t\tplaceCaretAtVerticalEdge(\n\t\t\t\t\t\tclosestTabbable,\n\t\t\t\t\t\t// When Alt is pressed, place the caret at the furthest\n\t\t\t\t\t\t// horizontal edge and the furthest vertical edge.\n\t\t\t\t\t\taltKey ? ! isReverse : isReverse,\n\t\t\t\t\t\taltKey ? undefined : verticalRect\n\t\t\t\t\t);\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t} else if (\n\t\t\t\tisHorizontal &&\n\t\t\t\tdefaultView.getSelection().isCollapsed &&\n\t\t\t\tisHorizontalEdge( target, isReverseDir ) &&\n\t\t\t\t! keepCaretInsideBlock\n\t\t\t) {\n\t\t\t\tconst closestTabbable = getClosestTabbable(\n\t\t\t\t\ttarget,\n\t\t\t\t\tisReverseDir,\n\t\t\t\t\tnode\n\t\t\t\t);\n\t\t\t\tplaceCaretAtHorizontalEdge( closestTabbable, isReverse );\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t}\n\n\t\tnode.addEventListener( 'mousedown', onMouseDown );\n\t\tnode.addEventListener( 'keydown', onKeyDown );\n\t\treturn () => {\n\t\t\tnode.removeEventListener( 'mousedown', onMouseDown );\n\t\t\tnode.removeEventListener( 'keydown', onKeyDown );\n\t\t};\n\t}, [] );\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -9,7 +9,6 @@ var _compose = require("@wordpress/compose");
|
|
|
9
9
|
var _keycodes = require("@wordpress/keycodes");
|
|
10
10
|
var _blocks = require("@wordpress/blocks");
|
|
11
11
|
var _store = require("../../store");
|
|
12
|
-
var _utils = require("./utils");
|
|
13
12
|
/**
|
|
14
13
|
* WordPress dependencies
|
|
15
14
|
*/
|
|
@@ -49,22 +48,7 @@ function useInput() {
|
|
|
49
48
|
// DOM. This will cause React errors (and the DOM should only be
|
|
50
49
|
// altered in a controlled fashion).
|
|
51
50
|
if (node.contentEditable === 'true') {
|
|
52
|
-
|
|
53
|
-
const range = selection.rangeCount ? selection.getRangeAt(0) : null;
|
|
54
|
-
const root = (0, _utils.getSelectionRoot)(node.ownerDocument);
|
|
55
|
-
|
|
56
|
-
// If selection is contained within a nested editable, allow
|
|
57
|
-
// input. We need to ensure that selection is maintained.
|
|
58
|
-
if (root) {
|
|
59
|
-
node.contentEditable = false;
|
|
60
|
-
root.focus();
|
|
61
|
-
selection.removeAllRanges();
|
|
62
|
-
if (range) {
|
|
63
|
-
selection.addRange(range);
|
|
64
|
-
}
|
|
65
|
-
} else {
|
|
66
|
-
event.preventDefault();
|
|
67
|
-
}
|
|
51
|
+
event.preventDefault();
|
|
68
52
|
}
|
|
69
53
|
}
|
|
70
54
|
function onKeyDown(event) {
|
|
@@ -72,20 +56,6 @@ function useInput() {
|
|
|
72
56
|
return;
|
|
73
57
|
}
|
|
74
58
|
if (!hasMultiSelection()) {
|
|
75
|
-
const {
|
|
76
|
-
ownerDocument
|
|
77
|
-
} = node;
|
|
78
|
-
if (node === ownerDocument.activeElement) {
|
|
79
|
-
if (event.key === 'End' || event.key === 'Home') {
|
|
80
|
-
const selectionRoot = (0, _utils.getSelectionRoot)(ownerDocument);
|
|
81
|
-
const selection = ownerDocument.defaultView.getSelection();
|
|
82
|
-
selection.selectAllChildren(selectionRoot);
|
|
83
|
-
const method = event.key === 'End' ? 'collapseToEnd' : 'collapseToStart';
|
|
84
|
-
selection[method]();
|
|
85
|
-
event.preventDefault();
|
|
86
|
-
return;
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
59
|
if (event.keyCode === _keycodes.ENTER) {
|
|
90
60
|
if (event.shiftKey || __unstableIsFullySelected()) {
|
|
91
61
|
return;
|