@wordpress/editor 13.11.0 → 13.12.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 +2 -0
- package/build/components/autosave-monitor/index.js +1 -2
- package/build/components/autosave-monitor/index.js.map +1 -1
- package/build/components/deprecated.js +3 -4
- package/build/components/deprecated.js.map +1 -1
- package/build/components/document-outline/check.js +4 -5
- package/build/components/document-outline/check.js.map +1 -1
- package/build/components/document-outline/index.js +12 -16
- package/build/components/document-outline/index.js.map +1 -1
- package/build/components/document-outline/item.js +22 -25
- package/build/components/document-outline/item.js.map +1 -1
- package/build/components/editor-help/help-detail-navigation-screen.native.js +4 -5
- package/build/components/editor-help/help-detail-navigation-screen.native.js.map +1 -1
- package/build/components/editor-help/help-get-support-button.native.js +4 -5
- package/build/components/editor-help/help-get-support-button.native.js.map +1 -1
- package/build/components/editor-help/help-section-title.native.js +3 -4
- package/build/components/editor-help/help-section-title.native.js.map +1 -1
- package/build/components/editor-help/help-topic-row.native.js +6 -7
- package/build/components/editor-help/help-topic-row.native.js.map +1 -1
- package/build/components/editor-help/index.native.js +19 -24
- package/build/components/editor-help/index.native.js.map +1 -1
- package/build/components/editor-help/view-sections.native.js +16 -20
- package/build/components/editor-help/view-sections.native.js.map +1 -1
- package/build/components/editor-notices/index.js +12 -19
- package/build/components/editor-notices/index.js.map +1 -1
- package/build/components/editor-snackbars/index.js +3 -6
- package/build/components/editor-snackbars/index.js.map +1 -1
- package/build/components/entities-saved-states/entity-record-item.js +7 -10
- package/build/components/entities-saved-states/entity-record-item.js.map +1 -1
- package/build/components/entities-saved-states/entity-type-list.js +6 -7
- package/build/components/entities-saved-states/entity-type-list.js.map +1 -1
- package/build/components/entities-saved-states/hooks/use-is-dirty.js +84 -0
- package/build/components/entities-saved-states/hooks/use-is-dirty.js.map +1 -0
- package/build/components/entities-saved-states/index.js +38 -110
- package/build/components/entities-saved-states/index.js.map +1 -1
- package/build/components/error-boundary/index.js +4 -5
- package/build/components/error-boundary/index.js.map +1 -1
- package/build/components/global-keyboard-shortcuts/save-shortcut.js +3 -4
- package/build/components/global-keyboard-shortcuts/save-shortcut.js.map +1 -1
- package/build/components/index.js +9 -0
- package/build/components/index.js.map +1 -1
- package/build/components/media-categories/index.js +25 -42
- package/build/components/media-categories/index.js.map +1 -1
- package/build/components/page-attributes/check.js +4 -7
- package/build/components/page-attributes/check.js.map +1 -1
- package/build/components/page-attributes/order.js +5 -8
- package/build/components/page-attributes/order.js.map +1 -1
- package/build/components/page-attributes/parent.js +5 -12
- package/build/components/page-attributes/parent.js.map +1 -1
- package/build/components/post-author/check.js +6 -7
- package/build/components/post-author/check.js.map +1 -1
- package/build/components/post-author/combobox.js +3 -6
- package/build/components/post-author/combobox.js.map +1 -1
- package/build/components/post-author/index.js +1 -1
- package/build/components/post-author/index.js.map +1 -1
- package/build/components/post-comments/index.js +4 -6
- package/build/components/post-comments/index.js.map +1 -1
- package/build/components/post-excerpt/index.js +4 -5
- package/build/components/post-excerpt/index.js.map +1 -1
- package/build/components/post-featured-image/index.js +56 -69
- package/build/components/post-featured-image/index.js.map +1 -1
- package/build/components/post-format/check.js +4 -5
- package/build/components/post-format/check.js.map +1 -1
- package/build/components/post-format/index.js +1 -1
- package/build/components/post-format/index.js.map +1 -1
- package/build/components/post-last-revision/check.js +5 -7
- package/build/components/post-last-revision/check.js.map +1 -1
- package/build/components/post-last-revision/index.js +4 -5
- package/build/components/post-last-revision/index.js.map +1 -1
- package/build/components/post-locked-modal/index.js +1 -1
- package/build/components/post-locked-modal/index.js.map +1 -1
- package/build/components/post-pending-status/check.js +7 -9
- package/build/components/post-pending-status/check.js.map +1 -1
- package/build/components/post-pending-status/index.js +4 -6
- package/build/components/post-pending-status/index.js.map +1 -1
- package/build/components/post-pingbacks/index.js +4 -6
- package/build/components/post-pingbacks/index.js.map +1 -1
- package/build/components/post-preview-button/index.js +8 -12
- package/build/components/post-preview-button/index.js.map +1 -1
- package/build/components/post-publish-button/index.js +6 -13
- package/build/components/post-publish-button/index.js.map +1 -1
- package/build/components/post-publish-button/label.js +14 -17
- package/build/components/post-publish-button/label.js.map +1 -1
- package/build/components/post-publish-panel/index.js +6 -7
- package/build/components/post-publish-panel/index.js.map +1 -1
- package/build/components/post-publish-panel/maybe-category-panel.js +2 -4
- package/build/components/post-publish-panel/maybe-category-panel.js.map +1 -1
- package/build/components/post-publish-panel/maybe-post-format-panel.js +9 -12
- package/build/components/post-publish-panel/maybe-post-format-panel.js.map +1 -1
- package/build/components/post-publish-panel/maybe-tags-panel.js +4 -7
- package/build/components/post-publish-panel/maybe-tags-panel.js.map +1 -1
- package/build/components/post-publish-panel/postpublish.js +8 -11
- package/build/components/post-publish-panel/postpublish.js.map +1 -1
- package/build/components/post-publish-panel/prepublish.js +5 -6
- package/build/components/post-publish-panel/prepublish.js.map +1 -1
- package/build/components/post-saved-state/index.js +13 -8
- package/build/components/post-saved-state/index.js.map +1 -1
- package/build/components/post-schedule/check.js +6 -8
- package/build/components/post-schedule/check.js.map +1 -1
- package/build/components/post-schedule/index.js +8 -12
- package/build/components/post-schedule/index.js.map +1 -1
- package/build/components/post-schedule/label.js +7 -10
- package/build/components/post-schedule/label.js.map +1 -1
- package/build/components/post-slug/check.js +3 -4
- package/build/components/post-slug/check.js.map +1 -1
- package/build/components/post-slug/index.js +5 -6
- package/build/components/post-slug/index.js.map +1 -1
- package/build/components/post-sticky/check.js +7 -9
- package/build/components/post-sticky/check.js.map +1 -1
- package/build/components/post-sticky/index.js +4 -5
- package/build/components/post-sticky/index.js.map +1 -1
- package/build/components/post-switch-to-draft-button/index.js +6 -7
- package/build/components/post-switch-to-draft-button/index.js.map +1 -1
- package/build/components/post-taxonomies/check.js +6 -7
- package/build/components/post-taxonomies/check.js.map +1 -1
- package/build/components/post-taxonomies/flat-term-selector.js +12 -13
- package/build/components/post-taxonomies/flat-term-selector.js.map +1 -1
- package/build/components/post-taxonomies/hierarchical-term-selector.js +13 -14
- package/build/components/post-taxonomies/hierarchical-term-selector.js.map +1 -1
- package/build/components/post-taxonomies/index.js +6 -11
- package/build/components/post-taxonomies/index.js.map +1 -1
- package/build/components/post-taxonomies/most-used-terms.js +5 -6
- package/build/components/post-taxonomies/most-used-terms.js.map +1 -1
- package/build/components/post-template/index.js +6 -9
- package/build/components/post-template/index.js.map +1 -1
- package/build/components/post-title/index.js +2 -6
- package/build/components/post-title/index.js.map +1 -1
- package/build/components/post-title/index.native.js +8 -11
- package/build/components/post-title/index.native.js.map +1 -1
- package/build/components/post-trash/check.js +7 -9
- package/build/components/post-trash/check.js.map +1 -1
- package/build/components/post-type-support-check/index.js +5 -6
- package/build/components/post-type-support-check/index.js.map +1 -1
- package/build/components/post-url/check.js +4 -5
- package/build/components/post-url/check.js.map +1 -1
- package/build/components/post-url/index.js +8 -9
- package/build/components/post-url/index.js.map +1 -1
- package/build/components/post-visibility/check.js +6 -7
- package/build/components/post-visibility/check.js.map +1 -1
- package/build/components/post-visibility/index.js +10 -12
- package/build/components/post-visibility/index.js.map +1 -1
- package/build/components/post-visibility/label.js +1 -3
- package/build/components/post-visibility/label.js.map +1 -1
- package/build/components/provider/index.js +9 -10
- package/build/components/provider/index.js.map +1 -1
- package/build/components/provider/index.native.js +14 -20
- package/build/components/provider/index.native.js.map +1 -1
- package/build/components/provider/use-block-editor-settings.js +5 -9
- package/build/components/provider/use-block-editor-settings.js.map +1 -1
- package/build/components/provider/use-block-editor-settings.native.js +1 -3
- package/build/components/provider/use-block-editor-settings.native.js.map +1 -1
- package/build/components/table-of-contents/index.js +26 -33
- package/build/components/table-of-contents/index.js.map +1 -1
- package/build/components/table-of-contents/panel.js +4 -5
- package/build/components/table-of-contents/panel.js.map +1 -1
- package/build/components/template-validation-notice/index.js +4 -6
- package/build/components/template-validation-notice/index.js.map +1 -1
- package/build/components/theme-support-check/index.js +7 -8
- package/build/components/theme-support-check/index.js.map +1 -1
- package/build/hooks/custom-sources-backwards-compatibility.js +16 -35
- package/build/hooks/custom-sources-backwards-compatibility.js.map +1 -1
- package/build/hooks/default-autocompleters.js +1 -2
- package/build/hooks/default-autocompleters.js.map +1 -1
- package/build/private-apis.js +4 -1
- package/build/private-apis.js.map +1 -1
- package/build/store/actions.js +147 -179
- package/build/store/actions.js.map +1 -1
- package/build/store/actions.native.js +1 -2
- package/build/store/actions.native.js.map +1 -1
- package/build/store/reducer.js +14 -44
- package/build/store/reducer.js.map +1 -1
- package/build/store/reducer.native.js +3 -12
- package/build/store/reducer.native.js.map +1 -1
- package/build/store/selectors.js +23 -54
- package/build/store/selectors.js.map +1 -1
- package/build/store/utils/notice-builder.js +3 -3
- package/build/store/utils/notice-builder.js.map +1 -1
- package/build/utils/media-upload/index.js +11 -15
- package/build/utils/media-upload/index.js.map +1 -1
- package/build/utils/terms.js +3 -6
- package/build/utils/terms.js.map +1 -1
- package/build-module/components/autosave-monitor/index.js +1 -2
- package/build-module/components/autosave-monitor/index.js.map +1 -1
- package/build-module/components/deprecated.js +3 -4
- package/build-module/components/deprecated.js.map +1 -1
- package/build-module/components/document-outline/check.js +4 -5
- package/build-module/components/document-outline/check.js.map +1 -1
- package/build-module/components/document-outline/index.js +12 -16
- package/build-module/components/document-outline/index.js.map +1 -1
- package/build-module/components/document-outline/item.js +22 -25
- package/build-module/components/document-outline/item.js.map +1 -1
- package/build-module/components/editor-help/help-detail-navigation-screen.native.js +4 -5
- package/build-module/components/editor-help/help-detail-navigation-screen.native.js.map +1 -1
- package/build-module/components/editor-help/help-get-support-button.native.js +4 -5
- package/build-module/components/editor-help/help-get-support-button.native.js.map +1 -1
- package/build-module/components/editor-help/help-section-title.native.js +3 -4
- package/build-module/components/editor-help/help-section-title.native.js.map +1 -1
- package/build-module/components/editor-help/help-topic-row.native.js +6 -7
- package/build-module/components/editor-help/help-topic-row.native.js.map +1 -1
- package/build-module/components/editor-help/index.native.js +19 -23
- package/build-module/components/editor-help/index.native.js.map +1 -1
- package/build-module/components/editor-help/view-sections.native.js +16 -20
- package/build-module/components/editor-help/view-sections.native.js.map +1 -1
- package/build-module/components/editor-notices/index.js +12 -19
- package/build-module/components/editor-notices/index.js.map +1 -1
- package/build-module/components/editor-snackbars/index.js +3 -6
- package/build-module/components/editor-snackbars/index.js.map +1 -1
- package/build-module/components/entities-saved-states/entity-record-item.js +7 -10
- package/build-module/components/entities-saved-states/entity-record-item.js.map +1 -1
- package/build-module/components/entities-saved-states/entity-type-list.js +6 -7
- package/build-module/components/entities-saved-states/entity-type-list.js.map +1 -1
- package/build-module/components/entities-saved-states/hooks/use-is-dirty.js +70 -0
- package/build-module/components/entities-saved-states/hooks/use-is-dirty.js.map +1 -0
- package/build-module/components/entities-saved-states/index.js +39 -113
- package/build-module/components/entities-saved-states/index.js.map +1 -1
- package/build-module/components/error-boundary/index.js +4 -5
- package/build-module/components/error-boundary/index.js.map +1 -1
- package/build-module/components/global-keyboard-shortcuts/save-shortcut.js +3 -4
- package/build-module/components/global-keyboard-shortcuts/save-shortcut.js.map +1 -1
- package/build-module/components/index.js +1 -0
- package/build-module/components/index.js.map +1 -1
- package/build-module/components/media-categories/index.js +25 -42
- package/build-module/components/media-categories/index.js.map +1 -1
- package/build-module/components/page-attributes/check.js +4 -7
- package/build-module/components/page-attributes/check.js.map +1 -1
- package/build-module/components/page-attributes/order.js +5 -8
- package/build-module/components/page-attributes/order.js.map +1 -1
- package/build-module/components/page-attributes/parent.js +5 -12
- package/build-module/components/page-attributes/parent.js.map +1 -1
- package/build-module/components/post-author/check.js +6 -7
- package/build-module/components/post-author/check.js.map +1 -1
- package/build-module/components/post-author/combobox.js +3 -6
- package/build-module/components/post-author/combobox.js.map +1 -1
- package/build-module/components/post-author/index.js +1 -1
- package/build-module/components/post-author/index.js.map +1 -1
- package/build-module/components/post-comments/index.js +4 -6
- package/build-module/components/post-comments/index.js.map +1 -1
- package/build-module/components/post-excerpt/index.js +4 -5
- package/build-module/components/post-excerpt/index.js.map +1 -1
- package/build-module/components/post-featured-image/index.js +56 -69
- package/build-module/components/post-featured-image/index.js.map +1 -1
- package/build-module/components/post-format/check.js +4 -5
- package/build-module/components/post-format/check.js.map +1 -1
- package/build-module/components/post-format/index.js +1 -1
- package/build-module/components/post-format/index.js.map +1 -1
- package/build-module/components/post-last-revision/check.js +5 -7
- package/build-module/components/post-last-revision/check.js.map +1 -1
- package/build-module/components/post-last-revision/index.js +4 -5
- package/build-module/components/post-last-revision/index.js.map +1 -1
- package/build-module/components/post-locked-modal/index.js +1 -1
- package/build-module/components/post-locked-modal/index.js.map +1 -1
- package/build-module/components/post-pending-status/check.js +7 -9
- package/build-module/components/post-pending-status/check.js.map +1 -1
- package/build-module/components/post-pending-status/index.js +4 -6
- package/build-module/components/post-pending-status/index.js.map +1 -1
- package/build-module/components/post-pingbacks/index.js +4 -6
- package/build-module/components/post-pingbacks/index.js.map +1 -1
- package/build-module/components/post-preview-button/index.js +8 -12
- package/build-module/components/post-preview-button/index.js.map +1 -1
- package/build-module/components/post-publish-button/index.js +6 -13
- package/build-module/components/post-publish-button/index.js.map +1 -1
- package/build-module/components/post-publish-button/label.js +14 -17
- package/build-module/components/post-publish-button/label.js.map +1 -1
- package/build-module/components/post-publish-panel/index.js +6 -7
- package/build-module/components/post-publish-panel/index.js.map +1 -1
- package/build-module/components/post-publish-panel/maybe-category-panel.js +2 -4
- 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 +9 -12
- package/build-module/components/post-publish-panel/maybe-post-format-panel.js.map +1 -1
- package/build-module/components/post-publish-panel/maybe-tags-panel.js +4 -7
- package/build-module/components/post-publish-panel/maybe-tags-panel.js.map +1 -1
- package/build-module/components/post-publish-panel/postpublish.js +8 -11
- package/build-module/components/post-publish-panel/postpublish.js.map +1 -1
- package/build-module/components/post-publish-panel/prepublish.js +5 -6
- package/build-module/components/post-publish-panel/prepublish.js.map +1 -1
- package/build-module/components/post-saved-state/index.js +13 -8
- package/build-module/components/post-saved-state/index.js.map +1 -1
- package/build-module/components/post-schedule/check.js +6 -8
- package/build-module/components/post-schedule/check.js.map +1 -1
- package/build-module/components/post-schedule/index.js +8 -12
- package/build-module/components/post-schedule/index.js.map +1 -1
- package/build-module/components/post-schedule/label.js +7 -10
- package/build-module/components/post-schedule/label.js.map +1 -1
- package/build-module/components/post-slug/check.js +3 -4
- package/build-module/components/post-slug/check.js.map +1 -1
- package/build-module/components/post-slug/index.js +5 -6
- package/build-module/components/post-slug/index.js.map +1 -1
- package/build-module/components/post-sticky/check.js +7 -9
- package/build-module/components/post-sticky/check.js.map +1 -1
- package/build-module/components/post-sticky/index.js +4 -5
- package/build-module/components/post-sticky/index.js.map +1 -1
- package/build-module/components/post-switch-to-draft-button/index.js +6 -7
- package/build-module/components/post-switch-to-draft-button/index.js.map +1 -1
- package/build-module/components/post-taxonomies/check.js +6 -7
- package/build-module/components/post-taxonomies/check.js.map +1 -1
- package/build-module/components/post-taxonomies/flat-term-selector.js +12 -13
- package/build-module/components/post-taxonomies/flat-term-selector.js.map +1 -1
- package/build-module/components/post-taxonomies/hierarchical-term-selector.js +13 -14
- package/build-module/components/post-taxonomies/hierarchical-term-selector.js.map +1 -1
- package/build-module/components/post-taxonomies/index.js +6 -11
- package/build-module/components/post-taxonomies/index.js.map +1 -1
- package/build-module/components/post-taxonomies/most-used-terms.js +5 -6
- package/build-module/components/post-taxonomies/most-used-terms.js.map +1 -1
- package/build-module/components/post-template/index.js +6 -9
- package/build-module/components/post-template/index.js.map +1 -1
- package/build-module/components/post-title/index.js +2 -6
- package/build-module/components/post-title/index.js.map +1 -1
- package/build-module/components/post-title/index.native.js +8 -11
- package/build-module/components/post-title/index.native.js.map +1 -1
- package/build-module/components/post-trash/check.js +7 -9
- package/build-module/components/post-trash/check.js.map +1 -1
- package/build-module/components/post-type-support-check/index.js +5 -6
- package/build-module/components/post-type-support-check/index.js.map +1 -1
- package/build-module/components/post-url/check.js +4 -5
- package/build-module/components/post-url/check.js.map +1 -1
- package/build-module/components/post-url/index.js +8 -9
- package/build-module/components/post-url/index.js.map +1 -1
- package/build-module/components/post-visibility/check.js +6 -7
- package/build-module/components/post-visibility/check.js.map +1 -1
- package/build-module/components/post-visibility/index.js +10 -12
- package/build-module/components/post-visibility/index.js.map +1 -1
- package/build-module/components/post-visibility/label.js +1 -3
- package/build-module/components/post-visibility/label.js.map +1 -1
- package/build-module/components/provider/index.js +9 -10
- package/build-module/components/provider/index.js.map +1 -1
- package/build-module/components/provider/index.native.js +14 -20
- package/build-module/components/provider/index.native.js.map +1 -1
- package/build-module/components/provider/use-block-editor-settings.js +5 -9
- package/build-module/components/provider/use-block-editor-settings.js.map +1 -1
- package/build-module/components/provider/use-block-editor-settings.native.js +1 -3
- package/build-module/components/provider/use-block-editor-settings.native.js.map +1 -1
- package/build-module/components/table-of-contents/index.js +26 -33
- package/build-module/components/table-of-contents/index.js.map +1 -1
- package/build-module/components/table-of-contents/panel.js +4 -5
- package/build-module/components/table-of-contents/panel.js.map +1 -1
- package/build-module/components/template-validation-notice/index.js +4 -6
- package/build-module/components/template-validation-notice/index.js.map +1 -1
- package/build-module/components/theme-support-check/index.js +7 -8
- package/build-module/components/theme-support-check/index.js.map +1 -1
- package/build-module/hooks/custom-sources-backwards-compatibility.js +16 -35
- package/build-module/hooks/custom-sources-backwards-compatibility.js.map +1 -1
- package/build-module/hooks/default-autocompleters.js +1 -2
- package/build-module/hooks/default-autocompleters.js.map +1 -1
- package/build-module/private-apis.js +3 -1
- package/build-module/private-apis.js.map +1 -1
- package/build-module/store/actions.js +147 -179
- package/build-module/store/actions.js.map +1 -1
- package/build-module/store/actions.native.js +1 -2
- package/build-module/store/actions.native.js.map +1 -1
- package/build-module/store/reducer.js +14 -44
- package/build-module/store/reducer.js.map +1 -1
- package/build-module/store/reducer.native.js +3 -12
- package/build-module/store/reducer.native.js.map +1 -1
- package/build-module/store/selectors.js +21 -54
- package/build-module/store/selectors.js.map +1 -1
- package/build-module/store/utils/notice-builder.js +3 -3
- package/build-module/store/utils/notice-builder.js.map +1 -1
- package/build-module/utils/media-upload/index.js +11 -15
- package/build-module/utils/media-upload/index.js.map +1 -1
- package/build-module/utils/terms.js +3 -6
- package/build-module/utils/terms.js.map +1 -1
- package/package.json +30 -30
- package/src/components/entities-saved-states/hooks/use-is-dirty.js +85 -0
- package/src/components/entities-saved-states/index.js +25 -106
- package/src/components/entities-saved-states/test/use-is-dirty.js +94 -0
- package/src/components/index.js +1 -0
- package/src/components/post-saved-state/index.js +6 -0
- package/src/components/post-title/index.js +2 -1
- package/src/private-apis.js +2 -0
|
@@ -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","_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","_links","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","defaultName","termAddedMessage","labels","singular_name","newTermLabel","add_new_item","singularName","termAddedLabel","termRemovedLabel","removeTermLabel","added","removed","remove"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\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\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? post._links?.[\n\t\t\t\t\t\t\t'wp:action-create-' + _taxonomy.rest_base\n\t\t\t\t\t ] ?? false\n\t\t\t\t\t: false,\n\t\t\t\thasAssignAction: _taxonomy\n\t\t\t\t\t? post._links?.[\n\t\t\t\t\t\t\t'wp:action-assign-' + _taxonomy.rest_base\n\t\t\t\t\t ] ?? false\n\t\t\t\t\t: false,\n\t\t\t\ttaxonomy: _taxonomy,\n\t\t\t\ttermIds: _termIds,\n\t\t\t\tterms: _termIds.length\n\t\t\t\t\t? getEntityRecords( 'taxonomy', slug, query )\n\t\t\t\t\t: EMPTY_ARRAY,\n\t\t\t\thasResolvedTerms: hasFinishedResolution( 'getEntityRecords', [\n\t\t\t\t\t'taxonomy',\n\t\t\t\t\tslug,\n\t\t\t\t\tquery,\n\t\t\t\t] ),\n\t\t\t};\n\t\t},\n\t\t[ slug ]\n\t);\n\n\tconst { searchResults } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getEntityRecords } = select( coreStore );\n\n\t\t\treturn {\n\t\t\t\tsearchResults: !! search\n\t\t\t\t\t? getEntityRecords( 'taxonomy', slug, {\n\t\t\t\t\t\t\t...DEFAULT_QUERY,\n\t\t\t\t\t\t\tsearch,\n\t\t\t\t\t } )\n\t\t\t\t\t: EMPTY_ARRAY,\n\t\t\t};\n\t\t},\n\t\t[ search, slug ]\n\t);\n\n\t// Update terms state only after the selectors are resolved.\n\t// We're using this to avoid terms temporarily disappearing on slow networks\n\t// while core data makes REST API requests.\n\tuseEffect( () => {\n\t\tif ( hasResolvedTerms ) {\n\t\t\tconst newValues = ( terms ?? [] ).map( ( term ) =>\n\t\t\t\tunescapeString( term.name )\n\t\t\t);\n\n\t\t\tsetValues( newValues );\n\t\t}\n\t}, [ terms, hasResolvedTerms ] );\n\n\tconst suggestions = useMemo( () => {\n\t\treturn ( searchResults ?? [] ).map( ( term ) =>\n\t\t\tunescapeString( term.name )\n\t\t);\n\t}, [ searchResults ] );\n\n\tconst { editPost } = useDispatch( editorStore );\n\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 defaultName = slug === 'post_tag' ? __( 'Tag' ) : __( 'Term' );\n\t\tconst termAddedMessage = sprintf(\n\t\t\t/* translators: %s: term name. */\n\t\t\t_x( '%s added', 'term' ),\n\t\t\ttaxonomy?.labels?.singular_name ?? defaultName\n\t\t);\n\n\t\tspeak( termAddedMessage, 'assertive' );\n\t\tonUpdateTerms( newTermIds );\n\t}\n\n\tconst newTermLabel =\n\t\ttaxonomy?.labels?.add_new_item ??\n\t\t( slug === 'post_tag' ? __( 'Add new tag' ) : __( 'Add new Term' ) );\n\tconst singularName =\n\t\ttaxonomy?.labels?.singular_name ??\n\t\t( slug === 'post_tag' ? __( 'Tag' ) : __( 'Term' ) );\n\tconst termAddedLabel = sprintf(\n\t\t/* translators: %s: term name. */\n\t\t_x( '%s added', 'term' ),\n\t\tsingularName\n\t);\n\tconst termRemovedLabel = sprintf(\n\t\t/* translators: %s: term name. */\n\t\t_x( '%s removed', 'term' ),\n\t\tsingularName\n\t);\n\tconst removeTermLabel = sprintf(\n\t\t/* translators: %s: term name. */\n\t\t_x( 'Remove %s', 'term' ),\n\t\tsingularName\n\t);\n\n\treturn (\n\t\t<>\n\t\t\t<FormTokenField\n\t\t\t\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","_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","_links","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","defaultName","termAddedMessage","labels","singular_name","newTermLabel","add_new_item","singularName","termAddedLabel","termRemovedLabel","removeTermLabel","added","removed","remove"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\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\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? post._links?.[\n\t\t\t\t\t\t\t'wp:action-create-' + _taxonomy.rest_base\n\t\t\t\t\t ] ?? false\n\t\t\t\t\t: false,\n\t\t\t\thasAssignAction: _taxonomy\n\t\t\t\t\t? post._links?.[\n\t\t\t\t\t\t\t'wp:action-assign-' + _taxonomy.rest_base\n\t\t\t\t\t ] ?? false\n\t\t\t\t\t: false,\n\t\t\t\ttaxonomy: _taxonomy,\n\t\t\t\ttermIds: _termIds,\n\t\t\t\tterms: _termIds.length\n\t\t\t\t\t? getEntityRecords( 'taxonomy', slug, query )\n\t\t\t\t\t: EMPTY_ARRAY,\n\t\t\t\thasResolvedTerms: hasFinishedResolution( 'getEntityRecords', [\n\t\t\t\t\t'taxonomy',\n\t\t\t\t\tslug,\n\t\t\t\t\tquery,\n\t\t\t\t] ),\n\t\t\t};\n\t\t},\n\t\t[ slug ]\n\t);\n\n\tconst { searchResults } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getEntityRecords } = select( coreStore );\n\n\t\t\treturn {\n\t\t\t\tsearchResults: !! search\n\t\t\t\t\t? getEntityRecords( 'taxonomy', slug, {\n\t\t\t\t\t\t\t...DEFAULT_QUERY,\n\t\t\t\t\t\t\tsearch,\n\t\t\t\t\t } )\n\t\t\t\t\t: EMPTY_ARRAY,\n\t\t\t};\n\t\t},\n\t\t[ search, slug ]\n\t);\n\n\t// Update terms state only after the selectors are resolved.\n\t// We're using this to avoid terms temporarily disappearing on slow networks\n\t// while core data makes REST API requests.\n\tuseEffect( () => {\n\t\tif ( hasResolvedTerms ) {\n\t\t\tconst newValues = ( terms ?? [] ).map( ( term ) =>\n\t\t\t\tunescapeString( term.name )\n\t\t\t);\n\n\t\t\tsetValues( newValues );\n\t\t}\n\t}, [ terms, hasResolvedTerms ] );\n\n\tconst suggestions = useMemo( () => {\n\t\treturn ( searchResults ?? [] ).map( ( term ) =>\n\t\t\tunescapeString( term.name )\n\t\t);\n\t}, [ searchResults ] );\n\n\tconst { editPost } = useDispatch( editorStore );\n\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 defaultName = slug === 'post_tag' ? __( 'Tag' ) : __( 'Term' );\n\t\tconst termAddedMessage = sprintf(\n\t\t\t/* translators: %s: term name. */\n\t\t\t_x( '%s added', 'term' ),\n\t\t\ttaxonomy?.labels?.singular_name ?? defaultName\n\t\t);\n\n\t\tspeak( termAddedMessage, 'assertive' );\n\t\tonUpdateTerms( newTermIds );\n\t}\n\n\tconst newTermLabel =\n\t\ttaxonomy?.labels?.add_new_item ??\n\t\t( slug === 'post_tag' ? __( 'Add new tag' ) : __( 'Add new Term' ) );\n\tconst singularName =\n\t\ttaxonomy?.labels?.singular_name ??\n\t\t( slug === 'post_tag' ? __( 'Tag' ) : __( 'Term' ) );\n\tconst termAddedLabel = sprintf(\n\t\t/* translators: %s: term name. */\n\t\t_x( '%s added', 'term' ),\n\t\tsingularName\n\t);\n\tconst termRemovedLabel = sprintf(\n\t\t/* translators: %s: term name. */\n\t\t_x( '%s removed', 'term' ),\n\t\tsingularName\n\t);\n\tconst removeTermLabel = sprintf(\n\t\t/* translators: %s: term name. */\n\t\t_x( 'Remove %s', 'term' ),\n\t\tsingularName\n\t);\n\n\treturn (\n\t\t<>\n\t\t\t<FormTokenField\n\t\t\t\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"]}
|
|
@@ -155,12 +155,11 @@ function getFilterMatcher(filterValue) {
|
|
|
155
155
|
*/
|
|
156
156
|
|
|
157
157
|
|
|
158
|
-
function HierarchicalTermSelector(
|
|
159
|
-
|
|
158
|
+
function HierarchicalTermSelector({
|
|
159
|
+
slug
|
|
160
|
+
}) {
|
|
161
|
+
var _taxonomy$labels$sear, _taxonomy$name;
|
|
160
162
|
|
|
161
|
-
let {
|
|
162
|
-
slug
|
|
163
|
-
} = _ref;
|
|
164
163
|
const [adding, setAdding] = (0, _element.useState)(false);
|
|
165
164
|
const [formName, setFormName] = (0, _element.useState)('');
|
|
166
165
|
/**
|
|
@@ -180,7 +179,7 @@ function HierarchicalTermSelector(_ref) {
|
|
|
180
179
|
availableTerms,
|
|
181
180
|
taxonomy
|
|
182
181
|
} = (0, _data.useSelect)(select => {
|
|
183
|
-
var _post$_links, _post$_links2
|
|
182
|
+
var _post$_links, _post$_links2;
|
|
184
183
|
|
|
185
184
|
const {
|
|
186
185
|
getCurrentPost,
|
|
@@ -196,8 +195,8 @@ function HierarchicalTermSelector(_ref) {
|
|
|
196
195
|
|
|
197
196
|
const post = getCurrentPost();
|
|
198
197
|
return {
|
|
199
|
-
hasCreateAction: _taxonomy ? (_post$_links =
|
|
200
|
-
hasAssignAction: _taxonomy ? (_post$
|
|
198
|
+
hasCreateAction: _taxonomy ? (_post$_links = post._links?.['wp:action-create-' + _taxonomy.rest_base]) !== null && _post$_links !== void 0 ? _post$_links : false : false,
|
|
199
|
+
hasAssignAction: _taxonomy ? (_post$_links2 = post._links?.['wp:action-assign-' + _taxonomy.rest_base]) !== null && _post$_links2 !== void 0 ? _post$_links2 : false : false,
|
|
201
200
|
terms: _taxonomy ? getEditedPostAttribute(_taxonomy.rest_base) : EMPTY_ARRAY,
|
|
202
201
|
loading: isResolving('getEntityRecords', ['taxonomy', slug, DEFAULT_QUERY]),
|
|
203
202
|
availableTerms: getEntityRecords('taxonomy', slug, DEFAULT_QUERY) || EMPTY_ARRAY,
|
|
@@ -272,7 +271,7 @@ function HierarchicalTermSelector(_ref) {
|
|
|
272
271
|
};
|
|
273
272
|
|
|
274
273
|
const onAddTerm = async event => {
|
|
275
|
-
var _taxonomy$labels$sing
|
|
274
|
+
var _taxonomy$labels$sing;
|
|
276
275
|
|
|
277
276
|
event.preventDefault();
|
|
278
277
|
|
|
@@ -302,7 +301,7 @@ function HierarchicalTermSelector(_ref) {
|
|
|
302
301
|
const defaultName = slug === 'category' ? (0, _i18n.__)('Category') : (0, _i18n.__)('Term');
|
|
303
302
|
const termAddedMessage = (0, _i18n.sprintf)(
|
|
304
303
|
/* translators: %s: taxonomy name */
|
|
305
|
-
(0, _i18n._x)('%s added', 'term'), (_taxonomy$labels$sing = taxonomy
|
|
304
|
+
(0, _i18n._x)('%s added', 'term'), (_taxonomy$labels$sing = taxonomy?.labels?.singular_name) !== null && _taxonomy$labels$sing !== void 0 ? _taxonomy$labels$sing : defaultName);
|
|
306
305
|
(0, _a11y.speak)(termAddedMessage, 'assertive');
|
|
307
306
|
setAdding(false);
|
|
308
307
|
setFormName('');
|
|
@@ -356,9 +355,9 @@ function HierarchicalTermSelector(_ref) {
|
|
|
356
355
|
};
|
|
357
356
|
|
|
358
357
|
const labelWithFallback = (labelProperty, fallbackIsCategory, fallbackIsNotCategory) => {
|
|
359
|
-
var _taxonomy$labels$labe
|
|
358
|
+
var _taxonomy$labels$labe;
|
|
360
359
|
|
|
361
|
-
return (_taxonomy$labels$labe = taxonomy
|
|
360
|
+
return (_taxonomy$labels$labe = taxonomy?.labels?.[labelProperty]) !== null && _taxonomy$labels$labe !== void 0 ? _taxonomy$labels$labe : slug === 'category' ? fallbackIsCategory : fallbackIsNotCategory;
|
|
362
361
|
};
|
|
363
362
|
|
|
364
363
|
const newTermButtonLabel = labelWithFallback('add_new_item', (0, _i18n.__)('Add new category'), (0, _i18n.__)('Add new term'));
|
|
@@ -366,8 +365,8 @@ function HierarchicalTermSelector(_ref) {
|
|
|
366
365
|
const parentSelectLabel = labelWithFallback('parent_item', (0, _i18n.__)('Parent Category'), (0, _i18n.__)('Parent Term'));
|
|
367
366
|
const noParentOption = `— ${parentSelectLabel} —`;
|
|
368
367
|
const newTermSubmitLabel = newTermButtonLabel;
|
|
369
|
-
const filterLabel = (_taxonomy$labels$sear = taxonomy
|
|
370
|
-
const groupLabel = (_taxonomy$name = taxonomy
|
|
368
|
+
const filterLabel = (_taxonomy$labels$sear = taxonomy?.labels?.search_items) !== null && _taxonomy$labels$sear !== void 0 ? _taxonomy$labels$sear : (0, _i18n.__)('Search Terms');
|
|
369
|
+
const groupLabel = (_taxonomy$name = taxonomy?.name) !== null && _taxonomy$name !== void 0 ? _taxonomy$name : (0, _i18n.__)('Terms');
|
|
371
370
|
const showFilter = availableTerms.length >= MIN_TERMS_COUNT_FOR_FILTER;
|
|
372
371
|
return (0, _element.createElement)(_components.Flex, {
|
|
373
372
|
direction: "column",
|
|
@@ -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","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","post","_links","rest_base","editPost","saveEntityRecord","availableTermsTree","addTerm","onUpdateTerms","termIds","onChange","termId","hasTerm","includes","newTerms","onChangeFormName","value","onChangeFormParent","parentId","onToggleForm","onAddTerm","event","preventDefault","existingTerm","some","newTerm","defaultName","termAddedMessage","labels","singular_name","setFilter","newFilteredTermsTree","getResultCount","count","i","resultCount","resultsFoundMessage","renderTerms","renderedTerms","labelWithFallback","labelProperty","fallbackIsCategory","fallbackIsNotCategory","newTermButtonLabel","newTermLabel","parentSelectLabel","noParentOption","newTermSubmitLabel","filterLabel","search_items","groupLabel","showFilter"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, _n, _x, sprintf } from '@wordpress/i18n';\nimport { useMemo, useState } from '@wordpress/element';\nimport {\n\tButton,\n\tCheckboxControl,\n\tTextControl,\n\tTreeSelect,\n\twithFilters,\n\tFlex,\n\tFlexItem,\n} from '@wordpress/components';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { useDebounce } from '@wordpress/compose';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { speak } from '@wordpress/a11y';\nimport { decodeEntities } from '@wordpress/html-entities';\n\n/**\n * Internal dependencies\n */\nimport { buildTermsTree } from '../../utils/terms';\nimport { store as editorStore } from '../../store';\n\n/**\n * Module Constants\n */\nconst DEFAULT_QUERY = {\n\tper_page: -1,\n\torderby: 'name',\n\torder: 'asc',\n\t_fields: 'id,name,parent',\n\tcontext: 'view',\n};\n\nconst MIN_TERMS_COUNT_FOR_FILTER = 8;\n\nconst EMPTY_ARRAY = [];\n\n/**\n * Sort Terms by Selected.\n *\n * @param {Object[]} termsTree Array of terms in tree format.\n * @param {number[]} terms Selected terms.\n *\n * @return {Object[]} Sorted array of terms.\n */\nexport function sortBySelected( termsTree, terms ) {\n\tconst treeHasSelection = ( termTree ) => {\n\t\tif ( terms.indexOf( termTree.id ) !== -1 ) {\n\t\t\treturn true;\n\t\t}\n\t\tif ( undefined === termTree.children ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn (\n\t\t\ttermTree.children\n\t\t\t\t.map( treeHasSelection )\n\t\t\t\t.filter( ( child ) => child ).length > 0\n\t\t);\n\t};\n\tconst termOrChildIsSelected = ( termA, termB ) => {\n\t\tconst termASelected = treeHasSelection( termA );\n\t\tconst termBSelected = treeHasSelection( termB );\n\n\t\tif ( termASelected === termBSelected ) {\n\t\t\treturn 0;\n\t\t}\n\n\t\tif ( termASelected && ! termBSelected ) {\n\t\t\treturn -1;\n\t\t}\n\n\t\tif ( ! termASelected && termBSelected ) {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn 0;\n\t};\n\tconst newTermTree = [ ...termsTree ];\n\tnewTermTree.sort( termOrChildIsSelected );\n\treturn newTermTree;\n}\n\n/**\n * Find term by parent id or name.\n *\n * @param {Object[]} terms Array of Terms.\n * @param {number|string} parent id.\n * @param {string} name Term name.\n * @return {Object} Term object.\n */\nexport function findTerm( terms, parent, name ) {\n\treturn terms.find( ( term ) => {\n\t\treturn (\n\t\t\t( ( ! term.parent && ! parent ) ||\n\t\t\t\tparseInt( term.parent ) === parseInt( parent ) ) &&\n\t\t\tterm.name.toLowerCase() === name.toLowerCase()\n\t\t);\n\t} );\n}\n\n/**\n * Get filter matcher function.\n *\n * @param {string} filterValue Filter value.\n * @return {(function(Object): (Object|boolean))} Matcher function.\n */\nexport function getFilterMatcher( filterValue ) {\n\tconst matchTermsForFilter = ( originalTerm ) => {\n\t\tif ( '' === filterValue ) {\n\t\t\treturn originalTerm;\n\t\t}\n\n\t\t// Shallow clone, because we'll be filtering the term's children and\n\t\t// don't want to modify the original term.\n\t\tconst term = { ...originalTerm };\n\n\t\t// Map and filter the children, recursive so we deal with grandchildren\n\t\t// and any deeper levels.\n\t\tif ( term.children.length > 0 ) {\n\t\t\tterm.children = term.children\n\t\t\t\t.map( matchTermsForFilter )\n\t\t\t\t.filter( ( child ) => child );\n\t\t}\n\n\t\t// If the term's name contains the filterValue, or it has children\n\t\t// (i.e. some child matched at some point in the tree) then return it.\n\t\tif (\n\t\t\t-1 !==\n\t\t\t\tterm.name.toLowerCase().indexOf( filterValue.toLowerCase() ) ||\n\t\t\tterm.children.length > 0\n\t\t) {\n\t\t\treturn term;\n\t\t}\n\n\t\t// Otherwise, return false. After mapping, the list of terms will need\n\t\t// to have false values filtered out.\n\t\treturn false;\n\t};\n\treturn matchTermsForFilter;\n}\n\n/**\n * Hierarchical term selector.\n *\n * @param {Object} props Component props.\n * @param {string} props.slug Taxonomy slug.\n * @return {WPElement} Hierarchical term selector component.\n */\nexport function HierarchicalTermSelector( { slug } ) {\n\tconst [ adding, setAdding ] = useState( false );\n\tconst [ formName, setFormName ] = useState( '' );\n\t/**\n\t * @type {[number|'', Function]}\n\t */\n\tconst [ formParent, setFormParent ] = useState( '' );\n\tconst [ showForm, setShowForm ] = useState( false );\n\tconst [ filterValue, setFilterValue ] = useState( '' );\n\tconst [ filteredTermsTree, setFilteredTermsTree ] = useState( [] );\n\tconst debouncedSpeak = useDebounce( speak, 500 );\n\n\tconst {\n\t\thasCreateAction,\n\t\thasAssignAction,\n\t\tterms,\n\t\tloading,\n\t\tavailableTerms,\n\t\ttaxonomy,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getCurrentPost, getEditedPostAttribute } =\n\t\t\t\tselect( editorStore );\n\t\t\tconst { getTaxonomy, getEntityRecords, isResolving } =\n\t\t\t\tselect( coreStore );\n\t\t\tconst _taxonomy = getTaxonomy( slug );\n\t\t\tconst post = getCurrentPost();\n\n\t\t\treturn {\n\t\t\t\thasCreateAction: _taxonomy\n\t\t\t\t\t? post._links?.[\n\t\t\t\t\t\t\t'wp:action-create-' + _taxonomy.rest_base\n\t\t\t\t\t ] ?? false\n\t\t\t\t\t: false,\n\t\t\t\thasAssignAction: _taxonomy\n\t\t\t\t\t? post._links?.[\n\t\t\t\t\t\t\t'wp:action-assign-' + _taxonomy.rest_base\n\t\t\t\t\t ] ?? false\n\t\t\t\t\t: false,\n\t\t\t\tterms: _taxonomy\n\t\t\t\t\t? getEditedPostAttribute( _taxonomy.rest_base )\n\t\t\t\t\t: EMPTY_ARRAY,\n\t\t\t\tloading: isResolving( 'getEntityRecords', [\n\t\t\t\t\t'taxonomy',\n\t\t\t\t\tslug,\n\t\t\t\t\tDEFAULT_QUERY,\n\t\t\t\t] ),\n\t\t\t\tavailableTerms:\n\t\t\t\t\tgetEntityRecords( 'taxonomy', slug, DEFAULT_QUERY ) ||\n\t\t\t\t\tEMPTY_ARRAY,\n\t\t\t\ttaxonomy: _taxonomy,\n\t\t\t};\n\t\t},\n\t\t[ slug ]\n\t);\n\n\tconst { editPost } = useDispatch( editorStore );\n\tconst { saveEntityRecord } = useDispatch( coreStore );\n\n\tconst availableTermsTree = useMemo(\n\t\t() => sortBySelected( buildTermsTree( availableTerms ), terms ),\n\t\t// Remove `terms` from the dependency list to avoid reordering every time\n\t\t// checking or unchecking a term.\n\t\t[ availableTerms ]\n\t);\n\n\tif ( ! hasAssignAction ) {\n\t\treturn null;\n\t}\n\n\t/**\n\t * Append new term.\n\t *\n\t * @param {Object} term Term object.\n\t * @return {Promise} A promise that resolves to save term object.\n\t */\n\tconst addTerm = ( term ) => {\n\t\treturn saveEntityRecord( 'taxonomy', slug, term );\n\t};\n\n\t/**\n\t * Update terms for post.\n\t *\n\t * @param {number[]} termIds Term ids.\n\t */\n\tconst onUpdateTerms = ( termIds ) => {\n\t\teditPost( { [ taxonomy.rest_base ]: termIds } );\n\t};\n\n\t/**\n\t * Handler for checking term.\n\t *\n\t * @param {number} termId\n\t */\n\tconst onChange = ( termId ) => {\n\t\tconst hasTerm = terms.includes( termId );\n\t\tconst newTerms = hasTerm\n\t\t\t? terms.filter( ( id ) => id !== termId )\n\t\t\t: [ ...terms, termId ];\n\t\tonUpdateTerms( newTerms );\n\t};\n\n\tconst onChangeFormName = ( value ) => {\n\t\tsetFormName( value );\n\t};\n\n\t/**\n\t * Handler for changing form parent.\n\t *\n\t * @param {number|''} parentId Parent post id.\n\t */\n\tconst onChangeFormParent = ( parentId ) => {\n\t\tsetFormParent( parentId );\n\t};\n\n\tconst onToggleForm = () => {\n\t\tsetShowForm( ! showForm );\n\t};\n\n\tconst onAddTerm = async ( event ) => {\n\t\tevent.preventDefault();\n\t\tif ( formName === '' || adding ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Check if the term we are adding already exists.\n\t\tconst existingTerm = findTerm( availableTerms, formParent, formName );\n\t\tif ( existingTerm ) {\n\t\t\t// If the term we are adding exists but is not selected select it.\n\t\t\tif ( ! terms.some( ( term ) => term === existingTerm.id ) ) {\n\t\t\t\tonUpdateTerms( [ ...terms, existingTerm.id ] );\n\t\t\t}\n\n\t\t\tsetFormName( '' );\n\t\t\tsetFormParent( '' );\n\n\t\t\treturn;\n\t\t}\n\t\tsetAdding( true );\n\n\t\tconst newTerm = await addTerm( {\n\t\t\tname: formName,\n\t\t\tparent: formParent ? formParent : undefined,\n\t\t} );\n\n\t\tconst defaultName =\n\t\t\tslug === 'category' ? __( 'Category' ) : __( 'Term' );\n\t\tconst termAddedMessage = sprintf(\n\t\t\t/* translators: %s: taxonomy name */\n\t\t\t_x( '%s added', 'term' ),\n\t\t\ttaxonomy?.labels?.singular_name ?? defaultName\n\t\t);\n\t\tspeak( termAddedMessage, 'assertive' );\n\t\tsetAdding( false );\n\t\tsetFormName( '' );\n\t\tsetFormParent( '' );\n\t\tonUpdateTerms( [ ...terms, newTerm.id ] );\n\t};\n\n\tconst setFilter = ( value ) => {\n\t\tconst newFilteredTermsTree = availableTermsTree\n\t\t\t.map( getFilterMatcher( value ) )\n\t\t\t.filter( ( term ) => term );\n\t\tconst getResultCount = ( termsTree ) => {\n\t\t\tlet count = 0;\n\t\t\tfor ( let i = 0; i < termsTree.length; i++ ) {\n\t\t\t\tcount++;\n\t\t\t\tif ( undefined !== termsTree[ i ].children ) {\n\t\t\t\t\tcount += getResultCount( termsTree[ i ].children );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn count;\n\t\t};\n\n\t\tsetFilterValue( value );\n\t\tsetFilteredTermsTree( newFilteredTermsTree );\n\n\t\tconst resultCount = getResultCount( newFilteredTermsTree );\n\t\tconst resultsFoundMessage = sprintf(\n\t\t\t/* translators: %d: number of results */\n\t\t\t_n( '%d result found.', '%d results found.', resultCount ),\n\t\t\tresultCount\n\t\t);\n\n\t\tdebouncedSpeak( resultsFoundMessage, 'assertive' );\n\t};\n\n\tconst renderTerms = ( renderedTerms ) => {\n\t\treturn renderedTerms.map( ( term ) => {\n\t\t\treturn (\n\t\t\t\t<div\n\t\t\t\t\tkey={ term.id }\n\t\t\t\t\tclassName=\"editor-post-taxonomies__hierarchical-terms-choice\"\n\t\t\t\t>\n\t\t\t\t\t<CheckboxControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\tchecked={ terms.indexOf( term.id ) !== -1 }\n\t\t\t\t\t\tonChange={ () => {\n\t\t\t\t\t\t\tconst termId = parseInt( term.id, 10 );\n\t\t\t\t\t\t\tonChange( termId );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tlabel={ decodeEntities( term.name ) }\n\t\t\t\t\t/>\n\t\t\t\t\t{ !! term.children.length && (\n\t\t\t\t\t\t<div className=\"editor-post-taxonomies__hierarchical-terms-subchoices\">\n\t\t\t\t\t\t\t{ renderTerms( term.children ) }\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) }\n\t\t\t\t</div>\n\t\t\t);\n\t\t} );\n\t};\n\n\tconst labelWithFallback = (\n\t\tlabelProperty,\n\t\tfallbackIsCategory,\n\t\tfallbackIsNotCategory\n\t) =>\n\t\ttaxonomy?.labels?.[ labelProperty ] ??\n\t\t( slug === 'category' ? fallbackIsCategory : fallbackIsNotCategory );\n\n\tconst newTermButtonLabel = labelWithFallback(\n\t\t'add_new_item',\n\t\t__( 'Add new category' ),\n\t\t__( 'Add new term' )\n\t);\n\tconst newTermLabel = labelWithFallback(\n\t\t'new_item_name',\n\t\t__( 'Add new category' ),\n\t\t__( 'Add new term' )\n\t);\n\tconst parentSelectLabel = labelWithFallback(\n\t\t'parent_item',\n\t\t__( 'Parent Category' ),\n\t\t__( 'Parent Term' )\n\t);\n\tconst noParentOption = `— ${ parentSelectLabel } —`;\n\tconst newTermSubmitLabel = newTermButtonLabel;\n\tconst filterLabel = taxonomy?.labels?.search_items ?? __( 'Search Terms' );\n\tconst groupLabel = taxonomy?.name ?? __( 'Terms' );\n\tconst showFilter = availableTerms.length >= MIN_TERMS_COUNT_FOR_FILTER;\n\n\treturn (\n\t\t<Flex direction=\"column\" gap=\"4\">\n\t\t\t{ showFilter && (\n\t\t\t\t<TextControl\n\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\tlabel={ filterLabel }\n\t\t\t\t\tvalue={ filterValue }\n\t\t\t\t\tonChange={ setFilter }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t<div\n\t\t\t\tclassName=\"editor-post-taxonomies__hierarchical-terms-list\"\n\t\t\t\ttabIndex=\"0\"\n\t\t\t\trole=\"group\"\n\t\t\t\taria-label={ groupLabel }\n\t\t\t>\n\t\t\t\t{ renderTerms(\n\t\t\t\t\t'' !== filterValue ? filteredTermsTree : availableTermsTree\n\t\t\t\t) }\n\t\t\t</div>\n\t\t\t{ ! loading && hasCreateAction && (\n\t\t\t\t<FlexItem>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tonClick={ onToggleForm }\n\t\t\t\t\t\tclassName=\"editor-post-taxonomies__hierarchical-terms-add\"\n\t\t\t\t\t\taria-expanded={ showForm }\n\t\t\t\t\t\tvariant=\"link\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ newTermButtonLabel }\n\t\t\t\t\t</Button>\n\t\t\t\t</FlexItem>\n\t\t\t) }\n\t\t\t{ showForm && (\n\t\t\t\t<form onSubmit={ onAddTerm }>\n\t\t\t\t\t<Flex direction=\"column\" gap=\"4\">\n\t\t\t\t\t\t<TextControl\n\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\tclassName=\"editor-post-taxonomies__hierarchical-terms-input\"\n\t\t\t\t\t\t\tlabel={ newTermLabel }\n\t\t\t\t\t\t\tvalue={ formName }\n\t\t\t\t\t\t\tonChange={ onChangeFormName }\n\t\t\t\t\t\t\trequired\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{ !! availableTerms.length && (\n\t\t\t\t\t\t\t<TreeSelect\n\t\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\t\tlabel={ parentSelectLabel }\n\t\t\t\t\t\t\t\tnoOptionLabel={ noParentOption }\n\t\t\t\t\t\t\t\tonChange={ onChangeFormParent }\n\t\t\t\t\t\t\t\tselectedId={ formParent }\n\t\t\t\t\t\t\t\ttree={ availableTermsTree }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\t\t\tclassName=\"editor-post-taxonomies__hierarchical-terms-submit\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ newTermSubmitLabel }\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t</Flex>\n\t\t\t\t</form>\n\t\t\t) }\n\t\t</Flex>\n\t);\n}\n\nexport default withFilters( 'editor.PostTaxonomyType' )(\n\tHierarchicalTermSelector\n);\n"]}
|
|
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","post","_links","rest_base","editPost","saveEntityRecord","availableTermsTree","addTerm","onUpdateTerms","termIds","onChange","termId","hasTerm","includes","newTerms","onChangeFormName","value","onChangeFormParent","parentId","onToggleForm","onAddTerm","event","preventDefault","existingTerm","some","newTerm","defaultName","termAddedMessage","labels","singular_name","setFilter","newFilteredTermsTree","getResultCount","count","i","resultCount","resultsFoundMessage","renderTerms","renderedTerms","labelWithFallback","labelProperty","fallbackIsCategory","fallbackIsNotCategory","newTermButtonLabel","newTermLabel","parentSelectLabel","noParentOption","newTermSubmitLabel","filterLabel","search_items","groupLabel","showFilter"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, _n, _x, sprintf } from '@wordpress/i18n';\nimport { useMemo, useState } from '@wordpress/element';\nimport {\n\tButton,\n\tCheckboxControl,\n\tTextControl,\n\tTreeSelect,\n\twithFilters,\n\tFlex,\n\tFlexItem,\n} from '@wordpress/components';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { useDebounce } from '@wordpress/compose';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { speak } from '@wordpress/a11y';\nimport { decodeEntities } from '@wordpress/html-entities';\n\n/**\n * Internal dependencies\n */\nimport { buildTermsTree } from '../../utils/terms';\nimport { store as editorStore } from '../../store';\n\n/**\n * Module Constants\n */\nconst DEFAULT_QUERY = {\n\tper_page: -1,\n\torderby: 'name',\n\torder: 'asc',\n\t_fields: 'id,name,parent',\n\tcontext: 'view',\n};\n\nconst MIN_TERMS_COUNT_FOR_FILTER = 8;\n\nconst EMPTY_ARRAY = [];\n\n/**\n * Sort Terms by Selected.\n *\n * @param {Object[]} termsTree Array of terms in tree format.\n * @param {number[]} terms Selected terms.\n *\n * @return {Object[]} Sorted array of terms.\n */\nexport function sortBySelected( termsTree, terms ) {\n\tconst treeHasSelection = ( termTree ) => {\n\t\tif ( terms.indexOf( termTree.id ) !== -1 ) {\n\t\t\treturn true;\n\t\t}\n\t\tif ( undefined === termTree.children ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn (\n\t\t\ttermTree.children\n\t\t\t\t.map( treeHasSelection )\n\t\t\t\t.filter( ( child ) => child ).length > 0\n\t\t);\n\t};\n\tconst termOrChildIsSelected = ( termA, termB ) => {\n\t\tconst termASelected = treeHasSelection( termA );\n\t\tconst termBSelected = treeHasSelection( termB );\n\n\t\tif ( termASelected === termBSelected ) {\n\t\t\treturn 0;\n\t\t}\n\n\t\tif ( termASelected && ! termBSelected ) {\n\t\t\treturn -1;\n\t\t}\n\n\t\tif ( ! termASelected && termBSelected ) {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn 0;\n\t};\n\tconst newTermTree = [ ...termsTree ];\n\tnewTermTree.sort( termOrChildIsSelected );\n\treturn newTermTree;\n}\n\n/**\n * Find term by parent id or name.\n *\n * @param {Object[]} terms Array of Terms.\n * @param {number|string} parent id.\n * @param {string} name Term name.\n * @return {Object} Term object.\n */\nexport function findTerm( terms, parent, name ) {\n\treturn terms.find( ( term ) => {\n\t\treturn (\n\t\t\t( ( ! term.parent && ! parent ) ||\n\t\t\t\tparseInt( term.parent ) === parseInt( parent ) ) &&\n\t\t\tterm.name.toLowerCase() === name.toLowerCase()\n\t\t);\n\t} );\n}\n\n/**\n * Get filter matcher function.\n *\n * @param {string} filterValue Filter value.\n * @return {(function(Object): (Object|boolean))} Matcher function.\n */\nexport function getFilterMatcher( filterValue ) {\n\tconst matchTermsForFilter = ( originalTerm ) => {\n\t\tif ( '' === filterValue ) {\n\t\t\treturn originalTerm;\n\t\t}\n\n\t\t// Shallow clone, because we'll be filtering the term's children and\n\t\t// don't want to modify the original term.\n\t\tconst term = { ...originalTerm };\n\n\t\t// Map and filter the children, recursive so we deal with grandchildren\n\t\t// and any deeper levels.\n\t\tif ( term.children.length > 0 ) {\n\t\t\tterm.children = term.children\n\t\t\t\t.map( matchTermsForFilter )\n\t\t\t\t.filter( ( child ) => child );\n\t\t}\n\n\t\t// If the term's name contains the filterValue, or it has children\n\t\t// (i.e. some child matched at some point in the tree) then return it.\n\t\tif (\n\t\t\t-1 !==\n\t\t\t\tterm.name.toLowerCase().indexOf( filterValue.toLowerCase() ) ||\n\t\t\tterm.children.length > 0\n\t\t) {\n\t\t\treturn term;\n\t\t}\n\n\t\t// Otherwise, return false. After mapping, the list of terms will need\n\t\t// to have false values filtered out.\n\t\treturn false;\n\t};\n\treturn matchTermsForFilter;\n}\n\n/**\n * Hierarchical term selector.\n *\n * @param {Object} props Component props.\n * @param {string} props.slug Taxonomy slug.\n * @return {WPElement} Hierarchical term selector component.\n */\nexport function HierarchicalTermSelector( { slug } ) {\n\tconst [ adding, setAdding ] = useState( false );\n\tconst [ formName, setFormName ] = useState( '' );\n\t/**\n\t * @type {[number|'', Function]}\n\t */\n\tconst [ formParent, setFormParent ] = useState( '' );\n\tconst [ showForm, setShowForm ] = useState( false );\n\tconst [ filterValue, setFilterValue ] = useState( '' );\n\tconst [ filteredTermsTree, setFilteredTermsTree ] = useState( [] );\n\tconst debouncedSpeak = useDebounce( speak, 500 );\n\n\tconst {\n\t\thasCreateAction,\n\t\thasAssignAction,\n\t\tterms,\n\t\tloading,\n\t\tavailableTerms,\n\t\ttaxonomy,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getCurrentPost, getEditedPostAttribute } =\n\t\t\t\tselect( editorStore );\n\t\t\tconst { getTaxonomy, getEntityRecords, isResolving } =\n\t\t\t\tselect( coreStore );\n\t\t\tconst _taxonomy = getTaxonomy( slug );\n\t\t\tconst post = getCurrentPost();\n\n\t\t\treturn {\n\t\t\t\thasCreateAction: _taxonomy\n\t\t\t\t\t? post._links?.[\n\t\t\t\t\t\t\t'wp:action-create-' + _taxonomy.rest_base\n\t\t\t\t\t ] ?? false\n\t\t\t\t\t: false,\n\t\t\t\thasAssignAction: _taxonomy\n\t\t\t\t\t? post._links?.[\n\t\t\t\t\t\t\t'wp:action-assign-' + _taxonomy.rest_base\n\t\t\t\t\t ] ?? false\n\t\t\t\t\t: false,\n\t\t\t\tterms: _taxonomy\n\t\t\t\t\t? getEditedPostAttribute( _taxonomy.rest_base )\n\t\t\t\t\t: EMPTY_ARRAY,\n\t\t\t\tloading: isResolving( 'getEntityRecords', [\n\t\t\t\t\t'taxonomy',\n\t\t\t\t\tslug,\n\t\t\t\t\tDEFAULT_QUERY,\n\t\t\t\t] ),\n\t\t\t\tavailableTerms:\n\t\t\t\t\tgetEntityRecords( 'taxonomy', slug, DEFAULT_QUERY ) ||\n\t\t\t\t\tEMPTY_ARRAY,\n\t\t\t\ttaxonomy: _taxonomy,\n\t\t\t};\n\t\t},\n\t\t[ slug ]\n\t);\n\n\tconst { editPost } = useDispatch( editorStore );\n\tconst { saveEntityRecord } = useDispatch( coreStore );\n\n\tconst availableTermsTree = useMemo(\n\t\t() => sortBySelected( buildTermsTree( availableTerms ), terms ),\n\t\t// Remove `terms` from the dependency list to avoid reordering every time\n\t\t// checking or unchecking a term.\n\t\t[ availableTerms ]\n\t);\n\n\tif ( ! hasAssignAction ) {\n\t\treturn null;\n\t}\n\n\t/**\n\t * Append new term.\n\t *\n\t * @param {Object} term Term object.\n\t * @return {Promise} A promise that resolves to save term object.\n\t */\n\tconst addTerm = ( term ) => {\n\t\treturn saveEntityRecord( 'taxonomy', slug, term );\n\t};\n\n\t/**\n\t * Update terms for post.\n\t *\n\t * @param {number[]} termIds Term ids.\n\t */\n\tconst onUpdateTerms = ( termIds ) => {\n\t\teditPost( { [ taxonomy.rest_base ]: termIds } );\n\t};\n\n\t/**\n\t * Handler for checking term.\n\t *\n\t * @param {number} termId\n\t */\n\tconst onChange = ( termId ) => {\n\t\tconst hasTerm = terms.includes( termId );\n\t\tconst newTerms = hasTerm\n\t\t\t? terms.filter( ( id ) => id !== termId )\n\t\t\t: [ ...terms, termId ];\n\t\tonUpdateTerms( newTerms );\n\t};\n\n\tconst onChangeFormName = ( value ) => {\n\t\tsetFormName( value );\n\t};\n\n\t/**\n\t * Handler for changing form parent.\n\t *\n\t * @param {number|''} parentId Parent post id.\n\t */\n\tconst onChangeFormParent = ( parentId ) => {\n\t\tsetFormParent( parentId );\n\t};\n\n\tconst onToggleForm = () => {\n\t\tsetShowForm( ! showForm );\n\t};\n\n\tconst onAddTerm = async ( event ) => {\n\t\tevent.preventDefault();\n\t\tif ( formName === '' || adding ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Check if the term we are adding already exists.\n\t\tconst existingTerm = findTerm( availableTerms, formParent, formName );\n\t\tif ( existingTerm ) {\n\t\t\t// If the term we are adding exists but is not selected select it.\n\t\t\tif ( ! terms.some( ( term ) => term === existingTerm.id ) ) {\n\t\t\t\tonUpdateTerms( [ ...terms, existingTerm.id ] );\n\t\t\t}\n\n\t\t\tsetFormName( '' );\n\t\t\tsetFormParent( '' );\n\n\t\t\treturn;\n\t\t}\n\t\tsetAdding( true );\n\n\t\tconst newTerm = await addTerm( {\n\t\t\tname: formName,\n\t\t\tparent: formParent ? formParent : undefined,\n\t\t} );\n\n\t\tconst defaultName =\n\t\t\tslug === 'category' ? __( 'Category' ) : __( 'Term' );\n\t\tconst termAddedMessage = sprintf(\n\t\t\t/* translators: %s: taxonomy name */\n\t\t\t_x( '%s added', 'term' ),\n\t\t\ttaxonomy?.labels?.singular_name ?? defaultName\n\t\t);\n\t\tspeak( termAddedMessage, 'assertive' );\n\t\tsetAdding( false );\n\t\tsetFormName( '' );\n\t\tsetFormParent( '' );\n\t\tonUpdateTerms( [ ...terms, newTerm.id ] );\n\t};\n\n\tconst setFilter = ( value ) => {\n\t\tconst newFilteredTermsTree = availableTermsTree\n\t\t\t.map( getFilterMatcher( value ) )\n\t\t\t.filter( ( term ) => term );\n\t\tconst getResultCount = ( termsTree ) => {\n\t\t\tlet count = 0;\n\t\t\tfor ( let i = 0; i < termsTree.length; i++ ) {\n\t\t\t\tcount++;\n\t\t\t\tif ( undefined !== termsTree[ i ].children ) {\n\t\t\t\t\tcount += getResultCount( termsTree[ i ].children );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn count;\n\t\t};\n\n\t\tsetFilterValue( value );\n\t\tsetFilteredTermsTree( newFilteredTermsTree );\n\n\t\tconst resultCount = getResultCount( newFilteredTermsTree );\n\t\tconst resultsFoundMessage = sprintf(\n\t\t\t/* translators: %d: number of results */\n\t\t\t_n( '%d result found.', '%d results found.', resultCount ),\n\t\t\tresultCount\n\t\t);\n\n\t\tdebouncedSpeak( resultsFoundMessage, 'assertive' );\n\t};\n\n\tconst renderTerms = ( renderedTerms ) => {\n\t\treturn renderedTerms.map( ( term ) => {\n\t\t\treturn (\n\t\t\t\t<div\n\t\t\t\t\tkey={ term.id }\n\t\t\t\t\tclassName=\"editor-post-taxonomies__hierarchical-terms-choice\"\n\t\t\t\t>\n\t\t\t\t\t<CheckboxControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\tchecked={ terms.indexOf( term.id ) !== -1 }\n\t\t\t\t\t\tonChange={ () => {\n\t\t\t\t\t\t\tconst termId = parseInt( term.id, 10 );\n\t\t\t\t\t\t\tonChange( termId );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tlabel={ decodeEntities( term.name ) }\n\t\t\t\t\t/>\n\t\t\t\t\t{ !! term.children.length && (\n\t\t\t\t\t\t<div className=\"editor-post-taxonomies__hierarchical-terms-subchoices\">\n\t\t\t\t\t\t\t{ renderTerms( term.children ) }\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) }\n\t\t\t\t</div>\n\t\t\t);\n\t\t} );\n\t};\n\n\tconst labelWithFallback = (\n\t\tlabelProperty,\n\t\tfallbackIsCategory,\n\t\tfallbackIsNotCategory\n\t) =>\n\t\ttaxonomy?.labels?.[ labelProperty ] ??\n\t\t( slug === 'category' ? fallbackIsCategory : fallbackIsNotCategory );\n\n\tconst newTermButtonLabel = labelWithFallback(\n\t\t'add_new_item',\n\t\t__( 'Add new category' ),\n\t\t__( 'Add new term' )\n\t);\n\tconst newTermLabel = labelWithFallback(\n\t\t'new_item_name',\n\t\t__( 'Add new category' ),\n\t\t__( 'Add new term' )\n\t);\n\tconst parentSelectLabel = labelWithFallback(\n\t\t'parent_item',\n\t\t__( 'Parent Category' ),\n\t\t__( 'Parent Term' )\n\t);\n\tconst noParentOption = `— ${ parentSelectLabel } —`;\n\tconst newTermSubmitLabel = newTermButtonLabel;\n\tconst filterLabel = taxonomy?.labels?.search_items ?? __( 'Search Terms' );\n\tconst groupLabel = taxonomy?.name ?? __( 'Terms' );\n\tconst showFilter = availableTerms.length >= MIN_TERMS_COUNT_FOR_FILTER;\n\n\treturn (\n\t\t<Flex direction=\"column\" gap=\"4\">\n\t\t\t{ showFilter && (\n\t\t\t\t<TextControl\n\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\tlabel={ filterLabel }\n\t\t\t\t\tvalue={ filterValue }\n\t\t\t\t\tonChange={ setFilter }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t<div\n\t\t\t\tclassName=\"editor-post-taxonomies__hierarchical-terms-list\"\n\t\t\t\ttabIndex=\"0\"\n\t\t\t\trole=\"group\"\n\t\t\t\taria-label={ groupLabel }\n\t\t\t>\n\t\t\t\t{ renderTerms(\n\t\t\t\t\t'' !== filterValue ? filteredTermsTree : availableTermsTree\n\t\t\t\t) }\n\t\t\t</div>\n\t\t\t{ ! loading && hasCreateAction && (\n\t\t\t\t<FlexItem>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tonClick={ onToggleForm }\n\t\t\t\t\t\tclassName=\"editor-post-taxonomies__hierarchical-terms-add\"\n\t\t\t\t\t\taria-expanded={ showForm }\n\t\t\t\t\t\tvariant=\"link\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ newTermButtonLabel }\n\t\t\t\t\t</Button>\n\t\t\t\t</FlexItem>\n\t\t\t) }\n\t\t\t{ showForm && (\n\t\t\t\t<form onSubmit={ onAddTerm }>\n\t\t\t\t\t<Flex direction=\"column\" gap=\"4\">\n\t\t\t\t\t\t<TextControl\n\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\tclassName=\"editor-post-taxonomies__hierarchical-terms-input\"\n\t\t\t\t\t\t\tlabel={ newTermLabel }\n\t\t\t\t\t\t\tvalue={ formName }\n\t\t\t\t\t\t\tonChange={ onChangeFormName }\n\t\t\t\t\t\t\trequired\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{ !! availableTerms.length && (\n\t\t\t\t\t\t\t<TreeSelect\n\t\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\t\tlabel={ parentSelectLabel }\n\t\t\t\t\t\t\t\tnoOptionLabel={ noParentOption }\n\t\t\t\t\t\t\t\tonChange={ onChangeFormParent }\n\t\t\t\t\t\t\t\tselectedId={ formParent }\n\t\t\t\t\t\t\t\ttree={ availableTermsTree }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\t\t\tclassName=\"editor-post-taxonomies__hierarchical-terms-submit\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ newTermSubmitLabel }\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t</Flex>\n\t\t\t\t</form>\n\t\t\t) }\n\t\t</Flex>\n\t);\n}\n\nexport default withFilters( 'editor.PostTaxonomyType' )(\n\tHierarchicalTermSelector\n);\n"]}
|
|
@@ -31,20 +31,15 @@ var _store = require("../../store");
|
|
|
31
31
|
*/
|
|
32
32
|
const identity = x => x;
|
|
33
33
|
|
|
34
|
-
function PostTaxonomies(
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
} = _ref;
|
|
34
|
+
function PostTaxonomies({
|
|
35
|
+
postType,
|
|
36
|
+
taxonomies,
|
|
37
|
+
taxonomyWrapper = identity
|
|
38
|
+
}) {
|
|
40
39
|
const availableTaxonomies = (taxonomies !== null && taxonomies !== void 0 ? taxonomies : []).filter(taxonomy => taxonomy.types.includes(postType));
|
|
41
40
|
const visibleTaxonomies = availableTaxonomies.filter( // In some circumstances .visibility can end up as undefined so optional chaining operator required.
|
|
42
41
|
// https://github.com/WordPress/gutenberg/issues/40326
|
|
43
|
-
taxonomy =>
|
|
44
|
-
var _taxonomy$visibility;
|
|
45
|
-
|
|
46
|
-
return (_taxonomy$visibility = taxonomy.visibility) === null || _taxonomy$visibility === void 0 ? void 0 : _taxonomy$visibility.show_ui;
|
|
47
|
-
});
|
|
42
|
+
taxonomy => taxonomy.visibility?.show_ui);
|
|
48
43
|
return visibleTaxonomies.map(taxonomy => {
|
|
49
44
|
const TaxonomyComponent = taxonomy.hierarchical ? _hierarchicalTermSelector.default : _flatTermSelector.default;
|
|
50
45
|
return (0, _element.createElement)(_element.Fragment, {
|
|
@@ -1 +1 @@
|
|
|
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,
|
|
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,CAAyB;AAC/BC,EAAAA,QAD+B;AAE/BC,EAAAA,UAF+B;AAG/BC,EAAAA,eAAe,GAAGL;AAHa,CAAzB,EAIH;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,IAAgBA,QAAQ,CAACI,UAAT,EAAqBC,OAHZ,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"]}
|
|
@@ -32,11 +32,10 @@ const DEFAULT_QUERY = {
|
|
|
32
32
|
context: 'view'
|
|
33
33
|
};
|
|
34
34
|
|
|
35
|
-
function MostUsedTerms(
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
} = _ref;
|
|
35
|
+
function MostUsedTerms({
|
|
36
|
+
onSelect,
|
|
37
|
+
taxonomy
|
|
38
|
+
}) {
|
|
40
39
|
const {
|
|
41
40
|
_terms,
|
|
42
41
|
showTerms
|
|
@@ -44,7 +43,7 @@ function MostUsedTerms(_ref) {
|
|
|
44
43
|
const mostUsedTerms = select(_coreData.store).getEntityRecords('taxonomy', taxonomy.slug, DEFAULT_QUERY);
|
|
45
44
|
return {
|
|
46
45
|
_terms: mostUsedTerms,
|
|
47
|
-
showTerms:
|
|
46
|
+
showTerms: mostUsedTerms?.length >= MIN_MOST_USED_TERMS
|
|
48
47
|
};
|
|
49
48
|
}, [taxonomy.slug]);
|
|
50
49
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/editor/src/components/post-taxonomies/most-used-terms.js"],"names":["MIN_MOST_USED_TERMS","DEFAULT_QUERY","per_page","orderby","order","hide_empty","_fields","context","MostUsedTerms","onSelect","taxonomy","_terms","showTerms","select","mostUsedTerms","coreStore","getEntityRecords","slug","length","terms","labels","most_used","map","term","id","name"],"mappings":";;;;;;;;;AAGA;;AACA;;AACA;;AAKA;;AAVA;AACA;AACA;;AAKA;AACA;AACA;AAGA,MAAMA,mBAAmB,GAAG,CAA5B;AACA,MAAMC,aAAa,GAAG;AACrBC,EAAAA,QAAQ,EAAE,EADW;AAErBC,EAAAA,OAAO,EAAE,OAFY;AAGrBC,EAAAA,KAAK,EAAE,MAHc;AAIrBC,EAAAA,UAAU,EAAE,IAJS;AAKrBC,EAAAA,OAAO,EAAE,eALY;AAMrBC,EAAAA,OAAO,EAAE;AANY,CAAtB;;AASe,SAASC,aAAT,
|
|
1
|
+
{"version":3,"sources":["@wordpress/editor/src/components/post-taxonomies/most-used-terms.js"],"names":["MIN_MOST_USED_TERMS","DEFAULT_QUERY","per_page","orderby","order","hide_empty","_fields","context","MostUsedTerms","onSelect","taxonomy","_terms","showTerms","select","mostUsedTerms","coreStore","getEntityRecords","slug","length","terms","labels","most_used","map","term","id","name"],"mappings":";;;;;;;;;AAGA;;AACA;;AACA;;AAKA;;AAVA;AACA;AACA;;AAKA;AACA;AACA;AAGA,MAAMA,mBAAmB,GAAG,CAA5B;AACA,MAAMC,aAAa,GAAG;AACrBC,EAAAA,QAAQ,EAAE,EADW;AAErBC,EAAAA,OAAO,EAAE,OAFY;AAGrBC,EAAAA,KAAK,EAAE,MAHc;AAIrBC,EAAAA,UAAU,EAAE,IAJS;AAKrBC,EAAAA,OAAO,EAAE,eALY;AAMrBC,EAAAA,OAAO,EAAE;AANY,CAAtB;;AASe,SAASC,aAAT,CAAwB;AAAEC,EAAAA,QAAF;AAAYC,EAAAA;AAAZ,CAAxB,EAAiD;AAC/D,QAAM;AAAEC,IAAAA,MAAF;AAAUC,IAAAA;AAAV,MAAwB,qBAC3BC,MAAF,IAAc;AACb,UAAMC,aAAa,GAAGD,MAAM,CAAEE,eAAF,CAAN,CAAoBC,gBAApB,CACrB,UADqB,EAErBN,QAAQ,CAACO,IAFY,EAGrBhB,aAHqB,CAAtB;AAKA,WAAO;AACNU,MAAAA,MAAM,EAAEG,aADF;AAENF,MAAAA,SAAS,EAAEE,aAAa,EAAEI,MAAf,IAAyBlB;AAF9B,KAAP;AAIA,GAX4B,EAY7B,CAAEU,QAAQ,CAACO,IAAX,CAZ6B,CAA9B;;AAeA,MAAK,CAAEL,SAAP,EAAmB;AAClB,WAAO,IAAP;AACA;;AAED,QAAMO,KAAK,GAAG,2BAAeR,MAAf,CAAd;AAEA,SACC;AAAK,IAAA,SAAS,EAAC;AAAf,KACC,4BAAC,uBAAD,CAAa,WAAb;AACC,IAAA,EAAE,EAAC,IADJ;AAEC,IAAA,SAAS,EAAC;AAFX,KAIGD,QAAQ,CAACU,MAAT,CAAgBC,SAJnB,CADD,EAYC;AACC,IAAA,IAAI,EAAC,MADN;AAEC,IAAA,SAAS,EAAC;AAFX,KAIGF,KAAK,CAACG,GAAN,CAAaC,IAAF,IACZ;AAAI,IAAA,GAAG,EAAGA,IAAI,CAACC;AAAf,KACC,4BAAC,kBAAD;AACC,IAAA,OAAO,EAAC,MADT;AAEC,IAAA,OAAO,EAAG,MAAMf,QAAQ,CAAEc,IAAF;AAFzB,KAIGA,IAAI,CAACE,IAJR,CADD,CADC,CAJH,CAZD,CADD;AA+BA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { BaseControl, Button } from '@wordpress/components';\nimport { useSelect } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { unescapeTerms } from '../../utils/terms';\n\nconst MIN_MOST_USED_TERMS = 3;\nconst DEFAULT_QUERY = {\n\tper_page: 10,\n\torderby: 'count',\n\torder: 'desc',\n\thide_empty: true,\n\t_fields: 'id,name,count',\n\tcontext: 'view',\n};\n\nexport default function MostUsedTerms( { onSelect, taxonomy } ) {\n\tconst { _terms, showTerms } = useSelect(\n\t\t( select ) => {\n\t\t\tconst mostUsedTerms = select( coreStore ).getEntityRecords(\n\t\t\t\t'taxonomy',\n\t\t\t\ttaxonomy.slug,\n\t\t\t\tDEFAULT_QUERY\n\t\t\t);\n\t\t\treturn {\n\t\t\t\t_terms: mostUsedTerms,\n\t\t\t\tshowTerms: mostUsedTerms?.length >= MIN_MOST_USED_TERMS,\n\t\t\t};\n\t\t},\n\t\t[ taxonomy.slug ]\n\t);\n\n\tif ( ! showTerms ) {\n\t\treturn null;\n\t}\n\n\tconst terms = unescapeTerms( _terms );\n\n\treturn (\n\t\t<div className=\"editor-post-taxonomies__flat-term-most-used\">\n\t\t\t<BaseControl.VisualLabel\n\t\t\t\tas=\"h3\"\n\t\t\t\tclassName=\"editor-post-taxonomies__flat-term-most-used-label\"\n\t\t\t>\n\t\t\t\t{ taxonomy.labels.most_used }\n\t\t\t</BaseControl.VisualLabel>\n\t\t\t{ /*\n\t\t\t * Disable reason: The `list` ARIA role is redundant but\n\t\t\t * Safari+VoiceOver won't announce the list otherwise.\n\t\t\t */\n\t\t\t/* eslint-disable jsx-a11y/no-redundant-roles */ }\n\t\t\t<ul\n\t\t\t\trole=\"list\"\n\t\t\t\tclassName=\"editor-post-taxonomies__flat-term-most-used-list\"\n\t\t\t>\n\t\t\t\t{ terms.map( ( term ) => (\n\t\t\t\t\t<li key={ term.id }>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tvariant=\"link\"\n\t\t\t\t\t\t\tonClick={ () => onSelect( term ) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ term.name }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</li>\n\t\t\t\t) ) }\n\t\t\t</ul>\n\t\t\t{ /* eslint-enable jsx-a11y/no-redundant-roles */ }\n\t\t</div>\n\t);\n}\n"]}
|
|
@@ -31,7 +31,7 @@ function PostTemplate() {
|
|
|
31
31
|
selectedTemplate,
|
|
32
32
|
isViewable
|
|
33
33
|
} = (0, _data.useSelect)(select => {
|
|
34
|
-
var _getPostType$viewable
|
|
34
|
+
var _getPostType$viewable;
|
|
35
35
|
|
|
36
36
|
const {
|
|
37
37
|
getEditedPostAttribute,
|
|
@@ -44,7 +44,7 @@ function PostTemplate() {
|
|
|
44
44
|
return {
|
|
45
45
|
selectedTemplate: getEditedPostAttribute('template'),
|
|
46
46
|
availableTemplates: getEditorSettings().availableTemplates,
|
|
47
|
-
isViewable: (_getPostType$viewable =
|
|
47
|
+
isViewable: (_getPostType$viewable = getPostType(getCurrentPostType())?.viewable) !== null && _getPostType$viewable !== void 0 ? _getPostType$viewable : false
|
|
48
48
|
};
|
|
49
49
|
}, []);
|
|
50
50
|
const {
|
|
@@ -64,13 +64,10 @@ function PostTemplate() {
|
|
|
64
64
|
template: templateSlug || ''
|
|
65
65
|
});
|
|
66
66
|
},
|
|
67
|
-
options: Object.entries(availableTemplates !== null && availableTemplates !== void 0 ? availableTemplates : {}).map(
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
label: templateName
|
|
72
|
-
};
|
|
73
|
-
})
|
|
67
|
+
options: Object.entries(availableTemplates !== null && availableTemplates !== void 0 ? availableTemplates : {}).map(([templateSlug, templateName]) => ({
|
|
68
|
+
value: templateSlug,
|
|
69
|
+
label: templateName
|
|
70
|
+
}))
|
|
74
71
|
});
|
|
75
72
|
}
|
|
76
73
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/editor/src/components/post-template/index.js"],"names":["PostTemplate","availableTemplates","selectedTemplate","isViewable","select","getEditedPostAttribute","getEditorSettings","getCurrentPostType","editorStore","getPostType","coreStore","viewable","editPost","Object","keys","length","templateSlug","template","entries","map","templateName","value","label"],"mappings":";;;;;;;;;;AAGA;;AACA;;AACA;;AACA;;AAKA;;AAXA;AACA;AACA;;AAMA;AACA;AACA;AAGO,SAASA,YAAT,GAAwB;AAC9B,QAAM;AAAEC,IAAAA,kBAAF;AAAsBC,IAAAA,gBAAtB;AAAwCC,IAAAA;AAAxC,MAAuD,qBAC1DC,MAAF,IAAc;AAAA;;AACb,UAAM;AACLC,MAAAA,sBADK;AAELC,MAAAA,iBAFK;AAGLC,MAAAA;AAHK,QAIFH,MAAM,CAAEI,YAAF,CAJV;AAKA,UAAM;AAAEC,MAAAA;AAAF,QAAkBL,MAAM,CAAEM,eAAF,CAA9B;AAEA,WAAO;AACNR,MAAAA,gBAAgB,EAAEG,sBAAsB,CAAE,UAAF,CADlC;AAENJ,MAAAA,kBAAkB,EAAEK,iBAAiB,GAAGL,kBAFlC;AAGNE,MAAAA,UAAU,
|
|
1
|
+
{"version":3,"sources":["@wordpress/editor/src/components/post-template/index.js"],"names":["PostTemplate","availableTemplates","selectedTemplate","isViewable","select","getEditedPostAttribute","getEditorSettings","getCurrentPostType","editorStore","getPostType","coreStore","viewable","editPost","Object","keys","length","templateSlug","template","entries","map","templateName","value","label"],"mappings":";;;;;;;;;;AAGA;;AACA;;AACA;;AACA;;AAKA;;AAXA;AACA;AACA;;AAMA;AACA;AACA;AAGO,SAASA,YAAT,GAAwB;AAC9B,QAAM;AAAEC,IAAAA,kBAAF;AAAsBC,IAAAA,gBAAtB;AAAwCC,IAAAA;AAAxC,MAAuD,qBAC1DC,MAAF,IAAc;AAAA;;AACb,UAAM;AACLC,MAAAA,sBADK;AAELC,MAAAA,iBAFK;AAGLC,MAAAA;AAHK,QAIFH,MAAM,CAAEI,YAAF,CAJV;AAKA,UAAM;AAAEC,MAAAA;AAAF,QAAkBL,MAAM,CAAEM,eAAF,CAA9B;AAEA,WAAO;AACNR,MAAAA,gBAAgB,EAAEG,sBAAsB,CAAE,UAAF,CADlC;AAENJ,MAAAA,kBAAkB,EAAEK,iBAAiB,GAAGL,kBAFlC;AAGNE,MAAAA,UAAU,2BACTM,WAAW,CAAEF,kBAAkB,EAApB,CAAX,EAAqCI,QAD5B,yEACwC;AAJ5C,KAAP;AAMA,GAf2D,EAgB5D,EAhB4D,CAA7D;AAmBA,QAAM;AAAEC,IAAAA;AAAF,MAAe,uBAAaJ,YAAb,CAArB;;AAEA,MACC,CAAEL,UAAF,IACA,CAAEF,kBADF,IAEA,CAAEY,MAAM,CAACC,IAAP,CAAab,kBAAb,EAAkCc,MAHrC,EAIE;AACD,WAAO,IAAP;AACA;;AAED,SACC,4BAAC,yBAAD;AACC,IAAA,uBAAuB,MADxB;AAEC,IAAA,KAAK,EAAG,cAAI,WAAJ,CAFT;AAGC,IAAA,KAAK,EAAGb,gBAHT;AAIC,IAAA,QAAQ,EAAKc,YAAF,IAAoB;AAC9BJ,MAAAA,QAAQ,CAAE;AACTK,QAAAA,QAAQ,EAAED,YAAY,IAAI;AADjB,OAAF,CAAR;AAGA,KARF;AASC,IAAA,OAAO,EAAGH,MAAM,CAACK,OAAP,CAAgBjB,kBAAhB,aAAgBA,kBAAhB,cAAgBA,kBAAhB,GAAsC,EAAtC,EAA2CkB,GAA3C,CACT,CAAE,CAAEH,YAAF,EAAgBI,YAAhB,CAAF,MAAwC;AACvCC,MAAAA,KAAK,EAAEL,YADgC;AAEvCM,MAAAA,KAAK,EAAEF;AAFgC,KAAxC,CADS;AATX,IADD;AAkBA;;eAEcpB,Y","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { SelectControl } from '@wordpress/components';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { store as editorStore } from '../../store';\n\nexport function PostTemplate() {\n\tconst { availableTemplates, selectedTemplate, isViewable } = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetEditedPostAttribute,\n\t\t\t\tgetEditorSettings,\n\t\t\t\tgetCurrentPostType,\n\t\t\t} = select( editorStore );\n\t\t\tconst { getPostType } = select( coreStore );\n\n\t\t\treturn {\n\t\t\t\tselectedTemplate: getEditedPostAttribute( 'template' ),\n\t\t\t\tavailableTemplates: getEditorSettings().availableTemplates,\n\t\t\t\tisViewable:\n\t\t\t\t\tgetPostType( getCurrentPostType() )?.viewable ?? false,\n\t\t\t};\n\t\t},\n\t\t[]\n\t);\n\n\tconst { editPost } = useDispatch( editorStore );\n\n\tif (\n\t\t! isViewable ||\n\t\t! availableTemplates ||\n\t\t! Object.keys( availableTemplates ).length\n\t) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<SelectControl\n\t\t\t__nextHasNoMarginBottom\n\t\t\tlabel={ __( 'Template:' ) }\n\t\t\tvalue={ selectedTemplate }\n\t\t\tonChange={ ( templateSlug ) => {\n\t\t\t\teditPost( {\n\t\t\t\t\ttemplate: templateSlug || '',\n\t\t\t\t} );\n\t\t\t} }\n\t\t\toptions={ Object.entries( availableTemplates ?? {} ).map(\n\t\t\t\t( [ templateSlug, templateName ] ) => ( {\n\t\t\t\t\tvalue: templateSlug,\n\t\t\t\t\tlabel: templateName,\n\t\t\t\t} )\n\t\t\t) }\n\t\t/>\n\t);\n}\n\nexport default PostTemplate;\n"]}
|
|
@@ -87,9 +87,7 @@ function PostTitle(_, forwardedRef) {
|
|
|
87
87
|
}, []);
|
|
88
88
|
(0, _element.useImperativeHandle)(forwardedRef, () => ({
|
|
89
89
|
focus: () => {
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
ref === null || ref === void 0 ? void 0 : (_ref$current = ref.current) === null || _ref$current === void 0 ? void 0 : _ref$current.focus();
|
|
90
|
+
ref?.current?.focus();
|
|
93
91
|
}
|
|
94
92
|
}));
|
|
95
93
|
(0, _element.useEffect)(() => {
|
|
@@ -97,9 +95,7 @@ function PostTitle(_, forwardedRef) {
|
|
|
97
95
|
return;
|
|
98
96
|
}
|
|
99
97
|
|
|
100
|
-
const
|
|
101
|
-
ownerDocument
|
|
102
|
-
} = ref.current;
|
|
98
|
+
const ownerDocument = ref.current.ownerDocument.defaultView.top.document;
|
|
103
99
|
const {
|
|
104
100
|
activeElement,
|
|
105
101
|
body
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/editor/src/components/post-title/index.js"],"names":["REGEXP_NEWLINES","PostTitle","_","forwardedRef","ref","isSelected","setIsSelected","editPost","editorStore","insertDefaultBlock","clearSelectedBlock","insertBlocks","blockEditorStore","isCleanNewPost","title","placeholder","hasFixedToolbar","select","getEditedPostAttribute","_isCleanNewPost","getSettings","titlePlaceholder","_hasFixedToolbar","focus","current","ownerDocument","activeElement","body","onEnterPress","undefined","onInsertBlockAfter","blocks","onUpdate","newTitle","selection","setSelection","onSelect","onUnselect","onChange","value","replace","onKeyDown","event","keyCode","ENTER","preventDefault","onPaste","clipboardData","plainText","html","getData","error1","error2","window","console","log","content","HTML","length","firstBlock","name","attributes","slice","newValue","start","end","className","decodedPlaceholder","richTextRef","selectionStart","selectionEnd","onSelectionChange","newStart","newEnd","sel","__unstableDisableFormats","preserveWhiteSpace"],"mappings":";;;;;;;;;AASA;;AANA;;AAKA;;AAQA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAMA;;AACA;;AAKA;;AACA;;AAlCA;AACA;AACA;;AAGA;AACA;AACA;;AAuBA;AACA;AACA;;AAIA;AACA;AACA;AACA,MAAMA,eAAe,GAAG,UAAxB;;AAEA,SAASC,SAAT,CAAoBC,CAApB,EAAuBC,YAAvB,EAAsC;AACrC,QAAMC,GAAG,GAAG,sBAAZ;AACA,QAAM,CAAEC,UAAF,EAAcC,aAAd,IAAgC,uBAAU,KAAV,CAAtC;AACA,QAAM;AAAEC,IAAAA;AAAF,MAAe,uBAAaC,YAAb,CAArB;AACA,QAAM;AAAEC,IAAAA,kBAAF;AAAsBC,IAAAA,kBAAtB;AAA0CC,IAAAA;AAA1C,MACL,uBAAaC,kBAAb,CADD;AAEA,QAAM;AAAEC,IAAAA,cAAF;AAAkBC,IAAAA,KAAlB;AAAyBC,IAAAA,WAAzB;AAAsCC,IAAAA;AAAtC,MAA0D,qBAC7DC,MAAF,IAAc;AACb,UAAM;AAAEC,MAAAA,sBAAF;AAA0BL,MAAAA,cAAc,EAAEM;AAA1C,QACLF,MAAM,CAAET,YAAF,CADP;AAEA,UAAM;AAAEY,MAAAA;AAAF,QAAkBH,MAAM,CAAEL,kBAAF,CAA9B;AACA,UAAM;AAAES,MAAAA,gBAAF;AAAoBL,MAAAA,eAAe,EAAEM;AAArC,QACLF,WAAW,EADZ;AAGA,WAAO;AACNP,MAAAA,cAAc,EAAEM,eAAe,EADzB;AAENL,MAAAA,KAAK,EAAEI,sBAAsB,CAAE,OAAF,CAFvB;AAGNH,MAAAA,WAAW,EAAEM,gBAHP;AAINL,MAAAA,eAAe,EAAEM;AAJX,KAAP;AAMA,GAd8D,EAe/D,EAf+D,CAAhE;AAkBA,oCAAqBnB,YAArB,EAAmC,OAAQ;AAC1CoB,IAAAA,KAAK,EAAE,MAAM;AAAA;;AACZnB,MAAAA,GAAG,SAAH,IAAAA,GAAG,WAAH,4BAAAA,GAAG,CAAEoB,OAAL,8DAAcD,KAAd;AACA;AAHyC,GAAR,CAAnC;AAMA,0BAAW,MAAM;AAChB,QAAK,CAAEnB,GAAG,CAACoB,OAAX,EAAqB;AACpB;AACA;;AAED,UAAM;AAAEC,MAAAA;AAAF,QAAoBrB,GAAG,CAACoB,OAA9B;AACA,UAAM;AAAEE,MAAAA,aAAF;AAAiBC,MAAAA;AAAjB,QAA0BF,aAAhC,CANgB,CAQhB;AACA;AACA;AACA;;AACA,QAAKZ,cAAc,KAAM,CAAEa,aAAF,IAAmBC,IAAI,KAAKD,aAAlC,CAAnB,EAAuE;AACtEtB,MAAAA,GAAG,CAACoB,OAAJ,CAAYD,KAAZ;AACA;AACD,GAfD,EAeG,CAAEV,cAAF,CAfH;;AAiBA,WAASe,YAAT,GAAwB;AACvBnB,IAAAA,kBAAkB,CAAEoB,SAAF,EAAaA,SAAb,EAAwB,CAAxB,CAAlB;AACA;;AAED,WAASC,kBAAT,CAA6BC,MAA7B,EAAsC;AACrCpB,IAAAA,YAAY,CAAEoB,MAAF,EAAU,CAAV,CAAZ;AACA;;AAED,WAASC,QAAT,CAAmBC,QAAnB,EAA8B;AAC7B1B,IAAAA,QAAQ,CAAE;AAAEO,MAAAA,KAAK,EAAEmB;AAAT,KAAF,CAAR;AACA;;AAED,QAAM,CAAEC,SAAF,EAAaC,YAAb,IAA8B,uBAAU,EAAV,CAApC;;AAEA,WAASC,QAAT,GAAoB;AACnB9B,IAAAA,aAAa,CAAE,IAAF,CAAb;AACAI,IAAAA,kBAAkB;AAClB;;AAED,WAAS2B,UAAT,GAAsB;AACrB/B,IAAAA,aAAa,CAAE,KAAF,CAAb;AACA6B,IAAAA,YAAY,CAAE,EAAF,CAAZ;AACA;;AAED,WAASG,QAAT,CAAmBC,KAAnB,EAA2B;AAC1BP,IAAAA,QAAQ,CAAEO,KAAK,CAACC,OAAN,CAAexC,eAAf,EAAgC,GAAhC,CAAF,CAAR;AACA;;AAED,WAASyC,SAAT,CAAoBC,KAApB,EAA4B;AAC3B,QAAKA,KAAK,CAACC,OAAN,KAAkBC,eAAvB,EAA+B;AAC9BF,MAAAA,KAAK,CAACG,cAAN;AACAjB,MAAAA,YAAY;AACZ;AACD;;AAED,WAASkB,OAAT,CAAkBJ,KAAlB,EAA0B;AACzB,UAAMK,aAAa,GAAGL,KAAK,CAACK,aAA5B;AAEA,QAAIC,SAAS,GAAG,EAAhB;AACA,QAAIC,IAAI,GAAG,EAAX,CAJyB,CAMzB;AACA;AACA;;AACA,QAAI;AACHD,MAAAA,SAAS,GAAGD,aAAa,CAACG,OAAd,CAAuB,YAAvB,CAAZ;AACAD,MAAAA,IAAI,GAAGF,aAAa,CAACG,OAAd,CAAuB,WAAvB,CAAP;AACA,KAHD,CAGE,OAAQC,MAAR,EAAiB;AAClB,UAAI;AACHF,QAAAA,IAAI,GAAGF,aAAa,CAACG,OAAd,CAAuB,MAAvB,CAAP;AACA,OAFD,CAEE,OAAQE,MAAR,EAAiB;AAClB;AACA;AACA;AACA;AACA;AACD,KArBwB,CAuBzB;;;AACAC,IAAAA,MAAM,CAACC,OAAP,CAAeC,GAAf,CAAoB,oBAApB,EAA0CN,IAA1C;AACAI,IAAAA,MAAM,CAACC,OAAP,CAAeC,GAAf,CAAoB,0BAApB,EAAgDP,SAAhD;AAEA,UAAMQ,OAAO,GAAG,0BAAc;AAC7BC,MAAAA,IAAI,EAAER,IADuB;AAE7BD,MAAAA;AAF6B,KAAd,CAAhB;AAKAN,IAAAA,KAAK,CAACG,cAAN;;AAEA,QAAK,CAAEW,OAAO,CAACE,MAAf,EAAwB;AACvB;AACA;;AAED,QAAK,OAAOF,OAAP,KAAmB,QAAxB,EAAmC;AAClC,YAAM,CAAEG,UAAF,IAAiBH,OAAvB;;AAEA,UACC,CAAE1C,KAAF,KACE6C,UAAU,CAACC,IAAX,KAAoB,cAApB,IACDD,UAAU,CAACC,IAAX,KAAoB,gBAFrB,CADD,EAIE;AACD5B,QAAAA,QAAQ,CAAE,8BAAW2B,UAAU,CAACE,UAAX,CAAsBL,OAAjC,CAAF,CAAR;AACA1B,QAAAA,kBAAkB,CAAE0B,OAAO,CAACM,KAAR,CAAe,CAAf,CAAF,CAAlB;AACA,OAPD,MAOO;AACNhC,QAAAA,kBAAkB,CAAE0B,OAAF,CAAlB;AACA;AACD,KAbD,MAaO;AACN,YAAMjB,KAAK,GAAG,EACb,GAAG,sBAAQ;AAAEU,UAAAA,IAAI,EAAEnC;AAAR,SAAR,CADU;AAEb,WAAGoB;AAFU,OAAd;AAIA,YAAM6B,QAAQ,GAAG,sBAChBxB,KADgB,EAEhB,sBAAQ;AAAEU,QAAAA,IAAI,EAAE,8BAAWO,OAAX;AAAR,OAAR,CAFgB,CAAjB;AAIAxB,MAAAA,QAAQ,CAAE,4BAAc;AAAEO,QAAAA,KAAK,EAAEwB;AAAT,OAAd,CAAF,CAAR;AACA5B,MAAAA,YAAY,CAAE;AACb6B,QAAAA,KAAK,EAAED,QAAQ,CAACC,KADH;AAEbC,QAAAA,GAAG,EAAEF,QAAQ,CAACE;AAFD,OAAF,CAAZ;AAIA;AACD,GApJoC,CAsJrC;AACA;;;AACA,QAAMC,SAAS,GAAG,yBACjB,kHADiB,EAEjB;AACC,mBAAe7D,UADhB;AAEC,yBAAqBW;AAFtB,GAFiB,CAAlB;AAOA,QAAMmD,kBAAkB,GACvB,kCAAgBpD,WAAhB,KAAiC,cAAI,WAAJ,CADlC;AAEA,QAAM;AAAEX,IAAAA,GAAG,EAAEgE;AAAP,MAAuB,qCAAa;AACzC7B,IAAAA,KAAK,EAAEzB,KADkC;AAEzCwB,IAAAA,QAFyC;AAGzCvB,IAAAA,WAAW,EAAEoD,kBAH4B;AAIzCE,IAAAA,cAAc,EAAEnC,SAAS,CAAC8B,KAJe;AAKzCM,IAAAA,YAAY,EAAEpC,SAAS,CAAC+B,GALiB;;AAMzCM,IAAAA,iBAAiB,CAAEC,QAAF,EAAYC,MAAZ,EAAqB;AACrCtC,MAAAA,YAAY,CAAIuC,GAAF,IAAW;AACxB,cAAM;AAAEV,UAAAA,KAAF;AAASC,UAAAA;AAAT,YAAiBS,GAAvB;;AACA,YAAKV,KAAK,KAAKQ,QAAV,IAAsBP,GAAG,KAAKQ,MAAnC,EAA4C;AAC3C,iBAAOC,GAAP;AACA;;AACD,eAAO;AACNV,UAAAA,KAAK,EAAEQ,QADD;AAENP,UAAAA,GAAG,EAAEQ;AAFC,SAAP;AAIA,OATW,CAAZ;AAUA,KAjBwC;;AAkBzCE,IAAAA,wBAAwB,EAAE,IAlBe;AAmBzCC,IAAAA,kBAAkB,EAAE;AAnBqB,GAAb,CAA7B;AAsBA;;AACA,SACC,4BAAC,6BAAD;AAAsB,IAAA,WAAW,EAAC;AAAlC,KACC;AACC,IAAA,GAAG,EAAG,2BAAc,CAAER,WAAF,EAAehE,GAAf,CAAd,CADP;AAEC,IAAA,eAAe,MAFhB;AAGC,IAAA,SAAS,EAAG8D,SAHb;AAIC,kBAAaC,kBAJd;AAKC,IAAA,IAAI,EAAC,SALN;AAMC,sBAAe,MANhB;AAOC,IAAA,OAAO,EAAG/B,QAPX;AAQC,IAAA,MAAM,EAAGC,UARV;AASC,IAAA,SAAS,EAAGI,SATb;AAUC,IAAA,UAAU,EAAGJ,UAVd;AAWC,IAAA,OAAO,EAAGS;AAXX,IADD,CADD;AAiBA;AACA;;eAEc,yBAAY7C,SAAZ,C","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\tforwardRef,\n\tuseEffect,\n\tuseImperativeHandle,\n\tuseRef,\n\tuseState,\n} from '@wordpress/element';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { ENTER } from '@wordpress/keycodes';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { pasteHandler } from '@wordpress/blocks';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport {\n\t__unstableUseRichText as useRichText,\n\tcreate,\n\ttoHTMLString,\n\tinsert,\n} from '@wordpress/rich-text';\nimport { useMergeRefs } from '@wordpress/compose';\nimport { __unstableStripHTML as stripHTML } from '@wordpress/dom';\n\n/**\n * Internal dependencies\n */\nimport PostTypeSupportCheck from '../post-type-support-check';\nimport { store as editorStore } from '../../store';\n\n/**\n * Constants\n */\nconst REGEXP_NEWLINES = /[\\r\\n]+/g;\n\nfunction PostTitle( _, forwardedRef ) {\n\tconst ref = useRef();\n\tconst [ isSelected, setIsSelected ] = useState( false );\n\tconst { editPost } = useDispatch( editorStore );\n\tconst { insertDefaultBlock, clearSelectedBlock, insertBlocks } =\n\t\tuseDispatch( blockEditorStore );\n\tconst { isCleanNewPost, title, placeholder, hasFixedToolbar } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getEditedPostAttribute, isCleanNewPost: _isCleanNewPost } =\n\t\t\t\tselect( editorStore );\n\t\t\tconst { getSettings } = select( blockEditorStore );\n\t\t\tconst { titlePlaceholder, hasFixedToolbar: _hasFixedToolbar } =\n\t\t\t\tgetSettings();\n\n\t\t\treturn {\n\t\t\t\tisCleanNewPost: _isCleanNewPost(),\n\t\t\t\ttitle: getEditedPostAttribute( 'title' ),\n\t\t\t\tplaceholder: titlePlaceholder,\n\t\t\t\thasFixedToolbar: _hasFixedToolbar,\n\t\t\t};\n\t\t},\n\t\t[]\n\t);\n\n\tuseImperativeHandle( forwardedRef, () => ( {\n\t\tfocus: () => {\n\t\t\tref?.current?.focus();\n\t\t},\n\t} ) );\n\n\tuseEffect( () => {\n\t\tif ( ! ref.current ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst { ownerDocument } = ref.current;\n\t\tconst { activeElement, body } = ownerDocument;\n\n\t\t// Only autofocus the title when the post is entirely empty. This should\n\t\t// only happen for a new post, which means we focus the title on new\n\t\t// post so the author can start typing right away, without needing to\n\t\t// click anything.\n\t\tif ( isCleanNewPost && ( ! activeElement || body === activeElement ) ) {\n\t\t\tref.current.focus();\n\t\t}\n\t}, [ isCleanNewPost ] );\n\n\tfunction onEnterPress() {\n\t\tinsertDefaultBlock( undefined, undefined, 0 );\n\t}\n\n\tfunction onInsertBlockAfter( blocks ) {\n\t\tinsertBlocks( blocks, 0 );\n\t}\n\n\tfunction onUpdate( newTitle ) {\n\t\teditPost( { title: newTitle } );\n\t}\n\n\tconst [ selection, setSelection ] = useState( {} );\n\n\tfunction onSelect() {\n\t\tsetIsSelected( true );\n\t\tclearSelectedBlock();\n\t}\n\n\tfunction onUnselect() {\n\t\tsetIsSelected( false );\n\t\tsetSelection( {} );\n\t}\n\n\tfunction onChange( value ) {\n\t\tonUpdate( value.replace( REGEXP_NEWLINES, ' ' ) );\n\t}\n\n\tfunction onKeyDown( event ) {\n\t\tif ( event.keyCode === ENTER ) {\n\t\t\tevent.preventDefault();\n\t\t\tonEnterPress();\n\t\t}\n\t}\n\n\tfunction onPaste( event ) {\n\t\tconst clipboardData = event.clipboardData;\n\n\t\tlet plainText = '';\n\t\tlet html = '';\n\n\t\t// IE11 only supports `Text` as an argument for `getData` and will\n\t\t// otherwise throw an invalid argument error, so we try the standard\n\t\t// arguments first, then fallback to `Text` if they fail.\n\t\ttry {\n\t\t\tplainText = clipboardData.getData( 'text/plain' );\n\t\t\thtml = clipboardData.getData( 'text/html' );\n\t\t} catch ( error1 ) {\n\t\t\ttry {\n\t\t\t\thtml = clipboardData.getData( 'Text' );\n\t\t\t} catch ( error2 ) {\n\t\t\t\t// Some browsers like UC Browser paste plain text by default and\n\t\t\t\t// don't support clipboardData at all, so allow default\n\t\t\t\t// behaviour.\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\t// Allows us to ask for this information when we get a report.\n\t\twindow.console.log( 'Received HTML:\\n\\n', html );\n\t\twindow.console.log( 'Received plain text:\\n\\n', plainText );\n\n\t\tconst content = pasteHandler( {\n\t\t\tHTML: html,\n\t\t\tplainText,\n\t\t} );\n\n\t\tevent.preventDefault();\n\n\t\tif ( ! content.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( typeof content !== 'string' ) {\n\t\t\tconst [ firstBlock ] = content;\n\n\t\t\tif (\n\t\t\t\t! title &&\n\t\t\t\t( firstBlock.name === 'core/heading' ||\n\t\t\t\t\tfirstBlock.name === 'core/paragraph' )\n\t\t\t) {\n\t\t\t\tonUpdate( stripHTML( firstBlock.attributes.content ) );\n\t\t\t\tonInsertBlockAfter( content.slice( 1 ) );\n\t\t\t} else {\n\t\t\t\tonInsertBlockAfter( content );\n\t\t\t}\n\t\t} else {\n\t\t\tconst value = {\n\t\t\t\t...create( { html: title } ),\n\t\t\t\t...selection,\n\t\t\t};\n\t\t\tconst newValue = insert(\n\t\t\t\tvalue,\n\t\t\t\tcreate( { html: stripHTML( content ) } )\n\t\t\t);\n\t\t\tonUpdate( toHTMLString( { value: newValue } ) );\n\t\t\tsetSelection( {\n\t\t\t\tstart: newValue.start,\n\t\t\t\tend: newValue.end,\n\t\t\t} );\n\t\t}\n\t}\n\n\t// The wp-block className is important for editor styles.\n\t// This same block is used in both the visual and the code editor.\n\tconst className = classnames(\n\t\t'wp-block wp-block-post-title block-editor-block-list__block editor-post-title editor-post-title__input rich-text',\n\t\t{\n\t\t\t'is-selected': isSelected,\n\t\t\t'has-fixed-toolbar': hasFixedToolbar,\n\t\t}\n\t);\n\tconst decodedPlaceholder =\n\t\tdecodeEntities( placeholder ) || __( 'Add title' );\n\tconst { ref: richTextRef } = useRichText( {\n\t\tvalue: title,\n\t\tonChange,\n\t\tplaceholder: decodedPlaceholder,\n\t\tselectionStart: selection.start,\n\t\tselectionEnd: selection.end,\n\t\tonSelectionChange( newStart, newEnd ) {\n\t\t\tsetSelection( ( sel ) => {\n\t\t\t\tconst { start, end } = sel;\n\t\t\t\tif ( start === newStart && end === newEnd ) {\n\t\t\t\t\treturn sel;\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tstart: newStart,\n\t\t\t\t\tend: newEnd,\n\t\t\t\t};\n\t\t\t} );\n\t\t},\n\t\t__unstableDisableFormats: true,\n\t\tpreserveWhiteSpace: true,\n\t} );\n\n\t/* eslint-disable jsx-a11y/heading-has-content, jsx-a11y/no-noninteractive-element-to-interactive-role */\n\treturn (\n\t\t<PostTypeSupportCheck supportKeys=\"title\">\n\t\t\t<h1\n\t\t\t\tref={ useMergeRefs( [ richTextRef, ref ] ) }\n\t\t\t\tcontentEditable\n\t\t\t\tclassName={ className }\n\t\t\t\taria-label={ decodedPlaceholder }\n\t\t\t\trole=\"textbox\"\n\t\t\t\taria-multiline=\"true\"\n\t\t\t\tonFocus={ onSelect }\n\t\t\t\tonBlur={ onUnselect }\n\t\t\t\tonKeyDown={ onKeyDown }\n\t\t\t\tonKeyPress={ onUnselect }\n\t\t\t\tonPaste={ onPaste }\n\t\t\t/>\n\t\t</PostTypeSupportCheck>\n\t);\n\t/* eslint-enable jsx-a11y/heading-has-content, jsx-a11y/no-noninteractive-element-to-interactive-role */\n}\n\nexport default forwardRef( PostTitle );\n"]}
|
|
1
|
+
{"version":3,"sources":["@wordpress/editor/src/components/post-title/index.js"],"names":["REGEXP_NEWLINES","PostTitle","_","forwardedRef","ref","isSelected","setIsSelected","editPost","editorStore","insertDefaultBlock","clearSelectedBlock","insertBlocks","blockEditorStore","isCleanNewPost","title","placeholder","hasFixedToolbar","select","getEditedPostAttribute","_isCleanNewPost","getSettings","titlePlaceholder","_hasFixedToolbar","focus","current","ownerDocument","defaultView","top","document","activeElement","body","onEnterPress","undefined","onInsertBlockAfter","blocks","onUpdate","newTitle","selection","setSelection","onSelect","onUnselect","onChange","value","replace","onKeyDown","event","keyCode","ENTER","preventDefault","onPaste","clipboardData","plainText","html","getData","error1","error2","window","console","log","content","HTML","length","firstBlock","name","attributes","slice","newValue","start","end","className","decodedPlaceholder","richTextRef","selectionStart","selectionEnd","onSelectionChange","newStart","newEnd","sel","__unstableDisableFormats","preserveWhiteSpace"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\tforwardRef,\n\tuseEffect,\n\tuseImperativeHandle,\n\tuseRef,\n\tuseState,\n} from '@wordpress/element';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { ENTER } from '@wordpress/keycodes';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { pasteHandler } from '@wordpress/blocks';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport {\n\t__unstableUseRichText as useRichText,\n\tcreate,\n\ttoHTMLString,\n\tinsert,\n} from '@wordpress/rich-text';\nimport { useMergeRefs } from '@wordpress/compose';\nimport { __unstableStripHTML as stripHTML } from '@wordpress/dom';\n\n/**\n * Internal dependencies\n */\nimport PostTypeSupportCheck from '../post-type-support-check';\nimport { store as editorStore } from '../../store';\n\n/**\n * Constants\n */\nconst REGEXP_NEWLINES = /[\\r\\n]+/g;\n\nfunction PostTitle( _, forwardedRef ) {\n\tconst ref = useRef();\n\tconst [ isSelected, setIsSelected ] = useState( false );\n\tconst { editPost } = useDispatch( editorStore );\n\tconst { insertDefaultBlock, clearSelectedBlock, insertBlocks } =\n\t\tuseDispatch( blockEditorStore );\n\tconst { isCleanNewPost, title, placeholder, hasFixedToolbar } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getEditedPostAttribute, isCleanNewPost: _isCleanNewPost } =\n\t\t\t\tselect( editorStore );\n\t\t\tconst { getSettings } = select( blockEditorStore );\n\t\t\tconst { titlePlaceholder, hasFixedToolbar: _hasFixedToolbar } =\n\t\t\t\tgetSettings();\n\n\t\t\treturn {\n\t\t\t\tisCleanNewPost: _isCleanNewPost(),\n\t\t\t\ttitle: getEditedPostAttribute( 'title' ),\n\t\t\t\tplaceholder: titlePlaceholder,\n\t\t\t\thasFixedToolbar: _hasFixedToolbar,\n\t\t\t};\n\t\t},\n\t\t[]\n\t);\n\n\tuseImperativeHandle( forwardedRef, () => ( {\n\t\tfocus: () => {\n\t\t\tref?.current?.focus();\n\t\t},\n\t} ) );\n\n\tuseEffect( () => {\n\t\tif ( ! ref.current ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst ownerDocument =\n\t\t\tref.current.ownerDocument.defaultView.top.document;\n\t\tconst { activeElement, body } = ownerDocument;\n\n\t\t// Only autofocus the title when the post is entirely empty. This should\n\t\t// only happen for a new post, which means we focus the title on new\n\t\t// post so the author can start typing right away, without needing to\n\t\t// click anything.\n\t\tif ( isCleanNewPost && ( ! activeElement || body === activeElement ) ) {\n\t\t\tref.current.focus();\n\t\t}\n\t}, [ isCleanNewPost ] );\n\n\tfunction onEnterPress() {\n\t\tinsertDefaultBlock( undefined, undefined, 0 );\n\t}\n\n\tfunction onInsertBlockAfter( blocks ) {\n\t\tinsertBlocks( blocks, 0 );\n\t}\n\n\tfunction onUpdate( newTitle ) {\n\t\teditPost( { title: newTitle } );\n\t}\n\n\tconst [ selection, setSelection ] = useState( {} );\n\n\tfunction onSelect() {\n\t\tsetIsSelected( true );\n\t\tclearSelectedBlock();\n\t}\n\n\tfunction onUnselect() {\n\t\tsetIsSelected( false );\n\t\tsetSelection( {} );\n\t}\n\n\tfunction onChange( value ) {\n\t\tonUpdate( value.replace( REGEXP_NEWLINES, ' ' ) );\n\t}\n\n\tfunction onKeyDown( event ) {\n\t\tif ( event.keyCode === ENTER ) {\n\t\t\tevent.preventDefault();\n\t\t\tonEnterPress();\n\t\t}\n\t}\n\n\tfunction onPaste( event ) {\n\t\tconst clipboardData = event.clipboardData;\n\n\t\tlet plainText = '';\n\t\tlet html = '';\n\n\t\t// IE11 only supports `Text` as an argument for `getData` and will\n\t\t// otherwise throw an invalid argument error, so we try the standard\n\t\t// arguments first, then fallback to `Text` if they fail.\n\t\ttry {\n\t\t\tplainText = clipboardData.getData( 'text/plain' );\n\t\t\thtml = clipboardData.getData( 'text/html' );\n\t\t} catch ( error1 ) {\n\t\t\ttry {\n\t\t\t\thtml = clipboardData.getData( 'Text' );\n\t\t\t} catch ( error2 ) {\n\t\t\t\t// Some browsers like UC Browser paste plain text by default and\n\t\t\t\t// don't support clipboardData at all, so allow default\n\t\t\t\t// behaviour.\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\t// Allows us to ask for this information when we get a report.\n\t\twindow.console.log( 'Received HTML:\\n\\n', html );\n\t\twindow.console.log( 'Received plain text:\\n\\n', plainText );\n\n\t\tconst content = pasteHandler( {\n\t\t\tHTML: html,\n\t\t\tplainText,\n\t\t} );\n\n\t\tevent.preventDefault();\n\n\t\tif ( ! content.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( typeof content !== 'string' ) {\n\t\t\tconst [ firstBlock ] = content;\n\n\t\t\tif (\n\t\t\t\t! title &&\n\t\t\t\t( firstBlock.name === 'core/heading' ||\n\t\t\t\t\tfirstBlock.name === 'core/paragraph' )\n\t\t\t) {\n\t\t\t\tonUpdate( stripHTML( firstBlock.attributes.content ) );\n\t\t\t\tonInsertBlockAfter( content.slice( 1 ) );\n\t\t\t} else {\n\t\t\t\tonInsertBlockAfter( content );\n\t\t\t}\n\t\t} else {\n\t\t\tconst value = {\n\t\t\t\t...create( { html: title } ),\n\t\t\t\t...selection,\n\t\t\t};\n\t\t\tconst newValue = insert(\n\t\t\t\tvalue,\n\t\t\t\tcreate( { html: stripHTML( content ) } )\n\t\t\t);\n\t\t\tonUpdate( toHTMLString( { value: newValue } ) );\n\t\t\tsetSelection( {\n\t\t\t\tstart: newValue.start,\n\t\t\t\tend: newValue.end,\n\t\t\t} );\n\t\t}\n\t}\n\n\t// The wp-block className is important for editor styles.\n\t// This same block is used in both the visual and the code editor.\n\tconst className = classnames(\n\t\t'wp-block wp-block-post-title block-editor-block-list__block editor-post-title editor-post-title__input rich-text',\n\t\t{\n\t\t\t'is-selected': isSelected,\n\t\t\t'has-fixed-toolbar': hasFixedToolbar,\n\t\t}\n\t);\n\tconst decodedPlaceholder =\n\t\tdecodeEntities( placeholder ) || __( 'Add title' );\n\tconst { ref: richTextRef } = useRichText( {\n\t\tvalue: title,\n\t\tonChange,\n\t\tplaceholder: decodedPlaceholder,\n\t\tselectionStart: selection.start,\n\t\tselectionEnd: selection.end,\n\t\tonSelectionChange( newStart, newEnd ) {\n\t\t\tsetSelection( ( sel ) => {\n\t\t\t\tconst { start, end } = sel;\n\t\t\t\tif ( start === newStart && end === newEnd ) {\n\t\t\t\t\treturn sel;\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tstart: newStart,\n\t\t\t\t\tend: newEnd,\n\t\t\t\t};\n\t\t\t} );\n\t\t},\n\t\t__unstableDisableFormats: true,\n\t\tpreserveWhiteSpace: true,\n\t} );\n\n\t/* eslint-disable jsx-a11y/heading-has-content, jsx-a11y/no-noninteractive-element-to-interactive-role */\n\treturn (\n\t\t<PostTypeSupportCheck supportKeys=\"title\">\n\t\t\t<h1\n\t\t\t\tref={ useMergeRefs( [ richTextRef, ref ] ) }\n\t\t\t\tcontentEditable\n\t\t\t\tclassName={ className }\n\t\t\t\taria-label={ decodedPlaceholder }\n\t\t\t\trole=\"textbox\"\n\t\t\t\taria-multiline=\"true\"\n\t\t\t\tonFocus={ onSelect }\n\t\t\t\tonBlur={ onUnselect }\n\t\t\t\tonKeyDown={ onKeyDown }\n\t\t\t\tonKeyPress={ onUnselect }\n\t\t\t\tonPaste={ onPaste }\n\t\t\t/>\n\t\t</PostTypeSupportCheck>\n\t);\n\t/* eslint-enable jsx-a11y/heading-has-content, jsx-a11y/no-noninteractive-element-to-interactive-role */\n}\n\nexport default forwardRef( PostTitle );\n"]}
|
|
@@ -74,13 +74,12 @@ class PostTitle extends _element.Component {
|
|
|
74
74
|
this.props.onSelect();
|
|
75
75
|
}
|
|
76
76
|
|
|
77
|
-
onPaste(
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
} = _ref;
|
|
77
|
+
onPaste({
|
|
78
|
+
value,
|
|
79
|
+
onChange,
|
|
80
|
+
plainText,
|
|
81
|
+
html
|
|
82
|
+
}) {
|
|
84
83
|
const {
|
|
85
84
|
title,
|
|
86
85
|
onInsertBlockAfter,
|
|
@@ -144,7 +143,7 @@ class PostTitle extends _element.Component {
|
|
|
144
143
|
const decodedPlaceholder = (0, _htmlEntities.decodeEntities)(placeholder);
|
|
145
144
|
const borderColor = this.props.isSelected ? focusedBorderColor : 'transparent';
|
|
146
145
|
const titleStyles = { ...style,
|
|
147
|
-
...(
|
|
146
|
+
...(globalStyles?.text && {
|
|
148
147
|
color: globalStyles.text,
|
|
149
148
|
placeholderColor: globalStyles.text
|
|
150
149
|
})
|
|
@@ -189,8 +188,6 @@ class PostTitle extends _element.Component {
|
|
|
189
188
|
}
|
|
190
189
|
|
|
191
190
|
var _default = (0, _compose.compose)((0, _data.withSelect)(select => {
|
|
192
|
-
var _getSettings, _getSettings$__experi;
|
|
193
|
-
|
|
194
191
|
const {
|
|
195
192
|
isPostTitleSelected,
|
|
196
193
|
getEditedPostAttribute
|
|
@@ -202,7 +199,7 @@ var _default = (0, _compose.compose)((0, _data.withSelect)(select => {
|
|
|
202
199
|
} = select(_blockEditor.store);
|
|
203
200
|
const selectedId = getSelectedBlockClientId();
|
|
204
201
|
const selectionIsNested = !!getBlockRootClientId(selectedId);
|
|
205
|
-
const globalStyles =
|
|
202
|
+
const globalStyles = getSettings()?.__experimentalGlobalStylesBaseStyles?.color;
|
|
206
203
|
return {
|
|
207
204
|
postType: getEditedPostAttribute('type'),
|
|
208
205
|
title: getEditedPostAttribute('title'),
|