@wordpress/block-editor 11.7.0 → 11.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (225) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/README.md +42 -55
  3. package/build/components/block-list/block.native.js +4 -3
  4. package/build/components/block-list/block.native.js.map +1 -1
  5. package/build/components/block-list/index.native.js +11 -21
  6. package/build/components/block-list/index.native.js.map +1 -1
  7. package/build/components/block-list/use-in-between-inserter.js +3 -1
  8. package/build/components/block-list/use-in-between-inserter.js.map +1 -1
  9. package/build/components/block-popover/inbetween.js +2 -9
  10. package/build/components/block-popover/inbetween.js.map +1 -1
  11. package/build/components/block-settings-menu/block-settings-dropdown.js +1 -10
  12. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  13. package/build/components/caption/index.native.js +0 -1
  14. package/build/components/caption/index.native.js.map +1 -1
  15. package/build/components/date-format-picker/index.js +1 -1
  16. package/build/components/date-format-picker/index.js.map +1 -1
  17. package/build/components/global-styles/border-panel.js +15 -29
  18. package/build/components/global-styles/border-panel.js.map +1 -1
  19. package/build/components/global-styles/dimensions-panel.js +15 -14
  20. package/build/components/global-styles/dimensions-panel.js.map +1 -1
  21. package/build/components/global-styles/effects-panel.js +244 -0
  22. package/build/components/global-styles/effects-panel.js.map +1 -0
  23. package/build/components/global-styles/filters-panel.js +151 -0
  24. package/build/components/global-styles/filters-panel.js.map +1 -0
  25. package/build/components/global-styles/get-block-css-selector.js +1 -12
  26. package/build/components/global-styles/get-block-css-selector.js.map +1 -1
  27. package/build/components/global-styles/hooks.js +7 -0
  28. package/build/components/global-styles/hooks.js.map +1 -1
  29. package/build/components/global-styles/index.js +28 -0
  30. package/build/components/global-styles/index.js.map +1 -1
  31. package/build/components/global-styles/use-global-styles-output.js +15 -7
  32. package/build/components/global-styles/use-global-styles-output.js.map +1 -1
  33. package/build/components/iframe/index.js +1 -1
  34. package/build/components/iframe/index.js.map +1 -1
  35. package/build/components/image-size-control/use-dimension-handler.js +5 -3
  36. package/build/components/image-size-control/use-dimension-handler.js.map +1 -1
  37. package/build/components/index.js +16 -0
  38. package/build/components/index.js.map +1 -1
  39. package/build/components/inserter/block-patterns-tab.js +4 -2
  40. package/build/components/inserter/block-patterns-tab.js.map +1 -1
  41. package/build/components/inspector-controls-tabs/utils.js +5 -3
  42. package/build/components/inspector-controls-tabs/utils.js.map +1 -1
  43. package/build/components/list-view/block.js +1 -0
  44. package/build/components/list-view/block.js.map +1 -1
  45. package/build/components/list-view/index.js +22 -4
  46. package/build/components/list-view/index.js.map +1 -1
  47. package/build/components/list-view/use-list-view-client-ids.js +7 -3
  48. package/build/components/list-view/use-list-view-client-ids.js.map +1 -1
  49. package/build/components/list-view/use-list-view-drop-zone.js +8 -2
  50. package/build/components/list-view/use-list-view-drop-zone.js.map +1 -1
  51. package/build/components/off-canvas-editor/block-contents.js +6 -1
  52. package/build/components/off-canvas-editor/block-contents.js.map +1 -1
  53. package/build/components/off-canvas-editor/index.js +17 -14
  54. package/build/components/off-canvas-editor/index.js.map +1 -1
  55. package/build/components/resizable-box-popover/index.js +38 -0
  56. package/build/components/resizable-box-popover/index.js.map +1 -0
  57. package/build/components/rich-text/index.js +0 -1
  58. package/build/components/rich-text/index.js.map +1 -1
  59. package/build/components/rich-text/index.native.js +7 -11
  60. package/build/components/rich-text/index.native.js.map +1 -1
  61. package/build/components/spacing-sizes-control/spacing-input-control.js +8 -0
  62. package/build/components/spacing-sizes-control/spacing-input-control.js.map +1 -1
  63. package/build/hooks/anchor.js +1 -1
  64. package/build/hooks/anchor.js.map +1 -1
  65. package/build/hooks/border.js +1 -1
  66. package/build/hooks/border.js.map +1 -1
  67. package/build/hooks/duotone.js +92 -66
  68. package/build/hooks/duotone.js.map +1 -1
  69. package/build/hooks/margin.js +27 -17
  70. package/build/hooks/margin.js.map +1 -1
  71. package/build/hooks/padding.js +19 -9
  72. package/build/hooks/padding.js.map +1 -1
  73. package/build/hooks/utils.js +7 -4
  74. package/build/hooks/utils.js.map +1 -1
  75. package/build/layouts/utils.js +3 -2
  76. package/build/layouts/utils.js.map +1 -1
  77. package/build/private-apis.js +4 -1
  78. package/build/private-apis.js.map +1 -1
  79. package/build/store/actions.js +1 -1
  80. package/build/store/actions.js.map +1 -1
  81. package/build/utils/object.js +1 -1
  82. package/build/utils/object.js.map +1 -1
  83. package/build-module/components/block-list/block.native.js +4 -3
  84. package/build-module/components/block-list/block.native.js.map +1 -1
  85. package/build-module/components/block-list/index.native.js +11 -19
  86. package/build-module/components/block-list/index.native.js.map +1 -1
  87. package/build-module/components/block-list/use-in-between-inserter.js +2 -1
  88. package/build-module/components/block-list/use-in-between-inserter.js.map +1 -1
  89. package/build-module/components/block-popover/inbetween.js +2 -9
  90. package/build-module/components/block-popover/inbetween.js.map +1 -1
  91. package/build-module/components/block-settings-menu/block-settings-dropdown.js +1 -9
  92. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  93. package/build-module/components/caption/index.native.js +0 -1
  94. package/build-module/components/caption/index.native.js.map +1 -1
  95. package/build-module/components/date-format-picker/index.js +1 -1
  96. package/build-module/components/date-format-picker/index.js.map +1 -1
  97. package/build-module/components/global-styles/border-panel.js +15 -29
  98. package/build-module/components/global-styles/border-panel.js.map +1 -1
  99. package/build-module/components/global-styles/dimensions-panel.js +15 -14
  100. package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
  101. package/build-module/components/global-styles/effects-panel.js +228 -0
  102. package/build-module/components/global-styles/effects-panel.js.map +1 -0
  103. package/build-module/components/global-styles/filters-panel.js +139 -0
  104. package/build-module/components/global-styles/filters-panel.js.map +1 -0
  105. package/build-module/components/global-styles/get-block-css-selector.js +1 -12
  106. package/build-module/components/global-styles/get-block-css-selector.js.map +1 -1
  107. package/build-module/components/global-styles/hooks.js +7 -0
  108. package/build-module/components/global-styles/hooks.js.map +1 -1
  109. package/build-module/components/global-styles/index.js +2 -0
  110. package/build-module/components/global-styles/index.js.map +1 -1
  111. package/build-module/components/global-styles/use-global-styles-output.js +16 -8
  112. package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
  113. package/build-module/components/iframe/index.js +1 -1
  114. package/build-module/components/iframe/index.js.map +1 -1
  115. package/build-module/components/image-size-control/use-dimension-handler.js +5 -3
  116. package/build-module/components/image-size-control/use-dimension-handler.js.map +1 -1
  117. package/build-module/components/index.js +1 -0
  118. package/build-module/components/index.js.map +1 -1
  119. package/build-module/components/inserter/block-patterns-tab.js +5 -2
  120. package/build-module/components/inserter/block-patterns-tab.js.map +1 -1
  121. package/build-module/components/inspector-controls-tabs/utils.js +4 -3
  122. package/build-module/components/inspector-controls-tabs/utils.js.map +1 -1
  123. package/build-module/components/list-view/block.js +1 -0
  124. package/build-module/components/list-view/block.js.map +1 -1
  125. package/build-module/components/list-view/index.js +21 -4
  126. package/build-module/components/list-view/index.js.map +1 -1
  127. package/build-module/components/list-view/use-list-view-client-ids.js +7 -3
  128. package/build-module/components/list-view/use-list-view-client-ids.js.map +1 -1
  129. package/build-module/components/list-view/use-list-view-drop-zone.js +8 -4
  130. package/build-module/components/list-view/use-list-view-drop-zone.js.map +1 -1
  131. package/build-module/components/off-canvas-editor/block-contents.js +5 -1
  132. package/build-module/components/off-canvas-editor/block-contents.js.map +1 -1
  133. package/build-module/components/off-canvas-editor/index.js +17 -14
  134. package/build-module/components/off-canvas-editor/index.js.map +1 -1
  135. package/build-module/components/resizable-box-popover/index.js +26 -0
  136. package/build-module/components/resizable-box-popover/index.js.map +1 -0
  137. package/build-module/components/rich-text/index.js +0 -1
  138. package/build-module/components/rich-text/index.js.map +1 -1
  139. package/build-module/components/rich-text/index.native.js +7 -10
  140. package/build-module/components/rich-text/index.native.js.map +1 -1
  141. package/build-module/components/spacing-sizes-control/spacing-input-control.js +7 -0
  142. package/build-module/components/spacing-sizes-control/spacing-input-control.js.map +1 -1
  143. package/build-module/hooks/anchor.js +1 -1
  144. package/build-module/hooks/anchor.js.map +1 -1
  145. package/build-module/hooks/border.js +1 -1
  146. package/build-module/hooks/border.js.map +1 -1
  147. package/build-module/hooks/duotone.js +90 -66
  148. package/build-module/hooks/duotone.js.map +1 -1
  149. package/build-module/hooks/margin.js +29 -18
  150. package/build-module/hooks/margin.js.map +1 -1
  151. package/build-module/hooks/padding.js +21 -10
  152. package/build-module/hooks/padding.js.map +1 -1
  153. package/build-module/hooks/utils.js +8 -5
  154. package/build-module/hooks/utils.js.map +1 -1
  155. package/build-module/layouts/utils.js +3 -2
  156. package/build-module/layouts/utils.js.map +1 -1
  157. package/build-module/private-apis.js +3 -1
  158. package/build-module/private-apis.js.map +1 -1
  159. package/build-module/store/actions.js +1 -1
  160. package/build-module/store/actions.js.map +1 -1
  161. package/build-module/utils/object.js +1 -1
  162. package/build-module/utils/object.js.map +1 -1
  163. package/build-style/style-rtl.css +51 -10
  164. package/build-style/style.css +51 -10
  165. package/package.json +31 -31
  166. package/src/components/block-inspector/style.scss +6 -4
  167. package/src/components/block-list/block.native.js +3 -2
  168. package/src/components/block-list/index.native.js +19 -38
  169. package/src/components/block-list/use-in-between-inserter.js +4 -1
  170. package/src/components/block-popover/inbetween.js +2 -13
  171. package/src/components/block-settings-menu/block-settings-dropdown.js +2 -12
  172. package/src/components/caption/index.native.js +0 -1
  173. package/src/components/date-format-picker/index.js +1 -1
  174. package/src/components/global-styles/README.md +129 -16
  175. package/src/components/global-styles/border-panel.js +13 -32
  176. package/src/components/global-styles/dimensions-panel.js +30 -13
  177. package/src/components/global-styles/effects-panel.js +228 -0
  178. package/src/components/global-styles/filters-panel.js +157 -0
  179. package/src/components/global-styles/get-block-css-selector.js +0 -11
  180. package/src/components/global-styles/hooks.js +10 -0
  181. package/src/components/global-styles/index.js +2 -0
  182. package/src/components/global-styles/style.scss +42 -0
  183. package/src/components/global-styles/test/use-global-styles-output.js +4 -4
  184. package/src/components/global-styles/use-global-styles-output.js +27 -11
  185. package/src/components/iframe/index.js +1 -1
  186. package/src/components/image-size-control/use-dimension-handler.js +4 -3
  187. package/src/components/index.js +4 -1
  188. package/src/components/inserter/block-patterns-tab.js +3 -1
  189. package/src/components/inspector-controls-tabs/utils.js +4 -3
  190. package/src/components/list-view/README.md +2 -0
  191. package/src/components/list-view/block.js +1 -0
  192. package/src/components/list-view/index.js +18 -2
  193. package/src/components/list-view/style.scss +3 -1
  194. package/src/components/list-view/test/use-list-view-drop-zone.js +188 -0
  195. package/src/components/list-view/use-list-view-client-ids.js +5 -3
  196. package/src/components/list-view/use-list-view-drop-zone.js +9 -3
  197. package/src/components/off-canvas-editor/block-contents.js +4 -0
  198. package/src/components/off-canvas-editor/index.js +15 -11
  199. package/src/components/resizable-box-popover/index.js +27 -0
  200. package/src/components/rich-text/index.js +0 -1
  201. package/src/components/rich-text/index.native.js +2 -5
  202. package/src/components/spacing-sizes-control/spacing-input-control.js +10 -0
  203. package/src/components/spacing-sizes-control/style.scss +7 -7
  204. package/src/hooks/anchor.js +1 -1
  205. package/src/hooks/border.js +1 -1
  206. package/src/hooks/duotone.js +116 -74
  207. package/src/hooks/margin.js +31 -26
  208. package/src/hooks/padding.js +24 -18
  209. package/src/hooks/utils.js +4 -4
  210. package/src/layouts/utils.js +2 -2
  211. package/src/private-apis.js +2 -0
  212. package/src/store/actions.js +1 -1
  213. package/src/style.scss +1 -0
  214. package/src/utils/object.js +1 -1
  215. package/src/utils/test/object.js +38 -0
  216. package/build/components/rich-text/use-native-props.js +0 -11
  217. package/build/components/rich-text/use-native-props.js.map +0 -1
  218. package/build/components/rich-text/use-native-props.native.js +0 -24
  219. package/build/components/rich-text/use-native-props.native.js.map +0 -1
  220. package/build-module/components/rich-text/use-native-props.js +0 -4
  221. package/build-module/components/rich-text/use-native-props.js.map +0 -1
  222. package/build-module/components/rich-text/use-native-props.native.js +0 -15
  223. package/build-module/components/rich-text/use-native-props.native.js.map +0 -1
  224. package/src/components/rich-text/use-native-props.js +0 -3
  225. package/src/components/rich-text/use-native-props.native.js +0 -17
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/rich-text/index.native.js"],"names":["classnames","RawHTML","Platform","useRef","useCallback","forwardRef","useDispatch","useSelect","pasteHandler","children","childrenSource","getBlockTransforms","findTransform","isUnmodifiedDefaultBlock","useInstanceId","useMergeRefs","__experimentalRichText","RichText","__unstableCreateElement","isEmpty","__unstableIsEmptyLine","isEmptyLine","insert","__unstableInsertLineSeparator","insertLineSeparator","create","replace","split","__UNSTABLE_LINE_SEPARATOR","LINE_SEPARATOR","toHTMLString","slice","isURL","Autocomplete","useBlockEditContext","RemoveBrowserShortcuts","filePasteHandler","FormatToolbarContainer","useNativeProps","store","blockEditorStore","addActiveFormats","getMultilineTag","getAllowedFormats","isShortcode","createLinkInParagraph","EmbedHandlerPicker","classes","RichTextWrapper","forwardedRef","tagName","start","reversed","value","originalValue","onChange","originalOnChange","isSelected","originalIsSelected","multiline","inlineToolbar","wrapperClassName","autocompleters","onReplace","placeholder","allowedFormats","withoutInteractiveFormatting","onRemove","onMerge","onSplit","__unstableOnSplitAtEnd","onSplitAtEnd","__unstableOnSplitMiddle","onSplitMiddle","identifier","preserveWhiteSpace","__unstablePastePlainText","pastePlainText","__unstableEmbedURLOnPaste","__unstableDisableFormats","disableFormats","disableLineBreaks","unstableOnFocus","__unstableAllowPrefixTransformations","__unstableMultilineRootTag","__unstableMobileNoFocusOnMount","deleteEnter","placeholderTextColor","textAlign","selectionColor","tagsToEliminate","rootTagsToEliminate","disableEditingMenu","fontSize","fontFamily","fontWeight","fontStyle","minWidth","maxWidth","onBlur","setRef","disableSuggestions","disableAutocorrection","containerWidth","onEnter","onCustomEnter","props","instanceId","fallbackRef","clientId","blockIsSelected","nativeProps","embedHandlerPickerRef","selector","select","getSelectionStart","getSelectionEnd","getSettings","didAutomaticChange","getBlock","isMultiSelecting","hasMultiSelection","selectionStart","selectionEnd","__experimentalUndo","undo","undefined","attributeKey","extraProps","OS","block","shouldBlurOnUnmount","offset","disabled","__unstableMarkLastChangeAsPersistent","enterFormattedText","exitFormattedText","selectionChange","__unstableMarkAutomaticChange","multilineTag","adjustedAllowedFormats","hasFormats","length","adjustedValue","adjustedOnChange","Array","isArray","toHTML","newValue","fromDOM","document","childNodes","onSelectionChange","selectionChangeStart","selectionChangeEnd","onDelete","isReverse","splitValue","record","pastedBlocks","blocks","before","after","hasPastedBlocks","lastPastedBlockIndex","isAfterOriginal","push","indexToSelect","initialPosition","shiftKey","canSplit","transforms","filter","type","transformation","item","regExp","test","text","transform","content","splitStart","end","splitEnd","canSplitAtEnd","onPaste","html","plainText","isInternal","files","activeFormats","pastedValue","multilineWrapperTags","HTML","mode","window","console","log","isPastedURL","trim","presentEmbedHandlerPicker","current","presentPicker","createEmbed","createLink","valueToInsert","canPasteEmbed","name","inputRule","valueToFormat","startPosition","characterBefore","trimmedTextBefore","prefixTransforms","prefix","mergedRef","id","style","nestedIsSelected","onFocus","editableProps","editableTagName","TagName","listBoxId","activeId","onKeyDown","className","event","ForwardedRichTextContainer","Content","Tag","MultilineTag","format","restProps","defaultProps","RichTextShortcut","RichTextToolbarButton","__unstableRichTextInputEvent"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tRawHTML,\n\tPlatform,\n\tuseRef,\n\tuseCallback,\n\tforwardRef,\n} from '@wordpress/element';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport {\n\tpasteHandler,\n\tchildren as childrenSource,\n\tgetBlockTransforms,\n\tfindTransform,\n\tisUnmodifiedDefaultBlock,\n} from '@wordpress/blocks';\nimport { useInstanceId, useMergeRefs } from '@wordpress/compose';\nimport {\n\t__experimentalRichText as RichText,\n\t__unstableCreateElement,\n\tisEmpty,\n\t__unstableIsEmptyLine as isEmptyLine,\n\tinsert,\n\t__unstableInsertLineSeparator as insertLineSeparator,\n\tcreate,\n\treplace,\n\tsplit,\n\t__UNSTABLE_LINE_SEPARATOR as LINE_SEPARATOR,\n\ttoHTMLString,\n\tslice,\n} from '@wordpress/rich-text';\nimport { isURL } from '@wordpress/url';\n\n/**\n * Internal dependencies\n */\nimport Autocomplete from '../autocomplete';\nimport { useBlockEditContext } from '../block-edit';\nimport { RemoveBrowserShortcuts } from './remove-browser-shortcuts';\nimport { filePasteHandler } from './file-paste-handler';\nimport FormatToolbarContainer from './format-toolbar-container';\nimport { useNativeProps } from './use-native-props';\nimport { store as blockEditorStore } from '../../store';\nimport {\n\taddActiveFormats,\n\tgetMultilineTag,\n\tgetAllowedFormats,\n\tisShortcode,\n\tcreateLinkInParagraph,\n} from './utils';\nimport EmbedHandlerPicker from './embed-handler-picker';\n\nconst classes = 'block-editor-rich-text__editable';\n\nfunction RichTextWrapper(\n\t{\n\t\tchildren,\n\t\ttagName,\n\t\tstart,\n\t\treversed,\n\t\tvalue: originalValue,\n\t\tonChange: originalOnChange,\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__unstableOnSplitMiddle: onSplitMiddle,\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\tunstableOnFocus,\n\t\t__unstableAllowPrefixTransformations,\n\t\t__unstableMultilineRootTag,\n\t\t// Native props.\n\t\t__unstableMobileNoFocusOnMount,\n\t\tdeleteEnter,\n\t\tplaceholderTextColor,\n\t\ttextAlign,\n\t\tselectionColor,\n\t\ttagsToEliminate,\n\t\trootTagsToEliminate,\n\t\tdisableEditingMenu,\n\t\tfontSize,\n\t\tfontFamily,\n\t\tfontWeight,\n\t\tfontStyle,\n\t\tminWidth,\n\t\tmaxWidth,\n\t\tonBlur,\n\t\tsetRef,\n\t\tdisableSuggestions,\n\t\tdisableAutocorrection,\n\t\tcontainerWidth,\n\t\tonEnter: onCustomEnter,\n\t\t...props\n\t},\n\tforwardedRef\n) {\n\tconst instanceId = useInstanceId( RichTextWrapper );\n\n\tidentifier = identifier || instanceId;\n\n\tconst fallbackRef = useRef();\n\tconst { clientId, isSelected: blockIsSelected } = useBlockEditContext();\n\tconst nativeProps = useNativeProps();\n\tconst embedHandlerPickerRef = useRef();\n\tconst selector = ( select ) => {\n\t\tconst {\n\t\t\tgetSelectionStart,\n\t\t\tgetSelectionEnd,\n\t\t\tgetSettings,\n\t\t\tdidAutomaticChange,\n\t\t\tgetBlock,\n\t\t\tisMultiSelecting,\n\t\t\thasMultiSelection,\n\t\t} = select( blockEditorStore );\n\n\t\tconst selectionStart = getSelectionStart();\n\t\tconst selectionEnd = getSelectionEnd();\n\t\tconst { __experimentalUndo: undo } = getSettings();\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\tselectionStart.attributeKey === identifier;\n\t\t} else if ( originalIsSelected ) {\n\t\t\tisSelected = selectionStart.clientId === clientId;\n\t\t}\n\n\t\tlet extraProps = {};\n\t\tif ( Platform.OS === 'native' ) {\n\t\t\t// If the block of this RichText is unmodified then it's a candidate for replacing when adding a new block.\n\t\t\t// In order to fix https://github.com/wordpress-mobile/gutenberg-mobile/issues/1126, let's blur on unmount in that case.\n\t\t\t// This apparently assumes functionality the BlockHlder actually.\n\t\t\tconst block = clientId && getBlock( clientId );\n\t\t\tconst shouldBlurOnUnmount =\n\t\t\t\tblock && isSelected && isUnmodifiedDefaultBlock( block );\n\t\t\textraProps = {\n\t\t\t\tshouldBlurOnUnmount,\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\tdidAutomaticChange: didAutomaticChange(),\n\t\t\tdisabled: isMultiSelecting() || hasMultiSelection(),\n\t\t\tundo,\n\t\t\t...extraProps,\n\t\t};\n\t};\n\t// This selector must run on every render so the right selection state is\n\t// retrieved from the store on merge.\n\t// To do: fix this somehow.\n\tconst {\n\t\tselectionStart,\n\t\tselectionEnd,\n\t\tisSelected,\n\t\tdidAutomaticChange,\n\t\tdisabled,\n\t\tundo,\n\t\tshouldBlurOnUnmount,\n\t} = useSelect( selector );\n\tconst {\n\t\t__unstableMarkLastChangeAsPersistent,\n\t\tenterFormattedText,\n\t\texitFormattedText,\n\t\tselectionChange,\n\t\t__unstableMarkAutomaticChange,\n\t} = useDispatch( blockEditorStore );\n\tconst multilineTag = getMultilineTag( multiline );\n\tconst adjustedAllowedFormats = getAllowedFormats( {\n\t\tallowedFormats,\n\t\tdisableFormats,\n\t} );\n\tconst hasFormats =\n\t\t! adjustedAllowedFormats || adjustedAllowedFormats.length > 0;\n\tlet adjustedValue = originalValue;\n\tlet adjustedOnChange = originalOnChange;\n\n\t// Handle deprecated format.\n\tif ( Array.isArray( originalValue ) ) {\n\t\tadjustedValue = childrenSource.toHTML( originalValue );\n\t\tadjustedOnChange = ( newValue ) =>\n\t\t\toriginalOnChange(\n\t\t\t\tchildrenSource.fromDOM(\n\t\t\t\t\t__unstableCreateElement( document, newValue ).childNodes\n\t\t\t\t)\n\t\t\t);\n\t}\n\n\tconst onSelectionChange = useCallback(\n\t\t( selectionChangeStart, selectionChangeEnd ) => {\n\t\t\tselectionChange(\n\t\t\t\tclientId,\n\t\t\t\tidentifier,\n\t\t\t\tselectionChangeStart,\n\t\t\t\tselectionChangeEnd\n\t\t\t);\n\t\t},\n\t\t[ clientId, identifier ]\n\t);\n\n\tconst onDelete = useCallback(\n\t\t( { value, isReverse } ) => {\n\t\t\tif ( onMerge ) {\n\t\t\t\tonMerge( ! isReverse );\n\t\t\t}\n\n\t\t\t// Only handle remove on Backspace. This serves dual-purpose of being\n\t\t\t// an intentional user interaction distinguishing between Backspace and\n\t\t\t// Delete to remove the empty field, but also to avoid merge & remove\n\t\t\t// causing destruction of two fields (merge, then removed merged).\n\t\t\tif ( onRemove && isEmpty( value ) && isReverse ) {\n\t\t\t\tonRemove( ! isReverse );\n\t\t\t}\n\t\t},\n\t\t[ onMerge, onRemove ]\n\t);\n\n\t/**\n\t * Signals to the RichText owner that the block can be replaced with two\n\t * blocks as a result of splitting the block by pressing enter, or with\n\t * blocks as a result of splitting the block by pasting block content in the\n\t * instance.\n\t *\n\t * @param {Object} record The rich text value to split.\n\t * @param {Array} pastedBlocks The pasted blocks to insert, if any.\n\t */\n\tconst splitValue = useCallback(\n\t\t( record, pastedBlocks = [] ) => {\n\t\t\tif ( ! onReplace || ! onSplit ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst blocks = [];\n\t\t\tconst [ before, after ] = split( record );\n\t\t\tconst hasPastedBlocks = pastedBlocks.length > 0;\n\t\t\tlet lastPastedBlockIndex = -1;\n\n\t\t\t// Consider the after value to be the original it is not empty and\n\t\t\t// the before value *is* empty.\n\t\t\tconst isAfterOriginal = isEmpty( before ) && ! isEmpty( after );\n\n\t\t\t// Create a block with the content before the caret if there's no pasted\n\t\t\t// blocks, or if there are pasted blocks and the value is not empty.\n\t\t\t// We do not want a leading empty block on paste, but we do if split\n\t\t\t// with e.g. the enter key.\n\t\t\tif ( ! hasPastedBlocks || ! isEmpty( before ) ) {\n\t\t\t\tblocks.push(\n\t\t\t\t\tonSplit(\n\t\t\t\t\t\ttoHTMLString( {\n\t\t\t\t\t\t\tvalue: before,\n\t\t\t\t\t\t\tmultilineTag,\n\t\t\t\t\t\t} ),\n\t\t\t\t\t\t! isAfterOriginal\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t\tlastPastedBlockIndex += 1;\n\t\t\t}\n\n\t\t\tif ( hasPastedBlocks ) {\n\t\t\t\tblocks.push( ...pastedBlocks );\n\t\t\t\tlastPastedBlockIndex += pastedBlocks.length;\n\t\t\t} else if ( onSplitMiddle ) {\n\t\t\t\tblocks.push( onSplitMiddle() );\n\t\t\t}\n\n\t\t\t// If there's pasted blocks, append a block with non empty content\n\t\t\t// after the caret. Otherwise, do append an empty block if there\n\t\t\t// is no `onSplitMiddle` prop, but if there is and the content is\n\t\t\t// empty, the middle block is enough to set focus in.\n\t\t\tif (\n\t\t\t\thasPastedBlocks\n\t\t\t\t\t? ! isEmpty( after )\n\t\t\t\t\t: ! onSplitMiddle || ! isEmpty( after )\n\t\t\t) {\n\t\t\t\tblocks.push(\n\t\t\t\t\tonSplit(\n\t\t\t\t\t\ttoHTMLString( {\n\t\t\t\t\t\t\tvalue: after,\n\t\t\t\t\t\t\tmultilineTag,\n\t\t\t\t\t\t} ),\n\t\t\t\t\t\tisAfterOriginal\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// If there are pasted blocks, set the selection to the last one.\n\t\t\t// Otherwise, set the selection to the second block.\n\t\t\tconst indexToSelect = hasPastedBlocks ? lastPastedBlockIndex : 1;\n\n\t\t\t// If there are pasted blocks, move the caret to the end of the selected block\n\t\t\t// Otherwise, retain the default value.\n\t\t\tconst initialPosition = hasPastedBlocks ? -1 : 0;\n\n\t\t\tonReplace( blocks, indexToSelect, initialPosition );\n\t\t},\n\t\t[ onReplace, onSplit, multilineTag, onSplitMiddle ]\n\t);\n\n\tconst onEnter = useCallback(\n\t\t( { value, onChange, shiftKey } ) => {\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( { content: value.text } ),\n\t\t\t\t\t] );\n\t\t\t\t\t__unstableMarkAutomaticChange();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( onCustomEnter ) {\n\t\t\t\tonCustomEnter();\n\t\t\t}\n\n\t\t\tif ( multiline ) {\n\t\t\t\tif ( shiftKey ) {\n\t\t\t\t\tif ( ! disableLineBreaks ) {\n\t\t\t\t\t\tonChange( insert( value, '\\n' ) );\n\t\t\t\t\t}\n\t\t\t\t} else if ( canSplit && isEmptyLine( value ) ) {\n\t\t\t\t\tsplitValue( value );\n\t\t\t\t} else {\n\t\t\t\t\tonChange( insertLineSeparator( value ) );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst { text, start: splitStart, end: splitEnd } = value;\n\t\t\t\tconst canSplitAtEnd =\n\t\t\t\t\tonSplitAtEnd &&\n\t\t\t\t\tsplitStart === splitEnd &&\n\t\t\t\t\tsplitEnd === text.length;\n\n\t\t\t\tif ( shiftKey || ( ! canSplit && ! canSplitAtEnd ) ) {\n\t\t\t\t\tif ( ! disableLineBreaks ) {\n\t\t\t\t\t\tonChange( insert( value, '\\n' ) );\n\t\t\t\t\t}\n\t\t\t\t} else if ( ! canSplit && canSplitAtEnd ) {\n\t\t\t\t\tonSplitAtEnd();\n\t\t\t\t} else if ( canSplit ) {\n\t\t\t\t\tsplitValue( value );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[\n\t\t\tonReplace,\n\t\t\tonSplit,\n\t\t\t__unstableMarkAutomaticChange,\n\t\t\tmultiline,\n\t\t\tsplitValue,\n\t\t\tonSplitAtEnd,\n\t\t]\n\t);\n\n\tconst onPaste = useCallback(\n\t\t( {\n\t\t\tvalue,\n\t\t\tonChange,\n\t\t\thtml,\n\t\t\tplainText,\n\t\t\tisInternal,\n\t\t\tfiles,\n\t\t\tactiveFormats,\n\t\t} ) => {\n\t\t\t// If the data comes from a rich text instance, we can directly use it\n\t\t\t// without filtering the data. The filters are only meant for externally\n\t\t\t// pasted content and remove inline styles.\n\t\t\tif ( isInternal ) {\n\t\t\t\tconst pastedValue = create( {\n\t\t\t\t\thtml,\n\t\t\t\t\tmultilineTag,\n\t\t\t\t\tmultilineWrapperTags:\n\t\t\t\t\t\tmultilineTag === 'li' ? [ 'ul', 'ol' ] : undefined,\n\t\t\t\t\tpreserveWhiteSpace,\n\t\t\t\t} );\n\t\t\t\taddActiveFormats( pastedValue, activeFormats );\n\t\t\t\tonChange( insert( value, pastedValue ) );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( pastePlainText ) {\n\t\t\t\tonChange( insert( value, create( { text: plainText } ) ) );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Only process file if no HTML is present.\n\t\t\t// Note: a pasted file may have the URL as plain text.\n\t\t\tif ( files && files.length && ! html ) {\n\t\t\t\tconst content = pasteHandler( {\n\t\t\t\t\tHTML: filePasteHandler( files ),\n\t\t\t\t\tmode: 'BLOCKS',\n\t\t\t\t\ttagName,\n\t\t\t\t\tpreserveWhiteSpace,\n\t\t\t\t} );\n\n\t\t\t\t// Allows us to ask for this information when we get a report.\n\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\twindow.console.log( 'Received items:\\n\\n', files );\n\n\t\t\t\tif ( onReplace && isEmpty( value ) ) {\n\t\t\t\t\tonReplace( content );\n\t\t\t\t} else {\n\t\t\t\t\tsplitValue( value, content );\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet mode = onReplace && onSplit ? 'AUTO' : 'INLINE';\n\n\t\t\t// Force the blocks mode when the user is pasting\n\t\t\t// on a new line & the content resembles a shortcode.\n\t\t\t// Otherwise it's going to be detected as inline\n\t\t\t// and the shortcode won't be replaced.\n\t\t\tif (\n\t\t\t\tmode === 'AUTO' &&\n\t\t\t\tisEmpty( value ) &&\n\t\t\t\tisShortcode( plainText )\n\t\t\t) {\n\t\t\t\tmode = 'BLOCKS';\n\t\t\t}\n\n\t\t\tconst isPastedURL = isURL( plainText.trim() );\n\t\t\tconst presentEmbedHandlerPicker = () =>\n\t\t\t\tembedHandlerPickerRef.current?.presentPicker( {\n\t\t\t\t\tcreateEmbed: () =>\n\t\t\t\t\t\tonReplace( content, content.length - 1, -1 ),\n\t\t\t\t\tcreateLink: () =>\n\t\t\t\t\t\tcreateLinkInParagraph( plainText.trim(), onReplace ),\n\t\t\t\t} );\n\n\t\t\tif (\n\t\t\t\t__unstableEmbedURLOnPaste &&\n\t\t\t\tisEmpty( value ) &&\n\t\t\t\tisPastedURL\n\t\t\t) {\n\t\t\t\tmode = 'BLOCKS';\n\t\t\t}\n\n\t\t\tconst content = pasteHandler( {\n\t\t\t\tHTML: html,\n\t\t\t\tplainText,\n\t\t\t\tmode,\n\t\t\t\ttagName,\n\t\t\t\tpreserveWhiteSpace,\n\t\t\t} );\n\n\t\t\tif ( typeof content === 'string' ) {\n\t\t\t\tlet valueToInsert = create( { html: content } );\n\n\t\t\t\taddActiveFormats( valueToInsert, activeFormats );\n\n\t\t\t\t// If the content should be multiline, we should process text\n\t\t\t\t// separated by a line break as separate lines.\n\t\t\t\tif ( multilineTag ) {\n\t\t\t\t\tvalueToInsert = replace(\n\t\t\t\t\t\tvalueToInsert,\n\t\t\t\t\t\t/\\n+/g,\n\t\t\t\t\t\tLINE_SEPARATOR\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tonChange( insert( value, valueToInsert ) );\n\t\t\t} else if ( content.length > 0 ) {\n\t\t\t\t// When an URL is pasted in an empty paragraph then the EmbedHandlerPicker should showcase options allowing the transformation of that URL\n\t\t\t\t// into either an Embed block or a link within the target paragraph. If the paragraph is non-empty, the URL is pasted as text.\n\t\t\t\tconst canPasteEmbed =\n\t\t\t\t\tisPastedURL &&\n\t\t\t\t\tcontent.length === 1 &&\n\t\t\t\t\tcontent[ 0 ].name === 'core/embed';\n\t\t\t\tif ( onReplace && isEmpty( value ) ) {\n\t\t\t\t\tif ( canPasteEmbed ) {\n\t\t\t\t\t\tonChange(\n\t\t\t\t\t\t\tinsert( value, create( { text: plainText } ) )\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif ( __unstableEmbedURLOnPaste ) {\n\t\t\t\t\t\t\tpresentEmbedHandlerPicker();\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\tonReplace( content, content.length - 1, -1 );\n\t\t\t\t} else {\n\t\t\t\t\tif ( canPasteEmbed ) {\n\t\t\t\t\t\tonChange(\n\t\t\t\t\t\t\tinsert( value, create( { text: plainText } ) )\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\tsplitValue( value, content );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[\n\t\t\ttagName,\n\t\t\tonReplace,\n\t\t\tonSplit,\n\t\t\tsplitValue,\n\t\t\t__unstableEmbedURLOnPaste,\n\t\t\tmultilineTag,\n\t\t\tpreserveWhiteSpace,\n\t\t\tpastePlainText,\n\t\t]\n\t);\n\n\tconst inputRule = useCallback(\n\t\t( value, valueToFormat ) => {\n\t\t\tif ( ! onReplace ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst { start: startPosition, text } = value;\n\t\t\tconst characterBefore = text.slice(\n\t\t\t\tstartPosition - 1,\n\t\t\t\tstartPosition\n\t\t\t);\n\n\t\t\t// The character right before the caret must be a plain space.\n\t\t\tif ( characterBefore !== ' ' ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst trimmedTextBefore = text.slice( 0, startPosition ).trim();\n\t\t\tconst prefixTransforms = getBlockTransforms( 'from' ).filter(\n\t\t\t\t( { type } ) => type === 'prefix'\n\t\t\t);\n\t\t\tconst transformation = findTransform(\n\t\t\t\tprefixTransforms,\n\t\t\t\t( { prefix } ) => {\n\t\t\t\t\treturn trimmedTextBefore === prefix;\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tif ( ! transformation ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst content = valueToFormat(\n\t\t\t\tslice( value, startPosition, text.length )\n\t\t\t);\n\t\t\tconst block = transformation.transform( content );\n\n\t\t\tonReplace( [ block ] );\n\t\t\t__unstableMarkAutomaticChange();\n\t\t},\n\t\t[ onReplace, __unstableMarkAutomaticChange ]\n\t);\n\n\tconst mergedRef = useMergeRefs( [ forwardedRef, fallbackRef ] );\n\n\treturn (\n\t\t<RichText\n\t\t\tclientId={ clientId }\n\t\t\tidentifier={ identifier }\n\t\t\tref={ mergedRef }\n\t\t\tvalue={ adjustedValue }\n\t\t\tonChange={ adjustedOnChange }\n\t\t\tselectionStart={ selectionStart }\n\t\t\tselectionEnd={ selectionEnd }\n\t\t\tonSelectionChange={ onSelectionChange }\n\t\t\ttagName={ tagName }\n\t\t\tstart={ start }\n\t\t\treversed={ reversed }\n\t\t\tplaceholder={ placeholder }\n\t\t\tallowedFormats={ adjustedAllowedFormats }\n\t\t\twithoutInteractiveFormatting={ withoutInteractiveFormatting }\n\t\t\tonEnter={ onEnter }\n\t\t\tonDelete={ onDelete }\n\t\t\tonPaste={ onPaste }\n\t\t\t__unstableIsSelected={ isSelected }\n\t\t\t__unstableInputRule={ inputRule }\n\t\t\t__unstableMultilineTag={ multilineTag }\n\t\t\t__unstableOnEnterFormattedText={ enterFormattedText }\n\t\t\t__unstableOnExitFormattedText={ exitFormattedText }\n\t\t\t__unstableOnCreateUndoLevel={ __unstableMarkLastChangeAsPersistent }\n\t\t\t__unstableMarkAutomaticChange={ __unstableMarkAutomaticChange }\n\t\t\t__unstableDidAutomaticChange={ didAutomaticChange }\n\t\t\t__unstableUndo={ undo }\n\t\t\t__unstableDisableFormats={ disableFormats }\n\t\t\tpreserveWhiteSpace={ preserveWhiteSpace }\n\t\t\tdisabled={ disabled }\n\t\t\tunstableOnFocus={ unstableOnFocus }\n\t\t\t__unstableAllowPrefixTransformations={\n\t\t\t\t__unstableAllowPrefixTransformations\n\t\t\t}\n\t\t\t__unstableMultilineRootTag={ __unstableMultilineRootTag }\n\t\t\t// Native props.\n\t\t\t{ ...nativeProps }\n\t\t\tblockIsSelected={\n\t\t\t\toriginalIsSelected !== undefined\n\t\t\t\t\t? originalIsSelected\n\t\t\t\t\t: blockIsSelected\n\t\t\t}\n\t\t\tshouldBlurOnUnmount={ shouldBlurOnUnmount }\n\t\t\t__unstableMobileNoFocusOnMount={ __unstableMobileNoFocusOnMount }\n\t\t\tdeleteEnter={ deleteEnter }\n\t\t\tplaceholderTextColor={ placeholderTextColor }\n\t\t\ttextAlign={ textAlign }\n\t\t\tselectionColor={ selectionColor }\n\t\t\ttagsToEliminate={ tagsToEliminate }\n\t\t\trootTagsToEliminate={ rootTagsToEliminate }\n\t\t\tdisableEditingMenu={ disableEditingMenu }\n\t\t\tfontSize={ fontSize }\n\t\t\tfontFamily={ fontFamily }\n\t\t\tfontWeight={ fontWeight }\n\t\t\tfontStyle={ fontStyle }\n\t\t\tminWidth={ minWidth }\n\t\t\tmaxWidth={ maxWidth }\n\t\t\tonBlur={ onBlur }\n\t\t\tsetRef={ setRef }\n\t\t\tdisableSuggestions={ disableSuggestions }\n\t\t\tdisableAutocorrection={ disableAutocorrection }\n\t\t\tcontainerWidth={ containerWidth }\n\t\t\t// Props to be set on the editable container are destructured on the\n\t\t\t// element itself for web (see below), but passed through rich text\n\t\t\t// for native.\n\t\t\tid={ props.id }\n\t\t\tstyle={ props.style }\n\t\t>\n\t\t\t{ ( {\n\t\t\t\tisSelected: nestedIsSelected,\n\t\t\t\tvalue,\n\t\t\t\tonChange,\n\t\t\t\tonFocus,\n\t\t\t\teditableProps,\n\t\t\t\teditableTagName: TagName,\n\t\t\t} ) => (\n\t\t\t\t<>\n\t\t\t\t\t{ children && children( { value, onChange, onFocus } ) }\n\t\t\t\t\t{ nestedIsSelected && hasFormats && (\n\t\t\t\t\t\t<FormatToolbarContainer\n\t\t\t\t\t\t\tinline={ inlineToolbar }\n\t\t\t\t\t\t\tanchorRef={ fallbackRef.current }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t{ nestedIsSelected && <RemoveBrowserShortcuts /> }\n\t\t\t\t\t<Autocomplete\n\t\t\t\t\t\tonReplace={ onReplace }\n\t\t\t\t\t\tcompleters={ autocompleters }\n\t\t\t\t\t\trecord={ value }\n\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\tisSelected={ nestedIsSelected }\n\t\t\t\t\t\tcontentRef={ fallbackRef }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ ( { listBoxId, activeId, onKeyDown } ) => (\n\t\t\t\t\t\t\t<TagName\n\t\t\t\t\t\t\t\t{ ...editableProps }\n\t\t\t\t\t\t\t\t{ ...props }\n\t\t\t\t\t\t\t\tstyle={\n\t\t\t\t\t\t\t\t\tprops.style\n\t\t\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\t\t\t...props.style,\n\t\t\t\t\t\t\t\t\t\t\t\t...editableProps.style,\n\t\t\t\t\t\t\t\t\t\t }\n\t\t\t\t\t\t\t\t\t\t: editableProps.style\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t\t\tclasses,\n\t\t\t\t\t\t\t\t\tprops.className,\n\t\t\t\t\t\t\t\t\teditableProps.className\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\taria-autocomplete={\n\t\t\t\t\t\t\t\t\tlistBoxId ? 'list' : undefined\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\taria-owns={ listBoxId }\n\t\t\t\t\t\t\t\taria-activedescendant={ activeId }\n\t\t\t\t\t\t\t\tonKeyDown={ ( event ) => {\n\t\t\t\t\t\t\t\t\tonKeyDown( event );\n\t\t\t\t\t\t\t\t\teditableProps.onKeyDown( event );\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</Autocomplete>\n\t\t\t\t\t<EmbedHandlerPicker ref={ embedHandlerPickerRef } />\n\t\t\t\t</>\n\t\t\t) }\n\t\t</RichText>\n\t);\n}\n\nconst ForwardedRichTextContainer = forwardRef( RichTextWrapper );\n\nForwardedRichTextContainer.Content = ( {\n\tvalue,\n\ttagName: Tag,\n\tmultiline,\n\t...props\n} ) => {\n\t// Handle deprecated `children` and `node` sources.\n\tif ( Array.isArray( value ) ) {\n\t\tvalue = childrenSource.toHTML( value );\n\t}\n\n\tconst MultilineTag = getMultilineTag( multiline );\n\n\tif ( ! value && MultilineTag ) {\n\t\tvalue = `<${ MultilineTag }></${ MultilineTag }>`;\n\t}\n\n\tconst content = <RawHTML>{ value }</RawHTML>;\n\n\tif ( Tag ) {\n\t\tconst { format, ...restProps } = props;\n\t\treturn <Tag { ...restProps }>{ content }</Tag>;\n\t}\n\n\treturn content;\n};\n\nForwardedRichTextContainer.isEmpty = ( value ) => {\n\treturn ! value || value.length === 0;\n};\n\nForwardedRichTextContainer.Content.defaultProps = {\n\tformat: 'string',\n\tvalue: '',\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"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/rich-text/index.native.js"],"names":["classnames","RawHTML","Platform","useRef","useCallback","forwardRef","useDispatch","useSelect","pasteHandler","children","childrenSource","getBlockTransforms","findTransform","isUnmodifiedDefaultBlock","useInstanceId","useMergeRefs","__experimentalRichText","RichText","__unstableCreateElement","isEmpty","__unstableIsEmptyLine","isEmptyLine","insert","__unstableInsertLineSeparator","insertLineSeparator","create","replace","split","__UNSTABLE_LINE_SEPARATOR","LINE_SEPARATOR","toHTMLString","slice","isURL","Autocomplete","useBlockEditContext","RemoveBrowserShortcuts","filePasteHandler","FormatToolbarContainer","store","blockEditorStore","addActiveFormats","getMultilineTag","getAllowedFormats","isShortcode","createLinkInParagraph","EmbedHandlerPicker","classes","RichTextWrapper","forwardedRef","tagName","start","reversed","value","originalValue","onChange","originalOnChange","isSelected","originalIsSelected","multiline","inlineToolbar","wrapperClassName","autocompleters","onReplace","placeholder","allowedFormats","withoutInteractiveFormatting","onRemove","onMerge","onSplit","__unstableOnSplitAtEnd","onSplitAtEnd","__unstableOnSplitMiddle","onSplitMiddle","identifier","preserveWhiteSpace","__unstablePastePlainText","pastePlainText","__unstableEmbedURLOnPaste","__unstableDisableFormats","disableFormats","disableLineBreaks","unstableOnFocus","__unstableAllowPrefixTransformations","__unstableMultilineRootTag","__unstableMobileNoFocusOnMount","deleteEnter","placeholderTextColor","textAlign","selectionColor","tagsToEliminate","disableEditingMenu","fontSize","fontFamily","fontWeight","fontStyle","minWidth","maxWidth","onBlur","setRef","disableSuggestions","disableAutocorrection","containerWidth","onEnter","onCustomEnter","props","instanceId","fallbackRef","clientId","blockIsSelected","embedHandlerPickerRef","selector","select","getSelectionStart","getSelectionEnd","getSettings","didAutomaticChange","getBlock","isMultiSelecting","hasMultiSelection","selectionStart","selectionEnd","__experimentalUndo","undo","undefined","attributeKey","extraProps","OS","block","shouldBlurOnUnmount","offset","disabled","__unstableMarkLastChangeAsPersistent","enterFormattedText","exitFormattedText","selectionChange","__unstableMarkAutomaticChange","multilineTag","adjustedAllowedFormats","hasFormats","length","adjustedValue","adjustedOnChange","Array","isArray","toHTML","newValue","fromDOM","document","childNodes","onSelectionChange","selectionChangeStart","selectionChangeEnd","onDelete","isReverse","splitValue","record","pastedBlocks","blocks","before","after","hasPastedBlocks","lastPastedBlockIndex","isAfterOriginal","push","indexToSelect","initialPosition","shiftKey","canSplit","transforms","filter","type","transformation","item","regExp","test","text","transform","content","splitStart","end","splitEnd","canSplitAtEnd","onPaste","html","plainText","isInternal","files","activeFormats","pastedValue","multilineWrapperTags","HTML","mode","window","console","log","isPastedURL","trim","presentEmbedHandlerPicker","current","presentPicker","createEmbed","createLink","valueToInsert","canPasteEmbed","name","inputRule","valueToFormat","startPosition","characterBefore","trimmedTextBefore","prefixTransforms","prefix","mergedRef","id","style","nestedIsSelected","onFocus","editableProps","editableTagName","TagName","listBoxId","activeId","onKeyDown","className","event","ForwardedRichTextContainer","Content","Tag","MultilineTag","format","restProps","defaultProps","RichTextShortcut","RichTextToolbarButton","__unstableRichTextInputEvent"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tRawHTML,\n\tPlatform,\n\tuseRef,\n\tuseCallback,\n\tforwardRef,\n} from '@wordpress/element';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport {\n\tpasteHandler,\n\tchildren as childrenSource,\n\tgetBlockTransforms,\n\tfindTransform,\n\tisUnmodifiedDefaultBlock,\n} from '@wordpress/blocks';\nimport { useInstanceId, useMergeRefs } from '@wordpress/compose';\nimport {\n\t__experimentalRichText as RichText,\n\t__unstableCreateElement,\n\tisEmpty,\n\t__unstableIsEmptyLine as isEmptyLine,\n\tinsert,\n\t__unstableInsertLineSeparator as insertLineSeparator,\n\tcreate,\n\treplace,\n\tsplit,\n\t__UNSTABLE_LINE_SEPARATOR as LINE_SEPARATOR,\n\ttoHTMLString,\n\tslice,\n} from '@wordpress/rich-text';\nimport { isURL } from '@wordpress/url';\n\n/**\n * Internal dependencies\n */\nimport Autocomplete from '../autocomplete';\nimport { useBlockEditContext } from '../block-edit';\nimport { RemoveBrowserShortcuts } from './remove-browser-shortcuts';\nimport { filePasteHandler } from './file-paste-handler';\nimport FormatToolbarContainer from './format-toolbar-container';\nimport { store as blockEditorStore } from '../../store';\nimport {\n\taddActiveFormats,\n\tgetMultilineTag,\n\tgetAllowedFormats,\n\tisShortcode,\n\tcreateLinkInParagraph,\n} from './utils';\nimport EmbedHandlerPicker from './embed-handler-picker';\n\nconst classes = 'block-editor-rich-text__editable';\n\nfunction RichTextWrapper(\n\t{\n\t\tchildren,\n\t\ttagName,\n\t\tstart,\n\t\treversed,\n\t\tvalue: originalValue,\n\t\tonChange: originalOnChange,\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__unstableOnSplitMiddle: onSplitMiddle,\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\tunstableOnFocus,\n\t\t__unstableAllowPrefixTransformations,\n\t\t__unstableMultilineRootTag,\n\t\t// Native props.\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\tonBlur,\n\t\tsetRef,\n\t\tdisableSuggestions,\n\t\tdisableAutocorrection,\n\t\tcontainerWidth,\n\t\tonEnter: onCustomEnter,\n\t\t...props\n\t},\n\tforwardedRef\n) {\n\tconst instanceId = useInstanceId( RichTextWrapper );\n\n\tidentifier = identifier || instanceId;\n\n\tconst fallbackRef = useRef();\n\tconst { clientId, isSelected: blockIsSelected } = useBlockEditContext();\n\tconst embedHandlerPickerRef = useRef();\n\tconst selector = ( select ) => {\n\t\tconst {\n\t\t\tgetSelectionStart,\n\t\t\tgetSelectionEnd,\n\t\t\tgetSettings,\n\t\t\tdidAutomaticChange,\n\t\t\tgetBlock,\n\t\t\tisMultiSelecting,\n\t\t\thasMultiSelection,\n\t\t} = select( blockEditorStore );\n\n\t\tconst selectionStart = getSelectionStart();\n\t\tconst selectionEnd = getSelectionEnd();\n\t\tconst { __experimentalUndo: undo } = getSettings();\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\tselectionStart.attributeKey === identifier;\n\t\t} else if ( originalIsSelected ) {\n\t\t\tisSelected = selectionStart.clientId === clientId;\n\t\t}\n\n\t\tlet extraProps = {};\n\t\tif ( Platform.OS === 'native' ) {\n\t\t\t// If the block of this RichText is unmodified then it's a candidate for replacing when adding a new block.\n\t\t\t// In order to fix https://github.com/wordpress-mobile/gutenberg-mobile/issues/1126, let's blur on unmount in that case.\n\t\t\t// This apparently assumes functionality the BlockHlder actually.\n\t\t\tconst block = clientId && getBlock( clientId );\n\t\t\tconst shouldBlurOnUnmount =\n\t\t\t\tblock && isSelected && isUnmodifiedDefaultBlock( block );\n\t\t\textraProps = {\n\t\t\t\tshouldBlurOnUnmount,\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\tdidAutomaticChange: didAutomaticChange(),\n\t\t\tdisabled: isMultiSelecting() || hasMultiSelection(),\n\t\t\tundo,\n\t\t\t...extraProps,\n\t\t};\n\t};\n\t// This selector must run on every render so the right selection state is\n\t// retrieved from the store on merge.\n\t// To do: fix this somehow.\n\tconst {\n\t\tselectionStart,\n\t\tselectionEnd,\n\t\tisSelected,\n\t\tdidAutomaticChange,\n\t\tdisabled,\n\t\tundo,\n\t\tshouldBlurOnUnmount,\n\t} = useSelect( selector );\n\tconst {\n\t\t__unstableMarkLastChangeAsPersistent,\n\t\tenterFormattedText,\n\t\texitFormattedText,\n\t\tselectionChange,\n\t\t__unstableMarkAutomaticChange,\n\t} = useDispatch( blockEditorStore );\n\tconst multilineTag = getMultilineTag( multiline );\n\tconst adjustedAllowedFormats = getAllowedFormats( {\n\t\tallowedFormats,\n\t\tdisableFormats,\n\t} );\n\tconst hasFormats =\n\t\t! adjustedAllowedFormats || adjustedAllowedFormats.length > 0;\n\tlet adjustedValue = originalValue;\n\tlet adjustedOnChange = originalOnChange;\n\n\t// Handle deprecated format.\n\tif ( Array.isArray( originalValue ) ) {\n\t\tadjustedValue = childrenSource.toHTML( originalValue );\n\t\tadjustedOnChange = ( newValue ) =>\n\t\t\toriginalOnChange(\n\t\t\t\tchildrenSource.fromDOM(\n\t\t\t\t\t__unstableCreateElement( document, newValue ).childNodes\n\t\t\t\t)\n\t\t\t);\n\t}\n\n\tconst onSelectionChange = useCallback(\n\t\t( selectionChangeStart, selectionChangeEnd ) => {\n\t\t\tselectionChange(\n\t\t\t\tclientId,\n\t\t\t\tidentifier,\n\t\t\t\tselectionChangeStart,\n\t\t\t\tselectionChangeEnd\n\t\t\t);\n\t\t},\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t\t[ clientId, identifier ]\n\t);\n\n\tconst onDelete = useCallback(\n\t\t( { value, isReverse } ) => {\n\t\t\tif ( onMerge ) {\n\t\t\t\tonMerge( ! isReverse );\n\t\t\t}\n\n\t\t\t// Only handle remove on Backspace. This serves dual-purpose of being\n\t\t\t// an intentional user interaction distinguishing between Backspace and\n\t\t\t// Delete to remove the empty field, but also to avoid merge & remove\n\t\t\t// causing destruction of two fields (merge, then removed merged).\n\t\t\tif ( onRemove && isEmpty( value ) && isReverse ) {\n\t\t\t\tonRemove( ! isReverse );\n\t\t\t}\n\t\t},\n\t\t[ onMerge, onRemove ]\n\t);\n\n\t/**\n\t * Signals to the RichText owner that the block can be replaced with two\n\t * blocks as a result of splitting the block by pressing enter, or with\n\t * blocks as a result of splitting the block by pasting block content in the\n\t * instance.\n\t *\n\t * @param {Object} record The rich text value to split.\n\t * @param {Array} pastedBlocks The pasted blocks to insert, if any.\n\t */\n\tconst splitValue = useCallback(\n\t\t( record, pastedBlocks = [] ) => {\n\t\t\tif ( ! onReplace || ! onSplit ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst blocks = [];\n\t\t\tconst [ before, after ] = split( record );\n\t\t\tconst hasPastedBlocks = pastedBlocks.length > 0;\n\t\t\tlet lastPastedBlockIndex = -1;\n\n\t\t\t// Consider the after value to be the original it is not empty and\n\t\t\t// the before value *is* empty.\n\t\t\tconst isAfterOriginal = isEmpty( before ) && ! isEmpty( after );\n\n\t\t\t// Create a block with the content before the caret if there's no pasted\n\t\t\t// blocks, or if there are pasted blocks and the value is not empty.\n\t\t\t// We do not want a leading empty block on paste, but we do if split\n\t\t\t// with e.g. the enter key.\n\t\t\tif ( ! hasPastedBlocks || ! isEmpty( before ) ) {\n\t\t\t\tblocks.push(\n\t\t\t\t\tonSplit(\n\t\t\t\t\t\ttoHTMLString( {\n\t\t\t\t\t\t\tvalue: before,\n\t\t\t\t\t\t\tmultilineTag,\n\t\t\t\t\t\t} ),\n\t\t\t\t\t\t! isAfterOriginal\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t\tlastPastedBlockIndex += 1;\n\t\t\t}\n\n\t\t\tif ( hasPastedBlocks ) {\n\t\t\t\tblocks.push( ...pastedBlocks );\n\t\t\t\tlastPastedBlockIndex += pastedBlocks.length;\n\t\t\t} else if ( onSplitMiddle ) {\n\t\t\t\tblocks.push( onSplitMiddle() );\n\t\t\t}\n\n\t\t\t// If there's pasted blocks, append a block with non empty content\n\t\t\t// after the caret. Otherwise, do append an empty block if there\n\t\t\t// is no `onSplitMiddle` prop, but if there is and the content is\n\t\t\t// empty, the middle block is enough to set focus in.\n\t\t\tif (\n\t\t\t\thasPastedBlocks\n\t\t\t\t\t? ! isEmpty( after )\n\t\t\t\t\t: ! onSplitMiddle || ! isEmpty( after )\n\t\t\t) {\n\t\t\t\tblocks.push(\n\t\t\t\t\tonSplit(\n\t\t\t\t\t\ttoHTMLString( {\n\t\t\t\t\t\t\tvalue: after,\n\t\t\t\t\t\t\tmultilineTag,\n\t\t\t\t\t\t} ),\n\t\t\t\t\t\tisAfterOriginal\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// If there are pasted blocks, set the selection to the last one.\n\t\t\t// Otherwise, set the selection to the second block.\n\t\t\tconst indexToSelect = hasPastedBlocks ? lastPastedBlockIndex : 1;\n\n\t\t\t// If there are pasted blocks, move the caret to the end of the selected block\n\t\t\t// Otherwise, retain the default value.\n\t\t\tconst initialPosition = hasPastedBlocks ? -1 : 0;\n\n\t\t\tonReplace( blocks, indexToSelect, initialPosition );\n\t\t},\n\t\t[ onReplace, onSplit, multilineTag, onSplitMiddle ]\n\t);\n\n\tconst onEnter = useCallback(\n\t\t( { value, onChange, shiftKey } ) => {\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( { content: value.text } ),\n\t\t\t\t\t] );\n\t\t\t\t\t__unstableMarkAutomaticChange();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( onCustomEnter ) {\n\t\t\t\tonCustomEnter();\n\t\t\t}\n\n\t\t\tif ( multiline ) {\n\t\t\t\tif ( shiftKey ) {\n\t\t\t\t\tif ( ! disableLineBreaks ) {\n\t\t\t\t\t\tonChange( insert( value, '\\n' ) );\n\t\t\t\t\t}\n\t\t\t\t} else if ( canSplit && isEmptyLine( value ) ) {\n\t\t\t\t\tsplitValue( value );\n\t\t\t\t} else {\n\t\t\t\t\tonChange( insertLineSeparator( value ) );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst { text, start: splitStart, end: splitEnd } = value;\n\t\t\t\tconst canSplitAtEnd =\n\t\t\t\t\tonSplitAtEnd &&\n\t\t\t\t\tsplitStart === splitEnd &&\n\t\t\t\t\tsplitEnd === text.length;\n\n\t\t\t\tif ( shiftKey || ( ! canSplit && ! canSplitAtEnd ) ) {\n\t\t\t\t\tif ( ! disableLineBreaks ) {\n\t\t\t\t\t\tonChange( insert( value, '\\n' ) );\n\t\t\t\t\t}\n\t\t\t\t} else if ( ! canSplit && canSplitAtEnd ) {\n\t\t\t\t\tonSplitAtEnd();\n\t\t\t\t} else if ( canSplit ) {\n\t\t\t\t\tsplitValue( value );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t\t[\n\t\t\tonReplace,\n\t\t\tonSplit,\n\t\t\t__unstableMarkAutomaticChange,\n\t\t\tmultiline,\n\t\t\tsplitValue,\n\t\t\tonSplitAtEnd,\n\t\t]\n\t);\n\n\tconst onPaste = useCallback(\n\t\t( {\n\t\t\tvalue,\n\t\t\tonChange,\n\t\t\thtml,\n\t\t\tplainText,\n\t\t\tisInternal,\n\t\t\tfiles,\n\t\t\tactiveFormats,\n\t\t} ) => {\n\t\t\t// If the data comes from a rich text instance, we can directly use it\n\t\t\t// without filtering the data. The filters are only meant for externally\n\t\t\t// pasted content and remove inline styles.\n\t\t\tif ( isInternal ) {\n\t\t\t\tconst pastedValue = create( {\n\t\t\t\t\thtml,\n\t\t\t\t\tmultilineTag,\n\t\t\t\t\tmultilineWrapperTags:\n\t\t\t\t\t\tmultilineTag === 'li' ? [ 'ul', 'ol' ] : undefined,\n\t\t\t\t\tpreserveWhiteSpace,\n\t\t\t\t} );\n\t\t\t\taddActiveFormats( pastedValue, activeFormats );\n\t\t\t\tonChange( insert( value, pastedValue ) );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( pastePlainText ) {\n\t\t\t\tonChange( insert( value, create( { text: plainText } ) ) );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Only process file if no HTML is present.\n\t\t\t// Note: a pasted file may have the URL as plain text.\n\t\t\tif ( files && files.length && ! html ) {\n\t\t\t\tconst content = pasteHandler( {\n\t\t\t\t\tHTML: filePasteHandler( files ),\n\t\t\t\t\tmode: 'BLOCKS',\n\t\t\t\t\ttagName,\n\t\t\t\t\tpreserveWhiteSpace,\n\t\t\t\t} );\n\n\t\t\t\t// Allows us to ask for this information when we get a report.\n\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\twindow.console.log( 'Received items:\\n\\n', files );\n\n\t\t\t\tif ( onReplace && isEmpty( value ) ) {\n\t\t\t\t\tonReplace( content );\n\t\t\t\t} else {\n\t\t\t\t\tsplitValue( value, content );\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet mode = onReplace && onSplit ? 'AUTO' : 'INLINE';\n\n\t\t\t// Force the blocks mode when the user is pasting\n\t\t\t// on a new line & the content resembles a shortcode.\n\t\t\t// Otherwise it's going to be detected as inline\n\t\t\t// and the shortcode won't be replaced.\n\t\t\tif (\n\t\t\t\tmode === 'AUTO' &&\n\t\t\t\tisEmpty( value ) &&\n\t\t\t\tisShortcode( plainText )\n\t\t\t) {\n\t\t\t\tmode = 'BLOCKS';\n\t\t\t}\n\n\t\t\tconst isPastedURL = isURL( plainText.trim() );\n\t\t\tconst presentEmbedHandlerPicker = () =>\n\t\t\t\tembedHandlerPickerRef.current?.presentPicker( {\n\t\t\t\t\tcreateEmbed: () =>\n\t\t\t\t\t\tonReplace( content, content.length - 1, -1 ),\n\t\t\t\t\tcreateLink: () =>\n\t\t\t\t\t\tcreateLinkInParagraph( plainText.trim(), onReplace ),\n\t\t\t\t} );\n\n\t\t\tif (\n\t\t\t\t__unstableEmbedURLOnPaste &&\n\t\t\t\tisEmpty( value ) &&\n\t\t\t\tisPastedURL\n\t\t\t) {\n\t\t\t\tmode = 'BLOCKS';\n\t\t\t}\n\n\t\t\tconst content = pasteHandler( {\n\t\t\t\tHTML: html,\n\t\t\t\tplainText,\n\t\t\t\tmode,\n\t\t\t\ttagName,\n\t\t\t\tpreserveWhiteSpace,\n\t\t\t} );\n\n\t\t\tif ( typeof content === 'string' ) {\n\t\t\t\tlet valueToInsert = create( { html: content } );\n\n\t\t\t\taddActiveFormats( valueToInsert, activeFormats );\n\n\t\t\t\t// If the content should be multiline, we should process text\n\t\t\t\t// separated by a line break as separate lines.\n\t\t\t\tif ( multilineTag ) {\n\t\t\t\t\tvalueToInsert = replace(\n\t\t\t\t\t\tvalueToInsert,\n\t\t\t\t\t\t/\\n+/g,\n\t\t\t\t\t\tLINE_SEPARATOR\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tonChange( insert( value, valueToInsert ) );\n\t\t\t} else if ( content.length > 0 ) {\n\t\t\t\t// When an URL is pasted in an empty paragraph then the EmbedHandlerPicker should showcase options allowing the transformation of that URL\n\t\t\t\t// into either an Embed block or a link within the target paragraph. If the paragraph is non-empty, the URL is pasted as text.\n\t\t\t\tconst canPasteEmbed =\n\t\t\t\t\tisPastedURL &&\n\t\t\t\t\tcontent.length === 1 &&\n\t\t\t\t\tcontent[ 0 ].name === 'core/embed';\n\t\t\t\tif ( onReplace && isEmpty( value ) ) {\n\t\t\t\t\tif ( canPasteEmbed ) {\n\t\t\t\t\t\tonChange(\n\t\t\t\t\t\t\tinsert( value, create( { text: plainText } ) )\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif ( __unstableEmbedURLOnPaste ) {\n\t\t\t\t\t\t\tpresentEmbedHandlerPicker();\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\tonReplace( content, content.length - 1, -1 );\n\t\t\t\t} else {\n\t\t\t\t\tif ( canPasteEmbed ) {\n\t\t\t\t\t\tonChange(\n\t\t\t\t\t\t\tinsert( value, create( { text: plainText } ) )\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\tsplitValue( value, content );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[\n\t\t\ttagName,\n\t\t\tonReplace,\n\t\t\tonSplit,\n\t\t\tsplitValue,\n\t\t\t__unstableEmbedURLOnPaste,\n\t\t\tmultilineTag,\n\t\t\tpreserveWhiteSpace,\n\t\t\tpastePlainText,\n\t\t]\n\t);\n\n\tconst inputRule = useCallback(\n\t\t( value, valueToFormat ) => {\n\t\t\tif ( ! onReplace ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst { start: startPosition, text } = value;\n\t\t\tconst characterBefore = text.slice(\n\t\t\t\tstartPosition - 1,\n\t\t\t\tstartPosition\n\t\t\t);\n\n\t\t\t// The character right before the caret must be a plain space.\n\t\t\tif ( characterBefore !== ' ' ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst trimmedTextBefore = text.slice( 0, startPosition ).trim();\n\t\t\tconst prefixTransforms = getBlockTransforms( 'from' ).filter(\n\t\t\t\t( { type } ) => type === 'prefix'\n\t\t\t);\n\t\t\tconst transformation = findTransform(\n\t\t\t\tprefixTransforms,\n\t\t\t\t( { prefix } ) => {\n\t\t\t\t\treturn trimmedTextBefore === prefix;\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tif ( ! transformation ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst content = valueToFormat(\n\t\t\t\tslice( value, startPosition, text.length )\n\t\t\t);\n\t\t\tconst block = transformation.transform( content );\n\n\t\t\tonReplace( [ block ] );\n\t\t\t__unstableMarkAutomaticChange();\n\t\t},\n\t\t[ onReplace, __unstableMarkAutomaticChange ]\n\t);\n\n\tconst mergedRef = useMergeRefs( [ forwardedRef, fallbackRef ] );\n\n\treturn (\n\t\t<RichText\n\t\t\tclientId={ clientId }\n\t\t\tidentifier={ identifier }\n\t\t\tref={ mergedRef }\n\t\t\tvalue={ adjustedValue }\n\t\t\tonChange={ adjustedOnChange }\n\t\t\tselectionStart={ selectionStart }\n\t\t\tselectionEnd={ selectionEnd }\n\t\t\tonSelectionChange={ onSelectionChange }\n\t\t\ttagName={ tagName }\n\t\t\tstart={ start }\n\t\t\treversed={ reversed }\n\t\t\tplaceholder={ placeholder }\n\t\t\tallowedFormats={ adjustedAllowedFormats }\n\t\t\twithoutInteractiveFormatting={ withoutInteractiveFormatting }\n\t\t\tonEnter={ onEnter }\n\t\t\tonDelete={ onDelete }\n\t\t\tonPaste={ onPaste }\n\t\t\t__unstableIsSelected={ isSelected }\n\t\t\t__unstableInputRule={ inputRule }\n\t\t\t__unstableMultilineTag={ multilineTag }\n\t\t\t__unstableOnEnterFormattedText={ enterFormattedText }\n\t\t\t__unstableOnExitFormattedText={ exitFormattedText }\n\t\t\t__unstableOnCreateUndoLevel={ __unstableMarkLastChangeAsPersistent }\n\t\t\t__unstableMarkAutomaticChange={ __unstableMarkAutomaticChange }\n\t\t\t__unstableDidAutomaticChange={ didAutomaticChange }\n\t\t\t__unstableUndo={ undo }\n\t\t\t__unstableDisableFormats={ disableFormats }\n\t\t\tpreserveWhiteSpace={ preserveWhiteSpace }\n\t\t\tdisabled={ disabled }\n\t\t\tunstableOnFocus={ unstableOnFocus }\n\t\t\t__unstableAllowPrefixTransformations={\n\t\t\t\t__unstableAllowPrefixTransformations\n\t\t\t}\n\t\t\t__unstableMultilineRootTag={ __unstableMultilineRootTag }\n\t\t\t// Native props.\n\t\t\tblockIsSelected={\n\t\t\t\toriginalIsSelected !== undefined\n\t\t\t\t\t? originalIsSelected\n\t\t\t\t\t: blockIsSelected\n\t\t\t}\n\t\t\tshouldBlurOnUnmount={ shouldBlurOnUnmount }\n\t\t\t__unstableMobileNoFocusOnMount={ __unstableMobileNoFocusOnMount }\n\t\t\tdeleteEnter={ deleteEnter }\n\t\t\tplaceholderTextColor={ placeholderTextColor }\n\t\t\ttextAlign={ textAlign }\n\t\t\tselectionColor={ selectionColor }\n\t\t\ttagsToEliminate={ tagsToEliminate }\n\t\t\tdisableEditingMenu={ disableEditingMenu }\n\t\t\tfontSize={ fontSize }\n\t\t\tfontFamily={ fontFamily }\n\t\t\tfontWeight={ fontWeight }\n\t\t\tfontStyle={ fontStyle }\n\t\t\tminWidth={ minWidth }\n\t\t\tmaxWidth={ maxWidth }\n\t\t\tonBlur={ onBlur }\n\t\t\tsetRef={ setRef }\n\t\t\tdisableSuggestions={ disableSuggestions }\n\t\t\tdisableAutocorrection={ disableAutocorrection }\n\t\t\tcontainerWidth={ containerWidth }\n\t\t\t// Props to be set on the editable container are destructured on the\n\t\t\t// element itself for web (see below), but passed through rich text\n\t\t\t// for native.\n\t\t\tid={ props.id }\n\t\t\tstyle={ props.style }\n\t\t>\n\t\t\t{ ( {\n\t\t\t\tisSelected: nestedIsSelected,\n\t\t\t\tvalue,\n\t\t\t\tonChange,\n\t\t\t\tonFocus,\n\t\t\t\teditableProps,\n\t\t\t\teditableTagName: TagName,\n\t\t\t} ) => (\n\t\t\t\t<>\n\t\t\t\t\t{ children && children( { value, onChange, onFocus } ) }\n\t\t\t\t\t{ nestedIsSelected && hasFormats && (\n\t\t\t\t\t\t<FormatToolbarContainer\n\t\t\t\t\t\t\tinline={ inlineToolbar }\n\t\t\t\t\t\t\tanchorRef={ fallbackRef.current }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t{ nestedIsSelected && <RemoveBrowserShortcuts /> }\n\t\t\t\t\t<Autocomplete\n\t\t\t\t\t\tonReplace={ onReplace }\n\t\t\t\t\t\tcompleters={ autocompleters }\n\t\t\t\t\t\trecord={ value }\n\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\tisSelected={ nestedIsSelected }\n\t\t\t\t\t\tcontentRef={ fallbackRef }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ ( { listBoxId, activeId, onKeyDown } ) => (\n\t\t\t\t\t\t\t<TagName\n\t\t\t\t\t\t\t\t{ ...editableProps }\n\t\t\t\t\t\t\t\t{ ...props }\n\t\t\t\t\t\t\t\tstyle={\n\t\t\t\t\t\t\t\t\tprops.style\n\t\t\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\t\t\t...props.style,\n\t\t\t\t\t\t\t\t\t\t\t\t...editableProps.style,\n\t\t\t\t\t\t\t\t\t\t }\n\t\t\t\t\t\t\t\t\t\t: editableProps.style\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t\t\tclasses,\n\t\t\t\t\t\t\t\t\tprops.className,\n\t\t\t\t\t\t\t\t\teditableProps.className\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\taria-autocomplete={\n\t\t\t\t\t\t\t\t\tlistBoxId ? 'list' : undefined\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\taria-owns={ listBoxId }\n\t\t\t\t\t\t\t\taria-activedescendant={ activeId }\n\t\t\t\t\t\t\t\tonKeyDown={ ( event ) => {\n\t\t\t\t\t\t\t\t\tonKeyDown( event );\n\t\t\t\t\t\t\t\t\teditableProps.onKeyDown( event );\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</Autocomplete>\n\t\t\t\t\t<EmbedHandlerPicker ref={ embedHandlerPickerRef } />\n\t\t\t\t</>\n\t\t\t) }\n\t\t</RichText>\n\t);\n}\n\nconst ForwardedRichTextContainer = forwardRef( RichTextWrapper );\n\nForwardedRichTextContainer.Content = ( {\n\tvalue,\n\ttagName: Tag,\n\tmultiline,\n\t...props\n} ) => {\n\t// Handle deprecated `children` and `node` sources.\n\tif ( Array.isArray( value ) ) {\n\t\tvalue = childrenSource.toHTML( value );\n\t}\n\n\tconst MultilineTag = getMultilineTag( multiline );\n\n\tif ( ! value && MultilineTag ) {\n\t\tvalue = `<${ MultilineTag }></${ MultilineTag }>`;\n\t}\n\n\tconst content = <RawHTML>{ value }</RawHTML>;\n\n\tif ( Tag ) {\n\t\tconst { format, ...restProps } = props;\n\t\treturn <Tag { ...restProps }>{ content }</Tag>;\n\t}\n\n\treturn content;\n};\n\nForwardedRichTextContainer.isEmpty = ( value ) => {\n\treturn ! value || value.length === 0;\n};\n\nForwardedRichTextContainer.Content.defaultProps = {\n\tformat: 'string',\n\tvalue: '',\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"]}
@@ -13,6 +13,7 @@ import { useSelect } from '@wordpress/data';
13
13
  import { BaseControl, Button, RangeControl, CustomSelectControl, __experimentalUnitControl as UnitControl, __experimentalHStack as HStack, __experimentalUseCustomUnits as useCustomUnits, __experimentalParseQuantityAndUnitFromRawValue as parseQuantityAndUnitFromRawValue } from '@wordpress/components';
