@wordpress/block-editor 12.19.3 → 12.19.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (165) hide show
  1. package/build/components/block-actions/index.js +45 -32
  2. package/build/components/block-actions/index.js.map +1 -1
  3. package/build/components/block-bindings-toolbar-indicator/index.js +25 -0
  4. package/build/components/block-bindings-toolbar-indicator/index.js.map +1 -0
  5. package/build/components/block-edit/context.js +2 -1
  6. package/build/components/block-edit/context.js.map +1 -1
  7. package/build/components/block-edit/index.js +8 -3
  8. package/build/components/block-edit/index.js.map +1 -1
  9. package/build/components/block-inspector/index.js +5 -4
  10. package/build/components/block-inspector/index.js.map +1 -1
  11. package/build/components/block-list/use-block-props/index.js +8 -1
  12. package/build/components/block-list/use-block-props/index.js.map +1 -1
  13. package/build/components/block-list/use-block-props/use-selected-block-event-handlers.js +3 -3
  14. package/build/components/block-list/use-block-props/use-selected-block-event-handlers.js.map +1 -1
  15. package/build/components/block-preview/index.js +4 -0
  16. package/build/components/block-preview/index.js.map +1 -1
  17. package/build/components/block-settings-menu/block-settings-dropdown.js +12 -10
  18. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  19. package/build/components/block-toolbar/index.js +14 -5
  20. package/build/components/block-toolbar/index.js.map +1 -1
  21. package/build/components/global-styles/border-panel.js +21 -8
  22. package/build/components/global-styles/border-panel.js.map +1 -1
  23. package/build/components/global-styles/index.js +6 -0
  24. package/build/components/global-styles/index.js.map +1 -1
  25. package/build/components/global-styles/shadow-panel-components.js +80 -23
  26. package/build/components/global-styles/shadow-panel-components.js.map +1 -1
  27. package/build/components/inspector-controls-tabs/styles-tab.js +1 -1
  28. package/build/components/inspector-controls-tabs/styles-tab.js.map +1 -1
  29. package/build/components/link-control/link-preview.js +4 -1
  30. package/build/components/link-control/link-preview.js.map +1 -1
  31. package/build/components/list-view/block-select-button.js +10 -2
  32. package/build/components/list-view/block-select-button.js.map +1 -1
  33. package/build/components/list-view/use-clipboard-handler.js +2 -1
  34. package/build/components/list-view/use-clipboard-handler.js.map +1 -1
  35. package/build/components/rich-text/index.js +46 -26
  36. package/build/components/rich-text/index.js.map +1 -1
  37. package/build/components/rich-text/use-enter.js +3 -0
  38. package/build/components/rich-text/use-enter.js.map +1 -1
  39. package/build/components/url-popover/index.js +3 -3
  40. package/build/components/url-popover/index.js.map +1 -1
  41. package/build/components/writing-flow/use-clipboard-handler.js +2 -1
  42. package/build/components/writing-flow/use-clipboard-handler.js.map +1 -1
  43. package/build/components/writing-flow/utils.js +23 -6
  44. package/build/components/writing-flow/utils.js.map +1 -1
  45. package/build/hooks/block-hooks.js +34 -8
  46. package/build/hooks/block-hooks.js.map +1 -1
  47. package/build/hooks/border.js +6 -4
  48. package/build/hooks/border.js.map +1 -1
  49. package/build/hooks/use-bindings-attributes.js +171 -48
  50. package/build/hooks/use-bindings-attributes.js.map +1 -1
  51. package/build/private-apis.js +5 -1
  52. package/build/private-apis.js.map +1 -1
  53. package/build/store/actions.js +40 -6
  54. package/build/store/actions.js.map +1 -1
  55. package/build/store/private-actions.js +0 -10
  56. package/build/store/private-actions.js.map +1 -1
  57. package/build/store/private-selectors.js +0 -8
  58. package/build/store/private-selectors.js.map +1 -1
  59. package/build/store/reducer.js +1 -16
  60. package/build/store/reducer.js.map +1 -1
  61. package/build-module/components/block-actions/index.js +45 -32
  62. package/build-module/components/block-actions/index.js.map +1 -1
  63. package/build-module/components/block-bindings-toolbar-indicator/index.js +18 -0
  64. package/build-module/components/block-bindings-toolbar-indicator/index.js.map +1 -0
  65. package/build-module/components/block-edit/context.js +1 -0
  66. package/build-module/components/block-edit/context.js.map +1 -1
  67. package/build-module/components/block-edit/index.js +9 -4
  68. package/build-module/components/block-edit/index.js.map +1 -1
  69. package/build-module/components/block-inspector/index.js +6 -5
  70. package/build-module/components/block-inspector/index.js.map +1 -1
  71. package/build-module/components/block-list/use-block-props/index.js +9 -2
  72. package/build-module/components/block-list/use-block-props/index.js.map +1 -1
  73. package/build-module/components/block-list/use-block-props/use-selected-block-event-handlers.js +3 -3
  74. package/build-module/components/block-list/use-block-props/use-selected-block-event-handlers.js.map +1 -1
  75. package/build-module/components/block-preview/index.js +4 -0
  76. package/build-module/components/block-preview/index.js.map +1 -1
  77. package/build-module/components/block-settings-menu/block-settings-dropdown.js +12 -10
  78. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  79. package/build-module/components/block-toolbar/index.js +14 -5
  80. package/build-module/components/block-toolbar/index.js.map +1 -1
  81. package/build-module/components/global-styles/border-panel.js +22 -10
  82. package/build-module/components/global-styles/border-panel.js.map +1 -1
  83. package/build-module/components/global-styles/index.js +1 -1
  84. package/build-module/components/global-styles/index.js.map +1 -1
  85. package/build-module/components/global-styles/shadow-panel-components.js +82 -24
  86. package/build-module/components/global-styles/shadow-panel-components.js.map +1 -1
  87. package/build-module/components/inspector-controls-tabs/styles-tab.js +2 -2
  88. package/build-module/components/inspector-controls-tabs/styles-tab.js.map +1 -1
  89. package/build-module/components/link-control/link-preview.js +5 -2
  90. package/build-module/components/link-control/link-preview.js.map +1 -1
  91. package/build-module/components/list-view/block-select-button.js +11 -3
  92. package/build-module/components/list-view/block-select-button.js.map +1 -1
  93. package/build-module/components/list-view/use-clipboard-handler.js +3 -2
  94. package/build-module/components/list-view/use-clipboard-handler.js.map +1 -1
  95. package/build-module/components/rich-text/index.js +47 -28
  96. package/build-module/components/rich-text/index.js.map +1 -1
  97. package/build-module/components/rich-text/use-enter.js +3 -0
  98. package/build-module/components/rich-text/use-enter.js.map +1 -1
  99. package/build-module/components/url-popover/index.js +3 -3
  100. package/build-module/components/url-popover/index.js.map +1 -1
  101. package/build-module/components/writing-flow/use-clipboard-handler.js +3 -2
  102. package/build-module/components/writing-flow/use-clipboard-handler.js.map +1 -1
  103. package/build-module/components/writing-flow/utils.js +22 -7
  104. package/build-module/components/writing-flow/utils.js.map +1 -1
  105. package/build-module/hooks/block-hooks.js +34 -8
  106. package/build-module/hooks/block-hooks.js.map +1 -1
  107. package/build-module/hooks/border.js +7 -5
  108. package/build-module/hooks/border.js.map +1 -1
  109. package/build-module/hooks/use-bindings-attributes.js +172 -49
  110. package/build-module/hooks/use-bindings-attributes.js.map +1 -1
  111. package/build-module/private-apis.js +5 -1
  112. package/build-module/private-apis.js.map +1 -1
  113. package/build-module/store/actions.js +40 -6
  114. package/build-module/store/actions.js.map +1 -1
  115. package/build-module/store/private-actions.js +0 -9
  116. package/build-module/store/private-actions.js.map +1 -1
  117. package/build-module/store/private-selectors.js +0 -6
  118. package/build-module/store/private-selectors.js.map +1 -1
  119. package/build-module/store/reducer.js +1 -16
  120. package/build-module/store/reducer.js.map +1 -1
  121. package/build-style/content-rtl.css +1 -0
  122. package/build-style/content.css +1 -0
  123. package/build-style/default-editor-styles-rtl.css +1 -0
  124. package/build-style/default-editor-styles.css +1 -0
  125. package/build-style/style-rtl.css +70 -14
  126. package/build-style/style.css +70 -14
  127. package/package.json +8 -8
  128. package/src/components/block-actions/index.js +57 -47
  129. package/src/components/block-bindings-toolbar-indicator/index.js +20 -0
  130. package/src/components/block-bindings-toolbar-indicator/style.scss +14 -0
  131. package/src/components/block-edit/context.js +1 -0
  132. package/src/components/block-edit/index.js +5 -1
  133. package/src/components/block-inspector/index.js +7 -5
  134. package/src/components/block-list/use-block-props/index.js +12 -2
  135. package/src/components/block-list/use-block-props/use-selected-block-event-handlers.js +3 -7
  136. package/src/components/block-preview/index.js +6 -1
  137. package/src/components/block-settings-menu/block-settings-dropdown.js +12 -9
  138. package/src/components/block-toolbar/index.js +14 -4
  139. package/src/components/block-toolbar/style.scss +11 -6
  140. package/src/components/global-styles/border-panel.js +33 -22
  141. package/src/components/global-styles/index.js +5 -1
  142. package/src/components/global-styles/shadow-panel-components.js +92 -23
  143. package/src/components/global-styles/style.scss +33 -10
  144. package/src/components/inspector-controls-tabs/styles-tab.js +2 -2
  145. package/src/components/link-control/link-preview.js +9 -2
  146. package/src/components/link-control/style.scss +9 -0
  147. package/src/components/list-view/block-select-button.js +16 -2
  148. package/src/components/list-view/style.scss +8 -0
  149. package/src/components/list-view/use-clipboard-handler.js +3 -2
  150. package/src/components/rich-text/index.js +75 -52
  151. package/src/components/rich-text/use-enter.js +4 -0
  152. package/src/components/url-popover/index.js +5 -5
  153. package/src/components/url-popover/style.scss +1 -0
  154. package/src/components/writing-flow/use-clipboard-handler.js +3 -2
  155. package/src/components/writing-flow/utils.js +31 -16
  156. package/src/hooks/block-hooks.js +46 -8
  157. package/src/hooks/block-hooks.scss +6 -0
  158. package/src/hooks/border.js +16 -4
  159. package/src/hooks/use-bindings-attributes.js +215 -65
  160. package/src/private-apis.js +4 -0
  161. package/src/store/actions.js +54 -14
  162. package/src/store/private-actions.js +0 -10
  163. package/src/store/private-selectors.js +0 -8
  164. package/src/store/reducer.js +0 -15
  165. package/src/style.scss +1 -0
@@ -12,13 +12,14 @@ import { useDispatch, useSelect } from '@wordpress/data';
12
12
  import { useMergeRefs } from '@wordpress/compose';
13
13
  import { __unstableUseRichText as useRichText, removeFormat } from '@wordpress/rich-text';
14
14
  import { Popover } from '@wordpress/components';
15
- import { getBlockType } from '@wordpress/blocks';
15
+ import { getBlockType, store as blocksStore } from '@wordpress/blocks';
16
16
 
17
17
  /**
18
18
  * Internal dependencies
19
19
  */
20
20
  import { useBlockEditorAutocompleteProps } from '../autocomplete';
21
21
  import { useBlockEditContext } from '../block-edit';
22
+ import { blockBindingsKey } from '../block-edit/context';
22
23
  import FormatToolbarContainer from './format-toolbar-container';
23
24
  import { store as blockEditorStore } from '../../store';
24
25
  import { useUndoAutomaticChange } from './use-undo-automatic-change';
@@ -39,7 +40,7 @@ import { getAllowedFormats } from './utils';
39
40
  import { Content } from './content';
40
41
  import { withDeprecations } from './with-deprecations';
41
42
  import { unlock } from '../../lock-unlock';
42
- import { BLOCK_BINDINGS_ALLOWED_BLOCKS } from '../../hooks/use-bindings-attributes';
43
+ import { canBindBlock } from '../../hooks/use-bindings-attributes';
43
44
  export const keyboardShortcutContext = createContext();
