@wordpress/block-editor 14.2.1-next.1f6eadc42.0 → 14.3.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 (124) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/components/background-image-control/index.js +566 -0
  3. package/build/components/background-image-control/index.js.map +1 -0
  4. package/build/components/block-card/index.js +5 -2
  5. package/build/components/block-card/index.js.map +1 -1
  6. package/build/components/block-list/use-block-props/use-zoom-out-mode-exit.js +4 -2
  7. package/build/components/block-list/use-block-props/use-zoom-out-mode-exit.js.map +1 -1
  8. package/build/components/global-styles/background-panel.js +20 -545
  9. package/build/components/global-styles/background-panel.js.map +1 -1
  10. package/build/components/global-styles/dimensions-panel.js +3 -0
  11. package/build/components/global-styles/dimensions-panel.js.map +1 -1
  12. package/build/components/iframe/index.js +1 -0
  13. package/build/components/iframe/index.js.map +1 -1
  14. package/build/components/image-editor/use-save-image.js +6 -0
  15. package/build/components/image-editor/use-save-image.js.map +1 -1
  16. package/build/components/image-editor/use-transform-image.js +1 -0
  17. package/build/components/image-editor/use-transform-image.js.map +1 -1
  18. package/build/components/inserter/block-patterns-explorer/pattern-explorer-sidebar.js +2 -4
  19. package/build/components/inserter/block-patterns-explorer/pattern-explorer-sidebar.js.map +1 -1
  20. package/build/components/inserter/block-patterns-tab/index.js +2 -4
  21. package/build/components/inserter/block-patterns-tab/index.js.map +1 -1
  22. package/build/components/inserter/media-tab/media-preview.js +4 -8
  23. package/build/components/inserter/media-tab/media-preview.js.map +1 -1
  24. package/build/components/inserter/media-tab/media-tab.js +2 -4
  25. package/build/components/inserter/media-tab/media-tab.js.map +1 -1
  26. package/build/components/inserter/quick-inserter.js +2 -4
  27. package/build/components/inserter/quick-inserter.js.map +1 -1
  28. package/build/components/inserter-listbox/item.js +2 -4
  29. package/build/components/inserter-listbox/item.js.map +1 -1
  30. package/build/components/link-control/index.js +14 -14
  31. package/build/components/link-control/index.js.map +1 -1
  32. package/build/components/link-control/search-input.js +4 -2
  33. package/build/components/link-control/search-input.js.map +1 -1
  34. package/build/components/rich-text/index.js +10 -4
  35. package/build/components/rich-text/index.js.map +1 -1
  36. package/build/components/spacing-sizes-control/utils.js +16 -4
  37. package/build/components/spacing-sizes-control/utils.js.map +1 -1
  38. package/build/components/url-input/index.js +7 -6
  39. package/build/components/url-input/index.js.map +1 -1
  40. package/build/hooks/block-bindings.js +64 -53
  41. package/build/hooks/block-bindings.js.map +1 -1
  42. package/build/hooks/block-hooks.js +1 -8
  43. package/build/hooks/block-hooks.js.map +1 -1
  44. package/build/store/private-selectors.js +10 -0
  45. package/build/store/private-selectors.js.map +1 -1
  46. package/build-module/components/background-image-control/index.js +556 -0
  47. package/build-module/components/background-image-control/index.js.map +1 -0
  48. package/build-module/components/block-card/index.js +6 -3
  49. package/build-module/components/block-card/index.js.map +1 -1
  50. package/build-module/components/block-list/use-block-props/use-zoom-out-mode-exit.js +4 -2
  51. package/build-module/components/block-list/use-block-props/use-zoom-out-mode-exit.js.map +1 -1
  52. package/build-module/components/global-styles/background-panel.js +22 -546
  53. package/build-module/components/global-styles/background-panel.js.map +1 -1
  54. package/build-module/components/global-styles/dimensions-panel.js +3 -0
  55. package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
  56. package/build-module/components/iframe/index.js +1 -0
  57. package/build-module/components/iframe/index.js.map +1 -1
  58. package/build-module/components/image-editor/use-save-image.js +6 -0
  59. package/build-module/components/image-editor/use-save-image.js.map +1 -1
  60. package/build-module/components/image-editor/use-transform-image.js +1 -0
  61. package/build-module/components/image-editor/use-transform-image.js.map +1 -1
  62. package/build-module/components/inserter/block-patterns-explorer/pattern-explorer-sidebar.js +2 -4
  63. package/build-module/components/inserter/block-patterns-explorer/pattern-explorer-sidebar.js.map +1 -1
  64. package/build-module/components/inserter/block-patterns-tab/index.js +2 -4
  65. package/build-module/components/inserter/block-patterns-tab/index.js.map +1 -1
  66. package/build-module/components/inserter/media-tab/media-preview.js +4 -8
  67. package/build-module/components/inserter/media-tab/media-preview.js.map +1 -1
  68. package/build-module/components/inserter/media-tab/media-tab.js +2 -4
  69. package/build-module/components/inserter/media-tab/media-tab.js.map +1 -1
  70. package/build-module/components/inserter/quick-inserter.js +2 -4
  71. package/build-module/components/inserter/quick-inserter.js.map +1 -1
  72. package/build-module/components/inserter-listbox/item.js +2 -4
  73. package/build-module/components/inserter-listbox/item.js.map +1 -1
  74. package/build-module/components/link-control/index.js +15 -15
  75. package/build-module/components/link-control/index.js.map +1 -1
  76. package/build-module/components/link-control/search-input.js +4 -2
  77. package/build-module/components/link-control/search-input.js.map +1 -1
  78. package/build-module/components/rich-text/index.js +10 -4
  79. package/build-module/components/rich-text/index.js.map +1 -1
  80. package/build-module/components/spacing-sizes-control/utils.js +16 -4
  81. package/build-module/components/spacing-sizes-control/utils.js.map +1 -1
  82. package/build-module/components/url-input/index.js +8 -7
  83. package/build-module/components/url-input/index.js.map +1 -1
  84. package/build-module/hooks/block-bindings.js +64 -53
  85. package/build-module/hooks/block-bindings.js.map +1 -1
  86. package/build-module/hooks/block-hooks.js +3 -10
  87. package/build-module/hooks/block-hooks.js.map +1 -1
  88. package/build-module/store/private-selectors.js +10 -0
  89. package/build-module/store/private-selectors.js.map +1 -1
  90. package/build-style/style-rtl.css +152 -276
  91. package/build-style/style.css +152 -276
  92. package/package.json +32 -32
  93. package/src/components/background-image-control/index.js +741 -0
  94. package/src/components/background-image-control/style.scss +170 -0
  95. package/src/components/background-image-control/test/index.js +47 -0
  96. package/src/components/block-card/index.js +12 -3
  97. package/src/components/block-list/use-block-props/use-zoom-out-mode-exit.js +2 -5
  98. package/src/components/global-styles/background-panel.js +19 -730
  99. package/src/components/global-styles/dimensions-panel.js +3 -0
  100. package/src/components/global-styles/style.scss +0 -168
  101. package/src/components/global-styles/test/background-panel.js +1 -47
  102. package/src/components/image-editor/use-save-image.js +7 -0
  103. package/src/components/inserter/block-patterns-explorer/pattern-explorer-sidebar.js +1 -2
  104. package/src/components/inserter/block-patterns-tab/index.js +1 -2
  105. package/src/components/inserter/media-tab/media-preview.js +2 -4
  106. package/src/components/inserter/media-tab/media-tab.js +1 -2
  107. package/src/components/inserter/quick-inserter.js +1 -2
  108. package/src/components/inserter/style.scss +0 -1
  109. package/src/components/inserter-listbox/item.js +1 -5
  110. package/src/components/link-control/index.js +19 -14
  111. package/src/components/link-control/search-input.js +2 -0
  112. package/src/components/link-control/style.scss +0 -22
  113. package/src/components/list-view/style.scss +1 -1
  114. package/src/components/rich-text/index.js +20 -5
  115. package/src/components/spacing-sizes-control/test/utils.js +18 -25
  116. package/src/components/spacing-sizes-control/utils.js +22 -5
  117. package/src/components/url-input/index.js +5 -4
  118. package/src/components/url-input/style.scss +3 -26
  119. package/src/hooks/block-bindings.js +63 -49
  120. package/src/hooks/block-hooks.js +3 -14
  121. package/src/hooks/block-hooks.scss +0 -9
  122. package/src/store/private-selectors.js +9 -0
  123. package/src/style.scss +1 -0
  124. package/src/utils/test/transform-styles.js +1 -1
@@ -40,7 +40,8 @@ const LinkControlSearchInput = forwardRef(({
40
40
  suggestionsQuery = {},
41
41
  withURLSuggestion = true,
42
42
  createSuggestionButtonText,
43
- hideLabelFromVision = false
43
+ hideLabelFromVision = false,
44
+ suffix
44
45
  }, ref) => {
45
46
  const genericSearchHandler = useSearchHandler(suggestionsQuery, allowDirectEntry, withCreateSuggestion, withURLSuggestion);
46
47
  const searchHandler = showSuggestions ? fetchSuggestions || genericSearchHandler : noopSearchHandler;
@@ -124,7 +125,8 @@ const LinkControlSearchInput = forwardRef(({
124
125
  });
125
126
  }
126
127
  },
127
- ref: ref
128
+ ref: ref,
129
+ suffix: suffix
128
130
  }), children]
129
131
  });
130
132
  });
