@wordpress/editor 12.20.0 → 13.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +8 -0
- package/build/components/document-outline/check.js +1 -7
- package/build/components/document-outline/check.js.map +1 -1
- package/build/components/editor-notices/index.js +12 -12
- package/build/components/editor-notices/index.js.map +1 -1
- package/build/components/editor-snackbars/index.js +5 -8
- package/build/components/editor-snackbars/index.js.map +1 -1
- package/build/components/entities-saved-states/entity-record-item.js +1 -0
- package/build/components/entities-saved-states/entity-record-item.js.map +1 -1
- package/build/components/page-attributes/parent.js +2 -1
- package/build/components/page-attributes/parent.js.map +1 -1
- package/build/components/post-author/combobox.js +1 -0
- package/build/components/post-author/combobox.js.map +1 -1
- package/build/components/post-comments/index.js +1 -0
- package/build/components/post-comments/index.js.map +1 -1
- package/build/components/post-format/index.js +1 -7
- package/build/components/post-format/index.js.map +1 -1
- package/build/components/post-pending-status/index.js +1 -0
- package/build/components/post-pending-status/index.js.map +1 -1
- package/build/components/post-pingbacks/index.js +1 -0
- package/build/components/post-pingbacks/index.js.map +1 -1
- package/build/components/post-publish-button/index.js +10 -1
- package/build/components/post-publish-button/index.js.map +1 -1
- package/build/components/post-publish-panel/index.js +1 -0
- package/build/components/post-publish-panel/index.js.map +1 -1
- package/build/components/post-publish-panel/maybe-category-panel.js +10 -5
- package/build/components/post-publish-panel/maybe-category-panel.js.map +1 -1
- package/build/components/post-publish-panel/maybe-post-format-panel.js +1 -1
- package/build/components/post-publish-panel/maybe-post-format-panel.js.map +1 -1
- package/build/components/post-saved-state/index.js +19 -5
- package/build/components/post-saved-state/index.js.map +1 -1
- package/build/components/post-sticky/index.js +1 -0
- package/build/components/post-sticky/index.js.map +1 -1
- package/build/components/post-taxonomies/flat-term-selector.js +2 -2
- package/build/components/post-taxonomies/flat-term-selector.js.map +1 -1
- package/build/components/post-taxonomies/hierarchical-term-selector.js +2 -1
- package/build/components/post-taxonomies/hierarchical-term-selector.js.map +1 -1
- package/build/components/post-taxonomies/index.js +2 -8
- package/build/components/post-taxonomies/index.js.map +1 -1
- package/build/components/post-title/index.js +4 -2
- package/build/components/post-title/index.js.map +1 -1
- package/build/components/post-title/index.native.js +2 -4
- package/build/components/post-title/index.native.js.map +1 -1
- package/build/components/post-url/index.js +6 -2
- package/build/components/post-url/index.js.map +1 -1
- package/build/components/provider/index.native.js.map +1 -1
- package/build/components/provider/use-block-editor-settings.js +10 -9
- package/build/components/provider/use-block-editor-settings.js.map +1 -1
- package/build/components/provider/use-block-editor-settings.native.js +3 -1
- package/build/components/provider/use-block-editor-settings.native.js.map +1 -1
- package/build-module/components/document-outline/check.js +1 -6
- package/build-module/components/document-outline/check.js.map +1 -1
- package/build-module/components/editor-notices/index.js +12 -11
- package/build-module/components/editor-notices/index.js.map +1 -1
- package/build-module/components/editor-snackbars/index.js +5 -7
- package/build-module/components/editor-snackbars/index.js.map +1 -1
- package/build-module/components/entities-saved-states/entity-record-item.js +1 -0
- package/build-module/components/entities-saved-states/entity-record-item.js.map +1 -1
- package/build-module/components/page-attributes/parent.js +3 -2
- package/build-module/components/page-attributes/parent.js.map +1 -1
- package/build-module/components/post-author/combobox.js +1 -0
- package/build-module/components/post-author/combobox.js.map +1 -1
- package/build-module/components/post-comments/index.js +1 -0
- package/build-module/components/post-comments/index.js.map +1 -1
- package/build-module/components/post-format/index.js +1 -6
- package/build-module/components/post-format/index.js.map +1 -1
- package/build-module/components/post-pending-status/index.js +1 -0
- package/build-module/components/post-pending-status/index.js.map +1 -1
- package/build-module/components/post-pingbacks/index.js +1 -0
- package/build-module/components/post-pingbacks/index.js.map +1 -1
- package/build-module/components/post-publish-button/index.js +10 -1
- package/build-module/components/post-publish-button/index.js.map +1 -1
- package/build-module/components/post-publish-panel/index.js +1 -0
- package/build-module/components/post-publish-panel/index.js.map +1 -1
- package/build-module/components/post-publish-panel/maybe-category-panel.js +10 -5
- package/build-module/components/post-publish-panel/maybe-category-panel.js.map +1 -1
- package/build-module/components/post-publish-panel/maybe-post-format-panel.js +2 -2
- package/build-module/components/post-publish-panel/maybe-post-format-panel.js.map +1 -1
- package/build-module/components/post-saved-state/index.js +19 -5
- package/build-module/components/post-saved-state/index.js.map +1 -1
- package/build-module/components/post-sticky/index.js +1 -0
- package/build-module/components/post-sticky/index.js.map +1 -1
- package/build-module/components/post-taxonomies/flat-term-selector.js +3 -3
- package/build-module/components/post-taxonomies/flat-term-selector.js.map +1 -1
- package/build-module/components/post-taxonomies/hierarchical-term-selector.js +3 -2
- package/build-module/components/post-taxonomies/hierarchical-term-selector.js.map +1 -1
- package/build-module/components/post-taxonomies/index.js +2 -7
- package/build-module/components/post-taxonomies/index.js.map +1 -1
- package/build-module/components/post-title/index.js +3 -2
- package/build-module/components/post-title/index.js.map +1 -1
- package/build-module/components/post-title/index.native.js +2 -3
- package/build-module/components/post-title/index.native.js.map +1 -1
- package/build-module/components/post-url/index.js +6 -2
- package/build-module/components/post-url/index.js.map +1 -1
- package/build-module/components/provider/index.native.js +2 -1
- package/build-module/components/provider/index.native.js.map +1 -1
- package/build-module/components/provider/use-block-editor-settings.js +10 -8
- package/build-module/components/provider/use-block-editor-settings.js.map +1 -1
- package/build-module/components/provider/use-block-editor-settings.native.js +2 -1
- package/build-module/components/provider/use-block-editor-settings.native.js.map +1 -1
- package/build-style/style-rtl.css +17 -3
- package/build-style/style.css +17 -3
- package/package.json +31 -30
- package/src/components/document-outline/check.js +1 -7
- package/src/components/editor-help/test/index.native.js +2 -2
- package/src/components/editor-notices/index.js +6 -13
- package/src/components/editor-snackbars/index.js +3 -8
- package/src/components/entities-saved-states/entity-record-item.js +1 -0
- package/src/components/page-attributes/parent.js +3 -3
- package/src/components/post-author/combobox.js +1 -0
- package/src/components/post-comments/index.js +1 -0
- package/src/components/post-format/index.js +1 -7
- package/src/components/post-pending-status/index.js +1 -0
- package/src/components/post-pingbacks/index.js +1 -0
- package/src/components/post-publish-button/index.js +11 -1
- package/src/components/post-publish-panel/index.js +1 -0
- package/src/components/post-publish-panel/maybe-category-panel.js +9 -12
- package/src/components/post-publish-panel/maybe-post-format-panel.js +2 -2
- package/src/components/post-publish-panel/test/__snapshots__/index.js.snap +11 -15
- package/src/components/post-saved-state/index.js +15 -3
- package/src/components/post-saved-state/test/__snapshots__/index.js.snap +1 -1
- package/src/components/post-sticky/index.js +1 -0
- package/src/components/post-taxonomies/flat-term-selector.js +3 -3
- package/src/components/post-taxonomies/hierarchical-term-selector.js +3 -2
- package/src/components/post-taxonomies/index.js +2 -8
- package/src/components/post-taxonomies/test/index.js +1 -1
- package/src/components/post-title/index.js +6 -2
- package/src/components/post-title/index.native.js +2 -3
- package/src/components/post-url/index.js +6 -2
- package/src/components/provider/index.native.js +1 -0
- package/src/components/provider/use-block-editor-settings.js +56 -50
- package/src/components/provider/use-block-editor-settings.native.js +3 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/editor/src/components/post-publish-panel/index.js"],"names":["PostPublishPanel","Component","constructor","arguments","onSubmit","bind","componentDidUpdate","prevProps","isPublished","props","isSaving","isDirty","onClose","hasPublishAction","isPostTypeViewable","render","forceIsDirty","forceIsSaving","isBeingScheduled","isPublishSidebarEnabled","isScheduled","isSavingNonPostEntityChanges","onTogglePublishSidebar","PostPublishExtension","PrePublishExtension","additionalProps","propsForPanel","isPublishedOrScheduled","isPrePublish","isPostPublish","closeSmall","select","getPostType","coreStore","getCurrentPost","getEditedPostAttribute","isCurrentPostPublished","isCurrentPostScheduled","isEditedPostBeingScheduled","isEditedPostDirty","isSavingPost","editorStore","postType","dispatch","disablePublishSidebar","enablePublishSidebar","withFocusReturn","withConstrainedTabbing"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { get } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { Component } from '@wordpress/element';\nimport {\n\tButton,\n\tSpinner,\n\tCheckboxControl,\n\twithFocusReturn,\n\twithConstrainedTabbing,\n} from '@wordpress/components';\nimport { withSelect, withDispatch } from '@wordpress/data';\nimport { compose } from '@wordpress/compose';\nimport { closeSmall } from '@wordpress/icons';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport PostPublishButton from '../post-publish-button';\nimport PostPublishPanelPrepublish from './prepublish';\nimport PostPublishPanelPostpublish from './postpublish';\nimport { store as editorStore } from '../../store';\n\nexport class PostPublishPanel extends Component {\n\tconstructor() {\n\t\tsuper( ...arguments );\n\t\tthis.onSubmit = this.onSubmit.bind( this );\n\t}\n\n\tcomponentDidUpdate( prevProps ) {\n\t\t// Automatically collapse the publish sidebar when a post\n\t\t// is published and the user makes an edit.\n\t\tif (\n\t\t\tprevProps.isPublished &&\n\t\t\t! this.props.isSaving &&\n\t\t\tthis.props.isDirty\n\t\t) {\n\t\t\tthis.props.onClose();\n\t\t}\n\t}\n\n\tonSubmit() {\n\t\tconst { onClose, hasPublishAction, isPostTypeViewable } = this.props;\n\t\tif ( ! hasPublishAction || ! isPostTypeViewable ) {\n\t\t\tonClose();\n\t\t}\n\t}\n\n\trender() {\n\t\tconst {\n\t\t\tforceIsDirty,\n\t\t\tforceIsSaving,\n\t\t\tisBeingScheduled,\n\t\t\tisPublished,\n\t\t\tisPublishSidebarEnabled,\n\t\t\tisScheduled,\n\t\t\tisSaving,\n\t\t\tisSavingNonPostEntityChanges,\n\t\t\tonClose,\n\t\t\tonTogglePublishSidebar,\n\t\t\tPostPublishExtension,\n\t\t\tPrePublishExtension,\n\t\t\t...additionalProps\n\t\t} = this.props;\n\t\tconst {\n\t\t\thasPublishAction,\n\t\t\tisDirty,\n\t\t\tisPostTypeViewable,\n\t\t\t...propsForPanel\n\t\t} = additionalProps;\n\t\tconst isPublishedOrScheduled =\n\t\t\tisPublished || ( isScheduled && isBeingScheduled );\n\t\tconst isPrePublish = ! isPublishedOrScheduled && ! isSaving;\n\t\tconst isPostPublish = isPublishedOrScheduled && ! isSaving;\n\t\treturn (\n\t\t\t<div className=\"editor-post-publish-panel\" { ...propsForPanel }>\n\t\t\t\t<div className=\"editor-post-publish-panel__header\">\n\t\t\t\t\t{ isPostPublish ? (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tonClick={ onClose }\n\t\t\t\t\t\t\ticon={ closeSmall }\n\t\t\t\t\t\t\tlabel={ __( 'Close panel' ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<div className=\"editor-post-publish-panel__header-publish-button\">\n\t\t\t\t\t\t\t\t<PostPublishButton\n\t\t\t\t\t\t\t\t\tfocusOnMount={ true }\n\t\t\t\t\t\t\t\t\tonSubmit={ this.onSubmit }\n\t\t\t\t\t\t\t\t\tforceIsDirty={ forceIsDirty }\n\t\t\t\t\t\t\t\t\tforceIsSaving={ forceIsSaving }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div className=\"editor-post-publish-panel__header-cancel-button\">\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\tdisabled={ isSavingNonPostEntityChanges }\n\t\t\t\t\t\t\t\t\tonClick={ onClose }\n\t\t\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</>\n\t\t\t\t\t) }\n\t\t\t\t</div>\n\t\t\t\t<div className=\"editor-post-publish-panel__content\">\n\t\t\t\t\t{ isPrePublish && (\n\t\t\t\t\t\t<PostPublishPanelPrepublish>\n\t\t\t\t\t\t\t{ PrePublishExtension && <PrePublishExtension /> }\n\t\t\t\t\t\t</PostPublishPanelPrepublish>\n\t\t\t\t\t) }\n\t\t\t\t\t{ isPostPublish && (\n\t\t\t\t\t\t<PostPublishPanelPostpublish focusOnMount={ true }>\n\t\t\t\t\t\t\t{ PostPublishExtension && <PostPublishExtension /> }\n\t\t\t\t\t\t</PostPublishPanelPostpublish>\n\t\t\t\t\t) }\n\t\t\t\t\t{ isSaving && <Spinner /> }\n\t\t\t\t</div>\n\t\t\t\t<div className=\"editor-post-publish-panel__footer\">\n\t\t\t\t\t<CheckboxControl\n\t\t\t\t\t\tlabel={ __( 'Always show pre-publish checks.' ) }\n\t\t\t\t\t\tchecked={ isPublishSidebarEnabled }\n\t\t\t\t\t\tonChange={ onTogglePublishSidebar }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n}\n\nexport default compose( [\n\twithSelect( ( select ) => {\n\t\tconst { getPostType } = select( coreStore );\n\t\tconst {\n\t\t\tgetCurrentPost,\n\t\t\tgetEditedPostAttribute,\n\t\t\tisCurrentPostPublished,\n\t\t\tisCurrentPostScheduled,\n\t\t\tisEditedPostBeingScheduled,\n\t\t\tisEditedPostDirty,\n\t\t\tisSavingPost,\n\t\t\tisSavingNonPostEntityChanges,\n\t\t} = select( editorStore );\n\t\tconst { isPublishSidebarEnabled } = select( editorStore );\n\t\tconst postType = getPostType( getEditedPostAttribute( 'type' ) );\n\n\t\treturn {\n\t\t\thasPublishAction: get(\n\t\t\t\tgetCurrentPost(),\n\t\t\t\t[ '_links', 'wp:action-publish' ],\n\t\t\t\tfalse\n\t\t\t),\n\t\t\tisPostTypeViewable: get( postType, [ 'viewable' ], false ),\n\t\t\tisBeingScheduled: isEditedPostBeingScheduled(),\n\t\t\tisDirty: isEditedPostDirty(),\n\t\t\tisPublished: isCurrentPostPublished(),\n\t\t\tisPublishSidebarEnabled: isPublishSidebarEnabled(),\n\t\t\tisSaving: isSavingPost(),\n\t\t\tisSavingNonPostEntityChanges: isSavingNonPostEntityChanges(),\n\t\t\tisScheduled: isCurrentPostScheduled(),\n\t\t};\n\t} ),\n\twithDispatch( ( dispatch, { isPublishSidebarEnabled } ) => {\n\t\tconst { disablePublishSidebar, enablePublishSidebar } =\n\t\t\tdispatch( editorStore );\n\t\treturn {\n\t\t\tonTogglePublishSidebar: () => {\n\t\t\t\tif ( isPublishSidebarEnabled ) {\n\t\t\t\t\tdisablePublishSidebar();\n\t\t\t\t} else {\n\t\t\t\t\tenablePublishSidebar();\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t} ),\n\twithFocusReturn,\n\twithConstrainedTabbing,\n] )( PostPublishPanel );\n"]}
|
|
1
|
+
{"version":3,"sources":["@wordpress/editor/src/components/post-publish-panel/index.js"],"names":["PostPublishPanel","Component","constructor","arguments","onSubmit","bind","componentDidUpdate","prevProps","isPublished","props","isSaving","isDirty","onClose","hasPublishAction","isPostTypeViewable","render","forceIsDirty","forceIsSaving","isBeingScheduled","isPublishSidebarEnabled","isScheduled","isSavingNonPostEntityChanges","onTogglePublishSidebar","PostPublishExtension","PrePublishExtension","additionalProps","propsForPanel","isPublishedOrScheduled","isPrePublish","isPostPublish","closeSmall","select","getPostType","coreStore","getCurrentPost","getEditedPostAttribute","isCurrentPostPublished","isCurrentPostScheduled","isEditedPostBeingScheduled","isEditedPostDirty","isSavingPost","editorStore","postType","dispatch","disablePublishSidebar","enablePublishSidebar","withFocusReturn","withConstrainedTabbing"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { get } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { Component } from '@wordpress/element';\nimport {\n\tButton,\n\tSpinner,\n\tCheckboxControl,\n\twithFocusReturn,\n\twithConstrainedTabbing,\n} from '@wordpress/components';\nimport { withSelect, withDispatch } from '@wordpress/data';\nimport { compose } from '@wordpress/compose';\nimport { closeSmall } from '@wordpress/icons';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport PostPublishButton from '../post-publish-button';\nimport PostPublishPanelPrepublish from './prepublish';\nimport PostPublishPanelPostpublish from './postpublish';\nimport { store as editorStore } from '../../store';\n\nexport class PostPublishPanel extends Component {\n\tconstructor() {\n\t\tsuper( ...arguments );\n\t\tthis.onSubmit = this.onSubmit.bind( this );\n\t}\n\n\tcomponentDidUpdate( prevProps ) {\n\t\t// Automatically collapse the publish sidebar when a post\n\t\t// is published and the user makes an edit.\n\t\tif (\n\t\t\tprevProps.isPublished &&\n\t\t\t! this.props.isSaving &&\n\t\t\tthis.props.isDirty\n\t\t) {\n\t\t\tthis.props.onClose();\n\t\t}\n\t}\n\n\tonSubmit() {\n\t\tconst { onClose, hasPublishAction, isPostTypeViewable } = this.props;\n\t\tif ( ! hasPublishAction || ! isPostTypeViewable ) {\n\t\t\tonClose();\n\t\t}\n\t}\n\n\trender() {\n\t\tconst {\n\t\t\tforceIsDirty,\n\t\t\tforceIsSaving,\n\t\t\tisBeingScheduled,\n\t\t\tisPublished,\n\t\t\tisPublishSidebarEnabled,\n\t\t\tisScheduled,\n\t\t\tisSaving,\n\t\t\tisSavingNonPostEntityChanges,\n\t\t\tonClose,\n\t\t\tonTogglePublishSidebar,\n\t\t\tPostPublishExtension,\n\t\t\tPrePublishExtension,\n\t\t\t...additionalProps\n\t\t} = this.props;\n\t\tconst {\n\t\t\thasPublishAction,\n\t\t\tisDirty,\n\t\t\tisPostTypeViewable,\n\t\t\t...propsForPanel\n\t\t} = additionalProps;\n\t\tconst isPublishedOrScheduled =\n\t\t\tisPublished || ( isScheduled && isBeingScheduled );\n\t\tconst isPrePublish = ! isPublishedOrScheduled && ! isSaving;\n\t\tconst isPostPublish = isPublishedOrScheduled && ! isSaving;\n\t\treturn (\n\t\t\t<div className=\"editor-post-publish-panel\" { ...propsForPanel }>\n\t\t\t\t<div className=\"editor-post-publish-panel__header\">\n\t\t\t\t\t{ isPostPublish ? (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tonClick={ onClose }\n\t\t\t\t\t\t\ticon={ closeSmall }\n\t\t\t\t\t\t\tlabel={ __( 'Close panel' ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<div className=\"editor-post-publish-panel__header-publish-button\">\n\t\t\t\t\t\t\t\t<PostPublishButton\n\t\t\t\t\t\t\t\t\tfocusOnMount={ true }\n\t\t\t\t\t\t\t\t\tonSubmit={ this.onSubmit }\n\t\t\t\t\t\t\t\t\tforceIsDirty={ forceIsDirty }\n\t\t\t\t\t\t\t\t\tforceIsSaving={ forceIsSaving }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div className=\"editor-post-publish-panel__header-cancel-button\">\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\tdisabled={ isSavingNonPostEntityChanges }\n\t\t\t\t\t\t\t\t\tonClick={ onClose }\n\t\t\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</>\n\t\t\t\t\t) }\n\t\t\t\t</div>\n\t\t\t\t<div className=\"editor-post-publish-panel__content\">\n\t\t\t\t\t{ isPrePublish && (\n\t\t\t\t\t\t<PostPublishPanelPrepublish>\n\t\t\t\t\t\t\t{ PrePublishExtension && <PrePublishExtension /> }\n\t\t\t\t\t\t</PostPublishPanelPrepublish>\n\t\t\t\t\t) }\n\t\t\t\t\t{ isPostPublish && (\n\t\t\t\t\t\t<PostPublishPanelPostpublish focusOnMount={ true }>\n\t\t\t\t\t\t\t{ PostPublishExtension && <PostPublishExtension /> }\n\t\t\t\t\t\t</PostPublishPanelPostpublish>\n\t\t\t\t\t) }\n\t\t\t\t\t{ isSaving && <Spinner /> }\n\t\t\t\t</div>\n\t\t\t\t<div className=\"editor-post-publish-panel__footer\">\n\t\t\t\t\t<CheckboxControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\tlabel={ __( 'Always show pre-publish checks.' ) }\n\t\t\t\t\t\tchecked={ isPublishSidebarEnabled }\n\t\t\t\t\t\tonChange={ onTogglePublishSidebar }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n}\n\nexport default compose( [\n\twithSelect( ( select ) => {\n\t\tconst { getPostType } = select( coreStore );\n\t\tconst {\n\t\t\tgetCurrentPost,\n\t\t\tgetEditedPostAttribute,\n\t\t\tisCurrentPostPublished,\n\t\t\tisCurrentPostScheduled,\n\t\t\tisEditedPostBeingScheduled,\n\t\t\tisEditedPostDirty,\n\t\t\tisSavingPost,\n\t\t\tisSavingNonPostEntityChanges,\n\t\t} = select( editorStore );\n\t\tconst { isPublishSidebarEnabled } = select( editorStore );\n\t\tconst postType = getPostType( getEditedPostAttribute( 'type' ) );\n\n\t\treturn {\n\t\t\thasPublishAction: get(\n\t\t\t\tgetCurrentPost(),\n\t\t\t\t[ '_links', 'wp:action-publish' ],\n\t\t\t\tfalse\n\t\t\t),\n\t\t\tisPostTypeViewable: get( postType, [ 'viewable' ], false ),\n\t\t\tisBeingScheduled: isEditedPostBeingScheduled(),\n\t\t\tisDirty: isEditedPostDirty(),\n\t\t\tisPublished: isCurrentPostPublished(),\n\t\t\tisPublishSidebarEnabled: isPublishSidebarEnabled(),\n\t\t\tisSaving: isSavingPost(),\n\t\t\tisSavingNonPostEntityChanges: isSavingNonPostEntityChanges(),\n\t\t\tisScheduled: isCurrentPostScheduled(),\n\t\t};\n\t} ),\n\twithDispatch( ( dispatch, { isPublishSidebarEnabled } ) => {\n\t\tconst { disablePublishSidebar, enablePublishSidebar } =\n\t\t\tdispatch( editorStore );\n\t\treturn {\n\t\t\tonTogglePublishSidebar: () => {\n\t\t\t\tif ( isPublishSidebarEnabled ) {\n\t\t\t\t\tdisablePublishSidebar();\n\t\t\t\t} else {\n\t\t\t\t\tenablePublishSidebar();\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t} ),\n\twithFocusReturn,\n\twithConstrainedTabbing,\n] )( PostPublishPanel );\n"]}
|
|
@@ -30,18 +30,23 @@ var _store = require("../../store");
|
|
|
30
30
|
*/
|
|
31
31
|
function MaybeCategoryPanel() {
|
|
32
32
|
const hasNoCategory = (0, _data.useSelect)(select => {
|
|
33
|
-
var
|
|
33
|
+
var _getEntityRecord;
|
|
34
34
|
|
|
35
35
|
const postType = select(_store.store).getCurrentPostType();
|
|
36
|
-
const
|
|
37
|
-
|
|
38
|
-
|
|
36
|
+
const {
|
|
37
|
+
canUser,
|
|
38
|
+
getEntityRecord,
|
|
39
|
+
getTaxonomy
|
|
40
|
+
} = select(_coreData.store);
|
|
41
|
+
const categoriesTaxonomy = getTaxonomy('category');
|
|
42
|
+
const defaultCategoryId = canUser('read', 'settings') ? (_getEntityRecord = getEntityRecord('root', 'site')) === null || _getEntityRecord === void 0 ? void 0 : _getEntityRecord.default_category : undefined;
|
|
43
|
+
const defaultCategory = defaultCategoryId ? getEntityRecord('taxonomy', 'category', defaultCategoryId) : undefined;
|
|
39
44
|
const postTypeSupportsCategories = categoriesTaxonomy && categoriesTaxonomy.types.some(type => type === postType);
|
|
40
45
|
const categories = categoriesTaxonomy && select(_store.store).getEditedPostAttribute(categoriesTaxonomy.rest_base); // This boolean should return true if everything is loaded
|
|
41
46
|
// ( categoriesTaxonomy, defaultCategory )
|
|
42
47
|
// and the post has not been assigned a category different than "uncategorized".
|
|
43
48
|
|
|
44
|
-
return !!categoriesTaxonomy && !!defaultCategory && postTypeSupportsCategories && ((categories === null || categories === void 0 ? void 0 : categories.length) === 0 || (categories === null || categories === void 0 ? void 0 : categories.length) === 1 && defaultCategory.id === categories[0]);
|
|
49
|
+
return !!categoriesTaxonomy && !!defaultCategory && postTypeSupportsCategories && ((categories === null || categories === void 0 ? void 0 : categories.length) === 0 || (categories === null || categories === void 0 ? void 0 : categories.length) === 1 && (defaultCategory === null || defaultCategory === void 0 ? void 0 : defaultCategory.id) === categories[0]);
|
|
45
50
|
}, []);
|
|
46
51
|
const [shouldShowPanel, setShouldShowPanel] = (0, _element.useState)(false);
|
|
47
52
|
(0, _element.useEffect)(() => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/editor/src/components/post-publish-panel/maybe-category-panel.js"],"names":["MaybeCategoryPanel","hasNoCategory","select","postType","editorStore","getCurrentPostType","
|
|
1
|
+
{"version":3,"sources":["@wordpress/editor/src/components/post-publish-panel/maybe-category-panel.js"],"names":["MaybeCategoryPanel","hasNoCategory","select","postType","editorStore","getCurrentPostType","canUser","getEntityRecord","getTaxonomy","coreStore","categoriesTaxonomy","defaultCategoryId","default_category","undefined","defaultCategory","postTypeSupportsCategories","types","some","type","categories","getEditedPostAttribute","rest_base","length","id","shouldShowPanel","setShouldShowPanel","panelBodyTitle"],"mappings":";;;;;;;;;AAOA;;AAJA;;AACA;;AACA;;AACA;;AAMA;;AACA;;AAbA;AACA;AACA;;AAOA;AACA;AACA;AAIA,SAASA,kBAAT,GAA8B;AAC7B,QAAMC,aAAa,GAAG,qBAAaC,MAAF,IAAc;AAAA;;AAC9C,UAAMC,QAAQ,GAAGD,MAAM,CAAEE,YAAF,CAAN,CAAsBC,kBAAtB,EAAjB;AACA,UAAM;AAAEC,MAAAA,OAAF;AAAWC,MAAAA,eAAX;AAA4BC,MAAAA;AAA5B,QAA4CN,MAAM,CAAEO,eAAF,CAAxD;AACA,UAAMC,kBAAkB,GAAGF,WAAW,CAAE,UAAF,CAAtC;AACA,UAAMG,iBAAiB,GAAGL,OAAO,CAAE,MAAF,EAAU,UAAV,CAAP,uBACvBC,eAAe,CAAE,MAAF,EAAU,MAAV,CADQ,qDACvB,iBAAmCK,gBADZ,GAEvBC,SAFH;AAGA,UAAMC,eAAe,GAAGH,iBAAiB,GACtCJ,eAAe,CAAE,UAAF,EAAc,UAAd,EAA0BI,iBAA1B,CADuB,GAEtCE,SAFH;AAGA,UAAME,0BAA0B,GAC/BL,kBAAkB,IAClBA,kBAAkB,CAACM,KAAnB,CAAyBC,IAAzB,CAAiCC,IAAF,IAAYA,IAAI,KAAKf,QAApD,CAFD;AAGA,UAAMgB,UAAU,GACfT,kBAAkB,IAClBR,MAAM,CAAEE,YAAF,CAAN,CAAsBgB,sBAAtB,CACCV,kBAAkB,CAACW,SADpB,CAFD,CAb8C,CAmB9C;AACA;AACA;;AACA,WACC,CAAC,CAAEX,kBAAH,IACA,CAAC,CAAEI,eADH,IAEAC,0BAFA,KAGE,CAAAI,UAAU,SAAV,IAAAA,UAAU,WAAV,YAAAA,UAAU,CAAEG,MAAZ,MAAuB,CAAvB,IACC,CAAAH,UAAU,SAAV,IAAAA,UAAU,WAAV,YAAAA,UAAU,CAAEG,MAAZ,MAAuB,CAAvB,IACD,CAAAR,eAAe,SAAf,IAAAA,eAAe,WAAf,YAAAA,eAAe,CAAES,EAAjB,MAAwBJ,UAAU,CAAE,CAAF,CALpC,CADD;AAQA,GA9BqB,EA8BnB,EA9BmB,CAAtB;AA+BA,QAAM,CAAEK,eAAF,EAAmBC,kBAAnB,IAA0C,uBAAU,KAAV,CAAhD;AACA,0BAAW,MAAM;AAChB;AACA;AACA,QAAKxB,aAAL,EAAqB;AACpBwB,MAAAA,kBAAkB,CAAE,IAAF,CAAlB;AACA;AACD,GAND,EAMG,CAAExB,aAAF,CANH;;AAQA,MAAK,CAAEuB,eAAP,EAAyB;AACxB,WAAO,IAAP;AACA;;AAED,QAAME,cAAc,GAAG,CACtB,cAAI,aAAJ,CADsB,EAEtB;AAAM,IAAA,SAAS,EAAC,iCAAhB;AAAkD,IAAA,GAAG,EAAC;AAAtD,KACG,cAAI,mBAAJ,CADH,CAFsB,CAAvB;AAOA,SACC,4BAAC,qBAAD;AAAW,IAAA,WAAW,EAAG,KAAzB;AAAiC,IAAA,KAAK,EAAGA;AAAzC,KACC,uCACG,cACD,oHADC,CADH,CADD,EAMC,4BAAC,iCAAD;AAA0B,IAAA,IAAI,EAAC;AAA/B,IAND,CADD;AAUA;;eAEc1B,kB","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useSelect } from '@wordpress/data';\nimport { PanelBody } from '@wordpress/components';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useState, useEffect } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport HierarchicalTermSelector from '../post-taxonomies/hierarchical-term-selector';\nimport { store as editorStore } from '../../store';\n\nfunction MaybeCategoryPanel() {\n\tconst hasNoCategory = useSelect( ( select ) => {\n\t\tconst postType = select( editorStore ).getCurrentPostType();\n\t\tconst { canUser, getEntityRecord, getTaxonomy } = select( coreStore );\n\t\tconst categoriesTaxonomy = getTaxonomy( 'category' );\n\t\tconst defaultCategoryId = canUser( 'read', 'settings' )\n\t\t\t? getEntityRecord( 'root', 'site' )?.default_category\n\t\t\t: undefined;\n\t\tconst defaultCategory = defaultCategoryId\n\t\t\t? getEntityRecord( 'taxonomy', 'category', defaultCategoryId )\n\t\t\t: undefined;\n\t\tconst postTypeSupportsCategories =\n\t\t\tcategoriesTaxonomy &&\n\t\t\tcategoriesTaxonomy.types.some( ( type ) => type === postType );\n\t\tconst categories =\n\t\t\tcategoriesTaxonomy &&\n\t\t\tselect( editorStore ).getEditedPostAttribute(\n\t\t\t\tcategoriesTaxonomy.rest_base\n\t\t\t);\n\n\t\t// This boolean should return true if everything is loaded\n\t\t// ( categoriesTaxonomy, defaultCategory )\n\t\t// and the post has not been assigned a category different than \"uncategorized\".\n\t\treturn (\n\t\t\t!! categoriesTaxonomy &&\n\t\t\t!! defaultCategory &&\n\t\t\tpostTypeSupportsCategories &&\n\t\t\t( categories?.length === 0 ||\n\t\t\t\t( categories?.length === 1 &&\n\t\t\t\t\tdefaultCategory?.id === categories[ 0 ] ) )\n\t\t);\n\t}, [] );\n\tconst [ shouldShowPanel, setShouldShowPanel ] = useState( false );\n\tuseEffect( () => {\n\t\t// We use state to avoid hiding the panel if the user edits the categories\n\t\t// and adds one within the panel itself (while visible).\n\t\tif ( hasNoCategory ) {\n\t\t\tsetShouldShowPanel( true );\n\t\t}\n\t}, [ hasNoCategory ] );\n\n\tif ( ! shouldShowPanel ) {\n\t\treturn null;\n\t}\n\n\tconst panelBodyTitle = [\n\t\t__( 'Suggestion:' ),\n\t\t<span className=\"editor-post-publish-panel__link\" key=\"label\">\n\t\t\t{ __( 'Assign a category' ) }\n\t\t</span>,\n\t];\n\n\treturn (\n\t\t<PanelBody initialOpen={ false } title={ panelBodyTitle }>\n\t\t\t<p>\n\t\t\t\t{ __(\n\t\t\t\t\t'Categories provide a helpful way to group related posts together and to quickly tell readers what a post is about.'\n\t\t\t\t) }\n\t\t\t</p>\n\t\t\t<HierarchicalTermSelector slug=\"category\" />\n\t\t</PanelBody>\n\t);\n}\n\nexport default MaybeCategoryPanel;\n"]}
|
|
@@ -35,7 +35,7 @@ var _store = require("../../store");
|
|
|
35
35
|
const getSuggestion = (supportedFormats, suggestedPostFormat) => {
|
|
36
36
|
const formats = _postFormat.POST_FORMATS.filter(format => supportedFormats === null || supportedFormats === void 0 ? void 0 : supportedFormats.includes(format.id));
|
|
37
37
|
|
|
38
|
-
return
|
|
38
|
+
return formats.find(format => format.id === suggestedPostFormat);
|
|
39
39
|
};
|
|
40
40
|
|
|
41
41
|
const PostFormatSuggestion = _ref => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/editor/src/components/post-publish-panel/maybe-post-format-panel.js"],"names":["getSuggestion","supportedFormats","suggestedPostFormat","formats","POST_FORMATS","filter","format","includes","id","PostFormatSuggestion","suggestionText","onUpdatePostFormat","PostFormatPanel","currentPostFormat","suggestion","select","getEditedPostAttribute","getSuggestedPostFormat","editorStore","coreStore","getThemeSupports","editPost","panelBodyTitle","caption"],"mappings":";;;;;;;;;AAGA;;AAKA;;AACA;;AACA;;AACA;;AAKA;;AACA;;AAjBA;AACA;AACA;;AAGA;AACA;AACA;;AAMA;AACA;AACA;AAIA,MAAMA,aAAa,GAAG,CAAEC,gBAAF,EAAoBC,mBAApB,KAA6C;AAClE,QAAMC,OAAO,GAAGC,yBAAaC,MAAb,CAAuBC,MAAF,IACpCL,gBADoC,aACpCA,gBADoC,uBACpCA,gBAAgB,CAAEM,QAAlB,CAA4BD,MAAM,CAACE,EAAnC,CADe,CAAhB;;AAGA,
|
|
1
|
+
{"version":3,"sources":["@wordpress/editor/src/components/post-publish-panel/maybe-post-format-panel.js"],"names":["getSuggestion","supportedFormats","suggestedPostFormat","formats","POST_FORMATS","filter","format","includes","id","find","PostFormatSuggestion","suggestionText","onUpdatePostFormat","PostFormatPanel","currentPostFormat","suggestion","select","getEditedPostAttribute","getSuggestedPostFormat","editorStore","coreStore","getThemeSupports","editPost","panelBodyTitle","caption"],"mappings":";;;;;;;;;AAGA;;AAKA;;AACA;;AACA;;AACA;;AAKA;;AACA;;AAjBA;AACA;AACA;;AAGA;AACA;AACA;;AAMA;AACA;AACA;AAIA,MAAMA,aAAa,GAAG,CAAEC,gBAAF,EAAoBC,mBAApB,KAA6C;AAClE,QAAMC,OAAO,GAAGC,yBAAaC,MAAb,CAAuBC,MAAF,IACpCL,gBADoC,aACpCA,gBADoC,uBACpCA,gBAAgB,CAAEM,QAAlB,CAA4BD,MAAM,CAACE,EAAnC,CADe,CAAhB;;AAGA,SAAOL,OAAO,CAACM,IAAR,CAAgBH,MAAF,IAAcA,MAAM,CAACE,EAAP,KAAcN,mBAA1C,CAAP;AACA,CALD;;AAOA,MAAMQ,oBAAoB,GAAG;AAAA,MAAE;AAC9BR,IAAAA,mBAD8B;AAE9BS,IAAAA,cAF8B;AAG9BC,IAAAA;AAH8B,GAAF;AAAA,SAK5B,4BAAC,kBAAD;AACC,IAAA,OAAO,EAAC,MADT;AAEC,IAAA,OAAO,EAAG,MAAMA,kBAAkB,CAAEV,mBAAF;AAFnC,KAIGS,cAJH,CAL4B;AAAA,CAA7B;;AAae,SAASE,eAAT,GAA2B;AACzC,QAAM;AAAEC,IAAAA,iBAAF;AAAqBC,IAAAA;AAArB,MAAoC,qBAAaC,MAAF,IAAc;AAClE,UAAM;AAAEC,MAAAA,sBAAF;AAA0BC,MAAAA;AAA1B,QACLF,MAAM,CAAEG,YAAF,CADP;AAEA,UAAMlB,gBAAgB,GAAG,iBACxBe,MAAM,CAAEI,eAAF,CAAN,CAAoBC,gBAApB,EADwB,EAExB,CAAE,SAAF,CAFwB,EAGxB,EAHwB,CAAzB;AAKA,WAAO;AACNP,MAAAA,iBAAiB,EAAEG,sBAAsB,CAAE,QAAF,CADnC;AAENF,MAAAA,UAAU,EAAEf,aAAa,CACxBC,gBADwB,EAExBiB,sBAAsB,EAFE;AAFnB,KAAP;AAOA,GAfyC,EAevC,EAfuC,CAA1C;AAiBA,QAAM;AAAEI,IAAAA;AAAF,MAAe,uBAAaH,YAAb,CAArB;;AAEA,QAAMP,kBAAkB,GAAKN,MAAF,IAAcgB,QAAQ,CAAE;AAAEhB,IAAAA;AAAF,GAAF,CAAjD;;AAEA,QAAMiB,cAAc,GAAG,CACtB,cAAI,aAAJ,CADsB,EAEtB;AAAM,IAAA,SAAS,EAAC,iCAAhB;AAAkD,IAAA,GAAG,EAAC;AAAtD,KACG,cAAI,mBAAJ,CADH,CAFsB,CAAvB;;AAOA,MAAK,CAAER,UAAF,IAAgBA,UAAU,CAACP,EAAX,KAAkBM,iBAAvC,EAA2D;AAC1D,WAAO,IAAP;AACA;;AAED,SACC,4BAAC,qBAAD;AAAW,IAAA,WAAW,EAAG,KAAzB;AAAiC,IAAA,KAAK,EAAGS;AAAzC,KACC,uCACG,cACD,+IADC,CADH,CADD,EAMC,uCACC,4BAAC,oBAAD;AACC,IAAA,kBAAkB,EAAGX,kBADtB;AAEC,IAAA,mBAAmB,EAAGG,UAAU,CAACP,EAFlC;AAGC,IAAA,cAAc,EAAG;AAChB;AACA,kBAAI,0BAAJ,CAFgB,EAGhBO,UAAU,CAACS,OAHK;AAHlB,IADD,CAND,CADD;AAoBA","sourcesContent":["/**\n * External dependencies\n */\nimport { get } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { Button, PanelBody } from '@wordpress/components';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { POST_FORMATS } from '../post-format';\nimport { store as editorStore } from '../../store';\n\nconst getSuggestion = ( supportedFormats, suggestedPostFormat ) => {\n\tconst formats = POST_FORMATS.filter( ( format ) =>\n\t\tsupportedFormats?.includes( format.id )\n\t);\n\treturn formats.find( ( format ) => format.id === suggestedPostFormat );\n};\n\nconst PostFormatSuggestion = ( {\n\tsuggestedPostFormat,\n\tsuggestionText,\n\tonUpdatePostFormat,\n} ) => (\n\t<Button\n\t\tvariant=\"link\"\n\t\tonClick={ () => onUpdatePostFormat( suggestedPostFormat ) }\n\t>\n\t\t{ suggestionText }\n\t</Button>\n);\n\nexport default function PostFormatPanel() {\n\tconst { currentPostFormat, suggestion } = useSelect( ( select ) => {\n\t\tconst { getEditedPostAttribute, getSuggestedPostFormat } =\n\t\t\tselect( editorStore );\n\t\tconst supportedFormats = get(\n\t\t\tselect( coreStore ).getThemeSupports(),\n\t\t\t[ 'formats' ],\n\t\t\t[]\n\t\t);\n\t\treturn {\n\t\t\tcurrentPostFormat: getEditedPostAttribute( 'format' ),\n\t\t\tsuggestion: getSuggestion(\n\t\t\t\tsupportedFormats,\n\t\t\t\tgetSuggestedPostFormat()\n\t\t\t),\n\t\t};\n\t}, [] );\n\n\tconst { editPost } = useDispatch( editorStore );\n\n\tconst onUpdatePostFormat = ( format ) => editPost( { format } );\n\n\tconst panelBodyTitle = [\n\t\t__( 'Suggestion:' ),\n\t\t<span className=\"editor-post-publish-panel__link\" key=\"label\">\n\t\t\t{ __( 'Use a post format' ) }\n\t\t</span>,\n\t];\n\n\tif ( ! suggestion || suggestion.id === currentPostFormat ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<PanelBody initialOpen={ false } title={ panelBodyTitle }>\n\t\t\t<p>\n\t\t\t\t{ __(\n\t\t\t\t\t'Your theme uses post formats to highlight different kinds of content, like images or videos. Apply a post format to see this special styling.'\n\t\t\t\t) }\n\t\t\t</p>\n\t\t\t<p>\n\t\t\t\t<PostFormatSuggestion\n\t\t\t\t\tonUpdatePostFormat={ onUpdatePostFormat }\n\t\t\t\t\tsuggestedPostFormat={ suggestion.id }\n\t\t\t\t\tsuggestionText={ sprintf(\n\t\t\t\t\t\t/* translators: %s: post format */\n\t\t\t\t\t\t__( 'Apply the \"%1$s\" format.' ),\n\t\t\t\t\t\tsuggestion.caption\n\t\t\t\t\t) }\n\t\t\t\t/>\n\t\t\t</p>\n\t\t</PanelBody>\n\t);\n}\n"]}
|
|
@@ -155,11 +155,25 @@ function PostSavedState(_ref) {
|
|
|
155
155
|
type: 'loading'
|
|
156
156
|
})]: isSaving
|
|
157
157
|
}) : undefined,
|
|
158
|
-
onClick: isDisabled ? undefined : () => savePost()
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
158
|
+
onClick: isDisabled ? undefined : () => savePost()
|
|
159
|
+
/*
|
|
160
|
+
* We want the tooltip to show the keyboard shortcut only when the
|
|
161
|
+
* button does something, i.e. when it's not disabled.
|
|
162
|
+
*/
|
|
163
|
+
,
|
|
164
|
+
shortcut: isDisabled ? undefined : _keycodes.displayShortcut.primary('s')
|
|
165
|
+
/*
|
|
166
|
+
* Displaying the keyboard shortcut conditionally makes the tooltip
|
|
167
|
+
* itself show conditionally. This would trigger a full-rerendering
|
|
168
|
+
* of the button that we want to avoid. By setting `showTooltip`,
|
|
169
|
+
& the tooltip is always rendered even when there's no keyboard shortcut.
|
|
170
|
+
*/
|
|
171
|
+
,
|
|
172
|
+
showTooltip: true,
|
|
173
|
+
variant: "tertiary",
|
|
174
|
+
icon: isLargeViewport ? undefined : _icons.cloudUpload // Make sure the aria-label has always a value, as the default `text` is undefined on small screens.
|
|
175
|
+
,
|
|
176
|
+
label: text || label,
|
|
163
177
|
"aria-disabled": isDisabled
|
|
164
178
|
}, isSavedState && (0, _element.createElement)(_icons.Icon, {
|
|
165
179
|
icon: isSaved ? _icons.check : _icons.cloud
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/editor/src/components/post-saved-state/index.js"],"names":["PostSavedState","forceIsDirty","forceIsSaving","showIconLabels","forceSavedMessage","setForceSavedMessage","isLargeViewport","isAutosaving","isDirty","isNew","isPending","isPublished","isSaveable","isSaving","isScheduled","hasPublishAction","select","isEditedPostNew","isCurrentPostPublished","isCurrentPostScheduled","isEditedPostDirty","isSavingPost","isEditedPostSaveable","getCurrentPost","isAutosavingPost","getEditedPostAttribute","editorStore","_links","savePost","wasSaving","timeoutId","setTimeout","clearTimeout","label","shortLabel","isSaved","isSavedState","isDisabled","text","type","undefined","displayShortcut","primary","cloudUpload","check","cloud"],"mappings":"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
|
|
1
|
+
{"version":3,"sources":["@wordpress/editor/src/components/post-saved-state/index.js"],"names":["PostSavedState","forceIsDirty","forceIsSaving","showIconLabels","forceSavedMessage","setForceSavedMessage","isLargeViewport","isAutosaving","isDirty","isNew","isPending","isPublished","isSaveable","isSaving","isScheduled","hasPublishAction","select","isEditedPostNew","isCurrentPostPublished","isCurrentPostScheduled","isEditedPostDirty","isSavingPost","isEditedPostSaveable","getCurrentPost","isAutosavingPost","getEditedPostAttribute","editorStore","_links","savePost","wasSaving","timeoutId","setTimeout","clearTimeout","label","shortLabel","isSaved","isSavedState","isDisabled","text","type","undefined","displayShortcut","primary","cloudUpload","check","cloud"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\t__unstableGetAnimateClassName as getAnimateClassName,\n\tButton,\n} from '@wordpress/components';\nimport { usePrevious, useViewportMatch } from '@wordpress/compose';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { useEffect, useState } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { Icon, check, cloud, cloudUpload } from '@wordpress/icons';\nimport { displayShortcut } from '@wordpress/keycodes';\n\n/**\n * Internal dependencies\n */\nimport PostSwitchToDraftButton from '../post-switch-to-draft-button';\nimport { store as editorStore } from '../../store';\n\n/**\n * Component showing whether the post is saved or not and providing save\n * buttons.\n *\n * @param {Object} props Component props.\n * @param {?boolean} props.forceIsDirty Whether to force the post to be marked\n * as dirty.\n * @param {?boolean} props.forceIsSaving Whether to force the post to be marked\n * as being saved.\n * @param {?boolean} props.showIconLabels Whether interface buttons show labels instead of icons\n * @return {import('@wordpress/element').WPComponent} The component.\n */\nexport default function PostSavedState( {\n\tforceIsDirty,\n\tforceIsSaving,\n\tshowIconLabels = false,\n} ) {\n\tconst [ forceSavedMessage, setForceSavedMessage ] = useState( false );\n\tconst isLargeViewport = useViewportMatch( 'small' );\n\n\tconst {\n\t\tisAutosaving,\n\t\tisDirty,\n\t\tisNew,\n\t\tisPending,\n\t\tisPublished,\n\t\tisSaveable,\n\t\tisSaving,\n\t\tisScheduled,\n\t\thasPublishAction,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tisEditedPostNew,\n\t\t\t\tisCurrentPostPublished,\n\t\t\t\tisCurrentPostScheduled,\n\t\t\t\tisEditedPostDirty,\n\t\t\t\tisSavingPost,\n\t\t\t\tisEditedPostSaveable,\n\t\t\t\tgetCurrentPost,\n\t\t\t\tisAutosavingPost,\n\t\t\t\tgetEditedPostAttribute,\n\t\t\t} = select( editorStore );\n\n\t\t\treturn {\n\t\t\t\tisAutosaving: isAutosavingPost(),\n\t\t\t\tisDirty: forceIsDirty || isEditedPostDirty(),\n\t\t\t\tisNew: isEditedPostNew(),\n\t\t\t\tisPending: 'pending' === getEditedPostAttribute( 'status' ),\n\t\t\t\tisPublished: isCurrentPostPublished(),\n\t\t\t\tisSaving: forceIsSaving || isSavingPost(),\n\t\t\t\tisSaveable: isEditedPostSaveable(),\n\t\t\t\tisScheduled: isCurrentPostScheduled(),\n\t\t\t\thasPublishAction:\n\t\t\t\t\tgetCurrentPost()?._links?.[ 'wp:action-publish' ] ?? false,\n\t\t\t};\n\t\t},\n\t\t[ forceIsDirty, forceIsSaving ]\n\t);\n\n\tconst { savePost } = useDispatch( editorStore );\n\n\tconst wasSaving = usePrevious( isSaving );\n\n\tuseEffect( () => {\n\t\tlet timeoutId;\n\n\t\tif ( wasSaving && ! isSaving ) {\n\t\t\tsetForceSavedMessage( true );\n\t\t\ttimeoutId = setTimeout( () => {\n\t\t\t\tsetForceSavedMessage( false );\n\t\t\t}, 1000 );\n\t\t}\n\n\t\treturn () => clearTimeout( timeoutId );\n\t}, [ isSaving ] );\n\n\t// Once the post has been submitted for review this button\n\t// is not needed for the contributor role.\n\tif ( ! hasPublishAction && isPending ) {\n\t\treturn null;\n\t}\n\n\tif ( isPublished || isScheduled ) {\n\t\treturn <PostSwitchToDraftButton />;\n\t}\n\n\t/* translators: button label text should, if possible, be under 16 characters. */\n\tconst label = isPending ? __( 'Save as pending' ) : __( 'Save draft' );\n\n\t/* translators: button label text should, if possible, be under 16 characters. */\n\tconst shortLabel = __( 'Save' );\n\n\tconst isSaved = forceSavedMessage || ( ! isNew && ! isDirty );\n\tconst isSavedState = isSaving || isSaved;\n\tconst isDisabled = isSaving || isSaved || ! isSaveable;\n\n\tlet text;\n\n\tif ( isSaving ) {\n\t\ttext = isAutosaving ? __( 'Autosaving' ) : __( 'Saving' );\n\t} else if ( isSaved ) {\n\t\ttext = __( 'Saved' );\n\t} else if ( isLargeViewport ) {\n\t\ttext = label;\n\t} else if ( showIconLabels ) {\n\t\ttext = shortLabel;\n\t}\n\n\t// Use common Button instance for all saved states so that focus is not\n\t// lost.\n\treturn (\n\t\t<Button\n\t\t\tclassName={\n\t\t\t\tisSaveable || isSaving\n\t\t\t\t\t? classnames( {\n\t\t\t\t\t\t\t'editor-post-save-draft': ! isSavedState,\n\t\t\t\t\t\t\t'editor-post-saved-state': isSavedState,\n\t\t\t\t\t\t\t'is-saving': isSaving,\n\t\t\t\t\t\t\t'is-autosaving': isAutosaving,\n\t\t\t\t\t\t\t'is-saved': isSaved,\n\t\t\t\t\t\t\t[ getAnimateClassName( {\n\t\t\t\t\t\t\t\ttype: 'loading',\n\t\t\t\t\t\t\t} ) ]: isSaving,\n\t\t\t\t\t } )\n\t\t\t\t\t: undefined\n\t\t\t}\n\t\t\tonClick={ isDisabled ? undefined : () => savePost() }\n\t\t\t/*\n\t\t\t * We want the tooltip to show the keyboard shortcut only when the\n\t\t\t * button does something, i.e. when it's not disabled.\n\t\t\t */\n\t\t\tshortcut={ isDisabled ? undefined : displayShortcut.primary( 's' ) }\n\t\t\t/*\n\t\t\t * Displaying the keyboard shortcut conditionally makes the tooltip\n\t\t\t * itself show conditionally. This would trigger a full-rerendering\n\t\t\t * of the button that we want to avoid. By setting `showTooltip`,\n\t\t\t & the tooltip is always rendered even when there's no keyboard shortcut.\n\t\t\t */\n\t\t\tshowTooltip\n\t\t\tvariant=\"tertiary\"\n\t\t\ticon={ isLargeViewport ? undefined : cloudUpload }\n\t\t\t// Make sure the aria-label has always a value, as the default `text` is undefined on small screens.\n\t\t\tlabel={ text || label }\n\t\t\taria-disabled={ isDisabled }\n\t\t>\n\t\t\t{ isSavedState && <Icon icon={ isSaved ? check : cloud } /> }\n\t\t\t{ text }\n\t\t</Button>\n\t);\n}\n"]}
|
|
@@ -35,6 +35,7 @@ function PostSticky(_ref) {
|
|
|
35
35
|
postSticky = false
|
|
36
36
|
} = _ref;
|
|
37
37
|
return (0, _element.createElement)(_check.default, null, (0, _element.createElement)(_components.CheckboxControl, {
|
|
38
|
+
__nextHasNoMarginBottom: true,
|
|
38
39
|
label: (0, _i18n.__)('Stick to the top of the blog'),
|
|
39
40
|
checked: postSticky,
|
|
40
41
|
onChange: () => onUpdateSticky(!postSticky)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/editor/src/components/post-sticky/index.js"],"names":["PostSticky","onUpdateSticky","postSticky","select","editorStore","getEditedPostAttribute","dispatch","editPost","sticky"],"mappings":";;;;;;;;;;;;AAGA;;AACA;;AACA;;AACA;;AAKA;;AACA;;AAZA;AACA;AACA;;AAMA;AACA;AACA;AAIO,SAASA,UAAT,OAA8D;AAAA,MAAzC;AAAEC,IAAAA,cAAF;AAAkBC,IAAAA,UAAU,GAAG;AAA/B,GAAyC;AACpE,SACC,4BAAC,cAAD,QACC,4BAAC,2BAAD;AACC,IAAA,KAAK,EAAG,cAAI,8BAAJ,
|
|
1
|
+
{"version":3,"sources":["@wordpress/editor/src/components/post-sticky/index.js"],"names":["PostSticky","onUpdateSticky","postSticky","select","editorStore","getEditedPostAttribute","dispatch","editPost","sticky"],"mappings":";;;;;;;;;;;;AAGA;;AACA;;AACA;;AACA;;AAKA;;AACA;;AAZA;AACA;AACA;;AAMA;AACA;AACA;AAIO,SAASA,UAAT,OAA8D;AAAA,MAAzC;AAAEC,IAAAA,cAAF;AAAkBC,IAAAA,UAAU,GAAG;AAA/B,GAAyC;AACpE,SACC,4BAAC,cAAD,QACC,4BAAC,2BAAD;AACC,IAAA,uBAAuB,MADxB;AAEC,IAAA,KAAK,EAAG,cAAI,8BAAJ,CAFT;AAGC,IAAA,OAAO,EAAGA,UAHX;AAIC,IAAA,QAAQ,EAAG,MAAMD,cAAc,CAAE,CAAEC,UAAJ;AAJhC,IADD,CADD;AAUA;;eAEc,sBAAS,CACvB,sBAAcC,MAAF,IAAc;AACzB,SAAO;AACND,IAAAA,UAAU,EACTC,MAAM,CAAEC,YAAF,CAAN,CAAsBC,sBAAtB,CAA8C,QAA9C;AAFK,GAAP;AAIA,CALD,CADuB,EAOvB,wBAAgBC,QAAF,IAAgB;AAC7B,SAAO;AACNL,IAAAA,cAAc,CAAEC,UAAF,EAAe;AAC5BI,MAAAA,QAAQ,CAAEF,YAAF,CAAR,CAAwBG,QAAxB,CAAkC;AAAEC,QAAAA,MAAM,EAAEN;AAAV,OAAlC;AACA;;AAHK,GAAP;AAKA,CAND,CAPuB,CAAT,EAcVF,UAdU,C","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { CheckboxControl } from '@wordpress/components';\nimport { withSelect, withDispatch } from '@wordpress/data';\nimport { compose } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport PostStickyCheck from './check';\nimport { store as editorStore } from '../../store';\n\nexport function PostSticky( { onUpdateSticky, postSticky = false } ) {\n\treturn (\n\t\t<PostStickyCheck>\n\t\t\t<CheckboxControl\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tlabel={ __( 'Stick to the top of the blog' ) }\n\t\t\t\tchecked={ postSticky }\n\t\t\t\tonChange={ () => onUpdateSticky( ! postSticky ) }\n\t\t\t/>\n\t\t</PostStickyCheck>\n\t);\n}\n\nexport default compose( [\n\twithSelect( ( select ) => {\n\t\treturn {\n\t\t\tpostSticky:\n\t\t\t\tselect( editorStore ).getEditedPostAttribute( 'sticky' ),\n\t\t};\n\t} ),\n\twithDispatch( ( dispatch ) => {\n\t\treturn {\n\t\t\tonUpdateSticky( postSticky ) {\n\t\t\t\tdispatch( editorStore ).editPost( { sticky: postSticky } );\n\t\t\t},\n\t\t};\n\t} ),\n] )( PostSticky );\n"]}
|
|
@@ -69,7 +69,7 @@ const DEFAULT_QUERY = {
|
|
|
69
69
|
const isSameTermName = (termA, termB) => (0, _terms.unescapeString)(termA).toLowerCase() === (0, _terms.unescapeString)(termB).toLowerCase();
|
|
70
70
|
|
|
71
71
|
const termNamesToIds = (names, terms) => {
|
|
72
|
-
return names.map(termName =>
|
|
72
|
+
return names.map(termName => terms.find(term => isSameTermName(term.name, termName)).id);
|
|
73
73
|
}; // Tries to create a term or fetch it if it already exists.
|
|
74
74
|
|
|
75
75
|
|
|
@@ -185,7 +185,7 @@ function FlatTermSelector(_ref) {
|
|
|
185
185
|
|
|
186
186
|
return acc;
|
|
187
187
|
}, []);
|
|
188
|
-
const newTermNames = uniqueTerms.filter(termName => !
|
|
188
|
+
const newTermNames = uniqueTerms.filter(termName => !availableTerms.find(term => isSameTermName(term.name, termName))); // Optimistically update term values.
|
|
189
189
|
// The selector will always re-fetch terms later.
|
|
190
190
|
|
|
191
191
|
setValues(uniqueTerms);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/editor/src/components/post-taxonomies/flat-term-selector.js"],"names":["EMPTY_ARRAY","MAX_TERMS_SUGGESTIONS","DEFAULT_QUERY","per_page","orderby","order","_fields","context","isSameTermName","termA","termB","toLowerCase","termNamesToIds","names","terms","map","termName","term","name","id","findOrCreateTerm","restBase","namespace","escapedTermName","path","method","data","catch","error","code","Promise","reject","resolve","term_id","then","unescapeTerm","FlatTermSelector","slug","values","setValues","search","setSearch","debouncedSearch","termIds","taxonomy","hasAssignAction","hasCreateAction","hasResolvedTerms","select","getCurrentPost","getEditedPostAttribute","editorStore","getEntityRecords","getTaxonomy","hasFinishedResolution","coreStore","post","_taxonomy","_termIds","rest_base","query","include","join","length","searchResults","newValues","suggestions","editPost","onUpdateTerms","newTermIds","onChange","termNames","availableTerms","uniqueTerms","reduce","acc","some","n","push","newTermNames","filter","rest_namespace","all","newTerms","newAvailableTerms","concat","appendTerm","newTerm","includes","termAddedMessage","newTermLabel","singularName","termAddedLabel","termRemovedLabel","removeTermLabel","added","removed","remove"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { find, get } from 'lodash';\nimport escapeHtml from 'escape-html';\n\n/**\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 { store as coreStore } from '@wordpress/core-data';\nimport { useDebounce } from '@wordpress/compose';\nimport apiFetch from '@wordpress/api-fetch';\nimport { speak } from '@wordpress/a11y';\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 * Module constants\n */\nconst MAX_TERMS_SUGGESTIONS = 20;\nconst DEFAULT_QUERY = {\n\tper_page: MAX_TERMS_SUGGESTIONS,\n\torderby: 'count',\n\torder: 'desc',\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.map(\n\t\t( termName ) =>\n\t\t\tfind( terms, ( term ) => isSameTermName( term.name, termName ) ).id\n\t);\n};\n\n// Tries to create a term or fetch it if it already exists.\nfunction findOrCreateTerm( termName, restBase, namespace ) {\n\tconst escapedTermName = escapeHtml( termName );\n\n\treturn apiFetch( {\n\t\tpath: `/${ namespace }/${ restBase }`,\n\t\tmethod: 'POST',\n\t\tdata: { name: escapedTermName },\n\t} )\n\t\t.catch( ( error ) => {\n\t\t\tif ( error.code !== 'term_exists' ) {\n\t\t\t\treturn Promise.reject( error );\n\t\t\t}\n\n\t\t\treturn Promise.resolve( {\n\t\t\t\tid: error.data.term_id,\n\t\t\t\tname: termName,\n\t\t\t} );\n\t\t} )\n\t\t.then( unescapeTerm );\n}\n\nexport function FlatTermSelector( { slug } ) {\n\tconst [ values, setValues ] = useState( [] );\n\tconst [ search, setSearch ] = useState( '' );\n\tconst debouncedSearch = useDebounce( setSearch, 500 );\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? get(\n\t\t\t\t\t\t\tpost,\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t'_links',\n\t\t\t\t\t\t\t\t'wp:action-create-' + _taxonomy.rest_base,\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tfalse\n\t\t\t\t\t )\n\t\t\t\t\t: false,\n\t\t\t\thasAssignAction: _taxonomy\n\t\t\t\t\t? get(\n\t\t\t\t\t\t\tpost,\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t'_links',\n\t\t\t\t\t\t\t\t'wp:action-assign-' + _taxonomy.rest_base,\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tfalse\n\t\t\t\t\t )\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 ]\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\n\tif ( ! hasAssignAction ) {\n\t\treturn null;\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! find( availableTerms, ( 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\treturn onUpdateTerms(\n\t\t\t\ttermNamesToIds( uniqueTerms, availableTerms )\n\t\t\t);\n\t\t}\n\n\t\tif ( ! hasCreateAction ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst namespace = taxonomy?.rest_namespace ?? 'wp/v2';\n\t\tPromise.all(\n\t\t\tnewTermNames.map( ( termName ) =>\n\t\t\t\tfindOrCreateTerm( termName, taxonomy.rest_base, namespace )\n\t\t\t)\n\t\t).then( ( newTerms ) => {\n\t\t\tconst newAvailableTerms = availableTerms.concat( newTerms );\n\t\t\treturn onUpdateTerms(\n\t\t\t\ttermNamesToIds( uniqueTerms, newAvailableTerms )\n\t\t\t);\n\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 termAddedMessage = sprintf(\n\t\t\t/* translators: %s: term name. */\n\t\t\t_x( '%s added', 'term' ),\n\t\t\tget(\n\t\t\t\ttaxonomy,\n\t\t\t\t[ 'labels', 'singular_name' ],\n\t\t\t\tslug === 'post_tag' ? __( 'Tag' ) : __( 'Term' )\n\t\t\t)\n\t\t);\n\n\t\tspeak( termAddedMessage, 'assertive' );\n\t\tonUpdateTerms( newTermIds );\n\t}\n\n\tconst newTermLabel = get(\n\t\ttaxonomy,\n\t\t[ 'labels', 'add_new_item' ],\n\t\tslug === 'post_tag' ? __( 'Add new tag' ) : __( 'Add new Term' )\n\t);\n\tconst singularName = get(\n\t\ttaxonomy,\n\t\t[ 'labels', 'singular_name' ],\n\t\tslug === 'post_tag' ? __( 'Tag' ) : __( 'Term' )\n\t);\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\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/>\n\t\t\t<MostUsedTerms taxonomy={ taxonomy } onSelect={ appendTerm } />\n\t\t</>\n\t);\n}\n\nexport default withFilters( 'editor.PostTaxonomyType' )( FlatTermSelector );\n"]}
|
|
1
|
+
{"version":3,"sources":["@wordpress/editor/src/components/post-taxonomies/flat-term-selector.js"],"names":["EMPTY_ARRAY","MAX_TERMS_SUGGESTIONS","DEFAULT_QUERY","per_page","orderby","order","_fields","context","isSameTermName","termA","termB","toLowerCase","termNamesToIds","names","terms","map","termName","find","term","name","id","findOrCreateTerm","restBase","namespace","escapedTermName","path","method","data","catch","error","code","Promise","reject","resolve","term_id","then","unescapeTerm","FlatTermSelector","slug","values","setValues","search","setSearch","debouncedSearch","termIds","taxonomy","hasAssignAction","hasCreateAction","hasResolvedTerms","select","getCurrentPost","getEditedPostAttribute","editorStore","getEntityRecords","getTaxonomy","hasFinishedResolution","coreStore","post","_taxonomy","_termIds","rest_base","query","include","join","length","searchResults","newValues","suggestions","editPost","onUpdateTerms","newTermIds","onChange","termNames","availableTerms","uniqueTerms","reduce","acc","some","n","push","newTermNames","filter","rest_namespace","all","newTerms","newAvailableTerms","concat","appendTerm","newTerm","includes","termAddedMessage","newTermLabel","singularName","termAddedLabel","termRemovedLabel","removeTermLabel","added","removed","remove"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { get } from 'lodash';\nimport escapeHtml from 'escape-html';\n\n/**\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 { store as coreStore } from '@wordpress/core-data';\nimport { useDebounce } from '@wordpress/compose';\nimport apiFetch from '@wordpress/api-fetch';\nimport { speak } from '@wordpress/a11y';\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 * Module constants\n */\nconst MAX_TERMS_SUGGESTIONS = 20;\nconst DEFAULT_QUERY = {\n\tper_page: MAX_TERMS_SUGGESTIONS,\n\torderby: 'count',\n\torder: 'desc',\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.map(\n\t\t( termName ) =>\n\t\t\tterms.find( ( term ) => isSameTermName( term.name, termName ) ).id\n\t);\n};\n\n// Tries to create a term or fetch it if it already exists.\nfunction findOrCreateTerm( termName, restBase, namespace ) {\n\tconst escapedTermName = escapeHtml( termName );\n\n\treturn apiFetch( {\n\t\tpath: `/${ namespace }/${ restBase }`,\n\t\tmethod: 'POST',\n\t\tdata: { name: escapedTermName },\n\t} )\n\t\t.catch( ( error ) => {\n\t\t\tif ( error.code !== 'term_exists' ) {\n\t\t\t\treturn Promise.reject( error );\n\t\t\t}\n\n\t\t\treturn Promise.resolve( {\n\t\t\t\tid: error.data.term_id,\n\t\t\t\tname: termName,\n\t\t\t} );\n\t\t} )\n\t\t.then( unescapeTerm );\n}\n\nexport function FlatTermSelector( { slug } ) {\n\tconst [ values, setValues ] = useState( [] );\n\tconst [ search, setSearch ] = useState( '' );\n\tconst debouncedSearch = useDebounce( setSearch, 500 );\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? get(\n\t\t\t\t\t\t\tpost,\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t'_links',\n\t\t\t\t\t\t\t\t'wp:action-create-' + _taxonomy.rest_base,\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tfalse\n\t\t\t\t\t )\n\t\t\t\t\t: false,\n\t\t\t\thasAssignAction: _taxonomy\n\t\t\t\t\t? get(\n\t\t\t\t\t\t\tpost,\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t'_links',\n\t\t\t\t\t\t\t\t'wp:action-assign-' + _taxonomy.rest_base,\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tfalse\n\t\t\t\t\t )\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 ]\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\n\tif ( ! hasAssignAction ) {\n\t\treturn null;\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\treturn onUpdateTerms(\n\t\t\t\ttermNamesToIds( uniqueTerms, availableTerms )\n\t\t\t);\n\t\t}\n\n\t\tif ( ! hasCreateAction ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst namespace = taxonomy?.rest_namespace ?? 'wp/v2';\n\t\tPromise.all(\n\t\t\tnewTermNames.map( ( termName ) =>\n\t\t\t\tfindOrCreateTerm( termName, taxonomy.rest_base, namespace )\n\t\t\t)\n\t\t).then( ( newTerms ) => {\n\t\t\tconst newAvailableTerms = availableTerms.concat( newTerms );\n\t\t\treturn onUpdateTerms(\n\t\t\t\ttermNamesToIds( uniqueTerms, newAvailableTerms )\n\t\t\t);\n\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 termAddedMessage = sprintf(\n\t\t\t/* translators: %s: term name. */\n\t\t\t_x( '%s added', 'term' ),\n\t\t\tget(\n\t\t\t\ttaxonomy,\n\t\t\t\t[ 'labels', 'singular_name' ],\n\t\t\t\tslug === 'post_tag' ? __( 'Tag' ) : __( 'Term' )\n\t\t\t)\n\t\t);\n\n\t\tspeak( termAddedMessage, 'assertive' );\n\t\tonUpdateTerms( newTermIds );\n\t}\n\n\tconst newTermLabel = get(\n\t\ttaxonomy,\n\t\t[ 'labels', 'add_new_item' ],\n\t\tslug === 'post_tag' ? __( 'Add new tag' ) : __( 'Add new Term' )\n\t);\n\tconst singularName = get(\n\t\ttaxonomy,\n\t\t[ 'labels', 'singular_name' ],\n\t\tslug === 'post_tag' ? __( 'Tag' ) : __( 'Term' )\n\t);\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\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/>\n\t\t\t<MostUsedTerms taxonomy={ taxonomy } onSelect={ appendTerm } />\n\t\t</>\n\t);\n}\n\nexport default withFilters( 'editor.PostTaxonomyType' )( FlatTermSelector );\n"]}
|
|
@@ -109,7 +109,7 @@ function sortBySelected(termsTree, terms) {
|
|
|
109
109
|
|
|
110
110
|
|
|
111
111
|
function findTerm(terms, parent, name) {
|
|
112
|
-
return
|
|
112
|
+
return terms.find(term => {
|
|
113
113
|
return (!term.parent && !parent || parseInt(term.parent) === parseInt(parent)) && term.name.toLowerCase() === name.toLowerCase();
|
|
114
114
|
});
|
|
115
115
|
}
|
|
@@ -338,6 +338,7 @@ function HierarchicalTermSelector(_ref) {
|
|
|
338
338
|
key: term.id,
|
|
339
339
|
className: "editor-post-taxonomies__hierarchical-terms-choice"
|
|
340
340
|
}, (0, _element.createElement)(_components.CheckboxControl, {
|
|
341
|
+
__nextHasNoMarginBottom: true,
|
|
341
342
|
checked: terms.indexOf(term.id) !== -1,
|
|
342
343
|
onChange: () => {
|
|
343
344
|
const termId = parseInt(term.id, 10);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/editor/src/components/post-taxonomies/hierarchical-term-selector.js"],"names":["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","term","parseInt","toLowerCase","getFilterMatcher","filterValue","matchTermsForFilter","originalTerm","HierarchicalTermSelector","slug","adding","setAdding","formName","setFormName","formParent","setFormParent","showForm","setShowForm","setFilterValue","filteredTermsTree","setFilteredTermsTree","debouncedSpeak","speak","hasCreateAction","hasAssignAction","loading","availableTerms","taxonomy","select","getCurrentPost","getEditedPostAttribute","editorStore","getTaxonomy","getEntityRecords","isResolving","coreStore","_taxonomy","rest_base","editPost","saveEntityRecord","availableTermsTree","addTerm","onUpdateTerms","termIds","onChange","termId","hasTerm","includes","newTerms","onChangeFormName","value","onChangeFormParent","parentId","onToggleForm","onAddTerm","event","preventDefault","existingTerm","some","newTerm","termAddedMessage","setFilter","newFilteredTermsTree","getResultCount","count","i","resultCount","resultsFoundMessage","renderTerms","renderedTerms","labelWithFallback","labelProperty","fallbackIsCategory","fallbackIsNotCategory","newTermButtonLabel","newTermLabel","parentSelectLabel","noParentOption","newTermSubmitLabel","filterLabel","groupLabel","showFilter"],"mappings":";;;;;;;;;;;AASA;;AANA;;AAKA;;AAEA;;AAOA;;AACA;;AACA;;AACA;;AAKA;;AACA;;AA1BA;AACA;AACA;;AAGA;AACA;AACA;;AAeA;AACA;AACA;;AAIA;AACA;AACA;AACA,MAAMA,aAAa,GAAG;AACrBC,EAAAA,QAAQ,EAAE,CAAC,CADU;AAErBC,EAAAA,OAAO,EAAE,MAFY;AAGrBC,EAAAA,KAAK,EAAE,KAHc;AAIrBC,EAAAA,OAAO,EAAE,gBAJY;AAKrBC,EAAAA,OAAO,EAAE;AALY,CAAtB;AAQA,MAAMC,0BAA0B,GAAG,CAAnC;AAEA,MAAMC,WAAW,GAAG,EAApB;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,SAASC,cAAT,CAAyBC,SAAzB,EAAoCC,KAApC,EAA4C;AAClD,QAAMC,gBAAgB,GAAKC,QAAF,IAAgB;AACxC,QAAKF,KAAK,CAACG,OAAN,CAAeD,QAAQ,CAACE,EAAxB,MAAiC,CAAC,CAAvC,EAA2C;AAC1C,aAAO,IAAP;AACA;;AACD,QAAKC,SAAS,KAAKH,QAAQ,CAACI,QAA5B,EAAuC;AACtC,aAAO,KAAP;AACA;;AACD,WACCJ,QAAQ,CAACI,QAAT,CACEC,GADF,CACON,gBADP,EAEEO,MAFF,CAEYC,KAAF,IAAaA,KAFvB,EAE+BC,MAF/B,GAEwC,CAHzC;AAKA,GAZD;;AAaA,QAAMC,qBAAqB,GAAG,CAAEC,KAAF,EAASC,KAAT,KAAoB;AACjD,UAAMC,aAAa,GAAGb,gBAAgB,CAAEW,KAAF,CAAtC;AACA,UAAMG,aAAa,GAAGd,gBAAgB,CAAEY,KAAF,CAAtC;;AAEA,QAAKC,aAAa,KAAKC,aAAvB,EAAuC;AACtC,aAAO,CAAP;AACA;;AAED,QAAKD,aAAa,IAAI,CAAEC,aAAxB,EAAwC;AACvC,aAAO,CAAC,CAAR;AACA;;AAED,QAAK,CAAED,aAAF,IAAmBC,aAAxB,EAAwC;AACvC,aAAO,CAAP;AACA;;AAED,WAAO,CAAP;AACA,GAjBD;;AAkBA,QAAMC,WAAW,GAAG,CAAE,GAAGjB,SAAL,CAApB;AACAiB,EAAAA,WAAW,CAACC,IAAZ,CAAkBN,qBAAlB;AACA,SAAOK,WAAP;AACA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,SAASE,QAAT,CAAmBlB,KAAnB,EAA0BmB,MAA1B,EAAkCC,IAAlC,EAAyC;AAC/C,SAAO,kBAAMpB,KAAN,EAAeqB,IAAF,IAAY;AAC/B,WACC,CAAI,CAAEA,IAAI,CAACF,MAAP,IAAiB,CAAEA,MAArB,IACDG,QAAQ,CAAED,IAAI,CAACF,MAAP,CAAR,KAA4BG,QAAQ,CAAEH,MAAF,CADrC,KAEAE,IAAI,CAACD,IAAL,CAAUG,WAAV,OAA4BH,IAAI,CAACG,WAAL,EAH7B;AAKA,GANM,CAAP;AAOA;AAED;AACA;AACA;AACA;AACA;AACA;;;AACO,SAASC,gBAAT,CAA2BC,WAA3B,EAAyC;AAC/C,QAAMC,mBAAmB,GAAKC,YAAF,IAAoB;AAC/C,QAAK,OAAOF,WAAZ,EAA0B;AACzB,aAAOE,YAAP;AACA,KAH8C,CAK/C;AACA;;;AACA,UAAMN,IAAI,GAAG,EAAE,GAAGM;AAAL,KAAb,CAP+C,CAS/C;AACA;;AACA,QAAKN,IAAI,CAACf,QAAL,CAAcI,MAAd,GAAuB,CAA5B,EAAgC;AAC/BW,MAAAA,IAAI,CAACf,QAAL,GAAgBe,IAAI,CAACf,QAAL,CACdC,GADc,CACTmB,mBADS,EAEdlB,MAFc,CAEJC,KAAF,IAAaA,KAFP,CAAhB;AAGA,KAf8C,CAiB/C;AACA;;;AACA,QACC,CAAC,CAAD,KACCY,IAAI,CAACD,IAAL,CAAUG,WAAV,GAAwBpB,OAAxB,CAAiCsB,WAAW,CAACF,WAAZ,EAAjC,CADD,IAEAF,IAAI,CAACf,QAAL,CAAcI,MAAd,GAAuB,CAHxB,EAIE;AACD,aAAOW,IAAP;AACA,KAzB8C,CA2B/C;AACA;;;AACA,WAAO,KAAP;AACA,GA9BD;;AA+BA,SAAOK,mBAAP;AACA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,SAASE,wBAAT,OAA8C;AAAA,MAAX;AAAEC,IAAAA;AAAF,GAAW;AACpD,QAAM,CAAEC,MAAF,EAAUC,SAAV,IAAwB,uBAAU,KAAV,CAA9B;AACA,QAAM,CAAEC,QAAF,EAAYC,WAAZ,IAA4B,uBAAU,EAAV,CAAlC;AACA;AACD;AACA;;AACC,QAAM,CAAEC,UAAF,EAAcC,aAAd,IAAgC,uBAAU,EAAV,CAAtC;AACA,QAAM,CAAEC,QAAF,EAAYC,WAAZ,IAA4B,uBAAU,KAAV,CAAlC;AACA,QAAM,CAAEZ,WAAF,EAAea,cAAf,IAAkC,uBAAU,EAAV,CAAxC;AACA,QAAM,CAAEC,iBAAF,EAAqBC,oBAArB,IAA8C,uBAAU,EAAV,CAApD;AACA,QAAMC,cAAc,GAAG,0BAAaC,WAAb,EAAoB,GAApB,CAAvB;AAEA,QAAM;AACLC,IAAAA,eADK;AAELC,IAAAA,eAFK;AAGL5C,IAAAA,KAHK;AAIL6C,IAAAA,OAJK;AAKLC,IAAAA,cALK;AAMLC,IAAAA;AANK,MAOF,qBACDC,MAAF,IAAc;AACb,UAAM;AAAEC,MAAAA,cAAF;AAAkBC,MAAAA;AAAlB,QACLF,MAAM,CAAEG,YAAF,CADP;AAEA,UAAM;AAAEC,MAAAA,WAAF;AAAeC,MAAAA,gBAAf;AAAiCC,MAAAA;AAAjC,QACLN,MAAM,CAAEO,eAAF,CADP;;AAEA,UAAMC,SAAS,GAAGJ,WAAW,CAAEvB,IAAF,CAA7B;;AAEA,WAAO;AACNc,MAAAA,eAAe,EAAEa,SAAS,GACvB,iBACAP,cAAc,EADd,EAEA,CACC,QADD,EAEC,sBAAsBO,SAAS,CAACC,SAFjC,CAFA,EAMA,KANA,CADuB,GASvB,KAVG;AAWNb,MAAAA,eAAe,EAAEY,SAAS,GACvB,iBACAP,cAAc,EADd,EAEA,CACC,QADD,EAEC,sBAAsBO,SAAS,CAACC,SAFjC,CAFA,EAMA,KANA,CADuB,GASvB,KApBG;AAqBNzD,MAAAA,KAAK,EAAEwD,SAAS,GACbN,sBAAsB,CAAEM,SAAS,CAACC,SAAZ,CADT,GAEb5D,WAvBG;AAwBNgD,MAAAA,OAAO,EAAES,WAAW,CAAE,kBAAF,EAAsB,CACzC,UADyC,EAEzCzB,IAFyC,EAGzCvC,aAHyC,CAAtB,CAxBd;AA6BNwD,MAAAA,cAAc,EACbO,gBAAgB,CAAE,UAAF,EAAcxB,IAAd,EAAoBvC,aAApB,CAAhB,IACAO,WA/BK;AAgCNkD,MAAAA,QAAQ,EAAES;AAhCJ,KAAP;AAkCA,GA1CE,EA2CH,CAAE3B,IAAF,CA3CG,CAPJ;AAqDA,QAAM;AAAE6B,IAAAA;AAAF,MAAe,uBAAaP,YAAb,CAArB;AACA,QAAM;AAAEQ,IAAAA;AAAF,MAAuB,uBAAaJ,eAAb,CAA7B;AAEA,QAAMK,kBAAkB,GAAG,sBAC1B,MAAM9D,cAAc,CAAE,2BAAgBgD,cAAhB,CAAF,EAAoC9C,KAApC,CADM,EAE1B;AACA;AACA,GAAE8C,cAAF,CAJ0B,CAA3B;;AAOA,MAAK,CAAEF,eAAP,EAAyB;AACxB,WAAO,IAAP;AACA;AAED;AACD;AACA;AACA;AACA;AACA;;;AACC,QAAMiB,OAAO,GAAKxC,IAAF,IAAY;AAC3B,WAAOsC,gBAAgB,CAAE,UAAF,EAAc9B,IAAd,EAAoBR,IAApB,CAAvB;AACA,GAFD;AAIA;AACD;AACA;AACA;AACA;;;AACC,QAAMyC,aAAa,GAAKC,OAAF,IAAe;AACpCL,IAAAA,QAAQ,CAAE;AAAE,OAAEX,QAAQ,CAACU,SAAX,GAAwBM;AAA1B,KAAF,CAAR;AACA,GAFD;AAIA;AACD;AACA;AACA;AACA;;;AACC,QAAMC,QAAQ,GAAKC,MAAF,IAAc;AAC9B,UAAMC,OAAO,GAAGlE,KAAK,CAACmE,QAAN,CAAgBF,MAAhB,CAAhB;AACA,UAAMG,QAAQ,GAAGF,OAAO,GACrBlE,KAAK,CAACQ,MAAN,CAAgBJ,EAAF,IAAUA,EAAE,KAAK6D,MAA/B,CADqB,GAErB,CAAE,GAAGjE,KAAL,EAAYiE,MAAZ,CAFH;AAGAH,IAAAA,aAAa,CAAEM,QAAF,CAAb;AACA,GAND;;AAQA,QAAMC,gBAAgB,GAAKC,KAAF,IAAa;AACrCrC,IAAAA,WAAW,CAAEqC,KAAF,CAAX;AACA,GAFD;AAIA;AACD;AACA;AACA;AACA;;;AACC,QAAMC,kBAAkB,GAAKC,QAAF,IAAgB;AAC1CrC,IAAAA,aAAa,CAAEqC,QAAF,CAAb;AACA,GAFD;;AAIA,QAAMC,YAAY,GAAG,MAAM;AAC1BpC,IAAAA,WAAW,CAAE,CAAED,QAAJ,CAAX;AACA,GAFD;;AAIA,QAAMsC,SAAS,GAAG,MAAQC,KAAR,IAAmB;AACpCA,IAAAA,KAAK,CAACC,cAAN;;AACA,QAAK5C,QAAQ,KAAK,EAAb,IAAmBF,MAAxB,EAAiC;AAChC;AACA,KAJmC,CAMpC;;;AACA,UAAM+C,YAAY,GAAG3D,QAAQ,CAAE4B,cAAF,EAAkBZ,UAAlB,EAA8BF,QAA9B,CAA7B;;AACA,QAAK6C,YAAL,EAAoB;AACnB;AACA,UAAK,CAAE7E,KAAK,CAAC8E,IAAN,CAAczD,IAAF,IAAYA,IAAI,KAAKwD,YAAY,CAACzE,EAA9C,CAAP,EAA4D;AAC3D0D,QAAAA,aAAa,CAAE,CAAE,GAAG9D,KAAL,EAAY6E,YAAY,CAACzE,EAAzB,CAAF,CAAb;AACA;;AAED6B,MAAAA,WAAW,CAAE,EAAF,CAAX;AACAE,MAAAA,aAAa,CAAE,EAAF,CAAb;AAEA;AACA;;AACDJ,IAAAA,SAAS,CAAE,IAAF,CAAT;AAEA,UAAMgD,OAAO,GAAG,MAAMlB,OAAO,CAAE;AAC9BzC,MAAAA,IAAI,EAAEY,QADwB;AAE9Bb,MAAAA,MAAM,EAAEe,UAAU,GAAGA,UAAH,GAAgB7B;AAFJ,KAAF,CAA7B;AAKA,UAAM2E,gBAAgB,GAAG;AACxB;AACA,kBAAI,UAAJ,EAAgB,MAAhB,CAFwB,EAGxB,iBACCjC,QADD,EAEC,CAAE,QAAF,EAAY,eAAZ,CAFD,EAGClB,IAAI,KAAK,UAAT,GAAsB,cAAI,UAAJ,CAAtB,GAAyC,cAAI,MAAJ,CAH1C,CAHwB,CAAzB;AASA,qBAAOmD,gBAAP,EAAyB,WAAzB;AACAjD,IAAAA,SAAS,CAAE,KAAF,CAAT;AACAE,IAAAA,WAAW,CAAE,EAAF,CAAX;AACAE,IAAAA,aAAa,CAAE,EAAF,CAAb;AACA2B,IAAAA,aAAa,CAAE,CAAE,GAAG9D,KAAL,EAAY+E,OAAO,CAAC3E,EAApB,CAAF,CAAb;AACA,GAxCD;;AA0CA,QAAM6E,SAAS,GAAKX,KAAF,IAAa;AAC9B,UAAMY,oBAAoB,GAAGtB,kBAAkB,CAC7CrD,GAD2B,CACtBiB,gBAAgB,CAAE8C,KAAF,CADM,EAE3B9D,MAF2B,CAEjBa,IAAF,IAAYA,IAFO,CAA7B;;AAGA,UAAM8D,cAAc,GAAKpF,SAAF,IAAiB;AACvC,UAAIqF,KAAK,GAAG,CAAZ;;AACA,WAAM,IAAIC,CAAC,GAAG,CAAd,EAAiBA,CAAC,GAAGtF,SAAS,CAACW,MAA/B,EAAuC2E,CAAC,EAAxC,EAA6C;AAC5CD,QAAAA,KAAK;;AACL,YAAK/E,SAAS,KAAKN,SAAS,CAAEsF,CAAF,CAAT,CAAe/E,QAAlC,EAA6C;AAC5C8E,UAAAA,KAAK,IAAID,cAAc,CAAEpF,SAAS,CAAEsF,CAAF,CAAT,CAAe/E,QAAjB,CAAvB;AACA;AACD;;AACD,aAAO8E,KAAP;AACA,KATD;;AAWA9C,IAAAA,cAAc,CAAEgC,KAAF,CAAd;AACA9B,IAAAA,oBAAoB,CAAE0C,oBAAF,CAApB;AAEA,UAAMI,WAAW,GAAGH,cAAc,CAAED,oBAAF,CAAlC;AACA,UAAMK,mBAAmB,GAAG;AAC3B;AACA,kBAAI,kBAAJ,EAAwB,mBAAxB,EAA6CD,WAA7C,CAF2B,EAG3BA,WAH2B,CAA5B;AAMA7C,IAAAA,cAAc,CAAE8C,mBAAF,EAAuB,WAAvB,CAAd;AACA,GA1BD;;AA4BA,QAAMC,WAAW,GAAKC,aAAF,IAAqB;AACxC,WAAOA,aAAa,CAAClF,GAAd,CAAqBc,IAAF,IAAY;AACrC,aACC;AACC,QAAA,GAAG,EAAGA,IAAI,CAACjB,EADZ;AAEC,QAAA,SAAS,EAAC;AAFX,SAIC,4BAAC,2BAAD;AACC,QAAA,OAAO,EAAGJ,KAAK,CAACG,OAAN,CAAekB,IAAI,CAACjB,EAApB,MAA6B,CAAC,CADzC;AAEC,QAAA,QAAQ,EAAG,MAAM;AAChB,gBAAM6D,MAAM,GAAG3C,QAAQ,CAAED,IAAI,CAACjB,EAAP,EAAW,EAAX,CAAvB;AACA4D,UAAAA,QAAQ,CAAEC,MAAF,CAAR;AACA,SALF;AAMC,QAAA,KAAK,EAAG,sBAAgB5C,IAAI,CAACD,IAArB;AANT,QAJD,EAYG,CAAC,CAAEC,IAAI,CAACf,QAAL,CAAcI,MAAjB,IACD;AAAK,QAAA,SAAS,EAAC;AAAf,SACG8E,WAAW,CAAEnE,IAAI,CAACf,QAAP,CADd,CAbF,CADD;AAoBA,KArBM,CAAP;AAsBA,GAvBD;;AAyBA,QAAMoF,iBAAiB,GAAG,CACzBC,aADyB,EAEzBC,kBAFyB,EAGzBC,qBAHyB,KAKzB,iBACC9C,QADD,EAEC,CAAE,QAAF,EAAY4C,aAAZ,CAFD,EAGC9D,IAAI,KAAK,UAAT,GAAsB+D,kBAAtB,GAA2CC,qBAH5C,CALD;;AAUA,QAAMC,kBAAkB,GAAGJ,iBAAiB,CAC3C,cAD2C,EAE3C,cAAI,kBAAJ,CAF2C,EAG3C,cAAI,cAAJ,CAH2C,CAA5C;AAKA,QAAMK,YAAY,GAAGL,iBAAiB,CACrC,eADqC,EAErC,cAAI,kBAAJ,CAFqC,EAGrC,cAAI,cAAJ,CAHqC,CAAtC;AAKA,QAAMM,iBAAiB,GAAGN,iBAAiB,CAC1C,aAD0C,EAE1C,cAAI,iBAAJ,CAF0C,EAG1C,cAAI,aAAJ,CAH0C,CAA3C;AAKA,QAAMO,cAAc,GAAI,KAAKD,iBAAmB,IAAhD;AACA,QAAME,kBAAkB,GAAGJ,kBAA3B;AACA,QAAMK,WAAW,GAAG,iBACnBpD,QADmB,EAEnB,CAAE,QAAF,EAAY,cAAZ,CAFmB,EAGnB,cAAI,cAAJ,CAHmB,CAApB;AAKA,QAAMqD,UAAU,GAAG,iBAAKrD,QAAL,EAAe,CAAE,MAAF,CAAf,EAA2B,cAAI,OAAJ,CAA3B,CAAnB;AACA,QAAMsD,UAAU,GAAGvD,cAAc,CAACpC,MAAf,IAAyBd,0BAA5C;AAEA,SACC,qDACGyG,UAAU,IACX,4BAAC,uBAAD;AACC,IAAA,SAAS,EAAC,mDADX;AAEC,IAAA,KAAK,EAAGF,WAFT;AAGC,IAAA,KAAK,EAAG1E,WAHT;AAIC,IAAA,QAAQ,EAAGwD;AAJZ,IAFF,EASC;AACC,IAAA,SAAS,EAAC,iDADX;AAEC,IAAA,QAAQ,EAAC,GAFV;AAGC,IAAA,IAAI,EAAC,OAHN;AAIC,kBAAamB;AAJd,KAMGZ,WAAW,CACZ,OAAO/D,WAAP,GAAqBc,iBAArB,GAAyCqB,kBAD7B,CANd,CATD,EAmBG,CAAEf,OAAF,IAAaF,eAAb,IACD,4BAAC,kBAAD;AACC,IAAA,OAAO,EAAG8B,YADX;AAEC,IAAA,SAAS,EAAC,gDAFX;AAGC,qBAAgBrC,QAHjB;AAIC,IAAA,OAAO,EAAC;AAJT,KAMG0D,kBANH,CApBF,EA6BG1D,QAAQ,IACT;AAAM,IAAA,QAAQ,EAAGsC;AAAjB,KACC,4BAAC,uBAAD;AACC,IAAA,SAAS,EAAC,kDADX;AAEC,IAAA,KAAK,EAAGqB,YAFT;AAGC,IAAA,KAAK,EAAG/D,QAHT;AAIC,IAAA,QAAQ,EAAGqC,gBAJZ;AAKC,IAAA,QAAQ;AALT,IADD,EAQG,CAAC,CAAEvB,cAAc,CAACpC,MAAlB,IACD,4BAAC,sBAAD;AACC,IAAA,KAAK,EAAGsF,iBADT;AAEC,IAAA,aAAa,EAAGC,cAFjB;AAGC,IAAA,QAAQ,EAAG1B,kBAHZ;AAIC,IAAA,UAAU,EAAGrC,UAJd;AAKC,IAAA,IAAI,EAAG0B;AALR,IATF,EAiBC,4BAAC,kBAAD;AACC,IAAA,OAAO,EAAC,WADT;AAEC,IAAA,IAAI,EAAC,QAFN;AAGC,IAAA,SAAS,EAAC;AAHX,KAKGsC,kBALH,CAjBD,CA9BF,CADD;AA2DA;;eAEc,6BAAa,yBAAb,EACdtE,wBADc,C","sourcesContent":["/**\n * External dependencies\n */\nimport { find, get, unescape as unescapeString } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { __, _n, _x, sprintf } from '@wordpress/i18n';\nimport { useMemo, useState } from '@wordpress/element';\nimport {\n\tButton,\n\tCheckboxControl,\n\tTextControl,\n\tTreeSelect,\n\twithFilters,\n} 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';\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 find( terms, ( term ) => {\n\t\treturn (\n\t\t\t( ( ! term.parent && ! parent ) ||\n\t\t\t\tparseInt( term.parent ) === parseInt( parent ) ) &&\n\t\t\tterm.name.toLowerCase() === name.toLowerCase()\n\t\t);\n\t} );\n}\n\n/**\n * Get filter matcher function.\n *\n * @param {string} filterValue Filter value.\n * @return {(function(Object): (Object|boolean))} Matcher function.\n */\nexport function getFilterMatcher( filterValue ) {\n\tconst matchTermsForFilter = ( originalTerm ) => {\n\t\tif ( '' === filterValue ) {\n\t\t\treturn originalTerm;\n\t\t}\n\n\t\t// Shallow clone, because we'll be filtering the term's children and\n\t\t// don't want to modify the original term.\n\t\tconst term = { ...originalTerm };\n\n\t\t// Map and filter the children, recursive so we deal with grandchildren\n\t\t// and any deeper levels.\n\t\tif ( term.children.length > 0 ) {\n\t\t\tterm.children = term.children\n\t\t\t\t.map( matchTermsForFilter )\n\t\t\t\t.filter( ( child ) => child );\n\t\t}\n\n\t\t// If the term's name contains the filterValue, or it has children\n\t\t// (i.e. some child matched at some point in the tree) then return it.\n\t\tif (\n\t\t\t-1 !==\n\t\t\t\tterm.name.toLowerCase().indexOf( filterValue.toLowerCase() ) ||\n\t\t\tterm.children.length > 0\n\t\t) {\n\t\t\treturn term;\n\t\t}\n\n\t\t// Otherwise, return false. After mapping, the list of terms will need\n\t\t// to have false values filtered out.\n\t\treturn false;\n\t};\n\treturn matchTermsForFilter;\n}\n\n/**\n * Hierarchical term selector.\n *\n * @param {Object} props Component props.\n * @param {string} props.slug Taxonomy slug.\n * @return {WPElement} Hierarchical term selector component.\n */\nexport function HierarchicalTermSelector( { slug } ) {\n\tconst [ adding, setAdding ] = useState( false );\n\tconst [ formName, setFormName ] = useState( '' );\n\t/**\n\t * @type {[number|'', Function]}\n\t */\n\tconst [ formParent, setFormParent ] = useState( '' );\n\tconst [ showForm, setShowForm ] = useState( false );\n\tconst [ filterValue, setFilterValue ] = useState( '' );\n\tconst [ filteredTermsTree, setFilteredTermsTree ] = useState( [] );\n\tconst debouncedSpeak = useDebounce( speak, 500 );\n\n\tconst {\n\t\thasCreateAction,\n\t\thasAssignAction,\n\t\tterms,\n\t\tloading,\n\t\tavailableTerms,\n\t\ttaxonomy,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getCurrentPost, getEditedPostAttribute } =\n\t\t\t\tselect( editorStore );\n\t\t\tconst { getTaxonomy, getEntityRecords, isResolving } =\n\t\t\t\tselect( coreStore );\n\t\t\tconst _taxonomy = getTaxonomy( slug );\n\n\t\t\treturn {\n\t\t\t\thasCreateAction: _taxonomy\n\t\t\t\t\t? get(\n\t\t\t\t\t\t\tgetCurrentPost(),\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t'_links',\n\t\t\t\t\t\t\t\t'wp:action-create-' + _taxonomy.rest_base,\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tfalse\n\t\t\t\t\t )\n\t\t\t\t\t: false,\n\t\t\t\thasAssignAction: _taxonomy\n\t\t\t\t\t? get(\n\t\t\t\t\t\t\tgetCurrentPost(),\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t'_links',\n\t\t\t\t\t\t\t\t'wp:action-assign-' + _taxonomy.rest_base,\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tfalse\n\t\t\t\t\t )\n\t\t\t\t\t: false,\n\t\t\t\tterms: _taxonomy\n\t\t\t\t\t? getEditedPostAttribute( _taxonomy.rest_base )\n\t\t\t\t\t: EMPTY_ARRAY,\n\t\t\t\tloading: isResolving( 'getEntityRecords', [\n\t\t\t\t\t'taxonomy',\n\t\t\t\t\tslug,\n\t\t\t\t\tDEFAULT_QUERY,\n\t\t\t\t] ),\n\t\t\t\tavailableTerms:\n\t\t\t\t\tgetEntityRecords( 'taxonomy', slug, DEFAULT_QUERY ) ||\n\t\t\t\t\tEMPTY_ARRAY,\n\t\t\t\ttaxonomy: _taxonomy,\n\t\t\t};\n\t\t},\n\t\t[ slug ]\n\t);\n\n\tconst { editPost } = useDispatch( editorStore );\n\tconst { saveEntityRecord } = useDispatch( coreStore );\n\n\tconst availableTermsTree = useMemo(\n\t\t() => sortBySelected( buildTermsTree( availableTerms ), terms ),\n\t\t// Remove `terms` from the dependency list to avoid reordering every time\n\t\t// checking or unchecking a term.\n\t\t[ availableTerms ]\n\t);\n\n\tif ( ! hasAssignAction ) {\n\t\treturn null;\n\t}\n\n\t/**\n\t * Append new term.\n\t *\n\t * @param {Object} term Term object.\n\t * @return {Promise} A promise that resolves to save term object.\n\t */\n\tconst addTerm = ( term ) => {\n\t\treturn saveEntityRecord( 'taxonomy', slug, term );\n\t};\n\n\t/**\n\t * Update terms for post.\n\t *\n\t * @param {number[]} termIds Term ids.\n\t */\n\tconst onUpdateTerms = ( termIds ) => {\n\t\teditPost( { [ taxonomy.rest_base ]: termIds } );\n\t};\n\n\t/**\n\t * Handler for checking term.\n\t *\n\t * @param {number} termId\n\t */\n\tconst onChange = ( termId ) => {\n\t\tconst hasTerm = terms.includes( termId );\n\t\tconst newTerms = hasTerm\n\t\t\t? terms.filter( ( id ) => id !== termId )\n\t\t\t: [ ...terms, termId ];\n\t\tonUpdateTerms( newTerms );\n\t};\n\n\tconst onChangeFormName = ( value ) => {\n\t\tsetFormName( value );\n\t};\n\n\t/**\n\t * Handler for changing form parent.\n\t *\n\t * @param {number|''} parentId Parent post id.\n\t */\n\tconst onChangeFormParent = ( parentId ) => {\n\t\tsetFormParent( parentId );\n\t};\n\n\tconst onToggleForm = () => {\n\t\tsetShowForm( ! showForm );\n\t};\n\n\tconst onAddTerm = async ( event ) => {\n\t\tevent.preventDefault();\n\t\tif ( formName === '' || adding ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Check if the term we are adding already exists.\n\t\tconst existingTerm = findTerm( availableTerms, formParent, formName );\n\t\tif ( existingTerm ) {\n\t\t\t// If the term we are adding exists but is not selected select it.\n\t\t\tif ( ! terms.some( ( term ) => term === existingTerm.id ) ) {\n\t\t\t\tonUpdateTerms( [ ...terms, existingTerm.id ] );\n\t\t\t}\n\n\t\t\tsetFormName( '' );\n\t\t\tsetFormParent( '' );\n\n\t\t\treturn;\n\t\t}\n\t\tsetAdding( true );\n\n\t\tconst newTerm = await addTerm( {\n\t\t\tname: formName,\n\t\t\tparent: formParent ? formParent : undefined,\n\t\t} );\n\n\t\tconst termAddedMessage = sprintf(\n\t\t\t/* translators: %s: taxonomy name */\n\t\t\t_x( '%s added', 'term' ),\n\t\t\tget(\n\t\t\t\ttaxonomy,\n\t\t\t\t[ 'labels', 'singular_name' ],\n\t\t\t\tslug === 'category' ? __( 'Category' ) : __( 'Term' )\n\t\t\t)\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\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={ unescapeString( 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\tget(\n\t\t\ttaxonomy,\n\t\t\t[ 'labels', labelProperty ],\n\t\t\tslug === 'category' ? fallbackIsCategory : fallbackIsNotCategory\n\t\t);\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 = get(\n\t\ttaxonomy,\n\t\t[ 'labels', 'search_items' ],\n\t\t__( 'Search Terms' )\n\t);\n\tconst groupLabel = get( taxonomy, [ 'name' ], __( 'Terms' ) );\n\tconst showFilter = availableTerms.length >= MIN_TERMS_COUNT_FOR_FILTER;\n\n\treturn (\n\t\t<>\n\t\t\t{ showFilter && (\n\t\t\t\t<TextControl\n\t\t\t\t\tclassName=\"editor-post-taxonomies__hierarchical-terms-filter\"\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<Button\n\t\t\t\t\tonClick={ onToggleForm }\n\t\t\t\t\tclassName=\"editor-post-taxonomies__hierarchical-terms-add\"\n\t\t\t\t\taria-expanded={ showForm }\n\t\t\t\t\tvariant=\"link\"\n\t\t\t\t>\n\t\t\t\t\t{ newTermButtonLabel }\n\t\t\t\t</Button>\n\t\t\t) }\n\t\t\t{ showForm && (\n\t\t\t\t<form onSubmit={ onAddTerm }>\n\t\t\t\t\t<TextControl\n\t\t\t\t\t\tclassName=\"editor-post-taxonomies__hierarchical-terms-input\"\n\t\t\t\t\t\tlabel={ newTermLabel }\n\t\t\t\t\t\tvalue={ formName }\n\t\t\t\t\t\tonChange={ onChangeFormName }\n\t\t\t\t\t\trequired\n\t\t\t\t\t/>\n\t\t\t\t\t{ !! availableTerms.length && (\n\t\t\t\t\t\t<TreeSelect\n\t\t\t\t\t\t\tlabel={ parentSelectLabel }\n\t\t\t\t\t\t\tnoOptionLabel={ noParentOption }\n\t\t\t\t\t\t\tonChange={ onChangeFormParent }\n\t\t\t\t\t\t\tselectedId={ formParent }\n\t\t\t\t\t\t\ttree={ availableTermsTree }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t<Button\n\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\tclassName=\"editor-post-taxonomies__hierarchical-terms-submit\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ newTermSubmitLabel }\n\t\t\t\t\t</Button>\n\t\t\t\t</form>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default withFilters( 'editor.PostTaxonomyType' )(\n\tHierarchicalTermSelector\n);\n"]}
|
|
1
|
+
{"version":3,"sources":["@wordpress/editor/src/components/post-taxonomies/hierarchical-term-selector.js"],"names":["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","adding","setAdding","formName","setFormName","formParent","setFormParent","showForm","setShowForm","setFilterValue","filteredTermsTree","setFilteredTermsTree","debouncedSpeak","speak","hasCreateAction","hasAssignAction","loading","availableTerms","taxonomy","select","getCurrentPost","getEditedPostAttribute","editorStore","getTaxonomy","getEntityRecords","isResolving","coreStore","_taxonomy","rest_base","editPost","saveEntityRecord","availableTermsTree","addTerm","onUpdateTerms","termIds","onChange","termId","hasTerm","includes","newTerms","onChangeFormName","value","onChangeFormParent","parentId","onToggleForm","onAddTerm","event","preventDefault","existingTerm","some","newTerm","termAddedMessage","setFilter","newFilteredTermsTree","getResultCount","count","i","resultCount","resultsFoundMessage","renderTerms","renderedTerms","labelWithFallback","labelProperty","fallbackIsCategory","fallbackIsNotCategory","newTermButtonLabel","newTermLabel","parentSelectLabel","noParentOption","newTermSubmitLabel","filterLabel","groupLabel","showFilter"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { get, unescape as unescapeString } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { __, _n, _x, sprintf } from '@wordpress/i18n';\nimport { useMemo, useState } from '@wordpress/element';\nimport {\n\tButton,\n\tCheckboxControl,\n\tTextControl,\n\tTreeSelect,\n\twithFilters,\n} 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';\n\n/**\n * Internal dependencies\n */\nimport { buildTermsTree } from '../../utils/terms';\nimport { store as editorStore } from '../../store';\n\n/**\n * Module Constants\n */\nconst DEFAULT_QUERY = {\n\tper_page: -1,\n\torderby: 'name',\n\torder: 'asc',\n\t_fields: 'id,name,parent',\n\tcontext: 'view',\n};\n\nconst MIN_TERMS_COUNT_FOR_FILTER = 8;\n\nconst EMPTY_ARRAY = [];\n\n/**\n * Sort Terms by Selected.\n *\n * @param {Object[]} termsTree Array of terms in tree format.\n * @param {number[]} terms Selected terms.\n *\n * @return {Object[]} Sorted array of terms.\n */\nexport function sortBySelected( termsTree, terms ) {\n\tconst treeHasSelection = ( termTree ) => {\n\t\tif ( terms.indexOf( termTree.id ) !== -1 ) {\n\t\t\treturn true;\n\t\t}\n\t\tif ( undefined === termTree.children ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn (\n\t\t\ttermTree.children\n\t\t\t\t.map( treeHasSelection )\n\t\t\t\t.filter( ( child ) => child ).length > 0\n\t\t);\n\t};\n\tconst termOrChildIsSelected = ( termA, termB ) => {\n\t\tconst termASelected = treeHasSelection( termA );\n\t\tconst termBSelected = treeHasSelection( termB );\n\n\t\tif ( termASelected === termBSelected ) {\n\t\t\treturn 0;\n\t\t}\n\n\t\tif ( termASelected && ! termBSelected ) {\n\t\t\treturn -1;\n\t\t}\n\n\t\tif ( ! termASelected && termBSelected ) {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn 0;\n\t};\n\tconst newTermTree = [ ...termsTree ];\n\tnewTermTree.sort( termOrChildIsSelected );\n\treturn newTermTree;\n}\n\n/**\n * Find term by parent id or name.\n *\n * @param {Object[]} terms Array of Terms.\n * @param {number|string} parent id.\n * @param {string} name Term name.\n * @return {Object} Term object.\n */\nexport function findTerm( terms, parent, name ) {\n\treturn terms.find( ( term ) => {\n\t\treturn (\n\t\t\t( ( ! term.parent && ! parent ) ||\n\t\t\t\tparseInt( term.parent ) === parseInt( parent ) ) &&\n\t\t\tterm.name.toLowerCase() === name.toLowerCase()\n\t\t);\n\t} );\n}\n\n/**\n * Get filter matcher function.\n *\n * @param {string} filterValue Filter value.\n * @return {(function(Object): (Object|boolean))} Matcher function.\n */\nexport function getFilterMatcher( filterValue ) {\n\tconst matchTermsForFilter = ( originalTerm ) => {\n\t\tif ( '' === filterValue ) {\n\t\t\treturn originalTerm;\n\t\t}\n\n\t\t// Shallow clone, because we'll be filtering the term's children and\n\t\t// don't want to modify the original term.\n\t\tconst term = { ...originalTerm };\n\n\t\t// Map and filter the children, recursive so we deal with grandchildren\n\t\t// and any deeper levels.\n\t\tif ( term.children.length > 0 ) {\n\t\t\tterm.children = term.children\n\t\t\t\t.map( matchTermsForFilter )\n\t\t\t\t.filter( ( child ) => child );\n\t\t}\n\n\t\t// If the term's name contains the filterValue, or it has children\n\t\t// (i.e. some child matched at some point in the tree) then return it.\n\t\tif (\n\t\t\t-1 !==\n\t\t\t\tterm.name.toLowerCase().indexOf( filterValue.toLowerCase() ) ||\n\t\t\tterm.children.length > 0\n\t\t) {\n\t\t\treturn term;\n\t\t}\n\n\t\t// Otherwise, return false. After mapping, the list of terms will need\n\t\t// to have false values filtered out.\n\t\treturn false;\n\t};\n\treturn matchTermsForFilter;\n}\n\n/**\n * Hierarchical term selector.\n *\n * @param {Object} props Component props.\n * @param {string} props.slug Taxonomy slug.\n * @return {WPElement} Hierarchical term selector component.\n */\nexport function HierarchicalTermSelector( { slug } ) {\n\tconst [ adding, setAdding ] = useState( false );\n\tconst [ formName, setFormName ] = useState( '' );\n\t/**\n\t * @type {[number|'', Function]}\n\t */\n\tconst [ formParent, setFormParent ] = useState( '' );\n\tconst [ showForm, setShowForm ] = useState( false );\n\tconst [ filterValue, setFilterValue ] = useState( '' );\n\tconst [ filteredTermsTree, setFilteredTermsTree ] = useState( [] );\n\tconst debouncedSpeak = useDebounce( speak, 500 );\n\n\tconst {\n\t\thasCreateAction,\n\t\thasAssignAction,\n\t\tterms,\n\t\tloading,\n\t\tavailableTerms,\n\t\ttaxonomy,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getCurrentPost, getEditedPostAttribute } =\n\t\t\t\tselect( editorStore );\n\t\t\tconst { getTaxonomy, getEntityRecords, isResolving } =\n\t\t\t\tselect( coreStore );\n\t\t\tconst _taxonomy = getTaxonomy( slug );\n\n\t\t\treturn {\n\t\t\t\thasCreateAction: _taxonomy\n\t\t\t\t\t? get(\n\t\t\t\t\t\t\tgetCurrentPost(),\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t'_links',\n\t\t\t\t\t\t\t\t'wp:action-create-' + _taxonomy.rest_base,\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tfalse\n\t\t\t\t\t )\n\t\t\t\t\t: false,\n\t\t\t\thasAssignAction: _taxonomy\n\t\t\t\t\t? get(\n\t\t\t\t\t\t\tgetCurrentPost(),\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t'_links',\n\t\t\t\t\t\t\t\t'wp:action-assign-' + _taxonomy.rest_base,\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tfalse\n\t\t\t\t\t )\n\t\t\t\t\t: false,\n\t\t\t\tterms: _taxonomy\n\t\t\t\t\t? getEditedPostAttribute( _taxonomy.rest_base )\n\t\t\t\t\t: EMPTY_ARRAY,\n\t\t\t\tloading: isResolving( 'getEntityRecords', [\n\t\t\t\t\t'taxonomy',\n\t\t\t\t\tslug,\n\t\t\t\t\tDEFAULT_QUERY,\n\t\t\t\t] ),\n\t\t\t\tavailableTerms:\n\t\t\t\t\tgetEntityRecords( 'taxonomy', slug, DEFAULT_QUERY ) ||\n\t\t\t\t\tEMPTY_ARRAY,\n\t\t\t\ttaxonomy: _taxonomy,\n\t\t\t};\n\t\t},\n\t\t[ slug ]\n\t);\n\n\tconst { editPost } = useDispatch( editorStore );\n\tconst { saveEntityRecord } = useDispatch( coreStore );\n\n\tconst availableTermsTree = useMemo(\n\t\t() => sortBySelected( buildTermsTree( availableTerms ), terms ),\n\t\t// Remove `terms` from the dependency list to avoid reordering every time\n\t\t// checking or unchecking a term.\n\t\t[ availableTerms ]\n\t);\n\n\tif ( ! hasAssignAction ) {\n\t\treturn null;\n\t}\n\n\t/**\n\t * Append new term.\n\t *\n\t * @param {Object} term Term object.\n\t * @return {Promise} A promise that resolves to save term object.\n\t */\n\tconst addTerm = ( term ) => {\n\t\treturn saveEntityRecord( 'taxonomy', slug, term );\n\t};\n\n\t/**\n\t * Update terms for post.\n\t *\n\t * @param {number[]} termIds Term ids.\n\t */\n\tconst onUpdateTerms = ( termIds ) => {\n\t\teditPost( { [ taxonomy.rest_base ]: termIds } );\n\t};\n\n\t/**\n\t * Handler for checking term.\n\t *\n\t * @param {number} termId\n\t */\n\tconst onChange = ( termId ) => {\n\t\tconst hasTerm = terms.includes( termId );\n\t\tconst newTerms = hasTerm\n\t\t\t? terms.filter( ( id ) => id !== termId )\n\t\t\t: [ ...terms, termId ];\n\t\tonUpdateTerms( newTerms );\n\t};\n\n\tconst onChangeFormName = ( value ) => {\n\t\tsetFormName( value );\n\t};\n\n\t/**\n\t * Handler for changing form parent.\n\t *\n\t * @param {number|''} parentId Parent post id.\n\t */\n\tconst onChangeFormParent = ( parentId ) => {\n\t\tsetFormParent( parentId );\n\t};\n\n\tconst onToggleForm = () => {\n\t\tsetShowForm( ! showForm );\n\t};\n\n\tconst onAddTerm = async ( event ) => {\n\t\tevent.preventDefault();\n\t\tif ( formName === '' || adding ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Check if the term we are adding already exists.\n\t\tconst existingTerm = findTerm( availableTerms, formParent, formName );\n\t\tif ( existingTerm ) {\n\t\t\t// If the term we are adding exists but is not selected select it.\n\t\t\tif ( ! terms.some( ( term ) => term === existingTerm.id ) ) {\n\t\t\t\tonUpdateTerms( [ ...terms, existingTerm.id ] );\n\t\t\t}\n\n\t\t\tsetFormName( '' );\n\t\t\tsetFormParent( '' );\n\n\t\t\treturn;\n\t\t}\n\t\tsetAdding( true );\n\n\t\tconst newTerm = await addTerm( {\n\t\t\tname: formName,\n\t\t\tparent: formParent ? formParent : undefined,\n\t\t} );\n\n\t\tconst termAddedMessage = sprintf(\n\t\t\t/* translators: %s: taxonomy name */\n\t\t\t_x( '%s added', 'term' ),\n\t\t\tget(\n\t\t\t\ttaxonomy,\n\t\t\t\t[ 'labels', 'singular_name' ],\n\t\t\t\tslug === 'category' ? __( 'Category' ) : __( 'Term' )\n\t\t\t)\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={ unescapeString( 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\tget(\n\t\t\ttaxonomy,\n\t\t\t[ 'labels', labelProperty ],\n\t\t\tslug === 'category' ? fallbackIsCategory : fallbackIsNotCategory\n\t\t);\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 = get(\n\t\ttaxonomy,\n\t\t[ 'labels', 'search_items' ],\n\t\t__( 'Search Terms' )\n\t);\n\tconst groupLabel = get( taxonomy, [ 'name' ], __( 'Terms' ) );\n\tconst showFilter = availableTerms.length >= MIN_TERMS_COUNT_FOR_FILTER;\n\n\treturn (\n\t\t<>\n\t\t\t{ showFilter && (\n\t\t\t\t<TextControl\n\t\t\t\t\tclassName=\"editor-post-taxonomies__hierarchical-terms-filter\"\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<Button\n\t\t\t\t\tonClick={ onToggleForm }\n\t\t\t\t\tclassName=\"editor-post-taxonomies__hierarchical-terms-add\"\n\t\t\t\t\taria-expanded={ showForm }\n\t\t\t\t\tvariant=\"link\"\n\t\t\t\t>\n\t\t\t\t\t{ newTermButtonLabel }\n\t\t\t\t</Button>\n\t\t\t) }\n\t\t\t{ showForm && (\n\t\t\t\t<form onSubmit={ onAddTerm }>\n\t\t\t\t\t<TextControl\n\t\t\t\t\t\tclassName=\"editor-post-taxonomies__hierarchical-terms-input\"\n\t\t\t\t\t\tlabel={ newTermLabel }\n\t\t\t\t\t\tvalue={ formName }\n\t\t\t\t\t\tonChange={ onChangeFormName }\n\t\t\t\t\t\trequired\n\t\t\t\t\t/>\n\t\t\t\t\t{ !! availableTerms.length && (\n\t\t\t\t\t\t<TreeSelect\n\t\t\t\t\t\t\tlabel={ parentSelectLabel }\n\t\t\t\t\t\t\tnoOptionLabel={ noParentOption }\n\t\t\t\t\t\t\tonChange={ onChangeFormParent }\n\t\t\t\t\t\t\tselectedId={ formParent }\n\t\t\t\t\t\t\ttree={ availableTermsTree }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t<Button\n\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\tclassName=\"editor-post-taxonomies__hierarchical-terms-submit\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ newTermSubmitLabel }\n\t\t\t\t\t</Button>\n\t\t\t\t</form>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default withFilters( 'editor.PostTaxonomyType' )(\n\tHierarchicalTermSelector\n);\n"]}
|
|
@@ -10,8 +10,6 @@ exports.default = void 0;
|
|
|
10
10
|
|
|
11
11
|
var _element = require("@wordpress/element");
|
|
12
12
|
|
|
13
|
-
var _lodash = require("lodash");
|
|
14
|
-
|
|
15
13
|
var _data = require("@wordpress/data");
|
|
16
14
|
|
|
17
15
|
var _compose = require("@wordpress/compose");
|
|
@@ -24,10 +22,6 @@ var _flatTermSelector = _interopRequireDefault(require("./flat-term-selector"));
|
|
|
24
22
|
|
|
25
23
|
var _store = require("../../store");
|
|
26
24
|
|
|
27
|
-
/**
|
|
28
|
-
* External dependencies
|
|
29
|
-
*/
|
|
30
|
-
|
|
31
25
|
/**
|
|
32
26
|
* WordPress dependencies
|
|
33
27
|
*/
|
|
@@ -43,8 +37,8 @@ function PostTaxonomies(_ref) {
|
|
|
43
37
|
taxonomies,
|
|
44
38
|
taxonomyWrapper = identity
|
|
45
39
|
} = _ref;
|
|
46
|
-
const availableTaxonomies = (0
|
|
47
|
-
const visibleTaxonomies =
|
|
40
|
+
const availableTaxonomies = (taxonomies !== null && taxonomies !== void 0 ? taxonomies : []).filter(taxonomy => taxonomy.types.includes(postType));
|
|
41
|
+
const visibleTaxonomies = availableTaxonomies.filter( // In some circumstances .visibility can end up as undefined so optional chaining operator required.
|
|
48
42
|
// https://github.com/WordPress/gutenberg/issues/40326
|
|
49
43
|
taxonomy => {
|
|
50
44
|
var _taxonomy$visibility;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/editor/src/components/post-taxonomies/index.js"],"names":["identity","x","PostTaxonomies","postType","taxonomies","taxonomyWrapper","availableTaxonomies","taxonomy","types","includes","visibleTaxonomies","visibility","show_ui","map","TaxonomyComponent","hierarchical","HierarchicalTermSelector","FlatTermSelector","slug","select","editorStore","getCurrentPostType","coreStore","getTaxonomies","per_page"],"mappings":";;;;;;;;;;
|
|
1
|
+
{"version":3,"sources":["@wordpress/editor/src/components/post-taxonomies/index.js"],"names":["identity","x","PostTaxonomies","postType","taxonomies","taxonomyWrapper","availableTaxonomies","filter","taxonomy","types","includes","visibleTaxonomies","visibility","show_ui","map","TaxonomyComponent","hierarchical","HierarchicalTermSelector","FlatTermSelector","slug","select","editorStore","getCurrentPostType","coreStore","getTaxonomies","per_page"],"mappings":";;;;;;;;;;AAGA;;AACA;;AACA;;AACA;;AAKA;;AACA;;AACA;;AAbA;AACA;AACA;;AAMA;AACA;AACA;AAKA,MAAMA,QAAQ,GAAKC,CAAF,IAASA,CAA1B;;AAEO,SAASC,cAAT,OAIH;AAAA,MAJ4B;AAC/BC,IAAAA,QAD+B;AAE/BC,IAAAA,UAF+B;AAG/BC,IAAAA,eAAe,GAAGL;AAHa,GAI5B;AACH,QAAMM,mBAAmB,GAAG,CAAEF,UAAF,aAAEA,UAAF,cAAEA,UAAF,GAAgB,EAAhB,EAAqBG,MAArB,CAA+BC,QAAF,IACxDA,QAAQ,CAACC,KAAT,CAAeC,QAAf,CAAyBP,QAAzB,CAD2B,CAA5B;AAGA,QAAMQ,iBAAiB,GAAGL,mBAAmB,CAACC,MAApB,EACzB;AACA;AACEC,EAAAA,QAAF;AAAA;;AAAA,mCAAgBA,QAAQ,CAACI,UAAzB,yDAAgB,qBAAqBC,OAArC;AAAA,GAHyB,CAA1B;AAKA,SAAOF,iBAAiB,CAACG,GAAlB,CAAyBN,QAAF,IAAgB;AAC7C,UAAMO,iBAAiB,GAAGP,QAAQ,CAACQ,YAAT,GACvBC,iCADuB,GAEvBC,yBAFH;AAGA,WACC,4BAAC,iBAAD;AAAU,MAAA,GAAG,EAAI,YAAYV,QAAQ,CAACW,IAAM;AAA5C,OACGd,eAAe,CAChB,4BAAC,iBAAD;AAAmB,MAAA,IAAI,EAAGG,QAAQ,CAACW;AAAnC,MADgB,EAEhBX,QAFgB,CADlB,CADD;AAQA,GAZM,CAAP;AAaA;;eAEc,sBAAS,CACvB,sBAAcY,MAAF,IAAc;AACzB,SAAO;AACNjB,IAAAA,QAAQ,EAAEiB,MAAM,CAAEC,YAAF,CAAN,CAAsBC,kBAAtB,EADJ;AAENlB,IAAAA,UAAU,EAAEgB,MAAM,CAAEG,eAAF,CAAN,CAAoBC,aAApB,CAAmC;AAAEC,MAAAA,QAAQ,EAAE,CAAC;AAAb,KAAnC;AAFN,GAAP;AAIA,CALD,CADuB,CAAT,EAOVvB,cAPU,C","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { Fragment } from '@wordpress/element';\nimport { withSelect } from '@wordpress/data';\nimport { compose } from '@wordpress/compose';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport HierarchicalTermSelector from './hierarchical-term-selector';\nimport FlatTermSelector from './flat-term-selector';\nimport { store as editorStore } from '../../store';\n\nconst identity = ( x ) => x;\n\nexport function PostTaxonomies( {\n\tpostType,\n\ttaxonomies,\n\ttaxonomyWrapper = identity,\n} ) {\n\tconst availableTaxonomies = ( taxonomies ?? [] ).filter( ( taxonomy ) =>\n\t\ttaxonomy.types.includes( postType )\n\t);\n\tconst visibleTaxonomies = availableTaxonomies.filter(\n\t\t// In some circumstances .visibility can end up as undefined so optional chaining operator required.\n\t\t// https://github.com/WordPress/gutenberg/issues/40326\n\t\t( taxonomy ) => taxonomy.visibility?.show_ui\n\t);\n\treturn visibleTaxonomies.map( ( taxonomy ) => {\n\t\tconst TaxonomyComponent = taxonomy.hierarchical\n\t\t\t? HierarchicalTermSelector\n\t\t\t: FlatTermSelector;\n\t\treturn (\n\t\t\t<Fragment key={ `taxonomy-${ taxonomy.slug }` }>\n\t\t\t\t{ taxonomyWrapper(\n\t\t\t\t\t<TaxonomyComponent slug={ taxonomy.slug } />,\n\t\t\t\t\ttaxonomy\n\t\t\t\t) }\n\t\t\t</Fragment>\n\t\t);\n\t} );\n}\n\nexport default compose( [\n\twithSelect( ( select ) => {\n\t\treturn {\n\t\t\tpostType: select( editorStore ).getCurrentPostType(),\n\t\t\ttaxonomies: select( coreStore ).getTaxonomies( { per_page: -1 } ),\n\t\t};\n\t} ),\n] )( PostTaxonomies );\n"]}
|
|
@@ -27,6 +27,8 @@ var _richText = require("@wordpress/rich-text");
|
|
|
27
27
|
|
|
28
28
|
var _compose = require("@wordpress/compose");
|
|
29
29
|
|
|
30
|
+
var _dom = require("@wordpress/dom");
|
|
31
|
+
|
|
30
32
|
var _postTypeSupportCheck = _interopRequireDefault(require("../post-type-support-check"));
|
|
31
33
|
|
|
32
34
|
var _store = require("../../store");
|
|
@@ -186,7 +188,7 @@ function PostTitle(_, forwardedRef) {
|
|
|
186
188
|
const [firstBlock] = content;
|
|
187
189
|
|
|
188
190
|
if (!title && (firstBlock.name === 'core/heading' || firstBlock.name === 'core/paragraph')) {
|
|
189
|
-
onUpdate(firstBlock.attributes.content);
|
|
191
|
+
onUpdate((0, _dom.__unstableStripHTML)(firstBlock.attributes.content));
|
|
190
192
|
onInsertBlockAfter(content.slice(1));
|
|
191
193
|
} else {
|
|
192
194
|
onInsertBlockAfter(content);
|
|
@@ -198,7 +200,7 @@ function PostTitle(_, forwardedRef) {
|
|
|
198
200
|
...selection
|
|
199
201
|
};
|
|
200
202
|
const newValue = (0, _richText.insert)(value, (0, _richText.create)({
|
|
201
|
-
html: content
|
|
203
|
+
html: (0, _dom.__unstableStripHTML)(content)
|
|
202
204
|
}));
|
|
203
205
|
onUpdate((0, _richText.toHTMLString)({
|
|
204
206
|
value: newValue
|