@wordpress/block-editor 12.10.1 → 12.10.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/build/components/block-patterns-list/index.js +2 -2
  2. package/build/components/block-patterns-list/index.js.map +1 -1
  3. package/build/components/block-patterns-paging/index.js +1 -1
  4. package/build/components/block-patterns-paging/index.js.map +1 -1
  5. package/build/components/global-styles/hooks.js +1 -1
  6. package/build/components/global-styles/hooks.js.map +1 -1
  7. package/build/components/global-styles/use-global-styles-output.js +17 -5
  8. package/build/components/global-styles/use-global-styles-output.js.map +1 -1
  9. package/build/components/global-styles/utils.js +22 -0
  10. package/build/components/global-styles/utils.js.map +1 -1
  11. package/build/components/inserter/block-patterns-explorer/patterns-list.js +3 -3
  12. package/build/components/inserter/block-patterns-explorer/patterns-list.js.map +1 -1
  13. package/build/components/inserter/block-patterns-tab.js +1 -1
  14. package/build/components/inserter/block-patterns-tab.js.map +1 -1
  15. package/build/components/inserter/search-results.js +1 -1
  16. package/build/components/inserter/search-results.js.map +1 -1
  17. package/build/components/link-control/search-item.js +36 -1
  18. package/build/components/link-control/search-item.js.map +1 -1
  19. package/build/components/tool-selector/index.js +2 -1
  20. package/build/components/tool-selector/index.js.map +1 -1
  21. package/build/hooks/block-rename-ui.js +5 -2
  22. package/build/hooks/block-rename-ui.js.map +1 -1
  23. package/build-module/components/block-patterns-list/index.js +2 -2
  24. package/build-module/components/block-patterns-list/index.js.map +1 -1
  25. package/build-module/components/block-patterns-paging/index.js +1 -1
  26. package/build-module/components/block-patterns-paging/index.js.map +1 -1
  27. package/build-module/components/global-styles/hooks.js +1 -1
  28. package/build-module/components/global-styles/hooks.js.map +1 -1
  29. package/build-module/components/global-styles/use-global-styles-output.js +17 -6
  30. package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
  31. package/build-module/components/global-styles/utils.js +21 -0
  32. package/build-module/components/global-styles/utils.js.map +1 -1
  33. package/build-module/components/inserter/block-patterns-explorer/patterns-list.js +4 -4
  34. package/build-module/components/inserter/block-patterns-explorer/patterns-list.js.map +1 -1
  35. package/build-module/components/inserter/block-patterns-tab.js +1 -1
  36. package/build-module/components/inserter/block-patterns-tab.js.map +1 -1
  37. package/build-module/components/inserter/search-results.js +1 -1
  38. package/build-module/components/inserter/search-results.js.map +1 -1
  39. package/build-module/components/link-control/search-item.js +37 -2
  40. package/build-module/components/link-control/search-item.js.map +1 -1
  41. package/build-module/components/tool-selector/index.js +2 -1
  42. package/build-module/components/tool-selector/index.js.map +1 -1
  43. package/build-module/hooks/block-rename-ui.js +5 -2
  44. package/build-module/hooks/block-rename-ui.js.map +1 -1
  45. package/build-style/style-rtl.css +1 -0
  46. package/build-style/style.css +1 -0
  47. package/package.json +32 -32
  48. package/src/components/block-patterns-list/index.js +2 -4
  49. package/src/components/block-patterns-paging/index.js +57 -54
  50. package/src/components/global-styles/hooks.js +1 -1
  51. package/src/components/global-styles/test/use-global-styles-output.js +39 -0
  52. package/src/components/global-styles/use-global-styles-output.js +26 -6
  53. package/src/components/global-styles/utils.js +21 -0
  54. package/src/components/inserter/block-patterns-explorer/patterns-list.js +11 -9
  55. package/src/components/inserter/block-patterns-tab.js +1 -1
  56. package/src/components/inserter/search-results.js +1 -1
  57. package/src/components/inserter/style.scss +1 -0
  58. package/src/components/link-control/search-item.js +55 -2
  59. package/src/components/tool-selector/index.js +1 -1
  60. package/src/hooks/block-rename-ui.js +14 -10