@@ -1 +1 @@
1
- {"version":3,"names":["useInstanceId","forwardRef","useState","__","URLInput","LinkControlSearchResults","CREATE_TYPE","useSearchHandler","jsx","_jsx","jsxs","_jsxs","noopSearchHandler","Promise","resolve","noop","LinkControlSearchInput","value","children","currentLink","className","placeholder","withCreateSuggestion","onCreateSuggestion","onChange","onSelect","showSuggestions","renderSuggestions","props","fetchSuggestions","allowDirectEntry","showInitialSuggestions","suggestionsQuery","withURLSuggestion","createSuggestionButtonText","hideLabelFromVision","ref","genericSearchHandler","searchHandler","instanceId","focusedSuggestion","setFocusedSuggestion","onInputChange","selection","suggestion","handleRenderSuggestions","handleSuggestionClick","onSuggestionSelected","selectedSuggestion","type","title","url","e","Object","keys","length","id","restLinkProps","disableSuggestions","label","__experimentalRenderSuggestions","__experimentalFetchLinkSuggestions","__experimentalHandleURLSuggestions","__experimentalShowInitialSuggestions","onSubmit","event","hasSuggestion","trim","preventDefault"],"sources":["@wordpress/block-editor/src/components/link-control/search-input.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useInstanceId } from '@wordpress/compose';\nimport { forwardRef, useState } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { URLInput } from '../';\nimport LinkControlSearchResults from './search-results';\nimport { CREATE_TYPE } from './constants';\nimport useSearchHandler from './use-search-handler';\n\n// Must be a function as otherwise URLInput will default\n// to the fetchLinkSuggestions passed in block editor settings\n// which will cause an unintended http request.\nconst noopSearchHandler = () => Promise.resolve( [] );\n\nconst noop = () => {};\n\nconst LinkControlSearchInput = forwardRef(\n\t(\n\t\t{\n\t\t\tvalue,\n\t\t\tchildren,\n\t\t\tcurrentLink = {},\n\t\t\tclassName = null,\n\t\t\tplaceholder = null,\n\t\t\twithCreateSuggestion = false,\n\t\t\tonCreateSuggestion = noop,\n\t\t\tonChange = noop,\n\t\t\tonSelect = noop,\n\t\t\tshowSuggestions = true,\n\t\t\trenderSuggestions = ( props ) => (\n\t\t\t\t<LinkControlSearchResults { ...props } />\n\t\t\t),\n\t\t\tfetchSuggestions = null,\n\t\t\tallowDirectEntry = true,\n\t\t\tshowInitialSuggestions = false,\n\t\t\tsuggestionsQuery = {},\n\t\t\twithURLSuggestion = true,\n\t\t\tcreateSuggestionButtonText,\n\t\t\thideLabelFromVision = false,\n\t\t},\n\t\tref\n\t) => {\n\t\tconst genericSearchHandler = useSearchHandler(\n\t\t\tsuggestionsQuery,\n\t\t\tallowDirectEntry,\n\t\t\twithCreateSuggestion,\n\t\t\twithURLSuggestion\n\t\t);\n\n\t\tconst searchHandler = showSuggestions\n\t\t\t? fetchSuggestions || genericSearchHandler\n\t\t\t: noopSearchHandler;\n\n\t\tconst instanceId = useInstanceId( LinkControlSearchInput );\n\t\tconst [ focusedSuggestion, setFocusedSuggestion ] = useState();\n\n\t\t/**\n\t\t * Handles the user moving between different suggestions. Does not handle\n\t\t * choosing an individual item.\n\t\t *\n\t\t * @param {string} selection the url of the selected suggestion.\n\t\t * @param {Object} suggestion the suggestion object.\n\t\t */\n\t\tconst onInputChange = ( selection, suggestion ) => {\n\t\t\tonChange( selection );\n\t\t\tsetFocusedSuggestion( suggestion );\n\t\t};\n\n\t\tconst handleRenderSuggestions = ( props ) =>\n\t\t\trenderSuggestions( {\n\t\t\t\t...props,\n\t\t\t\tinstanceId,\n\t\t\t\twithCreateSuggestion,\n\t\t\t\tcreateSuggestionButtonText,\n\t\t\t\tsuggestionsQuery,\n\t\t\t\thandleSuggestionClick: ( suggestion ) => {\n\t\t\t\t\tif ( props.handleSuggestionClick ) {\n\t\t\t\t\t\tprops.handleSuggestionClick( suggestion );\n\t\t\t\t\t}\n\t\t\t\t\tonSuggestionSelected( suggestion );\n\t\t\t\t},\n\t\t\t} );\n\n\t\tconst onSuggestionSelected = async ( selectedSuggestion ) => {\n\t\t\tlet suggestion = selectedSuggestion;\n\t\t\tif ( CREATE_TYPE === selectedSuggestion.type ) {\n\t\t\t\t// Create a new page and call onSelect with the output from the onCreateSuggestion callback.\n\t\t\t\ttry {\n\t\t\t\t\tsuggestion = await onCreateSuggestion(\n\t\t\t\t\t\tselectedSuggestion.title\n\t\t\t\t\t);\n\t\t\t\t\tif ( suggestion?.url ) {\n\t\t\t\t\t\tonSelect( suggestion );\n\t\t\t\t\t}\n\t\t\t\t} catch ( e ) {}\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tallowDirectEntry ||\n\t\t\t\t( suggestion && Object.keys( suggestion ).length >= 1 )\n\t\t\t) {\n\t\t\t\tconst { id, url, ...restLinkProps } = currentLink ?? {};\n\t\t\t\tonSelect(\n\t\t\t\t\t// Some direct entries don't have types or IDs, and we still need to clear the previous ones.\n\t\t\t\t\t{ ...restLinkProps, ...suggestion },\n\t\t\t\t\tsuggestion\n\t\t\t\t);\n\t\t\t}\n\t\t};\n\n\t\treturn (\n\t\t\t<div className=\"block-editor-link-control__search-input-container\">\n\t\t\t\t<URLInput\n\t\t\t\t\tdisableSuggestions={ currentLink?.url === value }\n\t\t\t\t\tlabel={ __( 'Link' ) }\n\t\t\t\t\thideLabelFromVision={ hideLabelFromVision }\n\t\t\t\t\tclassName={ className }\n\t\t\t\t\tvalue={ value }\n\t\t\t\t\tonChange={ onInputChange }\n\t\t\t\t\tplaceholder={ placeholder ?? __( 'Search or type URL' ) }\n\t\t\t\t\t__experimentalRenderSuggestions={\n\t\t\t\t\t\tshowSuggestions ? handleRenderSuggestions : null\n\t\t\t\t\t}\n\t\t\t\t\t__experimentalFetchLinkSuggestions={ searchHandler }\n\t\t\t\t\t__experimentalHandleURLSuggestions\n\t\t\t\t\t__experimentalShowInitialSuggestions={\n\t\t\t\t\t\tshowInitialSuggestions\n\t\t\t\t\t}\n\t\t\t\t\tonSubmit={ ( suggestion, event ) => {\n\t\t\t\t\t\tconst hasSuggestion = suggestion || focusedSuggestion;\n\n\t\t\t\t\t\t// If there is no suggestion and the value (ie: any manually entered URL) is empty\n\t\t\t\t\t\t// then don't allow submission otherwise we get empty links.\n\t\t\t\t\t\tif ( ! hasSuggestion && ! value?.trim()?.length ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tonSuggestionSelected(\n\t\t\t\t\t\t\t\thasSuggestion || { url: value }\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\tref={ ref }\n\t\t\t\t/>\n\t\t\t\t{ children }\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nexport default LinkControlSearchInput;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useInstanceId","forwardRef","useState","__","URLInput","LinkControlSearchResults","CREATE_TYPE","useSearchHandler","jsx","_jsx","jsxs","_jsxs","noopSearchHandler","Promise","resolve","noop","LinkControlSearchInput","value","children","currentLink","className","placeholder","withCreateSuggestion","onCreateSuggestion","onChange","onSelect","showSuggestions","renderSuggestions","props","fetchSuggestions","allowDirectEntry","showInitialSuggestions","suggestionsQuery","withURLSuggestion","createSuggestionButtonText","hideLabelFromVision","suffix","ref","genericSearchHandler","searchHandler","instanceId","focusedSuggestion","setFocusedSuggestion","onInputChange","selection","suggestion","handleRenderSuggestions","handleSuggestionClick","onSuggestionSelected","selectedSuggestion","type","title","url","e","Object","keys","length","id","restLinkProps","disableSuggestions","label","__experimentalRenderSuggestions","__experimentalFetchLinkSuggestions","__experimentalHandleURLSuggestions","__experimentalShowInitialSuggestions","onSubmit","event","hasSuggestion","trim","preventDefault"],"sources":["@wordpress/block-editor/src/components/link-control/search-input.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useInstanceId } from '@wordpress/compose';\nimport { forwardRef, useState } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { URLInput } from '../';\nimport LinkControlSearchResults from './search-results';\nimport { CREATE_TYPE } from './constants';\nimport useSearchHandler from './use-search-handler';\n\n// Must be a function as otherwise URLInput will default\n// to the fetchLinkSuggestions passed in block editor settings\n// which will cause an unintended http request.\nconst noopSearchHandler = () => Promise.resolve( [] );\n\nconst noop = () => {};\n\nconst LinkControlSearchInput = forwardRef(\n\t(\n\t\t{\n\t\t\tvalue,\n\t\t\tchildren,\n\t\t\tcurrentLink = {},\n\t\t\tclassName = null,\n\t\t\tplaceholder = null,\n\t\t\twithCreateSuggestion = false,\n\t\t\tonCreateSuggestion = noop,\n\t\t\tonChange = noop,\n\t\t\tonSelect = noop,\n\t\t\tshowSuggestions = true,\n\t\t\trenderSuggestions = ( props ) => (\n\t\t\t\t<LinkControlSearchResults { ...props } />\n\t\t\t),\n\t\t\tfetchSuggestions = null,\n\t\t\tallowDirectEntry = true,\n\t\t\tshowInitialSuggestions = false,\n\t\t\tsuggestionsQuery = {},\n\t\t\twithURLSuggestion = true,\n\t\t\tcreateSuggestionButtonText,\n\t\t\thideLabelFromVision = false,\n\t\t\tsuffix,\n\t\t},\n\t\tref\n\t) => {\n\t\tconst genericSearchHandler = useSearchHandler(\n\t\t\tsuggestionsQuery,\n\t\t\tallowDirectEntry,\n\t\t\twithCreateSuggestion,\n\t\t\twithURLSuggestion\n\t\t);\n\n\t\tconst searchHandler = showSuggestions\n\t\t\t? fetchSuggestions || genericSearchHandler\n\t\t\t: noopSearchHandler;\n\n\t\tconst instanceId = useInstanceId( LinkControlSearchInput );\n\t\tconst [ focusedSuggestion, setFocusedSuggestion ] = useState();\n\n\t\t/**\n\t\t * Handles the user moving between different suggestions. Does not handle\n\t\t * choosing an individual item.\n\t\t *\n\t\t * @param {string} selection the url of the selected suggestion.\n\t\t * @param {Object} suggestion the suggestion object.\n\t\t */\n\t\tconst onInputChange = ( selection, suggestion ) => {\n\t\t\tonChange( selection );\n\t\t\tsetFocusedSuggestion( suggestion );\n\t\t};\n\n\t\tconst handleRenderSuggestions = ( props ) =>\n\t\t\trenderSuggestions( {\n\t\t\t\t...props,\n\t\t\t\tinstanceId,\n\t\t\t\twithCreateSuggestion,\n\t\t\t\tcreateSuggestionButtonText,\n\t\t\t\tsuggestionsQuery,\n\t\t\t\thandleSuggestionClick: ( suggestion ) => {\n\t\t\t\t\tif ( props.handleSuggestionClick ) {\n\t\t\t\t\t\tprops.handleSuggestionClick( suggestion );\n\t\t\t\t\t}\n\t\t\t\t\tonSuggestionSelected( suggestion );\n\t\t\t\t},\n\t\t\t} );\n\n\t\tconst onSuggestionSelected = async ( selectedSuggestion ) => {\n\t\t\tlet suggestion = selectedSuggestion;\n\t\t\tif ( CREATE_TYPE === selectedSuggestion.type ) {\n\t\t\t\t// Create a new page and call onSelect with the output from the onCreateSuggestion callback.\n\t\t\t\ttry {\n\t\t\t\t\tsuggestion = await onCreateSuggestion(\n\t\t\t\t\t\tselectedSuggestion.title\n\t\t\t\t\t);\n\t\t\t\t\tif ( suggestion?.url ) {\n\t\t\t\t\t\tonSelect( suggestion );\n\t\t\t\t\t}\n\t\t\t\t} catch ( e ) {}\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tallowDirectEntry ||\n\t\t\t\t( suggestion && Object.keys( suggestion ).length >= 1 )\n\t\t\t) {\n\t\t\t\tconst { id, url, ...restLinkProps } = currentLink ?? {};\n\t\t\t\tonSelect(\n\t\t\t\t\t// Some direct entries don't have types or IDs, and we still need to clear the previous ones.\n\t\t\t\t\t{ ...restLinkProps, ...suggestion },\n\t\t\t\t\tsuggestion\n\t\t\t\t);\n\t\t\t}\n\t\t};\n\n\t\treturn (\n\t\t\t<div className=\"block-editor-link-control__search-input-container\">\n\t\t\t\t<URLInput\n\t\t\t\t\tdisableSuggestions={ currentLink?.url === value }\n\t\t\t\t\tlabel={ __( 'Link' ) }\n\t\t\t\t\thideLabelFromVision={ hideLabelFromVision }\n\t\t\t\t\tclassName={ className }\n\t\t\t\t\tvalue={ value }\n\t\t\t\t\tonChange={ onInputChange }\n\t\t\t\t\tplaceholder={ placeholder ?? __( 'Search or type URL' ) }\n\t\t\t\t\t__experimentalRenderSuggestions={\n\t\t\t\t\t\tshowSuggestions ? handleRenderSuggestions : null\n\t\t\t\t\t}\n\t\t\t\t\t__experimentalFetchLinkSuggestions={ searchHandler }\n\t\t\t\t\t__experimentalHandleURLSuggestions\n\t\t\t\t\t__experimentalShowInitialSuggestions={\n\t\t\t\t\t\tshowInitialSuggestions\n\t\t\t\t\t}\n\t\t\t\t\tonSubmit={ ( suggestion, event ) => {\n\t\t\t\t\t\tconst hasSuggestion = suggestion || focusedSuggestion;\n\n\t\t\t\t\t\t// If there is no suggestion and the value (ie: any manually entered URL) is empty\n\t\t\t\t\t\t// then don't allow submission otherwise we get empty links.\n\t\t\t\t\t\tif ( ! hasSuggestion && ! value?.trim()?.length ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tonSuggestionSelected(\n\t\t\t\t\t\t\t\thasSuggestion || { url: value }\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\tref={ ref }\n\t\t\t\t\tsuffix={ suffix }\n\t\t\t\t/>\n\t\t\t\t{ children }\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nexport default LinkControlSearchInput;\n"],"mappings":"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","ignoreList":[]}
@@ -115,6 +115,7 @@ export function RichTextWrapper({
115
115
  } = context;
116
116
  const blockBindings = context[blockBindingsKey];
117
117
  const blockContext = useContext(BlockContext);
118
+ const registry = useRegistry();
118
119
  const selector = select => {
119
120
  // Avoid subscribing to the block editor store if the block is not
120
121
  // selected.
@@ -150,6 +151,7 @@ export function RichTextWrapper({
150
151
  disableBoundBlock,
151
152
  bindingsPlaceholder
152
153
  } = useSelect(select => {
154
+ var _fieldsList$relatedBi;
153
155
  if (!blockBindings?.[identifier] || !canBindBlock(blockName)) {
154
156
  return {};
155
157
  }
@@ -158,18 +160,23 @@ export function RichTextWrapper({
158
160
  getBlockBindingsSource
159
161
  } = unlock(select(blocksStore));
160
162
  const blockBindingsSource = getBlockBindingsSource(relatedBinding.source);
163
+ const fieldsList = blockBindingsSource?.getFieldsList?.({
164
+ registry,
165
+ context: blockContext
166
+ });
161
167
  const _disableBoundBlock = !blockBindingsSource?.canUserEditValue?.({
162
168
  select,
163
169
  context: blockContext,
164
170
  args: relatedBinding.args
165
171
  });
166
- const _bindingsPlaceholder = _disableBoundBlock ? relatedBinding?.args?.key || blockBindingsSource?.label : sprintf( /* translators: %s: source label or key */
167
- __('Add %s'), relatedBinding?.args?.key || blockBindingsSource?.label);
172
+ const bindingKey = (_fieldsList$relatedBi = fieldsList?.[relatedBinding?.args?.key]?.label) !== null && _fieldsList$relatedBi !== void 0 ? _fieldsList$relatedBi : blockBindingsSource?.label;
173
+ const _bindingsPlaceholder = _disableBoundBlock ? bindingKey : sprintf( /* translators: %s: connected field label or source label */
174
+ __('Add %s'), bindingKey);
168
175
  return {
169
176
  disableBoundBlock: _disableBoundBlock,
170
177
  bindingsPlaceholder: (!adjustedValue || adjustedValue.length === 0) && _bindingsPlaceholder
171
178
  };
172
- }, [blockBindings, identifier, blockName, blockContext, adjustedValue]);
179
+ }, [blockBindings, identifier, blockName, blockContext, registry, adjustedValue]);
173
180
  const shouldDisableEditing = readOnly || disableBoundBlock;
174
181
  const {
175
182
  getSelectionStart,
@@ -295,7 +302,6 @@ export function RichTextWrapper({
295
302
  }
296
303
  element.focus();
297
304
  }
298
- const registry = useRegistry();
299
305
  const TagName = tagName;
300
306
  return /*#__PURE__*/_jsxs(_Fragment, {
301
307
  children: [isSelected && /*#__PURE__*/_jsx(keyboardShortcutContext.Provider, {
@@ -1 +1 @@
1
- {"version":3,"names":["clsx","useRef","useCallback","forwardRef","createContext","useContext","useDispatch","useRegistry","useSelect","useMergeRefs","useInstanceId","__unstableUseRichText","useRichText","removeFormat","Popover","store","blocksStore","deprecated","__","sprintf","useBlockEditorAutocompleteProps","useBlockEditContext","blockBindingsKey","isPreviewModeKey","FormatToolbarContainer","blockEditorStore","useMarkPersistent","useFormatTypes","useEventListeners","FormatEdit","getAllowedFormats","Content","valueToHTMLString","withDeprecations","unlock","canBindBlock","BlockContext","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","keyboardShortcutContext","inputEventContext","instanceIdKey","Symbol","removeNativeProps","props","__unstableMobileNoFocusOnMount","deleteEnter","placeholderTextColor","textAlign","selectionColor","tagsToEliminate","disableEditingMenu","fontSize","fontFamily","fontWeight","fontStyle","minWidth","maxWidth","disableSuggestions","disableAutocorrection","restProps","RichTextWrapper","children","tagName","value","adjustedValue","onChange","adjustedOnChange","isSelected","originalIsSelected","multiline","inlineToolbar","wrapperClassName","autocompleters","onReplace","placeholder","allowedFormats","withoutInteractiveFormatting","onRemove","onMerge","onSplit","__unstableOnSplitAtEnd","onSplitAtEnd","__unstableOnSplitAtDoubleLineEnd","onSplitAtDoubleLineEnd","identifier","preserveWhiteSpace","__unstablePastePlainText","pastePlainText","__unstableEmbedURLOnPaste","__unstableDisableFormats","disableFormats","disableLineBreaks","__unstableAllowPrefixTransformations","readOnly","forwardedRef","since","alternative","instanceId","anchorRef","context","clientId","isBlockSelected","name","blockName","blockBindings","blockContext","selector","select","getSelectionStart","getSelectionEnd","selectionStart","selectionEnd","undefined","attributeKey","offset","disableBoundBlock","bindingsPlaceholder","relatedBinding","getBlockBindingsSource","blockBindingsSource","source","_disableBoundBlock","canUserEditValue","args","_bindingsPlaceholder","key","label","length","shouldDisableEditing","getBlockRootClientId","selectionChange","adjustedAllowedFormats","hasFormats","onSelectionChange","start","end","selection","unset","baseSelection","formatTypes","prepareHandlers","valueHandlers","changeHandlers","dependencies","addEditorOnlyFormats","reduce","accumulator","fn","text","formats","removeEditorOnlyFormats","forEach","formatType","__experimentalCreatePrepareEditableTree","addInvisibleFormats","getValue","ref","richTextRef","html","__unstableFormats","__unstableText","Object","values","changeHandler","__unstableIsSelected","__unstableDependencies","__unstableAfterParse","__unstableBeforeSerialize","__unstableAddInvisibleFormats","autocompleteProps","completers","record","keyboardShortcuts","Set","inputEvents","onFocus","element","current","parentElement","isContentEditable","focus","registry","TagName","Provider","__unstableSlotNameProvider","inline","editableContentElement","role","contentEditable","suppressContentEditableWarning","className","tabIndex","PrivateRichText","isEmpty","PublicForwardedRichTextContainer","isPreviewMode","Tag","contentProps","dangerouslySetInnerHTML","__html","RichTextShortcut","RichTextToolbarButton","__unstableRichTextInputEvent"],"sources":["@wordpress/block-editor/src/components/rich-text/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tuseRef,\n\tuseCallback,\n\tforwardRef,\n\tcreateContext,\n\tuseContext,\n} from '@wordpress/element';\nimport { useDispatch, useRegistry, useSelect } from '@wordpress/data';\nimport { useMergeRefs, useInstanceId } from '@wordpress/compose';\nimport {\n\t__unstableUseRichText as useRichText,\n\tremoveFormat,\n} from '@wordpress/rich-text';\nimport { Popover } from '@wordpress/components';\nimport { store as blocksStore } from '@wordpress/blocks';\nimport deprecated from '@wordpress/deprecated';\nimport { __, sprintf } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { useBlockEditorAutocompleteProps } from '../autocomplete';\nimport { useBlockEditContext } from '../block-edit';\nimport { blockBindingsKey, isPreviewModeKey } from '../block-edit/context';\nimport FormatToolbarContainer from './format-toolbar-container';\nimport { store as blockEditorStore } from '../../store';\nimport { useMarkPersistent } from './use-mark-persistent';\nimport { useFormatTypes } from './use-format-types';\nimport { useEventListeners } from './event-listeners';\nimport FormatEdit from './format-edit';\nimport { getAllowedFormats } from './utils';\nimport { Content, valueToHTMLString } from './content';\nimport { withDeprecations } from './with-deprecations';\nimport { unlock } from '../../lock-unlock';\nimport { canBindBlock } from '../../hooks/use-bindings-attributes';\nimport BlockContext from '../block-context';\n\nexport const keyboardShortcutContext = createContext();\nexport const inputEventContext = createContext();\n\nconst instanceIdKey = Symbol( 'instanceId' );\n\n/**\n * Removes props used for the native version of RichText so that they are not\n * passed to the DOM element and log warnings.\n *\n * @param {Object} props Props to filter.\n *\n * @return {Object} Filtered props.\n */\nfunction removeNativeProps( props ) {\n\tconst {\n\t\t__unstableMobileNoFocusOnMount,\n\t\tdeleteEnter,\n\t\tplaceholderTextColor,\n\t\ttextAlign,\n\t\tselectionColor,\n\t\ttagsToEliminate,\n\t\tdisableEditingMenu,\n\t\tfontSize,\n\t\tfontFamily,\n\t\tfontWeight,\n\t\tfontStyle,\n\t\tminWidth,\n\t\tmaxWidth,\n\t\tdisableSuggestions,\n\t\tdisableAutocorrection,\n\t\t...restProps\n\t} = props;\n\treturn restProps;\n}\n\nexport function RichTextWrapper(\n\t{\n\t\tchildren,\n\t\ttagName = 'div',\n\t\tvalue: adjustedValue = '',\n\t\tonChange: adjustedOnChange,\n\t\tisSelected: originalIsSelected,\n\t\tmultiline,\n\t\tinlineToolbar,\n\t\twrapperClassName,\n\t\tautocompleters,\n\t\tonReplace,\n\t\tplaceholder,\n\t\tallowedFormats,\n\t\twithoutInteractiveFormatting,\n\t\tonRemove,\n\t\tonMerge,\n\t\tonSplit,\n\t\t__unstableOnSplitAtEnd: onSplitAtEnd,\n\t\t__unstableOnSplitAtDoubleLineEnd: onSplitAtDoubleLineEnd,\n\t\tidentifier,\n\t\tpreserveWhiteSpace,\n\t\t__unstablePastePlainText: pastePlainText,\n\t\t__unstableEmbedURLOnPaste,\n\t\t__unstableDisableFormats: disableFormats,\n\t\tdisableLineBreaks,\n\t\t__unstableAllowPrefixTransformations,\n\t\treadOnly,\n\t\t...props\n\t},\n\tforwardedRef\n) {\n\tprops = removeNativeProps( props );\n\n\tif ( onSplit ) {\n\t\tdeprecated( 'wp.blockEditor.RichText onSplit prop', {\n\t\t\tsince: '6.4',\n\t\t\talternative: 'block.json support key: \"splitting\"',\n\t\t} );\n\t}\n\n\tconst instanceId = useInstanceId( RichTextWrapper );\n\tconst anchorRef = useRef();\n\tconst context = useBlockEditContext();\n\tconst { clientId, isSelected: isBlockSelected, name: blockName } = context;\n\tconst blockBindings = context[ blockBindingsKey ];\n\tconst blockContext = useContext( BlockContext );\n\tconst selector = ( select ) => {\n\t\t// Avoid subscribing to the block editor store if the block is not\n\t\t// selected.\n\t\tif ( ! isBlockSelected ) {\n\t\t\treturn { isSelected: false };\n\t\t}\n\n\t\tconst { getSelectionStart, getSelectionEnd } =\n\t\t\tselect( blockEditorStore );\n\t\tconst selectionStart = getSelectionStart();\n\t\tconst selectionEnd = getSelectionEnd();\n\n\t\tlet isSelected;\n\n\t\tif ( originalIsSelected === undefined ) {\n\t\t\tisSelected =\n\t\t\t\tselectionStart.clientId === clientId &&\n\t\t\t\tselectionEnd.clientId === clientId &&\n\t\t\t\t( identifier\n\t\t\t\t\t? selectionStart.attributeKey === identifier\n\t\t\t\t\t: selectionStart[ instanceIdKey ] === instanceId );\n\t\t} else if ( originalIsSelected ) {\n\t\t\tisSelected = selectionStart.clientId === clientId;\n\t\t}\n\n\t\treturn {\n\t\t\tselectionStart: isSelected ? selectionStart.offset : undefined,\n\t\t\tselectionEnd: isSelected ? selectionEnd.offset : undefined,\n\t\t\tisSelected,\n\t\t};\n\t};\n\tconst { selectionStart, selectionEnd, isSelected } = useSelect( selector, [\n\t\tclientId,\n\t\tidentifier,\n\t\tinstanceId,\n\t\toriginalIsSelected,\n\t\tisBlockSelected,\n\t] );\n\n\tconst { disableBoundBlock, bindingsPlaceholder } = useSelect(\n\t\t( select ) => {\n\t\t\tif (\n\t\t\t\t! blockBindings?.[ identifier ] ||\n\t\t\t\t! canBindBlock( blockName )\n\t\t\t) {\n\t\t\t\treturn {};\n\t\t\t}\n\n\t\t\tconst relatedBinding = blockBindings[ identifier ];\n\t\t\tconst { getBlockBindingsSource } = unlock( select( blocksStore ) );\n\t\t\tconst blockBindingsSource = getBlockBindingsSource(\n\t\t\t\trelatedBinding.source\n\t\t\t);\n\n\t\t\tconst _disableBoundBlock =\n\t\t\t\t! blockBindingsSource?.canUserEditValue?.( {\n\t\t\t\t\tselect,\n\t\t\t\t\tcontext: blockContext,\n\t\t\t\t\targs: relatedBinding.args,\n\t\t\t\t} );\n\n\t\t\tconst _bindingsPlaceholder = _disableBoundBlock\n\t\t\t\t? relatedBinding?.args?.key || blockBindingsSource?.label\n\t\t\t\t: sprintf(\n\t\t\t\t\t\t/* translators: %s: source label or key */\n\t\t\t\t\t\t__( 'Add %s' ),\n\t\t\t\t\t\trelatedBinding?.args?.key || blockBindingsSource?.label\n\t\t\t\t );\n\n\t\t\treturn {\n\t\t\t\tdisableBoundBlock: _disableBoundBlock,\n\t\t\t\tbindingsPlaceholder:\n\t\t\t\t\t( ! adjustedValue || adjustedValue.length === 0 ) &&\n\t\t\t\t\t_bindingsPlaceholder,\n\t\t\t};\n\t\t},\n\t\t[ blockBindings, identifier, blockName, blockContext, adjustedValue ]\n\t);\n\n\tconst shouldDisableEditing = readOnly || disableBoundBlock;\n\n\tconst { getSelectionStart, getSelectionEnd, getBlockRootClientId } =\n\t\tuseSelect( blockEditorStore );\n\tconst { selectionChange } = useDispatch( blockEditorStore );\n\tconst adjustedAllowedFormats = getAllowedFormats( {\n\t\tallowedFormats,\n\t\tdisableFormats,\n\t} );\n\tconst hasFormats =\n\t\t! adjustedAllowedFormats || adjustedAllowedFormats.length > 0;\n\n\tconst onSelectionChange = useCallback(\n\t\t( start, end ) => {\n\t\t\tconst selection = {};\n\t\t\tconst unset = start === undefined && end === undefined;\n\n\t\t\tconst baseSelection = {\n\t\t\t\tclientId,\n\t\t\t\t[ identifier ? 'attributeKey' : instanceIdKey ]: identifier\n\t\t\t\t\t? identifier\n\t\t\t\t\t: instanceId,\n\t\t\t};\n\n\t\t\tif ( typeof start === 'number' || unset ) {\n\t\t\t\t// If we are only setting the start (or the end below), which\n\t\t\t\t// means a partial selection, and we're not updating a selection\n\t\t\t\t// with the same client ID, abort. This means the selected block\n\t\t\t\t// is a parent block.\n\t\t\t\tif (\n\t\t\t\t\tend === undefined &&\n\t\t\t\t\tgetBlockRootClientId( clientId ) !==\n\t\t\t\t\t\tgetBlockRootClientId( getSelectionEnd().clientId )\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tselection.start = {\n\t\t\t\t\t...baseSelection,\n\t\t\t\t\toffset: start,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif ( typeof end === 'number' || unset ) {\n\t\t\t\tif (\n\t\t\t\t\tstart === undefined &&\n\t\t\t\t\tgetBlockRootClientId( clientId ) !==\n\t\t\t\t\t\tgetBlockRootClientId( getSelectionStart().clientId )\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tselection.end = {\n\t\t\t\t\t...baseSelection,\n\t\t\t\t\toffset: end,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tselectionChange( selection );\n\t\t},\n\t\t[\n\t\t\tclientId,\n\t\t\tgetBlockRootClientId,\n\t\t\tgetSelectionEnd,\n\t\t\tgetSelectionStart,\n\t\t\tidentifier,\n\t\t\tinstanceId,\n\t\t\tselectionChange,\n\t\t]\n\t);\n\n\tconst {\n\t\tformatTypes,\n\t\tprepareHandlers,\n\t\tvalueHandlers,\n\t\tchangeHandlers,\n\t\tdependencies,\n\t} = useFormatTypes( {\n\t\tclientId,\n\t\tidentifier,\n\t\twithoutInteractiveFormatting,\n\t\tallowedFormats: adjustedAllowedFormats,\n\t} );\n\n\tfunction addEditorOnlyFormats( value ) {\n\t\treturn valueHandlers.reduce(\n\t\t\t( accumulator, fn ) => fn( accumulator, value.text ),\n\t\t\tvalue.formats\n\t\t);\n\t}\n\n\tfunction removeEditorOnlyFormats( value ) {\n\t\tformatTypes.forEach( ( formatType ) => {\n\t\t\t// Remove formats created by prepareEditableTree, because they are editor only.\n\t\t\tif ( formatType.__experimentalCreatePrepareEditableTree ) {\n\t\t\t\tvalue = removeFormat(\n\t\t\t\t\tvalue,\n\t\t\t\t\tformatType.name,\n\t\t\t\t\t0,\n\t\t\t\t\tvalue.text.length\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t\treturn value.formats;\n\t}\n\n\tfunction addInvisibleFormats( value ) {\n\t\treturn prepareHandlers.reduce(\n\t\t\t( accumulator, fn ) => fn( accumulator, value.text ),\n\t\t\tvalue.formats\n\t\t);\n\t}\n\n\tconst {\n\t\tvalue,\n\t\tgetValue,\n\t\tonChange,\n\t\tref: richTextRef,\n\t} = useRichText( {\n\t\tvalue: adjustedValue,\n\t\tonChange( html, { __unstableFormats, __unstableText } ) {\n\t\t\tadjustedOnChange( html );\n\t\t\tObject.values( changeHandlers ).forEach( ( changeHandler ) => {\n\t\t\t\tchangeHandler( __unstableFormats, __unstableText );\n\t\t\t} );\n\t\t},\n\t\tselectionStart,\n\t\tselectionEnd,\n\t\tonSelectionChange,\n\t\tplaceholder: bindingsPlaceholder || placeholder,\n\t\t__unstableIsSelected: isSelected,\n\t\t__unstableDisableFormats: disableFormats,\n\t\tpreserveWhiteSpace,\n\t\t__unstableDependencies: [ ...dependencies, tagName ],\n\t\t__unstableAfterParse: addEditorOnlyFormats,\n\t\t__unstableBeforeSerialize: removeEditorOnlyFormats,\n\t\t__unstableAddInvisibleFormats: addInvisibleFormats,\n\t} );\n\tconst autocompleteProps = useBlockEditorAutocompleteProps( {\n\t\tonReplace,\n\t\tcompleters: autocompleters,\n\t\trecord: value,\n\t\tonChange,\n\t} );\n\n\tuseMarkPersistent( { html: adjustedValue, value } );\n\n\tconst keyboardShortcuts = useRef( new Set() );\n\tconst inputEvents = useRef( new Set() );\n\n\tfunction onFocus() {\n\t\tlet element = anchorRef.current;\n\n\t\tif ( ! element ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Writing flow might be editable, so we should make sure focus goes to\n\t\t// the root editable element.\n\t\twhile ( element.parentElement?.isContentEditable ) {\n\t\t\telement = element.parentElement;\n\t\t}\n\n\t\telement.focus();\n\t}\n\n\tconst registry = useRegistry();\n\tconst TagName = tagName;\n\treturn (\n\t\t<>\n\t\t\t{ isSelected && (\n\t\t\t\t<keyboardShortcutContext.Provider value={ keyboardShortcuts }>\n\t\t\t\t\t<inputEventContext.Provider value={ inputEvents }>\n\t\t\t\t\t\t<Popover.__unstableSlotNameProvider value=\"__unstable-block-tools-after\">\n\t\t\t\t\t\t\t{ children &&\n\t\t\t\t\t\t\t\tchildren( { value, onChange, onFocus } ) }\n\n\t\t\t\t\t\t\t<FormatEdit\n\t\t\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t\t\tonFocus={ onFocus }\n\t\t\t\t\t\t\t\tformatTypes={ formatTypes }\n\t\t\t\t\t\t\t\tforwardedRef={ anchorRef }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Popover.__unstableSlotNameProvider>\n\t\t\t\t\t</inputEventContext.Provider>\n\t\t\t\t</keyboardShortcutContext.Provider>\n\t\t\t) }\n\t\t\t{ isSelected && hasFormats && (\n\t\t\t\t<FormatToolbarContainer\n\t\t\t\t\tinline={ inlineToolbar }\n\t\t\t\t\teditableContentElement={ anchorRef.current }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t<TagName\n\t\t\t\t// Overridable props.\n\t\t\t\trole=\"textbox\"\n\t\t\t\taria-multiline={ ! disableLineBreaks }\n\t\t\t\taria-readonly={ shouldDisableEditing }\n\t\t\t\t{ ...props }\n\t\t\t\taria-label={\n\t\t\t\t\tbindingsPlaceholder || props[ 'aria-label' ] || placeholder\n\t\t\t\t}\n\t\t\t\t{ ...autocompleteProps }\n\t\t\t\tref={ useMergeRefs( [\n\t\t\t\t\t// Rich text ref must be first because its focus listener\n\t\t\t\t\t// must be set up before any other ref calls .focus() on\n\t\t\t\t\t// mount.\n\t\t\t\t\trichTextRef,\n\t\t\t\t\tforwardedRef,\n\t\t\t\t\tautocompleteProps.ref,\n\t\t\t\t\tprops.ref,\n\t\t\t\t\tuseEventListeners( {\n\t\t\t\t\t\tregistry,\n\t\t\t\t\t\tgetValue,\n\t\t\t\t\t\tonChange,\n\t\t\t\t\t\t__unstableAllowPrefixTransformations,\n\t\t\t\t\t\tformatTypes,\n\t\t\t\t\t\tonReplace,\n\t\t\t\t\t\tselectionChange,\n\t\t\t\t\t\tisSelected,\n\t\t\t\t\t\tdisableFormats,\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\ttagName,\n\t\t\t\t\t\tonSplit,\n\t\t\t\t\t\t__unstableEmbedURLOnPaste,\n\t\t\t\t\t\tpastePlainText,\n\t\t\t\t\t\tonMerge,\n\t\t\t\t\t\tonRemove,\n\t\t\t\t\t\tremoveEditorOnlyFormats,\n\t\t\t\t\t\tdisableLineBreaks,\n\t\t\t\t\t\tonSplitAtEnd,\n\t\t\t\t\t\tonSplitAtDoubleLineEnd,\n\t\t\t\t\t\tkeyboardShortcuts,\n\t\t\t\t\t\tinputEvents,\n\t\t\t\t\t} ),\n\t\t\t\t\tanchorRef,\n\t\t\t\t] ) }\n\t\t\t\tcontentEditable={ ! shouldDisableEditing }\n\t\t\t\tsuppressContentEditableWarning\n\t\t\t\tclassName={ clsx(\n\t\t\t\t\t'block-editor-rich-text__editable',\n\t\t\t\t\tprops.className,\n\t\t\t\t\t'rich-text'\n\t\t\t\t) }\n\t\t\t\t// Setting tabIndex to 0 is unnecessary, the element is already\n\t\t\t\t// focusable because it's contentEditable. This also fixes a\n\t\t\t\t// Safari bug where it's not possible to Shift+Click multi\n\t\t\t\t// select blocks when Shift Clicking into an element with\n\t\t\t\t// tabIndex because Safari will focus the element. However,\n\t\t\t\t// Safari will correctly ignore nested contentEditable elements.\n\t\t\t\ttabIndex={\n\t\t\t\t\tprops.tabIndex === 0 && ! shouldDisableEditing\n\t\t\t\t\t\t? null\n\t\t\t\t\t\t: props.tabIndex\n\t\t\t\t}\n\t\t\t\tdata-wp-block-attribute-key={ identifier }\n\t\t\t/>\n\t\t</>\n\t);\n}\n\n// This is the private API for the RichText component.\n// It allows access to all props, not just the public ones.\nexport const PrivateRichText = withDeprecations(\n\tforwardRef( RichTextWrapper )\n);\n\nPrivateRichText.Content = Content;\nPrivateRichText.isEmpty = ( value ) => {\n\treturn ! value || value.length === 0;\n};\n\n// This is the public API for the RichText component.\n// We wrap the PrivateRichText component to hide some props from the public API.\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/rich-text/README.md\n */\nconst PublicForwardedRichTextContainer = forwardRef( ( props, ref ) => {\n\tconst context = useBlockEditContext();\n\tconst isPreviewMode = context[ isPreviewModeKey ];\n\n\tif ( isPreviewMode ) {\n\t\t// Remove all non-content props.\n\t\tconst {\n\t\t\tchildren,\n\t\t\ttagName: Tag = 'div',\n\t\t\tvalue,\n\t\t\tonChange,\n\t\t\tisSelected,\n\t\t\tmultiline,\n\t\t\tinlineToolbar,\n\t\t\twrapperClassName,\n\t\t\tautocompleters,\n\t\t\tonReplace,\n\t\t\tplaceholder,\n\t\t\tallowedFormats,\n\t\t\twithoutInteractiveFormatting,\n\t\t\tonRemove,\n\t\t\tonMerge,\n\t\t\tonSplit,\n\t\t\t__unstableOnSplitAtEnd,\n\t\t\t__unstableOnSplitAtDoubleLineEnd,\n\t\t\tidentifier,\n\t\t\tpreserveWhiteSpace,\n\t\t\t__unstablePastePlainText,\n\t\t\t__unstableEmbedURLOnPaste,\n\t\t\t__unstableDisableFormats,\n\t\t\tdisableLineBreaks,\n\t\t\t__unstableAllowPrefixTransformations,\n\t\t\treadOnly,\n\t\t\t...contentProps\n\t\t} = removeNativeProps( props );\n\t\treturn (\n\t\t\t<Tag\n\t\t\t\t{ ...contentProps }\n\t\t\t\tdangerouslySetInnerHTML={ {\n\t\t\t\t\t__html: valueToHTMLString( value, multiline ),\n\t\t\t\t} }\n\t\t\t/>\n\t\t);\n\t}\n\n\treturn <PrivateRichText ref={ ref } { ...props } readOnly={ false } />;\n} );\n\nPublicForwardedRichTextContainer.Content = Content;\nPublicForwardedRichTextContainer.isEmpty = ( value ) => {\n\treturn ! value || value.length === 0;\n};\n\nexport default PublicForwardedRichTextContainer;\nexport { RichTextShortcut } from './shortcut';\nexport { RichTextToolbarButton } from './toolbar-button';\nexport { __unstableRichTextInputEvent } from './input-event';\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["clsx","useRef","useCallback","forwardRef","createContext","useContext","useDispatch","useRegistry","useSelect","useMergeRefs","useInstanceId","__unstableUseRichText","useRichText","removeFormat","Popover","store","blocksStore","deprecated","__","sprintf","useBlockEditorAutocompleteProps","useBlockEditContext","blockBindingsKey","isPreviewModeKey","FormatToolbarContainer","blockEditorStore","useMarkPersistent","useFormatTypes","useEventListeners","FormatEdit","getAllowedFormats","Content","valueToHTMLString","withDeprecations","unlock","canBindBlock","BlockContext","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","keyboardShortcutContext","inputEventContext","instanceIdKey","Symbol","removeNativeProps","props","__unstableMobileNoFocusOnMount","deleteEnter","placeholderTextColor","textAlign","selectionColor","tagsToEliminate","disableEditingMenu","fontSize","fontFamily","fontWeight","fontStyle","minWidth","maxWidth","disableSuggestions","disableAutocorrection","restProps","RichTextWrapper","children","tagName","value","adjustedValue","onChange","adjustedOnChange","isSelected","originalIsSelected","multiline","inlineToolbar","wrapperClassName","autocompleters","onReplace","placeholder","allowedFormats","withoutInteractiveFormatting","onRemove","onMerge","onSplit","__unstableOnSplitAtEnd","onSplitAtEnd","__unstableOnSplitAtDoubleLineEnd","onSplitAtDoubleLineEnd","identifier","preserveWhiteSpace","__unstablePastePlainText","pastePlainText","__unstableEmbedURLOnPaste","__unstableDisableFormats","disableFormats","disableLineBreaks","__unstableAllowPrefixTransformations","readOnly","forwardedRef","since","alternative","instanceId","anchorRef","context","clientId","isBlockSelected","name","blockName","blockBindings","blockContext","registry","selector","select","getSelectionStart","getSelectionEnd","selectionStart","selectionEnd","undefined","attributeKey","offset","disableBoundBlock","bindingsPlaceholder","_fieldsList$relatedBi","relatedBinding","getBlockBindingsSource","blockBindingsSource","source","fieldsList","getFieldsList","_disableBoundBlock","canUserEditValue","args","bindingKey","key","label","_bindingsPlaceholder","length","shouldDisableEditing","getBlockRootClientId","selectionChange","adjustedAllowedFormats","hasFormats","onSelectionChange","start","end","selection","unset","baseSelection","formatTypes","prepareHandlers","valueHandlers","changeHandlers","dependencies","addEditorOnlyFormats","reduce","accumulator","fn","text","formats","removeEditorOnlyFormats","forEach","formatType","__experimentalCreatePrepareEditableTree","addInvisibleFormats","getValue","ref","richTextRef","html","__unstableFormats","__unstableText","Object","values","changeHandler","__unstableIsSelected","__unstableDependencies","__unstableAfterParse","__unstableBeforeSerialize","__unstableAddInvisibleFormats","autocompleteProps","completers","record","keyboardShortcuts","Set","inputEvents","onFocus","element","current","parentElement","isContentEditable","focus","TagName","Provider","__unstableSlotNameProvider","inline","editableContentElement","role","contentEditable","suppressContentEditableWarning","className","tabIndex","PrivateRichText","isEmpty","PublicForwardedRichTextContainer","isPreviewMode","Tag","contentProps","dangerouslySetInnerHTML","__html","RichTextShortcut","RichTextToolbarButton","__unstableRichTextInputEvent"],"sources":["@wordpress/block-editor/src/components/rich-text/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tuseRef,\n\tuseCallback,\n\tforwardRef,\n\tcreateContext,\n\tuseContext,\n} from '@wordpress/element';\nimport { useDispatch, useRegistry, useSelect } from '@wordpress/data';\nimport { useMergeRefs, useInstanceId } from '@wordpress/compose';\nimport {\n\t__unstableUseRichText as useRichText,\n\tremoveFormat,\n} from '@wordpress/rich-text';\nimport { Popover } from '@wordpress/components';\nimport { store as blocksStore } from '@wordpress/blocks';\nimport deprecated from '@wordpress/deprecated';\nimport { __, sprintf } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { useBlockEditorAutocompleteProps } from '../autocomplete';\nimport { useBlockEditContext } from '../block-edit';\nimport { blockBindingsKey, isPreviewModeKey } from '../block-edit/context';\nimport FormatToolbarContainer from './format-toolbar-container';\nimport { store as blockEditorStore } from '../../store';\nimport { useMarkPersistent } from './use-mark-persistent';\nimport { useFormatTypes } from './use-format-types';\nimport { useEventListeners } from './event-listeners';\nimport FormatEdit from './format-edit';\nimport { getAllowedFormats } from './utils';\nimport { Content, valueToHTMLString } from './content';\nimport { withDeprecations } from './with-deprecations';\nimport { unlock } from '../../lock-unlock';\nimport { canBindBlock } from '../../hooks/use-bindings-attributes';\nimport BlockContext from '../block-context';\n\nexport const keyboardShortcutContext = createContext();\nexport const inputEventContext = createContext();\n\nconst instanceIdKey = Symbol( 'instanceId' );\n\n/**\n * Removes props used for the native version of RichText so that they are not\n * passed to the DOM element and log warnings.\n *\n * @param {Object} props Props to filter.\n *\n * @return {Object} Filtered props.\n */\nfunction removeNativeProps( props ) {\n\tconst {\n\t\t__unstableMobileNoFocusOnMount,\n\t\tdeleteEnter,\n\t\tplaceholderTextColor,\n\t\ttextAlign,\n\t\tselectionColor,\n\t\ttagsToEliminate,\n\t\tdisableEditingMenu,\n\t\tfontSize,\n\t\tfontFamily,\n\t\tfontWeight,\n\t\tfontStyle,\n\t\tminWidth,\n\t\tmaxWidth,\n\t\tdisableSuggestions,\n\t\tdisableAutocorrection,\n\t\t...restProps\n\t} = props;\n\treturn restProps;\n}\n\nexport function RichTextWrapper(\n\t{\n\t\tchildren,\n\t\ttagName = 'div',\n\t\tvalue: adjustedValue = '',\n\t\tonChange: adjustedOnChange,\n\t\tisSelected: originalIsSelected,\n\t\tmultiline,\n\t\tinlineToolbar,\n\t\twrapperClassName,\n\t\tautocompleters,\n\t\tonReplace,\n\t\tplaceholder,\n\t\tallowedFormats,\n\t\twithoutInteractiveFormatting,\n\t\tonRemove,\n\t\tonMerge,\n\t\tonSplit,\n\t\t__unstableOnSplitAtEnd: onSplitAtEnd,\n\t\t__unstableOnSplitAtDoubleLineEnd: onSplitAtDoubleLineEnd,\n\t\tidentifier,\n\t\tpreserveWhiteSpace,\n\t\t__unstablePastePlainText: pastePlainText,\n\t\t__unstableEmbedURLOnPaste,\n\t\t__unstableDisableFormats: disableFormats,\n\t\tdisableLineBreaks,\n\t\t__unstableAllowPrefixTransformations,\n\t\treadOnly,\n\t\t...props\n\t},\n\tforwardedRef\n) {\n\tprops = removeNativeProps( props );\n\n\tif ( onSplit ) {\n\t\tdeprecated( 'wp.blockEditor.RichText onSplit prop', {\n\t\t\tsince: '6.4',\n\t\t\talternative: 'block.json support key: \"splitting\"',\n\t\t} );\n\t}\n\n\tconst instanceId = useInstanceId( RichTextWrapper );\n\tconst anchorRef = useRef();\n\tconst context = useBlockEditContext();\n\tconst { clientId, isSelected: isBlockSelected, name: blockName } = context;\n\tconst blockBindings = context[ blockBindingsKey ];\n\tconst blockContext = useContext( BlockContext );\n\tconst registry = useRegistry();\n\tconst selector = ( select ) => {\n\t\t// Avoid subscribing to the block editor store if the block is not\n\t\t// selected.\n\t\tif ( ! isBlockSelected ) {\n\t\t\treturn { isSelected: false };\n\t\t}\n\n\t\tconst { getSelectionStart, getSelectionEnd } =\n\t\t\tselect( blockEditorStore );\n\t\tconst selectionStart = getSelectionStart();\n\t\tconst selectionEnd = getSelectionEnd();\n\n\t\tlet isSelected;\n\n\t\tif ( originalIsSelected === undefined ) {\n\t\t\tisSelected =\n\t\t\t\tselectionStart.clientId === clientId &&\n\t\t\t\tselectionEnd.clientId === clientId &&\n\t\t\t\t( identifier\n\t\t\t\t\t? selectionStart.attributeKey === identifier\n\t\t\t\t\t: selectionStart[ instanceIdKey ] === instanceId );\n\t\t} else if ( originalIsSelected ) {\n\t\t\tisSelected = selectionStart.clientId === clientId;\n\t\t}\n\n\t\treturn {\n\t\t\tselectionStart: isSelected ? selectionStart.offset : undefined,\n\t\t\tselectionEnd: isSelected ? selectionEnd.offset : undefined,\n\t\t\tisSelected,\n\t\t};\n\t};\n\tconst { selectionStart, selectionEnd, isSelected } = useSelect( selector, [\n\t\tclientId,\n\t\tidentifier,\n\t\tinstanceId,\n\t\toriginalIsSelected,\n\t\tisBlockSelected,\n\t] );\n\n\tconst { disableBoundBlock, bindingsPlaceholder } = useSelect(\n\t\t( select ) => {\n\t\t\tif (\n\t\t\t\t! blockBindings?.[ identifier ] ||\n\t\t\t\t! canBindBlock( blockName )\n\t\t\t) {\n\t\t\t\treturn {};\n\t\t\t}\n\n\t\t\tconst relatedBinding = blockBindings[ identifier ];\n\t\t\tconst { getBlockBindingsSource } = unlock( select( blocksStore ) );\n\t\t\tconst blockBindingsSource = getBlockBindingsSource(\n\t\t\t\trelatedBinding.source\n\t\t\t);\n\t\t\tconst fieldsList = blockBindingsSource?.getFieldsList?.( {\n\t\t\t\tregistry,\n\t\t\t\tcontext: blockContext,\n\t\t\t} );\n\n\t\t\tconst _disableBoundBlock =\n\t\t\t\t! blockBindingsSource?.canUserEditValue?.( {\n\t\t\t\t\tselect,\n\t\t\t\t\tcontext: blockContext,\n\t\t\t\t\targs: relatedBinding.args,\n\t\t\t\t} );\n\n\t\t\tconst bindingKey =\n\t\t\t\tfieldsList?.[ relatedBinding?.args?.key ]?.label ??\n\t\t\t\tblockBindingsSource?.label;\n\n\t\t\tconst _bindingsPlaceholder = _disableBoundBlock\n\t\t\t\t? bindingKey\n\t\t\t\t: sprintf(\n\t\t\t\t\t\t/* translators: %s: connected field label or source label */\n\t\t\t\t\t\t__( 'Add %s' ),\n\t\t\t\t\t\tbindingKey\n\t\t\t\t );\n\n\t\t\treturn {\n\t\t\t\tdisableBoundBlock: _disableBoundBlock,\n\t\t\t\tbindingsPlaceholder:\n\t\t\t\t\t( ! adjustedValue || adjustedValue.length === 0 ) &&\n\t\t\t\t\t_bindingsPlaceholder,\n\t\t\t};\n\t\t},\n\t\t[\n\t\t\tblockBindings,\n\t\t\tidentifier,\n\t\t\tblockName,\n\t\t\tblockContext,\n\t\t\tregistry,\n\t\t\tadjustedValue,\n\t\t]\n\t);\n\n\tconst shouldDisableEditing = readOnly || disableBoundBlock;\n\n\tconst { getSelectionStart, getSelectionEnd, getBlockRootClientId } =\n\t\tuseSelect( blockEditorStore );\n\tconst { selectionChange } = useDispatch( blockEditorStore );\n\tconst adjustedAllowedFormats = getAllowedFormats( {\n\t\tallowedFormats,\n\t\tdisableFormats,\n\t} );\n\tconst hasFormats =\n\t\t! adjustedAllowedFormats || adjustedAllowedFormats.length > 0;\n\n\tconst onSelectionChange = useCallback(\n\t\t( start, end ) => {\n\t\t\tconst selection = {};\n\t\t\tconst unset = start === undefined && end === undefined;\n\n\t\t\tconst baseSelection = {\n\t\t\t\tclientId,\n\t\t\t\t[ identifier ? 'attributeKey' : instanceIdKey ]: identifier\n\t\t\t\t\t? identifier\n\t\t\t\t\t: instanceId,\n\t\t\t};\n\n\t\t\tif ( typeof start === 'number' || unset ) {\n\t\t\t\t// If we are only setting the start (or the end below), which\n\t\t\t\t// means a partial selection, and we're not updating a selection\n\t\t\t\t// with the same client ID, abort. This means the selected block\n\t\t\t\t// is a parent block.\n\t\t\t\tif (\n\t\t\t\t\tend === undefined &&\n\t\t\t\t\tgetBlockRootClientId( clientId ) !==\n\t\t\t\t\t\tgetBlockRootClientId( getSelectionEnd().clientId )\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tselection.start = {\n\t\t\t\t\t...baseSelection,\n\t\t\t\t\toffset: start,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif ( typeof end === 'number' || unset ) {\n\t\t\t\tif (\n\t\t\t\t\tstart === undefined &&\n\t\t\t\t\tgetBlockRootClientId( clientId ) !==\n\t\t\t\t\t\tgetBlockRootClientId( getSelectionStart().clientId )\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tselection.end = {\n\t\t\t\t\t...baseSelection,\n\t\t\t\t\toffset: end,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tselectionChange( selection );\n\t\t},\n\t\t[\n\t\t\tclientId,\n\t\t\tgetBlockRootClientId,\n\t\t\tgetSelectionEnd,\n\t\t\tgetSelectionStart,\n\t\t\tidentifier,\n\t\t\tinstanceId,\n\t\t\tselectionChange,\n\t\t]\n\t);\n\n\tconst {\n\t\tformatTypes,\n\t\tprepareHandlers,\n\t\tvalueHandlers,\n\t\tchangeHandlers,\n\t\tdependencies,\n\t} = useFormatTypes( {\n\t\tclientId,\n\t\tidentifier,\n\t\twithoutInteractiveFormatting,\n\t\tallowedFormats: adjustedAllowedFormats,\n\t} );\n\n\tfunction addEditorOnlyFormats( value ) {\n\t\treturn valueHandlers.reduce(\n\t\t\t( accumulator, fn ) => fn( accumulator, value.text ),\n\t\t\tvalue.formats\n\t\t);\n\t}\n\n\tfunction removeEditorOnlyFormats( value ) {\n\t\tformatTypes.forEach( ( formatType ) => {\n\t\t\t// Remove formats created by prepareEditableTree, because they are editor only.\n\t\t\tif ( formatType.__experimentalCreatePrepareEditableTree ) {\n\t\t\t\tvalue = removeFormat(\n\t\t\t\t\tvalue,\n\t\t\t\t\tformatType.name,\n\t\t\t\t\t0,\n\t\t\t\t\tvalue.text.length\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t\treturn value.formats;\n\t}\n\n\tfunction addInvisibleFormats( value ) {\n\t\treturn prepareHandlers.reduce(\n\t\t\t( accumulator, fn ) => fn( accumulator, value.text ),\n\t\t\tvalue.formats\n\t\t);\n\t}\n\n\tconst {\n\t\tvalue,\n\t\tgetValue,\n\t\tonChange,\n\t\tref: richTextRef,\n\t} = useRichText( {\n\t\tvalue: adjustedValue,\n\t\tonChange( html, { __unstableFormats, __unstableText } ) {\n\t\t\tadjustedOnChange( html );\n\t\t\tObject.values( changeHandlers ).forEach( ( changeHandler ) => {\n\t\t\t\tchangeHandler( __unstableFormats, __unstableText );\n\t\t\t} );\n\t\t},\n\t\tselectionStart,\n\t\tselectionEnd,\n\t\tonSelectionChange,\n\t\tplaceholder: bindingsPlaceholder || placeholder,\n\t\t__unstableIsSelected: isSelected,\n\t\t__unstableDisableFormats: disableFormats,\n\t\tpreserveWhiteSpace,\n\t\t__unstableDependencies: [ ...dependencies, tagName ],\n\t\t__unstableAfterParse: addEditorOnlyFormats,\n\t\t__unstableBeforeSerialize: removeEditorOnlyFormats,\n\t\t__unstableAddInvisibleFormats: addInvisibleFormats,\n\t} );\n\tconst autocompleteProps = useBlockEditorAutocompleteProps( {\n\t\tonReplace,\n\t\tcompleters: autocompleters,\n\t\trecord: value,\n\t\tonChange,\n\t} );\n\n\tuseMarkPersistent( { html: adjustedValue, value } );\n\n\tconst keyboardShortcuts = useRef( new Set() );\n\tconst inputEvents = useRef( new Set() );\n\n\tfunction onFocus() {\n\t\tlet element = anchorRef.current;\n\n\t\tif ( ! element ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Writing flow might be editable, so we should make sure focus goes to\n\t\t// the root editable element.\n\t\twhile ( element.parentElement?.isContentEditable ) {\n\t\t\telement = element.parentElement;\n\t\t}\n\n\t\telement.focus();\n\t}\n\n\tconst TagName = tagName;\n\treturn (\n\t\t<>\n\t\t\t{ isSelected && (\n\t\t\t\t<keyboardShortcutContext.Provider value={ keyboardShortcuts }>\n\t\t\t\t\t<inputEventContext.Provider value={ inputEvents }>\n\t\t\t\t\t\t<Popover.__unstableSlotNameProvider value=\"__unstable-block-tools-after\">\n\t\t\t\t\t\t\t{ children &&\n\t\t\t\t\t\t\t\tchildren( { value, onChange, onFocus } ) }\n\n\t\t\t\t\t\t\t<FormatEdit\n\t\t\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t\t\tonFocus={ onFocus }\n\t\t\t\t\t\t\t\tformatTypes={ formatTypes }\n\t\t\t\t\t\t\t\tforwardedRef={ anchorRef }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Popover.__unstableSlotNameProvider>\n\t\t\t\t\t</inputEventContext.Provider>\n\t\t\t\t</keyboardShortcutContext.Provider>\n\t\t\t) }\n\t\t\t{ isSelected && hasFormats && (\n\t\t\t\t<FormatToolbarContainer\n\t\t\t\t\tinline={ inlineToolbar }\n\t\t\t\t\teditableContentElement={ anchorRef.current }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t<TagName\n\t\t\t\t// Overridable props.\n\t\t\t\trole=\"textbox\"\n\t\t\t\taria-multiline={ ! disableLineBreaks }\n\t\t\t\taria-readonly={ shouldDisableEditing }\n\t\t\t\t{ ...props }\n\t\t\t\taria-label={\n\t\t\t\t\tbindingsPlaceholder || props[ 'aria-label' ] || placeholder\n\t\t\t\t}\n\t\t\t\t{ ...autocompleteProps }\n\t\t\t\tref={ useMergeRefs( [\n\t\t\t\t\t// Rich text ref must be first because its focus listener\n\t\t\t\t\t// must be set up before any other ref calls .focus() on\n\t\t\t\t\t// mount.\n\t\t\t\t\trichTextRef,\n\t\t\t\t\tforwardedRef,\n\t\t\t\t\tautocompleteProps.ref,\n\t\t\t\t\tprops.ref,\n\t\t\t\t\tuseEventListeners( {\n\t\t\t\t\t\tregistry,\n\t\t\t\t\t\tgetValue,\n\t\t\t\t\t\tonChange,\n\t\t\t\t\t\t__unstableAllowPrefixTransformations,\n\t\t\t\t\t\tformatTypes,\n\t\t\t\t\t\tonReplace,\n\t\t\t\t\t\tselectionChange,\n\t\t\t\t\t\tisSelected,\n\t\t\t\t\t\tdisableFormats,\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\ttagName,\n\t\t\t\t\t\tonSplit,\n\t\t\t\t\t\t__unstableEmbedURLOnPaste,\n\t\t\t\t\t\tpastePlainText,\n\t\t\t\t\t\tonMerge,\n\t\t\t\t\t\tonRemove,\n\t\t\t\t\t\tremoveEditorOnlyFormats,\n\t\t\t\t\t\tdisableLineBreaks,\n\t\t\t\t\t\tonSplitAtEnd,\n\t\t\t\t\t\tonSplitAtDoubleLineEnd,\n\t\t\t\t\t\tkeyboardShortcuts,\n\t\t\t\t\t\tinputEvents,\n\t\t\t\t\t} ),\n\t\t\t\t\tanchorRef,\n\t\t\t\t] ) }\n\t\t\t\tcontentEditable={ ! shouldDisableEditing }\n\t\t\t\tsuppressContentEditableWarning\n\t\t\t\tclassName={ clsx(\n\t\t\t\t\t'block-editor-rich-text__editable',\n\t\t\t\t\tprops.className,\n\t\t\t\t\t'rich-text'\n\t\t\t\t) }\n\t\t\t\t// Setting tabIndex to 0 is unnecessary, the element is already\n\t\t\t\t// focusable because it's contentEditable. This also fixes a\n\t\t\t\t// Safari bug where it's not possible to Shift+Click multi\n\t\t\t\t// select blocks when Shift Clicking into an element with\n\t\t\t\t// tabIndex because Safari will focus the element. However,\n\t\t\t\t// Safari will correctly ignore nested contentEditable elements.\n\t\t\t\ttabIndex={\n\t\t\t\t\tprops.tabIndex === 0 && ! shouldDisableEditing\n\t\t\t\t\t\t? null\n\t\t\t\t\t\t: props.tabIndex\n\t\t\t\t}\n\t\t\t\tdata-wp-block-attribute-key={ identifier }\n\t\t\t/>\n\t\t</>\n\t);\n}\n\n// This is the private API for the RichText component.\n// It allows access to all props, not just the public ones.\nexport const PrivateRichText = withDeprecations(\n\tforwardRef( RichTextWrapper )\n);\n\nPrivateRichText.Content = Content;\nPrivateRichText.isEmpty = ( value ) => {\n\treturn ! value || value.length === 0;\n};\n\n// This is the public API for the RichText component.\n// We wrap the PrivateRichText component to hide some props from the public API.\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/rich-text/README.md\n */\nconst PublicForwardedRichTextContainer = forwardRef( ( props, ref ) => {\n\tconst context = useBlockEditContext();\n\tconst isPreviewMode = context[ isPreviewModeKey ];\n\n\tif ( isPreviewMode ) {\n\t\t// Remove all non-content props.\n\t\tconst {\n\t\t\tchildren,\n\t\t\ttagName: Tag = 'div',\n\t\t\tvalue,\n\t\t\tonChange,\n\t\t\tisSelected,\n\t\t\tmultiline,\n\t\t\tinlineToolbar,\n\t\t\twrapperClassName,\n\t\t\tautocompleters,\n\t\t\tonReplace,\n\t\t\tplaceholder,\n\t\t\tallowedFormats,\n\t\t\twithoutInteractiveFormatting,\n\t\t\tonRemove,\n\t\t\tonMerge,\n\t\t\tonSplit,\n\t\t\t__unstableOnSplitAtEnd,\n\t\t\t__unstableOnSplitAtDoubleLineEnd,\n\t\t\tidentifier,\n\t\t\tpreserveWhiteSpace,\n\t\t\t__unstablePastePlainText,\n\t\t\t__unstableEmbedURLOnPaste,\n\t\t\t__unstableDisableFormats,\n\t\t\tdisableLineBreaks,\n\t\t\t__unstableAllowPrefixTransformations,\n\t\t\treadOnly,\n\t\t\t...contentProps\n\t\t} = removeNativeProps( props );\n\t\treturn (\n\t\t\t<Tag\n\t\t\t\t{ ...contentProps }\n\t\t\t\tdangerouslySetInnerHTML={ {\n\t\t\t\t\t__html: valueToHTMLString( value, multiline ),\n\t\t\t\t} }\n\t\t\t/>\n\t\t);\n\t}\n\n\treturn <PrivateRichText ref={ ref } { ...props } readOnly={ false } />;\n} );\n\nPublicForwardedRichTextContainer.Content = Content;\nPublicForwardedRichTextContainer.isEmpty = ( value ) => {\n\treturn ! value || value.length === 0;\n};\n\nexport default PublicForwardedRichTextContainer;\nexport { RichTextShortcut } from './shortcut';\nexport { RichTextToolbarButton } from './toolbar-button';\nexport { __unstableRichTextInputEvent } from './input-event';\n"],"mappings":"AAAA;AACA;AACA;AACA,OAAOA,IAAI,MAAM,MAAM;;AAEvB;AACA;AACA;AACA,SACCC,MAAM,EACNC,WAAW,EACXC,UAAU,EACVC,aAAa,EACbC,UAAU,QACJ,oBAAoB;AAC3B,SAASC,WAAW,EAAEC,WAAW,EAAEC,SAAS,QAAQ,iBAAiB;AACrE,SAASC,YAAY,EAAEC,aAAa,QAAQ,oBAAoB;AAChE,SACCC,qBAAqB,IAAIC,WAAW,EACpCC,YAAY,QACN,sBAAsB;AAC7B,SAASC,OAAO,QAAQ,uBAAuB;AAC/C,SAASC,KAAK,IAAIC,WAAW,QAAQ,mBAAmB;AACxD,OAAOC,UAAU,MAAM,uBAAuB;AAC9C,SAASC,EAAE,EAAEC,OAAO,QAAQ,iBAAiB;;AAE7C;AACA;AACA;AACA,SAASC,+BAA+B,QAAQ,iBAAiB;AACjE,SAASC,mBAAmB,QAAQ,eAAe;AACnD,SAASC,gBAAgB,EAAEC,gBAAgB,QAAQ,uBAAuB;AAC1E,OAAOC,sBAAsB,MAAM,4BAA4B;AAC/D,SAAST,KAAK,IAAIU,gBAAgB,QAAQ,aAAa;AACvD,SAASC,iBAAiB,QAAQ,uBAAuB;AACzD,SAASC,cAAc,QAAQ,oBAAoB;AACnD,SAASC,iBAAiB,QAAQ,mBAAmB;AACrD,OAAOC,UAAU,MAAM,eAAe;AACtC,SAASC,iBAAiB,QAAQ,SAAS;AAC3C,SAASC,OAAO,EAAEC,iBAAiB,QAAQ,WAAW;AACtD,SAASC,gBAAgB,QAAQ,qBAAqB;AACtD,SAASC,MAAM,QAAQ,mBAAmB;AAC1C,SAASC,YAAY,QAAQ,qCAAqC;AAClE,OAAOC,YAAY,MAAM,kBAAkB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAAAC,IAAA,IAAAC,KAAA;AAAA,SAAAC,QAAA,IAAAC,SAAA;AAE5C,OAAO,MAAMC,uBAAuB,GAAGvC,aAAa,CAAC,CAAC;AACtD,OAAO,MAAMwC,iBAAiB,GAAGxC,aAAa,CAAC,CAAC;AAEhD,MAAMyC,aAAa,GAAGC,MAAM,CAAE,YAAa,CAAC;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,iBAAiBA,CAAEC,KAAK,EAAG;EACnC,MAAM;IACLC,8BAA8B;IAC9BC,WAAW;IACXC,oBAAoB;IACpBC,SAAS;IACTC,cAAc;IACdC,eAAe;IACfC,kBAAkB;IAClBC,QAAQ;IACRC,UAAU;IACVC,UAAU;IACVC,SAAS;IACTC,QAAQ;IACRC,QAAQ;IACRC,kBAAkB;IAClBC,qBAAqB;IACrB,GAAGC;EACJ,CAAC,GAAGhB,KAAK;EACT,OAAOgB,SAAS;AACjB;AAEA,OAAO,SAASC,eAAeA,CAC9B;EACCC,QAAQ;EACRC,OAAO,GAAG,KAAK;EACfC,KAAK,EAAEC,aAAa,GAAG,EAAE;EACzBC,QAAQ,EAAEC,gBAAgB;EAC1BC,UAAU,EAAEC,kBAAkB;EAC9BC,SAAS;EACTC,aAAa;EACbC,gBAAgB;EAChBC,cAAc;EACdC,SAAS;EACTC,WAAW;EACXC,cAAc;EACdC,4BAA4B;EAC5BC,QAAQ;EACRC,OAAO;EACPC,OAAO;EACPC,sBAAsB,EAAEC,YAAY;EACpCC,gCAAgC,EAAEC,sBAAsB;EACxDC,UAAU;EACVC,kBAAkB;EAClBC,wBAAwB,EAAEC,cAAc;EACxCC,yBAAyB;EACzBC,wBAAwB,EAAEC,cAAc;EACxCC,iBAAiB;EACjBC,oCAAoC;EACpCC,QAAQ;EACR,GAAGlD;AACJ,CAAC,EACDmD,YAAY,EACX;EACDnD,KAAK,GAAGD,iBAAiB,CAAEC,KAAM,CAAC;EAElC,IAAKoC,OAAO,EAAG;IACdnE,UAAU,CAAE,sCAAsC,EAAE;MACnDmF,KAAK,EAAE,KAAK;MACZC,WAAW,EAAE;IACd,CAAE,CAAC;EACJ;EAEA,MAAMC,UAAU,GAAG5F,aAAa,CAAEuD,eAAgB,CAAC;EACnD,MAAMsC,SAAS,GAAGtG,MAAM,CAAC,CAAC;EAC1B,MAAMuG,OAAO,GAAGnF,mBAAmB,CAAC,CAAC;EACrC,MAAM;IAAEoF,QAAQ;IAAEjC,UAAU,EAAEkC,eAAe;IAAEC,IAAI,EAAEC;EAAU,CAAC,GAAGJ,OAAO;EAC1E,MAAMK,aAAa,GAAGL,OAAO,CAAElF,gBAAgB,CAAE;EACjD,MAAMwF,YAAY,GAAGzG,UAAU,CAAE+B,YAAa,CAAC;EAC/C,MAAM2E,QAAQ,GAAGxG,WAAW,CAAC,CAAC;EAC9B,MAAMyG,QAAQ,GAAKC,MAAM,IAAM;IAC9B;IACA;IACA,IAAK,CAAEP,eAAe,EAAG;MACxB,OAAO;QAAElC,UAAU,EAAE;MAAM,CAAC;IAC7B;IAEA,MAAM;MAAE0C,iBAAiB;MAAEC;IAAgB,CAAC,GAC3CF,MAAM,CAAExF,gBAAiB,CAAC;IAC3B,MAAM2F,cAAc,GAAGF,iBAAiB,CAAC,CAAC;IAC1C,MAAMG,YAAY,GAAGF,eAAe,CAAC,CAAC;IAEtC,IAAI3C,UAAU;IAEd,IAAKC,kBAAkB,KAAK6C,SAAS,EAAG;MACvC9C,UAAU,GACT4C,cAAc,CAACX,QAAQ,KAAKA,QAAQ,IACpCY,YAAY,CAACZ,QAAQ,KAAKA,QAAQ,KAChChB,UAAU,GACT2B,cAAc,CAACG,YAAY,KAAK9B,UAAU,GAC1C2B,cAAc,CAAEvE,aAAa,CAAE,KAAKyD,UAAU,CAAE;IACrD,CAAC,MAAM,IAAK7B,kBAAkB,EAAG;MAChCD,UAAU,GAAG4C,cAAc,CAACX,QAAQ,KAAKA,QAAQ;IAClD;IAEA,OAAO;MACNW,cAAc,EAAE5C,UAAU,GAAG4C,cAAc,CAACI,MAAM,GAAGF,SAAS;MAC9DD,YAAY,EAAE7C,UAAU,GAAG6C,YAAY,CAACG,MAAM,GAAGF,SAAS;MAC1D9C;IACD,CAAC;EACF,CAAC;EACD,MAAM;IAAE4C,cAAc;IAAEC,YAAY;IAAE7C;EAAW,CAAC,GAAGhE,SAAS,CAAEwG,QAAQ,EAAE,CACzEP,QAAQ,EACRhB,UAAU,EACVa,UAAU,EACV7B,kBAAkB,EAClBiC,eAAe,CACd,CAAC;EAEH,MAAM;IAAEe,iBAAiB;IAAEC;EAAoB,CAAC,GAAGlH,SAAS,CACzDyG,MAAM,IAAM;IAAA,IAAAU,qBAAA;IACb,IACC,CAAEd,aAAa,GAAIpB,UAAU,CAAE,IAC/B,CAAEtD,YAAY,CAAEyE,SAAU,CAAC,EAC1B;MACD,OAAO,CAAC,CAAC;IACV;IAEA,MAAMgB,cAAc,GAAGf,aAAa,CAAEpB,UAAU,CAAE;IAClD,MAAM;MAAEoC;IAAuB,CAAC,GAAG3F,MAAM,CAAE+E,MAAM,CAAEjG,WAAY,CAAE,CAAC;IAClE,MAAM8G,mBAAmB,GAAGD,sBAAsB,CACjDD,cAAc,CAACG,MAChB,CAAC;IACD,MAAMC,UAAU,GAAGF,mBAAmB,EAAEG,aAAa,GAAI;MACxDlB,QAAQ;MACRP,OAAO,EAAEM;IACV,CAAE,CAAC;IAEH,MAAMoB,kBAAkB,GACvB,CAAEJ,mBAAmB,EAAEK,gBAAgB,GAAI;MAC1ClB,MAAM;MACNT,OAAO,EAAEM,YAAY;MACrBsB,IAAI,EAAER,cAAc,CAACQ;IACtB,CAAE,CAAC;IAEJ,MAAMC,UAAU,IAAAV,qBAAA,GACfK,UAAU,GAAIJ,cAAc,EAAEQ,IAAI,EAAEE,GAAG,CAAE,EAAEC,KAAK,cAAAZ,qBAAA,cAAAA,qBAAA,GAChDG,mBAAmB,EAAES,KAAK;IAE3B,MAAMC,oBAAoB,GAAGN,kBAAkB,GAC5CG,UAAU,GACVlH,OAAO,EACP;IACAD,EAAE,CAAE,QAAS,CAAC,EACdmH,UACA,CAAC;IAEJ,OAAO;MACNZ,iBAAiB,EAAES,kBAAkB;MACrCR,mBAAmB,EAClB,CAAE,CAAErD,aAAa,IAAIA,aAAa,CAACoE,MAAM,KAAK,CAAC,KAC/CD;IACF,CAAC;EACF,CAAC,EACD,CACC3B,aAAa,EACbpB,UAAU,EACVmB,SAAS,EACTE,YAAY,EACZC,QAAQ,EACR1C,aAAa,CAEf,CAAC;EAED,MAAMqE,oBAAoB,GAAGxC,QAAQ,IAAIuB,iBAAiB;EAE1D,MAAM;IAAEP,iBAAiB;IAAEC,eAAe;IAAEwB;EAAqB,CAAC,GACjEnI,SAAS,CAAEiB,gBAAiB,CAAC;EAC9B,MAAM;IAAEmH;EAAgB,CAAC,GAAGtI,WAAW,CAAEmB,gBAAiB,CAAC;EAC3D,MAAMoH,sBAAsB,GAAG/G,iBAAiB,CAAE;IACjDkD,cAAc;IACde;EACD,CAAE,CAAC;EACH,MAAM+C,UAAU,GACf,CAAED,sBAAsB,IAAIA,sBAAsB,CAACJ,MAAM,GAAG,CAAC;EAE9D,MAAMM,iBAAiB,GAAG7I,WAAW,CACpC,CAAE8I,KAAK,EAAEC,GAAG,KAAM;IACjB,MAAMC,SAAS,GAAG,CAAC,CAAC;IACpB,MAAMC,KAAK,GAAGH,KAAK,KAAK1B,SAAS,IAAI2B,GAAG,KAAK3B,SAAS;IAEtD,MAAM8B,aAAa,GAAG;MACrB3C,QAAQ;MACR,CAAEhB,UAAU,GAAG,cAAc,GAAG5C,aAAa,GAAI4C,UAAU,GACxDA,UAAU,GACVa;IACJ,CAAC;IAED,IAAK,OAAO0C,KAAK,KAAK,QAAQ,IAAIG,KAAK,EAAG;MACzC;MACA;MACA;MACA;MACA,IACCF,GAAG,KAAK3B,SAAS,IACjBqB,oBAAoB,CAAElC,QAAS,CAAC,KAC/BkC,oBAAoB,CAAExB,eAAe,CAAC,CAAC,CAACV,QAAS,CAAC,EAClD;QACD;MACD;MAEAyC,SAAS,CAACF,KAAK,GAAG;QACjB,GAAGI,aAAa;QAChB5B,MAAM,EAAEwB;MACT,CAAC;IACF;IAEA,IAAK,OAAOC,GAAG,KAAK,QAAQ,IAAIE,KAAK,EAAG;MACvC,IACCH,KAAK,KAAK1B,SAAS,IACnBqB,oBAAoB,CAAElC,QAAS,CAAC,KAC/BkC,oBAAoB,CAAEzB,iBAAiB,CAAC,CAAC,CAACT,QAAS,CAAC,EACpD;QACD;MACD;MAEAyC,SAAS,CAACD,GAAG,GAAG;QACf,GAAGG,aAAa;QAChB5B,MAAM,EAAEyB;MACT,CAAC;IACF;IAEAL,eAAe,CAAEM,SAAU,CAAC;EAC7B,CAAC,EACD,CACCzC,QAAQ,EACRkC,oBAAoB,EACpBxB,eAAe,EACfD,iBAAiB,EACjBzB,UAAU,EACVa,UAAU,EACVsC,eAAe,CAEjB,CAAC;EAED,MAAM;IACLS,WAAW;IACXC,eAAe;IACfC,aAAa;IACbC,cAAc;IACdC;EACD,CAAC,GAAG9H,cAAc,CAAE;IACnB8E,QAAQ;IACRhB,UAAU;IACVR,4BAA4B;IAC5BD,cAAc,EAAE6D;EACjB,CAAE,CAAC;EAEH,SAASa,oBAAoBA,CAAEtF,KAAK,EAAG;IACtC,OAAOmF,aAAa,CAACI,MAAM,CAC1B,CAAEC,WAAW,EAAEC,EAAE,KAAMA,EAAE,CAAED,WAAW,EAAExF,KAAK,CAAC0F,IAAK,CAAC,EACpD1F,KAAK,CAAC2F,OACP,CAAC;EACF;EAEA,SAASC,uBAAuBA,CAAE5F,KAAK,EAAG;IACzCiF,WAAW,CAACY,OAAO,CAAIC,UAAU,IAAM;MACtC;MACA,IAAKA,UAAU,CAACC,uCAAuC,EAAG;QACzD/F,KAAK,GAAGvD,YAAY,CACnBuD,KAAK,EACL8F,UAAU,CAACvD,IAAI,EACf,CAAC,EACDvC,KAAK,CAAC0F,IAAI,CAACrB,MACZ,CAAC;MACF;IACD,CAAE,CAAC;IAEH,OAAOrE,KAAK,CAAC2F,OAAO;EACrB;EAEA,SAASK,mBAAmBA,CAAEhG,KAAK,EAAG;IACrC,OAAOkF,eAAe,CAACK,MAAM,CAC5B,CAAEC,WAAW,EAAEC,EAAE,KAAMA,EAAE,CAAED,WAAW,EAAExF,KAAK,CAAC0F,IAAK,CAAC,EACpD1F,KAAK,CAAC2F,OACP,CAAC;EACF;EAEA,MAAM;IACL3F,KAAK;IACLiG,QAAQ;IACR/F,QAAQ;IACRgG,GAAG,EAAEC;EACN,CAAC,GAAG3J,WAAW,CAAE;IAChBwD,KAAK,EAAEC,aAAa;IACpBC,QAAQA,CAAEkG,IAAI,EAAE;MAAEC,iBAAiB;MAAEC;IAAe,CAAC,EAAG;MACvDnG,gBAAgB,CAAEiG,IAAK,CAAC;MACxBG,MAAM,CAACC,MAAM,CAAEpB,cAAe,CAAC,CAACS,OAAO,CAAIY,aAAa,IAAM;QAC7DA,aAAa,CAAEJ,iBAAiB,EAAEC,cAAe,CAAC;MACnD,CAAE,CAAC;IACJ,CAAC;IACDtD,cAAc;IACdC,YAAY;IACZ0B,iBAAiB;IACjBhE,WAAW,EAAE2C,mBAAmB,IAAI3C,WAAW;IAC/C+F,oBAAoB,EAAEtG,UAAU;IAChCsB,wBAAwB,EAAEC,cAAc;IACxCL,kBAAkB;IAClBqF,sBAAsB,EAAE,CAAE,GAAGtB,YAAY,EAAEtF,OAAO,CAAE;IACpD6G,oBAAoB,EAAEtB,oBAAoB;IAC1CuB,yBAAyB,EAAEjB,uBAAuB;IAClDkB,6BAA6B,EAAEd;EAChC,CAAE,CAAC;EACH,MAAMe,iBAAiB,GAAG/J,+BAA+B,CAAE;IAC1D0D,SAAS;IACTsG,UAAU,EAAEvG,cAAc;IAC1BwG,MAAM,EAAEjH,KAAK;IACbE;EACD,CAAE,CAAC;EAEH5C,iBAAiB,CAAE;IAAE8I,IAAI,EAAEnG,aAAa;IAAED;EAAM,CAAE,CAAC;EAEnD,MAAMkH,iBAAiB,GAAGrL,MAAM,CAAE,IAAIsL,GAAG,CAAC,CAAE,CAAC;EAC7C,MAAMC,WAAW,GAAGvL,MAAM,CAAE,IAAIsL,GAAG,CAAC,CAAE,CAAC;EAEvC,SAASE,OAAOA,CAAA,EAAG;IAClB,IAAIC,OAAO,GAAGnF,SAAS,CAACoF,OAAO;IAE/B,IAAK,CAAED,OAAO,EAAG;MAChB;IACD;;IAEA;IACA;IACA,OAAQA,OAAO,CAACE,aAAa,EAAEC,iBAAiB,EAAG;MAClDH,OAAO,GAAGA,OAAO,CAACE,aAAa;IAChC;IAEAF,OAAO,CAACI,KAAK,CAAC,CAAC;EAChB;EAEA,MAAMC,OAAO,GAAG5H,OAAO;EACvB,oBACC3B,KAAA,CAAAE,SAAA;IAAAwB,QAAA,GACGM,UAAU,iBACXlC,IAAA,CAACK,uBAAuB,CAACqJ,QAAQ;MAAC5H,KAAK,EAAGkH,iBAAmB;MAAApH,QAAA,eAC5D5B,IAAA,CAACM,iBAAiB,CAACoJ,QAAQ;QAAC5H,KAAK,EAAGoH,WAAa;QAAAtH,QAAA,eAChD1B,KAAA,CAAC1B,OAAO,CAACmL,0BAA0B;UAAC7H,KAAK,EAAC,8BAA8B;UAAAF,QAAA,GACrEA,QAAQ,IACTA,QAAQ,CAAE;YAAEE,KAAK;YAAEE,QAAQ;YAAEmH;UAAQ,CAAE,CAAC,eAEzCnJ,IAAA,CAACT,UAAU;YACVuC,KAAK,EAAGA,KAAO;YACfE,QAAQ,EAAGA,QAAU;YACrBmH,OAAO,EAAGA,OAAS;YACnBpC,WAAW,EAAGA,WAAa;YAC3BlD,YAAY,EAAGI;UAAW,CAC1B,CAAC;QAAA,CACiC;MAAC,CACV;IAAC,CACI,CAClC,EACC/B,UAAU,IAAIsE,UAAU,iBACzBxG,IAAA,CAACd,sBAAsB;MACtB0K,MAAM,EAAGvH,aAAe;MACxBwH,sBAAsB,EAAG5F,SAAS,CAACoF;IAAS,CAC5C,CACD,eACDrJ,IAAA,CAACyJ;IACA;IAAA;MACAK,IAAI,EAAC,SAAS;MACd,kBAAiB,CAAEpG,iBAAmB;MACtC,iBAAgB0C,oBAAsB;MAAA,GACjC1F,KAAK;MACV,cACC0E,mBAAmB,IAAI1E,KAAK,CAAE,YAAY,CAAE,IAAI+B,WAChD;MAAA,GACIoG,iBAAiB;MACtBb,GAAG,EAAG7J,YAAY,CAAE;MACnB;MACA;MACA;MACA8J,WAAW,EACXpE,YAAY,EACZgF,iBAAiB,CAACb,GAAG,EACrBtH,KAAK,CAACsH,GAAG,EACT1I,iBAAiB,CAAE;QAClBmF,QAAQ;QACRsD,QAAQ;QACR/F,QAAQ;QACR2B,oCAAoC;QACpCoD,WAAW;QACXvE,SAAS;QACT8D,eAAe;QACfpE,UAAU;QACVuB,cAAc;QACd3B,KAAK;QACLD,OAAO;QACPiB,OAAO;QACPS,yBAAyB;QACzBD,cAAc;QACdT,OAAO;QACPD,QAAQ;QACR8E,uBAAuB;QACvBhE,iBAAiB;QACjBV,YAAY;QACZE,sBAAsB;QACtB8F,iBAAiB;QACjBE;MACD,CAAE,CAAC,EACHjF,SAAS,CACR,CAAG;MACL8F,eAAe,EAAG,CAAE3D,oBAAsB;MAC1C4D,8BAA8B;MAC9BC,SAAS,EAAGvM,IAAI,CACf,kCAAkC,EAClCgD,KAAK,CAACuJ,SAAS,EACf,WACD;MACA;MACA;MACA;MACA;MACA;MACA;MAAA;MACAC,QAAQ,EACPxJ,KAAK,CAACwJ,QAAQ,KAAK,CAAC,IAAI,CAAE9D,oBAAoB,GAC3C,IAAI,GACJ1F,KAAK,CAACwJ,QACT;MACD,+BAA8B/G;IAAY,CAC1C,CAAC;EAAA,CACD,CAAC;AAEL;;AAEA;AACA;AACA,OAAO,MAAMgH,eAAe,GAAGxK,gBAAgB,CAC9C9B,UAAU,CAAE8D,eAAgB,CAC7B,CAAC;AAEDwI,eAAe,CAAC1K,OAAO,GAAGA,OAAO;AACjC0K,eAAe,CAACC,OAAO,GAAKtI,KAAK,IAAM;EACtC,OAAO,CAAEA,KAAK,IAAIA,KAAK,CAACqE,MAAM,KAAK,CAAC;AACrC,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,MAAMkE,gCAAgC,GAAGxM,UAAU,CAAE,CAAE6C,KAAK,EAAEsH,GAAG,KAAM;EACtE,MAAM9D,OAAO,GAAGnF,mBAAmB,CAAC,CAAC;EACrC,MAAMuL,aAAa,GAAGpG,OAAO,CAAEjF,gBAAgB,CAAE;EAEjD,IAAKqL,aAAa,EAAG;IACpB;IACA,MAAM;MACL1I,QAAQ;MACRC,OAAO,EAAE0I,GAAG,GAAG,KAAK;MACpBzI,KAAK;MACLE,QAAQ;MACRE,UAAU;MACVE,SAAS;MACTC,aAAa;MACbC,gBAAgB;MAChBC,cAAc;MACdC,SAAS;MACTC,WAAW;MACXC,cAAc;MACdC,4BAA4B;MAC5BC,QAAQ;MACRC,OAAO;MACPC,OAAO;MACPC,sBAAsB;MACtBE,gCAAgC;MAChCE,UAAU;MACVC,kBAAkB;MAClBC,wBAAwB;MACxBE,yBAAyB;MACzBC,wBAAwB;MACxBE,iBAAiB;MACjBC,oCAAoC;MACpCC,QAAQ;MACR,GAAG4G;IACJ,CAAC,GAAG/J,iBAAiB,CAAEC,KAAM,CAAC;IAC9B,oBACCV,IAAA,CAACuK,GAAG;MAAA,GACEC,YAAY;MACjBC,uBAAuB,EAAG;QACzBC,MAAM,EAAEhL,iBAAiB,CAAEoC,KAAK,EAAEM,SAAU;MAC7C;IAAG,CACH,CAAC;EAEJ;EAEA,oBAAOpC,IAAA,CAACmK,eAAe;IAACnC,GAAG,EAAGA,GAAK;IAAA,GAAMtH,KAAK;IAAGkD,QAAQ,EAAG;EAAO,CAAE,CAAC;AACvE,CAAE,CAAC;AAEHyG,gCAAgC,CAAC5K,OAAO,GAAGA,OAAO;AAClD4K,gCAAgC,CAACD,OAAO,GAAKtI,KAAK,IAAM;EACvD,OAAO,CAAEA,KAAK,IAAIA,KAAK,CAACqE,MAAM,KAAK,CAAC;AACrC,CAAC;AAED,eAAekE,gCAAgC;AAC/C,SAASM,gBAAgB,QAAQ,YAAY;AAC7C,SAASC,qBAAqB,QAAQ,kBAAkB;AACxD,SAASC,4BAA4B,QAAQ,eAAe","ignoreList":[]}
@@ -324,14 +324,26 @@ export function getInitialView(values = {}, sides) {
324
324
  // - Has no values and the supported sides are balanced
325
325
  const hasMatchingAxialValues = top === bottom && left === right && (!!top || !!left);
326
326
  const hasNoValuesAndBalancedSides = !sideValues.length && hasBalancedSidesSupport(sides);
327
+ const hasOnlyAxialSides = sides?.includes('horizontal') && sides?.includes('vertical') && sides?.length === 2;
328
+ if (hasAxisSupport(sides) && (hasMatchingAxialValues || hasNoValuesAndBalancedSides)) {
329
+ return VIEWS.axial;
330
+ }
331
+
332
+ // Only axial sides are supported and single value defined.
333
+ // - Ensure the side returned is the first side that has a value.
334
+ if (hasOnlyAxialSides && sideValues.length === 1) {
335
+ let side;
336
+ Object.entries(values).some(([key, value]) => {
337
+ side = key;
338
+ return value !== undefined;
339
+ });
340
+ return side;
341
+ }
327
342
 
328
343
  // Only single side supported and no value defined.
329
- if (sides?.length === 1) {
344
+ if (sides?.length === 1 && !sideValues.length) {
330
345
  return sides[0];
331
346
  }
332
- if (hasAxisSupport(sides) && (hasMatchingAxialValues || hasNoValuesAndBalancedSides)) {
333
- return VIEWS.axial;
334
- }
335
347
 
336
348
  // Default to the Custom (separated sides) view.
337
349
  return VIEWS.custom;
@@ -1 +1 @@
1
- {"version":3,"names":["__","sidesAll","sidesBottom","sidesHorizontal","sidesLeft","sidesRight","sidesTop","sidesVertical","RANGE_CONTROL_MAX_SIZE","ALL_SIDES","DEFAULT_VALUES","top","undefined","right","bottom","left","ICONS","custom","axial","horizontal","vertical","LABELS","default","mixed","VIEWS","isValueSpacingPreset","value","includes","getCustomValueFromPreset","spacingSizes","slug","getSpacingPresetSlug","spacingSize","find","size","String","getPresetValueFromCustomValue","spacingMatch","getSpacingPresetCssVar","match","getSliderValueFromPreset","presetValue","parseFloat","sliderValue","findIndex","NaN","mode","arr","sort","a","b","filter","v","length","pop","getAllRawValue","values","Object","isValuesMixed","sides","Set","isValuesDefined","hasAxisSupport","axis","hasHorizontalSupport","hasVerticalSupport","getSupportedMenuItems","menuItems","label","icon","numberOfIndividualSides","forEach","side","hasBalancedSidesSupport","counts","getInitialView","sideValues","Boolean","hasMatchingAxialValues","hasNoValuesAndBalancedSides"],"sources":["@wordpress/block-editor/src/components/spacing-sizes-control/utils.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\tsidesAll,\n\tsidesBottom,\n\tsidesHorizontal,\n\tsidesLeft,\n\tsidesRight,\n\tsidesTop,\n\tsidesVertical,\n} from '@wordpress/icons';\n\nexport const RANGE_CONTROL_MAX_SIZE = 8;\n\nexport const ALL_SIDES = [ 'top', 'right', 'bottom', 'left' ];\n\nexport const DEFAULT_VALUES = {\n\ttop: undefined,\n\tright: undefined,\n\tbottom: undefined,\n\tleft: undefined,\n};\n\nexport const ICONS = {\n\tcustom: sidesAll,\n\taxial: sidesAll,\n\thorizontal: sidesHorizontal,\n\tvertical: sidesVertical,\n\ttop: sidesTop,\n\tright: sidesRight,\n\tbottom: sidesBottom,\n\tleft: sidesLeft,\n};\n\nexport const LABELS = {\n\tdefault: __( 'Spacing control' ),\n\ttop: __( 'Top' ),\n\tbottom: __( 'Bottom' ),\n\tleft: __( 'Left' ),\n\tright: __( 'Right' ),\n\tmixed: __( 'Mixed' ),\n\tvertical: __( 'Vertical' ),\n\thorizontal: __( 'Horizontal' ),\n\taxial: __( 'Horizontal & vertical' ),\n\tcustom: __( 'Custom' ),\n};\n\nexport const VIEWS = {\n\taxial: 'axial',\n\ttop: 'top',\n\tright: 'right',\n\tbottom: 'bottom',\n\tleft: 'left',\n\tcustom: 'custom',\n};\n\n/**\n * Checks is given value is a spacing preset.\n *\n * @param {string} value Value to check\n *\n * @return {boolean} Return true if value is string in format var:preset|spacing|.\n */\nexport function isValueSpacingPreset( value ) {\n\tif ( ! value?.includes ) {\n\t\treturn false;\n\t}\n\treturn value === '0' || value.includes( 'var:preset|spacing|' );\n}\n\n/**\n * Converts a spacing preset into a custom value.\n *\n * @param {string} value Value to convert\n * @param {Array} spacingSizes Array of the current spacing preset objects\n *\n * @return {string} Mapping of the spacing preset to its equivalent custom value.\n */\nexport function getCustomValueFromPreset( value, spacingSizes ) {\n\tif ( ! isValueSpacingPreset( value ) ) {\n\t\treturn value;\n\t}\n\n\tconst slug = getSpacingPresetSlug( value );\n\tconst spacingSize = spacingSizes.find(\n\t\t( size ) => String( size.slug ) === slug\n\t);\n\n\treturn spacingSize?.size;\n}\n\n/**\n * Converts a custom value to preset value if one can be found.\n *\n * Returns value as-is if no match is found.\n *\n * @param {string} value Value to convert\n * @param {Array} spacingSizes Array of the current spacing preset objects\n *\n * @return {string} The preset value if it can be found.\n */\nexport function getPresetValueFromCustomValue( value, spacingSizes ) {\n\t// Return value as-is if it is undefined or is already a preset, or '0';\n\tif ( ! value || isValueSpacingPreset( value ) || value === '0' ) {\n\t\treturn value;\n\t}\n\n\tconst spacingMatch = spacingSizes.find(\n\t\t( size ) => String( size.size ) === String( value )\n\t);\n\n\tif ( spacingMatch?.slug ) {\n\t\treturn `var:preset|spacing|${ spacingMatch.slug }`;\n\t}\n\n\treturn value;\n}\n\n/**\n * Converts a spacing preset into a custom value.\n *\n * @param {string} value Value to convert.\n *\n * @return {string | undefined} CSS var string for given spacing preset value.\n */\nexport function getSpacingPresetCssVar( value ) {\n\tif ( ! value ) {\n\t\treturn;\n\t}\n\n\tconst slug = value.match( /var:preset\\|spacing\\|(.+)/ );\n\n\tif ( ! slug ) {\n\t\treturn value;\n\t}\n\n\treturn `var(--wp--preset--spacing--${ slug[ 1 ] })`;\n}\n\n/**\n * Returns the slug section of the given spacing preset string.\n *\n * @param {string} value Value to extract slug from.\n *\n * @return {string|undefined} The int value of the slug from given spacing preset.\n */\nexport function getSpacingPresetSlug( value ) {\n\tif ( ! value ) {\n\t\treturn;\n\t}\n\n\tif ( value === '0' || value === 'default' ) {\n\t\treturn value;\n\t}\n\n\tconst slug = value.match( /var:preset\\|spacing\\|(.+)/ );\n\n\treturn slug ? slug[ 1 ] : undefined;\n}\n\n/**\n * Converts spacing preset value into a Range component value .\n *\n * @param {string} presetValue Value to convert to Range value.\n * @param {Array} spacingSizes Array of current spacing preset value objects.\n *\n * @return {number} The int value for use in Range control.\n */\nexport function getSliderValueFromPreset( presetValue, spacingSizes ) {\n\tif ( presetValue === undefined ) {\n\t\treturn 0;\n\t}\n\tconst slug =\n\t\tparseFloat( presetValue, 10 ) === 0\n\t\t\t? '0'\n\t\t\t: getSpacingPresetSlug( presetValue );\n\tconst sliderValue = spacingSizes.findIndex( ( spacingSize ) => {\n\t\treturn String( spacingSize.slug ) === slug;\n\t} );\n\n\t// Returning NaN rather than undefined as undefined makes range control thumb sit in center\n\treturn sliderValue !== -1 ? sliderValue : NaN;\n}\n\n/**\n * Gets an items with the most occurrence within an array\n * https://stackoverflow.com/a/20762713\n *\n * @param {Array<any>} arr Array of items to check.\n * @return {any} The item with the most occurrences.\n */\nfunction mode( arr ) {\n\treturn arr\n\t\t.sort(\n\t\t\t( a, b ) =>\n\t\t\t\tarr.filter( ( v ) => v === a ).length -\n\t\t\t\tarr.filter( ( v ) => v === b ).length\n\t\t)\n\t\t.pop();\n}\n\n/**\n * Gets the 'all' input value from values data.\n *\n * @param {Object} values Box spacing values\n *\n * @return {string} The most common value from all sides of box.\n */\nexport function getAllRawValue( values = {} ) {\n\treturn mode( Object.values( values ) );\n}\n\n/**\n * Checks to determine if values are mixed.\n *\n * @param {Object} values Box values.\n * @param {Array} sides Sides that values relate to.\n *\n * @return {boolean} Whether values are mixed.\n */\nexport function isValuesMixed( values = {}, sides = ALL_SIDES ) {\n\treturn (\n\t\t( Object.values( values ).length >= 1 &&\n\t\t\tObject.values( values ).length < sides.length ) ||\n\t\tnew Set( Object.values( values ) ).size > 1\n\t);\n}\n\n/**\n * Checks to determine if values are defined.\n *\n * @param {Object} values Box values.\n *\n * @return {boolean} Whether values are defined.\n */\nexport function isValuesDefined( values ) {\n\tif ( values === undefined || values === null ) {\n\t\treturn false;\n\t}\n\treturn Object.values( values ).filter( ( value ) => !! value ).length > 0;\n}\n\n/**\n * Determines whether a particular axis has support. If no axis is\n * specified, this function checks if either axis is supported.\n *\n * @param {Array} sides Supported sides.\n * @param {string} axis Which axis to check.\n *\n * @return {boolean} Whether there is support for the specified axis or both axes.\n */\nexport function hasAxisSupport( sides, axis ) {\n\tif ( ! sides || ! sides.length ) {\n\t\treturn false;\n\t}\n\n\tconst hasHorizontalSupport =\n\t\tsides.includes( 'horizontal' ) ||\n\t\t( sides.includes( 'left' ) && sides.includes( 'right' ) );\n\n\tconst hasVerticalSupport =\n\t\tsides.includes( 'vertical' ) ||\n\t\t( sides.includes( 'top' ) && sides.includes( 'bottom' ) );\n\n\tif ( axis === 'horizontal' ) {\n\t\treturn hasHorizontalSupport;\n\t}\n\n\tif ( axis === 'vertical' ) {\n\t\treturn hasVerticalSupport;\n\t}\n\n\treturn hasHorizontalSupport || hasVerticalSupport;\n}\n\n/**\n * Determines which menu options should be included in the SidePicker.\n *\n * @param {Array} sides Supported sides.\n *\n * @return {Object} Menu options with each option containing label & icon.\n */\nexport function getSupportedMenuItems( sides ) {\n\tif ( ! sides || ! sides.length ) {\n\t\treturn {};\n\t}\n\n\tconst menuItems = {};\n\n\t// Determine the primary \"side\" menu options.\n\tconst hasHorizontalSupport = hasAxisSupport( sides, 'horizontal' );\n\tconst hasVerticalSupport = hasAxisSupport( sides, 'vertical' );\n\n\tif ( hasHorizontalSupport && hasVerticalSupport ) {\n\t\tmenuItems.axial = { label: LABELS.axial, icon: ICONS.axial };\n\t} else if ( hasHorizontalSupport ) {\n\t\tmenuItems.axial = { label: LABELS.horizontal, icon: ICONS.horizontal };\n\t} else if ( hasVerticalSupport ) {\n\t\tmenuItems.axial = { label: LABELS.vertical, icon: ICONS.vertical };\n\t}\n\n\t// Track whether we have any individual sides so we can omit the custom\n\t// option if required.\n\tlet numberOfIndividualSides = 0;\n\n\tALL_SIDES.forEach( ( side ) => {\n\t\tif ( sides.includes( side ) ) {\n\t\t\tnumberOfIndividualSides += 1;\n\t\t\tmenuItems[ side ] = {\n\t\t\t\tlabel: LABELS[ side ],\n\t\t\t\ticon: ICONS[ side ],\n\t\t\t};\n\t\t}\n\t} );\n\n\t// Add custom item if there are enough sides to warrant a separated view.\n\tif ( numberOfIndividualSides > 1 ) {\n\t\tmenuItems.custom = { label: LABELS.custom, icon: ICONS.custom };\n\t}\n\n\treturn menuItems;\n}\n\n/**\n * Checks if the supported sides are balanced for each axis.\n * - Horizontal - both left and right sides are supported.\n * - Vertical - both top and bottom are supported.\n *\n * @param {Array} sides The supported sides which may be axes as well.\n *\n * @return {boolean} Whether or not the supported sides are balanced.\n */\nexport function hasBalancedSidesSupport( sides = [] ) {\n\tconst counts = { top: 0, right: 0, bottom: 0, left: 0 };\n\tsides.forEach( ( side ) => ( counts[ side ] += 1 ) );\n\n\treturn (\n\t\t( counts.top + counts.bottom ) % 2 === 0 &&\n\t\t( counts.left + counts.right ) % 2 === 0\n\t);\n}\n\n/**\n * Determines which view the SpacingSizesControl should default to on its\n * first render; Axial, Custom, or Single side.\n *\n * @param {Object} values Current side values.\n * @param {Array} sides Supported sides.\n *\n * @return {string} View to display.\n */\nexport function getInitialView( values = {}, sides ) {\n\tconst { top, right, bottom, left } = values;\n\tconst sideValues = [ top, right, bottom, left ].filter( Boolean );\n\n\t// Axial ( Horizontal & vertical ).\n\t// - Has axial side support\n\t// - Has axial side values which match\n\t// - Has no values and the supported sides are balanced\n\tconst hasMatchingAxialValues =\n\t\ttop === bottom && left === right && ( !! top || !! left );\n\tconst hasNoValuesAndBalancedSides =\n\t\t! sideValues.length && hasBalancedSidesSupport( sides );\n\n\t// Only single side supported and no value defined.\n\tif ( sides?.length === 1 ) {\n\t\treturn sides[ 0 ];\n\t}\n\n\tif (\n\t\thasAxisSupport( sides ) &&\n\t\t( hasMatchingAxialValues || hasNoValuesAndBalancedSides )\n\t) {\n\t\treturn VIEWS.axial;\n\t}\n\n\t// Default to the Custom (separated sides) view.\n\treturn VIEWS.custom;\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["__","sidesAll","sidesBottom","sidesHorizontal","sidesLeft","sidesRight","sidesTop","sidesVertical","RANGE_CONTROL_MAX_SIZE","ALL_SIDES","DEFAULT_VALUES","top","undefined","right","bottom","left","ICONS","custom","axial","horizontal","vertical","LABELS","default","mixed","VIEWS","isValueSpacingPreset","value","includes","getCustomValueFromPreset","spacingSizes","slug","getSpacingPresetSlug","spacingSize","find","size","String","getPresetValueFromCustomValue","spacingMatch","getSpacingPresetCssVar","match","getSliderValueFromPreset","presetValue","parseFloat","sliderValue","findIndex","NaN","mode","arr","sort","a","b","filter","v","length","pop","getAllRawValue","values","Object","isValuesMixed","sides","Set","isValuesDefined","hasAxisSupport","axis","hasHorizontalSupport","hasVerticalSupport","getSupportedMenuItems","menuItems","label","icon","numberOfIndividualSides","forEach","side","hasBalancedSidesSupport","counts","getInitialView","sideValues","Boolean","hasMatchingAxialValues","hasNoValuesAndBalancedSides","hasOnlyAxialSides","entries","some","key"],"sources":["@wordpress/block-editor/src/components/spacing-sizes-control/utils.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\tsidesAll,\n\tsidesBottom,\n\tsidesHorizontal,\n\tsidesLeft,\n\tsidesRight,\n\tsidesTop,\n\tsidesVertical,\n} from '@wordpress/icons';\n\nexport const RANGE_CONTROL_MAX_SIZE = 8;\n\nexport const ALL_SIDES = [ 'top', 'right', 'bottom', 'left' ];\n\nexport const DEFAULT_VALUES = {\n\ttop: undefined,\n\tright: undefined,\n\tbottom: undefined,\n\tleft: undefined,\n};\n\nexport const ICONS = {\n\tcustom: sidesAll,\n\taxial: sidesAll,\n\thorizontal: sidesHorizontal,\n\tvertical: sidesVertical,\n\ttop: sidesTop,\n\tright: sidesRight,\n\tbottom: sidesBottom,\n\tleft: sidesLeft,\n};\n\nexport const LABELS = {\n\tdefault: __( 'Spacing control' ),\n\ttop: __( 'Top' ),\n\tbottom: __( 'Bottom' ),\n\tleft: __( 'Left' ),\n\tright: __( 'Right' ),\n\tmixed: __( 'Mixed' ),\n\tvertical: __( 'Vertical' ),\n\thorizontal: __( 'Horizontal' ),\n\taxial: __( 'Horizontal & vertical' ),\n\tcustom: __( 'Custom' ),\n};\n\nexport const VIEWS = {\n\taxial: 'axial',\n\ttop: 'top',\n\tright: 'right',\n\tbottom: 'bottom',\n\tleft: 'left',\n\tcustom: 'custom',\n};\n\n/**\n * Checks is given value is a spacing preset.\n *\n * @param {string} value Value to check\n *\n * @return {boolean} Return true if value is string in format var:preset|spacing|.\n */\nexport function isValueSpacingPreset( value ) {\n\tif ( ! value?.includes ) {\n\t\treturn false;\n\t}\n\treturn value === '0' || value.includes( 'var:preset|spacing|' );\n}\n\n/**\n * Converts a spacing preset into a custom value.\n *\n * @param {string} value Value to convert\n * @param {Array} spacingSizes Array of the current spacing preset objects\n *\n * @return {string} Mapping of the spacing preset to its equivalent custom value.\n */\nexport function getCustomValueFromPreset( value, spacingSizes ) {\n\tif ( ! isValueSpacingPreset( value ) ) {\n\t\treturn value;\n\t}\n\n\tconst slug = getSpacingPresetSlug( value );\n\tconst spacingSize = spacingSizes.find(\n\t\t( size ) => String( size.slug ) === slug\n\t);\n\n\treturn spacingSize?.size;\n}\n\n/**\n * Converts a custom value to preset value if one can be found.\n *\n * Returns value as-is if no match is found.\n *\n * @param {string} value Value to convert\n * @param {Array} spacingSizes Array of the current spacing preset objects\n *\n * @return {string} The preset value if it can be found.\n */\nexport function getPresetValueFromCustomValue( value, spacingSizes ) {\n\t// Return value as-is if it is undefined or is already a preset, or '0';\n\tif ( ! value || isValueSpacingPreset( value ) || value === '0' ) {\n\t\treturn value;\n\t}\n\n\tconst spacingMatch = spacingSizes.find(\n\t\t( size ) => String( size.size ) === String( value )\n\t);\n\n\tif ( spacingMatch?.slug ) {\n\t\treturn `var:preset|spacing|${ spacingMatch.slug }`;\n\t}\n\n\treturn value;\n}\n\n/**\n * Converts a spacing preset into a custom value.\n *\n * @param {string} value Value to convert.\n *\n * @return {string | undefined} CSS var string for given spacing preset value.\n */\nexport function getSpacingPresetCssVar( value ) {\n\tif ( ! value ) {\n\t\treturn;\n\t}\n\n\tconst slug = value.match( /var:preset\\|spacing\\|(.+)/ );\n\n\tif ( ! slug ) {\n\t\treturn value;\n\t}\n\n\treturn `var(--wp--preset--spacing--${ slug[ 1 ] })`;\n}\n\n/**\n * Returns the slug section of the given spacing preset string.\n *\n * @param {string} value Value to extract slug from.\n *\n * @return {string|undefined} The int value of the slug from given spacing preset.\n */\nexport function getSpacingPresetSlug( value ) {\n\tif ( ! value ) {\n\t\treturn;\n\t}\n\n\tif ( value === '0' || value === 'default' ) {\n\t\treturn value;\n\t}\n\n\tconst slug = value.match( /var:preset\\|spacing\\|(.+)/ );\n\n\treturn slug ? slug[ 1 ] : undefined;\n}\n\n/**\n * Converts spacing preset value into a Range component value .\n *\n * @param {string} presetValue Value to convert to Range value.\n * @param {Array} spacingSizes Array of current spacing preset value objects.\n *\n * @return {number} The int value for use in Range control.\n */\nexport function getSliderValueFromPreset( presetValue, spacingSizes ) {\n\tif ( presetValue === undefined ) {\n\t\treturn 0;\n\t}\n\tconst slug =\n\t\tparseFloat( presetValue, 10 ) === 0\n\t\t\t? '0'\n\t\t\t: getSpacingPresetSlug( presetValue );\n\tconst sliderValue = spacingSizes.findIndex( ( spacingSize ) => {\n\t\treturn String( spacingSize.slug ) === slug;\n\t} );\n\n\t// Returning NaN rather than undefined as undefined makes range control thumb sit in center\n\treturn sliderValue !== -1 ? sliderValue : NaN;\n}\n\n/**\n * Gets an items with the most occurrence within an array\n * https://stackoverflow.com/a/20762713\n *\n * @param {Array<any>} arr Array of items to check.\n * @return {any} The item with the most occurrences.\n */\nfunction mode( arr ) {\n\treturn arr\n\t\t.sort(\n\t\t\t( a, b ) =>\n\t\t\t\tarr.filter( ( v ) => v === a ).length -\n\t\t\t\tarr.filter( ( v ) => v === b ).length\n\t\t)\n\t\t.pop();\n}\n\n/**\n * Gets the 'all' input value from values data.\n *\n * @param {Object} values Box spacing values\n *\n * @return {string} The most common value from all sides of box.\n */\nexport function getAllRawValue( values = {} ) {\n\treturn mode( Object.values( values ) );\n}\n\n/**\n * Checks to determine if values are mixed.\n *\n * @param {Object} values Box values.\n * @param {Array} sides Sides that values relate to.\n *\n * @return {boolean} Whether values are mixed.\n */\nexport function isValuesMixed( values = {}, sides = ALL_SIDES ) {\n\treturn (\n\t\t( Object.values( values ).length >= 1 &&\n\t\t\tObject.values( values ).length < sides.length ) ||\n\t\tnew Set( Object.values( values ) ).size > 1\n\t);\n}\n\n/**\n * Checks to determine if values are defined.\n *\n * @param {Object} values Box values.\n *\n * @return {boolean} Whether values are defined.\n */\nexport function isValuesDefined( values ) {\n\tif ( values === undefined || values === null ) {\n\t\treturn false;\n\t}\n\treturn Object.values( values ).filter( ( value ) => !! value ).length > 0;\n}\n\n/**\n * Determines whether a particular axis has support. If no axis is\n * specified, this function checks if either axis is supported.\n *\n * @param {Array} sides Supported sides.\n * @param {string} axis Which axis to check.\n *\n * @return {boolean} Whether there is support for the specified axis or both axes.\n */\nexport function hasAxisSupport( sides, axis ) {\n\tif ( ! sides || ! sides.length ) {\n\t\treturn false;\n\t}\n\n\tconst hasHorizontalSupport =\n\t\tsides.includes( 'horizontal' ) ||\n\t\t( sides.includes( 'left' ) && sides.includes( 'right' ) );\n\n\tconst hasVerticalSupport =\n\t\tsides.includes( 'vertical' ) ||\n\t\t( sides.includes( 'top' ) && sides.includes( 'bottom' ) );\n\n\tif ( axis === 'horizontal' ) {\n\t\treturn hasHorizontalSupport;\n\t}\n\n\tif ( axis === 'vertical' ) {\n\t\treturn hasVerticalSupport;\n\t}\n\n\treturn hasHorizontalSupport || hasVerticalSupport;\n}\n\n/**\n * Determines which menu options should be included in the SidePicker.\n *\n * @param {Array} sides Supported sides.\n *\n * @return {Object} Menu options with each option containing label & icon.\n */\nexport function getSupportedMenuItems( sides ) {\n\tif ( ! sides || ! sides.length ) {\n\t\treturn {};\n\t}\n\n\tconst menuItems = {};\n\n\t// Determine the primary \"side\" menu options.\n\tconst hasHorizontalSupport = hasAxisSupport( sides, 'horizontal' );\n\tconst hasVerticalSupport = hasAxisSupport( sides, 'vertical' );\n\n\tif ( hasHorizontalSupport && hasVerticalSupport ) {\n\t\tmenuItems.axial = { label: LABELS.axial, icon: ICONS.axial };\n\t} else if ( hasHorizontalSupport ) {\n\t\tmenuItems.axial = { label: LABELS.horizontal, icon: ICONS.horizontal };\n\t} else if ( hasVerticalSupport ) {\n\t\tmenuItems.axial = { label: LABELS.vertical, icon: ICONS.vertical };\n\t}\n\n\t// Track whether we have any individual sides so we can omit the custom\n\t// option if required.\n\tlet numberOfIndividualSides = 0;\n\n\tALL_SIDES.forEach( ( side ) => {\n\t\tif ( sides.includes( side ) ) {\n\t\t\tnumberOfIndividualSides += 1;\n\t\t\tmenuItems[ side ] = {\n\t\t\t\tlabel: LABELS[ side ],\n\t\t\t\ticon: ICONS[ side ],\n\t\t\t};\n\t\t}\n\t} );\n\n\t// Add custom item if there are enough sides to warrant a separated view.\n\tif ( numberOfIndividualSides > 1 ) {\n\t\tmenuItems.custom = { label: LABELS.custom, icon: ICONS.custom };\n\t}\n\n\treturn menuItems;\n}\n\n/**\n * Checks if the supported sides are balanced for each axis.\n * - Horizontal - both left and right sides are supported.\n * - Vertical - both top and bottom are supported.\n *\n * @param {Array} sides The supported sides which may be axes as well.\n *\n * @return {boolean} Whether or not the supported sides are balanced.\n */\nexport function hasBalancedSidesSupport( sides = [] ) {\n\tconst counts = { top: 0, right: 0, bottom: 0, left: 0 };\n\tsides.forEach( ( side ) => ( counts[ side ] += 1 ) );\n\n\treturn (\n\t\t( counts.top + counts.bottom ) % 2 === 0 &&\n\t\t( counts.left + counts.right ) % 2 === 0\n\t);\n}\n\n/**\n * Determines which view the SpacingSizesControl should default to on its\n * first render; Axial, Custom, or Single side.\n *\n * @param {Object} values Current side values.\n * @param {Array} sides Supported sides.\n *\n * @return {string} View to display.\n */\nexport function getInitialView( values = {}, sides ) {\n\tconst { top, right, bottom, left } = values;\n\tconst sideValues = [ top, right, bottom, left ].filter( Boolean );\n\n\t// Axial ( Horizontal & vertical ).\n\t// - Has axial side support\n\t// - Has axial side values which match\n\t// - Has no values and the supported sides are balanced\n\tconst hasMatchingAxialValues =\n\t\ttop === bottom && left === right && ( !! top || !! left );\n\tconst hasNoValuesAndBalancedSides =\n\t\t! sideValues.length && hasBalancedSidesSupport( sides );\n\tconst hasOnlyAxialSides =\n\t\tsides?.includes( 'horizontal' ) &&\n\t\tsides?.includes( 'vertical' ) &&\n\t\tsides?.length === 2;\n\n\tif (\n\t\thasAxisSupport( sides ) &&\n\t\t( hasMatchingAxialValues || hasNoValuesAndBalancedSides )\n\t) {\n\t\treturn VIEWS.axial;\n\t}\n\n\t// Only axial sides are supported and single value defined.\n\t// - Ensure the side returned is the first side that has a value.\n\tif ( hasOnlyAxialSides && sideValues.length === 1 ) {\n\t\tlet side;\n\n\t\tObject.entries( values ).some( ( [ key, value ] ) => {\n\t\t\tside = key;\n\t\t\treturn value !== undefined;\n\t\t} );\n\n\t\treturn side;\n\t}\n\n\t// Only single side supported and no value defined.\n\tif ( sides?.length === 1 && ! sideValues.length ) {\n\t\treturn sides[ 0 ];\n\t}\n\n\t// Default to the Custom (separated sides) view.\n\treturn VIEWS.custom;\n}\n"],"mappings":"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","ignoreList":[]}
@@ -9,7 +9,7 @@ import clsx from 'clsx';
9
9
  import { __, sprintf, _n } from '@wordpress/i18n';
10
10
  import { Component, createRef } from '@wordpress/element';
11
11
  import { UP, DOWN, ENTER, TAB } from '@wordpress/keycodes';
12
- import { BaseControl, Button, Spinner, withSpokenMessages, Popover } from '@wordpress/components';
12
+ import { BaseControl, Button, __experimentalInputControl as InputControl, Spinner, withSpokenMessages, Popover } from '@wordpress/components';
13
13
  import { compose, debounce, withInstanceId, withSafeTimeout } from '@wordpress/compose';
14
14
  import { withSelect } from '@wordpress/data';
15
15
  import { isURL } from '@wordpress/url';
@@ -185,8 +185,8 @@ class URLInput extends Component {
185
185
  // as a Promise always resolves on the next tick of the event loop.
186
186
  this.suggestionsRequest = request;
187
187
  }
188
- onChange(event) {
189
- this.props.onChange(event.target.value);
188
+ onChange(newValue) {
189
+ this.props.onChange(newValue);
190
190
  }
191
191
  onFocus() {
192
192
  const {
@@ -375,7 +375,6 @@ class URLInput extends Component {
375
375
  id: inputId,
376
376
  value,
377
377
  required: true,
378
- className: 'block-editor-url-input__input',
379
378
  type: 'text',
380
379
  onChange: this.onChange,
381
380
  onFocus: this.onFocus,
@@ -388,7 +387,8 @@ class URLInput extends Component {
388
387
  'aria-autocomplete': 'list',
389
388
  'aria-owns': suggestionsListboxId,
390
389
  'aria-activedescendant': selectedSuggestion !== null ? `${suggestionOptionIdPrefix}-${selectedSuggestion}` : undefined,
391
- ref: this.inputRef
390
+ ref: this.inputRef,
391
+ suffix: this.props.suffix
392
392
  };
393
393
  if (renderControl) {
394
394
  return renderControl(controlProps, inputProps, loading);
@@ -396,8 +396,9 @@ class URLInput extends Component {
396
396
  return /*#__PURE__*/_jsxs(BaseControl, {
397
397
  __nextHasNoMarginBottom: true,
398
398
  ...controlProps,
399
- children: [/*#__PURE__*/_jsx("input", {
400
- ...inputProps
399
+ children: [/*#__PURE__*/_jsx(InputControl, {
400
+ ...inputProps,
401
+ __next40pxDefaultSize: true
401
402
  }), loading && /*#__PURE__*/_jsx(Spinner, {})]
402
403
  });
403
404
  }