@wordpress/block-library 9.13.0 → 9.13.1-next.cd6172eb0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. package/build/block/edit.js +2 -29
  2. package/build/block/edit.js.map +1 -1
  3. package/build/cover/edit/index.js +4 -2
  4. package/build/cover/edit/index.js.map +1 -1
  5. package/build/cover/edit/inspector-controls.js +6 -4
  6. package/build/cover/edit/inspector-controls.js.map +1 -1
  7. package/build/list-item/hooks/use-merge.js +2 -2
  8. package/build/list-item/hooks/use-merge.js.map +1 -1
  9. package/build/navigation/edit/deleted-navigation-warning.js +9 -2
  10. package/build/navigation/edit/deleted-navigation-warning.js.map +1 -1
  11. package/build/navigation-submenu/edit.js +3 -0
  12. package/build/navigation-submenu/edit.js.map +1 -1
  13. package/build/pattern/recursion-detector.js +0 -1
  14. package/build/pattern/recursion-detector.js.map +1 -1
  15. package/build/query/edit/index.js +2 -2
  16. package/build/query/edit/index.js.map +1 -1
  17. package/build/query/edit/inspector-controls/author-control.js +0 -1
  18. package/build/query/edit/inspector-controls/author-control.js.map +1 -1
  19. package/build/query/edit/inspector-controls/parent-control.js +0 -1
  20. package/build/query/edit/inspector-controls/parent-control.js.map +1 -1
  21. package/build/query/edit/inspector-controls/taxonomy-controls.js +0 -1
  22. package/build/query/edit/inspector-controls/taxonomy-controls.js.map +1 -1
  23. package/build/query/edit/{pattern-selection-modal.js → pattern-selection.js} +55 -36
  24. package/build/query/edit/pattern-selection.js.map +1 -0
  25. package/build/query/edit/query-content.js +5 -8
  26. package/build/query/edit/query-content.js.map +1 -1
  27. package/build/query/edit/query-placeholder.js +5 -11
  28. package/build/query/edit/query-placeholder.js.map +1 -1
  29. package/build/query/edit/query-toolbar.js +31 -11
  30. package/build/query/edit/query-toolbar.js.map +1 -1
  31. package/build/separator/deprecated.js +2 -1
  32. package/build/separator/deprecated.js.map +1 -1
  33. package/build/separator/edit.js +29 -4
  34. package/build/separator/edit.js.map +1 -1
  35. package/build/separator/index.js +5 -0
  36. package/build/separator/index.js.map +1 -1
  37. package/build/separator/save.js +3 -2
  38. package/build/separator/save.js.map +1 -1
  39. package/build/template-part/edit/import-controls.js +0 -1
  40. package/build/template-part/edit/import-controls.js.map +1 -1
  41. package/build-module/block/edit.js +3 -30
  42. package/build-module/block/edit.js.map +1 -1
  43. package/build-module/cover/edit/index.js +4 -2
  44. package/build-module/cover/edit/index.js.map +1 -1
  45. package/build-module/cover/edit/inspector-controls.js +6 -4
  46. package/build-module/cover/edit/inspector-controls.js.map +1 -1
  47. package/build-module/list-item/hooks/use-merge.js +2 -2
  48. package/build-module/list-item/hooks/use-merge.js.map +1 -1
  49. package/build-module/navigation/edit/deleted-navigation-warning.js +10 -3
  50. package/build-module/navigation/edit/deleted-navigation-warning.js.map +1 -1
  51. package/build-module/navigation-submenu/edit.js +3 -0
  52. package/build-module/navigation-submenu/edit.js.map +1 -1
  53. package/build-module/pattern/recursion-detector.js +0 -1
  54. package/build-module/pattern/recursion-detector.js.map +1 -1
  55. package/build-module/query/edit/index.js +1 -1
  56. package/build-module/query/edit/index.js.map +1 -1
  57. package/build-module/query/edit/inspector-controls/author-control.js +0 -1
  58. package/build-module/query/edit/inspector-controls/author-control.js.map +1 -1
  59. package/build-module/query/edit/inspector-controls/parent-control.js +0 -1
  60. package/build-module/query/edit/inspector-controls/parent-control.js.map +1 -1
  61. package/build-module/query/edit/inspector-controls/taxonomy-controls.js +0 -1
  62. package/build-module/query/edit/inspector-controls/taxonomy-controls.js.map +1 -1
  63. package/build-module/query/edit/{pattern-selection-modal.js → pattern-selection.js} +53 -36
  64. package/build-module/query/edit/pattern-selection.js.map +1 -0
  65. package/build-module/query/edit/query-content.js +5 -8
  66. package/build-module/query/edit/query-content.js.map +1 -1
  67. package/build-module/query/edit/query-placeholder.js +6 -12
  68. package/build-module/query/edit/query-placeholder.js.map +1 -1
  69. package/build-module/query/edit/query-toolbar.js +31 -13
  70. package/build-module/query/edit/query-toolbar.js.map +1 -1
  71. package/build-module/separator/deprecated.js +2 -1
  72. package/build-module/separator/deprecated.js.map +1 -1
  73. package/build-module/separator/edit.js +32 -7
  74. package/build-module/separator/edit.js.map +1 -1
  75. package/build-module/separator/index.js +5 -0
  76. package/build-module/separator/index.js.map +1 -1
  77. package/build-module/separator/save.js +3 -2
  78. package/build-module/separator/save.js.map +1 -1
  79. package/build-module/template-part/edit/import-controls.js +0 -1
  80. package/build-module/template-part/edit/import-controls.js.map +1 -1
  81. package/build-style/comments-pagination/editor-rtl.css +1 -0
  82. package/build-style/comments-pagination/editor.css +1 -0
  83. package/build-style/comments-pagination/style-rtl.css +1 -0
  84. package/build-style/comments-pagination/style.css +1 -0
  85. package/build-style/editor-rtl.css +31 -0
  86. package/build-style/editor.css +31 -0
  87. package/build-style/image/style-rtl.css +3 -2
  88. package/build-style/image/style.css +3 -2
  89. package/build-style/pullquote/style-rtl.css +1 -0
  90. package/build-style/pullquote/style.css +1 -0
  91. package/build-style/query/editor-rtl.css +30 -0
  92. package/build-style/query/editor.css +30 -0
  93. package/build-style/style-rtl.css +5 -2
  94. package/build-style/style.css +5 -2
  95. package/build-types/lock-unlock.d.ts +1 -1
  96. package/build-types/lock-unlock.d.ts.map +1 -1
  97. package/package.json +34 -34
  98. package/src/block/edit.js +6 -51
  99. package/src/comments-pagination/editor.scss +1 -0
  100. package/src/comments-pagination/style.scss +1 -0
  101. package/src/cover/edit/index.js +4 -1
  102. package/src/cover/edit/inspector-controls.js +10 -3
  103. package/src/cover/index.php +2 -2
  104. package/src/image/style.scss +4 -3
  105. package/src/list-item/hooks/use-merge.js +2 -2
  106. package/src/missing/test/edit.native.js +0 -1
  107. package/src/navigation/README.md +1 -0
  108. package/src/navigation/edit/deleted-navigation-warning.js +11 -2
  109. package/src/navigation/index.php +9 -35
  110. package/src/navigation-submenu/edit.js +5 -0
  111. package/src/navigation-submenu/index.php +17 -1
  112. package/src/pullquote/style.scss +1 -0
  113. package/src/query/edit/index.js +1 -1
  114. package/src/query/edit/{pattern-selection-modal.js → pattern-selection.js} +53 -33
  115. package/src/query/edit/query-content.js +4 -10
  116. package/src/query/edit/query-placeholder.js +5 -14
  117. package/src/query/edit/query-toolbar.js +38 -17
  118. package/src/query/editor.scss +30 -0
  119. package/src/search/index.php +3 -3
  120. package/src/separator/block.json +5 -0
  121. package/src/separator/deprecated.js +1 -0
  122. package/src/separator/edit.js +28 -3
  123. package/src/separator/save.js +2 -2
  124. package/src/separator/test/edit.js +1 -0
  125. package/tsconfig.tsbuildinfo +1 -1
  126. package/build/query/edit/pattern-selection-modal.js.map +0 -1
  127. package/build-module/query/edit/pattern-selection-modal.js.map +0 -1
@@ -1,4 +1,3 @@
1
- /* wp:polyfill */
2
1
  /**
3
2
  * WordPress dependencies
4
3
  */
