@wordpress/editor 14.8.11 → 14.8.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/components/editor-interface/index.js +2 -1
- package/build/components/editor-interface/index.js.map +1 -1
- package/build/components/global-styles-provider/index.js +13 -3
- package/build/components/global-styles-provider/index.js.map +1 -1
- package/build/components/page-attributes/parent.js +5 -5
- package/build/components/page-attributes/parent.js.map +1 -1
- package/build/components/post-author/panel.js +4 -4
- package/build/components/post-author/panel.js.map +1 -1
- package/build/components/post-content-information/index.js +1 -2
- package/build/components/post-content-information/index.js.map +1 -1
- package/build/components/post-last-revision/index.js +1 -1
- package/build/components/post-last-revision/index.js.map +1 -1
- package/build/components/post-schedule/label.js +1 -1
- package/build/components/post-schedule/label.js.map +1 -1
- package/build/components/post-taxonomies/flat-term-selector.js +9 -1
- package/build/components/post-taxonomies/flat-term-selector.js.map +1 -1
- package/build/components/post-taxonomies/hierarchical-term-selector.js +2 -2
- package/build/components/post-taxonomies/hierarchical-term-selector.js.map +1 -1
- package/build/components/post-url/panel.js +3 -3
- package/build/components/post-url/panel.js.map +1 -1
- package/build/components/sidebar/header.js +2 -1
- package/build/components/sidebar/header.js.map +1 -1
- package/build/components/sidebar/index.js +3 -3
- package/build/components/sidebar/index.js.map +1 -1
- package/build/components/time-to-read/index.js +2 -2
- package/build/components/time-to-read/index.js.map +1 -1
- package/build/dataviews/actions/delete-post.js +2 -2
- package/build/dataviews/actions/delete-post.js.map +1 -1
- package/build/dataviews/actions/duplicate-template-part.js +2 -2
- package/build/dataviews/actions/duplicate-template-part.js.map +1 -1
- package/build/store/private-actions.js +2 -2
- package/build/store/private-actions.js.map +1 -1
- package/build-module/components/editor-interface/index.js +2 -1
- package/build-module/components/editor-interface/index.js.map +1 -1
- package/build-module/components/global-styles-provider/index.js +13 -3
- package/build-module/components/global-styles-provider/index.js.map +1 -1
- package/build-module/components/page-attributes/parent.js +5 -5
- package/build-module/components/page-attributes/parent.js.map +1 -1
- package/build-module/components/post-author/panel.js +4 -4
- package/build-module/components/post-author/panel.js.map +1 -1
- package/build-module/components/post-content-information/index.js +1 -2
- package/build-module/components/post-content-information/index.js.map +1 -1
- package/build-module/components/post-last-revision/index.js +1 -1
- package/build-module/components/post-last-revision/index.js.map +1 -1
- package/build-module/components/post-schedule/label.js +1 -1
- package/build-module/components/post-schedule/label.js.map +1 -1
- package/build-module/components/post-taxonomies/flat-term-selector.js +11 -4
- package/build-module/components/post-taxonomies/flat-term-selector.js.map +1 -1
- package/build-module/components/post-taxonomies/hierarchical-term-selector.js +2 -2
- package/build-module/components/post-taxonomies/hierarchical-term-selector.js.map +1 -1
- package/build-module/components/post-url/panel.js +3 -3
- package/build-module/components/post-url/panel.js.map +1 -1
- package/build-module/components/sidebar/header.js +2 -1
- package/build-module/components/sidebar/header.js.map +1 -1
- package/build-module/components/sidebar/index.js +4 -4
- package/build-module/components/sidebar/index.js.map +1 -1
- package/build-module/components/time-to-read/index.js +2 -2
- package/build-module/components/time-to-read/index.js.map +1 -1
- package/build-module/dataviews/actions/delete-post.js +3 -3
- package/build-module/dataviews/actions/delete-post.js.map +1 -1
- package/build-module/dataviews/actions/duplicate-template-part.js +3 -3
- package/build-module/dataviews/actions/duplicate-template-part.js.map +1 -1
- package/build-module/store/private-actions.js +3 -3
- package/build-module/store/private-actions.js.map +1 -1
- package/build-types/components/editor-interface/index.d.ts.map +1 -1
- package/build-types/components/global-styles-provider/index.d.ts.map +1 -1
- package/build-types/components/page-attributes/parent.d.ts.map +1 -1
- package/build-types/components/post-author/panel.d.ts.map +1 -1
- package/build-types/components/post-taxonomies/flat-term-selector.d.ts.map +1 -1
- package/build-types/components/sidebar/index.d.ts.map +1 -1
- package/package.json +14 -14
- package/src/components/editor-interface/index.js +3 -2
- package/src/components/global-styles-provider/index.js +20 -6
- package/src/components/page-attributes/parent.js +6 -4
- package/src/components/post-author/panel.js +4 -2
- package/src/components/post-content-information/index.js +1 -1
- package/src/components/post-last-revision/index.js +1 -1
- package/src/components/post-schedule/label.js +1 -1
- package/src/components/post-taxonomies/flat-term-selector.js +15 -4
- package/src/components/post-taxonomies/hierarchical-term-selector.js +2 -2
- package/src/components/post-url/panel.js +4 -2
- package/src/components/sidebar/header.js +3 -2
- package/src/components/sidebar/index.js +5 -3
- package/src/components/time-to-read/index.js +3 -3
- package/src/dataviews/actions/delete-post.tsx +3 -3
- package/src/dataviews/actions/duplicate-template-part.tsx +3 -3
- package/src/store/private-actions.js +3 -3
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_i18n","require","_element","_components","_data","_deprecated","_interopRequireDefault","_coreData","_compose","_a11y","_notices","_store","_terms","_mostUsedTerms","_jsxRuntime","EMPTY_ARRAY","MAX_TERMS_SUGGESTIONS","DEFAULT_QUERY","per_page","_fields","context","isSameTermName","termA","termB","unescapeString","toLowerCase","termNamesToIds","names","terms","map","termName","find","term","name","id","filter","undefined","FlatTermSelector","slug","__nextHasNoMarginBottom","_taxonomy$labels$add_","_taxonomy$labels$sing2","values","setValues","useState","search","setSearch","debouncedSearch","useDebounce","deprecated","since","version","hint","termIds","taxonomy","hasAssignAction","hasCreateAction","hasResolvedTerms","useSelect","select","_post$_links","_post$_links2","getCurrentPost","getEditedPostAttribute","editorStore","getEntityRecords","getTaxonomy","hasFinishedResolution","coreStore","post","_taxonomy","_termIds","rest_base","query","include","join","_links","length","searchResults","useEffect","newValues","suggestions","useMemo","editPost","useDispatch","saveEntityRecord","createErrorNotice","noticesStore","findOrCreateTerm","newTerm","throwOnError","unescapeTerm","error","code","data","term_id","onUpdateTerms","newTermIds","onChange","termNames","availableTerms","uniqueTerms","reduce","acc","some","n","push","newTermNames","Promise","all","then","newTerms","newAvailableTerms","concat","catch","message","type","appendTerm","_taxonomy$labels$sing","includes","defaultName","__","termAddedMessage","sprintf","_x","labels","singular_name","speak","newTermLabel","add_new_item","singularName","termAddedLabel","termRemovedLabel","removeTermLabel","jsxs","Fragment","children","jsx","FormTokenField","__next40pxDefaultSize","value","onInputChange","maxSuggestions","label","messages","added","removed","remove","default","onSelect","_default","exports","withFilters"],"sources":["@wordpress/editor/src/components/post-taxonomies/flat-term-selector.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, _x, sprintf } from '@wordpress/i18n';\nimport { useEffect, useMemo, useState } from '@wordpress/element';\nimport { FormTokenField, withFilters } from '@wordpress/components';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport deprecated from '@wordpress/deprecated';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useDebounce } from '@wordpress/compose';\nimport { speak } from '@wordpress/a11y';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport { store as editorStore } from '../../store';\nimport { unescapeString, unescapeTerm } from '../../utils/terms';\nimport MostUsedTerms from './most-used-terms';\n\n/**\n * Shared reference to an empty array for cases where it is important to avoid\n * returning a new array reference on every invocation.\n *\n * @type {Array<any>}\n */\nconst EMPTY_ARRAY = [];\n\n/**\n * How the max suggestions limit was chosen:\n * - Matches the `per_page` range set by the REST API.\n * - Can't use \"unbound\" query. The `FormTokenField` needs a fixed number.\n * - Matches default for `FormTokenField`.\n */\nconst MAX_TERMS_SUGGESTIONS = 100;\nconst DEFAULT_QUERY = {\n\tper_page: MAX_TERMS_SUGGESTIONS,\n\t_fields: 'id,name',\n\tcontext: 'view',\n};\n\nconst isSameTermName = ( termA, termB ) =>\n\tunescapeString( termA ).toLowerCase() ===\n\tunescapeString( termB ).toLowerCase();\n\nconst termNamesToIds = ( names, terms ) => {\n\treturn names\n\t\t.map(\n\t\t\t( termName ) =>\n\t\t\t\tterms.find( ( term ) => isSameTermName( term.name, termName ) )\n\t\t\t\t\t?.id\n\t\t)\n\t\t.filter( ( id ) => id !== undefined );\n};\n\n/**\n * Renders a flat term selector component.\n *\n * @param {Object} props The component props.\n * @param {string} props.slug The slug of the taxonomy.\n * @param {boolean} props.__nextHasNoMarginBottom Start opting into the new margin-free styles that will become the default in a future version, currently scheduled to be WordPress 7.0. (The prop can be safely removed once this happens.)\n *\n * @return {JSX.Element} The rendered flat term selector component.\n */\nexport function FlatTermSelector( { slug, __nextHasNoMarginBottom } ) {\n\tconst [ values, setValues ] = useState( [] );\n\tconst [ search, setSearch ] = useState( '' );\n\tconst debouncedSearch = useDebounce( setSearch, 500 );\n\n\tif ( ! __nextHasNoMarginBottom ) {\n\t\tdeprecated(\n\t\t\t'Bottom margin styles for wp.editor.PostTaxonomiesFlatTermSelector',\n\t\t\t{\n\t\t\t\tsince: '6.7',\n\t\t\t\tversion: '7.0',\n\t\t\t\thint: 'Set the `__nextHasNoMarginBottom` prop to true to start opting into the new styles, which will become the default in a future version.',\n\t\t\t}\n\t\t);\n\t}\n\n\tconst {\n\t\tterms,\n\t\ttermIds,\n\t\ttaxonomy,\n\t\thasAssignAction,\n\t\thasCreateAction,\n\t\thasResolvedTerms,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getCurrentPost, getEditedPostAttribute } =\n\t\t\t\tselect( editorStore );\n\t\t\tconst { getEntityRecords, getTaxonomy, hasFinishedResolution } =\n\t\t\t\tselect( coreStore );\n\t\t\tconst post = getCurrentPost();\n\t\t\tconst _taxonomy = getTaxonomy( slug );\n\t\t\tconst _termIds = _taxonomy\n\t\t\t\t? getEditedPostAttribute( _taxonomy.rest_base )\n\t\t\t\t: EMPTY_ARRAY;\n\n\t\t\tconst query = {\n\t\t\t\t...DEFAULT_QUERY,\n\t\t\t\tinclude: _termIds?.join( ',' ),\n\t\t\t\tper_page: -1,\n\t\t\t};\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\ttaxonomy: _taxonomy,\n\t\t\t\ttermIds: _termIds,\n\t\t\t\tterms: _termIds?.length\n\t\t\t\t\t? getEntityRecords( 'taxonomy', slug, query )\n\t\t\t\t\t: EMPTY_ARRAY,\n\t\t\t\thasResolvedTerms: hasFinishedResolution( 'getEntityRecords', [\n\t\t\t\t\t'taxonomy',\n\t\t\t\t\tslug,\n\t\t\t\t\tquery,\n\t\t\t\t] ),\n\t\t\t};\n\t\t},\n\t\t[ slug ]\n\t);\n\n\tconst { searchResults } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getEntityRecords } = select( coreStore );\n\n\t\t\treturn {\n\t\t\t\tsearchResults: !! search\n\t\t\t\t\t? getEntityRecords( 'taxonomy', slug, {\n\t\t\t\t\t\t\t...DEFAULT_QUERY,\n\t\t\t\t\t\t\tsearch,\n\t\t\t\t\t } )\n\t\t\t\t\t: EMPTY_ARRAY,\n\t\t\t};\n\t\t},\n\t\t[ search, slug ]\n\t);\n\n\t// Update terms state only after the selectors are resolved.\n\t// We're using this to avoid terms temporarily disappearing on slow networks\n\t// while core data makes REST API requests.\n\tuseEffect( () => {\n\t\tif ( hasResolvedTerms ) {\n\t\t\tconst newValues = ( terms ?? [] ).map( ( term ) =>\n\t\t\t\tunescapeString( term.name )\n\t\t\t);\n\n\t\t\tsetValues( newValues );\n\t\t}\n\t}, [ terms, hasResolvedTerms ] );\n\n\tconst suggestions = useMemo( () => {\n\t\treturn ( searchResults ?? [] ).map( ( term ) =>\n\t\t\tunescapeString( term.name )\n\t\t);\n\t}, [ searchResults ] );\n\n\tconst { editPost } = useDispatch( editorStore );\n\tconst { saveEntityRecord } = useDispatch( coreStore );\n\tconst { createErrorNotice } = useDispatch( noticesStore );\n\n\tif ( ! hasAssignAction ) {\n\t\treturn null;\n\t}\n\n\tasync function findOrCreateTerm( term ) {\n\t\ttry {\n\t\t\tconst newTerm = await saveEntityRecord( 'taxonomy', slug, term, {\n\t\t\t\tthrowOnError: true,\n\t\t\t} );\n\t\t\treturn unescapeTerm( newTerm );\n\t\t} catch ( error ) {\n\t\t\tif ( error.code !== 'term_exists' ) {\n\t\t\t\tthrow error;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tid: error.data.term_id,\n\t\t\t\tname: term.name,\n\t\t\t};\n\t\t}\n\t}\n\n\tfunction onUpdateTerms( newTermIds ) {\n\t\teditPost( { [ taxonomy.rest_base ]: newTermIds } );\n\t}\n\n\tfunction onChange( termNames ) {\n\t\tconst availableTerms = [\n\t\t\t...( terms ?? [] ),\n\t\t\t...( searchResults ?? [] ),\n\t\t];\n\t\tconst uniqueTerms = termNames.reduce( ( acc, name ) => {\n\t\t\tif (\n\t\t\t\t! acc.some( ( n ) => n.toLowerCase() === name.toLowerCase() )\n\t\t\t) {\n\t\t\t\tacc.push( name );\n\t\t\t}\n\t\t\treturn acc;\n\t\t}, [] );\n\n\t\tconst newTermNames = uniqueTerms.filter(\n\t\t\t( termName ) =>\n\t\t\t\t! availableTerms.find( ( term ) =>\n\t\t\t\t\tisSameTermName( term.name, termName )\n\t\t\t\t)\n\t\t);\n\n\t\t// Optimistically update term values.\n\t\t// The selector will always re-fetch terms later.\n\t\tsetValues( uniqueTerms );\n\n\t\tif ( newTermNames.length === 0 ) {\n\t\t\tonUpdateTerms( termNamesToIds( uniqueTerms, availableTerms ) );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( ! hasCreateAction ) {\n\t\t\treturn;\n\t\t}\n\n\t\tPromise.all(\n\t\t\tnewTermNames.map( ( termName ) =>\n\t\t\t\tfindOrCreateTerm( { name: termName } )\n\t\t\t)\n\t\t)\n\t\t\t.then( ( newTerms ) => {\n\t\t\t\tconst newAvailableTerms = availableTerms.concat( newTerms );\n\t\t\t\tonUpdateTerms(\n\t\t\t\t\ttermNamesToIds( uniqueTerms, newAvailableTerms )\n\t\t\t\t);\n\t\t\t} )\n\t\t\t.catch( ( error ) => {\n\t\t\t\tcreateErrorNotice( error.message, {\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t} );\n\t\t\t\t// In case of a failure, try assigning available terms.\n\t\t\t\t// This will invalidate the optimistic update.\n\t\t\t\tonUpdateTerms( termNamesToIds( uniqueTerms, availableTerms ) );\n\t\t\t} );\n\t}\n\n\tfunction appendTerm( newTerm ) {\n\t\tif ( termIds.includes( newTerm.id ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst newTermIds = [ ...termIds, newTerm.id ];\n\t\tconst defaultName = slug === 'post_tag' ? __( 'Tag' ) : __( 'Term' );\n\t\tconst termAddedMessage = sprintf(\n\t\t\t/* translators: %s: term name. */\n\t\t\t_x( '%s added', 'term' ),\n\t\t\ttaxonomy?.labels?.singular_name ?? defaultName\n\t\t);\n\n\t\tspeak( termAddedMessage, 'assertive' );\n\t\tonUpdateTerms( newTermIds );\n\t}\n\n\tconst newTermLabel =\n\t\ttaxonomy?.labels?.add_new_item ??\n\t\t( slug === 'post_tag' ? __( 'Add new tag' ) : __( 'Add new Term' ) );\n\tconst singularName =\n\t\ttaxonomy?.labels?.singular_name ??\n\t\t( slug === 'post_tag' ? __( 'Tag' ) : __( 'Term' ) );\n\tconst termAddedLabel = sprintf(\n\t\t/* translators: %s: term name. */\n\t\t_x( '%s added', 'term' ),\n\t\tsingularName\n\t);\n\tconst termRemovedLabel = sprintf(\n\t\t/* translators: %s: term name. */\n\t\t_x( '%s removed', 'term' ),\n\t\tsingularName\n\t);\n\tconst removeTermLabel = sprintf(\n\t\t/* translators: %s: term name. */\n\t\t_x( 'Remove %s', 'term' ),\n\t\tsingularName\n\t);\n\n\treturn (\n\t\t<>\n\t\t\t<FormTokenField\n\t\t\t\t__next40pxDefaultSize\n\t\t\t\tvalue={ values }\n\t\t\t\tsuggestions={ suggestions }\n\t\t\t\tonChange={ onChange }\n\t\t\t\tonInputChange={ debouncedSearch }\n\t\t\t\tmaxSuggestions={ MAX_TERMS_SUGGESTIONS }\n\t\t\t\tlabel={ newTermLabel }\n\t\t\t\tmessages={ {\n\t\t\t\t\tadded: termAddedLabel,\n\t\t\t\t\tremoved: termRemovedLabel,\n\t\t\t\t\tremove: removeTermLabel,\n\t\t\t\t} }\n\t\t\t\t__nextHasNoMarginBottom={ __nextHasNoMarginBottom }\n\t\t\t/>\n\t\t\t<MostUsedTerms taxonomy={ taxonomy } onSelect={ appendTerm } />\n\t\t</>\n\t);\n}\n\nexport default withFilters( 'editor.PostTaxonomyType' )( FlatTermSelector );\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_i18n","require","_element","_components","_data","_deprecated","_interopRequireDefault","_coreData","_compose","_a11y","_notices","_store","_terms","_mostUsedTerms","_jsxRuntime","EMPTY_ARRAY","MAX_TERMS_SUGGESTIONS","DEFAULT_QUERY","per_page","_fields","context","isSameTermName","termA","termB","unescapeString","toLowerCase","termNamesToIds","names","terms","map","termName","find","term","name","id","filter","undefined","FlatTermSelector","slug","__nextHasNoMarginBottom","_taxonomy$labels$add_","_taxonomy$labels$sing2","values","setValues","useState","search","setSearch","debouncedSearch","useDebounce","deprecated","since","version","hint","termIds","taxonomy","hasAssignAction","hasCreateAction","hasResolvedTerms","useSelect","select","_post$_links","_post$_links2","getCurrentPost","getEditedPostAttribute","editorStore","getEntityRecords","getTaxonomy","hasFinishedResolution","coreStore","post","_taxonomy","_termIds","rest_base","query","include","join","_links","length","searchResults","useEffect","newValues","suggestions","useMemo","editPost","useDispatch","saveEntityRecord","createErrorNotice","noticesStore","findOrCreateTerm","newTerm","throwOnError","unescapeTerm","error","code","data","term_id","onUpdateTerms","newTermIds","onChange","termNames","availableTerms","uniqueTerms","reduce","acc","some","n","push","newTermNames","Promise","all","then","newTerms","newAvailableTerms","concat","catch","message","type","appendTerm","_taxonomy$labels$sing","includes","defaultName","__","termAddedMessage","sprintf","_x","labels","singular_name","speak","newTermLabel","add_new_item","singularName","termAddedLabel","termRemovedLabel","removeTermLabel","Wrapper","children","jsx","__experimentalVStack","spacing","Fragment","jsxs","FormTokenField","__next40pxDefaultSize","value","onInputChange","maxSuggestions","label","messages","added","removed","remove","default","onSelect","_default","exports","withFilters"],"sources":["@wordpress/editor/src/components/post-taxonomies/flat-term-selector.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, _x, sprintf } from '@wordpress/i18n';\nimport { Fragment, useEffect, useMemo, useState } from '@wordpress/element';\nimport {\n\tFormTokenField,\n\twithFilters,\n\t__experimentalVStack as VStack,\n} from '@wordpress/components';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport deprecated from '@wordpress/deprecated';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useDebounce } from '@wordpress/compose';\nimport { speak } from '@wordpress/a11y';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport { store as editorStore } from '../../store';\nimport { unescapeString, unescapeTerm } from '../../utils/terms';\nimport MostUsedTerms from './most-used-terms';\n\n/**\n * Shared reference to an empty array for cases where it is important to avoid\n * returning a new array reference on every invocation.\n *\n * @type {Array<any>}\n */\nconst EMPTY_ARRAY = [];\n\n/**\n * How the max suggestions limit was chosen:\n * - Matches the `per_page` range set by the REST API.\n * - Can't use \"unbound\" query. The `FormTokenField` needs a fixed number.\n * - Matches default for `FormTokenField`.\n */\nconst MAX_TERMS_SUGGESTIONS = 100;\nconst DEFAULT_QUERY = {\n\tper_page: MAX_TERMS_SUGGESTIONS,\n\t_fields: 'id,name',\n\tcontext: 'view',\n};\n\nconst isSameTermName = ( termA, termB ) =>\n\tunescapeString( termA ).toLowerCase() ===\n\tunescapeString( termB ).toLowerCase();\n\nconst termNamesToIds = ( names, terms ) => {\n\treturn names\n\t\t.map(\n\t\t\t( termName ) =>\n\t\t\t\tterms.find( ( term ) => isSameTermName( term.name, termName ) )\n\t\t\t\t\t?.id\n\t\t)\n\t\t.filter( ( id ) => id !== undefined );\n};\n\n/**\n * Renders a flat term selector component.\n *\n * @param {Object} props The component props.\n * @param {string} props.slug The slug of the taxonomy.\n * @param {boolean} props.__nextHasNoMarginBottom Start opting into the new margin-free styles that will become the default in a future version, currently scheduled to be WordPress 7.0. (The prop can be safely removed once this happens.)\n *\n * @return {JSX.Element} The rendered flat term selector component.\n */\nexport function FlatTermSelector( { slug, __nextHasNoMarginBottom } ) {\n\tconst [ values, setValues ] = useState( [] );\n\tconst [ search, setSearch ] = useState( '' );\n\tconst debouncedSearch = useDebounce( setSearch, 500 );\n\n\tif ( ! __nextHasNoMarginBottom ) {\n\t\tdeprecated(\n\t\t\t'Bottom margin styles for wp.editor.PostTaxonomiesFlatTermSelector',\n\t\t\t{\n\t\t\t\tsince: '6.7',\n\t\t\t\tversion: '7.0',\n\t\t\t\thint: 'Set the `__nextHasNoMarginBottom` prop to true to start opting into the new styles, which will become the default in a future version.',\n\t\t\t}\n\t\t);\n\t}\n\n\tconst {\n\t\tterms,\n\t\ttermIds,\n\t\ttaxonomy,\n\t\thasAssignAction,\n\t\thasCreateAction,\n\t\thasResolvedTerms,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getCurrentPost, getEditedPostAttribute } =\n\t\t\t\tselect( editorStore );\n\t\t\tconst { getEntityRecords, getTaxonomy, hasFinishedResolution } =\n\t\t\t\tselect( coreStore );\n\t\t\tconst post = getCurrentPost();\n\t\t\tconst _taxonomy = getTaxonomy( slug );\n\t\t\tconst _termIds = _taxonomy\n\t\t\t\t? getEditedPostAttribute( _taxonomy.rest_base )\n\t\t\t\t: EMPTY_ARRAY;\n\n\t\t\tconst query = {\n\t\t\t\t...DEFAULT_QUERY,\n\t\t\t\tinclude: _termIds?.join( ',' ),\n\t\t\t\tper_page: -1,\n\t\t\t};\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\ttaxonomy: _taxonomy,\n\t\t\t\ttermIds: _termIds,\n\t\t\t\tterms: _termIds?.length\n\t\t\t\t\t? getEntityRecords( 'taxonomy', slug, query )\n\t\t\t\t\t: EMPTY_ARRAY,\n\t\t\t\thasResolvedTerms: hasFinishedResolution( 'getEntityRecords', [\n\t\t\t\t\t'taxonomy',\n\t\t\t\t\tslug,\n\t\t\t\t\tquery,\n\t\t\t\t] ),\n\t\t\t};\n\t\t},\n\t\t[ slug ]\n\t);\n\n\tconst { searchResults } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getEntityRecords } = select( coreStore );\n\n\t\t\treturn {\n\t\t\t\tsearchResults: !! search\n\t\t\t\t\t? getEntityRecords( 'taxonomy', slug, {\n\t\t\t\t\t\t\t...DEFAULT_QUERY,\n\t\t\t\t\t\t\tsearch,\n\t\t\t\t\t } )\n\t\t\t\t\t: EMPTY_ARRAY,\n\t\t\t};\n\t\t},\n\t\t[ search, slug ]\n\t);\n\n\t// Update terms state only after the selectors are resolved.\n\t// We're using this to avoid terms temporarily disappearing on slow networks\n\t// while core data makes REST API requests.\n\tuseEffect( () => {\n\t\tif ( hasResolvedTerms ) {\n\t\t\tconst newValues = ( terms ?? [] ).map( ( term ) =>\n\t\t\t\tunescapeString( term.name )\n\t\t\t);\n\n\t\t\tsetValues( newValues );\n\t\t}\n\t}, [ terms, hasResolvedTerms ] );\n\n\tconst suggestions = useMemo( () => {\n\t\treturn ( searchResults ?? [] ).map( ( term ) =>\n\t\t\tunescapeString( term.name )\n\t\t);\n\t}, [ searchResults ] );\n\n\tconst { editPost } = useDispatch( editorStore );\n\tconst { saveEntityRecord } = useDispatch( coreStore );\n\tconst { createErrorNotice } = useDispatch( noticesStore );\n\n\tif ( ! hasAssignAction ) {\n\t\treturn null;\n\t}\n\n\tasync function findOrCreateTerm( term ) {\n\t\ttry {\n\t\t\tconst newTerm = await saveEntityRecord( 'taxonomy', slug, term, {\n\t\t\t\tthrowOnError: true,\n\t\t\t} );\n\t\t\treturn unescapeTerm( newTerm );\n\t\t} catch ( error ) {\n\t\t\tif ( error.code !== 'term_exists' ) {\n\t\t\t\tthrow error;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tid: error.data.term_id,\n\t\t\t\tname: term.name,\n\t\t\t};\n\t\t}\n\t}\n\n\tfunction onUpdateTerms( newTermIds ) {\n\t\teditPost( { [ taxonomy.rest_base ]: newTermIds } );\n\t}\n\n\tfunction onChange( termNames ) {\n\t\tconst availableTerms = [\n\t\t\t...( terms ?? [] ),\n\t\t\t...( searchResults ?? [] ),\n\t\t];\n\t\tconst uniqueTerms = termNames.reduce( ( acc, name ) => {\n\t\t\tif (\n\t\t\t\t! acc.some( ( n ) => n.toLowerCase() === name.toLowerCase() )\n\t\t\t) {\n\t\t\t\tacc.push( name );\n\t\t\t}\n\t\t\treturn acc;\n\t\t}, [] );\n\n\t\tconst newTermNames = uniqueTerms.filter(\n\t\t\t( termName ) =>\n\t\t\t\t! availableTerms.find( ( term ) =>\n\t\t\t\t\tisSameTermName( term.name, termName )\n\t\t\t\t)\n\t\t);\n\n\t\t// Optimistically update term values.\n\t\t// The selector will always re-fetch terms later.\n\t\tsetValues( uniqueTerms );\n\n\t\tif ( newTermNames.length === 0 ) {\n\t\t\tonUpdateTerms( termNamesToIds( uniqueTerms, availableTerms ) );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( ! hasCreateAction ) {\n\t\t\treturn;\n\t\t}\n\n\t\tPromise.all(\n\t\t\tnewTermNames.map( ( termName ) =>\n\t\t\t\tfindOrCreateTerm( { name: termName } )\n\t\t\t)\n\t\t)\n\t\t\t.then( ( newTerms ) => {\n\t\t\t\tconst newAvailableTerms = availableTerms.concat( newTerms );\n\t\t\t\tonUpdateTerms(\n\t\t\t\t\ttermNamesToIds( uniqueTerms, newAvailableTerms )\n\t\t\t\t);\n\t\t\t} )\n\t\t\t.catch( ( error ) => {\n\t\t\t\tcreateErrorNotice( error.message, {\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t} );\n\t\t\t\t// In case of a failure, try assigning available terms.\n\t\t\t\t// This will invalidate the optimistic update.\n\t\t\t\tonUpdateTerms( termNamesToIds( uniqueTerms, availableTerms ) );\n\t\t\t} );\n\t}\n\n\tfunction appendTerm( newTerm ) {\n\t\tif ( termIds.includes( newTerm.id ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst newTermIds = [ ...termIds, newTerm.id ];\n\t\tconst defaultName = slug === 'post_tag' ? __( 'Tag' ) : __( 'Term' );\n\t\tconst termAddedMessage = sprintf(\n\t\t\t/* translators: %s: term name. */\n\t\t\t_x( '%s added', 'term' ),\n\t\t\ttaxonomy?.labels?.singular_name ?? defaultName\n\t\t);\n\n\t\tspeak( termAddedMessage, 'assertive' );\n\t\tonUpdateTerms( newTermIds );\n\t}\n\n\tconst newTermLabel =\n\t\ttaxonomy?.labels?.add_new_item ??\n\t\t( slug === 'post_tag' ? __( 'Add new tag' ) : __( 'Add new Term' ) );\n\tconst singularName =\n\t\ttaxonomy?.labels?.singular_name ??\n\t\t( slug === 'post_tag' ? __( 'Tag' ) : __( 'Term' ) );\n\tconst termAddedLabel = sprintf(\n\t\t/* translators: %s: term name. */\n\t\t_x( '%s added', 'term' ),\n\t\tsingularName\n\t);\n\tconst termRemovedLabel = sprintf(\n\t\t/* translators: %s: term name. */\n\t\t_x( '%s removed', 'term' ),\n\t\tsingularName\n\t);\n\tconst removeTermLabel = sprintf(\n\t\t/* translators: %s: term name. */\n\t\t_x( 'Remove %s', 'term' ),\n\t\tsingularName\n\t);\n\n\tconst Wrapper = ( { children } ) =>\n\t\t__nextHasNoMarginBottom ? (\n\t\t\t<VStack spacing={ 4 }>{ children }</VStack>\n\t\t) : (\n\t\t\t<Fragment>{ children }</Fragment>\n\t\t);\n\n\treturn (\n\t\t<Wrapper>\n\t\t\t<FormTokenField\n\t\t\t\t__next40pxDefaultSize\n\t\t\t\tvalue={ values }\n\t\t\t\tsuggestions={ suggestions }\n\t\t\t\tonChange={ onChange }\n\t\t\t\tonInputChange={ debouncedSearch }\n\t\t\t\tmaxSuggestions={ MAX_TERMS_SUGGESTIONS }\n\t\t\t\tlabel={ newTermLabel }\n\t\t\t\tmessages={ {\n\t\t\t\t\tadded: termAddedLabel,\n\t\t\t\t\tremoved: termRemovedLabel,\n\t\t\t\t\tremove: removeTermLabel,\n\t\t\t\t} }\n\t\t\t\t__nextHasNoMarginBottom={ __nextHasNoMarginBottom }\n\t\t\t/>\n\t\t\t<MostUsedTerms taxonomy={ taxonomy } onSelect={ appendTerm } />\n\t\t</Wrapper>\n\t);\n}\n\nexport default withFilters( 'editor.PostTaxonomyType' )( FlatTermSelector );\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -275,7 +275,7 @@ function HierarchicalTermSelector({
|
|
|
275
275
|
return;
|
|
276
276
|
}
|
|
277
277
|
const defaultName = slug === 'category' ? (0, _i18n.__)('Category') : (0, _i18n.__)('Term');
|
|
278
|
-
const termAddedMessage = (0, _i18n.sprintf)( /* translators: %s:
|
|
278
|
+
const termAddedMessage = (0, _i18n.sprintf)( /* translators: %s: term name. */
|
|
279
279
|
(0, _i18n._x)('%s added', 'term'), (_taxonomy$labels$sing = taxonomy?.labels?.singular_name) !== null && _taxonomy$labels$sing !== void 0 ? _taxonomy$labels$sing : defaultName);
|
|
280
280
|
(0, _a11y.speak)(termAddedMessage, 'assertive');
|
|
281
281
|
setAdding(false);
|
|
@@ -298,7 +298,7 @@ function HierarchicalTermSelector({
|
|
|
298
298
|
setFilterValue(value);
|
|
299
299
|
setFilteredTermsTree(newFilteredTermsTree);
|
|
300
300
|
const resultCount = getResultCount(newFilteredTermsTree);
|
|
301
|
-
const resultsFoundMessage = (0, _i18n.sprintf)( /* translators: %d: number of results */
|
|
301
|
+
const resultsFoundMessage = (0, _i18n.sprintf)( /* translators: %d: number of results. */
|
|
302
302
|
(0, _i18n._n)('%d result found.', '%d results found.', resultCount), resultCount);
|
|
303
303
|
debouncedSpeak(resultsFoundMessage, 'assertive');
|
|
304
304
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_i18n","require","_element","_notices","_components","_data","_compose","_coreData","_a11y","_htmlEntities","_terms","_store","_jsxRuntime","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","jsxs","className","jsx","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","SearchControl","__next40pxDefaultSize","tabIndex","role","FlexItem","Button","onClick","variant","onSubmit","TextControl","required","TreeSelect","noOptionLabel","selectedId","tree","_default","exports","default","withFilters"],"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\tSearchControl,\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 {Element} 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<SearchControl\n\t\t\t\t\t__next40pxDefaultSize\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\t__next40pxDefaultSize\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__next40pxDefaultSize\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__next40pxDefaultSize\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\t__next40pxDefaultSize\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":";;;;;;;;;;AAGA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AACA,IAAAE,QAAA,GAAAF,OAAA;AACA,IAAAG,WAAA,GAAAH,OAAA;AAUA,IAAAI,KAAA,GAAAJ,OAAA;AACA,IAAAK,QAAA,GAAAL,OAAA;AACA,IAAAM,SAAA,GAAAN,OAAA;AACA,IAAAO,KAAA,GAAAP,OAAA;AACA,IAAAQ,aAAA,GAAAR,OAAA;AAKA,IAAAS,MAAA,GAAAT,OAAA;AACA,IAAAU,MAAA,GAAAV,OAAA;AAAmD,IAAAW,WAAA,GAAAX,OAAA;AA1BnD;AACA;AACA;;AAoBA;AACA;AACA;;AAIA;AACA;AACA,GACA,MAAMY,aAAa,GAAG;EACrBC,QAAQ,EAAE,CAAC,CAAC;EACZC,OAAO,EAAE,MAAM;EACfC,KAAK,EAAE,KAAK;EACZC,OAAO,EAAE,gBAAgB;EACzBC,OAAO,EAAE;AACV,CAAC;AAED,MAAMC,0BAA0B,GAAG,CAAC;AAEpC,MAAMC,WAAW,GAAG,EAAE;;AAEtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,cAAcA,CAAEC,SAAS,EAAEC,KAAK,EAAG;EAClD,MAAMC,gBAAgB,GAAKC,QAAQ,IAAM;IACxC,IAAKF,KAAK,CAACG,OAAO,CAAED,QAAQ,CAACE,EAAG,CAAC,KAAK,CAAC,CAAC,EAAG;MAC1C,OAAO,IAAI;IACZ;IACA,IAAKC,SAAS,KAAKH,QAAQ,CAACI,QAAQ,EAAG;MACtC,OAAO,KAAK;IACb;IACA,OACCJ,QAAQ,CAACI,QAAQ,CACfC,GAAG,CAAEN,gBAAiB,CAAC,CACvBO,MAAM,CAAIC,KAAK,IAAMA,KAAM,CAAC,CAACC,MAAM,GAAG,CAAC;EAE3C,CAAC;EACD,MAAMC,qBAAqB,GAAGA,CAAEC,KAAK,EAAEC,KAAK,KAAM;IACjD,MAAMC,aAAa,GAAGb,gBAAgB,CAAEW,KAAM,CAAC;IAC/C,MAAMG,aAAa,GAAGd,gBAAgB,CAAEY,KAAM,CAAC;IAE/C,IAAKC,aAAa,KAAKC,aAAa,EAAG;MACtC,OAAO,CAAC;IACT;IAEA,IAAKD,aAAa,IAAI,CAAEC,aAAa,EAAG;MACvC,OAAO,CAAC,CAAC;IACV;IAEA,IAAK,CAAED,aAAa,IAAIC,aAAa,EAAG;MACvC,OAAO,CAAC;IACT;IAEA,OAAO,CAAC;EACT,CAAC;EACD,MAAMC,WAAW,GAAG,CAAE,GAAGjB,SAAS,CAAE;EACpCiB,WAAW,CAACC,IAAI,CAAEN,qBAAsB,CAAC;EACzC,OAAOK,WAAW;AACnB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASE,QAAQA,CAAElB,KAAK,EAAEmB,MAAM,EAAEC,IAAI,EAAG;EAC/C,OAAOpB,KAAK,CAACqB,IAAI,CAAIC,IAAI,IAAM;IAC9B,OACC,CAAI,CAAEA,IAAI,CAACH,MAAM,IAAI,CAAEA,MAAM,IAC5BI,QAAQ,CAAED,IAAI,CAACH,MAAO,CAAC,KAAKI,QAAQ,CAAEJ,MAAO,CAAC,KAC/CG,IAAI,CAACF,IAAI,CAACI,WAAW,CAAC,CAAC,KAAKJ,IAAI,CAACI,WAAW,CAAC,CAAC;EAEhD,CAAE,CAAC;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,gBAAgBA,CAAEC,WAAW,EAAG;EAC/C,MAAMC,mBAAmB,GAAKC,YAAY,IAAM;IAC/C,IAAK,EAAE,KAAKF,WAAW,EAAG;MACzB,OAAOE,YAAY;IACpB;;IAEA;IACA;IACA,MAAMN,IAAI,GAAG;MAAE,GAAGM;IAAa,CAAC;;IAEhC;IACA;IACA,IAAKN,IAAI,CAAChB,QAAQ,CAACI,MAAM,GAAG,CAAC,EAAG;MAC/BY,IAAI,CAAChB,QAAQ,GAAGgB,IAAI,CAAChB,QAAQ,CAC3BC,GAAG,CAAEoB,mBAAoB,CAAC,CAC1BnB,MAAM,CAAIC,KAAK,IAAMA,KAAM,CAAC;IAC/B;;IAEA;IACA;IACA,IACC,CAAC,CAAC,KACDa,IAAI,CAACF,IAAI,CAACI,WAAW,CAAC,CAAC,CAACrB,OAAO,CAAEuB,WAAW,CAACF,WAAW,CAAC,CAAE,CAAC,IAC7DF,IAAI,CAAChB,QAAQ,CAACI,MAAM,GAAG,CAAC,EACvB;MACD,OAAOY,IAAI;IACZ;;IAEA;IACA;IACA,OAAO,KAAK;EACb,CAAC;EACD,OAAOK,mBAAmB;AAC3B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASE,wBAAwBA,CAAE;EAAEC;AAAK,CAAC,EAAG;EAAA,IAAAC,qBAAA,EAAAC,cAAA;EACpD,MAAM,CAAEC,MAAM,EAAEC,SAAS,CAAE,GAAG,IAAAC,iBAAQ,EAAE,KAAM,CAAC;EAC/C,MAAM,CAAEC,QAAQ,EAAEC,WAAW,CAAE,GAAG,IAAAF,iBAAQ,EAAE,EAAG,CAAC;EAChD;AACD;AACA;EACC,MAAM,CAAEG,UAAU,EAAEC,aAAa,CAAE,GAAG,IAAAJ,iBAAQ,EAAE,EAAG,CAAC;EACpD,MAAM,CAAEK,QAAQ,EAAEC,WAAW,CAAE,GAAG,IAAAN,iBAAQ,EAAE,KAAM,CAAC;EACnD,MAAM,CAAET,WAAW,EAAEgB,cAAc,CAAE,GAAG,IAAAP,iBAAQ,EAAE,EAAG,CAAC;EACtD,MAAM,CAAEQ,iBAAiB,EAAEC,oBAAoB,CAAE,GAAG,IAAAT,iBAAQ,EAAE,EAAG,CAAC;EAClE,MAAMU,cAAc,GAAG,IAAAC,oBAAW,EAAEC,WAAK,EAAE,GAAI,CAAC;EAEhD,MAAM;IACLC,eAAe;IACfC,eAAe;IACfjD,KAAK;IACLkD,OAAO;IACPC,cAAc;IACdC;EACD,CAAC,GAAG,IAAAC,eAAS,EACVC,MAAM,IAAM;IAAA,IAAAC,YAAA,EAAAC,aAAA;IACb,MAAM;MAAEC,cAAc;MAAEC;IAAuB,CAAC,GAC/CJ,MAAM,CAAEK,YAAY,CAAC;IACtB,MAAM;MAAEC,WAAW;MAAEC,gBAAgB;MAAEC;IAAY,CAAC,GACnDR,MAAM,CAAES,eAAU,CAAC;IACpB,MAAMC,SAAS,GAAGJ,WAAW,CAAE9B,IAAK,CAAC;IACrC,MAAMmC,IAAI,GAAGR,cAAc,CAAC,CAAC;IAE7B,OAAO;MACNT,eAAe,EAAEgB,SAAS,IAAAT,YAAA,GACvBU,IAAI,CAACC,MAAM,GACX,mBAAmB,GAAGF,SAAS,CAACG,SAAS,CACxC,cAAAZ,YAAA,cAAAA,YAAA,GAAI,KAAK,GACV,KAAK;MACRN,eAAe,EAAEe,SAAS,IAAAR,aAAA,GACvBS,IAAI,CAACC,MAAM,GACX,mBAAmB,GAAGF,SAAS,CAACG,SAAS,CACxC,cAAAX,aAAA,cAAAA,aAAA,GAAI,KAAK,GACV,KAAK;MACRxD,KAAK,EAAEgE,SAAS,GACbN,sBAAsB,CAAEM,SAAS,CAACG,SAAU,CAAC,GAC7CtE,WAAW;MACdqD,OAAO,EAAEY,WAAW,CAAE,kBAAkB,EAAE,CACzC,UAAU,EACVhC,IAAI,EACJxC,aAAa,CACZ,CAAC;MACH6D,cAAc,EACbU,gBAAgB,CAAE,UAAU,EAAE/B,IAAI,EAAExC,aAAc,CAAC,IACnDO,WAAW;MACZuD,QAAQ,EAAEY;IACX,CAAC;EACF,CAAC,EACD,CAAElC,IAAI,CACP,CAAC;EAED,MAAM;IAAEsC;EAAS,CAAC,GAAG,IAAAC,iBAAW,EAAEV,YAAY,CAAC;EAC/C,MAAM;IAAEW;EAAiB,CAAC,GAAG,IAAAD,iBAAW,EAAEN,eAAU,CAAC;EAErD,MAAMQ,kBAAkB,GAAG,IAAAC,gBAAO,EACjC,MAAM1E,cAAc,CAAE,IAAA2E,qBAAc,EAAEtB,cAAe,CAAC,EAAEnD,KAAM,CAAC;EAC/D;EACA;EACA,CAAEmD,cAAc,CACjB,CAAC;EAED,MAAM;IAAEuB;EAAkB,CAAC,GAAG,IAAAL,iBAAW,EAAEM,cAAa,CAAC;EAEzD,IAAK,CAAE1B,eAAe,EAAG;IACxB,OAAO,IAAI;EACZ;;EAEA;AACD;AACA;AACA;AACA;AACA;EACC,MAAM2B,OAAO,GAAKtD,IAAI,IAAM;IAC3B,OAAOgD,gBAAgB,CAAE,UAAU,EAAExC,IAAI,EAAER,IAAI,EAAE;MAChDuD,YAAY,EAAE;IACf,CAAE,CAAC;EACJ,CAAC;;EAED;AACD;AACA;AACA;AACA;EACC,MAAMC,aAAa,GAAKC,OAAO,IAAM;IACpCX,QAAQ,CAAE;MAAE,CAAEhB,QAAQ,CAACe,SAAS,GAAIY;IAAQ,CAAE,CAAC;EAChD,CAAC;;EAED;AACD;AACA;AACA;AACA;EACC,MAAMC,QAAQ,GAAKC,MAAM,IAAM;IAC9B,MAAMC,OAAO,GAAGlF,KAAK,CAACmF,QAAQ,CAAEF,MAAO,CAAC;IACxC,MAAMG,QAAQ,GAAGF,OAAO,GACrBlF,KAAK,CAACQ,MAAM,CAAIJ,EAAE,IAAMA,EAAE,KAAK6E,MAAO,CAAC,GACvC,CAAE,GAAGjF,KAAK,EAAEiF,MAAM,CAAE;IACvBH,aAAa,CAAEM,QAAS,CAAC;EAC1B,CAAC;EAED,MAAMC,gBAAgB,GAAKC,KAAK,IAAM;IACrCjD,WAAW,CAAEiD,KAAM,CAAC;EACrB,CAAC;;EAED;AACD;AACA;AACA;AACA;EACC,MAAMC,kBAAkB,GAAKC,QAAQ,IAAM;IAC1CjD,aAAa,CAAEiD,QAAS,CAAC;EAC1B,CAAC;EAED,MAAMC,YAAY,GAAGA,CAAA,KAAM;IAC1BhD,WAAW,CAAE,CAAED,QAAS,CAAC;EAC1B,CAAC;EAED,MAAMkD,SAAS,GAAG,MAAQC,KAAK,IAAM;IAAA,IAAAC,qBAAA;IACpCD,KAAK,CAACE,cAAc,CAAC,CAAC;IACtB,IAAKzD,QAAQ,KAAK,EAAE,IAAIH,MAAM,EAAG;MAChC;IACD;;IAEA;IACA,MAAM6D,YAAY,GAAG5E,QAAQ,CAAEiC,cAAc,EAAEb,UAAU,EAAEF,QAAS,CAAC;IACrE,IAAK0D,YAAY,EAAG;MACnB;MACA,IAAK,CAAE9F,KAAK,CAAC+F,IAAI,CAAIzE,IAAI,IAAMA,IAAI,KAAKwE,YAAY,CAAC1F,EAAG,CAAC,EAAG;QAC3D0E,aAAa,CAAE,CAAE,GAAG9E,KAAK,EAAE8F,YAAY,CAAC1F,EAAE,CAAG,CAAC;MAC/C;MAEAiC,WAAW,CAAE,EAAG,CAAC;MACjBE,aAAa,CAAE,EAAG,CAAC;MAEnB;IACD;IACAL,SAAS,CAAE,IAAK,CAAC;IACjB,IAAI8D,OAAO;IACX,IAAI;MACHA,OAAO,GAAG,MAAMpB,OAAO,CAAE;QACxBxD,IAAI,EAAEgB,QAAQ;QACdjB,MAAM,EAAEmB,UAAU,GAAGA,UAAU,GAAGjC;MACnC,CAAE,CAAC;IACJ,CAAC,CAAC,OAAQ4F,KAAK,EAAG;MACjBvB,iBAAiB,CAAEuB,KAAK,CAACC,OAAO,EAAE;QACjCC,IAAI,EAAE;MACP,CAAE,CAAC;MACH;IACD;IACA,MAAMC,WAAW,GAChBtE,IAAI,KAAK,UAAU,GAAG,IAAAuE,QAAE,EAAE,UAAW,CAAC,GAAG,IAAAA,QAAE,EAAE,MAAO,CAAC;IACtD,MAAMC,gBAAgB,GAAG,IAAAC,aAAO,GAC/B;IACA,IAAAC,QAAE,EAAE,UAAU,EAAE,MAAO,CAAC,GAAAZ,qBAAA,GACxBxC,QAAQ,EAAEqD,MAAM,EAAEC,aAAa,cAAAd,qBAAA,cAAAA,qBAAA,GAAIQ,WACpC,CAAC;IACD,IAAArD,WAAK,EAAEuD,gBAAgB,EAAE,WAAY,CAAC;IACtCpE,SAAS,CAAE,KAAM,CAAC;IAClBG,WAAW,CAAE,EAAG,CAAC;IACjBE,aAAa,CAAE,EAAG,CAAC;IACnBuC,aAAa,CAAE,CAAE,GAAG9E,KAAK,EAAEgG,OAAO,CAAC5F,EAAE,CAAG,CAAC;EAC1C,CAAC;EAED,MAAMuG,SAAS,GAAKrB,KAAK,IAAM;IAC9B,MAAMsB,oBAAoB,GAAGrC,kBAAkB,CAC7ChE,GAAG,CAAEkB,gBAAgB,CAAE6D,KAAM,CAAE,CAAC,CAChC9E,MAAM,CAAIc,IAAI,IAAMA,IAAK,CAAC;IAC5B,MAAMuF,cAAc,GAAK9G,SAAS,IAAM;MACvC,IAAI+G,KAAK,GAAG,CAAC;MACb,KAAM,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGhH,SAAS,CAACW,MAAM,EAAEqG,CAAC,EAAE,EAAG;QAC5CD,KAAK,EAAE;QACP,IAAKzG,SAAS,KAAKN,SAAS,CAAEgH,CAAC,CAAE,CAACzG,QAAQ,EAAG;UAC5CwG,KAAK,IAAID,cAAc,CAAE9G,SAAS,CAAEgH,CAAC,CAAE,CAACzG,QAAS,CAAC;QACnD;MACD;MACA,OAAOwG,KAAK;IACb,CAAC;IAEDpE,cAAc,CAAE4C,KAAM,CAAC;IACvB1C,oBAAoB,CAAEgE,oBAAqB,CAAC;IAE5C,MAAMI,WAAW,GAAGH,cAAc,CAAED,oBAAqB,CAAC;IAC1D,MAAMK,mBAAmB,GAAG,IAAAV,aAAO,GAClC;IACA,IAAAW,QAAE,EAAE,kBAAkB,EAAE,mBAAmB,EAAEF,WAAY,CAAC,EAC1DA,WACD,CAAC;IAEDnE,cAAc,CAAEoE,mBAAmB,EAAE,WAAY,CAAC;EACnD,CAAC;EAED,MAAME,WAAW,GAAKC,aAAa,IAAM;IACxC,OAAOA,aAAa,CAAC7G,GAAG,CAAIe,IAAI,IAAM;MACrC,oBACC,IAAAjC,WAAA,CAAAgI,IAAA;QAECC,SAAS,EAAC,mDAAmD;QAAAhH,QAAA,gBAE7D,IAAAjB,WAAA,CAAAkI,GAAA,EAAC1I,WAAA,CAAA2I,eAAe;UACfC,uBAAuB;UACvBC,OAAO,EAAG1H,KAAK,CAACG,OAAO,CAAEmB,IAAI,CAAClB,EAAG,CAAC,KAAK,CAAC,CAAG;UAC3C4E,QAAQ,EAAGA,CAAA,KAAM;YAChB,MAAMC,MAAM,GAAG1D,QAAQ,CAAED,IAAI,CAAClB,EAAE,EAAE,EAAG,CAAC;YACtC4E,QAAQ,CAAEC,MAAO,CAAC;UACnB,CAAG;UACH0C,KAAK,EAAG,IAAAC,4BAAc,EAAEtG,IAAI,CAACF,IAAK;QAAG,CACrC,CAAC,EACA,CAAC,CAAEE,IAAI,CAAChB,QAAQ,CAACI,MAAM,iBACxB,IAAArB,WAAA,CAAAkI,GAAA;UAAKD,SAAS,EAAC,uDAAuD;UAAAhH,QAAA,EACnE6G,WAAW,CAAE7F,IAAI,CAAChB,QAAS;QAAC,CAC1B,CACL;MAAA,GAhBKgB,IAAI,CAAClB,EAiBP,CAAC;IAER,CAAE,CAAC;EACJ,CAAC;EAED,MAAMyH,iBAAiB,GAAGA,CACzBC,aAAa,EACbC,kBAAkB,EAClBC,qBAAqB;IAAA,IAAAC,qBAAA;IAAA,QAAAA,qBAAA,GAErB7E,QAAQ,EAAEqD,MAAM,GAAIqB,aAAa,CAAE,cAAAG,qBAAA,cAAAA,qBAAA,GACjCnG,IAAI,KAAK,UAAU,GAAGiG,kBAAkB,GAAGC,qBAAqB;EAAA,CAAE;EAErE,MAAME,kBAAkB,GAAGL,iBAAiB,CAC3C,cAAc,EACd,IAAAxB,QAAE,EAAE,kBAAmB,CAAC,EACxB,IAAAA,QAAE,EAAE,cAAe,CACpB,CAAC;EACD,MAAM8B,YAAY,GAAGN,iBAAiB,CACrC,eAAe,EACf,IAAAxB,QAAE,EAAE,kBAAmB,CAAC,EACxB,IAAAA,QAAE,EAAE,cAAe,CACpB,CAAC;EACD,MAAM+B,iBAAiB,GAAGP,iBAAiB,CAC1C,aAAa,EACb,IAAAxB,QAAE,EAAE,iBAAkB,CAAC,EACvB,IAAAA,QAAE,EAAE,aAAc,CACnB,CAAC;EACD,MAAMgC,cAAc,GAAI,KAAKD,iBAAmB,IAAG;EACnD,MAAME,kBAAkB,GAAGJ,kBAAkB;EAC7C,MAAMK,WAAW,IAAAxG,qBAAA,GAAGqB,QAAQ,EAAEqD,MAAM,EAAE+B,YAAY,cAAAzG,qBAAA,cAAAA,qBAAA,GAAI,IAAAsE,QAAE,EAAE,cAAe,CAAC;EAC1E,MAAMoC,UAAU,IAAAzG,cAAA,GAAGoB,QAAQ,EAAEhC,IAAI,cAAAY,cAAA,cAAAA,cAAA,GAAI,IAAAqE,QAAE,EAAE,OAAQ,CAAC;EAClD,MAAMqC,UAAU,GAAGvF,cAAc,CAACzC,MAAM,IAAId,0BAA0B;EAEtE,oBACC,IAAAP,WAAA,CAAAgI,IAAA,EAACxI,WAAA,CAAA8J,IAAI;IAACC,SAAS,EAAC,QAAQ;IAACC,GAAG,EAAC,GAAG;IAAAvI,QAAA,GAC7BoI,UAAU,iBACX,IAAArJ,WAAA,CAAAkI,GAAA,EAAC1I,WAAA,CAAAiK,aAAa;MACbC,qBAAqB;MACrBtB,uBAAuB;MACvBE,KAAK,EAAGY,WAAa;MACrBjD,KAAK,EAAG5D,WAAa;MACrBsD,QAAQ,EAAG2B;IAAW,CACtB,CACD,eACD,IAAAtH,WAAA,CAAAkI,GAAA;MACCD,SAAS,EAAC,iDAAiD;MAC3D0B,QAAQ,EAAC,GAAG;MACZC,IAAI,EAAC,OAAO;MACZ,cAAaR,UAAY;MAAAnI,QAAA,EAEvB6G,WAAW,CACZ,EAAE,KAAKzF,WAAW,GAAGiB,iBAAiB,GAAG4B,kBAC1C;IAAC,CACG,CAAC,EACJ,CAAErB,OAAO,IAAIF,eAAe,iBAC7B,IAAA3D,WAAA,CAAAkI,GAAA,EAAC1I,WAAA,CAAAqK,QAAQ;MAAA5I,QAAA,eACR,IAAAjB,WAAA,CAAAkI,GAAA,EAAC1I,WAAA,CAAAsK,MAAM;QACNJ,qBAAqB;QACrBK,OAAO,EAAG3D,YAAc;QACxB6B,SAAS,EAAC,gDAAgD;QAC1D,iBAAgB9E,QAAU;QAC1B6G,OAAO,EAAC,MAAM;QAAA/I,QAAA,EAEZ4H;MAAkB,CACb;IAAC,CACA,CACV,EACC1F,QAAQ,iBACT,IAAAnD,WAAA,CAAAkI,GAAA;MAAM+B,QAAQ,EAAG5D,SAAW;MAAApF,QAAA,eAC3B,IAAAjB,WAAA,CAAAgI,IAAA,EAACxI,WAAA,CAAA8J,IAAI;QAACC,SAAS,EAAC,QAAQ;QAACC,GAAG,EAAC,GAAG;QAAAvI,QAAA,gBAC/B,IAAAjB,WAAA,CAAAkI,GAAA,EAAC1I,WAAA,CAAA0K,WAAW;UACXR,qBAAqB;UACrBtB,uBAAuB;UACvBH,SAAS,EAAC,kDAAkD;UAC5DK,KAAK,EAAGQ,YAAc;UACtB7C,KAAK,EAAGlD,QAAU;UAClB4C,QAAQ,EAAGK,gBAAkB;UAC7BmE,QAAQ;QAAA,CACR,CAAC,EACA,CAAC,CAAErG,cAAc,CAACzC,MAAM,iBACzB,IAAArB,WAAA,CAAAkI,GAAA,EAAC1I,WAAA,CAAA4K,UAAU;UACVV,qBAAqB;UACrBtB,uBAAuB;UACvBE,KAAK,EAAGS,iBAAmB;UAC3BsB,aAAa,EAAGrB,cAAgB;UAChCrD,QAAQ,EAAGO,kBAAoB;UAC/BoE,UAAU,EAAGrH,UAAY;UACzBsH,IAAI,EAAGrF;QAAoB,CAC3B,CACD,eACD,IAAAlF,WAAA,CAAAkI,GAAA,EAAC1I,WAAA,CAAAqK,QAAQ;UAAA5I,QAAA,eACR,IAAAjB,WAAA,CAAAkI,GAAA,EAAC1I,WAAA,CAAAsK,MAAM;YACNJ,qBAAqB;YACrBM,OAAO,EAAC,WAAW;YACnBlD,IAAI,EAAC,QAAQ;YACbmB,SAAS,EAAC,mDAAmD;YAAAhH,QAAA,EAE3DgI;UAAkB,CACb;QAAC,CACA,CAAC;MAAA,CACN;IAAC,CACF,CACN;EAAA,CACI,CAAC;AAET;AAAC,IAAAuB,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEc,IAAAC,uBAAW,EAAE,yBAA0B,CAAC,CACtDnI,wBACD,CAAC","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_i18n","require","_element","_notices","_components","_data","_compose","_coreData","_a11y","_htmlEntities","_terms","_store","_jsxRuntime","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","jsxs","className","jsx","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","SearchControl","__next40pxDefaultSize","tabIndex","role","FlexItem","Button","onClick","variant","onSubmit","TextControl","required","TreeSelect","noOptionLabel","selectedId","tree","_default","exports","default","withFilters"],"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\tSearchControl,\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 {Element} 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: term 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<SearchControl\n\t\t\t\t\t__next40pxDefaultSize\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\t__next40pxDefaultSize\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__next40pxDefaultSize\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__next40pxDefaultSize\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\t__next40pxDefaultSize\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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","ignoreList":[]}
|
|
@@ -99,10 +99,10 @@ function PostURLToggle({
|
|
|
99
99
|
size: "compact",
|
|
100
100
|
className: "editor-post-url__panel-toggle",
|
|
101
101
|
variant: "tertiary",
|
|
102
|
-
"aria-expanded": isOpen
|
|
102
|
+
"aria-expanded": isOpen,
|
|
103
|
+
"aria-label":
|
|
103
104
|
// translators: %s: Current post link.
|
|
104
|
-
,
|
|
105
|
-
"aria-label": (0, _i18n.sprintf)((0, _i18n.__)('Change link: %s'), decodedSlug),
|
|
105
|
+
(0, _i18n.sprintf)((0, _i18n.__)('Change link: %s'), decodedSlug),
|
|
106
106
|
onClick: onClick,
|
|
107
107
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.__experimentalTruncate, {
|
|
108
108
|
numberOfLines: 1,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_element","require","_data","_components","_i18n","_url","_coreData","_check","_interopRequireDefault","_index","_postPanelRow","_store","_jsxRuntime","PostURLPanel","popoverAnchor","setPopoverAnchor","useState","popoverProps","useMemo","anchor","placement","offset","shift","jsx","default","children","label","__","ref","Dropdown","className","contentClassName","focusOnMount","renderToggle","isOpen","onToggle","PostURLToggle","onClick","renderContent","onClose","slug","isFrontPage","postLink","useSelect","select","getCurrentPostId","getCurrentPost","editorStore","getEditedEntityRecord","canUser","coreStore","siteSettings","kind","name","undefined","_id","getEditedPostSlug","page_on_front","link","decodedSlug","safeDecodeURIComponent","Button","size","variant","sprintf","__experimentalTruncate","numberOfLines"],"sources":["@wordpress/editor/src/components/post-url/panel.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useMemo, useState } from '@wordpress/element';\nimport { useSelect } from '@wordpress/data';\nimport {\n\tDropdown,\n\tButton,\n\t__experimentalTruncate as Truncate,\n} from '@wordpress/components';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { safeDecodeURIComponent } from '@wordpress/url';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport PostURLCheck from './check';\nimport PostURL from './index';\nimport PostPanelRow from '../post-panel-row';\nimport { store as editorStore } from '../../store';\n\n/**\n * Renders the `PostURLPanel` component.\n *\n * @return {JSX.Element} The rendered PostURLPanel component.\n */\nexport default function PostURLPanel() {\n\t// Use internal state instead of a ref to make sure that the component\n\t// re-renders when the popover's anchor updates.\n\tconst [ popoverAnchor, setPopoverAnchor ] = useState( null );\n\t// Memoize popoverProps to avoid returning a new object every time.\n\tconst popoverProps = useMemo(\n\t\t() => ( {\n\t\t\t// Anchor the popover to the middle of the entire row so that it doesn't\n\t\t\t// move around when the label changes.\n\t\t\tanchor: popoverAnchor,\n\t\t\tplacement: 'left-start',\n\t\t\toffset: 36,\n\t\t\tshift: true,\n\t\t} ),\n\t\t[ popoverAnchor ]\n\t);\n\n\treturn (\n\t\t<PostURLCheck>\n\t\t\t<PostPanelRow label={ __( 'Link' ) } ref={ setPopoverAnchor }>\n\t\t\t\t<Dropdown\n\t\t\t\t\tpopoverProps={ popoverProps }\n\t\t\t\t\tclassName=\"editor-post-url__panel-dropdown\"\n\t\t\t\t\tcontentClassName=\"editor-post-url__panel-dialog\"\n\t\t\t\t\tfocusOnMount\n\t\t\t\t\trenderToggle={ ( { isOpen, onToggle } ) => (\n\t\t\t\t\t\t<PostURLToggle isOpen={ isOpen } onClick={ onToggle } />\n\t\t\t\t\t) }\n\t\t\t\t\trenderContent={ ( { onClose } ) => (\n\t\t\t\t\t\t<PostURL onClose={ onClose } />\n\t\t\t\t\t) }\n\t\t\t\t/>\n\t\t\t</PostPanelRow>\n\t\t</PostURLCheck>\n\t);\n}\n\nfunction PostURLToggle( { isOpen, onClick } ) {\n\tconst { slug, isFrontPage, postLink } = useSelect( ( select ) => {\n\t\tconst { getCurrentPostId, getCurrentPost } = select( editorStore );\n\t\tconst { getEditedEntityRecord, canUser } = select( coreStore );\n\t\tconst siteSettings = canUser( 'read', {\n\t\t\tkind: 'root',\n\t\t\tname: 'site',\n\t\t} )\n\t\t\t? getEditedEntityRecord( 'root', 'site' )\n\t\t\t: undefined;\n\t\tconst _id = getCurrentPostId();\n\t\treturn {\n\t\t\tslug: select( editorStore ).getEditedPostSlug(),\n\t\t\tisFrontPage: siteSettings?.page_on_front === _id,\n\t\t\tpostLink: getCurrentPost()?.link,\n\t\t};\n\t}, [] );\n\tconst decodedSlug = safeDecodeURIComponent( slug );\n\treturn (\n\t\t<Button\n\t\t\tsize=\"compact\"\n\t\t\tclassName=\"editor-post-url__panel-toggle\"\n\t\t\tvariant=\"tertiary\"\n\t\t\taria-expanded={ isOpen }\n\t\t\t// translators: %s: Current post link.\n\t\t\
|
|
1
|
+
{"version":3,"names":["_element","require","_data","_components","_i18n","_url","_coreData","_check","_interopRequireDefault","_index","_postPanelRow","_store","_jsxRuntime","PostURLPanel","popoverAnchor","setPopoverAnchor","useState","popoverProps","useMemo","anchor","placement","offset","shift","jsx","default","children","label","__","ref","Dropdown","className","contentClassName","focusOnMount","renderToggle","isOpen","onToggle","PostURLToggle","onClick","renderContent","onClose","slug","isFrontPage","postLink","useSelect","select","getCurrentPostId","getCurrentPost","editorStore","getEditedEntityRecord","canUser","coreStore","siteSettings","kind","name","undefined","_id","getEditedPostSlug","page_on_front","link","decodedSlug","safeDecodeURIComponent","Button","size","variant","sprintf","__experimentalTruncate","numberOfLines"],"sources":["@wordpress/editor/src/components/post-url/panel.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useMemo, useState } from '@wordpress/element';\nimport { useSelect } from '@wordpress/data';\nimport {\n\tDropdown,\n\tButton,\n\t__experimentalTruncate as Truncate,\n} from '@wordpress/components';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { safeDecodeURIComponent } from '@wordpress/url';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport PostURLCheck from './check';\nimport PostURL from './index';\nimport PostPanelRow from '../post-panel-row';\nimport { store as editorStore } from '../../store';\n\n/**\n * Renders the `PostURLPanel` component.\n *\n * @return {JSX.Element} The rendered PostURLPanel component.\n */\nexport default function PostURLPanel() {\n\t// Use internal state instead of a ref to make sure that the component\n\t// re-renders when the popover's anchor updates.\n\tconst [ popoverAnchor, setPopoverAnchor ] = useState( null );\n\t// Memoize popoverProps to avoid returning a new object every time.\n\tconst popoverProps = useMemo(\n\t\t() => ( {\n\t\t\t// Anchor the popover to the middle of the entire row so that it doesn't\n\t\t\t// move around when the label changes.\n\t\t\tanchor: popoverAnchor,\n\t\t\tplacement: 'left-start',\n\t\t\toffset: 36,\n\t\t\tshift: true,\n\t\t} ),\n\t\t[ popoverAnchor ]\n\t);\n\n\treturn (\n\t\t<PostURLCheck>\n\t\t\t<PostPanelRow label={ __( 'Link' ) } ref={ setPopoverAnchor }>\n\t\t\t\t<Dropdown\n\t\t\t\t\tpopoverProps={ popoverProps }\n\t\t\t\t\tclassName=\"editor-post-url__panel-dropdown\"\n\t\t\t\t\tcontentClassName=\"editor-post-url__panel-dialog\"\n\t\t\t\t\tfocusOnMount\n\t\t\t\t\trenderToggle={ ( { isOpen, onToggle } ) => (\n\t\t\t\t\t\t<PostURLToggle isOpen={ isOpen } onClick={ onToggle } />\n\t\t\t\t\t) }\n\t\t\t\t\trenderContent={ ( { onClose } ) => (\n\t\t\t\t\t\t<PostURL onClose={ onClose } />\n\t\t\t\t\t) }\n\t\t\t\t/>\n\t\t\t</PostPanelRow>\n\t\t</PostURLCheck>\n\t);\n}\n\nfunction PostURLToggle( { isOpen, onClick } ) {\n\tconst { slug, isFrontPage, postLink } = useSelect( ( select ) => {\n\t\tconst { getCurrentPostId, getCurrentPost } = select( editorStore );\n\t\tconst { getEditedEntityRecord, canUser } = select( coreStore );\n\t\tconst siteSettings = canUser( 'read', {\n\t\t\tkind: 'root',\n\t\t\tname: 'site',\n\t\t} )\n\t\t\t? getEditedEntityRecord( 'root', 'site' )\n\t\t\t: undefined;\n\t\tconst _id = getCurrentPostId();\n\t\treturn {\n\t\t\tslug: select( editorStore ).getEditedPostSlug(),\n\t\t\tisFrontPage: siteSettings?.page_on_front === _id,\n\t\t\tpostLink: getCurrentPost()?.link,\n\t\t};\n\t}, [] );\n\tconst decodedSlug = safeDecodeURIComponent( slug );\n\treturn (\n\t\t<Button\n\t\t\tsize=\"compact\"\n\t\t\tclassName=\"editor-post-url__panel-toggle\"\n\t\t\tvariant=\"tertiary\"\n\t\t\taria-expanded={ isOpen }\n\t\t\taria-label={\n\t\t\t\t// translators: %s: Current post link.\n\t\t\t\tsprintf( __( 'Change link: %s' ), decodedSlug )\n\t\t\t}\n\t\t\tonClick={ onClick }\n\t\t>\n\t\t\t<Truncate numberOfLines={ 1 }>\n\t\t\t\t{ isFrontPage ? postLink : `/${ decodedSlug }` }\n\t\t\t</Truncate>\n\t\t</Button>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -31,8 +31,9 @@ const SidebarHeader = (_, ref) => {
|
|
|
31
31
|
getPostTypeLabel
|
|
32
32
|
} = select(_store.store);
|
|
33
33
|
return {
|
|
34
|
+
documentLabel:
|
|
34
35
|
// translators: Default label for the Document sidebar tab, not selected.
|
|
35
|
-
|
|
36
|
+
getPostTypeLabel() || (0, _i18n._x)('Document', 'noun, sidebar')
|
|
36
37
|
};
|
|
37
38
|
}, []);
|
|
38
39
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(Tabs.TabList, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_components","require","_i18n","_data","_element","_store","_lockUnlock","_constants","_jsxRuntime","Tabs","unlock","componentsPrivateApis","SidebarHeader","_","ref","documentLabel","useSelect","select","getPostTypeLabel","editorStore","_x","jsxs","TabList","children","jsx","Tab","tabId","sidebars","document","block","__","_default","exports","default","forwardRef"],"sources":["@wordpress/editor/src/components/sidebar/header.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { privateApis as componentsPrivateApis } from '@wordpress/components';\nimport { __, _x } from '@wordpress/i18n';\nimport { useSelect } from '@wordpress/data';\nimport { forwardRef } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { store as editorStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\nimport { sidebars } from './constants';\n\nconst { Tabs } = unlock( componentsPrivateApis );\n\nconst SidebarHeader = ( _, ref ) => {\n\tconst { documentLabel } = useSelect( ( select ) => {\n\t\tconst { getPostTypeLabel } = select( editorStore );\n\n\t\treturn {\n\t\t\t// translators: Default label for the Document sidebar tab, not selected.\n\t\t\
|
|
1
|
+
{"version":3,"names":["_components","require","_i18n","_data","_element","_store","_lockUnlock","_constants","_jsxRuntime","Tabs","unlock","componentsPrivateApis","SidebarHeader","_","ref","documentLabel","useSelect","select","getPostTypeLabel","editorStore","_x","jsxs","TabList","children","jsx","Tab","tabId","sidebars","document","block","__","_default","exports","default","forwardRef"],"sources":["@wordpress/editor/src/components/sidebar/header.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { privateApis as componentsPrivateApis } from '@wordpress/components';\nimport { __, _x } from '@wordpress/i18n';\nimport { useSelect } from '@wordpress/data';\nimport { forwardRef } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { store as editorStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\nimport { sidebars } from './constants';\n\nconst { Tabs } = unlock( componentsPrivateApis );\n\nconst SidebarHeader = ( _, ref ) => {\n\tconst { documentLabel } = useSelect( ( select ) => {\n\t\tconst { getPostTypeLabel } = select( editorStore );\n\n\t\treturn {\n\t\t\tdocumentLabel:\n\t\t\t\t// translators: Default label for the Document sidebar tab, not selected.\n\t\t\t\tgetPostTypeLabel() || _x( 'Document', 'noun, sidebar' ),\n\t\t};\n\t}, [] );\n\n\treturn (\n\t\t<Tabs.TabList ref={ ref }>\n\t\t\t<Tabs.Tab\n\t\t\t\ttabId={ sidebars.document }\n\t\t\t\t// Used for focus management in the SettingsSidebar component.\n\t\t\t\tdata-tab-id={ sidebars.document }\n\t\t\t>\n\t\t\t\t{ documentLabel }\n\t\t\t</Tabs.Tab>\n\t\t\t<Tabs.Tab\n\t\t\t\ttabId={ sidebars.block }\n\t\t\t\t// Used for focus management in the SettingsSidebar component.\n\t\t\t\tdata-tab-id={ sidebars.block }\n\t\t\t>\n\t\t\t\t{ /* translators: Text label for the Block Settings Sidebar tab. */ }\n\t\t\t\t{ __( 'Block' ) }\n\t\t\t</Tabs.Tab>\n\t\t</Tabs.TabList>\n\t);\n};\n\nexport default forwardRef( SidebarHeader );\n"],"mappings":";;;;;;AAGA,IAAAA,WAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAF,OAAA;AACA,IAAAG,QAAA,GAAAH,OAAA;AAKA,IAAAI,MAAA,GAAAJ,OAAA;AACA,IAAAK,WAAA,GAAAL,OAAA;AACA,IAAAM,UAAA,GAAAN,OAAA;AAAuC,IAAAO,WAAA,GAAAP,OAAA;AAbvC;AACA;AACA;;AAMA;AACA;AACA;;AAKA,MAAM;EAAEQ;AAAK,CAAC,GAAG,IAAAC,kBAAM,EAAEC,uBAAsB,CAAC;AAEhD,MAAMC,aAAa,GAAGA,CAAEC,CAAC,EAAEC,GAAG,KAAM;EACnC,MAAM;IAAEC;EAAc,CAAC,GAAG,IAAAC,eAAS,EAAIC,MAAM,IAAM;IAClD,MAAM;MAAEC;IAAiB,CAAC,GAAGD,MAAM,CAAEE,YAAY,CAAC;IAElD,OAAO;MACNJ,aAAa;MACZ;MACAG,gBAAgB,CAAC,CAAC,IAAI,IAAAE,QAAE,EAAE,UAAU,EAAE,eAAgB;IACxD,CAAC;EACF,CAAC,EAAE,EAAG,CAAC;EAEP,oBACC,IAAAZ,WAAA,CAAAa,IAAA,EAACZ,IAAI,CAACa,OAAO;IAACR,GAAG,EAAGA,GAAK;IAAAS,QAAA,gBACxB,IAAAf,WAAA,CAAAgB,GAAA,EAACf,IAAI,CAACgB,GAAG;MACRC,KAAK,EAAGC,mBAAQ,CAACC;MACjB;MAAA;MACA,eAAcD,mBAAQ,CAACC,QAAU;MAAAL,QAAA,EAE/BR;IAAa,CACN,CAAC,eACX,IAAAP,WAAA,CAAAgB,GAAA,EAACf,IAAI,CAACgB,GAAG;MACRC,KAAK,EAAGC,mBAAQ,CAACE;MACjB;MAAA;MACA,eAAcF,mBAAQ,CAACE,KAAO;MAAAN,QAAA,EAG5B,IAAAO,QAAE,EAAE,OAAQ;IAAC,CACN,CAAC;EAAA,CACE,CAAC;AAEjB,CAAC;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEa,IAAAC,mBAAU,EAAEtB,aAAc,CAAC","ignoreList":[]}
|
|
@@ -88,9 +88,9 @@ const SidebarContent = ({
|
|
|
88
88
|
// see https://github.com/WordPress/gutenberg/pull/55360#pullrequestreview-1737671049
|
|
89
89
|
,
|
|
90
90
|
className: "editor-sidebar__panel",
|
|
91
|
-
headerClassName: "editor-sidebar__panel-tabs"
|
|
92
|
-
/* translators: button label text should, if possible, be under 16 characters.
|
|
93
|
-
|
|
91
|
+
headerClassName: "editor-sidebar__panel-tabs",
|
|
92
|
+
title: /* translators: button label text should, if possible, be under 16 characters. */
|
|
93
|
+
(0, _i18n._x)('Settings', 'sidebar button label'),
|
|
94
94
|
toggleShortcut: keyboardShortcut,
|
|
95
95
|
icon: (0, _i18n.isRTL)() ? _icons.drawerLeft : _icons.drawerRight,
|
|
96
96
|
isActiveByDefault: SIDEBAR_ACTIVE_BY_DEFAULT,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_blockEditor","require","_data","_element","_i18n","_icons","_keyboardShortcuts","_components","_interface","_patternOverridesPanel","_interopRequireDefault","_pluginDocumentSettingPanel","_pluginSidebar","_postSummary","_panel","_postTransformPanel","_header","_templateContentPanel","_templatePartContentPanel","_useAutoSwitchEditorSidebars","_constants","_lockUnlock","_store","_constants2","_jsxRuntime","Tabs","unlock","componentsPrivateApis","SIDEBAR_ACTIVE_BY_DEFAULT","Platform","select","web","native","SidebarContent","tabName","keyboardShortcut","onActionPerformed","extraPanels","tabListRef","useRef","tabsContextValue","useContext","Context","useEffect","tabsElements","Array","from","current","querySelectorAll","selectedTabElement","find","element","getAttribute","activeElement","ownerDocument","tabsHasFocus","some","id","focus","jsx","default","identifier","header","Provider","value","children","ref","closeLabel","__","className","headerClassName","title","toggleShortcut","icon","isRTL","drawerLeft","drawerRight","isActiveByDefault","jsxs","TabPanel","tabId","sidebars","document","focusable","Slot","block","BlockInspector","Sidebar","useAutoSwitchEditorSidebars","showSummary","useSelect","shortcut","keyboardShortcutsStore","getShortcutRepresentation","sidebar","interfaceStore","getActiveComplementaryArea","_isEditorSidebarOpened","includes","_tabName","blockEditorStore","getBlockSelectionStart","TEMPLATE_POST_TYPE","TEMPLATE_PART_POST_TYPE","NAVIGATION_POST_TYPE","editorStore","getCurrentPostType","enableComplementaryArea","useDispatch","onTabSelect","useCallback","newSelectedTabId","selectedTabId","onSelect","selectOnMove","_default","exports"],"sources":["@wordpress/editor/src/components/sidebar/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tBlockInspector,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport {\n\tPlatform,\n\tuseCallback,\n\tuseContext,\n\tuseEffect,\n\tuseRef,\n} from '@wordpress/element';\nimport { isRTL, __ } from '@wordpress/i18n';\nimport { drawerLeft, drawerRight } from '@wordpress/icons';\nimport { store as keyboardShortcutsStore } from '@wordpress/keyboard-shortcuts';\nimport { privateApis as componentsPrivateApis } from '@wordpress/components';\nimport { store as interfaceStore } from '@wordpress/interface';\n\n/**\n * Internal dependencies\n */\nimport PatternOverridesPanel from '../pattern-overrides-panel';\nimport PluginDocumentSettingPanel from '../plugin-document-setting-panel';\nimport PluginSidebar from '../plugin-sidebar';\nimport PostSummary from './post-summary';\nimport PostTaxonomiesPanel from '../post-taxonomies/panel';\nimport PostTransformPanel from '../post-transform-panel';\nimport SidebarHeader from './header';\nimport TemplateContentPanel from '../template-content-panel';\nimport TemplatePartContentPanel from '../template-part-content-panel';\nimport useAutoSwitchEditorSidebars from '../provider/use-auto-switch-editor-sidebars';\nimport { sidebars } from './constants';\nimport { unlock } from '../../lock-unlock';\nimport { store as editorStore } from '../../store';\nimport {\n\tNAVIGATION_POST_TYPE,\n\tTEMPLATE_PART_POST_TYPE,\n\tTEMPLATE_POST_TYPE,\n} from '../../store/constants';\n\nconst { Tabs } = unlock( componentsPrivateApis );\n\nconst SIDEBAR_ACTIVE_BY_DEFAULT = Platform.select( {\n\tweb: true,\n\tnative: false,\n} );\n\nconst SidebarContent = ( {\n\ttabName,\n\tkeyboardShortcut,\n\tonActionPerformed,\n\textraPanels,\n} ) => {\n\tconst tabListRef = useRef( null );\n\t// Because `PluginSidebar` renders a `ComplementaryArea`, we\n\t// need to forward the `Tabs` context so it can be passed through the\n\t// underlying slot/fill.\n\tconst tabsContextValue = useContext( Tabs.Context );\n\n\t// This effect addresses a race condition caused by tabbing from the last\n\t// block in the editor into the settings sidebar. Without this effect, the\n\t// selected tab and browser focus can become separated in an unexpected way\n\t// (e.g the \"block\" tab is focused, but the \"post\" tab is selected).\n\tuseEffect( () => {\n\t\tconst tabsElements = Array.from(\n\t\t\ttabListRef.current?.querySelectorAll( '[role=\"tab\"]' ) || []\n\t\t);\n\t\tconst selectedTabElement = tabsElements.find(\n\t\t\t// We are purposefully using a custom `data-tab-id` attribute here\n\t\t\t// because we don't want rely on any assumptions about `Tabs`\n\t\t\t// component internals.\n\t\t\t( element ) => element.getAttribute( 'data-tab-id' ) === tabName\n\t\t);\n\t\tconst activeElement = selectedTabElement?.ownerDocument.activeElement;\n\t\tconst tabsHasFocus = tabsElements.some( ( element ) => {\n\t\t\treturn activeElement && activeElement.id === element.id;\n\t\t} );\n\t\tif (\n\t\t\ttabsHasFocus &&\n\t\t\tselectedTabElement &&\n\t\t\tselectedTabElement.id !== activeElement?.id\n\t\t) {\n\t\t\tselectedTabElement?.focus();\n\t\t}\n\t}, [ tabName ] );\n\n\treturn (\n\t\t<PluginSidebar\n\t\t\tidentifier={ tabName }\n\t\t\theader={\n\t\t\t\t<Tabs.Context.Provider value={ tabsContextValue }>\n\t\t\t\t\t<SidebarHeader ref={ tabListRef } />\n\t\t\t\t</Tabs.Context.Provider>\n\t\t\t}\n\t\t\tcloseLabel={ __( 'Close Settings' ) }\n\t\t\t// This classname is added so we can apply a corrective negative\n\t\t\t// margin to the panel.\n\t\t\t// see https://github.com/WordPress/gutenberg/pull/55360#pullrequestreview-1737671049\n\t\t\tclassName=\"editor-sidebar__panel\"\n\t\t\theaderClassName=\"editor-sidebar__panel-tabs\"\n\t\t\t/* translators: button label text should, if possible, be under 16 characters. */\n\t\t\ttitle={ __( 'Settings' ) }\n\t\t\ttoggleShortcut={ keyboardShortcut }\n\t\t\ticon={ isRTL() ? drawerLeft : drawerRight }\n\t\t\tisActiveByDefault={ SIDEBAR_ACTIVE_BY_DEFAULT }\n\t\t>\n\t\t\t<Tabs.Context.Provider value={ tabsContextValue }>\n\t\t\t\t<Tabs.TabPanel tabId={ sidebars.document } focusable={ false }>\n\t\t\t\t\t<PostSummary onActionPerformed={ onActionPerformed } />\n\t\t\t\t\t<PluginDocumentSettingPanel.Slot />\n\t\t\t\t\t<TemplateContentPanel />\n\t\t\t\t\t<TemplatePartContentPanel />\n\t\t\t\t\t<PostTransformPanel />\n\t\t\t\t\t<PostTaxonomiesPanel />\n\t\t\t\t\t<PatternOverridesPanel />\n\t\t\t\t\t{ extraPanels }\n\t\t\t\t</Tabs.TabPanel>\n\t\t\t\t<Tabs.TabPanel tabId={ sidebars.block } focusable={ false }>\n\t\t\t\t\t<BlockInspector />\n\t\t\t\t</Tabs.TabPanel>\n\t\t\t</Tabs.Context.Provider>\n\t\t</PluginSidebar>\n\t);\n};\n\nconst Sidebar = ( { extraPanels, onActionPerformed } ) => {\n\tuseAutoSwitchEditorSidebars();\n\tconst { tabName, keyboardShortcut, showSummary } = useSelect(\n\t\t( select ) => {\n\t\t\tconst shortcut = select(\n\t\t\t\tkeyboardShortcutsStore\n\t\t\t).getShortcutRepresentation( 'core/editor/toggle-sidebar' );\n\n\t\t\tconst sidebar =\n\t\t\t\tselect( interfaceStore ).getActiveComplementaryArea( 'core' );\n\t\t\tconst _isEditorSidebarOpened = [\n\t\t\t\tsidebars.block,\n\t\t\t\tsidebars.document,\n\t\t\t].includes( sidebar );\n\t\t\tlet _tabName = sidebar;\n\t\t\tif ( ! _isEditorSidebarOpened ) {\n\t\t\t\t_tabName = !! select(\n\t\t\t\t\tblockEditorStore\n\t\t\t\t).getBlockSelectionStart()\n\t\t\t\t\t? sidebars.block\n\t\t\t\t\t: sidebars.document;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\ttabName: _tabName,\n\t\t\t\tkeyboardShortcut: shortcut,\n\t\t\t\tshowSummary: ! [\n\t\t\t\t\tTEMPLATE_POST_TYPE,\n\t\t\t\t\tTEMPLATE_PART_POST_TYPE,\n\t\t\t\t\tNAVIGATION_POST_TYPE,\n\t\t\t\t].includes( select( editorStore ).getCurrentPostType() ),\n\t\t\t};\n\t\t},\n\t\t[]\n\t);\n\n\tconst { enableComplementaryArea } = useDispatch( interfaceStore );\n\n\tconst onTabSelect = useCallback(\n\t\t( newSelectedTabId ) => {\n\t\t\tif ( !! newSelectedTabId ) {\n\t\t\t\tenableComplementaryArea( 'core', newSelectedTabId );\n\t\t\t}\n\t\t},\n\t\t[ enableComplementaryArea ]\n\t);\n\n\treturn (\n\t\t<Tabs\n\t\t\tselectedTabId={ tabName }\n\t\t\tonSelect={ onTabSelect }\n\t\t\tselectOnMove={ false }\n\t\t>\n\t\t\t<SidebarContent\n\t\t\t\ttabName={ tabName }\n\t\t\t\tkeyboardShortcut={ keyboardShortcut }\n\t\t\t\tshowSummary={ showSummary }\n\t\t\t\tonActionPerformed={ onActionPerformed }\n\t\t\t\textraPanels={ extraPanels }\n\t\t\t/>\n\t\t</Tabs>\n\t);\n};\n\nexport default Sidebar;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_blockEditor","require","_data","_element","_i18n","_icons","_keyboardShortcuts","_components","_interface","_patternOverridesPanel","_interopRequireDefault","_pluginDocumentSettingPanel","_pluginSidebar","_postSummary","_panel","_postTransformPanel","_header","_templateContentPanel","_templatePartContentPanel","_useAutoSwitchEditorSidebars","_constants","_lockUnlock","_store","_constants2","_jsxRuntime","Tabs","unlock","componentsPrivateApis","SIDEBAR_ACTIVE_BY_DEFAULT","Platform","select","web","native","SidebarContent","tabName","keyboardShortcut","onActionPerformed","extraPanels","tabListRef","useRef","tabsContextValue","useContext","Context","useEffect","tabsElements","Array","from","current","querySelectorAll","selectedTabElement","find","element","getAttribute","activeElement","ownerDocument","tabsHasFocus","some","id","focus","jsx","default","identifier","header","Provider","value","children","ref","closeLabel","__","className","headerClassName","title","_x","toggleShortcut","icon","isRTL","drawerLeft","drawerRight","isActiveByDefault","jsxs","TabPanel","tabId","sidebars","document","focusable","Slot","block","BlockInspector","Sidebar","useAutoSwitchEditorSidebars","showSummary","useSelect","shortcut","keyboardShortcutsStore","getShortcutRepresentation","sidebar","interfaceStore","getActiveComplementaryArea","_isEditorSidebarOpened","includes","_tabName","blockEditorStore","getBlockSelectionStart","TEMPLATE_POST_TYPE","TEMPLATE_PART_POST_TYPE","NAVIGATION_POST_TYPE","editorStore","getCurrentPostType","enableComplementaryArea","useDispatch","onTabSelect","useCallback","newSelectedTabId","selectedTabId","onSelect","selectOnMove","_default","exports"],"sources":["@wordpress/editor/src/components/sidebar/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tBlockInspector,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport {\n\tPlatform,\n\tuseCallback,\n\tuseContext,\n\tuseEffect,\n\tuseRef,\n} from '@wordpress/element';\nimport { isRTL, __, _x } from '@wordpress/i18n';\nimport { drawerLeft, drawerRight } from '@wordpress/icons';\nimport { store as keyboardShortcutsStore } from '@wordpress/keyboard-shortcuts';\nimport { privateApis as componentsPrivateApis } from '@wordpress/components';\nimport { store as interfaceStore } from '@wordpress/interface';\n\n/**\n * Internal dependencies\n */\nimport PatternOverridesPanel from '../pattern-overrides-panel';\nimport PluginDocumentSettingPanel from '../plugin-document-setting-panel';\nimport PluginSidebar from '../plugin-sidebar';\nimport PostSummary from './post-summary';\nimport PostTaxonomiesPanel from '../post-taxonomies/panel';\nimport PostTransformPanel from '../post-transform-panel';\nimport SidebarHeader from './header';\nimport TemplateContentPanel from '../template-content-panel';\nimport TemplatePartContentPanel from '../template-part-content-panel';\nimport useAutoSwitchEditorSidebars from '../provider/use-auto-switch-editor-sidebars';\nimport { sidebars } from './constants';\nimport { unlock } from '../../lock-unlock';\nimport { store as editorStore } from '../../store';\nimport {\n\tNAVIGATION_POST_TYPE,\n\tTEMPLATE_PART_POST_TYPE,\n\tTEMPLATE_POST_TYPE,\n} from '../../store/constants';\n\nconst { Tabs } = unlock( componentsPrivateApis );\n\nconst SIDEBAR_ACTIVE_BY_DEFAULT = Platform.select( {\n\tweb: true,\n\tnative: false,\n} );\n\nconst SidebarContent = ( {\n\ttabName,\n\tkeyboardShortcut,\n\tonActionPerformed,\n\textraPanels,\n} ) => {\n\tconst tabListRef = useRef( null );\n\t// Because `PluginSidebar` renders a `ComplementaryArea`, we\n\t// need to forward the `Tabs` context so it can be passed through the\n\t// underlying slot/fill.\n\tconst tabsContextValue = useContext( Tabs.Context );\n\n\t// This effect addresses a race condition caused by tabbing from the last\n\t// block in the editor into the settings sidebar. Without this effect, the\n\t// selected tab and browser focus can become separated in an unexpected way\n\t// (e.g the \"block\" tab is focused, but the \"post\" tab is selected).\n\tuseEffect( () => {\n\t\tconst tabsElements = Array.from(\n\t\t\ttabListRef.current?.querySelectorAll( '[role=\"tab\"]' ) || []\n\t\t);\n\t\tconst selectedTabElement = tabsElements.find(\n\t\t\t// We are purposefully using a custom `data-tab-id` attribute here\n\t\t\t// because we don't want rely on any assumptions about `Tabs`\n\t\t\t// component internals.\n\t\t\t( element ) => element.getAttribute( 'data-tab-id' ) === tabName\n\t\t);\n\t\tconst activeElement = selectedTabElement?.ownerDocument.activeElement;\n\t\tconst tabsHasFocus = tabsElements.some( ( element ) => {\n\t\t\treturn activeElement && activeElement.id === element.id;\n\t\t} );\n\t\tif (\n\t\t\ttabsHasFocus &&\n\t\t\tselectedTabElement &&\n\t\t\tselectedTabElement.id !== activeElement?.id\n\t\t) {\n\t\t\tselectedTabElement?.focus();\n\t\t}\n\t}, [ tabName ] );\n\n\treturn (\n\t\t<PluginSidebar\n\t\t\tidentifier={ tabName }\n\t\t\theader={\n\t\t\t\t<Tabs.Context.Provider value={ tabsContextValue }>\n\t\t\t\t\t<SidebarHeader ref={ tabListRef } />\n\t\t\t\t</Tabs.Context.Provider>\n\t\t\t}\n\t\t\tcloseLabel={ __( 'Close Settings' ) }\n\t\t\t// This classname is added so we can apply a corrective negative\n\t\t\t// margin to the panel.\n\t\t\t// see https://github.com/WordPress/gutenberg/pull/55360#pullrequestreview-1737671049\n\t\t\tclassName=\"editor-sidebar__panel\"\n\t\t\theaderClassName=\"editor-sidebar__panel-tabs\"\n\t\t\ttitle={\n\t\t\t\t/* translators: button label text should, if possible, be under 16 characters. */\n\t\t\t\t_x( 'Settings', 'sidebar button label' )\n\t\t\t}\n\t\t\ttoggleShortcut={ keyboardShortcut }\n\t\t\ticon={ isRTL() ? drawerLeft : drawerRight }\n\t\t\tisActiveByDefault={ SIDEBAR_ACTIVE_BY_DEFAULT }\n\t\t>\n\t\t\t<Tabs.Context.Provider value={ tabsContextValue }>\n\t\t\t\t<Tabs.TabPanel tabId={ sidebars.document } focusable={ false }>\n\t\t\t\t\t<PostSummary onActionPerformed={ onActionPerformed } />\n\t\t\t\t\t<PluginDocumentSettingPanel.Slot />\n\t\t\t\t\t<TemplateContentPanel />\n\t\t\t\t\t<TemplatePartContentPanel />\n\t\t\t\t\t<PostTransformPanel />\n\t\t\t\t\t<PostTaxonomiesPanel />\n\t\t\t\t\t<PatternOverridesPanel />\n\t\t\t\t\t{ extraPanels }\n\t\t\t\t</Tabs.TabPanel>\n\t\t\t\t<Tabs.TabPanel tabId={ sidebars.block } focusable={ false }>\n\t\t\t\t\t<BlockInspector />\n\t\t\t\t</Tabs.TabPanel>\n\t\t\t</Tabs.Context.Provider>\n\t\t</PluginSidebar>\n\t);\n};\n\nconst Sidebar = ( { extraPanels, onActionPerformed } ) => {\n\tuseAutoSwitchEditorSidebars();\n\tconst { tabName, keyboardShortcut, showSummary } = useSelect(\n\t\t( select ) => {\n\t\t\tconst shortcut = select(\n\t\t\t\tkeyboardShortcutsStore\n\t\t\t).getShortcutRepresentation( 'core/editor/toggle-sidebar' );\n\n\t\t\tconst sidebar =\n\t\t\t\tselect( interfaceStore ).getActiveComplementaryArea( 'core' );\n\t\t\tconst _isEditorSidebarOpened = [\n\t\t\t\tsidebars.block,\n\t\t\t\tsidebars.document,\n\t\t\t].includes( sidebar );\n\t\t\tlet _tabName = sidebar;\n\t\t\tif ( ! _isEditorSidebarOpened ) {\n\t\t\t\t_tabName = !! select(\n\t\t\t\t\tblockEditorStore\n\t\t\t\t).getBlockSelectionStart()\n\t\t\t\t\t? sidebars.block\n\t\t\t\t\t: sidebars.document;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\ttabName: _tabName,\n\t\t\t\tkeyboardShortcut: shortcut,\n\t\t\t\tshowSummary: ! [\n\t\t\t\t\tTEMPLATE_POST_TYPE,\n\t\t\t\t\tTEMPLATE_PART_POST_TYPE,\n\t\t\t\t\tNAVIGATION_POST_TYPE,\n\t\t\t\t].includes( select( editorStore ).getCurrentPostType() ),\n\t\t\t};\n\t\t},\n\t\t[]\n\t);\n\n\tconst { enableComplementaryArea } = useDispatch( interfaceStore );\n\n\tconst onTabSelect = useCallback(\n\t\t( newSelectedTabId ) => {\n\t\t\tif ( !! newSelectedTabId ) {\n\t\t\t\tenableComplementaryArea( 'core', newSelectedTabId );\n\t\t\t}\n\t\t},\n\t\t[ enableComplementaryArea ]\n\t);\n\n\treturn (\n\t\t<Tabs\n\t\t\tselectedTabId={ tabName }\n\t\t\tonSelect={ onTabSelect }\n\t\t\tselectOnMove={ false }\n\t\t>\n\t\t\t<SidebarContent\n\t\t\t\ttabName={ tabName }\n\t\t\t\tkeyboardShortcut={ keyboardShortcut }\n\t\t\t\tshowSummary={ showSummary }\n\t\t\t\tonActionPerformed={ onActionPerformed }\n\t\t\t\textraPanels={ extraPanels }\n\t\t\t/>\n\t\t</Tabs>\n\t);\n};\n\nexport default Sidebar;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -43,8 +43,8 @@ function TimeToRead() {
|
|
|
43
43
|
const minutesToRead = Math.round((0, _wordcount.count)(content, wordCountType) / AVERAGE_READING_RATE);
|
|
44
44
|
const minutesToReadString = minutesToRead === 0 ? (0, _element.createInterpolateElement)((0, _i18n.__)('<span>< 1</span> minute'), {
|
|
45
45
|
span: /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {})
|
|
46
|
-
}) : (0, _element.createInterpolateElement)((0, _i18n.sprintf)( /* translators: %s
|
|
47
|
-
(0, _i18n._n)('<span>%
|
|
46
|
+
}) : (0, _element.createInterpolateElement)((0, _i18n.sprintf)( /* translators: %s: the number of minutes to read the post. */
|
|
47
|
+
(0, _i18n._n)('<span>%s</span> minute', '<span>%s</span> minutes', minutesToRead), minutesToRead), {
|
|
48
48
|
span: /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {})
|
|
49
49
|
});
|
|
50
50
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_data","require","_i18n","_wordcount","_element","_store","_jsxRuntime","AVERAGE_READING_RATE","TimeToRead","content","useSelect","select","editorStore","getEditedPostAttribute","wordCountType","_x","minutesToRead","Math","round","wordCount","minutesToReadString","createInterpolateElement","__","span","jsx","sprintf","_n","className","children"],"sources":["@wordpress/editor/src/components/time-to-read/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { _x, _n, __, sprintf } from '@wordpress/i18n';\nimport { count as wordCount } from '@wordpress/wordcount';\nimport { createInterpolateElement } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { store as editorStore } from '../../store';\n\n/**\n * Average reading rate - based on average taken from\n * https://irisreading.com/average-reading-speed-in-various-languages/\n * (Characters/minute used for Chinese rather than words).\n *\n * @type {number} A rough estimate of the average reading rate across multiple languages.\n */\nconst AVERAGE_READING_RATE = 189;\n\n/**\n * Component for showing Time To Read in Content.\n *\n * @return {JSX.Element} The rendered TimeToRead component.\n */\nexport default function TimeToRead() {\n\tconst content = useSelect(\n\t\t( select ) => select( editorStore ).getEditedPostAttribute( 'content' ),\n\t\t[]\n\t);\n\n\t/*\n\t * translators: If your word count is based on single characters (e.g. East Asian characters),\n\t * enter 'characters_excluding_spaces' or 'characters_including_spaces'. Otherwise, enter 'words'.\n\t * Do not translate into your own language.\n\t */\n\tconst wordCountType = _x( 'words', 'Word count type. Do not translate!' );\n\tconst minutesToRead = Math.round(\n\t\twordCount( content, wordCountType ) / AVERAGE_READING_RATE\n\t);\n\tconst minutesToReadString =\n\t\tminutesToRead === 0\n\t\t\t? createInterpolateElement( __( '<span>< 1</span> minute' ), {\n\t\t\t\t\tspan: <span />,\n\t\t\t } )\n\t\t\t: createInterpolateElement(\n\t\t\t\t\tsprintf(\n\t\t\t\t\t\t/* translators: %s
|
|
1
|
+
{"version":3,"names":["_data","require","_i18n","_wordcount","_element","_store","_jsxRuntime","AVERAGE_READING_RATE","TimeToRead","content","useSelect","select","editorStore","getEditedPostAttribute","wordCountType","_x","minutesToRead","Math","round","wordCount","minutesToReadString","createInterpolateElement","__","span","jsx","sprintf","_n","className","children"],"sources":["@wordpress/editor/src/components/time-to-read/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { _x, _n, __, sprintf } from '@wordpress/i18n';\nimport { count as wordCount } from '@wordpress/wordcount';\nimport { createInterpolateElement } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { store as editorStore } from '../../store';\n\n/**\n * Average reading rate - based on average taken from\n * https://irisreading.com/average-reading-speed-in-various-languages/\n * (Characters/minute used for Chinese rather than words).\n *\n * @type {number} A rough estimate of the average reading rate across multiple languages.\n */\nconst AVERAGE_READING_RATE = 189;\n\n/**\n * Component for showing Time To Read in Content.\n *\n * @return {JSX.Element} The rendered TimeToRead component.\n */\nexport default function TimeToRead() {\n\tconst content = useSelect(\n\t\t( select ) => select( editorStore ).getEditedPostAttribute( 'content' ),\n\t\t[]\n\t);\n\n\t/*\n\t * translators: If your word count is based on single characters (e.g. East Asian characters),\n\t * enter 'characters_excluding_spaces' or 'characters_including_spaces'. Otherwise, enter 'words'.\n\t * Do not translate into your own language.\n\t */\n\tconst wordCountType = _x( 'words', 'Word count type. Do not translate!' );\n\tconst minutesToRead = Math.round(\n\t\twordCount( content, wordCountType ) / AVERAGE_READING_RATE\n\t);\n\tconst minutesToReadString =\n\t\tminutesToRead === 0\n\t\t\t? createInterpolateElement( __( '<span>< 1</span> minute' ), {\n\t\t\t\t\tspan: <span />,\n\t\t\t } )\n\t\t\t: createInterpolateElement(\n\t\t\t\t\tsprintf(\n\t\t\t\t\t\t/* translators: %s: the number of minutes to read the post. */\n\t\t\t\t\t\t_n(\n\t\t\t\t\t\t\t'<span>%s</span> minute',\n\t\t\t\t\t\t\t'<span>%s</span> minutes',\n\t\t\t\t\t\t\tminutesToRead\n\t\t\t\t\t\t),\n\t\t\t\t\t\tminutesToRead\n\t\t\t\t\t),\n\t\t\t\t\t{\n\t\t\t\t\t\tspan: <span />,\n\t\t\t\t\t}\n\t\t\t );\n\n\treturn <span className=\"time-to-read\">{ minutesToReadString }</span>;\n}\n"],"mappings":";;;;;;AAGA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAD,OAAA;AACA,IAAAE,UAAA,GAAAF,OAAA;AACA,IAAAG,QAAA,GAAAH,OAAA;AAKA,IAAAI,MAAA,GAAAJ,OAAA;AAAmD,IAAAK,WAAA,GAAAL,OAAA;AAXnD;AACA;AACA;;AAMA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,GACA,MAAMM,oBAAoB,GAAG,GAAG;;AAEhC;AACA;AACA;AACA;AACA;AACe,SAASC,UAAUA,CAAA,EAAG;EACpC,MAAMC,OAAO,GAAG,IAAAC,eAAS,EACtBC,MAAM,IAAMA,MAAM,CAAEC,YAAY,CAAC,CAACC,sBAAsB,CAAE,SAAU,CAAC,EACvE,EACD,CAAC;;EAED;AACD;AACA;AACA;AACA;EACC,MAAMC,aAAa,GAAG,IAAAC,QAAE,EAAE,OAAO,EAAE,oCAAqC,CAAC;EACzE,MAAMC,aAAa,GAAGC,IAAI,CAACC,KAAK,CAC/B,IAAAC,gBAAS,EAAEV,OAAO,EAAEK,aAAc,CAAC,GAAGP,oBACvC,CAAC;EACD,MAAMa,mBAAmB,GACxBJ,aAAa,KAAK,CAAC,GAChB,IAAAK,iCAAwB,EAAE,IAAAC,QAAE,EAAE,yBAA0B,CAAC,EAAE;IAC3DC,IAAI,eAAE,IAAAjB,WAAA,CAAAkB,GAAA,YAAO;EACb,CAAE,CAAC,GACH,IAAAH,iCAAwB,EACxB,IAAAI,aAAO,GACN;EACA,IAAAC,QAAE,EACD,wBAAwB,EACxB,yBAAyB,EACzBV,aACD,CAAC,EACDA,aACD,CAAC,EACD;IACCO,IAAI,eAAE,IAAAjB,WAAA,CAAAkB,GAAA,YAAO;EACd,CACA,CAAC;EAEL,oBAAO,IAAAlB,WAAA,CAAAkB,GAAA;IAAMG,SAAS,EAAC,cAAc;IAAAC,QAAA,EAAGR;EAAmB,CAAQ,CAAC;AACrE","ignoreList":[]}
|
|
@@ -62,8 +62,8 @@ const deletePostAction = {
|
|
|
62
62
|
children: items.length > 1 ? (0, _i18n.sprintf)(
|
|
63
63
|
// translators: %d: number of items to delete.
|
|
64
64
|
(0, _i18n._n)('Delete %d item?', 'Delete %d items?', items.length), items.length) : (0, _i18n.sprintf)(
|
|
65
|
-
// translators: %s: The template or template part's
|
|
66
|
-
(0, _i18n.
|
|
65
|
+
// translators: %s: The template or template part's title
|
|
66
|
+
(0, _i18n._x)('Delete "%s"?', 'template part'), (0, _utils.getItemTitle)(items[0]))
|
|
67
67
|
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_components.__experimentalHStack, {
|
|
68
68
|
justify: "right",
|
|
69
69
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Button, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_icons","require","_data","_i18n","_element","_components","_patterns","_utils","_store","_lockUnlock","_jsxRuntime","PATTERN_TYPES","unlock","patternsPrivateApis","deletePostAction","id","label","__","isPrimary","icon","trash","isEligible","post","isTemplateOrTemplatePart","isTemplateRemovable","type","user","supportsBulk","hideModalHeader","RenderModal","items","closeModal","onActionPerformed","isBusy","setIsBusy","useState","removeTemplates","useDispatch","editorStore","jsxs","__experimentalVStack","spacing","children","jsx","__experimentalText","length","sprintf","_n","getItemTitle","__experimentalHStack","justify","Button","variant","onClick","disabled","accessibleWhenDisabled","__next40pxDefaultSize","allowUndo","_default","exports","default"],"sources":["@wordpress/editor/src/dataviews/actions/delete-post.tsx"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { trash } from '@wordpress/icons';\nimport { useDispatch } from '@wordpress/data';\nimport { __, _n, sprintf } from '@wordpress/i18n';\nimport { useState } from '@wordpress/element';\nimport {\n\tButton,\n\t__experimentalText as Text,\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n} from '@wordpress/components';\n// @ts-ignore\nimport { privateApis as patternsPrivateApis } from '@wordpress/patterns';\nimport type { Action } from '@wordpress/dataviews';\nimport type { StoreDescriptor } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport {\n\tisTemplateRemovable,\n\tgetItemTitle,\n\tisTemplateOrTemplatePart,\n} from './utils';\n// @ts-ignore\nimport { store as editorStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\nimport type { Post } from '../types';\n\nconst { PATTERN_TYPES } = unlock( patternsPrivateApis );\n\n// This action is used for templates, patterns and template parts.\n// Every other post type uses the similar `trashPostAction` which\n// moves the post to trash.\nconst deletePostAction: Action< Post > = {\n\tid: 'delete-post',\n\tlabel: __( 'Delete' ),\n\tisPrimary: true,\n\ticon: trash,\n\tisEligible( post ) {\n\t\tif ( isTemplateOrTemplatePart( post ) ) {\n\t\t\treturn isTemplateRemovable( post );\n\t\t}\n\t\t// We can only remove user patterns.\n\t\treturn post.type === PATTERN_TYPES.user;\n\t},\n\tsupportsBulk: true,\n\thideModalHeader: true,\n\tRenderModal: ( { items, closeModal, onActionPerformed } ) => {\n\t\tconst [ isBusy, setIsBusy ] = useState( false );\n\t\tconst { removeTemplates } = unlock(\n\t\t\tuseDispatch( editorStore as StoreDescriptor )\n\t\t);\n\t\treturn (\n\t\t\t<VStack spacing=\"5\">\n\t\t\t\t<Text>\n\t\t\t\t\t{ items.length > 1\n\t\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t\t// translators: %d: number of items to delete.\n\t\t\t\t\t\t\t\t_n(\n\t\t\t\t\t\t\t\t\t'Delete %d item?',\n\t\t\t\t\t\t\t\t\t'Delete %d items?',\n\t\t\t\t\t\t\t\t\titems.length\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\titems.length\n\t\t\t\t\t\t )\n\t\t\t\t\t\t: sprintf(\n\t\t\t\t\t\t\t\t// translators: %s: The template or template part's
|
|
1
|
+
{"version":3,"names":["_icons","require","_data","_i18n","_element","_components","_patterns","_utils","_store","_lockUnlock","_jsxRuntime","PATTERN_TYPES","unlock","patternsPrivateApis","deletePostAction","id","label","__","isPrimary","icon","trash","isEligible","post","isTemplateOrTemplatePart","isTemplateRemovable","type","user","supportsBulk","hideModalHeader","RenderModal","items","closeModal","onActionPerformed","isBusy","setIsBusy","useState","removeTemplates","useDispatch","editorStore","jsxs","__experimentalVStack","spacing","children","jsx","__experimentalText","length","sprintf","_n","_x","getItemTitle","__experimentalHStack","justify","Button","variant","onClick","disabled","accessibleWhenDisabled","__next40pxDefaultSize","allowUndo","_default","exports","default"],"sources":["@wordpress/editor/src/dataviews/actions/delete-post.tsx"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { trash } from '@wordpress/icons';\nimport { useDispatch } from '@wordpress/data';\nimport { __, _x, _n, sprintf } from '@wordpress/i18n';\nimport { useState } from '@wordpress/element';\nimport {\n\tButton,\n\t__experimentalText as Text,\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n} from '@wordpress/components';\n// @ts-ignore\nimport { privateApis as patternsPrivateApis } from '@wordpress/patterns';\nimport type { Action } from '@wordpress/dataviews';\nimport type { StoreDescriptor } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport {\n\tisTemplateRemovable,\n\tgetItemTitle,\n\tisTemplateOrTemplatePart,\n} from './utils';\n// @ts-ignore\nimport { store as editorStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\nimport type { Post } from '../types';\n\nconst { PATTERN_TYPES } = unlock( patternsPrivateApis );\n\n// This action is used for templates, patterns and template parts.\n// Every other post type uses the similar `trashPostAction` which\n// moves the post to trash.\nconst deletePostAction: Action< Post > = {\n\tid: 'delete-post',\n\tlabel: __( 'Delete' ),\n\tisPrimary: true,\n\ticon: trash,\n\tisEligible( post ) {\n\t\tif ( isTemplateOrTemplatePart( post ) ) {\n\t\t\treturn isTemplateRemovable( post );\n\t\t}\n\t\t// We can only remove user patterns.\n\t\treturn post.type === PATTERN_TYPES.user;\n\t},\n\tsupportsBulk: true,\n\thideModalHeader: true,\n\tRenderModal: ( { items, closeModal, onActionPerformed } ) => {\n\t\tconst [ isBusy, setIsBusy ] = useState( false );\n\t\tconst { removeTemplates } = unlock(\n\t\t\tuseDispatch( editorStore as StoreDescriptor )\n\t\t);\n\t\treturn (\n\t\t\t<VStack spacing=\"5\">\n\t\t\t\t<Text>\n\t\t\t\t\t{ items.length > 1\n\t\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t\t// translators: %d: number of items to delete.\n\t\t\t\t\t\t\t\t_n(\n\t\t\t\t\t\t\t\t\t'Delete %d item?',\n\t\t\t\t\t\t\t\t\t'Delete %d items?',\n\t\t\t\t\t\t\t\t\titems.length\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\titems.length\n\t\t\t\t\t\t )\n\t\t\t\t\t\t: sprintf(\n\t\t\t\t\t\t\t\t// translators: %s: The template or template part's title\n\t\t\t\t\t\t\t\t_x( 'Delete \"%s\"?', 'template part' ),\n\t\t\t\t\t\t\t\tgetItemTitle( items[ 0 ] )\n\t\t\t\t\t\t ) }\n\t\t\t\t</Text>\n\t\t\t\t<HStack justify=\"right\">\n\t\t\t\t\t<Button\n\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\tonClick={ closeModal }\n\t\t\t\t\t\tdisabled={ isBusy }\n\t\t\t\t\t\taccessibleWhenDisabled\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\tonClick={ async () => {\n\t\t\t\t\t\t\tsetIsBusy( true );\n\t\t\t\t\t\t\tawait removeTemplates( items, {\n\t\t\t\t\t\t\t\tallowUndo: false,\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\tonActionPerformed?.( items );\n\t\t\t\t\t\t\tsetIsBusy( false );\n\t\t\t\t\t\t\tcloseModal?.();\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tisBusy={ isBusy }\n\t\t\t\t\t\tdisabled={ isBusy }\n\t\t\t\t\t\taccessibleWhenDisabled\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Delete' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t</HStack>\n\t\t\t</VStack>\n\t\t);\n\t},\n};\n\nexport default deletePostAction;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -45,7 +45,7 @@ const duplicateTemplatePart = {
|
|
|
45
45
|
function onTemplatePartSuccess() {
|
|
46
46
|
createSuccessNotice((0, _i18n.sprintf)(
|
|
47
47
|
// translators: %s: The new template part's title e.g. 'Call to action (copy)'.
|
|
48
|
-
(0, _i18n.
|
|
48
|
+
(0, _i18n._x)('"%s" duplicated.', 'template part'), (0, _utils.getItemTitle)(item)), {
|
|
49
49
|
type: 'snackbar',
|
|
50
50
|
id: 'edit-site-patterns-success'
|
|
51
51
|
});
|
|
@@ -55,7 +55,7 @@ const duplicateTemplatePart = {
|
|
|
55
55
|
blocks: blocks,
|
|
56
56
|
defaultArea: item.area,
|
|
57
57
|
defaultTitle: (0, _i18n.sprintf)( /* translators: %s: Existing template part title */
|
|
58
|
-
(0, _i18n.
|
|
58
|
+
(0, _i18n._x)('%s (Copy)', 'template part'), (0, _utils.getItemTitle)(item)),
|
|
59
59
|
onCreate: onTemplatePartSuccess,
|
|
60
60
|
onError: closeModal,
|
|
61
61
|
confirmLabel: (0, _i18n._x)('Duplicate', 'action label'),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_data","require","_i18n","_notices","_element","_blocks","_constants","_createTemplatePartModal","_utils","_jsxRuntime","duplicateTemplatePart","id","label","_x","isEligible","item","type","TEMPLATE_PART_POST_TYPE","modalHeader","RenderModal","items","closeModal","blocks","useMemo","_item$blocks","parse","content","raw","__unstableSkipMigrationLogs","createSuccessNotice","useDispatch","noticesStore","onTemplatePartSuccess","sprintf","
|
|
1
|
+
{"version":3,"names":["_data","require","_i18n","_notices","_element","_blocks","_constants","_createTemplatePartModal","_utils","_jsxRuntime","duplicateTemplatePart","id","label","_x","isEligible","item","type","TEMPLATE_PART_POST_TYPE","modalHeader","RenderModal","items","closeModal","blocks","useMemo","_item$blocks","parse","content","raw","__unstableSkipMigrationLogs","createSuccessNotice","useDispatch","noticesStore","onTemplatePartSuccess","sprintf","getItemTitle","jsx","CreateTemplatePartModalContents","defaultArea","area","defaultTitle","onCreate","onError","confirmLabel","_default","exports","default"],"sources":["@wordpress/editor/src/dataviews/actions/duplicate-template-part.tsx"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useDispatch } from '@wordpress/data';\nimport { _x, sprintf } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { useMemo } from '@wordpress/element';\n// @ts-ignore\nimport { parse } from '@wordpress/blocks';\nimport type { Action } from '@wordpress/dataviews';\n\n/**\n * Internal dependencies\n */\nimport { TEMPLATE_PART_POST_TYPE } from '../../store/constants';\nimport { CreateTemplatePartModalContents } from '../../components/create-template-part-modal';\nimport { getItemTitle } from './utils';\nimport type { TemplatePart } from '../types';\n\nconst duplicateTemplatePart: Action< TemplatePart > = {\n\tid: 'duplicate-template-part',\n\tlabel: _x( 'Duplicate', 'action label' ),\n\tisEligible: ( item ) => item.type === TEMPLATE_PART_POST_TYPE,\n\tmodalHeader: _x( 'Duplicate template part', 'action label' ),\n\tRenderModal: ( { items, closeModal } ) => {\n\t\tconst [ item ] = items;\n\t\tconst blocks = useMemo( () => {\n\t\t\treturn (\n\t\t\t\titem.blocks ??\n\t\t\t\tparse(\n\t\t\t\t\ttypeof item.content === 'string'\n\t\t\t\t\t\t? item.content\n\t\t\t\t\t\t: item.content.raw,\n\t\t\t\t\t{\n\t\t\t\t\t\t__unstableSkipMigrationLogs: true,\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t);\n\t\t}, [ item.content, item.blocks ] );\n\t\tconst { createSuccessNotice } = useDispatch( noticesStore );\n\t\tfunction onTemplatePartSuccess() {\n\t\t\tcreateSuccessNotice(\n\t\t\t\tsprintf(\n\t\t\t\t\t// translators: %s: The new template part's title e.g. 'Call to action (copy)'.\n\t\t\t\t\t_x( '\"%s\" duplicated.', 'template part' ),\n\t\t\t\t\tgetItemTitle( item )\n\t\t\t\t),\n\t\t\t\t{ type: 'snackbar', id: 'edit-site-patterns-success' }\n\t\t\t);\n\t\t\tcloseModal?.();\n\t\t}\n\t\treturn (\n\t\t\t<CreateTemplatePartModalContents\n\t\t\t\tblocks={ blocks }\n\t\t\t\tdefaultArea={ item.area }\n\t\t\t\tdefaultTitle={ sprintf(\n\t\t\t\t\t/* translators: %s: Existing template part title */\n\t\t\t\t\t_x( '%s (Copy)', 'template part' ),\n\t\t\t\t\tgetItemTitle( item )\n\t\t\t\t) }\n\t\t\t\tonCreate={ onTemplatePartSuccess }\n\t\t\t\tonError={ closeModal }\n\t\t\t\tconfirmLabel={ _x( 'Duplicate', 'action label' ) }\n\t\t\t\tcloseModal={ closeModal }\n\t\t\t/>\n\t\t);\n\t},\n};\n\nexport default duplicateTemplatePart;\n"],"mappings":";;;;;;AAGA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAD,OAAA;AACA,IAAAE,QAAA,GAAAF,OAAA;AACA,IAAAG,QAAA,GAAAH,OAAA;AAEA,IAAAI,OAAA,GAAAJ,OAAA;AAMA,IAAAK,UAAA,GAAAL,OAAA;AACA,IAAAM,wBAAA,GAAAN,OAAA;AACA,IAAAO,MAAA,GAAAP,OAAA;AAAuC,IAAAQ,WAAA,GAAAR,OAAA;AAhBvC;AACA;AACA;;AAKA;;AAIA;AACA;AACA;;AAMA,MAAMS,qBAA6C,GAAG;EACrDC,EAAE,EAAE,yBAAyB;EAC7BC,KAAK,EAAE,IAAAC,QAAE,EAAE,WAAW,EAAE,cAAe,CAAC;EACxCC,UAAU,EAAIC,IAAI,IAAMA,IAAI,CAACC,IAAI,KAAKC,kCAAuB;EAC7DC,WAAW,EAAE,IAAAL,QAAE,EAAE,yBAAyB,EAAE,cAAe,CAAC;EAC5DM,WAAW,EAAEA,CAAE;IAAEC,KAAK;IAAEC;EAAW,CAAC,KAAM;IACzC,MAAM,CAAEN,IAAI,CAAE,GAAGK,KAAK;IACtB,MAAME,MAAM,GAAG,IAAAC,gBAAO,EAAE,MAAM;MAAA,IAAAC,YAAA;MAC7B,QAAAA,YAAA,GACCT,IAAI,CAACO,MAAM,cAAAE,YAAA,cAAAA,YAAA,GACX,IAAAC,aAAK,EACJ,OAAOV,IAAI,CAACW,OAAO,KAAK,QAAQ,GAC7BX,IAAI,CAACW,OAAO,GACZX,IAAI,CAACW,OAAO,CAACC,GAAG,EACnB;QACCC,2BAA2B,EAAE;MAC9B,CACD,CAAC;IAEH,CAAC,EAAE,CAAEb,IAAI,CAACW,OAAO,EAAEX,IAAI,CAACO,MAAM,CAAG,CAAC;IAClC,MAAM;MAAEO;IAAoB,CAAC,GAAG,IAAAC,iBAAW,EAAEC,cAAa,CAAC;IAC3D,SAASC,qBAAqBA,CAAA,EAAG;MAChCH,mBAAmB,CAClB,IAAAI,aAAO;MACN;MACA,IAAApB,QAAE,EAAE,kBAAkB,EAAE,eAAgB,CAAC,EACzC,IAAAqB,mBAAY,EAAEnB,IAAK,CACpB,CAAC,EACD;QAAEC,IAAI,EAAE,UAAU;QAAEL,EAAE,EAAE;MAA6B,CACtD,CAAC;MACDU,UAAU,GAAG,CAAC;IACf;IACA,oBACC,IAAAZ,WAAA,CAAA0B,GAAA,EAAC5B,wBAAA,CAAA6B,+BAA+B;MAC/Bd,MAAM,EAAGA,MAAQ;MACjBe,WAAW,EAAGtB,IAAI,CAACuB,IAAM;MACzBC,YAAY,EAAG,IAAAN,aAAO,GACrB;MACA,IAAApB,QAAE,EAAE,WAAW,EAAE,eAAgB,CAAC,EAClC,IAAAqB,mBAAY,EAAEnB,IAAK,CACpB,CAAG;MACHyB,QAAQ,EAAGR,qBAAuB;MAClCS,OAAO,EAAGpB,UAAY;MACtBqB,YAAY,EAAG,IAAA7B,QAAE,EAAE,WAAW,EAAE,cAAe,CAAG;MAClDQ,UAAU,EAAGA;IAAY,CACzB,CAAC;EAEJ;AACD,CAAC;AAAC,IAAAsB,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEanC,qBAAqB","ignoreList":[]}
|
|
@@ -314,8 +314,8 @@ const removeTemplates = items => async ({
|
|
|
314
314
|
title = items[0].title?.raw;
|
|
315
315
|
}
|
|
316
316
|
successMessage = isResetting ? (0, _i18n.sprintf)( /* translators: The template/part's name. */
|
|
317
|
-
(0, _i18n.__)('"%s" reset.'), (0, _htmlEntities.decodeEntities)(title)) : (0, _i18n.sprintf)( /* translators: The template/part's name. */
|
|
318
|
-
(0, _i18n.
|
|
317
|
+
(0, _i18n.__)('"%s" reset.'), (0, _htmlEntities.decodeEntities)(title)) : (0, _i18n.sprintf)( /* translators: %s: The template/part's name. */
|
|
318
|
+
(0, _i18n._x)('"%s" deleted.', 'template part'), (0, _htmlEntities.decodeEntities)(title));
|
|
319
319
|
} else {
|
|
320
320
|
successMessage = isResetting ? (0, _i18n.__)('Items reset.') : (0, _i18n.__)('Items deleted.');
|
|
321
321
|
}
|