@wordpress/editor
Version:
Enhanced block editor for WordPress posts.
44 lines (43 loc) • 1.38 kB
JavaScript
// packages/editor/src/store/local-autosave.js
import { privateApis as coreDataPrivateApis } from "@wordpress/core-data";
import { unlock } from "../lock-unlock.mjs";
var { CRDT_AUTOSAVE_SNAPSHOT_KEY } = unlock(coreDataPrivateApis);
function postKey(postId, isPostNew) {
return `wp-autosave-block-editor-post-${isPostNew ? "auto-draft" : postId}`;
}
function localAutosaveGet(postId, isPostNew) {
return window.sessionStorage.getItem(postKey(postId, isPostNew));
}
function localAutosaveSet(postId, isPostNew, title, content, excerpt, crdtSnapshot) {
const backup = {
post_title: title,
content,
excerpt
};
if (crdtSnapshot) {
backup[CRDT_AUTOSAVE_SNAPSHOT_KEY] = crdtSnapshot;
}
const key = postKey(postId, isPostNew);
try {
window.sessionStorage.setItem(key, JSON.stringify(backup));
} catch (error) {
if (!backup[CRDT_AUTOSAVE_SNAPSHOT_KEY]) {
throw error;
}
delete backup[CRDT_AUTOSAVE_SNAPSHOT_KEY];
window.sessionStorage.setItem(key, JSON.stringify(backup));
}
}
function localAutosaveGetSnapshot(backup) {
return backup?.[CRDT_AUTOSAVE_SNAPSHOT_KEY];
}
function localAutosaveClear(postId, isPostNew) {
window.sessionStorage.removeItem(postKey(postId, isPostNew));
}
export {
localAutosaveClear,
localAutosaveGet,
localAutosaveGetSnapshot,
localAutosaveSet
};
//# sourceMappingURL=local-autosave.mjs.map