@wordpress/editor 13.18.0 → 13.19.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 (47) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/README.md +0 -5
  3. package/build/components/page-attributes/parent.js +14 -13
  4. package/build/components/page-attributes/parent.js.map +1 -1
  5. package/build/components/post-author/combobox.js +1 -0
  6. package/build/components/post-author/combobox.js.map +1 -1
  7. package/build/components/post-last-revision/index.js +1 -2
  8. package/build/components/post-last-revision/index.js.map +1 -1
  9. package/build/components/post-sync-status/index.js +10 -10
  10. package/build/components/post-sync-status/index.js.map +1 -1
  11. package/build/components/post-taxonomies/flat-term-selector.js +9 -0
  12. package/build/components/post-taxonomies/flat-term-selector.js.map +1 -1
  13. package/build/components/post-taxonomies/hierarchical-term-selector.js +19 -5
  14. package/build/components/post-taxonomies/hierarchical-term-selector.js.map +1 -1
  15. package/build/components/provider/use-block-editor-settings.js +11 -7
  16. package/build/components/provider/use-block-editor-settings.js.map +1 -1
  17. package/build/store/selectors.js +2 -2
  18. package/build/store/selectors.js.map +1 -1
  19. package/build-module/components/page-attributes/parent.js +14 -13
  20. package/build-module/components/page-attributes/parent.js.map +1 -1
  21. package/build-module/components/post-author/combobox.js +1 -0
  22. package/build-module/components/post-author/combobox.js.map +1 -1
  23. package/build-module/components/post-last-revision/index.js +1 -2
  24. package/build-module/components/post-last-revision/index.js.map +1 -1
  25. package/build-module/components/post-sync-status/index.js +10 -10
  26. package/build-module/components/post-sync-status/index.js.map +1 -1
  27. package/build-module/components/post-taxonomies/flat-term-selector.js +9 -0
  28. package/build-module/components/post-taxonomies/flat-term-selector.js.map +1 -1
  29. package/build-module/components/post-taxonomies/hierarchical-term-selector.js +19 -5
  30. package/build-module/components/post-taxonomies/hierarchical-term-selector.js.map +1 -1
  31. package/build-module/components/provider/use-block-editor-settings.js +12 -8
  32. package/build-module/components/provider/use-block-editor-settings.js.map +1 -1
  33. package/build-module/store/selectors.js +2 -2
  34. package/build-module/store/selectors.js.map +1 -1
  35. package/build-style/style-rtl.css +2 -2
  36. package/build-style/style.css +2 -2
  37. package/package.json +31 -31
  38. package/src/components/page-attributes/parent.js +18 -15
  39. package/src/components/post-author/combobox.js +1 -0
  40. package/src/components/post-last-revision/index.js +0 -1
  41. package/src/components/post-saved-state/test/index.js +3 -1
  42. package/src/components/post-sync-status/index.js +14 -8
  43. package/src/components/post-taxonomies/flat-term-selector.js +15 -6
  44. package/src/components/post-taxonomies/hierarchical-term-selector.js +18 -7
  45. package/src/components/provider/use-block-editor-settings.js +21 -11
  46. package/src/store/selectors.js +16 -10
  47. package/src/store/test/selectors.js +25 -0
