@wordpress/editor 12.8.0 → 12.11.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 +6 -0
- package/build/components/editor-help/help-section-title.native.js +43 -0
- package/build/components/editor-help/help-section-title.native.js.map +1 -0
- package/build/components/editor-help/help-topic-row.native.js +3 -2
- package/build/components/editor-help/help-topic-row.native.js.map +1 -1
- package/build/components/editor-help/icon-move-blocks.native.js +23 -0
- package/build/components/editor-help/icon-move-blocks.native.js.map +1 -0
- package/build/components/editor-help/index.native.js +10 -11
- package/build/components/editor-help/index.native.js.map +1 -1
- package/build/components/editor-help/move-blocks.native.js +14 -2
- package/build/components/editor-help/move-blocks.native.js.map +1 -1
- package/build/components/editor-help/view-sections.native.js +21 -5
- package/build/components/editor-help/view-sections.native.js.map +1 -1
- package/build/components/entities-saved-states/entity-record-item.js.map +1 -1
- package/build/components/entities-saved-states/index.js.map +1 -1
- package/build/components/global-keyboard-shortcuts/save-shortcut.js.map +1 -1
- package/build/components/index.js +12 -1
- package/build/components/index.js.map +1 -1
- package/build/components/local-autosave-monitor/index.js +24 -19
- package/build/components/local-autosave-monitor/index.js.map +1 -1
- package/build/components/page-attributes/parent.js +1 -1
- package/build/components/page-attributes/parent.js.map +1 -1
- package/build/components/post-author/select.js.map +1 -1
- package/build/components/post-comments/index.js.map +1 -1
- package/build/components/post-format/index.js.map +1 -1
- package/build/components/post-last-revision/check.js.map +1 -1
- package/build/components/post-last-revision/index.js.map +1 -1
- package/build/components/post-pending-status/check.js.map +1 -1
- package/build/components/post-pingbacks/index.js.map +1 -1
- package/build/components/post-publish-button/index.js +4 -2
- package/build/components/post-publish-button/index.js.map +1 -1
- package/build/components/post-publish-panel/index.js.map +1 -1
- package/build/components/post-publish-panel/maybe-category-panel.js +5 -5
- package/build/components/post-publish-panel/maybe-category-panel.js.map +1 -1
- package/build/components/post-publish-panel/maybe-post-format-panel.js.map +1 -1
- package/build/components/post-publish-panel/postpublish.js.map +1 -1
- package/build/components/post-publish-panel/prepublish.js.map +1 -1
- package/build/components/post-schedule/index.js +11 -18
- package/build/components/post-schedule/index.js.map +1 -1
- package/build/components/post-schedule/label.js +93 -13
- package/build/components/post-schedule/label.js.map +1 -1
- package/build/components/post-slug/index.js.map +1 -1
- package/build/components/post-sticky/index.js.map +1 -1
- package/build/components/post-switch-to-draft-button/index.js.map +1 -1
- package/build/components/post-taxonomies/flat-term-selector.js +7 -4
- package/build/components/post-taxonomies/flat-term-selector.js.map +1 -1
- package/build/components/post-taxonomies/hierarchical-term-selector.js.map +1 -1
- package/build/components/post-title/index.js.map +1 -1
- package/build/components/post-title/index.native.js.map +1 -1
- package/build/components/post-trash/check.js.map +1 -1
- package/build/components/post-visibility/index.js +10 -11
- package/build/components/post-visibility/index.js.map +1 -1
- package/build/components/provider/index.js.map +1 -1
- package/build/components/provider/index.native.js +0 -1
- package/build/components/provider/index.native.js.map +1 -1
- package/build/components/provider/use-block-editor-settings.js +3 -1
- package/build/components/provider/use-block-editor-settings.js.map +1 -1
- package/build/components/template-validation-notice/index.js.map +1 -1
- package/build/components/theme-support-check/index.js +1 -1
- package/build/components/theme-support-check/index.js.map +1 -1
- package/build/hooks/custom-sources-backwards-compatibility.js.map +1 -1
- package/build/store/actions.js +5 -1
- package/build/store/actions.js.map +1 -1
- package/build/store/reducer.js +1 -1
- package/build/store/reducer.js.map +1 -1
- package/build/store/selectors.js +2 -2
- package/build/store/selectors.js.map +1 -1
- package/build/utils/media-upload/index.js +4 -8
- package/build/utils/media-upload/index.js.map +1 -1
- package/build-module/components/editor-help/help-section-title.native.js +31 -0
- package/build-module/components/editor-help/help-section-title.native.js.map +1 -0
- package/build-module/components/editor-help/help-topic-row.native.js +3 -2
- package/build-module/components/editor-help/help-topic-row.native.js.map +1 -1
- package/build-module/components/editor-help/icon-move-blocks.native.js +13 -0
- package/build-module/components/editor-help/icon-move-blocks.native.js.map +1 -0
- package/build-module/components/editor-help/index.native.js +10 -12
- package/build-module/components/editor-help/index.native.js.map +1 -1
- package/build-module/components/editor-help/move-blocks.native.js +15 -3
- package/build-module/components/editor-help/move-blocks.native.js.map +1 -1
- package/build-module/components/editor-help/view-sections.native.js +22 -6
- package/build-module/components/editor-help/view-sections.native.js.map +1 -1
- package/build-module/components/entities-saved-states/entity-record-item.js.map +1 -1
- package/build-module/components/entities-saved-states/index.js.map +1 -1
- package/build-module/components/global-keyboard-shortcuts/save-shortcut.js.map +1 -1
- package/build-module/components/index.js +1 -1
- package/build-module/components/index.js.map +1 -1
- package/build-module/components/local-autosave-monitor/index.js +24 -18
- package/build-module/components/local-autosave-monitor/index.js.map +1 -1
- package/build-module/components/page-attributes/parent.js +2 -2
- package/build-module/components/page-attributes/parent.js.map +1 -1
- package/build-module/components/post-author/select.js.map +1 -1
- package/build-module/components/post-comments/index.js.map +1 -1
- package/build-module/components/post-format/index.js.map +1 -1
- package/build-module/components/post-last-revision/check.js.map +1 -1
- package/build-module/components/post-last-revision/index.js.map +1 -1
- package/build-module/components/post-pending-status/check.js.map +1 -1
- package/build-module/components/post-pingbacks/index.js.map +1 -1
- package/build-module/components/post-publish-button/index.js +4 -1
- package/build-module/components/post-publish-button/index.js.map +1 -1
- package/build-module/components/post-publish-panel/index.js.map +1 -1
- package/build-module/components/post-publish-panel/maybe-category-panel.js +5 -5
- package/build-module/components/post-publish-panel/maybe-category-panel.js.map +1 -1
- package/build-module/components/post-publish-panel/maybe-post-format-panel.js.map +1 -1
- package/build-module/components/post-publish-panel/postpublish.js.map +1 -1
- package/build-module/components/post-publish-panel/prepublish.js.map +1 -1
- package/build-module/components/post-schedule/index.js +12 -19
- package/build-module/components/post-schedule/index.js.map +1 -1
- package/build-module/components/post-schedule/label.js +90 -13
- package/build-module/components/post-schedule/label.js.map +1 -1
- package/build-module/components/post-slug/index.js.map +1 -1
- package/build-module/components/post-sticky/index.js.map +1 -1
- package/build-module/components/post-switch-to-draft-button/index.js.map +1 -1
- package/build-module/components/post-taxonomies/flat-term-selector.js +7 -4
- package/build-module/components/post-taxonomies/flat-term-selector.js.map +1 -1
- package/build-module/components/post-taxonomies/hierarchical-term-selector.js.map +1 -1
- package/build-module/components/post-title/index.js.map +1 -1
- package/build-module/components/post-title/index.native.js.map +1 -1
- package/build-module/components/post-trash/check.js.map +1 -1
- package/build-module/components/post-visibility/index.js +12 -13
- package/build-module/components/post-visibility/index.js.map +1 -1
- package/build-module/components/provider/index.js.map +1 -1
- package/build-module/components/provider/index.native.js +0 -1
- package/build-module/components/provider/index.native.js.map +1 -1
- package/build-module/components/provider/use-block-editor-settings.js +4 -2
- package/build-module/components/provider/use-block-editor-settings.js.map +1 -1
- package/build-module/components/template-validation-notice/index.js.map +1 -1
- package/build-module/components/theme-support-check/index.js +2 -2
- package/build-module/components/theme-support-check/index.js.map +1 -1
- package/build-module/hooks/custom-sources-backwards-compatibility.js.map +1 -1
- package/build-module/store/actions.js +5 -1
- package/build-module/store/actions.js.map +1 -1
- package/build-module/store/reducer.js +2 -2
- package/build-module/store/reducer.js.map +1 -1
- package/build-module/store/selectors.js +2 -2
- package/build-module/store/selectors.js.map +1 -1
- package/build-module/utils/media-upload/index.js +3 -5
- package/build-module/utils/media-upload/index.js.map +1 -1
- package/build-style/style-rtl.css +1 -17
- package/build-style/style.css +1 -17
- package/package.json +29 -29
- package/src/components/editor-help/help-section-title.native.js +29 -0
- package/src/components/editor-help/help-topic-row.native.js +2 -2
- package/src/components/editor-help/icon-move-blocks.native.js +10 -0
- package/src/components/editor-help/images/drag-and-drop-dark.png +0 -0
- package/src/components/editor-help/images/drag-and-drop-dark@2x.png +0 -0
- package/src/components/editor-help/images/drag-and-drop-dark@3x.png +0 -0
- package/src/components/editor-help/images/drag-and-drop-light.png +0 -0
- package/src/components/editor-help/images/drag-and-drop-light@2x.png +0 -0
- package/src/components/editor-help/images/drag-and-drop-light@3x.png +0 -0
- package/src/components/editor-help/index.native.js +26 -28
- package/src/components/editor-help/move-blocks.native.js +22 -2
- package/src/components/editor-help/style.scss +36 -4
- package/src/components/editor-help/view-sections.native.js +23 -8
- package/src/components/entities-saved-states/entity-record-item.js +6 -6
- package/src/components/entities-saved-states/index.js +6 -9
- package/src/components/global-keyboard-shortcuts/save-shortcut.js +2 -3
- package/src/components/index.js +4 -1
- package/src/components/local-autosave-monitor/index.js +39 -38
- package/src/components/page-attributes/parent.js +5 -8
- package/src/components/post-author/select.js +2 -3
- package/src/components/post-comments/index.js +4 -3
- package/src/components/post-format/index.js +2 -3
- package/src/components/post-last-revision/check.js +2 -4
- package/src/components/post-last-revision/index.js +2 -4
- package/src/components/post-pending-status/check.js +2 -5
- package/src/components/post-pingbacks/index.js +2 -3
- package/src/components/post-publish-button/index.js +7 -8
- package/src/components/post-publish-panel/index.js +2 -3
- package/src/components/post-publish-panel/maybe-category-panel.js +7 -5
- package/src/components/post-publish-panel/maybe-post-format-panel.js +2 -3
- package/src/components/post-publish-panel/postpublish.js +2 -5
- package/src/components/post-publish-panel/prepublish.js +2 -3
- package/src/components/post-publish-panel/test/__snapshots__/index.js.snap +1 -1
- package/src/components/post-schedule/index.js +6 -13
- package/src/components/post-schedule/label.js +111 -17
- package/src/components/post-schedule/test/label.js +127 -15
- package/src/components/post-slug/index.js +2 -3
- package/src/components/post-sticky/index.js +2 -3
- package/src/components/post-switch-to-draft-button/index.js +2 -5
- package/src/components/post-taxonomies/flat-term-selector.js +9 -12
- package/src/components/post-taxonomies/hierarchical-term-selector.js +4 -6
- package/src/components/post-title/index.js +21 -31
- package/src/components/post-title/index.native.js +10 -16
- package/src/components/post-title/style.scss +1 -1
- package/src/components/post-trash/check.js +2 -3
- package/src/components/post-visibility/index.js +11 -17
- package/src/components/post-visibility/style.scss +0 -17
- package/src/components/provider/index.js +2 -3
- package/src/components/provider/index.native.js +12 -17
- package/src/components/provider/use-block-editor-settings.js +4 -8
- package/src/components/template-validation-notice/index.js +2 -3
- package/src/components/theme-support-check/index.js +2 -2
- package/src/hooks/custom-sources-backwards-compatibility.js +45 -44
- package/src/store/actions.js +213 -190
- package/src/store/reducer.js +2 -2
- package/src/store/selectors.js +16 -21
- package/src/store/test/selectors.js +13 -16
- package/src/utils/media-upload/index.js +2 -5
|
@@ -5,8 +5,8 @@ import { createElement } from "@wordpress/element";
|
|
|
5
5
|
*/
|
|
6
6
|
import { __experimentalGetSettings } from '@wordpress/date';
|
|
7
7
|
import { useDispatch, useSelect } from '@wordpress/data';
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
8
|
+
import { __experimentalPublishDateTimePicker as PublishDateTimePicker } from '@wordpress/block-editor';
|
|
9
|
+
import { useState, useMemo } from '@wordpress/element';
|
|
10
10
|
import { store as coreStore } from '@wordpress/core-data';
|
|
11
11
|
/**
|
|
12
12
|
* Internal dependencies
|
|
@@ -21,7 +21,10 @@ function getDayOfTheMonth() {
|
|
|
21
21
|
return new Date(d.getFullYear(), d.getMonth() + (firstDay ? 0 : 1), firstDay ? 1 : 0).toISOString();
|
|
22
22
|
}
|
|
23
23
|
|
|
24
|
-
export default function PostSchedule() {
|
|
24
|
+
export default function PostSchedule(_ref) {
|
|
25
|
+
let {
|
|
26
|
+
onClose
|
|
27
|
+
} = _ref;
|
|
25
28
|
const {
|
|
26
29
|
postDate,
|
|
27
30
|
postType
|
|
@@ -45,19 +48,18 @@ export default function PostSchedule() {
|
|
|
45
48
|
before: getDayOfTheMonth(previewedMonth, false),
|
|
46
49
|
exclude: [select(editorStore).getCurrentPostId()]
|
|
47
50
|
}), [previewedMonth, postType]);
|
|
48
|
-
const events = useMemo(() => (eventsByPostType || []).map(
|
|
51
|
+
const events = useMemo(() => (eventsByPostType || []).map(_ref2 => {
|
|
49
52
|
let {
|
|
50
53
|
title,
|
|
51
54
|
type,
|
|
52
55
|
date: eventDate
|
|
53
|
-
} =
|
|
56
|
+
} = _ref2;
|
|
54
57
|
return {
|
|
55
58
|
title: title === null || title === void 0 ? void 0 : title.rendered,
|
|
56
59
|
type,
|
|
57
60
|
date: new Date(eventDate)
|
|
58
61
|
};
|
|
59
62
|
}), [eventsByPostType]);
|
|
60
|
-
const ref = useRef();
|
|
61
63
|
|
|
62
64
|
const settings = __experimentalGetSettings(); // To know if the current timezone is a 12 hour time with look for "a" in the time format
|
|
63
65
|
// We also make sure this a is not escaped by a "/"
|
|
@@ -67,22 +69,13 @@ export default function PostSchedule() {
|
|
|
67
69
|
.replace(/\\\\/g, '') // Replace "//" with empty strings.
|
|
68
70
|
.split('').reverse().join('') // Reverse the string and test for "a" not followed by a slash.
|
|
69
71
|
);
|
|
70
|
-
|
|
71
|
-
function onChange(newDate) {
|
|
72
|
-
onUpdateDate(newDate);
|
|
73
|
-
const {
|
|
74
|
-
ownerDocument
|
|
75
|
-
} = ref.current;
|
|
76
|
-
ownerDocument.activeElement.blur();
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
return createElement(DateTimePicker, {
|
|
80
|
-
ref: ref,
|
|
72
|
+
return createElement(PublishDateTimePicker, {
|
|
81
73
|
currentDate: postDate,
|
|
82
|
-
onChange:
|
|
74
|
+
onChange: onUpdateDate,
|
|
83
75
|
is12Hour: is12HourTime,
|
|
84
76
|
events: events,
|
|
85
|
-
onMonthPreviewed: setPreviewedMonth
|
|
77
|
+
onMonthPreviewed: setPreviewedMonth,
|
|
78
|
+
onClose: onClose
|
|
86
79
|
});
|
|
87
80
|
}
|
|
88
81
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/editor/src/components/post-schedule/index.js"],"names":["__experimentalGetSettings","useDispatch","useSelect","
|
|
1
|
+
{"version":3,"sources":["@wordpress/editor/src/components/post-schedule/index.js"],"names":["__experimentalGetSettings","useDispatch","useSelect","__experimentalPublishDateTimePicker","PublishDateTimePicker","useState","useMemo","store","coreStore","editorStore","getDayOfTheMonth","date","Date","firstDay","d","getFullYear","getMonth","toISOString","PostSchedule","onClose","postDate","postType","select","getEditedPostAttribute","getCurrentPostType","editPost","onUpdateDate","previewedMonth","setPreviewedMonth","eventsByPostType","getEntityRecords","status","after","before","exclude","getCurrentPostId","events","map","title","type","eventDate","rendered","settings","is12HourTime","test","formats","time","toLowerCase","replace","split","reverse","join"],"mappings":";;AAAA;AACA;AACA;AACA,SAASA,yBAAT,QAA0C,iBAA1C;AACA,SAASC,WAAT,EAAsBC,SAAtB,QAAuC,iBAAvC;AACA,SAASC,mCAAmC,IAAIC,qBAAhD,QAA6E,yBAA7E;AACA,SAASC,QAAT,EAAmBC,OAAnB,QAAkC,oBAAlC;AACA,SAASC,KAAK,IAAIC,SAAlB,QAAmC,sBAAnC;AAEA;AACA;AACA;;AACA,SAASD,KAAK,IAAIE,WAAlB,QAAqC,aAArC;;AAEA,SAASC,gBAAT,GAAgE;AAAA,MAArCC,IAAqC,uEAA9B,IAAIC,IAAJ,EAA8B;AAAA,MAAlBC,QAAkB,uEAAP,IAAO;AAC/D,QAAMC,CAAC,GAAG,IAAIF,IAAJ,CAAUD,IAAV,CAAV;AACA,SAAO,IAAIC,IAAJ,CACNE,CAAC,CAACC,WAAF,EADM,EAEND,CAAC,CAACE,QAAF,MAAiBH,QAAQ,GAAG,CAAH,GAAO,CAAhC,CAFM,EAGNA,QAAQ,GAAG,CAAH,GAAO,CAHT,EAILI,WAJK,EAAP;AAKA;;AAED,eAAe,SAASC,YAAT,OAAqC;AAAA,MAAd;AAAEC,IAAAA;AAAF,GAAc;AACnD,QAAM;AAAEC,IAAAA,QAAF;AAAYC,IAAAA;AAAZ,MAAyBnB,SAAS,CACrCoB,MAAF,KAAgB;AACfF,IAAAA,QAAQ,EAAEE,MAAM,CAAEb,WAAF,CAAN,CAAsBc,sBAAtB,CAA8C,MAA9C,CADK;AAEfF,IAAAA,QAAQ,EAAEC,MAAM,CAAEb,WAAF,CAAN,CAAsBe,kBAAtB;AAFK,GAAhB,CADuC,EAKvC,EALuC,CAAxC;AAQA,QAAM;AAAEC,IAAAA;AAAF,MAAexB,WAAW,CAAEQ,WAAF,CAAhC;;AACA,QAAMiB,YAAY,GAAKf,IAAF,IAAYc,QAAQ,CAAE;AAAEd,IAAAA;AAAF,GAAF,CAAzC;;AAEA,QAAM,CAAEgB,cAAF,EAAkBC,iBAAlB,IAAwCvB,QAAQ,CACrDK,gBAAgB,CAAEU,QAAF,CADqC,CAAtD,CAZmD,CAgBnD;;AACA,QAAMS,gBAAgB,GAAG3B,SAAS,CAC/BoB,MAAF,IACCA,MAAM,CAAEd,SAAF,CAAN,CAAoBsB,gBAApB,CAAsC,UAAtC,EAAkDT,QAAlD,EAA4D;AAC3DU,IAAAA,MAAM,EAAE,gBADmD;AAE3DC,IAAAA,KAAK,EAAEtB,gBAAgB,CAAEiB,cAAF,CAFoC;AAG3DM,IAAAA,MAAM,EAAEvB,gBAAgB,CAAEiB,cAAF,EAAkB,KAAlB,CAHmC;AAI3DO,IAAAA,OAAO,EAAE,CAAEZ,MAAM,CAAEb,WAAF,CAAN,CAAsB0B,gBAAtB,EAAF;AAJkD,GAA5D,CAFgC,EAQjC,CAAER,cAAF,EAAkBN,QAAlB,CARiC,CAAlC;AAWA,QAAMe,MAAM,GAAG9B,OAAO,CACrB,MACC,CAAEuB,gBAAgB,IAAI,EAAtB,EAA2BQ,GAA3B,CACC;AAAA,QAAE;AAAEC,MAAAA,KAAF;AAASC,MAAAA,IAAT;AAAe5B,MAAAA,IAAI,EAAE6B;AAArB,KAAF;AAAA,WAA0C;AACzCF,MAAAA,KAAK,EAAEA,KAAF,aAAEA,KAAF,uBAAEA,KAAK,CAAEG,QAD2B;AAEzCF,MAAAA,IAFyC;AAGzC5B,MAAAA,IAAI,EAAE,IAAIC,IAAJ,CAAU4B,SAAV;AAHmC,KAA1C;AAAA,GADD,CAFoB,EASrB,CAAEX,gBAAF,CATqB,CAAtB;;AAYA,QAAMa,QAAQ,GAAG1C,yBAAyB,EAA1C,CAxCmD,CA0CnD;AACA;;;AACA,QAAM2C,YAAY,GAAG,WAAWC,IAAX,CACpBF,QAAQ,CAACG,OAAT,CAAiBC,IAAjB,CACEC,WADF,GACgB;AADhB,GAEEC,OAFF,CAEW,OAFX,EAEoB,EAFpB,EAEyB;AAFzB,GAGEC,KAHF,CAGS,EAHT,EAIEC,OAJF,GAKEC,IALF,CAKQ,EALR,CADoB,CAMP;AANO,GAArB;AASA,SACC,cAAC,qBAAD;AACC,IAAA,WAAW,EAAG/B,QADf;AAEC,IAAA,QAAQ,EAAGM,YAFZ;AAGC,IAAA,QAAQ,EAAGiB,YAHZ;AAIC,IAAA,MAAM,EAAGP,MAJV;AAKC,IAAA,gBAAgB,EAAGR,iBALpB;AAMC,IAAA,OAAO,EAAGT;AANX,IADD;AAUA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __experimentalGetSettings } from '@wordpress/date';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { __experimentalPublishDateTimePicker as PublishDateTimePicker } from '@wordpress/block-editor';\nimport { useState, useMemo } from '@wordpress/element';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { store as editorStore } from '../../store';\n\nfunction getDayOfTheMonth( date = new Date(), firstDay = true ) {\n\tconst d = new Date( date );\n\treturn new Date(\n\t\td.getFullYear(),\n\t\td.getMonth() + ( firstDay ? 0 : 1 ),\n\t\tfirstDay ? 1 : 0\n\t).toISOString();\n}\n\nexport default function PostSchedule( { onClose } ) {\n\tconst { postDate, postType } = useSelect(\n\t\t( select ) => ( {\n\t\t\tpostDate: select( editorStore ).getEditedPostAttribute( 'date' ),\n\t\t\tpostType: select( editorStore ).getCurrentPostType(),\n\t\t} ),\n\t\t[]\n\t);\n\n\tconst { editPost } = useDispatch( editorStore );\n\tconst onUpdateDate = ( date ) => editPost( { date } );\n\n\tconst [ previewedMonth, setPreviewedMonth ] = useState(\n\t\tgetDayOfTheMonth( postDate )\n\t);\n\n\t// Pick up published and schduled site posts.\n\tconst eventsByPostType = useSelect(\n\t\t( select ) =>\n\t\t\tselect( coreStore ).getEntityRecords( 'postType', postType, {\n\t\t\t\tstatus: 'publish,future',\n\t\t\t\tafter: getDayOfTheMonth( previewedMonth ),\n\t\t\t\tbefore: getDayOfTheMonth( previewedMonth, false ),\n\t\t\t\texclude: [ select( editorStore ).getCurrentPostId() ],\n\t\t\t} ),\n\t\t[ previewedMonth, postType ]\n\t);\n\n\tconst events = useMemo(\n\t\t() =>\n\t\t\t( eventsByPostType || [] ).map(\n\t\t\t\t( { title, type, date: eventDate } ) => ( {\n\t\t\t\t\ttitle: title?.rendered,\n\t\t\t\t\ttype,\n\t\t\t\t\tdate: new Date( eventDate ),\n\t\t\t\t} )\n\t\t\t),\n\t\t[ eventsByPostType ]\n\t);\n\n\tconst settings = __experimentalGetSettings();\n\n\t// To know if the current timezone is a 12 hour time with look for \"a\" in the time format\n\t// We also make sure this a is not escaped by a \"/\"\n\tconst is12HourTime = /a(?!\\\\)/i.test(\n\t\tsettings.formats.time\n\t\t\t.toLowerCase() // Test only the lower case a.\n\t\t\t.replace( /\\\\\\\\/g, '' ) // Replace \"//\" with empty strings.\n\t\t\t.split( '' )\n\t\t\t.reverse()\n\t\t\t.join( '' ) // Reverse the string and test for \"a\" not followed by a slash.\n\t);\n\n\treturn (\n\t\t<PublishDateTimePicker\n\t\t\tcurrentDate={ postDate }\n\t\t\tonChange={ onUpdateDate }\n\t\t\tis12Hour={ is12HourTime }\n\t\t\tevents={ events }\n\t\t\tonMonthPreviewed={ setPreviewedMonth }\n\t\t\tonClose={ onClose }\n\t\t/>\n\t);\n}\n"]}
|
|
@@ -1,28 +1,105 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* WordPress dependencies
|
|
3
3
|
*/
|
|
4
|
-
import { __ } from '@wordpress/i18n';
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
4
|
+
import { __, _x, sprintf, isRTL } from '@wordpress/i18n';
|
|
5
|
+
import { __experimentalGetSettings, getDate, dateI18n } from '@wordpress/date';
|
|
6
|
+
import { useSelect } from '@wordpress/data';
|
|
7
7
|
/**
|
|
8
8
|
* Internal dependencies
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
11
|
import { store as editorStore } from '../../store';
|
|
12
|
-
export function PostScheduleLabel(
|
|
12
|
+
export default function PostScheduleLabel(props) {
|
|
13
|
+
return usePostScheduleLabel(props);
|
|
14
|
+
}
|
|
15
|
+
export function usePostScheduleLabel(_ref) {
|
|
13
16
|
let {
|
|
17
|
+
full
|
|
18
|
+
} = _ref;
|
|
19
|
+
const {
|
|
14
20
|
date,
|
|
15
21
|
isFloating
|
|
16
|
-
} =
|
|
22
|
+
} = useSelect(select => ({
|
|
23
|
+
date: select(editorStore).getEditedPostAttribute('date'),
|
|
24
|
+
isFloating: select(editorStore).isEditedPostDateFloating()
|
|
25
|
+
}), []);
|
|
26
|
+
return full ? getFullPostScheduleLabel(date) : getPostScheduleLabel(date, {
|
|
27
|
+
isFloating
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
export function getFullPostScheduleLabel(dateAttribute) {
|
|
31
|
+
const date = getDate(dateAttribute);
|
|
32
|
+
const timezoneAbbreviation = getTimezoneAbbreviation();
|
|
33
|
+
const formattedDate = dateI18n( // translators: If using a space between 'g:i' and 'a', use a non-breaking sapce.
|
|
34
|
+
_x('F j, Y g:i\xa0a', 'post schedule full date format'), date);
|
|
35
|
+
return isRTL() ? `${timezoneAbbreviation} ${formattedDate}` : `${formattedDate} ${timezoneAbbreviation}`;
|
|
36
|
+
}
|
|
37
|
+
export function getPostScheduleLabel(dateAttribute) {
|
|
38
|
+
let {
|
|
39
|
+
isFloating = false,
|
|
40
|
+
now = new Date()
|
|
41
|
+
} = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
42
|
+
|
|
43
|
+
if (!dateAttribute || isFloating) {
|
|
44
|
+
return __('Immediately');
|
|
45
|
+
} // If the user timezone does not equal the site timezone then using words
|
|
46
|
+
// like 'tomorrow' is confusing, so show the full date.
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
if (!isTimezoneSameAsSiteTimezone(now)) {
|
|
50
|
+
return getFullPostScheduleLabel(dateAttribute);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
const date = getDate(dateAttribute);
|
|
54
|
+
|
|
55
|
+
if (isSameDay(date, now)) {
|
|
56
|
+
return sprintf( // translators: %s: Time of day the post is scheduled for.
|
|
57
|
+
__('Today at %s'), // translators: If using a space between 'g:i' and 'a', use a non-breaking sapce.
|
|
58
|
+
dateI18n(_x('g:i\xa0a', 'post schedule time format'), date));
|
|
59
|
+
}
|
|
17
60
|
|
|
18
|
-
const
|
|
61
|
+
const tomorrow = new Date(now);
|
|
62
|
+
tomorrow.setDate(tomorrow.getDate() + 1);
|
|
19
63
|
|
|
20
|
-
|
|
64
|
+
if (isSameDay(date, tomorrow)) {
|
|
65
|
+
return sprintf( // translators: %s: Time of day the post is scheduled for.
|
|
66
|
+
__('Tomorrow at %s'), // translators: If using a space between 'g:i' and 'a', use a non-breaking sapce.
|
|
67
|
+
dateI18n(_x('g:i\xa0a', 'post schedule time format'), date));
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
if (date.getFullYear() === now.getFullYear()) {
|
|
71
|
+
return dateI18n( // translators: If using a space between 'g:i' and 'a', use a non-breaking sapce.
|
|
72
|
+
_x('F j g:i\xa0a', 'post schedule date format without year'), date);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
return dateI18n( // translators: Use a non-breaking space between 'g:i' and 'a' if appropriate.
|
|
76
|
+
_x('F j, Y g:i\xa0a', 'post schedule full date format'), date);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
function getTimezoneAbbreviation() {
|
|
80
|
+
const {
|
|
81
|
+
timezone
|
|
82
|
+
} = __experimentalGetSettings();
|
|
83
|
+
|
|
84
|
+
if (timezone.abbr && isNaN(Number(timezone.abbr))) {
|
|
85
|
+
return timezone.abbr;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
const symbol = timezone.offset < 0 ? '' : '+';
|
|
89
|
+
return `UTC${symbol}${timezone.offset}`;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
function isTimezoneSameAsSiteTimezone(date) {
|
|
93
|
+
const {
|
|
94
|
+
timezone
|
|
95
|
+
} = __experimentalGetSettings();
|
|
96
|
+
|
|
97
|
+
const siteOffset = Number(timezone.offset);
|
|
98
|
+
const dateOffset = -1 * (date.getTimezoneOffset() / 60);
|
|
99
|
+
return siteOffset === dateOffset;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
function isSameDay(left, right) {
|
|
103
|
+
return left.getDate() === right.getDate() && left.getMonth() === right.getMonth() && left.getFullYear() === right.getFullYear();
|
|
21
104
|
}
|
|
22
|
-
export default withSelect(select => {
|
|
23
|
-
return {
|
|
24
|
-
date: select(editorStore).getEditedPostAttribute('date'),
|
|
25
|
-
isFloating: select(editorStore).isEditedPostDateFloating()
|
|
26
|
-
};
|
|
27
|
-
})(PostScheduleLabel);
|
|
28
105
|
//# sourceMappingURL=label.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/editor/src/components/post-schedule/label.js"],"names":["__","
|
|
1
|
+
{"version":3,"sources":["@wordpress/editor/src/components/post-schedule/label.js"],"names":["__","_x","sprintf","isRTL","__experimentalGetSettings","getDate","dateI18n","useSelect","store","editorStore","PostScheduleLabel","props","usePostScheduleLabel","full","date","isFloating","select","getEditedPostAttribute","isEditedPostDateFloating","getFullPostScheduleLabel","getPostScheduleLabel","dateAttribute","timezoneAbbreviation","getTimezoneAbbreviation","formattedDate","now","Date","isTimezoneSameAsSiteTimezone","isSameDay","tomorrow","setDate","getFullYear","timezone","abbr","isNaN","Number","symbol","offset","siteOffset","dateOffset","getTimezoneOffset","left","right","getMonth"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, _x, sprintf, isRTL } from '@wordpress/i18n';\nimport { __experimentalGetSettings, getDate, dateI18n } from '@wordpress/date';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { store as editorStore } from '../../store';\n\nexport default function PostScheduleLabel( props ) {\n\treturn usePostScheduleLabel( props );\n}\n\nexport function usePostScheduleLabel( { full } ) {\n\tconst { date, isFloating } = useSelect(\n\t\t( select ) => ( {\n\t\t\tdate: select( editorStore ).getEditedPostAttribute( 'date' ),\n\t\t\tisFloating: select( editorStore ).isEditedPostDateFloating(),\n\t\t} ),\n\t\t[]\n\t);\n\n\treturn full\n\t\t? getFullPostScheduleLabel( date )\n\t\t: getPostScheduleLabel( date, { isFloating } );\n}\n\nexport function getFullPostScheduleLabel( dateAttribute ) {\n\tconst date = getDate( dateAttribute );\n\n\tconst timezoneAbbreviation = getTimezoneAbbreviation();\n\tconst formattedDate = dateI18n(\n\t\t// translators: If using a space between 'g:i' and 'a', use a non-breaking sapce.\n\t\t_x( 'F j, Y g:i\\xa0a', 'post schedule full date format' ),\n\t\tdate\n\t);\n\treturn isRTL()\n\t\t? `${ timezoneAbbreviation } ${ formattedDate }`\n\t\t: `${ formattedDate } ${ timezoneAbbreviation }`;\n}\n\nexport function getPostScheduleLabel(\n\tdateAttribute,\n\t{ isFloating = false, now = new Date() } = {}\n) {\n\tif ( ! dateAttribute || isFloating ) {\n\t\treturn __( 'Immediately' );\n\t}\n\n\t// If the user timezone does not equal the site timezone then using words\n\t// like 'tomorrow' is confusing, so show the full date.\n\tif ( ! isTimezoneSameAsSiteTimezone( now ) ) {\n\t\treturn getFullPostScheduleLabel( dateAttribute );\n\t}\n\n\tconst date = getDate( dateAttribute );\n\n\tif ( isSameDay( date, now ) ) {\n\t\treturn sprintf(\n\t\t\t// translators: %s: Time of day the post is scheduled for.\n\t\t\t__( 'Today at %s' ),\n\t\t\t// translators: If using a space between 'g:i' and 'a', use a non-breaking sapce.\n\t\t\tdateI18n( _x( 'g:i\\xa0a', 'post schedule time format' ), date )\n\t\t);\n\t}\n\n\tconst tomorrow = new Date( now );\n\ttomorrow.setDate( tomorrow.getDate() + 1 );\n\n\tif ( isSameDay( date, tomorrow ) ) {\n\t\treturn sprintf(\n\t\t\t// translators: %s: Time of day the post is scheduled for.\n\t\t\t__( 'Tomorrow at %s' ),\n\t\t\t// translators: If using a space between 'g:i' and 'a', use a non-breaking sapce.\n\t\t\tdateI18n( _x( 'g:i\\xa0a', 'post schedule time format' ), date )\n\t\t);\n\t}\n\n\tif ( date.getFullYear() === now.getFullYear() ) {\n\t\treturn dateI18n(\n\t\t\t// translators: If using a space between 'g:i' and 'a', use a non-breaking sapce.\n\t\t\t_x( 'F j g:i\\xa0a', 'post schedule date format without year' ),\n\t\t\tdate\n\t\t);\n\t}\n\n\treturn dateI18n(\n\t\t// translators: Use a non-breaking space between 'g:i' and 'a' if appropriate.\n\t\t_x( 'F j, Y g:i\\xa0a', 'post schedule full date format' ),\n\t\tdate\n\t);\n}\n\nfunction getTimezoneAbbreviation() {\n\tconst { timezone } = __experimentalGetSettings();\n\n\tif ( timezone.abbr && isNaN( Number( timezone.abbr ) ) ) {\n\t\treturn timezone.abbr;\n\t}\n\n\tconst symbol = timezone.offset < 0 ? '' : '+';\n\treturn `UTC${ symbol }${ timezone.offset }`;\n}\n\nfunction isTimezoneSameAsSiteTimezone( date ) {\n\tconst { timezone } = __experimentalGetSettings();\n\n\tconst siteOffset = Number( timezone.offset );\n\tconst dateOffset = -1 * ( date.getTimezoneOffset() / 60 );\n\treturn siteOffset === dateOffset;\n}\n\nfunction isSameDay( left, right ) {\n\treturn (\n\t\tleft.getDate() === right.getDate() &&\n\t\tleft.getMonth() === right.getMonth() &&\n\t\tleft.getFullYear() === right.getFullYear()\n\t);\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/editor/src/components/post-slug/index.js"],"names":["withDispatch","withSelect","Component","__","withInstanceId","compose","safeDecodeURIComponent","cleanForSlug","PostSlugCheck","store","editorStore","PostSlug","constructor","postSlug","postTitle","postID","arguments","state","editedSlug","setSlug","bind","event","onUpdateSlug","props","value","target","render","instanceId","inputId","setState","select","getCurrentPost","getEditedPostAttribute","id","dispatch","editPost","slug"],"mappings":";;AAAA;AACA;AACA;AACA,SAASA,YAAT,EAAuBC,UAAvB,QAAyC,iBAAzC;AACA,SAASC,SAAT,QAA0B,oBAA1B;AACA,SAASC,EAAT,QAAmB,iBAAnB;AACA,SAASC,cAAT,EAAyBC,OAAzB,QAAwC,oBAAxC;AACA,SAASC,sBAAT,EAAiCC,YAAjC,QAAqD,gBAArD;AAEA;AACA;AACA;;AACA,OAAOC,aAAP,MAA0B,SAA1B;AACA,SAASC,KAAK,IAAIC,WAAlB,QAAqC,aAArC;AAEA,OAAO,MAAMC,QAAN,SAAuBT,SAAvB,CAAiC;AACvCU,EAAAA,WAAW,OAAoC;AAAA,QAAlC;AAAEC,MAAAA,QAAF;AAAYC,MAAAA,SAAZ;AAAuBC,MAAAA;AAAvB,KAAkC;AAC9C,UAAO,GAAGC,SAAV;AAEA,SAAKC,KAAL,GAAa;AACZC,MAAAA,UAAU,EACTZ,sBAAsB,CAAEO,QAAF,CAAtB,IACAN,YAAY,CAAEO,SAAF,CADZ,IAEAC;AAJW,KAAb;AAOA,SAAKI,OAAL,GAAe,KAAKA,OAAL,CAAaC,IAAb,CAAmB,IAAnB,CAAf;AACA;;AAEDD,EAAAA,OAAO,CAAEE,KAAF,EAAU;AAChB,UAAM;AAAER,MAAAA,QAAF;AAAYS,MAAAA;AAAZ,QAA6B,KAAKC,KAAxC;AACA,UAAM;AAAEC,MAAAA;AAAF,QAAYH,KAAK,CAACI,MAAxB;AAEA,UAAMP,UAAU,GAAGX,YAAY,CAAEiB,KAAF,CAA/B;;AAEA,QAAKN,UAAU,KAAKL,QAApB,EAA+B;AAC9B;AACA;;AAEDS,IAAAA,YAAY,CAAEJ,UAAF,CAAZ;AACA;;AAEDQ,EAAAA,MAAM,GAAG;AACR,UAAM;AAAEC,MAAAA;AAAF,QAAiB,KAAKJ,KAA5B;AACA,UAAM;AAAEL,MAAAA;AAAF,QAAiB,KAAKD,KAA5B;AAEA,UAAMW,OAAO,GAAG,sBAAsBD,UAAtC;AAEA,WACC,cAAC,aAAD,QACC;AAAO,MAAA,OAAO,EAAGC;AAAjB,OAA6BzB,EAAE,CAAE,MAAF,CAA/B,CADD,EAEC;AACC,MAAA,YAAY,EAAC,KADd;AAEC,MAAA,UAAU,EAAC,OAFZ;AAGC,MAAA,IAAI,EAAC,MAHN;AAIC,MAAA,EAAE,EAAGyB,OAJN;AAKC,MAAA,KAAK,EAAGV,UALT;AAMC,MAAA,QAAQ,EAAKG,KAAF,IACV,KAAKQ,QAAL,CAAe;AAAEX,QAAAA,UAAU,EAAEG,KAAK,CAACI,MAAN,CAAaD;AAA3B,OAAf,CAPF;AASC,MAAA,MAAM,EAAG,KAAKL,OATf;AAUC,MAAA,SAAS,EAAC;AAVX,MAFD,CADD;AAiBA;;AAlDsC;AAqDxC,eAAed,OAAO,CAAE,CACvBJ,UAAU,CAAI6B,MAAF,IAAc;AACzB,QAAM;AAAEC,IAAAA,cAAF;AAAkBC,IAAAA;AAAlB,
|
|
1
|
+
{"version":3,"sources":["@wordpress/editor/src/components/post-slug/index.js"],"names":["withDispatch","withSelect","Component","__","withInstanceId","compose","safeDecodeURIComponent","cleanForSlug","PostSlugCheck","store","editorStore","PostSlug","constructor","postSlug","postTitle","postID","arguments","state","editedSlug","setSlug","bind","event","onUpdateSlug","props","value","target","render","instanceId","inputId","setState","select","getCurrentPost","getEditedPostAttribute","id","dispatch","editPost","slug"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { withDispatch, withSelect } from '@wordpress/data';\nimport { Component } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { withInstanceId, compose } from '@wordpress/compose';\nimport { safeDecodeURIComponent, cleanForSlug } from '@wordpress/url';\n\n/**\n * Internal dependencies\n */\nimport PostSlugCheck from './check';\nimport { store as editorStore } from '../../store';\n\nexport class PostSlug extends Component {\n\tconstructor( { postSlug, postTitle, postID } ) {\n\t\tsuper( ...arguments );\n\n\t\tthis.state = {\n\t\t\teditedSlug:\n\t\t\t\tsafeDecodeURIComponent( postSlug ) ||\n\t\t\t\tcleanForSlug( postTitle ) ||\n\t\t\t\tpostID,\n\t\t};\n\n\t\tthis.setSlug = this.setSlug.bind( this );\n\t}\n\n\tsetSlug( event ) {\n\t\tconst { postSlug, onUpdateSlug } = this.props;\n\t\tconst { value } = event.target;\n\n\t\tconst editedSlug = cleanForSlug( value );\n\n\t\tif ( editedSlug === postSlug ) {\n\t\t\treturn;\n\t\t}\n\n\t\tonUpdateSlug( editedSlug );\n\t}\n\n\trender() {\n\t\tconst { instanceId } = this.props;\n\t\tconst { editedSlug } = this.state;\n\n\t\tconst inputId = 'editor-post-slug-' + instanceId;\n\n\t\treturn (\n\t\t\t<PostSlugCheck>\n\t\t\t\t<label htmlFor={ inputId }>{ __( 'Slug' ) }</label>\n\t\t\t\t<input\n\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\tspellCheck=\"false\"\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\tid={ inputId }\n\t\t\t\t\tvalue={ editedSlug }\n\t\t\t\t\tonChange={ ( event ) =>\n\t\t\t\t\t\tthis.setState( { editedSlug: event.target.value } )\n\t\t\t\t\t}\n\t\t\t\t\tonBlur={ this.setSlug }\n\t\t\t\t\tclassName=\"editor-post-slug__input\"\n\t\t\t\t/>\n\t\t\t</PostSlugCheck>\n\t\t);\n\t}\n}\n\nexport default compose( [\n\twithSelect( ( select ) => {\n\t\tconst { getCurrentPost, getEditedPostAttribute } =\n\t\t\tselect( editorStore );\n\n\t\tconst { id } = getCurrentPost();\n\t\treturn {\n\t\t\tpostSlug: getEditedPostAttribute( 'slug' ),\n\t\t\tpostTitle: getEditedPostAttribute( 'title' ),\n\t\t\tpostID: id,\n\t\t};\n\t} ),\n\twithDispatch( ( dispatch ) => {\n\t\tconst { editPost } = dispatch( editorStore );\n\t\treturn {\n\t\t\tonUpdateSlug( slug ) {\n\t\t\t\teditPost( { slug } );\n\t\t\t},\n\t\t};\n\t} ),\n\twithInstanceId,\n] )( PostSlug );\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/editor/src/components/post-sticky/index.js"],"names":["__","CheckboxControl","withSelect","withDispatch","compose","PostStickyCheck","store","editorStore","PostSticky","onUpdateSticky","postSticky","select","getEditedPostAttribute","dispatch","editPost","sticky"],"mappings":";;AAAA;AACA;AACA;AACA,SAASA,EAAT,QAAmB,iBAAnB;AACA,SAASC,eAAT,QAAgC,uBAAhC;AACA,SAASC,UAAT,EAAqBC,YAArB,QAAyC,iBAAzC;AACA,SAASC,OAAT,QAAwB,oBAAxB;AAEA;AACA;AACA;;AACA,OAAOC,eAAP,MAA4B,SAA5B;AACA,SAASC,KAAK,IAAIC,WAAlB,QAAqC,aAArC;AAEA,OAAO,SAASC,UAAT,OAA8D;AAAA,MAAzC;AAAEC,IAAAA,cAAF;AAAkBC,IAAAA,UAAU,GAAG;AAA/B,GAAyC;AACpE,SACC,cAAC,eAAD,QACC,cAAC,eAAD;AACC,IAAA,KAAK,EAAGV,EAAE,CAAE,8BAAF,CADX;AAEC,IAAA,OAAO,EAAGU,UAFX;AAGC,IAAA,QAAQ,EAAG,MAAMD,cAAc,CAAE,CAAEC,UAAJ;AAHhC,IADD,CADD;AASA;AAED,eAAeN,OAAO,CAAE,CACvBF,UAAU,CAAIS,MAAF,IAAc;AACzB,SAAO;AACND,IAAAA,UAAU,
|
|
1
|
+
{"version":3,"sources":["@wordpress/editor/src/components/post-sticky/index.js"],"names":["__","CheckboxControl","withSelect","withDispatch","compose","PostStickyCheck","store","editorStore","PostSticky","onUpdateSticky","postSticky","select","getEditedPostAttribute","dispatch","editPost","sticky"],"mappings":";;AAAA;AACA;AACA;AACA,SAASA,EAAT,QAAmB,iBAAnB;AACA,SAASC,eAAT,QAAgC,uBAAhC;AACA,SAASC,UAAT,EAAqBC,YAArB,QAAyC,iBAAzC;AACA,SAASC,OAAT,QAAwB,oBAAxB;AAEA;AACA;AACA;;AACA,OAAOC,eAAP,MAA4B,SAA5B;AACA,SAASC,KAAK,IAAIC,WAAlB,QAAqC,aAArC;AAEA,OAAO,SAASC,UAAT,OAA8D;AAAA,MAAzC;AAAEC,IAAAA,cAAF;AAAkBC,IAAAA,UAAU,GAAG;AAA/B,GAAyC;AACpE,SACC,cAAC,eAAD,QACC,cAAC,eAAD;AACC,IAAA,KAAK,EAAGV,EAAE,CAAE,8BAAF,CADX;AAEC,IAAA,OAAO,EAAGU,UAFX;AAGC,IAAA,QAAQ,EAAG,MAAMD,cAAc,CAAE,CAAEC,UAAJ;AAHhC,IADD,CADD;AASA;AAED,eAAeN,OAAO,CAAE,CACvBF,UAAU,CAAIS,MAAF,IAAc;AACzB,SAAO;AACND,IAAAA,UAAU,EACTC,MAAM,CAAEJ,WAAF,CAAN,CAAsBK,sBAAtB,CAA8C,QAA9C;AAFK,GAAP;AAIA,CALS,CADa,EAOvBT,YAAY,CAAIU,QAAF,IAAgB;AAC7B,SAAO;AACNJ,IAAAA,cAAc,CAAEC,UAAF,EAAe;AAC5BG,MAAAA,QAAQ,CAAEN,WAAF,CAAR,CAAwBO,QAAxB,CAAkC;AAAEC,QAAAA,MAAM,EAAEL;AAAV,OAAlC;AACA;;AAHK,GAAP;AAKA,CANW,CAPW,CAAF,CAAP,CAcVF,UAdU,CAAf","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { CheckboxControl } from '@wordpress/components';\nimport { withSelect, withDispatch } from '@wordpress/data';\nimport { compose } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport PostStickyCheck from './check';\nimport { store as editorStore } from '../../store';\n\nexport function PostSticky( { onUpdateSticky, postSticky = false } ) {\n\treturn (\n\t\t<PostStickyCheck>\n\t\t\t<CheckboxControl\n\t\t\t\tlabel={ __( 'Stick to the top of the blog' ) }\n\t\t\t\tchecked={ postSticky }\n\t\t\t\tonChange={ () => onUpdateSticky( ! postSticky ) }\n\t\t\t/>\n\t\t</PostStickyCheck>\n\t);\n}\n\nexport default compose( [\n\twithSelect( ( select ) => {\n\t\treturn {\n\t\t\tpostSticky:\n\t\t\t\tselect( editorStore ).getEditedPostAttribute( 'sticky' ),\n\t\t};\n\t} ),\n\twithDispatch( ( dispatch ) => {\n\t\treturn {\n\t\t\tonUpdateSticky( postSticky ) {\n\t\t\t\tdispatch( editorStore ).editPost( { sticky: postSticky } );\n\t\t\t},\n\t\t};\n\t} ),\n] )( PostSticky );\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/editor/src/components/post-switch-to-draft-button/index.js"],"names":["Button","__experimentalConfirmDialog","ConfirmDialog","__","withSelect","withDispatch","compose","useViewportMatch","useState","store","editorStore","PostSwitchToDraftButton","isSaving","isPublished","isScheduled","onClick","isMobileViewport","showConfirmDialog","setShowConfirmDialog","alertMessage","handleConfirm","select","isSavingPost","isCurrentPostPublished","isCurrentPostScheduled","dispatch","editPost","savePost","status"],"mappings":";;AAAA;AACA;AACA;AACA,SACCA,MADD,EAECC,2BAA2B,IAAIC,aAFhC,QAGO,uBAHP;AAIA,SAASC,EAAT,QAAmB,iBAAnB;AACA,SAASC,UAAT,EAAqBC,YAArB,QAAyC,iBAAzC;AACA,SAASC,OAAT,EAAkBC,gBAAlB,QAA0C,oBAA1C;AACA,SAASC,QAAT,QAAyB,oBAAzB;AAEA;AACA;AACA;;AACA,SAASC,KAAK,IAAIC,WAAlB,QAAqC,aAArC;;AAEA,SAASC,uBAAT,OAKI;AAAA,MAL8B;AACjCC,IAAAA,QADiC;AAEjCC,IAAAA,WAFiC;AAGjCC,IAAAA,WAHiC;AAIjCC,IAAAA;AAJiC,GAK9B;AACH,QAAMC,gBAAgB,GAAGT,gBAAgB,CAAE,OAAF,EAAW,GAAX,CAAzC;AACA,QAAM,CAAEU,iBAAF,EAAqBC,oBAArB,IAA8CV,QAAQ,CAAE,KAAF,CAA5D;;AAEA,MAAK,CAAEK,WAAF,IAAiB,CAAEC,WAAxB,EAAsC;AACrC,WAAO,IAAP;AACA;;AAED,MAAIK,YAAJ;;AACA,MAAKN,WAAL,EAAmB;AAClBM,IAAAA,YAAY,GAAGhB,EAAE,CAAE,+CAAF,CAAjB;AACA,GAFD,MAEO,IAAKW,WAAL,EAAmB;AACzBK,IAAAA,YAAY,GAAGhB,EAAE,CAAE,gDAAF,CAAjB;AACA;;AAED,QAAMiB,aAAa,GAAG,MAAM;AAC3BF,IAAAA,oBAAoB,CAAE,KAAF,CAApB;AACAH,IAAAA,OAAO;AACP,GAHD;;AAKA,SACC,8BACC,cAAC,MAAD;AACC,IAAA,SAAS,EAAC,6BADX;AAEC,IAAA,OAAO,EAAG,MAAM;AACfG,MAAAA,oBAAoB,CAAE,IAAF,CAApB;AACA,KAJF;AAKC,IAAA,QAAQ,EAAGN,QALZ;AAMC,IAAA,OAAO,EAAC;AANT,KAQGI,gBAAgB,GAAGb,EAAE,CAAE,OAAF,CAAL,GAAmBA,EAAE,CAAE,iBAAF,CARxC,CADD,EAWC,cAAC,aAAD;AACC,IAAA,MAAM,EAAGc,iBADV;AAEC,IAAA,SAAS,EAAGG,aAFb;AAGC,IAAA,QAAQ,EAAG,MAAMF,oBAAoB,CAAE,KAAF;AAHtC,KAKGC,YALH,CAXD,CADD;AAqBA;;AAED,eAAeb,OAAO,CAAE,CACvBF,UAAU,CAAIiB,MAAF,IAAc;AACzB,QAAM;
|
|
1
|
+
{"version":3,"sources":["@wordpress/editor/src/components/post-switch-to-draft-button/index.js"],"names":["Button","__experimentalConfirmDialog","ConfirmDialog","__","withSelect","withDispatch","compose","useViewportMatch","useState","store","editorStore","PostSwitchToDraftButton","isSaving","isPublished","isScheduled","onClick","isMobileViewport","showConfirmDialog","setShowConfirmDialog","alertMessage","handleConfirm","select","isSavingPost","isCurrentPostPublished","isCurrentPostScheduled","dispatch","editPost","savePost","status"],"mappings":";;AAAA;AACA;AACA;AACA,SACCA,MADD,EAECC,2BAA2B,IAAIC,aAFhC,QAGO,uBAHP;AAIA,SAASC,EAAT,QAAmB,iBAAnB;AACA,SAASC,UAAT,EAAqBC,YAArB,QAAyC,iBAAzC;AACA,SAASC,OAAT,EAAkBC,gBAAlB,QAA0C,oBAA1C;AACA,SAASC,QAAT,QAAyB,oBAAzB;AAEA;AACA;AACA;;AACA,SAASC,KAAK,IAAIC,WAAlB,QAAqC,aAArC;;AAEA,SAASC,uBAAT,OAKI;AAAA,MAL8B;AACjCC,IAAAA,QADiC;AAEjCC,IAAAA,WAFiC;AAGjCC,IAAAA,WAHiC;AAIjCC,IAAAA;AAJiC,GAK9B;AACH,QAAMC,gBAAgB,GAAGT,gBAAgB,CAAE,OAAF,EAAW,GAAX,CAAzC;AACA,QAAM,CAAEU,iBAAF,EAAqBC,oBAArB,IAA8CV,QAAQ,CAAE,KAAF,CAA5D;;AAEA,MAAK,CAAEK,WAAF,IAAiB,CAAEC,WAAxB,EAAsC;AACrC,WAAO,IAAP;AACA;;AAED,MAAIK,YAAJ;;AACA,MAAKN,WAAL,EAAmB;AAClBM,IAAAA,YAAY,GAAGhB,EAAE,CAAE,+CAAF,CAAjB;AACA,GAFD,MAEO,IAAKW,WAAL,EAAmB;AACzBK,IAAAA,YAAY,GAAGhB,EAAE,CAAE,gDAAF,CAAjB;AACA;;AAED,QAAMiB,aAAa,GAAG,MAAM;AAC3BF,IAAAA,oBAAoB,CAAE,KAAF,CAApB;AACAH,IAAAA,OAAO;AACP,GAHD;;AAKA,SACC,8BACC,cAAC,MAAD;AACC,IAAA,SAAS,EAAC,6BADX;AAEC,IAAA,OAAO,EAAG,MAAM;AACfG,MAAAA,oBAAoB,CAAE,IAAF,CAApB;AACA,KAJF;AAKC,IAAA,QAAQ,EAAGN,QALZ;AAMC,IAAA,OAAO,EAAC;AANT,KAQGI,gBAAgB,GAAGb,EAAE,CAAE,OAAF,CAAL,GAAmBA,EAAE,CAAE,iBAAF,CARxC,CADD,EAWC,cAAC,aAAD;AACC,IAAA,MAAM,EAAGc,iBADV;AAEC,IAAA,SAAS,EAAGG,aAFb;AAGC,IAAA,QAAQ,EAAG,MAAMF,oBAAoB,CAAE,KAAF;AAHtC,KAKGC,YALH,CAXD,CADD;AAqBA;;AAED,eAAeb,OAAO,CAAE,CACvBF,UAAU,CAAIiB,MAAF,IAAc;AACzB,QAAM;AAAEC,IAAAA,YAAF;AAAgBC,IAAAA,sBAAhB;AAAwCC,IAAAA;AAAxC,MACLH,MAAM,CAAEX,WAAF,CADP;AAEA,SAAO;AACNE,IAAAA,QAAQ,EAAEU,YAAY,EADhB;AAENT,IAAAA,WAAW,EAAEU,sBAAsB,EAF7B;AAGNT,IAAAA,WAAW,EAAEU,sBAAsB;AAH7B,GAAP;AAKA,CARS,CADa,EAUvBnB,YAAY,CAAIoB,QAAF,IAAgB;AAC7B,QAAM;AAAEC,IAAAA,QAAF;AAAYC,IAAAA;AAAZ,MAAyBF,QAAQ,CAAEf,WAAF,CAAvC;AACA,SAAO;AACNK,IAAAA,OAAO,EAAE,MAAM;AACdW,MAAAA,QAAQ,CAAE;AAAEE,QAAAA,MAAM,EAAE;AAAV,OAAF,CAAR;AACAD,MAAAA,QAAQ;AACR;AAJK,GAAP;AAMA,CARW,CAVW,CAAF,CAAP,CAmBVhB,uBAnBU,CAAf","sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tButton,\n\t__experimentalConfirmDialog as ConfirmDialog,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { withSelect, withDispatch } from '@wordpress/data';\nimport { compose, useViewportMatch } from '@wordpress/compose';\nimport { useState } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { store as editorStore } from '../../store';\n\nfunction PostSwitchToDraftButton( {\n\tisSaving,\n\tisPublished,\n\tisScheduled,\n\tonClick,\n} ) {\n\tconst isMobileViewport = useViewportMatch( 'small', '<' );\n\tconst [ showConfirmDialog, setShowConfirmDialog ] = useState( false );\n\n\tif ( ! isPublished && ! isScheduled ) {\n\t\treturn null;\n\t}\n\n\tlet alertMessage;\n\tif ( isPublished ) {\n\t\talertMessage = __( 'Are you sure you want to unpublish this post?' );\n\t} else if ( isScheduled ) {\n\t\talertMessage = __( 'Are you sure you want to unschedule this post?' );\n\t}\n\n\tconst handleConfirm = () => {\n\t\tsetShowConfirmDialog( false );\n\t\tonClick();\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<Button\n\t\t\t\tclassName=\"editor-post-switch-to-draft\"\n\t\t\t\tonClick={ () => {\n\t\t\t\t\tsetShowConfirmDialog( true );\n\t\t\t\t} }\n\t\t\t\tdisabled={ isSaving }\n\t\t\t\tvariant=\"tertiary\"\n\t\t\t>\n\t\t\t\t{ isMobileViewport ? __( 'Draft' ) : __( 'Switch to draft' ) }\n\t\t\t</Button>\n\t\t\t<ConfirmDialog\n\t\t\t\tisOpen={ showConfirmDialog }\n\t\t\t\tonConfirm={ handleConfirm }\n\t\t\t\tonCancel={ () => setShowConfirmDialog( false ) }\n\t\t\t>\n\t\t\t\t{ alertMessage }\n\t\t\t</ConfirmDialog>\n\t\t</>\n\t);\n}\n\nexport default compose( [\n\twithSelect( ( select ) => {\n\t\tconst { isSavingPost, isCurrentPostPublished, isCurrentPostScheduled } =\n\t\t\tselect( editorStore );\n\t\treturn {\n\t\t\tisSaving: isSavingPost(),\n\t\t\tisPublished: isCurrentPostPublished(),\n\t\t\tisScheduled: isCurrentPostScheduled(),\n\t\t};\n\t} ),\n\twithDispatch( ( dispatch ) => {\n\t\tconst { editPost, savePost } = dispatch( editorStore );\n\t\treturn {\n\t\t\tonClick: () => {\n\t\t\t\teditPost( { status: 'draft' } );\n\t\t\t\tsavePost();\n\t\t\t},\n\t\t};\n\t} ),\n] )( PostSwitchToDraftButton );\n"]}
|
|
@@ -52,10 +52,10 @@ const termNamesToIds = (names, terms) => {
|
|
|
52
52
|
}; // Tries to create a term or fetch it if it already exists.
|
|
53
53
|
|
|
54
54
|
|
|
55
|
-
function findOrCreateTerm(termName, restBase) {
|
|
55
|
+
function findOrCreateTerm(termName, restBase, namespace) {
|
|
56
56
|
const escapedTermName = escapeString(termName);
|
|
57
57
|
return apiFetch({
|
|
58
|
-
path:
|
|
58
|
+
path: `/${namespace}/${restBase}`,
|
|
59
59
|
method: 'POST',
|
|
60
60
|
data: {
|
|
61
61
|
name: escapedTermName
|
|
@@ -66,7 +66,7 @@ function findOrCreateTerm(termName, restBase) {
|
|
|
66
66
|
if (errorCode === 'term_exists') {
|
|
67
67
|
// If the terms exist, fetch it instead of creating a new one.
|
|
68
68
|
const addRequest = apiFetch({
|
|
69
|
-
path: addQueryArgs(
|
|
69
|
+
path: addQueryArgs(`/${namespace}/${restBase}`, { ...DEFAULT_QUERY,
|
|
70
70
|
search: escapedTermName
|
|
71
71
|
})
|
|
72
72
|
}).then(unescapeTerms);
|
|
@@ -161,6 +161,8 @@ function FlatTermSelector(_ref) {
|
|
|
161
161
|
}
|
|
162
162
|
|
|
163
163
|
function onChange(termNames) {
|
|
164
|
+
var _taxonomy$rest_namesp;
|
|
165
|
+
|
|
164
166
|
const availableTerms = [...(terms !== null && terms !== void 0 ? terms : []), ...(searchResults !== null && searchResults !== void 0 ? searchResults : [])];
|
|
165
167
|
const uniqueTerms = uniqBy(termNames, term => term.toLowerCase());
|
|
166
168
|
const newTermNames = uniqueTerms.filter(termName => !find(availableTerms, term => isSameTermName(term.name, termName))); // Optimistically update term values.
|
|
@@ -176,7 +178,8 @@ function FlatTermSelector(_ref) {
|
|
|
176
178
|
return;
|
|
177
179
|
}
|
|
178
180
|
|
|
179
|
-
|
|
181
|
+
const namespace = (_taxonomy$rest_namesp = taxonomy === null || taxonomy === void 0 ? void 0 : taxonomy.rest_namespace) !== null && _taxonomy$rest_namesp !== void 0 ? _taxonomy$rest_namesp : 'wp/v2';
|
|
182
|
+
Promise.all(newTermNames.map(termName => findOrCreateTerm(termName, taxonomy.rest_base, namespace))).then(newTerms => {
|
|
180
183
|
const newAvailableTerms = availableTerms.concat(newTerms);
|
|
181
184
|
return onUpdateTerms(termNamesToIds(uniqueTerms, newAvailableTerms));
|
|
182
185
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/editor/src/components/post-taxonomies/flat-term-selector.js"],"names":["escape","escapeString","find","get","uniqBy","__","_x","sprintf","useEffect","useMemo","useState","FormTokenField","withFilters","useSelect","useDispatch","store","coreStore","useDebounce","apiFetch","addQueryArgs","speak","editorStore","unescapeString","unescapeTerm","unescapeTerms","MostUsedTerms","EMPTY_ARRAY","MAX_TERMS_SUGGESTIONS","DEFAULT_QUERY","per_page","orderby","order","_fields","context","isSameTermName","termA","termB","toLowerCase","termNamesToIds","names","terms","map","termName","term","name","id","findOrCreateTerm","restBase","escapedTermName","path","method","data","catch","error","errorCode","code","addRequest","search","then","searchResult","result","Promise","reject","FlatTermSelector","slug","values","setValues","setSearch","debouncedSearch","termIds","taxonomy","hasAssignAction","hasCreateAction","hasResolvedTerms","select","getCurrentPost","getEditedPostAttribute","getEntityRecords","getTaxonomy","hasFinishedResolution","post","_taxonomy","_termIds","rest_base","query","include","join","length","searchResults","newValues","suggestions","editPost","onUpdateTerms","newTermIds","onChange","termNames","availableTerms","uniqueTerms","newTermNames","filter","all","newTerms","newAvailableTerms","concat","appendTerm","newTerm","includes","termAddedMessage","newTermLabel","singularName","termAddedLabel","termRemovedLabel","removeTermLabel","added","removed","remove"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { escape as escapeString, find, get, uniqBy } from 'lodash';\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 { addQueryArgs } from '@wordpress/url';\nimport { speak } from '@wordpress/a11y';\n\n/**\n * Internal dependencies\n */\nimport { store as editorStore } from '../../store';\nimport { unescapeString, unescapeTerm, unescapeTerms } from '../../utils/terms';\nimport MostUsedTerms from './most-used-terms';\n\n/**\n * Shared reference to an empty array for cases where it is important to avoid\n * returning a new array reference on every invocation.\n *\n * @type {Array<any>}\n */\nconst EMPTY_ARRAY = [];\n\n/**\n * Module constants\n */\nconst MAX_TERMS_SUGGESTIONS = 20;\nconst DEFAULT_QUERY = {\n\tper_page: MAX_TERMS_SUGGESTIONS,\n\torderby: 'count',\n\torder: 'desc',\n\t_fields: 'id,name',\n\tcontext: 'view',\n};\n\nconst isSameTermName = ( termA, termB ) =>\n\tunescapeString( termA ).toLowerCase() ===\n\tunescapeString( termB ).toLowerCase();\n\nconst termNamesToIds = ( names, terms ) => {\n\treturn names.map(\n\t\t( termName ) =>\n\t\t\tfind( terms, ( term ) => isSameTermName( term.name, termName ) ).id\n\t);\n};\n\n// Tries to create a term or fetch it if it already exists.\nfunction findOrCreateTerm( termName, restBase ) {\n\tconst escapedTermName = escapeString( termName );\n\n\treturn apiFetch( {\n\t\tpath: `/wp/v2/${ restBase }`,\n\t\tmethod: 'POST',\n\t\tdata: { name: escapedTermName },\n\t} )\n\t\t.catch( ( error ) => {\n\t\t\tconst errorCode = error.code;\n\t\t\tif ( errorCode === 'term_exists' ) {\n\t\t\t\t// If the terms exist, fetch it instead of creating a new one.\n\t\t\t\tconst addRequest = apiFetch( {\n\t\t\t\t\tpath: addQueryArgs( `/wp/v2/${ restBase }`, {\n\t\t\t\t\t\t...DEFAULT_QUERY,\n\t\t\t\t\t\tsearch: escapedTermName,\n\t\t\t\t\t} ),\n\t\t\t\t} ).then( unescapeTerms );\n\n\t\t\t\treturn addRequest.then( ( searchResult ) => {\n\t\t\t\t\treturn find( searchResult, ( result ) =>\n\t\t\t\t\t\tisSameTermName( result.name, termName )\n\t\t\t\t\t);\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn Promise.reject( error );\n\t\t} )\n\t\t.then( unescapeTerm );\n}\n\nfunction 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 } = select(\n\t\t\t\teditorStore\n\t\t\t);\n\t\t\tconst {\n\t\t\t\tgetEntityRecords,\n\t\t\t\tgetTaxonomy,\n\t\t\t\thasFinishedResolution,\n\t\t\t} = select( coreStore );\n\t\t\tconst post = getCurrentPost();\n\t\t\tconst _taxonomy = getTaxonomy( slug );\n\t\t\tconst _termIds = _taxonomy\n\t\t\t\t? getEditedPostAttribute( _taxonomy.rest_base )\n\t\t\t\t: EMPTY_ARRAY;\n\n\t\t\tconst query = {\n\t\t\t\t...DEFAULT_QUERY,\n\t\t\t\tinclude: _termIds.join( ',' ),\n\t\t\t\tper_page: -1,\n\t\t\t};\n\n\t\t\treturn {\n\t\t\t\thasCreateAction: _taxonomy\n\t\t\t\t\t? get(\n\t\t\t\t\t\t\tpost,\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t'_links',\n\t\t\t\t\t\t\t\t'wp:action-create-' + _taxonomy.rest_base,\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tfalse\n\t\t\t\t\t )\n\t\t\t\t\t: false,\n\t\t\t\thasAssignAction: _taxonomy\n\t\t\t\t\t? get(\n\t\t\t\t\t\t\tpost,\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t'_links',\n\t\t\t\t\t\t\t\t'wp:action-assign-' + _taxonomy.rest_base,\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tfalse\n\t\t\t\t\t )\n\t\t\t\t\t: false,\n\t\t\t\ttaxonomy: _taxonomy,\n\t\t\t\ttermIds: _termIds,\n\t\t\t\tterms: _termIds.length\n\t\t\t\t\t? getEntityRecords( 'taxonomy', slug, query )\n\t\t\t\t\t: EMPTY_ARRAY,\n\t\t\t\thasResolvedTerms: hasFinishedResolution( 'getEntityRecords', [\n\t\t\t\t\t'taxonomy',\n\t\t\t\t\tslug,\n\t\t\t\t\tquery,\n\t\t\t\t] ),\n\t\t\t};\n\t\t},\n\t\t[ slug ]\n\t);\n\n\tconst { searchResults } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getEntityRecords } = select( coreStore );\n\n\t\t\treturn {\n\t\t\t\tsearchResults: !! search\n\t\t\t\t\t? getEntityRecords( 'taxonomy', slug, {\n\t\t\t\t\t\t\t...DEFAULT_QUERY,\n\t\t\t\t\t\t\tsearch,\n\t\t\t\t\t } )\n\t\t\t\t\t: EMPTY_ARRAY,\n\t\t\t};\n\t\t},\n\t\t[ search ]\n\t);\n\n\t// Update terms state only after the selectors are resolved.\n\t// We're using this to avoid terms temporarily disappearing on slow networks\n\t// while core data makes REST API requests.\n\tuseEffect( () => {\n\t\tif ( hasResolvedTerms ) {\n\t\t\tconst newValues = ( terms ?? [] ).map( ( term ) =>\n\t\t\t\tunescapeString( term.name )\n\t\t\t);\n\n\t\t\tsetValues( newValues );\n\t\t}\n\t}, [ terms, hasResolvedTerms ] );\n\n\tconst suggestions = useMemo( () => {\n\t\treturn ( searchResults ?? [] ).map( ( term ) =>\n\t\t\tunescapeString( term.name )\n\t\t);\n\t}, [ searchResults ] );\n\n\tconst { editPost } = useDispatch( editorStore );\n\n\tif ( ! hasAssignAction ) {\n\t\treturn null;\n\t}\n\n\tfunction onUpdateTerms( newTermIds ) {\n\t\teditPost( { [ taxonomy.rest_base ]: newTermIds } );\n\t}\n\n\tfunction onChange( termNames ) {\n\t\tconst availableTerms = [\n\t\t\t...( terms ?? [] ),\n\t\t\t...( searchResults ?? [] ),\n\t\t];\n\t\tconst uniqueTerms = uniqBy( termNames, ( term ) => term.toLowerCase() );\n\t\tconst newTermNames = uniqueTerms.filter(\n\t\t\t( termName ) =>\n\t\t\t\t! find( availableTerms, ( term ) =>\n\t\t\t\t\tisSameTermName( term.name, termName )\n\t\t\t\t)\n\t\t);\n\n\t\t// Optimistically update term values.\n\t\t// The selector will always re-fetch terms later.\n\t\tsetValues( uniqueTerms );\n\n\t\tif ( newTermNames.length === 0 ) {\n\t\t\treturn onUpdateTerms(\n\t\t\t\ttermNamesToIds( uniqueTerms, availableTerms )\n\t\t\t);\n\t\t}\n\n\t\tif ( ! hasCreateAction ) {\n\t\t\treturn;\n\t\t}\n\n\t\tPromise.all(\n\t\t\tnewTermNames.map( ( termName ) =>\n\t\t\t\tfindOrCreateTerm( termName, taxonomy.rest_base )\n\t\t\t)\n\t\t).then( ( newTerms ) => {\n\t\t\tconst newAvailableTerms = availableTerms.concat( newTerms );\n\t\t\treturn onUpdateTerms(\n\t\t\t\ttermNamesToIds( uniqueTerms, newAvailableTerms )\n\t\t\t);\n\t\t} );\n\t}\n\n\tfunction appendTerm( newTerm ) {\n\t\tif ( termIds.includes( newTerm.id ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst newTermIds = [ ...termIds, newTerm.id ];\n\t\tconst termAddedMessage = sprintf(\n\t\t\t/* translators: %s: term name. */\n\t\t\t_x( '%s added', 'term' ),\n\t\t\tget(\n\t\t\t\ttaxonomy,\n\t\t\t\t[ 'labels', 'singular_name' ],\n\t\t\t\tslug === 'post_tag' ? __( 'Tag' ) : __( 'Term' )\n\t\t\t)\n\t\t);\n\n\t\tspeak( termAddedMessage, 'assertive' );\n\t\tonUpdateTerms( newTermIds );\n\t}\n\n\tconst newTermLabel = get(\n\t\ttaxonomy,\n\t\t[ 'labels', 'add_new_item' ],\n\t\tslug === 'post_tag' ? __( 'Add new tag' ) : __( 'Add new Term' )\n\t);\n\tconst singularName = get(\n\t\ttaxonomy,\n\t\t[ 'labels', 'singular_name' ],\n\t\tslug === 'post_tag' ? __( 'Tag' ) : __( 'Term' )\n\t);\n\tconst termAddedLabel = sprintf(\n\t\t/* translators: %s: term name. */\n\t\t_x( '%s added', 'term' ),\n\t\tsingularName\n\t);\n\tconst termRemovedLabel = sprintf(\n\t\t/* translators: %s: term name. */\n\t\t_x( '%s removed', 'term' ),\n\t\tsingularName\n\t);\n\tconst removeTermLabel = sprintf(\n\t\t/* translators: %s: term name. */\n\t\t_x( 'Remove %s', 'term' ),\n\t\tsingularName\n\t);\n\n\treturn (\n\t\t<>\n\t\t\t<FormTokenField\n\t\t\t\tvalue={ values }\n\t\t\t\tsuggestions={ suggestions }\n\t\t\t\tonChange={ onChange }\n\t\t\t\tonInputChange={ debouncedSearch }\n\t\t\t\tmaxSuggestions={ MAX_TERMS_SUGGESTIONS }\n\t\t\t\tlabel={ newTermLabel }\n\t\t\t\tmessages={ {\n\t\t\t\t\tadded: termAddedLabel,\n\t\t\t\t\tremoved: termRemovedLabel,\n\t\t\t\t\tremove: removeTermLabel,\n\t\t\t\t} }\n\t\t\t/>\n\t\t\t<MostUsedTerms taxonomy={ taxonomy } onSelect={ appendTerm } />\n\t\t</>\n\t);\n}\n\nexport default withFilters( 'editor.PostTaxonomyType' )( FlatTermSelector );\n"]}
|
|
1
|
+
{"version":3,"sources":["@wordpress/editor/src/components/post-taxonomies/flat-term-selector.js"],"names":["escape","escapeString","find","get","uniqBy","__","_x","sprintf","useEffect","useMemo","useState","FormTokenField","withFilters","useSelect","useDispatch","store","coreStore","useDebounce","apiFetch","addQueryArgs","speak","editorStore","unescapeString","unescapeTerm","unescapeTerms","MostUsedTerms","EMPTY_ARRAY","MAX_TERMS_SUGGESTIONS","DEFAULT_QUERY","per_page","orderby","order","_fields","context","isSameTermName","termA","termB","toLowerCase","termNamesToIds","names","terms","map","termName","term","name","id","findOrCreateTerm","restBase","namespace","escapedTermName","path","method","data","catch","error","errorCode","code","addRequest","search","then","searchResult","result","Promise","reject","FlatTermSelector","slug","values","setValues","setSearch","debouncedSearch","termIds","taxonomy","hasAssignAction","hasCreateAction","hasResolvedTerms","select","getCurrentPost","getEditedPostAttribute","getEntityRecords","getTaxonomy","hasFinishedResolution","post","_taxonomy","_termIds","rest_base","query","include","join","length","searchResults","newValues","suggestions","editPost","onUpdateTerms","newTermIds","onChange","termNames","availableTerms","uniqueTerms","newTermNames","filter","rest_namespace","all","newTerms","newAvailableTerms","concat","appendTerm","newTerm","includes","termAddedMessage","newTermLabel","singularName","termAddedLabel","termRemovedLabel","removeTermLabel","added","removed","remove"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { escape as escapeString, find, get, uniqBy } from 'lodash';\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 { addQueryArgs } from '@wordpress/url';\nimport { speak } from '@wordpress/a11y';\n\n/**\n * Internal dependencies\n */\nimport { store as editorStore } from '../../store';\nimport { unescapeString, unescapeTerm, unescapeTerms } from '../../utils/terms';\nimport MostUsedTerms from './most-used-terms';\n\n/**\n * Shared reference to an empty array for cases where it is important to avoid\n * returning a new array reference on every invocation.\n *\n * @type {Array<any>}\n */\nconst EMPTY_ARRAY = [];\n\n/**\n * Module constants\n */\nconst MAX_TERMS_SUGGESTIONS = 20;\nconst DEFAULT_QUERY = {\n\tper_page: MAX_TERMS_SUGGESTIONS,\n\torderby: 'count',\n\torder: 'desc',\n\t_fields: 'id,name',\n\tcontext: 'view',\n};\n\nconst isSameTermName = ( termA, termB ) =>\n\tunescapeString( termA ).toLowerCase() ===\n\tunescapeString( termB ).toLowerCase();\n\nconst termNamesToIds = ( names, terms ) => {\n\treturn names.map(\n\t\t( termName ) =>\n\t\t\tfind( terms, ( term ) => isSameTermName( term.name, termName ) ).id\n\t);\n};\n\n// Tries to create a term or fetch it if it already exists.\nfunction findOrCreateTerm( termName, restBase, namespace ) {\n\tconst escapedTermName = escapeString( 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\tconst errorCode = error.code;\n\t\t\tif ( errorCode === 'term_exists' ) {\n\t\t\t\t// If the terms exist, fetch it instead of creating a new one.\n\t\t\t\tconst addRequest = apiFetch( {\n\t\t\t\t\tpath: addQueryArgs( `/${ namespace }/${ restBase }`, {\n\t\t\t\t\t\t...DEFAULT_QUERY,\n\t\t\t\t\t\tsearch: escapedTermName,\n\t\t\t\t\t} ),\n\t\t\t\t} ).then( unescapeTerms );\n\n\t\t\t\treturn addRequest.then( ( searchResult ) => {\n\t\t\t\t\treturn find( searchResult, ( result ) =>\n\t\t\t\t\t\tisSameTermName( result.name, termName )\n\t\t\t\t\t);\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn Promise.reject( error );\n\t\t} )\n\t\t.then( unescapeTerm );\n}\n\nfunction FlatTermSelector( { slug } ) {\n\tconst [ values, setValues ] = useState( [] );\n\tconst [ search, setSearch ] = useState( '' );\n\tconst debouncedSearch = useDebounce( setSearch, 500 );\n\n\tconst {\n\t\tterms,\n\t\ttermIds,\n\t\ttaxonomy,\n\t\thasAssignAction,\n\t\thasCreateAction,\n\t\thasResolvedTerms,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getCurrentPost, getEditedPostAttribute } =\n\t\t\t\tselect( editorStore );\n\t\t\tconst { getEntityRecords, getTaxonomy, hasFinishedResolution } =\n\t\t\t\tselect( coreStore );\n\t\t\tconst post = getCurrentPost();\n\t\t\tconst _taxonomy = getTaxonomy( slug );\n\t\t\tconst _termIds = _taxonomy\n\t\t\t\t? getEditedPostAttribute( _taxonomy.rest_base )\n\t\t\t\t: EMPTY_ARRAY;\n\n\t\t\tconst query = {\n\t\t\t\t...DEFAULT_QUERY,\n\t\t\t\tinclude: _termIds.join( ',' ),\n\t\t\t\tper_page: -1,\n\t\t\t};\n\n\t\t\treturn {\n\t\t\t\thasCreateAction: _taxonomy\n\t\t\t\t\t? get(\n\t\t\t\t\t\t\tpost,\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t'_links',\n\t\t\t\t\t\t\t\t'wp:action-create-' + _taxonomy.rest_base,\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tfalse\n\t\t\t\t\t )\n\t\t\t\t\t: false,\n\t\t\t\thasAssignAction: _taxonomy\n\t\t\t\t\t? get(\n\t\t\t\t\t\t\tpost,\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t'_links',\n\t\t\t\t\t\t\t\t'wp:action-assign-' + _taxonomy.rest_base,\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tfalse\n\t\t\t\t\t )\n\t\t\t\t\t: false,\n\t\t\t\ttaxonomy: _taxonomy,\n\t\t\t\ttermIds: _termIds,\n\t\t\t\tterms: _termIds.length\n\t\t\t\t\t? getEntityRecords( 'taxonomy', slug, query )\n\t\t\t\t\t: EMPTY_ARRAY,\n\t\t\t\thasResolvedTerms: hasFinishedResolution( 'getEntityRecords', [\n\t\t\t\t\t'taxonomy',\n\t\t\t\t\tslug,\n\t\t\t\t\tquery,\n\t\t\t\t] ),\n\t\t\t};\n\t\t},\n\t\t[ slug ]\n\t);\n\n\tconst { searchResults } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getEntityRecords } = select( coreStore );\n\n\t\t\treturn {\n\t\t\t\tsearchResults: !! search\n\t\t\t\t\t? getEntityRecords( 'taxonomy', slug, {\n\t\t\t\t\t\t\t...DEFAULT_QUERY,\n\t\t\t\t\t\t\tsearch,\n\t\t\t\t\t } )\n\t\t\t\t\t: EMPTY_ARRAY,\n\t\t\t};\n\t\t},\n\t\t[ search ]\n\t);\n\n\t// Update terms state only after the selectors are resolved.\n\t// We're using this to avoid terms temporarily disappearing on slow networks\n\t// while core data makes REST API requests.\n\tuseEffect( () => {\n\t\tif ( hasResolvedTerms ) {\n\t\t\tconst newValues = ( terms ?? [] ).map( ( term ) =>\n\t\t\t\tunescapeString( term.name )\n\t\t\t);\n\n\t\t\tsetValues( newValues );\n\t\t}\n\t}, [ terms, hasResolvedTerms ] );\n\n\tconst suggestions = useMemo( () => {\n\t\treturn ( searchResults ?? [] ).map( ( term ) =>\n\t\t\tunescapeString( term.name )\n\t\t);\n\t}, [ searchResults ] );\n\n\tconst { editPost } = useDispatch( editorStore );\n\n\tif ( ! hasAssignAction ) {\n\t\treturn null;\n\t}\n\n\tfunction onUpdateTerms( newTermIds ) {\n\t\teditPost( { [ taxonomy.rest_base ]: newTermIds } );\n\t}\n\n\tfunction onChange( termNames ) {\n\t\tconst availableTerms = [\n\t\t\t...( terms ?? [] ),\n\t\t\t...( searchResults ?? [] ),\n\t\t];\n\t\tconst uniqueTerms = uniqBy( termNames, ( term ) => term.toLowerCase() );\n\t\tconst newTermNames = uniqueTerms.filter(\n\t\t\t( termName ) =>\n\t\t\t\t! find( availableTerms, ( term ) =>\n\t\t\t\t\tisSameTermName( term.name, termName )\n\t\t\t\t)\n\t\t);\n\n\t\t// Optimistically update term values.\n\t\t// The selector will always re-fetch terms later.\n\t\tsetValues( uniqueTerms );\n\n\t\tif ( newTermNames.length === 0 ) {\n\t\t\treturn onUpdateTerms(\n\t\t\t\ttermNamesToIds( uniqueTerms, availableTerms )\n\t\t\t);\n\t\t}\n\n\t\tif ( ! hasCreateAction ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst namespace = taxonomy?.rest_namespace ?? 'wp/v2';\n\t\tPromise.all(\n\t\t\tnewTermNames.map( ( termName ) =>\n\t\t\t\tfindOrCreateTerm( termName, taxonomy.rest_base, namespace )\n\t\t\t)\n\t\t).then( ( newTerms ) => {\n\t\t\tconst newAvailableTerms = availableTerms.concat( newTerms );\n\t\t\treturn onUpdateTerms(\n\t\t\t\ttermNamesToIds( uniqueTerms, newAvailableTerms )\n\t\t\t);\n\t\t} );\n\t}\n\n\tfunction appendTerm( newTerm ) {\n\t\tif ( termIds.includes( newTerm.id ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst newTermIds = [ ...termIds, newTerm.id ];\n\t\tconst termAddedMessage = sprintf(\n\t\t\t/* translators: %s: term name. */\n\t\t\t_x( '%s added', 'term' ),\n\t\t\tget(\n\t\t\t\ttaxonomy,\n\t\t\t\t[ 'labels', 'singular_name' ],\n\t\t\t\tslug === 'post_tag' ? __( 'Tag' ) : __( 'Term' )\n\t\t\t)\n\t\t);\n\n\t\tspeak( termAddedMessage, 'assertive' );\n\t\tonUpdateTerms( newTermIds );\n\t}\n\n\tconst newTermLabel = get(\n\t\ttaxonomy,\n\t\t[ 'labels', 'add_new_item' ],\n\t\tslug === 'post_tag' ? __( 'Add new tag' ) : __( 'Add new Term' )\n\t);\n\tconst singularName = get(\n\t\ttaxonomy,\n\t\t[ 'labels', 'singular_name' ],\n\t\tslug === 'post_tag' ? __( 'Tag' ) : __( 'Term' )\n\t);\n\tconst termAddedLabel = sprintf(\n\t\t/* translators: %s: term name. */\n\t\t_x( '%s added', 'term' ),\n\t\tsingularName\n\t);\n\tconst termRemovedLabel = sprintf(\n\t\t/* translators: %s: term name. */\n\t\t_x( '%s removed', 'term' ),\n\t\tsingularName\n\t);\n\tconst removeTermLabel = sprintf(\n\t\t/* translators: %s: term name. */\n\t\t_x( 'Remove %s', 'term' ),\n\t\tsingularName\n\t);\n\n\treturn (\n\t\t<>\n\t\t\t<FormTokenField\n\t\t\t\tvalue={ values }\n\t\t\t\tsuggestions={ suggestions }\n\t\t\t\tonChange={ onChange }\n\t\t\t\tonInputChange={ debouncedSearch }\n\t\t\t\tmaxSuggestions={ MAX_TERMS_SUGGESTIONS }\n\t\t\t\tlabel={ newTermLabel }\n\t\t\t\tmessages={ {\n\t\t\t\t\tadded: termAddedLabel,\n\t\t\t\t\tremoved: termRemovedLabel,\n\t\t\t\t\tremove: removeTermLabel,\n\t\t\t\t} }\n\t\t\t/>\n\t\t\t<MostUsedTerms taxonomy={ taxonomy } onSelect={ appendTerm } />\n\t\t</>\n\t);\n}\n\nexport default withFilters( 'editor.PostTaxonomyType' )( FlatTermSelector );\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/editor/src/components/post-taxonomies/hierarchical-term-selector.js"],"names":["find","get","some","unescape","unescapeString","without","__","_n","_x","sprintf","useMemo","useState","Button","CheckboxControl","TextControl","TreeSelect","withFilters","useDispatch","useSelect","useDebounce","store","coreStore","speak","buildTermsTree","editorStore","DEFAULT_QUERY","per_page","orderby","order","_fields","context","MIN_TERMS_COUNT_FOR_FILTER","EMPTY_ARRAY","sortBySelected","termsTree","terms","treeHasSelection","termTree","indexOf","id","undefined","children","map","filter","child","length","termOrChildIsSelected","termA","termB","termASelected","termBSelected","newTermTree","sort","findTerm","parent","name","term","parseInt","toLowerCase","getFilterMatcher","filterValue","matchTermsForFilter","originalTerm","HierarchicalTermSelector","slug","adding","setAdding","formName","setFormName","formParent","setFormParent","showForm","setShowForm","setFilterValue","filteredTermsTree","setFilteredTermsTree","debouncedSpeak","hasCreateAction","hasAssignAction","loading","availableTerms","taxonomy","select","getCurrentPost","getEditedPostAttribute","getTaxonomy","getEntityRecords","isResolving","_taxonomy","rest_base","editPost","saveEntityRecord","availableTermsTree","addTerm","onUpdateTerms","termIds","onChange","termId","hasTerm","includes","newTerms","onChangeFormName","value","onChangeFormParent","parentId","onToggleForm","onAddTerm","event","preventDefault","existingTerm","newTerm","termAddedMessage","setFilter","newFilteredTermsTree","getResultCount","count","i","resultCount","resultsFoundMessage","renderTerms","renderedTerms","labelWithFallback","labelProperty","fallbackIsCategory","fallbackIsNotCategory","newTermButtonLabel","newTermLabel","parentSelectLabel","noParentOption","newTermSubmitLabel","filterLabel","groupLabel","showFilter"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { find, get, some, unescape as unescapeString, without } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { __, _n, _x, sprintf } from '@wordpress/i18n';\nimport { useMemo, useState } from '@wordpress/element';\nimport {\n\tButton,\n\tCheckboxControl,\n\tTextControl,\n\tTreeSelect,\n\twithFilters,\n} from '@wordpress/components';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { useDebounce } from '@wordpress/compose';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { speak } from '@wordpress/a11y';\n\n/**\n * Internal dependencies\n */\nimport { buildTermsTree } from '../../utils/terms';\nimport { store as editorStore } from '../../store';\n\n/**\n * Module Constants\n */\nconst DEFAULT_QUERY = {\n\tper_page: -1,\n\torderby: 'name',\n\torder: 'asc',\n\t_fields: 'id,name,parent',\n\tcontext: 'view',\n};\n\nconst MIN_TERMS_COUNT_FOR_FILTER = 8;\n\nconst EMPTY_ARRAY = [];\n\n/**\n * Sort Terms by Selected.\n *\n * @param {Object[]} termsTree Array of terms in tree format.\n * @param {number[]} terms Selected terms.\n *\n * @return {Object[]} Sorted array of terms.\n */\nexport function sortBySelected( termsTree, terms ) {\n\tconst treeHasSelection = ( termTree ) => {\n\t\tif ( terms.indexOf( termTree.id ) !== -1 ) {\n\t\t\treturn true;\n\t\t}\n\t\tif ( undefined === termTree.children ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn (\n\t\t\ttermTree.children\n\t\t\t\t.map( treeHasSelection )\n\t\t\t\t.filter( ( child ) => child ).length > 0\n\t\t);\n\t};\n\tconst termOrChildIsSelected = ( termA, termB ) => {\n\t\tconst termASelected = treeHasSelection( termA );\n\t\tconst termBSelected = treeHasSelection( termB );\n\n\t\tif ( termASelected === termBSelected ) {\n\t\t\treturn 0;\n\t\t}\n\n\t\tif ( termASelected && ! termBSelected ) {\n\t\t\treturn -1;\n\t\t}\n\n\t\tif ( ! termASelected && termBSelected ) {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn 0;\n\t};\n\tconst newTermTree = [ ...termsTree ];\n\tnewTermTree.sort( termOrChildIsSelected );\n\treturn newTermTree;\n}\n\n/**\n * Find term by parent id or name.\n *\n * @param {Object[]} terms Array of Terms.\n * @param {number|string} parent id.\n * @param {string} name Term name.\n * @return {Object} Term object.\n */\nexport function findTerm( terms, parent, name ) {\n\treturn find( terms, ( term ) => {\n\t\treturn (\n\t\t\t( ( ! term.parent && ! parent ) ||\n\t\t\t\tparseInt( term.parent ) === parseInt( parent ) ) &&\n\t\t\tterm.name.toLowerCase() === name.toLowerCase()\n\t\t);\n\t} );\n}\n\n/**\n * Get filter matcher function.\n *\n * @param {string} filterValue Filter value.\n * @return {(function(Object): (Object|boolean))} Matcher function.\n */\nexport function getFilterMatcher( filterValue ) {\n\tconst matchTermsForFilter = ( originalTerm ) => {\n\t\tif ( '' === filterValue ) {\n\t\t\treturn originalTerm;\n\t\t}\n\n\t\t// Shallow clone, because we'll be filtering the term's children and\n\t\t// don't want to modify the original term.\n\t\tconst term = { ...originalTerm };\n\n\t\t// Map and filter the children, recursive so we deal with grandchildren\n\t\t// and any deeper levels.\n\t\tif ( term.children.length > 0 ) {\n\t\t\tterm.children = term.children\n\t\t\t\t.map( matchTermsForFilter )\n\t\t\t\t.filter( ( child ) => child );\n\t\t}\n\n\t\t// If the term's name contains the filterValue, or it has children\n\t\t// (i.e. some child matched at some point in the tree) then return it.\n\t\tif (\n\t\t\t-1 !==\n\t\t\t\tterm.name.toLowerCase().indexOf( filterValue.toLowerCase() ) ||\n\t\t\tterm.children.length > 0\n\t\t) {\n\t\t\treturn term;\n\t\t}\n\n\t\t// Otherwise, return false. After mapping, the list of terms will need\n\t\t// to have false values filtered out.\n\t\treturn false;\n\t};\n\treturn matchTermsForFilter;\n}\n\n/**\n * Hierarchical term selector.\n *\n * @param {Object} props Component props.\n * @param {string} props.slug Taxonomy slug.\n * @return {WPElement} Hierarchical term selector component.\n */\nfunction 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 } = select(\n\t\t\t\teditorStore\n\t\t\t);\n\t\t\tconst { getTaxonomy, getEntityRecords, isResolving } = select(\n\t\t\t\tcoreStore\n\t\t\t);\n\t\t\tconst _taxonomy = getTaxonomy( slug );\n\n\t\t\treturn {\n\t\t\t\thasCreateAction: _taxonomy\n\t\t\t\t\t? get(\n\t\t\t\t\t\t\tgetCurrentPost(),\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t'_links',\n\t\t\t\t\t\t\t\t'wp:action-create-' + _taxonomy.rest_base,\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tfalse\n\t\t\t\t\t )\n\t\t\t\t\t: false,\n\t\t\t\thasAssignAction: _taxonomy\n\t\t\t\t\t? get(\n\t\t\t\t\t\t\tgetCurrentPost(),\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t'_links',\n\t\t\t\t\t\t\t\t'wp:action-assign-' + _taxonomy.rest_base,\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tfalse\n\t\t\t\t\t )\n\t\t\t\t\t: false,\n\t\t\t\tterms: _taxonomy\n\t\t\t\t\t? getEditedPostAttribute( _taxonomy.rest_base )\n\t\t\t\t\t: EMPTY_ARRAY,\n\t\t\t\tloading: isResolving( 'getEntityRecords', [\n\t\t\t\t\t'taxonomy',\n\t\t\t\t\tslug,\n\t\t\t\t\tDEFAULT_QUERY,\n\t\t\t\t] ),\n\t\t\t\tavailableTerms:\n\t\t\t\t\tgetEntityRecords( 'taxonomy', slug, DEFAULT_QUERY ) ||\n\t\t\t\t\tEMPTY_ARRAY,\n\t\t\t\ttaxonomy: _taxonomy,\n\t\t\t};\n\t\t},\n\t\t[ slug ]\n\t);\n\n\tconst { editPost } = useDispatch( editorStore );\n\tconst { saveEntityRecord } = useDispatch( coreStore );\n\n\tconst availableTermsTree = useMemo(\n\t\t() => sortBySelected( buildTermsTree( availableTerms ), terms ),\n\t\t// Remove `terms` from the dependency list to avoid reordering every time\n\t\t// checking or unchecking a term.\n\t\t[ availableTerms ]\n\t);\n\n\tif ( ! hasAssignAction ) {\n\t\treturn null;\n\t}\n\n\t/**\n\t * Append new term.\n\t *\n\t * @param {Object} term Term object.\n\t * @return {Promise} A promise that resolves to save term object.\n\t */\n\tconst addTerm = ( term ) => {\n\t\treturn saveEntityRecord( 'taxonomy', slug, term );\n\t};\n\n\t/**\n\t * Update terms for post.\n\t *\n\t * @param {number[]} termIds Term ids.\n\t */\n\tconst onUpdateTerms = ( termIds ) => {\n\t\teditPost( { [ taxonomy.rest_base ]: termIds } );\n\t};\n\n\t/**\n\t * Handler for checking term.\n\t *\n\t * @param {number} termId\n\t */\n\tconst onChange = ( termId ) => {\n\t\tconst hasTerm = terms.includes( termId );\n\t\tconst newTerms = hasTerm\n\t\t\t? without( terms, 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 ( ! some( terms, ( term ) => term === existingTerm.id ) ) {\n\t\t\t\tonUpdateTerms( [ ...terms, existingTerm.id ] );\n\t\t\t}\n\n\t\t\tsetFormName( '' );\n\t\t\tsetFormParent( '' );\n\n\t\t\treturn;\n\t\t}\n\t\tsetAdding( true );\n\n\t\tconst newTerm = await addTerm( {\n\t\t\tname: formName,\n\t\t\tparent: formParent ? formParent : undefined,\n\t\t} );\n\n\t\tconst termAddedMessage = sprintf(\n\t\t\t/* translators: %s: taxonomy name */\n\t\t\t_x( '%s added', 'term' ),\n\t\t\tget(\n\t\t\t\ttaxonomy,\n\t\t\t\t[ 'labels', 'singular_name' ],\n\t\t\t\tslug === 'category' ? __( 'Category' ) : __( 'Term' )\n\t\t\t)\n\t\t);\n\t\tspeak( termAddedMessage, 'assertive' );\n\t\tsetAdding( false );\n\t\tsetFormName( '' );\n\t\tsetFormParent( '' );\n\t\tonUpdateTerms( [ ...terms, newTerm.id ] );\n\t};\n\n\tconst setFilter = ( value ) => {\n\t\tconst newFilteredTermsTree = availableTermsTree\n\t\t\t.map( getFilterMatcher( value ) )\n\t\t\t.filter( ( term ) => term );\n\t\tconst getResultCount = ( termsTree ) => {\n\t\t\tlet count = 0;\n\t\t\tfor ( let i = 0; i < termsTree.length; i++ ) {\n\t\t\t\tcount++;\n\t\t\t\tif ( undefined !== termsTree[ i ].children ) {\n\t\t\t\t\tcount += getResultCount( termsTree[ i ].children );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn count;\n\t\t};\n\n\t\tsetFilterValue( value );\n\t\tsetFilteredTermsTree( newFilteredTermsTree );\n\n\t\tconst resultCount = getResultCount( newFilteredTermsTree );\n\t\tconst resultsFoundMessage = sprintf(\n\t\t\t/* translators: %d: number of results */\n\t\t\t_n( '%d result found.', '%d results found.', resultCount ),\n\t\t\tresultCount\n\t\t);\n\n\t\tdebouncedSpeak( resultsFoundMessage, 'assertive' );\n\t};\n\n\tconst renderTerms = ( renderedTerms ) => {\n\t\treturn renderedTerms.map( ( term ) => {\n\t\t\treturn (\n\t\t\t\t<div\n\t\t\t\t\tkey={ term.id }\n\t\t\t\t\tclassName=\"editor-post-taxonomies__hierarchical-terms-choice\"\n\t\t\t\t>\n\t\t\t\t\t<CheckboxControl\n\t\t\t\t\t\tchecked={ terms.indexOf( term.id ) !== -1 }\n\t\t\t\t\t\tonChange={ () => {\n\t\t\t\t\t\t\tconst termId = parseInt( term.id, 10 );\n\t\t\t\t\t\t\tonChange( termId );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tlabel={ unescapeString( term.name ) }\n\t\t\t\t\t/>\n\t\t\t\t\t{ !! term.children.length && (\n\t\t\t\t\t\t<div className=\"editor-post-taxonomies__hierarchical-terms-subchoices\">\n\t\t\t\t\t\t\t{ renderTerms( term.children ) }\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) }\n\t\t\t\t</div>\n\t\t\t);\n\t\t} );\n\t};\n\n\tconst labelWithFallback = (\n\t\tlabelProperty,\n\t\tfallbackIsCategory,\n\t\tfallbackIsNotCategory\n\t) =>\n\t\tget(\n\t\t\ttaxonomy,\n\t\t\t[ 'labels', labelProperty ],\n\t\t\tslug === 'category' ? fallbackIsCategory : fallbackIsNotCategory\n\t\t);\n\tconst newTermButtonLabel = labelWithFallback(\n\t\t'add_new_item',\n\t\t__( 'Add new category' ),\n\t\t__( 'Add new term' )\n\t);\n\tconst newTermLabel = labelWithFallback(\n\t\t'new_item_name',\n\t\t__( 'Add new category' ),\n\t\t__( 'Add new term' )\n\t);\n\tconst parentSelectLabel = labelWithFallback(\n\t\t'parent_item',\n\t\t__( 'Parent Category' ),\n\t\t__( 'Parent Term' )\n\t);\n\tconst noParentOption = `— ${ parentSelectLabel } —`;\n\tconst newTermSubmitLabel = newTermButtonLabel;\n\tconst filterLabel = get(\n\t\ttaxonomy,\n\t\t[ 'labels', 'search_items' ],\n\t\t__( 'Search Terms' )\n\t);\n\tconst groupLabel = get( taxonomy, [ 'name' ], __( 'Terms' ) );\n\tconst showFilter = availableTerms.length >= MIN_TERMS_COUNT_FOR_FILTER;\n\n\treturn (\n\t\t<>\n\t\t\t{ showFilter && (\n\t\t\t\t<TextControl\n\t\t\t\t\tclassName=\"editor-post-taxonomies__hierarchical-terms-filter\"\n\t\t\t\t\tlabel={ filterLabel }\n\t\t\t\t\tvalue={ filterValue }\n\t\t\t\t\tonChange={ setFilter }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t<div\n\t\t\t\tclassName=\"editor-post-taxonomies__hierarchical-terms-list\"\n\t\t\t\ttabIndex=\"0\"\n\t\t\t\trole=\"group\"\n\t\t\t\taria-label={ groupLabel }\n\t\t\t>\n\t\t\t\t{ renderTerms(\n\t\t\t\t\t'' !== filterValue ? filteredTermsTree : availableTermsTree\n\t\t\t\t) }\n\t\t\t</div>\n\t\t\t{ ! loading && hasCreateAction && (\n\t\t\t\t<Button\n\t\t\t\t\tonClick={ onToggleForm }\n\t\t\t\t\tclassName=\"editor-post-taxonomies__hierarchical-terms-add\"\n\t\t\t\t\taria-expanded={ showForm }\n\t\t\t\t\tvariant=\"link\"\n\t\t\t\t>\n\t\t\t\t\t{ newTermButtonLabel }\n\t\t\t\t</Button>\n\t\t\t) }\n\t\t\t{ showForm && (\n\t\t\t\t<form onSubmit={ onAddTerm }>\n\t\t\t\t\t<TextControl\n\t\t\t\t\t\tclassName=\"editor-post-taxonomies__hierarchical-terms-input\"\n\t\t\t\t\t\tlabel={ newTermLabel }\n\t\t\t\t\t\tvalue={ formName }\n\t\t\t\t\t\tonChange={ onChangeFormName }\n\t\t\t\t\t\trequired\n\t\t\t\t\t/>\n\t\t\t\t\t{ !! availableTerms.length && (\n\t\t\t\t\t\t<TreeSelect\n\t\t\t\t\t\t\tlabel={ parentSelectLabel }\n\t\t\t\t\t\t\tnoOptionLabel={ noParentOption }\n\t\t\t\t\t\t\tonChange={ onChangeFormParent }\n\t\t\t\t\t\t\tselectedId={ formParent }\n\t\t\t\t\t\t\ttree={ availableTermsTree }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t<Button\n\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\tclassName=\"editor-post-taxonomies__hierarchical-terms-submit\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ newTermSubmitLabel }\n\t\t\t\t\t</Button>\n\t\t\t\t</form>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default withFilters( 'editor.PostTaxonomyType' )(\n\tHierarchicalTermSelector\n);\n"]}
|
|
1
|
+
{"version":3,"sources":["@wordpress/editor/src/components/post-taxonomies/hierarchical-term-selector.js"],"names":["find","get","some","unescape","unescapeString","without","__","_n","_x","sprintf","useMemo","useState","Button","CheckboxControl","TextControl","TreeSelect","withFilters","useDispatch","useSelect","useDebounce","store","coreStore","speak","buildTermsTree","editorStore","DEFAULT_QUERY","per_page","orderby","order","_fields","context","MIN_TERMS_COUNT_FOR_FILTER","EMPTY_ARRAY","sortBySelected","termsTree","terms","treeHasSelection","termTree","indexOf","id","undefined","children","map","filter","child","length","termOrChildIsSelected","termA","termB","termASelected","termBSelected","newTermTree","sort","findTerm","parent","name","term","parseInt","toLowerCase","getFilterMatcher","filterValue","matchTermsForFilter","originalTerm","HierarchicalTermSelector","slug","adding","setAdding","formName","setFormName","formParent","setFormParent","showForm","setShowForm","setFilterValue","filteredTermsTree","setFilteredTermsTree","debouncedSpeak","hasCreateAction","hasAssignAction","loading","availableTerms","taxonomy","select","getCurrentPost","getEditedPostAttribute","getTaxonomy","getEntityRecords","isResolving","_taxonomy","rest_base","editPost","saveEntityRecord","availableTermsTree","addTerm","onUpdateTerms","termIds","onChange","termId","hasTerm","includes","newTerms","onChangeFormName","value","onChangeFormParent","parentId","onToggleForm","onAddTerm","event","preventDefault","existingTerm","newTerm","termAddedMessage","setFilter","newFilteredTermsTree","getResultCount","count","i","resultCount","resultsFoundMessage","renderTerms","renderedTerms","labelWithFallback","labelProperty","fallbackIsCategory","fallbackIsNotCategory","newTermButtonLabel","newTermLabel","parentSelectLabel","noParentOption","newTermSubmitLabel","filterLabel","groupLabel","showFilter"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { find, get, some, unescape as unescapeString, without } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { __, _n, _x, sprintf } from '@wordpress/i18n';\nimport { useMemo, useState } from '@wordpress/element';\nimport {\n\tButton,\n\tCheckboxControl,\n\tTextControl,\n\tTreeSelect,\n\twithFilters,\n} from '@wordpress/components';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { useDebounce } from '@wordpress/compose';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { speak } from '@wordpress/a11y';\n\n/**\n * Internal dependencies\n */\nimport { buildTermsTree } from '../../utils/terms';\nimport { store as editorStore } from '../../store';\n\n/**\n * Module Constants\n */\nconst DEFAULT_QUERY = {\n\tper_page: -1,\n\torderby: 'name',\n\torder: 'asc',\n\t_fields: 'id,name,parent',\n\tcontext: 'view',\n};\n\nconst MIN_TERMS_COUNT_FOR_FILTER = 8;\n\nconst EMPTY_ARRAY = [];\n\n/**\n * Sort Terms by Selected.\n *\n * @param {Object[]} termsTree Array of terms in tree format.\n * @param {number[]} terms Selected terms.\n *\n * @return {Object[]} Sorted array of terms.\n */\nexport function sortBySelected( termsTree, terms ) {\n\tconst treeHasSelection = ( termTree ) => {\n\t\tif ( terms.indexOf( termTree.id ) !== -1 ) {\n\t\t\treturn true;\n\t\t}\n\t\tif ( undefined === termTree.children ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn (\n\t\t\ttermTree.children\n\t\t\t\t.map( treeHasSelection )\n\t\t\t\t.filter( ( child ) => child ).length > 0\n\t\t);\n\t};\n\tconst termOrChildIsSelected = ( termA, termB ) => {\n\t\tconst termASelected = treeHasSelection( termA );\n\t\tconst termBSelected = treeHasSelection( termB );\n\n\t\tif ( termASelected === termBSelected ) {\n\t\t\treturn 0;\n\t\t}\n\n\t\tif ( termASelected && ! termBSelected ) {\n\t\t\treturn -1;\n\t\t}\n\n\t\tif ( ! termASelected && termBSelected ) {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn 0;\n\t};\n\tconst newTermTree = [ ...termsTree ];\n\tnewTermTree.sort( termOrChildIsSelected );\n\treturn newTermTree;\n}\n\n/**\n * Find term by parent id or name.\n *\n * @param {Object[]} terms Array of Terms.\n * @param {number|string} parent id.\n * @param {string} name Term name.\n * @return {Object} Term object.\n */\nexport function findTerm( terms, parent, name ) {\n\treturn find( terms, ( term ) => {\n\t\treturn (\n\t\t\t( ( ! term.parent && ! parent ) ||\n\t\t\t\tparseInt( term.parent ) === parseInt( parent ) ) &&\n\t\t\tterm.name.toLowerCase() === name.toLowerCase()\n\t\t);\n\t} );\n}\n\n/**\n * Get filter matcher function.\n *\n * @param {string} filterValue Filter value.\n * @return {(function(Object): (Object|boolean))} Matcher function.\n */\nexport function getFilterMatcher( filterValue ) {\n\tconst matchTermsForFilter = ( originalTerm ) => {\n\t\tif ( '' === filterValue ) {\n\t\t\treturn originalTerm;\n\t\t}\n\n\t\t// Shallow clone, because we'll be filtering the term's children and\n\t\t// don't want to modify the original term.\n\t\tconst term = { ...originalTerm };\n\n\t\t// Map and filter the children, recursive so we deal with grandchildren\n\t\t// and any deeper levels.\n\t\tif ( term.children.length > 0 ) {\n\t\t\tterm.children = term.children\n\t\t\t\t.map( matchTermsForFilter )\n\t\t\t\t.filter( ( child ) => child );\n\t\t}\n\n\t\t// If the term's name contains the filterValue, or it has children\n\t\t// (i.e. some child matched at some point in the tree) then return it.\n\t\tif (\n\t\t\t-1 !==\n\t\t\t\tterm.name.toLowerCase().indexOf( filterValue.toLowerCase() ) ||\n\t\t\tterm.children.length > 0\n\t\t) {\n\t\t\treturn term;\n\t\t}\n\n\t\t// Otherwise, return false. After mapping, the list of terms will need\n\t\t// to have false values filtered out.\n\t\treturn false;\n\t};\n\treturn matchTermsForFilter;\n}\n\n/**\n * Hierarchical term selector.\n *\n * @param {Object} props Component props.\n * @param {string} props.slug Taxonomy slug.\n * @return {WPElement} Hierarchical term selector component.\n */\nfunction HierarchicalTermSelector( { slug } ) {\n\tconst [ adding, setAdding ] = useState( false );\n\tconst [ formName, setFormName ] = useState( '' );\n\t/**\n\t * @type {[number|'', Function]}\n\t */\n\tconst [ formParent, setFormParent ] = useState( '' );\n\tconst [ showForm, setShowForm ] = useState( false );\n\tconst [ filterValue, setFilterValue ] = useState( '' );\n\tconst [ filteredTermsTree, setFilteredTermsTree ] = useState( [] );\n\tconst debouncedSpeak = useDebounce( speak, 500 );\n\n\tconst {\n\t\thasCreateAction,\n\t\thasAssignAction,\n\t\tterms,\n\t\tloading,\n\t\tavailableTerms,\n\t\ttaxonomy,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getCurrentPost, getEditedPostAttribute } =\n\t\t\t\tselect( editorStore );\n\t\t\tconst { getTaxonomy, getEntityRecords, isResolving } =\n\t\t\t\tselect( coreStore );\n\t\t\tconst _taxonomy = getTaxonomy( slug );\n\n\t\t\treturn {\n\t\t\t\thasCreateAction: _taxonomy\n\t\t\t\t\t? get(\n\t\t\t\t\t\t\tgetCurrentPost(),\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t'_links',\n\t\t\t\t\t\t\t\t'wp:action-create-' + _taxonomy.rest_base,\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tfalse\n\t\t\t\t\t )\n\t\t\t\t\t: false,\n\t\t\t\thasAssignAction: _taxonomy\n\t\t\t\t\t? get(\n\t\t\t\t\t\t\tgetCurrentPost(),\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t'_links',\n\t\t\t\t\t\t\t\t'wp:action-assign-' + _taxonomy.rest_base,\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tfalse\n\t\t\t\t\t )\n\t\t\t\t\t: false,\n\t\t\t\tterms: _taxonomy\n\t\t\t\t\t? getEditedPostAttribute( _taxonomy.rest_base )\n\t\t\t\t\t: EMPTY_ARRAY,\n\t\t\t\tloading: isResolving( 'getEntityRecords', [\n\t\t\t\t\t'taxonomy',\n\t\t\t\t\tslug,\n\t\t\t\t\tDEFAULT_QUERY,\n\t\t\t\t] ),\n\t\t\t\tavailableTerms:\n\t\t\t\t\tgetEntityRecords( 'taxonomy', slug, DEFAULT_QUERY ) ||\n\t\t\t\t\tEMPTY_ARRAY,\n\t\t\t\ttaxonomy: _taxonomy,\n\t\t\t};\n\t\t},\n\t\t[ slug ]\n\t);\n\n\tconst { editPost } = useDispatch( editorStore );\n\tconst { saveEntityRecord } = useDispatch( coreStore );\n\n\tconst availableTermsTree = useMemo(\n\t\t() => sortBySelected( buildTermsTree( availableTerms ), terms ),\n\t\t// Remove `terms` from the dependency list to avoid reordering every time\n\t\t// checking or unchecking a term.\n\t\t[ availableTerms ]\n\t);\n\n\tif ( ! hasAssignAction ) {\n\t\treturn null;\n\t}\n\n\t/**\n\t * Append new term.\n\t *\n\t * @param {Object} term Term object.\n\t * @return {Promise} A promise that resolves to save term object.\n\t */\n\tconst addTerm = ( term ) => {\n\t\treturn saveEntityRecord( 'taxonomy', slug, term );\n\t};\n\n\t/**\n\t * Update terms for post.\n\t *\n\t * @param {number[]} termIds Term ids.\n\t */\n\tconst onUpdateTerms = ( termIds ) => {\n\t\teditPost( { [ taxonomy.rest_base ]: termIds } );\n\t};\n\n\t/**\n\t * Handler for checking term.\n\t *\n\t * @param {number} termId\n\t */\n\tconst onChange = ( termId ) => {\n\t\tconst hasTerm = terms.includes( termId );\n\t\tconst newTerms = hasTerm\n\t\t\t? without( terms, 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 ( ! some( terms, ( term ) => term === existingTerm.id ) ) {\n\t\t\t\tonUpdateTerms( [ ...terms, existingTerm.id ] );\n\t\t\t}\n\n\t\t\tsetFormName( '' );\n\t\t\tsetFormParent( '' );\n\n\t\t\treturn;\n\t\t}\n\t\tsetAdding( true );\n\n\t\tconst newTerm = await addTerm( {\n\t\t\tname: formName,\n\t\t\tparent: formParent ? formParent : undefined,\n\t\t} );\n\n\t\tconst termAddedMessage = sprintf(\n\t\t\t/* translators: %s: taxonomy name */\n\t\t\t_x( '%s added', 'term' ),\n\t\t\tget(\n\t\t\t\ttaxonomy,\n\t\t\t\t[ 'labels', 'singular_name' ],\n\t\t\t\tslug === 'category' ? __( 'Category' ) : __( 'Term' )\n\t\t\t)\n\t\t);\n\t\tspeak( termAddedMessage, 'assertive' );\n\t\tsetAdding( false );\n\t\tsetFormName( '' );\n\t\tsetFormParent( '' );\n\t\tonUpdateTerms( [ ...terms, newTerm.id ] );\n\t};\n\n\tconst setFilter = ( value ) => {\n\t\tconst newFilteredTermsTree = availableTermsTree\n\t\t\t.map( getFilterMatcher( value ) )\n\t\t\t.filter( ( term ) => term );\n\t\tconst getResultCount = ( termsTree ) => {\n\t\t\tlet count = 0;\n\t\t\tfor ( let i = 0; i < termsTree.length; i++ ) {\n\t\t\t\tcount++;\n\t\t\t\tif ( undefined !== termsTree[ i ].children ) {\n\t\t\t\t\tcount += getResultCount( termsTree[ i ].children );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn count;\n\t\t};\n\n\t\tsetFilterValue( value );\n\t\tsetFilteredTermsTree( newFilteredTermsTree );\n\n\t\tconst resultCount = getResultCount( newFilteredTermsTree );\n\t\tconst resultsFoundMessage = sprintf(\n\t\t\t/* translators: %d: number of results */\n\t\t\t_n( '%d result found.', '%d results found.', resultCount ),\n\t\t\tresultCount\n\t\t);\n\n\t\tdebouncedSpeak( resultsFoundMessage, 'assertive' );\n\t};\n\n\tconst renderTerms = ( renderedTerms ) => {\n\t\treturn renderedTerms.map( ( term ) => {\n\t\t\treturn (\n\t\t\t\t<div\n\t\t\t\t\tkey={ term.id }\n\t\t\t\t\tclassName=\"editor-post-taxonomies__hierarchical-terms-choice\"\n\t\t\t\t>\n\t\t\t\t\t<CheckboxControl\n\t\t\t\t\t\tchecked={ terms.indexOf( term.id ) !== -1 }\n\t\t\t\t\t\tonChange={ () => {\n\t\t\t\t\t\t\tconst termId = parseInt( term.id, 10 );\n\t\t\t\t\t\t\tonChange( termId );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tlabel={ unescapeString( term.name ) }\n\t\t\t\t\t/>\n\t\t\t\t\t{ !! term.children.length && (\n\t\t\t\t\t\t<div className=\"editor-post-taxonomies__hierarchical-terms-subchoices\">\n\t\t\t\t\t\t\t{ renderTerms( term.children ) }\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) }\n\t\t\t\t</div>\n\t\t\t);\n\t\t} );\n\t};\n\n\tconst labelWithFallback = (\n\t\tlabelProperty,\n\t\tfallbackIsCategory,\n\t\tfallbackIsNotCategory\n\t) =>\n\t\tget(\n\t\t\ttaxonomy,\n\t\t\t[ 'labels', labelProperty ],\n\t\t\tslug === 'category' ? fallbackIsCategory : fallbackIsNotCategory\n\t\t);\n\tconst newTermButtonLabel = labelWithFallback(\n\t\t'add_new_item',\n\t\t__( 'Add new category' ),\n\t\t__( 'Add new term' )\n\t);\n\tconst newTermLabel = labelWithFallback(\n\t\t'new_item_name',\n\t\t__( 'Add new category' ),\n\t\t__( 'Add new term' )\n\t);\n\tconst parentSelectLabel = labelWithFallback(\n\t\t'parent_item',\n\t\t__( 'Parent Category' ),\n\t\t__( 'Parent Term' )\n\t);\n\tconst noParentOption = `— ${ parentSelectLabel } —`;\n\tconst newTermSubmitLabel = newTermButtonLabel;\n\tconst filterLabel = get(\n\t\ttaxonomy,\n\t\t[ 'labels', 'search_items' ],\n\t\t__( 'Search Terms' )\n\t);\n\tconst groupLabel = get( taxonomy, [ 'name' ], __( 'Terms' ) );\n\tconst showFilter = availableTerms.length >= MIN_TERMS_COUNT_FOR_FILTER;\n\n\treturn (\n\t\t<>\n\t\t\t{ showFilter && (\n\t\t\t\t<TextControl\n\t\t\t\t\tclassName=\"editor-post-taxonomies__hierarchical-terms-filter\"\n\t\t\t\t\tlabel={ filterLabel }\n\t\t\t\t\tvalue={ filterValue }\n\t\t\t\t\tonChange={ setFilter }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t<div\n\t\t\t\tclassName=\"editor-post-taxonomies__hierarchical-terms-list\"\n\t\t\t\ttabIndex=\"0\"\n\t\t\t\trole=\"group\"\n\t\t\t\taria-label={ groupLabel }\n\t\t\t>\n\t\t\t\t{ renderTerms(\n\t\t\t\t\t'' !== filterValue ? filteredTermsTree : availableTermsTree\n\t\t\t\t) }\n\t\t\t</div>\n\t\t\t{ ! loading && hasCreateAction && (\n\t\t\t\t<Button\n\t\t\t\t\tonClick={ onToggleForm }\n\t\t\t\t\tclassName=\"editor-post-taxonomies__hierarchical-terms-add\"\n\t\t\t\t\taria-expanded={ showForm }\n\t\t\t\t\tvariant=\"link\"\n\t\t\t\t>\n\t\t\t\t\t{ newTermButtonLabel }\n\t\t\t\t</Button>\n\t\t\t) }\n\t\t\t{ showForm && (\n\t\t\t\t<form onSubmit={ onAddTerm }>\n\t\t\t\t\t<TextControl\n\t\t\t\t\t\tclassName=\"editor-post-taxonomies__hierarchical-terms-input\"\n\t\t\t\t\t\tlabel={ newTermLabel }\n\t\t\t\t\t\tvalue={ formName }\n\t\t\t\t\t\tonChange={ onChangeFormName }\n\t\t\t\t\t\trequired\n\t\t\t\t\t/>\n\t\t\t\t\t{ !! availableTerms.length && (\n\t\t\t\t\t\t<TreeSelect\n\t\t\t\t\t\t\tlabel={ parentSelectLabel }\n\t\t\t\t\t\t\tnoOptionLabel={ noParentOption }\n\t\t\t\t\t\t\tonChange={ onChangeFormParent }\n\t\t\t\t\t\t\tselectedId={ formParent }\n\t\t\t\t\t\t\ttree={ availableTermsTree }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t<Button\n\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\tclassName=\"editor-post-taxonomies__hierarchical-terms-submit\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ newTermSubmitLabel }\n\t\t\t\t\t</Button>\n\t\t\t\t</form>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default withFilters( 'editor.PostTaxonomyType' )(\n\tHierarchicalTermSelector\n);\n"]}
|