@wordpress/block-editor 15.3.1-next.836ecdcae.0 → 15.3.1-next.a730c9c8c.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 (108) hide show
  1. package/build/autocompleters/block.js +2 -4
  2. package/build/autocompleters/block.js.map +1 -1
  3. package/build/components/block-card/index.js +4 -2
  4. package/build/components/block-card/index.js.map +1 -1
  5. package/build/components/block-inspector/edit-contents-button.js +54 -0
  6. package/build/components/block-inspector/edit-contents-button.js.map +1 -0
  7. package/build/components/block-inspector/index.js +5 -1
  8. package/build/components/block-inspector/index.js.map +1 -1
  9. package/build/components/block-list/index.js +3 -1
  10. package/build/components/block-list/index.js.map +1 -1
  11. package/build/components/block-popover/use-popover-scroll.js +11 -2
  12. package/build/components/block-popover/use-popover-scroll.js.map +1 -1
  13. package/build/components/block-switcher/index.js +13 -8
  14. package/build/components/block-switcher/index.js.map +1 -1
  15. package/build/components/block-toolbar/index.js +5 -2
  16. package/build/components/block-toolbar/index.js.map +1 -1
  17. package/build/components/block-tools/insertion-point.js +10 -0
  18. package/build/components/block-tools/insertion-point.js.map +1 -1
  19. package/build/components/block-variation-transforms/index.js +10 -6
  20. package/build/components/block-variation-transforms/index.js.map +1 -1
  21. package/build/components/border-radius-control/utils.js.map +1 -1
  22. package/build/components/global-styles/border-panel.js +6 -6
  23. package/build/components/global-styles/border-panel.js.map +1 -1
  24. package/build/components/link-control/search-item.js +30 -12
  25. package/build/components/link-control/search-item.js.map +1 -1
  26. package/build/components/url-popover/image-url-input-ui.js +7 -2
  27. package/build/components/url-popover/image-url-input-ui.js.map +1 -1
  28. package/build/components/writing-flow/use-clipboard-handler.js +6 -1
  29. package/build/components/writing-flow/use-clipboard-handler.js.map +1 -1
  30. package/build/store/private-selectors.js +9 -21
  31. package/build/store/private-selectors.js.map +1 -1
  32. package/build/store/reducer.js +114 -0
  33. package/build/store/reducer.js.map +1 -1
  34. package/build/store/selectors.js +16 -30
  35. package/build/store/selectors.js.map +1 -1
  36. package/build/store/utils.js +18 -0
  37. package/build/store/utils.js.map +1 -1
  38. package/build/utils/block-bindings.js +1 -1
  39. package/build/utils/block-bindings.js.map +1 -1
  40. package/build-module/autocompleters/block.js +3 -5
  41. package/build-module/autocompleters/block.js.map +1 -1
  42. package/build-module/components/block-card/index.js +4 -2
  43. package/build-module/components/block-card/index.js.map +1 -1
  44. package/build-module/components/block-inspector/edit-contents-button.js +47 -0
  45. package/build-module/components/block-inspector/edit-contents-button.js.map +1 -0
  46. package/build-module/components/block-inspector/index.js +5 -1
  47. package/build-module/components/block-inspector/index.js.map +1 -1
  48. package/build-module/components/block-list/index.js +3 -1
  49. package/build-module/components/block-list/index.js.map +1 -1
  50. package/build-module/components/block-popover/use-popover-scroll.js +11 -2
  51. package/build-module/components/block-popover/use-popover-scroll.js.map +1 -1
  52. package/build-module/components/block-switcher/index.js +13 -8
  53. package/build-module/components/block-switcher/index.js.map +1 -1
  54. package/build-module/components/block-toolbar/index.js +5 -2
  55. package/build-module/components/block-toolbar/index.js.map +1 -1
  56. package/build-module/components/block-tools/insertion-point.js +11 -1
  57. package/build-module/components/block-tools/insertion-point.js.map +1 -1
  58. package/build-module/components/block-variation-transforms/index.js +10 -6
  59. package/build-module/components/block-variation-transforms/index.js.map +1 -1
  60. package/build-module/components/border-radius-control/utils.js.map +1 -1
  61. package/build-module/components/global-styles/border-panel.js +6 -6
  62. package/build-module/components/global-styles/border-panel.js.map +1 -1
  63. package/build-module/components/link-control/search-item.js +30 -12
  64. package/build-module/components/link-control/search-item.js.map +1 -1
  65. package/build-module/components/url-popover/image-url-input-ui.js +9 -4
  66. package/build-module/components/url-popover/image-url-input-ui.js.map +1 -1
  67. package/build-module/components/writing-flow/use-clipboard-handler.js +6 -1
  68. package/build-module/components/writing-flow/use-clipboard-handler.js.map +1 -1
  69. package/build-module/store/private-selectors.js +9 -21
  70. package/build-module/store/private-selectors.js.map +1 -1
  71. package/build-module/store/reducer.js +114 -0
  72. package/build-module/store/reducer.js.map +1 -1
  73. package/build-module/store/selectors.js +16 -30
  74. package/build-module/store/selectors.js.map +1 -1
  75. package/build-module/store/utils.js +17 -0
  76. package/build-module/store/utils.js.map +1 -1
  77. package/build-module/utils/block-bindings.js +1 -1
  78. package/build-module/utils/block-bindings.js.map +1 -1
  79. package/build-style/style-rtl.css +9 -5
  80. package/build-style/style.css +9 -5
  81. package/package.json +34 -34
  82. package/src/autocompleters/block.js +6 -11
  83. package/src/components/block-card/index.js +11 -1
  84. package/src/components/block-inspector/edit-contents-button.js +46 -0
  85. package/src/components/block-inspector/index.js +6 -1
  86. package/src/components/block-inspector/style.scss +5 -0
  87. package/src/components/block-list/index.js +7 -1
  88. package/src/components/block-popover/use-popover-scroll.js +10 -2
  89. package/src/components/block-switcher/index.js +13 -4
  90. package/src/components/block-toolbar/index.js +11 -5
  91. package/src/components/block-toolbar/style.scss +3 -5
  92. package/src/components/block-tools/insertion-point.js +19 -1
  93. package/src/components/block-variation-transforms/index.js +39 -27
  94. package/src/components/border-radius-control/test/utils.js +71 -0
  95. package/src/components/border-radius-control/utils.js +1 -0
  96. package/src/components/global-styles/border-panel.js +7 -6
  97. package/src/components/link-control/search-item.js +31 -12
  98. package/src/components/link-control/style.scss +0 -1
  99. package/src/components/link-control/test/index.js +14 -2
  100. package/src/components/url-popover/image-url-input-ui.js +18 -2
  101. package/src/components/writing-flow/use-clipboard-handler.js +6 -0
  102. package/src/store/private-selectors.js +12 -24
  103. package/src/store/reducer.js +188 -0
  104. package/src/store/selectors.js +38 -59
  105. package/src/store/test/reducer.js +398 -0
  106. package/src/store/test/selectors.js +65 -192
  107. package/src/store/utils.js +21 -0
  108. package/src/utils/block-bindings.js +1 -1