@@ -1 +1 @@
1
- {"version":3,"names":["_element","require","_i18n","_components","_data","_compose","_coreData","_a11y","_htmlEntities","_terms","_store","DEFAULT_QUERY","per_page","orderby","order","_fields","context","MIN_TERMS_COUNT_FOR_FILTER","EMPTY_ARRAY","sortBySelected","termsTree","terms","treeHasSelection","termTree","indexOf","id","undefined","children","map","filter","child","length","termOrChildIsSelected","termA","termB","termASelected","termBSelected","newTermTree","sort","findTerm","parent","name","find","term","parseInt","toLowerCase","getFilterMatcher","filterValue","matchTermsForFilter","originalTerm","HierarchicalTermSelector","slug","_taxonomy$labels$sear","_taxonomy$name","adding","setAdding","useState","formName","setFormName","formParent","setFormParent","showForm","setShowForm","setFilterValue","filteredTermsTree","setFilteredTermsTree","debouncedSpeak","useDebounce","speak","hasCreateAction","hasAssignAction","loading","availableTerms","taxonomy","useSelect","select","_post$_links","_post$_links2","getCurrentPost","getEditedPostAttribute","editorStore","getTaxonomy","getEntityRecords","isResolving","coreStore","_taxonomy","post","_links","rest_base","editPost","useDispatch","saveEntityRecord","availableTermsTree","useMemo","buildTermsTree","addTerm","onUpdateTerms","termIds","onChange","termId","hasTerm","includes","newTerms","onChangeFormName","value","onChangeFormParent","parentId","onToggleForm","onAddTerm","event","_taxonomy$labels$sing","preventDefault","existingTerm","some","newTerm","defaultName","__","termAddedMessage","sprintf","_x","labels","singular_name","setFilter","newFilteredTermsTree","getResultCount","count","i","resultCount","resultsFoundMessage","_n","renderTerms","renderedTerms","createElement","key","className","CheckboxControl","__nextHasNoMarginBottom","checked","label","decodeEntities","labelWithFallback","labelProperty","fallbackIsCategory","fallbackIsNotCategory","_taxonomy$labels$labe","newTermButtonLabel","newTermLabel","parentSelectLabel","noParentOption","newTermSubmitLabel","filterLabel","search_items","groupLabel","showFilter","Flex","direction","gap","TextControl","tabIndex","role","FlexItem","Button","onClick","variant","onSubmit","required","TreeSelect","noOptionLabel","selectedId","tree","type","_default","withFilters","exports","default"],"sources":["@wordpress/editor/src/components/post-taxonomies/hierarchical-term-selector.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, _n, _x, sprintf } from '@wordpress/i18n';\nimport { useMemo, useState } from '@wordpress/element';\nimport {\n\tButton,\n\tCheckboxControl,\n\tTextControl,\n\tTreeSelect,\n\twithFilters,\n\tFlex,\n\tFlexItem,\n} from '@wordpress/components';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { useDebounce } from '@wordpress/compose';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { speak } from '@wordpress/a11y';\nimport { decodeEntities } from '@wordpress/html-entities';\n\n/**\n * Internal dependencies\n */\nimport { buildTermsTree } from '../../utils/terms';\nimport { store as editorStore } from '../../store';\n\n/**\n * Module Constants\n */\nconst DEFAULT_QUERY = {\n\tper_page: -1,\n\torderby: 'name',\n\torder: 'asc',\n\t_fields: 'id,name,parent',\n\tcontext: 'view',\n};\n\nconst MIN_TERMS_COUNT_FOR_FILTER = 8;\n\nconst EMPTY_ARRAY = [];\n\n/**\n * Sort Terms by Selected.\n *\n * @param {Object[]} termsTree Array of terms in tree format.\n * @param {number[]} terms Selected terms.\n *\n * @return {Object[]} Sorted array of terms.\n */\nexport function sortBySelected( termsTree, terms ) {\n\tconst treeHasSelection = ( termTree ) => {\n\t\tif ( terms.indexOf( termTree.id ) !== -1 ) {\n\t\t\treturn true;\n\t\t}\n\t\tif ( undefined === termTree.children ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn (\n\t\t\ttermTree.children\n\t\t\t\t.map( treeHasSelection )\n\t\t\t\t.filter( ( child ) => child ).length > 0\n\t\t);\n\t};\n\tconst termOrChildIsSelected = ( termA, termB ) => {\n\t\tconst termASelected = treeHasSelection( termA );\n\t\tconst termBSelected = treeHasSelection( termB );\n\n\t\tif ( termASelected === termBSelected ) {\n\t\t\treturn 0;\n\t\t}\n\n\t\tif ( termASelected && ! termBSelected ) {\n\t\t\treturn -1;\n\t\t}\n\n\t\tif ( ! termASelected && termBSelected ) {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn 0;\n\t};\n\tconst newTermTree = [ ...termsTree ];\n\tnewTermTree.sort( termOrChildIsSelected );\n\treturn newTermTree;\n}\n\n/**\n * Find term by parent id or name.\n *\n * @param {Object[]} terms Array of Terms.\n * @param {number|string} parent id.\n * @param {string} name Term name.\n * @return {Object} Term object.\n */\nexport function findTerm( terms, parent, name ) {\n\treturn terms.find( ( term ) => {\n\t\treturn (\n\t\t\t( ( ! term.parent && ! parent ) ||\n\t\t\t\tparseInt( term.parent ) === parseInt( parent ) ) &&\n\t\t\tterm.name.toLowerCase() === name.toLowerCase()\n\t\t);\n\t} );\n}\n\n/**\n * Get filter matcher function.\n *\n * @param {string} filterValue Filter value.\n * @return {(function(Object): (Object|boolean))} Matcher function.\n */\nexport function getFilterMatcher( filterValue ) {\n\tconst matchTermsForFilter = ( originalTerm ) => {\n\t\tif ( '' === filterValue ) {\n\t\t\treturn originalTerm;\n\t\t}\n\n\t\t// Shallow clone, because we'll be filtering the term's children and\n\t\t// don't want to modify the original term.\n\t\tconst term = { ...originalTerm };\n\n\t\t// Map and filter the children, recursive so we deal with grandchildren\n\t\t// and any deeper levels.\n\t\tif ( term.children.length > 0 ) {\n\t\t\tterm.children = term.children\n\t\t\t\t.map( matchTermsForFilter )\n\t\t\t\t.filter( ( child ) => child );\n\t\t}\n\n\t\t// If the term's name contains the filterValue, or it has children\n\t\t// (i.e. some child matched at some point in the tree) then return it.\n\t\tif (\n\t\t\t-1 !==\n\t\t\t\tterm.name.toLowerCase().indexOf( filterValue.toLowerCase() ) ||\n\t\t\tterm.children.length > 0\n\t\t) {\n\t\t\treturn term;\n\t\t}\n\n\t\t// Otherwise, return false. After mapping, the list of terms will need\n\t\t// to have false values filtered out.\n\t\treturn false;\n\t};\n\treturn matchTermsForFilter;\n}\n\n/**\n * Hierarchical term selector.\n *\n * @param {Object} props Component props.\n * @param {string} props.slug Taxonomy slug.\n * @return {WPElement} Hierarchical term selector component.\n */\nexport function HierarchicalTermSelector( { slug } ) {\n\tconst [ adding, setAdding ] = useState( false );\n\tconst [ formName, setFormName ] = useState( '' );\n\t/**\n\t * @type {[number|'', Function]}\n\t */\n\tconst [ formParent, setFormParent ] = useState( '' );\n\tconst [ showForm, setShowForm ] = useState( false );\n\tconst [ filterValue, setFilterValue ] = useState( '' );\n\tconst [ filteredTermsTree, setFilteredTermsTree ] = useState( [] );\n\tconst debouncedSpeak = useDebounce( speak, 500 );\n\n\tconst {\n\t\thasCreateAction,\n\t\thasAssignAction,\n\t\tterms,\n\t\tloading,\n\t\tavailableTerms,\n\t\ttaxonomy,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getCurrentPost, getEditedPostAttribute } =\n\t\t\t\tselect( editorStore );\n\t\t\tconst { getTaxonomy, getEntityRecords, isResolving } =\n\t\t\t\tselect( coreStore );\n\t\t\tconst _taxonomy = getTaxonomy( slug );\n\t\t\tconst post = getCurrentPost();\n\n\t\t\treturn {\n\t\t\t\thasCreateAction: _taxonomy\n\t\t\t\t\t? post._links?.[\n\t\t\t\t\t\t\t'wp:action-create-' + _taxonomy.rest_base\n\t\t\t\t\t ] ?? false\n\t\t\t\t\t: false,\n\t\t\t\thasAssignAction: _taxonomy\n\t\t\t\t\t? post._links?.[\n\t\t\t\t\t\t\t'wp:action-assign-' + _taxonomy.rest_base\n\t\t\t\t\t ] ?? false\n\t\t\t\t\t: false,\n\t\t\t\tterms: _taxonomy\n\t\t\t\t\t? getEditedPostAttribute( _taxonomy.rest_base )\n\t\t\t\t\t: EMPTY_ARRAY,\n\t\t\t\tloading: isResolving( 'getEntityRecords', [\n\t\t\t\t\t'taxonomy',\n\t\t\t\t\tslug,\n\t\t\t\t\tDEFAULT_QUERY,\n\t\t\t\t] ),\n\t\t\t\tavailableTerms:\n\t\t\t\t\tgetEntityRecords( 'taxonomy', slug, DEFAULT_QUERY ) ||\n\t\t\t\t\tEMPTY_ARRAY,\n\t\t\t\ttaxonomy: _taxonomy,\n\t\t\t};\n\t\t},\n\t\t[ slug ]\n\t);\n\n\tconst { editPost } = useDispatch( editorStore );\n\tconst { saveEntityRecord } = useDispatch( coreStore );\n\n\tconst availableTermsTree = useMemo(\n\t\t() => sortBySelected( buildTermsTree( availableTerms ), terms ),\n\t\t// Remove `terms` from the dependency list to avoid reordering every time\n\t\t// checking or unchecking a term.\n\t\t[ availableTerms ]\n\t);\n\n\tif ( ! hasAssignAction ) {\n\t\treturn null;\n\t}\n\n\t/**\n\t * Append new term.\n\t *\n\t * @param {Object} term Term object.\n\t * @return {Promise} A promise that resolves to save term object.\n\t */\n\tconst addTerm = ( term ) => {\n\t\treturn saveEntityRecord( 'taxonomy', slug, term );\n\t};\n\n\t/**\n\t * Update terms for post.\n\t *\n\t * @param {number[]} termIds Term ids.\n\t */\n\tconst onUpdateTerms = ( termIds ) => {\n\t\teditPost( { [ taxonomy.rest_base ]: termIds } );\n\t};\n\n\t/**\n\t * Handler for checking term.\n\t *\n\t * @param {number} termId\n\t */\n\tconst onChange = ( termId ) => {\n\t\tconst hasTerm = terms.includes( termId );\n\t\tconst newTerms = hasTerm\n\t\t\t? terms.filter( ( id ) => id !== termId )\n\t\t\t: [ ...terms, termId ];\n\t\tonUpdateTerms( newTerms );\n\t};\n\n\tconst onChangeFormName = ( value ) => {\n\t\tsetFormName( value );\n\t};\n\n\t/**\n\t * Handler for changing form parent.\n\t *\n\t * @param {number|''} parentId Parent post id.\n\t */\n\tconst onChangeFormParent = ( parentId ) => {\n\t\tsetFormParent( parentId );\n\t};\n\n\tconst onToggleForm = () => {\n\t\tsetShowForm( ! showForm );\n\t};\n\n\tconst onAddTerm = async ( event ) => {\n\t\tevent.preventDefault();\n\t\tif ( formName === '' || adding ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Check if the term we are adding already exists.\n\t\tconst existingTerm = findTerm( availableTerms, formParent, formName );\n\t\tif ( existingTerm ) {\n\t\t\t// If the term we are adding exists but is not selected select it.\n\t\t\tif ( ! terms.some( ( term ) => term === existingTerm.id ) ) {\n\t\t\t\tonUpdateTerms( [ ...terms, existingTerm.id ] );\n\t\t\t}\n\n\t\t\tsetFormName( '' );\n\t\t\tsetFormParent( '' );\n\n\t\t\treturn;\n\t\t}\n\t\tsetAdding( true );\n\n\t\tconst newTerm = await addTerm( {\n\t\t\tname: formName,\n\t\t\tparent: formParent ? formParent : undefined,\n\t\t} );\n\n\t\tconst defaultName =\n\t\t\tslug === 'category' ? __( 'Category' ) : __( 'Term' );\n\t\tconst termAddedMessage = sprintf(\n\t\t\t/* translators: %s: taxonomy name */\n\t\t\t_x( '%s added', 'term' ),\n\t\t\ttaxonomy?.labels?.singular_name ?? defaultName\n\t\t);\n\t\tspeak( termAddedMessage, 'assertive' );\n\t\tsetAdding( false );\n\t\tsetFormName( '' );\n\t\tsetFormParent( '' );\n\t\tonUpdateTerms( [ ...terms, newTerm.id ] );\n\t};\n\n\tconst setFilter = ( value ) => {\n\t\tconst newFilteredTermsTree = availableTermsTree\n\t\t\t.map( getFilterMatcher( value ) )\n\t\t\t.filter( ( term ) => term );\n\t\tconst getResultCount = ( termsTree ) => {\n\t\t\tlet count = 0;\n\t\t\tfor ( let i = 0; i < termsTree.length; i++ ) {\n\t\t\t\tcount++;\n\t\t\t\tif ( undefined !== termsTree[ i ].children ) {\n\t\t\t\t\tcount += getResultCount( termsTree[ i ].children );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn count;\n\t\t};\n\n\t\tsetFilterValue( value );\n\t\tsetFilteredTermsTree( newFilteredTermsTree );\n\n\t\tconst resultCount = getResultCount( newFilteredTermsTree );\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.', resultCount ),\n\t\t\tresultCount\n\t\t);\n\n\t\tdebouncedSpeak( resultsFoundMessage, 'assertive' );\n\t};\n\n\tconst renderTerms = ( renderedTerms ) => {\n\t\treturn renderedTerms.map( ( term ) => {\n\t\t\treturn (\n\t\t\t\t<div\n\t\t\t\t\tkey={ term.id }\n\t\t\t\t\tclassName=\"editor-post-taxonomies__hierarchical-terms-choice\"\n\t\t\t\t>\n\t\t\t\t\t<CheckboxControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\tchecked={ terms.indexOf( term.id ) !== -1 }\n\t\t\t\t\t\tonChange={ () => {\n\t\t\t\t\t\t\tconst termId = parseInt( term.id, 10 );\n\t\t\t\t\t\t\tonChange( termId );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tlabel={ decodeEntities( term.name ) }\n\t\t\t\t\t/>\n\t\t\t\t\t{ !! term.children.length && (\n\t\t\t\t\t\t<div className=\"editor-post-taxonomies__hierarchical-terms-subchoices\">\n\t\t\t\t\t\t\t{ renderTerms( term.children ) }\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) }\n\t\t\t\t</div>\n\t\t\t);\n\t\t} );\n\t};\n\n\tconst labelWithFallback = (\n\t\tlabelProperty,\n\t\tfallbackIsCategory,\n\t\tfallbackIsNotCategory\n\t) =>\n\t\ttaxonomy?.labels?.[ labelProperty ] ??\n\t\t( slug === 'category' ? fallbackIsCategory : fallbackIsNotCategory );\n\n\tconst newTermButtonLabel = labelWithFallback(\n\t\t'add_new_item',\n\t\t__( 'Add new category' ),\n\t\t__( 'Add new term' )\n\t);\n\tconst newTermLabel = labelWithFallback(\n\t\t'new_item_name',\n\t\t__( 'Add new category' ),\n\t\t__( 'Add new term' )\n\t);\n\tconst parentSelectLabel = labelWithFallback(\n\t\t'parent_item',\n\t\t__( 'Parent Category' ),\n\t\t__( 'Parent Term' )\n\t);\n\tconst noParentOption = `— ${ parentSelectLabel } —`;\n\tconst newTermSubmitLabel = newTermButtonLabel;\n\tconst filterLabel = taxonomy?.labels?.search_items ?? __( 'Search Terms' );\n\tconst groupLabel = taxonomy?.name ?? __( 'Terms' );\n\tconst showFilter = availableTerms.length >= MIN_TERMS_COUNT_FOR_FILTER;\n\n\treturn (\n\t\t<Flex direction=\"column\" gap=\"4\">\n\t\t\t{ showFilter && (\n\t\t\t\t<TextControl\n\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\tlabel={ filterLabel }\n\t\t\t\t\tvalue={ filterValue }\n\t\t\t\t\tonChange={ setFilter }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t<div\n\t\t\t\tclassName=\"editor-post-taxonomies__hierarchical-terms-list\"\n\t\t\t\ttabIndex=\"0\"\n\t\t\t\trole=\"group\"\n\t\t\t\taria-label={ groupLabel }\n\t\t\t>\n\t\t\t\t{ renderTerms(\n\t\t\t\t\t'' !== filterValue ? filteredTermsTree : availableTermsTree\n\t\t\t\t) }\n\t\t\t</div>\n\t\t\t{ ! loading && hasCreateAction && (\n\t\t\t\t<FlexItem>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tonClick={ onToggleForm }\n\t\t\t\t\t\tclassName=\"editor-post-taxonomies__hierarchical-terms-add\"\n\t\t\t\t\t\taria-expanded={ showForm }\n\t\t\t\t\t\tvariant=\"link\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ newTermButtonLabel }\n\t\t\t\t\t</Button>\n\t\t\t\t</FlexItem>\n\t\t\t) }\n\t\t\t{ showForm && (\n\t\t\t\t<form onSubmit={ onAddTerm }>\n\t\t\t\t\t<Flex direction=\"column\" gap=\"4\">\n\t\t\t\t\t\t<TextControl\n\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\tclassName=\"editor-post-taxonomies__hierarchical-terms-input\"\n\t\t\t\t\t\t\tlabel={ newTermLabel }\n\t\t\t\t\t\t\tvalue={ formName }\n\t\t\t\t\t\t\tonChange={ onChangeFormName }\n\t\t\t\t\t\t\trequired\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{ !! availableTerms.length && (\n\t\t\t\t\t\t\t<TreeSelect\n\t\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\t\tlabel={ parentSelectLabel }\n\t\t\t\t\t\t\t\tnoOptionLabel={ noParentOption }\n\t\t\t\t\t\t\t\tonChange={ onChangeFormParent }\n\t\t\t\t\t\t\t\tselectedId={ formParent }\n\t\t\t\t\t\t\t\ttree={ availableTermsTree }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\t\t\tclassName=\"editor-post-taxonomies__hierarchical-terms-submit\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ newTermSubmitLabel }\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t</Flex>\n\t\t\t\t</form>\n\t\t\t) }\n\t\t</Flex>\n\t);\n}\n\nexport default withFilters( 'editor.PostTaxonomyType' )(\n\tHierarchicalTermSelector\n);\n"],"mappings":"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"}
1
+ {"version":3,"names":["_element","require","_i18n","_notices","_components","_data","_compose","_coreData","_a11y","_htmlEntities","_terms","_store","DEFAULT_QUERY","per_page","orderby","order","_fields","context","MIN_TERMS_COUNT_FOR_FILTER","EMPTY_ARRAY","sortBySelected","termsTree","terms","treeHasSelection","termTree","indexOf","id","undefined","children","map","filter","child","length","termOrChildIsSelected","termA","termB","termASelected","termBSelected","newTermTree","sort","findTerm","parent","name","find","term","parseInt","toLowerCase","getFilterMatcher","filterValue","matchTermsForFilter","originalTerm","HierarchicalTermSelector","slug","_taxonomy$labels$sear","_taxonomy$name","adding","setAdding","useState","formName","setFormName","formParent","setFormParent","showForm","setShowForm","setFilterValue","filteredTermsTree","setFilteredTermsTree","debouncedSpeak","useDebounce","speak","hasCreateAction","hasAssignAction","loading","availableTerms","taxonomy","useSelect","select","_post$_links","_post$_links2","getCurrentPost","getEditedPostAttribute","editorStore","getTaxonomy","getEntityRecords","isResolving","coreStore","_taxonomy","post","_links","rest_base","editPost","useDispatch","saveEntityRecord","availableTermsTree","useMemo","buildTermsTree","createErrorNotice","noticesStore","addTerm","throwOnError","onUpdateTerms","termIds","onChange","termId","hasTerm","includes","newTerms","onChangeFormName","value","onChangeFormParent","parentId","onToggleForm","onAddTerm","event","_taxonomy$labels$sing","preventDefault","existingTerm","some","newTerm","error","message","type","defaultName","__","termAddedMessage","sprintf","_x","labels","singular_name","setFilter","newFilteredTermsTree","getResultCount","count","i","resultCount","resultsFoundMessage","_n","renderTerms","renderedTerms","createElement","key","className","CheckboxControl","__nextHasNoMarginBottom","checked","label","decodeEntities","labelWithFallback","labelProperty","fallbackIsCategory","fallbackIsNotCategory","_taxonomy$labels$labe","newTermButtonLabel","newTermLabel","parentSelectLabel","noParentOption","newTermSubmitLabel","filterLabel","search_items","groupLabel","showFilter","Flex","direction","gap","TextControl","tabIndex","role","FlexItem","Button","onClick","variant","onSubmit","required","TreeSelect","noOptionLabel","selectedId","tree","_default","withFilters","exports","default"],"sources":["@wordpress/editor/src/components/post-taxonomies/hierarchical-term-selector.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, _n, _x, sprintf } from '@wordpress/i18n';\nimport { useMemo, useState } from '@wordpress/element';\nimport { store as noticesStore } from '@wordpress/notices';\nimport {\n\tButton,\n\tCheckboxControl,\n\tTextControl,\n\tTreeSelect,\n\twithFilters,\n\tFlex,\n\tFlexItem,\n} from '@wordpress/components';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { useDebounce } from '@wordpress/compose';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { speak } from '@wordpress/a11y';\nimport { decodeEntities } from '@wordpress/html-entities';\n\n/**\n * Internal dependencies\n */\nimport { buildTermsTree } from '../../utils/terms';\nimport { store as editorStore } from '../../store';\n\n/**\n * Module Constants\n */\nconst DEFAULT_QUERY = {\n\tper_page: -1,\n\torderby: 'name',\n\torder: 'asc',\n\t_fields: 'id,name,parent',\n\tcontext: 'view',\n};\n\nconst MIN_TERMS_COUNT_FOR_FILTER = 8;\n\nconst EMPTY_ARRAY = [];\n\n/**\n * Sort Terms by Selected.\n *\n * @param {Object[]} termsTree Array of terms in tree format.\n * @param {number[]} terms Selected terms.\n *\n * @return {Object[]} Sorted array of terms.\n */\nexport function sortBySelected( termsTree, terms ) {\n\tconst treeHasSelection = ( termTree ) => {\n\t\tif ( terms.indexOf( termTree.id ) !== -1 ) {\n\t\t\treturn true;\n\t\t}\n\t\tif ( undefined === termTree.children ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn (\n\t\t\ttermTree.children\n\t\t\t\t.map( treeHasSelection )\n\t\t\t\t.filter( ( child ) => child ).length > 0\n\t\t);\n\t};\n\tconst termOrChildIsSelected = ( termA, termB ) => {\n\t\tconst termASelected = treeHasSelection( termA );\n\t\tconst termBSelected = treeHasSelection( termB );\n\n\t\tif ( termASelected === termBSelected ) {\n\t\t\treturn 0;\n\t\t}\n\n\t\tif ( termASelected && ! termBSelected ) {\n\t\t\treturn -1;\n\t\t}\n\n\t\tif ( ! termASelected && termBSelected ) {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn 0;\n\t};\n\tconst newTermTree = [ ...termsTree ];\n\tnewTermTree.sort( termOrChildIsSelected );\n\treturn newTermTree;\n}\n\n/**\n * Find term by parent id or name.\n *\n * @param {Object[]} terms Array of Terms.\n * @param {number|string} parent id.\n * @param {string} name Term name.\n * @return {Object} Term object.\n */\nexport function findTerm( terms, parent, name ) {\n\treturn terms.find( ( term ) => {\n\t\treturn (\n\t\t\t( ( ! term.parent && ! parent ) ||\n\t\t\t\tparseInt( term.parent ) === parseInt( parent ) ) &&\n\t\t\tterm.name.toLowerCase() === name.toLowerCase()\n\t\t);\n\t} );\n}\n\n/**\n * Get filter matcher function.\n *\n * @param {string} filterValue Filter value.\n * @return {(function(Object): (Object|boolean))} Matcher function.\n */\nexport function getFilterMatcher( filterValue ) {\n\tconst matchTermsForFilter = ( originalTerm ) => {\n\t\tif ( '' === filterValue ) {\n\t\t\treturn originalTerm;\n\t\t}\n\n\t\t// Shallow clone, because we'll be filtering the term's children and\n\t\t// don't want to modify the original term.\n\t\tconst term = { ...originalTerm };\n\n\t\t// Map and filter the children, recursive so we deal with grandchildren\n\t\t// and any deeper levels.\n\t\tif ( term.children.length > 0 ) {\n\t\t\tterm.children = term.children\n\t\t\t\t.map( matchTermsForFilter )\n\t\t\t\t.filter( ( child ) => child );\n\t\t}\n\n\t\t// If the term's name contains the filterValue, or it has children\n\t\t// (i.e. some child matched at some point in the tree) then return it.\n\t\tif (\n\t\t\t-1 !==\n\t\t\t\tterm.name.toLowerCase().indexOf( filterValue.toLowerCase() ) ||\n\t\t\tterm.children.length > 0\n\t\t) {\n\t\t\treturn term;\n\t\t}\n\n\t\t// Otherwise, return false. After mapping, the list of terms will need\n\t\t// to have false values filtered out.\n\t\treturn false;\n\t};\n\treturn matchTermsForFilter;\n}\n\n/**\n * Hierarchical term selector.\n *\n * @param {Object} props Component props.\n * @param {string} props.slug Taxonomy slug.\n * @return {WPElement} Hierarchical term selector component.\n */\nexport function HierarchicalTermSelector( { slug } ) {\n\tconst [ adding, setAdding ] = useState( false );\n\tconst [ formName, setFormName ] = useState( '' );\n\t/**\n\t * @type {[number|'', Function]}\n\t */\n\tconst [ formParent, setFormParent ] = useState( '' );\n\tconst [ showForm, setShowForm ] = useState( false );\n\tconst [ filterValue, setFilterValue ] = useState( '' );\n\tconst [ filteredTermsTree, setFilteredTermsTree ] = useState( [] );\n\tconst debouncedSpeak = useDebounce( speak, 500 );\n\n\tconst {\n\t\thasCreateAction,\n\t\thasAssignAction,\n\t\tterms,\n\t\tloading,\n\t\tavailableTerms,\n\t\ttaxonomy,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getCurrentPost, getEditedPostAttribute } =\n\t\t\t\tselect( editorStore );\n\t\t\tconst { getTaxonomy, getEntityRecords, isResolving } =\n\t\t\t\tselect( coreStore );\n\t\t\tconst _taxonomy = getTaxonomy( slug );\n\t\t\tconst post = getCurrentPost();\n\n\t\t\treturn {\n\t\t\t\thasCreateAction: _taxonomy\n\t\t\t\t\t? post._links?.[\n\t\t\t\t\t\t\t'wp:action-create-' + _taxonomy.rest_base\n\t\t\t\t\t ] ?? false\n\t\t\t\t\t: false,\n\t\t\t\thasAssignAction: _taxonomy\n\t\t\t\t\t? post._links?.[\n\t\t\t\t\t\t\t'wp:action-assign-' + _taxonomy.rest_base\n\t\t\t\t\t ] ?? false\n\t\t\t\t\t: false,\n\t\t\t\tterms: _taxonomy\n\t\t\t\t\t? getEditedPostAttribute( _taxonomy.rest_base )\n\t\t\t\t\t: EMPTY_ARRAY,\n\t\t\t\tloading: isResolving( 'getEntityRecords', [\n\t\t\t\t\t'taxonomy',\n\t\t\t\t\tslug,\n\t\t\t\t\tDEFAULT_QUERY,\n\t\t\t\t] ),\n\t\t\t\tavailableTerms:\n\t\t\t\t\tgetEntityRecords( 'taxonomy', slug, DEFAULT_QUERY ) ||\n\t\t\t\t\tEMPTY_ARRAY,\n\t\t\t\ttaxonomy: _taxonomy,\n\t\t\t};\n\t\t},\n\t\t[ slug ]\n\t);\n\n\tconst { editPost } = useDispatch( editorStore );\n\tconst { saveEntityRecord } = useDispatch( coreStore );\n\n\tconst availableTermsTree = useMemo(\n\t\t() => sortBySelected( buildTermsTree( availableTerms ), terms ),\n\t\t// Remove `terms` from the dependency list to avoid reordering every time\n\t\t// checking or unchecking a term.\n\t\t[ availableTerms ]\n\t);\n\n\tconst { createErrorNotice } = useDispatch( noticesStore );\n\n\tif ( ! hasAssignAction ) {\n\t\treturn null;\n\t}\n\n\t/**\n\t * Append new term.\n\t *\n\t * @param {Object} term Term object.\n\t * @return {Promise} A promise that resolves to save term object.\n\t */\n\tconst addTerm = ( term ) => {\n\t\treturn saveEntityRecord( 'taxonomy', slug, term, {\n\t\t\tthrowOnError: true,\n\t\t} );\n\t};\n\n\t/**\n\t * Update terms for post.\n\t *\n\t * @param {number[]} termIds Term ids.\n\t */\n\tconst onUpdateTerms = ( termIds ) => {\n\t\teditPost( { [ taxonomy.rest_base ]: termIds } );\n\t};\n\n\t/**\n\t * Handler for checking term.\n\t *\n\t * @param {number} termId\n\t */\n\tconst onChange = ( termId ) => {\n\t\tconst hasTerm = terms.includes( termId );\n\t\tconst newTerms = hasTerm\n\t\t\t? terms.filter( ( id ) => id !== termId )\n\t\t\t: [ ...terms, termId ];\n\t\tonUpdateTerms( newTerms );\n\t};\n\n\tconst onChangeFormName = ( value ) => {\n\t\tsetFormName( value );\n\t};\n\n\t/**\n\t * Handler for changing form parent.\n\t *\n\t * @param {number|''} parentId Parent post id.\n\t */\n\tconst onChangeFormParent = ( parentId ) => {\n\t\tsetFormParent( parentId );\n\t};\n\n\tconst onToggleForm = () => {\n\t\tsetShowForm( ! showForm );\n\t};\n\n\tconst onAddTerm = async ( event ) => {\n\t\tevent.preventDefault();\n\t\tif ( formName === '' || adding ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Check if the term we are adding already exists.\n\t\tconst existingTerm = findTerm( availableTerms, formParent, formName );\n\t\tif ( existingTerm ) {\n\t\t\t// If the term we are adding exists but is not selected select it.\n\t\t\tif ( ! terms.some( ( term ) => term === existingTerm.id ) ) {\n\t\t\t\tonUpdateTerms( [ ...terms, existingTerm.id ] );\n\t\t\t}\n\n\t\t\tsetFormName( '' );\n\t\t\tsetFormParent( '' );\n\n\t\t\treturn;\n\t\t}\n\t\tsetAdding( true );\n\t\tlet newTerm;\n\t\ttry {\n\t\t\tnewTerm = await addTerm( {\n\t\t\t\tname: formName,\n\t\t\t\tparent: formParent ? formParent : undefined,\n\t\t\t} );\n\t\t} catch ( error ) {\n\t\t\tcreateErrorNotice( error.message, {\n\t\t\t\ttype: 'snackbar',\n\t\t\t} );\n\t\t\treturn;\n\t\t}\n\t\tconst defaultName =\n\t\t\tslug === 'category' ? __( 'Category' ) : __( 'Term' );\n\t\tconst termAddedMessage = sprintf(\n\t\t\t/* translators: %s: taxonomy name */\n\t\t\t_x( '%s added', 'term' ),\n\t\t\ttaxonomy?.labels?.singular_name ?? defaultName\n\t\t);\n\t\tspeak( termAddedMessage, 'assertive' );\n\t\tsetAdding( false );\n\t\tsetFormName( '' );\n\t\tsetFormParent( '' );\n\t\tonUpdateTerms( [ ...terms, newTerm.id ] );\n\t};\n\n\tconst setFilter = ( value ) => {\n\t\tconst newFilteredTermsTree = availableTermsTree\n\t\t\t.map( getFilterMatcher( value ) )\n\t\t\t.filter( ( term ) => term );\n\t\tconst getResultCount = ( termsTree ) => {\n\t\t\tlet count = 0;\n\t\t\tfor ( let i = 0; i < termsTree.length; i++ ) {\n\t\t\t\tcount++;\n\t\t\t\tif ( undefined !== termsTree[ i ].children ) {\n\t\t\t\t\tcount += getResultCount( termsTree[ i ].children );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn count;\n\t\t};\n\n\t\tsetFilterValue( value );\n\t\tsetFilteredTermsTree( newFilteredTermsTree );\n\n\t\tconst resultCount = getResultCount( newFilteredTermsTree );\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.', resultCount ),\n\t\t\tresultCount\n\t\t);\n\n\t\tdebouncedSpeak( resultsFoundMessage, 'assertive' );\n\t};\n\n\tconst renderTerms = ( renderedTerms ) => {\n\t\treturn renderedTerms.map( ( term ) => {\n\t\t\treturn (\n\t\t\t\t<div\n\t\t\t\t\tkey={ term.id }\n\t\t\t\t\tclassName=\"editor-post-taxonomies__hierarchical-terms-choice\"\n\t\t\t\t>\n\t\t\t\t\t<CheckboxControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\tchecked={ terms.indexOf( term.id ) !== -1 }\n\t\t\t\t\t\tonChange={ () => {\n\t\t\t\t\t\t\tconst termId = parseInt( term.id, 10 );\n\t\t\t\t\t\t\tonChange( termId );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tlabel={ decodeEntities( term.name ) }\n\t\t\t\t\t/>\n\t\t\t\t\t{ !! term.children.length && (\n\t\t\t\t\t\t<div className=\"editor-post-taxonomies__hierarchical-terms-subchoices\">\n\t\t\t\t\t\t\t{ renderTerms( term.children ) }\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) }\n\t\t\t\t</div>\n\t\t\t);\n\t\t} );\n\t};\n\n\tconst labelWithFallback = (\n\t\tlabelProperty,\n\t\tfallbackIsCategory,\n\t\tfallbackIsNotCategory\n\t) =>\n\t\ttaxonomy?.labels?.[ labelProperty ] ??\n\t\t( slug === 'category' ? fallbackIsCategory : fallbackIsNotCategory );\n\n\tconst newTermButtonLabel = labelWithFallback(\n\t\t'add_new_item',\n\t\t__( 'Add new category' ),\n\t\t__( 'Add new term' )\n\t);\n\tconst newTermLabel = labelWithFallback(\n\t\t'new_item_name',\n\t\t__( 'Add new category' ),\n\t\t__( 'Add new term' )\n\t);\n\tconst parentSelectLabel = labelWithFallback(\n\t\t'parent_item',\n\t\t__( 'Parent Category' ),\n\t\t__( 'Parent Term' )\n\t);\n\tconst noParentOption = `— ${ parentSelectLabel } —`;\n\tconst newTermSubmitLabel = newTermButtonLabel;\n\tconst filterLabel = taxonomy?.labels?.search_items ?? __( 'Search Terms' );\n\tconst groupLabel = taxonomy?.name ?? __( 'Terms' );\n\tconst showFilter = availableTerms.length >= MIN_TERMS_COUNT_FOR_FILTER;\n\n\treturn (\n\t\t<Flex direction=\"column\" gap=\"4\">\n\t\t\t{ showFilter && (\n\t\t\t\t<TextControl\n\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\tlabel={ filterLabel }\n\t\t\t\t\tvalue={ filterValue }\n\t\t\t\t\tonChange={ setFilter }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t<div\n\t\t\t\tclassName=\"editor-post-taxonomies__hierarchical-terms-list\"\n\t\t\t\ttabIndex=\"0\"\n\t\t\t\trole=\"group\"\n\t\t\t\taria-label={ groupLabel }\n\t\t\t>\n\t\t\t\t{ renderTerms(\n\t\t\t\t\t'' !== filterValue ? filteredTermsTree : availableTermsTree\n\t\t\t\t) }\n\t\t\t</div>\n\t\t\t{ ! loading && hasCreateAction && (\n\t\t\t\t<FlexItem>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tonClick={ onToggleForm }\n\t\t\t\t\t\tclassName=\"editor-post-taxonomies__hierarchical-terms-add\"\n\t\t\t\t\t\taria-expanded={ showForm }\n\t\t\t\t\t\tvariant=\"link\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ newTermButtonLabel }\n\t\t\t\t\t</Button>\n\t\t\t\t</FlexItem>\n\t\t\t) }\n\t\t\t{ showForm && (\n\t\t\t\t<form onSubmit={ onAddTerm }>\n\t\t\t\t\t<Flex direction=\"column\" gap=\"4\">\n\t\t\t\t\t\t<TextControl\n\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\tclassName=\"editor-post-taxonomies__hierarchical-terms-input\"\n\t\t\t\t\t\t\tlabel={ newTermLabel }\n\t\t\t\t\t\t\tvalue={ formName }\n\t\t\t\t\t\t\tonChange={ onChangeFormName }\n\t\t\t\t\t\t\trequired\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{ !! availableTerms.length && (\n\t\t\t\t\t\t\t<TreeSelect\n\t\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\t\tlabel={ parentSelectLabel }\n\t\t\t\t\t\t\t\tnoOptionLabel={ noParentOption }\n\t\t\t\t\t\t\t\tonChange={ onChangeFormParent }\n\t\t\t\t\t\t\t\tselectedId={ formParent }\n\t\t\t\t\t\t\t\ttree={ availableTermsTree }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\t\t\tclassName=\"editor-post-taxonomies__hierarchical-terms-submit\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ newTermSubmitLabel }\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t</Flex>\n\t\t\t\t</form>\n\t\t\t) }\n\t\t</Flex>\n\t);\n}\n\nexport default withFilters( 'editor.PostTaxonomyType' )(\n\tHierarchicalTermSelector\n);\n"],"mappings":"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"}
@@ -21,7 +21,7 @@ var _store = require("../../store");
21
21
  */