@@ -1 +1 @@
1
- {"version":3,"names":["fastDeepEqual","getTypographyFontSizeValue","getFluidTypographyOptionsFromSettings","getValueFromObjectPath","ROOT_BLOCK_NAME","ROOT_BLOCK_SELECTOR","ROOT_BLOCK_SUPPORTS","PRESET_METADATA","path","valueKey","cssVarInfix","classes","classSuffix","propertyName","valueFunc","slug","preset","settings","size","STYLE_PATH_TO_CSS_VAR_INFIX","shadow","STYLE_PATH_TO_PRESET_BLOCK_ATTRIBUTE","findInPresetsBy","features","blockName","presetPath","presetProperty","presetValueValue","orderedPresetsByOrigin","presetByOrigin","origins","origin","presets","presetObject","find","highestPresetObjectWithSameSlug","undefined","getPresetVariableFromValue","variableStylePath","presetPropertyValue","metadata","data","getValueFromPresetVariable","variable","presetType","result","getValueFromVariable","getValueFromCustomVariable","_getValueFromObjectPa","ref","refPath","split","USER_VALUE_PREFIX","THEME_VALUE_PREFIX","THEME_VALUE_SUFFIX","parsedVar","startsWith","slice","length","endsWith","type","scopeSelector","scope","selector","scopes","selectors","selectorsScoped","forEach","outer","inner","push","trim","join","areGlobalStyleConfigsEqual","original","variation","styles"],"sources":["@wordpress/block-editor/src/components/global-styles/utils.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport fastDeepEqual from 'fast-deep-equal/es6';\n\n/**\n * Internal dependencies\n */\nimport {\n\tgetTypographyFontSizeValue,\n\tgetFluidTypographyOptionsFromSettings,\n} from './typography-utils';\nimport { getValueFromObjectPath } from '../../utils/object';\n\n/* Supporting data. */\nexport const ROOT_BLOCK_NAME = 'root';\nexport const ROOT_BLOCK_SELECTOR = 'body';\nexport const ROOT_BLOCK_SUPPORTS = [\n\t'background',\n\t'backgroundColor',\n\t'color',\n\t'linkColor',\n\t'captionColor',\n\t'buttonColor',\n\t'headingColor',\n\t'fontFamily',\n\t'fontSize',\n\t'fontStyle',\n\t'fontWeight',\n\t'lineHeight',\n\t'textDecoration',\n\t'textTransform',\n\t'padding',\n];\n\nexport const PRESET_METADATA = [\n\t{\n\t\tpath: [ 'color', 'palette' ],\n\t\tvalueKey: 'color',\n\t\tcssVarInfix: 'color',\n\t\tclasses: [\n\t\t\t{ classSuffix: 'color', propertyName: 'color' },\n\t\t\t{\n\t\t\t\tclassSuffix: 'background-color',\n\t\t\t\tpropertyName: 'background-color',\n\t\t\t},\n\t\t\t{\n\t\t\t\tclassSuffix: 'border-color',\n\t\t\t\tpropertyName: 'border-color',\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tpath: [ 'color', 'gradients' ],\n\t\tvalueKey: 'gradient',\n\t\tcssVarInfix: 'gradient',\n\t\tclasses: [\n\t\t\t{\n\t\t\t\tclassSuffix: 'gradient-background',\n\t\t\t\tpropertyName: 'background',\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tpath: [ 'color', 'duotone' ],\n\t\tvalueKey: 'colors',\n\t\tcssVarInfix: 'duotone',\n\t\tvalueFunc: ( { slug } ) => `url( '#wp-duotone-${ slug }' )`,\n\t\tclasses: [],\n\t},\n\t{\n\t\tpath: [ 'shadow', 'presets' ],\n\t\tvalueKey: 'shadow',\n\t\tcssVarInfix: 'shadow',\n\t\tclasses: [],\n\t},\n\t{\n\t\tpath: [ 'typography', 'fontSizes' ],\n\t\tvalueFunc: ( preset, settings ) =>\n\t\t\tgetTypographyFontSizeValue(\n\t\t\t\tpreset,\n\t\t\t\tgetFluidTypographyOptionsFromSettings( settings )\n\t\t\t),\n\t\tvalueKey: 'size',\n\t\tcssVarInfix: 'font-size',\n\t\tclasses: [ { classSuffix: 'font-size', propertyName: 'font-size' } ],\n\t},\n\t{\n\t\tpath: [ 'typography', 'fontFamilies' ],\n\t\tvalueKey: 'fontFamily',\n\t\tcssVarInfix: 'font-family',\n\t\tclasses: [\n\t\t\t{ classSuffix: 'font-family', propertyName: 'font-family' },\n\t\t],\n\t},\n\t{\n\t\tpath: [ 'spacing', 'spacingSizes' ],\n\t\tvalueKey: 'size',\n\t\tcssVarInfix: 'spacing',\n\t\tvalueFunc: ( { size } ) => size,\n\t\tclasses: [],\n\t},\n];\n\nexport const STYLE_PATH_TO_CSS_VAR_INFIX = {\n\t'color.background': 'color',\n\t'color.text': 'color',\n\t'filter.duotone': 'duotone',\n\t'elements.link.color.text': 'color',\n\t'elements.link.:hover.color.text': 'color',\n\t'elements.link.typography.fontFamily': 'font-family',\n\t'elements.link.typography.fontSize': 'font-size',\n\t'elements.button.color.text': 'color',\n\t'elements.button.color.background': 'color',\n\t'elements.caption.color.text': 'color',\n\t'elements.button.typography.fontFamily': 'font-family',\n\t'elements.button.typography.fontSize': 'font-size',\n\t'elements.heading.color': 'color',\n\t'elements.heading.color.background': 'color',\n\t'elements.heading.typography.fontFamily': 'font-family',\n\t'elements.heading.gradient': 'gradient',\n\t'elements.heading.color.gradient': 'gradient',\n\t'elements.h1.color': 'color',\n\t'elements.h1.color.background': 'color',\n\t'elements.h1.typography.fontFamily': 'font-family',\n\t'elements.h1.color.gradient': 'gradient',\n\t'elements.h2.color': 'color',\n\t'elements.h2.color.background': 'color',\n\t'elements.h2.typography.fontFamily': 'font-family',\n\t'elements.h2.color.gradient': 'gradient',\n\t'elements.h3.color': 'color',\n\t'elements.h3.color.background': 'color',\n\t'elements.h3.typography.fontFamily': 'font-family',\n\t'elements.h3.color.gradient': 'gradient',\n\t'elements.h4.color': 'color',\n\t'elements.h4.color.background': 'color',\n\t'elements.h4.typography.fontFamily': 'font-family',\n\t'elements.h4.color.gradient': 'gradient',\n\t'elements.h5.color': 'color',\n\t'elements.h5.color.background': 'color',\n\t'elements.h5.typography.fontFamily': 'font-family',\n\t'elements.h5.color.gradient': 'gradient',\n\t'elements.h6.color': 'color',\n\t'elements.h6.color.background': 'color',\n\t'elements.h6.typography.fontFamily': 'font-family',\n\t'elements.h6.color.gradient': 'gradient',\n\t'color.gradient': 'gradient',\n\tshadow: 'shadow',\n\t'typography.fontSize': 'font-size',\n\t'typography.fontFamily': 'font-family',\n};\n\n// A static list of block attributes that store global style preset slugs.\nexport const STYLE_PATH_TO_PRESET_BLOCK_ATTRIBUTE = {\n\t'color.background': 'backgroundColor',\n\t'color.text': 'textColor',\n\t'color.gradient': 'gradient',\n\t'typography.fontSize': 'fontSize',\n\t'typography.fontFamily': 'fontFamily',\n};\n\nfunction findInPresetsBy(\n\tfeatures,\n\tblockName,\n\tpresetPath,\n\tpresetProperty,\n\tpresetValueValue\n) {\n\t// Block presets take priority above root level presets.\n\tconst orderedPresetsByOrigin = [\n\t\tgetValueFromObjectPath( features, [\n\t\t\t'blocks',\n\t\t\tblockName,\n\t\t\t...presetPath,\n\t\t] ),\n\t\tgetValueFromObjectPath( features, presetPath ),\n\t];\n\n\tfor ( const presetByOrigin of orderedPresetsByOrigin ) {\n\t\tif ( presetByOrigin ) {\n\t\t\t// Preset origins ordered by priority.\n\t\t\tconst origins = [ 'custom', 'theme', 'default' ];\n\t\t\tfor ( const origin of origins ) {\n\t\t\t\tconst presets = presetByOrigin[ origin ];\n\t\t\t\tif ( presets ) {\n\t\t\t\t\tconst presetObject = presets.find(\n\t\t\t\t\t\t( preset ) =>\n\t\t\t\t\t\t\tpreset[ presetProperty ] === presetValueValue\n\t\t\t\t\t);\n\t\t\t\t\tif ( presetObject ) {\n\t\t\t\t\t\tif ( presetProperty === 'slug' ) {\n\t\t\t\t\t\t\treturn presetObject;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// If there is a highest priority preset with the same slug but different value the preset we found was overwritten and should be ignored.\n\t\t\t\t\t\tconst highestPresetObjectWithSameSlug = findInPresetsBy(\n\t\t\t\t\t\t\tfeatures,\n\t\t\t\t\t\t\tblockName,\n\t\t\t\t\t\t\tpresetPath,\n\t\t\t\t\t\t\t'slug',\n\t\t\t\t\t\t\tpresetObject.slug\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\thighestPresetObjectWithSameSlug[\n\t\t\t\t\t\t\t\tpresetProperty\n\t\t\t\t\t\t\t] === presetObject[ presetProperty ]\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treturn presetObject;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport function getPresetVariableFromValue(\n\tfeatures,\n\tblockName,\n\tvariableStylePath,\n\tpresetPropertyValue\n) {\n\tif ( ! presetPropertyValue ) {\n\t\treturn presetPropertyValue;\n\t}\n\n\tconst cssVarInfix = STYLE_PATH_TO_CSS_VAR_INFIX[ variableStylePath ];\n\n\tconst metadata = PRESET_METADATA.find(\n\t\t( data ) => data.cssVarInfix === cssVarInfix\n\t);\n\n\tif ( ! metadata ) {\n\t\t// The property doesn't have preset data\n\t\t// so the value should be returned as it is.\n\t\treturn presetPropertyValue;\n\t}\n\tconst { valueKey, path } = metadata;\n\n\tconst presetObject = findInPresetsBy(\n\t\tfeatures,\n\t\tblockName,\n\t\tpath,\n\t\tvalueKey,\n\t\tpresetPropertyValue\n\t);\n\n\tif ( ! presetObject ) {\n\t\t// Value wasn't found in the presets,\n\t\t// so it must be a custom value.\n\t\treturn presetPropertyValue;\n\t}\n\n\treturn `var:preset|${ cssVarInfix }|${ presetObject.slug }`;\n}\n\nfunction getValueFromPresetVariable(\n\tfeatures,\n\tblockName,\n\tvariable,\n\t[ presetType, slug ]\n) {\n\tconst metadata = PRESET_METADATA.find(\n\t\t( data ) => data.cssVarInfix === presetType\n\t);\n\tif ( ! metadata ) {\n\t\treturn variable;\n\t}\n\n\tconst presetObject = findInPresetsBy(\n\t\tfeatures.settings,\n\t\tblockName,\n\t\tmetadata.path,\n\t\t'slug',\n\t\tslug\n\t);\n\n\tif ( presetObject ) {\n\t\tconst { valueKey } = metadata;\n\t\tconst result = presetObject[ valueKey ];\n\t\treturn getValueFromVariable( features, blockName, result );\n\t}\n\n\treturn variable;\n}\n\nfunction getValueFromCustomVariable( features, blockName, variable, path ) {\n\tconst result =\n\t\tgetValueFromObjectPath( features.settings, [\n\t\t\t'blocks',\n\t\t\tblockName,\n\t\t\t'custom',\n\t\t\t...path,\n\t\t] ) ??\n\t\tgetValueFromObjectPath( features.settings, [ 'custom', ...path ] );\n\tif ( ! result ) {\n\t\treturn variable;\n\t}\n\t// A variable may reference another variable so we need recursion until we find the value.\n\treturn getValueFromVariable( features, blockName, result );\n}\n\n/**\n * Attempts to fetch the value of a theme.json CSS variable.\n *\n * @param {Object} features GlobalStylesContext config, e.g., user, base or merged. Represents the theme.json tree.\n * @param {string} blockName The name of a block as represented in the styles property. E.g., 'root' for root-level, and 'core/${blockName}' for blocks.\n * @param {string|*} variable An incoming style value. A CSS var value is expected, but it could be any value.\n * @return {string|*|{ref}} The value of the CSS var, if found. If not found, the passed variable argument.\n */\nexport function getValueFromVariable( features, blockName, variable ) {\n\tif ( ! variable || typeof variable !== 'string' ) {\n\t\tif ( variable?.ref && typeof variable?.ref === 'string' ) {\n\t\t\tconst refPath = variable.ref.split( '.' );\n\t\t\tvariable = getValueFromObjectPath( features, refPath );\n\t\t\t// Presence of another ref indicates a reference to another dynamic value.\n\t\t\t// Pointing to another dynamic value is not supported.\n\t\t\tif ( ! variable || !! variable?.ref ) {\n\t\t\t\treturn variable;\n\t\t\t}\n\t\t} else {\n\t\t\treturn variable;\n\t\t}\n\t}\n\tconst USER_VALUE_PREFIX = 'var:';\n\tconst THEME_VALUE_PREFIX = 'var(--wp--';\n\tconst THEME_VALUE_SUFFIX = ')';\n\n\tlet parsedVar;\n\n\tif ( variable.startsWith( USER_VALUE_PREFIX ) ) {\n\t\tparsedVar = variable.slice( USER_VALUE_PREFIX.length ).split( '|' );\n\t} else if (\n\t\tvariable.startsWith( THEME_VALUE_PREFIX ) &&\n\t\tvariable.endsWith( THEME_VALUE_SUFFIX )\n\t) {\n\t\tparsedVar = variable\n\t\t\t.slice( THEME_VALUE_PREFIX.length, -THEME_VALUE_SUFFIX.length )\n\t\t\t.split( '--' );\n\t} else {\n\t\t// We don't know how to parse the value: either is raw of uses complex CSS such as `calc(1px * var(--wp--variable) )`\n\t\treturn variable;\n\t}\n\n\tconst [ type, ...path ] = parsedVar;\n\tif ( type === 'preset' ) {\n\t\treturn getValueFromPresetVariable(\n\t\t\tfeatures,\n\t\t\tblockName,\n\t\t\tvariable,\n\t\t\tpath\n\t\t);\n\t}\n\tif ( type === 'custom' ) {\n\t\treturn getValueFromCustomVariable(\n\t\t\tfeatures,\n\t\t\tblockName,\n\t\t\tvariable,\n\t\t\tpath\n\t\t);\n\t}\n\treturn variable;\n}\n\n/**\n * Function that scopes a selector with another one. This works a bit like\n * SCSS nesting except the `&` operator isn't supported.\n *\n * @example\n * ```js\n * const scope = '.a, .b .c';\n * const selector = '> .x, .y';\n * const merged = scopeSelector( scope, selector );\n * // merged is '.a > .x, .a .y, .b .c > .x, .b .c .y'\n * ```\n *\n * @param {string} scope Selector to scope to.\n * @param {string} selector Original selector.\n *\n * @return {string} Scoped selector.\n */\nexport function scopeSelector( scope, selector ) {\n\tconst scopes = scope.split( ',' );\n\tconst selectors = selector.split( ',' );\n\n\tconst selectorsScoped = [];\n\tscopes.forEach( ( outer ) => {\n\t\tselectors.forEach( ( inner ) => {\n\t\t\tselectorsScoped.push( `${ outer.trim() } ${ inner.trim() }` );\n\t\t} );\n\t} );\n\n\treturn selectorsScoped.join( ', ' );\n}\n\n/**\n * Compares global style variations according to their styles and settings properties.\n *\n * @example\n * ```js\n * const globalStyles = { styles: { typography: { fontSize: '10px' } }, settings: {} };\n * const variation = { styles: { typography: { fontSize: '10000px' } }, settings: {} };\n * const isEqual = areGlobalStyleConfigsEqual( globalStyles, variation );\n * // false\n * ```\n *\n * @param {Object} original A global styles object.\n * @param {Object} variation A global styles object.\n *\n * @return {boolean} Whether `original` and `variation` match.\n */\nexport function areGlobalStyleConfigsEqual( original, variation ) {\n\tif ( typeof original !== 'object' || typeof variation !== 'object' ) {\n\t\treturn original === variation;\n\t}\n\treturn (\n\t\tfastDeepEqual( original?.styles, variation?.styles ) &&\n\t\tfastDeepEqual( original?.settings, variation?.settings )\n\t);\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,OAAOA,aAAa,MAAM,qBAAqB;;AAE/C;AACA;AACA;AACA,SACCC,0BAA0B,EAC1BC,qCAAqC,QAC/B,oBAAoB;AAC3B,SAASC,sBAAsB,QAAQ,oBAAoB;;AAE3D;AACA,OAAO,MAAMC,eAAe,GAAG,MAAM;AACrC,OAAO,MAAMC,mBAAmB,GAAG,MAAM;AACzC,OAAO,MAAMC,mBAAmB,GAAG,CAClC,YAAY,EACZ,iBAAiB,EACjB,OAAO,EACP,WAAW,EACX,cAAc,EACd,aAAa,EACb,cAAc,EACd,YAAY,EACZ,UAAU,EACV,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,SAAS,CACT;AAED,OAAO,MAAMC,eAAe,GAAG,CAC9B;EACCC,IAAI,EAAE,CAAE,OAAO,EAAE,SAAS,CAAE;EAC5BC,QAAQ,EAAE,OAAO;EACjBC,WAAW,EAAE,OAAO;EACpBC,OAAO,EAAE,CACR;IAAEC,WAAW,EAAE,OAAO;IAAEC,YAAY,EAAE;EAAQ,CAAC,EAC/C;IACCD,WAAW,EAAE,kBAAkB;IAC/BC,YAAY,EAAE;EACf,CAAC,EACD;IACCD,WAAW,EAAE,cAAc;IAC3BC,YAAY,EAAE;EACf,CAAC;AAEH,CAAC,EACD;EACCL,IAAI,EAAE,CAAE,OAAO,EAAE,WAAW,CAAE;EAC9BC,QAAQ,EAAE,UAAU;EACpBC,WAAW,EAAE,UAAU;EACvBC,OAAO,EAAE,CACR;IACCC,WAAW,EAAE,qBAAqB;IAClCC,YAAY,EAAE;EACf,CAAC;AAEH,CAAC,EACD;EACCL,IAAI,EAAE,CAAE,OAAO,EAAE,SAAS,CAAE;EAC5BC,QAAQ,EAAE,QAAQ;EAClBC,WAAW,EAAE,SAAS;EACtBI,SAAS,EAAEA,CAAE;IAAEC;EAAK,CAAC,KAAO,qBAAqBA,IAAM,KAAI;EAC3DJ,OAAO,EAAE;AACV,CAAC,EACD;EACCH,IAAI,EAAE,CAAE,QAAQ,EAAE,SAAS,CAAE;EAC7BC,QAAQ,EAAE,QAAQ;EAClBC,WAAW,EAAE,QAAQ;EACrBC,OAAO,EAAE;AACV,CAAC,EACD;EACCH,IAAI,EAAE,CAAE,YAAY,EAAE,WAAW,CAAE;EACnCM,SAAS,EAAEA,CAAEE,MAAM,EAAEC,QAAQ,KAC5BhB,0BAA0B,CACzBe,MAAM,EACNd,qCAAqC,CAAEe,QAAS,CACjD,CAAC;EACFR,QAAQ,EAAE,MAAM;EAChBC,WAAW,EAAE,WAAW;EACxBC,OAAO,EAAE,CAAE;IAAEC,WAAW,EAAE,WAAW;IAAEC,YAAY,EAAE;EAAY,CAAC;AACnE,CAAC,EACD;EACCL,IAAI,EAAE,CAAE,YAAY,EAAE,cAAc,CAAE;EACtCC,QAAQ,EAAE,YAAY;EACtBC,WAAW,EAAE,aAAa;EAC1BC,OAAO,EAAE,CACR;IAAEC,WAAW,EAAE,aAAa;IAAEC,YAAY,EAAE;EAAc,CAAC;AAE7D,CAAC,EACD;EACCL,IAAI,EAAE,CAAE,SAAS,EAAE,cAAc,CAAE;EACnCC,QAAQ,EAAE,MAAM;EAChBC,WAAW,EAAE,SAAS;EACtBI,SAAS,EAAEA,CAAE;IAAEI;EAAK,CAAC,KAAMA,IAAI;EAC/BP,OAAO,EAAE;AACV,CAAC,CACD;AAED,OAAO,MAAMQ,2BAA2B,GAAG;EAC1C,kBAAkB,EAAE,OAAO;EAC3B,YAAY,EAAE,OAAO;EACrB,gBAAgB,EAAE,SAAS;EAC3B,0BAA0B,EAAE,OAAO;EACnC,iCAAiC,EAAE,OAAO;EAC1C,qCAAqC,EAAE,aAAa;EACpD,mCAAmC,EAAE,WAAW;EAChD,4BAA4B,EAAE,OAAO;EACrC,kCAAkC,EAAE,OAAO;EAC3C,6BAA6B,EAAE,OAAO;EACtC,uCAAuC,EAAE,aAAa;EACtD,qCAAqC,EAAE,WAAW;EAClD,wBAAwB,EAAE,OAAO;EACjC,mCAAmC,EAAE,OAAO;EAC5C,wCAAwC,EAAE,aAAa;EACvD,2BAA2B,EAAE,UAAU;EACvC,iCAAiC,EAAE,UAAU;EAC7C,mBAAmB,EAAE,OAAO;EAC5B,8BAA8B,EAAE,OAAO;EACvC,mCAAmC,EAAE,aAAa;EAClD,4BAA4B,EAAE,UAAU;EACxC,mBAAmB,EAAE,OAAO;EAC5B,8BAA8B,EAAE,OAAO;EACvC,mCAAmC,EAAE,aAAa;EAClD,4BAA4B,EAAE,UAAU;EACxC,mBAAmB,EAAE,OAAO;EAC5B,8BAA8B,EAAE,OAAO;EACvC,mCAAmC,EAAE,aAAa;EAClD,4BAA4B,EAAE,UAAU;EACxC,mBAAmB,EAAE,OAAO;EAC5B,8BAA8B,EAAE,OAAO;EACvC,mCAAmC,EAAE,aAAa;EAClD,4BAA4B,EAAE,UAAU;EACxC,mBAAmB,EAAE,OAAO;EAC5B,8BAA8B,EAAE,OAAO;EACvC,mCAAmC,EAAE,aAAa;EAClD,4BAA4B,EAAE,UAAU;EACxC,mBAAmB,EAAE,OAAO;EAC5B,8BAA8B,EAAE,OAAO;EACvC,mCAAmC,EAAE,aAAa;EAClD,4BAA4B,EAAE,UAAU;EACxC,gBAAgB,EAAE,UAAU;EAC5BC,MAAM,EAAE,QAAQ;EAChB,qBAAqB,EAAE,WAAW;EAClC,uBAAuB,EAAE;AAC1B,CAAC;;AAED;AACA,OAAO,MAAMC,oCAAoC,GAAG;EACnD,kBAAkB,EAAE,iBAAiB;EACrC,YAAY,EAAE,WAAW;EACzB,gBAAgB,EAAE,UAAU;EAC5B,qBAAqB,EAAE,UAAU;EACjC,uBAAuB,EAAE;AAC1B,CAAC;AAED,SAASC,eAAeA,CACvBC,QAAQ,EACRC,SAAS,EACTC,UAAU,EACVC,cAAc,EACdC,gBAAgB,EACf;EACD;EACA,MAAMC,sBAAsB,GAAG,CAC9BzB,sBAAsB,CAAEoB,QAAQ,EAAE,CACjC,QAAQ,EACRC,SAAS,EACT,GAAGC,UAAU,CACZ,CAAC,EACHtB,sBAAsB,CAAEoB,QAAQ,EAAEE,UAAW,CAAC,CAC9C;EAED,KAAM,MAAMI,cAAc,IAAID,sBAAsB,EAAG;IACtD,IAAKC,cAAc,EAAG;MACrB;MACA,MAAMC,OAAO,GAAG,CAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAE;MAChD,KAAM,MAAMC,MAAM,IAAID,OAAO,EAAG;QAC/B,MAAME,OAAO,GAAGH,cAAc,CAAEE,MAAM,CAAE;QACxC,IAAKC,OAAO,EAAG;UACd,MAAMC,YAAY,GAAGD,OAAO,CAACE,IAAI,CAC9BlB,MAAM,IACPA,MAAM,CAAEU,cAAc,CAAE,KAAKC,gBAC/B,CAAC;UACD,IAAKM,YAAY,EAAG;YACnB,IAAKP,cAAc,KAAK,MAAM,EAAG;cAChC,OAAOO,YAAY;YACpB;YACA;YACA,MAAME,+BAA+B,GAAGb,eAAe,CACtDC,QAAQ,EACRC,SAAS,EACTC,UAAU,EACV,MAAM,EACNQ,YAAY,CAAClB,IACd,CAAC;YACD,IACCoB,+BAA+B,CAC9BT,cAAc,CACd,KAAKO,YAAY,CAAEP,cAAc,CAAE,EACnC;cACD,OAAOO,YAAY;YACpB;YACA,OAAOG,SAAS;UACjB;QACD;MACD;IACD;EACD;AACD;AAEA,OAAO,SAASC,0BAA0BA,CACzCd,QAAQ,EACRC,SAAS,EACTc,iBAAiB,EACjBC,mBAAmB,EAClB;EACD,IAAK,CAAEA,mBAAmB,EAAG;IAC5B,OAAOA,mBAAmB;EAC3B;EAEA,MAAM7B,WAAW,GAAGS,2BAA2B,CAAEmB,iBAAiB,CAAE;EAEpE,MAAME,QAAQ,GAAGjC,eAAe,CAAC2B,IAAI,CAClCO,IAAI,IAAMA,IAAI,CAAC/B,WAAW,KAAKA,WAClC,CAAC;EAED,IAAK,CAAE8B,QAAQ,EAAG;IACjB;IACA;IACA,OAAOD,mBAAmB;EAC3B;EACA,MAAM;IAAE9B,QAAQ;IAAED;EAAK,CAAC,GAAGgC,QAAQ;EAEnC,MAAMP,YAAY,GAAGX,eAAe,CACnCC,QAAQ,EACRC,SAAS,EACThB,IAAI,EACJC,QAAQ,EACR8B,mBACD,CAAC;EAED,IAAK,CAAEN,YAAY,EAAG;IACrB;IACA;IACA,OAAOM,mBAAmB;EAC3B;EAEA,OAAQ,cAAc7B,WAAa,IAAIuB,YAAY,CAAClB,IAAM,EAAC;AAC5D;AAEA,SAAS2B,0BAA0BA,CAClCnB,QAAQ,EACRC,SAAS,EACTmB,QAAQ,EACR,CAAEC,UAAU,EAAE7B,IAAI,CAAE,EACnB;EACD,MAAMyB,QAAQ,GAAGjC,eAAe,CAAC2B,IAAI,CAClCO,IAAI,IAAMA,IAAI,CAAC/B,WAAW,KAAKkC,UAClC,CAAC;EACD,IAAK,CAAEJ,QAAQ,EAAG;IACjB,OAAOG,QAAQ;EAChB;EAEA,MAAMV,YAAY,GAAGX,eAAe,CACnCC,QAAQ,CAACN,QAAQ,EACjBO,SAAS,EACTgB,QAAQ,CAAChC,IAAI,EACb,MAAM,EACNO,IACD,CAAC;EAED,IAAKkB,YAAY,EAAG;IACnB,MAAM;MAAExB;IAAS,CAAC,GAAG+B,QAAQ;IAC7B,MAAMK,MAAM,GAAGZ,YAAY,CAAExB,QAAQ,CAAE;IACvC,OAAOqC,oBAAoB,CAAEvB,QAAQ,EAAEC,SAAS,EAAEqB,MAAO,CAAC;EAC3D;EAEA,OAAOF,QAAQ;AAChB;AAEA,SAASI,0BAA0BA,CAAExB,QAAQ,EAAEC,SAAS,EAAEmB,QAAQ,EAAEnC,IAAI,EAAG;EAAA,IAAAwC,qBAAA;EAC1E,MAAMH,MAAM,IAAAG,qBAAA,GACX7C,sBAAsB,CAAEoB,QAAQ,CAACN,QAAQ,EAAE,CAC1C,QAAQ,EACRO,SAAS,EACT,QAAQ,EACR,GAAGhB,IAAI,CACN,CAAC,cAAAwC,qBAAA,cAAAA,qBAAA,GACH7C,sBAAsB,CAAEoB,QAAQ,CAACN,QAAQ,EAAE,CAAE,QAAQ,EAAE,GAAGT,IAAI,CAAG,CAAC;EACnE,IAAK,CAAEqC,MAAM,EAAG;IACf,OAAOF,QAAQ;EAChB;EACA;EACA,OAAOG,oBAAoB,CAAEvB,QAAQ,EAAEC,SAAS,EAAEqB,MAAO,CAAC;AAC3D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,oBAAoBA,CAAEvB,QAAQ,EAAEC,SAAS,EAAEmB,QAAQ,EAAG;EACrE,IAAK,CAAEA,QAAQ,IAAI,OAAOA,QAAQ,KAAK,QAAQ,EAAG;IACjD,IAAKA,QAAQ,EAAEM,GAAG,IAAI,OAAON,QAAQ,EAAEM,GAAG,KAAK,QAAQ,EAAG;MACzD,MAAMC,OAAO,GAAGP,QAAQ,CAACM,GAAG,CAACE,KAAK,CAAE,GAAI,CAAC;MACzCR,QAAQ,GAAGxC,sBAAsB,CAAEoB,QAAQ,EAAE2B,OAAQ,CAAC;MACtD;MACA;MACA,IAAK,CAAEP,QAAQ,IAAI,CAAC,CAAEA,QAAQ,EAAEM,GAAG,EAAG;QACrC,OAAON,QAAQ;MAChB;IACD,CAAC,MAAM;MACN,OAAOA,QAAQ;IAChB;EACD;EACA,MAAMS,iBAAiB,GAAG,MAAM;EAChC,MAAMC,kBAAkB,GAAG,YAAY;EACvC,MAAMC,kBAAkB,GAAG,GAAG;EAE9B,IAAIC,SAAS;EAEb,IAAKZ,QAAQ,CAACa,UAAU,CAAEJ,iBAAkB,CAAC,EAAG;IAC/CG,SAAS,GAAGZ,QAAQ,CAACc,KAAK,CAAEL,iBAAiB,CAACM,MAAO,CAAC,CAACP,KAAK,CAAE,GAAI,CAAC;EACpE,CAAC,MAAM,IACNR,QAAQ,CAACa,UAAU,CAAEH,kBAAmB,CAAC,IACzCV,QAAQ,CAACgB,QAAQ,CAAEL,kBAAmB,CAAC,EACtC;IACDC,SAAS,GAAGZ,QAAQ,CAClBc,KAAK,CAAEJ,kBAAkB,CAACK,MAAM,EAAE,CAACJ,kBAAkB,CAACI,MAAO,CAAC,CAC9DP,KAAK,CAAE,IAAK,CAAC;EAChB,CAAC,MAAM;IACN;IACA,OAAOR,QAAQ;EAChB;EAEA,MAAM,CAAEiB,IAAI,EAAE,GAAGpD,IAAI,CAAE,GAAG+C,SAAS;EACnC,IAAKK,IAAI,KAAK,QAAQ,EAAG;IACxB,OAAOlB,0BAA0B,CAChCnB,QAAQ,EACRC,SAAS,EACTmB,QAAQ,EACRnC,IACD,CAAC;EACF;EACA,IAAKoD,IAAI,KAAK,QAAQ,EAAG;IACxB,OAAOb,0BAA0B,CAChCxB,QAAQ,EACRC,SAAS,EACTmB,QAAQ,EACRnC,IACD,CAAC;EACF;EACA,OAAOmC,QAAQ;AAChB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASkB,aAAaA,CAAEC,KAAK,EAAEC,QAAQ,EAAG;EAChD,MAAMC,MAAM,GAAGF,KAAK,CAACX,KAAK,CAAE,GAAI,CAAC;EACjC,MAAMc,SAAS,GAAGF,QAAQ,CAACZ,KAAK,CAAE,GAAI,CAAC;EAEvC,MAAMe,eAAe,GAAG,EAAE;EAC1BF,MAAM,CAACG,OAAO,CAAIC,KAAK,IAAM;IAC5BH,SAAS,CAACE,OAAO,CAAIE,KAAK,IAAM;MAC/BH,eAAe,CAACI,IAAI,CAAG,GAAGF,KAAK,CAACG,IAAI,CAAC,CAAG,IAAIF,KAAK,CAACE,IAAI,CAAC,CAAG,EAAE,CAAC;IAC9D,CAAE,CAAC;EACJ,CAAE,CAAC;EAEH,OAAOL,eAAe,CAACM,IAAI,CAAE,IAAK,CAAC;AACpC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,0BAA0BA,CAAEC,QAAQ,EAAEC,SAAS,EAAG;EACjE,IAAK,OAAOD,QAAQ,KAAK,QAAQ,IAAI,OAAOC,SAAS,KAAK,QAAQ,EAAG;IACpE,OAAOD,QAAQ,KAAKC,SAAS;EAC9B;EACA,OACC3E,aAAa,CAAE0E,QAAQ,EAAEE,MAAM,EAAED,SAAS,EAAEC,MAAO,CAAC,IACpD5E,aAAa,CAAE0E,QAAQ,EAAEzD,QAAQ,EAAE0D,SAAS,EAAE1D,QAAS,CAAC;AAE1D"}
1
+ {"version":3,"names":["fastDeepEqual","getTypographyFontSizeValue","getFluidTypographyOptionsFromSettings","getValueFromObjectPath","ROOT_BLOCK_NAME","ROOT_BLOCK_SELECTOR","ROOT_BLOCK_SUPPORTS","PRESET_METADATA","path","valueKey","cssVarInfix","classes","classSuffix","propertyName","valueFunc","slug","preset","settings","size","STYLE_PATH_TO_CSS_VAR_INFIX","shadow","STYLE_PATH_TO_PRESET_BLOCK_ATTRIBUTE","findInPresetsBy","features","blockName","presetPath","presetProperty","presetValueValue","orderedPresetsByOrigin","presetByOrigin","origins","origin","presets","presetObject","find","highestPresetObjectWithSameSlug","undefined","getPresetVariableFromValue","variableStylePath","presetPropertyValue","metadata","data","getValueFromPresetVariable","variable","presetType","result","getValueFromVariable","getValueFromCustomVariable","_getValueFromObjectPa","ref","refPath","split","USER_VALUE_PREFIX","THEME_VALUE_PREFIX","THEME_VALUE_SUFFIX","parsedVar","startsWith","slice","length","endsWith","type","scopeSelector","scope","selector","scopes","selectors","selectorsScoped","forEach","outer","inner","push","trim","join","appendToSelector","toAppend","includes","newSelectors","map","sel","areGlobalStyleConfigsEqual","original","variation","styles"],"sources":["@wordpress/block-editor/src/components/global-styles/utils.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport fastDeepEqual from 'fast-deep-equal/es6';\n\n/**\n * Internal dependencies\n */\nimport {\n\tgetTypographyFontSizeValue,\n\tgetFluidTypographyOptionsFromSettings,\n} from './typography-utils';\nimport { getValueFromObjectPath } from '../../utils/object';\n\n/* Supporting data. */\nexport const ROOT_BLOCK_NAME = 'root';\nexport const ROOT_BLOCK_SELECTOR = 'body';\nexport const ROOT_BLOCK_SUPPORTS = [\n\t'background',\n\t'backgroundColor',\n\t'color',\n\t'linkColor',\n\t'captionColor',\n\t'buttonColor',\n\t'headingColor',\n\t'fontFamily',\n\t'fontSize',\n\t'fontStyle',\n\t'fontWeight',\n\t'lineHeight',\n\t'textDecoration',\n\t'textTransform',\n\t'padding',\n];\n\nexport const PRESET_METADATA = [\n\t{\n\t\tpath: [ 'color', 'palette' ],\n\t\tvalueKey: 'color',\n\t\tcssVarInfix: 'color',\n\t\tclasses: [\n\t\t\t{ classSuffix: 'color', propertyName: 'color' },\n\t\t\t{\n\t\t\t\tclassSuffix: 'background-color',\n\t\t\t\tpropertyName: 'background-color',\n\t\t\t},\n\t\t\t{\n\t\t\t\tclassSuffix: 'border-color',\n\t\t\t\tpropertyName: 'border-color',\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tpath: [ 'color', 'gradients' ],\n\t\tvalueKey: 'gradient',\n\t\tcssVarInfix: 'gradient',\n\t\tclasses: [\n\t\t\t{\n\t\t\t\tclassSuffix: 'gradient-background',\n\t\t\t\tpropertyName: 'background',\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tpath: [ 'color', 'duotone' ],\n\t\tvalueKey: 'colors',\n\t\tcssVarInfix: 'duotone',\n\t\tvalueFunc: ( { slug } ) => `url( '#wp-duotone-${ slug }' )`,\n\t\tclasses: [],\n\t},\n\t{\n\t\tpath: [ 'shadow', 'presets' ],\n\t\tvalueKey: 'shadow',\n\t\tcssVarInfix: 'shadow',\n\t\tclasses: [],\n\t},\n\t{\n\t\tpath: [ 'typography', 'fontSizes' ],\n\t\tvalueFunc: ( preset, settings ) =>\n\t\t\tgetTypographyFontSizeValue(\n\t\t\t\tpreset,\n\t\t\t\tgetFluidTypographyOptionsFromSettings( settings )\n\t\t\t),\n\t\tvalueKey: 'size',\n\t\tcssVarInfix: 'font-size',\n\t\tclasses: [ { classSuffix: 'font-size', propertyName: 'font-size' } ],\n\t},\n\t{\n\t\tpath: [ 'typography', 'fontFamilies' ],\n\t\tvalueKey: 'fontFamily',\n\t\tcssVarInfix: 'font-family',\n\t\tclasses: [\n\t\t\t{ classSuffix: 'font-family', propertyName: 'font-family' },\n\t\t],\n\t},\n\t{\n\t\tpath: [ 'spacing', 'spacingSizes' ],\n\t\tvalueKey: 'size',\n\t\tcssVarInfix: 'spacing',\n\t\tvalueFunc: ( { size } ) => size,\n\t\tclasses: [],\n\t},\n];\n\nexport const STYLE_PATH_TO_CSS_VAR_INFIX = {\n\t'color.background': 'color',\n\t'color.text': 'color',\n\t'filter.duotone': 'duotone',\n\t'elements.link.color.text': 'color',\n\t'elements.link.:hover.color.text': 'color',\n\t'elements.link.typography.fontFamily': 'font-family',\n\t'elements.link.typography.fontSize': 'font-size',\n\t'elements.button.color.text': 'color',\n\t'elements.button.color.background': 'color',\n\t'elements.caption.color.text': 'color',\n\t'elements.button.typography.fontFamily': 'font-family',\n\t'elements.button.typography.fontSize': 'font-size',\n\t'elements.heading.color': 'color',\n\t'elements.heading.color.background': 'color',\n\t'elements.heading.typography.fontFamily': 'font-family',\n\t'elements.heading.gradient': 'gradient',\n\t'elements.heading.color.gradient': 'gradient',\n\t'elements.h1.color': 'color',\n\t'elements.h1.color.background': 'color',\n\t'elements.h1.typography.fontFamily': 'font-family',\n\t'elements.h1.color.gradient': 'gradient',\n\t'elements.h2.color': 'color',\n\t'elements.h2.color.background': 'color',\n\t'elements.h2.typography.fontFamily': 'font-family',\n\t'elements.h2.color.gradient': 'gradient',\n\t'elements.h3.color': 'color',\n\t'elements.h3.color.background': 'color',\n\t'elements.h3.typography.fontFamily': 'font-family',\n\t'elements.h3.color.gradient': 'gradient',\n\t'elements.h4.color': 'color',\n\t'elements.h4.color.background': 'color',\n\t'elements.h4.typography.fontFamily': 'font-family',\n\t'elements.h4.color.gradient': 'gradient',\n\t'elements.h5.color': 'color',\n\t'elements.h5.color.background': 'color',\n\t'elements.h5.typography.fontFamily': 'font-family',\n\t'elements.h5.color.gradient': 'gradient',\n\t'elements.h6.color': 'color',\n\t'elements.h6.color.background': 'color',\n\t'elements.h6.typography.fontFamily': 'font-family',\n\t'elements.h6.color.gradient': 'gradient',\n\t'color.gradient': 'gradient',\n\tshadow: 'shadow',\n\t'typography.fontSize': 'font-size',\n\t'typography.fontFamily': 'font-family',\n};\n\n// A static list of block attributes that store global style preset slugs.\nexport const STYLE_PATH_TO_PRESET_BLOCK_ATTRIBUTE = {\n\t'color.background': 'backgroundColor',\n\t'color.text': 'textColor',\n\t'color.gradient': 'gradient',\n\t'typography.fontSize': 'fontSize',\n\t'typography.fontFamily': 'fontFamily',\n};\n\nfunction findInPresetsBy(\n\tfeatures,\n\tblockName,\n\tpresetPath,\n\tpresetProperty,\n\tpresetValueValue\n) {\n\t// Block presets take priority above root level presets.\n\tconst orderedPresetsByOrigin = [\n\t\tgetValueFromObjectPath( features, [\n\t\t\t'blocks',\n\t\t\tblockName,\n\t\t\t...presetPath,\n\t\t] ),\n\t\tgetValueFromObjectPath( features, presetPath ),\n\t];\n\n\tfor ( const presetByOrigin of orderedPresetsByOrigin ) {\n\t\tif ( presetByOrigin ) {\n\t\t\t// Preset origins ordered by priority.\n\t\t\tconst origins = [ 'custom', 'theme', 'default' ];\n\t\t\tfor ( const origin of origins ) {\n\t\t\t\tconst presets = presetByOrigin[ origin ];\n\t\t\t\tif ( presets ) {\n\t\t\t\t\tconst presetObject = presets.find(\n\t\t\t\t\t\t( preset ) =>\n\t\t\t\t\t\t\tpreset[ presetProperty ] === presetValueValue\n\t\t\t\t\t);\n\t\t\t\t\tif ( presetObject ) {\n\t\t\t\t\t\tif ( presetProperty === 'slug' ) {\n\t\t\t\t\t\t\treturn presetObject;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// If there is a highest priority preset with the same slug but different value the preset we found was overwritten and should be ignored.\n\t\t\t\t\t\tconst highestPresetObjectWithSameSlug = findInPresetsBy(\n\t\t\t\t\t\t\tfeatures,\n\t\t\t\t\t\t\tblockName,\n\t\t\t\t\t\t\tpresetPath,\n\t\t\t\t\t\t\t'slug',\n\t\t\t\t\t\t\tpresetObject.slug\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\thighestPresetObjectWithSameSlug[\n\t\t\t\t\t\t\t\tpresetProperty\n\t\t\t\t\t\t\t] === presetObject[ presetProperty ]\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treturn presetObject;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport function getPresetVariableFromValue(\n\tfeatures,\n\tblockName,\n\tvariableStylePath,\n\tpresetPropertyValue\n) {\n\tif ( ! presetPropertyValue ) {\n\t\treturn presetPropertyValue;\n\t}\n\n\tconst cssVarInfix = STYLE_PATH_TO_CSS_VAR_INFIX[ variableStylePath ];\n\n\tconst metadata = PRESET_METADATA.find(\n\t\t( data ) => data.cssVarInfix === cssVarInfix\n\t);\n\n\tif ( ! metadata ) {\n\t\t// The property doesn't have preset data\n\t\t// so the value should be returned as it is.\n\t\treturn presetPropertyValue;\n\t}\n\tconst { valueKey, path } = metadata;\n\n\tconst presetObject = findInPresetsBy(\n\t\tfeatures,\n\t\tblockName,\n\t\tpath,\n\t\tvalueKey,\n\t\tpresetPropertyValue\n\t);\n\n\tif ( ! presetObject ) {\n\t\t// Value wasn't found in the presets,\n\t\t// so it must be a custom value.\n\t\treturn presetPropertyValue;\n\t}\n\n\treturn `var:preset|${ cssVarInfix }|${ presetObject.slug }`;\n}\n\nfunction getValueFromPresetVariable(\n\tfeatures,\n\tblockName,\n\tvariable,\n\t[ presetType, slug ]\n) {\n\tconst metadata = PRESET_METADATA.find(\n\t\t( data ) => data.cssVarInfix === presetType\n\t);\n\tif ( ! metadata ) {\n\t\treturn variable;\n\t}\n\n\tconst presetObject = findInPresetsBy(\n\t\tfeatures.settings,\n\t\tblockName,\n\t\tmetadata.path,\n\t\t'slug',\n\t\tslug\n\t);\n\n\tif ( presetObject ) {\n\t\tconst { valueKey } = metadata;\n\t\tconst result = presetObject[ valueKey ];\n\t\treturn getValueFromVariable( features, blockName, result );\n\t}\n\n\treturn variable;\n}\n\nfunction getValueFromCustomVariable( features, blockName, variable, path ) {\n\tconst result =\n\t\tgetValueFromObjectPath( features.settings, [\n\t\t\t'blocks',\n\t\t\tblockName,\n\t\t\t'custom',\n\t\t\t...path,\n\t\t] ) ??\n\t\tgetValueFromObjectPath( features.settings, [ 'custom', ...path ] );\n\tif ( ! result ) {\n\t\treturn variable;\n\t}\n\t// A variable may reference another variable so we need recursion until we find the value.\n\treturn getValueFromVariable( features, blockName, result );\n}\n\n/**\n * Attempts to fetch the value of a theme.json CSS variable.\n *\n * @param {Object} features GlobalStylesContext config, e.g., user, base or merged. Represents the theme.json tree.\n * @param {string} blockName The name of a block as represented in the styles property. E.g., 'root' for root-level, and 'core/${blockName}' for blocks.\n * @param {string|*} variable An incoming style value. A CSS var value is expected, but it could be any value.\n * @return {string|*|{ref}} The value of the CSS var, if found. If not found, the passed variable argument.\n */\nexport function getValueFromVariable( features, blockName, variable ) {\n\tif ( ! variable || typeof variable !== 'string' ) {\n\t\tif ( variable?.ref && typeof variable?.ref === 'string' ) {\n\t\t\tconst refPath = variable.ref.split( '.' );\n\t\t\tvariable = getValueFromObjectPath( features, refPath );\n\t\t\t// Presence of another ref indicates a reference to another dynamic value.\n\t\t\t// Pointing to another dynamic value is not supported.\n\t\t\tif ( ! variable || !! variable?.ref ) {\n\t\t\t\treturn variable;\n\t\t\t}\n\t\t} else {\n\t\t\treturn variable;\n\t\t}\n\t}\n\tconst USER_VALUE_PREFIX = 'var:';\n\tconst THEME_VALUE_PREFIX = 'var(--wp--';\n\tconst THEME_VALUE_SUFFIX = ')';\n\n\tlet parsedVar;\n\n\tif ( variable.startsWith( USER_VALUE_PREFIX ) ) {\n\t\tparsedVar = variable.slice( USER_VALUE_PREFIX.length ).split( '|' );\n\t} else if (\n\t\tvariable.startsWith( THEME_VALUE_PREFIX ) &&\n\t\tvariable.endsWith( THEME_VALUE_SUFFIX )\n\t) {\n\t\tparsedVar = variable\n\t\t\t.slice( THEME_VALUE_PREFIX.length, -THEME_VALUE_SUFFIX.length )\n\t\t\t.split( '--' );\n\t} else {\n\t\t// We don't know how to parse the value: either is raw of uses complex CSS such as `calc(1px * var(--wp--variable) )`\n\t\treturn variable;\n\t}\n\n\tconst [ type, ...path ] = parsedVar;\n\tif ( type === 'preset' ) {\n\t\treturn getValueFromPresetVariable(\n\t\t\tfeatures,\n\t\t\tblockName,\n\t\t\tvariable,\n\t\t\tpath\n\t\t);\n\t}\n\tif ( type === 'custom' ) {\n\t\treturn getValueFromCustomVariable(\n\t\t\tfeatures,\n\t\t\tblockName,\n\t\t\tvariable,\n\t\t\tpath\n\t\t);\n\t}\n\treturn variable;\n}\n\n/**\n * Function that scopes a selector with another one. This works a bit like\n * SCSS nesting except the `&` operator isn't supported.\n *\n * @example\n * ```js\n * const scope = '.a, .b .c';\n * const selector = '> .x, .y';\n * const merged = scopeSelector( scope, selector );\n * // merged is '.a > .x, .a .y, .b .c > .x, .b .c .y'\n * ```\n *\n * @param {string} scope Selector to scope to.\n * @param {string} selector Original selector.\n *\n * @return {string} Scoped selector.\n */\nexport function scopeSelector( scope, selector ) {\n\tconst scopes = scope.split( ',' );\n\tconst selectors = selector.split( ',' );\n\n\tconst selectorsScoped = [];\n\tscopes.forEach( ( outer ) => {\n\t\tselectors.forEach( ( inner ) => {\n\t\t\tselectorsScoped.push( `${ outer.trim() } ${ inner.trim() }` );\n\t\t} );\n\t} );\n\n\treturn selectorsScoped.join( ', ' );\n}\n\n/**\n * Appends a sub-selector to an existing one.\n *\n * Given the compounded `selector` \"h1, h2, h3\"\n * and the `toAppend` selector \".some-class\" the result will be\n * \"h1.some-class, h2.some-class, h3.some-class\".\n *\n * @param {string} selector Original selector.\n * @param {string} toAppend Selector to append.\n *\n * @return {string} The new selector.\n */\nexport function appendToSelector( selector, toAppend ) {\n\tif ( ! selector.includes( ',' ) ) {\n\t\treturn selector + toAppend;\n\t}\n\tconst selectors = selector.split( ',' );\n\tconst newSelectors = selectors.map( ( sel ) => sel + toAppend );\n\treturn newSelectors.join( ',' );\n}\n\n/**\n * Compares global style variations according to their styles and settings properties.\n *\n * @example\n * ```js\n * const globalStyles = { styles: { typography: { fontSize: '10px' } }, settings: {} };\n * const variation = { styles: { typography: { fontSize: '10000px' } }, settings: {} };\n * const isEqual = areGlobalStyleConfigsEqual( globalStyles, variation );\n * // false\n * ```\n *\n * @param {Object} original A global styles object.\n * @param {Object} variation A global styles object.\n *\n * @return {boolean} Whether `original` and `variation` match.\n */\nexport function areGlobalStyleConfigsEqual( original, variation ) {\n\tif ( typeof original !== 'object' || typeof variation !== 'object' ) {\n\t\treturn original === variation;\n\t}\n\treturn (\n\t\tfastDeepEqual( original?.styles, variation?.styles ) &&\n\t\tfastDeepEqual( original?.settings, variation?.settings )\n\t);\n}\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { createElement } from "@wordpress/element";
1
+ import { createElement, Fragment } from "@wordpress/element";
2
2
  /**
3
3
  * WordPress dependencies
4
4
  */
@@ -90,14 +90,14 @@ function PatternList({
90
90
  }, createElement(PatternsListHeader, {
91
91
  filterValue: searchValue,
92
92
  filteredBlockPatternsLength: filteredBlockPatterns.length
93
- }), createElement(InserterListbox, null, hasItems && createElement(BlockPatternsList, {
93
+ }), createElement(InserterListbox, null, hasItems && createElement(Fragment, null, createElement(BlockPatternsList, {
94
94
  shownPatterns: pagingProps.categoryPatternsAsyncList,
95
95
  blockPatterns: pagingProps.categoryPatterns,
96
96
  onClickPattern: onClickPattern,
97
97
  isDraggable: false
98
- }), pagingProps.numPages > 1 && createElement(BlockPatternsPaging, {
98
+ }), createElement(BlockPatternsPaging, {
99
99
  ...pagingProps
100
- })));
100
+ }))));
101
101
  }
