UNPKG

@wordpress/editor

Version:
116 lines (114 loc) 3.54 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/collab-sidebar/board-store.js var board_store_exports = {}; __export(board_store_exports, { createBoardStore: () => createBoardStore }); module.exports = __toCommonJS(board_store_exports); var import_utils = require("./utils.cjs"); function createBoardStore() { const listeners = /* @__PURE__ */ new Set(); const blockRefs = /* @__PURE__ */ new Map(); const floatingRefs = /* @__PURE__ */ new Map(); const idByElement = /* @__PURE__ */ new WeakMap(); const heights = {}; let snapshot = {}; function emit() { snapshot = { ...heights }; for (const listener of listeners) { listener(); } } const observer = new window.ResizeObserver((entries) => { let changed = false; for (const entry of entries) { const id = idByElement.get(entry.target); const newHeight = entry.borderBoxSize[0].blockSize; if (heights[id] !== newHeight) { heights[id] = newHeight; changed = true; } } if (changed) { emit(); } }); return { subscribe(listener) { listeners.add(listener); return () => { listeners.delete(listener); if (listeners.size === 0) { observer.disconnect(); } }; }, getSnapshot() { return snapshot; }, registerThread(id, blockEl, floatingEl) { blockRefs.set(id, blockEl); const prev = floatingRefs.get(id); if (prev && prev !== floatingEl) { observer.unobserve(prev); idByElement.delete(prev); } if (floatingEl) { floatingRefs.set(id, floatingEl); idByElement.set(floatingEl, id); observer.observe(floatingEl); } emit(); }, unregisterThread(id) { blockRefs.delete(id); const prev = floatingRefs.get(id); if (prev) { observer.unobserve(prev); idByElement.delete(prev); floatingRefs.delete(id); } delete heights[id]; }, getAnchorRects() { return Object.fromEntries( Array.from(blockRefs).flatMap(([id, el]) => { if (!el) { return []; } if (id === "new") { const rect = (0, import_utils.getSelectionRect)(el) ?? el.getBoundingClientRect(); return [[id, rect]]; } const anchor = el.querySelector((0, import_utils.getNoteMarkerSelector)(id)) ?? el; return [[id, anchor.getBoundingClientRect()]]; }) ); }, getFirstBlockElement() { return blockRefs.values().next().value ?? null; } }; } // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { createBoardStore }); //# sourceMappingURL=board-store.cjs.map