22
22
 
23
23
  const EMPTY_BLOCKS_LIST = [];
24
- const BLOCK_EDITOR_SETTINGS = ['__experimentalBlockDirectory', '__experimentalDiscussionSettings', '__experimentalFeatures', '__experimentalGlobalStylesBaseStyles', '__experimentalPreferredStyleVariations', '__experimentalSetIsInserterOpened', '__unstableGalleryWithImageBlocks', 'alignWide', 'allowedBlockTypes', 'blockInspectorTabs', 'allowedMimeTypes', 'bodyPlaceholder', 'canLockBlocks', 'capabilities', 'clearBlockSelection', 'codeEditingEnabled', 'colors', 'disableCustomColors', 'disableCustomFontSizes', 'disableCustomSpacingSizes', 'disableCustomGradients', 'disableLayoutStyles', 'enableCustomLineHeight', 'enableCustomSpacing', 'enableCustomUnits', 'enableOpenverseMediaCategory', 'focusMode', 'distractionFree', 'fontSizes', 'gradients', 'generateAnchors', 'hasFixedToolbar', 'hasInlineToolbar', 'isDistractionFree', 'imageDefaultSize', 'imageDimensions', 'imageEditing', 'imageSizes', 'isRTL', 'keepCaretInsideBlock', 'locale', 'maxWidth', 'onUpdateDefaultBlockStyles', 'postContentAttributes', 'postsPerPage', 'readOnly', 'styles', 'template', 'templateLock', 'titlePlaceholder', 'supportsLayout', 'widgetTypesToHideFromLegacyWidgetBlock', '__unstableHasCustomAppender', '__unstableIsPreviewMode', '__unstableResolvedAssets', '__unstableIsBlockBasedTheme', 'behaviors'];
24
+ const BLOCK_EDITOR_SETTINGS = ['__experimentalBlockDirectory', '__experimentalDiscussionSettings', '__experimentalFeatures', '__experimentalGlobalStylesBaseStyles', '__experimentalPreferredStyleVariations', '__experimentalSetIsInserterOpened', '__unstableGalleryWithImageBlocks', 'alignWide', 'allowedBlockTypes', 'blockInspectorTabs', 'allowedMimeTypes', 'bodyPlaceholder', 'canLockBlocks', 'capabilities', 'clearBlockSelection', 'codeEditingEnabled', 'colors', 'disableCustomColors', 'disableCustomFontSizes', 'disableCustomSpacingSizes', 'disableCustomGradients', 'disableLayoutStyles', 'enableCustomLineHeight', 'enableCustomSpacing', 'enableCustomUnits', 'enableOpenverseMediaCategory', 'focusMode', 'distractionFree', 'fontSizes', 'gradients', 'generateAnchors', 'hasFixedToolbar', 'hasInlineToolbar', 'isDistractionFree', 'imageDefaultSize', 'imageDimensions', 'imageEditing', 'imageSizes', 'isRTL', 'keepCaretInsideBlock', 'locale', 'maxWidth', 'onUpdateDefaultBlockStyles', 'postContentAttributes', 'postsPerPage', 'readOnly', 'styles', 'template', 'templateLock', 'titlePlaceholder', 'supportsLayout', 'widgetTypesToHideFromLegacyWidgetBlock', '__unstableHasCustomAppender', '__unstableIsPreviewMode', '__unstableResolvedAssets', '__unstableIsBlockBasedTheme'];
25
25
 
