@wordpress/editor 14.47.0 → 14.48.1
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 +26 -0
- package/build/components/block-removal-warnings/index.cjs +0 -3
- package/build/components/block-removal-warnings/index.cjs.map +2 -2
- package/build/components/collab-sidebar/note-indicator-toolbar.cjs +49 -43
- package/build/components/collab-sidebar/note-indicator-toolbar.cjs.map +3 -3
- package/build/components/collaborators-overlay/use-block-highlighting.cjs +1 -8
- package/build/components/collaborators-overlay/use-block-highlighting.cjs.map +3 -3
- package/build/components/collaborators-overlay/use-render-cursors.cjs +1 -7
- package/build/components/collaborators-overlay/use-render-cursors.cjs.map +3 -3
- package/build/components/more-menu/view-more-menu-group.cjs +1 -2
- package/build/components/more-menu/view-more-menu-group.cjs.map +2 -2
- package/build/components/page-attributes/parent.cjs +1 -0
- package/build/components/page-attributes/parent.cjs.map +2 -2
- package/build/components/post-publish-button/index.cjs +114 -157
- package/build/components/post-publish-button/index.cjs.map +3 -3
- package/build/components/post-revisions-preview/block-diff.cjs +21 -9
- package/build/components/post-revisions-preview/block-diff.cjs.map +2 -2
- package/build/components/post-revisions-preview/preserve-client-ids.cjs +2 -2
- package/build/components/post-revisions-preview/preserve-client-ids.cjs.map +2 -2
- package/build/components/provider/index.cjs +2 -0
- package/build/components/provider/index.cjs.map +3 -3
- package/build/components/provider/use-block-editor-settings.cjs +1 -1
- package/build/components/provider/use-block-editor-settings.cjs.map +2 -2
- package/build/components/provider/use-network-reconnect.cjs +51 -0
- package/build/components/provider/use-network-reconnect.cjs.map +7 -0
- package/build/components/revision-fields-diff/index.cjs +2 -2
- package/build/components/revision-fields-diff/index.cjs.map +2 -2
- package/build/components/sidebar/index.cjs +1 -4
- package/build/components/sidebar/index.cjs.map +2 -2
- package/build/components/template-actions-panel/block-theme-content.cjs +7 -1
- package/build/components/template-actions-panel/block-theme-content.cjs.map +2 -2
- package/build/components/upload-progress-snackbar/index.cjs +161 -0
- package/build/components/upload-progress-snackbar/index.cjs.map +7 -0
- package/build/components/upload-progress-snackbar/tracker.cjs +90 -0
- package/build/components/upload-progress-snackbar/tracker.cjs.map +7 -0
- package/build/private-apis.cjs +2 -0
- package/build/private-apis.cjs.map +3 -3
- package/build/store/selectors.cjs +1 -2
- package/build/store/selectors.cjs.map +2 -2
- package/build/utils/media-upload/index.cjs +16 -0
- package/build/utils/media-upload/index.cjs.map +3 -3
- package/build-module/components/block-removal-warnings/index.mjs +0 -3
- package/build-module/components/block-removal-warnings/index.mjs.map +2 -2
- package/build-module/components/collab-sidebar/note-indicator-toolbar.mjs +53 -44
- package/build-module/components/collab-sidebar/note-indicator-toolbar.mjs.map +2 -2
- package/build-module/components/collaborators-overlay/use-block-highlighting.mjs +1 -8
- package/build-module/components/collaborators-overlay/use-block-highlighting.mjs.map +2 -2
- package/build-module/components/collaborators-overlay/use-render-cursors.mjs +1 -7
- package/build-module/components/collaborators-overlay/use-render-cursors.mjs.map +2 -2
- package/build-module/components/more-menu/view-more-menu-group.mjs +1 -2
- package/build-module/components/more-menu/view-more-menu-group.mjs.map +2 -2
- package/build-module/components/page-attributes/parent.mjs +1 -0
- package/build-module/components/page-attributes/parent.mjs.map +2 -2
- package/build-module/components/post-publish-button/index.mjs +116 -159
- package/build-module/components/post-publish-button/index.mjs.map +2 -2
- package/build-module/components/post-revisions-preview/block-diff.mjs +20 -8
- package/build-module/components/post-revisions-preview/block-diff.mjs.map +2 -2
- package/build-module/components/post-revisions-preview/preserve-client-ids.mjs +1 -1
- package/build-module/components/post-revisions-preview/preserve-client-ids.mjs.map +1 -1
- package/build-module/components/provider/index.mjs +2 -0
- package/build-module/components/provider/index.mjs.map +2 -2
- package/build-module/components/provider/use-block-editor-settings.mjs +1 -1
- package/build-module/components/provider/use-block-editor-settings.mjs.map +2 -2
- package/build-module/components/provider/use-network-reconnect.mjs +30 -0
- package/build-module/components/provider/use-network-reconnect.mjs.map +7 -0
- package/build-module/components/revision-fields-diff/index.mjs +2 -2
- package/build-module/components/revision-fields-diff/index.mjs.map +2 -2
- package/build-module/components/sidebar/index.mjs +2 -11
- package/build-module/components/sidebar/index.mjs.map +2 -2
- package/build-module/components/template-actions-panel/block-theme-content.mjs +7 -1
- package/build-module/components/template-actions-panel/block-theme-content.mjs.map +2 -2
- package/build-module/components/upload-progress-snackbar/index.mjs +135 -0
- package/build-module/components/upload-progress-snackbar/index.mjs.map +7 -0
- package/build-module/components/upload-progress-snackbar/tracker.mjs +61 -0
- package/build-module/components/upload-progress-snackbar/tracker.mjs.map +7 -0
- package/build-module/private-apis.mjs +2 -0
- package/build-module/private-apis.mjs.map +2 -2
- package/build-module/store/selectors.mjs +1 -2
- package/build-module/store/selectors.mjs.map +2 -2
- package/build-module/utils/media-upload/index.mjs +19 -0
- package/build-module/utils/media-upload/index.mjs.map +2 -2
- package/build-style/style-rtl.css +479 -84
- package/build-style/style.css +479 -84
- package/build-types/components/block-removal-warnings/index.d.ts.map +1 -1
- package/build-types/components/collab-sidebar/add-comment.d.ts +6 -0
- package/build-types/components/collab-sidebar/add-comment.d.ts.map +1 -0
- package/build-types/components/collab-sidebar/comment-author-info.d.ts +8 -0
- package/build-types/components/collab-sidebar/comment-author-info.d.ts.map +1 -0
- package/build-types/components/collab-sidebar/comment-form.d.ts +9 -0
- package/build-types/components/collab-sidebar/comment-form.d.ts.map +1 -0
- package/build-types/components/collab-sidebar/comment-indicator-toolbar.d.ts +6 -0
- package/build-types/components/collab-sidebar/comment-indicator-toolbar.d.ts.map +1 -0
- package/build-types/components/collab-sidebar/comment-menu-item.d.ts +6 -0
- package/build-types/components/collab-sidebar/comment-menu-item.d.ts.map +1 -0
- package/build-types/components/collab-sidebar/comments.d.ts +10 -0
- package/build-types/components/collab-sidebar/comments.d.ts.map +1 -0
- package/build-types/components/collab-sidebar/note-indicator-toolbar.d.ts.map +1 -1
- package/build-types/components/collaborators-overlay/use-block-highlighting.d.ts +0 -3
- package/build-types/components/collaborators-overlay/use-block-highlighting.d.ts.map +1 -1
- package/build-types/components/collaborators-overlay/use-render-cursors.d.ts.map +1 -1
- package/build-types/components/document-bar/index.d.ts +2 -2
- package/build-types/components/document-bar/index.d.ts.map +1 -1
- package/build-types/components/global-styles-provider/index.d.ts +16 -0
- package/build-types/components/global-styles-provider/index.d.ts.map +1 -0
- package/build-types/components/media/index.d.ts +3 -0
- package/build-types/components/media/index.d.ts.map +1 -0
- package/build-types/components/media/metadata-panel.d.ts +12 -0
- package/build-types/components/media/metadata-panel.d.ts.map +1 -0
- package/build-types/components/media/preview.d.ts +9 -0
- package/build-types/components/media/preview.d.ts.map +1 -0
- package/build-types/components/more-menu/view-more-menu-group.d.ts.map +1 -1
- package/build-types/components/page-attributes/parent.d.ts.map +1 -1
- package/build-types/components/post-locked-modal/index.d.ts +6 -1
- package/build-types/components/post-publish-button/index.d.ts +9 -9
- package/build-types/components/post-publish-button/index.d.ts.map +1 -1
- package/build-types/components/post-revisions-preview/block-diff.d.ts +3 -0
- package/build-types/components/post-revisions-preview/block-diff.d.ts.map +1 -1
- package/build-types/components/post-taxonomies/flat-term-selector.d.ts +6 -1
- package/build-types/components/post-taxonomies/hierarchical-term-selector.d.ts +6 -1
- package/build-types/components/post-text-editor/index.d.ts +1 -1
- package/build-types/components/post-text-editor/index.d.ts.map +1 -1
- package/build-types/components/post-text-editor/utils.d.ts +29 -0
- package/build-types/components/post-text-editor/utils.d.ts.map +1 -0
- package/build-types/components/provider/index.d.ts.map +1 -1
- package/build-types/components/provider/use-network-reconnect.d.ts +8 -0
- package/build-types/components/provider/use-network-reconnect.d.ts.map +1 -0
- package/build-types/components/revision-fields-diff/index.d.ts +3 -0
- package/build-types/components/revision-fields-diff/index.d.ts.map +1 -1
- package/build-types/components/sidebar/index.d.ts.map +1 -1
- package/build-types/components/template-actions-panel/block-theme-content.d.ts.map +1 -1
- package/build-types/components/upload-progress-snackbar/index.d.ts +19 -0
- package/build-types/components/upload-progress-snackbar/index.d.ts.map +1 -0
- package/build-types/components/upload-progress-snackbar/stories/index.story.d.ts +28 -0
- package/build-types/components/upload-progress-snackbar/stories/index.story.d.ts.map +1 -0
- package/build-types/components/upload-progress-snackbar/tracker.d.ts +41 -0
- package/build-types/components/upload-progress-snackbar/tracker.d.ts.map +1 -0
- package/build-types/private-apis.d.ts.map +1 -1
- package/build-types/store/selectors.d.ts.map +1 -1
- package/build-types/utils/get-template-part-icon.d.ts.map +1 -1
- package/build-types/utils/media-upload/index.d.ts.map +1 -1
- package/package.json +55 -52
- package/src/components/README.md +1 -1
- package/src/components/block-removal-warnings/index.js +0 -7
- package/src/components/collab-sidebar/note-indicator-toolbar.js +73 -60
- package/src/components/collaborators-overlay/use-block-highlighting.ts +0 -9
- package/src/components/collaborators-overlay/use-render-cursors.ts +0 -8
- package/src/components/collaborators-presence/avatar/test/index.tsx +8 -3
- package/src/components/more-menu/view-more-menu-group.js +1 -2
- package/src/components/page-attributes/parent.js +1 -0
- package/src/components/post-publish-button/index.js +143 -192
- package/src/components/post-publish-button/test/index.js +137 -114
- package/src/components/post-revisions-preview/block-diff.js +63 -19
- package/src/components/post-revisions-preview/preserve-client-ids.js +1 -1
- package/src/components/post-revisions-preview/test/block-diff.js +109 -6
- package/src/components/provider/index.js +4 -0
- package/src/components/provider/test/use-network-reconnect.js +137 -0
- package/src/components/provider/use-block-editor-settings.js +2 -2
- package/src/components/provider/use-network-reconnect.js +44 -0
- package/src/components/revision-fields-diff/index.js +7 -2
- package/src/components/sidebar/index.js +2 -11
- package/src/components/template-actions-panel/block-theme-content.js +10 -1
- package/src/components/upload-progress-snackbar/README.md +26 -0
- package/src/components/upload-progress-snackbar/index.js +216 -0
- package/src/components/upload-progress-snackbar/stories/index.story.tsx +85 -0
- package/src/components/upload-progress-snackbar/style.scss +30 -0
- package/src/components/upload-progress-snackbar/test/index.js +199 -0
- package/src/components/upload-progress-snackbar/tracker.js +105 -0
- package/src/private-apis.js +2 -0
- package/src/store/selectors.js +1 -3
- package/src/style.scss +1 -0
- package/src/utils/media-upload/index.js +27 -0
- package/src/components/commands/index.native.js +0 -2
- package/src/components/deprecated.native.js +0 -47
- package/src/components/editor-help/add-blocks.native.js +0 -40
- package/src/components/editor-help/customize-blocks.native.js +0 -40
- package/src/components/editor-help/help-detail-navigation-screen.native.js +0 -67
- package/src/components/editor-help/help-get-support-button.native.js +0 -38
- package/src/components/editor-help/help-section-title.native.js +0 -29
- package/src/components/editor-help/help-topic-row.native.js +0 -33
- package/src/components/editor-help/icon-move-blocks.native.js +0 -10
- package/src/components/editor-help/index.native.js +0 -208
- package/src/components/editor-help/intro-to-blocks.native.js +0 -91
- package/src/components/editor-help/move-blocks.native.js +0 -55
- package/src/components/editor-help/remove-blocks.native.js +0 -35
- package/src/components/editor-help/style.android.scss +0 -6
- package/src/components/editor-help/style.ios.scss +0 -6
- package/src/components/editor-help/test/index.native.js +0 -81
- package/src/components/editor-help/view-sections.native.js +0 -79
- package/src/components/error-boundary/index.native.js +0 -192
- package/src/components/error-boundary/style.native.scss +0 -116
- package/src/components/index.native.js +0 -15
- package/src/components/offline-status/index.native.js +0 -99
- package/src/components/offline-status/style.native.scss +0 -28
- package/src/components/offline-status/test/index.native.js +0 -108
- package/src/components/post-title/index.native.js +0 -282
- package/src/components/post-title/style.native.scss +0 -13
- package/src/components/post-title/test/__snapshots__/index.native.js.snap +0 -25
- package/src/components/post-title/test/index.native.js +0 -78
- package/src/components/provider/index.native.js +0 -497
- package/src/components/provider/use-block-editor-settings.native.js +0 -48
- package/src/components/template-part-menu-items/index.native.js +0 -3
- package/src/hooks/index.native.js +0 -0
- package/src/index.native.js +0 -16
- package/src/private-apis.native.js +0 -33
- package/src/store/actions.native.js +0 -27
- package/src/store/reducer.native.js +0 -94
- package/src/store/selectors.native.js +0 -57
- package/src/store/test/actions.native.js +0 -16
- package/src/store/test/reducer.native.js +0 -36
- package/src/store/test/selectors.native.js +0 -28
- package/src/utils/index.native.js +0 -6
- package/src/utils/media-sideload/index.native.js +0 -1
- package/src/utils/media-upload/index.native.js +0 -1
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// packages/editor/src/components/upload-progress-snackbar/index.js
|
|
21
|
+
var upload_progress_snackbar_exports = {};
|
|
22
|
+
__export(upload_progress_snackbar_exports, {
|
|
23
|
+
UPLOAD_DONE: () => UPLOAD_DONE,
|
|
24
|
+
UPLOAD_SPINNER: () => UPLOAD_SPINNER,
|
|
25
|
+
default: () => UploadProgressSnackbar
|
|
26
|
+
});
|
|
27
|
+
module.exports = __toCommonJS(upload_progress_snackbar_exports);
|
|
28
|
+
var import_data = require("@wordpress/data");
|
|
29
|
+
var import_element = require("@wordpress/element");
|
|
30
|
+
var import_i18n = require("@wordpress/i18n");
|
|
31
|
+
var import_a11y = require("@wordpress/a11y");
|
|
32
|
+
var import_upload_media = require("@wordpress/upload-media");
|
|
33
|
+
var import_notices = require("@wordpress/notices");
|
|
34
|
+
var import_components = require("@wordpress/components");
|
|
35
|
+
var import_icons = require("@wordpress/icons");
|
|
36
|
+
var import_tracker = require("./tracker.cjs");
|
|
37
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
38
|
+
var NOTICE_ID = "upload-progress";
|
|
39
|
+
var COMPLETION_DISPLAY_MS = 3e3;
|
|
40
|
+
var MAX_FILENAME_LENGTH = 40;
|
|
41
|
+
function truncateFilename(filename) {
|
|
42
|
+
if (filename.length <= MAX_FILENAME_LENGTH) {
|
|
43
|
+
return filename;
|
|
44
|
+
}
|
|
45
|
+
const ellipsis = "\u2026";
|
|
46
|
+
const visible = MAX_FILENAME_LENGTH - ellipsis.length;
|
|
47
|
+
const front = Math.ceil(visible / 2);
|
|
48
|
+
const back = Math.floor(visible / 2);
|
|
49
|
+
return filename.slice(0, front) + ellipsis + filename.slice(filename.length - back);
|
|
50
|
+
}
|
|
51
|
+
var UPLOAD_SPINNER = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
52
|
+
"span",
|
|
53
|
+
{
|
|
54
|
+
className: "editor-upload-progress-snackbar__spinner",
|
|
55
|
+
"aria-hidden": "true",
|
|
56
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components.Spinner, {})
|
|
57
|
+
}
|
|
58
|
+
);
|
|
59
|
+
var UPLOAD_DONE = /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "editor-upload-progress-snackbar__check", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components.Icon, { icon: import_icons.check }) });
|
|
60
|
+
function UploadProgressSnackbar() {
|
|
61
|
+
const items = (0, import_data.useSelect)(
|
|
62
|
+
(select) => select(import_upload_media.store).getItems(),
|
|
63
|
+
[]
|
|
64
|
+
);
|
|
65
|
+
const tracker = (0, import_tracker.useTracker)();
|
|
66
|
+
const csmOriginals = (0, import_element.useMemo)(
|
|
67
|
+
() => items.filter((item) => !item.parentId),
|
|
68
|
+
[items]
|
|
69
|
+
);
|
|
70
|
+
const csmRemaining = csmOriginals.length;
|
|
71
|
+
const trackedRemaining = tracker ? tracker.total - tracker.completed : 0;
|
|
72
|
+
const remaining = csmRemaining + trackedRemaining;
|
|
73
|
+
const [peak, setPeak] = (0, import_element.useState)(0);
|
|
74
|
+
const sessionTotal = csmRemaining + (tracker ? tracker.total : 0);
|
|
75
|
+
if (sessionTotal > peak) {
|
|
76
|
+
setPeak(sessionTotal);
|
|
77
|
+
}
|
|
78
|
+
const { createNotice, removeNotice } = (0, import_data.useDispatch)(import_notices.store);
|
|
79
|
+
const dismissedRef = (0, import_element.useRef)(false);
|
|
80
|
+
const wasUploadingRef = (0, import_element.useRef)(false);
|
|
81
|
+
const completionTimeoutRef = (0, import_element.useRef)(null);
|
|
82
|
+
(0, import_element.useEffect)(() => {
|
|
83
|
+
return () => {
|
|
84
|
+
if (completionTimeoutRef.current) {
|
|
85
|
+
clearTimeout(completionTimeoutRef.current);
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
}, []);
|
|
89
|
+
(0, import_element.useEffect)(() => {
|
|
90
|
+
const isUploading = remaining > 0;
|
|
91
|
+
if (isUploading && !wasUploadingRef.current) {
|
|
92
|
+
dismissedRef.current = false;
|
|
93
|
+
(0, import_a11y.speak)((0, import_i18n.__)("Media upload started"), "polite");
|
|
94
|
+
if (completionTimeoutRef.current) {
|
|
95
|
+
clearTimeout(completionTimeoutRef.current);
|
|
96
|
+
completionTimeoutRef.current = null;
|
|
97
|
+
setPeak(0);
|
|
98
|
+
}
|
|
99
|
+
} else if (!isUploading && wasUploadingRef.current) {
|
|
100
|
+
(0, import_a11y.speak)((0, import_i18n.__)("Media upload complete"), "polite");
|
|
101
|
+
if (!dismissedRef.current) {
|
|
102
|
+
createNotice("info", (0, import_i18n.__)("Upload complete"), {
|
|
103
|
+
id: NOTICE_ID,
|
|
104
|
+
type: "snackbar",
|
|
105
|
+
isDismissible: false,
|
|
106
|
+
explicitDismiss: false,
|
|
107
|
+
speak: false,
|
|
108
|
+
icon: UPLOAD_DONE,
|
|
109
|
+
onDismiss: () => {
|
|
110
|
+
dismissedRef.current = true;
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
completionTimeoutRef.current = setTimeout(() => {
|
|
114
|
+
removeNotice(NOTICE_ID);
|
|
115
|
+
completionTimeoutRef.current = null;
|
|
116
|
+
setPeak(0);
|
|
117
|
+
}, COMPLETION_DISPLAY_MS);
|
|
118
|
+
} else {
|
|
119
|
+
setPeak(0);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
wasUploadingRef.current = isUploading;
|
|
123
|
+
if (!isUploading || dismissedRef.current) {
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
const total = peak;
|
|
127
|
+
const current = total - remaining + 1;
|
|
128
|
+
const filename = truncateFilename(
|
|
129
|
+
csmOriginals[0]?.sourceFile?.name || tracker?.pending[0] || (0, import_i18n.__)("Uploading")
|
|
130
|
+
);
|
|
131
|
+
const content = total === 1 ? (0, import_i18n.sprintf)(
|
|
132
|
+
/* translators: %s: filename. */
|
|
133
|
+
(0, import_i18n.__)("Uploading \u2014 %s"),
|
|
134
|
+
filename
|
|
135
|
+
) : (0, import_i18n.sprintf)(
|
|
136
|
+
/* translators: 1: current upload number, 2: total uploads, 3: filename. */
|
|
137
|
+
(0, import_i18n.__)("Uploading %1$d of %2$d \u2014 %3$s"),
|
|
138
|
+
current,
|
|
139
|
+
total,
|
|
140
|
+
filename
|
|
141
|
+
);
|
|
142
|
+
createNotice("info", content, {
|
|
143
|
+
id: NOTICE_ID,
|
|
144
|
+
type: "snackbar",
|
|
145
|
+
isDismissible: false,
|
|
146
|
+
explicitDismiss: true,
|
|
147
|
+
speak: false,
|
|
148
|
+
icon: UPLOAD_SPINNER,
|
|
149
|
+
onDismiss: () => {
|
|
150
|
+
dismissedRef.current = true;
|
|
151
|
+
}
|
|
152
|
+
});
|
|
153
|
+
}, [remaining, peak, csmOriginals, tracker, createNotice, removeNotice]);
|
|
154
|
+
return null;
|
|
155
|
+
}
|
|
156
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
157
|
+
0 && (module.exports = {
|
|
158
|
+
UPLOAD_DONE,
|
|
159
|
+
UPLOAD_SPINNER
|
|
160
|
+
});
|
|
161
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/components/upload-progress-snackbar/index.js"],
|
|
4
|
+
"sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useEffect, useMemo, useRef, useState } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { speak } from '@wordpress/a11y';\nimport { store as uploadStore } from '@wordpress/upload-media';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { Icon as WCIcon, Spinner } from '@wordpress/components';\nimport { check } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { useTracker } from './tracker';\n\nconst NOTICE_ID = 'upload-progress';\n\n// How long the completion checkmark is shown before the snackbar dismisses.\nconst COMPLETION_DISPLAY_MS = 3000;\n\n// Longest filename shown before it is middle-truncated. Long names (e.g. the\n// UUID-style names some sources produce) would otherwise stretch the snackbar.\nconst MAX_FILENAME_LENGTH = 40;\n\n/**\n * Middle-truncates a filename that exceeds `MAX_FILENAME_LENGTH`, keeping the\n * start and the end (so the file extension stays visible).\n *\n * @param {string} filename The filename to truncate.\n * @return {string} The original or middle-truncated filename.\n */\nfunction truncateFilename( filename ) {\n\tif ( filename.length <= MAX_FILENAME_LENGTH ) {\n\t\treturn filename;\n\t}\n\tconst ellipsis = '\u2026';\n\tconst visible = MAX_FILENAME_LENGTH - ellipsis.length;\n\tconst front = Math.ceil( visible / 2 );\n\tconst back = Math.floor( visible / 2 );\n\treturn (\n\t\tfilename.slice( 0, front ) +\n\t\tellipsis +\n\t\tfilename.slice( filename.length - back )\n\t);\n}\n\n// Exported so the Storybook story can render the exact icon markup the notice\n// uses, keeping the visual review faithful to what ships.\nexport const UPLOAD_SPINNER = (\n\t<span\n\t\tclassName=\"editor-upload-progress-snackbar__spinner\"\n\t\taria-hidden=\"true\"\n\t>\n\t\t<Spinner />\n\t</span>\n);\n\nexport const UPLOAD_DONE = (\n\t<span className=\"editor-upload-progress-snackbar__check\" aria-hidden=\"true\">\n\t\t<WCIcon icon={ check } />\n\t</span>\n);\n\n/**\n * Manages a snackbar notice that shows media upload progress while uploads are\n * in progress. It creates/updates a notice via the notices store so that it\n * positions and stacks with every other snackbar in the editor.\n *\n * Reads from two sources to cover both upload paths:\n * - `@wordpress/upload-media` store (client-side media processing path).\n * - An editor-local tracker populated by the traditional `mediaUpload`\n * wrapper (non-CSM path \u2014 e.g. Safari, or when a filter disables CSM).\n *\n * Only counts original user-uploaded files (items without a `parentId`),\n * ignoring generated subsizes/thumbnails.\n *\n * @return {null} This component renders nothing \u2014 it only manages a notice.\n */\nexport default function UploadProgressSnackbar() {\n\tconst items = useSelect(\n\t\t( select ) => select( uploadStore ).getItems(),\n\t\t[]\n\t);\n\tconst tracker = useTracker();\n\n\t// CSM path: originals in the upload-media queue (subsizes excluded). Memoized\n\t// so its reference is stable across renders where `items` is unchanged, since\n\t// it's a dependency of the effect below.\n\tconst csmOriginals = useMemo(\n\t\t() => items.filter( ( item ) => ! item.parentId ),\n\t\t[ items ]\n\t);\n\tconst csmRemaining = csmOriginals.length;\n\n\t// Non-CSM path: files tracked by the editor's mediaUpload wrapper.\n\tconst trackedRemaining = tracker ? tracker.total - tracker.completed : 0;\n\n\tconst remaining = csmRemaining + trackedRemaining;\n\n\t// Track peak total across sources during a session. The CSM queue removes\n\t// items on completion, and the tracker tops out at its recorded total, so\n\t// `total` has to be tracked as the high-water mark.\n\tconst [ peak, setPeak ] = useState( 0 );\n\tconst sessionTotal = csmRemaining + ( tracker ? tracker.total : 0 );\n\tif ( sessionTotal > peak ) {\n\t\tsetPeak( sessionTotal );\n\t}\n\n\tconst { createNotice, removeNotice } = useDispatch( noticesStore );\n\n\t// Track whether the user has dismissed the notice. If so, don't re-create\n\t// it until the current batch finishes and a new one starts.\n\tconst dismissedRef = useRef( false );\n\tconst wasUploadingRef = useRef( false );\n\n\t// Timeout that removes the completion-state (checkmark) notice after a\n\t// brief display. Held so a new upload can cancel it.\n\tconst completionTimeoutRef = useRef( null );\n\tuseEffect( () => {\n\t\treturn () => {\n\t\t\tif ( completionTimeoutRef.current ) {\n\t\t\t\tclearTimeout( completionTimeoutRef.current );\n\t\t\t}\n\t\t};\n\t}, [] );\n\n\tuseEffect( () => {\n\t\tconst isUploading = remaining > 0;\n\n\t\tif ( isUploading && ! wasUploadingRef.current ) {\n\t\t\tdismissedRef.current = false;\n\t\t\tspeak( __( 'Media upload started' ), 'polite' );\n\t\t\t// A new batch started during the completion display: cancel the\n\t\t\t// pending dismissal so the snackbar transitions straight back\n\t\t\t// into the uploading state, and reset the peak so the new batch\n\t\t\t// counts from `1 of N` rather than resuming the previous total.\n\t\t\tif ( completionTimeoutRef.current ) {\n\t\t\t\tclearTimeout( completionTimeoutRef.current );\n\t\t\t\tcompletionTimeoutRef.current = null;\n\t\t\t\tsetPeak( 0 );\n\t\t\t}\n\t\t} else if ( ! isUploading && wasUploadingRef.current ) {\n\t\t\tspeak( __( 'Media upload complete' ), 'polite' );\n\n\t\t\tif ( ! dismissedRef.current ) {\n\t\t\t\tcreateNotice( 'info', __( 'Upload complete' ), {\n\t\t\t\t\tid: NOTICE_ID,\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\tisDismissible: false,\n\t\t\t\t\texplicitDismiss: false,\n\t\t\t\t\tspeak: false,\n\t\t\t\t\ticon: UPLOAD_DONE,\n\t\t\t\t\tonDismiss: () => {\n\t\t\t\t\t\tdismissedRef.current = true;\n\t\t\t\t\t},\n\t\t\t\t} );\n\n\t\t\t\tcompletionTimeoutRef.current = setTimeout( () => {\n\t\t\t\t\tremoveNotice( NOTICE_ID );\n\t\t\t\t\tcompletionTimeoutRef.current = null;\n\t\t\t\t\tsetPeak( 0 );\n\t\t\t\t}, COMPLETION_DISPLAY_MS );\n\t\t\t} else {\n\t\t\t\tsetPeak( 0 );\n\t\t\t}\n\t\t}\n\n\t\twasUploadingRef.current = isUploading;\n\n\t\tif ( ! isUploading || dismissedRef.current ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst total = peak;\n\t\tconst current = total - remaining + 1;\n\n\t\t// Prefer the CSM queue's first original filename, then fall back to\n\t\t// the tracker's first pending filename.\n\t\tconst filename = truncateFilename(\n\t\t\tcsmOriginals[ 0 ]?.sourceFile?.name ||\n\t\t\t\ttracker?.pending[ 0 ] ||\n\t\t\t\t__( 'Uploading' )\n\t\t);\n\n\t\tconst content =\n\t\t\ttotal === 1\n\t\t\t\t? sprintf(\n\t\t\t\t\t\t/* translators: %s: filename. */\n\t\t\t\t\t\t__( 'Uploading \u2014 %s' ),\n\t\t\t\t\t\tfilename\n\t\t\t\t )\n\t\t\t\t: sprintf(\n\t\t\t\t\t\t/* translators: 1: current upload number, 2: total uploads, 3: filename. */\n\t\t\t\t\t\t__( 'Uploading %1$d of %2$d \u2014 %3$s' ),\n\t\t\t\t\t\tcurrent,\n\t\t\t\t\t\ttotal,\n\t\t\t\t\t\tfilename\n\t\t\t\t );\n\n\t\tcreateNotice( 'info', content, {\n\t\t\tid: NOTICE_ID,\n\t\t\ttype: 'snackbar',\n\t\t\tisDismissible: false,\n\t\t\texplicitDismiss: true,\n\t\t\tspeak: false,\n\t\t\ticon: UPLOAD_SPINNER,\n\t\t\tonDismiss: () => {\n\t\t\t\tdismissedRef.current = true;\n\t\t\t},\n\t\t} );\n\t}, [ remaining, peak, csmOriginals, tracker, createNotice, removeNotice ] );\n\n\treturn null;\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["WCIcon", "uploadStore", "noticesStore"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// packages/editor/src/components/upload-progress-snackbar/tracker.js
|
|
21
|
+
var tracker_exports = {};
|
|
22
|
+
__export(tracker_exports, {
|
|
23
|
+
addFiles: () => addFiles,
|
|
24
|
+
advance: () => advance,
|
|
25
|
+
getState: () => getState,
|
|
26
|
+
reset: () => reset,
|
|
27
|
+
useTracker: () => useTracker
|
|
28
|
+
});
|
|
29
|
+
module.exports = __toCommonJS(tracker_exports);
|
|
30
|
+
var import_element = require("@wordpress/element");
|
|
31
|
+
var state = null;
|
|
32
|
+
var listeners = /* @__PURE__ */ new Set();
|
|
33
|
+
function notify() {
|
|
34
|
+
listeners.forEach((listener) => listener());
|
|
35
|
+
}
|
|
36
|
+
function addFiles(filenames) {
|
|
37
|
+
if (!filenames.length) {
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
if (!state) {
|
|
41
|
+
state = { total: 0, completed: 0, pending: [] };
|
|
42
|
+
}
|
|
43
|
+
state = {
|
|
44
|
+
total: state.total + filenames.length,
|
|
45
|
+
completed: state.completed,
|
|
46
|
+
pending: [...state.pending, ...filenames]
|
|
47
|
+
};
|
|
48
|
+
notify();
|
|
49
|
+
}
|
|
50
|
+
function advance(count) {
|
|
51
|
+
if (!state || count <= 0) {
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
const completed = Math.min(state.total, state.completed + count);
|
|
55
|
+
const pending = state.pending.slice(count);
|
|
56
|
+
if (completed >= state.total) {
|
|
57
|
+
state = null;
|
|
58
|
+
} else {
|
|
59
|
+
state = { total: state.total, completed, pending };
|
|
60
|
+
}
|
|
61
|
+
notify();
|
|
62
|
+
}
|
|
63
|
+
function reset() {
|
|
64
|
+
if (state === null) {
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
state = null;
|
|
68
|
+
notify();
|
|
69
|
+
}
|
|
70
|
+
function getState() {
|
|
71
|
+
return state;
|
|
72
|
+
}
|
|
73
|
+
function subscribe(listener) {
|
|
74
|
+
listeners.add(listener);
|
|
75
|
+
return () => {
|
|
76
|
+
listeners.delete(listener);
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
function useTracker() {
|
|
80
|
+
return (0, import_element.useSyncExternalStore)(subscribe, getState, getState);
|
|
81
|
+
}
|
|
82
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
83
|
+
0 && (module.exports = {
|
|
84
|
+
addFiles,
|
|
85
|
+
advance,
|
|
86
|
+
getState,
|
|
87
|
+
reset,
|
|
88
|
+
useTracker
|
|
89
|
+
});
|
|
90
|
+
//# sourceMappingURL=tracker.cjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/components/upload-progress-snackbar/tracker.js"],
|
|
4
|
+
"sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useSyncExternalStore } from '@wordpress/element';\n\n/**\n * A minimal in-memory tracker for in-flight media uploads that happen outside\n * the `@wordpress/upload-media` store (i.e. the traditional / non-CSM upload\n * path). The editor's `mediaUpload` wrapper writes to it; the\n * `UploadProgressSnackbar` reads from it.\n *\n * State shape: { total, completed, pending: string[] }\n * - `total`: total files registered in the current session.\n * - `completed`: files that have finished (succeeded OR errored).\n * - `pending`: remaining filenames in submission order.\n *\n * The tracker holds at most one \"session\" at a time \u2014 if a new batch starts\n * while one is in progress, its files are appended to the existing session.\n */\n\nlet state = null;\nconst listeners = new Set();\n\nfunction notify() {\n\tlisteners.forEach( ( listener ) => listener() );\n}\n\n/**\n * Registers a new batch of files that have started uploading.\n *\n * @param {string[]} filenames Filenames in submission order.\n */\nexport function addFiles( filenames ) {\n\tif ( ! filenames.length ) {\n\t\treturn;\n\t}\n\tif ( ! state ) {\n\t\tstate = { total: 0, completed: 0, pending: [] };\n\t}\n\tstate = {\n\t\ttotal: state.total + filenames.length,\n\t\tcompleted: state.completed,\n\t\tpending: [ ...state.pending, ...filenames ],\n\t};\n\tnotify();\n}\n\n/**\n * Advances the tracker by a number of finished files (success or error).\n *\n * @param {number} count Number of files that finished since the last call.\n */\nexport function advance( count ) {\n\tif ( ! state || count <= 0 ) {\n\t\treturn;\n\t}\n\tconst completed = Math.min( state.total, state.completed + count );\n\tconst pending = state.pending.slice( count );\n\tif ( completed >= state.total ) {\n\t\tstate = null;\n\t} else {\n\t\tstate = { total: state.total, completed, pending };\n\t}\n\tnotify();\n}\n\n/**\n * Resets the tracker to its empty state.\n *\n * Test-only helper: `state` is a module-level singleton, so tests call this in\n * `beforeEach` to isolate cases from one another. Not used in production -\n * `advance` clears the state on its own once every file in a batch finishes.\n */\nexport function reset() {\n\tif ( state === null ) {\n\t\treturn;\n\t}\n\tstate = null;\n\tnotify();\n}\n\n/**\n * Returns the current tracker state, or `null` when idle.\n *\n * @return {?{total: number, completed: number, pending: string[]}} Tracker state.\n */\nexport function getState() {\n\treturn state;\n}\n\nfunction subscribe( listener ) {\n\tlisteners.add( listener );\n\treturn () => {\n\t\tlisteners.delete( listener );\n\t};\n}\n\n/**\n * React hook that subscribes to the tracker.\n *\n * @return {?{total: number, completed: number, pending: string[]}} Tracker state.\n */\nexport function useTracker() {\n\treturn useSyncExternalStore( subscribe, getState, getState );\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,qBAAqC;AAiBrC,IAAI,QAAQ;AACZ,IAAM,YAAY,oBAAI,IAAI;AAE1B,SAAS,SAAS;AACjB,YAAU,QAAS,CAAE,aAAc,SAAS,CAAE;AAC/C;AAOO,SAAS,SAAU,WAAY;AACrC,MAAK,CAAE,UAAU,QAAS;AACzB;AAAA,EACD;AACA,MAAK,CAAE,OAAQ;AACd,YAAQ,EAAE,OAAO,GAAG,WAAW,GAAG,SAAS,CAAC,EAAE;AAAA,EAC/C;AACA,UAAQ;AAAA,IACP,OAAO,MAAM,QAAQ,UAAU;AAAA,IAC/B,WAAW,MAAM;AAAA,IACjB,SAAS,CAAE,GAAG,MAAM,SAAS,GAAG,SAAU;AAAA,EAC3C;AACA,SAAO;AACR;AAOO,SAAS,QAAS,OAAQ;AAChC,MAAK,CAAE,SAAS,SAAS,GAAI;AAC5B;AAAA,EACD;AACA,QAAM,YAAY,KAAK,IAAK,MAAM,OAAO,MAAM,YAAY,KAAM;AACjE,QAAM,UAAU,MAAM,QAAQ,MAAO,KAAM;AAC3C,MAAK,aAAa,MAAM,OAAQ;AAC/B,YAAQ;AAAA,EACT,OAAO;AACN,YAAQ,EAAE,OAAO,MAAM,OAAO,WAAW,QAAQ;AAAA,EAClD;AACA,SAAO;AACR;AASO,SAAS,QAAQ;AACvB,MAAK,UAAU,MAAO;AACrB;AAAA,EACD;AACA,UAAQ;AACR,SAAO;AACR;AAOO,SAAS,WAAW;AAC1B,SAAO;AACR;AAEA,SAAS,UAAW,UAAW;AAC9B,YAAU,IAAK,QAAS;AACxB,SAAO,MAAM;AACZ,cAAU,OAAQ,QAAS;AAAA,EAC5B;AACD;AAOO,SAAS,aAAa;AAC5B,aAAO,qCAAsB,WAAW,UAAU,QAAS;AAC5D;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
package/build/private-apis.cjs
CHANGED
|
@@ -53,6 +53,7 @@ var import_global_styles = __toESM(require("./components/global-styles/index.cjs
|
|
|
53
53
|
var import_style_book = require("./components/style-book/index.cjs");
|
|
54
54
|
var import_hooks = require("./components/global-styles/hooks.cjs");
|
|
55
55
|
var import_menu = require("./components/global-styles/menu.cjs");
|
|
56
|
+
var import_upload_progress_snackbar = __toESM(require("./components/upload-progress-snackbar/index.cjs"));
|
|
56
57
|
var { store: interfaceStore, ...remainingInterfaceApis } = interfaceApis;
|
|
57
58
|
var privateApis = {};
|
|
58
59
|
(0, import_lock_unlock.lock)(privateApis, {
|
|
@@ -70,6 +71,7 @@ var privateApis = {};
|
|
|
70
71
|
ToolsMoreMenuGroup: import_tools_more_menu_group.default,
|
|
71
72
|
ViewMoreMenuGroup: import_view_more_menu_group.default,
|
|
72
73
|
ResizableEditor: import_resizable_editor.default,
|
|
74
|
+
UploadProgressSnackbar: import_upload_progress_snackbar.default,
|
|
73
75
|
registerCoreBlockBindingsSources: import_api.registerCoreBlockBindingsSources,
|
|
74
76
|
getTemplateInfo: import_get_template_info.getTemplateInfo,
|
|
75
77
|
// Global Styles
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/private-apis.js"],
|
|
4
|
-
"sourcesContent": ["/**\n * WordPress dependencies\n */\nimport {\n\tCreateTemplatePartModal,\n\tpatternTitleField,\n\ttemplateTitleField,\n} from '@wordpress/fields';\nimport * as interfaceApis from '@wordpress/interface';\n\n/**\n * Internal dependencies\n */\nimport { lock } from './lock-unlock';\nimport { EntitiesSavedStatesExtensible } from './components/entities-saved-states';\nimport BackButton from './components/header/back-button';\nimport Editor from './components/editor';\nimport PluginPostExcerpt from './components/post-excerpt/plugin';\nimport PostCardPanel from './components/post-card-panel';\nimport PreferencesModal from './components/preferences-modal';\nimport { usePostActions } from './components/post-actions/actions';\nimport usePostFields from './components/post-fields';\nimport ToolsMoreMenuGroup from './components/more-menu/tools-more-menu-group';\nimport ViewMoreMenuGroup from './components/more-menu/view-more-menu-group';\nimport ResizableEditor from './components/resizable-editor';\nimport { registerCoreBlockBindingsSources } from './bindings/api';\nimport { getTemplateInfo } from './utils/get-template-info';\nimport GlobalStylesUIWrapper from './components/global-styles';\nimport { StyleBookPreview } from './components/style-book';\nimport { useGlobalStyles, useStyle } from './components/global-styles/hooks';\nimport { GlobalStylesActionMenu } from './components/global-styles/menu';\n\nconst { store: interfaceStore, ...remainingInterfaceApis } = interfaceApis;\n\nexport const privateApis = {};\nlock( privateApis, {\n\tCreateTemplatePartModal,\n\tpatternTitleField,\n\ttemplateTitleField,\n\tBackButton,\n\tEntitiesSavedStatesExtensible,\n\tEditor,\n\tPluginPostExcerpt,\n\tPostCardPanel,\n\tPreferencesModal,\n\tusePostActions,\n\tusePostFields,\n\tToolsMoreMenuGroup,\n\tViewMoreMenuGroup,\n\tResizableEditor,\n\tregisterCoreBlockBindingsSources,\n\tgetTemplateInfo,\n\t// Global Styles\n\tGlobalStylesUIWrapper,\n\tGlobalStylesActionMenu,\n\tStyleBookPreview,\n\tuseGlobalStyles,\n\tuseStyle,\n\t// This is a temporary private API while we're updating the site editor to use EditorProvider.\n\tinterfaceStore,\n\t...remainingInterfaceApis,\n} );\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,oBAIO;AACP,oBAA+B;AAK/B,yBAAqB;AACrB,mCAA8C;AAC9C,yBAAuB;AACvB,oBAAmB;AACnB,oBAA8B;AAC9B,6BAA0B;AAC1B,+BAA6B;AAC7B,qBAA+B;AAC/B,yBAA0B;AAC1B,mCAA+B;AAC/B,kCAA8B;AAC9B,8BAA4B;AAC5B,iBAAiD;AACjD,+BAAgC;AAChC,2BAAkC;AAClC,wBAAiC;AACjC,mBAA0C;AAC1C,kBAAuC;
|
|
6
|
-
"names": ["BackButton", "Editor", "PluginPostExcerpt", "PostCardPanel", "PreferencesModal", "usePostFields", "ToolsMoreMenuGroup", "ViewMoreMenuGroup", "ResizableEditor", "GlobalStylesUIWrapper"]
|
|
4
|
+
"sourcesContent": ["/**\n * WordPress dependencies\n */\nimport {\n\tCreateTemplatePartModal,\n\tpatternTitleField,\n\ttemplateTitleField,\n} from '@wordpress/fields';\nimport * as interfaceApis from '@wordpress/interface';\n\n/**\n * Internal dependencies\n */\nimport { lock } from './lock-unlock';\nimport { EntitiesSavedStatesExtensible } from './components/entities-saved-states';\nimport BackButton from './components/header/back-button';\nimport Editor from './components/editor';\nimport PluginPostExcerpt from './components/post-excerpt/plugin';\nimport PostCardPanel from './components/post-card-panel';\nimport PreferencesModal from './components/preferences-modal';\nimport { usePostActions } from './components/post-actions/actions';\nimport usePostFields from './components/post-fields';\nimport ToolsMoreMenuGroup from './components/more-menu/tools-more-menu-group';\nimport ViewMoreMenuGroup from './components/more-menu/view-more-menu-group';\nimport ResizableEditor from './components/resizable-editor';\nimport { registerCoreBlockBindingsSources } from './bindings/api';\nimport { getTemplateInfo } from './utils/get-template-info';\nimport GlobalStylesUIWrapper from './components/global-styles';\nimport { StyleBookPreview } from './components/style-book';\nimport { useGlobalStyles, useStyle } from './components/global-styles/hooks';\nimport { GlobalStylesActionMenu } from './components/global-styles/menu';\nimport UploadProgressSnackbar from './components/upload-progress-snackbar';\n\nconst { store: interfaceStore, ...remainingInterfaceApis } = interfaceApis;\n\nexport const privateApis = {};\nlock( privateApis, {\n\tCreateTemplatePartModal,\n\tpatternTitleField,\n\ttemplateTitleField,\n\tBackButton,\n\tEntitiesSavedStatesExtensible,\n\tEditor,\n\tPluginPostExcerpt,\n\tPostCardPanel,\n\tPreferencesModal,\n\tusePostActions,\n\tusePostFields,\n\tToolsMoreMenuGroup,\n\tViewMoreMenuGroup,\n\tResizableEditor,\n\tUploadProgressSnackbar,\n\tregisterCoreBlockBindingsSources,\n\tgetTemplateInfo,\n\t// Global Styles\n\tGlobalStylesUIWrapper,\n\tGlobalStylesActionMenu,\n\tStyleBookPreview,\n\tuseGlobalStyles,\n\tuseStyle,\n\t// This is a temporary private API while we're updating the site editor to use EditorProvider.\n\tinterfaceStore,\n\t...remainingInterfaceApis,\n} );\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,oBAIO;AACP,oBAA+B;AAK/B,yBAAqB;AACrB,mCAA8C;AAC9C,yBAAuB;AACvB,oBAAmB;AACnB,oBAA8B;AAC9B,6BAA0B;AAC1B,+BAA6B;AAC7B,qBAA+B;AAC/B,yBAA0B;AAC1B,mCAA+B;AAC/B,kCAA8B;AAC9B,8BAA4B;AAC5B,iBAAiD;AACjD,+BAAgC;AAChC,2BAAkC;AAClC,wBAAiC;AACjC,mBAA0C;AAC1C,kBAAuC;AACvC,sCAAmC;AAEnC,IAAM,EAAE,OAAO,gBAAgB,GAAG,uBAAuB,IAAI;AAEtD,IAAM,cAAc,CAAC;AAAA,IAC5B,yBAAM,aAAa;AAAA,EAClB;AAAA,EACA;AAAA,EACA;AAAA,EACA,+BAAAA;AAAA,EACA;AAAA,EACA,sBAAAC;AAAA,EACA,iCAAAC;AAAA,EACA,sCAAAC;AAAA,EACA,2CAAAC;AAAA,EACA;AAAA,EACA,kCAAAC;AAAA,EACA,iDAAAC;AAAA,EACA,+CAAAC;AAAA,EACA,yCAAAC;AAAA,EACA,wDAAAC;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA,4CAAAC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA,GAAG;AACJ,CAAE;",
|
|
6
|
+
"names": ["BackButton", "Editor", "PluginPostExcerpt", "PostCardPanel", "PreferencesModal", "usePostFields", "ToolsMoreMenuGroup", "ViewMoreMenuGroup", "ResizableEditor", "UploadProgressSnackbar", "GlobalStylesUIWrapper"]
|
|
7
7
|
}
|
|
@@ -160,7 +160,6 @@ var import_date = require("@wordpress/date");
|
|
|
160
160
|
var import_url = require("@wordpress/url");
|
|
161
161
|
var import_data = require("@wordpress/data");
|
|
162
162
|
var import_deprecated = __toESM(require("@wordpress/deprecated"));
|
|
163
|
-
var import_element = require("@wordpress/element");
|
|
164
163
|
var import_block_editor = require("@wordpress/block-editor");
|
|
165
164
|
var import_core_data = require("@wordpress/core-data");
|
|
166
165
|
var import_preferences = require("@wordpress/preferences");
|
|
@@ -341,7 +340,7 @@ function isEditedPostSaveable(state) {
|
|
|
341
340
|
if (isSavingPost(state)) {
|
|
342
341
|
return false;
|
|
343
342
|
}
|
|
344
|
-
return !!getEditedPostAttribute(state, "title") || !!getEditedPostAttribute(state, "excerpt") || !isEditedPostEmpty(state)
|
|
343
|
+
return !!getEditedPostAttribute(state, "title") || !!getEditedPostAttribute(state, "excerpt") || !isEditedPostEmpty(state);
|
|
345
344
|
}
|
|
346
345
|
var isEditedPostEmpty = (0, import_data.createRegistrySelector)(
|
|
347
346
|
(select) => (state) => {
|