102
102
  export default PatternList;
103
103
  //# sourceMappingURL=patterns-list.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["useMemo","useEffect","useRef","useState","_n","sprintf","useDebounce","__experimentalHeading","Heading","speak","BlockPatternsList","useInsertionPoint","usePatternsState","InserterListbox","searchItems","BlockPatternsPaging","usePatternsPaging","allPatternsCategory","myPatternsCategory","PatternsListHeader","filterValue","filteredBlockPatternsLength","createElement","level","lineHeight","className","PatternList","searchValue","selectedCategory","patternCategories","container","debouncedSpeak","destinationRootClientId","onInsertBlocks","shouldFocusBlock","patterns","onClickPattern","registeredPatternCategories","map","patternCategory","name","filteredBlockPatterns","filteredPatterns","filter","pattern","id","hasKnownCategory","categories","some","category","includes","length","count","resultsFoundMessage","pagingProps","previousSearchValue","setPreviousSearchValue","changePage","hasItems","ref","shownPatterns","categoryPatternsAsyncList","blockPatterns","categoryPatterns","isDraggable","numPages"],"sources":["@wordpress/block-editor/src/components/inserter/block-patterns-explorer/patterns-list.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useMemo, useEffect, useRef, useState } from '@wordpress/element';\nimport { _n, sprintf } from '@wordpress/i18n';\nimport { useDebounce } from '@wordpress/compose';\nimport { __experimentalHeading as Heading } from '@wordpress/components';\nimport { speak } from '@wordpress/a11y';\n\n/**\n * Internal dependencies\n */\nimport BlockPatternsList from '../../block-patterns-list';\nimport useInsertionPoint from '../hooks/use-insertion-point';\nimport usePatternsState from '../hooks/use-patterns-state';\nimport InserterListbox from '../../inserter-listbox';\nimport { searchItems } from '../search-items';\nimport BlockPatternsPaging from '../../block-patterns-paging';\nimport usePatternsPaging from '../hooks/use-patterns-paging';\nimport { allPatternsCategory, myPatternsCategory } from '../block-patterns-tab';\n\nfunction PatternsListHeader( { filterValue, filteredBlockPatternsLength } ) {\n\tif ( ! filterValue ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<Heading\n\t\t\tlevel={ 2 }\n\t\t\tlineHeight={ '48px' }\n\t\t\tclassName=\"block-editor-block-patterns-explorer__search-results-count\"\n\t\t>\n\t\t\t{ sprintf(\n\t\t\t\t/* translators: %d: number of patterns. */\n\t\t\t\t_n(\n\t\t\t\t\t'%d pattern found',\n\t\t\t\t\t'%d patterns found',\n\t\t\t\t\tfilteredBlockPatternsLength\n\t\t\t\t),\n\t\t\t\tfilteredBlockPatternsLength\n\t\t\t) }\n\t\t</Heading>\n\t);\n}\n\nfunction PatternList( { searchValue, selectedCategory, patternCategories } ) {\n\tconst container = useRef();\n\tconst debouncedSpeak = useDebounce( speak, 500 );\n\tconst [ destinationRootClientId, onInsertBlocks ] = useInsertionPoint( {\n\t\tshouldFocusBlock: true,\n\t} );\n\tconst [ patterns, , onClickPattern ] = usePatternsState(\n\t\tonInsertBlocks,\n\t\tdestinationRootClientId\n\t);\n\n\tconst registeredPatternCategories = useMemo(\n\t\t() =>\n\t\t\tpatternCategories.map(\n\t\t\t\t( patternCategory ) => patternCategory.name\n\t\t\t),\n\t\t[ patternCategories ]\n\t);\n\n\tconst filteredBlockPatterns = useMemo( () => {\n\t\tconst filteredPatterns = patterns.filter( ( pattern ) => {\n\t\t\tif ( selectedCategory === allPatternsCategory.name ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif ( selectedCategory === myPatternsCategory.name && pattern.id ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif ( selectedCategory === 'uncategorized' ) {\n\t\t\t\tconst hasKnownCategory = pattern.categories.some(\n\t\t\t\t\t( category ) =>\n\t\t\t\t\t\tregisteredPatternCategories.includes( category )\n\t\t\t\t);\n\n\t\t\t\treturn ! pattern.categories?.length || ! hasKnownCategory;\n\t\t\t}\n\n\t\t\treturn pattern.categories?.includes( selectedCategory );\n\t\t} );\n\n\t\tif ( ! searchValue ) {\n\t\t\treturn filteredPatterns;\n\t\t}\n\n\t\treturn searchItems( filteredPatterns, searchValue );\n\t}, [\n\t\tsearchValue,\n\t\tpatterns,\n\t\tselectedCategory,\n\t\tregisteredPatternCategories,\n\t] );\n\n\t// Announce search results on change.\n\tuseEffect( () => {\n\t\tif ( ! searchValue ) {\n\t\t\treturn;\n\t\t}\n\t\tconst count = filteredBlockPatterns.length;\n\t\tconst resultsFoundMessage = sprintf(\n\t\t\t/* translators: %d: number of results. */\n\t\t\t_n( '%d result found.', '%d results found.', count ),\n\t\t\tcount\n\t\t);\n\t\tdebouncedSpeak( resultsFoundMessage );\n\t}, [ searchValue, debouncedSpeak, filteredBlockPatterns.length ] );\n\n\tconst pagingProps = usePatternsPaging(\n\t\tfilteredBlockPatterns,\n\t\tselectedCategory,\n\t\tcontainer\n\t);\n\n\t// Reset page when search value changes.\n\tconst [ previousSearchValue, setPreviousSearchValue ] =\n\t\tuseState( searchValue );\n\tif ( searchValue !== previousSearchValue ) {\n\t\tsetPreviousSearchValue( searchValue );\n\t\tpagingProps.changePage( 1 );\n\t}\n\n\tconst hasItems = !! filteredBlockPatterns?.length;\n\treturn (\n\t\t<div\n\t\t\tclassName=\"block-editor-block-patterns-explorer__list\"\n\t\t\tref={ container }\n\t\t>\n\t\t\t<PatternsListHeader\n\t\t\t\tfilterValue={ searchValue }\n\t\t\t\tfilteredBlockPatternsLength={ filteredBlockPatterns.length }\n\t\t\t/>\n\n\t\t\t<InserterListbox>\n\t\t\t\t{ hasItems && (\n\t\t\t\t\t<BlockPatternsList\n\t\t\t\t\t\tshownPatterns={ pagingProps.categoryPatternsAsyncList }\n\t\t\t\t\t\tblockPatterns={ pagingProps.categoryPatterns }\n\t\t\t\t\t\tonClickPattern={ onClickPattern }\n\t\t\t\t\t\tisDraggable={ false }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ pagingProps.numPages > 1 && (\n\t\t\t\t\t<BlockPatternsPaging { ...pagingProps } />\n\t\t\t\t) }\n\t\t\t</InserterListbox>\n\t\t</div>\n\t);\n}\n\nexport default PatternList;\n"],"mappings":"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"}
1
+ {"version":3,"names":["useMemo","useEffect","useRef","useState","_n","sprintf","useDebounce","__experimentalHeading","Heading","speak","BlockPatternsList","useInsertionPoint","usePatternsState","InserterListbox","searchItems","BlockPatternsPaging","usePatternsPaging","allPatternsCategory","myPatternsCategory","PatternsListHeader","filterValue","filteredBlockPatternsLength","createElement","level","lineHeight","className","PatternList","searchValue","selectedCategory","patternCategories","container","debouncedSpeak","destinationRootClientId","onInsertBlocks","shouldFocusBlock","patterns","onClickPattern","registeredPatternCategories","map","patternCategory","name","filteredBlockPatterns","filteredPatterns","filter","pattern","id","hasKnownCategory","categories","some","category","includes","length","count","resultsFoundMessage","pagingProps","previousSearchValue","setPreviousSearchValue","changePage","hasItems","ref","Fragment","shownPatterns","categoryPatternsAsyncList","blockPatterns","categoryPatterns","isDraggable"],"sources":["@wordpress/block-editor/src/components/inserter/block-patterns-explorer/patterns-list.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useMemo, useEffect, useRef, useState } from '@wordpress/element';\nimport { _n, sprintf } from '@wordpress/i18n';\nimport { useDebounce } from '@wordpress/compose';\nimport { __experimentalHeading as Heading } from '@wordpress/components';\nimport { speak } from '@wordpress/a11y';\n\n/**\n * Internal dependencies\n */\nimport BlockPatternsList from '../../block-patterns-list';\nimport useInsertionPoint from '../hooks/use-insertion-point';\nimport usePatternsState from '../hooks/use-patterns-state';\nimport InserterListbox from '../../inserter-listbox';\nimport { searchItems } from '../search-items';\nimport BlockPatternsPaging from '../../block-patterns-paging';\nimport usePatternsPaging from '../hooks/use-patterns-paging';\nimport { allPatternsCategory, myPatternsCategory } from '../block-patterns-tab';\n\nfunction PatternsListHeader( { filterValue, filteredBlockPatternsLength } ) {\n\tif ( ! filterValue ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<Heading\n\t\t\tlevel={ 2 }\n\t\t\tlineHeight={ '48px' }\n\t\t\tclassName=\"block-editor-block-patterns-explorer__search-results-count\"\n\t\t>\n\t\t\t{ sprintf(\n\t\t\t\t/* translators: %d: number of patterns. */\n\t\t\t\t_n(\n\t\t\t\t\t'%d pattern found',\n\t\t\t\t\t'%d patterns found',\n\t\t\t\t\tfilteredBlockPatternsLength\n\t\t\t\t),\n\t\t\t\tfilteredBlockPatternsLength\n\t\t\t) }\n\t\t</Heading>\n\t);\n}\n\nfunction PatternList( { searchValue, selectedCategory, patternCategories } ) {\n\tconst container = useRef();\n\tconst debouncedSpeak = useDebounce( speak, 500 );\n\tconst [ destinationRootClientId, onInsertBlocks ] = useInsertionPoint( {\n\t\tshouldFocusBlock: true,\n\t} );\n\tconst [ patterns, , onClickPattern ] = usePatternsState(\n\t\tonInsertBlocks,\n\t\tdestinationRootClientId\n\t);\n\n\tconst registeredPatternCategories = useMemo(\n\t\t() =>\n\t\t\tpatternCategories.map(\n\t\t\t\t( patternCategory ) => patternCategory.name\n\t\t\t),\n\t\t[ patternCategories ]\n\t);\n\n\tconst filteredBlockPatterns = useMemo( () => {\n\t\tconst filteredPatterns = patterns.filter( ( pattern ) => {\n\t\t\tif ( selectedCategory === allPatternsCategory.name ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif ( selectedCategory === myPatternsCategory.name && pattern.id ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif ( selectedCategory === 'uncategorized' ) {\n\t\t\t\tconst hasKnownCategory = pattern.categories.some(\n\t\t\t\t\t( category ) =>\n\t\t\t\t\t\tregisteredPatternCategories.includes( category )\n\t\t\t\t);\n\n\t\t\t\treturn ! pattern.categories?.length || ! hasKnownCategory;\n\t\t\t}\n\n\t\t\treturn pattern.categories?.includes( selectedCategory );\n\t\t} );\n\n\t\tif ( ! searchValue ) {\n\t\t\treturn filteredPatterns;\n\t\t}\n\n\t\treturn searchItems( filteredPatterns, searchValue );\n\t}, [\n\t\tsearchValue,\n\t\tpatterns,\n\t\tselectedCategory,\n\t\tregisteredPatternCategories,\n\t] );\n\n\t// Announce search results on change.\n\tuseEffect( () => {\n\t\tif ( ! searchValue ) {\n\t\t\treturn;\n\t\t}\n\t\tconst count = filteredBlockPatterns.length;\n\t\tconst resultsFoundMessage = sprintf(\n\t\t\t/* translators: %d: number of results. */\n\t\t\t_n( '%d result found.', '%d results found.', count ),\n\t\t\tcount\n\t\t);\n\t\tdebouncedSpeak( resultsFoundMessage );\n\t}, [ searchValue, debouncedSpeak, filteredBlockPatterns.length ] );\n\n\tconst pagingProps = usePatternsPaging(\n\t\tfilteredBlockPatterns,\n\t\tselectedCategory,\n\t\tcontainer\n\t);\n\n\t// Reset page when search value changes.\n\tconst [ previousSearchValue, setPreviousSearchValue ] =\n\t\tuseState( searchValue );\n\tif ( searchValue !== previousSearchValue ) {\n\t\tsetPreviousSearchValue( searchValue );\n\t\tpagingProps.changePage( 1 );\n\t}\n\n\tconst hasItems = !! filteredBlockPatterns?.length;\n\treturn (\n\t\t<div\n\t\t\tclassName=\"block-editor-block-patterns-explorer__list\"\n\t\t\tref={ container }\n\t\t>\n\t\t\t<PatternsListHeader\n\t\t\t\tfilterValue={ searchValue }\n\t\t\t\tfilteredBlockPatternsLength={ filteredBlockPatterns.length }\n\t\t\t/>\n\n\t\t\t<InserterListbox>\n\t\t\t\t{ hasItems && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<BlockPatternsList\n\t\t\t\t\t\t\tshownPatterns={\n\t\t\t\t\t\t\t\tpagingProps.categoryPatternsAsyncList\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tblockPatterns={ pagingProps.categoryPatterns }\n\t\t\t\t\t\t\tonClickPattern={ onClickPattern }\n\t\t\t\t\t\t\tisDraggable={ false }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<BlockPatternsPaging { ...pagingProps } />\n\t\t\t\t\t</>\n\t\t\t\t) }\n\t\t\t</InserterListbox>\n\t\t</div>\n\t);\n}\n\nexport default PatternList;\n"],"mappings":"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"}
@@ -22,7 +22,7 @@ import { BlockPatternsSyncFilter, SYNC_TYPES, PATTERN_TYPES } from './block-patt
22
22
  const noop = () => {};