26
26
  /**
27
27
  * React hook used to compute the block editor settings to use for the post editor.
@@ -39,7 +39,8 @@ function useBlockEditorSettings(settings, hasTemplate) {
39
39
  canUseUnfilteredHTML,
40
40
  userCanCreatePages,
41
41
  pageOnFront,
42
- postType
42
+ postType,
43
+ userPatternCategories
43
44
  } = (0, _data.useSelect)(select => {
44
45
  var _canUser;
45
46
  const {
@@ -49,7 +50,8 @@ function useBlockEditorSettings(settings, hasTemplate) {
49
50
  const isWeb = _element.Platform.OS === 'web';
50
51
  const {
51
52
  canUser,
52
- getEntityRecord
53
+ getEntityRecord,
54
+ getUserPatternCategories
53
55
  } = select(_coreData.store);
54
56
  const siteSettings = canUser('read', 'settings') ? getEntityRecord('root', 'site') : undefined;
55
57
  return {
@@ -61,7 +63,8 @@ function useBlockEditorSettings(settings, hasTemplate) {
61
63
  hasUploadPermissions: (_canUser = canUser('create', 'media')) !== null && _canUser !== void 0 ? _canUser : true,
62
64
  userCanCreatePages: canUser('create', 'pages'),
63
65
  pageOnFront: siteSettings?.page_on_front,
64
- postType: getCurrentPostType()
66
+ postType: getCurrentPostType(),
67
+ userPatternCategories: getUserPatternCategories()
65
68
  };
66
69
  }, []);
67
70
  const settingsBlockPatterns = (_settings$__experimen = settings.__experimentalAdditionalBlockPatterns) !== null && _settings$__experimen !== void 0 ? _settings$__experimen :
@@ -98,20 +101,21 @@ function useBlockEditorSettings(settings, hasTemplate) {
98
101
  * @param {Object} options parameters for the post being created. These mirror those used on 3rd param of saveEntityRecord.
99
102
  * @return {Object} the post type object that was created.
100
103
  */