@@ -1 +1 @@
1
- {"version":3,"names":["__experimentalParseQuantityAndUnitFromRawValue","parseQuantityAndUnitFromRawValue","mode","inputArray","arr","sort","a","b","filter","v","length","shift","getAllUnit","selectedUnits","flat","cornerUnits","Object","values","Boolean","getAllValue","parsedQuantitiesAndUnits","map","value","allValues","_value$","allUnits","every","unit","allValue","undefined","hasMixedValues","cornerValues","firstValue","allSame","hasDefinedValues","filteredValues","isValuePreset","includes","getPresetSlug","slug","match","getSliderValueFromPreset","presetValue","presets","parseFloat","sliderValue","findIndex","size","String","NaN","getCustomValueFromPreset","radiusSize","find","getPresetValueFromControlValue","controlValue","controlType","parseInt","getPresetValueFromCustomValue","spacingMatch","convertPresetsToCustomValues","converted","keys","forEach","key","customValue"],"sources":["@wordpress/block-editor/src/components/border-radius-control/utils.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __experimentalParseQuantityAndUnitFromRawValue as parseQuantityAndUnitFromRawValue } from '@wordpress/components';\n\n/**\n * Gets the (non-undefined) item with the highest occurrence within an array\n * Based in part on: https://stackoverflow.com/a/20762713\n *\n * Undefined values are always sorted to the end by `sort`, so this function\n * returns the first element, to always prioritize real values over undefined\n * values.\n *\n * See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#description\n *\n * @param {Array<any>} inputArray Array of items to check.\n * @return {any} The item with the most occurrences.\n */\nexport function mode( inputArray ) {\n\tconst arr = [ ...inputArray ];\n\treturn arr\n\t\t.sort(\n\t\t\t( a, b ) =>\n\t\t\t\tinputArray.filter( ( v ) => v === b ).length -\n\t\t\t\tinputArray.filter( ( v ) => v === a ).length\n\t\t)\n\t\t.shift();\n}\n\n/**\n * Returns the most common CSS unit from the current CSS unit selections.\n *\n * - If a single flat border radius is set, its unit will be used\n * - If individual corner selections, the most common of those will be used\n * - Failing any unit selections a default of 'px' is returned.\n *\n * @param {Object} selectedUnits Unit selections for flat radius & each corner.\n * @return {string} Most common CSS unit from current selections. Default: `px`.\n */\nexport function getAllUnit( selectedUnits = {} ) {\n\tconst { flat, ...cornerUnits } = selectedUnits;\n\treturn (\n\t\tflat || mode( Object.values( cornerUnits ).filter( Boolean ) ) || 'px'\n\t);\n}\n\n/**\n * Gets the 'all' input value and unit from values data.\n *\n * @param {Object|string} values Radius values.\n * @return {string} A value + unit for the 'all' input.\n */\nexport function getAllValue( values = {} ) {\n\t/**\n\t * Border radius support was originally a single pixel value.\n\t *\n\t * To maintain backwards compatibility treat this case as the all value.\n\t */\n\tif ( typeof values === 'string' ) {\n\t\treturn values;\n\t}\n\n\tconst parsedQuantitiesAndUnits = Object.values( values ).map( ( value ) =>\n\t\tparseQuantityAndUnitFromRawValue( value )\n\t);\n\n\tconst allValues = parsedQuantitiesAndUnits.map(\n\t\t( value ) => value[ 0 ] ?? ''\n\t);\n\tconst allUnits = parsedQuantitiesAndUnits.map( ( value ) => value[ 1 ] );\n\n\tconst value = allValues.every( ( v ) => v === allValues[ 0 ] )\n\t\t? allValues[ 0 ]\n\t\t: '';\n\tconst unit = mode( allUnits );\n\n\tconst allValue =\n\t\tvalue === 0 || value ? `${ value }${ unit || '' }` : undefined;\n\n\treturn allValue;\n}\n\n/**\n * Checks to determine if values are mixed.\n *\n * @param {Object} values Radius values.\n * @return {boolean} Whether values are mixed.\n */\nexport function hasMixedValues( values = {} ) {\n\tif ( typeof values === 'string' ) {\n\t\treturn false;\n\t}\n\n\tif ( ! values || typeof values !== 'object' ) {\n\t\treturn false;\n\t}\n\n\tconst cornerValues = Object.values( values );\n\n\tif ( cornerValues.length === 0 ) {\n\t\treturn false;\n\t}\n\n\tconst firstValue = cornerValues[ 0 ];\n\n\t// Check if all values are exactly the same (including undefined)\n\tconst allSame = cornerValues.every( ( value ) => value === firstValue );\n\n\treturn ! allSame;\n}\n\n/**\n * Checks to determine if values are defined.\n *\n * @param {Object} values Radius values.\n * @return {boolean} Whether values are mixed.\n */\nexport function hasDefinedValues( values ) {\n\tif ( ! values ) {\n\t\treturn false;\n\t}\n\n\t// A string value represents a shorthand value.\n\tif ( typeof values === 'string' ) {\n\t\treturn true;\n\t}\n\n\t// An object represents longhand border radius values, if any are set\n\t// flag values as being defined.\n\tconst filteredValues = Object.values( values ).filter( ( value ) => {\n\t\treturn !! value || value === 0;\n\t} );\n\n\treturn !! filteredValues.length;\n}\n\n/**\n * Checks is given value is a radius preset.\n *\n * @param {string} value Value to check\n *\n * @return {boolean} Return true if value is string in format var:preset|border-radius|.\n */\nexport function isValuePreset( value ) {\n\tif ( ! value?.includes ) {\n\t\treturn false;\n\t}\n\treturn value === '0' || value.includes( 'var:preset|border-radius|' );\n}\n\n/**\n * Returns the slug section of the given 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 preset.\n */\nexport function getPresetSlug( 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\\|border-radius\\|(.+)/ );\n\n\treturn slug ? slug[ 1 ] : undefined;\n}\n\n/**\n * Converts radius preset value into a Range component value .\n *\n * @param {string} presetValue Value to convert to Range value.\n * @param {Array} presets Array of current radius preset value objects.\n *\n * @return {number} The int value for use in Range control.\n */\nexport function getSliderValueFromPreset( presetValue, presets ) {\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: getPresetSlug( presetValue );\n\tconst sliderValue = presets.findIndex( ( size ) => {\n\t\treturn String( size.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 * Converts a preset into a custom value.\n *\n * @param {string} value Value to convert\n * @param {Array} presets Array of the current radius preset objects\n *\n * @return {string} Mapping of the radius preset to its equivalent custom value.\n */\nexport function getCustomValueFromPreset( value, presets ) {\n\tif ( ! isValuePreset( value ) ) {\n\t\treturn value;\n\t}\n\n\tconst slug = parseFloat( value, 10 ) === 0 ? '0' : getPresetSlug( value );\n\tconst radiusSize = presets.find( ( size ) => String( size.slug ) === slug );\n\n\treturn radiusSize?.size;\n}\n\n/**\n * Converts a control value into a preset value.\n *\n * @param {number} controlValue to convert to preset value.\n * @param {string} controlType Type of control\n * @param {Array} presets Array of current radius preset value objects.\n *\n * @return {string} The custom value for use in Range control.\n */\nexport function getPresetValueFromControlValue(\n\tcontrolValue,\n\tcontrolType,\n\tpresets\n) {\n\tconst size = parseInt( controlValue, 10 );\n\tif ( controlType === 'selectList' ) {\n\t\tif ( size === 0 ) {\n\t\t\treturn undefined;\n\t\t}\n\t} else if ( size === 0 ) {\n\t\treturn '0';\n\t}\n\treturn `var:preset|border-radius|${ presets[ controlValue ]?.slug }`;\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} presets Array of the current border radius preset objects\n *\n * @return {string} The preset value if it can be found.\n */\nexport function getPresetValueFromCustomValue( value, presets ) {\n\t// Return value as-is if it is undefined or is already a preset, or '0';\n\tif ( ! value || isValuePreset( value ) || value === '0' ) {\n\t\treturn value;\n\t}\n\n\tconst spacingMatch = presets.find(\n\t\t( size ) => String( size.size ) === String( value )\n\t);\n\n\tif ( spacingMatch?.slug ) {\n\t\treturn `var:preset|border-radius|${ spacingMatch.slug }`;\n\t}\n\n\treturn value;\n}\n\n/**\n * Converts all preset values in a values object to their custom equivalents.\n *\n * @param {Object} values Values object to convert\n * @param {Array} presets Array of current border radius preset objects\n *\n * @return {Object} Values with presets converted to custom values\n */\nexport function convertPresetsToCustomValues( values, presets ) {\n\tif ( ! values || typeof values !== 'object' ) {\n\t\treturn values;\n\t}\n\n\tconst converted = {};\n\tObject.keys( values ).forEach( ( key ) => {\n\t\tconst value = values[ key ];\n\t\tif ( isValuePreset( value ) ) {\n\t\t\tconst customValue = getCustomValueFromPreset( value, presets );\n\t\t\tconverted[ key ] = customValue !== undefined ? customValue : value;\n\t\t} else {\n\t\t\tconverted[ key ] = value;\n\t\t}\n\t} );\n\n\treturn converted;\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["__experimentalParseQuantityAndUnitFromRawValue","parseQuantityAndUnitFromRawValue","mode","inputArray","arr","sort","a","b","filter","v","length","shift","getAllUnit","selectedUnits","flat","cornerUnits","Object","values","Boolean","getAllValue","parsedQuantitiesAndUnits","map","value","allValues","_value$","allUnits","every","unit","allValue","undefined","hasMixedValues","cornerValues","firstValue","allSame","hasDefinedValues","filteredValues","isValuePreset","includes","getPresetSlug","slug","match","getSliderValueFromPreset","presetValue","presets","parseFloat","sliderValue","findIndex","size","String","NaN","getCustomValueFromPreset","radiusSize","find","getPresetValueFromControlValue","controlValue","controlType","parseInt","getPresetValueFromCustomValue","spacingMatch","convertPresetsToCustomValues","converted","keys","forEach","key","customValue"],"sources":["@wordpress/block-editor/src/components/border-radius-control/utils.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __experimentalParseQuantityAndUnitFromRawValue as parseQuantityAndUnitFromRawValue } from '@wordpress/components';\n\n/**\n * Gets the (non-undefined) item with the highest occurrence within an array\n * Based in part on: https://stackoverflow.com/a/20762713\n *\n * Undefined values are always sorted to the end by `sort`, so this function\n * returns the first element, to always prioritize real values over undefined\n * values.\n *\n * See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#description\n *\n * @param {Array<any>} inputArray Array of items to check.\n * @return {any} The item with the most occurrences.\n */\nexport function mode( inputArray ) {\n\tconst arr = [ ...inputArray ];\n\treturn arr\n\t\t.sort(\n\t\t\t( a, b ) =>\n\t\t\t\tinputArray.filter( ( v ) => v === b ).length -\n\t\t\t\tinputArray.filter( ( v ) => v === a ).length\n\t\t)\n\t\t.shift();\n}\n\n/**\n * Returns the most common CSS unit from the current CSS unit selections.\n *\n * - If a single flat border radius is set, its unit will be used\n * - If individual corner selections, the most common of those will be used\n * - Failing any unit selections a default of 'px' is returned.\n *\n * @param {Object} selectedUnits Unit selections for flat radius & each corner.\n * @return {string} Most common CSS unit from current selections. Default: `px`.\n */\nexport function getAllUnit( selectedUnits = {} ) {\n\tconst { flat, ...cornerUnits } = selectedUnits;\n\treturn (\n\t\tflat || mode( Object.values( cornerUnits ).filter( Boolean ) ) || 'px'\n\t);\n}\n\n/**\n * Gets the 'all' input value and unit from values data.\n *\n * @param {Object|string} values Radius values.\n * @return {string} A value + unit for the 'all' input.\n */\nexport function getAllValue( values = {} ) {\n\t/**\n\t * Border radius support was originally a single pixel value.\n\t *\n\t * To maintain backwards compatibility treat this case as the all value.\n\t */\n\tif ( typeof values === 'string' ) {\n\t\treturn values;\n\t}\n\n\tconst parsedQuantitiesAndUnits = Object.values( values ).map( ( value ) =>\n\t\tparseQuantityAndUnitFromRawValue( value )\n\t);\n\n\tconst allValues = parsedQuantitiesAndUnits.map(\n\t\t( value ) => value[ 0 ] ?? ''\n\t);\n\tconst allUnits = parsedQuantitiesAndUnits.map( ( value ) => value[ 1 ] );\n\n\tconst value = allValues.every( ( v ) => v === allValues[ 0 ] )\n\t\t? allValues[ 0 ]\n\t\t: '';\n\tconst unit = mode( allUnits );\n\n\tconst allValue =\n\t\tvalue === 0 || value ? `${ value }${ unit || '' }` : undefined;\n\n\treturn allValue;\n}\n\n/**\n * Checks to determine if values are mixed.\n *\n * @param {Object} values Radius values.\n * @return {boolean} Whether values are mixed.\n */\nexport function hasMixedValues( values = {} ) {\n\tif ( typeof values === 'string' ) {\n\t\treturn false;\n\t}\n\n\tif ( ! values || typeof values !== 'object' ) {\n\t\treturn false;\n\t}\n\n\tconst cornerValues = Object.values( values );\n\n\tif ( cornerValues.length === 0 ) {\n\t\treturn false;\n\t}\n\n\tconst firstValue = cornerValues[ 0 ];\n\n\t// Check if all values are exactly the same (including undefined)\n\tconst allSame = cornerValues.every( ( value ) => value === firstValue );\n\n\treturn ! allSame;\n}\n\n/**\n * Checks to determine if values are defined.\n *\n * @param {Object} values Radius values.\n * @return {boolean} Whether values are mixed.\n */\nexport function hasDefinedValues( values ) {\n\tif ( ! values ) {\n\t\treturn false;\n\t}\n\n\t// A string value represents a shorthand value.\n\tif ( typeof values === 'string' ) {\n\t\treturn true;\n\t}\n\n\t// An object represents longhand border radius values, if any are set\n\t// flag values as being defined.\n\tconst filteredValues = Object.values( values ).filter( ( value ) => {\n\t\treturn !! value || value === 0;\n\t} );\n\n\treturn !! filteredValues.length;\n}\n\n/**\n * Checks is given value is a radius preset.\n *\n * @param {string} value Value to check\n *\n * @return {boolean} Return true if value is string in format var:preset|border-radius|.\n */\nexport function isValuePreset( value ) {\n\tif ( ! value?.includes ) {\n\t\treturn false;\n\t}\n\treturn value === '0' || value.includes( 'var:preset|border-radius|' );\n}\n\n/**\n * Returns the slug section of the given 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 preset.\n */\nexport function getPresetSlug( 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\\|border-radius\\|(.+)/ );\n\n\treturn slug ? slug[ 1 ] : undefined;\n}\n\n/**\n * Converts radius preset value into a Range component value .\n *\n * @param {string} presetValue Value to convert to Range value.\n * @param {Array} presets Array of current radius preset value objects.\n *\n * @return {number} The int value for use in Range control.\n */\nexport function getSliderValueFromPreset( presetValue, presets ) {\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: getPresetSlug( presetValue );\n\tconst sliderValue = presets.findIndex( ( size ) => {\n\t\treturn String( size.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 * Converts a preset into a custom value.\n *\n * @param {string} value Value to convert\n * @param {Array} presets Array of the current radius preset objects\n *\n * @return {string} Mapping of the radius preset to its equivalent custom value.\n */\nexport function getCustomValueFromPreset( value, presets ) {\n\tif ( ! isValuePreset( value ) ) {\n\t\treturn value;\n\t}\n\n\tconst slug = parseFloat( value, 10 ) === 0 ? '0' : getPresetSlug( value );\n\tconst radiusSize = presets.find( ( size ) => String( size.slug ) === slug );\n\n\treturn radiusSize?.size;\n}\n\n/**\n * Converts a control value into a preset value.\n *\n * @param {number} controlValue to convert to preset value.\n * @param {string} controlType Type of control\n * @param {Array} presets Array of current radius preset value objects.\n *\n * @return {string} The custom value for use in Range control.\n */\nexport function getPresetValueFromControlValue(\n\tcontrolValue,\n\tcontrolType,\n\tpresets\n) {\n\tconst size = parseInt( controlValue, 10 );\n\tif ( controlType === 'selectList' ) {\n\t\tif ( size === 0 ) {\n\t\t\treturn undefined;\n\t\t}\n\t} else if ( size === 0 ) {\n\t\treturn '0';\n\t}\n\n\treturn `var:preset|border-radius|${ presets[ controlValue ]?.slug }`;\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} presets Array of the current border radius preset objects\n *\n * @return {string} The preset value if it can be found.\n */\nexport function getPresetValueFromCustomValue( value, presets ) {\n\t// Return value as-is if it is undefined or is already a preset, or '0';\n\tif ( ! value || isValuePreset( value ) || value === '0' ) {\n\t\treturn value;\n\t}\n\n\tconst spacingMatch = presets.find(\n\t\t( size ) => String( size.size ) === String( value )\n\t);\n\n\tif ( spacingMatch?.slug ) {\n\t\treturn `var:preset|border-radius|${ spacingMatch.slug }`;\n\t}\n\n\treturn value;\n}\n\n/**\n * Converts all preset values in a values object to their custom equivalents.\n *\n * @param {Object} values Values object to convert\n * @param {Array} presets Array of current border radius preset objects\n *\n * @return {Object} Values with presets converted to custom values\n */\nexport function convertPresetsToCustomValues( values, presets ) {\n\tif ( ! values || typeof values !== 'object' ) {\n\t\treturn values;\n\t}\n\n\tconst converted = {};\n\tObject.keys( values ).forEach( ( key ) => {\n\t\tconst value = values[ key ];\n\t\tif ( isValuePreset( value ) ) {\n\t\t\tconst customValue = getCustomValueFromPreset( value, presets );\n\t\t\tconverted[ key ] = customValue !== undefined ? customValue : value;\n\t\t} else {\n\t\t\tconverted[ key ] = value;\n\t\t}\n\t} );\n\n\treturn converted;\n}\n"],"mappings":"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","ignoreList":[]}
@@ -126,15 +126,15 @@ export default function BorderPanel({
126
126
  const showBorderRadius = useHasBorderRadiusControl(settings);
127
127
  const borderRadiusValues = useMemo(() => {
128
128
  if (typeof border?.radius !== 'object') {
129
- return decodeValue(border?.radius);
129
+ return border?.radius;
130
130
  }
131
131
  return {
132
- topLeft: decodeValue(border?.radius?.topLeft),
133
- topRight: decodeValue(border?.radius?.topRight),
134
- bottomLeft: decodeValue(border?.radius?.bottomLeft),
135
- bottomRight: decodeValue(border?.radius?.bottomRight)
132
+ topLeft: border?.radius?.topLeft,
133
+ topRight: border?.radius?.topRight,
134
+ bottomLeft: border?.radius?.bottomLeft,
135
+ bottomRight: border?.radius?.bottomRight
136
136
  };
137
- }, [border?.radius, decodeValue]);
137
+ }, [border?.radius]);
138
138
  const setBorderRadius = newBorderRadius => setBorder({
139
139
  ...border,
140
140
  radius: newBorderRadius
@@ -1 +1 @@
1
- {"version":3,"names":["BorderBoxControl","__experimentalHasSplitBorders","hasSplitBorders","__experimentalIsDefinedBorder","isDefinedBorder","__experimentalToolsPanel","ToolsPanel","__experimentalToolsPanelItem","ToolsPanelItem","BaseControl","useCallback","useMemo","__","BorderRadiusControl","useColorsPerOrigin","getValueFromVariable","useToolsPanelDropdownMenuProps","setImmutably","useBorderPanelLabel","ShadowPopover","useShadowPresets","jsx","_jsx","jsxs","_jsxs","useHasBorderPanel","settings","controls","Object","values","useHasBorderPanelControls","some","Boolean","hasBorderColor","useHasBorderColorControl","hasBorderRadius","useHasBorderRadiusControl","hasBorderStyle","useHasBorderStyleControl","hasBorderWidth","useHasBorderWidthControl","hasShadow","useHasShadowControl","border","color","radius","style","width","shadows","shadow","length","BorderToolsPanel","resetAllFilter","onChange","value","panelId","children","label","dropdownMenuProps","resetAll","updatedValue","DEFAULT_CONTROLS","BorderPanel","as","Wrapper","inheritedValue","name","defaultControls","_settings$shadow$pres","_ref","_ref2","_shadowPresets$custom","colors","decodeValue","rawValue","encodeColorValue","colorValue","allColors","flatMap","originColors","colorObject","find","slug","borderValue","forEach","side","undefined","setBorder","newBorder","showBorderColor","showBorderStyle","showBorderWidth","showBorderRadius","borderRadiusValues","topLeft","topRight","bottomLeft","bottomRight","setBorderRadius","newBorderRadius","borderValues","entries","hasShadowControl","shadowPresets","presets","mergedShadowPresets","custom","theme","default","setShadow","newValue","shadowName","resetShadow","resetBorder","onBorderChange","updatedBorder","previousValue","showBorderByDefault","hasBorderControl","blockName","hasValue","onDeselect","isShownByDefault","enableAlpha","enableStyle","popoverOffset","popoverPlacement","__experimentalIsRenderedInSidebar","size","hideLabelFromVision","radiusSizes","VisualLabel","onShadowChange"],"sources":["@wordpress/block-editor/src/components/global-styles/border-panel.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tBorderBoxControl,\n\t__experimentalHasSplitBorders as hasSplitBorders,\n\t__experimentalIsDefinedBorder as isDefinedBorder,\n\t__experimentalToolsPanel as ToolsPanel,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n\tBaseControl,\n} from '@wordpress/components';\nimport { useCallback, useMemo } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport BorderRadiusControl from '../border-radius-control';\nimport { useColorsPerOrigin } from './hooks';\nimport { getValueFromVariable, useToolsPanelDropdownMenuProps } from './utils';\nimport { setImmutably } from '../../utils/object';\nimport { useBorderPanelLabel } from '../../hooks/border';\nimport { ShadowPopover, useShadowPresets } from './shadow-panel-components';\n\nexport function useHasBorderPanel( settings ) {\n\tconst controls = Object.values( useHasBorderPanelControls( settings ) );\n\treturn controls.some( Boolean );\n}\n\nexport function useHasBorderPanelControls( settings ) {\n\tconst controls = {\n\t\thasBorderColor: useHasBorderColorControl( settings ),\n\t\thasBorderRadius: useHasBorderRadiusControl( settings ),\n\t\thasBorderStyle: useHasBorderStyleControl( settings ),\n\t\thasBorderWidth: useHasBorderWidthControl( settings ),\n\t\thasShadow: useHasShadowControl( settings ),\n\t};\n\n\treturn controls;\n}\n\nfunction useHasBorderColorControl( settings ) {\n\treturn settings?.border?.color;\n}\n\nfunction useHasBorderRadiusControl( settings ) {\n\treturn settings?.border?.radius;\n}\n\nfunction useHasBorderStyleControl( settings ) {\n\treturn settings?.border?.style;\n}\n\nfunction useHasBorderWidthControl( settings ) {\n\treturn settings?.border?.width;\n}\n\nfunction useHasShadowControl( settings ) {\n\tconst shadows = useShadowPresets( settings );\n\treturn !! settings?.shadow && shadows.length > 0;\n}\n\nfunction BorderToolsPanel( {\n\tresetAllFilter,\n\tonChange,\n\tvalue,\n\tpanelId,\n\tchildren,\n\tlabel,\n} ) {\n\tconst dropdownMenuProps = useToolsPanelDropdownMenuProps();\n\tconst resetAll = () => {\n\t\tconst updatedValue = resetAllFilter( value );\n\t\tonChange( updatedValue );\n\t};\n\n\treturn (\n\t\t<ToolsPanel\n\t\t\tlabel={ label }\n\t\t\tresetAll={ resetAll }\n\t\t\tpanelId={ panelId }\n\t\t\tdropdownMenuProps={ dropdownMenuProps }\n\t\t>\n\t\t\t{ children }\n\t\t</ToolsPanel>\n\t);\n}\n\nconst DEFAULT_CONTROLS = {\n\tradius: true,\n\tcolor: true,\n\twidth: true,\n\tshadow: true,\n};\n\nexport default function BorderPanel( {\n\tas: Wrapper = BorderToolsPanel,\n\tvalue,\n\tonChange,\n\tinheritedValue = value,\n\tsettings,\n\tpanelId,\n\tname,\n\tdefaultControls = DEFAULT_CONTROLS,\n} ) {\n\tconst colors = useColorsPerOrigin( settings );\n\tconst decodeValue = useCallback(\n\t\t( rawValue ) => getValueFromVariable( { settings }, '', rawValue ),\n\t\t[ settings ]\n\t);\n\tconst encodeColorValue = ( colorValue ) => {\n\t\tconst allColors = colors.flatMap(\n\t\t\t( { colors: originColors } ) => originColors\n\t\t);\n\t\tconst colorObject = allColors.find(\n\t\t\t( { color } ) => color === colorValue\n\t\t);\n\t\treturn colorObject\n\t\t\t? 'var:preset|color|' + colorObject.slug\n\t\t\t: colorValue;\n\t};\n\tconst border = useMemo( () => {\n\t\tif ( hasSplitBorders( inheritedValue?.border ) ) {\n\t\t\tconst borderValue = { ...inheritedValue?.border };\n\t\t\t[ 'top', 'right', 'bottom', 'left' ].forEach( ( side ) => {\n\t\t\t\tborderValue[ side ] = {\n\t\t\t\t\t...borderValue[ side ],\n\t\t\t\t\tcolor: decodeValue( borderValue[ side ]?.color ),\n\t\t\t\t};\n\t\t\t} );\n\t\t\treturn borderValue;\n\t\t}\n\t\treturn {\n\t\t\t...inheritedValue?.border,\n\t\t\tcolor: inheritedValue?.border?.color\n\t\t\t\t? decodeValue( inheritedValue?.border?.color )\n\t\t\t\t: undefined,\n\t\t};\n\t}, [ inheritedValue?.border, decodeValue ] );\n\tconst setBorder = ( newBorder ) =>\n\t\tonChange( { ...value, border: newBorder } );\n\tconst showBorderColor = useHasBorderColorControl( settings );\n\tconst showBorderStyle = useHasBorderStyleControl( settings );\n\tconst showBorderWidth = useHasBorderWidthControl( settings );\n\n\t// Border radius.\n\tconst showBorderRadius = useHasBorderRadiusControl( settings );\n\tconst borderRadiusValues = useMemo( () => {\n\t\tif ( typeof border?.radius !== 'object' ) {\n\t\t\treturn decodeValue( border?.radius );\n\t\t}\n\t\treturn {\n\t\t\ttopLeft: decodeValue( border?.radius?.topLeft ),\n\t\t\ttopRight: decodeValue( border?.radius?.topRight ),\n\t\t\tbottomLeft: decodeValue( border?.radius?.bottomLeft ),\n\t\t\tbottomRight: decodeValue( border?.radius?.bottomRight ),\n\t\t};\n\t}, [ border?.radius, decodeValue ] );\n\tconst setBorderRadius = ( newBorderRadius ) =>\n\t\tsetBorder( { ...border, radius: newBorderRadius } );\n\tconst hasBorderRadius = () => {\n\t\tconst borderValues = value?.border?.radius;\n\t\tif ( typeof borderValues === 'object' ) {\n\t\t\treturn Object.entries( borderValues ).some( Boolean );\n\t\t}\n\t\treturn !! borderValues;\n\t};\n\tconst hasShadowControl = useHasShadowControl( settings );\n\n\t// Shadow\n\tconst shadow = decodeValue( inheritedValue?.shadow );\n\tconst shadowPresets = settings?.shadow?.presets ?? {};\n\tconst mergedShadowPresets =\n\t\tshadowPresets.custom ??\n\t\tshadowPresets.theme ??\n\t\tshadowPresets.default ??\n\t\t[];\n\tconst setShadow = ( newValue ) => {\n\t\tconst slug = mergedShadowPresets?.find(\n\t\t\t( { shadow: shadowName } ) => shadowName === newValue\n\t\t)?.slug;\n\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\tvalue,\n\t\t\t\t[ 'shadow' ],\n\t\t\t\tslug ? `var:preset|shadow|${ slug }` : newValue || undefined\n\t\t\t)\n\t\t);\n\t};\n\tconst hasShadow = () => !! value?.shadow;\n\tconst resetShadow = () => setShadow( undefined );\n\n\tconst resetBorder = () => {\n\t\tif ( hasBorderRadius() ) {\n\t\t\treturn setBorder( { radius: value?.border?.radius } );\n\t\t}\n\n\t\tsetBorder( undefined );\n\t};\n\n\tconst onBorderChange = ( newBorder ) => {\n\t\t// Ensure we have a visible border style when a border width or\n\t\t// color is being selected.\n\t\tconst updatedBorder = { ...newBorder };\n\n\t\tif ( hasSplitBorders( updatedBorder ) ) {\n\t\t\t[ 'top', 'right', 'bottom', 'left' ].forEach( ( side ) => {\n\t\t\t\tif ( updatedBorder[ side ] ) {\n\t\t\t\t\tupdatedBorder[ side ] = {\n\t\t\t\t\t\t...updatedBorder[ side ],\n\t\t\t\t\t\tcolor: encodeColorValue( updatedBorder[ side ]?.color ),\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t} );\n\t\t} else if ( updatedBorder ) {\n\t\t\tupdatedBorder.color = encodeColorValue( updatedBorder.color );\n\t\t}\n\n\t\t// As radius is maintained separately to color, style, and width\n\t\t// maintain its value. Undefined values here will be cleaned when\n\t\t// global styles are saved.\n\t\tsetBorder( { radius: border?.radius, ...updatedBorder } );\n\t};\n\n\tconst resetAllFilter = useCallback( ( previousValue ) => {\n\t\treturn {\n\t\t\t...previousValue,\n\t\t\tborder: undefined,\n\t\t\tshadow: undefined,\n\t\t};\n\t}, [] );\n\n\tconst showBorderByDefault =\n\t\tdefaultControls?.color || defaultControls?.width;\n\n\tconst hasBorderControl =\n\t\tshowBorderColor ||\n\t\tshowBorderStyle ||\n\t\tshowBorderWidth ||\n\t\tshowBorderRadius;\n\n\tconst label = useBorderPanelLabel( {\n\t\tblockName: name,\n\t\thasShadowControl,\n\t\thasBorderControl,\n\t} );\n\n\treturn (\n\t\t<Wrapper\n\t\t\tresetAllFilter={ resetAllFilter }\n\t\t\tvalue={ value }\n\t\t\tonChange={ onChange }\n\t\t\tpanelId={ panelId }\n\t\t\tlabel={ label }\n\t\t>\n\t\t\t{ ( showBorderWidth || showBorderColor ) && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\thasValue={ () => isDefinedBorder( value?.border ) }\n\t\t\t\t\tlabel={ __( 'Border' ) }\n\t\t\t\t\tonDeselect={ () => resetBorder() }\n\t\t\t\t\tisShownByDefault={ showBorderByDefault }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t<BorderBoxControl\n\t\t\t\t\t\tcolors={ colors }\n\t\t\t\t\t\tenableAlpha\n\t\t\t\t\t\tenableStyle={ showBorderStyle }\n\t\t\t\t\t\tonChange={ onBorderChange }\n\t\t\t\t\t\tpopoverOffset={ 40 }\n\t\t\t\t\t\tpopoverPlacement=\"left-start\"\n\t\t\t\t\t\tvalue={ border }\n\t\t\t\t\t\t__experimentalIsRenderedInSidebar\n\t\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t\thideLabelFromVision={ ! hasShadowControl }\n\t\t\t\t\t\tlabel={ __( 'Border' ) }\n\t\t\t\t\t/>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ showBorderRadius && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\thasValue={ hasBorderRadius }\n\t\t\t\t\tlabel={ __( 'Radius' ) }\n\t\t\t\t\tonDeselect={ () => setBorderRadius( undefined ) }\n\t\t\t\t\tisShownByDefault={ defaultControls.radius }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t<BorderRadiusControl\n\t\t\t\t\t\tpresets={ settings?.border?.radiusSizes }\n\t\t\t\t\t\tvalues={ borderRadiusValues }\n\t\t\t\t\t\tonChange={ ( newValue ) => {\n\t\t\t\t\t\t\tsetBorderRadius( newValue || undefined );\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ hasShadowControl && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\tlabel={ __( 'Shadow' ) }\n\t\t\t\t\thasValue={ hasShadow }\n\t\t\t\t\tonDeselect={ resetShadow }\n\t\t\t\t\tisShownByDefault={ defaultControls.shadow }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t{ hasBorderControl ? (\n\t\t\t\t\t\t<BaseControl.VisualLabel as=\"legend\">\n\t\t\t\t\t\t\t{ __( 'Shadow' ) }\n\t\t\t\t\t\t</BaseControl.VisualLabel>\n\t\t\t\t\t) : null }\n\n\t\t\t\t\t<ShadowPopover\n\t\t\t\t\t\tshadow={ shadow }\n\t\t\t\t\t\tonShadowChange={ setShadow }\n\t\t\t\t\t\tsettings={ settings }\n\t\t\t\t\t/>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t</Wrapper>\n\t);\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SACCA,gBAAgB,EAChBC,6BAA6B,IAAIC,eAAe,EAChDC,6BAA6B,IAAIC,eAAe,EAChDC,wBAAwB,IAAIC,UAAU,EACtCC,4BAA4B,IAAIC,cAAc,EAC9CC,WAAW,QACL,uBAAuB;AAC9B,SAASC,WAAW,EAAEC,OAAO,QAAQ,oBAAoB;AACzD,SAASC,EAAE,QAAQ,iBAAiB;;AAEpC;AACA;AACA;AACA,OAAOC,mBAAmB,MAAM,0BAA0B;AAC1D,SAASC,kBAAkB,QAAQ,SAAS;AAC5C,SAASC,oBAAoB,EAAEC,8BAA8B,QAAQ,SAAS;AAC9E,SAASC,YAAY,QAAQ,oBAAoB;AACjD,SAASC,mBAAmB,QAAQ,oBAAoB;AACxD,SAASC,aAAa,EAAEC,gBAAgB,QAAQ,2BAA2B;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAE5E,OAAO,SAASC,iBAAiBA,CAAEC,QAAQ,EAAG;EAC7C,MAAMC,QAAQ,GAAGC,MAAM,CAACC,MAAM,CAAEC,yBAAyB,CAAEJ,QAAS,CAAE,CAAC;EACvE,OAAOC,QAAQ,CAACI,IAAI,CAAEC,OAAQ,CAAC;AAChC;AAEA,OAAO,SAASF,yBAAyBA,CAAEJ,QAAQ,EAAG;EACrD,MAAMC,QAAQ,GAAG;IAChBM,cAAc,EAAEC,wBAAwB,CAAER,QAAS,CAAC;IACpDS,eAAe,EAAEC,yBAAyB,CAAEV,QAAS,CAAC;IACtDW,cAAc,EAAEC,wBAAwB,CAAEZ,QAAS,CAAC;IACpDa,cAAc,EAAEC,wBAAwB,CAAEd,QAAS,CAAC;IACpDe,SAAS,EAAEC,mBAAmB,CAAEhB,QAAS;EAC1C,CAAC;EAED,OAAOC,QAAQ;AAChB;AAEA,SAASO,wBAAwBA,CAAER,QAAQ,EAAG;EAC7C,OAAOA,QAAQ,EAAEiB,MAAM,EAAEC,KAAK;AAC/B;AAEA,SAASR,yBAAyBA,CAAEV,QAAQ,EAAG;EAC9C,OAAOA,QAAQ,EAAEiB,MAAM,EAAEE,MAAM;AAChC;AAEA,SAASP,wBAAwBA,CAAEZ,QAAQ,EAAG;EAC7C,OAAOA,QAAQ,EAAEiB,MAAM,EAAEG,KAAK;AAC/B;AAEA,SAASN,wBAAwBA,CAAEd,QAAQ,EAAG;EAC7C,OAAOA,QAAQ,EAAEiB,MAAM,EAAEI,KAAK;AAC/B;AAEA,SAASL,mBAAmBA,CAAEhB,QAAQ,EAAG;EACxC,MAAMsB,OAAO,GAAG5B,gBAAgB,CAAEM,QAAS,CAAC;EAC5C,OAAO,CAAC,CAAEA,QAAQ,EAAEuB,MAAM,IAAID,OAAO,CAACE,MAAM,GAAG,CAAC;AACjD;AAEA,SAASC,gBAAgBA,CAAE;EAC1BC,cAAc;EACdC,QAAQ;EACRC,KAAK;EACLC,OAAO;EACPC,QAAQ;EACRC;AACD,CAAC,EAAG;EACH,MAAMC,iBAAiB,GAAG1C,8BAA8B,CAAC,CAAC;EAC1D,MAAM2C,QAAQ,GAAGA,CAAA,KAAM;IACtB,MAAMC,YAAY,GAAGR,cAAc,CAAEE,KAAM,CAAC;IAC5CD,QAAQ,CAAEO,YAAa,CAAC;EACzB,CAAC;EAED,oBACCtC,IAAA,CAAChB,UAAU;IACVmD,KAAK,EAAGA,KAAO;IACfE,QAAQ,EAAGA,QAAU;IACrBJ,OAAO,EAAGA,OAAS;IACnBG,iBAAiB,EAAGA,iBAAmB;IAAAF,QAAA,EAErCA;EAAQ,CACC,CAAC;AAEf;AAEA,MAAMK,gBAAgB,GAAG;EACxBhB,MAAM,EAAE,IAAI;EACZD,KAAK,EAAE,IAAI;EACXG,KAAK,EAAE,IAAI;EACXE,MAAM,EAAE;AACT,CAAC;AAED,eAAe,SAASa,WAAWA,CAAE;EACpCC,EAAE,EAAEC,OAAO,GAAGb,gBAAgB;EAC9BG,KAAK;EACLD,QAAQ;EACRY,cAAc,GAAGX,KAAK;EACtB5B,QAAQ;EACR6B,OAAO;EACPW,IAAI;EACJC,eAAe,GAAGN;AACnB,CAAC,EAAG;EAAA,IAAAO,qBAAA,EAAAC,IAAA,EAAAC,KAAA,EAAAC,qBAAA;EACH,MAAMC,MAAM,GAAG1D,kBAAkB,CAAEY,QAAS,CAAC;EAC7C,MAAM+C,WAAW,GAAG/D,WAAW,CAC5BgE,QAAQ,IAAM3D,oBAAoB,CAAE;IAAEW;EAAS,CAAC,EAAE,EAAE,EAAEgD,QAAS,CAAC,EAClE,CAAEhD,QAAQ,CACX,CAAC;EACD,MAAMiD,gBAAgB,GAAKC,UAAU,IAAM;IAC1C,MAAMC,SAAS,GAAGL,MAAM,CAACM,OAAO,CAC/B,CAAE;MAAEN,MAAM,EAAEO;IAAa,CAAC,KAAMA,YACjC,CAAC;IACD,MAAMC,WAAW,GAAGH,SAAS,CAACI,IAAI,CACjC,CAAE;MAAErC;IAAM,CAAC,KAAMA,KAAK,KAAKgC,UAC5B,CAAC;IACD,OAAOI,WAAW,GACf,mBAAmB,GAAGA,WAAW,CAACE,IAAI,GACtCN,UAAU;EACd,CAAC;EACD,MAAMjC,MAAM,GAAGhC,OAAO,CAAE,MAAM;IAC7B,IAAKT,eAAe,CAAE+D,cAAc,EAAEtB,MAAO,CAAC,EAAG;MAChD,MAAMwC,WAAW,GAAG;QAAE,GAAGlB,cAAc,EAAEtB;MAAO,CAAC;MACjD,CAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAE,CAACyC,OAAO,CAAIC,IAAI,IAAM;QACzDF,WAAW,CAAEE,IAAI,CAAE,GAAG;UACrB,GAAGF,WAAW,CAAEE,IAAI,CAAE;UACtBzC,KAAK,EAAE6B,WAAW,CAAEU,WAAW,CAAEE,IAAI,CAAE,EAAEzC,KAAM;QAChD,CAAC;MACF,CAAE,CAAC;MACH,OAAOuC,WAAW;IACnB;IACA,OAAO;MACN,GAAGlB,cAAc,EAAEtB,MAAM;MACzBC,KAAK,EAAEqB,cAAc,EAAEtB,MAAM,EAAEC,KAAK,GACjC6B,WAAW,CAAER,cAAc,EAAEtB,MAAM,EAAEC,KAAM,CAAC,GAC5C0C;IACJ,CAAC;EACF,CAAC,EAAE,CAAErB,cAAc,EAAEtB,MAAM,EAAE8B,WAAW,CAAG,CAAC;EAC5C,MAAMc,SAAS,GAAKC,SAAS,IAC5BnC,QAAQ,CAAE;IAAE,GAAGC,KAAK;IAAEX,MAAM,EAAE6C;EAAU,CAAE,CAAC;EAC5C,MAAMC,eAAe,GAAGvD,wBAAwB,CAAER,QAAS,CAAC;EAC5D,MAAMgE,eAAe,GAAGpD,wBAAwB,CAAEZ,QAAS,CAAC;EAC5D,MAAMiE,eAAe,GAAGnD,wBAAwB,CAAEd,QAAS,CAAC;;EAE5D;EACA,MAAMkE,gBAAgB,GAAGxD,yBAAyB,CAAEV,QAAS,CAAC;EAC9D,MAAMmE,kBAAkB,GAAGlF,OAAO,CAAE,MAAM;IACzC,IAAK,OAAOgC,MAAM,EAAEE,MAAM,KAAK,QAAQ,EAAG;MACzC,OAAO4B,WAAW,CAAE9B,MAAM,EAAEE,MAAO,CAAC;IACrC;IACA,OAAO;MACNiD,OAAO,EAAErB,WAAW,CAAE9B,MAAM,EAAEE,MAAM,EAAEiD,OAAQ,CAAC;MAC/CC,QAAQ,EAAEtB,WAAW,CAAE9B,MAAM,EAAEE,MAAM,EAAEkD,QAAS,CAAC;MACjDC,UAAU,EAAEvB,WAAW,CAAE9B,MAAM,EAAEE,MAAM,EAAEmD,UAAW,CAAC;MACrDC,WAAW,EAAExB,WAAW,CAAE9B,MAAM,EAAEE,MAAM,EAAEoD,WAAY;IACvD,CAAC;EACF,CAAC,EAAE,CAAEtD,MAAM,EAAEE,MAAM,EAAE4B,WAAW,CAAG,CAAC;EACpC,MAAMyB,eAAe,GAAKC,eAAe,IACxCZ,SAAS,CAAE;IAAE,GAAG5C,MAAM;IAAEE,MAAM,EAAEsD;EAAgB,CAAE,CAAC;EACpD,MAAMhE,eAAe,GAAGA,CAAA,KAAM;IAC7B,MAAMiE,YAAY,GAAG9C,KAAK,EAAEX,MAAM,EAAEE,MAAM;IAC1C,IAAK,OAAOuD,YAAY,KAAK,QAAQ,EAAG;MACvC,OAAOxE,MAAM,CAACyE,OAAO,CAAED,YAAa,CAAC,CAACrE,IAAI,CAAEC,OAAQ,CAAC;IACtD;IACA,OAAO,CAAC,CAAEoE,YAAY;EACvB,CAAC;EACD,MAAME,gBAAgB,GAAG5D,mBAAmB,CAAEhB,QAAS,CAAC;;EAExD;EACA,MAAMuB,MAAM,GAAGwB,WAAW,CAAER,cAAc,EAAEhB,MAAO,CAAC;EACpD,MAAMsD,aAAa,IAAAnC,qBAAA,GAAG1C,QAAQ,EAAEuB,MAAM,EAAEuD,OAAO,cAAApC,qBAAA,cAAAA,qBAAA,GAAI,CAAC,CAAC;EACrD,MAAMqC,mBAAmB,IAAApC,IAAA,IAAAC,KAAA,IAAAC,qBAAA,GACxBgC,aAAa,CAACG,MAAM,cAAAnC,qBAAA,cAAAA,qBAAA,GACpBgC,aAAa,CAACI,KAAK,cAAArC,KAAA,cAAAA,KAAA,GACnBiC,aAAa,CAACK,OAAO,cAAAvC,IAAA,cAAAA,IAAA,GACrB,EAAE;EACH,MAAMwC,SAAS,GAAKC,QAAQ,IAAM;IACjC,MAAM5B,IAAI,GAAGuB,mBAAmB,EAAExB,IAAI,CACrC,CAAE;MAAEhC,MAAM,EAAE8D;IAAW,CAAC,KAAMA,UAAU,KAAKD,QAC9C,CAAC,EAAE5B,IAAI;IAEP7B,QAAQ,CACPpC,YAAY,CACXqC,KAAK,EACL,CAAE,QAAQ,CAAE,EACZ4B,IAAI,GAAG,qBAAsBA,IAAI,EAAG,GAAG4B,QAAQ,IAAIxB,SACpD,CACD,CAAC;EACF,CAAC;EACD,MAAM7C,SAAS,GAAGA,CAAA,KAAM,CAAC,CAAEa,KAAK,EAAEL,MAAM;EACxC,MAAM+D,WAAW,GAAGA,CAAA,KAAMH,SAAS,CAAEvB,SAAU,CAAC;EAEhD,MAAM2B,WAAW,GAAGA,CAAA,KAAM;IACzB,IAAK9E,eAAe,CAAC,CAAC,EAAG;MACxB,OAAOoD,SAAS,CAAE;QAAE1C,MAAM,EAAES,KAAK,EAAEX,MAAM,EAAEE;MAAO,CAAE,CAAC;IACtD;IAEA0C,SAAS,CAAED,SAAU,CAAC;EACvB,CAAC;EAED,MAAM4B,cAAc,GAAK1B,SAAS,IAAM;IACvC;IACA;IACA,MAAM2B,aAAa,GAAG;MAAE,GAAG3B;IAAU,CAAC;IAEtC,IAAKtF,eAAe,CAAEiH,aAAc,CAAC,EAAG;MACvC,CAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAE,CAAC/B,OAAO,CAAIC,IAAI,IAAM;QACzD,IAAK8B,aAAa,CAAE9B,IAAI,CAAE,EAAG;UAC5B8B,aAAa,CAAE9B,IAAI,CAAE,GAAG;YACvB,GAAG8B,aAAa,CAAE9B,IAAI,CAAE;YACxBzC,KAAK,EAAE+B,gBAAgB,CAAEwC,aAAa,CAAE9B,IAAI,CAAE,EAAEzC,KAAM;UACvD,CAAC;QACF;MACD,CAAE,CAAC;IACJ,CAAC,MAAM,IAAKuE,aAAa,EAAG;MAC3BA,aAAa,CAACvE,KAAK,GAAG+B,gBAAgB,CAAEwC,aAAa,CAACvE,KAAM,CAAC;IAC9D;;IAEA;IACA;IACA;IACA2C,SAAS,CAAE;MAAE1C,MAAM,EAAEF,MAAM,EAAEE,MAAM;MAAE,GAAGsE;IAAc,CAAE,CAAC;EAC1D,CAAC;EAED,MAAM/D,cAAc,GAAG1C,WAAW,CAAI0G,aAAa,IAAM;IACxD,OAAO;MACN,GAAGA,aAAa;MAChBzE,MAAM,EAAE2C,SAAS;MACjBrC,MAAM,EAAEqC;IACT,CAAC;EACF,CAAC,EAAE,EAAG,CAAC;EAEP,MAAM+B,mBAAmB,GACxBlD,eAAe,EAAEvB,KAAK,IAAIuB,eAAe,EAAEpB,KAAK;EAEjD,MAAMuE,gBAAgB,GACrB7B,eAAe,IACfC,eAAe,IACfC,eAAe,IACfC,gBAAgB;EAEjB,MAAMnC,KAAK,GAAGvC,mBAAmB,CAAE;IAClCqG,SAAS,EAAErD,IAAI;IACfoC,gBAAgB;IAChBgB;EACD,CAAE,CAAC;EAEH,oBACC9F,KAAA,CAACwC,OAAO;IACPZ,cAAc,EAAGA,cAAgB;IACjCE,KAAK,EAAGA,KAAO;IACfD,QAAQ,EAAGA,QAAU;IACrBE,OAAO,EAAGA,OAAS;IACnBE,KAAK,EAAGA,KAAO;IAAAD,QAAA,GAEb,CAAEmC,eAAe,IAAIF,eAAe,kBACrCnE,IAAA,CAACd,cAAc;MACdgH,QAAQ,EAAGA,CAAA,KAAMpH,eAAe,CAAEkD,KAAK,EAAEX,MAAO,CAAG;MACnDc,KAAK,EAAG7C,EAAE,CAAE,QAAS,CAAG;MACxB6G,UAAU,EAAGA,CAAA,KAAMR,WAAW,CAAC,CAAG;MAClCS,gBAAgB,EAAGL,mBAAqB;MACxC9D,OAAO,EAAGA,OAAS;MAAAC,QAAA,eAEnBlC,IAAA,CAACtB,gBAAgB;QAChBwE,MAAM,EAAGA,MAAQ;QACjBmD,WAAW;QACXC,WAAW,EAAGlC,eAAiB;QAC/BrC,QAAQ,EAAG6D,cAAgB;QAC3BW,aAAa,EAAG,EAAI;QACpBC,gBAAgB,EAAC,YAAY;QAC7BxE,KAAK,EAAGX,MAAQ;QAChBoF,iCAAiC;QACjCC,IAAI,EAAC,kBAAkB;QACvBC,mBAAmB,EAAG,CAAE3B,gBAAkB;QAC1C7C,KAAK,EAAG7C,EAAE,CAAE,QAAS;MAAG,CACxB;IAAC,CACa,CAChB,EACCgF,gBAAgB,iBACjBtE,IAAA,CAACd,cAAc;MACdgH,QAAQ,EAAGrF,eAAiB;MAC5BsB,KAAK,EAAG7C,EAAE,CAAE,QAAS,CAAG;MACxB6G,UAAU,EAAGA,CAAA,KAAMvB,eAAe,CAAEZ,SAAU,CAAG;MACjDoC,gBAAgB,EAAGvD,eAAe,CAACtB,MAAQ;MAC3CU,OAAO,EAAGA,OAAS;MAAAC,QAAA,eAEnBlC,IAAA,CAACT,mBAAmB;QACnB2F,OAAO,EAAG9E,QAAQ,EAAEiB,MAAM,EAAEuF,WAAa;QACzCrG,MAAM,EAAGgE,kBAAoB;QAC7BxC,QAAQ,EAAKyD,QAAQ,IAAM;UAC1BZ,eAAe,CAAEY,QAAQ,IAAIxB,SAAU,CAAC;QACzC;MAAG,CACH;IAAC,CACa,CAChB,EACCgB,gBAAgB,iBACjB9E,KAAA,CAAChB,cAAc;MACdiD,KAAK,EAAG7C,EAAE,CAAE,QAAS,CAAG;MACxB4G,QAAQ,EAAG/E,SAAW;MACtBgF,UAAU,EAAGT,WAAa;MAC1BU,gBAAgB,EAAGvD,eAAe,CAAClB,MAAQ;MAC3CM,OAAO,EAAGA,OAAS;MAAAC,QAAA,GAEjB8D,gBAAgB,gBACjBhG,IAAA,CAACb,WAAW,CAAC0H,WAAW;QAACpE,EAAE,EAAC,QAAQ;QAAAP,QAAA,EACjC5C,EAAE,CAAE,QAAS;MAAC,CACQ,CAAC,GACvB,IAAI,eAERU,IAAA,CAACH,aAAa;QACb8B,MAAM,EAAGA,MAAQ;QACjBmF,cAAc,EAAGvB,SAAW;QAC5BnF,QAAQ,EAAGA;MAAU,CACrB,CAAC;IAAA,CACa,CAChB;EAAA,CACO,CAAC;AAEZ","ignoreList":[]}
1
+ {"version":3,"names":["BorderBoxControl","__experimentalHasSplitBorders","hasSplitBorders","__experimentalIsDefinedBorder","isDefinedBorder","__experimentalToolsPanel","ToolsPanel","__experimentalToolsPanelItem","ToolsPanelItem","BaseControl","useCallback","useMemo","__","BorderRadiusControl","useColorsPerOrigin","getValueFromVariable","useToolsPanelDropdownMenuProps","setImmutably","useBorderPanelLabel","ShadowPopover","useShadowPresets","jsx","_jsx","jsxs","_jsxs","useHasBorderPanel","settings","controls","Object","values","useHasBorderPanelControls","some","Boolean","hasBorderColor","useHasBorderColorControl","hasBorderRadius","useHasBorderRadiusControl","hasBorderStyle","useHasBorderStyleControl","hasBorderWidth","useHasBorderWidthControl","hasShadow","useHasShadowControl","border","color","radius","style","width","shadows","shadow","length","BorderToolsPanel","resetAllFilter","onChange","value","panelId","children","label","dropdownMenuProps","resetAll","updatedValue","DEFAULT_CONTROLS","BorderPanel","as","Wrapper","inheritedValue","name","defaultControls","_settings$shadow$pres","_ref","_ref2","_shadowPresets$custom","colors","decodeValue","rawValue","encodeColorValue","colorValue","allColors","flatMap","originColors","colorObject","find","slug","borderValue","forEach","side","undefined","setBorder","newBorder","showBorderColor","showBorderStyle","showBorderWidth","showBorderRadius","borderRadiusValues","topLeft","topRight","bottomLeft","bottomRight","setBorderRadius","newBorderRadius","borderValues","entries","hasShadowControl","shadowPresets","presets","mergedShadowPresets","custom","theme","default","setShadow","newValue","shadowName","resetShadow","resetBorder","onBorderChange","updatedBorder","previousValue","showBorderByDefault","hasBorderControl","blockName","hasValue","onDeselect","isShownByDefault","enableAlpha","enableStyle","popoverOffset","popoverPlacement","__experimentalIsRenderedInSidebar","size","hideLabelFromVision","radiusSizes","VisualLabel","onShadowChange"],"sources":["@wordpress/block-editor/src/components/global-styles/border-panel.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tBorderBoxControl,\n\t__experimentalHasSplitBorders as hasSplitBorders,\n\t__experimentalIsDefinedBorder as isDefinedBorder,\n\t__experimentalToolsPanel as ToolsPanel,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n\tBaseControl,\n} from '@wordpress/components';\nimport { useCallback, useMemo } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport BorderRadiusControl from '../border-radius-control';\nimport { useColorsPerOrigin } from './hooks';\nimport { getValueFromVariable, useToolsPanelDropdownMenuProps } from './utils';\nimport { setImmutably } from '../../utils/object';\nimport { useBorderPanelLabel } from '../../hooks/border';\nimport { ShadowPopover, useShadowPresets } from './shadow-panel-components';\n\nexport function useHasBorderPanel( settings ) {\n\tconst controls = Object.values( useHasBorderPanelControls( settings ) );\n\treturn controls.some( Boolean );\n}\n\nexport function useHasBorderPanelControls( settings ) {\n\tconst controls = {\n\t\thasBorderColor: useHasBorderColorControl( settings ),\n\t\thasBorderRadius: useHasBorderRadiusControl( settings ),\n\t\thasBorderStyle: useHasBorderStyleControl( settings ),\n\t\thasBorderWidth: useHasBorderWidthControl( settings ),\n\t\thasShadow: useHasShadowControl( settings ),\n\t};\n\n\treturn controls;\n}\n\nfunction useHasBorderColorControl( settings ) {\n\treturn settings?.border?.color;\n}\n\nfunction useHasBorderRadiusControl( settings ) {\n\treturn settings?.border?.radius;\n}\n\nfunction useHasBorderStyleControl( settings ) {\n\treturn settings?.border?.style;\n}\n\nfunction useHasBorderWidthControl( settings ) {\n\treturn settings?.border?.width;\n}\n\nfunction useHasShadowControl( settings ) {\n\tconst shadows = useShadowPresets( settings );\n\treturn !! settings?.shadow && shadows.length > 0;\n}\n\nfunction BorderToolsPanel( {\n\tresetAllFilter,\n\tonChange,\n\tvalue,\n\tpanelId,\n\tchildren,\n\tlabel,\n} ) {\n\tconst dropdownMenuProps = useToolsPanelDropdownMenuProps();\n\tconst resetAll = () => {\n\t\tconst updatedValue = resetAllFilter( value );\n\t\tonChange( updatedValue );\n\t};\n\n\treturn (\n\t\t<ToolsPanel\n\t\t\tlabel={ label }\n\t\t\tresetAll={ resetAll }\n\t\t\tpanelId={ panelId }\n\t\t\tdropdownMenuProps={ dropdownMenuProps }\n\t\t>\n\t\t\t{ children }\n\t\t</ToolsPanel>\n\t);\n}\n\nconst DEFAULT_CONTROLS = {\n\tradius: true,\n\tcolor: true,\n\twidth: true,\n\tshadow: true,\n};\n\nexport default function BorderPanel( {\n\tas: Wrapper = BorderToolsPanel,\n\tvalue,\n\tonChange,\n\tinheritedValue = value,\n\tsettings,\n\tpanelId,\n\tname,\n\tdefaultControls = DEFAULT_CONTROLS,\n} ) {\n\tconst colors = useColorsPerOrigin( settings );\n\tconst decodeValue = useCallback(\n\t\t( rawValue ) => getValueFromVariable( { settings }, '', rawValue ),\n\t\t[ settings ]\n\t);\n\tconst encodeColorValue = ( colorValue ) => {\n\t\tconst allColors = colors.flatMap(\n\t\t\t( { colors: originColors } ) => originColors\n\t\t);\n\t\tconst colorObject = allColors.find(\n\t\t\t( { color } ) => color === colorValue\n\t\t);\n\t\treturn colorObject\n\t\t\t? 'var:preset|color|' + colorObject.slug\n\t\t\t: colorValue;\n\t};\n\tconst border = useMemo( () => {\n\t\tif ( hasSplitBorders( inheritedValue?.border ) ) {\n\t\t\tconst borderValue = { ...inheritedValue?.border };\n\t\t\t[ 'top', 'right', 'bottom', 'left' ].forEach( ( side ) => {\n\t\t\t\tborderValue[ side ] = {\n\t\t\t\t\t...borderValue[ side ],\n\t\t\t\t\tcolor: decodeValue( borderValue[ side ]?.color ),\n\t\t\t\t};\n\t\t\t} );\n\t\t\treturn borderValue;\n\t\t}\n\t\treturn {\n\t\t\t...inheritedValue?.border,\n\t\t\tcolor: inheritedValue?.border?.color\n\t\t\t\t? decodeValue( inheritedValue?.border?.color )\n\t\t\t\t: undefined,\n\t\t};\n\t}, [ inheritedValue?.border, decodeValue ] );\n\tconst setBorder = ( newBorder ) =>\n\t\tonChange( { ...value, border: newBorder } );\n\tconst showBorderColor = useHasBorderColorControl( settings );\n\tconst showBorderStyle = useHasBorderStyleControl( settings );\n\tconst showBorderWidth = useHasBorderWidthControl( settings );\n\n\t// Border radius.\n\tconst showBorderRadius = useHasBorderRadiusControl( settings );\n\tconst borderRadiusValues = useMemo( () => {\n\t\tif ( typeof border?.radius !== 'object' ) {\n\t\t\treturn border?.radius;\n\t\t}\n\n\t\treturn {\n\t\t\ttopLeft: border?.radius?.topLeft,\n\t\t\ttopRight: border?.radius?.topRight,\n\t\t\tbottomLeft: border?.radius?.bottomLeft,\n\t\t\tbottomRight: border?.radius?.bottomRight,\n\t\t};\n\t}, [ border?.radius ] );\n\tconst setBorderRadius = ( newBorderRadius ) =>\n\t\tsetBorder( { ...border, radius: newBorderRadius } );\n\tconst hasBorderRadius = () => {\n\t\tconst borderValues = value?.border?.radius;\n\t\tif ( typeof borderValues === 'object' ) {\n\t\t\treturn Object.entries( borderValues ).some( Boolean );\n\t\t}\n\t\treturn !! borderValues;\n\t};\n\tconst hasShadowControl = useHasShadowControl( settings );\n\n\t// Shadow\n\tconst shadow = decodeValue( inheritedValue?.shadow );\n\tconst shadowPresets = settings?.shadow?.presets ?? {};\n\tconst mergedShadowPresets =\n\t\tshadowPresets.custom ??\n\t\tshadowPresets.theme ??\n\t\tshadowPresets.default ??\n\t\t[];\n\tconst setShadow = ( newValue ) => {\n\t\tconst slug = mergedShadowPresets?.find(\n\t\t\t( { shadow: shadowName } ) => shadowName === newValue\n\t\t)?.slug;\n\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\tvalue,\n\t\t\t\t[ 'shadow' ],\n\t\t\t\tslug ? `var:preset|shadow|${ slug }` : newValue || undefined\n\t\t\t)\n\t\t);\n\t};\n\tconst hasShadow = () => !! value?.shadow;\n\tconst resetShadow = () => setShadow( undefined );\n\n\tconst resetBorder = () => {\n\t\tif ( hasBorderRadius() ) {\n\t\t\treturn setBorder( { radius: value?.border?.radius } );\n\t\t}\n\n\t\tsetBorder( undefined );\n\t};\n\n\tconst onBorderChange = ( newBorder ) => {\n\t\t// Ensure we have a visible border style when a border width or\n\t\t// color is being selected.\n\t\tconst updatedBorder = { ...newBorder };\n\n\t\tif ( hasSplitBorders( updatedBorder ) ) {\n\t\t\t[ 'top', 'right', 'bottom', 'left' ].forEach( ( side ) => {\n\t\t\t\tif ( updatedBorder[ side ] ) {\n\t\t\t\t\tupdatedBorder[ side ] = {\n\t\t\t\t\t\t...updatedBorder[ side ],\n\t\t\t\t\t\tcolor: encodeColorValue( updatedBorder[ side ]?.color ),\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t} );\n\t\t} else if ( updatedBorder ) {\n\t\t\tupdatedBorder.color = encodeColorValue( updatedBorder.color );\n\t\t}\n\n\t\t// As radius is maintained separately to color, style, and width\n\t\t// maintain its value. Undefined values here will be cleaned when\n\t\t// global styles are saved.\n\t\tsetBorder( { radius: border?.radius, ...updatedBorder } );\n\t};\n\n\tconst resetAllFilter = useCallback( ( previousValue ) => {\n\t\treturn {\n\t\t\t...previousValue,\n\t\t\tborder: undefined,\n\t\t\tshadow: undefined,\n\t\t};\n\t}, [] );\n\n\tconst showBorderByDefault =\n\t\tdefaultControls?.color || defaultControls?.width;\n\n\tconst hasBorderControl =\n\t\tshowBorderColor ||\n\t\tshowBorderStyle ||\n\t\tshowBorderWidth ||\n\t\tshowBorderRadius;\n\n\tconst label = useBorderPanelLabel( {\n\t\tblockName: name,\n\t\thasShadowControl,\n\t\thasBorderControl,\n\t} );\n\n\treturn (\n\t\t<Wrapper\n\t\t\tresetAllFilter={ resetAllFilter }\n\t\t\tvalue={ value }\n\t\t\tonChange={ onChange }\n\t\t\tpanelId={ panelId }\n\t\t\tlabel={ label }\n\t\t>\n\t\t\t{ ( showBorderWidth || showBorderColor ) && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\thasValue={ () => isDefinedBorder( value?.border ) }\n\t\t\t\t\tlabel={ __( 'Border' ) }\n\t\t\t\t\tonDeselect={ () => resetBorder() }\n\t\t\t\t\tisShownByDefault={ showBorderByDefault }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t<BorderBoxControl\n\t\t\t\t\t\tcolors={ colors }\n\t\t\t\t\t\tenableAlpha\n\t\t\t\t\t\tenableStyle={ showBorderStyle }\n\t\t\t\t\t\tonChange={ onBorderChange }\n\t\t\t\t\t\tpopoverOffset={ 40 }\n\t\t\t\t\t\tpopoverPlacement=\"left-start\"\n\t\t\t\t\t\tvalue={ border }\n\t\t\t\t\t\t__experimentalIsRenderedInSidebar\n\t\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t\thideLabelFromVision={ ! hasShadowControl }\n\t\t\t\t\t\tlabel={ __( 'Border' ) }\n\t\t\t\t\t/>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ showBorderRadius && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\thasValue={ hasBorderRadius }\n\t\t\t\t\tlabel={ __( 'Radius' ) }\n\t\t\t\t\tonDeselect={ () => setBorderRadius( undefined ) }\n\t\t\t\t\tisShownByDefault={ defaultControls.radius }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t<BorderRadiusControl\n\t\t\t\t\t\tpresets={ settings?.border?.radiusSizes }\n\t\t\t\t\t\tvalues={ borderRadiusValues }\n\t\t\t\t\t\tonChange={ ( newValue ) => {\n\t\t\t\t\t\t\tsetBorderRadius( newValue || undefined );\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ hasShadowControl && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\tlabel={ __( 'Shadow' ) }\n\t\t\t\t\thasValue={ hasShadow }\n\t\t\t\t\tonDeselect={ resetShadow }\n\t\t\t\t\tisShownByDefault={ defaultControls.shadow }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t{ hasBorderControl ? (\n\t\t\t\t\t\t<BaseControl.VisualLabel as=\"legend\">\n\t\t\t\t\t\t\t{ __( 'Shadow' ) }\n\t\t\t\t\t\t</BaseControl.VisualLabel>\n\t\t\t\t\t) : null }\n\n\t\t\t\t\t<ShadowPopover\n\t\t\t\t\t\tshadow={ shadow }\n\t\t\t\t\t\tonShadowChange={ setShadow }\n\t\t\t\t\t\tsettings={ settings }\n\t\t\t\t\t/>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t</Wrapper>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
@@ -9,12 +9,27 @@ import { safeDecodeURI, filterURLForDisplay, getPath } from '@wordpress/url';
9
9
  import { pipe } from '@wordpress/compose';
10
10
  import deprecated from '@wordpress/deprecated';
11
11
  import { jsx as _jsx } from "react/jsx-runtime";
12
- const ICONS_MAP = {
13
- post: postList,
14
- page,
15
- post_tag: tag,
16
- category,
17
- attachment: file
12
+ const TYPES = {
13
+ post: {
14
+ icon: postList,
15
+ label: __('Post')
16
+ },
17
+ page: {
18
+ icon: page,
19
+ label: __('Page')
20
+ },
21
+ post_tag: {
22
+ icon: tag,
23
+ label: __('Tag')
24
+ },
25
+ category: {
26
+ icon: category,
27
+ label: __('Category')
28
+ },
29
+ attachment: {
30
+ icon: file,
31
+ label: __('Attachment')
32
+ }
18
33
  };
19
34
  function SearchItemIcon({
20
35
  isURL,
@@ -23,8 +38,8 @@ function SearchItemIcon({
23
38
  let icon = null;
24
39
  if (isURL) {
25
40
  icon = globe;
26
- } else if (suggestion.type in ICONS_MAP) {
27
- icon = ICONS_MAP[suggestion.type];
41
+ } else if (suggestion.type in TYPES) {
42
+ icon = TYPES[suggestion.type].icon;
28
43
  if (suggestion.type === 'page') {
29
44
  if (suggestion.isFrontPage) {
30
45
  icon = home;
@@ -112,14 +127,17 @@ export const LinkControlSearchItem = ({
112
127
  };
113
128
  function getVisualTypeName(suggestion) {
114
129
  if (suggestion.isFrontPage) {
115
- return 'front page';
130
+ return __('Front page');
116
131
  }
117
132
  if (suggestion.isBlogHome) {
118
- return 'blog home';
133
+ return __('Blog home');
119
134
  }
120
135
 
121
- // Rename 'post_tag' to 'tag'. Ideally, the API would return the localised CPT or taxonomy label.
122
- return suggestion.type === 'post_tag' ? 'tag' : suggestion.type;
136
+ // Provide translated labels for built-in post types. Ideally, the API would return the localised CPT or taxonomy label.
137
+ if (suggestion.type in TYPES) {
138
+ return TYPES[suggestion.type].label;
139
+ }
140
+ return suggestion.type;
123
141
  }
124
142
  export default LinkControlSearchItem;
125
143
  export const __experimentalLinkControlSearchItem = props => {
@@ -1 +1 @@
1
- {"version":3,"names":["__","MenuItem","TextHighlight","Icon","globe","page","tag","postList","category","file","home","verse","__unstableStripHTML","stripHTML","safeDecodeURI","filterURLForDisplay","getPath","pipe","deprecated","jsx","_jsx","ICONS_MAP","post","post_tag","attachment","SearchItemIcon","isURL","suggestion","icon","type","isFrontPage","isBlogHome","className","addLeadingSlash","url","trimmedURL","trim","length","replace","removeTrailingSlash","partialRight","fn","partialArgs","args","defaultTo","d","v","undefined","getURLForDisplay","LinkControlSearchItem","itemProps","searchTerm","onClick","shouldShowType","info","iconPosition","shortcut","getVisualTypeName","children","text","title","highlight","__experimentalLinkControlSearchItem","props","since"],"sources":["@wordpress/block-editor/src/components/link-control/search-item.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { MenuItem, TextHighlight } from '@wordpress/components';\nimport {\n\tIcon,\n\tglobe,\n\tpage,\n\ttag,\n\tpostList,\n\tcategory,\n\tfile,\n\thome,\n\tverse,\n} from '@wordpress/icons';\nimport { __unstableStripHTML as stripHTML } from '@wordpress/dom';\nimport { safeDecodeURI, filterURLForDisplay, getPath } from '@wordpress/url';\nimport { pipe } from '@wordpress/compose';\nimport deprecated from '@wordpress/deprecated';\n\nconst ICONS_MAP = {\n\tpost: postList,\n\tpage,\n\tpost_tag: tag,\n\tcategory,\n\tattachment: file,\n};\n\nfunction SearchItemIcon( { isURL, suggestion } ) {\n\tlet icon = null;\n\n\tif ( isURL ) {\n\t\ticon = globe;\n\t} else if ( suggestion.type in ICONS_MAP ) {\n\t\ticon = ICONS_MAP[ suggestion.type ];\n\t\tif ( suggestion.type === 'page' ) {\n\t\t\tif ( suggestion.isFrontPage ) {\n\t\t\t\ticon = home;\n\t\t\t}\n\t\t\tif ( suggestion.isBlogHome ) {\n\t\t\t\ticon = verse;\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( icon ) {\n\t\treturn (\n\t\t\t<Icon\n\t\t\t\tclassName=\"block-editor-link-control__search-item-icon\"\n\t\t\t\ticon={ icon }\n\t\t\t/>\n\t\t);\n\t}\n\n\treturn null;\n}\n\n/**\n * Adds a leading slash to a url if it doesn't already have one.\n * @param {string} url the url to add a leading slash to.\n * @return {string} the url with a leading slash.\n */\nfunction addLeadingSlash( url ) {\n\tconst trimmedURL = url?.trim();\n\n\tif ( ! trimmedURL?.length ) {\n\t\treturn url;\n\t}\n\n\treturn url?.replace( /^\\/?/, '/' );\n}\n\nfunction removeTrailingSlash( url ) {\n\tconst trimmedURL = url?.trim();\n\n\tif ( ! trimmedURL?.length ) {\n\t\treturn url;\n\t}\n\n\treturn url?.replace( /\\/$/, '' );\n}\n\nconst partialRight =\n\t( fn, ...partialArgs ) =>\n\t( ...args ) =>\n\t\tfn( ...args, ...partialArgs );\n\nconst defaultTo = ( d ) => ( v ) => {\n\treturn v === null || v === undefined || v !== v ? d : v;\n};\n\n/**\n * Prepares a URL for display in the UI.\n * - decodes the URL.\n * - filters it (removes protocol, www, etc.).\n * - truncates it if necessary.\n * - adds a leading slash.\n * @param {string} url the url.\n * @return {string} the processed url to display.\n */\nfunction getURLForDisplay( url ) {\n\tif ( ! url ) {\n\t\treturn url;\n\t}\n\n\treturn pipe(\n\t\tsafeDecodeURI,\n\t\tgetPath,\n\t\tdefaultTo( '' ),\n\t\tpartialRight( filterURLForDisplay, 24 ),\n\t\tremoveTrailingSlash,\n\t\taddLeadingSlash\n\t)( url );\n}\n\nexport const LinkControlSearchItem = ( {\n\titemProps,\n\tsuggestion,\n\tsearchTerm,\n\tonClick,\n\tisURL = false,\n\tshouldShowType = false,\n} ) => {\n\tconst info = isURL\n\t\t? __( 'Press ENTER to add this link' )\n\t\t: getURLForDisplay( suggestion.url );\n\n\treturn (\n\t\t<MenuItem\n\t\t\t{ ...itemProps }\n\t\t\tinfo={ info }\n\t\t\ticonPosition=\"left\"\n\t\t\ticon={\n\t\t\t\t<SearchItemIcon suggestion={ suggestion } isURL={ isURL } />\n\t\t\t}\n\t\t\tonClick={ onClick }\n\t\t\tshortcut={ shouldShowType && getVisualTypeName( suggestion ) }\n\t\t\tclassName=\"block-editor-link-control__search-item\"\n\t\t>\n\t\t\t<TextHighlight\n\t\t\t\t// The component expects a plain text string.\n\t\t\t\ttext={ stripHTML( suggestion.title ) }\n\t\t\t\thighlight={ searchTerm }\n\t\t\t/>\n\t\t</MenuItem>\n\t);\n};\n\nfunction getVisualTypeName( suggestion ) {\n\tif ( suggestion.isFrontPage ) {\n\t\treturn 'front page';\n\t}\n\n\tif ( suggestion.isBlogHome ) {\n\t\treturn 'blog home';\n\t}\n\n\t// Rename 'post_tag' to 'tag'. Ideally, the API would return the localised CPT or taxonomy label.\n\treturn suggestion.type === 'post_tag' ? 'tag' : suggestion.type;\n}\n\nexport default LinkControlSearchItem;\n\nexport const __experimentalLinkControlSearchItem = ( props ) => {\n\tdeprecated( 'wp.blockEditor.__experimentalLinkControlSearchItem', {\n\t\tsince: '6.8',\n\t} );\n\n\treturn <LinkControlSearchItem { ...props } />;\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["__","MenuItem","TextHighlight","Icon","globe","page","tag","postList","category","file","home","verse","__unstableStripHTML","stripHTML","safeDecodeURI","filterURLForDisplay","getPath","pipe","deprecated","jsx","_jsx","TYPES","post","icon","label","post_tag","attachment","SearchItemIcon","isURL","suggestion","type","isFrontPage","isBlogHome","className","addLeadingSlash","url","trimmedURL","trim","length","replace","removeTrailingSlash","partialRight","fn","partialArgs","args","defaultTo","d","v","undefined","getURLForDisplay","LinkControlSearchItem","itemProps","searchTerm","onClick","shouldShowType","info","iconPosition","shortcut","getVisualTypeName","children","text","title","highlight","__experimentalLinkControlSearchItem","props","since"],"sources":["@wordpress/block-editor/src/components/link-control/search-item.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { MenuItem, TextHighlight } from '@wordpress/components';\nimport {\n\tIcon,\n\tglobe,\n\tpage,\n\ttag,\n\tpostList,\n\tcategory,\n\tfile,\n\thome,\n\tverse,\n} from '@wordpress/icons';\nimport { __unstableStripHTML as stripHTML } from '@wordpress/dom';\nimport { safeDecodeURI, filterURLForDisplay, getPath } from '@wordpress/url';\nimport { pipe } from '@wordpress/compose';\nimport deprecated from '@wordpress/deprecated';\n\nconst TYPES = {\n\tpost: {\n\t\ticon: postList,\n\t\tlabel: __( 'Post' ),\n\t},\n\tpage: {\n\t\ticon: page,\n\t\tlabel: __( 'Page' ),\n\t},\n\tpost_tag: {\n\t\ticon: tag,\n\t\tlabel: __( 'Tag' ),\n\t},\n\tcategory: {\n\t\ticon: category,\n\t\tlabel: __( 'Category' ),\n\t},\n\tattachment: {\n\t\ticon: file,\n\t\tlabel: __( 'Attachment' ),\n\t},\n};\n\nfunction SearchItemIcon( { isURL, suggestion } ) {\n\tlet icon = null;\n\n\tif ( isURL ) {\n\t\ticon = globe;\n\t} else if ( suggestion.type in TYPES ) {\n\t\ticon = TYPES[ suggestion.type ].icon;\n\t\tif ( suggestion.type === 'page' ) {\n\t\t\tif ( suggestion.isFrontPage ) {\n\t\t\t\ticon = home;\n\t\t\t}\n\t\t\tif ( suggestion.isBlogHome ) {\n\t\t\t\ticon = verse;\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( icon ) {\n\t\treturn (\n\t\t\t<Icon\n\t\t\t\tclassName=\"block-editor-link-control__search-item-icon\"\n\t\t\t\ticon={ icon }\n\t\t\t/>\n\t\t);\n\t}\n\n\treturn null;\n}\n\n/**\n * Adds a leading slash to a url if it doesn't already have one.\n * @param {string} url the url to add a leading slash to.\n * @return {string} the url with a leading slash.\n */\nfunction addLeadingSlash( url ) {\n\tconst trimmedURL = url?.trim();\n\n\tif ( ! trimmedURL?.length ) {\n\t\treturn url;\n\t}\n\n\treturn url?.replace( /^\\/?/, '/' );\n}\n\nfunction removeTrailingSlash( url ) {\n\tconst trimmedURL = url?.trim();\n\n\tif ( ! trimmedURL?.length ) {\n\t\treturn url;\n\t}\n\n\treturn url?.replace( /\\/$/, '' );\n}\n\nconst partialRight =\n\t( fn, ...partialArgs ) =>\n\t( ...args ) =>\n\t\tfn( ...args, ...partialArgs );\n\nconst defaultTo = ( d ) => ( v ) => {\n\treturn v === null || v === undefined || v !== v ? d : v;\n};\n\n/**\n * Prepares a URL for display in the UI.\n * - decodes the URL.\n * - filters it (removes protocol, www, etc.).\n * - truncates it if necessary.\n * - adds a leading slash.\n * @param {string} url the url.\n * @return {string} the processed url to display.\n */\nfunction getURLForDisplay( url ) {\n\tif ( ! url ) {\n\t\treturn url;\n\t}\n\n\treturn pipe(\n\t\tsafeDecodeURI,\n\t\tgetPath,\n\t\tdefaultTo( '' ),\n\t\tpartialRight( filterURLForDisplay, 24 ),\n\t\tremoveTrailingSlash,\n\t\taddLeadingSlash\n\t)( url );\n}\n\nexport const LinkControlSearchItem = ( {\n\titemProps,\n\tsuggestion,\n\tsearchTerm,\n\tonClick,\n\tisURL = false,\n\tshouldShowType = false,\n} ) => {\n\tconst info = isURL\n\t\t? __( 'Press ENTER to add this link' )\n\t\t: getURLForDisplay( suggestion.url );\n\n\treturn (\n\t\t<MenuItem\n\t\t\t{ ...itemProps }\n\t\t\tinfo={ info }\n\t\t\ticonPosition=\"left\"\n\t\t\ticon={\n\t\t\t\t<SearchItemIcon suggestion={ suggestion } isURL={ isURL } />\n\t\t\t}\n\t\t\tonClick={ onClick }\n\t\t\tshortcut={ shouldShowType && getVisualTypeName( suggestion ) }\n\t\t\tclassName=\"block-editor-link-control__search-item\"\n\t\t>\n\t\t\t<TextHighlight\n\t\t\t\t// The component expects a plain text string.\n\t\t\t\ttext={ stripHTML( suggestion.title ) }\n\t\t\t\thighlight={ searchTerm }\n\t\t\t/>\n\t\t</MenuItem>\n\t);\n};\n\nfunction getVisualTypeName( suggestion ) {\n\tif ( suggestion.isFrontPage ) {\n\t\treturn __( 'Front page' );\n\t}\n\n\tif ( suggestion.isBlogHome ) {\n\t\treturn __( 'Blog home' );\n\t}\n\n\t// Provide translated labels for built-in post types. Ideally, the API would return the localised CPT or taxonomy label.\n\tif ( suggestion.type in TYPES ) {\n\t\treturn TYPES[ suggestion.type ].label;\n\t}\n\n\treturn suggestion.type;\n}\n\nexport default LinkControlSearchItem;\n\nexport const __experimentalLinkControlSearchItem = ( props ) => {\n\tdeprecated( 'wp.blockEditor.__experimentalLinkControlSearchItem', {\n\t\tsince: '6.8',\n\t} );\n\n\treturn <LinkControlSearchItem { ...props } />;\n};\n"],"mappings":"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","ignoreList":[]}
@@ -2,9 +2,9 @@
2
2
  * WordPress dependencies
3
3
  */
4
4
  import { __ } from '@wordpress/i18n';
5
- import { useRef, useEffect, useState } from '@wordpress/element';
5
+ import { useRef, useEffect, useState, createInterpolateElement } from '@wordpress/element';
6
6
  import { focus } from '@wordpress/dom';
7
- import { ToolbarButton, NavigableMenu, Button, MenuItem, ToggleControl, TextControl, __experimentalVStack as VStack } from '@wordpress/components';
7
+ import { ToolbarButton, NavigableMenu, Button, MenuItem, ToggleControl, TextControl, __experimentalVStack as VStack, ExternalLink } from '@wordpress/components';
8
8
  import { Icon, link as linkIcon, image, page, fullscreen, linkOff } from '@wordpress/icons';
9
9
  import { prependHTTP } from '@wordpress/url';
10
10
 
@@ -183,9 +183,14 @@ const ImageURLInputUI = ({
183
183
  }), /*#__PURE__*/_jsx(TextControl, {
184
184
  __next40pxDefaultSize: true,
185
185
  __nextHasNoMarginBottom: true,
186
- label: __('Link rel'),
186
+ label: __('Link relation'),
187
187
  value: rel !== null && rel !== void 0 ? rel : '',
188
- onChange: onSetLinkRel
188
+ onChange: onSetLinkRel,
189
+ help: createInterpolateElement(__('The <a>Link Relation</a> attribute defines the relationship between a linked resource and the current document.'), {
190
+ a: /*#__PURE__*/_jsx(ExternalLink, {
191
+ href: "https://developer.mozilla.org/docs/Web/HTML/Attributes/rel"
192
+ })
193
+ })
189
194
  }), /*#__PURE__*/_jsx(TextControl, {
190
195
  __next40pxDefaultSize: true,
191
196
  __nextHasNoMarginBottom: true,
@@ -1 +1 @@
1
- {"version":3,"names":["__","useRef","useEffect","useState","focus","ToolbarButton","NavigableMenu","Button","MenuItem","ToggleControl","TextControl","__experimentalVStack","VStack","Icon","link","linkIcon","image","page","fullscreen","linkOff","prependHTTP","URLPopover","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","LINK_DESTINATION_NONE","LINK_DESTINATION_CUSTOM","LINK_DESTINATION_MEDIA","LINK_DESTINATION_ATTACHMENT","NEW_TAB_REL","ImageURLInputUI","linkDestination","onChangeUrl","url","mediaType","mediaUrl","mediaLink","linkTarget","linkClass","rel","showLightboxSetting","lightboxEnabled","onSetLightbox","resetLightbox","isOpen","setIsOpen","popoverAnchor","setPopoverAnchor","openLinkUI","isEditingLink","setIsEditingLink","urlInput","setUrlInput","autocompleteRef","wrapperRef","current","nextFocusTarget","focusable","find","startEditLink","stopEditLink","closeLinkUI","getUpdatedLinkTargetSettings","value","newLinkTarget","undefined","updatedRel","rels","split","forEach","relVal","includes","push","join","filter","length","onFocusOutside","event","autocompleteElement","contains","target","onSubmitLinkChange","selectedDestination","getLinkDestinations","destination","href","lightbox","enabled","preventDefault","onLinkRemove","linkDestinations","title","icon","onSetHref","linkDestinationInput","onSetNewTab","updatedLinkTarget","onSetLinkRel","onSetLinkClass","advancedOptions","spacing","children","__nextHasNoMarginBottom","label","onChange","checked","__next40pxDefaultSize","linkEditorValue","hideLightboxPanel","showLinkEditor","urlLabel","PopoverChildren","className","onClick","size","LinkEditor","onChangeInputValue","onSubmit","LinkViewer","onEditLinkClick","ref","isActive","anchor","onClose","renderSettings","additionalControls","map","iconPosition","info","offset","__experimentalImageURLInputUI"],"sources":["@wordpress/block-editor/src/components/url-popover/image-url-input-ui.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useRef, useEffect, useState } from '@wordpress/element';\nimport { focus } from '@wordpress/dom';\nimport {\n\tToolbarButton,\n\tNavigableMenu,\n\tButton,\n\tMenuItem,\n\tToggleControl,\n\tTextControl,\n\t__experimentalVStack as VStack,\n} from '@wordpress/components';\nimport {\n\tIcon,\n\tlink as linkIcon,\n\timage,\n\tpage,\n\tfullscreen,\n\tlinkOff,\n} from '@wordpress/icons';\nimport { prependHTTP } from '@wordpress/url';\n\n/**\n * Internal dependencies\n */\nimport URLPopover from './index';\n\nconst LINK_DESTINATION_NONE = 'none';\nconst LINK_DESTINATION_CUSTOM = 'custom';\nconst LINK_DESTINATION_MEDIA = 'media';\nconst LINK_DESTINATION_ATTACHMENT = 'attachment';\nconst NEW_TAB_REL = [ 'noreferrer', 'noopener' ];\n\nconst ImageURLInputUI = ( {\n\tlinkDestination,\n\tonChangeUrl,\n\turl,\n\tmediaType = 'image',\n\tmediaUrl,\n\tmediaLink,\n\tlinkTarget,\n\tlinkClass,\n\trel,\n\tshowLightboxSetting,\n\tlightboxEnabled,\n\tonSetLightbox,\n\tresetLightbox,\n} ) => {\n\tconst [ isOpen, setIsOpen ] = useState( false );\n\t// Use internal state instead of a ref to make sure that the component\n\t// re-renders when the popover's anchor updates.\n\tconst [ popoverAnchor, setPopoverAnchor ] = useState( null );\n\tconst openLinkUI = () => {\n\t\tsetIsOpen( true );\n\t};\n\n\tconst [ isEditingLink, setIsEditingLink ] = useState( false );\n\tconst [ urlInput, setUrlInput ] = useState( null );\n\n\tconst autocompleteRef = useRef( null );\n\tconst wrapperRef = useRef();\n\n\tuseEffect( () => {\n\t\tif ( ! wrapperRef.current ) {\n\t\t\treturn;\n\t\t}\n\t\tconst nextFocusTarget =\n\t\t\tfocus.focusable.find( wrapperRef.current )[ 0 ] ||\n\t\t\twrapperRef.current;\n\t\tnextFocusTarget.focus();\n\t}, [ isEditingLink, url, lightboxEnabled ] );\n\n\tconst startEditLink = () => {\n\t\tif (\n\t\t\tlinkDestination === LINK_DESTINATION_MEDIA ||\n\t\t\tlinkDestination === LINK_DESTINATION_ATTACHMENT\n\t\t) {\n\t\t\tsetUrlInput( '' );\n\t\t}\n\t\tsetIsEditingLink( true );\n\t};\n\n\tconst stopEditLink = () => {\n\t\tsetIsEditingLink( false );\n\t};\n\n\tconst closeLinkUI = () => {\n\t\tsetUrlInput( null );\n\t\tstopEditLink();\n\t\tsetIsOpen( false );\n\t};\n\n\tconst getUpdatedLinkTargetSettings = ( value ) => {\n\t\tconst newLinkTarget = value ? '_blank' : undefined;\n\n\t\tlet updatedRel;\n\t\tif ( newLinkTarget ) {\n\t\t\tconst rels = ( rel ?? '' ).split( ' ' );\n\t\t\tNEW_TAB_REL.forEach( ( relVal ) => {\n\t\t\t\tif ( ! rels.includes( relVal ) ) {\n\t\t\t\t\trels.push( relVal );\n\t\t\t\t}\n\t\t\t} );\n\t\t\tupdatedRel = rels.join( ' ' );\n\t\t} else {\n\t\t\tconst rels = ( rel ?? '' )\n\t\t\t\t.split( ' ' )\n\t\t\t\t.filter(\n\t\t\t\t\t( relVal ) => NEW_TAB_REL.includes( relVal ) === false\n\t\t\t\t);\n\t\t\tupdatedRel = rels.length ? rels.join( ' ' ) : undefined;\n\t\t}\n\n\t\treturn {\n\t\t\tlinkTarget: newLinkTarget,\n\t\t\trel: updatedRel,\n\t\t};\n\t};\n\n\tconst onFocusOutside = () => {\n\t\treturn ( event ) => {\n\t\t\t// The autocomplete suggestions list renders in a separate popover (in a portal),\n\t\t\t// so onFocusOutside fails to detect that a click on a suggestion occurred in the\n\t\t\t// LinkContainer. Detect clicks on autocomplete suggestions using a ref here, and\n\t\t\t// return to avoid the popover being closed.\n\t\t\tconst autocompleteElement = autocompleteRef.current;\n\t\t\tif (\n\t\t\t\tautocompleteElement &&\n\t\t\t\tautocompleteElement.contains( event.target )\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsetIsOpen( false );\n\t\t\tsetUrlInput( null );\n\t\t\tstopEditLink();\n\t\t};\n\t};\n\n\tconst onSubmitLinkChange = () => {\n\t\treturn ( event ) => {\n\t\t\tif ( urlInput ) {\n\t\t\t\t// It is possible the entered URL actually matches a named link destination.\n\t\t\t\t// This check will ensure our link destination is correct.\n\t\t\t\tconst selectedDestination =\n\t\t\t\t\tgetLinkDestinations().find(\n\t\t\t\t\t\t( destination ) => destination.url === urlInput\n\t\t\t\t\t)?.linkDestination || LINK_DESTINATION_CUSTOM;\n\n\t\t\t\tonChangeUrl( {\n\t\t\t\t\thref: prependHTTP( urlInput ),\n\t\t\t\t\tlinkDestination: selectedDestination,\n\t\t\t\t\tlightbox: { enabled: false },\n\t\t\t\t} );\n\t\t\t}\n\t\t\tstopEditLink();\n\t\t\tsetUrlInput( null );\n\t\t\tevent.preventDefault();\n\t\t};\n\t};\n\n\tconst onLinkRemove = () => {\n\t\tonChangeUrl( {\n\t\t\tlinkDestination: LINK_DESTINATION_NONE,\n\t\t\thref: '',\n\t\t} );\n\t};\n\n\tconst getLinkDestinations = () => {\n\t\tconst linkDestinations = [\n\t\t\t{\n\t\t\t\tlinkDestination: LINK_DESTINATION_MEDIA,\n\t\t\t\ttitle: __( 'Link to image file' ),\n\t\t\t\turl: mediaType === 'image' ? mediaUrl : undefined,\n\t\t\t\ticon: image,\n\t\t\t},\n\t\t];\n\t\tif ( mediaType === 'image' && mediaLink ) {\n\t\t\tlinkDestinations.push( {\n\t\t\t\tlinkDestination: LINK_DESTINATION_ATTACHMENT,\n\t\t\t\ttitle: __( 'Link to attachment page' ),\n\t\t\t\turl: mediaType === 'image' ? mediaLink : undefined,\n\t\t\t\ticon: page,\n\t\t\t} );\n\t\t}\n\t\treturn linkDestinations;\n\t};\n\n\tconst onSetHref = ( value ) => {\n\t\tconst linkDestinations = getLinkDestinations();\n\t\tlet linkDestinationInput;\n\t\tif ( ! value ) {\n\t\t\tlinkDestinationInput = LINK_DESTINATION_NONE;\n\t\t} else {\n\t\t\tlinkDestinationInput = (\n\t\t\t\tlinkDestinations.find( ( destination ) => {\n\t\t\t\t\treturn destination.url === value;\n\t\t\t\t} ) || { linkDestination: LINK_DESTINATION_CUSTOM }\n\t\t\t).linkDestination;\n\t\t}\n\t\tonChangeUrl( {\n\t\t\tlinkDestination: linkDestinationInput,\n\t\t\thref: value,\n\t\t} );\n\t};\n\n\tconst onSetNewTab = ( value ) => {\n\t\tconst updatedLinkTarget = getUpdatedLinkTargetSettings( value );\n\t\tonChangeUrl( updatedLinkTarget );\n\t};\n\n\tconst onSetLinkRel = ( value ) => {\n\t\tonChangeUrl( { rel: value } );\n\t};\n\n\tconst onSetLinkClass = ( value ) => {\n\t\tonChangeUrl( { linkClass: value } );\n\t};\n\n\tconst advancedOptions = (\n\t\t<VStack spacing=\"3\">\n\t\t\t<ToggleControl\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tlabel={ __( 'Open in new tab' ) }\n\t\t\t\tonChange={ onSetNewTab }\n\t\t\t\tchecked={ linkTarget === '_blank' }\n\t\t\t/>\n\t\t\t<TextControl\n\t\t\t\t__next40pxDefaultSize\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tlabel={ __( 'Link rel' ) }\n\t\t\t\tvalue={ rel ?? '' }\n\t\t\t\tonChange={ onSetLinkRel }\n\t\t\t/>\n\t\t\t<TextControl\n\t\t\t\t__next40pxDefaultSize\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tlabel={ __( 'Link CSS class' ) }\n\t\t\t\tvalue={ linkClass || '' }\n\t\t\t\tonChange={ onSetLinkClass }\n\t\t\t/>\n\t\t</VStack>\n\t);\n\n\tconst linkEditorValue = urlInput !== null ? urlInput : url;\n\tconst hideLightboxPanel =\n\t\t! lightboxEnabled || ( lightboxEnabled && ! showLightboxSetting );\n\tconst showLinkEditor = ! linkEditorValue && hideLightboxPanel;\n\n\tconst urlLabel = (\n\t\tgetLinkDestinations().find(\n\t\t\t( destination ) => destination.linkDestination === linkDestination\n\t\t) || {}\n\t).title;\n\n\tconst PopoverChildren = () => {\n\t\tif (\n\t\t\tlightboxEnabled &&\n\t\t\tshowLightboxSetting &&\n\t\t\t! url &&\n\t\t\t! isEditingLink\n\t\t) {\n\t\t\treturn (\n\t\t\t\t<div className=\"block-editor-url-popover__expand-on-click\">\n\t\t\t\t\t<Icon icon={ fullscreen } />\n\t\t\t\t\t<div className=\"text\">\n\t\t\t\t\t\t<p>{ __( 'Enlarge on click' ) }</p>\n\t\t\t\t\t\t<p className=\"description\">\n\t\t\t\t\t\t\t{ __( 'Scales the image with a lightbox effect' ) }\n\t\t\t\t\t\t</p>\n\t\t\t\t\t</div>\n\t\t\t\t\t<Button\n\t\t\t\t\t\ticon={ linkOff }\n\t\t\t\t\t\tlabel={ __( 'Disable enlarge on click' ) }\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tonSetLightbox?.( false );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t);\n\t\t} else if ( ! url || isEditingLink ) {\n\t\t\treturn (\n\t\t\t\t<URLPopover.LinkEditor\n\t\t\t\t\tclassName=\"block-editor-format-toolbar__link-container-content\"\n\t\t\t\t\tvalue={ linkEditorValue }\n\t\t\t\t\tonChangeInputValue={ setUrlInput }\n\t\t\t\t\tonSubmit={ onSubmitLinkChange() }\n\t\t\t\t\tautocompleteRef={ autocompleteRef }\n\t\t\t\t/>\n\t\t\t);\n\t\t} else if ( url && ! isEditingLink ) {\n\t\t\treturn (\n\t\t\t\t<>\n\t\t\t\t\t<URLPopover.LinkViewer\n\t\t\t\t\t\tclassName=\"block-editor-format-toolbar__link-container-content\"\n\t\t\t\t\t\turl={ url }\n\t\t\t\t\t\tonEditLinkClick={ startEditLink }\n\t\t\t\t\t\turlLabel={ urlLabel }\n\t\t\t\t\t/>\n\t\t\t\t\t<Button\n\t\t\t\t\t\ticon={ linkOff }\n\t\t\t\t\t\tlabel={ __( 'Remove link' ) }\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tonLinkRemove();\n\t\t\t\t\t\t\tresetLightbox?.();\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t/>\n\t\t\t\t</>\n\t\t\t);\n\t\t}\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<ToolbarButton\n\t\t\t\ticon={ linkIcon }\n\t\t\t\tclassName=\"components-toolbar__control\"\n\t\t\t\tlabel={ __( 'Link' ) }\n\t\t\t\taria-expanded={ isOpen }\n\t\t\t\tonClick={ openLinkUI }\n\t\t\t\tref={ setPopoverAnchor }\n\t\t\t\tisActive={\n\t\t\t\t\t!! url || ( lightboxEnabled && showLightboxSetting )\n\t\t\t\t}\n\t\t\t/>\n\t\t\t{ isOpen && (\n\t\t\t\t<URLPopover\n\t\t\t\t\tref={ wrapperRef }\n\t\t\t\t\tanchor={ popoverAnchor }\n\t\t\t\t\tonFocusOutside={ onFocusOutside() }\n\t\t\t\t\tonClose={ closeLinkUI }\n\t\t\t\t\trenderSettings={\n\t\t\t\t\t\thideLightboxPanel ? () => advancedOptions : null\n\t\t\t\t\t}\n\t\t\t\t\tadditionalControls={\n\t\t\t\t\t\tshowLinkEditor && (\n\t\t\t\t\t\t\t<NavigableMenu>\n\t\t\t\t\t\t\t\t{ getLinkDestinations().map( ( link ) => (\n\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\tkey={ link.linkDestination }\n\t\t\t\t\t\t\t\t\t\ticon={ link.icon }\n\t\t\t\t\t\t\t\t\t\ticonPosition=\"left\"\n\t\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\t\tsetUrlInput( null );\n\t\t\t\t\t\t\t\t\t\t\tonSetHref( link.url );\n\t\t\t\t\t\t\t\t\t\t\tstopEditLink();\n\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ link.title }\n\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t\t\t{ showLightboxSetting && (\n\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\tkey=\"expand-on-click\"\n\t\t\t\t\t\t\t\t\t\tclassName=\"block-editor-url-popover__expand-on-click\"\n\t\t\t\t\t\t\t\t\t\ticon={ fullscreen }\n\t\t\t\t\t\t\t\t\t\tinfo={ __(\n\t\t\t\t\t\t\t\t\t\t\t'Scale the image with a lightbox effect.'\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\ticonPosition=\"left\"\n\t\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\t\tsetUrlInput( null );\n\t\t\t\t\t\t\t\t\t\t\tonChangeUrl( {\n\t\t\t\t\t\t\t\t\t\t\t\tlinkDestination:\n\t\t\t\t\t\t\t\t\t\t\t\t\tLINK_DESTINATION_NONE,\n\t\t\t\t\t\t\t\t\t\t\t\thref: '',\n\t\t\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t\t\t\tonSetLightbox?.( true );\n\t\t\t\t\t\t\t\t\t\t\tstopEditLink();\n\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Enlarge on click' ) }\n\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</NavigableMenu>\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t\toffset={ 13 }\n\t\t\t\t>\n\t\t\t\t\t{ PopoverChildren() }\n\t\t\t\t</URLPopover>\n\t\t\t) }\n\t\t</>\n\t);\n};\n\nexport { ImageURLInputUI as __experimentalImageURLInputUI };\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,EAAE,QAAQ,iBAAiB;AACpC,SAASC,MAAM,EAAEC,SAAS,EAAEC,QAAQ,QAAQ,oBAAoB;AAChE,SAASC,KAAK,QAAQ,gBAAgB;AACtC,SACCC,aAAa,EACbC,aAAa,EACbC,MAAM,EACNC,QAAQ,EACRC,aAAa,EACbC,WAAW,EACXC,oBAAoB,IAAIC,MAAM,QACxB,uBAAuB;AAC9B,SACCC,IAAI,EACJC,IAAI,IAAIC,QAAQ,EAChBC,KAAK,EACLC,IAAI,EACJC,UAAU,EACVC,OAAO,QACD,kBAAkB;AACzB,SAASC,WAAW,QAAQ,gBAAgB;;AAE5C;AACA;AACA;AACA,OAAOC,UAAU,MAAM,SAAS;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA,EAAAC,QAAA,IAAAC,SAAA;AAEjC,MAAMC,qBAAqB,GAAG,MAAM;AACpC,MAAMC,uBAAuB,GAAG,QAAQ;AACxC,MAAMC,sBAAsB,GAAG,OAAO;AACtC,MAAMC,2BAA2B,GAAG,YAAY;AAChD,MAAMC,WAAW,GAAG,CAAE,YAAY,EAAE,UAAU,CAAE;AAEhD,MAAMC,eAAe,GAAGA,CAAE;EACzBC,eAAe;EACfC,WAAW;EACXC,GAAG;EACHC,SAAS,GAAG,OAAO;EACnBC,QAAQ;EACRC,SAAS;EACTC,UAAU;EACVC,SAAS;EACTC,GAAG;EACHC,mBAAmB;EACnBC,eAAe;EACfC,aAAa;EACbC;AACD,CAAC,KAAM;EACN,MAAM,CAAEC,MAAM,EAAEC,SAAS,CAAE,GAAG7C,QAAQ,CAAE,KAAM,CAAC;EAC/C;EACA;EACA,MAAM,CAAE8C,aAAa,EAAEC,gBAAgB,CAAE,GAAG/C,QAAQ,CAAE,IAAK,CAAC;EAC5D,MAAMgD,UAAU,GAAGA,CAAA,KAAM;IACxBH,SAAS,CAAE,IAAK,CAAC;EAClB,CAAC;EAED,MAAM,CAAEI,aAAa,EAAEC,gBAAgB,CAAE,GAAGlD,QAAQ,CAAE,KAAM,CAAC;EAC7D,MAAM,CAAEmD,QAAQ,EAAEC,WAAW,CAAE,GAAGpD,QAAQ,CAAE,IAAK,CAAC;EAElD,MAAMqD,eAAe,GAAGvD,MAAM,CAAE,IAAK,CAAC;EACtC,MAAMwD,UAAU,GAAGxD,MAAM,CAAC,CAAC;EAE3BC,SAAS,CAAE,MAAM;IAChB,IAAK,CAAEuD,UAAU,CAACC,OAAO,EAAG;MAC3B;IACD;IACA,MAAMC,eAAe,GACpBvD,KAAK,CAACwD,SAAS,CAACC,IAAI,CAAEJ,UAAU,CAACC,OAAQ,CAAC,CAAE,CAAC,CAAE,IAC/CD,UAAU,CAACC,OAAO;IACnBC,eAAe,CAACvD,KAAK,CAAC,CAAC;EACxB,CAAC,EAAE,CAAEgD,aAAa,EAAEhB,GAAG,EAAEQ,eAAe,CAAG,CAAC;EAE5C,MAAMkB,aAAa,GAAGA,CAAA,KAAM;IAC3B,IACC5B,eAAe,KAAKJ,sBAAsB,IAC1CI,eAAe,KAAKH,2BAA2B,EAC9C;MACDwB,WAAW,CAAE,EAAG,CAAC;IAClB;IACAF,gBAAgB,CAAE,IAAK,CAAC;EACzB,CAAC;EAED,MAAMU,YAAY,GAAGA,CAAA,KAAM;IAC1BV,gBAAgB,CAAE,KAAM,CAAC;EAC1B,CAAC;EAED,MAAMW,WAAW,GAAGA,CAAA,KAAM;IACzBT,WAAW,CAAE,IAAK,CAAC;IACnBQ,YAAY,CAAC,CAAC;IACdf,SAAS,CAAE,KAAM,CAAC;EACnB,CAAC;EAED,MAAMiB,4BAA4B,GAAKC,KAAK,IAAM;IACjD,MAAMC,aAAa,GAAGD,KAAK,GAAG,QAAQ,GAAGE,SAAS;IAElD,IAAIC,UAAU;IACd,IAAKF,aAAa,EAAG;MACpB,MAAMG,IAAI,GAAG,CAAE5B,GAAG,aAAHA,GAAG,cAAHA,GAAG,GAAI,EAAE,EAAG6B,KAAK,CAAE,GAAI,CAAC;MACvCvC,WAAW,CAACwC,OAAO,CAAIC,MAAM,IAAM;QAClC,IAAK,CAAEH,IAAI,CAACI,QAAQ,CAAED,MAAO,CAAC,EAAG;UAChCH,IAAI,CAACK,IAAI,CAAEF,MAAO,CAAC;QACpB;MACD,CAAE,CAAC;MACHJ,UAAU,GAAGC,IAAI,CAACM,IAAI,CAAE,GAAI,CAAC;IAC9B,CAAC,MAAM;MACN,MAAMN,IAAI,GAAG,CAAE5B,GAAG,aAAHA,GAAG,cAAHA,GAAG,GAAI,EAAE,EACtB6B,KAAK,CAAE,GAAI,CAAC,CACZM,MAAM,CACJJ,MAAM,IAAMzC,WAAW,CAAC0C,QAAQ,CAAED,MAAO,CAAC,KAAK,KAClD,CAAC;MACFJ,UAAU,GAAGC,IAAI,CAACQ,MAAM,GAAGR,IAAI,CAACM,IAAI,CAAE,GAAI,CAAC,GAAGR,SAAS;IACxD;IAEA,OAAO;MACN5B,UAAU,EAAE2B,aAAa;MACzBzB,GAAG,EAAE2B;IACN,CAAC;EACF,CAAC;EAED,MAAMU,cAAc,GAAGA,CAAA,KAAM;IAC5B,OAASC,KAAK,IAAM;MACnB;MACA;MACA;MACA;MACA,MAAMC,mBAAmB,GAAGzB,eAAe,CAACE,OAAO;MACnD,IACCuB,mBAAmB,IACnBA,mBAAmB,CAACC,QAAQ,CAAEF,KAAK,CAACG,MAAO,CAAC,EAC3C;QACD;MACD;MACAnC,SAAS,CAAE,KAAM,CAAC;MAClBO,WAAW,CAAE,IAAK,CAAC;MACnBQ,YAAY,CAAC,CAAC;IACf,CAAC;EACF,CAAC;EAED,MAAMqB,kBAAkB,GAAGA,CAAA,KAAM;IAChC,OAASJ,KAAK,IAAM;MACnB,IAAK1B,QAAQ,EAAG;QACf;QACA;QACA,MAAM+B,mBAAmB,GACxBC,mBAAmB,CAAC,CAAC,CAACzB,IAAI,CACvB0B,WAAW,IAAMA,WAAW,CAACnD,GAAG,KAAKkB,QACxC,CAAC,EAAEpB,eAAe,IAAIL,uBAAuB;QAE9CM,WAAW,CAAE;UACZqD,IAAI,EAAEpE,WAAW,CAAEkC,QAAS,CAAC;UAC7BpB,eAAe,EAAEmD,mBAAmB;UACpCI,QAAQ,EAAE;YAAEC,OAAO,EAAE;UAAM;QAC5B,CAAE,CAAC;MACJ;MACA3B,YAAY,CAAC,CAAC;MACdR,WAAW,CAAE,IAAK,CAAC;MACnByB,KAAK,CAACW,cAAc,CAAC,CAAC;IACvB,CAAC;EACF,CAAC;EAED,MAAMC,YAAY,GAAGA,CAAA,KAAM;IAC1BzD,WAAW,CAAE;MACZD,eAAe,EAAEN,qBAAqB;MACtC4D,IAAI,EAAE;IACP,CAAE,CAAC;EACJ,CAAC;EAED,MAAMF,mBAAmB,GAAGA,CAAA,KAAM;IACjC,MAAMO,gBAAgB,GAAG,CACxB;MACC3D,eAAe,EAAEJ,sBAAsB;MACvCgE,KAAK,EAAE9F,EAAE,CAAE,oBAAqB,CAAC;MACjCoC,GAAG,EAAEC,SAAS,KAAK,OAAO,GAAGC,QAAQ,GAAG8B,SAAS;MACjD2B,IAAI,EAAE/E;IACP,CAAC,CACD;IACD,IAAKqB,SAAS,KAAK,OAAO,IAAIE,SAAS,EAAG;MACzCsD,gBAAgB,CAAClB,IAAI,CAAE;QACtBzC,eAAe,EAAEH,2BAA2B;QAC5C+D,KAAK,EAAE9F,EAAE,CAAE,yBAA0B,CAAC;QACtCoC,GAAG,EAAEC,SAAS,KAAK,OAAO,GAAGE,SAAS,GAAG6B,SAAS;QAClD2B,IAAI,EAAE9E;MACP,CAAE,CAAC;IACJ;IACA,OAAO4E,gBAAgB;EACxB,CAAC;EAED,MAAMG,SAAS,GAAK9B,KAAK,IAAM;IAC9B,MAAM2B,gBAAgB,GAAGP,mBAAmB,CAAC,CAAC;IAC9C,IAAIW,oBAAoB;IACxB,IAAK,CAAE/B,KAAK,EAAG;MACd+B,oBAAoB,GAAGrE,qBAAqB;IAC7C,CAAC,MAAM;MACNqE,oBAAoB,GAAG,CACtBJ,gBAAgB,CAAChC,IAAI,CAAI0B,WAAW,IAAM;QACzC,OAAOA,WAAW,CAACnD,GAAG,KAAK8B,KAAK;MACjC,CAAE,CAAC,IAAI;QAAEhC,eAAe,EAAEL;MAAwB,CAAC,EAClDK,eAAe;IAClB;IACAC,WAAW,CAAE;MACZD,eAAe,EAAE+D,oBAAoB;MACrCT,IAAI,EAAEtB;IACP,CAAE,CAAC;EACJ,CAAC;EAED,MAAMgC,WAAW,GAAKhC,KAAK,IAAM;IAChC,MAAMiC,iBAAiB,GAAGlC,4BAA4B,CAAEC,KAAM,CAAC;IAC/D/B,WAAW,CAAEgE,iBAAkB,CAAC;EACjC,CAAC;EAED,MAAMC,YAAY,GAAKlC,KAAK,IAAM;IACjC/B,WAAW,CAAE;MAAEO,GAAG,EAAEwB;IAAM,CAAE,CAAC;EAC9B,CAAC;EAED,MAAMmC,cAAc,GAAKnC,KAAK,IAAM;IACnC/B,WAAW,CAAE;MAAEM,SAAS,EAAEyB;IAAM,CAAE,CAAC;EACpC,CAAC;EAED,MAAMoC,eAAe,gBACpB7E,KAAA,CAACb,MAAM;IAAC2F,OAAO,EAAC,GAAG;IAAAC,QAAA,gBAClBjF,IAAA,CAACd,aAAa;MACbgG,uBAAuB;MACvBC,KAAK,EAAG1G,EAAE,CAAE,iBAAkB,CAAG;MACjC2G,QAAQ,EAAGT,WAAa;MACxBU,OAAO,EAAGpE,UAAU,KAAK;IAAU,CACnC,CAAC,eACFjB,IAAA,CAACb,WAAW;MACXmG,qBAAqB;MACrBJ,uBAAuB;MACvBC,KAAK,EAAG1G,EAAE,CAAE,UAAW,CAAG;MAC1BkE,KAAK,EAAGxB,GAAG,aAAHA,GAAG,cAAHA,GAAG,GAAI,EAAI;MACnBiE,QAAQ,EAAGP;IAAc,CACzB,CAAC,eACF7E,IAAA,CAACb,WAAW;MACXmG,qBAAqB;MACrBJ,uBAAuB;MACvBC,KAAK,EAAG1G,EAAE,CAAE,gBAAiB,CAAG;MAChCkE,KAAK,EAAGzB,SAAS,IAAI,EAAI;MACzBkE,QAAQ,EAAGN;IAAgB,CAC3B,CAAC;EAAA,CACK,CACR;EAED,MAAMS,eAAe,GAAGxD,QAAQ,KAAK,IAAI,GAAGA,QAAQ,GAAGlB,GAAG;EAC1D,MAAM2E,iBAAiB,GACtB,CAAEnE,eAAe,IAAMA,eAAe,IAAI,CAAED,mBAAqB;EAClE,MAAMqE,cAAc,GAAG,CAAEF,eAAe,IAAIC,iBAAiB;EAE7D,MAAME,QAAQ,GAAG,CAChB3B,mBAAmB,CAAC,CAAC,CAACzB,IAAI,CACvB0B,WAAW,IAAMA,WAAW,CAACrD,eAAe,KAAKA,eACpD,CAAC,IAAI,CAAC,CAAC,EACN4D,KAAK;EAEP,MAAMoB,eAAe,GAAGA,CAAA,KAAM;IAC7B,IACCtE,eAAe,IACfD,mBAAmB,IACnB,CAAEP,GAAG,IACL,CAAEgB,aAAa,EACd;MACD,oBACC3B,KAAA;QAAK0F,SAAS,EAAC,2CAA2C;QAAAX,QAAA,gBACzDjF,IAAA,CAACV,IAAI;UAACkF,IAAI,EAAG7E;QAAY,CAAE,CAAC,eAC5BO,KAAA;UAAK0F,SAAS,EAAC,MAAM;UAAAX,QAAA,gBACpBjF,IAAA;YAAAiF,QAAA,EAAKxG,EAAE,CAAE,kBAAmB;UAAC,CAAK,CAAC,eACnCuB,IAAA;YAAG4F,SAAS,EAAC,aAAa;YAAAX,QAAA,EACvBxG,EAAE,CAAE,yCAA0C;UAAC,CAC/C,CAAC;QAAA,CACA,CAAC,eACNuB,IAAA,CAAChB,MAAM;UACNwF,IAAI,EAAG5E,OAAS;UAChBuF,KAAK,EAAG1G,EAAE,CAAE,0BAA2B,CAAG;UAC1CoH,OAAO,EAAGA,CAAA,KAAM;YACfvE,aAAa,GAAI,KAAM,CAAC;UACzB,CAAG;UACHwE,IAAI,EAAC;QAAS,CACd,CAAC;MAAA,CACE,CAAC;IAER,CAAC,MAAM,IAAK,CAAEjF,GAAG,IAAIgB,aAAa,EAAG;MACpC,oBACC7B,IAAA,CAACF,UAAU,CAACiG,UAAU;QACrBH,SAAS,EAAC,qDAAqD;QAC/DjD,KAAK,EAAG4C,eAAiB;QACzBS,kBAAkB,EAAGhE,WAAa;QAClCiE,QAAQ,EAAGpC,kBAAkB,CAAC,CAAG;QACjC5B,eAAe,EAAGA;MAAiB,CACnC,CAAC;IAEJ,CAAC,MAAM,IAAKpB,GAAG,IAAI,CAAEgB,aAAa,EAAG;MACpC,oBACC3B,KAAA,CAAAE,SAAA;QAAA6E,QAAA,gBACCjF,IAAA,CAACF,UAAU,CAACoG,UAAU;UACrBN,SAAS,EAAC,qDAAqD;UAC/D/E,GAAG,EAAGA,GAAK;UACXsF,eAAe,EAAG5D,aAAe;UACjCmD,QAAQ,EAAGA;QAAU,CACrB,CAAC,eACF1F,IAAA,CAAChB,MAAM;UACNwF,IAAI,EAAG5E,OAAS;UAChBuF,KAAK,EAAG1G,EAAE,CAAE,aAAc,CAAG;UAC7BoH,OAAO,EAAGA,CAAA,KAAM;YACfxB,YAAY,CAAC,CAAC;YACd9C,aAAa,GAAG,CAAC;UAClB,CAAG;UACHuE,IAAI,EAAC;QAAS,CACd,CAAC;MAAA,CACD,CAAC;IAEL;EACD,CAAC;EAED,oBACC5F,KAAA,CAAAE,SAAA;IAAA6E,QAAA,gBACCjF,IAAA,CAAClB,aAAa;MACb0F,IAAI,EAAGhF,QAAU;MACjBoG,SAAS,EAAC,6BAA6B;MACvCT,KAAK,EAAG1G,EAAE,CAAE,MAAO,CAAG;MACtB,iBAAgB+C,MAAQ;MACxBqE,OAAO,EAAGjE,UAAY;MACtBwE,GAAG,EAAGzE,gBAAkB;MACxB0E,QAAQ,EACP,CAAC,CAAExF,GAAG,IAAMQ,eAAe,IAAID;IAC/B,CACD,CAAC,EACAI,MAAM,iBACPxB,IAAA,CAACF,UAAU;MACVsG,GAAG,EAAGlE,UAAY;MAClBoE,MAAM,EAAG5E,aAAe;MACxB8B,cAAc,EAAGA,cAAc,CAAC,CAAG;MACnC+C,OAAO,EAAG9D,WAAa;MACvB+D,cAAc,EACbhB,iBAAiB,GAAG,MAAMT,eAAe,GAAG,IAC5C;MACD0B,kBAAkB,EACjBhB,cAAc,iBACbvF,KAAA,CAACnB,aAAa;QAAAkG,QAAA,GACXlB,mBAAmB,CAAC,CAAC,CAAC2C,GAAG,CAAInH,IAAI,iBAClCS,IAAA,CAACf,QAAQ;UAERuF,IAAI,EAAGjF,IAAI,CAACiF,IAAM;UAClBmC,YAAY,EAAC,MAAM;UACnBd,OAAO,EAAGA,CAAA,KAAM;YACf7D,WAAW,CAAE,IAAK,CAAC;YACnByC,SAAS,CAAElF,IAAI,CAACsB,GAAI,CAAC;YACrB2B,YAAY,CAAC,CAAC;UACf,CAAG;UAAAyC,QAAA,EAED1F,IAAI,CAACgF;QAAK,GATNhF,IAAI,CAACoB,eAUF,CACT,CAAC,EACDS,mBAAmB,iBACpBpB,IAAA,CAACf,QAAQ;UAER2G,SAAS,EAAC,2CAA2C;UACrDpB,IAAI,EAAG7E,UAAY;UACnBiH,IAAI,EAAGnI,EAAE,CACR,yCACD,CAAG;UACHkI,YAAY,EAAC,MAAM;UACnBd,OAAO,EAAGA,CAAA,KAAM;YACf7D,WAAW,CAAE,IAAK,CAAC;YACnBpB,WAAW,CAAE;cACZD,eAAe,EACdN,qBAAqB;cACtB4D,IAAI,EAAE;YACP,CAAE,CAAC;YACH3C,aAAa,GAAI,IAAK,CAAC;YACvBkB,YAAY,CAAC,CAAC;UACf,CAAG;UAAAyC,QAAA,EAEDxG,EAAE,CAAE,kBAAmB;QAAC,GAlBtB,iBAmBK,CACV;MAAA,CACa,CAEhB;MACDoI,MAAM,EAAG,EAAI;MAAA5B,QAAA,EAEXU,eAAe,CAAC;IAAC,CACR,CACZ;EAAA,CACA,CAAC;AAEL,CAAC;AAED,SAASjF,eAAe,IAAIoG,6BAA6B","ignoreList":[]}
1
+ {"version":3,"names":["__","useRef","useEffect","useState","createInterpolateElement","focus","ToolbarButton","NavigableMenu","Button","MenuItem","ToggleControl","TextControl","__experimentalVStack","VStack","ExternalLink","Icon","link","linkIcon","image","page","fullscreen","linkOff","prependHTTP","URLPopover","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","LINK_DESTINATION_NONE","LINK_DESTINATION_CUSTOM","LINK_DESTINATION_MEDIA","LINK_DESTINATION_ATTACHMENT","NEW_TAB_REL","ImageURLInputUI","linkDestination","onChangeUrl","url","mediaType","mediaUrl","mediaLink","linkTarget","linkClass","rel","showLightboxSetting","lightboxEnabled","onSetLightbox","resetLightbox","isOpen","setIsOpen","popoverAnchor","setPopoverAnchor","openLinkUI","isEditingLink","setIsEditingLink","urlInput","setUrlInput","autocompleteRef","wrapperRef","current","nextFocusTarget","focusable","find","startEditLink","stopEditLink","closeLinkUI","getUpdatedLinkTargetSettings","value","newLinkTarget","undefined","updatedRel","rels","split","forEach","relVal","includes","push","join","filter","length","onFocusOutside","event","autocompleteElement","contains","target","onSubmitLinkChange","selectedDestination","getLinkDestinations","destination","href","lightbox","enabled","preventDefault","onLinkRemove","linkDestinations","title","icon","onSetHref","linkDestinationInput","onSetNewTab","updatedLinkTarget","onSetLinkRel","onSetLinkClass","advancedOptions","spacing","children","__nextHasNoMarginBottom","label","onChange","checked","__next40pxDefaultSize","help","a","linkEditorValue","hideLightboxPanel","showLinkEditor","urlLabel","PopoverChildren","className","onClick","size","LinkEditor","onChangeInputValue","onSubmit","LinkViewer","onEditLinkClick","ref","isActive","anchor","onClose","renderSettings","additionalControls","map","iconPosition","info","offset","__experimentalImageURLInputUI"],"sources":["@wordpress/block-editor/src/components/url-popover/image-url-input-ui.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\tuseRef,\n\tuseEffect,\n\tuseState,\n\tcreateInterpolateElement,\n} from '@wordpress/element';\nimport { focus } from '@wordpress/dom';\nimport {\n\tToolbarButton,\n\tNavigableMenu,\n\tButton,\n\tMenuItem,\n\tToggleControl,\n\tTextControl,\n\t__experimentalVStack as VStack,\n\tExternalLink,\n} from '@wordpress/components';\nimport {\n\tIcon,\n\tlink as linkIcon,\n\timage,\n\tpage,\n\tfullscreen,\n\tlinkOff,\n} from '@wordpress/icons';\nimport { prependHTTP } from '@wordpress/url';\n\n/**\n * Internal dependencies\n */\nimport URLPopover from './index';\n\nconst LINK_DESTINATION_NONE = 'none';\nconst LINK_DESTINATION_CUSTOM = 'custom';\nconst LINK_DESTINATION_MEDIA = 'media';\nconst LINK_DESTINATION_ATTACHMENT = 'attachment';\nconst NEW_TAB_REL = [ 'noreferrer', 'noopener' ];\n\nconst ImageURLInputUI = ( {\n\tlinkDestination,\n\tonChangeUrl,\n\turl,\n\tmediaType = 'image',\n\tmediaUrl,\n\tmediaLink,\n\tlinkTarget,\n\tlinkClass,\n\trel,\n\tshowLightboxSetting,\n\tlightboxEnabled,\n\tonSetLightbox,\n\tresetLightbox,\n} ) => {\n\tconst [ isOpen, setIsOpen ] = useState( false );\n\t// Use internal state instead of a ref to make sure that the component\n\t// re-renders when the popover's anchor updates.\n\tconst [ popoverAnchor, setPopoverAnchor ] = useState( null );\n\tconst openLinkUI = () => {\n\t\tsetIsOpen( true );\n\t};\n\n\tconst [ isEditingLink, setIsEditingLink ] = useState( false );\n\tconst [ urlInput, setUrlInput ] = useState( null );\n\n\tconst autocompleteRef = useRef( null );\n\tconst wrapperRef = useRef();\n\n\tuseEffect( () => {\n\t\tif ( ! wrapperRef.current ) {\n\t\t\treturn;\n\t\t}\n\t\tconst nextFocusTarget =\n\t\t\tfocus.focusable.find( wrapperRef.current )[ 0 ] ||\n\t\t\twrapperRef.current;\n\t\tnextFocusTarget.focus();\n\t}, [ isEditingLink, url, lightboxEnabled ] );\n\n\tconst startEditLink = () => {\n\t\tif (\n\t\t\tlinkDestination === LINK_DESTINATION_MEDIA ||\n\t\t\tlinkDestination === LINK_DESTINATION_ATTACHMENT\n\t\t) {\n\t\t\tsetUrlInput( '' );\n\t\t}\n\t\tsetIsEditingLink( true );\n\t};\n\n\tconst stopEditLink = () => {\n\t\tsetIsEditingLink( false );\n\t};\n\n\tconst closeLinkUI = () => {\n\t\tsetUrlInput( null );\n\t\tstopEditLink();\n\t\tsetIsOpen( false );\n\t};\n\n\tconst getUpdatedLinkTargetSettings = ( value ) => {\n\t\tconst newLinkTarget = value ? '_blank' : undefined;\n\n\t\tlet updatedRel;\n\t\tif ( newLinkTarget ) {\n\t\t\tconst rels = ( rel ?? '' ).split( ' ' );\n\t\t\tNEW_TAB_REL.forEach( ( relVal ) => {\n\t\t\t\tif ( ! rels.includes( relVal ) ) {\n\t\t\t\t\trels.push( relVal );\n\t\t\t\t}\n\t\t\t} );\n\t\t\tupdatedRel = rels.join( ' ' );\n\t\t} else {\n\t\t\tconst rels = ( rel ?? '' )\n\t\t\t\t.split( ' ' )\n\t\t\t\t.filter(\n\t\t\t\t\t( relVal ) => NEW_TAB_REL.includes( relVal ) === false\n\t\t\t\t);\n\t\t\tupdatedRel = rels.length ? rels.join( ' ' ) : undefined;\n\t\t}\n\n\t\treturn {\n\t\t\tlinkTarget: newLinkTarget,\n\t\t\trel: updatedRel,\n\t\t};\n\t};\n\n\tconst onFocusOutside = () => {\n\t\treturn ( event ) => {\n\t\t\t// The autocomplete suggestions list renders in a separate popover (in a portal),\n\t\t\t// so onFocusOutside fails to detect that a click on a suggestion occurred in the\n\t\t\t// LinkContainer. Detect clicks on autocomplete suggestions using a ref here, and\n\t\t\t// return to avoid the popover being closed.\n\t\t\tconst autocompleteElement = autocompleteRef.current;\n\t\t\tif (\n\t\t\t\tautocompleteElement &&\n\t\t\t\tautocompleteElement.contains( event.target )\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsetIsOpen( false );\n\t\t\tsetUrlInput( null );\n\t\t\tstopEditLink();\n\t\t};\n\t};\n\n\tconst onSubmitLinkChange = () => {\n\t\treturn ( event ) => {\n\t\t\tif ( urlInput ) {\n\t\t\t\t// It is possible the entered URL actually matches a named link destination.\n\t\t\t\t// This check will ensure our link destination is correct.\n\t\t\t\tconst selectedDestination =\n\t\t\t\t\tgetLinkDestinations().find(\n\t\t\t\t\t\t( destination ) => destination.url === urlInput\n\t\t\t\t\t)?.linkDestination || LINK_DESTINATION_CUSTOM;\n\n\t\t\t\tonChangeUrl( {\n\t\t\t\t\thref: prependHTTP( urlInput ),\n\t\t\t\t\tlinkDestination: selectedDestination,\n\t\t\t\t\tlightbox: { enabled: false },\n\t\t\t\t} );\n\t\t\t}\n\t\t\tstopEditLink();\n\t\t\tsetUrlInput( null );\n\t\t\tevent.preventDefault();\n\t\t};\n\t};\n\n\tconst onLinkRemove = () => {\n\t\tonChangeUrl( {\n\t\t\tlinkDestination: LINK_DESTINATION_NONE,\n\t\t\thref: '',\n\t\t} );\n\t};\n\n\tconst getLinkDestinations = () => {\n\t\tconst linkDestinations = [\n\t\t\t{\n\t\t\t\tlinkDestination: LINK_DESTINATION_MEDIA,\n\t\t\t\ttitle: __( 'Link to image file' ),\n\t\t\t\turl: mediaType === 'image' ? mediaUrl : undefined,\n\t\t\t\ticon: image,\n\t\t\t},\n\t\t];\n\t\tif ( mediaType === 'image' && mediaLink ) {\n\t\t\tlinkDestinations.push( {\n\t\t\t\tlinkDestination: LINK_DESTINATION_ATTACHMENT,\n\t\t\t\ttitle: __( 'Link to attachment page' ),\n\t\t\t\turl: mediaType === 'image' ? mediaLink : undefined,\n\t\t\t\ticon: page,\n\t\t\t} );\n\t\t}\n\t\treturn linkDestinations;\n\t};\n\n\tconst onSetHref = ( value ) => {\n\t\tconst linkDestinations = getLinkDestinations();\n\t\tlet linkDestinationInput;\n\t\tif ( ! value ) {\n\t\t\tlinkDestinationInput = LINK_DESTINATION_NONE;\n\t\t} else {\n\t\t\tlinkDestinationInput = (\n\t\t\t\tlinkDestinations.find( ( destination ) => {\n\t\t\t\t\treturn destination.url === value;\n\t\t\t\t} ) || { linkDestination: LINK_DESTINATION_CUSTOM }\n\t\t\t).linkDestination;\n\t\t}\n\t\tonChangeUrl( {\n\t\t\tlinkDestination: linkDestinationInput,\n\t\t\thref: value,\n\t\t} );\n\t};\n\n\tconst onSetNewTab = ( value ) => {\n\t\tconst updatedLinkTarget = getUpdatedLinkTargetSettings( value );\n\t\tonChangeUrl( updatedLinkTarget );\n\t};\n\n\tconst onSetLinkRel = ( value ) => {\n\t\tonChangeUrl( { rel: value } );\n\t};\n\n\tconst onSetLinkClass = ( value ) => {\n\t\tonChangeUrl( { linkClass: value } );\n\t};\n\n\tconst advancedOptions = (\n\t\t<VStack spacing=\"3\">\n\t\t\t<ToggleControl\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tlabel={ __( 'Open in new tab' ) }\n\t\t\t\tonChange={ onSetNewTab }\n\t\t\t\tchecked={ linkTarget === '_blank' }\n\t\t\t/>\n\t\t\t<TextControl\n\t\t\t\t__next40pxDefaultSize\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tlabel={ __( 'Link relation' ) }\n\t\t\t\tvalue={ rel ?? '' }\n\t\t\t\tonChange={ onSetLinkRel }\n\t\t\t\thelp={ createInterpolateElement(\n\t\t\t\t\t__(\n\t\t\t\t\t\t'The <a>Link Relation</a> attribute defines the relationship between a linked resource and the current document.'\n\t\t\t\t\t),\n\t\t\t\t\t{\n\t\t\t\t\t\ta: (\n\t\t\t\t\t\t\t<ExternalLink href=\"https://developer.mozilla.org/docs/Web/HTML/Attributes/rel\" />\n\t\t\t\t\t\t),\n\t\t\t\t\t}\n\t\t\t\t) }\n\t\t\t/>\n\t\t\t<TextControl\n\t\t\t\t__next40pxDefaultSize\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tlabel={ __( 'Link CSS class' ) }\n\t\t\t\tvalue={ linkClass || '' }\n\t\t\t\tonChange={ onSetLinkClass }\n\t\t\t/>\n\t\t</VStack>\n\t);\n\n\tconst linkEditorValue = urlInput !== null ? urlInput : url;\n\tconst hideLightboxPanel =\n\t\t! lightboxEnabled || ( lightboxEnabled && ! showLightboxSetting );\n\tconst showLinkEditor = ! linkEditorValue && hideLightboxPanel;\n\n\tconst urlLabel = (\n\t\tgetLinkDestinations().find(\n\t\t\t( destination ) => destination.linkDestination === linkDestination\n\t\t) || {}\n\t).title;\n\n\tconst PopoverChildren = () => {\n\t\tif (\n\t\t\tlightboxEnabled &&\n\t\t\tshowLightboxSetting &&\n\t\t\t! url &&\n\t\t\t! isEditingLink\n\t\t) {\n\t\t\treturn (\n\t\t\t\t<div className=\"block-editor-url-popover__expand-on-click\">\n\t\t\t\t\t<Icon icon={ fullscreen } />\n\t\t\t\t\t<div className=\"text\">\n\t\t\t\t\t\t<p>{ __( 'Enlarge on click' ) }</p>\n\t\t\t\t\t\t<p className=\"description\">\n\t\t\t\t\t\t\t{ __( 'Scales the image with a lightbox effect' ) }\n\t\t\t\t\t\t</p>\n\t\t\t\t\t</div>\n\t\t\t\t\t<Button\n\t\t\t\t\t\ticon={ linkOff }\n\t\t\t\t\t\tlabel={ __( 'Disable enlarge on click' ) }\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tonSetLightbox?.( false );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t);\n\t\t} else if ( ! url || isEditingLink ) {\n\t\t\treturn (\n\t\t\t\t<URLPopover.LinkEditor\n\t\t\t\t\tclassName=\"block-editor-format-toolbar__link-container-content\"\n\t\t\t\t\tvalue={ linkEditorValue }\n\t\t\t\t\tonChangeInputValue={ setUrlInput }\n\t\t\t\t\tonSubmit={ onSubmitLinkChange() }\n\t\t\t\t\tautocompleteRef={ autocompleteRef }\n\t\t\t\t/>\n\t\t\t);\n\t\t} else if ( url && ! isEditingLink ) {\n\t\t\treturn (\n\t\t\t\t<>\n\t\t\t\t\t<URLPopover.LinkViewer\n\t\t\t\t\t\tclassName=\"block-editor-format-toolbar__link-container-content\"\n\t\t\t\t\t\turl={ url }\n\t\t\t\t\t\tonEditLinkClick={ startEditLink }\n\t\t\t\t\t\turlLabel={ urlLabel }\n\t\t\t\t\t/>\n\t\t\t\t\t<Button\n\t\t\t\t\t\ticon={ linkOff }\n\t\t\t\t\t\tlabel={ __( 'Remove link' ) }\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tonLinkRemove();\n\t\t\t\t\t\t\tresetLightbox?.();\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t/>\n\t\t\t\t</>\n\t\t\t);\n\t\t}\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<ToolbarButton\n\t\t\t\ticon={ linkIcon }\n\t\t\t\tclassName=\"components-toolbar__control\"\n\t\t\t\tlabel={ __( 'Link' ) }\n\t\t\t\taria-expanded={ isOpen }\n\t\t\t\tonClick={ openLinkUI }\n\t\t\t\tref={ setPopoverAnchor }\n\t\t\t\tisActive={\n\t\t\t\t\t!! url || ( lightboxEnabled && showLightboxSetting )\n\t\t\t\t}\n\t\t\t/>\n\t\t\t{ isOpen && (\n\t\t\t\t<URLPopover\n\t\t\t\t\tref={ wrapperRef }\n\t\t\t\t\tanchor={ popoverAnchor }\n\t\t\t\t\tonFocusOutside={ onFocusOutside() }\n\t\t\t\t\tonClose={ closeLinkUI }\n\t\t\t\t\trenderSettings={\n\t\t\t\t\t\thideLightboxPanel ? () => advancedOptions : null\n\t\t\t\t\t}\n\t\t\t\t\tadditionalControls={\n\t\t\t\t\t\tshowLinkEditor && (\n\t\t\t\t\t\t\t<NavigableMenu>\n\t\t\t\t\t\t\t\t{ getLinkDestinations().map( ( link ) => (\n\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\tkey={ link.linkDestination }\n\t\t\t\t\t\t\t\t\t\ticon={ link.icon }\n\t\t\t\t\t\t\t\t\t\ticonPosition=\"left\"\n\t\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\t\tsetUrlInput( null );\n\t\t\t\t\t\t\t\t\t\t\tonSetHref( link.url );\n\t\t\t\t\t\t\t\t\t\t\tstopEditLink();\n\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ link.title }\n\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t\t\t{ showLightboxSetting && (\n\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\tkey=\"expand-on-click\"\n\t\t\t\t\t\t\t\t\t\tclassName=\"block-editor-url-popover__expand-on-click\"\n\t\t\t\t\t\t\t\t\t\ticon={ fullscreen }\n\t\t\t\t\t\t\t\t\t\tinfo={ __(\n\t\t\t\t\t\t\t\t\t\t\t'Scale the image with a lightbox effect.'\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\ticonPosition=\"left\"\n\t\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\t\tsetUrlInput( null );\n\t\t\t\t\t\t\t\t\t\t\tonChangeUrl( {\n\t\t\t\t\t\t\t\t\t\t\t\tlinkDestination:\n\t\t\t\t\t\t\t\t\t\t\t\t\tLINK_DESTINATION_NONE,\n\t\t\t\t\t\t\t\t\t\t\t\thref: '',\n\t\t\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t\t\t\tonSetLightbox?.( true );\n\t\t\t\t\t\t\t\t\t\t\tstopEditLink();\n\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Enlarge on click' ) }\n\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</NavigableMenu>\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t\toffset={ 13 }\n\t\t\t\t>\n\t\t\t\t\t{ PopoverChildren() }\n\t\t\t\t</URLPopover>\n\t\t\t) }\n\t\t</>\n\t);\n};\n\nexport { ImageURLInputUI as __experimentalImageURLInputUI };\n"],"mappings":"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","ignoreList":[]}
@@ -110,7 +110,8 @@ export default function useClipboardHandler() {
110
110
  }
111
111
  } else if (event.type === 'paste') {
112
112
  const {
113
- __experimentalCanUserUseUnfilteredHTML: canUserUseUnfilteredHTML
113
+ __experimentalCanUserUseUnfilteredHTML: canUserUseUnfilteredHTML,
114
+ mediaUpload
114
115
  } = getSettings();
115
116
  const isInternal = event.clipboardData.getData('rich-text') === 'true';
116
117
  if (isInternal) {
@@ -124,6 +125,10 @@ export default function useClipboardHandler() {
124
125
  const isFullySelected = __unstableIsFullySelected();
125
126
  let blocks = [];
126
127
  if (files.length) {
128
+ if (!mediaUpload) {
129
+ event.preventDefault();
130
+ return;
131
+ }
127
132
  const fromTransforms = getBlockTransforms('from');
128
133
  blocks = files.reduce((accumulator, file) => {
129
134
  const transformation = findTransform(fromTransforms, transform => transform.type === 'files' && transform.isMatch([file]));
@@ -1 +1 @@
1
- {"version":3,"names":["pasteHandler","findTransform","getBlockTransforms","hasBlockSupport","switchToBlockType","documentHasSelection","documentHasUncollapsedSelection","useDispatch","useRegistry","useSelect","useRefEffect","store","blockEditorStore","useNotifyCopy","setClipboardBlocks","getPasteEventData","useClipboardHandler","registry","getBlocksByClientId","getSelectedBlockClientIds","hasMultiSelection","getSettings","getBlockName","__unstableIsFullySelected","__unstableIsSelectionCollapsed","__unstableIsSelectionMergeable","__unstableGetSelectedBlocksWithPartialSelection","canInsertBlockType","getBlockRootClientId","flashBlock","removeBlocks","replaceBlocks","__unstableDeleteSelection","__unstableExpandSelection","__unstableSplitSelection","notifyCopy","node","handler","event","defaultPrevented","selectedBlockClientIds","length","target","ownerDocument","hasSelection","type","activeElement","isContentEditable","contains","isSelectionMergeable","shouldHandleWholeBlocks","expandSelectionIsNeeded","preventDefault","blocks","head","tail","inBetweenBlocks","slice","contentEditable","__experimentalCanUserUseUnfilteredHTML","canUserUseUnfilteredHTML","isInternal","clipboardData","getData","plainText","html","files","isFullySelected","fromTransforms","reduce","accumulator","file","transformation","transform","isMatch","push","flat","HTML","mode","__deprecatedOnSplit","firstSelectedClientId","rootClientId","newBlocks","block","name","rootBlockName","switchedBlocks","switchedBlock","innerBlock","innerBlocks","addEventListener","removeEventListener"],"sources":["@wordpress/block-editor/src/components/writing-flow/use-clipboard-handler.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tpasteHandler,\n\tfindTransform,\n\tgetBlockTransforms,\n\thasBlockSupport,\n\tswitchToBlockType,\n} from '@wordpress/blocks';\nimport {\n\tdocumentHasSelection,\n\tdocumentHasUncollapsedSelection,\n} from '@wordpress/dom';\nimport { useDispatch, useRegistry, useSelect } from '@wordpress/data';\nimport { useRefEffect } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport { useNotifyCopy } from '../../utils/use-notify-copy';\nimport { setClipboardBlocks } from './utils';\nimport { getPasteEventData } from '../../utils/pasting';\n\nexport default function useClipboardHandler() {\n\tconst registry = useRegistry();\n\tconst {\n\t\tgetBlocksByClientId,\n\t\tgetSelectedBlockClientIds,\n\t\thasMultiSelection,\n\t\tgetSettings,\n\t\tgetBlockName,\n\t\t__unstableIsFullySelected,\n\t\t__unstableIsSelectionCollapsed,\n\t\t__unstableIsSelectionMergeable,\n\t\t__unstableGetSelectedBlocksWithPartialSelection,\n\t\tcanInsertBlockType,\n\t\tgetBlockRootClientId,\n\t} = useSelect( blockEditorStore );\n\tconst {\n\t\tflashBlock,\n\t\tremoveBlocks,\n\t\treplaceBlocks,\n\t\t__unstableDeleteSelection,\n\t\t__unstableExpandSelection,\n\t\t__unstableSplitSelection,\n\t} = useDispatch( blockEditorStore );\n\tconst notifyCopy = useNotifyCopy();\n\n\treturn useRefEffect( ( node ) => {\n\t\tfunction handler( event ) {\n\t\t\tif ( event.defaultPrevented ) {\n\t\t\t\t// This was likely already handled in rich-text/use-paste-handler.js.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst selectedBlockClientIds = getSelectedBlockClientIds();\n\n\t\t\tif ( selectedBlockClientIds.length === 0 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Let native copy/paste behaviour take over in input fields.\n\t\t\t// But always handle multiple selected blocks.\n\t\t\tif ( ! hasMultiSelection() ) {\n\t\t\t\tconst { target } = event;\n\t\t\t\tconst { ownerDocument } = target;\n\t\t\t\t// If copying, only consider actual text selection as selection.\n\t\t\t\t// Otherwise, any focus on an input field is considered.\n\t\t\t\tconst hasSelection =\n\t\t\t\t\tevent.type === 'copy' || event.type === 'cut'\n\t\t\t\t\t\t? documentHasUncollapsedSelection( ownerDocument )\n\t\t\t\t\t\t: documentHasSelection( ownerDocument ) &&\n\t\t\t\t\t\t ! ownerDocument.activeElement.isContentEditable;\n\n\t\t\t\t// Let native copy behaviour take over in input fields.\n\t\t\t\tif ( hasSelection ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst { activeElement } = event.target.ownerDocument;\n\n\t\t\tif ( ! node.contains( activeElement ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst isSelectionMergeable = __unstableIsSelectionMergeable();\n\t\t\tconst shouldHandleWholeBlocks =\n\t\t\t\t__unstableIsSelectionCollapsed() || __unstableIsFullySelected();\n\t\t\tconst expandSelectionIsNeeded =\n\t\t\t\t! shouldHandleWholeBlocks && ! isSelectionMergeable;\n\t\t\tif ( event.type === 'copy' || event.type === 'cut' ) {\n\t\t\t\tevent.preventDefault();\n\n\t\t\t\tif ( selectedBlockClientIds.length === 1 ) {\n\t\t\t\t\tflashBlock( selectedBlockClientIds[ 0 ] );\n\t\t\t\t}\n\t\t\t\t// If we have a partial selection that is not mergeable, just\n\t\t\t\t// expand the selection to the whole blocks.\n\t\t\t\tif ( expandSelectionIsNeeded ) {\n\t\t\t\t\t__unstableExpandSelection();\n\t\t\t\t} else {\n\t\t\t\t\tnotifyCopy( event.type, selectedBlockClientIds );\n\t\t\t\t\tlet blocks;\n\t\t\t\t\t// Check if we have partial selection.\n\t\t\t\t\tif ( shouldHandleWholeBlocks ) {\n\t\t\t\t\t\tblocks = getBlocksByClientId( selectedBlockClientIds );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst [ head, tail ] =\n\t\t\t\t\t\t\t__unstableGetSelectedBlocksWithPartialSelection();\n\t\t\t\t\t\tconst inBetweenBlocks = getBlocksByClientId(\n\t\t\t\t\t\t\tselectedBlockClientIds.slice(\n\t\t\t\t\t\t\t\t1,\n\t\t\t\t\t\t\t\tselectedBlockClientIds.length - 1\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t\tblocks = [ head, ...inBetweenBlocks, tail ];\n\t\t\t\t\t}\n\n\t\t\t\t\tsetClipboardBlocks( event, blocks, registry );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( event.type === 'cut' ) {\n\t\t\t\t// We need to also check if at the start we needed to\n\t\t\t\t// expand the selection, as in this point we might have\n\t\t\t\t// programmatically fully selected the blocks above.\n\t\t\t\tif ( shouldHandleWholeBlocks && ! expandSelectionIsNeeded ) {\n\t\t\t\t\tremoveBlocks( selectedBlockClientIds );\n\t\t\t\t} else {\n\t\t\t\t\tevent.target.ownerDocument.activeElement.contentEditable = false;\n\t\t\t\t\t__unstableDeleteSelection();\n\t\t\t\t}\n\t\t\t} else if ( event.type === 'paste' ) {\n\t\t\t\tconst {\n\t\t\t\t\t__experimentalCanUserUseUnfilteredHTML:\n\t\t\t\t\t\tcanUserUseUnfilteredHTML,\n\t\t\t\t} = getSettings();\n\t\t\t\tconst isInternal =\n\t\t\t\t\tevent.clipboardData.getData( 'rich-text' ) === 'true';\n\t\t\t\tif ( isInternal ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst { plainText, html, files } = getPasteEventData( event );\n\t\t\t\tconst isFullySelected = __unstableIsFullySelected();\n\t\t\t\tlet blocks = [];\n\n\t\t\t\tif ( files.length ) {\n\t\t\t\t\tconst fromTransforms = getBlockTransforms( 'from' );\n\t\t\t\t\tblocks = files\n\t\t\t\t\t\t.reduce( ( accumulator, file ) => {\n\t\t\t\t\t\t\tconst transformation = findTransform(\n\t\t\t\t\t\t\t\tfromTransforms,\n\t\t\t\t\t\t\t\t( transform ) =>\n\t\t\t\t\t\t\t\t\ttransform.type === 'files' &&\n\t\t\t\t\t\t\t\t\ttransform.isMatch( [ file ] )\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tif ( transformation ) {\n\t\t\t\t\t\t\t\taccumulator.push(\n\t\t\t\t\t\t\t\t\ttransformation.transform( [ file ] )\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn accumulator;\n\t\t\t\t\t\t}, [] )\n\t\t\t\t\t\t.flat();\n\t\t\t\t} else {\n\t\t\t\t\tblocks = pasteHandler( {\n\t\t\t\t\t\tHTML: html,\n\t\t\t\t\t\tplainText,\n\t\t\t\t\t\tmode: isFullySelected ? 'BLOCKS' : 'AUTO',\n\t\t\t\t\t\tcanUserUseUnfilteredHTML,\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\t// Inline paste: let rich text handle it.\n\t\t\t\tif ( typeof blocks === 'string' ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif ( isFullySelected ) {\n\t\t\t\t\treplaceBlocks(\n\t\t\t\t\t\tselectedBlockClientIds,\n\t\t\t\t\t\tblocks,\n\t\t\t\t\t\tblocks.length - 1,\n\t\t\t\t\t\t-1\n\t\t\t\t\t);\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// If a block doesn't support splitting, let rich text paste\n\t\t\t\t// inline.\n\t\t\t\tif (\n\t\t\t\t\t! hasMultiSelection() &&\n\t\t\t\t\t! hasBlockSupport(\n\t\t\t\t\t\tgetBlockName( selectedBlockClientIds[ 0 ] ),\n\t\t\t\t\t\t'splitting',\n\t\t\t\t\t\tfalse\n\t\t\t\t\t) &&\n\t\t\t\t\t! event.__deprecatedOnSplit\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst [ firstSelectedClientId ] = selectedBlockClientIds;\n\t\t\t\tconst rootClientId = getBlockRootClientId(\n\t\t\t\t\tfirstSelectedClientId\n\t\t\t\t);\n\n\t\t\t\tconst newBlocks = [];\n\n\t\t\t\tfor ( const block of blocks ) {\n\t\t\t\t\tif ( canInsertBlockType( block.name, rootClientId ) ) {\n\t\t\t\t\t\tnewBlocks.push( block );\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// If a block cannot be inserted in a root block, try\n\t\t\t\t\t\t// converting it to that root block type and insert the\n\t\t\t\t\t\t// inner blocks.\n\t\t\t\t\t\t// Example: paragraphs cannot be inserted into a list,\n\t\t\t\t\t\t// so convert the paragraphs to a list for list items.\n\t\t\t\t\t\tconst rootBlockName = getBlockName( rootClientId );\n\t\t\t\t\t\tconst switchedBlocks =\n\t\t\t\t\t\t\tblock.name !== rootBlockName\n\t\t\t\t\t\t\t\t? switchToBlockType( block, rootBlockName )\n\t\t\t\t\t\t\t\t: [ block ];\n\n\t\t\t\t\t\tif ( ! switchedBlocks ) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfor ( const switchedBlock of switchedBlocks ) {\n\t\t\t\t\t\t\tfor ( const innerBlock of switchedBlock.innerBlocks ) {\n\t\t\t\t\t\t\t\tnewBlocks.push( innerBlock );\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}\n\n\t\t\t\t__unstableSplitSelection( newBlocks );\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t}\n\n\t\tnode.ownerDocument.addEventListener( 'copy', handler );\n\t\tnode.ownerDocument.addEventListener( 'cut', handler );\n\t\tnode.ownerDocument.addEventListener( 'paste', handler );\n\n\t\treturn () => {\n\t\t\tnode.ownerDocument.removeEventListener( 'copy', handler );\n\t\t\tnode.ownerDocument.removeEventListener( 'cut', handler );\n\t\t\tnode.ownerDocument.removeEventListener( 'paste', handler );\n\t\t};\n\t}, [] );\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["pasteHandler","findTransform","getBlockTransforms","hasBlockSupport","switchToBlockType","documentHasSelection","documentHasUncollapsedSelection","useDispatch","useRegistry","useSelect","useRefEffect","store","blockEditorStore","useNotifyCopy","setClipboardBlocks","getPasteEventData","useClipboardHandler","registry","getBlocksByClientId","getSelectedBlockClientIds","hasMultiSelection","getSettings","getBlockName","__unstableIsFullySelected","__unstableIsSelectionCollapsed","__unstableIsSelectionMergeable","__unstableGetSelectedBlocksWithPartialSelection","canInsertBlockType","getBlockRootClientId","flashBlock","removeBlocks","replaceBlocks","__unstableDeleteSelection","__unstableExpandSelection","__unstableSplitSelection","notifyCopy","node","handler","event","defaultPrevented","selectedBlockClientIds","length","target","ownerDocument","hasSelection","type","activeElement","isContentEditable","contains","isSelectionMergeable","shouldHandleWholeBlocks","expandSelectionIsNeeded","preventDefault","blocks","head","tail","inBetweenBlocks","slice","contentEditable","__experimentalCanUserUseUnfilteredHTML","canUserUseUnfilteredHTML","mediaUpload","isInternal","clipboardData","getData","plainText","html","files","isFullySelected","fromTransforms","reduce","accumulator","file","transformation","transform","isMatch","push","flat","HTML","mode","__deprecatedOnSplit","firstSelectedClientId","rootClientId","newBlocks","block","name","rootBlockName","switchedBlocks","switchedBlock","innerBlock","innerBlocks","addEventListener","removeEventListener"],"sources":["@wordpress/block-editor/src/components/writing-flow/use-clipboard-handler.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tpasteHandler,\n\tfindTransform,\n\tgetBlockTransforms,\n\thasBlockSupport,\n\tswitchToBlockType,\n} from '@wordpress/blocks';\nimport {\n\tdocumentHasSelection,\n\tdocumentHasUncollapsedSelection,\n} from '@wordpress/dom';\nimport { useDispatch, useRegistry, useSelect } from '@wordpress/data';\nimport { useRefEffect } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport { useNotifyCopy } from '../../utils/use-notify-copy';\nimport { setClipboardBlocks } from './utils';\nimport { getPasteEventData } from '../../utils/pasting';\n\nexport default function useClipboardHandler() {\n\tconst registry = useRegistry();\n\tconst {\n\t\tgetBlocksByClientId,\n\t\tgetSelectedBlockClientIds,\n\t\thasMultiSelection,\n\t\tgetSettings,\n\t\tgetBlockName,\n\t\t__unstableIsFullySelected,\n\t\t__unstableIsSelectionCollapsed,\n\t\t__unstableIsSelectionMergeable,\n\t\t__unstableGetSelectedBlocksWithPartialSelection,\n\t\tcanInsertBlockType,\n\t\tgetBlockRootClientId,\n\t} = useSelect( blockEditorStore );\n\tconst {\n\t\tflashBlock,\n\t\tremoveBlocks,\n\t\treplaceBlocks,\n\t\t__unstableDeleteSelection,\n\t\t__unstableExpandSelection,\n\t\t__unstableSplitSelection,\n\t} = useDispatch( blockEditorStore );\n\tconst notifyCopy = useNotifyCopy();\n\n\treturn useRefEffect( ( node ) => {\n\t\tfunction handler( event ) {\n\t\t\tif ( event.defaultPrevented ) {\n\t\t\t\t// This was likely already handled in rich-text/use-paste-handler.js.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst selectedBlockClientIds = getSelectedBlockClientIds();\n\n\t\t\tif ( selectedBlockClientIds.length === 0 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Let native copy/paste behaviour take over in input fields.\n\t\t\t// But always handle multiple selected blocks.\n\t\t\tif ( ! hasMultiSelection() ) {\n\t\t\t\tconst { target } = event;\n\t\t\t\tconst { ownerDocument } = target;\n\t\t\t\t// If copying, only consider actual text selection as selection.\n\t\t\t\t// Otherwise, any focus on an input field is considered.\n\t\t\t\tconst hasSelection =\n\t\t\t\t\tevent.type === 'copy' || event.type === 'cut'\n\t\t\t\t\t\t? documentHasUncollapsedSelection( ownerDocument )\n\t\t\t\t\t\t: documentHasSelection( ownerDocument ) &&\n\t\t\t\t\t\t ! ownerDocument.activeElement.isContentEditable;\n\n\t\t\t\t// Let native copy behaviour take over in input fields.\n\t\t\t\tif ( hasSelection ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst { activeElement } = event.target.ownerDocument;\n\n\t\t\tif ( ! node.contains( activeElement ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst isSelectionMergeable = __unstableIsSelectionMergeable();\n\t\t\tconst shouldHandleWholeBlocks =\n\t\t\t\t__unstableIsSelectionCollapsed() || __unstableIsFullySelected();\n\t\t\tconst expandSelectionIsNeeded =\n\t\t\t\t! shouldHandleWholeBlocks && ! isSelectionMergeable;\n\t\t\tif ( event.type === 'copy' || event.type === 'cut' ) {\n\t\t\t\tevent.preventDefault();\n\n\t\t\t\tif ( selectedBlockClientIds.length === 1 ) {\n\t\t\t\t\tflashBlock( selectedBlockClientIds[ 0 ] );\n\t\t\t\t}\n\t\t\t\t// If we have a partial selection that is not mergeable, just\n\t\t\t\t// expand the selection to the whole blocks.\n\t\t\t\tif ( expandSelectionIsNeeded ) {\n\t\t\t\t\t__unstableExpandSelection();\n\t\t\t\t} else {\n\t\t\t\t\tnotifyCopy( event.type, selectedBlockClientIds );\n\t\t\t\t\tlet blocks;\n\t\t\t\t\t// Check if we have partial selection.\n\t\t\t\t\tif ( shouldHandleWholeBlocks ) {\n\t\t\t\t\t\tblocks = getBlocksByClientId( selectedBlockClientIds );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst [ head, tail ] =\n\t\t\t\t\t\t\t__unstableGetSelectedBlocksWithPartialSelection();\n\t\t\t\t\t\tconst inBetweenBlocks = getBlocksByClientId(\n\t\t\t\t\t\t\tselectedBlockClientIds.slice(\n\t\t\t\t\t\t\t\t1,\n\t\t\t\t\t\t\t\tselectedBlockClientIds.length - 1\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t\tblocks = [ head, ...inBetweenBlocks, tail ];\n\t\t\t\t\t}\n\n\t\t\t\t\tsetClipboardBlocks( event, blocks, registry );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( event.type === 'cut' ) {\n\t\t\t\t// We need to also check if at the start we needed to\n\t\t\t\t// expand the selection, as in this point we might have\n\t\t\t\t// programmatically fully selected the blocks above.\n\t\t\t\tif ( shouldHandleWholeBlocks && ! expandSelectionIsNeeded ) {\n\t\t\t\t\tremoveBlocks( selectedBlockClientIds );\n\t\t\t\t} else {\n\t\t\t\t\tevent.target.ownerDocument.activeElement.contentEditable = false;\n\t\t\t\t\t__unstableDeleteSelection();\n\t\t\t\t}\n\t\t\t} else if ( event.type === 'paste' ) {\n\t\t\t\tconst {\n\t\t\t\t\t__experimentalCanUserUseUnfilteredHTML:\n\t\t\t\t\t\tcanUserUseUnfilteredHTML,\n\t\t\t\t\tmediaUpload,\n\t\t\t\t} = getSettings();\n\t\t\t\tconst isInternal =\n\t\t\t\t\tevent.clipboardData.getData( 'rich-text' ) === 'true';\n\t\t\t\tif ( isInternal ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst { plainText, html, files } = getPasteEventData( event );\n\t\t\t\tconst isFullySelected = __unstableIsFullySelected();\n\t\t\t\tlet blocks = [];\n\n\t\t\t\tif ( files.length ) {\n\t\t\t\t\tif ( ! mediaUpload ) {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst fromTransforms = getBlockTransforms( 'from' );\n\t\t\t\t\tblocks = files\n\t\t\t\t\t\t.reduce( ( accumulator, file ) => {\n\t\t\t\t\t\t\tconst transformation = findTransform(\n\t\t\t\t\t\t\t\tfromTransforms,\n\t\t\t\t\t\t\t\t( transform ) =>\n\t\t\t\t\t\t\t\t\ttransform.type === 'files' &&\n\t\t\t\t\t\t\t\t\ttransform.isMatch( [ file ] )\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tif ( transformation ) {\n\t\t\t\t\t\t\t\taccumulator.push(\n\t\t\t\t\t\t\t\t\ttransformation.transform( [ file ] )\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn accumulator;\n\t\t\t\t\t\t}, [] )\n\t\t\t\t\t\t.flat();\n\t\t\t\t} else {\n\t\t\t\t\tblocks = pasteHandler( {\n\t\t\t\t\t\tHTML: html,\n\t\t\t\t\t\tplainText,\n\t\t\t\t\t\tmode: isFullySelected ? 'BLOCKS' : 'AUTO',\n\t\t\t\t\t\tcanUserUseUnfilteredHTML,\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\t// Inline paste: let rich text handle it.\n\t\t\t\tif ( typeof blocks === 'string' ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif ( isFullySelected ) {\n\t\t\t\t\treplaceBlocks(\n\t\t\t\t\t\tselectedBlockClientIds,\n\t\t\t\t\t\tblocks,\n\t\t\t\t\t\tblocks.length - 1,\n\t\t\t\t\t\t-1\n\t\t\t\t\t);\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// If a block doesn't support splitting, let rich text paste\n\t\t\t\t// inline.\n\t\t\t\tif (\n\t\t\t\t\t! hasMultiSelection() &&\n\t\t\t\t\t! hasBlockSupport(\n\t\t\t\t\t\tgetBlockName( selectedBlockClientIds[ 0 ] ),\n\t\t\t\t\t\t'splitting',\n\t\t\t\t\t\tfalse\n\t\t\t\t\t) &&\n\t\t\t\t\t! event.__deprecatedOnSplit\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst [ firstSelectedClientId ] = selectedBlockClientIds;\n\t\t\t\tconst rootClientId = getBlockRootClientId(\n\t\t\t\t\tfirstSelectedClientId\n\t\t\t\t);\n\n\t\t\t\tconst newBlocks = [];\n\n\t\t\t\tfor ( const block of blocks ) {\n\t\t\t\t\tif ( canInsertBlockType( block.name, rootClientId ) ) {\n\t\t\t\t\t\tnewBlocks.push( block );\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// If a block cannot be inserted in a root block, try\n\t\t\t\t\t\t// converting it to that root block type and insert the\n\t\t\t\t\t\t// inner blocks.\n\t\t\t\t\t\t// Example: paragraphs cannot be inserted into a list,\n\t\t\t\t\t\t// so convert the paragraphs to a list for list items.\n\t\t\t\t\t\tconst rootBlockName = getBlockName( rootClientId );\n\t\t\t\t\t\tconst switchedBlocks =\n\t\t\t\t\t\t\tblock.name !== rootBlockName\n\t\t\t\t\t\t\t\t? switchToBlockType( block, rootBlockName )\n\t\t\t\t\t\t\t\t: [ block ];\n\n\t\t\t\t\t\tif ( ! switchedBlocks ) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfor ( const switchedBlock of switchedBlocks ) {\n\t\t\t\t\t\t\tfor ( const innerBlock of switchedBlock.innerBlocks ) {\n\t\t\t\t\t\t\t\tnewBlocks.push( innerBlock );\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}\n\n\t\t\t\t__unstableSplitSelection( newBlocks );\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t}\n\n\t\tnode.ownerDocument.addEventListener( 'copy', handler );\n\t\tnode.ownerDocument.addEventListener( 'cut', handler );\n\t\tnode.ownerDocument.addEventListener( 'paste', handler );\n\n\t\treturn () => {\n\t\t\tnode.ownerDocument.removeEventListener( 'copy', handler );\n\t\t\tnode.ownerDocument.removeEventListener( 'cut', handler );\n\t\t\tnode.ownerDocument.removeEventListener( 'paste', handler );\n\t\t};\n\t}, [] );\n}\n"],"mappings":"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","ignoreList":[]}