14
14
  import { __, sprintf } from '@wordpress/i18n';
15
15
  import { settings } from '@wordpress/icons';
16
+ import { usePrevious } from '@wordpress/compose';
16
17
  /**
17
18
  * Internal dependencies
18
19
  */
@@ -69,6 +70,12 @@ export default function SpacingInputControl(_ref) {
69
70
  return editorSettings === null || editorSettings === void 0 ? void 0 : editorSettings.disableCustomSpacingSizes;
70
71
  });
71
72
  const [showCustomValueControl, setShowCustomValueControl] = useState(!disableCustomSpacingSizes && value !== undefined && !isValueSpacingPreset(value));
73
+ const previousValue = usePrevious(value);
74
+
75
+ if (previousValue !== value && !isValueSpacingPreset(value) && showCustomValueControl !== true) {
76
+ setShowCustomValueControl(true);
77
+ }
78
+
72
79
  const units = useCustomUnits({
73
80
  availableUnits: useSetting('spacing.units') || ['px', 'em', 'rem']
74
81
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/spacing-sizes-control/spacing-input-control.js"],"names":["classnames","useState","useMemo","useSelect","BaseControl","Button","RangeControl","CustomSelectControl","__experimentalUnitControl","UnitControl","__experimentalHStack","HStack","__experimentalUseCustomUnits","useCustomUnits","__experimentalParseQuantityAndUnitFromRawValue","parseQuantityAndUnitFromRawValue","__","sprintf","settings","useSetting","store","blockEditorStore","LABELS","getSliderValueFromPreset","getCustomValueFromPreset","getPresetValueFromCustomValue","isValueSpacingPreset","CUSTOM_VALUE_SETTINGS","px","max","steps","vw","vh","em","rm","SpacingInputControl","spacingSizes","value","side","onChange","isMixed","type","minimumCustomValue","onMouseOver","onMouseOut","selectListSizes","showRangeControl","length","disableCustomSpacingSizes","select","editorSettings","getSettings","showCustomValueControl","setShowCustomValueControl","undefined","units","availableUnits","currentValue","showCustomValueInSelectList","name","slug","size","selectedUnit","setInitialValue","customTooltipContent","newValue","customRangeValue","parseFloat","getNewCustomValue","newSize","isNumeric","isNaN","nextValue","getNewPresetValue","controlType","parseInt","handleCustomValueSliderChange","next","join","allPlaceholder","currentValueHint","options","map","index","key","marks","label","ariaLabel","toLowerCase","showHint","event","nativeEvent","offsetX","find","option","selection","selectedItem"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useState, useMemo } from '@wordpress/element';\nimport { useSelect } from '@wordpress/data';\nimport {\n\tBaseControl,\n\tButton,\n\tRangeControl,\n\tCustomSelectControl,\n\t__experimentalUnitControl as UnitControl,\n\t__experimentalHStack as HStack,\n\t__experimentalUseCustomUnits as useCustomUnits,\n\t__experimentalParseQuantityAndUnitFromRawValue as parseQuantityAndUnitFromRawValue,\n} from '@wordpress/components';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { settings } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport useSetting from '../use-setting';\nimport { store as blockEditorStore } from '../../store';\nimport {\n\tLABELS,\n\tgetSliderValueFromPreset,\n\tgetCustomValueFromPreset,\n\tgetPresetValueFromCustomValue,\n\tisValueSpacingPreset,\n} from './utils';\n\nconst CUSTOM_VALUE_SETTINGS = {\n\tpx: { max: 300, steps: 1 },\n\t'%': { max: 100, steps: 1 },\n\tvw: { max: 100, steps: 1 },\n\tvh: { max: 100, steps: 1 },\n\tem: { max: 10, steps: 0.1 },\n\trm: { max: 10, steps: 0.1 },\n};\n\nexport default function SpacingInputControl( {\n\tspacingSizes,\n\tvalue,\n\tside,\n\tonChange,\n\tisMixed = false,\n\ttype,\n\tminimumCustomValue,\n\tonMouseOver,\n\tonMouseOut,\n} ) {\n\t// Treat value as a preset value if the passed in value matches the value of one of the spacingSizes.\n\tvalue = getPresetValueFromCustomValue( value, spacingSizes );\n\n\tlet selectListSizes = spacingSizes;\n\tconst showRangeControl = spacingSizes.length <= 8;\n\n\tconst disableCustomSpacingSizes = useSelect( ( select ) => {\n\t\tconst editorSettings = select( blockEditorStore ).getSettings();\n\t\treturn editorSettings?.disableCustomSpacingSizes;\n\t} );\n\n\tconst [ showCustomValueControl, setShowCustomValueControl ] = useState(\n\t\t! disableCustomSpacingSizes &&\n\t\t\tvalue !== undefined &&\n\t\t\t! isValueSpacingPreset( value )\n\t);\n\n\tconst units = useCustomUnits( {\n\t\tavailableUnits: useSetting( 'spacing.units' ) || [ 'px', 'em', 'rem' ],\n\t} );\n\n\tlet currentValue = null;\n\n\tconst showCustomValueInSelectList =\n\t\t! showRangeControl &&\n\t\t! showCustomValueControl &&\n\t\tvalue !== undefined &&\n\t\t( ! isValueSpacingPreset( value ) ||\n\t\t\t( isValueSpacingPreset( value ) && isMixed ) );\n\n\tif ( showCustomValueInSelectList ) {\n\t\tselectListSizes = [\n\t\t\t...spacingSizes,\n\t\t\t{\n\t\t\t\tname: ! isMixed\n\t\t\t\t\t? // translators: A custom measurement, eg. a number followed by a unit like 12px.\n\t\t\t\t\t sprintf( __( 'Custom (%s)' ), value )\n\t\t\t\t\t: __( 'Mixed' ),\n\t\t\t\tslug: 'custom',\n\t\t\t\tsize: value,\n\t\t\t},\n\t\t];\n\t\tcurrentValue = selectListSizes.length - 1;\n\t} else if ( ! isMixed ) {\n\t\tcurrentValue = ! showCustomValueControl\n\t\t\t? getSliderValueFromPreset( value, spacingSizes )\n\t\t\t: getCustomValueFromPreset( value, spacingSizes );\n\t}\n\n\tconst selectedUnit =\n\t\tuseMemo(\n\t\t\t() => parseQuantityAndUnitFromRawValue( currentValue ),\n\t\t\t[ currentValue ]\n\t\t)[ 1 ] || units[ 0 ].value;\n\n\tconst setInitialValue = () => {\n\t\tif ( value === undefined ) {\n\t\t\tonChange( '0' );\n\t\t}\n\t};\n\n\tconst customTooltipContent = ( newValue ) =>\n\t\tvalue === undefined ? undefined : spacingSizes[ newValue ]?.name;\n\n\tconst customRangeValue = parseFloat( currentValue, 10 );\n\n\tconst getNewCustomValue = ( newSize ) => {\n\t\tconst isNumeric = ! isNaN( parseFloat( newSize ) );\n\t\tconst nextValue = isNumeric ? newSize : undefined;\n\t\treturn nextValue;\n\t};\n\n\tconst getNewPresetValue = ( newSize, controlType ) => {\n\t\tconst size = parseInt( newSize, 10 );\n\n\t\tif ( controlType === 'selectList' ) {\n\t\t\tif ( size === 0 ) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tif ( size === 1 ) {\n\t\t\t\treturn '0';\n\t\t\t}\n\t\t} else if ( size === 0 ) {\n\t\t\treturn '0';\n\t\t}\n\t\treturn `var:preset|spacing|${ spacingSizes[ newSize ]?.slug }`;\n\t};\n\n\tconst handleCustomValueSliderChange = ( next ) => {\n\t\tonChange( [ next, selectedUnit ].join( '' ) );\n\t};\n\n\tconst allPlaceholder = isMixed ? __( 'Mixed' ) : null;\n\n\tconst currentValueHint = ! isMixed\n\t\t? customTooltipContent( currentValue )\n\t\t: __( 'Mixed' );\n\n\tconst options = selectListSizes.map( ( size, index ) => ( {\n\t\tkey: index,\n\t\tname: size.name,\n\t} ) );\n\n\tconst marks = spacingSizes.map( ( newValue, index ) => ( {\n\t\tvalue: index,\n\t\tlabel: undefined,\n\t} ) );\n\n\tconst ariaLabel = sprintf(\n\t\t// translators: 1: The side of the block being modified (top, bottom, left, etc.). 2. Type of spacing being modified (Padding, margin, etc)\n\t\t__( '%1$s %2$s' ),\n\t\tLABELS[ side ],\n\t\ttype?.toLowerCase()\n\t);\n\n\tconst showHint =\n\t\tshowRangeControl &&\n\t\t! showCustomValueControl &&\n\t\tcurrentValueHint !== undefined;\n\n\treturn (\n\t\t<>\n\t\t\t{ side !== 'all' && (\n\t\t\t\t<HStack className=\"components-spacing-sizes-control__side-labels\">\n\t\t\t\t\t<BaseControl.VisualLabel className=\"components-spacing-sizes-control__side-label\">\n\t\t\t\t\t\t{ LABELS[ side ] }\n\t\t\t\t\t</BaseControl.VisualLabel>\n\n\t\t\t\t\t{ showHint && (\n\t\t\t\t\t\t<BaseControl.VisualLabel className=\"components-spacing-sizes-control__hint-single\">\n\t\t\t\t\t\t\t{ currentValueHint }\n\t\t\t\t\t\t</BaseControl.VisualLabel>\n\t\t\t\t\t) }\n\t\t\t\t</HStack>\n\t\t\t) }\n\t\t\t{ side === 'all' && showHint && (\n\t\t\t\t<BaseControl.VisualLabel className=\"components-spacing-sizes-control__hint-all\">\n\t\t\t\t\t{ currentValueHint }\n\t\t\t\t</BaseControl.VisualLabel>\n\t\t\t) }\n\n\t\t\t{ ! disableCustomSpacingSizes && (\n\t\t\t\t<Button\n\t\t\t\t\tlabel={\n\t\t\t\t\t\tshowCustomValueControl\n\t\t\t\t\t\t\t? __( 'Use size preset' )\n\t\t\t\t\t\t\t: __( 'Set custom size' )\n\t\t\t\t\t}\n\t\t\t\t\ticon={ settings }\n\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\tsetShowCustomValueControl( ! showCustomValueControl );\n\t\t\t\t\t} }\n\t\t\t\t\tisPressed={ showCustomValueControl }\n\t\t\t\t\tisSmall\n\t\t\t\t\tclassName={ classnames( {\n\t\t\t\t\t\t'components-spacing-sizes-control__custom-toggle-all':\n\t\t\t\t\t\t\tside === 'all',\n\t\t\t\t\t\t'components-spacing-sizes-control__custom-toggle-single':\n\t\t\t\t\t\t\tside !== 'all',\n\t\t\t\t\t} ) }\n\t\t\t\t\ticonSize={ 24 }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ showCustomValueControl && (\n\t\t\t\t<>\n\t\t\t\t\t<UnitControl\n\t\t\t\t\t\tonMouseOver={ onMouseOver }\n\t\t\t\t\t\tonMouseOut={ onMouseOut }\n\t\t\t\t\t\tonFocus={ onMouseOver }\n\t\t\t\t\t\tonBlur={ onMouseOut }\n\t\t\t\t\t\tonChange={ ( newSize ) =>\n\t\t\t\t\t\t\tonChange( getNewCustomValue( newSize ) )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvalue={ currentValue }\n\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\tmin={ minimumCustomValue }\n\t\t\t\t\t\tplaceholder={ allPlaceholder }\n\t\t\t\t\t\tdisableUnits={ isMixed }\n\t\t\t\t\t\tlabel={ ariaLabel }\n\t\t\t\t\t\thideLabelFromVision={ true }\n\t\t\t\t\t\tclassName=\"components-spacing-sizes-control__custom-value-input\"\n\t\t\t\t\t\tsize={ '__unstable-large' }\n\t\t\t\t\t/>\n\n\t\t\t\t\t<RangeControl\n\t\t\t\t\t\tonMouseOver={ onMouseOver }\n\t\t\t\t\t\tonMouseOut={ onMouseOut }\n\t\t\t\t\t\tonFocus={ onMouseOver }\n\t\t\t\t\t\tonBlur={ onMouseOut }\n\t\t\t\t\t\tvalue={ customRangeValue }\n\t\t\t\t\t\tmin={ 0 }\n\t\t\t\t\t\tmax={ CUSTOM_VALUE_SETTINGS[ selectedUnit ]?.max ?? 10 }\n\t\t\t\t\t\tstep={\n\t\t\t\t\t\t\tCUSTOM_VALUE_SETTINGS[ selectedUnit ]?.steps ?? 0.1\n\t\t\t\t\t\t}\n\t\t\t\t\t\twithInputField={ false }\n\t\t\t\t\t\tonChange={ handleCustomValueSliderChange }\n\t\t\t\t\t\tclassName=\"components-spacing-sizes-control__custom-value-range\"\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t/>\n\t\t\t\t</>\n\t\t\t) }\n\t\t\t{ showRangeControl && ! showCustomValueControl && (\n\t\t\t\t<RangeControl\n\t\t\t\t\tonMouseOver={ onMouseOver }\n\t\t\t\t\tonMouseOut={ onMouseOut }\n\t\t\t\t\tclassName=\"components-spacing-sizes-control__range-control\"\n\t\t\t\t\tvalue={ currentValue }\n\t\t\t\t\tonChange={ ( newSize ) =>\n\t\t\t\t\t\tonChange( getNewPresetValue( newSize ) )\n\t\t\t\t\t}\n\t\t\t\t\tonMouseDown={ ( event ) => {\n\t\t\t\t\t\t// If mouse down is near start of range set initial value to 0, which\n\t\t\t\t\t\t// prevents the user have to drag right then left to get 0 setting.\n\t\t\t\t\t\tif ( event?.nativeEvent?.offsetX < 35 ) {\n\t\t\t\t\t\t\tsetInitialValue();\n\t\t\t\t\t\t}\n\t\t\t\t\t} }\n\t\t\t\t\twithInputField={ false }\n\t\t\t\t\taria-valuenow={ currentValue }\n\t\t\t\t\taria-valuetext={ spacingSizes[ currentValue ]?.name }\n\t\t\t\t\trenderTooltipContent={ customTooltipContent }\n\t\t\t\t\tmin={ 0 }\n\t\t\t\t\tmax={ spacingSizes.length - 1 }\n\t\t\t\t\tmarks={ marks }\n\t\t\t\t\tlabel={ ariaLabel }\n\t\t\t\t\thideLabelFromVision={ true }\n\t\t\t\t\t__nextHasNoMarginBottom={ true }\n\t\t\t\t\tonFocus={ onMouseOver }\n\t\t\t\t\tonBlur={ onMouseOut }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ ! showRangeControl && ! showCustomValueControl && (\n\t\t\t\t<CustomSelectControl\n\t\t\t\t\tclassName=\"components-spacing-sizes-control__custom-select-control\"\n\t\t\t\t\tvalue={\n\t\t\t\t\t\toptions.find(\n\t\t\t\t\t\t\t( option ) => option.key === currentValue\n\t\t\t\t\t\t) || '' // passing undefined here causes a downshift controlled/uncontrolled warning\n\t\t\t\t\t}\n\t\t\t\t\tonChange={ ( selection ) => {\n\t\t\t\t\t\tonChange(\n\t\t\t\t\t\t\tgetNewPresetValue(\n\t\t\t\t\t\t\t\tselection.selectedItem.key,\n\t\t\t\t\t\t\t\t'selectList'\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\toptions={ options }\n\t\t\t\t\tlabel={ ariaLabel }\n\t\t\t\t\thideLabelFromVision={ true }\n\t\t\t\t\t__nextUnconstrainedWidth={ true }\n\t\t\t\t\tsize={ '__unstable-large' }\n\t\t\t\t\tonMouseOver={ onMouseOver }\n\t\t\t\t\tonMouseOut={ onMouseOut }\n\t\t\t\t\tonFocus={ onMouseOver }\n\t\t\t\t\tonBlur={ onMouseOut }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/spacing-sizes-control/spacing-input-control.js"],"names":["classnames","useState","useMemo","useSelect","BaseControl","Button","RangeControl","CustomSelectControl","__experimentalUnitControl","UnitControl","__experimentalHStack","HStack","__experimentalUseCustomUnits","useCustomUnits","__experimentalParseQuantityAndUnitFromRawValue","parseQuantityAndUnitFromRawValue","__","sprintf","settings","usePrevious","useSetting","store","blockEditorStore","LABELS","getSliderValueFromPreset","getCustomValueFromPreset","getPresetValueFromCustomValue","isValueSpacingPreset","CUSTOM_VALUE_SETTINGS","px","max","steps","vw","vh","em","rm","SpacingInputControl","spacingSizes","value","side","onChange","isMixed","type","minimumCustomValue","onMouseOver","onMouseOut","selectListSizes","showRangeControl","length","disableCustomSpacingSizes","select","editorSettings","getSettings","showCustomValueControl","setShowCustomValueControl","undefined","previousValue","units","availableUnits","currentValue","showCustomValueInSelectList","name","slug","size","selectedUnit","setInitialValue","customTooltipContent","newValue","customRangeValue","parseFloat","getNewCustomValue","newSize","isNumeric","isNaN","nextValue","getNewPresetValue","controlType","parseInt","handleCustomValueSliderChange","next","join","allPlaceholder","currentValueHint","options","map","index","key","marks","label","ariaLabel","toLowerCase","showHint","event","nativeEvent","offsetX","find","option","selection","selectedItem"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useState, useMemo } from '@wordpress/element';\nimport { useSelect } from '@wordpress/data';\nimport {\n\tBaseControl,\n\tButton,\n\tRangeControl,\n\tCustomSelectControl,\n\t__experimentalUnitControl as UnitControl,\n\t__experimentalHStack as HStack,\n\t__experimentalUseCustomUnits as useCustomUnits,\n\t__experimentalParseQuantityAndUnitFromRawValue as parseQuantityAndUnitFromRawValue,\n} from '@wordpress/components';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { settings } from '@wordpress/icons';\nimport { usePrevious } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport useSetting from '../use-setting';\nimport { store as blockEditorStore } from '../../store';\nimport {\n\tLABELS,\n\tgetSliderValueFromPreset,\n\tgetCustomValueFromPreset,\n\tgetPresetValueFromCustomValue,\n\tisValueSpacingPreset,\n} from './utils';\n\nconst CUSTOM_VALUE_SETTINGS = {\n\tpx: { max: 300, steps: 1 },\n\t'%': { max: 100, steps: 1 },\n\tvw: { max: 100, steps: 1 },\n\tvh: { max: 100, steps: 1 },\n\tem: { max: 10, steps: 0.1 },\n\trm: { max: 10, steps: 0.1 },\n};\n\nexport default function SpacingInputControl( {\n\tspacingSizes,\n\tvalue,\n\tside,\n\tonChange,\n\tisMixed = false,\n\ttype,\n\tminimumCustomValue,\n\tonMouseOver,\n\tonMouseOut,\n} ) {\n\t// Treat value as a preset value if the passed in value matches the value of one of the spacingSizes.\n\tvalue = getPresetValueFromCustomValue( value, spacingSizes );\n\n\tlet selectListSizes = spacingSizes;\n\tconst showRangeControl = spacingSizes.length <= 8;\n\n\tconst disableCustomSpacingSizes = useSelect( ( select ) => {\n\t\tconst editorSettings = select( blockEditorStore ).getSettings();\n\t\treturn editorSettings?.disableCustomSpacingSizes;\n\t} );\n\n\tconst [ showCustomValueControl, setShowCustomValueControl ] = useState(\n\t\t! disableCustomSpacingSizes &&\n\t\t\tvalue !== undefined &&\n\t\t\t! isValueSpacingPreset( value )\n\t);\n\n\tconst previousValue = usePrevious( value );\n\tif (\n\t\tpreviousValue !== value &&\n\t\t! isValueSpacingPreset( value ) &&\n\t\tshowCustomValueControl !== true\n\t) {\n\t\tsetShowCustomValueControl( true );\n\t}\n\n\tconst units = useCustomUnits( {\n\t\tavailableUnits: useSetting( 'spacing.units' ) || [ 'px', 'em', 'rem' ],\n\t} );\n\n\tlet currentValue = null;\n\n\tconst showCustomValueInSelectList =\n\t\t! showRangeControl &&\n\t\t! showCustomValueControl &&\n\t\tvalue !== undefined &&\n\t\t( ! isValueSpacingPreset( value ) ||\n\t\t\t( isValueSpacingPreset( value ) && isMixed ) );\n\n\tif ( showCustomValueInSelectList ) {\n\t\tselectListSizes = [\n\t\t\t...spacingSizes,\n\t\t\t{\n\t\t\t\tname: ! isMixed\n\t\t\t\t\t? // translators: A custom measurement, eg. a number followed by a unit like 12px.\n\t\t\t\t\t sprintf( __( 'Custom (%s)' ), value )\n\t\t\t\t\t: __( 'Mixed' ),\n\t\t\t\tslug: 'custom',\n\t\t\t\tsize: value,\n\t\t\t},\n\t\t];\n\t\tcurrentValue = selectListSizes.length - 1;\n\t} else if ( ! isMixed ) {\n\t\tcurrentValue = ! showCustomValueControl\n\t\t\t? getSliderValueFromPreset( value, spacingSizes )\n\t\t\t: getCustomValueFromPreset( value, spacingSizes );\n\t}\n\n\tconst selectedUnit =\n\t\tuseMemo(\n\t\t\t() => parseQuantityAndUnitFromRawValue( currentValue ),\n\t\t\t[ currentValue ]\n\t\t)[ 1 ] || units[ 0 ].value;\n\n\tconst setInitialValue = () => {\n\t\tif ( value === undefined ) {\n\t\t\tonChange( '0' );\n\t\t}\n\t};\n\n\tconst customTooltipContent = ( newValue ) =>\n\t\tvalue === undefined ? undefined : spacingSizes[ newValue ]?.name;\n\n\tconst customRangeValue = parseFloat( currentValue, 10 );\n\n\tconst getNewCustomValue = ( newSize ) => {\n\t\tconst isNumeric = ! isNaN( parseFloat( newSize ) );\n\t\tconst nextValue = isNumeric ? newSize : undefined;\n\t\treturn nextValue;\n\t};\n\n\tconst getNewPresetValue = ( newSize, controlType ) => {\n\t\tconst size = parseInt( newSize, 10 );\n\n\t\tif ( controlType === 'selectList' ) {\n\t\t\tif ( size === 0 ) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tif ( size === 1 ) {\n\t\t\t\treturn '0';\n\t\t\t}\n\t\t} else if ( size === 0 ) {\n\t\t\treturn '0';\n\t\t}\n\t\treturn `var:preset|spacing|${ spacingSizes[ newSize ]?.slug }`;\n\t};\n\n\tconst handleCustomValueSliderChange = ( next ) => {\n\t\tonChange( [ next, selectedUnit ].join( '' ) );\n\t};\n\n\tconst allPlaceholder = isMixed ? __( 'Mixed' ) : null;\n\n\tconst currentValueHint = ! isMixed\n\t\t? customTooltipContent( currentValue )\n\t\t: __( 'Mixed' );\n\n\tconst options = selectListSizes.map( ( size, index ) => ( {\n\t\tkey: index,\n\t\tname: size.name,\n\t} ) );\n\n\tconst marks = spacingSizes.map( ( newValue, index ) => ( {\n\t\tvalue: index,\n\t\tlabel: undefined,\n\t} ) );\n\n\tconst ariaLabel = sprintf(\n\t\t// translators: 1: The side of the block being modified (top, bottom, left, etc.). 2. Type of spacing being modified (Padding, margin, etc)\n\t\t__( '%1$s %2$s' ),\n\t\tLABELS[ side ],\n\t\ttype?.toLowerCase()\n\t);\n\n\tconst showHint =\n\t\tshowRangeControl &&\n\t\t! showCustomValueControl &&\n\t\tcurrentValueHint !== undefined;\n\n\treturn (\n\t\t<>\n\t\t\t{ side !== 'all' && (\n\t\t\t\t<HStack className=\"components-spacing-sizes-control__side-labels\">\n\t\t\t\t\t<BaseControl.VisualLabel className=\"components-spacing-sizes-control__side-label\">\n\t\t\t\t\t\t{ LABELS[ side ] }\n\t\t\t\t\t</BaseControl.VisualLabel>\n\n\t\t\t\t\t{ showHint && (\n\t\t\t\t\t\t<BaseControl.VisualLabel className=\"components-spacing-sizes-control__hint-single\">\n\t\t\t\t\t\t\t{ currentValueHint }\n\t\t\t\t\t\t</BaseControl.VisualLabel>\n\t\t\t\t\t) }\n\t\t\t\t</HStack>\n\t\t\t) }\n\t\t\t{ side === 'all' && showHint && (\n\t\t\t\t<BaseControl.VisualLabel className=\"components-spacing-sizes-control__hint-all\">\n\t\t\t\t\t{ currentValueHint }\n\t\t\t\t</BaseControl.VisualLabel>\n\t\t\t) }\n\n\t\t\t{ ! disableCustomSpacingSizes && (\n\t\t\t\t<Button\n\t\t\t\t\tlabel={\n\t\t\t\t\t\tshowCustomValueControl\n\t\t\t\t\t\t\t? __( 'Use size preset' )\n\t\t\t\t\t\t\t: __( 'Set custom size' )\n\t\t\t\t\t}\n\t\t\t\t\ticon={ settings }\n\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\tsetShowCustomValueControl( ! showCustomValueControl );\n\t\t\t\t\t} }\n\t\t\t\t\tisPressed={ showCustomValueControl }\n\t\t\t\t\tisSmall\n\t\t\t\t\tclassName={ classnames( {\n\t\t\t\t\t\t'components-spacing-sizes-control__custom-toggle-all':\n\t\t\t\t\t\t\tside === 'all',\n\t\t\t\t\t\t'components-spacing-sizes-control__custom-toggle-single':\n\t\t\t\t\t\t\tside !== 'all',\n\t\t\t\t\t} ) }\n\t\t\t\t\ticonSize={ 24 }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ showCustomValueControl && (\n\t\t\t\t<>\n\t\t\t\t\t<UnitControl\n\t\t\t\t\t\tonMouseOver={ onMouseOver }\n\t\t\t\t\t\tonMouseOut={ onMouseOut }\n\t\t\t\t\t\tonFocus={ onMouseOver }\n\t\t\t\t\t\tonBlur={ onMouseOut }\n\t\t\t\t\t\tonChange={ ( newSize ) =>\n\t\t\t\t\t\t\tonChange( getNewCustomValue( newSize ) )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvalue={ currentValue }\n\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\tmin={ minimumCustomValue }\n\t\t\t\t\t\tplaceholder={ allPlaceholder }\n\t\t\t\t\t\tdisableUnits={ isMixed }\n\t\t\t\t\t\tlabel={ ariaLabel }\n\t\t\t\t\t\thideLabelFromVision={ true }\n\t\t\t\t\t\tclassName=\"components-spacing-sizes-control__custom-value-input\"\n\t\t\t\t\t\tsize={ '__unstable-large' }\n\t\t\t\t\t/>\n\n\t\t\t\t\t<RangeControl\n\t\t\t\t\t\tonMouseOver={ onMouseOver }\n\t\t\t\t\t\tonMouseOut={ onMouseOut }\n\t\t\t\t\t\tonFocus={ onMouseOver }\n\t\t\t\t\t\tonBlur={ onMouseOut }\n\t\t\t\t\t\tvalue={ customRangeValue }\n\t\t\t\t\t\tmin={ 0 }\n\t\t\t\t\t\tmax={ CUSTOM_VALUE_SETTINGS[ selectedUnit ]?.max ?? 10 }\n\t\t\t\t\t\tstep={\n\t\t\t\t\t\t\tCUSTOM_VALUE_SETTINGS[ selectedUnit ]?.steps ?? 0.1\n\t\t\t\t\t\t}\n\t\t\t\t\t\twithInputField={ false }\n\t\t\t\t\t\tonChange={ handleCustomValueSliderChange }\n\t\t\t\t\t\tclassName=\"components-spacing-sizes-control__custom-value-range\"\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t/>\n\t\t\t\t</>\n\t\t\t) }\n\t\t\t{ showRangeControl && ! showCustomValueControl && (\n\t\t\t\t<RangeControl\n\t\t\t\t\tonMouseOver={ onMouseOver }\n\t\t\t\t\tonMouseOut={ onMouseOut }\n\t\t\t\t\tclassName=\"components-spacing-sizes-control__range-control\"\n\t\t\t\t\tvalue={ currentValue }\n\t\t\t\t\tonChange={ ( newSize ) =>\n\t\t\t\t\t\tonChange( getNewPresetValue( newSize ) )\n\t\t\t\t\t}\n\t\t\t\t\tonMouseDown={ ( event ) => {\n\t\t\t\t\t\t// If mouse down is near start of range set initial value to 0, which\n\t\t\t\t\t\t// prevents the user have to drag right then left to get 0 setting.\n\t\t\t\t\t\tif ( event?.nativeEvent?.offsetX < 35 ) {\n\t\t\t\t\t\t\tsetInitialValue();\n\t\t\t\t\t\t}\n\t\t\t\t\t} }\n\t\t\t\t\twithInputField={ false }\n\t\t\t\t\taria-valuenow={ currentValue }\n\t\t\t\t\taria-valuetext={ spacingSizes[ currentValue ]?.name }\n\t\t\t\t\trenderTooltipContent={ customTooltipContent }\n\t\t\t\t\tmin={ 0 }\n\t\t\t\t\tmax={ spacingSizes.length - 1 }\n\t\t\t\t\tmarks={ marks }\n\t\t\t\t\tlabel={ ariaLabel }\n\t\t\t\t\thideLabelFromVision={ true }\n\t\t\t\t\t__nextHasNoMarginBottom={ true }\n\t\t\t\t\tonFocus={ onMouseOver }\n\t\t\t\t\tonBlur={ onMouseOut }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ ! showRangeControl && ! showCustomValueControl && (\n\t\t\t\t<CustomSelectControl\n\t\t\t\t\tclassName=\"components-spacing-sizes-control__custom-select-control\"\n\t\t\t\t\tvalue={\n\t\t\t\t\t\toptions.find(\n\t\t\t\t\t\t\t( option ) => option.key === currentValue\n\t\t\t\t\t\t) || '' // passing undefined here causes a downshift controlled/uncontrolled warning\n\t\t\t\t\t}\n\t\t\t\t\tonChange={ ( selection ) => {\n\t\t\t\t\t\tonChange(\n\t\t\t\t\t\t\tgetNewPresetValue(\n\t\t\t\t\t\t\t\tselection.selectedItem.key,\n\t\t\t\t\t\t\t\t'selectList'\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\toptions={ options }\n\t\t\t\t\tlabel={ ariaLabel }\n\t\t\t\t\thideLabelFromVision={ true }\n\t\t\t\t\t__nextUnconstrainedWidth={ true }\n\t\t\t\t\tsize={ '__unstable-large' }\n\t\t\t\t\tonMouseOver={ onMouseOver }\n\t\t\t\t\tonMouseOut={ onMouseOut }\n\t\t\t\t\tonFocus={ onMouseOver }\n\t\t\t\t\tonBlur={ onMouseOut }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n"]}
@@ -73,7 +73,7 @@ export const withInspectorControl = createHigherOrderComponent(BlockEdit => {
73
73
  className: "html-anchor-control",
74
74
  label: __('HTML anchor'),
75
75
  help: createElement(Fragment, null, __('Enter a word or two — without spaces — to make a unique web address just for this block, called an “anchor.” Then, you’ll be able to link directly to this section of your page.'), isWeb && createElement(ExternalLink, {
76
- href: __('https://wordpress.org/support/article/page-jumps/')
76
+ href: __('https://wordpress.org/documentation/article/page-jumps/')
77
77
  }, __('Learn more about anchors'))),
78
78
  value: props.attributes.anchor || '',
79
79
  placeholder: !isWeb ? __('Add an anchor') : null,
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/hooks/anchor.js"],"names":["addFilter","PanelBody","TextControl","ExternalLink","__","hasBlockSupport","createHigherOrderComponent","Platform","InspectorControls","ANCHOR_REGEX","ANCHOR_SCHEMA","type","source","attribute","selector","addAttribute","settings","attributes","anchor","withInspectorControl","BlockEdit","props","hasAnchor","name","isSelected","isWeb","OS","textControl","nextValue","replace","setAttributes","addSaveProps","extraProps","blockType","id"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { addFilter } from '@wordpress/hooks';\nimport { PanelBody, TextControl, ExternalLink } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { hasBlockSupport } from '@wordpress/blocks';\nimport { createHigherOrderComponent } from '@wordpress/compose';\nimport { Platform } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { InspectorControls } from '../components';\n\n/**\n * Regular expression matching invalid anchor characters for replacement.\n *\n * @type {RegExp}\n */\nconst ANCHOR_REGEX = /[\\s#]/g;\n\nconst ANCHOR_SCHEMA = {\n\ttype: 'string',\n\tsource: 'attribute',\n\tattribute: 'id',\n\tselector: '*',\n};\n\n/**\n * Filters registered block settings, extending attributes with anchor using ID\n * of the first node.\n *\n * @param {Object} settings Original block settings.\n *\n * @return {Object} Filtered block settings.\n */\nexport function addAttribute( settings ) {\n\t// Allow blocks to specify their own attribute definition with default values if needed.\n\tif ( 'type' in ( settings.attributes?.anchor ?? {} ) ) {\n\t\treturn settings;\n\t}\n\tif ( hasBlockSupport( settings, 'anchor' ) ) {\n\t\t// Gracefully handle if settings.attributes is undefined.\n\t\tsettings.attributes = {\n\t\t\t...settings.attributes,\n\t\t\tanchor: ANCHOR_SCHEMA,\n\t\t};\n\t}\n\n\treturn settings;\n}\n\n/**\n * Override the default edit UI to include a new block inspector control for\n * assigning the anchor ID, if block supports anchor.\n *\n * @param {WPComponent} BlockEdit Original component.\n *\n * @return {WPComponent} Wrapped component.\n */\nexport const withInspectorControl = createHigherOrderComponent(\n\t( BlockEdit ) => {\n\t\treturn ( props ) => {\n\t\t\tconst hasAnchor = hasBlockSupport( props.name, 'anchor' );\n\n\t\t\tif ( hasAnchor && props.isSelected ) {\n\t\t\t\tconst isWeb = Platform.OS === 'web';\n\t\t\t\tconst textControl = (\n\t\t\t\t\t<TextControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\tclassName=\"html-anchor-control\"\n\t\t\t\t\t\tlabel={ __( 'HTML anchor' ) }\n\t\t\t\t\t\thelp={\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t\t'Enter a word or two — without spaces — to make a unique web address just for this block, called an “anchor.” Then, you’ll be able to link directly to this section of your page.'\n\t\t\t\t\t\t\t\t) }\n\n\t\t\t\t\t\t\t\t{ isWeb && (\n\t\t\t\t\t\t\t\t\t<ExternalLink\n\t\t\t\t\t\t\t\t\t\thref={ __(\n\t\t\t\t\t\t\t\t\t\t\t'https://wordpress.org/support/article/page-jumps/'\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Learn more about anchors' ) }\n\t\t\t\t\t\t\t\t\t</ExternalLink>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvalue={ props.attributes.anchor || '' }\n\t\t\t\t\t\tplaceholder={ ! isWeb ? __( 'Add an anchor' ) : null }\n\t\t\t\t\t\tonChange={ ( nextValue ) => {\n\t\t\t\t\t\t\tnextValue = nextValue.replace( ANCHOR_REGEX, '-' );\n\t\t\t\t\t\t\tprops.setAttributes( {\n\t\t\t\t\t\t\t\tanchor: nextValue,\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tautoCapitalize=\"none\"\n\t\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\t/>\n\t\t\t\t);\n\n\t\t\t\treturn (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<BlockEdit { ...props } />\n\t\t\t\t\t\t{ isWeb && (\n\t\t\t\t\t\t\t<InspectorControls group=\"advanced\">\n\t\t\t\t\t\t\t\t{ textControl }\n\t\t\t\t\t\t\t</InspectorControls>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ /*\n\t\t\t\t\t\t * We plan to remove scoping anchors to 'core/heading' to support\n\t\t\t\t\t\t * anchors for all eligble blocks. Additionally we plan to explore\n\t\t\t\t\t\t * leveraging InspectorAdvancedControls instead of a custom\n\t\t\t\t\t\t * PanelBody title. https://github.com/WordPress/gutenberg/issues/28363\n\t\t\t\t\t\t */ }\n\t\t\t\t\t\t{ ! isWeb && props.name === 'core/heading' && (\n\t\t\t\t\t\t\t<InspectorControls>\n\t\t\t\t\t\t\t\t<PanelBody title={ __( 'Heading settings' ) }>\n\t\t\t\t\t\t\t\t\t{ textControl }\n\t\t\t\t\t\t\t\t</PanelBody>\n\t\t\t\t\t\t\t</InspectorControls>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</>\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn <BlockEdit { ...props } />;\n\t\t};\n\t},\n\t'withInspectorControl'\n);\n\n/**\n * Override props assigned to save component to inject anchor ID, if block\n * supports anchor. This is only applied if the block's save result is an\n * element and not a markup string.\n *\n * @param {Object} extraProps Additional props applied to save element.\n * @param {Object} blockType Block type.\n * @param {Object} attributes Current block attributes.\n *\n * @return {Object} Filtered props applied to save element.\n */\nexport function addSaveProps( extraProps, blockType, attributes ) {\n\tif ( hasBlockSupport( blockType, 'anchor' ) ) {\n\t\textraProps.id = attributes.anchor === '' ? null : attributes.anchor;\n\t}\n\n\treturn extraProps;\n}\n\naddFilter( 'blocks.registerBlockType', 'core/anchor/attribute', addAttribute );\naddFilter(\n\t'editor.BlockEdit',\n\t'core/editor/anchor/with-inspector-control',\n\twithInspectorControl\n);\naddFilter(\n\t'blocks.getSaveContent.extraProps',\n\t'core/anchor/save-props',\n\taddSaveProps\n);\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/hooks/anchor.js"],"names":["addFilter","PanelBody","TextControl","ExternalLink","__","hasBlockSupport","createHigherOrderComponent","Platform","InspectorControls","ANCHOR_REGEX","ANCHOR_SCHEMA","type","source","attribute","selector","addAttribute","settings","attributes","anchor","withInspectorControl","BlockEdit","props","hasAnchor","name","isSelected","isWeb","OS","textControl","nextValue","replace","setAttributes","addSaveProps","extraProps","blockType","id"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { addFilter } from '@wordpress/hooks';\nimport { PanelBody, TextControl, ExternalLink } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { hasBlockSupport } from '@wordpress/blocks';\nimport { createHigherOrderComponent } from '@wordpress/compose';\nimport { Platform } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { InspectorControls } from '../components';\n\n/**\n * Regular expression matching invalid anchor characters for replacement.\n *\n * @type {RegExp}\n */\nconst ANCHOR_REGEX = /[\\s#]/g;\n\nconst ANCHOR_SCHEMA = {\n\ttype: 'string',\n\tsource: 'attribute',\n\tattribute: 'id',\n\tselector: '*',\n};\n\n/**\n * Filters registered block settings, extending attributes with anchor using ID\n * of the first node.\n *\n * @param {Object} settings Original block settings.\n *\n * @return {Object} Filtered block settings.\n */\nexport function addAttribute( settings ) {\n\t// Allow blocks to specify their own attribute definition with default values if needed.\n\tif ( 'type' in ( settings.attributes?.anchor ?? {} ) ) {\n\t\treturn settings;\n\t}\n\tif ( hasBlockSupport( settings, 'anchor' ) ) {\n\t\t// Gracefully handle if settings.attributes is undefined.\n\t\tsettings.attributes = {\n\t\t\t...settings.attributes,\n\t\t\tanchor: ANCHOR_SCHEMA,\n\t\t};\n\t}\n\n\treturn settings;\n}\n\n/**\n * Override the default edit UI to include a new block inspector control for\n * assigning the anchor ID, if block supports anchor.\n *\n * @param {WPComponent} BlockEdit Original component.\n *\n * @return {WPComponent} Wrapped component.\n */\nexport const withInspectorControl = createHigherOrderComponent(\n\t( BlockEdit ) => {\n\t\treturn ( props ) => {\n\t\t\tconst hasAnchor = hasBlockSupport( props.name, 'anchor' );\n\n\t\t\tif ( hasAnchor && props.isSelected ) {\n\t\t\t\tconst isWeb = Platform.OS === 'web';\n\t\t\t\tconst textControl = (\n\t\t\t\t\t<TextControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\tclassName=\"html-anchor-control\"\n\t\t\t\t\t\tlabel={ __( 'HTML anchor' ) }\n\t\t\t\t\t\thelp={\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t\t'Enter a word or two — without spaces — to make a unique web address just for this block, called an “anchor.” Then, you’ll be able to link directly to this section of your page.'\n\t\t\t\t\t\t\t\t) }\n\n\t\t\t\t\t\t\t\t{ isWeb && (\n\t\t\t\t\t\t\t\t\t<ExternalLink\n\t\t\t\t\t\t\t\t\t\thref={ __(\n\t\t\t\t\t\t\t\t\t\t\t'https://wordpress.org/documentation/article/page-jumps/'\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Learn more about anchors' ) }\n\t\t\t\t\t\t\t\t\t</ExternalLink>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvalue={ props.attributes.anchor || '' }\n\t\t\t\t\t\tplaceholder={ ! isWeb ? __( 'Add an anchor' ) : null }\n\t\t\t\t\t\tonChange={ ( nextValue ) => {\n\t\t\t\t\t\t\tnextValue = nextValue.replace( ANCHOR_REGEX, '-' );\n\t\t\t\t\t\t\tprops.setAttributes( {\n\t\t\t\t\t\t\t\tanchor: nextValue,\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tautoCapitalize=\"none\"\n\t\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\t/>\n\t\t\t\t);\n\n\t\t\t\treturn (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<BlockEdit { ...props } />\n\t\t\t\t\t\t{ isWeb && (\n\t\t\t\t\t\t\t<InspectorControls group=\"advanced\">\n\t\t\t\t\t\t\t\t{ textControl }\n\t\t\t\t\t\t\t</InspectorControls>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ /*\n\t\t\t\t\t\t * We plan to remove scoping anchors to 'core/heading' to support\n\t\t\t\t\t\t * anchors for all eligble blocks. Additionally we plan to explore\n\t\t\t\t\t\t * leveraging InspectorAdvancedControls instead of a custom\n\t\t\t\t\t\t * PanelBody title. https://github.com/WordPress/gutenberg/issues/28363\n\t\t\t\t\t\t */ }\n\t\t\t\t\t\t{ ! isWeb && props.name === 'core/heading' && (\n\t\t\t\t\t\t\t<InspectorControls>\n\t\t\t\t\t\t\t\t<PanelBody title={ __( 'Heading settings' ) }>\n\t\t\t\t\t\t\t\t\t{ textControl }\n\t\t\t\t\t\t\t\t</PanelBody>\n\t\t\t\t\t\t\t</InspectorControls>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</>\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn <BlockEdit { ...props } />;\n\t\t};\n\t},\n\t'withInspectorControl'\n);\n\n/**\n * Override props assigned to save component to inject anchor ID, if block\n * supports anchor. This is only applied if the block's save result is an\n * element and not a markup string.\n *\n * @param {Object} extraProps Additional props applied to save element.\n * @param {Object} blockType Block type.\n * @param {Object} attributes Current block attributes.\n *\n * @return {Object} Filtered props applied to save element.\n */\nexport function addSaveProps( extraProps, blockType, attributes ) {\n\tif ( hasBlockSupport( blockType, 'anchor' ) ) {\n\t\textraProps.id = attributes.anchor === '' ? null : attributes.anchor;\n\t}\n\n\treturn extraProps;\n}\n\naddFilter( 'blocks.registerBlockType', 'core/anchor/attribute', addAttribute );\naddFilter(\n\t'editor.BlockEdit',\n\t'core/editor/anchor/with-inspector-control',\n\twithInspectorControl\n);\naddFilter(\n\t'blocks.getSaveContent.extraProps',\n\t'core/anchor/save-props',\n\taddSaveProps\n);\n"]}
@@ -89,7 +89,7 @@ function styleToAttributes(style) {
89
89
  }
90
90
 
91
91
  const borderColorValue = style === null || style === void 0 ? void 0 : (_style$border = style.border) === null || _style$border === void 0 ? void 0 : _style$border.color;
92
- const borderColorSlug = borderColorValue !== null && borderColorValue !== void 0 && borderColorValue.startsWith('var:preset|color|') ? borderColorSlug.substring('var:preset|color|'.length) : undefined;
92
+ const borderColorSlug = borderColorValue !== null && borderColorValue !== void 0 && borderColorValue.startsWith('var:preset|color|') ? borderColorValue.substring('var:preset|color|'.length) : undefined;
93
93
  const updatedStyle = { ...style
94
94
  };
95
95
  updatedStyle.border = { ...updatedStyle.border,
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/hooks/border.js"],"names":["classnames","getBlockSupport","__experimentalHasSplitBorders","hasSplitBorders","createHigherOrderComponent","Platform","useCallback","useMemo","addFilter","getColorClassName","InspectorControls","useMultipleOriginColorsAndGradients","cleanEmptyObject","shouldSkipSerialization","useBlockSettings","useHasBorderPanel","BorderPanel","StylesBorderPanel","BORDER_SUPPORT_KEY","getColorByProperty","colors","property","value","matchedColor","some","origin","color","getMultiOriginColor","namedColor","customColor","colorObject","undefined","getColorSlugFromVariable","exec","styleToAttributes","style","border","borderColor","borderColorValue","borderColorSlug","startsWith","substring","length","updatedStyle","attributesToStyle","attributes","BordersInspectorControl","children","resetAllFilter","attributesResetAllFilter","existingStyle","props","clientId","name","setAttributes","settings","isEnabled","onChange","newStyle","defaultControls","hasBorderSupport","blockName","feature","OS","support","radius","width","removeBorderAttribute","attribute","addAttributes","type","addSaveProps","blockType","borderClasses","getBorderClasses","newClassName","className","borderColorClass","addEditProps","existingGetEditWrapperProps","getEditWrapperProps","withBorderColorPaletteStyles","BlockListBlock","borderTopColor","top","borderRightColor","right","borderBottomColor","bottom","borderLeftColor","left","extraStyles","wrapperProps"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { getBlockSupport } from '@wordpress/blocks';\nimport { __experimentalHasSplitBorders as hasSplitBorders } from '@wordpress/components';\nimport { createHigherOrderComponent } from '@wordpress/compose';\nimport { Platform, useCallback, useMemo } from '@wordpress/element';\nimport { addFilter } from '@wordpress/hooks';\n\n/**\n * Internal dependencies\n */\nimport { getColorClassName } from '../components/colors';\nimport InspectorControls from '../components/inspector-controls';\nimport useMultipleOriginColorsAndGradients from '../components/colors-gradients/use-multiple-origin-colors-and-gradients';\nimport {\n\tcleanEmptyObject,\n\tshouldSkipSerialization,\n\tuseBlockSettings,\n} from './utils';\nimport {\n\tuseHasBorderPanel,\n\tBorderPanel as StylesBorderPanel,\n} from '../components/global-styles';\n\nexport const BORDER_SUPPORT_KEY = '__experimentalBorder';\n\nconst getColorByProperty = ( colors, property, value ) => {\n\tlet matchedColor;\n\n\tcolors.some( ( origin ) =>\n\t\torigin.colors.some( ( color ) => {\n\t\t\tif ( color[ property ] === value ) {\n\t\t\t\tmatchedColor = color;\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\treturn false;\n\t\t} )\n\t);\n\n\treturn matchedColor;\n};\n\nexport const getMultiOriginColor = ( { colors, namedColor, customColor } ) => {\n\t// Search each origin (default, theme, or user) for matching color by name.\n\tif ( namedColor ) {\n\t\tconst colorObject = getColorByProperty( colors, 'slug', namedColor );\n\t\tif ( colorObject ) {\n\t\t\treturn colorObject;\n\t\t}\n\t}\n\n\t// Skip if no custom color or matching named color.\n\tif ( ! customColor ) {\n\t\treturn { color: undefined };\n\t}\n\n\t// Attempt to find color via custom color value or build new object.\n\tconst colorObject = getColorByProperty( colors, 'color', customColor );\n\treturn colorObject ? colorObject : { color: customColor };\n};\n\nfunction getColorSlugFromVariable( value ) {\n\tconst namedColor = /var:preset\\|color\\|(.+)/.exec( value );\n\tif ( namedColor && namedColor[ 1 ] ) {\n\t\treturn namedColor[ 1 ];\n\t}\n\treturn null;\n}\n\nfunction styleToAttributes( style ) {\n\tif ( hasSplitBorders( style?.border ) ) {\n\t\treturn {\n\t\t\tstyle,\n\t\t\tborderColor: undefined,\n\t\t};\n\t}\n\n\tconst borderColorValue = style?.border?.color;\n\tconst borderColorSlug = borderColorValue?.startsWith( 'var:preset|color|' )\n\t\t? borderColorSlug.substring( 'var:preset|color|'.length )\n\t\t: undefined;\n\tconst updatedStyle = { ...style };\n\tupdatedStyle.border = {\n\t\t...updatedStyle.border,\n\t\tcolor: borderColorSlug ? undefined : borderColorValue,\n\t};\n\treturn {\n\t\tstyle: cleanEmptyObject( updatedStyle ),\n\t\tborderColor: borderColorSlug,\n\t};\n}\n\nfunction attributesToStyle( attributes ) {\n\tif ( hasSplitBorders( attributes.style?.border ) ) {\n\t\treturn attributes.style;\n\t}\n\treturn {\n\t\t...attributes.style,\n\t\tborder: {\n\t\t\t...attributes.style?.border,\n\t\t\tcolor: attributes.borderColor\n\t\t\t\t? 'var:preset|color|' + attributes.borderColor\n\t\t\t\t: attributes.style?.border?.color,\n\t\t},\n\t};\n}\n\nfunction BordersInspectorControl( { children, resetAllFilter } ) {\n\tconst attributesResetAllFilter = useCallback(\n\t\t( attributes ) => {\n\t\t\tconst existingStyle = attributesToStyle( attributes );\n\t\t\tconst updatedStyle = resetAllFilter( existingStyle );\n\t\t\treturn {\n\t\t\t\t...attributes,\n\t\t\t\t...styleToAttributes( updatedStyle ),\n\t\t\t};\n\t\t},\n\t\t[ resetAllFilter ]\n\t);\n\n\treturn (\n\t\t<InspectorControls\n\t\t\tgroup=\"border\"\n\t\t\tresetAllFilter={ attributesResetAllFilter }\n\t\t>\n\t\t\t{ children }\n\t\t</InspectorControls>\n\t);\n}\n\nexport function BorderPanel( props ) {\n\tconst { clientId, name, attributes, setAttributes } = props;\n\tconst settings = useBlockSettings( name );\n\tconst isEnabled = useHasBorderPanel( settings );\n\tconst value = useMemo( () => {\n\t\treturn attributesToStyle( {\n\t\t\tstyle: attributes.style,\n\t\t\tborderColor: attributes.borderColor,\n\t\t} );\n\t}, [ attributes.style, attributes.borderColor ] );\n\n\tconst onChange = ( newStyle ) => {\n\t\tsetAttributes( styleToAttributes( newStyle ) );\n\t};\n\n\tif ( ! isEnabled ) {\n\t\treturn null;\n\t}\n\n\tconst defaultControls = getBlockSupport( props.name, [\n\t\tBORDER_SUPPORT_KEY,\n\t\t'__experimentalDefaultControls',\n\t] );\n\n\treturn (\n\t\t<StylesBorderPanel\n\t\t\tas={ BordersInspectorControl }\n\t\t\tpanelId={ clientId }\n\t\t\tsettings={ settings }\n\t\t\tvalue={ value }\n\t\t\tonChange={ onChange }\n\t\t\tdefaultControls={ defaultControls }\n\t\t/>\n\t);\n}\n\n/**\n * Determine whether there is block support for border properties.\n *\n * @param {string} blockName Block name.\n * @param {string} feature Border feature to check support for.\n *\n * @return {boolean} Whether there is support.\n */\nexport function hasBorderSupport( blockName, feature = 'any' ) {\n\tif ( Platform.OS !== 'web' ) {\n\t\treturn false;\n\t}\n\n\tconst support = getBlockSupport( blockName, BORDER_SUPPORT_KEY );\n\n\tif ( support === true ) {\n\t\treturn true;\n\t}\n\n\tif ( feature === 'any' ) {\n\t\treturn !! (\n\t\t\tsupport?.color ||\n\t\t\tsupport?.radius ||\n\t\t\tsupport?.width ||\n\t\t\tsupport?.style\n\t\t);\n\t}\n\n\treturn !! support?.[ feature ];\n}\n\n/**\n * Returns a new style object where the specified border attribute has been\n * removed.\n *\n * @param {Object} style Styles from block attributes.\n * @param {string} attribute The border style attribute to clear.\n *\n * @return {Object} Style object with the specified attribute removed.\n */\nexport function removeBorderAttribute( style, attribute ) {\n\treturn cleanEmptyObject( {\n\t\t...style,\n\t\tborder: {\n\t\t\t...style?.border,\n\t\t\t[ attribute ]: undefined,\n\t\t},\n\t} );\n}\n\n/**\n * Filters registered block settings, extending attributes to include\n * `borderColor` if needed.\n *\n * @param {Object} settings Original block settings.\n *\n * @return {Object} Updated block settings.\n */\nfunction addAttributes( settings ) {\n\tif ( ! hasBorderSupport( settings, 'color' ) ) {\n\t\treturn settings;\n\t}\n\n\t// Allow blocks to specify default value if needed.\n\tif ( settings.attributes.borderColor ) {\n\t\treturn settings;\n\t}\n\n\t// Add new borderColor attribute to block settings.\n\treturn {\n\t\t...settings,\n\t\tattributes: {\n\t\t\t...settings.attributes,\n\t\t\tborderColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t},\n\t};\n}\n\n/**\n * Override props assigned to save component to inject border color.\n *\n * @param {Object} props Additional props applied to save element.\n * @param {Object} blockType Block type definition.\n * @param {Object} attributes Block's attributes.\n *\n * @return {Object} Filtered props to apply to save element.\n */\nfunction addSaveProps( props, blockType, attributes ) {\n\tif (\n\t\t! hasBorderSupport( blockType, 'color' ) ||\n\t\tshouldSkipSerialization( blockType, BORDER_SUPPORT_KEY, 'color' )\n\t) {\n\t\treturn props;\n\t}\n\n\tconst borderClasses = getBorderClasses( attributes );\n\tconst newClassName = classnames( props.className, borderClasses );\n\n\t// If we are clearing the last of the previous classes in `className`\n\t// set it to `undefined` to avoid rendering empty DOM attributes.\n\tprops.className = newClassName ? newClassName : undefined;\n\n\treturn props;\n}\n\n/**\n * Generates a CSS class name consisting of all the applicable border color\n * classes given the current block attributes.\n *\n * @param {Object} attributes Block's attributes.\n *\n * @return {string} CSS class name.\n */\nexport function getBorderClasses( attributes ) {\n\tconst { borderColor, style } = attributes;\n\tconst borderColorClass = getColorClassName( 'border-color', borderColor );\n\n\treturn classnames( {\n\t\t'has-border-color': borderColor || style?.border?.color,\n\t\t[ borderColorClass ]: !! borderColorClass,\n\t} );\n}\n\n/**\n * Filters the registered block settings to apply border color styles and\n * classnames to the block edit wrapper.\n *\n * @param {Object} settings Original block settings.\n *\n * @return {Object} Filtered block settings.\n */\nfunction addEditProps( settings ) {\n\tif (\n\t\t! hasBorderSupport( settings, 'color' ) ||\n\t\tshouldSkipSerialization( settings, BORDER_SUPPORT_KEY, 'color' )\n\t) {\n\t\treturn settings;\n\t}\n\n\tconst existingGetEditWrapperProps = settings.getEditWrapperProps;\n\tsettings.getEditWrapperProps = ( attributes ) => {\n\t\tlet props = {};\n\n\t\tif ( existingGetEditWrapperProps ) {\n\t\t\tprops = existingGetEditWrapperProps( attributes );\n\t\t}\n\n\t\treturn addSaveProps( props, settings, attributes );\n\t};\n\n\treturn settings;\n}\n\n/**\n * This adds inline styles for color palette colors.\n * Ideally, this is not needed and themes should load their palettes on the editor.\n *\n * @param {Function} BlockListBlock Original component.\n *\n * @return {Function} Wrapped component.\n */\nexport const withBorderColorPaletteStyles = createHigherOrderComponent(\n\t( BlockListBlock ) => ( props ) => {\n\t\tconst { name, attributes } = props;\n\t\tconst { borderColor, style } = attributes;\n\t\tconst { colors } = useMultipleOriginColorsAndGradients();\n\n\t\tif (\n\t\t\t! hasBorderSupport( name, 'color' ) ||\n\t\t\tshouldSkipSerialization( name, BORDER_SUPPORT_KEY, 'color' )\n\t\t) {\n\t\t\treturn <BlockListBlock { ...props } />;\n\t\t}\n\n\t\tconst { color: borderColorValue } = getMultiOriginColor( {\n\t\t\tcolors,\n\t\t\tnamedColor: borderColor,\n\t\t} );\n\t\tconst { color: borderTopColor } = getMultiOriginColor( {\n\t\t\tcolors,\n\t\t\tnamedColor: getColorSlugFromVariable( style?.border?.top?.color ),\n\t\t} );\n\t\tconst { color: borderRightColor } = getMultiOriginColor( {\n\t\t\tcolors,\n\t\t\tnamedColor: getColorSlugFromVariable( style?.border?.right?.color ),\n\t\t} );\n\n\t\tconst { color: borderBottomColor } = getMultiOriginColor( {\n\t\t\tcolors,\n\t\t\tnamedColor: getColorSlugFromVariable(\n\t\t\t\tstyle?.border?.bottom?.color\n\t\t\t),\n\t\t} );\n\t\tconst { color: borderLeftColor } = getMultiOriginColor( {\n\t\t\tcolors,\n\t\t\tnamedColor: getColorSlugFromVariable( style?.border?.left?.color ),\n\t\t} );\n\n\t\tconst extraStyles = {\n\t\t\tborderTopColor: borderTopColor || borderColorValue,\n\t\t\tborderRightColor: borderRightColor || borderColorValue,\n\t\t\tborderBottomColor: borderBottomColor || borderColorValue,\n\t\t\tborderLeftColor: borderLeftColor || borderColorValue,\n\t\t};\n\n\t\tlet wrapperProps = props.wrapperProps;\n\t\twrapperProps = {\n\t\t\t...props.wrapperProps,\n\t\t\tstyle: {\n\t\t\t\t...props.wrapperProps?.style,\n\t\t\t\t...extraStyles,\n\t\t\t},\n\t\t};\n\n\t\treturn <BlockListBlock { ...props } wrapperProps={ wrapperProps } />;\n\t}\n);\n\naddFilter(\n\t'blocks.registerBlockType',\n\t'core/border/addAttributes',\n\taddAttributes\n);\n\naddFilter(\n\t'blocks.getSaveContent.extraProps',\n\t'core/border/addSaveProps',\n\taddSaveProps\n);\n\naddFilter(\n\t'blocks.registerBlockType',\n\t'core/border/addEditProps',\n\taddEditProps\n);\n\naddFilter(\n\t'editor.BlockListBlock',\n\t'core/border/with-border-color-palette-styles',\n\twithBorderColorPaletteStyles\n);\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/hooks/border.js"],"names":["classnames","getBlockSupport","__experimentalHasSplitBorders","hasSplitBorders","createHigherOrderComponent","Platform","useCallback","useMemo","addFilter","getColorClassName","InspectorControls","useMultipleOriginColorsAndGradients","cleanEmptyObject","shouldSkipSerialization","useBlockSettings","useHasBorderPanel","BorderPanel","StylesBorderPanel","BORDER_SUPPORT_KEY","getColorByProperty","colors","property","value","matchedColor","some","origin","color","getMultiOriginColor","namedColor","customColor","colorObject","undefined","getColorSlugFromVariable","exec","styleToAttributes","style","border","borderColor","borderColorValue","borderColorSlug","startsWith","substring","length","updatedStyle","attributesToStyle","attributes","BordersInspectorControl","children","resetAllFilter","attributesResetAllFilter","existingStyle","props","clientId","name","setAttributes","settings","isEnabled","onChange","newStyle","defaultControls","hasBorderSupport","blockName","feature","OS","support","radius","width","removeBorderAttribute","attribute","addAttributes","type","addSaveProps","blockType","borderClasses","getBorderClasses","newClassName","className","borderColorClass","addEditProps","existingGetEditWrapperProps","getEditWrapperProps","withBorderColorPaletteStyles","BlockListBlock","borderTopColor","top","borderRightColor","right","borderBottomColor","bottom","borderLeftColor","left","extraStyles","wrapperProps"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { getBlockSupport } from '@wordpress/blocks';\nimport { __experimentalHasSplitBorders as hasSplitBorders } from '@wordpress/components';\nimport { createHigherOrderComponent } from '@wordpress/compose';\nimport { Platform, useCallback, useMemo } from '@wordpress/element';\nimport { addFilter } from '@wordpress/hooks';\n\n/**\n * Internal dependencies\n */\nimport { getColorClassName } from '../components/colors';\nimport InspectorControls from '../components/inspector-controls';\nimport useMultipleOriginColorsAndGradients from '../components/colors-gradients/use-multiple-origin-colors-and-gradients';\nimport {\n\tcleanEmptyObject,\n\tshouldSkipSerialization,\n\tuseBlockSettings,\n} from './utils';\nimport {\n\tuseHasBorderPanel,\n\tBorderPanel as StylesBorderPanel,\n} from '../components/global-styles';\n\nexport const BORDER_SUPPORT_KEY = '__experimentalBorder';\n\nconst getColorByProperty = ( colors, property, value ) => {\n\tlet matchedColor;\n\n\tcolors.some( ( origin ) =>\n\t\torigin.colors.some( ( color ) => {\n\t\t\tif ( color[ property ] === value ) {\n\t\t\t\tmatchedColor = color;\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\treturn false;\n\t\t} )\n\t);\n\n\treturn matchedColor;\n};\n\nexport const getMultiOriginColor = ( { colors, namedColor, customColor } ) => {\n\t// Search each origin (default, theme, or user) for matching color by name.\n\tif ( namedColor ) {\n\t\tconst colorObject = getColorByProperty( colors, 'slug', namedColor );\n\t\tif ( colorObject ) {\n\t\t\treturn colorObject;\n\t\t}\n\t}\n\n\t// Skip if no custom color or matching named color.\n\tif ( ! customColor ) {\n\t\treturn { color: undefined };\n\t}\n\n\t// Attempt to find color via custom color value or build new object.\n\tconst colorObject = getColorByProperty( colors, 'color', customColor );\n\treturn colorObject ? colorObject : { color: customColor };\n};\n\nfunction getColorSlugFromVariable( value ) {\n\tconst namedColor = /var:preset\\|color\\|(.+)/.exec( value );\n\tif ( namedColor && namedColor[ 1 ] ) {\n\t\treturn namedColor[ 1 ];\n\t}\n\treturn null;\n}\n\nfunction styleToAttributes( style ) {\n\tif ( hasSplitBorders( style?.border ) ) {\n\t\treturn {\n\t\t\tstyle,\n\t\t\tborderColor: undefined,\n\t\t};\n\t}\n\n\tconst borderColorValue = style?.border?.color;\n\tconst borderColorSlug = borderColorValue?.startsWith( 'var:preset|color|' )\n\t\t? borderColorValue.substring( 'var:preset|color|'.length )\n\t\t: undefined;\n\tconst updatedStyle = { ...style };\n\tupdatedStyle.border = {\n\t\t...updatedStyle.border,\n\t\tcolor: borderColorSlug ? undefined : borderColorValue,\n\t};\n\treturn {\n\t\tstyle: cleanEmptyObject( updatedStyle ),\n\t\tborderColor: borderColorSlug,\n\t};\n}\n\nfunction attributesToStyle( attributes ) {\n\tif ( hasSplitBorders( attributes.style?.border ) ) {\n\t\treturn attributes.style;\n\t}\n\treturn {\n\t\t...attributes.style,\n\t\tborder: {\n\t\t\t...attributes.style?.border,\n\t\t\tcolor: attributes.borderColor\n\t\t\t\t? 'var:preset|color|' + attributes.borderColor\n\t\t\t\t: attributes.style?.border?.color,\n\t\t},\n\t};\n}\n\nfunction BordersInspectorControl( { children, resetAllFilter } ) {\n\tconst attributesResetAllFilter = useCallback(\n\t\t( attributes ) => {\n\t\t\tconst existingStyle = attributesToStyle( attributes );\n\t\t\tconst updatedStyle = resetAllFilter( existingStyle );\n\t\t\treturn {\n\t\t\t\t...attributes,\n\t\t\t\t...styleToAttributes( updatedStyle ),\n\t\t\t};\n\t\t},\n\t\t[ resetAllFilter ]\n\t);\n\n\treturn (\n\t\t<InspectorControls\n\t\t\tgroup=\"border\"\n\t\t\tresetAllFilter={ attributesResetAllFilter }\n\t\t>\n\t\t\t{ children }\n\t\t</InspectorControls>\n\t);\n}\n\nexport function BorderPanel( props ) {\n\tconst { clientId, name, attributes, setAttributes } = props;\n\tconst settings = useBlockSettings( name );\n\tconst isEnabled = useHasBorderPanel( settings );\n\tconst value = useMemo( () => {\n\t\treturn attributesToStyle( {\n\t\t\tstyle: attributes.style,\n\t\t\tborderColor: attributes.borderColor,\n\t\t} );\n\t}, [ attributes.style, attributes.borderColor ] );\n\n\tconst onChange = ( newStyle ) => {\n\t\tsetAttributes( styleToAttributes( newStyle ) );\n\t};\n\n\tif ( ! isEnabled ) {\n\t\treturn null;\n\t}\n\n\tconst defaultControls = getBlockSupport( props.name, [\n\t\tBORDER_SUPPORT_KEY,\n\t\t'__experimentalDefaultControls',\n\t] );\n\n\treturn (\n\t\t<StylesBorderPanel\n\t\t\tas={ BordersInspectorControl }\n\t\t\tpanelId={ clientId }\n\t\t\tsettings={ settings }\n\t\t\tvalue={ value }\n\t\t\tonChange={ onChange }\n\t\t\tdefaultControls={ defaultControls }\n\t\t/>\n\t);\n}\n\n/**\n * Determine whether there is block support for border properties.\n *\n * @param {string} blockName Block name.\n * @param {string} feature Border feature to check support for.\n *\n * @return {boolean} Whether there is support.\n */\nexport function hasBorderSupport( blockName, feature = 'any' ) {\n\tif ( Platform.OS !== 'web' ) {\n\t\treturn false;\n\t}\n\n\tconst support = getBlockSupport( blockName, BORDER_SUPPORT_KEY );\n\n\tif ( support === true ) {\n\t\treturn true;\n\t}\n\n\tif ( feature === 'any' ) {\n\t\treturn !! (\n\t\t\tsupport?.color ||\n\t\t\tsupport?.radius ||\n\t\t\tsupport?.width ||\n\t\t\tsupport?.style\n\t\t);\n\t}\n\n\treturn !! support?.[ feature ];\n}\n\n/**\n * Returns a new style object where the specified border attribute has been\n * removed.\n *\n * @param {Object} style Styles from block attributes.\n * @param {string} attribute The border style attribute to clear.\n *\n * @return {Object} Style object with the specified attribute removed.\n */\nexport function removeBorderAttribute( style, attribute ) {\n\treturn cleanEmptyObject( {\n\t\t...style,\n\t\tborder: {\n\t\t\t...style?.border,\n\t\t\t[ attribute ]: undefined,\n\t\t},\n\t} );\n}\n\n/**\n * Filters registered block settings, extending attributes to include\n * `borderColor` if needed.\n *\n * @param {Object} settings Original block settings.\n *\n * @return {Object} Updated block settings.\n */\nfunction addAttributes( settings ) {\n\tif ( ! hasBorderSupport( settings, 'color' ) ) {\n\t\treturn settings;\n\t}\n\n\t// Allow blocks to specify default value if needed.\n\tif ( settings.attributes.borderColor ) {\n\t\treturn settings;\n\t}\n\n\t// Add new borderColor attribute to block settings.\n\treturn {\n\t\t...settings,\n\t\tattributes: {\n\t\t\t...settings.attributes,\n\t\t\tborderColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t},\n\t};\n}\n\n/**\n * Override props assigned to save component to inject border color.\n *\n * @param {Object} props Additional props applied to save element.\n * @param {Object} blockType Block type definition.\n * @param {Object} attributes Block's attributes.\n *\n * @return {Object} Filtered props to apply to save element.\n */\nfunction addSaveProps( props, blockType, attributes ) {\n\tif (\n\t\t! hasBorderSupport( blockType, 'color' ) ||\n\t\tshouldSkipSerialization( blockType, BORDER_SUPPORT_KEY, 'color' )\n\t) {\n\t\treturn props;\n\t}\n\n\tconst borderClasses = getBorderClasses( attributes );\n\tconst newClassName = classnames( props.className, borderClasses );\n\n\t// If we are clearing the last of the previous classes in `className`\n\t// set it to `undefined` to avoid rendering empty DOM attributes.\n\tprops.className = newClassName ? newClassName : undefined;\n\n\treturn props;\n}\n\n/**\n * Generates a CSS class name consisting of all the applicable border color\n * classes given the current block attributes.\n *\n * @param {Object} attributes Block's attributes.\n *\n * @return {string} CSS class name.\n */\nexport function getBorderClasses( attributes ) {\n\tconst { borderColor, style } = attributes;\n\tconst borderColorClass = getColorClassName( 'border-color', borderColor );\n\n\treturn classnames( {\n\t\t'has-border-color': borderColor || style?.border?.color,\n\t\t[ borderColorClass ]: !! borderColorClass,\n\t} );\n}\n\n/**\n * Filters the registered block settings to apply border color styles and\n * classnames to the block edit wrapper.\n *\n * @param {Object} settings Original block settings.\n *\n * @return {Object} Filtered block settings.\n */\nfunction addEditProps( settings ) {\n\tif (\n\t\t! hasBorderSupport( settings, 'color' ) ||\n\t\tshouldSkipSerialization( settings, BORDER_SUPPORT_KEY, 'color' )\n\t) {\n\t\treturn settings;\n\t}\n\n\tconst existingGetEditWrapperProps = settings.getEditWrapperProps;\n\tsettings.getEditWrapperProps = ( attributes ) => {\n\t\tlet props = {};\n\n\t\tif ( existingGetEditWrapperProps ) {\n\t\t\tprops = existingGetEditWrapperProps( attributes );\n\t\t}\n\n\t\treturn addSaveProps( props, settings, attributes );\n\t};\n\n\treturn settings;\n}\n\n/**\n * This adds inline styles for color palette colors.\n * Ideally, this is not needed and themes should load their palettes on the editor.\n *\n * @param {Function} BlockListBlock Original component.\n *\n * @return {Function} Wrapped component.\n */\nexport const withBorderColorPaletteStyles = createHigherOrderComponent(\n\t( BlockListBlock ) => ( props ) => {\n\t\tconst { name, attributes } = props;\n\t\tconst { borderColor, style } = attributes;\n\t\tconst { colors } = useMultipleOriginColorsAndGradients();\n\n\t\tif (\n\t\t\t! hasBorderSupport( name, 'color' ) ||\n\t\t\tshouldSkipSerialization( name, BORDER_SUPPORT_KEY, 'color' )\n\t\t) {\n\t\t\treturn <BlockListBlock { ...props } />;\n\t\t}\n\n\t\tconst { color: borderColorValue } = getMultiOriginColor( {\n\t\t\tcolors,\n\t\t\tnamedColor: borderColor,\n\t\t} );\n\t\tconst { color: borderTopColor } = getMultiOriginColor( {\n\t\t\tcolors,\n\t\t\tnamedColor: getColorSlugFromVariable( style?.border?.top?.color ),\n\t\t} );\n\t\tconst { color: borderRightColor } = getMultiOriginColor( {\n\t\t\tcolors,\n\t\t\tnamedColor: getColorSlugFromVariable( style?.border?.right?.color ),\n\t\t} );\n\n\t\tconst { color: borderBottomColor } = getMultiOriginColor( {\n\t\t\tcolors,\n\t\t\tnamedColor: getColorSlugFromVariable(\n\t\t\t\tstyle?.border?.bottom?.color\n\t\t\t),\n\t\t} );\n\t\tconst { color: borderLeftColor } = getMultiOriginColor( {\n\t\t\tcolors,\n\t\t\tnamedColor: getColorSlugFromVariable( style?.border?.left?.color ),\n\t\t} );\n\n\t\tconst extraStyles = {\n\t\t\tborderTopColor: borderTopColor || borderColorValue,\n\t\t\tborderRightColor: borderRightColor || borderColorValue,\n\t\t\tborderBottomColor: borderBottomColor || borderColorValue,\n\t\t\tborderLeftColor: borderLeftColor || borderColorValue,\n\t\t};\n\n\t\tlet wrapperProps = props.wrapperProps;\n\t\twrapperProps = {\n\t\t\t...props.wrapperProps,\n\t\t\tstyle: {\n\t\t\t\t...props.wrapperProps?.style,\n\t\t\t\t...extraStyles,\n\t\t\t},\n\t\t};\n\n\t\treturn <BlockListBlock { ...props } wrapperProps={ wrapperProps } />;\n\t}\n);\n\naddFilter(\n\t'blocks.registerBlockType',\n\t'core/border/addAttributes',\n\taddAttributes\n);\n\naddFilter(\n\t'blocks.getSaveContent.extraProps',\n\t'core/border/addSaveProps',\n\taddSaveProps\n);\n\naddFilter(\n\t'blocks.registerBlockType',\n\t'core/border/addEditProps',\n\taddEditProps\n);\n\naddFilter(\n\t'editor.BlockListBlock',\n\t'core/border/with-border-color-palette-styles',\n\twithBorderColorPaletteStyles\n);\n"]}