101
- const createPageEntity = options => {
104
+ const createPageEntity = (0, _element.useCallback)(options => {
102
105
  if (!userCanCreatePages) {
103
106
  return Promise.reject({
104
107
  message: (0, _i18n.__)('You do not have permission to create Pages.')
105
108
  });
106
109
  }
107
110
  return saveEntityRecord('postType', 'page', options);
108
- };
111
+ }, [saveEntityRecord, userCanCreatePages]);
109
112
  return (0, _element.useMemo)(() => ({
110
113
  ...Object.fromEntries(Object.entries(settings).filter(([key]) => BLOCK_EDITOR_SETTINGS.includes(key))),
111
114
  mediaUpload: hasUploadPermissions ? _utils.mediaUpload : undefined,
112
115
  __experimentalReusableBlocks: reusableBlocks,
113
116
  __experimentalBlockPatterns: blockPatterns,
114
117
  __experimentalBlockPatternCategories: blockPatternCategories,
118
+ __experimentalUserPatternCategories: userPatternCategories,
115
119
  __experimentalFetchLinkSuggestions: (search, searchOptions) => (0, _coreData.__experimentalFetchLinkSuggestions)(search, searchOptions, settings),
116
120
  inserterMediaCategories: _mediaCategories.default,
117
121
  __experimentalFetchRichUrlData: _coreData.__experimentalFetchUrlData,
@@ -122,7 +126,7 @@ function useBlockEditorSettings(settings, hasTemplate) {
122
126
  __experimentalUserCanCreatePages: userCanCreatePages,
123
127
  pageOnFront,
124
128
  __experimentalPreferPatternsOnRoot: hasTemplate
125
- }), [settings, hasUploadPermissions, reusableBlocks, blockPatterns, blockPatternCategories, canUseUnfilteredHTML, undo, hasTemplate, userCanCreatePages, pageOnFront]);
129
+ }), [settings, hasUploadPermissions, reusableBlocks, userPatternCategories, blockPatterns, blockPatternCategories, canUseUnfilteredHTML, undo, hasTemplate, createPageEntity, userCanCreatePages, pageOnFront]);
126
130
  }