44
45
  export const inputEventContext = createContext();
45
46
 
@@ -99,15 +100,18 @@ export function RichTextWrapper({
99
100
  __unstableDisableFormats: disableFormats,
100
101
  disableLineBreaks,
101
102
  __unstableAllowPrefixTransformations,
103
+ disableEditing,
102
104
  ...props
103
105
  }, forwardedRef) {
104
106
  props = removeNativeProps(props);
105
107
  const anchorRef = useRef();
108
+ const context = useBlockEditContext();
106
109
  const {
107
110
  clientId,
108
111
  isSelected: isBlockSelected,
109
112
  name: blockName
110
- } = useBlockEditContext();
113
+ } = context;
114
+ const blockBindings = context[blockBindingsKey];
111
115
  const selector = select => {
112
116
  // Avoid subscribing to the block editor store if the block is not
113
117
  // selected.
@@ -118,26 +122,35 @@ export function RichTextWrapper({
118
122
  }
119
123
  const {
120
124
  getSelectionStart,
121
- getSelectionEnd,
122
- getBlockAttributes
125
+ getSelectionEnd
123
126
  } = select(blockEditorStore);
124
127
  const selectionStart = getSelectionStart();
125
128
  const selectionEnd = getSelectionEnd();
126
- const blockBindings = getBlockAttributes(clientId)?.metadata?.bindings;
127
129
  let isSelected;
128
130
  if (originalIsSelected === undefined) {
129
131
  isSelected = selectionStart.clientId === clientId && selectionEnd.clientId === clientId && selectionStart.attributeKey === identifier;
130
132
  } else if (originalIsSelected) {
131
133
  isSelected = selectionStart.clientId === clientId;
132
134
  }
133
-
135
+ return {
136
+ selectionStart: isSelected ? selectionStart.offset : undefined,
137
+ selectionEnd: isSelected ? selectionEnd.offset : undefined,
138
+ isSelected
139
+ };
140
+ };
141
+ const {
142
+ selectionStart,
143
+ selectionEnd,
144
+ isSelected
145
+ } = useSelect(selector, [clientId, identifier, originalIsSelected, isBlockSelected]);
146
+ const disableBoundBlocks = useSelect(select => {
134
147
  // Disable Rich Text editing if block bindings specify that.
135
- let shouldDisableEditing = false;
136
- if (blockBindings && blockName in BLOCK_BINDINGS_ALLOWED_BLOCKS) {
148
+ let _disableBoundBlocks = false;
149
+ if (blockBindings && canBindBlock(blockName)) {
137
150
  const blockTypeAttributes = getBlockType(blockName).attributes;
138
151
  const {
139
152
  getBlockBindingsSource
140
- } = unlock(select(blockEditorStore));
153
+ } = unlock(select(blocksStore));
141
154
  for (const [attribute, args] of Object.entries(blockBindings)) {
142
155
  if (blockTypeAttributes?.[attribute]?.source !== 'rich-text') {
143
156
  break;
@@ -146,24 +159,14 @@ export function RichTextWrapper({
146
159
  // If the source is not defined, or if its value of `lockAttributesEditing` is `true`, disable it.
147
160
  const blockBindingsSource = getBlockBindingsSource(args.source);
148
161
  if (!blockBindingsSource || blockBindingsSource.lockAttributesEditing) {
149
- shouldDisableEditing = true;
162
+ _disableBoundBlocks = true;
150
163
  break;
151
164
  }
152
165
  }
153
166
  }
154
- return {
155
- selectionStart: isSelected ? selectionStart.offset : undefined,
156
- selectionEnd: isSelected ? selectionEnd.offset : undefined,
157
- isSelected,
158
- shouldDisableEditing
159
- };
160
- };
161
- const {
162
- selectionStart,
163
- selectionEnd,
164
- isSelected,
165
- shouldDisableEditing
166
- } = useSelect(selector, [clientId, identifier, originalIsSelected, isBlockSelected]);
167
+ return _disableBoundBlocks;
168
+ }, [blockBindings, blockName]);
169
+ const shouldDisableEditing = disableEditing || disableBoundBlocks;
167
170
  const {
168
171
  getSelectionStart,
169
172
  getSelectionEnd,
@@ -359,16 +362,32 @@ export function RichTextWrapper({
359
362
  "data-wp-block-attribute-key": identifier
360
363
  }));
361
364
  }
362
- const ForwardedRichTextContainer = withDeprecations(forwardRef(RichTextWrapper));
363
- ForwardedRichTextContainer.Content = Content;
364
- ForwardedRichTextContainer.isEmpty = value => {
365
+
366
+ // This is the private API for the RichText component.
367
+ // It allows access to all props, not just the public ones.
368
+ export const PrivateRichText = withDeprecations(forwardRef(RichTextWrapper));
369
+ PrivateRichText.Content = Content;
370
+ PrivateRichText.isEmpty = value => {
365
371
  return !value || value.length === 0;
366
372
  };
367
373
 
374
+ // This is the public API for the RichText component.
375
+ // We wrap the PrivateRichText component to hide some props from the public API.
368
376
  /**
369
377
  * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/rich-text/README.md
370
378
  */
371
- export default ForwardedRichTextContainer;
379
+ const PublicForwardedRichTextContainer = forwardRef((props, ref) => {
380
+ return createElement(PrivateRichText, {
381
+ ref: ref,
382
+ ...props,
383
+ disableEditing: false
384
+ });
385
+ });
386
+ PublicForwardedRichTextContainer.Content = Content;
387
+ PublicForwardedRichTextContainer.isEmpty = value => {
388
+ return !value || value.length === 0;
389
+ };
390
+ export default PublicForwardedRichTextContainer;
372
391
  export { RichTextShortcut } from './shortcut';
373
392
  export { RichTextToolbarButton } from './toolbar-button';
374
393
  export { __unstableRichTextInputEvent } from './input-event';
@@ -1 +1 @@
1
- {"version":3,"names":["classnames","useRef","useCallback","forwardRef","createContext","useDispatch","useSelect","useMergeRefs","__unstableUseRichText","useRichText","removeFormat","Popover","getBlockType","useBlockEditorAutocompleteProps","useBlockEditContext","FormatToolbarContainer","store","blockEditorStore","useUndoAutomaticChange","useMarkPersistent","usePasteHandler","useBeforeInputRules","useInputRules","useDelete","useEnter","useFormatTypes","useRemoveBrowserShortcuts","useShortcuts","useInputEvents","useInsertReplacementText","useFirefoxCompat","FormatEdit","getAllowedFormats","Content","withDeprecations","unlock","BLOCK_BINDINGS_ALLOWED_BLOCKS","keyboardShortcutContext","inputEventContext","removeNativeProps","props","__unstableMobileNoFocusOnMount","deleteEnter","placeholderTextColor","textAlign","selectionColor","tagsToEliminate","disableEditingMenu","fontSize","fontFamily","fontWeight","fontStyle","minWidth","maxWidth","setRef","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","forwardedRef","anchorRef","clientId","isBlockSelected","name","blockName","selector","select","getSelectionStart","getSelectionEnd","getBlockAttributes","selectionStart","selectionEnd","blockBindings","metadata","bindings","undefined","attributeKey","shouldDisableEditing","blockTypeAttributes","attributes","getBlockBindingsSource","attribute","args","Object","entries","source","blockBindingsSource","lockAttributesEditing","offset","getBlockRootClientId","selectionChange","adjustedAllowedFormats","hasFormats","length","onSelectionChange","start","end","selection","unset","formatTypes","prepareHandlers","valueHandlers","changeHandlers","dependencies","addEditorOnlyFormats","reduce","accumulator","fn","text","formats","removeEditorOnlyFormats","forEach","formatType","__experimentalCreatePrepareEditableTree","addInvisibleFormats","getValue","ref","richTextRef","html","__unstableFormats","__unstableText","values","changeHandler","__unstableIsSelected","__unstableDependencies","__unstableAfterParse","__unstableBeforeSerialize","__unstableAddInvisibleFormats","autocompleteProps","completers","record","keyboardShortcuts","Set","inputEvents","onFocus","current","focus","TagName","createElement","Fragment","Provider","__unstableSlotNameProvider","inline","editableContentElement","role","contentEditable","suppressContentEditableWarning","className","tabIndex","ForwardedRichTextContainer","isEmpty","RichTextShortcut","RichTextToolbarButton","__unstableRichTextInputEvent"],"sources":["@wordpress/block-editor/src/components/rich-text/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tuseRef,\n\tuseCallback,\n\tforwardRef,\n\tcreateContext,\n} from '@wordpress/element';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { useMergeRefs } from '@wordpress/compose';\nimport {\n\t__unstableUseRichText as useRichText,\n\tremoveFormat,\n} from '@wordpress/rich-text';\nimport { Popover } from '@wordpress/components';\nimport { getBlockType } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport { useBlockEditorAutocompleteProps } from '../autocomplete';\nimport { useBlockEditContext } from '../block-edit';\nimport FormatToolbarContainer from './format-toolbar-container';\nimport { store as blockEditorStore } from '../../store';\nimport { useUndoAutomaticChange } from './use-undo-automatic-change';\nimport { useMarkPersistent } from './use-mark-persistent';\nimport { usePasteHandler } from './use-paste-handler';\nimport { useBeforeInputRules } from './use-before-input-rules';\nimport { useInputRules } from './use-input-rules';\nimport { useDelete } from './use-delete';\nimport { useEnter } from './use-enter';\nimport { useFormatTypes } from './use-format-types';\nimport { useRemoveBrowserShortcuts } from './use-remove-browser-shortcuts';\nimport { useShortcuts } from './use-shortcuts';\nimport { useInputEvents } from './use-input-events';\nimport { useInsertReplacementText } from './use-insert-replacement-text';\nimport { useFirefoxCompat } from './use-firefox-compat';\nimport FormatEdit from './format-edit';\nimport { getAllowedFormats } from './utils';\nimport { Content } from './content';\nimport { withDeprecations } from './with-deprecations';\nimport { unlock } from '../../lock-unlock';\nimport { BLOCK_BINDINGS_ALLOWED_BLOCKS } from '../../hooks/use-bindings-attributes';\n\nexport const keyboardShortcutContext = createContext();\nexport const inputEventContext = createContext();\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\tsetRef,\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\t...props\n\t},\n\tforwardedRef\n) {\n\tprops = removeNativeProps( props );\n\n\tconst anchorRef = useRef();\n\tconst {\n\t\tclientId,\n\t\tisSelected: isBlockSelected,\n\t\tname: blockName,\n\t} = useBlockEditContext();\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, getBlockAttributes } =\n\t\t\tselect( blockEditorStore );\n\t\tconst selectionStart = getSelectionStart();\n\t\tconst selectionEnd = getSelectionEnd();\n\t\tconst blockBindings =\n\t\t\tgetBlockAttributes( clientId )?.metadata?.bindings;\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\tselectionStart.attributeKey === identifier;\n\t\t} else if ( originalIsSelected ) {\n\t\t\tisSelected = selectionStart.clientId === clientId;\n\t\t}\n\n\t\t// Disable Rich Text editing if block bindings specify that.\n\t\tlet shouldDisableEditing = false;\n\t\tif ( blockBindings && blockName in BLOCK_BINDINGS_ALLOWED_BLOCKS ) {\n\t\t\tconst blockTypeAttributes = getBlockType( blockName ).attributes;\n\t\t\tconst { getBlockBindingsSource } = unlock(\n\t\t\t\tselect( blockEditorStore )\n\t\t\t);\n\t\t\tfor ( const [ attribute, args ] of Object.entries(\n\t\t\t\tblockBindings\n\t\t\t) ) {\n\t\t\t\tif (\n\t\t\t\t\tblockTypeAttributes?.[ attribute ]?.source !== 'rich-text'\n\t\t\t\t) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\t// If the source is not defined, or if its value of `lockAttributesEditing` is `true`, disable it.\n\t\t\t\tconst blockBindingsSource = getBlockBindingsSource(\n\t\t\t\t\targs.source\n\t\t\t\t);\n\t\t\t\tif (\n\t\t\t\t\t! blockBindingsSource ||\n\t\t\t\t\tblockBindingsSource.lockAttributesEditing\n\t\t\t\t) {\n\t\t\t\t\tshouldDisableEditing = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\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\tshouldDisableEditing,\n\t\t};\n\t};\n\tconst { selectionStart, selectionEnd, isSelected, shouldDisableEditing } =\n\t\tuseSelect( selector, [\n\t\t\tclientId,\n\t\t\tidentifier,\n\t\t\toriginalIsSelected,\n\t\t\tisBlockSelected,\n\t\t] );\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\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\tclientId,\n\t\t\t\t\tattributeKey: identifier,\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\tclientId,\n\t\t\t\t\tattributeKey: identifier,\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[ clientId, identifier ]\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,\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\tvalue={ value }\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-label={ placeholder }\n\t\t\t\taria-readonly={ shouldDisableEditing }\n\t\t\t\t{ ...props }\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\tuseBeforeInputRules( { value, onChange } ),\n\t\t\t\t\tuseInputRules( {\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} ),\n\t\t\t\t\tuseInsertReplacementText(),\n\t\t\t\t\tuseRemoveBrowserShortcuts(),\n\t\t\t\t\tuseShortcuts( keyboardShortcuts ),\n\t\t\t\t\tuseInputEvents( inputEvents ),\n\t\t\t\t\tuseUndoAutomaticChange(),\n\t\t\t\t\tusePasteHandler( {\n\t\t\t\t\t\tisSelected,\n\t\t\t\t\t\tdisableFormats,\n\t\t\t\t\t\tonChange,\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\tformatTypes,\n\t\t\t\t\t\ttagName,\n\t\t\t\t\t\tonReplace,\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} ),\n\t\t\t\t\tuseDelete( {\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\tonMerge,\n\t\t\t\t\t\tonRemove,\n\t\t\t\t\t} ),\n\t\t\t\t\tuseEnter( {\n\t\t\t\t\t\tremoveEditorOnlyFormats,\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\tonReplace,\n\t\t\t\t\t\tonSplit,\n\t\t\t\t\t\tonChange,\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} ),\n\t\t\t\t\tuseFirefoxCompat(),\n\t\t\t\t\tanchorRef,\n\t\t\t\t] ) }\n\t\t\t\tcontentEditable={ ! shouldDisableEditing }\n\t\t\t\tsuppressContentEditableWarning={ true }\n\t\t\t\tclassName={ classnames(\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\nconst ForwardedRichTextContainer = withDeprecations(\n\tforwardRef( RichTextWrapper )\n);\n\nForwardedRichTextContainer.Content = Content;\nForwardedRichTextContainer.isEmpty = ( value ) => {\n\treturn ! value || value.length === 0;\n};\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/rich-text/README.md\n */\nexport default ForwardedRichTextContainer;\nexport { RichTextShortcut } from './shortcut';\nexport { RichTextToolbarButton } from './toolbar-button';\nexport { __unstableRichTextInputEvent } from './input-event';\n"],"mappings":"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"}
1
+ {"version":3,"names":["classnames","useRef","useCallback","forwardRef","createContext","useDispatch","useSelect","useMergeRefs","__unstableUseRichText","useRichText","removeFormat","Popover","getBlockType","store","blocksStore","useBlockEditorAutocompleteProps","useBlockEditContext","blockBindingsKey","FormatToolbarContainer","blockEditorStore","useUndoAutomaticChange","useMarkPersistent","usePasteHandler","useBeforeInputRules","useInputRules","useDelete","useEnter","useFormatTypes","useRemoveBrowserShortcuts","useShortcuts","useInputEvents","useInsertReplacementText","useFirefoxCompat","FormatEdit","getAllowedFormats","Content","withDeprecations","unlock","canBindBlock","keyboardShortcutContext","inputEventContext","removeNativeProps","props","__unstableMobileNoFocusOnMount","deleteEnter","placeholderTextColor","textAlign","selectionColor","tagsToEliminate","disableEditingMenu","fontSize","fontFamily","fontWeight","fontStyle","minWidth","maxWidth","setRef","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","disableEditing","forwardedRef","anchorRef","context","clientId","isBlockSelected","name","blockName","blockBindings","selector","select","getSelectionStart","getSelectionEnd","selectionStart","selectionEnd","undefined","attributeKey","offset","disableBoundBlocks","_disableBoundBlocks","blockTypeAttributes","attributes","getBlockBindingsSource","attribute","args","Object","entries","source","blockBindingsSource","lockAttributesEditing","shouldDisableEditing","getBlockRootClientId","selectionChange","adjustedAllowedFormats","hasFormats","length","onSelectionChange","start","end","selection","unset","formatTypes","prepareHandlers","valueHandlers","changeHandlers","dependencies","addEditorOnlyFormats","reduce","accumulator","fn","text","formats","removeEditorOnlyFormats","forEach","formatType","__experimentalCreatePrepareEditableTree","addInvisibleFormats","getValue","ref","richTextRef","html","__unstableFormats","__unstableText","values","changeHandler","__unstableIsSelected","__unstableDependencies","__unstableAfterParse","__unstableBeforeSerialize","__unstableAddInvisibleFormats","autocompleteProps","completers","record","keyboardShortcuts","Set","inputEvents","onFocus","current","focus","TagName","createElement","Fragment","Provider","__unstableSlotNameProvider","inline","editableContentElement","role","contentEditable","suppressContentEditableWarning","className","tabIndex","PrivateRichText","isEmpty","PublicForwardedRichTextContainer","RichTextShortcut","RichTextToolbarButton","__unstableRichTextInputEvent"],"sources":["@wordpress/block-editor/src/components/rich-text/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tuseRef,\n\tuseCallback,\n\tforwardRef,\n\tcreateContext,\n} from '@wordpress/element';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { useMergeRefs } from '@wordpress/compose';\nimport {\n\t__unstableUseRichText as useRichText,\n\tremoveFormat,\n} from '@wordpress/rich-text';\nimport { Popover } from '@wordpress/components';\nimport { getBlockType, store as blocksStore } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport { useBlockEditorAutocompleteProps } from '../autocomplete';\nimport { useBlockEditContext } from '../block-edit';\nimport { blockBindingsKey } from '../block-edit/context';\nimport FormatToolbarContainer from './format-toolbar-container';\nimport { store as blockEditorStore } from '../../store';\nimport { useUndoAutomaticChange } from './use-undo-automatic-change';\nimport { useMarkPersistent } from './use-mark-persistent';\nimport { usePasteHandler } from './use-paste-handler';\nimport { useBeforeInputRules } from './use-before-input-rules';\nimport { useInputRules } from './use-input-rules';\nimport { useDelete } from './use-delete';\nimport { useEnter } from './use-enter';\nimport { useFormatTypes } from './use-format-types';\nimport { useRemoveBrowserShortcuts } from './use-remove-browser-shortcuts';\nimport { useShortcuts } from './use-shortcuts';\nimport { useInputEvents } from './use-input-events';\nimport { useInsertReplacementText } from './use-insert-replacement-text';\nimport { useFirefoxCompat } from './use-firefox-compat';\nimport FormatEdit from './format-edit';\nimport { getAllowedFormats } from './utils';\nimport { Content } from './content';\nimport { withDeprecations } from './with-deprecations';\nimport { unlock } from '../../lock-unlock';\nimport { canBindBlock } from '../../hooks/use-bindings-attributes';\n\nexport const keyboardShortcutContext = createContext();\nexport const inputEventContext = createContext();\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\tsetRef,\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\tdisableEditing,\n\t\t...props\n\t},\n\tforwardedRef\n) {\n\tprops = removeNativeProps( props );\n\n\tconst anchorRef = useRef();\n\tconst context = useBlockEditContext();\n\tconst { clientId, isSelected: isBlockSelected, name: blockName } = context;\n\tconst blockBindings = context[ blockBindingsKey ];\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\tselectionStart.attributeKey === identifier;\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\toriginalIsSelected,\n\t\tisBlockSelected,\n\t] );\n\n\tconst disableBoundBlocks = useSelect(\n\t\t( select ) => {\n\t\t\t// Disable Rich Text editing if block bindings specify that.\n\t\t\tlet _disableBoundBlocks = false;\n\t\t\tif ( blockBindings && canBindBlock( blockName ) ) {\n\t\t\t\tconst blockTypeAttributes =\n\t\t\t\t\tgetBlockType( blockName ).attributes;\n\t\t\t\tconst { getBlockBindingsSource } = unlock(\n\t\t\t\t\tselect( blocksStore )\n\t\t\t\t);\n\t\t\t\tfor ( const [ attribute, args ] of Object.entries(\n\t\t\t\t\tblockBindings\n\t\t\t\t) ) {\n\t\t\t\t\tif (\n\t\t\t\t\t\tblockTypeAttributes?.[ attribute ]?.source !==\n\t\t\t\t\t\t'rich-text'\n\t\t\t\t\t) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\t// If the source is not defined, or if its value of `lockAttributesEditing` is `true`, disable it.\n\t\t\t\t\tconst blockBindingsSource = getBlockBindingsSource(\n\t\t\t\t\t\targs.source\n\t\t\t\t\t);\n\t\t\t\t\tif (\n\t\t\t\t\t\t! blockBindingsSource ||\n\t\t\t\t\t\tblockBindingsSource.lockAttributesEditing\n\t\t\t\t\t) {\n\t\t\t\t\t\t_disableBoundBlocks = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn _disableBoundBlocks;\n\t\t},\n\t\t[ blockBindings, blockName ]\n\t);\n\n\tconst shouldDisableEditing = disableEditing || disableBoundBlocks;\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\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\tclientId,\n\t\t\t\t\tattributeKey: identifier,\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\tclientId,\n\t\t\t\t\tattributeKey: identifier,\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[ clientId, identifier ]\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,\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\tvalue={ value }\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-label={ placeholder }\n\t\t\t\taria-readonly={ shouldDisableEditing }\n\t\t\t\t{ ...props }\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\tuseBeforeInputRules( { value, onChange } ),\n\t\t\t\t\tuseInputRules( {\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} ),\n\t\t\t\t\tuseInsertReplacementText(),\n\t\t\t\t\tuseRemoveBrowserShortcuts(),\n\t\t\t\t\tuseShortcuts( keyboardShortcuts ),\n\t\t\t\t\tuseInputEvents( inputEvents ),\n\t\t\t\t\tuseUndoAutomaticChange(),\n\t\t\t\t\tusePasteHandler( {\n\t\t\t\t\t\tisSelected,\n\t\t\t\t\t\tdisableFormats,\n\t\t\t\t\t\tonChange,\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\tformatTypes,\n\t\t\t\t\t\ttagName,\n\t\t\t\t\t\tonReplace,\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} ),\n\t\t\t\t\tuseDelete( {\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\tonMerge,\n\t\t\t\t\t\tonRemove,\n\t\t\t\t\t} ),\n\t\t\t\t\tuseEnter( {\n\t\t\t\t\t\tremoveEditorOnlyFormats,\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\tonReplace,\n\t\t\t\t\t\tonSplit,\n\t\t\t\t\t\tonChange,\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} ),\n\t\t\t\t\tuseFirefoxCompat(),\n\t\t\t\t\tanchorRef,\n\t\t\t\t] ) }\n\t\t\t\tcontentEditable={ ! shouldDisableEditing }\n\t\t\t\tsuppressContentEditableWarning={ true }\n\t\t\t\tclassName={ classnames(\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\treturn (\n\t\t<PrivateRichText ref={ ref } { ...props } disableEditing={ false } />\n\t);\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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"}
@@ -22,6 +22,9 @@ export function useEnter(props) {
22
22
  propsRef.current = props;
23
23
  return useRefEffect(element => {
24
24
  function onKeyDown(event) {
25
+ if (event.target.contentEditable !== 'true') {
26
+ return;
27
+ }
25
28
  if (event.defaultPrevented) {
26
29
  return;
27
30
  }
@@ -1 +1 @@
1
- {"version":3,"names":["useRef","useRefEffect","ENTER","insert","remove","getBlockTransforms","findTransform","useDispatch","useRegistry","store","blockEditorStore","splitValue","useEnter","props","registry","__unstableMarkAutomaticChange","propsRef","current","element","onKeyDown","event","defaultPrevented","keyCode","removeEditorOnlyFormats","value","onReplace","onSplit","onChange","disableLineBreaks","onSplitAtEnd","onSplitAtDoubleLineEnd","preventDefault","_value","formats","canSplit","transforms","filter","type","transformation","item","regExp","test","text","transform","content","start","end","shiftKey","length","slice","batch","addEventListener","removeEventListener"],"sources":["@wordpress/block-editor/src/components/rich-text/use-enter.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useRef } from '@wordpress/element';\nimport { useRefEffect } from '@wordpress/compose';\nimport { ENTER } from '@wordpress/keycodes';\nimport { insert, remove } from '@wordpress/rich-text';\nimport { getBlockTransforms, findTransform } from '@wordpress/blocks';\nimport { useDispatch, useRegistry } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport { splitValue } from './split-value';\n\nexport function useEnter( props ) {\n\tconst registry = useRegistry();\n\tconst { __unstableMarkAutomaticChange } = useDispatch( blockEditorStore );\n\tconst propsRef = useRef( props );\n\tpropsRef.current = props;\n\treturn useRefEffect( ( element ) => {\n\t\tfunction onKeyDown( event ) {\n\t\t\tif ( event.defaultPrevented ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( event.keyCode !== ENTER ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst {\n\t\t\t\tremoveEditorOnlyFormats,\n\t\t\t\tvalue,\n\t\t\t\tonReplace,\n\t\t\t\tonSplit,\n\t\t\t\tonChange,\n\t\t\t\tdisableLineBreaks,\n\t\t\t\tonSplitAtEnd,\n\t\t\t\tonSplitAtDoubleLineEnd,\n\t\t\t} = propsRef.current;\n\n\t\t\tevent.preventDefault();\n\n\t\t\tconst _value = { ...value };\n\t\t\t_value.formats = removeEditorOnlyFormats( value );\n\t\t\tconst canSplit = onReplace && onSplit;\n\n\t\t\tif ( onReplace ) {\n\t\t\t\tconst transforms = getBlockTransforms( 'from' ).filter(\n\t\t\t\t\t( { type } ) => type === 'enter'\n\t\t\t\t);\n\t\t\t\tconst transformation = findTransform( transforms, ( item ) => {\n\t\t\t\t\treturn item.regExp.test( _value.text );\n\t\t\t\t} );\n\n\t\t\t\tif ( transformation ) {\n\t\t\t\t\tonReplace( [\n\t\t\t\t\t\ttransformation.transform( {\n\t\t\t\t\t\t\tcontent: _value.text,\n\t\t\t\t\t\t} ),\n\t\t\t\t\t] );\n\t\t\t\t\t__unstableMarkAutomaticChange();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst { text, start, end } = _value;\n\n\t\t\tif ( event.shiftKey ) {\n\t\t\t\tif ( ! disableLineBreaks ) {\n\t\t\t\t\tonChange( insert( _value, '\\n' ) );\n\t\t\t\t}\n\t\t\t} else if ( canSplit ) {\n\t\t\t\tsplitValue( {\n\t\t\t\t\tvalue: _value,\n\t\t\t\t\tonReplace,\n\t\t\t\t\tonSplit,\n\t\t\t\t} );\n\t\t\t} else if ( onSplitAtEnd && start === end && end === text.length ) {\n\t\t\t\tonSplitAtEnd();\n\t\t\t} else if (\n\t\t\t\t// For some blocks it's desirable to split at the end of the\n\t\t\t\t// block when there are two line breaks at the end of the\n\t\t\t\t// block, so triple Enter exits the block.\n\t\t\t\tonSplitAtDoubleLineEnd &&\n\t\t\t\tstart === end &&\n\t\t\t\tend === text.length &&\n\t\t\t\ttext.slice( -2 ) === '\\n\\n'\n\t\t\t) {\n\t\t\t\tregistry.batch( () => {\n\t\t\t\t\t_value.start = _value.end - 2;\n\t\t\t\t\tonChange( remove( _value ) );\n\t\t\t\t\tonSplitAtDoubleLineEnd();\n\t\t\t\t} );\n\t\t\t} else if ( ! disableLineBreaks ) {\n\t\t\t\tonChange( insert( _value, '\\n' ) );\n\t\t\t}\n\t\t}\n\n\t\telement.addEventListener( 'keydown', onKeyDown );\n\t\treturn () => {\n\t\t\telement.removeEventListener( 'keydown', onKeyDown );\n\t\t};\n\t}, [] );\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["useRef","useRefEffect","ENTER","insert","remove","getBlockTransforms","findTransform","useDispatch","useRegistry","store","blockEditorStore","splitValue","useEnter","props","registry","__unstableMarkAutomaticChange","propsRef","current","element","onKeyDown","event","target","contentEditable","defaultPrevented","keyCode","removeEditorOnlyFormats","value","onReplace","onSplit","onChange","disableLineBreaks","onSplitAtEnd","onSplitAtDoubleLineEnd","preventDefault","_value","formats","canSplit","transforms","filter","type","transformation","item","regExp","test","text","transform","content","start","end","shiftKey","length","slice","batch","addEventListener","removeEventListener"],"sources":["@wordpress/block-editor/src/components/rich-text/use-enter.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useRef } from '@wordpress/element';\nimport { useRefEffect } from '@wordpress/compose';\nimport { ENTER } from '@wordpress/keycodes';\nimport { insert, remove } from '@wordpress/rich-text';\nimport { getBlockTransforms, findTransform } from '@wordpress/blocks';\nimport { useDispatch, useRegistry } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport { splitValue } from './split-value';\n\nexport function useEnter( props ) {\n\tconst registry = useRegistry();\n\tconst { __unstableMarkAutomaticChange } = useDispatch( blockEditorStore );\n\tconst propsRef = useRef( props );\n\tpropsRef.current = props;\n\treturn useRefEffect( ( element ) => {\n\t\tfunction onKeyDown( event ) {\n\t\t\tif ( event.target.contentEditable !== 'true' ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( event.defaultPrevented ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( event.keyCode !== ENTER ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst {\n\t\t\t\tremoveEditorOnlyFormats,\n\t\t\t\tvalue,\n\t\t\t\tonReplace,\n\t\t\t\tonSplit,\n\t\t\t\tonChange,\n\t\t\t\tdisableLineBreaks,\n\t\t\t\tonSplitAtEnd,\n\t\t\t\tonSplitAtDoubleLineEnd,\n\t\t\t} = propsRef.current;\n\n\t\t\tevent.preventDefault();\n\n\t\t\tconst _value = { ...value };\n\t\t\t_value.formats = removeEditorOnlyFormats( value );\n\t\t\tconst canSplit = onReplace && onSplit;\n\n\t\t\tif ( onReplace ) {\n\t\t\t\tconst transforms = getBlockTransforms( 'from' ).filter(\n\t\t\t\t\t( { type } ) => type === 'enter'\n\t\t\t\t);\n\t\t\t\tconst transformation = findTransform( transforms, ( item ) => {\n\t\t\t\t\treturn item.regExp.test( _value.text );\n\t\t\t\t} );\n\n\t\t\t\tif ( transformation ) {\n\t\t\t\t\tonReplace( [\n\t\t\t\t\t\ttransformation.transform( {\n\t\t\t\t\t\t\tcontent: _value.text,\n\t\t\t\t\t\t} ),\n\t\t\t\t\t] );\n\t\t\t\t\t__unstableMarkAutomaticChange();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst { text, start, end } = _value;\n\n\t\t\tif ( event.shiftKey ) {\n\t\t\t\tif ( ! disableLineBreaks ) {\n\t\t\t\t\tonChange( insert( _value, '\\n' ) );\n\t\t\t\t}\n\t\t\t} else if ( canSplit ) {\n\t\t\t\tsplitValue( {\n\t\t\t\t\tvalue: _value,\n\t\t\t\t\tonReplace,\n\t\t\t\t\tonSplit,\n\t\t\t\t} );\n\t\t\t} else if ( onSplitAtEnd && start === end && end === text.length ) {\n\t\t\t\tonSplitAtEnd();\n\t\t\t} else if (\n\t\t\t\t// For some blocks it's desirable to split at the end of the\n\t\t\t\t// block when there are two line breaks at the end of the\n\t\t\t\t// block, so triple Enter exits the block.\n\t\t\t\tonSplitAtDoubleLineEnd &&\n\t\t\t\tstart === end &&\n\t\t\t\tend === text.length &&\n\t\t\t\ttext.slice( -2 ) === '\\n\\n'\n\t\t\t) {\n\t\t\t\tregistry.batch( () => {\n\t\t\t\t\t_value.start = _value.end - 2;\n\t\t\t\t\tonChange( remove( _value ) );\n\t\t\t\t\tonSplitAtDoubleLineEnd();\n\t\t\t\t} );\n\t\t\t} else if ( ! disableLineBreaks ) {\n\t\t\t\tonChange( insert( _value, '\\n' ) );\n\t\t\t}\n\t\t}\n\n\t\telement.addEventListener( 'keydown', onKeyDown );\n\t\treturn () => {\n\t\t\telement.removeEventListener( 'keydown', onKeyDown );\n\t\t};\n\t}, [] );\n}\n"],"mappings":"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"}
@@ -72,9 +72,9 @@ const URLPopover = forwardRef(({
72
72
  onClick: toggleSettingsVisibility,
73
73
  "aria-expanded": isSettingsExpanded,
74
74
  size: "compact"
75
- })), showSettings && createElement("div", {
76
- className: "block-editor-url-popover__row block-editor-url-popover__settings"
77
- }, renderSettings())), additionalControls && !showSettings && createElement("div", {
75
+ }))), showSettings && createElement("div", {
76
+ className: "block-editor-url-popover__settings"
77
+ }, renderSettings()), additionalControls && !showSettings && createElement("div", {
78
78
  className: "block-editor-url-popover__additional-controls"
79
79
  }, additionalControls));
80
80
  });
@@ -1 +1 @@
1
- {"version":3,"names":["__","forwardRef","useState","Button","Popover","privateApis","componentsPrivateApis","chevronDown","deprecated","LinkViewer","LinkEditor","unlock","__experimentalPopoverLegacyPositionToPlacement","DEFAULT_PLACEMENT","URLPopover","additionalControls","children","renderSettings","placement","focusOnMount","position","popoverProps","ref","undefined","since","alternative","computedPlacement","isSettingsExpanded","setIsSettingsExpanded","showSettings","toggleSettingsVisibility","createElement","className","shift","variant","icon","label","onClick","size"],"sources":["@wordpress/block-editor/src/components/url-popover/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { forwardRef, useState } from '@wordpress/element';\nimport {\n\tButton,\n\tPopover,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { chevronDown } from '@wordpress/icons';\nimport deprecated from '@wordpress/deprecated';\n\n/**\n * Internal dependencies\n */\nimport LinkViewer from './link-viewer';\nimport LinkEditor from './link-editor';\nimport { unlock } from '../../lock-unlock';\n\nconst { __experimentalPopoverLegacyPositionToPlacement } = unlock(\n\tcomponentsPrivateApis\n);\n\nconst DEFAULT_PLACEMENT = 'bottom';\n\nconst URLPopover = forwardRef(\n\t(\n\t\t{\n\t\t\tadditionalControls,\n\t\t\tchildren,\n\t\t\trenderSettings,\n\t\t\t// The DEFAULT_PLACEMENT value is assigned inside the function's body\n\t\t\tplacement,\n\t\t\tfocusOnMount = 'firstElement',\n\t\t\t// Deprecated\n\t\t\tposition,\n\t\t\t// Rest\n\t\t\t...popoverProps\n\t\t},\n\t\tref\n\t) => {\n\t\tif ( position !== undefined ) {\n\t\t\tdeprecated( '`position` prop in wp.blockEditor.URLPopover', {\n\t\t\t\tsince: '6.2',\n\t\t\t\talternative: '`placement` prop',\n\t\t\t} );\n\t\t}\n\n\t\t// Compute popover's placement:\n\t\t// - give priority to `placement` prop, if defined\n\t\t// - otherwise, compute it from the legacy `position` prop (if defined)\n\t\t// - finally, fallback to the DEFAULT_PLACEMENT.\n\t\tlet computedPlacement;\n\t\tif ( placement !== undefined ) {\n\t\t\tcomputedPlacement = placement;\n\t\t} else if ( position !== undefined ) {\n\t\t\tcomputedPlacement =\n\t\t\t\t__experimentalPopoverLegacyPositionToPlacement( position );\n\t\t}\n\t\tcomputedPlacement = computedPlacement || DEFAULT_PLACEMENT;\n\n\t\tconst [ isSettingsExpanded, setIsSettingsExpanded ] = useState( false );\n\n\t\tconst showSettings = !! renderSettings && isSettingsExpanded;\n\n\t\tconst toggleSettingsVisibility = () => {\n\t\t\tsetIsSettingsExpanded( ! isSettingsExpanded );\n\t\t};\n\n\t\treturn (\n\t\t\t<Popover\n\t\t\t\tref={ ref }\n\t\t\t\tclassName=\"block-editor-url-popover\"\n\t\t\t\tfocusOnMount={ focusOnMount }\n\t\t\t\tplacement={ computedPlacement }\n\t\t\t\tshift\n\t\t\t\tvariant=\"toolbar\"\n\t\t\t\t{ ...popoverProps }\n\t\t\t>\n\t\t\t\t<div className=\"block-editor-url-popover__input-container\">\n\t\t\t\t\t<div className=\"block-editor-url-popover__row\">\n\t\t\t\t\t\t{ children }\n\t\t\t\t\t\t{ !! renderSettings && (\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tclassName=\"block-editor-url-popover__settings-toggle\"\n\t\t\t\t\t\t\t\ticon={ chevronDown }\n\t\t\t\t\t\t\t\tlabel={ __( 'Link settings' ) }\n\t\t\t\t\t\t\t\tonClick={ toggleSettingsVisibility }\n\t\t\t\t\t\t\t\taria-expanded={ isSettingsExpanded }\n\t\t\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</div>\n\t\t\t\t\t{ showSettings && (\n\t\t\t\t\t\t<div className=\"block-editor-url-popover__row block-editor-url-popover__settings\">\n\t\t\t\t\t\t\t{ renderSettings() }\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) }\n\t\t\t\t</div>\n\t\t\t\t{ additionalControls && ! showSettings && (\n\t\t\t\t\t<div className=\"block-editor-url-popover__additional-controls\">\n\t\t\t\t\t\t{ additionalControls }\n\t\t\t\t\t</div>\n\t\t\t\t) }\n\t\t\t</Popover>\n\t\t);\n\t}\n);\n\nURLPopover.LinkEditor = LinkEditor;\n\nURLPopover.LinkViewer = LinkViewer;\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/url-popover/README.md\n */\nexport default URLPopover;\n"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,EAAE,QAAQ,iBAAiB;AACpC,SAASC,UAAU,EAAEC,QAAQ,QAAQ,oBAAoB;AACzD,SACCC,MAAM,EACNC,OAAO,EACPC,WAAW,IAAIC,qBAAqB,QAC9B,uBAAuB;AAC9B,SAASC,WAAW,QAAQ,kBAAkB;AAC9C,OAAOC,UAAU,MAAM,uBAAuB;;AAE9C;AACA;AACA;AACA,OAAOC,UAAU,MAAM,eAAe;AACtC,OAAOC,UAAU,MAAM,eAAe;AACtC,SAASC,MAAM,QAAQ,mBAAmB;AAE1C,MAAM;EAAEC;AAA+C,CAAC,GAAGD,MAAM,CAChEL,qBACD,CAAC;AAED,MAAMO,iBAAiB,GAAG,QAAQ;AAElC,MAAMC,UAAU,GAAGb,UAAU,CAC5B,CACC;EACCc,kBAAkB;EAClBC,QAAQ;EACRC,cAAc;EACd;EACAC,SAAS;EACTC,YAAY,GAAG,cAAc;EAC7B;EACAC,QAAQ;EACR;EACA,GAAGC;AACJ,CAAC,EACDC,GAAG,KACC;EACJ,IAAKF,QAAQ,KAAKG,SAAS,EAAG;IAC7Bf,UAAU,CAAE,8CAA8C,EAAE;MAC3DgB,KAAK,EAAE,KAAK;MACZC,WAAW,EAAE;IACd,CAAE,CAAC;EACJ;;EAEA;EACA;EACA;EACA;EACA,IAAIC,iBAAiB;EACrB,IAAKR,SAAS,KAAKK,SAAS,EAAG;IAC9BG,iBAAiB,GAAGR,SAAS;EAC9B,CAAC,MAAM,IAAKE,QAAQ,KAAKG,SAAS,EAAG;IACpCG,iBAAiB,GAChBd,8CAA8C,CAAEQ,QAAS,CAAC;EAC5D;EACAM,iBAAiB,GAAGA,iBAAiB,IAAIb,iBAAiB;EAE1D,MAAM,CAAEc,kBAAkB,EAAEC,qBAAqB,CAAE,GAAG1B,QAAQ,CAAE,KAAM,CAAC;EAEvE,MAAM2B,YAAY,GAAG,CAAC,CAAEZ,cAAc,IAAIU,kBAAkB;EAE5D,MAAMG,wBAAwB,GAAGA,CAAA,KAAM;IACtCF,qBAAqB,CAAE,CAAED,kBAAmB,CAAC;EAC9C,CAAC;EAED,OACCI,aAAA,CAAC3B,OAAO;IACPkB,GAAG,EAAGA,GAAK;IACXU,SAAS,EAAC,0BAA0B;IACpCb,YAAY,EAAGA,YAAc;IAC7BD,SAAS,EAAGQ,iBAAmB;IAC/BO,KAAK;IACLC,OAAO,EAAC,SAAS;IAAA,GACZb;EAAY,GAEjBU,aAAA;IAAKC,SAAS,EAAC;EAA2C,GACzDD,aAAA;IAAKC,SAAS,EAAC;EAA+B,GAC3ChB,QAAQ,EACR,CAAC,CAAEC,cAAc,IAClBc,aAAA,CAAC5B,MAAM;IACN6B,SAAS,EAAC,2CAA2C;IACrDG,IAAI,EAAG5B,WAAa;IACpB6B,KAAK,EAAGpC,EAAE,CAAE,eAAgB,CAAG;IAC/BqC,OAAO,EAAGP,wBAA0B;IACpC,iBAAgBH,kBAAoB;IACpCW,IAAI,EAAC;EAAS,CACd,CAEE,CAAC,EACJT,YAAY,IACbE,aAAA;IAAKC,SAAS,EAAC;EAAkE,GAC9Ef,cAAc,CAAC,CACb,CAEF,CAAC,EACJF,kBAAkB,IAAI,CAAEc,YAAY,IACrCE,aAAA;IAAKC,SAAS,EAAC;EAA+C,GAC3DjB,kBACE,CAEE,CAAC;AAEZ,CACD,CAAC;AAEDD,UAAU,CAACJ,UAAU,GAAGA,UAAU;AAElCI,UAAU,CAACL,UAAU,GAAGA,UAAU;;AAElC;AACA;AACA;AACA,eAAeK,UAAU"}
1
+ {"version":3,"names":["__","forwardRef","useState","Button","Popover","privateApis","componentsPrivateApis","chevronDown","deprecated","LinkViewer","LinkEditor","unlock","__experimentalPopoverLegacyPositionToPlacement","DEFAULT_PLACEMENT","URLPopover","additionalControls","children","renderSettings","placement","focusOnMount","position","popoverProps","ref","undefined","since","alternative","computedPlacement","isSettingsExpanded","setIsSettingsExpanded","showSettings","toggleSettingsVisibility","createElement","className","shift","variant","icon","label","onClick","size"],"sources":["@wordpress/block-editor/src/components/url-popover/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { forwardRef, useState } from '@wordpress/element';\nimport {\n\tButton,\n\tPopover,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { chevronDown } from '@wordpress/icons';\nimport deprecated from '@wordpress/deprecated';\n\n/**\n * Internal dependencies\n */\nimport LinkViewer from './link-viewer';\nimport LinkEditor from './link-editor';\nimport { unlock } from '../../lock-unlock';\n\nconst { __experimentalPopoverLegacyPositionToPlacement } = unlock(\n\tcomponentsPrivateApis\n);\n\nconst DEFAULT_PLACEMENT = 'bottom';\n\nconst URLPopover = forwardRef(\n\t(\n\t\t{\n\t\t\tadditionalControls,\n\t\t\tchildren,\n\t\t\trenderSettings,\n\t\t\t// The DEFAULT_PLACEMENT value is assigned inside the function's body\n\t\t\tplacement,\n\t\t\tfocusOnMount = 'firstElement',\n\t\t\t// Deprecated\n\t\t\tposition,\n\t\t\t// Rest\n\t\t\t...popoverProps\n\t\t},\n\t\tref\n\t) => {\n\t\tif ( position !== undefined ) {\n\t\t\tdeprecated( '`position` prop in wp.blockEditor.URLPopover', {\n\t\t\t\tsince: '6.2',\n\t\t\t\talternative: '`placement` prop',\n\t\t\t} );\n\t\t}\n\n\t\t// Compute popover's placement:\n\t\t// - give priority to `placement` prop, if defined\n\t\t// - otherwise, compute it from the legacy `position` prop (if defined)\n\t\t// - finally, fallback to the DEFAULT_PLACEMENT.\n\t\tlet computedPlacement;\n\t\tif ( placement !== undefined ) {\n\t\t\tcomputedPlacement = placement;\n\t\t} else if ( position !== undefined ) {\n\t\t\tcomputedPlacement =\n\t\t\t\t__experimentalPopoverLegacyPositionToPlacement( position );\n\t\t}\n\t\tcomputedPlacement = computedPlacement || DEFAULT_PLACEMENT;\n\n\t\tconst [ isSettingsExpanded, setIsSettingsExpanded ] = useState( false );\n\n\t\tconst showSettings = !! renderSettings && isSettingsExpanded;\n\n\t\tconst toggleSettingsVisibility = () => {\n\t\t\tsetIsSettingsExpanded( ! isSettingsExpanded );\n\t\t};\n\n\t\treturn (\n\t\t\t<Popover\n\t\t\t\tref={ ref }\n\t\t\t\tclassName=\"block-editor-url-popover\"\n\t\t\t\tfocusOnMount={ focusOnMount }\n\t\t\t\tplacement={ computedPlacement }\n\t\t\t\tshift\n\t\t\t\tvariant=\"toolbar\"\n\t\t\t\t{ ...popoverProps }\n\t\t\t>\n\t\t\t\t<div className=\"block-editor-url-popover__input-container\">\n\t\t\t\t\t<div className=\"block-editor-url-popover__row\">\n\t\t\t\t\t\t{ children }\n\t\t\t\t\t\t{ !! renderSettings && (\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tclassName=\"block-editor-url-popover__settings-toggle\"\n\t\t\t\t\t\t\t\ticon={ chevronDown }\n\t\t\t\t\t\t\t\tlabel={ __( 'Link settings' ) }\n\t\t\t\t\t\t\t\tonClick={ toggleSettingsVisibility }\n\t\t\t\t\t\t\t\taria-expanded={ isSettingsExpanded }\n\t\t\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t{ showSettings && (\n\t\t\t\t\t<div className=\"block-editor-url-popover__settings\">\n\t\t\t\t\t\t{ renderSettings() }\n\t\t\t\t\t</div>\n\t\t\t\t) }\n\t\t\t\t{ additionalControls && ! showSettings && (\n\t\t\t\t\t<div className=\"block-editor-url-popover__additional-controls\">\n\t\t\t\t\t\t{ additionalControls }\n\t\t\t\t\t</div>\n\t\t\t\t) }\n\t\t\t</Popover>\n\t\t);\n\t}\n);\n\nURLPopover.LinkEditor = LinkEditor;\n\nURLPopover.LinkViewer = LinkViewer;\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/url-popover/README.md\n */\nexport default URLPopover;\n"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,EAAE,QAAQ,iBAAiB;AACpC,SAASC,UAAU,EAAEC,QAAQ,QAAQ,oBAAoB;AACzD,SACCC,MAAM,EACNC,OAAO,EACPC,WAAW,IAAIC,qBAAqB,QAC9B,uBAAuB;AAC9B,SAASC,WAAW,QAAQ,kBAAkB;AAC9C,OAAOC,UAAU,MAAM,uBAAuB;;AAE9C;AACA;AACA;AACA,OAAOC,UAAU,MAAM,eAAe;AACtC,OAAOC,UAAU,MAAM,eAAe;AACtC,SAASC,MAAM,QAAQ,mBAAmB;AAE1C,MAAM;EAAEC;AAA+C,CAAC,GAAGD,MAAM,CAChEL,qBACD,CAAC;AAED,MAAMO,iBAAiB,GAAG,QAAQ;AAElC,MAAMC,UAAU,GAAGb,UAAU,CAC5B,CACC;EACCc,kBAAkB;EAClBC,QAAQ;EACRC,cAAc;EACd;EACAC,SAAS;EACTC,YAAY,GAAG,cAAc;EAC7B;EACAC,QAAQ;EACR;EACA,GAAGC;AACJ,CAAC,EACDC,GAAG,KACC;EACJ,IAAKF,QAAQ,KAAKG,SAAS,EAAG;IAC7Bf,UAAU,CAAE,8CAA8C,EAAE;MAC3DgB,KAAK,EAAE,KAAK;MACZC,WAAW,EAAE;IACd,CAAE,CAAC;EACJ;;EAEA;EACA;EACA;EACA;EACA,IAAIC,iBAAiB;EACrB,IAAKR,SAAS,KAAKK,SAAS,EAAG;IAC9BG,iBAAiB,GAAGR,SAAS;EAC9B,CAAC,MAAM,IAAKE,QAAQ,KAAKG,SAAS,EAAG;IACpCG,iBAAiB,GAChBd,8CAA8C,CAAEQ,QAAS,CAAC;EAC5D;EACAM,iBAAiB,GAAGA,iBAAiB,IAAIb,iBAAiB;EAE1D,MAAM,CAAEc,kBAAkB,EAAEC,qBAAqB,CAAE,GAAG1B,QAAQ,CAAE,KAAM,CAAC;EAEvE,MAAM2B,YAAY,GAAG,CAAC,CAAEZ,cAAc,IAAIU,kBAAkB;EAE5D,MAAMG,wBAAwB,GAAGA,CAAA,KAAM;IACtCF,qBAAqB,CAAE,CAAED,kBAAmB,CAAC;EAC9C,CAAC;EAED,OACCI,aAAA,CAAC3B,OAAO;IACPkB,GAAG,EAAGA,GAAK;IACXU,SAAS,EAAC,0BAA0B;IACpCb,YAAY,EAAGA,YAAc;IAC7BD,SAAS,EAAGQ,iBAAmB;IAC/BO,KAAK;IACLC,OAAO,EAAC,SAAS;IAAA,GACZb;EAAY,GAEjBU,aAAA;IAAKC,SAAS,EAAC;EAA2C,GACzDD,aAAA;IAAKC,SAAS,EAAC;EAA+B,GAC3ChB,QAAQ,EACR,CAAC,CAAEC,cAAc,IAClBc,aAAA,CAAC5B,MAAM;IACN6B,SAAS,EAAC,2CAA2C;IACrDG,IAAI,EAAG5B,WAAa;IACpB6B,KAAK,EAAGpC,EAAE,CAAE,eAAgB,CAAG;IAC/BqC,OAAO,EAAGP,wBAA0B;IACpC,iBAAgBH,kBAAoB;IACpCW,IAAI,EAAC;EAAS,CACd,CAEE,CACD,CAAC,EACJT,YAAY,IACbE,aAAA;IAAKC,SAAS,EAAC;EAAoC,GAChDf,cAAc,CAAC,CACb,CACL,EACCF,kBAAkB,IAAI,CAAEc,YAAY,IACrCE,aAAA;IAAKC,SAAS,EAAC;EAA+C,GAC3DjB,kBACE,CAEE,CAAC;AAEZ,CACD,CAAC;AAEDD,UAAU,CAACJ,UAAU,GAAGA,UAAU;AAElCI,UAAU,CAACL,UAAU,GAAGA,UAAU;;AAElC;AACA;AACA;AACA,eAAeK,UAAU"}
@@ -2,7 +2,7 @@
2
2
  * WordPress dependencies
3
3
  */
4
4
  import { documentHasSelection, documentHasUncollapsedSelection } from '@wordpress/dom';
5
- import { useDispatch, useSelect } from '@wordpress/data';
5
+ import { useDispatch, useRegistry, useSelect } from '@wordpress/data';
6
6
  import { useRefEffect } from '@wordpress/compose';
7
7
 
8
8
  /**
@@ -12,6 +12,7 @@ import { store as blockEditorStore } from '../../store';
12
12
  import { useNotifyCopy } from '../../utils/use-notify-copy';
13
13
  import { getPasteBlocks, setClipboardBlocks } from './utils';
14
14
  export default function useClipboardHandler() {
15
+ const registry = useRegistry();
15
16
  const {
16
17
  getBlocksByClientId,
17
18
  getSelectedBlockClientIds,
@@ -86,7 +87,7 @@ export default function useClipboardHandler() {
86
87
  const inBetweenBlocks = getBlocksByClientId(selectedBlockClientIds.slice(1, selectedBlockClientIds.length - 1));
87
88
  blocks = [head, ...inBetweenBlocks, tail];
88
89
  }
89
- setClipboardBlocks(event, blocks);
90
+ setClipboardBlocks(event, blocks, registry);
90
91
  }
91
92
  }
92
93
  if (event.type === 'cut') {
@@ -1 +1 @@
1
- {"version":3,"names":["documentHasSelection","documentHasUncollapsedSelection","useDispatch","useSelect","useRefEffect","store","blockEditorStore","useNotifyCopy","getPasteBlocks","setClipboardBlocks","useClipboardHandler","getBlocksByClientId","getSelectedBlockClientIds","hasMultiSelection","getSettings","__unstableIsFullySelected","__unstableIsSelectionCollapsed","__unstableIsSelectionMergeable","__unstableGetSelectedBlocksWithPartialSelection","canInsertBlockType","flashBlock","removeBlocks","replaceBlocks","__unstableDeleteSelection","__unstableExpandSelection","insertBlocks","notifyCopy","node","handler","event","defaultPrevented","selectedBlockClientIds","length","target","ownerDocument","hasSelection","type","contains","activeElement","preventDefault","isSelectionMergeable","shouldHandleWholeBlocks","expandSelectionIsNeeded","blocks","head","tail","inBetweenBlocks","slice","contentEditable","__experimentalCanUserUseUnfilteredHTML","canUserUseUnfilteredHTML","selectedBlockClientId","every","block","name","undefined","addEventListener","removeEventListener"],"sources":["@wordpress/block-editor/src/components/writing-flow/use-clipboard-handler.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tdocumentHasSelection,\n\tdocumentHasUncollapsedSelection,\n} from '@wordpress/dom';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { useRefEffect } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport { useNotifyCopy } from '../../utils/use-notify-copy';\nimport { getPasteBlocks, setClipboardBlocks } from './utils';\n\nexport default function useClipboardHandler() {\n\tconst {\n\t\tgetBlocksByClientId,\n\t\tgetSelectedBlockClientIds,\n\t\thasMultiSelection,\n\t\tgetSettings,\n\t\t__unstableIsFullySelected,\n\t\t__unstableIsSelectionCollapsed,\n\t\t__unstableIsSelectionMergeable,\n\t\t__unstableGetSelectedBlocksWithPartialSelection,\n\t\tcanInsertBlockType,\n\t} = useSelect( blockEditorStore );\n\tconst {\n\t\tflashBlock,\n\t\tremoveBlocks,\n\t\treplaceBlocks,\n\t\t__unstableDeleteSelection,\n\t\t__unstableExpandSelection,\n\t\tinsertBlocks,\n\t} = useDispatch( blockEditorStore );\n\tconst notifyCopy = useNotifyCopy();\n\n\treturn useRefEffect( ( node ) => {\n\t\tfunction handler( event ) {\n\t\t\tif ( event.defaultPrevented ) {\n\t\t\t\t// This was likely already handled in rich-text/use-paste-handler.js.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst selectedBlockClientIds = getSelectedBlockClientIds();\n\n\t\t\tif ( selectedBlockClientIds.length === 0 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Always handle multiple selected blocks.\n\t\t\tif ( ! hasMultiSelection() ) {\n\t\t\t\tconst { target } = event;\n\t\t\t\tconst { ownerDocument } = target;\n\t\t\t\t// If copying, only consider actual text selection as selection.\n\t\t\t\t// Otherwise, any focus on an input field is considered.\n\t\t\t\tconst hasSelection =\n\t\t\t\t\tevent.type === 'copy' || event.type === 'cut'\n\t\t\t\t\t\t? documentHasUncollapsedSelection( ownerDocument )\n\t\t\t\t\t\t: documentHasSelection( ownerDocument );\n\n\t\t\t\t// Let native copy behaviour take over in input fields.\n\t\t\t\tif ( hasSelection ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( ! node.contains( event.target.ownerDocument.activeElement ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tevent.preventDefault();\n\n\t\t\tconst isSelectionMergeable = __unstableIsSelectionMergeable();\n\t\t\tconst shouldHandleWholeBlocks =\n\t\t\t\t__unstableIsSelectionCollapsed() || __unstableIsFullySelected();\n\t\t\tconst expandSelectionIsNeeded =\n\t\t\t\t! shouldHandleWholeBlocks && ! isSelectionMergeable;\n\t\t\tif ( event.type === 'copy' || event.type === 'cut' ) {\n\t\t\t\tif ( selectedBlockClientIds.length === 1 ) {\n\t\t\t\t\tflashBlock( selectedBlockClientIds[ 0 ] );\n\t\t\t\t}\n\t\t\t\t// If we have a partial selection that is not mergeable, just\n\t\t\t\t// expand the selection to the whole blocks.\n\t\t\t\tif ( expandSelectionIsNeeded ) {\n\t\t\t\t\t__unstableExpandSelection();\n\t\t\t\t} else {\n\t\t\t\t\tnotifyCopy( event.type, selectedBlockClientIds );\n\t\t\t\t\tlet blocks;\n\t\t\t\t\t// Check if we have partial selection.\n\t\t\t\t\tif ( shouldHandleWholeBlocks ) {\n\t\t\t\t\t\tblocks = getBlocksByClientId( selectedBlockClientIds );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst [ head, tail ] =\n\t\t\t\t\t\t\t__unstableGetSelectedBlocksWithPartialSelection();\n\t\t\t\t\t\tconst inBetweenBlocks = getBlocksByClientId(\n\t\t\t\t\t\t\tselectedBlockClientIds.slice(\n\t\t\t\t\t\t\t\t1,\n\t\t\t\t\t\t\t\tselectedBlockClientIds.length - 1\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t\tblocks = [ head, ...inBetweenBlocks, tail ];\n\t\t\t\t\t}\n\n\t\t\t\t\tsetClipboardBlocks( event, blocks );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( event.type === 'cut' ) {\n\t\t\t\t// We need to also check if at the start we needed to\n\t\t\t\t// expand the selection, as in this point we might have\n\t\t\t\t// programmatically fully selected the blocks above.\n\t\t\t\tif ( shouldHandleWholeBlocks && ! expandSelectionIsNeeded ) {\n\t\t\t\t\tremoveBlocks( selectedBlockClientIds );\n\t\t\t\t} else {\n\t\t\t\t\tevent.target.ownerDocument.activeElement.contentEditable = false;\n\t\t\t\t\t__unstableDeleteSelection();\n\t\t\t\t}\n\t\t\t} else if ( event.type === 'paste' ) {\n\t\t\t\tconst {\n\t\t\t\t\t__experimentalCanUserUseUnfilteredHTML:\n\t\t\t\t\t\tcanUserUseUnfilteredHTML,\n\t\t\t\t} = getSettings();\n\t\t\t\tconst blocks = getPasteBlocks(\n\t\t\t\t\tevent,\n\t\t\t\t\tcanUserUseUnfilteredHTML\n\t\t\t\t);\n\n\t\t\t\tif ( selectedBlockClientIds.length === 1 ) {\n\t\t\t\t\tconst [ selectedBlockClientId ] = selectedBlockClientIds;\n\n\t\t\t\t\tif (\n\t\t\t\t\t\tblocks.every( ( block ) =>\n\t\t\t\t\t\t\tcanInsertBlockType(\n\t\t\t\t\t\t\t\tblock.name,\n\t\t\t\t\t\t\t\tselectedBlockClientId\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t) {\n\t\t\t\t\t\tinsertBlocks(\n\t\t\t\t\t\t\tblocks,\n\t\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t\tselectedBlockClientId\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treplaceBlocks(\n\t\t\t\t\tselectedBlockClientIds,\n\t\t\t\t\tblocks,\n\t\t\t\t\tblocks.length - 1,\n\t\t\t\t\t-1\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tnode.ownerDocument.addEventListener( 'copy', handler );\n\t\tnode.ownerDocument.addEventListener( 'cut', handler );\n\t\tnode.ownerDocument.addEventListener( 'paste', handler );\n\n\t\treturn () => {\n\t\t\tnode.ownerDocument.removeEventListener( 'copy', handler );\n\t\t\tnode.ownerDocument.removeEventListener( 'cut', handler );\n\t\t\tnode.ownerDocument.removeEventListener( 'paste', handler );\n\t\t};\n\t}, [] );\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["documentHasSelection","documentHasUncollapsedSelection","useDispatch","useRegistry","useSelect","useRefEffect","store","blockEditorStore","useNotifyCopy","getPasteBlocks","setClipboardBlocks","useClipboardHandler","registry","getBlocksByClientId","getSelectedBlockClientIds","hasMultiSelection","getSettings","__unstableIsFullySelected","__unstableIsSelectionCollapsed","__unstableIsSelectionMergeable","__unstableGetSelectedBlocksWithPartialSelection","canInsertBlockType","flashBlock","removeBlocks","replaceBlocks","__unstableDeleteSelection","__unstableExpandSelection","insertBlocks","notifyCopy","node","handler","event","defaultPrevented","selectedBlockClientIds","length","target","ownerDocument","hasSelection","type","contains","activeElement","preventDefault","isSelectionMergeable","shouldHandleWholeBlocks","expandSelectionIsNeeded","blocks","head","tail","inBetweenBlocks","slice","contentEditable","__experimentalCanUserUseUnfilteredHTML","canUserUseUnfilteredHTML","selectedBlockClientId","every","block","name","undefined","addEventListener","removeEventListener"],"sources":["@wordpress/block-editor/src/components/writing-flow/use-clipboard-handler.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tdocumentHasSelection,\n\tdocumentHasUncollapsedSelection,\n} from '@wordpress/dom';\nimport { useDispatch, useRegistry, useSelect } from '@wordpress/data';\nimport { useRefEffect } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport { useNotifyCopy } from '../../utils/use-notify-copy';\nimport { getPasteBlocks, setClipboardBlocks } from './utils';\n\nexport default function useClipboardHandler() {\n\tconst registry = useRegistry();\n\tconst {\n\t\tgetBlocksByClientId,\n\t\tgetSelectedBlockClientIds,\n\t\thasMultiSelection,\n\t\tgetSettings,\n\t\t__unstableIsFullySelected,\n\t\t__unstableIsSelectionCollapsed,\n\t\t__unstableIsSelectionMergeable,\n\t\t__unstableGetSelectedBlocksWithPartialSelection,\n\t\tcanInsertBlockType,\n\t} = useSelect( blockEditorStore );\n\tconst {\n\t\tflashBlock,\n\t\tremoveBlocks,\n\t\treplaceBlocks,\n\t\t__unstableDeleteSelection,\n\t\t__unstableExpandSelection,\n\t\tinsertBlocks,\n\t} = useDispatch( blockEditorStore );\n\tconst notifyCopy = useNotifyCopy();\n\n\treturn useRefEffect( ( node ) => {\n\t\tfunction handler( event ) {\n\t\t\tif ( event.defaultPrevented ) {\n\t\t\t\t// This was likely already handled in rich-text/use-paste-handler.js.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst selectedBlockClientIds = getSelectedBlockClientIds();\n\n\t\t\tif ( selectedBlockClientIds.length === 0 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Always handle multiple selected blocks.\n\t\t\tif ( ! hasMultiSelection() ) {\n\t\t\t\tconst { target } = event;\n\t\t\t\tconst { ownerDocument } = target;\n\t\t\t\t// If copying, only consider actual text selection as selection.\n\t\t\t\t// Otherwise, any focus on an input field is considered.\n\t\t\t\tconst hasSelection =\n\t\t\t\t\tevent.type === 'copy' || event.type === 'cut'\n\t\t\t\t\t\t? documentHasUncollapsedSelection( ownerDocument )\n\t\t\t\t\t\t: documentHasSelection( ownerDocument );\n\n\t\t\t\t// Let native copy behaviour take over in input fields.\n\t\t\t\tif ( hasSelection ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( ! node.contains( event.target.ownerDocument.activeElement ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tevent.preventDefault();\n\n\t\t\tconst isSelectionMergeable = __unstableIsSelectionMergeable();\n\t\t\tconst shouldHandleWholeBlocks =\n\t\t\t\t__unstableIsSelectionCollapsed() || __unstableIsFullySelected();\n\t\t\tconst expandSelectionIsNeeded =\n\t\t\t\t! shouldHandleWholeBlocks && ! isSelectionMergeable;\n\t\t\tif ( event.type === 'copy' || event.type === 'cut' ) {\n\t\t\t\tif ( selectedBlockClientIds.length === 1 ) {\n\t\t\t\t\tflashBlock( selectedBlockClientIds[ 0 ] );\n\t\t\t\t}\n\t\t\t\t// If we have a partial selection that is not mergeable, just\n\t\t\t\t// expand the selection to the whole blocks.\n\t\t\t\tif ( expandSelectionIsNeeded ) {\n\t\t\t\t\t__unstableExpandSelection();\n\t\t\t\t} else {\n\t\t\t\t\tnotifyCopy( event.type, selectedBlockClientIds );\n\t\t\t\t\tlet blocks;\n\t\t\t\t\t// Check if we have partial selection.\n\t\t\t\t\tif ( shouldHandleWholeBlocks ) {\n\t\t\t\t\t\tblocks = getBlocksByClientId( selectedBlockClientIds );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst [ head, tail ] =\n\t\t\t\t\t\t\t__unstableGetSelectedBlocksWithPartialSelection();\n\t\t\t\t\t\tconst inBetweenBlocks = getBlocksByClientId(\n\t\t\t\t\t\t\tselectedBlockClientIds.slice(\n\t\t\t\t\t\t\t\t1,\n\t\t\t\t\t\t\t\tselectedBlockClientIds.length - 1\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t\tblocks = [ head, ...inBetweenBlocks, tail ];\n\t\t\t\t\t}\n\n\t\t\t\t\tsetClipboardBlocks( event, blocks, registry );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( event.type === 'cut' ) {\n\t\t\t\t// We need to also check if at the start we needed to\n\t\t\t\t// expand the selection, as in this point we might have\n\t\t\t\t// programmatically fully selected the blocks above.\n\t\t\t\tif ( shouldHandleWholeBlocks && ! expandSelectionIsNeeded ) {\n\t\t\t\t\tremoveBlocks( selectedBlockClientIds );\n\t\t\t\t} else {\n\t\t\t\t\tevent.target.ownerDocument.activeElement.contentEditable = false;\n\t\t\t\t\t__unstableDeleteSelection();\n\t\t\t\t}\n\t\t\t} else if ( event.type === 'paste' ) {\n\t\t\t\tconst {\n\t\t\t\t\t__experimentalCanUserUseUnfilteredHTML:\n\t\t\t\t\t\tcanUserUseUnfilteredHTML,\n\t\t\t\t} = getSettings();\n\t\t\t\tconst blocks = getPasteBlocks(\n\t\t\t\t\tevent,\n\t\t\t\t\tcanUserUseUnfilteredHTML\n\t\t\t\t);\n\n\t\t\t\tif ( selectedBlockClientIds.length === 1 ) {\n\t\t\t\t\tconst [ selectedBlockClientId ] = selectedBlockClientIds;\n\n\t\t\t\t\tif (\n\t\t\t\t\t\tblocks.every( ( block ) =>\n\t\t\t\t\t\t\tcanInsertBlockType(\n\t\t\t\t\t\t\t\tblock.name,\n\t\t\t\t\t\t\t\tselectedBlockClientId\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t) {\n\t\t\t\t\t\tinsertBlocks(\n\t\t\t\t\t\t\tblocks,\n\t\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t\tselectedBlockClientId\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treplaceBlocks(\n\t\t\t\t\tselectedBlockClientIds,\n\t\t\t\t\tblocks,\n\t\t\t\t\tblocks.length - 1,\n\t\t\t\t\t-1\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tnode.ownerDocument.addEventListener( 'copy', handler );\n\t\tnode.ownerDocument.addEventListener( 'cut', handler );\n\t\tnode.ownerDocument.addEventListener( 'paste', handler );\n\n\t\treturn () => {\n\t\t\tnode.ownerDocument.removeEventListener( 'copy', handler );\n\t\t\tnode.ownerDocument.removeEventListener( 'cut', handler );\n\t\t\tnode.ownerDocument.removeEventListener( 'paste', handler );\n\t\t};\n\t}, [] );\n}\n"],"mappings":"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"}
@@ -2,25 +2,40 @@
2
2
  * WordPress dependencies
3
3
  */
4
4
  import { __unstableStripHTML as stripHTML } from '@wordpress/dom';
5
- import { serialize, createBlock, pasteHandler, findTransform, getBlockTransforms } from '@wordpress/blocks';
5
+ import { serialize, createBlock, pasteHandler, findTransform, getBlockTransforms, store as blocksStore } from '@wordpress/blocks';
6
6
 
7
7
  /**
8
8
  * Internal dependencies
9
9
  */
10
10
  import { getPasteEventData } from '../../utils/pasting';
11
+ import { store as blockEditorStore } from '../../store';
12
+ export const requiresWrapperOnCopy = Symbol('requiresWrapperOnCopy');
11
13
 
12
14
  /**
13
15
  * Sets the clipboard data for the provided blocks, with both HTML and plain
14
16
  * text representations.
15
17
  *
16
- * @param {ClipboardEvent} event Clipboard event.
17
- * @param {WPBlock[]} blocks Blocks to set as clipboard data.
18
+ * @param {ClipboardEvent} event Clipboard event.
19
+ * @param {WPBlock[]} blocks Blocks to set as clipboard data.
20
+ * @param {Object} registry The registry to select from.
18
21
  */
19
- export function setClipboardBlocks(event, blocks) {
22
+ export function setClipboardBlocks(event, blocks, registry) {
20
23
  let _blocks = blocks;
21
- const wrapperBlockName = event.clipboardData.getData('__unstableWrapperBlockName');
22
- if (wrapperBlockName) {
23
- _blocks = createBlock(wrapperBlockName, JSON.parse(event.clipboardData.getData('__unstableWrapperBlockAttributes')), _blocks);
24
+ const [firstBlock] = blocks;
25
+ if (firstBlock) {
26
+ const firstBlockType = registry.select(blocksStore).getBlockType(firstBlock.name);
27
+ if (firstBlockType[requiresWrapperOnCopy]) {
28
+ const {
29
+ getBlockRootClientId,
30
+ getBlockName,
31
+ getBlockAttributes
32
+ } = registry.select(blockEditorStore);
33
+ const wrapperBlockClientId = getBlockRootClientId(firstBlock.clientId);
34
+ const wrapperBlockName = getBlockName(wrapperBlockClientId);
35
+ if (wrapperBlockName) {
36
+ _blocks = createBlock(wrapperBlockName, getBlockAttributes(wrapperBlockClientId), _blocks);
37
+ }
38
+ }
24
39
  }
25
40
  const serialized = serialize(_blocks);
26
41
  event.clipboardData.setData('text/plain', toPlainText(serialized));
@@ -1 +1 @@
1
- {"version":3,"names":["__unstableStripHTML","stripHTML","serialize","createBlock","pasteHandler","findTransform","getBlockTransforms","getPasteEventData","setClipboardBlocks","event","blocks","_blocks","wrapperBlockName","clipboardData","getData","JSON","parse","serialized","setData","toPlainText","getPasteBlocks","canUserUseUnfilteredHTML","plainText","html","files","length","fromTransforms","reduce","accumulator","file","transformation","transform","type","isMatch","push","flat","HTML","mode","replace","trim"],"sources":["@wordpress/block-editor/src/components/writing-flow/utils.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __unstableStripHTML as stripHTML } from '@wordpress/dom';\nimport {\n\tserialize,\n\tcreateBlock,\n\tpasteHandler,\n\tfindTransform,\n\tgetBlockTransforms,\n} from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport { getPasteEventData } from '../../utils/pasting';\n\n/**\n * Sets the clipboard data for the provided blocks, with both HTML and plain\n * text representations.\n *\n * @param {ClipboardEvent} event Clipboard event.\n * @param {WPBlock[]} blocks Blocks to set as clipboard data.\n */\nexport function setClipboardBlocks( event, blocks ) {\n\tlet _blocks = blocks;\n\tconst wrapperBlockName = event.clipboardData.getData(\n\t\t'__unstableWrapperBlockName'\n\t);\n\n\tif ( wrapperBlockName ) {\n\t\t_blocks = createBlock(\n\t\t\twrapperBlockName,\n\t\t\tJSON.parse(\n\t\t\t\tevent.clipboardData.getData(\n\t\t\t\t\t'__unstableWrapperBlockAttributes'\n\t\t\t\t)\n\t\t\t),\n\t\t\t_blocks\n\t\t);\n\t}\n\n\tconst serialized = serialize( _blocks );\n\n\tevent.clipboardData.setData( 'text/plain', toPlainText( serialized ) );\n\tevent.clipboardData.setData( 'text/html', serialized );\n}\n\n/**\n * Returns the blocks to be pasted from the clipboard event.\n *\n * @param {ClipboardEvent} event The clipboard event.\n * @param {boolean} canUserUseUnfilteredHTML Whether the user can or can't post unfiltered HTML.\n * @return {Array|string} A list of blocks or a string, depending on `handlerMode`.\n */\nexport function getPasteBlocks( event, canUserUseUnfilteredHTML ) {\n\tconst { plainText, html, files } = getPasteEventData( event );\n\tlet blocks = [];\n\n\tif ( files.length ) {\n\t\tconst fromTransforms = getBlockTransforms( 'from' );\n\t\tblocks = files\n\t\t\t.reduce( ( accumulator, file ) => {\n\t\t\t\tconst transformation = findTransform(\n\t\t\t\t\tfromTransforms,\n\t\t\t\t\t( transform ) =>\n\t\t\t\t\t\ttransform.type === 'files' &&\n\t\t\t\t\t\ttransform.isMatch( [ file ] )\n\t\t\t\t);\n\t\t\t\tif ( transformation ) {\n\t\t\t\t\taccumulator.push( transformation.transform( [ file ] ) );\n\t\t\t\t}\n\t\t\t\treturn accumulator;\n\t\t\t}, [] )\n\t\t\t.flat();\n\t} else {\n\t\tblocks = pasteHandler( {\n\t\t\tHTML: html,\n\t\t\tplainText,\n\t\t\tmode: 'BLOCKS',\n\t\t\tcanUserUseUnfilteredHTML,\n\t\t} );\n\t}\n\n\treturn blocks;\n}\n\n/**\n * Given a string of HTML representing serialized blocks, returns the plain\n * text extracted after stripping the HTML of any tags and fixing line breaks.\n *\n * @param {string} html Serialized blocks.\n * @return {string} The plain-text content with any html removed.\n */\nfunction toPlainText( html ) {\n\t// Manually handle BR tags as line breaks prior to `stripHTML` call\n\thtml = html.replace( /<br>/g, '\\n' );\n\n\tconst plainText = stripHTML( html ).trim();\n\n\t// Merge any consecutive line breaks\n\treturn plainText.replace( /\\n\\n+/g, '\\n\\n' );\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,mBAAmB,IAAIC,SAAS,QAAQ,gBAAgB;AACjE,SACCC,SAAS,EACTC,WAAW,EACXC,YAAY,EACZC,aAAa,EACbC,kBAAkB,QACZ,mBAAmB;;AAE1B;AACA;AACA;AACA,SAASC,iBAAiB,QAAQ,qBAAqB;;AAEvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,kBAAkBA,CAAEC,KAAK,EAAEC,MAAM,EAAG;EACnD,IAAIC,OAAO,GAAGD,MAAM;EACpB,MAAME,gBAAgB,GAAGH,KAAK,CAACI,aAAa,CAACC,OAAO,CACnD,4BACD,CAAC;EAED,IAAKF,gBAAgB,EAAG;IACvBD,OAAO,GAAGR,WAAW,CACpBS,gBAAgB,EAChBG,IAAI,CAACC,KAAK,CACTP,KAAK,CAACI,aAAa,CAACC,OAAO,CAC1B,kCACD,CACD,CAAC,EACDH,OACD,CAAC;EACF;EAEA,MAAMM,UAAU,GAAGf,SAAS,CAAES,OAAQ,CAAC;EAEvCF,KAAK,CAACI,aAAa,CAACK,OAAO,CAAE,YAAY,EAAEC,WAAW,CAAEF,UAAW,CAAE,CAAC;EACtER,KAAK,CAACI,aAAa,CAACK,OAAO,CAAE,WAAW,EAAED,UAAW,CAAC;AACvD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASG,cAAcA,CAAEX,KAAK,EAAEY,wBAAwB,EAAG;EACjE,MAAM;IAAEC,SAAS;IAAEC,IAAI;IAAEC;EAAM,CAAC,GAAGjB,iBAAiB,CAAEE,KAAM,CAAC;EAC7D,IAAIC,MAAM,GAAG,EAAE;EAEf,IAAKc,KAAK,CAACC,MAAM,EAAG;IACnB,MAAMC,cAAc,GAAGpB,kBAAkB,CAAE,MAAO,CAAC;IACnDI,MAAM,GAAGc,KAAK,CACZG,MAAM,CAAE,CAAEC,WAAW,EAAEC,IAAI,KAAM;MACjC,MAAMC,cAAc,GAAGzB,aAAa,CACnCqB,cAAc,EACZK,SAAS,IACVA,SAAS,CAACC,IAAI,KAAK,OAAO,IAC1BD,SAAS,CAACE,OAAO,CAAE,CAAEJ,IAAI,CAAG,CAC9B,CAAC;MACD,IAAKC,cAAc,EAAG;QACrBF,WAAW,CAACM,IAAI,CAAEJ,cAAc,CAACC,SAAS,CAAE,CAAEF,IAAI,CAAG,CAAE,CAAC;MACzD;MACA,OAAOD,WAAW;IACnB,CAAC,EAAE,EAAG,CAAC,CACNO,IAAI,CAAC,CAAC;EACT,CAAC,MAAM;IACNzB,MAAM,GAAGN,YAAY,CAAE;MACtBgC,IAAI,EAAEb,IAAI;MACVD,SAAS;MACTe,IAAI,EAAE,QAAQ;MACdhB;IACD,CAAE,CAAC;EACJ;EAEA,OAAOX,MAAM;AACd;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASS,WAAWA,CAAEI,IAAI,EAAG;EAC5B;EACAA,IAAI,GAAGA,IAAI,CAACe,OAAO,CAAE,OAAO,EAAE,IAAK,CAAC;EAEpC,MAAMhB,SAAS,GAAGrB,SAAS,CAAEsB,IAAK,CAAC,CAACgB,IAAI,CAAC,CAAC;;EAE1C;EACA,OAAOjB,SAAS,CAACgB,OAAO,CAAE,QAAQ,EAAE,MAAO,CAAC;AAC7C"}
1
+ {"version":3,"names":["__unstableStripHTML","stripHTML","serialize","createBlock","pasteHandler","findTransform","getBlockTransforms","store","blocksStore","getPasteEventData","blockEditorStore","requiresWrapperOnCopy","Symbol","setClipboardBlocks","event","blocks","registry","_blocks","firstBlock","firstBlockType","select","getBlockType","name","getBlockRootClientId","getBlockName","getBlockAttributes","wrapperBlockClientId","clientId","wrapperBlockName","serialized","clipboardData","setData","toPlainText","getPasteBlocks","canUserUseUnfilteredHTML","plainText","html","files","length","fromTransforms","reduce","accumulator","file","transformation","transform","type","isMatch","push","flat","HTML","mode","replace","trim"],"sources":["@wordpress/block-editor/src/components/writing-flow/utils.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __unstableStripHTML as stripHTML } from '@wordpress/dom';\nimport {\n\tserialize,\n\tcreateBlock,\n\tpasteHandler,\n\tfindTransform,\n\tgetBlockTransforms,\n\tstore as blocksStore,\n} from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport { getPasteEventData } from '../../utils/pasting';\nimport { store as blockEditorStore } from '../../store';\n\nexport const requiresWrapperOnCopy = Symbol( 'requiresWrapperOnCopy' );\n\n/**\n * Sets the clipboard data for the provided blocks, with both HTML and plain\n * text representations.\n *\n * @param {ClipboardEvent} event Clipboard event.\n * @param {WPBlock[]} blocks Blocks to set as clipboard data.\n * @param {Object} registry The registry to select from.\n */\nexport function setClipboardBlocks( event, blocks, registry ) {\n\tlet _blocks = blocks;\n\n\tconst [ firstBlock ] = blocks;\n\n\tif ( firstBlock ) {\n\t\tconst firstBlockType = registry\n\t\t\t.select( blocksStore )\n\t\t\t.getBlockType( firstBlock.name );\n\n\t\tif ( firstBlockType[ requiresWrapperOnCopy ] ) {\n\t\t\tconst { getBlockRootClientId, getBlockName, getBlockAttributes } =\n\t\t\t\tregistry.select( blockEditorStore );\n\t\t\tconst wrapperBlockClientId = getBlockRootClientId(\n\t\t\t\tfirstBlock.clientId\n\t\t\t);\n\t\t\tconst wrapperBlockName = getBlockName( wrapperBlockClientId );\n\n\t\t\tif ( wrapperBlockName ) {\n\t\t\t\t_blocks = createBlock(\n\t\t\t\t\twrapperBlockName,\n\t\t\t\t\tgetBlockAttributes( wrapperBlockClientId ),\n\t\t\t\t\t_blocks\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tconst serialized = serialize( _blocks );\n\n\tevent.clipboardData.setData( 'text/plain', toPlainText( serialized ) );\n\tevent.clipboardData.setData( 'text/html', serialized );\n}\n\n/**\n * Returns the blocks to be pasted from the clipboard event.\n *\n * @param {ClipboardEvent} event The clipboard event.\n * @param {boolean} canUserUseUnfilteredHTML Whether the user can or can't post unfiltered HTML.\n * @return {Array|string} A list of blocks or a string, depending on `handlerMode`.\n */\nexport function getPasteBlocks( event, canUserUseUnfilteredHTML ) {\n\tconst { plainText, html, files } = getPasteEventData( event );\n\tlet blocks = [];\n\n\tif ( files.length ) {\n\t\tconst fromTransforms = getBlockTransforms( 'from' );\n\t\tblocks = files\n\t\t\t.reduce( ( accumulator, file ) => {\n\t\t\t\tconst transformation = findTransform(\n\t\t\t\t\tfromTransforms,\n\t\t\t\t\t( transform ) =>\n\t\t\t\t\t\ttransform.type === 'files' &&\n\t\t\t\t\t\ttransform.isMatch( [ file ] )\n\t\t\t\t);\n\t\t\t\tif ( transformation ) {\n\t\t\t\t\taccumulator.push( transformation.transform( [ file ] ) );\n\t\t\t\t}\n\t\t\t\treturn accumulator;\n\t\t\t}, [] )\n\t\t\t.flat();\n\t} else {\n\t\tblocks = pasteHandler( {\n\t\t\tHTML: html,\n\t\t\tplainText,\n\t\t\tmode: 'BLOCKS',\n\t\t\tcanUserUseUnfilteredHTML,\n\t\t} );\n\t}\n\n\treturn blocks;\n}\n\n/**\n * Given a string of HTML representing serialized blocks, returns the plain\n * text extracted after stripping the HTML of any tags and fixing line breaks.\n *\n * @param {string} html Serialized blocks.\n * @return {string} The plain-text content with any html removed.\n */\nfunction toPlainText( html ) {\n\t// Manually handle BR tags as line breaks prior to `stripHTML` call\n\thtml = html.replace( /<br>/g, '\\n' );\n\n\tconst plainText = stripHTML( html ).trim();\n\n\t// Merge any consecutive line breaks\n\treturn plainText.replace( /\\n\\n+/g, '\\n\\n' );\n}\n"],"mappings":"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"}