23
23
  export const allPatternsCategory = {
24
24
  name: 'allPatterns',
25
- label: __('All Patterns')
25
+ label: __('All patterns')
26
26
  };
27
27
  export const myPatternsCategory = {
28
28
  name: 'myPatterns',
@@ -1 +1 @@
1
- {"version":3,"names":["useMemo","useState","useCallback","useRef","useEffect","_x","__","_n","isRTL","sprintf","useViewportMatch","__experimentalItemGroup","ItemGroup","__experimentalItem","Item","__experimentalHStack","HStack","__experimentalVStack","VStack","__experimentalHeading","Heading","__experimentalText","Text","FlexBlock","Button","Icon","chevronRight","chevronLeft","focus","speak","usePatternsState","BlockPatternList","PatternsExplorerModal","MobileTabNavigation","usePatternsPaging","BlockPatternsSyncFilter","SYNC_TYPES","PATTERN_TYPES","noop","allPatternsCategory","name","label","myPatternsCategory","isPatternFiltered","pattern","sourceFilter","syncFilter","isUserPattern","startsWith","isDirectoryPattern","source","theme","directory","user","id","full","syncStatus","unsynced","usePatternsCategories","rootClientId","patterns","allCategories","undefined","filteredPatterns","filter","hasRegisteredCategory","categories","length","some","cat","category","populatedCategories","includes","sort","a","b","localeCompare","find","push","unshift","BlockPatternsCategoryDialog","onInsert","onHover","showTitlesAsTooltip","patternFilter","container","timeout","setTimeout","firstTabbable","tabbable","current","clearTimeout","createElement","ref","className","BlockPatternsCategoryPanel","key","allPatterns","onClickPattern","patternSyncFilter","setPatternSyncFilter","patternSourceFilter","setPatternSourceFilter","availableCategories","scrollContainerRef","currentCategoryPatterns","_pattern$categories$f","availablePatternCategories","availableCategory","pagingProps","changePage","onSetPatternSyncFilter","value","onSetPatternSourceFilter","spacing","level","as","description","variant","shownPatterns","categoryPatternsAsyncList","blockPatterns","categoryPatterns","orientation","isDraggable","BlockPatternsTabs","onSelectCategory","selectedCategory","showPatternsExplorer","setShowPatternsExplorer","initialCategory","isMobile","Fragment","role","map","onClick","icon","patternCategories","onModalClose"],"sources":["@wordpress/block-editor/src/components/inserter/block-patterns-tab.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tuseMemo,\n\tuseState,\n\tuseCallback,\n\tuseRef,\n\tuseEffect,\n} from '@wordpress/element';\nimport { _x, __, _n, isRTL, sprintf } from '@wordpress/i18n';\nimport { useViewportMatch } from '@wordpress/compose';\nimport {\n\t__experimentalItemGroup as ItemGroup,\n\t__experimentalItem as Item,\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\t__experimentalHeading as Heading,\n\t__experimentalText as Text,\n\tFlexBlock,\n\tButton,\n} from '@wordpress/components';\nimport { Icon, chevronRight, chevronLeft } from '@wordpress/icons';\nimport { focus } from '@wordpress/dom';\nimport { speak } from '@wordpress/a11y';\n\n/**\n * Internal dependencies\n */\nimport usePatternsState from './hooks/use-patterns-state';\nimport BlockPatternList from '../block-patterns-list';\nimport PatternsExplorerModal from './block-patterns-explorer/explorer';\nimport MobileTabNavigation from './mobile-tab-navigation';\nimport usePatternsPaging from './hooks/use-patterns-paging';\nimport {\n\tBlockPatternsSyncFilter,\n\tSYNC_TYPES,\n\tPATTERN_TYPES,\n} from './block-patterns-filter';\n\nconst noop = () => {};\n\nexport const allPatternsCategory = {\n\tname: 'allPatterns',\n\tlabel: __( 'All Patterns' ),\n};\n\nexport const myPatternsCategory = {\n\tname: 'myPatterns',\n\tlabel: __( 'My patterns' ),\n};\n\nexport function isPatternFiltered( pattern, sourceFilter, syncFilter ) {\n\tconst isUserPattern = pattern.name.startsWith( 'core/block' );\n\tconst isDirectoryPattern =\n\t\tpattern.source === 'core' ||\n\t\tpattern.source?.startsWith( 'pattern-directory' );\n\n\t// If theme source selected, filter out user created patterns and those from\n\t// the core patterns directory.\n\tif (\n\t\tsourceFilter === PATTERN_TYPES.theme &&\n\t\t( isUserPattern || isDirectoryPattern )\n\t) {\n\t\treturn true;\n\t}\n\n\t// If the directory source is selected, filter out user created patterns\n\t// and those bundled with the theme.\n\tif (\n\t\tsourceFilter === PATTERN_TYPES.directory &&\n\t\t( isUserPattern || ! isDirectoryPattern )\n\t) {\n\t\treturn true;\n\t}\n\n\t// If user source selected, filter out theme patterns. Any pattern without\n\t// an id wasn't created by a user.\n\tif ( sourceFilter === PATTERN_TYPES.user && ! pattern.id ) {\n\t\treturn true;\n\t}\n\n\t// Filter by sync status.\n\tif ( syncFilter === SYNC_TYPES.full && pattern.syncStatus !== '' ) {\n\t\treturn true;\n\t}\n\n\tif (\n\t\tsyncFilter === SYNC_TYPES.unsynced &&\n\t\tpattern.syncStatus !== 'unsynced' &&\n\t\tisUserPattern\n\t) {\n\t\treturn true;\n\t}\n\n\treturn false;\n}\n\nexport function usePatternsCategories( rootClientId, sourceFilter = 'all' ) {\n\tconst [ patterns, allCategories ] = usePatternsState(\n\t\tundefined,\n\t\trootClientId\n\t);\n\n\tconst filteredPatterns = useMemo(\n\t\t() =>\n\t\t\tsourceFilter === 'all'\n\t\t\t\t? patterns\n\t\t\t\t: patterns.filter(\n\t\t\t\t\t\t( pattern ) =>\n\t\t\t\t\t\t\t! isPatternFiltered( pattern, sourceFilter )\n\t\t\t\t ),\n\t\t[ sourceFilter, patterns ]\n\t);\n\n\tconst hasRegisteredCategory = useCallback(\n\t\t( pattern ) => {\n\t\t\tif ( ! pattern.categories || ! pattern.categories.length ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn pattern.categories.some( ( cat ) =>\n\t\t\t\tallCategories.some( ( category ) => category.name === cat )\n\t\t\t);\n\t\t},\n\t\t[ allCategories ]\n\t);\n\n\t// Remove any empty categories.\n\tconst populatedCategories = useMemo( () => {\n\t\tconst categories = allCategories\n\t\t\t.filter( ( category ) =>\n\t\t\t\tfilteredPatterns.some( ( pattern ) =>\n\t\t\t\t\tpattern.categories?.includes( category.name )\n\t\t\t\t)\n\t\t\t)\n\t\t\t.sort( ( a, b ) => a.label.localeCompare( b.label ) );\n\n\t\tif (\n\t\t\tfilteredPatterns.some(\n\t\t\t\t( pattern ) => ! hasRegisteredCategory( pattern )\n\t\t\t) &&\n\t\t\t! categories.find(\n\t\t\t\t( category ) => category.name === 'uncategorized'\n\t\t\t)\n\t\t) {\n\t\t\tcategories.push( {\n\t\t\t\tname: 'uncategorized',\n\t\t\t\tlabel: _x( 'Uncategorized' ),\n\t\t\t} );\n\t\t}\n\t\tif ( filteredPatterns.some( ( pattern ) => pattern.id ) ) {\n\t\t\tcategories.unshift( myPatternsCategory );\n\t\t}\n\t\tif ( filteredPatterns.length > 0 ) {\n\t\t\tcategories.unshift( {\n\t\t\t\tname: allPatternsCategory.name,\n\t\t\t\tlabel: allPatternsCategory.label,\n\t\t\t} );\n\t\t}\n\t\tspeak(\n\t\t\tsprintf(\n\t\t\t\t/* translators: %d: number of categories . */\n\t\t\t\t_n(\n\t\t\t\t\t'%d category button displayed.',\n\t\t\t\t\t'%d category buttons displayed.',\n\t\t\t\t\tcategories.length\n\t\t\t\t),\n\t\t\t\tcategories.length\n\t\t\t)\n\t\t);\n\t\treturn categories;\n\t}, [ allCategories, filteredPatterns, hasRegisteredCategory ] );\n\n\treturn populatedCategories;\n}\n\nexport function BlockPatternsCategoryDialog( {\n\trootClientId,\n\tonInsert,\n\tonHover,\n\tcategory,\n\tshowTitlesAsTooltip,\n\tpatternFilter,\n} ) {\n\tconst container = useRef();\n\n\tuseEffect( () => {\n\t\tconst timeout = setTimeout( () => {\n\t\t\tconst [ firstTabbable ] = focus.tabbable.find( container.current );\n\t\t\tfirstTabbable?.focus();\n\t\t} );\n\t\treturn () => clearTimeout( timeout );\n\t}, [ category ] );\n\n\treturn (\n\t\t<div\n\t\t\tref={ container }\n\t\t\tclassName=\"block-editor-inserter__patterns-category-dialog\"\n\t\t>\n\t\t\t<BlockPatternsCategoryPanel\n\t\t\t\tkey={ category.name }\n\t\t\t\trootClientId={ rootClientId }\n\t\t\t\tonInsert={ onInsert }\n\t\t\t\tonHover={ onHover }\n\t\t\t\tcategory={ category }\n\t\t\t\tshowTitlesAsTooltip={ showTitlesAsTooltip }\n\t\t\t\tpatternFilter={ patternFilter }\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\nexport function BlockPatternsCategoryPanel( {\n\trootClientId,\n\tonInsert,\n\tonHover = noop,\n\tcategory,\n\tshowTitlesAsTooltip,\n} ) {\n\tconst [ allPatterns, , onClickPattern ] = usePatternsState(\n\t\tonInsert,\n\t\trootClientId\n\t);\n\tconst [ patternSyncFilter, setPatternSyncFilter ] = useState( 'all' );\n\tconst [ patternSourceFilter, setPatternSourceFilter ] = useState( 'all' );\n\n\tconst availableCategories = usePatternsCategories(\n\t\trootClientId,\n\t\tpatternSourceFilter\n\t);\n\tconst scrollContainerRef = useRef();\n\tconst currentCategoryPatterns = useMemo(\n\t\t() =>\n\t\t\tallPatterns.filter( ( pattern ) => {\n\t\t\t\tif (\n\t\t\t\t\tisPatternFiltered(\n\t\t\t\t\t\tpattern,\n\t\t\t\t\t\tpatternSourceFilter,\n\t\t\t\t\t\tpatternSyncFilter\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tif ( category.name === allPatternsCategory.name ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tif ( category.name === myPatternsCategory.name && pattern.id ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tif ( category.name !== 'uncategorized' ) {\n\t\t\t\t\treturn pattern.categories?.includes( category.name );\n\t\t\t\t}\n\n\t\t\t\t// The uncategorized category should show all the patterns without any category\n\t\t\t\t// or with no available category.\n\t\t\t\tconst availablePatternCategories =\n\t\t\t\t\tpattern.categories?.filter( ( cat ) =>\n\t\t\t\t\t\tavailableCategories.find(\n\t\t\t\t\t\t\t( availableCategory ) =>\n\t\t\t\t\t\t\t\tavailableCategory.name === cat\n\t\t\t\t\t\t)\n\t\t\t\t\t) ?? [];\n\n\t\t\t\treturn availablePatternCategories.length === 0;\n\t\t\t} ),\n\t\t[\n\t\t\tallPatterns,\n\t\t\tavailableCategories,\n\t\t\tcategory.name,\n\t\t\tpatternSourceFilter,\n\t\t\tpatternSyncFilter,\n\t\t]\n\t);\n\n\tconst pagingProps = usePatternsPaging(\n\t\tcurrentCategoryPatterns,\n\t\tcategory,\n\t\tscrollContainerRef\n\t);\n\tconst { changePage } = pagingProps;\n\n\t// Hide block pattern preview on unmount.\n\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\tuseEffect( () => () => onHover( null ), [] );\n\n\tconst onSetPatternSyncFilter = useCallback(\n\t\t( value ) => {\n\t\t\tsetPatternSyncFilter( value );\n\t\t\tchangePage( 1 );\n\t\t},\n\t\t[ setPatternSyncFilter, changePage ]\n\t);\n\tconst onSetPatternSourceFilter = useCallback(\n\t\t( value ) => {\n\t\t\tsetPatternSourceFilter( value );\n\t\t\tchangePage( 1 );\n\t\t},\n\t\t[ setPatternSourceFilter, changePage ]\n\t);\n\n\treturn (\n\t\t<div className=\"block-editor-inserter__patterns-category-panel\">\n\t\t\t<VStack\n\t\t\t\tspacing={ 2 }\n\t\t\t\tclassName=\"block-editor-inserter__patterns-category-panel-header\"\n\t\t\t>\n\t\t\t\t<HStack>\n\t\t\t\t\t<FlexBlock>\n\t\t\t\t\t\t<Heading level={ 4 } as=\"div\">\n\t\t\t\t\t\t\t{ category.label }\n\t\t\t\t\t\t</Heading>\n\t\t\t\t\t</FlexBlock>\n\t\t\t\t\t<BlockPatternsSyncFilter\n\t\t\t\t\t\tpatternSyncFilter={ patternSyncFilter }\n\t\t\t\t\t\tpatternSourceFilter={ patternSourceFilter }\n\t\t\t\t\t\tsetPatternSyncFilter={ onSetPatternSyncFilter }\n\t\t\t\t\t\tsetPatternSourceFilter={ onSetPatternSourceFilter }\n\t\t\t\t\t\tscrollContainerRef={ scrollContainerRef }\n\t\t\t\t\t\tcategory={ category }\n\t\t\t\t\t/>\n\t\t\t\t</HStack>\n\t\t\t\t{ category.description && (\n\t\t\t\t\t<Text>{ category.description }</Text>\n\t\t\t\t) }\n\t\t\t\t{ ! currentCategoryPatterns.length && (\n\t\t\t\t\t<Text\n\t\t\t\t\t\tvariant=\"muted\"\n\t\t\t\t\t\tclassName=\"block-editor-inserter__patterns-category-no-results\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'No results found' ) }\n\t\t\t\t\t</Text>\n\t\t\t\t) }\n\t\t\t</VStack>\n\n\t\t\t{ currentCategoryPatterns.length > 0 && (\n\t\t\t\t<BlockPatternList\n\t\t\t\t\tref={ scrollContainerRef }\n\t\t\t\t\tshownPatterns={ pagingProps.categoryPatternsAsyncList }\n\t\t\t\t\tblockPatterns={ pagingProps.categoryPatterns }\n\t\t\t\t\tonClickPattern={ onClickPattern }\n\t\t\t\t\tonHover={ onHover }\n\t\t\t\t\tlabel={ category.label }\n\t\t\t\t\torientation=\"vertical\"\n\t\t\t\t\tcategory={ category.name }\n\t\t\t\t\tisDraggable\n\t\t\t\t\tshowTitlesAsTooltip={ showTitlesAsTooltip }\n\t\t\t\t\tpatternFilter={ patternSourceFilter }\n\t\t\t\t\tpagingProps={ pagingProps }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n\nfunction BlockPatternsTabs( {\n\tonSelectCategory,\n\tselectedCategory,\n\tonInsert,\n\trootClientId,\n} ) {\n\tconst [ showPatternsExplorer, setShowPatternsExplorer ] = useState( false );\n\n\tconst categories = usePatternsCategories( rootClientId );\n\n\tconst initialCategory = selectedCategory || categories[ 0 ];\n\tconst isMobile = useViewportMatch( 'medium', '<' );\n\treturn (\n\t\t<>\n\t\t\t{ ! isMobile && (\n\t\t\t\t<div className=\"block-editor-inserter__block-patterns-tabs-container\">\n\t\t\t\t\t<nav\n\t\t\t\t\t\taria-label={ __( 'Block pattern categories' ) }\n\t\t\t\t\t\tclassName=\"block-editor-inserter__block-patterns-tabs\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<ItemGroup role=\"list\">\n\t\t\t\t\t\t\t{ categories.map( ( category ) => (\n\t\t\t\t\t\t\t\t<Item\n\t\t\t\t\t\t\t\t\trole=\"listitem\"\n\t\t\t\t\t\t\t\t\tkey={ category.name }\n\t\t\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\t\t\tonSelectCategory( category )\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tclassName={\n\t\t\t\t\t\t\t\t\t\tcategory === selectedCategory\n\t\t\t\t\t\t\t\t\t\t\t? 'block-editor-inserter__patterns-category block-editor-inserter__patterns-selected-category'\n\t\t\t\t\t\t\t\t\t\t\t: 'block-editor-inserter__patterns-category'\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\taria-label={ category.label }\n\t\t\t\t\t\t\t\t\taria-current={\n\t\t\t\t\t\t\t\t\t\tcategory === selectedCategory\n\t\t\t\t\t\t\t\t\t\t\t? 'true'\n\t\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<HStack>\n\t\t\t\t\t\t\t\t\t\t<FlexBlock>\n\t\t\t\t\t\t\t\t\t\t\t{ category.label }\n\t\t\t\t\t\t\t\t\t\t</FlexBlock>\n\t\t\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t\t\t\t\t\tisRTL()\n\t\t\t\t\t\t\t\t\t\t\t\t\t? chevronLeft\n\t\t\t\t\t\t\t\t\t\t\t\t\t: chevronRight\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</HStack>\n\t\t\t\t\t\t\t\t</Item>\n\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t\t<div role=\"listitem\">\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\tclassName=\"block-editor-inserter__patterns-explore-button\"\n\t\t\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\t\t\tsetShowPatternsExplorer( true )\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ __( 'Explore all patterns' ) }\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</ItemGroup>\n\t\t\t\t\t</nav>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t{ isMobile && (\n\t\t\t\t<MobileTabNavigation categories={ categories }>\n\t\t\t\t\t{ ( category ) => (\n\t\t\t\t\t\t<BlockPatternsCategoryPanel\n\t\t\t\t\t\t\tkey={ category.name }\n\t\t\t\t\t\t\tonInsert={ onInsert }\n\t\t\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t\t\t\tcategory={ category }\n\t\t\t\t\t\t\tshowTitlesAsTooltip={ false }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</MobileTabNavigation>\n\t\t\t) }\n\t\t\t{ showPatternsExplorer && (\n\t\t\t\t<PatternsExplorerModal\n\t\t\t\t\tinitialCategory={ initialCategory }\n\t\t\t\t\tpatternCategories={ categories }\n\t\t\t\t\tonModalClose={ () => setShowPatternsExplorer( false ) }\n\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default BlockPatternsTabs;\n"],"mappings":";AAAA;AACA;AACA;AACA,SACCA,OAAO,EACPC,QAAQ,EACRC,WAAW,EACXC,MAAM,EACNC,SAAS,QACH,oBAAoB;AAC3B,SAASC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,KAAK,EAAEC,OAAO,QAAQ,iBAAiB;AAC5D,SAASC,gBAAgB,QAAQ,oBAAoB;AACrD,SACCC,uBAAuB,IAAIC,SAAS,EACpCC,kBAAkB,IAAIC,IAAI,EAC1BC,oBAAoB,IAAIC,MAAM,EAC9BC,oBAAoB,IAAIC,MAAM,EAC9BC,qBAAqB,IAAIC,OAAO,EAChCC,kBAAkB,IAAIC,IAAI,EAC1BC,SAAS,EACTC,MAAM,QACA,uBAAuB;AAC9B,SAASC,IAAI,EAAEC,YAAY,EAAEC,WAAW,QAAQ,kBAAkB;AAClE,SAASC,KAAK,QAAQ,gBAAgB;AACtC,SAASC,KAAK,QAAQ,iBAAiB;;AAEvC;AACA;AACA;AACA,OAAOC,gBAAgB,MAAM,4BAA4B;AACzD,OAAOC,gBAAgB,MAAM,wBAAwB;AACrD,OAAOC,qBAAqB,MAAM,oCAAoC;AACtE,OAAOC,mBAAmB,MAAM,yBAAyB;AACzD,OAAOC,iBAAiB,MAAM,6BAA6B;AAC3D,SACCC,uBAAuB,EACvBC,UAAU,EACVC,aAAa,QACP,yBAAyB;AAEhC,MAAMC,IAAI,GAAGA,CAAA,KAAM,CAAC,CAAC;AAErB,OAAO,MAAMC,mBAAmB,GAAG;EAClCC,IAAI,EAAE,aAAa;EACnBC,KAAK,EAAEnC,EAAE,CAAE,cAAe;AAC3B,CAAC;AAED,OAAO,MAAMoC,kBAAkB,GAAG;EACjCF,IAAI,EAAE,YAAY;EAClBC,KAAK,EAAEnC,EAAE,CAAE,aAAc;AAC1B,CAAC;AAED,OAAO,SAASqC,iBAAiBA,CAAEC,OAAO,EAAEC,YAAY,EAAEC,UAAU,EAAG;EACtE,MAAMC,aAAa,GAAGH,OAAO,CAACJ,IAAI,CAACQ,UAAU,CAAE,YAAa,CAAC;EAC7D,MAAMC,kBAAkB,GACvBL,OAAO,CAACM,MAAM,KAAK,MAAM,IACzBN,OAAO,CAACM,MAAM,EAAEF,UAAU,CAAE,mBAAoB,CAAC;;EAElD;EACA;EACA,IACCH,YAAY,KAAKR,aAAa,CAACc,KAAK,KAClCJ,aAAa,IAAIE,kBAAkB,CAAE,EACtC;IACD,OAAO,IAAI;EACZ;;EAEA;EACA;EACA,IACCJ,YAAY,KAAKR,aAAa,CAACe,SAAS,KACtCL,aAAa,IAAI,CAAEE,kBAAkB,CAAE,EACxC;IACD,OAAO,IAAI;EACZ;;EAEA;EACA;EACA,IAAKJ,YAAY,KAAKR,aAAa,CAACgB,IAAI,IAAI,CAAET,OAAO,CAACU,EAAE,EAAG;IAC1D,OAAO,IAAI;EACZ;;EAEA;EACA,IAAKR,UAAU,KAAKV,UAAU,CAACmB,IAAI,IAAIX,OAAO,CAACY,UAAU,KAAK,EAAE,EAAG;IAClE,OAAO,IAAI;EACZ;EAEA,IACCV,UAAU,KAAKV,UAAU,CAACqB,QAAQ,IAClCb,OAAO,CAACY,UAAU,KAAK,UAAU,IACjCT,aAAa,EACZ;IACD,OAAO,IAAI;EACZ;EAEA,OAAO,KAAK;AACb;AAEA,OAAO,SAASW,qBAAqBA,CAAEC,YAAY,EAAEd,YAAY,GAAG,KAAK,EAAG;EAC3E,MAAM,CAAEe,QAAQ,EAAEC,aAAa,CAAE,GAAG/B,gBAAgB,CACnDgC,SAAS,EACTH,YACD,CAAC;EAED,MAAMI,gBAAgB,GAAG/D,OAAO,CAC/B,MACC6C,YAAY,KAAK,KAAK,GACnBe,QAAQ,GACRA,QAAQ,CAACI,MAAM,CACbpB,OAAO,IACR,CAAED,iBAAiB,CAAEC,OAAO,EAAEC,YAAa,CAC5C,CAAC,EACL,CAAEA,YAAY,EAAEe,QAAQ,CACzB,CAAC;EAED,MAAMK,qBAAqB,GAAG/D,WAAW,CACtC0C,OAAO,IAAM;IACd,IAAK,CAAEA,OAAO,CAACsB,UAAU,IAAI,CAAEtB,OAAO,CAACsB,UAAU,CAACC,MAAM,EAAG;MAC1D,OAAO,KAAK;IACb;IAEA,OAAOvB,OAAO,CAACsB,UAAU,CAACE,IAAI,CAAIC,GAAG,IACpCR,aAAa,CAACO,IAAI,CAAIE,QAAQ,IAAMA,QAAQ,CAAC9B,IAAI,KAAK6B,GAAI,CAC3D,CAAC;EACF,CAAC,EACD,CAAER,aAAa,CAChB,CAAC;;EAED;EACA,MAAMU,mBAAmB,GAAGvE,OAAO,CAAE,MAAM;IAC1C,MAAMkE,UAAU,GAAGL,aAAa,CAC9BG,MAAM,CAAIM,QAAQ,IAClBP,gBAAgB,CAACK,IAAI,CAAIxB,OAAO,IAC/BA,OAAO,CAACsB,UAAU,EAAEM,QAAQ,CAAEF,QAAQ,CAAC9B,IAAK,CAC7C,CACD,CAAC,CACAiC,IAAI,CAAE,CAAEC,CAAC,EAAEC,CAAC,KAAMD,CAAC,CAACjC,KAAK,CAACmC,aAAa,CAAED,CAAC,CAAClC,KAAM,CAAE,CAAC;IAEtD,IACCsB,gBAAgB,CAACK,IAAI,CAClBxB,OAAO,IAAM,CAAEqB,qBAAqB,CAAErB,OAAQ,CACjD,CAAC,IACD,CAAEsB,UAAU,CAACW,IAAI,CACdP,QAAQ,IAAMA,QAAQ,CAAC9B,IAAI,KAAK,eACnC,CAAC,EACA;MACD0B,UAAU,CAACY,IAAI,CAAE;QAChBtC,IAAI,EAAE,eAAe;QACrBC,KAAK,EAAEpC,EAAE,CAAE,eAAgB;MAC5B,CAAE,CAAC;IACJ;IACA,IAAK0D,gBAAgB,CAACK,IAAI,CAAIxB,OAAO,IAAMA,OAAO,CAACU,EAAG,CAAC,EAAG;MACzDY,UAAU,CAACa,OAAO,CAAErC,kBAAmB,CAAC;IACzC;IACA,IAAKqB,gBAAgB,CAACI,MAAM,GAAG,CAAC,EAAG;MAClCD,UAAU,CAACa,OAAO,CAAE;QACnBvC,IAAI,EAAED,mBAAmB,CAACC,IAAI;QAC9BC,KAAK,EAAEF,mBAAmB,CAACE;MAC5B,CAAE,CAAC;IACJ;IACAZ,KAAK,CACJpB,OAAO,EACN;IACAF,EAAE,CACD,+BAA+B,EAC/B,gCAAgC,EAChC2D,UAAU,CAACC,MACZ,CAAC,EACDD,UAAU,CAACC,MACZ,CACD,CAAC;IACD,OAAOD,UAAU;EAClB,CAAC,EAAE,CAAEL,aAAa,EAAEE,gBAAgB,EAAEE,qBAAqB,CAAG,CAAC;EAE/D,OAAOM,mBAAmB;AAC3B;AAEA,OAAO,SAASS,2BAA2BA,CAAE;EAC5CrB,YAAY;EACZsB,QAAQ;EACRC,OAAO;EACPZ,QAAQ;EACRa,mBAAmB;EACnBC;AACD,CAAC,EAAG;EACH,MAAMC,SAAS,GAAGlF,MAAM,CAAC,CAAC;EAE1BC,SAAS,CAAE,MAAM;IAChB,MAAMkF,OAAO,GAAGC,UAAU,CAAE,MAAM;MACjC,MAAM,CAAEC,aAAa,CAAE,GAAG5D,KAAK,CAAC6D,QAAQ,CAACZ,IAAI,CAAEQ,SAAS,CAACK,OAAQ,CAAC;MAClEF,aAAa,EAAE5D,KAAK,CAAC,CAAC;IACvB,CAAE,CAAC;IACH,OAAO,MAAM+D,YAAY,CAAEL,OAAQ,CAAC;EACrC,CAAC,EAAE,CAAEhB,QAAQ,CAAG,CAAC;EAEjB,OACCsB,aAAA;IACCC,GAAG,EAAGR,SAAW;IACjBS,SAAS,EAAC;EAAiD,GAE3DF,aAAA,CAACG,0BAA0B;IAC1BC,GAAG,EAAG1B,QAAQ,CAAC9B,IAAM;IACrBmB,YAAY,EAAGA,YAAc;IAC7BsB,QAAQ,EAAGA,QAAU;IACrBC,OAAO,EAAGA,OAAS;IACnBZ,QAAQ,EAAGA,QAAU;IACrBa,mBAAmB,EAAGA,mBAAqB;IAC3CC,aAAa,EAAGA;EAAe,CAC/B,CACG,CAAC;AAER;AAEA,OAAO,SAASW,0BAA0BA,CAAE;EAC3CpC,YAAY;EACZsB,QAAQ;EACRC,OAAO,GAAG5C,IAAI;EACdgC,QAAQ;EACRa;AACD,CAAC,EAAG;EACH,MAAM,CAAEc,WAAW,GAAIC,cAAc,CAAE,GAAGpE,gBAAgB,CACzDmD,QAAQ,EACRtB,YACD,CAAC;EACD,MAAM,CAAEwC,iBAAiB,EAAEC,oBAAoB,CAAE,GAAGnG,QAAQ,CAAE,KAAM,CAAC;EACrE,MAAM,CAAEoG,mBAAmB,EAAEC,sBAAsB,CAAE,GAAGrG,QAAQ,CAAE,KAAM,CAAC;EAEzE,MAAMsG,mBAAmB,GAAG7C,qBAAqB,CAChDC,YAAY,EACZ0C,mBACD,CAAC;EACD,MAAMG,kBAAkB,GAAGrG,MAAM,CAAC,CAAC;EACnC,MAAMsG,uBAAuB,GAAGzG,OAAO,CACtC,MACCiG,WAAW,CAACjC,MAAM,CAAIpB,OAAO,IAAM;IAAA,IAAA8D,qBAAA;IAClC,IACC/D,iBAAiB,CAChBC,OAAO,EACPyD,mBAAmB,EACnBF,iBACD,CAAC,EACA;MACD,OAAO,KAAK;IACb;IAEA,IAAK7B,QAAQ,CAAC9B,IAAI,KAAKD,mBAAmB,CAACC,IAAI,EAAG;MACjD,OAAO,IAAI;IACZ;IACA,IAAK8B,QAAQ,CAAC9B,IAAI,KAAKE,kBAAkB,CAACF,IAAI,IAAII,OAAO,CAACU,EAAE,EAAG;MAC9D,OAAO,IAAI;IACZ;IACA,IAAKgB,QAAQ,CAAC9B,IAAI,KAAK,eAAe,EAAG;MACxC,OAAOI,OAAO,CAACsB,UAAU,EAAEM,QAAQ,CAAEF,QAAQ,CAAC9B,IAAK,CAAC;IACrD;;IAEA;IACA;IACA,MAAMmE,0BAA0B,IAAAD,qBAAA,GAC/B9D,OAAO,CAACsB,UAAU,EAAEF,MAAM,CAAIK,GAAG,IAChCkC,mBAAmB,CAAC1B,IAAI,CACrB+B,iBAAiB,IAClBA,iBAAiB,CAACpE,IAAI,KAAK6B,GAC7B,CACD,CAAC,cAAAqC,qBAAA,cAAAA,qBAAA,GAAI,EAAE;IAER,OAAOC,0BAA0B,CAACxC,MAAM,KAAK,CAAC;EAC/C,CAAE,CAAC,EACJ,CACC8B,WAAW,EACXM,mBAAmB,EACnBjC,QAAQ,CAAC9B,IAAI,EACb6D,mBAAmB,EACnBF,iBAAiB,CAEnB,CAAC;EAED,MAAMU,WAAW,GAAG3E,iBAAiB,CACpCuE,uBAAuB,EACvBnC,QAAQ,EACRkC,kBACD,CAAC;EACD,MAAM;IAAEM;EAAW,CAAC,GAAGD,WAAW;;EAElC;EACA;EACAzG,SAAS,CAAE,MAAM,MAAM8E,OAAO,CAAE,IAAK,CAAC,EAAE,EAAG,CAAC;EAE5C,MAAM6B,sBAAsB,GAAG7G,WAAW,CACvC8G,KAAK,IAAM;IACZZ,oBAAoB,CAAEY,KAAM,CAAC;IAC7BF,UAAU,CAAE,CAAE,CAAC;EAChB,CAAC,EACD,CAAEV,oBAAoB,EAAEU,UAAU,CACnC,CAAC;EACD,MAAMG,wBAAwB,GAAG/G,WAAW,CACzC8G,KAAK,IAAM;IACZV,sBAAsB,CAAEU,KAAM,CAAC;IAC/BF,UAAU,CAAE,CAAE,CAAC;EAChB,CAAC,EACD,CAAER,sBAAsB,EAAEQ,UAAU,CACrC,CAAC;EAED,OACClB,aAAA;IAAKE,SAAS,EAAC;EAAgD,GAC9DF,aAAA,CAAC1E,MAAM;IACNgG,OAAO,EAAG,CAAG;IACbpB,SAAS,EAAC;EAAuD,GAEjEF,aAAA,CAAC5E,MAAM,QACN4E,aAAA,CAACrE,SAAS,QACTqE,aAAA,CAACxE,OAAO;IAAC+F,KAAK,EAAG,CAAG;IAACC,EAAE,EAAC;EAAK,GAC1B9C,QAAQ,CAAC7B,KACH,CACC,CAAC,EACZmD,aAAA,CAACzD,uBAAuB;IACvBgE,iBAAiB,EAAGA,iBAAmB;IACvCE,mBAAmB,EAAGA,mBAAqB;IAC3CD,oBAAoB,EAAGW,sBAAwB;IAC/CT,sBAAsB,EAAGW,wBAA0B;IACnDT,kBAAkB,EAAGA,kBAAoB;IACzClC,QAAQ,EAAGA;EAAU,CACrB,CACM,CAAC,EACPA,QAAQ,CAAC+C,WAAW,IACrBzB,aAAA,CAACtE,IAAI,QAAGgD,QAAQ,CAAC+C,WAAmB,CACpC,EACC,CAAEZ,uBAAuB,CAACtC,MAAM,IACjCyB,aAAA,CAACtE,IAAI;IACJgG,OAAO,EAAC,OAAO;IACfxB,SAAS,EAAC;EAAqD,GAE7DxF,EAAE,CAAE,kBAAmB,CACpB,CAEA,CAAC,EAEPmG,uBAAuB,CAACtC,MAAM,GAAG,CAAC,IACnCyB,aAAA,CAAC7D,gBAAgB;IAChB8D,GAAG,EAAGW,kBAAoB;IAC1Be,aAAa,EAAGV,WAAW,CAACW,yBAA2B;IACvDC,aAAa,EAAGZ,WAAW,CAACa,gBAAkB;IAC9CxB,cAAc,EAAGA,cAAgB;IACjChB,OAAO,EAAGA,OAAS;IACnBzC,KAAK,EAAG6B,QAAQ,CAAC7B,KAAO;IACxBkF,WAAW,EAAC,UAAU;IACtBrD,QAAQ,EAAGA,QAAQ,CAAC9B,IAAM;IAC1BoF,WAAW;IACXzC,mBAAmB,EAAGA,mBAAqB;IAC3CC,aAAa,EAAGiB,mBAAqB;IACrCQ,WAAW,EAAGA;EAAa,CAC3B,CAEE,CAAC;AAER;AAEA,SAASgB,iBAAiBA,CAAE;EAC3BC,gBAAgB;EAChBC,gBAAgB;EAChB9C,QAAQ;EACRtB;AACD,CAAC,EAAG;EACH,MAAM,CAAEqE,oBAAoB,EAAEC,uBAAuB,CAAE,GAAGhI,QAAQ,CAAE,KAAM,CAAC;EAE3E,MAAMiE,UAAU,GAAGR,qBAAqB,CAAEC,YAAa,CAAC;EAExD,MAAMuE,eAAe,GAAGH,gBAAgB,IAAI7D,UAAU,CAAE,CAAC,CAAE;EAC3D,MAAMiE,QAAQ,GAAGzH,gBAAgB,CAAE,QAAQ,EAAE,GAAI,CAAC;EAClD,OACCkF,aAAA,CAAAwC,QAAA,QACG,CAAED,QAAQ,IACXvC,aAAA;IAAKE,SAAS,EAAC;EAAsD,GACpEF,aAAA;IACC,cAAatF,EAAE,CAAE,0BAA2B,CAAG;IAC/CwF,SAAS,EAAC;EAA4C,GAEtDF,aAAA,CAAChF,SAAS;IAACyH,IAAI,EAAC;EAAM,GACnBnE,UAAU,CAACoE,GAAG,CAAIhE,QAAQ,IAC3BsB,aAAA,CAAC9E,IAAI;IACJuH,IAAI,EAAC,UAAU;IACfrC,GAAG,EAAG1B,QAAQ,CAAC9B,IAAM;IACrB+F,OAAO,EAAGA,CAAA,KACTT,gBAAgB,CAAExD,QAAS,CAC3B;IACDwB,SAAS,EACRxB,QAAQ,KAAKyD,gBAAgB,GAC1B,4FAA4F,GAC5F,0CACH;IACD,cAAazD,QAAQ,CAAC7B,KAAO;IAC7B,gBACC6B,QAAQ,KAAKyD,gBAAgB,GAC1B,MAAM,GACNjE;EACH,GAED8B,aAAA,CAAC5E,MAAM,QACN4E,aAAA,CAACrE,SAAS,QACP+C,QAAQ,CAAC7B,KACD,CAAC,EACZmD,aAAA,CAACnE,IAAI;IACJ+G,IAAI,EACHhI,KAAK,CAAC,CAAC,GACJmB,WAAW,GACXD;EACH,CACD,CACM,CACH,CACL,CAAC,EACHkE,aAAA;IAAKyC,IAAI,EAAC;EAAU,GACnBzC,aAAA,CAACpE,MAAM;IACNsE,SAAS,EAAC,gDAAgD;IAC1DyC,OAAO,EAAGA,CAAA,KACTN,uBAAuB,CAAE,IAAK,CAC9B;IACDX,OAAO,EAAC;EAAW,GAEjBhH,EAAE,CAAE,sBAAuB,CACtB,CACJ,CACK,CACP,CACD,CACL,EACC6H,QAAQ,IACTvC,aAAA,CAAC3D,mBAAmB;IAACiC,UAAU,EAAGA;EAAY,GACzCI,QAAQ,IACXsB,aAAA,CAACG,0BAA0B;IAC1BC,GAAG,EAAG1B,QAAQ,CAAC9B,IAAM;IACrByC,QAAQ,EAAGA,QAAU;IACrBtB,YAAY,EAAGA,YAAc;IAC7BW,QAAQ,EAAGA,QAAU;IACrBa,mBAAmB,EAAG;EAAO,CAC7B,CAEkB,CACrB,EACC6C,oBAAoB,IACrBpC,aAAA,CAAC5D,qBAAqB;IACrBkG,eAAe,EAAGA,eAAiB;IACnCO,iBAAiB,EAAGvE,UAAY;IAChCwE,YAAY,EAAGA,CAAA,KAAMT,uBAAuB,CAAE,KAAM,CAAG;IACvDtE,YAAY,EAAGA;EAAc,CAC7B,CAED,CAAC;AAEL;AAEA,eAAekE,iBAAiB"}
1
+ {"version":3,"names":["useMemo","useState","useCallback","useRef","useEffect","_x","__","_n","isRTL","sprintf","useViewportMatch","__experimentalItemGroup","ItemGroup","__experimentalItem","Item","__experimentalHStack","HStack","__experimentalVStack","VStack","__experimentalHeading","Heading","__experimentalText","Text","FlexBlock","Button","Icon","chevronRight","chevronLeft","focus","speak","usePatternsState","BlockPatternList","PatternsExplorerModal","MobileTabNavigation","usePatternsPaging","BlockPatternsSyncFilter","SYNC_TYPES","PATTERN_TYPES","noop","allPatternsCategory","name","label","myPatternsCategory","isPatternFiltered","pattern","sourceFilter","syncFilter","isUserPattern","startsWith","isDirectoryPattern","source","theme","directory","user","id","full","syncStatus","unsynced","usePatternsCategories","rootClientId","patterns","allCategories","undefined","filteredPatterns","filter","hasRegisteredCategory","categories","length","some","cat","category","populatedCategories","includes","sort","a","b","localeCompare","find","push","unshift","BlockPatternsCategoryDialog","onInsert","onHover","showTitlesAsTooltip","patternFilter","container","timeout","setTimeout","firstTabbable","tabbable","current","clearTimeout","createElement","ref","className","BlockPatternsCategoryPanel","key","allPatterns","onClickPattern","patternSyncFilter","setPatternSyncFilter","patternSourceFilter","setPatternSourceFilter","availableCategories","scrollContainerRef","currentCategoryPatterns","_pattern$categories$f","availablePatternCategories","availableCategory","pagingProps","changePage","onSetPatternSyncFilter","value","onSetPatternSourceFilter","spacing","level","as","description","variant","shownPatterns","categoryPatternsAsyncList","blockPatterns","categoryPatterns","orientation","isDraggable","BlockPatternsTabs","onSelectCategory","selectedCategory","showPatternsExplorer","setShowPatternsExplorer","initialCategory","isMobile","Fragment","role","map","onClick","icon","patternCategories","onModalClose"],"sources":["@wordpress/block-editor/src/components/inserter/block-patterns-tab.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tuseMemo,\n\tuseState,\n\tuseCallback,\n\tuseRef,\n\tuseEffect,\n} from '@wordpress/element';\nimport { _x, __, _n, isRTL, sprintf } from '@wordpress/i18n';\nimport { useViewportMatch } from '@wordpress/compose';\nimport {\n\t__experimentalItemGroup as ItemGroup,\n\t__experimentalItem as Item,\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\t__experimentalHeading as Heading,\n\t__experimentalText as Text,\n\tFlexBlock,\n\tButton,\n} from '@wordpress/components';\nimport { Icon, chevronRight, chevronLeft } from '@wordpress/icons';\nimport { focus } from '@wordpress/dom';\nimport { speak } from '@wordpress/a11y';\n\n/**\n * Internal dependencies\n */\nimport usePatternsState from './hooks/use-patterns-state';\nimport BlockPatternList from '../block-patterns-list';\nimport PatternsExplorerModal from './block-patterns-explorer/explorer';\nimport MobileTabNavigation from './mobile-tab-navigation';\nimport usePatternsPaging from './hooks/use-patterns-paging';\nimport {\n\tBlockPatternsSyncFilter,\n\tSYNC_TYPES,\n\tPATTERN_TYPES,\n} from './block-patterns-filter';\n\nconst noop = () => {};\n\nexport const allPatternsCategory = {\n\tname: 'allPatterns',\n\tlabel: __( 'All patterns' ),\n};\n\nexport const myPatternsCategory = {\n\tname: 'myPatterns',\n\tlabel: __( 'My patterns' ),\n};\n\nexport function isPatternFiltered( pattern, sourceFilter, syncFilter ) {\n\tconst isUserPattern = pattern.name.startsWith( 'core/block' );\n\tconst isDirectoryPattern =\n\t\tpattern.source === 'core' ||\n\t\tpattern.source?.startsWith( 'pattern-directory' );\n\n\t// If theme source selected, filter out user created patterns and those from\n\t// the core patterns directory.\n\tif (\n\t\tsourceFilter === PATTERN_TYPES.theme &&\n\t\t( isUserPattern || isDirectoryPattern )\n\t) {\n\t\treturn true;\n\t}\n\n\t// If the directory source is selected, filter out user created patterns\n\t// and those bundled with the theme.\n\tif (\n\t\tsourceFilter === PATTERN_TYPES.directory &&\n\t\t( isUserPattern || ! isDirectoryPattern )\n\t) {\n\t\treturn true;\n\t}\n\n\t// If user source selected, filter out theme patterns. Any pattern without\n\t// an id wasn't created by a user.\n\tif ( sourceFilter === PATTERN_TYPES.user && ! pattern.id ) {\n\t\treturn true;\n\t}\n\n\t// Filter by sync status.\n\tif ( syncFilter === SYNC_TYPES.full && pattern.syncStatus !== '' ) {\n\t\treturn true;\n\t}\n\n\tif (\n\t\tsyncFilter === SYNC_TYPES.unsynced &&\n\t\tpattern.syncStatus !== 'unsynced' &&\n\t\tisUserPattern\n\t) {\n\t\treturn true;\n\t}\n\n\treturn false;\n}\n\nexport function usePatternsCategories( rootClientId, sourceFilter = 'all' ) {\n\tconst [ patterns, allCategories ] = usePatternsState(\n\t\tundefined,\n\t\trootClientId\n\t);\n\n\tconst filteredPatterns = useMemo(\n\t\t() =>\n\t\t\tsourceFilter === 'all'\n\t\t\t\t? patterns\n\t\t\t\t: patterns.filter(\n\t\t\t\t\t\t( pattern ) =>\n\t\t\t\t\t\t\t! isPatternFiltered( pattern, sourceFilter )\n\t\t\t\t ),\n\t\t[ sourceFilter, patterns ]\n\t);\n\n\tconst hasRegisteredCategory = useCallback(\n\t\t( pattern ) => {\n\t\t\tif ( ! pattern.categories || ! pattern.categories.length ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn pattern.categories.some( ( cat ) =>\n\t\t\t\tallCategories.some( ( category ) => category.name === cat )\n\t\t\t);\n\t\t},\n\t\t[ allCategories ]\n\t);\n\n\t// Remove any empty categories.\n\tconst populatedCategories = useMemo( () => {\n\t\tconst categories = allCategories\n\t\t\t.filter( ( category ) =>\n\t\t\t\tfilteredPatterns.some( ( pattern ) =>\n\t\t\t\t\tpattern.categories?.includes( category.name )\n\t\t\t\t)\n\t\t\t)\n\t\t\t.sort( ( a, b ) => a.label.localeCompare( b.label ) );\n\n\t\tif (\n\t\t\tfilteredPatterns.some(\n\t\t\t\t( pattern ) => ! hasRegisteredCategory( pattern )\n\t\t\t) &&\n\t\t\t! categories.find(\n\t\t\t\t( category ) => category.name === 'uncategorized'\n\t\t\t)\n\t\t) {\n\t\t\tcategories.push( {\n\t\t\t\tname: 'uncategorized',\n\t\t\t\tlabel: _x( 'Uncategorized' ),\n\t\t\t} );\n\t\t}\n\t\tif ( filteredPatterns.some( ( pattern ) => pattern.id ) ) {\n\t\t\tcategories.unshift( myPatternsCategory );\n\t\t}\n\t\tif ( filteredPatterns.length > 0 ) {\n\t\t\tcategories.unshift( {\n\t\t\t\tname: allPatternsCategory.name,\n\t\t\t\tlabel: allPatternsCategory.label,\n\t\t\t} );\n\t\t}\n\t\tspeak(\n\t\t\tsprintf(\n\t\t\t\t/* translators: %d: number of categories . */\n\t\t\t\t_n(\n\t\t\t\t\t'%d category button displayed.',\n\t\t\t\t\t'%d category buttons displayed.',\n\t\t\t\t\tcategories.length\n\t\t\t\t),\n\t\t\t\tcategories.length\n\t\t\t)\n\t\t);\n\t\treturn categories;\n\t}, [ allCategories, filteredPatterns, hasRegisteredCategory ] );\n\n\treturn populatedCategories;\n}\n\nexport function BlockPatternsCategoryDialog( {\n\trootClientId,\n\tonInsert,\n\tonHover,\n\tcategory,\n\tshowTitlesAsTooltip,\n\tpatternFilter,\n} ) {\n\tconst container = useRef();\n\n\tuseEffect( () => {\n\t\tconst timeout = setTimeout( () => {\n\t\t\tconst [ firstTabbable ] = focus.tabbable.find( container.current );\n\t\t\tfirstTabbable?.focus();\n\t\t} );\n\t\treturn () => clearTimeout( timeout );\n\t}, [ category ] );\n\n\treturn (\n\t\t<div\n\t\t\tref={ container }\n\t\t\tclassName=\"block-editor-inserter__patterns-category-dialog\"\n\t\t>\n\t\t\t<BlockPatternsCategoryPanel\n\t\t\t\tkey={ category.name }\n\t\t\t\trootClientId={ rootClientId }\n\t\t\t\tonInsert={ onInsert }\n\t\t\t\tonHover={ onHover }\n\t\t\t\tcategory={ category }\n\t\t\t\tshowTitlesAsTooltip={ showTitlesAsTooltip }\n\t\t\t\tpatternFilter={ patternFilter }\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\nexport function BlockPatternsCategoryPanel( {\n\trootClientId,\n\tonInsert,\n\tonHover = noop,\n\tcategory,\n\tshowTitlesAsTooltip,\n} ) {\n\tconst [ allPatterns, , onClickPattern ] = usePatternsState(\n\t\tonInsert,\n\t\trootClientId\n\t);\n\tconst [ patternSyncFilter, setPatternSyncFilter ] = useState( 'all' );\n\tconst [ patternSourceFilter, setPatternSourceFilter ] = useState( 'all' );\n\n\tconst availableCategories = usePatternsCategories(\n\t\trootClientId,\n\t\tpatternSourceFilter\n\t);\n\tconst scrollContainerRef = useRef();\n\tconst currentCategoryPatterns = useMemo(\n\t\t() =>\n\t\t\tallPatterns.filter( ( pattern ) => {\n\t\t\t\tif (\n\t\t\t\t\tisPatternFiltered(\n\t\t\t\t\t\tpattern,\n\t\t\t\t\t\tpatternSourceFilter,\n\t\t\t\t\t\tpatternSyncFilter\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tif ( category.name === allPatternsCategory.name ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tif ( category.name === myPatternsCategory.name && pattern.id ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tif ( category.name !== 'uncategorized' ) {\n\t\t\t\t\treturn pattern.categories?.includes( category.name );\n\t\t\t\t}\n\n\t\t\t\t// The uncategorized category should show all the patterns without any category\n\t\t\t\t// or with no available category.\n\t\t\t\tconst availablePatternCategories =\n\t\t\t\t\tpattern.categories?.filter( ( cat ) =>\n\t\t\t\t\t\tavailableCategories.find(\n\t\t\t\t\t\t\t( availableCategory ) =>\n\t\t\t\t\t\t\t\tavailableCategory.name === cat\n\t\t\t\t\t\t)\n\t\t\t\t\t) ?? [];\n\n\t\t\t\treturn availablePatternCategories.length === 0;\n\t\t\t} ),\n\t\t[\n\t\t\tallPatterns,\n\t\t\tavailableCategories,\n\t\t\tcategory.name,\n\t\t\tpatternSourceFilter,\n\t\t\tpatternSyncFilter,\n\t\t]\n\t);\n\n\tconst pagingProps = usePatternsPaging(\n\t\tcurrentCategoryPatterns,\n\t\tcategory,\n\t\tscrollContainerRef\n\t);\n\tconst { changePage } = pagingProps;\n\n\t// Hide block pattern preview on unmount.\n\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\tuseEffect( () => () => onHover( null ), [] );\n\n\tconst onSetPatternSyncFilter = useCallback(\n\t\t( value ) => {\n\t\t\tsetPatternSyncFilter( value );\n\t\t\tchangePage( 1 );\n\t\t},\n\t\t[ setPatternSyncFilter, changePage ]\n\t);\n\tconst onSetPatternSourceFilter = useCallback(\n\t\t( value ) => {\n\t\t\tsetPatternSourceFilter( value );\n\t\t\tchangePage( 1 );\n\t\t},\n\t\t[ setPatternSourceFilter, changePage ]\n\t);\n\n\treturn (\n\t\t<div className=\"block-editor-inserter__patterns-category-panel\">\n\t\t\t<VStack\n\t\t\t\tspacing={ 2 }\n\t\t\t\tclassName=\"block-editor-inserter__patterns-category-panel-header\"\n\t\t\t>\n\t\t\t\t<HStack>\n\t\t\t\t\t<FlexBlock>\n\t\t\t\t\t\t<Heading level={ 4 } as=\"div\">\n\t\t\t\t\t\t\t{ category.label }\n\t\t\t\t\t\t</Heading>\n\t\t\t\t\t</FlexBlock>\n\t\t\t\t\t<BlockPatternsSyncFilter\n\t\t\t\t\t\tpatternSyncFilter={ patternSyncFilter }\n\t\t\t\t\t\tpatternSourceFilter={ patternSourceFilter }\n\t\t\t\t\t\tsetPatternSyncFilter={ onSetPatternSyncFilter }\n\t\t\t\t\t\tsetPatternSourceFilter={ onSetPatternSourceFilter }\n\t\t\t\t\t\tscrollContainerRef={ scrollContainerRef }\n\t\t\t\t\t\tcategory={ category }\n\t\t\t\t\t/>\n\t\t\t\t</HStack>\n\t\t\t\t{ category.description && (\n\t\t\t\t\t<Text>{ category.description }</Text>\n\t\t\t\t) }\n\t\t\t\t{ ! currentCategoryPatterns.length && (\n\t\t\t\t\t<Text\n\t\t\t\t\t\tvariant=\"muted\"\n\t\t\t\t\t\tclassName=\"block-editor-inserter__patterns-category-no-results\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'No results found' ) }\n\t\t\t\t\t</Text>\n\t\t\t\t) }\n\t\t\t</VStack>\n\n\t\t\t{ currentCategoryPatterns.length > 0 && (\n\t\t\t\t<BlockPatternList\n\t\t\t\t\tref={ scrollContainerRef }\n\t\t\t\t\tshownPatterns={ pagingProps.categoryPatternsAsyncList }\n\t\t\t\t\tblockPatterns={ pagingProps.categoryPatterns }\n\t\t\t\t\tonClickPattern={ onClickPattern }\n\t\t\t\t\tonHover={ onHover }\n\t\t\t\t\tlabel={ category.label }\n\t\t\t\t\torientation=\"vertical\"\n\t\t\t\t\tcategory={ category.name }\n\t\t\t\t\tisDraggable\n\t\t\t\t\tshowTitlesAsTooltip={ showTitlesAsTooltip }\n\t\t\t\t\tpatternFilter={ patternSourceFilter }\n\t\t\t\t\tpagingProps={ pagingProps }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n\nfunction BlockPatternsTabs( {\n\tonSelectCategory,\n\tselectedCategory,\n\tonInsert,\n\trootClientId,\n} ) {\n\tconst [ showPatternsExplorer, setShowPatternsExplorer ] = useState( false );\n\n\tconst categories = usePatternsCategories( rootClientId );\n\n\tconst initialCategory = selectedCategory || categories[ 0 ];\n\tconst isMobile = useViewportMatch( 'medium', '<' );\n\treturn (\n\t\t<>\n\t\t\t{ ! isMobile && (\n\t\t\t\t<div className=\"block-editor-inserter__block-patterns-tabs-container\">\n\t\t\t\t\t<nav\n\t\t\t\t\t\taria-label={ __( 'Block pattern categories' ) }\n\t\t\t\t\t\tclassName=\"block-editor-inserter__block-patterns-tabs\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<ItemGroup role=\"list\">\n\t\t\t\t\t\t\t{ categories.map( ( category ) => (\n\t\t\t\t\t\t\t\t<Item\n\t\t\t\t\t\t\t\t\trole=\"listitem\"\n\t\t\t\t\t\t\t\t\tkey={ category.name }\n\t\t\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\t\t\tonSelectCategory( category )\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tclassName={\n\t\t\t\t\t\t\t\t\t\tcategory === selectedCategory\n\t\t\t\t\t\t\t\t\t\t\t? 'block-editor-inserter__patterns-category block-editor-inserter__patterns-selected-category'\n\t\t\t\t\t\t\t\t\t\t\t: 'block-editor-inserter__patterns-category'\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\taria-label={ category.label }\n\t\t\t\t\t\t\t\t\taria-current={\n\t\t\t\t\t\t\t\t\t\tcategory === selectedCategory\n\t\t\t\t\t\t\t\t\t\t\t? 'true'\n\t\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<HStack>\n\t\t\t\t\t\t\t\t\t\t<FlexBlock>\n\t\t\t\t\t\t\t\t\t\t\t{ category.label }\n\t\t\t\t\t\t\t\t\t\t</FlexBlock>\n\t\t\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t\t\t\t\t\tisRTL()\n\t\t\t\t\t\t\t\t\t\t\t\t\t? chevronLeft\n\t\t\t\t\t\t\t\t\t\t\t\t\t: chevronRight\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</HStack>\n\t\t\t\t\t\t\t\t</Item>\n\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t\t<div role=\"listitem\">\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\tclassName=\"block-editor-inserter__patterns-explore-button\"\n\t\t\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\t\t\tsetShowPatternsExplorer( true )\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ __( 'Explore all patterns' ) }\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</ItemGroup>\n\t\t\t\t\t</nav>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t{ isMobile && (\n\t\t\t\t<MobileTabNavigation categories={ categories }>\n\t\t\t\t\t{ ( category ) => (\n\t\t\t\t\t\t<BlockPatternsCategoryPanel\n\t\t\t\t\t\t\tkey={ category.name }\n\t\t\t\t\t\t\tonInsert={ onInsert }\n\t\t\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t\t\t\tcategory={ category }\n\t\t\t\t\t\t\tshowTitlesAsTooltip={ false }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</MobileTabNavigation>\n\t\t\t) }\n\t\t\t{ showPatternsExplorer && (\n\t\t\t\t<PatternsExplorerModal\n\t\t\t\t\tinitialCategory={ initialCategory }\n\t\t\t\t\tpatternCategories={ categories }\n\t\t\t\t\tonModalClose={ () => setShowPatternsExplorer( false ) }\n\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default BlockPatternsTabs;\n"],"mappings":"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"}
@@ -119,7 +119,7 @@ function InserterSearchResults({
119
119
  isDraggable: isDraggable
120
120
  }));
