@wordpress/block-editor 15.3.1-next.6f42e1382.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.
- package/build/components/block-card/index.js +4 -2
- package/build/components/block-card/index.js.map +1 -1
- package/build/components/block-inspector/edit-contents-button.js +54 -0
- package/build/components/block-inspector/edit-contents-button.js.map +1 -0
- package/build/components/block-inspector/index.js +5 -1
- package/build/components/block-inspector/index.js.map +1 -1
- package/build/components/block-switcher/index.js +3 -3
- package/build/components/block-switcher/index.js.map +1 -1
- package/build/components/block-variation-transforms/index.js +1 -1
- package/build/components/block-variation-transforms/index.js.map +1 -1
- package/build/components/border-radius-control/utils.js.map +1 -1
- package/build/components/global-styles/border-panel.js +6 -6
- package/build/components/global-styles/border-panel.js.map +1 -1
- package/build/components/url-popover/image-url-input-ui.js +7 -2
- package/build/components/url-popover/image-url-input-ui.js.map +1 -1
- package/build/components/writing-flow/use-clipboard-handler.js +6 -1
- package/build/components/writing-flow/use-clipboard-handler.js.map +1 -1
- package/build/store/private-selectors.js +3 -2
- package/build/store/private-selectors.js.map +1 -1
- package/build/store/reducer.js +55 -1
- package/build/store/reducer.js.map +1 -1
- package/build/utils/block-bindings.js +1 -1
- package/build/utils/block-bindings.js.map +1 -1
- package/build-module/components/block-card/index.js +4 -2
- package/build-module/components/block-card/index.js.map +1 -1
- package/build-module/components/block-inspector/edit-contents-button.js +47 -0
- package/build-module/components/block-inspector/edit-contents-button.js.map +1 -0
- package/build-module/components/block-inspector/index.js +5 -1
- package/build-module/components/block-inspector/index.js.map +1 -1
- package/build-module/components/block-switcher/index.js +3 -3
- package/build-module/components/block-switcher/index.js.map +1 -1
- package/build-module/components/block-variation-transforms/index.js +1 -1
- package/build-module/components/block-variation-transforms/index.js.map +1 -1
- package/build-module/components/border-radius-control/utils.js.map +1 -1
- package/build-module/components/global-styles/border-panel.js +6 -6
- package/build-module/components/global-styles/border-panel.js.map +1 -1
- package/build-module/components/url-popover/image-url-input-ui.js +9 -4
- package/build-module/components/url-popover/image-url-input-ui.js.map +1 -1
- package/build-module/components/writing-flow/use-clipboard-handler.js +6 -1
- package/build-module/components/writing-flow/use-clipboard-handler.js.map +1 -1
- package/build-module/store/private-selectors.js +3 -2
- package/build-module/store/private-selectors.js.map +1 -1
- package/build-module/store/reducer.js +55 -1
- package/build-module/store/reducer.js.map +1 -1
- package/build-module/utils/block-bindings.js +1 -1
- package/build-module/utils/block-bindings.js.map +1 -1
- package/build-style/style-rtl.css +9 -4
- package/build-style/style.css +9 -4
- package/package.json +34 -34
- package/src/components/block-card/index.js +11 -1
- package/src/components/block-inspector/edit-contents-button.js +46 -0
- package/src/components/block-inspector/index.js +6 -1
- package/src/components/block-inspector/style.scss +5 -0
- package/src/components/block-switcher/index.js +5 -3
- package/src/components/block-toolbar/style.scss +3 -5
- package/src/components/block-variation-transforms/index.js +2 -1
- package/src/components/border-radius-control/test/utils.js +71 -0
- package/src/components/border-radius-control/utils.js +1 -0
- package/src/components/global-styles/border-panel.js +7 -6
- package/src/components/url-popover/image-url-input-ui.js +18 -2
- package/src/components/writing-flow/use-clipboard-handler.js +6 -0
- package/src/store/private-selectors.js +3 -2
- package/src/store/reducer.js +83 -0
- package/src/store/test/reducer.js +291 -0
- 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":"AAAA;AACA;AACA;AACA,SAASA,8CAA8C,IAAIC,gCAAgC,QAAQ,uBAAuB;;AAE1H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,IAAIA,CAAEC,UAAU,EAAG;EAClC,MAAMC,GAAG,GAAG,CAAE,GAAGD,UAAU,CAAE;EAC7B,OAAOC,GAAG,CACRC,IAAI,CACJ,CAAEC,CAAC,EAAEC,CAAC,KACLJ,UAAU,CAACK,MAAM,CAAIC,CAAC,IAAMA,CAAC,KAAKF,CAAE,CAAC,CAACG,MAAM,GAC5CP,UAAU,CAACK,MAAM,CAAIC,CAAC,IAAMA,CAAC,KAAKH,CAAE,CAAC,CAACI,MACxC,CAAC,CACAC,KAAK,CAAC,CAAC;AACV;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,UAAUA,CAAEC,aAAa,GAAG,CAAC,CAAC,EAAG;EAChD,MAAM;IAAEC,IAAI;IAAE,GAAGC;EAAY,CAAC,GAAGF,aAAa;EAC9C,OACCC,IAAI,IAAIZ,IAAI,CAAEc,MAAM,CAACC,MAAM,CAAEF,WAAY,CAAC,CAACP,MAAM,CAAEU,OAAQ,CAAE,CAAC,IAAI,IAAI;AAExE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,WAAWA,CAAEF,MAAM,GAAG,CAAC,CAAC,EAAG;EAC1C;AACD;AACA;AACA;AACA;EACC,IAAK,OAAOA,MAAM,KAAK,QAAQ,EAAG;IACjC,OAAOA,MAAM;EACd;EAEA,MAAMG,wBAAwB,GAAGJ,MAAM,CAACC,MAAM,CAAEA,MAAO,CAAC,CAACI,GAAG,CAAIC,KAAK,IACpErB,gCAAgC,CAAEqB,KAAM,CACzC,CAAC;EAED,MAAMC,SAAS,GAAGH,wBAAwB,CAACC,GAAG,CAC3CC,KAAK;IAAA,IAAAE,OAAA;IAAA,QAAAA,OAAA,GAAMF,KAAK,CAAE,CAAC,CAAE,cAAAE,OAAA,cAAAA,OAAA,GAAI,EAAE;EAAA,CAC9B,CAAC;EACD,MAAMC,QAAQ,GAAGL,wBAAwB,CAACC,GAAG,CAAIC,KAAK,IAAMA,KAAK,CAAE,CAAC,CAAG,CAAC;EAExE,MAAMA,KAAK,GAAGC,SAAS,CAACG,KAAK,CAAIjB,CAAC,IAAMA,CAAC,KAAKc,SAAS,CAAE,CAAC,CAAG,CAAC,GAC3DA,SAAS,CAAE,CAAC,CAAE,GACd,EAAE;EACL,MAAMI,IAAI,GAAGzB,IAAI,CAAEuB,QAAS,CAAC;EAE7B,MAAMG,QAAQ,GACbN,KAAK,KAAK,CAAC,IAAIA,KAAK,GAAG,GAAIA,KAAK,GAAKK,IAAI,IAAI,EAAE,EAAG,GAAGE,SAAS;EAE/D,OAAOD,QAAQ;AAChB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASE,cAAcA,CAAEb,MAAM,GAAG,CAAC,CAAC,EAAG;EAC7C,IAAK,OAAOA,MAAM,KAAK,QAAQ,EAAG;IACjC,OAAO,KAAK;EACb;EAEA,IAAK,CAAEA,MAAM,IAAI,OAAOA,MAAM,KAAK,QAAQ,EAAG;IAC7C,OAAO,KAAK;EACb;EAEA,MAAMc,YAAY,GAAGf,MAAM,CAACC,MAAM,CAAEA,MAAO,CAAC;EAE5C,IAAKc,YAAY,CAACrB,MAAM,KAAK,CAAC,EAAG;IAChC,OAAO,KAAK;EACb;EAEA,MAAMsB,UAAU,GAAGD,YAAY,CAAE,CAAC,CAAE;;EAEpC;EACA,MAAME,OAAO,GAAGF,YAAY,CAACL,KAAK,CAAIJ,KAAK,IAAMA,KAAK,KAAKU,UAAW,CAAC;EAEvE,OAAO,CAAEC,OAAO;AACjB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,gBAAgBA,CAAEjB,MAAM,EAAG;EAC1C,IAAK,CAAEA,MAAM,EAAG;IACf,OAAO,KAAK;EACb;;EAEA;EACA,IAAK,OAAOA,MAAM,KAAK,QAAQ,EAAG;IACjC,OAAO,IAAI;EACZ;;EAEA;EACA;EACA,MAAMkB,cAAc,GAAGnB,MAAM,CAACC,MAAM,CAAEA,MAAO,CAAC,CAACT,MAAM,CAAIc,KAAK,IAAM;IACnE,OAAO,CAAC,CAAEA,KAAK,IAAIA,KAAK,KAAK,CAAC;EAC/B,CAAE,CAAC;EAEH,OAAO,CAAC,CAAEa,cAAc,CAACzB,MAAM;AAChC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAAS0B,aAAaA,CAAEd,KAAK,EAAG;EACtC,IAAK,CAAEA,KAAK,EAAEe,QAAQ,EAAG;IACxB,OAAO,KAAK;EACb;EACA,OAAOf,KAAK,KAAK,GAAG,IAAIA,KAAK,CAACe,QAAQ,CAAE,2BAA4B,CAAC;AACtE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,aAAaA,CAAEhB,KAAK,EAAG;EACtC,IAAK,CAAEA,KAAK,EAAG;IACd;EACD;EAEA,IAAKA,KAAK,KAAK,GAAG,IAAIA,KAAK,KAAK,SAAS,EAAG;IAC3C,OAAOA,KAAK;EACb;EAEA,MAAMiB,IAAI,GAAGjB,KAAK,CAACkB,KAAK,CAAE,iCAAkC,CAAC;EAE7D,OAAOD,IAAI,GAAGA,IAAI,CAAE,CAAC,CAAE,GAAGV,SAAS;AACpC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASY,wBAAwBA,CAAEC,WAAW,EAAEC,OAAO,EAAG;EAChE,IAAKD,WAAW,KAAKb,SAAS,EAAG;IAChC,OAAO,CAAC;EACT;EACA,MAAMU,IAAI,GACTK,UAAU,CAAEF,WAAW,EAAE,EAAG,CAAC,KAAK,CAAC,GAChC,GAAG,GACHJ,aAAa,CAAEI,WAAY,CAAC;EAChC,MAAMG,WAAW,GAAGF,OAAO,CAACG,SAAS,CAAIC,IAAI,IAAM;IAClD,OAAOC,MAAM,CAAED,IAAI,CAACR,IAAK,CAAC,KAAKA,IAAI;EACpC,CAAE,CAAC;;EAEH;EACA,OAAOM,WAAW,KAAK,CAAC,CAAC,GAAGA,WAAW,GAAGI,GAAG;AAC9C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,wBAAwBA,CAAE5B,KAAK,EAAEqB,OAAO,EAAG;EAC1D,IAAK,CAAEP,aAAa,CAAEd,KAAM,CAAC,EAAG;IAC/B,OAAOA,KAAK;EACb;EAEA,MAAMiB,IAAI,GAAGK,UAAU,CAAEtB,KAAK,EAAE,EAAG,CAAC,KAAK,CAAC,GAAG,GAAG,GAAGgB,aAAa,CAAEhB,KAAM,CAAC;EACzE,MAAM6B,UAAU,GAAGR,OAAO,CAACS,IAAI,CAAIL,IAAI,IAAMC,MAAM,CAAED,IAAI,CAACR,IAAK,CAAC,KAAKA,IAAK,CAAC;EAE3E,OAAOY,UAAU,EAAEJ,IAAI;AACxB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASM,8BAA8BA,CAC7CC,YAAY,EACZC,WAAW,EACXZ,OAAO,EACN;EACD,MAAMI,IAAI,GAAGS,QAAQ,CAAEF,YAAY,EAAE,EAAG,CAAC;EACzC,IAAKC,WAAW,KAAK,YAAY,EAAG;IACnC,IAAKR,IAAI,KAAK,CAAC,EAAG;MACjB,OAAOlB,SAAS;IACjB;EACD,CAAC,MAAM,IAAKkB,IAAI,KAAK,CAAC,EAAG;IACxB,OAAO,GAAG;EACX;EACA,OAAO,4BAA6BJ,OAAO,CAAEW,YAAY,CAAE,EAAEf,IAAI,EAAG;AACrE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASkB,6BAA6BA,CAAEnC,KAAK,EAAEqB,OAAO,EAAG;EAC/D;EACA,IAAK,CAAErB,KAAK,IAAIc,aAAa,CAAEd,KAAM,CAAC,IAAIA,KAAK,KAAK,GAAG,EAAG;IACzD,OAAOA,KAAK;EACb;EAEA,MAAMoC,YAAY,GAAGf,OAAO,CAACS,IAAI,CAC9BL,IAAI,IAAMC,MAAM,CAAED,IAAI,CAACA,IAAK,CAAC,KAAKC,MAAM,CAAE1B,KAAM,CACnD,CAAC;EAED,IAAKoC,YAAY,EAAEnB,IAAI,EAAG;IACzB,OAAO,4BAA6BmB,YAAY,CAACnB,IAAI,EAAG;EACzD;EAEA,OAAOjB,KAAK;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASqC,4BAA4BA,CAAE1C,MAAM,EAAE0B,OAAO,EAAG;EAC/D,IAAK,CAAE1B,MAAM,IAAI,OAAOA,MAAM,KAAK,QAAQ,EAAG;IAC7C,OAAOA,MAAM;EACd;EAEA,MAAM2C,SAAS,GAAG,CAAC,CAAC;EACpB5C,MAAM,CAAC6C,IAAI,CAAE5C,MAAO,CAAC,CAAC6C,OAAO,CAAIC,GAAG,IAAM;IACzC,MAAMzC,KAAK,GAAGL,MAAM,CAAE8C,GAAG,CAAE;IAC3B,IAAK3B,aAAa,CAAEd,KAAM,CAAC,EAAG;MAC7B,MAAM0C,WAAW,GAAGd,wBAAwB,CAAE5B,KAAK,EAAEqB,OAAQ,CAAC;MAC9DiB,SAAS,CAAEG,GAAG,CAAE,GAAGC,WAAW,KAAKnC,SAAS,GAAGmC,WAAW,GAAG1C,KAAK;IACnE,CAAC,MAAM;MACNsC,SAAS,CAAEG,GAAG,CAAE,GAAGzC,KAAK;IACzB;EACD,CAAE,CAAC;EAEH,OAAOsC,SAAS;AACjB","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
|
|
129
|
+
return border?.radius;
|
|
130
130
|
}
|
|
131
131
|
return {
|
|
132
|
-
topLeft:
|
|
133
|
-
topRight:
|
|
134
|
-
bottomLeft:
|
|
135
|
-
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
|
|
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":"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","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":[]}
|
|
@@ -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
|
|
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":"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","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":[]}
|
|
@@ -388,13 +388,14 @@ export function isSectionBlock(state, clientId) {
|
|
|
388
388
|
return true;
|
|
389
389
|
}
|
|
390
390
|
const attributes = getBlockAttributes(state, clientId);
|
|
391
|
-
|
|
391
|
+
const isTemplatePart = blockName === 'core/template-part';
|
|
392
|
+
if ((attributes?.metadata?.patternName || isTemplatePart) && !!window?.__experimentalContentOnlyPatternInsertion) {
|
|
392
393
|
return true;
|
|
393
394
|
}
|
|
394
395
|
|
|
395
396
|
// Template parts become sections in navigation mode.
|
|
396
397
|
const _isNavigationMode = isNavigationMode(state);
|
|
397
|
-
if (_isNavigationMode &&
|
|
398
|
+
if (_isNavigationMode && isTemplatePart) {
|
|
398
399
|
return true;
|
|
399
400
|
}
|
|
400
401
|
const sectionRootClientId = getSectionRootClientId(state);
|