127
131
  var _default = useBlockEditorSettings;
128
132
  exports.default = _default;
@@ -1 +1 @@
1
- {"version":3,"names":["_element","require","_data","_coreData","_i18n","_mediaCategories","_interopRequireDefault","_utils","_store","EMPTY_BLOCKS_LIST","BLOCK_EDITOR_SETTINGS","useBlockEditorSettings","settings","hasTemplate","_settings$__experimen","_settings$__experimen2","reusableBlocks","hasUploadPermissions","canUseUnfilteredHTML","userCanCreatePages","pageOnFront","postType","useSelect","select","_canUser","canUserUseUnfilteredHTML","getCurrentPostType","editorStore","isWeb","Platform","OS","canUser","getEntityRecord","coreStore","siteSettings","undefined","getEntityRecords","per_page","page_on_front","settingsBlockPatterns","__experimentalAdditionalBlockPatterns","__experimentalBlockPatterns","settingsBlockPatternCategories","__experimentalAdditionalBlockPatternCategories","__experimentalBlockPatternCategories","restBlockPatterns","restBlockPatternCategories","getBlockPatterns","getBlockPatternCategories","blockPatterns","useMemo","filter","x","index","arr","findIndex","y","name","postTypes","Array","isArray","includes","blockPatternCategories","undo","useDispatch","saveEntityRecord","createPageEntity","options","Promise","reject","message","__","Object","fromEntries","entries","key","mediaUpload","__experimentalReusableBlocks","__experimentalFetchLinkSuggestions","search","searchOptions","fetchLinkSuggestions","inserterMediaCategories","__experimentalFetchRichUrlData","fetchUrlData","__experimentalCanUserUseUnfilteredHTML","__experimentalUndo","outlineMode","__experimentalCreatePageEntity","__experimentalUserCanCreatePages","__experimentalPreferPatternsOnRoot","_default","exports","default"],"sources":["@wordpress/editor/src/components/provider/use-block-editor-settings.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { Platform, useMemo } from '@wordpress/element';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport {\n\tstore as coreStore,\n\t__experimentalFetchLinkSuggestions as fetchLinkSuggestions,\n\t__experimentalFetchUrlData as fetchUrlData,\n} from '@wordpress/core-data';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport inserterMediaCategories from '../media-categories';\nimport { mediaUpload } from '../../utils';\nimport { store as editorStore } from '../../store';\n\nconst EMPTY_BLOCKS_LIST = [];\n\nconst BLOCK_EDITOR_SETTINGS = [\n\t'__experimentalBlockDirectory',\n\t'__experimentalDiscussionSettings',\n\t'__experimentalFeatures',\n\t'__experimentalGlobalStylesBaseStyles',\n\t'__experimentalPreferredStyleVariations',\n\t'__experimentalSetIsInserterOpened',\n\t'__unstableGalleryWithImageBlocks',\n\t'alignWide',\n\t'allowedBlockTypes',\n\t'blockInspectorTabs',\n\t'allowedMimeTypes',\n\t'bodyPlaceholder',\n\t'canLockBlocks',\n\t'capabilities',\n\t'clearBlockSelection',\n\t'codeEditingEnabled',\n\t'colors',\n\t'disableCustomColors',\n\t'disableCustomFontSizes',\n\t'disableCustomSpacingSizes',\n\t'disableCustomGradients',\n\t'disableLayoutStyles',\n\t'enableCustomLineHeight',\n\t'enableCustomSpacing',\n\t'enableCustomUnits',\n\t'enableOpenverseMediaCategory',\n\t'focusMode',\n\t'distractionFree',\n\t'fontSizes',\n\t'gradients',\n\t'generateAnchors',\n\t'hasFixedToolbar',\n\t'hasInlineToolbar',\n\t'isDistractionFree',\n\t'imageDefaultSize',\n\t'imageDimensions',\n\t'imageEditing',\n\t'imageSizes',\n\t'isRTL',\n\t'keepCaretInsideBlock',\n\t'locale',\n\t'maxWidth',\n\t'onUpdateDefaultBlockStyles',\n\t'postContentAttributes',\n\t'postsPerPage',\n\t'readOnly',\n\t'styles',\n\t'template',\n\t'templateLock',\n\t'titlePlaceholder',\n\t'supportsLayout',\n\t'widgetTypesToHideFromLegacyWidgetBlock',\n\t'__unstableHasCustomAppender',\n\t'__unstableIsPreviewMode',\n\t'__unstableResolvedAssets',\n\t'__unstableIsBlockBasedTheme',\n\t'behaviors',\n];\n\n/**\n * React hook used to compute the block editor settings to use for the post editor.\n *\n * @param {Object} settings EditorProvider settings prop.\n * @param {boolean} hasTemplate Whether template mode is enabled.\n *\n * @return {Object} Block Editor Settings.\n */\nfunction useBlockEditorSettings( settings, hasTemplate ) {\n\tconst {\n\t\treusableBlocks,\n\t\thasUploadPermissions,\n\t\tcanUseUnfilteredHTML,\n\t\tuserCanCreatePages,\n\t\tpageOnFront,\n\t\tpostType,\n\t} = useSelect( ( select ) => {\n\t\tconst { canUserUseUnfilteredHTML, getCurrentPostType } =\n\t\t\tselect( editorStore );\n\t\tconst isWeb = Platform.OS === 'web';\n\t\tconst { canUser, getEntityRecord } = select( coreStore );\n\n\t\tconst siteSettings = canUser( 'read', 'settings' )\n\t\t\t? getEntityRecord( 'root', 'site' )\n\t\t\t: undefined;\n\n\t\treturn {\n\t\t\tcanUseUnfilteredHTML: canUserUseUnfilteredHTML(),\n\t\t\treusableBlocks: isWeb\n\t\t\t\t? select( coreStore ).getEntityRecords(\n\t\t\t\t\t\t'postType',\n\t\t\t\t\t\t'wp_block',\n\t\t\t\t\t\t{ per_page: -1 }\n\t\t\t\t )\n\t\t\t\t: EMPTY_BLOCKS_LIST, // Reusable blocks are fetched in the native version of this hook.\n\t\t\thasUploadPermissions: canUser( 'create', 'media' ) ?? true,\n\t\t\tuserCanCreatePages: canUser( 'create', 'pages' ),\n\t\t\tpageOnFront: siteSettings?.page_on_front,\n\t\t\tpostType: getCurrentPostType(),\n\t\t};\n\t}, [] );\n\n\tconst settingsBlockPatterns =\n\t\tsettings.__experimentalAdditionalBlockPatterns ?? // WP 6.0\n\t\tsettings.__experimentalBlockPatterns; // WP 5.9\n\tconst settingsBlockPatternCategories =\n\t\tsettings.__experimentalAdditionalBlockPatternCategories ?? // WP 6.0\n\t\tsettings.__experimentalBlockPatternCategories; // WP 5.9\n\n\tconst { restBlockPatterns, restBlockPatternCategories } = useSelect(\n\t\t( select ) => ( {\n\t\t\trestBlockPatterns: select( coreStore ).getBlockPatterns(),\n\t\t\trestBlockPatternCategories:\n\t\t\t\tselect( coreStore ).getBlockPatternCategories(),\n\t\t} ),\n\t\t[]\n\t);\n\n\tconst blockPatterns = useMemo(\n\t\t() =>\n\t\t\t[\n\t\t\t\t...( settingsBlockPatterns || [] ),\n\t\t\t\t...( restBlockPatterns || [] ),\n\t\t\t]\n\t\t\t\t.filter(\n\t\t\t\t\t( x, index, arr ) =>\n\t\t\t\t\t\tindex === arr.findIndex( ( y ) => x.name === y.name )\n\t\t\t\t)\n\t\t\t\t.filter( ( { postTypes } ) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t! postTypes ||\n\t\t\t\t\t\t( Array.isArray( postTypes ) &&\n\t\t\t\t\t\t\tpostTypes.includes( postType ) )\n\t\t\t\t\t);\n\t\t\t\t} ),\n\t\t[ settingsBlockPatterns, restBlockPatterns, postType ]\n\t);\n\n\tconst blockPatternCategories = useMemo(\n\t\t() =>\n\t\t\t[\n\t\t\t\t...( settingsBlockPatternCategories || [] ),\n\t\t\t\t...( restBlockPatternCategories || [] ),\n\t\t\t].filter(\n\t\t\t\t( x, index, arr ) =>\n\t\t\t\t\tindex === arr.findIndex( ( y ) => x.name === y.name )\n\t\t\t),\n\t\t[ settingsBlockPatternCategories, restBlockPatternCategories ]\n\t);\n\n\tconst { undo } = useDispatch( editorStore );\n\n\tconst { saveEntityRecord } = useDispatch( coreStore );\n\n\t/**\n\t * Creates a Post entity.\n\t * This is utilised by the Link UI to allow for on-the-fly creation of Posts/Pages.\n\t *\n\t * @param {Object} options parameters for the post being created. These mirror those used on 3rd param of saveEntityRecord.\n\t * @return {Object} the post type object that was created.\n\t */\n\tconst createPageEntity = ( options ) => {\n\t\tif ( ! userCanCreatePages ) {\n\t\t\treturn Promise.reject( {\n\t\t\t\tmessage: __( 'You do not have permission to create Pages.' ),\n\t\t\t} );\n\t\t}\n\t\treturn saveEntityRecord( 'postType', 'page', options );\n\t};\n\n\treturn useMemo(\n\t\t() => ( {\n\t\t\t...Object.fromEntries(\n\t\t\t\tObject.entries( settings ).filter( ( [ key ] ) =>\n\t\t\t\t\tBLOCK_EDITOR_SETTINGS.includes( key )\n\t\t\t\t)\n\t\t\t),\n\t\t\tmediaUpload: hasUploadPermissions ? mediaUpload : undefined,\n\t\t\t__experimentalReusableBlocks: reusableBlocks,\n\t\t\t__experimentalBlockPatterns: blockPatterns,\n\t\t\t__experimentalBlockPatternCategories: blockPatternCategories,\n\t\t\t__experimentalFetchLinkSuggestions: ( search, searchOptions ) =>\n\t\t\t\tfetchLinkSuggestions( search, searchOptions, settings ),\n\t\t\tinserterMediaCategories,\n\t\t\t__experimentalFetchRichUrlData: fetchUrlData,\n\t\t\t__experimentalCanUserUseUnfilteredHTML: canUseUnfilteredHTML,\n\t\t\t__experimentalUndo: undo,\n\t\t\toutlineMode: hasTemplate,\n\t\t\t__experimentalCreatePageEntity: createPageEntity,\n\t\t\t__experimentalUserCanCreatePages: userCanCreatePages,\n\t\t\tpageOnFront,\n\t\t\t__experimentalPreferPatternsOnRoot: hasTemplate,\n\t\t} ),\n\t\t[\n\t\t\tsettings,\n\t\t\thasUploadPermissions,\n\t\t\treusableBlocks,\n\t\t\tblockPatterns,\n\t\t\tblockPatternCategories,\n\t\t\tcanUseUnfilteredHTML,\n\t\t\tundo,\n\t\t\thasTemplate,\n\t\t\tuserCanCreatePages,\n\t\t\tpageOnFront,\n\t\t]\n\t);\n}\n\nexport default useBlockEditorSettings;\n"],"mappings":"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"}
1
+ {"version":3,"names":["_element","require","_data","_coreData","_i18n","_mediaCategories","_interopRequireDefault","_utils","_store","EMPTY_BLOCKS_LIST","BLOCK_EDITOR_SETTINGS","useBlockEditorSettings","settings","hasTemplate","_settings$__experimen","_settings$__experimen2","reusableBlocks","hasUploadPermissions","canUseUnfilteredHTML","userCanCreatePages","pageOnFront","postType","userPatternCategories","useSelect","select","_canUser","canUserUseUnfilteredHTML","getCurrentPostType","editorStore","isWeb","Platform","OS","canUser","getEntityRecord","getUserPatternCategories","coreStore","siteSettings","undefined","getEntityRecords","per_page","page_on_front","settingsBlockPatterns","__experimentalAdditionalBlockPatterns","__experimentalBlockPatterns","settingsBlockPatternCategories","__experimentalAdditionalBlockPatternCategories","__experimentalBlockPatternCategories","restBlockPatterns","restBlockPatternCategories","getBlockPatterns","getBlockPatternCategories","blockPatterns","useMemo","filter","x","index","arr","findIndex","y","name","postTypes","Array","isArray","includes","blockPatternCategories","undo","useDispatch","saveEntityRecord","createPageEntity","useCallback","options","Promise","reject","message","__","Object","fromEntries","entries","key","mediaUpload","__experimentalReusableBlocks","__experimentalUserPatternCategories","__experimentalFetchLinkSuggestions","search","searchOptions","fetchLinkSuggestions","inserterMediaCategories","__experimentalFetchRichUrlData","fetchUrlData","__experimentalCanUserUseUnfilteredHTML","__experimentalUndo","outlineMode","__experimentalCreatePageEntity","__experimentalUserCanCreatePages","__experimentalPreferPatternsOnRoot","_default","exports","default"],"sources":["@wordpress/editor/src/components/provider/use-block-editor-settings.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { Platform, useMemo, useCallback } from '@wordpress/element';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport {\n\tstore as coreStore,\n\t__experimentalFetchLinkSuggestions as fetchLinkSuggestions,\n\t__experimentalFetchUrlData as fetchUrlData,\n} from '@wordpress/core-data';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport inserterMediaCategories from '../media-categories';\nimport { mediaUpload } from '../../utils';\nimport { store as editorStore } from '../../store';\n\nconst EMPTY_BLOCKS_LIST = [];\n\nconst BLOCK_EDITOR_SETTINGS = [\n\t'__experimentalBlockDirectory',\n\t'__experimentalDiscussionSettings',\n\t'__experimentalFeatures',\n\t'__experimentalGlobalStylesBaseStyles',\n\t'__experimentalPreferredStyleVariations',\n\t'__experimentalSetIsInserterOpened',\n\t'__unstableGalleryWithImageBlocks',\n\t'alignWide',\n\t'allowedBlockTypes',\n\t'blockInspectorTabs',\n\t'allowedMimeTypes',\n\t'bodyPlaceholder',\n\t'canLockBlocks',\n\t'capabilities',\n\t'clearBlockSelection',\n\t'codeEditingEnabled',\n\t'colors',\n\t'disableCustomColors',\n\t'disableCustomFontSizes',\n\t'disableCustomSpacingSizes',\n\t'disableCustomGradients',\n\t'disableLayoutStyles',\n\t'enableCustomLineHeight',\n\t'enableCustomSpacing',\n\t'enableCustomUnits',\n\t'enableOpenverseMediaCategory',\n\t'focusMode',\n\t'distractionFree',\n\t'fontSizes',\n\t'gradients',\n\t'generateAnchors',\n\t'hasFixedToolbar',\n\t'hasInlineToolbar',\n\t'isDistractionFree',\n\t'imageDefaultSize',\n\t'imageDimensions',\n\t'imageEditing',\n\t'imageSizes',\n\t'isRTL',\n\t'keepCaretInsideBlock',\n\t'locale',\n\t'maxWidth',\n\t'onUpdateDefaultBlockStyles',\n\t'postContentAttributes',\n\t'postsPerPage',\n\t'readOnly',\n\t'styles',\n\t'template',\n\t'templateLock',\n\t'titlePlaceholder',\n\t'supportsLayout',\n\t'widgetTypesToHideFromLegacyWidgetBlock',\n\t'__unstableHasCustomAppender',\n\t'__unstableIsPreviewMode',\n\t'__unstableResolvedAssets',\n\t'__unstableIsBlockBasedTheme',\n];\n\n/**\n * React hook used to compute the block editor settings to use for the post editor.\n *\n * @param {Object} settings EditorProvider settings prop.\n * @param {boolean} hasTemplate Whether template mode is enabled.\n *\n * @return {Object} Block Editor Settings.\n */\nfunction useBlockEditorSettings( settings, hasTemplate ) {\n\tconst {\n\t\treusableBlocks,\n\t\thasUploadPermissions,\n\t\tcanUseUnfilteredHTML,\n\t\tuserCanCreatePages,\n\t\tpageOnFront,\n\t\tpostType,\n\t\tuserPatternCategories,\n\t} = useSelect( ( select ) => {\n\t\tconst { canUserUseUnfilteredHTML, getCurrentPostType } =\n\t\t\tselect( editorStore );\n\t\tconst isWeb = Platform.OS === 'web';\n\t\tconst { canUser, getEntityRecord, getUserPatternCategories } =\n\t\t\tselect( coreStore );\n\n\t\tconst siteSettings = canUser( 'read', 'settings' )\n\t\t\t? getEntityRecord( 'root', 'site' )\n\t\t\t: undefined;\n\n\t\treturn {\n\t\t\tcanUseUnfilteredHTML: canUserUseUnfilteredHTML(),\n\t\t\treusableBlocks: isWeb\n\t\t\t\t? select( coreStore ).getEntityRecords(\n\t\t\t\t\t\t'postType',\n\t\t\t\t\t\t'wp_block',\n\t\t\t\t\t\t{ per_page: -1 }\n\t\t\t\t )\n\t\t\t\t: EMPTY_BLOCKS_LIST, // Reusable blocks are fetched in the native version of this hook.\n\t\t\thasUploadPermissions: canUser( 'create', 'media' ) ?? true,\n\t\t\tuserCanCreatePages: canUser( 'create', 'pages' ),\n\t\t\tpageOnFront: siteSettings?.page_on_front,\n\t\t\tpostType: getCurrentPostType(),\n\t\t\tuserPatternCategories: getUserPatternCategories(),\n\t\t};\n\t}, [] );\n\n\tconst settingsBlockPatterns =\n\t\tsettings.__experimentalAdditionalBlockPatterns ?? // WP 6.0\n\t\tsettings.__experimentalBlockPatterns; // WP 5.9\n\tconst settingsBlockPatternCategories =\n\t\tsettings.__experimentalAdditionalBlockPatternCategories ?? // WP 6.0\n\t\tsettings.__experimentalBlockPatternCategories; // WP 5.9\n\n\tconst { restBlockPatterns, restBlockPatternCategories } = useSelect(\n\t\t( select ) => ( {\n\t\t\trestBlockPatterns: select( coreStore ).getBlockPatterns(),\n\t\t\trestBlockPatternCategories:\n\t\t\t\tselect( coreStore ).getBlockPatternCategories(),\n\t\t} ),\n\t\t[]\n\t);\n\n\tconst blockPatterns = useMemo(\n\t\t() =>\n\t\t\t[\n\t\t\t\t...( settingsBlockPatterns || [] ),\n\t\t\t\t...( restBlockPatterns || [] ),\n\t\t\t]\n\t\t\t\t.filter(\n\t\t\t\t\t( x, index, arr ) =>\n\t\t\t\t\t\tindex === arr.findIndex( ( y ) => x.name === y.name )\n\t\t\t\t)\n\t\t\t\t.filter( ( { postTypes } ) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t! postTypes ||\n\t\t\t\t\t\t( Array.isArray( postTypes ) &&\n\t\t\t\t\t\t\tpostTypes.includes( postType ) )\n\t\t\t\t\t);\n\t\t\t\t} ),\n\t\t[ settingsBlockPatterns, restBlockPatterns, postType ]\n\t);\n\n\tconst blockPatternCategories = useMemo(\n\t\t() =>\n\t\t\t[\n\t\t\t\t...( settingsBlockPatternCategories || [] ),\n\t\t\t\t...( restBlockPatternCategories || [] ),\n\t\t\t].filter(\n\t\t\t\t( x, index, arr ) =>\n\t\t\t\t\tindex === arr.findIndex( ( y ) => x.name === y.name )\n\t\t\t),\n\t\t[ settingsBlockPatternCategories, restBlockPatternCategories ]\n\t);\n\n\tconst { undo } = useDispatch( editorStore );\n\n\tconst { saveEntityRecord } = useDispatch( coreStore );\n\n\t/**\n\t * Creates a Post entity.\n\t * This is utilised by the Link UI to allow for on-the-fly creation of Posts/Pages.\n\t *\n\t * @param {Object} options parameters for the post being created. These mirror those used on 3rd param of saveEntityRecord.\n\t * @return {Object} the post type object that was created.\n\t */\n\tconst createPageEntity = useCallback(\n\t\t( options ) => {\n\t\t\tif ( ! userCanCreatePages ) {\n\t\t\t\treturn Promise.reject( {\n\t\t\t\t\tmessage: __(\n\t\t\t\t\t\t'You do not have permission to create Pages.'\n\t\t\t\t\t),\n\t\t\t\t} );\n\t\t\t}\n\t\t\treturn saveEntityRecord( 'postType', 'page', options );\n\t\t},\n\t\t[ saveEntityRecord, userCanCreatePages ]\n\t);\n\n\treturn useMemo(\n\t\t() => ( {\n\t\t\t...Object.fromEntries(\n\t\t\t\tObject.entries( settings ).filter( ( [ key ] ) =>\n\t\t\t\t\tBLOCK_EDITOR_SETTINGS.includes( key )\n\t\t\t\t)\n\t\t\t),\n\t\t\tmediaUpload: hasUploadPermissions ? mediaUpload : undefined,\n\t\t\t__experimentalReusableBlocks: reusableBlocks,\n\t\t\t__experimentalBlockPatterns: blockPatterns,\n\t\t\t__experimentalBlockPatternCategories: blockPatternCategories,\n\t\t\t__experimentalUserPatternCategories: userPatternCategories,\n\t\t\t__experimentalFetchLinkSuggestions: ( search, searchOptions ) =>\n\t\t\t\tfetchLinkSuggestions( search, searchOptions, settings ),\n\t\t\tinserterMediaCategories,\n\t\t\t__experimentalFetchRichUrlData: fetchUrlData,\n\t\t\t__experimentalCanUserUseUnfilteredHTML: canUseUnfilteredHTML,\n\t\t\t__experimentalUndo: undo,\n\t\t\toutlineMode: hasTemplate,\n\t\t\t__experimentalCreatePageEntity: createPageEntity,\n\t\t\t__experimentalUserCanCreatePages: userCanCreatePages,\n\t\t\tpageOnFront,\n\t\t\t__experimentalPreferPatternsOnRoot: hasTemplate,\n\t\t} ),\n\t\t[\n\t\t\tsettings,\n\t\t\thasUploadPermissions,\n\t\t\treusableBlocks,\n\t\t\tuserPatternCategories,\n\t\t\tblockPatterns,\n\t\t\tblockPatternCategories,\n\t\t\tcanUseUnfilteredHTML,\n\t\t\tundo,\n\t\t\thasTemplate,\n\t\t\tcreatePageEntity,\n\t\t\tuserCanCreatePages,\n\t\t\tpageOnFront,\n\t\t]\n\t);\n}\n\nexport default useBlockEditorSettings;\n"],"mappings":"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"}
@@ -322,7 +322,7 @@ function getCurrentPostAttribute(state, attributeName) {
322
322
  *
323
323
  * @return {*} Post attribute value.
324
324
  */
325
- const getNestedEditedPostProperty = (state, attributeName) => {
325
+ const getNestedEditedPostProperty = (0, _rememo.default)((state, attributeName) => {
326
326
  const edits = getPostEdits(state);
327
327
  if (!edits.hasOwnProperty(attributeName)) {
328
328
  return getCurrentPostAttribute(state, attributeName);
@@ -331,7 +331,7 @@ const getNestedEditedPostProperty = (state, attributeName) => {
331
331
  ...getCurrentPostAttribute(state, attributeName),
332
332
  ...edits[attributeName]
333
333
  };
334
- };
334
+ }, (state, attributeName) => [getCurrentPostAttribute(state, attributeName), getPostEdits(state)[attributeName]]);
335
335
 
336
336
  /**
337
337
  * Returns a single attribute of the post being edited, preferring the unsaved