121
121
  const patternsUI = !!filteredBlockPatterns.length && createElement(InserterPanel, {
122
- title: createElement(VisuallyHidden, null, __('Block Patterns'))
122
+ title: createElement(VisuallyHidden, null, __('Block patterns'))
123
123
  }, createElement("div", {
124
124
  className: "block-editor-inserter__quick-inserter-patterns"
125
125
  }, createElement(BlockPatternsList, {
@@ -1 +1 @@
1
- {"version":3,"names":["useMemo","useEffect","__","_n","sprintf","VisuallyHidden","useDebounce","useAsyncList","speak","useSelect","BlockTypesList","BlockPatternsList","__unstableInserterMenuExtension","InserterPanel","InserterNoResults","useInsertionPoint","usePatternsState","useBlockTypesState","searchBlockItems","searchItems","InserterListbox","orderBy","orderInserterBlockItems","store","blockEditorStore","INITIAL_INSERTER_RESULTS","EMPTY_ARRAY","InserterSearchResults","filterValue","onSelect","onHover","onHoverPattern","rootClientId","clientId","isAppender","__experimentalInsertionIndex","maxBlockPatterns","maxBlockTypes","showBlockDirectory","isDraggable","shouldFocusBlock","prioritizePatterns","selectBlockOnInsert","debouncedSpeak","prioritizedBlocks","select","blockListSettings","getBlockListSettings","prioritizedInserterBlocks","destinationRootClientId","onInsertBlocks","insertionIndex","blockTypes","blockTypeCategories","blockTypeCollections","onSelectBlockType","patterns","onClickPattern","filteredBlockPatterns","results","undefined","slice","maxBlockTypesToShow","length","filteredBlockTypes","nonPatternBlockTypes","filter","blockType","name","orderedItems","count","resultsFoundMessage","currentShownBlockTypes","step","currentShownPatterns","hasItems","blocksUI","createElement","title","items","label","patternsUI","className","shownPatterns","blockPatterns","Slot","fillProps","fills"],"sources":["@wordpress/block-editor/src/components/inserter/search-results.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useMemo, useEffect } from '@wordpress/element';\nimport { __, _n, sprintf } from '@wordpress/i18n';\nimport { VisuallyHidden } from '@wordpress/components';\nimport { useDebounce, useAsyncList } from '@wordpress/compose';\nimport { speak } from '@wordpress/a11y';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport BlockTypesList from '../block-types-list';\nimport BlockPatternsList from '../block-patterns-list';\nimport __unstableInserterMenuExtension from '../inserter-menu-extension';\nimport InserterPanel from './panel';\nimport InserterNoResults from './no-results';\nimport useInsertionPoint from './hooks/use-insertion-point';\nimport usePatternsState from './hooks/use-patterns-state';\nimport useBlockTypesState from './hooks/use-block-types-state';\nimport { searchBlockItems, searchItems } from './search-items';\nimport InserterListbox from '../inserter-listbox';\nimport { orderBy } from '../../utils/sorting';\nimport { orderInserterBlockItems } from '../../utils/order-inserter-block-items';\nimport { store as blockEditorStore } from '../../store';\n\nconst INITIAL_INSERTER_RESULTS = 9;\n/**\n * Shared reference to an empty array for cases where it is important to avoid\n * returning a new array reference on every invocation and rerendering the component.\n *\n * @type {Array}\n */\nconst EMPTY_ARRAY = [];\n\nfunction InserterSearchResults( {\n\tfilterValue,\n\tonSelect,\n\tonHover,\n\tonHoverPattern,\n\trootClientId,\n\tclientId,\n\tisAppender,\n\t__experimentalInsertionIndex,\n\tmaxBlockPatterns,\n\tmaxBlockTypes,\n\tshowBlockDirectory = false,\n\tisDraggable = true,\n\tshouldFocusBlock = true,\n\tprioritizePatterns,\n\tselectBlockOnInsert,\n} ) {\n\tconst debouncedSpeak = useDebounce( speak, 500 );\n\n\tconst { prioritizedBlocks } = useSelect(\n\t\t( select ) => {\n\t\t\tconst blockListSettings =\n\t\t\t\tselect( blockEditorStore ).getBlockListSettings( rootClientId );\n\n\t\t\treturn {\n\t\t\t\tprioritizedBlocks:\n\t\t\t\t\tblockListSettings?.prioritizedInserterBlocks || EMPTY_ARRAY,\n\t\t\t};\n\t\t},\n\t\t[ rootClientId ]\n\t);\n\n\tconst [ destinationRootClientId, onInsertBlocks ] = useInsertionPoint( {\n\t\tonSelect,\n\t\trootClientId,\n\t\tclientId,\n\t\tisAppender,\n\t\tinsertionIndex: __experimentalInsertionIndex,\n\t\tshouldFocusBlock,\n\t\tselectBlockOnInsert,\n\t} );\n\tconst [\n\t\tblockTypes,\n\t\tblockTypeCategories,\n\t\tblockTypeCollections,\n\t\tonSelectBlockType,\n\t] = useBlockTypesState( destinationRootClientId, onInsertBlocks );\n\tconst [ patterns, , onClickPattern ] = usePatternsState(\n\t\tonInsertBlocks,\n\t\tdestinationRootClientId\n\t);\n\n\tconst filteredBlockPatterns = useMemo( () => {\n\t\tif ( maxBlockPatterns === 0 ) {\n\t\t\treturn [];\n\t\t}\n\t\tconst results = searchItems( patterns, filterValue );\n\t\treturn maxBlockPatterns !== undefined\n\t\t\t? results.slice( 0, maxBlockPatterns )\n\t\t\t: results;\n\t}, [ filterValue, patterns, maxBlockPatterns ] );\n\n\tlet maxBlockTypesToShow = maxBlockTypes;\n\tif ( prioritizePatterns && filteredBlockPatterns.length > 2 ) {\n\t\tmaxBlockTypesToShow = 0;\n\t}\n\n\tconst filteredBlockTypes = useMemo( () => {\n\t\tif ( maxBlockTypesToShow === 0 ) {\n\t\t\treturn [];\n\t\t}\n\t\tconst nonPatternBlockTypes = blockTypes.filter(\n\t\t\t( blockType ) => blockType.name !== 'core/block'\n\t\t);\n\t\tlet orderedItems = orderBy( nonPatternBlockTypes, 'frecency', 'desc' );\n\n\t\tif ( ! filterValue && prioritizedBlocks.length ) {\n\t\t\torderedItems = orderInserterBlockItems(\n\t\t\t\torderedItems,\n\t\t\t\tprioritizedBlocks\n\t\t\t);\n\t\t}\n\n\t\tconst results = searchBlockItems(\n\t\t\torderedItems,\n\t\t\tblockTypeCategories,\n\t\t\tblockTypeCollections,\n\t\t\tfilterValue\n\t\t);\n\n\t\treturn maxBlockTypesToShow !== undefined\n\t\t\t? results.slice( 0, maxBlockTypesToShow )\n\t\t\t: results;\n\t}, [\n\t\tfilterValue,\n\t\tblockTypes,\n\t\tblockTypeCategories,\n\t\tblockTypeCollections,\n\t\tmaxBlockTypesToShow,\n\t\tprioritizedBlocks,\n\t] );\n\n\t// Announce search results on change.\n\tuseEffect( () => {\n\t\tif ( ! filterValue ) {\n\t\t\treturn;\n\t\t}\n\t\tconst count = filteredBlockTypes.length + filteredBlockPatterns.length;\n\t\tconst resultsFoundMessage = sprintf(\n\t\t\t/* translators: %d: number of results. */\n\t\t\t_n( '%d result found.', '%d results found.', count ),\n\t\t\tcount\n\t\t);\n\t\tdebouncedSpeak( resultsFoundMessage );\n\t}, [\n\t\tfilterValue,\n\t\tdebouncedSpeak,\n\t\tfilteredBlockTypes,\n\t\tfilteredBlockPatterns,\n\t] );\n\n\tconst currentShownBlockTypes = useAsyncList( filteredBlockTypes, {\n\t\tstep: INITIAL_INSERTER_RESULTS,\n\t} );\n\tconst currentShownPatterns = useAsyncList(\n\t\tcurrentShownBlockTypes.length === filteredBlockTypes.length\n\t\t\t? filteredBlockPatterns\n\t\t\t: EMPTY_ARRAY\n\t);\n\n\tconst hasItems =\n\t\tfilteredBlockTypes.length > 0 || filteredBlockPatterns.length > 0;\n\n\tconst blocksUI = !! filteredBlockTypes.length && (\n\t\t<InserterPanel\n\t\t\ttitle={ <VisuallyHidden>{ __( 'Blocks' ) }</VisuallyHidden> }\n\t\t>\n\t\t\t<BlockTypesList\n\t\t\t\titems={ currentShownBlockTypes }\n\t\t\t\tonSelect={ onSelectBlockType }\n\t\t\t\tonHover={ onHover }\n\t\t\t\tlabel={ __( 'Blocks' ) }\n\t\t\t\tisDraggable={ isDraggable }\n\t\t\t/>\n\t\t</InserterPanel>\n\t);\n\n\tconst patternsUI = !! filteredBlockPatterns.length && (\n\t\t<InserterPanel\n\t\t\ttitle={\n\t\t\t\t<VisuallyHidden>{ __( 'Block Patterns' ) }</VisuallyHidden>\n\t\t\t}\n\t\t>\n\t\t\t<div className=\"block-editor-inserter__quick-inserter-patterns\">\n\t\t\t\t<BlockPatternsList\n\t\t\t\t\tshownPatterns={ currentShownPatterns }\n\t\t\t\t\tblockPatterns={ filteredBlockPatterns }\n\t\t\t\t\tonClickPattern={ onClickPattern }\n\t\t\t\t\tonHover={ onHoverPattern }\n\t\t\t\t\tisDraggable={ isDraggable }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</InserterPanel>\n\t);\n\n\treturn (\n\t\t<InserterListbox>\n\t\t\t{ ! showBlockDirectory && ! hasItems && <InserterNoResults /> }\n\n\t\t\t{ prioritizePatterns ? patternsUI : blocksUI }\n\n\t\t\t{ !! filteredBlockTypes.length &&\n\t\t\t\t!! filteredBlockPatterns.length && (\n\t\t\t\t\t<div className=\"block-editor-inserter__quick-inserter-separator\" />\n\t\t\t\t) }\n\n\t\t\t{ prioritizePatterns ? blocksUI : patternsUI }\n\n\t\t\t{ showBlockDirectory && (\n\t\t\t\t<__unstableInserterMenuExtension.Slot\n\t\t\t\t\tfillProps={ {\n\t\t\t\t\t\tonSelect: onSelectBlockType,\n\t\t\t\t\t\tonHover,\n\t\t\t\t\t\tfilterValue,\n\t\t\t\t\t\thasItems,\n\t\t\t\t\t\trootClientId: destinationRootClientId,\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t{ ( fills ) => {\n\t\t\t\t\t\tif ( fills.length ) {\n\t\t\t\t\t\t\treturn fills;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( ! hasItems ) {\n\t\t\t\t\t\t\treturn <InserterNoResults />;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t} }\n\t\t\t\t</__unstableInserterMenuExtension.Slot>\n\t\t\t) }\n\t\t</InserterListbox>\n\t);\n}\n\nexport default InserterSearchResults;\n"],"mappings":"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"}
1
+ {"version":3,"names":["useMemo","useEffect","__","_n","sprintf","VisuallyHidden","useDebounce","useAsyncList","speak","useSelect","BlockTypesList","BlockPatternsList","__unstableInserterMenuExtension","InserterPanel","InserterNoResults","useInsertionPoint","usePatternsState","useBlockTypesState","searchBlockItems","searchItems","InserterListbox","orderBy","orderInserterBlockItems","store","blockEditorStore","INITIAL_INSERTER_RESULTS","EMPTY_ARRAY","InserterSearchResults","filterValue","onSelect","onHover","onHoverPattern","rootClientId","clientId","isAppender","__experimentalInsertionIndex","maxBlockPatterns","maxBlockTypes","showBlockDirectory","isDraggable","shouldFocusBlock","prioritizePatterns","selectBlockOnInsert","debouncedSpeak","prioritizedBlocks","select","blockListSettings","getBlockListSettings","prioritizedInserterBlocks","destinationRootClientId","onInsertBlocks","insertionIndex","blockTypes","blockTypeCategories","blockTypeCollections","onSelectBlockType","patterns","onClickPattern","filteredBlockPatterns","results","undefined","slice","maxBlockTypesToShow","length","filteredBlockTypes","nonPatternBlockTypes","filter","blockType","name","orderedItems","count","resultsFoundMessage","currentShownBlockTypes","step","currentShownPatterns","hasItems","blocksUI","createElement","title","items","label","patternsUI","className","shownPatterns","blockPatterns","Slot","fillProps","fills"],"sources":["@wordpress/block-editor/src/components/inserter/search-results.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useMemo, useEffect } from '@wordpress/element';\nimport { __, _n, sprintf } from '@wordpress/i18n';\nimport { VisuallyHidden } from '@wordpress/components';\nimport { useDebounce, useAsyncList } from '@wordpress/compose';\nimport { speak } from '@wordpress/a11y';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport BlockTypesList from '../block-types-list';\nimport BlockPatternsList from '../block-patterns-list';\nimport __unstableInserterMenuExtension from '../inserter-menu-extension';\nimport InserterPanel from './panel';\nimport InserterNoResults from './no-results';\nimport useInsertionPoint from './hooks/use-insertion-point';\nimport usePatternsState from './hooks/use-patterns-state';\nimport useBlockTypesState from './hooks/use-block-types-state';\nimport { searchBlockItems, searchItems } from './search-items';\nimport InserterListbox from '../inserter-listbox';\nimport { orderBy } from '../../utils/sorting';\nimport { orderInserterBlockItems } from '../../utils/order-inserter-block-items';\nimport { store as blockEditorStore } from '../../store';\n\nconst INITIAL_INSERTER_RESULTS = 9;\n/**\n * Shared reference to an empty array for cases where it is important to avoid\n * returning a new array reference on every invocation and rerendering the component.\n *\n * @type {Array}\n */\nconst EMPTY_ARRAY = [];\n\nfunction InserterSearchResults( {\n\tfilterValue,\n\tonSelect,\n\tonHover,\n\tonHoverPattern,\n\trootClientId,\n\tclientId,\n\tisAppender,\n\t__experimentalInsertionIndex,\n\tmaxBlockPatterns,\n\tmaxBlockTypes,\n\tshowBlockDirectory = false,\n\tisDraggable = true,\n\tshouldFocusBlock = true,\n\tprioritizePatterns,\n\tselectBlockOnInsert,\n} ) {\n\tconst debouncedSpeak = useDebounce( speak, 500 );\n\n\tconst { prioritizedBlocks } = useSelect(\n\t\t( select ) => {\n\t\t\tconst blockListSettings =\n\t\t\t\tselect( blockEditorStore ).getBlockListSettings( rootClientId );\n\n\t\t\treturn {\n\t\t\t\tprioritizedBlocks:\n\t\t\t\t\tblockListSettings?.prioritizedInserterBlocks || EMPTY_ARRAY,\n\t\t\t};\n\t\t},\n\t\t[ rootClientId ]\n\t);\n\n\tconst [ destinationRootClientId, onInsertBlocks ] = useInsertionPoint( {\n\t\tonSelect,\n\t\trootClientId,\n\t\tclientId,\n\t\tisAppender,\n\t\tinsertionIndex: __experimentalInsertionIndex,\n\t\tshouldFocusBlock,\n\t\tselectBlockOnInsert,\n\t} );\n\tconst [\n\t\tblockTypes,\n\t\tblockTypeCategories,\n\t\tblockTypeCollections,\n\t\tonSelectBlockType,\n\t] = useBlockTypesState( destinationRootClientId, onInsertBlocks );\n\tconst [ patterns, , onClickPattern ] = usePatternsState(\n\t\tonInsertBlocks,\n\t\tdestinationRootClientId\n\t);\n\n\tconst filteredBlockPatterns = useMemo( () => {\n\t\tif ( maxBlockPatterns === 0 ) {\n\t\t\treturn [];\n\t\t}\n\t\tconst results = searchItems( patterns, filterValue );\n\t\treturn maxBlockPatterns !== undefined\n\t\t\t? results.slice( 0, maxBlockPatterns )\n\t\t\t: results;\n\t}, [ filterValue, patterns, maxBlockPatterns ] );\n\n\tlet maxBlockTypesToShow = maxBlockTypes;\n\tif ( prioritizePatterns && filteredBlockPatterns.length > 2 ) {\n\t\tmaxBlockTypesToShow = 0;\n\t}\n\n\tconst filteredBlockTypes = useMemo( () => {\n\t\tif ( maxBlockTypesToShow === 0 ) {\n\t\t\treturn [];\n\t\t}\n\t\tconst nonPatternBlockTypes = blockTypes.filter(\n\t\t\t( blockType ) => blockType.name !== 'core/block'\n\t\t);\n\t\tlet orderedItems = orderBy( nonPatternBlockTypes, 'frecency', 'desc' );\n\n\t\tif ( ! filterValue && prioritizedBlocks.length ) {\n\t\t\torderedItems = orderInserterBlockItems(\n\t\t\t\torderedItems,\n\t\t\t\tprioritizedBlocks\n\t\t\t);\n\t\t}\n\n\t\tconst results = searchBlockItems(\n\t\t\torderedItems,\n\t\t\tblockTypeCategories,\n\t\t\tblockTypeCollections,\n\t\t\tfilterValue\n\t\t);\n\n\t\treturn maxBlockTypesToShow !== undefined\n\t\t\t? results.slice( 0, maxBlockTypesToShow )\n\t\t\t: results;\n\t}, [\n\t\tfilterValue,\n\t\tblockTypes,\n\t\tblockTypeCategories,\n\t\tblockTypeCollections,\n\t\tmaxBlockTypesToShow,\n\t\tprioritizedBlocks,\n\t] );\n\n\t// Announce search results on change.\n\tuseEffect( () => {\n\t\tif ( ! filterValue ) {\n\t\t\treturn;\n\t\t}\n\t\tconst count = filteredBlockTypes.length + filteredBlockPatterns.length;\n\t\tconst resultsFoundMessage = sprintf(\n\t\t\t/* translators: %d: number of results. */\n\t\t\t_n( '%d result found.', '%d results found.', count ),\n\t\t\tcount\n\t\t);\n\t\tdebouncedSpeak( resultsFoundMessage );\n\t}, [\n\t\tfilterValue,\n\t\tdebouncedSpeak,\n\t\tfilteredBlockTypes,\n\t\tfilteredBlockPatterns,\n\t] );\n\n\tconst currentShownBlockTypes = useAsyncList( filteredBlockTypes, {\n\t\tstep: INITIAL_INSERTER_RESULTS,\n\t} );\n\tconst currentShownPatterns = useAsyncList(\n\t\tcurrentShownBlockTypes.length === filteredBlockTypes.length\n\t\t\t? filteredBlockPatterns\n\t\t\t: EMPTY_ARRAY\n\t);\n\n\tconst hasItems =\n\t\tfilteredBlockTypes.length > 0 || filteredBlockPatterns.length > 0;\n\n\tconst blocksUI = !! filteredBlockTypes.length && (\n\t\t<InserterPanel\n\t\t\ttitle={ <VisuallyHidden>{ __( 'Blocks' ) }</VisuallyHidden> }\n\t\t>\n\t\t\t<BlockTypesList\n\t\t\t\titems={ currentShownBlockTypes }\n\t\t\t\tonSelect={ onSelectBlockType }\n\t\t\t\tonHover={ onHover }\n\t\t\t\tlabel={ __( 'Blocks' ) }\n\t\t\t\tisDraggable={ isDraggable }\n\t\t\t/>\n\t\t</InserterPanel>\n\t);\n\n\tconst patternsUI = !! filteredBlockPatterns.length && (\n\t\t<InserterPanel\n\t\t\ttitle={\n\t\t\t\t<VisuallyHidden>{ __( 'Block patterns' ) }</VisuallyHidden>\n\t\t\t}\n\t\t>\n\t\t\t<div className=\"block-editor-inserter__quick-inserter-patterns\">\n\t\t\t\t<BlockPatternsList\n\t\t\t\t\tshownPatterns={ currentShownPatterns }\n\t\t\t\t\tblockPatterns={ filteredBlockPatterns }\n\t\t\t\t\tonClickPattern={ onClickPattern }\n\t\t\t\t\tonHover={ onHoverPattern }\n\t\t\t\t\tisDraggable={ isDraggable }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</InserterPanel>\n\t);\n\n\treturn (\n\t\t<InserterListbox>\n\t\t\t{ ! showBlockDirectory && ! hasItems && <InserterNoResults /> }\n\n\t\t\t{ prioritizePatterns ? patternsUI : blocksUI }\n\n\t\t\t{ !! filteredBlockTypes.length &&\n\t\t\t\t!! filteredBlockPatterns.length && (\n\t\t\t\t\t<div className=\"block-editor-inserter__quick-inserter-separator\" />\n\t\t\t\t) }\n\n\t\t\t{ prioritizePatterns ? blocksUI : patternsUI }\n\n\t\t\t{ showBlockDirectory && (\n\t\t\t\t<__unstableInserterMenuExtension.Slot\n\t\t\t\t\tfillProps={ {\n\t\t\t\t\t\tonSelect: onSelectBlockType,\n\t\t\t\t\t\tonHover,\n\t\t\t\t\t\tfilterValue,\n\t\t\t\t\t\thasItems,\n\t\t\t\t\t\trootClientId: destinationRootClientId,\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t{ ( fills ) => {\n\t\t\t\t\t\tif ( fills.length ) {\n\t\t\t\t\t\t\treturn fills;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( ! hasItems ) {\n\t\t\t\t\t\t\treturn <InserterNoResults />;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t} }\n\t\t\t\t</__unstableInserterMenuExtension.Slot>\n\t\t\t) }\n\t\t</InserterListbox>\n\t);\n}\n\nexport default InserterSearchResults;\n"],"mappings":"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"}
@@ -6,7 +6,8 @@ import { __ } from '@wordpress/i18n';
6
6
  import { MenuItem, TextHighlight } from '@wordpress/components';
7
7
  import { Icon, globe, page, tag, postList, category, file } from '@wordpress/icons';
8
8
  import { __unstableStripHTML as stripHTML } from '@wordpress/dom';
9
- import { safeDecodeURI, filterURLForDisplay } from '@wordpress/url';
9
+ import { safeDecodeURI, filterURLForDisplay, getPath } from '@wordpress/url';
10
+ import { pipe } from '@wordpress/compose';
10
11
  const ICONS_MAP = {
11
12
  post: postList,
12
13
  page,
@@ -32,6 +33,40 @@ function SearchItemIcon({
32
33
  }
33
34
  return null;
34
35
  }
36
+
37
+ /**
38
+ * Adds a leading slash to a url if it doesn't already have one.
39
+ * @param {string} url the url to add a leading slash to.
40
+ * @return {string} the url with a leading slash.
41
+ */
42
+ function addLeadingSlash(url) {
43
+ const trimmedURL = url?.trim();
44
+ if (!trimmedURL?.length) return url;
45
+ return url?.replace(/^\/?/, '/');
46
+ }
47
+ function removeTrailingSlash(url) {
48
+ const trimmedURL = url?.trim();
49
+ if (!trimmedURL?.length) return url;
50
+ return url?.replace(/\/$/, '');
51
+ }
52
+ const partialRight = (fn, ...partialArgs) => (...args) => fn(...args, ...partialArgs);
53
+ const defaultTo = d => v => {
54
+ return v === null || v === undefined || v !== v ? d : v;
55
+ };
56
+
57
+ /**
58
+ * Prepares a URL for display in the UI.
59
+ * - decodes the URL.
60
+ * - filters it (removes protocol, www, etc.).
61
+ * - truncates it if necessary.
62
+ * - adds a leading slash.
63
+ * @param {string} url the url.
64
+ * @return {string} the processed url to display.
65
+ */
66
+ function getURLForDisplay(url) {
67
+ if (!url) return url;
68
+ return pipe(safeDecodeURI, getPath, defaultTo(''), partialRight(filterURLForDisplay, 24), removeTrailingSlash, addLeadingSlash)(url);
69
+ }
35
70
  export const LinkControlSearchItem = ({
36
71
  itemProps,
37
72
  suggestion,
@@ -40,7 +75,7 @@ export const LinkControlSearchItem = ({
40
75
  isURL = false,
41
76
  shouldShowType = false
42
77
  }) => {
43
- const info = isURL ? __('Press ENTER to add this link') : filterURLForDisplay(safeDecodeURI(suggestion?.url), 24);
78
+ const info = isURL ? __('Press ENTER to add this link') : getURLForDisplay(suggestion.url);
44
79
  return createElement(MenuItem, {
45
80
  ...itemProps,
46
81
  info: info,
@@ -1 +1 @@
1
- {"version":3,"names":["__","MenuItem","TextHighlight","Icon","globe","page","tag","postList","category","file","__unstableStripHTML","stripHTML","safeDecodeURI","filterURLForDisplay","ICONS_MAP","post","post_tag","attachment","SearchItemIcon","isURL","suggestion","icon","type","createElement","className","LinkControlSearchItem","itemProps","searchTerm","onClick","shouldShowType","info","url","iconPosition","shortcut","getVisualTypeName","text","title","highlight","isFrontPage"],"sources":["@wordpress/block-editor/src/components/link-control/search-item.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { MenuItem, TextHighlight } from '@wordpress/components';\nimport {\n\tIcon,\n\tglobe,\n\tpage,\n\ttag,\n\tpostList,\n\tcategory,\n\tfile,\n} from '@wordpress/icons';\nimport { __unstableStripHTML as stripHTML } from '@wordpress/dom';\nimport { safeDecodeURI, filterURLForDisplay } from '@wordpress/url';\n\nconst ICONS_MAP = {\n\tpost: postList,\n\tpage,\n\tpost_tag: tag,\n\tcategory,\n\tattachment: file,\n};\n\nfunction SearchItemIcon( { isURL, suggestion } ) {\n\tlet icon = null;\n\n\tif ( isURL ) {\n\t\ticon = globe;\n\t} else if ( suggestion.type in ICONS_MAP ) {\n\t\ticon = ICONS_MAP[ suggestion.type ];\n\t}\n\n\tif ( icon ) {\n\t\treturn (\n\t\t\t<Icon\n\t\t\t\tclassName=\"block-editor-link-control__search-item-icon\"\n\t\t\t\ticon={ icon }\n\t\t\t/>\n\t\t);\n\t}\n\n\treturn null;\n}\n\nexport const LinkControlSearchItem = ( {\n\titemProps,\n\tsuggestion,\n\tsearchTerm,\n\tonClick,\n\tisURL = false,\n\tshouldShowType = false,\n} ) => {\n\tconst info = isURL\n\t\t? __( 'Press ENTER to add this link' )\n\t\t: filterURLForDisplay( safeDecodeURI( suggestion?.url ), 24 );\n\n\treturn (\n\t\t<MenuItem\n\t\t\t{ ...itemProps }\n\t\t\tinfo={ info }\n\t\t\ticonPosition=\"left\"\n\t\t\ticon={\n\t\t\t\t<SearchItemIcon suggestion={ suggestion } isURL={ isURL } />\n\t\t\t}\n\t\t\tonClick={ onClick }\n\t\t\tshortcut={ shouldShowType && getVisualTypeName( suggestion ) }\n\t\t\tclassName=\"block-editor-link-control__search-item\"\n\t\t>\n\t\t\t<TextHighlight\n\t\t\t\t// The component expects a plain text string.\n\t\t\t\ttext={ stripHTML( suggestion.title ) }\n\t\t\t\thighlight={ searchTerm }\n\t\t\t/>\n\t\t</MenuItem>\n\t);\n};\n\nfunction getVisualTypeName( suggestion ) {\n\tif ( suggestion.isFrontPage ) {\n\t\treturn 'front page';\n\t}\n\n\t// Rename 'post_tag' to 'tag'. Ideally, the API would return the localised CPT or taxonomy label.\n\treturn suggestion.type === 'post_tag' ? 'tag' : suggestion.type;\n}\n\nexport default LinkControlSearchItem;\n"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,EAAE,QAAQ,iBAAiB;AACpC,SAASC,QAAQ,EAAEC,aAAa,QAAQ,uBAAuB;AAC/D,SACCC,IAAI,EACJC,KAAK,EACLC,IAAI,EACJC,GAAG,EACHC,QAAQ,EACRC,QAAQ,EACRC,IAAI,QACE,kBAAkB;AACzB,SAASC,mBAAmB,IAAIC,SAAS,QAAQ,gBAAgB;AACjE,SAASC,aAAa,EAAEC,mBAAmB,QAAQ,gBAAgB;AAEnE,MAAMC,SAAS,GAAG;EACjBC,IAAI,EAAER,QAAQ;EACdF,IAAI;EACJW,QAAQ,EAAEV,GAAG;EACbE,QAAQ;EACRS,UAAU,EAAER;AACb,CAAC;AAED,SAASS,cAAcA,CAAE;EAAEC,KAAK;EAAEC;AAAW,CAAC,EAAG;EAChD,IAAIC,IAAI,GAAG,IAAI;EAEf,IAAKF,KAAK,EAAG;IACZE,IAAI,GAAGjB,KAAK;EACb,CAAC,MAAM,IAAKgB,UAAU,CAACE,IAAI,IAAIR,SAAS,EAAG;IAC1CO,IAAI,GAAGP,SAAS,CAAEM,UAAU,CAACE,IAAI,CAAE;EACpC;EAEA,IAAKD,IAAI,EAAG;IACX,OACCE,aAAA,CAACpB,IAAI;MACJqB,SAAS,EAAC,6CAA6C;MACvDH,IAAI,EAAGA;IAAM,CACb,CAAC;EAEJ;EAEA,OAAO,IAAI;AACZ;AAEA,OAAO,MAAMI,qBAAqB,GAAGA,CAAE;EACtCC,SAAS;EACTN,UAAU;EACVO,UAAU;EACVC,OAAO;EACPT,KAAK,GAAG,KAAK;EACbU,cAAc,GAAG;AAClB,CAAC,KAAM;EACN,MAAMC,IAAI,GAAGX,KAAK,GACfnB,EAAE,CAAE,8BAA+B,CAAC,GACpCa,mBAAmB,CAAED,aAAa,CAAEQ,UAAU,EAAEW,GAAI,CAAC,EAAE,EAAG,CAAC;EAE9D,OACCR,aAAA,CAACtB,QAAQ;IAAA,GACHyB,SAAS;IACdI,IAAI,EAAGA,IAAM;IACbE,YAAY,EAAC,MAAM;IACnBX,IAAI,EACHE,aAAA,CAACL,cAAc;MAACE,UAAU,EAAGA,UAAY;MAACD,KAAK,EAAGA;IAAO,CAAE,CAC3D;IACDS,OAAO,EAAGA,OAAS;IACnBK,QAAQ,EAAGJ,cAAc,IAAIK,iBAAiB,CAAEd,UAAW,CAAG;IAC9DI,SAAS,EAAC;EAAwC,GAElDD,aAAA,CAACrB;EACA;EAAA;IACAiC,IAAI,EAAGxB,SAAS,CAAES,UAAU,CAACgB,KAAM,CAAG;IACtCC,SAAS,EAAGV;EAAY,CACxB,CACQ,CAAC;AAEb,CAAC;AAED,SAASO,iBAAiBA,CAAEd,UAAU,EAAG;EACxC,IAAKA,UAAU,CAACkB,WAAW,EAAG;IAC7B,OAAO,YAAY;EACpB;;EAEA;EACA,OAAOlB,UAAU,CAACE,IAAI,KAAK,UAAU,GAAG,KAAK,GAAGF,UAAU,CAACE,IAAI;AAChE;AAEA,eAAeG,qBAAqB"}
1
+ {"version":3,"names":["__","MenuItem","TextHighlight","Icon","globe","page","tag","postList","category","file","__unstableStripHTML","stripHTML","safeDecodeURI","filterURLForDisplay","getPath","pipe","ICONS_MAP","post","post_tag","attachment","SearchItemIcon","isURL","suggestion","icon","type","createElement","className","addLeadingSlash","url","trimmedURL","trim","length","replace","removeTrailingSlash","partialRight","fn","partialArgs","args","defaultTo","d","v","undefined","getURLForDisplay","LinkControlSearchItem","itemProps","searchTerm","onClick","shouldShowType","info","iconPosition","shortcut","getVisualTypeName","text","title","highlight","isFrontPage"],"sources":["@wordpress/block-editor/src/components/link-control/search-item.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { MenuItem, TextHighlight } from '@wordpress/components';\nimport {\n\tIcon,\n\tglobe,\n\tpage,\n\ttag,\n\tpostList,\n\tcategory,\n\tfile,\n} from '@wordpress/icons';\nimport { __unstableStripHTML as stripHTML } from '@wordpress/dom';\nimport { safeDecodeURI, filterURLForDisplay, getPath } from '@wordpress/url';\nimport { pipe } from '@wordpress/compose';\n\nconst ICONS_MAP = {\n\tpost: postList,\n\tpage,\n\tpost_tag: tag,\n\tcategory,\n\tattachment: file,\n};\n\nfunction SearchItemIcon( { isURL, suggestion } ) {\n\tlet icon = null;\n\n\tif ( isURL ) {\n\t\ticon = globe;\n\t} else if ( suggestion.type in ICONS_MAP ) {\n\t\ticon = ICONS_MAP[ suggestion.type ];\n\t}\n\n\tif ( icon ) {\n\t\treturn (\n\t\t\t<Icon\n\t\t\t\tclassName=\"block-editor-link-control__search-item-icon\"\n\t\t\t\ticon={ icon }\n\t\t\t/>\n\t\t);\n\t}\n\n\treturn null;\n}\n\n/**\n * Adds a leading slash to a url if it doesn't already have one.\n * @param {string} url the url to add a leading slash to.\n * @return {string} the url with a leading slash.\n */\nfunction addLeadingSlash( url ) {\n\tconst trimmedURL = url?.trim();\n\n\tif ( ! trimmedURL?.length ) return url;\n\n\treturn url?.replace( /^\\/?/, '/' );\n}\n\nfunction removeTrailingSlash( url ) {\n\tconst trimmedURL = url?.trim();\n\n\tif ( ! trimmedURL?.length ) return url;\n\n\treturn url?.replace( /\\/$/, '' );\n}\n\nconst partialRight =\n\t( fn, ...partialArgs ) =>\n\t( ...args ) =>\n\t\tfn( ...args, ...partialArgs );\n\nconst defaultTo = ( d ) => ( v ) => {\n\treturn v === null || v === undefined || v !== v ? d : v;\n};\n\n/**\n * Prepares a URL for display in the UI.\n * - decodes the URL.\n * - filters it (removes protocol, www, etc.).\n * - truncates it if necessary.\n * - adds a leading slash.\n * @param {string} url the url.\n * @return {string} the processed url to display.\n */\nfunction getURLForDisplay( url ) {\n\tif ( ! url ) return url;\n\n\treturn pipe(\n\t\tsafeDecodeURI,\n\t\tgetPath,\n\t\tdefaultTo( '' ),\n\t\tpartialRight( filterURLForDisplay, 24 ),\n\t\tremoveTrailingSlash,\n\t\taddLeadingSlash\n\t)( url );\n}\n\nexport const LinkControlSearchItem = ( {\n\titemProps,\n\tsuggestion,\n\tsearchTerm,\n\tonClick,\n\tisURL = false,\n\tshouldShowType = false,\n} ) => {\n\tconst info = isURL\n\t\t? __( 'Press ENTER to add this link' )\n\t\t: getURLForDisplay( suggestion.url );\n\n\treturn (\n\t\t<MenuItem\n\t\t\t{ ...itemProps }\n\t\t\tinfo={ info }\n\t\t\ticonPosition=\"left\"\n\t\t\ticon={\n\t\t\t\t<SearchItemIcon suggestion={ suggestion } isURL={ isURL } />\n\t\t\t}\n\t\t\tonClick={ onClick }\n\t\t\tshortcut={ shouldShowType && getVisualTypeName( suggestion ) }\n\t\t\tclassName=\"block-editor-link-control__search-item\"\n\t\t>\n\t\t\t<TextHighlight\n\t\t\t\t// The component expects a plain text string.\n\t\t\t\ttext={ stripHTML( suggestion.title ) }\n\t\t\t\thighlight={ searchTerm }\n\t\t\t/>\n\t\t</MenuItem>\n\t);\n};\n\nfunction getVisualTypeName( suggestion ) {\n\tif ( suggestion.isFrontPage ) {\n\t\treturn 'front page';\n\t}\n\n\t// Rename 'post_tag' to 'tag'. Ideally, the API would return the localised CPT or taxonomy label.\n\treturn suggestion.type === 'post_tag' ? 'tag' : suggestion.type;\n}\n\nexport default LinkControlSearchItem;\n"],"mappings":"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"}
@@ -40,7 +40,8 @@ function ToolSelector(props, ref) {
40
40
  label: __('Tools')
41
41
  }),
42
42
  popoverProps: {
43
- placement: 'bottom-start'
43
+ placement: 'bottom-start',
44
+ variant: undefined
44
45
  },
45
46
  renderContent: () => createElement(Fragment, null, createElement(NavigableMenu, {
46
47
  role: "menu",
@@ -1 +1 @@
1
- {"version":3,"names":["Dropdown","Button","MenuItemsChoice","SVG","Path","NavigableMenu","__","useSelect","useDispatch","forwardRef","Icon","edit","editIcon","store","blockEditorStore","selectIcon","createElement","xmlns","width","height","viewBox","d","ToolSelector","props","ref","mode","select","__unstableGetEditorMode","__unstableSetEditorMode","renderToggle","isOpen","onToggle","icon","onClick","label","popoverProps","placement","renderContent","Fragment","role","value","onSelect","choices","className"],"sources":["@wordpress/block-editor/src/components/tool-selector/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tDropdown,\n\tButton,\n\tMenuItemsChoice,\n\tSVG,\n\tPath,\n\tNavigableMenu,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { forwardRef } from '@wordpress/element';\nimport { Icon, edit as editIcon } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\n\nconst selectIcon = (\n\t<SVG\n\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\twidth=\"24\"\n\t\theight=\"24\"\n\t\tviewBox=\"0 0 24 24\"\n\t>\n\t\t<Path d=\"M9.4 20.5L5.2 3.8l14.6 9-2 .3c-.2 0-.4.1-.7.1-.9.2-1.6.3-2.2.5-.8.3-1.4.5-1.8.8-.4.3-.8.8-1.3 1.5-.4.5-.8 1.2-1.2 2l-.3.6-.9 1.9zM7.6 7.1l2.4 9.3c.2-.4.5-.8.7-1.1.6-.8 1.1-1.4 1.6-1.8.5-.4 1.3-.8 2.2-1.1l1.2-.3-8.1-5z\" />\n\t</SVG>\n);\n\nfunction ToolSelector( props, ref ) {\n\tconst mode = useSelect(\n\t\t( select ) => select( blockEditorStore ).__unstableGetEditorMode(),\n\t\t[]\n\t);\n\tconst { __unstableSetEditorMode } = useDispatch( blockEditorStore );\n\n\treturn (\n\t\t<Dropdown\n\t\t\trenderToggle={ ( { isOpen, onToggle } ) => (\n\t\t\t\t<Button\n\t\t\t\t\t{ ...props }\n\t\t\t\t\tref={ ref }\n\t\t\t\t\ticon={ mode === 'navigation' ? selectIcon : editIcon }\n\t\t\t\t\taria-expanded={ isOpen }\n\t\t\t\t\taria-haspopup=\"true\"\n\t\t\t\t\tonClick={ onToggle }\n\t\t\t\t\t/* translators: button label text should, if possible, be under 16 characters. */\n\t\t\t\t\tlabel={ __( 'Tools' ) }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\tpopoverProps={ { placement: 'bottom-start' } }\n\t\t\trenderContent={ () => (\n\t\t\t\t<>\n\t\t\t\t\t<NavigableMenu role=\"menu\" aria-label={ __( 'Tools' ) }>\n\t\t\t\t\t\t<MenuItemsChoice\n\t\t\t\t\t\t\tvalue={\n\t\t\t\t\t\t\t\tmode === 'navigation' ? 'navigation' : 'edit'\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tonSelect={ __unstableSetEditorMode }\n\t\t\t\t\t\t\tchoices={ [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tvalue: 'edit',\n\t\t\t\t\t\t\t\t\tlabel: (\n\t\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t\t<Icon icon={ editIcon } />\n\t\t\t\t\t\t\t\t\t\t\t{ __( 'Edit' ) }\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},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tvalue: 'navigation',\n\t\t\t\t\t\t\t\t\tlabel: (\n\t\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t\t{ selectIcon }\n\t\t\t\t\t\t\t\t\t\t\t{ __( 'Select' ) }\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},\n\t\t\t\t\t\t\t] }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</NavigableMenu>\n\t\t\t\t\t<div className=\"block-editor-tool-selector__help\">\n\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t'Tools provide different interactions for selecting, navigating, and editing blocks. Toggle between select and edit by pressing Escape and Enter.'\n\t\t\t\t\t\t) }\n\t\t\t\t\t</div>\n\t\t\t\t</>\n\t\t\t) }\n\t\t/>\n\t);\n}\n\nexport default forwardRef( ToolSelector );\n"],"mappings":";AAAA;AACA;AACA;AACA,SACCA,QAAQ,EACRC,MAAM,EACNC,eAAe,EACfC,GAAG,EACHC,IAAI,EACJC,aAAa,QACP,uBAAuB;AAC9B,SAASC,EAAE,QAAQ,iBAAiB;AACpC,SAASC,SAAS,EAAEC,WAAW,QAAQ,iBAAiB;AACxD,SAASC,UAAU,QAAQ,oBAAoB;AAC/C,SAASC,IAAI,EAAEC,IAAI,IAAIC,QAAQ,QAAQ,kBAAkB;;AAEzD;AACA;AACA;AACA,SAASC,KAAK,IAAIC,gBAAgB,QAAQ,aAAa;AAEvD,MAAMC,UAAU,GACfC,aAAA,CAACb,GAAG;EACHc,KAAK,EAAC,4BAA4B;EAClCC,KAAK,EAAC,IAAI;EACVC,MAAM,EAAC,IAAI;EACXC,OAAO,EAAC;AAAW,GAEnBJ,aAAA,CAACZ,IAAI;EAACiB,CAAC,EAAC;AAA2N,CAAE,CACjO,CACL;AAED,SAASC,YAAYA,CAAEC,KAAK,EAAEC,GAAG,EAAG;EACnC,MAAMC,IAAI,GAAGlB,SAAS,CACnBmB,MAAM,IAAMA,MAAM,CAAEZ,gBAAiB,CAAC,CAACa,uBAAuB,CAAC,CAAC,EAClE,EACD,CAAC;EACD,MAAM;IAAEC;EAAwB,CAAC,GAAGpB,WAAW,CAAEM,gBAAiB,CAAC;EAEnE,OACCE,aAAA,CAAChB,QAAQ;IACR6B,YAAY,EAAGA,CAAE;MAAEC,MAAM;MAAEC;IAAS,CAAC,KACpCf,aAAA,CAACf,MAAM;MAAA,GACDsB,KAAK;MACVC,GAAG,EAAGA,GAAK;MACXQ,IAAI,EAAGP,IAAI,KAAK,YAAY,GAAGV,UAAU,GAAGH,QAAU;MACtD,iBAAgBkB,MAAQ;MACxB,iBAAc,MAAM;MACpBG,OAAO,EAAGF;MACV;MACAG,KAAK,EAAG5B,EAAE,CAAE,OAAQ;IAAG,CACvB,CACC;IACH6B,YAAY,EAAG;MAAEC,SAAS,EAAE;IAAe,CAAG;IAC9CC,aAAa,EAAGA,CAAA,KACfrB,aAAA,CAAAsB,QAAA,QACCtB,aAAA,CAACX,aAAa;MAACkC,IAAI,EAAC,MAAM;MAAC,cAAajC,EAAE,CAAE,OAAQ;IAAG,GACtDU,aAAA,CAACd,eAAe;MACfsC,KAAK,EACJf,IAAI,KAAK,YAAY,GAAG,YAAY,GAAG,MACvC;MACDgB,QAAQ,EAAGb,uBAAyB;MACpCc,OAAO,EAAG,CACT;QACCF,KAAK,EAAE,MAAM;QACbN,KAAK,EACJlB,aAAA,CAAAsB,QAAA,QACCtB,aAAA,CAACN,IAAI;UAACsB,IAAI,EAAGpB;QAAU,CAAE,CAAC,EACxBN,EAAE,CAAE,MAAO,CACZ;MAEJ,CAAC,EACD;QACCkC,KAAK,EAAE,YAAY;QACnBN,KAAK,EACJlB,aAAA,CAAAsB,QAAA,QACGvB,UAAU,EACVT,EAAE,CAAE,QAAS,CACd;MAEJ,CAAC;IACC,CACH,CACa,CAAC,EAChBU,aAAA;MAAK2B,SAAS,EAAC;IAAkC,GAC9CrC,EAAE,CACH,kJACD,CACI,CACJ;EACA,CACH,CAAC;AAEJ;AAEA,eAAeG,UAAU,CAAEa,YAAa,CAAC"}
1
+ {"version":3,"names":["Dropdown","Button","MenuItemsChoice","SVG","Path","NavigableMenu","__","useSelect","useDispatch","forwardRef","Icon","edit","editIcon","store","blockEditorStore","selectIcon","createElement","xmlns","width","height","viewBox","d","ToolSelector","props","ref","mode","select","__unstableGetEditorMode","__unstableSetEditorMode","renderToggle","isOpen","onToggle","icon","onClick","label","popoverProps","placement","variant","undefined","renderContent","Fragment","role","value","onSelect","choices","className"],"sources":["@wordpress/block-editor/src/components/tool-selector/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tDropdown,\n\tButton,\n\tMenuItemsChoice,\n\tSVG,\n\tPath,\n\tNavigableMenu,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { forwardRef } from '@wordpress/element';\nimport { Icon, edit as editIcon } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\n\nconst selectIcon = (\n\t<SVG\n\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\twidth=\"24\"\n\t\theight=\"24\"\n\t\tviewBox=\"0 0 24 24\"\n\t>\n\t\t<Path d=\"M9.4 20.5L5.2 3.8l14.6 9-2 .3c-.2 0-.4.1-.7.1-.9.2-1.6.3-2.2.5-.8.3-1.4.5-1.8.8-.4.3-.8.8-1.3 1.5-.4.5-.8 1.2-1.2 2l-.3.6-.9 1.9zM7.6 7.1l2.4 9.3c.2-.4.5-.8.7-1.1.6-.8 1.1-1.4 1.6-1.8.5-.4 1.3-.8 2.2-1.1l1.2-.3-8.1-5z\" />\n\t</SVG>\n);\n\nfunction ToolSelector( props, ref ) {\n\tconst mode = useSelect(\n\t\t( select ) => select( blockEditorStore ).__unstableGetEditorMode(),\n\t\t[]\n\t);\n\tconst { __unstableSetEditorMode } = useDispatch( blockEditorStore );\n\n\treturn (\n\t\t<Dropdown\n\t\t\trenderToggle={ ( { isOpen, onToggle } ) => (\n\t\t\t\t<Button\n\t\t\t\t\t{ ...props }\n\t\t\t\t\tref={ ref }\n\t\t\t\t\ticon={ mode === 'navigation' ? selectIcon : editIcon }\n\t\t\t\t\taria-expanded={ isOpen }\n\t\t\t\t\taria-haspopup=\"true\"\n\t\t\t\t\tonClick={ onToggle }\n\t\t\t\t\t/* translators: button label text should, if possible, be under 16 characters. */\n\t\t\t\t\tlabel={ __( 'Tools' ) }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\tpopoverProps={ { placement: 'bottom-start', variant: undefined } }\n\t\t\trenderContent={ () => (\n\t\t\t\t<>\n\t\t\t\t\t<NavigableMenu role=\"menu\" aria-label={ __( 'Tools' ) }>\n\t\t\t\t\t\t<MenuItemsChoice\n\t\t\t\t\t\t\tvalue={\n\t\t\t\t\t\t\t\tmode === 'navigation' ? 'navigation' : 'edit'\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tonSelect={ __unstableSetEditorMode }\n\t\t\t\t\t\t\tchoices={ [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tvalue: 'edit',\n\t\t\t\t\t\t\t\t\tlabel: (\n\t\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t\t<Icon icon={ editIcon } />\n\t\t\t\t\t\t\t\t\t\t\t{ __( 'Edit' ) }\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},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tvalue: 'navigation',\n\t\t\t\t\t\t\t\t\tlabel: (\n\t\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t\t{ selectIcon }\n\t\t\t\t\t\t\t\t\t\t\t{ __( 'Select' ) }\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},\n\t\t\t\t\t\t\t] }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</NavigableMenu>\n\t\t\t\t\t<div className=\"block-editor-tool-selector__help\">\n\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t'Tools provide different interactions for selecting, navigating, and editing blocks. Toggle between select and edit by pressing Escape and Enter.'\n\t\t\t\t\t\t) }\n\t\t\t\t\t</div>\n\t\t\t\t</>\n\t\t\t) }\n\t\t/>\n\t);\n}\n\nexport default forwardRef( ToolSelector );\n"],"mappings":";AAAA;AACA;AACA;AACA,SACCA,QAAQ,EACRC,MAAM,EACNC,eAAe,EACfC,GAAG,EACHC,IAAI,EACJC,aAAa,QACP,uBAAuB;AAC9B,SAASC,EAAE,QAAQ,iBAAiB;AACpC,SAASC,SAAS,EAAEC,WAAW,QAAQ,iBAAiB;AACxD,SAASC,UAAU,QAAQ,oBAAoB;AAC/C,SAASC,IAAI,EAAEC,IAAI,IAAIC,QAAQ,QAAQ,kBAAkB;;AAEzD;AACA;AACA;AACA,SAASC,KAAK,IAAIC,gBAAgB,QAAQ,aAAa;AAEvD,MAAMC,UAAU,GACfC,aAAA,CAACb,GAAG;EACHc,KAAK,EAAC,4BAA4B;EAClCC,KAAK,EAAC,IAAI;EACVC,MAAM,EAAC,IAAI;EACXC,OAAO,EAAC;AAAW,GAEnBJ,aAAA,CAACZ,IAAI;EAACiB,CAAC,EAAC;AAA2N,CAAE,CACjO,CACL;AAED,SAASC,YAAYA,CAAEC,KAAK,EAAEC,GAAG,EAAG;EACnC,MAAMC,IAAI,GAAGlB,SAAS,CACnBmB,MAAM,IAAMA,MAAM,CAAEZ,gBAAiB,CAAC,CAACa,uBAAuB,CAAC,CAAC,EAClE,EACD,CAAC;EACD,MAAM;IAAEC;EAAwB,CAAC,GAAGpB,WAAW,CAAEM,gBAAiB,CAAC;EAEnE,OACCE,aAAA,CAAChB,QAAQ;IACR6B,YAAY,EAAGA,CAAE;MAAEC,MAAM;MAAEC;IAAS,CAAC,KACpCf,aAAA,CAACf,MAAM;MAAA,GACDsB,KAAK;MACVC,GAAG,EAAGA,GAAK;MACXQ,IAAI,EAAGP,IAAI,KAAK,YAAY,GAAGV,UAAU,GAAGH,QAAU;MACtD,iBAAgBkB,MAAQ;MACxB,iBAAc,MAAM;MACpBG,OAAO,EAAGF;MACV;MACAG,KAAK,EAAG5B,EAAE,CAAE,OAAQ;IAAG,CACvB,CACC;IACH6B,YAAY,EAAG;MAAEC,SAAS,EAAE,cAAc;MAAEC,OAAO,EAAEC;IAAU,CAAG;IAClEC,aAAa,EAAGA,CAAA,KACfvB,aAAA,CAAAwB,QAAA,QACCxB,aAAA,CAACX,aAAa;MAACoC,IAAI,EAAC,MAAM;MAAC,cAAanC,EAAE,CAAE,OAAQ;IAAG,GACtDU,aAAA,CAACd,eAAe;MACfwC,KAAK,EACJjB,IAAI,KAAK,YAAY,GAAG,YAAY,GAAG,MACvC;MACDkB,QAAQ,EAAGf,uBAAyB;MACpCgB,OAAO,EAAG,CACT;QACCF,KAAK,EAAE,MAAM;QACbR,KAAK,EACJlB,aAAA,CAAAwB,QAAA,QACCxB,aAAA,CAACN,IAAI;UAACsB,IAAI,EAAGpB;QAAU,CAAE,CAAC,EACxBN,EAAE,CAAE,MAAO,CACZ;MAEJ,CAAC,EACD;QACCoC,KAAK,EAAE,YAAY;QACnBR,KAAK,EACJlB,aAAA,CAAAwB,QAAA,QACGzB,UAAU,EACVT,EAAE,CAAE,QAAS,CACd;MAEJ,CAAC;IACC,CACH,CACa,CAAC,EAChBU,aAAA;MAAK6B,SAAS,EAAC;IAAkC,GAC9CvC,EAAE,CACH,kJACD,CACI,CACJ;EACA,CACH,CAAC;AAEJ;AAEA,eAAeG,UAAU,CAAEa,YAAa,CAAC"}
@@ -29,9 +29,12 @@ function RenameModal({
29
29
  const autoSelectInputText = event => event.target.select();
30
30
  const dialogDescription = useInstanceId(RenameModal, `block-editor-rename-modal__description`);
31
31
  const handleSubmit = () => {
32
+ const message = nameIsOriginal || nameIsEmpty ? sprintf( /* translators: %s: new name/label for the block */
33
+ __('Block name reset to: "%s".'), editedBlockName) : sprintf( /* translators: %s: new name/label for the block */
34
+ __('Block name changed to: "%s".'), editedBlockName);
35
+
32
36
  // Must be assertive to immediately announce change.
33
- speak(sprintf( /* translators: %1$s: type of update (either reset of changed). %2$s: new name/label for the block */
34
- __('Block name %1$s to: "%2$s".'), nameIsOriginal || nameIsEmpty ? __('reset') : __('changed'), editedBlockName), 'assertive');
37
+ speak(message, 'assertive');
35
38
  onSave(editedBlockName);
36
39
 
37
40
  // Immediate close avoids ability to hit save multiple times.