@@ -1 +1 @@
1
- {"version":3,"names":["FormTokenField","__experimentalVStack","VStack","useSelect","store","coreStore","useState","useEffect","useDebounce","decodeEntities","useTaxonomies","jsx","_jsx","EMPTY_ARRAY","BASE_QUERY","order","_fields","context","getTermIdByTermValue","terms","termValue","termId","id","find","term","name","termValueLower","toLocaleLowerCase","TaxonomyControls","onChange","query","postType","taxQuery","taxonomies","length","spacing","children","map","taxonomy","termIds","slug","handleChange","newTermIds","TaxonomyItem","search","setSearch","value","setValue","suggestions","setSuggestions","debouncedSearch","searchResults","searchHasResolved","select","getEntityRecords","hasFinishedResolution","selectorArgs","orderby","exclude","per_page","existingTerms","include","sanitizedValue","reduce","accumulator","entity","push","result","onTermsChange","newTermValues","Set","add","Array","from","className","label","onInputChange","displayTransform","__experimentalShowHowTo","__nextHasNoMarginBottom","__next40pxDefaultSize"],"sources":["@wordpress/block-library/src/query/edit/inspector-controls/taxonomy-controls.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tFormTokenField,\n\t__experimentalVStack as VStack,\n} from '@wordpress/components';\nimport { useSelect } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useState, useEffect } from '@wordpress/element';\nimport { useDebounce } from '@wordpress/compose';\nimport { decodeEntities } from '@wordpress/html-entities';\n\n/**\n * Internal dependencies\n */\nimport { useTaxonomies } from '../../utils';\n\nconst EMPTY_ARRAY = [];\nconst BASE_QUERY = {\n\torder: 'asc',\n\t_fields: 'id,name',\n\tcontext: 'view',\n};\n\n// Helper function to get the term id based on user input in terms `FormTokenField`.\nconst getTermIdByTermValue = ( terms, termValue ) => {\n\t// First we check for exact match by `term.id` or case sensitive `term.name` match.\n\tconst termId =\n\t\ttermValue?.id || terms?.find( ( term ) => term.name === termValue )?.id;\n\tif ( termId ) {\n\t\treturn termId;\n\t}\n\n\t/**\n\t * Here we make an extra check for entered terms in a non case sensitive way,\n\t * to match user expectations, due to `FormTokenField` behaviour that shows\n\t * suggestions which are case insensitive.\n\t *\n\t * Although WP tries to discourage users to add terms with the same name (case insensitive),\n\t * it's still possible if you manually change the name, as long as the terms have different slugs.\n\t * In this edge case we always apply the first match from the terms list.\n\t */\n\tconst termValueLower = termValue.toLocaleLowerCase();\n\treturn terms?.find(\n\t\t( term ) => term.name.toLocaleLowerCase() === termValueLower\n\t)?.id;\n};\n\nexport function TaxonomyControls( { onChange, query } ) {\n\tconst { postType, taxQuery } = query;\n\n\tconst taxonomies = useTaxonomies( postType );\n\tif ( ! taxonomies || taxonomies.length === 0 ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<VStack spacing={ 4 }>\n\t\t\t{ taxonomies.map( ( taxonomy ) => {\n\t\t\t\tconst termIds = taxQuery?.[ taxonomy.slug ] || [];\n\t\t\t\tconst handleChange = ( newTermIds ) =>\n\t\t\t\t\tonChange( {\n\t\t\t\t\t\ttaxQuery: {\n\t\t\t\t\t\t\t...taxQuery,\n\t\t\t\t\t\t\t[ taxonomy.slug ]: newTermIds,\n\t\t\t\t\t\t},\n\t\t\t\t\t} );\n\n\t\t\t\treturn (\n\t\t\t\t\t<TaxonomyItem\n\t\t\t\t\t\tkey={ taxonomy.slug }\n\t\t\t\t\t\ttaxonomy={ taxonomy }\n\t\t\t\t\t\ttermIds={ termIds }\n\t\t\t\t\t\tonChange={ handleChange }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</VStack>\n\t);\n}\n\n/**\n * Renders a `FormTokenField` for a given taxonomy.\n *\n * @param {Object} props The props for the component.\n * @param {Object} props.taxonomy The taxonomy object.\n * @param {number[]} props.termIds An array with the block's term ids for the given taxonomy.\n * @param {Function} props.onChange Callback `onChange` function.\n * @return {JSX.Element} The rendered component.\n */\nfunction TaxonomyItem( { taxonomy, termIds, onChange } ) {\n\tconst [ search, setSearch ] = useState( '' );\n\tconst [ value, setValue ] = useState( EMPTY_ARRAY );\n\tconst [ suggestions, setSuggestions ] = useState( EMPTY_ARRAY );\n\tconst debouncedSearch = useDebounce( setSearch, 250 );\n\tconst { searchResults, searchHasResolved } = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! search ) {\n\t\t\t\treturn { searchResults: EMPTY_ARRAY, searchHasResolved: true };\n\t\t\t}\n\t\t\tconst { getEntityRecords, hasFinishedResolution } =\n\t\t\t\tselect( coreStore );\n\t\t\tconst selectorArgs = [\n\t\t\t\t'taxonomy',\n\t\t\t\ttaxonomy.slug,\n\t\t\t\t{\n\t\t\t\t\t...BASE_QUERY,\n\t\t\t\t\tsearch,\n\t\t\t\t\torderby: 'name',\n\t\t\t\t\texclude: termIds,\n\t\t\t\t\tper_page: 20,\n\t\t\t\t},\n\t\t\t];\n\t\t\treturn {\n\t\t\t\tsearchResults: getEntityRecords( ...selectorArgs ),\n\t\t\t\tsearchHasResolved: hasFinishedResolution(\n\t\t\t\t\t'getEntityRecords',\n\t\t\t\t\tselectorArgs\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\t[ search, termIds ]\n\t);\n\t// `existingTerms` are the ones fetched from the API and their type is `{ id: number; name: string }`.\n\t// They are used to extract the terms' names to populate the `FormTokenField` properly\n\t// and to sanitize the provided `termIds`, by setting only the ones that exist.\n\tconst existingTerms = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! termIds?.length ) {\n\t\t\t\treturn EMPTY_ARRAY;\n\t\t\t}\n\t\t\tconst { getEntityRecords } = select( coreStore );\n\t\t\treturn getEntityRecords( 'taxonomy', taxonomy.slug, {\n\t\t\t\t...BASE_QUERY,\n\t\t\t\tinclude: termIds,\n\t\t\t\tper_page: termIds.length,\n\t\t\t} );\n\t\t},\n\t\t[ termIds ]\n\t);\n\t// Update the `value` state only after the selectors are resolved\n\t// to avoid emptying the input when we're changing terms.\n\tuseEffect( () => {\n\t\tif ( ! termIds?.length ) {\n\t\t\tsetValue( EMPTY_ARRAY );\n\t\t}\n\t\tif ( ! existingTerms?.length ) {\n\t\t\treturn;\n\t\t}\n\t\t// Returns only the existing entity ids. This prevents the component\n\t\t// from crashing in the editor, when non existing ids are provided.\n\t\tconst sanitizedValue = termIds.reduce( ( accumulator, id ) => {\n\t\t\tconst entity = existingTerms.find( ( term ) => term.id === id );\n\t\t\tif ( entity ) {\n\t\t\t\taccumulator.push( {\n\t\t\t\t\tid,\n\t\t\t\t\tvalue: entity.name,\n\t\t\t\t} );\n\t\t\t}\n\t\t\treturn accumulator;\n\t\t}, [] );\n\t\tsetValue( sanitizedValue );\n\t}, [ termIds, existingTerms ] );\n\t// Update suggestions only when the query has resolved.\n\tuseEffect( () => {\n\t\tif ( ! searchHasResolved ) {\n\t\t\treturn;\n\t\t}\n\t\tsetSuggestions( searchResults.map( ( result ) => result.name ) );\n\t}, [ searchResults, searchHasResolved ] );\n\tconst onTermsChange = ( newTermValues ) => {\n\t\tconst newTermIds = new Set();\n\t\tfor ( const termValue of newTermValues ) {\n\t\t\tconst termId = getTermIdByTermValue( searchResults, termValue );\n\t\t\tif ( termId ) {\n\t\t\t\tnewTermIds.add( termId );\n\t\t\t}\n\t\t}\n\t\tsetSuggestions( EMPTY_ARRAY );\n\t\tonChange( Array.from( newTermIds ) );\n\t};\n\treturn (\n\t\t<div className=\"block-library-query-inspector__taxonomy-control\">\n\t\t\t<FormTokenField\n\t\t\t\tlabel={ taxonomy.name }\n\t\t\t\tvalue={ value }\n\t\t\t\tonInputChange={ debouncedSearch }\n\t\t\t\tsuggestions={ suggestions }\n\t\t\t\tdisplayTransform={ decodeEntities }\n\t\t\t\tonChange={ onTermsChange }\n\t\t\t\t__experimentalShowHowTo={ false }\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t__next40pxDefaultSize\n\t\t\t/>\n\t\t</div>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["FormTokenField","__experimentalVStack","VStack","useSelect","store","coreStore","useState","useEffect","useDebounce","decodeEntities","useTaxonomies","jsx","_jsx","EMPTY_ARRAY","BASE_QUERY","order","_fields","context","getTermIdByTermValue","terms","termValue","termId","id","find","term","name","termValueLower","toLocaleLowerCase","TaxonomyControls","onChange","query","postType","taxQuery","taxonomies","length","spacing","children","map","taxonomy","termIds","slug","handleChange","newTermIds","TaxonomyItem","search","setSearch","value","setValue","suggestions","setSuggestions","debouncedSearch","searchResults","searchHasResolved","select","getEntityRecords","hasFinishedResolution","selectorArgs","orderby","exclude","per_page","existingTerms","include","sanitizedValue","reduce","accumulator","entity","push","result","onTermsChange","newTermValues","Set","add","Array","from","className","label","onInputChange","displayTransform","__experimentalShowHowTo","__nextHasNoMarginBottom","__next40pxDefaultSize"],"sources":["@wordpress/block-library/src/query/edit/inspector-controls/taxonomy-controls.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tFormTokenField,\n\t__experimentalVStack as VStack,\n} from '@wordpress/components';\nimport { useSelect } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useState, useEffect } from '@wordpress/element';\nimport { useDebounce } from '@wordpress/compose';\nimport { decodeEntities } from '@wordpress/html-entities';\n\n/**\n * Internal dependencies\n */\nimport { useTaxonomies } from '../../utils';\n\nconst EMPTY_ARRAY = [];\nconst BASE_QUERY = {\n\torder: 'asc',\n\t_fields: 'id,name',\n\tcontext: 'view',\n};\n\n// Helper function to get the term id based on user input in terms `FormTokenField`.\nconst getTermIdByTermValue = ( terms, termValue ) => {\n\t// First we check for exact match by `term.id` or case sensitive `term.name` match.\n\tconst termId =\n\t\ttermValue?.id || terms?.find( ( term ) => term.name === termValue )?.id;\n\tif ( termId ) {\n\t\treturn termId;\n\t}\n\n\t/**\n\t * Here we make an extra check for entered terms in a non case sensitive way,\n\t * to match user expectations, due to `FormTokenField` behaviour that shows\n\t * suggestions which are case insensitive.\n\t *\n\t * Although WP tries to discourage users to add terms with the same name (case insensitive),\n\t * it's still possible if you manually change the name, as long as the terms have different slugs.\n\t * In this edge case we always apply the first match from the terms list.\n\t */\n\tconst termValueLower = termValue.toLocaleLowerCase();\n\treturn terms?.find(\n\t\t( term ) => term.name.toLocaleLowerCase() === termValueLower\n\t)?.id;\n};\n\nexport function TaxonomyControls( { onChange, query } ) {\n\tconst { postType, taxQuery } = query;\n\n\tconst taxonomies = useTaxonomies( postType );\n\tif ( ! taxonomies || taxonomies.length === 0 ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<VStack spacing={ 4 }>\n\t\t\t{ taxonomies.map( ( taxonomy ) => {\n\t\t\t\tconst termIds = taxQuery?.[ taxonomy.slug ] || [];\n\t\t\t\tconst handleChange = ( newTermIds ) =>\n\t\t\t\t\tonChange( {\n\t\t\t\t\t\ttaxQuery: {\n\t\t\t\t\t\t\t...taxQuery,\n\t\t\t\t\t\t\t[ taxonomy.slug ]: newTermIds,\n\t\t\t\t\t\t},\n\t\t\t\t\t} );\n\n\t\t\t\treturn (\n\t\t\t\t\t<TaxonomyItem\n\t\t\t\t\t\tkey={ taxonomy.slug }\n\t\t\t\t\t\ttaxonomy={ taxonomy }\n\t\t\t\t\t\ttermIds={ termIds }\n\t\t\t\t\t\tonChange={ handleChange }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</VStack>\n\t);\n}\n\n/**\n * Renders a `FormTokenField` for a given taxonomy.\n *\n * @param {Object} props The props for the component.\n * @param {Object} props.taxonomy The taxonomy object.\n * @param {number[]} props.termIds An array with the block's term ids for the given taxonomy.\n * @param {Function} props.onChange Callback `onChange` function.\n * @return {JSX.Element} The rendered component.\n */\nfunction TaxonomyItem( { taxonomy, termIds, onChange } ) {\n\tconst [ search, setSearch ] = useState( '' );\n\tconst [ value, setValue ] = useState( EMPTY_ARRAY );\n\tconst [ suggestions, setSuggestions ] = useState( EMPTY_ARRAY );\n\tconst debouncedSearch = useDebounce( setSearch, 250 );\n\tconst { searchResults, searchHasResolved } = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! search ) {\n\t\t\t\treturn { searchResults: EMPTY_ARRAY, searchHasResolved: true };\n\t\t\t}\n\t\t\tconst { getEntityRecords, hasFinishedResolution } =\n\t\t\t\tselect( coreStore );\n\t\t\tconst selectorArgs = [\n\t\t\t\t'taxonomy',\n\t\t\t\ttaxonomy.slug,\n\t\t\t\t{\n\t\t\t\t\t...BASE_QUERY,\n\t\t\t\t\tsearch,\n\t\t\t\t\torderby: 'name',\n\t\t\t\t\texclude: termIds,\n\t\t\t\t\tper_page: 20,\n\t\t\t\t},\n\t\t\t];\n\t\t\treturn {\n\t\t\t\tsearchResults: getEntityRecords( ...selectorArgs ),\n\t\t\t\tsearchHasResolved: hasFinishedResolution(\n\t\t\t\t\t'getEntityRecords',\n\t\t\t\t\tselectorArgs\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\t[ search, termIds ]\n\t);\n\t// `existingTerms` are the ones fetched from the API and their type is `{ id: number; name: string }`.\n\t// They are used to extract the terms' names to populate the `FormTokenField` properly\n\t// and to sanitize the provided `termIds`, by setting only the ones that exist.\n\tconst existingTerms = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! termIds?.length ) {\n\t\t\t\treturn EMPTY_ARRAY;\n\t\t\t}\n\t\t\tconst { getEntityRecords } = select( coreStore );\n\t\t\treturn getEntityRecords( 'taxonomy', taxonomy.slug, {\n\t\t\t\t...BASE_QUERY,\n\t\t\t\tinclude: termIds,\n\t\t\t\tper_page: termIds.length,\n\t\t\t} );\n\t\t},\n\t\t[ termIds ]\n\t);\n\t// Update the `value` state only after the selectors are resolved\n\t// to avoid emptying the input when we're changing terms.\n\tuseEffect( () => {\n\t\tif ( ! termIds?.length ) {\n\t\t\tsetValue( EMPTY_ARRAY );\n\t\t}\n\t\tif ( ! existingTerms?.length ) {\n\t\t\treturn;\n\t\t}\n\t\t// Returns only the existing entity ids. This prevents the component\n\t\t// from crashing in the editor, when non existing ids are provided.\n\t\tconst sanitizedValue = termIds.reduce( ( accumulator, id ) => {\n\t\t\tconst entity = existingTerms.find( ( term ) => term.id === id );\n\t\t\tif ( entity ) {\n\t\t\t\taccumulator.push( {\n\t\t\t\t\tid,\n\t\t\t\t\tvalue: entity.name,\n\t\t\t\t} );\n\t\t\t}\n\t\t\treturn accumulator;\n\t\t}, [] );\n\t\tsetValue( sanitizedValue );\n\t}, [ termIds, existingTerms ] );\n\t// Update suggestions only when the query has resolved.\n\tuseEffect( () => {\n\t\tif ( ! searchHasResolved ) {\n\t\t\treturn;\n\t\t}\n\t\tsetSuggestions( searchResults.map( ( result ) => result.name ) );\n\t}, [ searchResults, searchHasResolved ] );\n\tconst onTermsChange = ( newTermValues ) => {\n\t\tconst newTermIds = new Set();\n\t\tfor ( const termValue of newTermValues ) {\n\t\t\tconst termId = getTermIdByTermValue( searchResults, termValue );\n\t\t\tif ( termId ) {\n\t\t\t\tnewTermIds.add( termId );\n\t\t\t}\n\t\t}\n\t\tsetSuggestions( EMPTY_ARRAY );\n\t\tonChange( Array.from( newTermIds ) );\n\t};\n\treturn (\n\t\t<div className=\"block-library-query-inspector__taxonomy-control\">\n\t\t\t<FormTokenField\n\t\t\t\tlabel={ taxonomy.name }\n\t\t\t\tvalue={ value }\n\t\t\t\tonInputChange={ debouncedSearch }\n\t\t\t\tsuggestions={ suggestions }\n\t\t\t\tdisplayTransform={ decodeEntities }\n\t\t\t\tonChange={ onTermsChange }\n\t\t\t\t__experimentalShowHowTo={ false }\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t__next40pxDefaultSize\n\t\t\t/>\n\t\t</div>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
@@ -13,16 +13,48 @@ import { __ } from '@wordpress/i18n';
13
13
  import { useBlockNameForPatterns, getTransformedBlocksFromPattern, usePatterns } from '../utils';
