UNPKG

@wordpress/editor

Version:
107 lines (105 loc) 3.61 kB
"use strict"; 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/provider/use-revision-blocks.js var use_revision_blocks_exports = {}; __export(use_revision_blocks_exports, { useRevisionBlocks: () => useRevisionBlocks }); module.exports = __toCommonJS(use_revision_blocks_exports); var import_data = require("@wordpress/data"); var import_element = require("@wordpress/element"); var import_blocks = require("@wordpress/blocks"); var import_store = require("../../store/index.cjs"); var import_lock_unlock = require("../../lock-unlock.cjs"); var import_block_diff = require("../post-revisions-preview/block-diff.cjs"); var import_preserve_client_ids = require("../post-revisions-preview/preserve-client-ids.cjs"); function useRevisionBlocks() { const { isInRevisionsMode, showDiff, revision, previousRevision, postType } = (0, import_data.useSelect)((select) => { const { isRevisionsMode, isShowingRevisionDiff, getCurrentRevision, getPreviousRevision } = (0, import_lock_unlock.unlock)(select(import_store.store)); const { getCurrentPostType } = select(import_store.store); const inRevisions = isRevisionsMode(); return { isInRevisionsMode: inRevisions, showDiff: isShowingRevisionDiff(), revision: inRevisions ? getCurrentRevision() : void 0, previousRevision: inRevisions ? getPreviousRevision() : void 0, postType: getCurrentPostType() }; }, []); const previousBlocksRef = (0, import_element.useRef)([]); const blocks = (0, import_element.useMemo)(() => { if (!isInRevisionsMode) { previousBlocksRef.current = []; return null; } if (!revision) { return []; } const currentContent = revision?.content?.raw ?? ""; let parsedBlocks; if (showDiff) { const previousContent = previousRevision?.content?.raw || ""; parsedBlocks = (0, import_block_diff.diffRevisionContent)( currentContent, previousContent ); } else { parsedBlocks = (0, import_blocks.parse)(currentContent); } if (postType === "wp_navigation") { parsedBlocks = [ (0, import_blocks.createBlock)( "core/navigation", { templateLock: false }, parsedBlocks ) ]; } const blocksWithStableIds = (0, import_preserve_client_ids.preserveClientIds)( parsedBlocks, previousBlocksRef.current ); previousBlocksRef.current = blocksWithStableIds; return blocksWithStableIds; }, [ isInRevisionsMode, revision, revision?.content?.raw, previousRevision?.content?.raw, postType, showDiff ]); return blocks; } // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { useRevisionBlocks }); //# sourceMappingURL=use-revision-blocks.cjs.map