@wordpress/editor
Version:
Enhanced block editor for WordPress posts.
91 lines (89 loc) • 2.45 kB
JavaScript
;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
// packages/editor/src/components/upload-progress-snackbar/tracker.js
var tracker_exports = {};
__export(tracker_exports, {
addFiles: () => addFiles,
advance: () => advance,
getState: () => getState,
reset: () => reset,
useTracker: () => useTracker
});
module.exports = __toCommonJS(tracker_exports);
var import_element = require("@wordpress/element");
var state = null;
var listeners = /* @__PURE__ */ new Set();
function notify() {
listeners.forEach((listener) => listener());
}
function addFiles(filenames) {
if (!filenames.length) {
return;
}
if (!state) {
state = { total: 0, completed: 0, pending: [] };
}
state = {
total: state.total + filenames.length,
completed: state.completed,
pending: [...state.pending, ...filenames]
};
notify();
}
function advance(count) {
if (!state || count <= 0) {
return;
}
const completed = Math.min(state.total, state.completed + count);
const pending = state.pending.slice(count);
if (completed >= state.total) {
state = null;
} else {
state = { total: state.total, completed, pending };
}
notify();
}
function reset() {
if (state === null) {
return;
}
state = null;
notify();
}
function getState() {
return state;
}
function subscribe(listener) {
listeners.add(listener);
return () => {
listeners.delete(listener);
};
}
function useTracker() {
return (0, import_element.useSyncExternalStore)(subscribe, getState, getState);
}
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
addFiles,
advance,
getState,
reset,
useTracker
});
//# sourceMappingURL=tracker.cjs.map