14
14
  import { searchPatterns } from '../../utils/search-patterns';
15
15
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
16
- export default function PatternSelectionModal({
16
+ export function PatternSelectionModal({
17
17
  clientId,
18
18
  attributes,
19
19
  setIsPatternSelectionModalOpen
20
+ }) {
21
+ return /*#__PURE__*/_jsx(Modal, {
22
+ overlayClassName: "block-library-query-pattern__selection-modal",
23
+ title: __('Choose a pattern'),
24
+ onRequestClose: () => setIsPatternSelectionModalOpen(false),
25
+ isFullScreen: true,
26
+ children: /*#__PURE__*/_jsx(PatternSelection, {
27
+ clientId: clientId,
28
+ attributes: attributes
29
+ })
30
+ });
31
+ }
32
+ export function useBlockPatterns(clientId, attributes) {
33
+ const blockNameForPatterns = useBlockNameForPatterns(clientId, attributes);
34
+ return usePatterns(clientId, blockNameForPatterns);
35
+ }
36
+ export default function PatternSelection({
37
+ clientId,
38
+ attributes,
39
+ showTitlesAsTooltip = false,
40
+ showSearch = true
20
41
  }) {
21
42
  const [searchValue, setSearchValue] = useState('');
22
43
  const {
23
44
  replaceBlock,
24
45
  selectBlock
25
46
  } = useDispatch(blockEditorStore);
47
+ const blockPatterns = useBlockPatterns(clientId, attributes);
48
+ /*
49
+ * When we preview Query Loop blocks we should prefer the current
50
+ * block's postType, which is passed through block context.
51
+ */
52
+ const blockPreviewContext = useMemo(() => ({
53
+ previewPostType: attributes.query.postType
54
+ }), [attributes.query.postType]);
55
+ const filteredBlockPatterns = useMemo(() => {
56
+ return searchPatterns(blockPatterns, searchValue);
57
+ }, [blockPatterns, searchValue]);
26
58
  const onBlockPatternSelect = (pattern, blocks) => {
27
59
  const {
28
60
  newBlocks,
@@ -33,40 +65,25 @@ export default function PatternSelectionModal({
33
65
  selectBlock(queryClientIds[0]);
34
66
  }
35
67
  };
36
- // When we preview Query Loop blocks we should prefer the current
37
- // block's postType, which is passed through block context.
38
- const blockPreviewContext = useMemo(() => ({
39
- previewPostType: attributes.query.postType
40
- }), [attributes.query.postType]);
41
- const blockNameForPatterns = useBlockNameForPatterns(clientId, attributes);
42
- const blockPatterns = usePatterns(clientId, blockNameForPatterns);
43
- const filteredBlockPatterns = useMemo(() => {
44
- return searchPatterns(blockPatterns, searchValue);
45
- }, [blockPatterns, searchValue]);
46
- return /*#__PURE__*/_jsx(Modal, {
47
- overlayClassName: "block-library-query-pattern__selection-modal",
48
- title: __('Choose a pattern'),
49
- onRequestClose: () => setIsPatternSelectionModalOpen(false),
50
- isFullScreen: true,
51
- children: /*#__PURE__*/_jsxs("div", {
52
- className: "block-library-query-pattern__selection-content",
53
- children: [/*#__PURE__*/_jsx("div", {
54
- className: "block-library-query-pattern__selection-search",
55
- children: /*#__PURE__*/_jsx(SearchControl, {
56
- __nextHasNoMarginBottom: true,
57
- onChange: setSearchValue,
58
- value: searchValue,
59
- label: __('Search'),
60
- placeholder: __('Search')
61
- })
62
- }), /*#__PURE__*/_jsx(BlockContextProvider, {
63
- value: blockPreviewContext,
64
- children: /*#__PURE__*/_jsx(BlockPatternsList, {
65
- blockPatterns: filteredBlockPatterns,
66
- onClickPattern: onBlockPatternSelect
67
- })
68
- })]
69
- })
68
+ return /*#__PURE__*/_jsxs("div", {
69
+ className: "block-library-query-pattern__selection-content",
70
+ children: [showSearch && /*#__PURE__*/_jsx("div", {
71
+ className: "block-library-query-pattern__selection-search",
72
+ children: /*#__PURE__*/_jsx(SearchControl, {
73
+ __nextHasNoMarginBottom: true,
74
+ onChange: setSearchValue,
75
+ value: searchValue,
76
+ label: __('Search'),
77
+ placeholder: __('Search')
78
+ })
79
+ }), /*#__PURE__*/_jsx(BlockContextProvider, {
80
+ value: blockPreviewContext,
81
+ children: /*#__PURE__*/_jsx(BlockPatternsList, {
82
+ blockPatterns: filteredBlockPatterns,
83
+ onClickPattern: onBlockPatternSelect,
84
+ showTitlesAsTooltip: showTitlesAsTooltip
85
+ })
86
+ })]
70
87
  });
71
88
  }
72
- //# sourceMappingURL=pattern-selection-modal.js.map
89
+ //# sourceMappingURL=pattern-selection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useState","useMemo","useDispatch","Modal","SearchControl","BlockContextProvider","store","blockEditorStore","__experimentalBlockPatternsList","BlockPatternsList","__","useBlockNameForPatterns","getTransformedBlocksFromPattern","usePatterns","searchPatterns","jsx","_jsx","jsxs","_jsxs","PatternSelectionModal","clientId","attributes","setIsPatternSelectionModalOpen","overlayClassName","title","onRequestClose","isFullScreen","children","PatternSelection","useBlockPatterns","blockNameForPatterns","showTitlesAsTooltip","showSearch","searchValue","setSearchValue","replaceBlock","selectBlock","blockPatterns","blockPreviewContext","previewPostType","query","postType","filteredBlockPatterns","onBlockPatternSelect","pattern","blocks","newBlocks","queryClientIds","className","__nextHasNoMarginBottom","onChange","value","label","placeholder","onClickPattern"],"sources":["@wordpress/block-library/src/query/edit/pattern-selection.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useState, useMemo } from '@wordpress/element';\nimport { useDispatch } from '@wordpress/data';\nimport { Modal, SearchControl } from '@wordpress/components';\nimport {\n\tBlockContextProvider,\n\tstore as blockEditorStore,\n\t__experimentalBlockPatternsList as BlockPatternsList,\n} from '@wordpress/block-editor';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport {\n\tuseBlockNameForPatterns,\n\tgetTransformedBlocksFromPattern,\n\tusePatterns,\n} from '../utils';\nimport { searchPatterns } from '../../utils/search-patterns';\n\nexport function PatternSelectionModal( {\n\tclientId,\n\tattributes,\n\tsetIsPatternSelectionModalOpen,\n} ) {\n\treturn (\n\t\t<Modal\n\t\t\toverlayClassName=\"block-library-query-pattern__selection-modal\"\n\t\t\ttitle={ __( 'Choose a pattern' ) }\n\t\t\tonRequestClose={ () => setIsPatternSelectionModalOpen( false ) }\n\t\t\tisFullScreen\n\t\t>\n\t\t\t<PatternSelection clientId={ clientId } attributes={ attributes } />\n\t\t</Modal>\n\t);\n}\n\nexport function useBlockPatterns( clientId, attributes ) {\n\tconst blockNameForPatterns = useBlockNameForPatterns(\n\t\tclientId,\n\t\tattributes\n\t);\n\treturn usePatterns( clientId, blockNameForPatterns );\n}\n\nexport default function PatternSelection( {\n\tclientId,\n\tattributes,\n\tshowTitlesAsTooltip = false,\n\tshowSearch = true,\n} ) {\n\tconst [ searchValue, setSearchValue ] = useState( '' );\n\tconst { replaceBlock, selectBlock } = useDispatch( blockEditorStore );\n\tconst blockPatterns = useBlockPatterns( clientId, attributes );\n\t/*\n\t * When we preview Query Loop blocks we should prefer the current\n\t * block's postType, which is passed through block context.\n\t */\n\tconst blockPreviewContext = useMemo(\n\t\t() => ( {\n\t\t\tpreviewPostType: attributes.query.postType,\n\t\t} ),\n\t\t[ attributes.query.postType ]\n\t);\n\tconst filteredBlockPatterns = useMemo( () => {\n\t\treturn searchPatterns( blockPatterns, searchValue );\n\t}, [ blockPatterns, searchValue ] );\n\n\tconst onBlockPatternSelect = ( pattern, blocks ) => {\n\t\tconst { newBlocks, queryClientIds } = getTransformedBlocksFromPattern(\n\t\t\tblocks,\n\t\t\tattributes\n\t\t);\n\t\treplaceBlock( clientId, newBlocks );\n\t\tif ( queryClientIds[ 0 ] ) {\n\t\t\tselectBlock( queryClientIds[ 0 ] );\n\t\t}\n\t};\n\treturn (\n\t\t<div className=\"block-library-query-pattern__selection-content\">\n\t\t\t{ showSearch && (\n\t\t\t\t<div className=\"block-library-query-pattern__selection-search\">\n\t\t\t\t\t<SearchControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\tonChange={ setSearchValue }\n\t\t\t\t\t\tvalue={ searchValue }\n\t\t\t\t\t\tlabel={ __( 'Search' ) }\n\t\t\t\t\t\tplaceholder={ __( 'Search' ) }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t<BlockContextProvider value={ blockPreviewContext }>\n\t\t\t\t<BlockPatternsList\n\t\t\t\t\tblockPatterns={ filteredBlockPatterns }\n\t\t\t\t\tonClickPattern={ onBlockPatternSelect }\n\t\t\t\t\tshowTitlesAsTooltip={ showTitlesAsTooltip }\n\t\t\t\t/>\n\t\t\t</BlockContextProvider>\n\t\t</div>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
@@ -13,20 +13,19 @@ import { store as coreStore } from '@wordpress/core-data';
13
13
  * Internal dependencies
14
14
  */
15
15
  import EnhancedPaginationControl from './inspector-controls/enhanced-pagination-control';
16
- import QueryToolbar from './query-toolbar';
17
16
  import QueryInspectorControls from './inspector-controls';
18
17
  import EnhancedPaginationModal from './enhanced-pagination-modal';
19
18
  import { getQueryContextFromTemplate } from '../utils';
19
+ import QueryToolbar from './query-toolbar';
20
20
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
21
21
  const DEFAULTS_POSTS_PER_PAGE = 3;
22
22
  const TEMPLATE = [['core/post-template']];
23
23
  export default function QueryContent({
24
24
  attributes,
25
25
  setAttributes,
26
- openPatternSelectionModal,
27
- name,
28
26
  clientId,
29
- context
27
+ context,
28
+ name
30
29
  }) {
31
30
  const {
32
31
  queryId,
@@ -138,6 +137,7 @@ export default function QueryContent({
138
137
  clientId: clientId
139
138
  }), /*#__PURE__*/_jsx(InspectorControls, {
140
139
  children: /*#__PURE__*/_jsx(QueryInspectorControls, {
140
+ name: name,
141
141
  attributes: attributes,
142
142
  setQuery: updateQuery,
143
143
  setDisplayLayout: updateDisplayLayout,
@@ -147,11 +147,8 @@ export default function QueryContent({
147
147
  })
148
148
  }), /*#__PURE__*/_jsx(BlockControls, {
149
149
  children: /*#__PURE__*/_jsx(QueryToolbar, {
150
- name: name,
151
- clientId: clientId,
152
150
  attributes: attributes,
153
- setQuery: updateQuery,
154
- openPatternSelectionModal: openPatternSelectionModal
151
+ clientId: clientId
155
152
  })
156
153
  }), /*#__PURE__*/_jsxs(InspectorControls, {
157
154
  group: "advanced",
@@ -1 +1 @@
1
- {"version":3,"names":["useSelect","useDispatch","useInstanceId","useEffect","useCallback","BlockControls","InspectorControls","useBlockProps","store","blockEditorStore","useInnerBlocksProps","SelectControl","__","coreStore","EnhancedPaginationControl","QueryToolbar","QueryInspectorControls","EnhancedPaginationModal","getQueryContextFromTemplate","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","DEFAULTS_POSTS_PER_PAGE","TEMPLATE","QueryContent","attributes","setAttributes","openPatternSelectionModal","name","clientId","context","queryId","query","displayLayout","enhancedPagination","tagName","TagName","inherit","templateSlug","isSingular","__unstableMarkNextChangeAsNotPersistent","instanceId","blockProps","innerBlocksProps","template","postsPerPage","select","getSettings","getEntityRecord","getEntityRecordEdits","canUser","settingPerPage","kind","posts_per_page","editedSettingPerPage","updateQuery","newQuery","perPage","Object","keys","length","Number","isFinite","updateDisplayLayout","newDisplayLayout","htmlElementMessages","main","section","aside","children","setQuery","setDisplayLayout","group","__nextHasNoMarginBottom","__next40pxDefaultSize","label","options","value","onChange","help"],"sources":["@wordpress/block-library/src/query/edit/query-content.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useInstanceId } from '@wordpress/compose';\nimport { useEffect, useCallback } from '@wordpress/element';\nimport {\n\tBlockControls,\n\tInspectorControls,\n\tuseBlockProps,\n\tstore as blockEditorStore,\n\tuseInnerBlocksProps,\n} from '@wordpress/block-editor';\nimport { SelectControl } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport EnhancedPaginationControl from './inspector-controls/enhanced-pagination-control';\nimport QueryToolbar from './query-toolbar';\nimport QueryInspectorControls from './inspector-controls';\nimport EnhancedPaginationModal from './enhanced-pagination-modal';\nimport { getQueryContextFromTemplate } from '../utils';\n\nconst DEFAULTS_POSTS_PER_PAGE = 3;\n\nconst TEMPLATE = [ [ 'core/post-template' ] ];\nexport default function QueryContent( {\n\tattributes,\n\tsetAttributes,\n\topenPatternSelectionModal,\n\tname,\n\tclientId,\n\tcontext,\n} ) {\n\tconst {\n\t\tqueryId,\n\t\tquery,\n\t\tdisplayLayout,\n\t\tenhancedPagination,\n\t\ttagName: TagName = 'div',\n\t\tquery: { inherit } = {},\n\t} = attributes;\n\tconst { templateSlug } = context;\n\tconst { isSingular } = getQueryContextFromTemplate( templateSlug );\n\tconst { __unstableMarkNextChangeAsNotPersistent } =\n\t\tuseDispatch( blockEditorStore );\n\tconst instanceId = useInstanceId( QueryContent );\n\tconst blockProps = useBlockProps();\n\tconst innerBlocksProps = useInnerBlocksProps( blockProps, {\n\t\ttemplate: TEMPLATE,\n\t} );\n\tconst { postsPerPage } = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\tconst { getEntityRecord, getEntityRecordEdits, canUser } =\n\t\t\tselect( coreStore );\n\t\tconst settingPerPage = canUser( 'read', {\n\t\t\tkind: 'root',\n\t\t\tname: 'site',\n\t\t} )\n\t\t\t? +getEntityRecord( 'root', 'site' )?.posts_per_page\n\t\t\t: +getSettings().postsPerPage;\n\n\t\t// Gets changes made via the template area posts per page setting. These won't be saved\n\t\t// until the page is saved, but we should reflect this setting within the query loops\n\t\t// that inherit it.\n\t\tconst editedSettingPerPage = +getEntityRecordEdits( 'root', 'site' )\n\t\t\t?.posts_per_page;\n\n\t\treturn {\n\t\t\tpostsPerPage:\n\t\t\t\teditedSettingPerPage ||\n\t\t\t\tsettingPerPage ||\n\t\t\t\tDEFAULTS_POSTS_PER_PAGE,\n\t\t};\n\t}, [] );\n\t// There are some effects running where some initialization logic is\n\t// happening and setting some values to some attributes (ex. queryId).\n\t// These updates can cause an `undo trap` where undoing will result in\n\t// resetting again, so we need to mark these changes as not persistent\n\t// with `__unstableMarkNextChangeAsNotPersistent`.\n\n\t// Changes in query property (which is an object) need to be in the same callback,\n\t// because updates are batched after the render and changes in different query properties\n\t// would cause to override previous wanted changes.\n\tconst updateQuery = useCallback(\n\t\t( newQuery ) => setAttributes( { query: { ...query, ...newQuery } } ),\n\t\t[ query, setAttributes ]\n\t);\n\tuseEffect( () => {\n\t\tconst newQuery = {};\n\t\t// When we inherit from global query always need to set the `perPage`\n\t\t// based on the reading settings.\n\t\tif ( inherit && query.perPage !== postsPerPage ) {\n\t\t\tnewQuery.perPage = postsPerPage;\n\t\t} else if ( ! query.perPage && postsPerPage ) {\n\t\t\tnewQuery.perPage = postsPerPage;\n\t\t}\n\t\t// We need to reset the `inherit` value if in a singular template, as queries\n\t\t// are not inherited when in singular content (e.g. post, page, 404, blank).\n\t\tif ( isSingular && query.inherit ) {\n\t\t\tnewQuery.inherit = false;\n\t\t}\n\t\tif ( !! Object.keys( newQuery ).length ) {\n\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\tupdateQuery( newQuery );\n\t\t}\n\t}, [\n\t\tquery.perPage,\n\t\tquery.inherit,\n\t\tpostsPerPage,\n\t\tinherit,\n\t\tisSingular,\n\t\t__unstableMarkNextChangeAsNotPersistent,\n\t\tupdateQuery,\n\t] );\n\t// We need this for multi-query block pagination.\n\t// Query parameters for each block are scoped to their ID.\n\tuseEffect( () => {\n\t\tif ( ! Number.isFinite( queryId ) ) {\n\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\tsetAttributes( { queryId: instanceId } );\n\t\t}\n\t}, [\n\t\tqueryId,\n\t\tinstanceId,\n\t\t__unstableMarkNextChangeAsNotPersistent,\n\t\tsetAttributes,\n\t] );\n\tconst updateDisplayLayout = ( newDisplayLayout ) =>\n\t\tsetAttributes( {\n\t\t\tdisplayLayout: { ...displayLayout, ...newDisplayLayout },\n\t\t} );\n\tconst htmlElementMessages = {\n\t\tmain: __(\n\t\t\t'The <main> element should be used for the primary content of your document only.'\n\t\t),\n\t\tsection: __(\n\t\t\t\"The <section> element should represent a standalone portion of the document that can't be better represented by another element.\"\n\t\t),\n\t\taside: __(\n\t\t\t\"The <aside> element should represent a portion of a document whose content is only indirectly related to the document's main content.\"\n\t\t),\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<EnhancedPaginationModal\n\t\t\t\tattributes={ attributes }\n\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\tclientId={ clientId }\n\t\t\t/>\n\t\t\t<InspectorControls>\n\t\t\t\t<QueryInspectorControls\n\t\t\t\t\tattributes={ attributes }\n\t\t\t\t\tsetQuery={ updateQuery }\n\t\t\t\t\tsetDisplayLayout={ updateDisplayLayout }\n\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\tisSingular={ isSingular }\n\t\t\t\t/>\n\t\t\t</InspectorControls>\n\t\t\t<BlockControls>\n\t\t\t\t<QueryToolbar\n\t\t\t\t\tname={ name }\n\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\tattributes={ attributes }\n\t\t\t\t\tsetQuery={ updateQuery }\n\t\t\t\t\topenPatternSelectionModal={ openPatternSelectionModal }\n\t\t\t\t/>\n\t\t\t</BlockControls>\n\t\t\t<InspectorControls group=\"advanced\">\n\t\t\t\t<SelectControl\n\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\tlabel={ __( 'HTML element' ) }\n\t\t\t\t\toptions={ [\n\t\t\t\t\t\t{ label: __( 'Default (<div>)' ), value: 'div' },\n\t\t\t\t\t\t{ label: '<main>', value: 'main' },\n\t\t\t\t\t\t{ label: '<section>', value: 'section' },\n\t\t\t\t\t\t{ label: '<aside>', value: 'aside' },\n\t\t\t\t\t] }\n\t\t\t\t\tvalue={ TagName }\n\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\tsetAttributes( { tagName: value } )\n\t\t\t\t\t}\n\t\t\t\t\thelp={ htmlElementMessages[ TagName ] }\n\t\t\t\t/>\n\t\t\t\t<EnhancedPaginationControl\n\t\t\t\t\tenhancedPagination={ enhancedPagination }\n\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\tclientId={ clientId }\n\t\t\t\t/>\n\t\t\t</InspectorControls>\n\t\t\t<TagName { ...innerBlocksProps } />\n\t\t</>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useSelect","useDispatch","useInstanceId","useEffect","useCallback","BlockControls","InspectorControls","useBlockProps","store","blockEditorStore","useInnerBlocksProps","SelectControl","__","coreStore","EnhancedPaginationControl","QueryInspectorControls","EnhancedPaginationModal","getQueryContextFromTemplate","QueryToolbar","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","DEFAULTS_POSTS_PER_PAGE","TEMPLATE","QueryContent","attributes","setAttributes","clientId","context","name","queryId","query","displayLayout","enhancedPagination","tagName","TagName","inherit","templateSlug","isSingular","__unstableMarkNextChangeAsNotPersistent","instanceId","blockProps","innerBlocksProps","template","postsPerPage","select","getSettings","getEntityRecord","getEntityRecordEdits","canUser","settingPerPage","kind","posts_per_page","editedSettingPerPage","updateQuery","newQuery","perPage","Object","keys","length","Number","isFinite","updateDisplayLayout","newDisplayLayout","htmlElementMessages","main","section","aside","children","setQuery","setDisplayLayout","group","__nextHasNoMarginBottom","__next40pxDefaultSize","label","options","value","onChange","help"],"sources":["@wordpress/block-library/src/query/edit/query-content.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useInstanceId } from '@wordpress/compose';\nimport { useEffect, useCallback } from '@wordpress/element';\nimport {\n\tBlockControls,\n\tInspectorControls,\n\tuseBlockProps,\n\tstore as blockEditorStore,\n\tuseInnerBlocksProps,\n} from '@wordpress/block-editor';\nimport { SelectControl } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport EnhancedPaginationControl from './inspector-controls/enhanced-pagination-control';\nimport QueryInspectorControls from './inspector-controls';\nimport EnhancedPaginationModal from './enhanced-pagination-modal';\nimport { getQueryContextFromTemplate } from '../utils';\nimport QueryToolbar from './query-toolbar';\n\nconst DEFAULTS_POSTS_PER_PAGE = 3;\n\nconst TEMPLATE = [ [ 'core/post-template' ] ];\nexport default function QueryContent( {\n\tattributes,\n\tsetAttributes,\n\tclientId,\n\tcontext,\n\tname,\n} ) {\n\tconst {\n\t\tqueryId,\n\t\tquery,\n\t\tdisplayLayout,\n\t\tenhancedPagination,\n\t\ttagName: TagName = 'div',\n\t\tquery: { inherit } = {},\n\t} = attributes;\n\tconst { templateSlug } = context;\n\tconst { isSingular } = getQueryContextFromTemplate( templateSlug );\n\tconst { __unstableMarkNextChangeAsNotPersistent } =\n\t\tuseDispatch( blockEditorStore );\n\tconst instanceId = useInstanceId( QueryContent );\n\tconst blockProps = useBlockProps();\n\tconst innerBlocksProps = useInnerBlocksProps( blockProps, {\n\t\ttemplate: TEMPLATE,\n\t} );\n\tconst { postsPerPage } = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\tconst { getEntityRecord, getEntityRecordEdits, canUser } =\n\t\t\tselect( coreStore );\n\t\tconst settingPerPage = canUser( 'read', {\n\t\t\tkind: 'root',\n\t\t\tname: 'site',\n\t\t} )\n\t\t\t? +getEntityRecord( 'root', 'site' )?.posts_per_page\n\t\t\t: +getSettings().postsPerPage;\n\n\t\t// Gets changes made via the template area posts per page setting. These won't be saved\n\t\t// until the page is saved, but we should reflect this setting within the query loops\n\t\t// that inherit it.\n\t\tconst editedSettingPerPage = +getEntityRecordEdits( 'root', 'site' )\n\t\t\t?.posts_per_page;\n\n\t\treturn {\n\t\t\tpostsPerPage:\n\t\t\t\teditedSettingPerPage ||\n\t\t\t\tsettingPerPage ||\n\t\t\t\tDEFAULTS_POSTS_PER_PAGE,\n\t\t};\n\t}, [] );\n\t// There are some effects running where some initialization logic is\n\t// happening and setting some values to some attributes (ex. queryId).\n\t// These updates can cause an `undo trap` where undoing will result in\n\t// resetting again, so we need to mark these changes as not persistent\n\t// with `__unstableMarkNextChangeAsNotPersistent`.\n\n\t// Changes in query property (which is an object) need to be in the same callback,\n\t// because updates are batched after the render and changes in different query properties\n\t// would cause to override previous wanted changes.\n\tconst updateQuery = useCallback(\n\t\t( newQuery ) => setAttributes( { query: { ...query, ...newQuery } } ),\n\t\t[ query, setAttributes ]\n\t);\n\tuseEffect( () => {\n\t\tconst newQuery = {};\n\t\t// When we inherit from global query always need to set the `perPage`\n\t\t// based on the reading settings.\n\t\tif ( inherit && query.perPage !== postsPerPage ) {\n\t\t\tnewQuery.perPage = postsPerPage;\n\t\t} else if ( ! query.perPage && postsPerPage ) {\n\t\t\tnewQuery.perPage = postsPerPage;\n\t\t}\n\t\t// We need to reset the `inherit` value if in a singular template, as queries\n\t\t// are not inherited when in singular content (e.g. post, page, 404, blank).\n\t\tif ( isSingular && query.inherit ) {\n\t\t\tnewQuery.inherit = false;\n\t\t}\n\t\tif ( !! Object.keys( newQuery ).length ) {\n\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\tupdateQuery( newQuery );\n\t\t}\n\t}, [\n\t\tquery.perPage,\n\t\tquery.inherit,\n\t\tpostsPerPage,\n\t\tinherit,\n\t\tisSingular,\n\t\t__unstableMarkNextChangeAsNotPersistent,\n\t\tupdateQuery,\n\t] );\n\t// We need this for multi-query block pagination.\n\t// Query parameters for each block are scoped to their ID.\n\tuseEffect( () => {\n\t\tif ( ! Number.isFinite( queryId ) ) {\n\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\tsetAttributes( { queryId: instanceId } );\n\t\t}\n\t}, [\n\t\tqueryId,\n\t\tinstanceId,\n\t\t__unstableMarkNextChangeAsNotPersistent,\n\t\tsetAttributes,\n\t] );\n\tconst updateDisplayLayout = ( newDisplayLayout ) =>\n\t\tsetAttributes( {\n\t\t\tdisplayLayout: { ...displayLayout, ...newDisplayLayout },\n\t\t} );\n\tconst htmlElementMessages = {\n\t\tmain: __(\n\t\t\t'The <main> element should be used for the primary content of your document only.'\n\t\t),\n\t\tsection: __(\n\t\t\t\"The <section> element should represent a standalone portion of the document that can't be better represented by another element.\"\n\t\t),\n\t\taside: __(\n\t\t\t\"The <aside> element should represent a portion of a document whose content is only indirectly related to the document's main content.\"\n\t\t),\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<EnhancedPaginationModal\n\t\t\t\tattributes={ attributes }\n\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\tclientId={ clientId }\n\t\t\t/>\n\t\t\t<InspectorControls>\n\t\t\t\t<QueryInspectorControls\n\t\t\t\t\tname={ name }\n\t\t\t\t\tattributes={ attributes }\n\t\t\t\t\tsetQuery={ updateQuery }\n\t\t\t\t\tsetDisplayLayout={ updateDisplayLayout }\n\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\tisSingular={ isSingular }\n\t\t\t\t/>\n\t\t\t</InspectorControls>\n\t\t\t<BlockControls>\n\t\t\t\t<QueryToolbar attributes={ attributes } clientId={ clientId } />\n\t\t\t</BlockControls>\n\t\t\t<InspectorControls group=\"advanced\">\n\t\t\t\t<SelectControl\n\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\tlabel={ __( 'HTML element' ) }\n\t\t\t\t\toptions={ [\n\t\t\t\t\t\t{ label: __( 'Default (<div>)' ), value: 'div' },\n\t\t\t\t\t\t{ label: '<main>', value: 'main' },\n\t\t\t\t\t\t{ label: '<section>', value: 'section' },\n\t\t\t\t\t\t{ label: '<aside>', value: 'aside' },\n\t\t\t\t\t] }\n\t\t\t\t\tvalue={ TagName }\n\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\tsetAttributes( { tagName: value } )\n\t\t\t\t\t}\n\t\t\t\t\thelp={ htmlElementMessages[ TagName ] }\n\t\t\t\t/>\n\t\t\t\t<EnhancedPaginationControl\n\t\t\t\t\tenhancedPagination={ enhancedPagination }\n\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\tclientId={ clientId }\n\t\t\t\t/>\n\t\t\t</InspectorControls>\n\t\t\t<TagName { ...innerBlocksProps } />\n\t\t</>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
@@ -11,7 +11,8 @@ import { __ } from '@wordpress/i18n';
11
11
  /**
12
12
  * Internal dependencies
13
13
  */
14
- import { useScopedBlockVariations, useBlockNameForPatterns } from '../utils';
14
+ import { useScopedBlockVariations } from '../utils';
15
+ import { useBlockPatterns } from './pattern-selection';
15
16
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
16
17
  export default function QueryPlaceholder({
17
18
  attributes,
@@ -21,27 +22,20 @@ export default function QueryPlaceholder({
21
22
  }) {
22
23
  const [isStartingBlank, setIsStartingBlank] = useState(false);
23
24
  const blockProps = useBlockProps();
24
- const blockNameForPatterns = useBlockNameForPatterns(clientId, attributes);
25
25
  const {
26
26
  blockType,
27
- activeBlockVariation,
28
- hasPatterns
27
+ activeBlockVariation
29
28
  } = useSelect(select => {
30
29
  const {
31
30
  getActiveBlockVariation,
32
31
  getBlockType
33
32
  } = select(blocksStore);
34
- const {
35
- getBlockRootClientId,
36
- getPatternsByBlockTypes
37
- } = select(blockEditorStore);
38
- const rootClientId = getBlockRootClientId(clientId);
39
33
  return {
40
34
  blockType: getBlockType(name),
41
- activeBlockVariation: getActiveBlockVariation(name, attributes),
42
- hasPatterns: !!getPatternsByBlockTypes(blockNameForPatterns, rootClientId).length
35
+ activeBlockVariation: getActiveBlockVariation(name, attributes)
43
36
  };
44
- }, [name, blockNameForPatterns, clientId, attributes]);
37
+ }, [name, attributes]);
38
+ const hasPatterns = !!useBlockPatterns(clientId, attributes).length;
45
39
  const icon = activeBlockVariation?.icon?.src || activeBlockVariation?.icon || blockType?.icon?.src;
46
40
  const label = activeBlockVariation?.title || blockType?.title;
47
41
  if (isStartingBlank) {
@@ -1 +1 @@
1
- {"version":3,"names":["useSelect","useDispatch","createBlocksFromInnerBlocksTemplate","store","blocksStore","useState","useBlockProps","blockEditorStore","__experimentalBlockVariationPicker","Button","Placeholder","__","useScopedBlockVariations","useBlockNameForPatterns","jsx","_jsx","jsxs","_jsxs","QueryPlaceholder","attributes","clientId","name","openPatternSelectionModal","isStartingBlank","setIsStartingBlank","blockProps","blockNameForPatterns","blockType","activeBlockVariation","hasPatterns","select","getActiveBlockVariation","getBlockType","getBlockRootClientId","getPatternsByBlockTypes","rootClientId","length","icon","src","label","title","QueryVariationPicker","children","instructions","__next40pxDefaultSize","variant","onClick","scopeVariations","replaceInnerBlocks","variations","onSelect","variation","innerBlocks"],"sources":["@wordpress/block-library/src/query/edit/query-placeholder.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport {\n\tcreateBlocksFromInnerBlocksTemplate,\n\tstore as blocksStore,\n} from '@wordpress/blocks';\nimport { useState } from '@wordpress/element';\nimport {\n\tuseBlockProps,\n\tstore as blockEditorStore,\n\t__experimentalBlockVariationPicker,\n} from '@wordpress/block-editor';\nimport { Button, Placeholder } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { useScopedBlockVariations, useBlockNameForPatterns } from '../utils';\n\nexport default function QueryPlaceholder( {\n\tattributes,\n\tclientId,\n\tname,\n\topenPatternSelectionModal,\n} ) {\n\tconst [ isStartingBlank, setIsStartingBlank ] = useState( false );\n\tconst blockProps = useBlockProps();\n\tconst blockNameForPatterns = useBlockNameForPatterns(\n\t\tclientId,\n\t\tattributes\n\t);\n\tconst { blockType, activeBlockVariation, hasPatterns } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getActiveBlockVariation, getBlockType } =\n\t\t\t\tselect( blocksStore );\n\t\t\tconst { getBlockRootClientId, getPatternsByBlockTypes } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\tconst rootClientId = getBlockRootClientId( clientId );\n\t\t\treturn {\n\t\t\t\tblockType: getBlockType( name ),\n\t\t\t\tactiveBlockVariation: getActiveBlockVariation(\n\t\t\t\t\tname,\n\t\t\t\t\tattributes\n\t\t\t\t),\n\t\t\t\thasPatterns: !! getPatternsByBlockTypes(\n\t\t\t\t\tblockNameForPatterns,\n\t\t\t\t\trootClientId\n\t\t\t\t).length,\n\t\t\t};\n\t\t},\n\t\t[ name, blockNameForPatterns, clientId, attributes ]\n\t);\n\tconst icon =\n\t\tactiveBlockVariation?.icon?.src ||\n\t\tactiveBlockVariation?.icon ||\n\t\tblockType?.icon?.src;\n\tconst label = activeBlockVariation?.title || blockType?.title;\n\tif ( isStartingBlank ) {\n\t\treturn (\n\t\t\t<QueryVariationPicker\n\t\t\t\tclientId={ clientId }\n\t\t\t\tattributes={ attributes }\n\t\t\t\ticon={ icon }\n\t\t\t\tlabel={ label }\n\t\t\t/>\n\t\t);\n\t}\n\treturn (\n\t\t<div { ...blockProps }>\n\t\t\t<Placeholder\n\t\t\t\ticon={ icon }\n\t\t\t\tlabel={ label }\n\t\t\t\tinstructions={ __(\n\t\t\t\t\t'Choose a pattern for the query loop or start blank.'\n\t\t\t\t) }\n\t\t\t>\n\t\t\t\t{ !! hasPatterns && (\n\t\t\t\t\t<Button\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\tonClick={ openPatternSelectionModal }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Choose' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t) }\n\n\t\t\t\t<Button\n\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\tsetIsStartingBlank( true );\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Start blank' ) }\n\t\t\t\t</Button>\n\t\t\t</Placeholder>\n\t\t</div>\n\t);\n}\n\nfunction QueryVariationPicker( { clientId, attributes, icon, label } ) {\n\tconst scopeVariations = useScopedBlockVariations( attributes );\n\tconst { replaceInnerBlocks } = useDispatch( blockEditorStore );\n\tconst blockProps = useBlockProps();\n\treturn (\n\t\t<div { ...blockProps }>\n\t\t\t<__experimentalBlockVariationPicker\n\t\t\t\ticon={ icon }\n\t\t\t\tlabel={ label }\n\t\t\t\tvariations={ scopeVariations }\n\t\t\t\tonSelect={ ( variation ) => {\n\t\t\t\t\tif ( variation.innerBlocks ) {\n\t\t\t\t\t\treplaceInnerBlocks(\n\t\t\t\t\t\t\tclientId,\n\t\t\t\t\t\t\tcreateBlocksFromInnerBlocksTemplate(\n\t\t\t\t\t\t\t\tvariation.innerBlocks\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tfalse\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t} }\n\t\t\t/>\n\t\t</div>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useSelect","useDispatch","createBlocksFromInnerBlocksTemplate","store","blocksStore","useState","useBlockProps","blockEditorStore","__experimentalBlockVariationPicker","Button","Placeholder","__","useScopedBlockVariations","useBlockPatterns","jsx","_jsx","jsxs","_jsxs","QueryPlaceholder","attributes","clientId","name","openPatternSelectionModal","isStartingBlank","setIsStartingBlank","blockProps","blockType","activeBlockVariation","select","getActiveBlockVariation","getBlockType","hasPatterns","length","icon","src","label","title","QueryVariationPicker","children","instructions","__next40pxDefaultSize","variant","onClick","scopeVariations","replaceInnerBlocks","variations","onSelect","variation","innerBlocks"],"sources":["@wordpress/block-library/src/query/edit/query-placeholder.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport {\n\tcreateBlocksFromInnerBlocksTemplate,\n\tstore as blocksStore,\n} from '@wordpress/blocks';\nimport { useState } from '@wordpress/element';\nimport {\n\tuseBlockProps,\n\tstore as blockEditorStore,\n\t__experimentalBlockVariationPicker,\n} from '@wordpress/block-editor';\nimport { Button, Placeholder } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { useScopedBlockVariations } from '../utils';\nimport { useBlockPatterns } from './pattern-selection';\n\nexport default function QueryPlaceholder( {\n\tattributes,\n\tclientId,\n\tname,\n\topenPatternSelectionModal,\n} ) {\n\tconst [ isStartingBlank, setIsStartingBlank ] = useState( false );\n\tconst blockProps = useBlockProps();\n\tconst { blockType, activeBlockVariation } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getActiveBlockVariation, getBlockType } =\n\t\t\t\tselect( blocksStore );\n\t\t\treturn {\n\t\t\t\tblockType: getBlockType( name ),\n\t\t\t\tactiveBlockVariation: getActiveBlockVariation(\n\t\t\t\t\tname,\n\t\t\t\t\tattributes\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\t[ name, attributes ]\n\t);\n\tconst hasPatterns = !! useBlockPatterns( clientId, attributes ).length;\n\tconst icon =\n\t\tactiveBlockVariation?.icon?.src ||\n\t\tactiveBlockVariation?.icon ||\n\t\tblockType?.icon?.src;\n\tconst label = activeBlockVariation?.title || blockType?.title;\n\tif ( isStartingBlank ) {\n\t\treturn (\n\t\t\t<QueryVariationPicker\n\t\t\t\tclientId={ clientId }\n\t\t\t\tattributes={ attributes }\n\t\t\t\ticon={ icon }\n\t\t\t\tlabel={ label }\n\t\t\t/>\n\t\t);\n\t}\n\treturn (\n\t\t<div { ...blockProps }>\n\t\t\t<Placeholder\n\t\t\t\ticon={ icon }\n\t\t\t\tlabel={ label }\n\t\t\t\tinstructions={ __(\n\t\t\t\t\t'Choose a pattern for the query loop or start blank.'\n\t\t\t\t) }\n\t\t\t>\n\t\t\t\t{ !! hasPatterns && (\n\t\t\t\t\t<Button\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\tonClick={ openPatternSelectionModal }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Choose' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t) }\n\n\t\t\t\t<Button\n\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\tsetIsStartingBlank( true );\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Start blank' ) }\n\t\t\t\t</Button>\n\t\t\t</Placeholder>\n\t\t</div>\n\t);\n}\n\nfunction QueryVariationPicker( { clientId, attributes, icon, label } ) {\n\tconst scopeVariations = useScopedBlockVariations( attributes );\n\tconst { replaceInnerBlocks } = useDispatch( blockEditorStore );\n\tconst blockProps = useBlockProps();\n\treturn (\n\t\t<div { ...blockProps }>\n\t\t\t<__experimentalBlockVariationPicker\n\t\t\t\ticon={ icon }\n\t\t\t\tlabel={ label }\n\t\t\t\tvariations={ scopeVariations }\n\t\t\t\tonSelect={ ( variation ) => {\n\t\t\t\t\tif ( variation.innerBlocks ) {\n\t\t\t\t\t\treplaceInnerBlocks(\n\t\t\t\t\t\t\tclientId,\n\t\t\t\t\t\t\tcreateBlocksFromInnerBlocksTemplate(\n\t\t\t\t\t\t\t\tvariation.innerBlocks\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tfalse\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t} }\n\t\t\t/>\n\t\t</div>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,26 +1,44 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import { ToolbarGroup, ToolbarButton } from '@wordpress/components';
4
+ import { ToolbarGroup, ToolbarButton, Dropdown, __experimentalDropdownContentWrapper as DropdownContentWrapper } from '@wordpress/components';
5
5
  import { __ } from '@wordpress/i18n';
6
6
 
7
7
  /**
8
8
  * Internal dependencies
9
9
  */
10
- import { usePatterns } from '../utils';
11
- import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
10
+ import PatternSelection, { useBlockPatterns } from './pattern-selection';
11
+ import { jsx as _jsx } from "react/jsx-runtime";
12
12
  export default function QueryToolbar({
13
- openPatternSelectionModal,
14
- name,
15
- clientId
13
+ clientId,
14
+ attributes
16
15
  }) {
17
- const hasPatterns = !!usePatterns(clientId, name).length;
18
- return /*#__PURE__*/_jsx(_Fragment, {
19
- children: hasPatterns && /*#__PURE__*/_jsx(ToolbarGroup, {
20
- className: "wp-block-template-part__block-control-group",
21
- children: /*#__PURE__*/_jsx(ToolbarButton, {
22
- onClick: openPatternSelectionModal,
23
- children: __('Replace')
16
+ const hasPatterns = useBlockPatterns(clientId, attributes).length;
17
+ if (!hasPatterns) {
18
+ return null;
19
+ }
20
+ return /*#__PURE__*/_jsx(ToolbarGroup, {
21
+ className: "wp-block-template-part__block-control-group",
22
+ children: /*#__PURE__*/_jsx(DropdownContentWrapper, {
23
+ children: /*#__PURE__*/_jsx(Dropdown, {
24
+ contentClassName: "block-editor-block-settings-menu__popover",
25
+ focusOnMount: "firstElement",
26
+ expandOnMobile: true,
27
+ renderToggle: ({
28
+ isOpen,
29
+ onToggle
30
+ }) => /*#__PURE__*/_jsx(ToolbarButton, {
31
+ "aria-haspopup": "true",
32
+ "aria-expanded": isOpen,
33
+ onClick: onToggle,
34
+ children: __('Change design')
35
+ }),
36
+ renderContent: () => /*#__PURE__*/_jsx(PatternSelection, {
37
+ clientId: clientId,
38
+ attributes: attributes,
39
+ showSearch: false,
40
+ showTitlesAsTooltip: true
41
+ })
24
42
  })
25
43
  })
26
44
  });
@@ -1 +1 @@
1
- {"version":3,"names":["ToolbarGroup","ToolbarButton","__","usePatterns","jsx","_jsx","Fragment","_Fragment","QueryToolbar","openPatternSelectionModal","name","clientId","hasPatterns","length","children","className","onClick"],"sources":["@wordpress/block-library/src/query/edit/query-toolbar.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { ToolbarGroup, ToolbarButton } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { usePatterns } from '../utils';\n\nexport default function QueryToolbar( {\n\topenPatternSelectionModal,\n\tname,\n\tclientId,\n} ) {\n\tconst hasPatterns = !! usePatterns( clientId, name ).length;\n\n\treturn (\n\t\t<>\n\t\t\t{ hasPatterns && (\n\t\t\t\t<ToolbarGroup className=\"wp-block-template-part__block-control-group\">\n\t\t\t\t\t<ToolbarButton onClick={ openPatternSelectionModal }>\n\t\t\t\t\t\t{ __( 'Replace' ) }\n\t\t\t\t\t</ToolbarButton>\n\t\t\t\t</ToolbarGroup>\n\t\t\t) }\n\t\t</>\n\t);\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,YAAY,EAAEC,aAAa,QAAQ,uBAAuB;AACnE,SAASC,EAAE,QAAQ,iBAAiB;;AAEpC;AACA;AACA;AACA,SAASC,WAAW,QAAQ,UAAU;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,QAAA,IAAAC,SAAA;AAEvC,eAAe,SAASC,YAAYA,CAAE;EACrCC,yBAAyB;EACzBC,IAAI;EACJC;AACD,CAAC,EAAG;EACH,MAAMC,WAAW,GAAG,CAAC,CAAET,WAAW,CAAEQ,QAAQ,EAAED,IAAK,CAAC,CAACG,MAAM;EAE3D,oBACCR,IAAA,CAAAE,SAAA;IAAAO,QAAA,EACGF,WAAW,iBACZP,IAAA,CAACL,YAAY;MAACe,SAAS,EAAC,6CAA6C;MAAAD,QAAA,eACpET,IAAA,CAACJ,aAAa;QAACe,OAAO,EAAGP,yBAA2B;QAAAK,QAAA,EACjDZ,EAAE,CAAE,SAAU;MAAC,CACH;IAAC,CACH;EACd,CACA,CAAC;AAEL","ignoreList":[]}
1
+ {"version":3,"names":["ToolbarGroup","ToolbarButton","Dropdown","__experimentalDropdownContentWrapper","DropdownContentWrapper","__","PatternSelection","useBlockPatterns","jsx","_jsx","QueryToolbar","clientId","attributes","hasPatterns","length","className","children","contentClassName","focusOnMount","expandOnMobile","renderToggle","isOpen","onToggle","onClick","renderContent","showSearch","showTitlesAsTooltip"],"sources":["@wordpress/block-library/src/query/edit/query-toolbar.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tToolbarGroup,\n\tToolbarButton,\n\tDropdown,\n\t__experimentalDropdownContentWrapper as DropdownContentWrapper,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport PatternSelection, { useBlockPatterns } from './pattern-selection';\n\nexport default function QueryToolbar( { clientId, attributes } ) {\n\tconst hasPatterns = useBlockPatterns( clientId, attributes ).length;\n\tif ( ! hasPatterns ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<ToolbarGroup className=\"wp-block-template-part__block-control-group\">\n\t\t\t<DropdownContentWrapper>\n\t\t\t\t<Dropdown\n\t\t\t\t\tcontentClassName=\"block-editor-block-settings-menu__popover\"\n\t\t\t\t\tfocusOnMount=\"firstElement\"\n\t\t\t\t\texpandOnMobile\n\t\t\t\t\trenderToggle={ ( { isOpen, onToggle } ) => (\n\t\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\t\taria-haspopup=\"true\"\n\t\t\t\t\t\t\taria-expanded={ isOpen }\n\t\t\t\t\t\t\tonClick={ onToggle }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Change design' ) }\n\t\t\t\t\t\t</ToolbarButton>\n\t\t\t\t\t) }\n\t\t\t\t\trenderContent={ () => (\n\t\t\t\t\t\t<PatternSelection\n\t\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t\t\tattributes={ attributes }\n\t\t\t\t\t\t\tshowSearch={ false }\n\t\t\t\t\t\t\tshowTitlesAsTooltip\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t/>\n\t\t\t</DropdownContentWrapper>\n\t\t</ToolbarGroup>\n\t);\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SACCA,YAAY,EACZC,aAAa,EACbC,QAAQ,EACRC,oCAAoC,IAAIC,sBAAsB,QACxD,uBAAuB;AAC9B,SAASC,EAAE,QAAQ,iBAAiB;;AAEpC;AACA;AACA;AACA,OAAOC,gBAAgB,IAAIC,gBAAgB,QAAQ,qBAAqB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAEzE,eAAe,SAASC,YAAYA,CAAE;EAAEC,QAAQ;EAAEC;AAAW,CAAC,EAAG;EAChE,MAAMC,WAAW,GAAGN,gBAAgB,CAAEI,QAAQ,EAAEC,UAAW,CAAC,CAACE,MAAM;EACnE,IAAK,CAAED,WAAW,EAAG;IACpB,OAAO,IAAI;EACZ;EAEA,oBACCJ,IAAA,CAACT,YAAY;IAACe,SAAS,EAAC,6CAA6C;IAAAC,QAAA,eACpEP,IAAA,CAACL,sBAAsB;MAAAY,QAAA,eACtBP,IAAA,CAACP,QAAQ;QACRe,gBAAgB,EAAC,2CAA2C;QAC5DC,YAAY,EAAC,cAAc;QAC3BC,cAAc;QACdC,YAAY,EAAGA,CAAE;UAAEC,MAAM;UAAEC;QAAS,CAAC,kBACpCb,IAAA,CAACR,aAAa;UACb,iBAAc,MAAM;UACpB,iBAAgBoB,MAAQ;UACxBE,OAAO,EAAGD,QAAU;UAAAN,QAAA,EAElBX,EAAE,CAAE,eAAgB;QAAC,CACT,CACb;QACHmB,aAAa,EAAGA,CAAA,kBACff,IAAA,CAACH,gBAAgB;UAChBK,QAAQ,EAAGA,QAAU;UACrBC,UAAU,EAAGA,UAAY;UACzBa,UAAU,EAAG,KAAO;UACpBC,mBAAmB;QAAA,CACnB;MACC,CACH;IAAC,CACqB;EAAC,CACZ,CAAC;AAEjB","ignoreList":[]}
@@ -61,7 +61,8 @@ const v1 = {
61
61
  color: {
62
62
  background: customColor
63
63
  }
64
- } : undefined
64
+ } : undefined,
65
+ tagName: 'hr'
65
66
  };
66
67
  }
67
68
  };
@@ -1 +1 @@
1
- {"version":3,"names":["clsx","getColorClassName","useBlockProps","jsx","_jsx","v1","attributes","color","type","customColor","save","backgroundClass","colorClass","className","style","backgroundColor","undefined","migrate","restAttributes","opacity","background"],"sources":["@wordpress/block-library/src/separator/deprecated.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { getColorClassName, useBlockProps } from '@wordpress/block-editor';\n\nconst v1 = {\n\tattributes: {\n\t\tcolor: {\n\t\t\ttype: 'string',\n\t\t},\n\t\tcustomColor: {\n\t\t\ttype: 'string',\n\t\t},\n\t},\n\tsave( { attributes } ) {\n\t\tconst { color, customColor } = attributes;\n\n\t\t// the hr support changing color using border-color, since border-color\n\t\t// is not yet supported in the color palette, we use background-color\n\t\tconst backgroundClass = getColorClassName( 'background-color', color );\n\t\t// the dots styles uses text for the dots, to change those dots color is\n\t\t// using color, not backgroundColor\n\t\tconst colorClass = getColorClassName( 'color', color );\n\n\t\tconst className = clsx( {\n\t\t\t'has-text-color has-background': color || customColor,\n\t\t\t[ backgroundClass ]: backgroundClass,\n\t\t\t[ colorClass ]: colorClass,\n\t\t} );\n\n\t\tconst style = {\n\t\t\tbackgroundColor: backgroundClass ? undefined : customColor,\n\t\t\tcolor: colorClass ? undefined : customColor,\n\t\t};\n\n\t\treturn <hr { ...useBlockProps.save( { className, style } ) } />;\n\t},\n\tmigrate( attributes ) {\n\t\tconst { color, customColor, ...restAttributes } = attributes;\n\t\treturn {\n\t\t\t...restAttributes,\n\t\t\tbackgroundColor: color ? color : undefined,\n\t\t\topacity: 'css',\n\t\t\tstyle: customColor\n\t\t\t\t? { color: { background: customColor } }\n\t\t\t\t: undefined,\n\t\t};\n\t},\n};\n\nexport default [ v1 ];\n"],"mappings":"AAAA;AACA;AACA;AACA,OAAOA,IAAI,MAAM,MAAM;;AAEvB;AACA;AACA;AACA,SAASC,iBAAiB,EAAEC,aAAa,QAAQ,yBAAyB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAE3E,MAAMC,EAAE,GAAG;EACVC,UAAU,EAAE;IACXC,KAAK,EAAE;MACNC,IAAI,EAAE;IACP,CAAC;IACDC,WAAW,EAAE;MACZD,IAAI,EAAE;IACP;EACD,CAAC;EACDE,IAAIA,CAAE;IAAEJ;EAAW,CAAC,EAAG;IACtB,MAAM;MAAEC,KAAK;MAAEE;IAAY,CAAC,GAAGH,UAAU;;IAEzC;IACA;IACA,MAAMK,eAAe,GAAGV,iBAAiB,CAAE,kBAAkB,EAAEM,KAAM,CAAC;IACtE;IACA;IACA,MAAMK,UAAU,GAAGX,iBAAiB,CAAE,OAAO,EAAEM,KAAM,CAAC;IAEtD,MAAMM,SAAS,GAAGb,IAAI,CAAE;MACvB,+BAA+B,EAAEO,KAAK,IAAIE,WAAW;MACrD,CAAEE,eAAe,GAAIA,eAAe;MACpC,CAAEC,UAAU,GAAIA;IACjB,CAAE,CAAC;IAEH,MAAME,KAAK,GAAG;MACbC,eAAe,EAAEJ,eAAe,GAAGK,SAAS,GAAGP,WAAW;MAC1DF,KAAK,EAAEK,UAAU,GAAGI,SAAS,GAAGP;IACjC,CAAC;IAED,oBAAOL,IAAA;MAAA,GAASF,aAAa,CAACQ,IAAI,CAAE;QAAEG,SAAS;QAAEC;MAAM,CAAE;IAAC,CAAI,CAAC;EAChE,CAAC;EACDG,OAAOA,CAAEX,UAAU,EAAG;IACrB,MAAM;MAAEC,KAAK;MAAEE,WAAW;MAAE,GAAGS;IAAe,CAAC,GAAGZ,UAAU;IAC5D,OAAO;MACN,GAAGY,cAAc;MACjBH,eAAe,EAAER,KAAK,GAAGA,KAAK,GAAGS,SAAS;MAC1CG,OAAO,EAAE,KAAK;MACdL,KAAK,EAAEL,WAAW,GACf;QAAEF,KAAK,EAAE;UAAEa,UAAU,EAAEX;QAAY;MAAE,CAAC,GACtCO;IACJ,CAAC;EACF;AACD,CAAC;AAED,eAAe,CAAEX,EAAE,CAAE","ignoreList":[]}
1
+ {"version":3,"names":["clsx","getColorClassName","useBlockProps","jsx","_jsx","v1","attributes","color","type","customColor","save","backgroundClass","colorClass","className","style","backgroundColor","undefined","migrate","restAttributes","opacity","background","tagName"],"sources":["@wordpress/block-library/src/separator/deprecated.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { getColorClassName, useBlockProps } from '@wordpress/block-editor';\n\nconst v1 = {\n\tattributes: {\n\t\tcolor: {\n\t\t\ttype: 'string',\n\t\t},\n\t\tcustomColor: {\n\t\t\ttype: 'string',\n\t\t},\n\t},\n\tsave( { attributes } ) {\n\t\tconst { color, customColor } = attributes;\n\n\t\t// the hr support changing color using border-color, since border-color\n\t\t// is not yet supported in the color palette, we use background-color\n\t\tconst backgroundClass = getColorClassName( 'background-color', color );\n\t\t// the dots styles uses text for the dots, to change those dots color is\n\t\t// using color, not backgroundColor\n\t\tconst colorClass = getColorClassName( 'color', color );\n\n\t\tconst className = clsx( {\n\t\t\t'has-text-color has-background': color || customColor,\n\t\t\t[ backgroundClass ]: backgroundClass,\n\t\t\t[ colorClass ]: colorClass,\n\t\t} );\n\n\t\tconst style = {\n\t\t\tbackgroundColor: backgroundClass ? undefined : customColor,\n\t\t\tcolor: colorClass ? undefined : customColor,\n\t\t};\n\n\t\treturn <hr { ...useBlockProps.save( { className, style } ) } />;\n\t},\n\tmigrate( attributes ) {\n\t\tconst { color, customColor, ...restAttributes } = attributes;\n\t\treturn {\n\t\t\t...restAttributes,\n\t\t\tbackgroundColor: color ? color : undefined,\n\t\t\topacity: 'css',\n\t\t\tstyle: customColor\n\t\t\t\t? { color: { background: customColor } }\n\t\t\t\t: undefined,\n\t\t\ttagName: 'hr',\n\t\t};\n\t},\n};\n\nexport default [ v1 ];\n"],"mappings":"AAAA;AACA;AACA;AACA,OAAOA,IAAI,MAAM,MAAM;;AAEvB;AACA;AACA;AACA,SAASC,iBAAiB,EAAEC,aAAa,QAAQ,yBAAyB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAE3E,MAAMC,EAAE,GAAG;EACVC,UAAU,EAAE;IACXC,KAAK,EAAE;MACNC,IAAI,EAAE;IACP,CAAC;IACDC,WAAW,EAAE;MACZD,IAAI,EAAE;IACP;EACD,CAAC;EACDE,IAAIA,CAAE;IAAEJ;EAAW,CAAC,EAAG;IACtB,MAAM;MAAEC,KAAK;MAAEE;IAAY,CAAC,GAAGH,UAAU;;IAEzC;IACA;IACA,MAAMK,eAAe,GAAGV,iBAAiB,CAAE,kBAAkB,EAAEM,KAAM,CAAC;IACtE;IACA;IACA,MAAMK,UAAU,GAAGX,iBAAiB,CAAE,OAAO,EAAEM,KAAM,CAAC;IAEtD,MAAMM,SAAS,GAAGb,IAAI,CAAE;MACvB,+BAA+B,EAAEO,KAAK,IAAIE,WAAW;MACrD,CAAEE,eAAe,GAAIA,eAAe;MACpC,CAAEC,UAAU,GAAIA;IACjB,CAAE,CAAC;IAEH,MAAME,KAAK,GAAG;MACbC,eAAe,EAAEJ,eAAe,GAAGK,SAAS,GAAGP,WAAW;MAC1DF,KAAK,EAAEK,UAAU,GAAGI,SAAS,GAAGP;IACjC,CAAC;IAED,oBAAOL,IAAA;MAAA,GAASF,aAAa,CAACQ,IAAI,CAAE;QAAEG,SAAS;QAAEC;MAAM,CAAE;IAAC,CAAI,CAAC;EAChE,CAAC;EACDG,OAAOA,CAAEX,UAAU,EAAG;IACrB,MAAM;MAAEC,KAAK;MAAEE,WAAW;MAAE,GAAGS;IAAe,CAAC,GAAGZ,UAAU;IAC5D,OAAO;MACN,GAAGY,cAAc;MACjBH,eAAe,EAAER,KAAK,GAAGA,KAAK,GAAGS,SAAS;MAC1CG,OAAO,EAAE,KAAK;MACdL,KAAK,EAAEL,WAAW,GACf;QAAEF,KAAK,EAAE;UAAEa,UAAU,EAAEX;QAAY;MAAE,CAAC,GACtCO,SAAS;MACZK,OAAO,EAAE;IACV,CAAC;EACF;AACD,CAAC;AAED,eAAe,CAAEhB,EAAE,CAAE","ignoreList":[]}
@@ -6,14 +6,18 @@ import clsx from 'clsx';
6
6
  /**
7
7
  * WordPress dependencies
8
8
  */
9
- import { HorizontalRule } from '@wordpress/components';
10
- import { useBlockProps, getColorClassName, __experimentalUseColorProps as useColorProps } from '@wordpress/block-editor';
9
+ import { HorizontalRule, SelectControl } from '@wordpress/components';
10
+ import { useBlockProps, getColorClassName, __experimentalUseColorProps as useColorProps, InspectorControls } from '@wordpress/block-editor';
11
+ import { __ } from '@wordpress/i18n';
11
12
 
12
13
  /**
13
14
  * Internal dependencies
14
15
  */
15
16
  import useDeprecatedOpacity from './use-deprecated-opacity';
16
- import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
17
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
18
+ const htmlElementMessages = {
19
+ div: __('The <div> element should only be used if the separator is a design element that should not be announced.')
20
+ };
17
21
  export default function SeparatorEdit({
18
22
  attributes,
19
23
  setAttributes
@@ -21,7 +25,8 @@ export default function SeparatorEdit({
21
25
  const {
22
26
  backgroundColor,
23
27
  opacity,
24
- style
28
+ style,
29
+ tagName
25
30
  } = attributes;
26
31
  const colorProps = useColorProps(attributes);
27
32
  const currentColor = colorProps?.style?.backgroundColor;
@@ -41,13 +46,33 @@ export default function SeparatorEdit({
41
46
  color: currentColor,
42
47
  backgroundColor: currentColor
43
48
  };
44
- return /*#__PURE__*/_jsx(_Fragment, {
45
- children: /*#__PURE__*/_jsx(HorizontalRule, {
49
+ const Wrapper = tagName === 'hr' ? HorizontalRule : tagName;
50
+ return /*#__PURE__*/_jsxs(_Fragment, {
51
+ children: [/*#__PURE__*/_jsx(InspectorControls, {
52
+ group: "advanced",
53
+ children: /*#__PURE__*/_jsx(SelectControl, {
54
+ __nextHasNoMarginBottom: true,
55
+ __next40pxDefaultSize: true,
56
+ label: __('HTML element'),
57
+ options: [{
58
+ label: __('Default (<hr>)'),
59
+ value: 'hr'
60
+ }, {
61
+ label: '<div>',
62
+ value: 'div'
63
+ }],
64
+ value: tagName,
65
+ onChange: value => setAttributes({
66
+ tagName: value
67
+ }),
68
+ help: htmlElementMessages[tagName]
69
+ })
70
+ }), /*#__PURE__*/_jsx(Wrapper, {
46
71
  ...useBlockProps({
47
72
  className,
48
73
  style: hasCustomColor ? styles : undefined
49
74
  })
50
- })
75
+ })]
51
76
  });
52
77
  }
53
78
  //# sourceMappingURL=edit.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["clsx","HorizontalRule","useBlockProps","getColorClassName","__experimentalUseColorProps","useColorProps","useDeprecatedOpacity","jsx","_jsx","Fragment","_Fragment","SeparatorEdit","attributes","setAttributes","backgroundColor","opacity","style","colorProps","currentColor","hasCustomColor","color","background","colorClass","className","styles","children","undefined"],"sources":["@wordpress/block-library/src/separator/edit.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { HorizontalRule } from '@wordpress/components';\nimport {\n\tuseBlockProps,\n\tgetColorClassName,\n\t__experimentalUseColorProps as useColorProps,\n} from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport useDeprecatedOpacity from './use-deprecated-opacity';\n\nexport default function SeparatorEdit( { attributes, setAttributes } ) {\n\tconst { backgroundColor, opacity, style } = attributes;\n\tconst colorProps = useColorProps( attributes );\n\tconst currentColor = colorProps?.style?.backgroundColor;\n\tconst hasCustomColor = !! style?.color?.background;\n\n\tuseDeprecatedOpacity( opacity, currentColor, setAttributes );\n\n\t// The dots styles uses text for the dots, to change those dots color is\n\t// using color, not backgroundColor.\n\tconst colorClass = getColorClassName( 'color', backgroundColor );\n\n\tconst className = clsx(\n\t\t{\n\t\t\t'has-text-color': backgroundColor || currentColor,\n\t\t\t[ colorClass ]: colorClass,\n\t\t\t'has-css-opacity': opacity === 'css',\n\t\t\t'has-alpha-channel-opacity': opacity === 'alpha-channel',\n\t\t},\n\t\tcolorProps.className\n\t);\n\n\tconst styles = {\n\t\tcolor: currentColor,\n\t\tbackgroundColor: currentColor,\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<HorizontalRule\n\t\t\t\t{ ...useBlockProps( {\n\t\t\t\t\tclassName,\n\t\t\t\t\tstyle: hasCustomColor ? styles : undefined,\n\t\t\t\t} ) }\n\t\t\t/>\n\t\t</>\n\t);\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,OAAOA,IAAI,MAAM,MAAM;;AAEvB;AACA;AACA;AACA,SAASC,cAAc,QAAQ,uBAAuB;AACtD,SACCC,aAAa,EACbC,iBAAiB,EACjBC,2BAA2B,IAAIC,aAAa,QACtC,yBAAyB;;AAEhC;AACA;AACA;AACA,OAAOC,oBAAoB,MAAM,0BAA0B;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,QAAA,IAAAC,SAAA;AAE5D,eAAe,SAASC,aAAaA,CAAE;EAAEC,UAAU;EAAEC;AAAc,CAAC,EAAG;EACtE,MAAM;IAAEC,eAAe;IAAEC,OAAO;IAAEC;EAAM,CAAC,GAAGJ,UAAU;EACtD,MAAMK,UAAU,GAAGZ,aAAa,CAAEO,UAAW,CAAC;EAC9C,MAAMM,YAAY,GAAGD,UAAU,EAAED,KAAK,EAAEF,eAAe;EACvD,MAAMK,cAAc,GAAG,CAAC,CAAEH,KAAK,EAAEI,KAAK,EAAEC,UAAU;EAElDf,oBAAoB,CAAES,OAAO,EAAEG,YAAY,EAAEL,aAAc,CAAC;;EAE5D;EACA;EACA,MAAMS,UAAU,GAAGnB,iBAAiB,CAAE,OAAO,EAAEW,eAAgB,CAAC;EAEhE,MAAMS,SAAS,GAAGvB,IAAI,CACrB;IACC,gBAAgB,EAAEc,eAAe,IAAII,YAAY;IACjD,CAAEI,UAAU,GAAIA,UAAU;IAC1B,iBAAiB,EAAEP,OAAO,KAAK,KAAK;IACpC,2BAA2B,EAAEA,OAAO,KAAK;EAC1C,CAAC,EACDE,UAAU,CAACM,SACZ,CAAC;EAED,MAAMC,MAAM,GAAG;IACdJ,KAAK,EAAEF,YAAY;IACnBJ,eAAe,EAAEI;EAClB,CAAC;EAED,oBACCV,IAAA,CAAAE,SAAA;IAAAe,QAAA,eACCjB,IAAA,CAACP,cAAc;MAAA,GACTC,aAAa,CAAE;QACnBqB,SAAS;QACTP,KAAK,EAAEG,cAAc,GAAGK,MAAM,GAAGE;MAClC,CAAE;IAAC,CACH;EAAC,CACD,CAAC;AAEL","ignoreList":[]}
1
+ {"version":3,"names":["clsx","HorizontalRule","SelectControl","useBlockProps","getColorClassName","__experimentalUseColorProps","useColorProps","InspectorControls","__","useDeprecatedOpacity","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","htmlElementMessages","div","SeparatorEdit","attributes","setAttributes","backgroundColor","opacity","style","tagName","colorProps","currentColor","hasCustomColor","color","background","colorClass","className","styles","Wrapper","children","group","__nextHasNoMarginBottom","__next40pxDefaultSize","label","options","value","onChange","help","undefined"],"sources":["@wordpress/block-library/src/separator/edit.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { HorizontalRule, SelectControl } from '@wordpress/components';\nimport {\n\tuseBlockProps,\n\tgetColorClassName,\n\t__experimentalUseColorProps as useColorProps,\n\tInspectorControls,\n} from '@wordpress/block-editor';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport useDeprecatedOpacity from './use-deprecated-opacity';\n\nconst htmlElementMessages = {\n\tdiv: __(\n\t\t'The <div> element should only be used if the separator is a design element that should not be announced.'\n\t),\n};\n\nexport default function SeparatorEdit( { attributes, setAttributes } ) {\n\tconst { backgroundColor, opacity, style, tagName } = attributes;\n\tconst colorProps = useColorProps( attributes );\n\tconst currentColor = colorProps?.style?.backgroundColor;\n\tconst hasCustomColor = !! style?.color?.background;\n\n\tuseDeprecatedOpacity( opacity, currentColor, setAttributes );\n\n\t// The dots styles uses text for the dots, to change those dots color is\n\t// using color, not backgroundColor.\n\tconst colorClass = getColorClassName( 'color', backgroundColor );\n\n\tconst className = clsx(\n\t\t{\n\t\t\t'has-text-color': backgroundColor || currentColor,\n\t\t\t[ colorClass ]: colorClass,\n\t\t\t'has-css-opacity': opacity === 'css',\n\t\t\t'has-alpha-channel-opacity': opacity === 'alpha-channel',\n\t\t},\n\t\tcolorProps.className\n\t);\n\n\tconst styles = {\n\t\tcolor: currentColor,\n\t\tbackgroundColor: currentColor,\n\t};\n\tconst Wrapper = tagName === 'hr' ? HorizontalRule : tagName;\n\n\treturn (\n\t\t<>\n\t\t\t<InspectorControls group=\"advanced\">\n\t\t\t\t<SelectControl\n\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\tlabel={ __( 'HTML element' ) }\n\t\t\t\t\toptions={ [\n\t\t\t\t\t\t{ label: __( 'Default (<hr>)' ), value: 'hr' },\n\t\t\t\t\t\t{ label: '<div>', value: 'div' },\n\t\t\t\t\t] }\n\t\t\t\t\tvalue={ tagName }\n\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\tsetAttributes( { tagName: value } )\n\t\t\t\t\t}\n\t\t\t\t\thelp={ htmlElementMessages[ tagName ] }\n\t\t\t\t/>\n\t\t\t</InspectorControls>\n\t\t\t<Wrapper\n\t\t\t\t{ ...useBlockProps( {\n\t\t\t\t\tclassName,\n\t\t\t\t\tstyle: hasCustomColor ? styles : undefined,\n\t\t\t\t} ) }\n\t\t\t/>\n\t\t</>\n\t);\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,OAAOA,IAAI,MAAM,MAAM;;AAEvB;AACA;AACA;AACA,SAASC,cAAc,EAAEC,aAAa,QAAQ,uBAAuB;AACrE,SACCC,aAAa,EACbC,iBAAiB,EACjBC,2BAA2B,IAAIC,aAAa,EAC5CC,iBAAiB,QACX,yBAAyB;AAChC,SAASC,EAAE,QAAQ,iBAAiB;;AAEpC;AACA;AACA;AACA,OAAOC,oBAAoB,MAAM,0BAA0B;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,QAAA,IAAAC,SAAA,EAAAC,IAAA,IAAAC,KAAA;AAE5D,MAAMC,mBAAmB,GAAG;EAC3BC,GAAG,EAAET,EAAE,CACN,0GACD;AACD,CAAC;AAED,eAAe,SAASU,aAAaA,CAAE;EAAEC,UAAU;EAAEC;AAAc,CAAC,EAAG;EACtE,MAAM;IAAEC,eAAe;IAAEC,OAAO;IAAEC,KAAK;IAAEC;EAAQ,CAAC,GAAGL,UAAU;EAC/D,MAAMM,UAAU,GAAGnB,aAAa,CAAEa,UAAW,CAAC;EAC9C,MAAMO,YAAY,GAAGD,UAAU,EAAEF,KAAK,EAAEF,eAAe;EACvD,MAAMM,cAAc,GAAG,CAAC,CAAEJ,KAAK,EAAEK,KAAK,EAAEC,UAAU;EAElDpB,oBAAoB,CAAEa,OAAO,EAAEI,YAAY,EAAEN,aAAc,CAAC;;EAE5D;EACA;EACA,MAAMU,UAAU,GAAG1B,iBAAiB,CAAE,OAAO,EAAEiB,eAAgB,CAAC;EAEhE,MAAMU,SAAS,GAAG/B,IAAI,CACrB;IACC,gBAAgB,EAAEqB,eAAe,IAAIK,YAAY;IACjD,CAAEI,UAAU,GAAIA,UAAU;IAC1B,iBAAiB,EAAER,OAAO,KAAK,KAAK;IACpC,2BAA2B,EAAEA,OAAO,KAAK;EAC1C,CAAC,EACDG,UAAU,CAACM,SACZ,CAAC;EAED,MAAMC,MAAM,GAAG;IACdJ,KAAK,EAAEF,YAAY;IACnBL,eAAe,EAAEK;EAClB,CAAC;EACD,MAAMO,OAAO,GAAGT,OAAO,KAAK,IAAI,GAAGvB,cAAc,GAAGuB,OAAO;EAE3D,oBACCT,KAAA,CAAAF,SAAA;IAAAqB,QAAA,gBACCvB,IAAA,CAACJ,iBAAiB;MAAC4B,KAAK,EAAC,UAAU;MAAAD,QAAA,eAClCvB,IAAA,CAACT,aAAa;QACbkC,uBAAuB;QACvBC,qBAAqB;QACrBC,KAAK,EAAG9B,EAAE,CAAE,cAAe,CAAG;QAC9B+B,OAAO,EAAG,CACT;UAAED,KAAK,EAAE9B,EAAE,CAAE,gBAAiB,CAAC;UAAEgC,KAAK,EAAE;QAAK,CAAC,EAC9C;UAAEF,KAAK,EAAE,OAAO;UAAEE,KAAK,EAAE;QAAM,CAAC,CAC9B;QACHA,KAAK,EAAGhB,OAAS;QACjBiB,QAAQ,EAAKD,KAAK,IACjBpB,aAAa,CAAE;UAAEI,OAAO,EAAEgB;QAAM,CAAE,CAClC;QACDE,IAAI,EAAG1B,mBAAmB,CAAEQ,OAAO;MAAI,CACvC;IAAC,CACgB,CAAC,eACpBb,IAAA,CAACsB,OAAO;MAAA,GACF9B,aAAa,CAAE;QACnB4B,SAAS;QACTR,KAAK,EAAEI,cAAc,GAAGK,MAAM,GAAGW;MAClC,CAAE;IAAC,CACH,CAAC;EAAA,CACD,CAAC;AAEL","ignoreList":[]}
@@ -21,6 +21,11 @@ const metadata = {
21
21
  opacity: {
22
22
  type: "string",
23
23
  "default": "alpha-channel"
24
+ },
25
+ tagName: {
26
+ type: "string",
27
+ "enum": ["hr", "div"],
28
+ "default": "hr"
24
29
  }
25
30
  },
26
31
  supports: {