Big News: Socket raises $60M Series C at a $1B valuation to secure software supply chains for AI-driven development.Announcement
Sign In

@portabletext/editor

Package Overview
Dependencies
Maintainers
11
Versions
495
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@portabletext/editor - npm Package Compare versions

Comparing version
7.0.2
to
7.0.3
+192
lib/_chunks-es/get-node.js
import { isTextBlock } from "@portabletext/schema";
function isKeyedSegment(segment) {
return typeof segment == "object" && segment !== null && "_key" in segment;
}
function isTypedObject(object) {
return isRecord(object) && typeof object._type == "string";
}
function isRecord(value) {
return !!value && (typeof value == "object" || typeof value == "function");
}
function isObjectNode(context, node) {
return isTypedObject(node) && node._type !== context.schema.block.name && node._type !== context.schema.span.name;
}
function getChildren(snapshot, path) {
let currentChildren = snapshot.context.value, currentFieldName = "value", currentPath = [], isRoot = !0, currentParent;
for (const segment of path) {
if (typeof segment == "string")
continue;
let node;
if (isKeyedSegment(segment) ? node = currentChildren.find((child) => child._key === segment._key) : typeof segment == "number" && (node = currentChildren.at(segment)), !node)
return [];
currentPath = isRoot ? [{
_key: node._key
}] : [...currentPath, currentFieldName, {
_key: node._key
}], isRoot = !1;
const next = getNodeChildren(snapshot.context, node, currentParent);
if (!next)
return [];
currentChildren = next.children, currentFieldName = next.fieldName, currentParent = next.parent;
}
return currentChildren.map((child) => ({
node: child,
path: isRoot ? [{
_key: child._key
}] : [...currentPath, currentFieldName, {
_key: child._key
}]
}));
}
function getNodeChildren(context, node, parent) {
if (isTextBlock(context, node))
return {
children: node.children,
fieldName: "children",
parent: void 0
};
if (isObjectNode(context, node)) {
const resolved = resolveNodeContainer(context.containers, parent, node);
if (!resolved)
return;
const fieldValue = node[resolved.field.name];
return Array.isArray(fieldValue) ? {
children: fieldValue,
fieldName: resolved.field.name,
parent: resolved
} : void 0;
}
if ("value" in node && Array.isArray(node.value) && !("_key" in node) && !("_type" in node))
return {
children: node.value,
fieldName: "value",
parent: void 0
};
}
function resolveNodeContainer(containers, parent, node) {
if (parent?.of) {
for (const entry of parent.of)
if (entry.type === node._type)
return "field" in entry ? entry : void 0;
}
return containers.get(node._type);
}
function getAncestors(snapshot, path) {
const keyedIndices = [];
for (let i = 0; i < path.length; i++)
isKeyedSegment(path[i]) && keyedIndices.push(i);
if (keyedIndices.length <= 1)
return [];
const {
context,
blockIndexMap
} = snapshot;
let currentChildren = context.value, isRootLevel = !0, currentParent;
const ancestorsByDepth = [], resolvedPath = [], targetKeyedIndex = keyedIndices[keyedIndices.length - 1];
let segmentIndex = 0;
for (; segmentIndex < targetKeyedIndex; ) {
const segment = path[segmentIndex];
if (typeof segment == "string") {
resolvedPath.push(segment), segmentIndex++;
continue;
}
let node;
if (isKeyedSegment(segment)) {
if (isRootLevel && blockIndexMap.size === currentChildren.length) {
const index = blockIndexMap.get(segment._key);
node = index !== void 0 ? currentChildren[index] : currentChildren.find((child) => child._key === segment._key);
} else
node = currentChildren.find((child) => child._key === segment._key);
resolvedPath.push(segment), isRootLevel = !1;
} else if (typeof segment == "number")
node = currentChildren.at(segment), node && resolvedPath.push({
_key: node._key
});
else
return [];
if (!node)
return [];
const next = getNodeChildren(context, node, currentParent);
if (!next)
return [];
ancestorsByDepth.push({
node,
path: resolvedPath.slice()
}), currentChildren = next.children, currentParent = next.parent, segmentIndex++;
}
return ancestorsByDepth.reverse();
}
function getAncestor(snapshot, path, match) {
const ancestors = getAncestors(snapshot, path);
for (const ancestor of ancestors)
if (match(ancestor.node, ancestor.path))
return ancestor;
}
function getNode(snapshot, path) {
if (path.length === 0)
return;
const {
context,
blockIndexMap
} = snapshot;
let currentChildren = context.value, node, currentParent;
const resolvedPath = [];
let isRootLevel = !0;
for (let i = 0; i < path.length; i++) {
const segment = path[i];
if (typeof segment == "string") {
resolvedPath.push(segment);
continue;
}
if (isKeyedSegment(segment)) {
if (isRootLevel && blockIndexMap.size === currentChildren.length) {
const index = blockIndexMap.get(segment._key);
if (index !== void 0) {
const candidate = currentChildren[index];
candidate && candidate._key === segment._key ? node = candidate : node = currentChildren.find((child) => child._key === segment._key);
} else
node = currentChildren.find((child) => child._key === segment._key);
} else
node = currentChildren.find((child) => child._key === segment._key);
resolvedPath.push(segment), isRootLevel = !1;
} else if (typeof segment == "number")
node = currentChildren.at(segment), node && resolvedPath.push({
_key: node._key
});
else
return;
if (!node)
return;
let hasMoreSegments = !1;
for (let j = i + 1; j < path.length; j++) {
const s = path[j];
if (isKeyedSegment(s) || typeof s == "number") {
hasMoreSegments = !0;
break;
}
}
if (hasMoreSegments) {
const next = getNodeChildren(context, node, currentParent);
if (!next)
return;
currentChildren = next.children, currentParent = next.parent;
}
}
if (node)
return {
node,
path: resolvedPath
};
}
export {
getAncestor,
getAncestors,
getChildren,
getNode,
getNodeChildren,
isKeyedSegment,
isObjectNode,
isRecord,
isTypedObject
};
//# sourceMappingURL=get-node.js.map
{"version":3,"file":"get-node.js","sources":["../../src/utils/util.is-keyed-segment.ts","../../src/utils/asserters.ts","../../src/engine/node/is-object-node.ts","../../src/node-traversal/get-children.ts","../../src/node-traversal/get-ancestors.ts","../../src/node-traversal/get-ancestor.ts","../../src/node-traversal/get-node.ts"],"sourcesContent":["import type {KeyedSegment} from '../types/paths'\n\n/**\n * @public\n */\nexport function isKeyedSegment(segment: unknown): segment is KeyedSegment {\n return typeof segment === 'object' && segment !== null && '_key' in segment\n}\n","import type {TypedObject} from '@portabletext/schema'\n\nexport function isTypedObject(object: unknown): object is TypedObject {\n return isRecord(object) && typeof object['_type'] === 'string'\n}\n\nexport function isRecord(value: unknown): value is Record<string, unknown> {\n return !!value && (typeof value === 'object' || typeof value === 'function')\n}\n","import type {PortableTextObject} from '@portabletext/schema'\nimport type {EditorSchema} from '../../editor/editor-schema'\nimport {isTypedObject} from '../../utils/asserters'\n\nexport function isObjectNode(\n context: {schema: EditorSchema},\n node: unknown,\n): node is PortableTextObject {\n return (\n isTypedObject(node) &&\n node._type !== context.schema.block.name &&\n node._type !== context.schema.span.name\n )\n}\n","import {isTextBlock} from '@portabletext/schema'\nimport type {EditorSchema} from '../editor/editor-schema'\nimport type {Node} from '../engine/interfaces/node'\nimport type {Path} from '../engine/interfaces/path'\nimport {isObjectNode} from '../engine/node/is-object-node'\nimport type {\n Containers,\n RegisteredContainer,\n} from '../schema/resolve-containers'\nimport {isKeyedSegment} from '../utils/util.is-keyed-segment'\nimport type {TraversalSnapshot} from './traversal-snapshot'\n\n/**\n * Get the children of a node at a given path.\n *\n * @beta\n */\nexport function getChildren(\n snapshot: TraversalSnapshot,\n path: Path,\n): Array<{node: Node; path: Path}> {\n let currentChildren: Array<Node> = snapshot.context.value\n let currentFieldName = 'value'\n let currentPath: Path = []\n let isRoot = true\n let currentParent: RegisteredContainer | undefined\n\n for (const segment of path) {\n if (typeof segment === 'string') {\n continue\n }\n\n let node: Node | undefined\n if (isKeyedSegment(segment)) {\n node = currentChildren.find((child) => child._key === segment._key)\n } else if (typeof segment === 'number') {\n node = currentChildren.at(segment)\n }\n\n if (!node) {\n return []\n }\n\n currentPath = isRoot\n ? [{_key: node._key}]\n : [...currentPath, currentFieldName, {_key: node._key}]\n isRoot = false\n\n const next = getNodeChildren(snapshot.context, node, currentParent)\n\n if (!next) {\n return []\n }\n\n currentChildren = next.children\n currentFieldName = next.fieldName\n currentParent = next.parent\n }\n\n return currentChildren.map((child) => ({\n node: child,\n path: isRoot\n ? [{_key: child._key}]\n : [...currentPath, currentFieldName, {_key: child._key}],\n }))\n}\n\n/**\n * Resolve a node's editable child array.\n *\n * When `parent` is provided and its `of` declares a positional entry\n * matching `node._type`, that positional entry's `field` is used.\n * Otherwise the top-level `containers.get(node._type)` provides the\n * fallback.\n *\n * The returned `parent` is the resolved container entry for `node`\n * itself (used by the caller to thread further descent).\n *\n * @beta\n */\nexport function getNodeChildren(\n context: {\n schema: EditorSchema\n containers: Containers\n },\n node: Node | {value: Array<Node>},\n parent?: RegisteredContainer,\n):\n | {\n children: Array<Node>\n fieldName: string\n parent: RegisteredContainer | undefined\n }\n | undefined {\n // Text blocks store children in .children\n if (isTextBlock(context, node)) {\n return {\n children: node.children,\n fieldName: 'children',\n parent: undefined,\n }\n }\n\n if (isObjectNode(context, node)) {\n const resolved = resolveNodeContainer(context.containers, parent, node)\n\n if (!resolved) {\n return undefined\n }\n\n const fieldValue = (node as Record<string, unknown>)[resolved.field.name]\n\n if (!Array.isArray(fieldValue)) {\n return undefined\n }\n\n return {\n children: fieldValue as Array<Node>,\n fieldName: resolved.field.name,\n parent: resolved,\n }\n }\n\n // Root context: has .value array but no _key or _type\n if (\n 'value' in node &&\n Array.isArray(node['value']) &&\n !('_key' in node) &&\n !('_type' in node)\n ) {\n return {\n children: node['value'] as Array<Node>,\n fieldName: 'value',\n parent: undefined,\n }\n }\n\n return undefined\n}\n\n/**\n * Pick the positional override from `parent.of` if present; fall back\n * to the top-level entry. Returns only `RegisteredContainer` entries\n * since leaves do not have editable children.\n */\nfunction resolveNodeContainer(\n containers: Containers,\n parent: RegisteredContainer | undefined,\n node: Node,\n): RegisteredContainer | undefined {\n if (parent?.of) {\n for (const entry of parent.of) {\n if (entry.type === node._type) {\n // Only return container entries; leaves have no editable children.\n if ('field' in entry) {\n return entry\n }\n return undefined\n }\n }\n }\n return containers.get(node._type)\n}\n","import type {Node} from '../engine/interfaces/node'\nimport type {Path} from '../engine/interfaces/path'\nimport {isKeyedSegment} from '../utils/util.is-keyed-segment'\nimport {getNodeChildren} from './get-children'\nimport type {TraversalSnapshot} from './traversal-snapshot'\n\n/**\n * Get all ancestors of the node at a given path, from nearest to furthest.\n *\n * For a path like [{_key:'t1'}, 'rows', {_key:'r1'}, 'cells', {_key:'c1'}],\n * the ancestors are (nearest first):\n * [{_key:'t1'}, 'rows', {_key:'r1'}]\n * [{_key:'t1'}]\n *\n * Walks from root to the target in a single pass collecting each ancestor\n * as it goes.\n *\n * @beta\n */\nexport function getAncestors(\n snapshot: TraversalSnapshot,\n path: Path,\n): Array<{node: Node; path: Path}> {\n // Collect keyed-segment indices to know where each ancestor's path ends.\n const keyedIndices: Array<number> = []\n for (let i = 0; i < path.length; i++) {\n if (isKeyedSegment(path[i])) {\n keyedIndices.push(i)\n }\n }\n\n // Need at least 2 keyed segments to have an ancestor (the last is self).\n if (keyedIndices.length <= 1) {\n return []\n }\n\n const {context, blockIndexMap} = snapshot\n let currentChildren: Array<Node> = context.value\n let isRootLevel = true\n let currentParent:\n | import('../schema/resolve-containers').RegisteredContainer\n | undefined\n\n const ancestorsByDepth: Array<{node: Node; path: Path}> = []\n const resolvedPath: Path = []\n\n // Descend once. We walk only as far as the second-to-last keyed segment;\n // the last keyed segment is the target itself, which is not an ancestor.\n const targetKeyedIndex = keyedIndices[keyedIndices.length - 1]!\n\n let segmentIndex = 0\n while (segmentIndex < targetKeyedIndex) {\n const segment = path[segmentIndex]!\n\n if (typeof segment === 'string') {\n resolvedPath.push(segment)\n segmentIndex++\n continue\n }\n\n let node: Node | undefined\n if (isKeyedSegment(segment)) {\n // Production snapshots maintain `blockIndexMap` in lockstep with\n // `context.value` so this fast path always fires. Some test\n // fixtures still pass empty or stale maps, which is the debt this\n // size check is working around - see /specs/snapshot-invariants.md.\n // When the fixtures are aligned, drop the guard and use the map\n // directly.\n if (isRootLevel && blockIndexMap.size === currentChildren.length) {\n const index = blockIndexMap.get(segment._key)\n node =\n index !== undefined\n ? currentChildren[index]\n : currentChildren.find((child) => child._key === segment._key)\n } else {\n node = currentChildren.find((child) => child._key === segment._key)\n }\n resolvedPath.push(segment)\n isRootLevel = false\n } else if (typeof segment === 'number') {\n node = currentChildren.at(segment)\n if (node) {\n resolvedPath.push({_key: node._key})\n }\n } else {\n return []\n }\n\n if (!node) {\n return []\n }\n\n // Descend with positional awareness. `getNodeChildren` checks the\n // current parent's `of` for a positional override before falling\n // back to the top-level `containers` map - so same-`_type`\n // registered under different parents with different `field`\n // resolves to the right entry at this position.\n const next = getNodeChildren(context, node, currentParent)\n if (!next) {\n return []\n }\n\n ancestorsByDepth.push({\n node,\n path: resolvedPath.slice(),\n })\n\n currentChildren = next.children\n currentParent = next.parent\n segmentIndex++\n }\n\n // Return nearest-first (reverse of document order at the call site).\n return ancestorsByDepth.reverse()\n}\n","import type {Node} from '../engine/interfaces/node'\nimport type {Path} from '../engine/interfaces/path'\nimport {getAncestors} from './get-ancestors'\nimport type {TraversalSnapshot} from './traversal-snapshot'\n\n/**\n * Find the first ancestor of the node at a given path that matches a predicate.\n * Does not check the node at the path itself, only its ancestors.\n *\n * When `match` is a type predicate, the returned `node` narrows to that type.\n *\n * @beta\n */\nexport function getAncestor<TMatch extends Node>(\n snapshot: TraversalSnapshot,\n path: Path,\n match: (node: Node, path: Path) => node is TMatch,\n): {node: TMatch; path: Path} | undefined\n/**\n * @beta\n */\nexport function getAncestor(\n snapshot: TraversalSnapshot,\n path: Path,\n match: (node: Node, path: Path) => boolean,\n): {node: Node; path: Path} | undefined\nexport function getAncestor(\n snapshot: TraversalSnapshot,\n path: Path,\n match: (node: Node, path: Path) => boolean,\n): {node: Node; path: Path} | undefined {\n const ancestors = getAncestors(snapshot, path)\n\n for (const ancestor of ancestors) {\n if (match(ancestor.node, ancestor.path)) {\n return ancestor\n }\n }\n\n return undefined\n}\n","import type {Node} from '../engine/interfaces/node'\nimport type {Path} from '../engine/interfaces/path'\nimport {isKeyedSegment} from '../utils/util.is-keyed-segment'\nimport {getNodeChildren} from './get-children'\nimport type {TraversalSnapshot} from './traversal-snapshot'\n\n/**\n * Get the node at a given path.\n *\n * The path can be either keyed (KeyedSegment + field name strings) or\n * indexed (numbers). Keyed segments are resolved by matching `_key`,\n * field name strings are skipped (they're structural), and numbers\n * are resolved by index.\n *\n * The returned path is always fully keyed, even if the input path\n * contained numeric indices.\n *\n * @beta\n */\nexport function getNode(\n snapshot: TraversalSnapshot,\n path: Path,\n): {node: Node; path: Path} | undefined {\n if (path.length === 0) {\n return undefined\n }\n\n const {context, blockIndexMap} = snapshot\n let currentChildren: Array<Node> = context.value\n let node: Node | undefined\n let currentParent:\n | import('../schema/resolve-containers').RegisteredContainer\n | undefined\n const resolvedPath: Path = []\n let isRootLevel = true\n\n for (let i = 0; i < path.length; i++) {\n const segment = path[i]\n\n if (typeof segment === 'string') {\n resolvedPath.push(segment)\n continue\n }\n\n if (isKeyedSegment(segment)) {\n if (isRootLevel && blockIndexMap.size === currentChildren.length) {\n const index = blockIndexMap.get(segment._key)\n if (index !== undefined) {\n const candidate = currentChildren[index]\n if (candidate && candidate._key === segment._key) {\n node = candidate\n } else {\n node = currentChildren.find((child) => child._key === segment._key)\n }\n } else {\n node = currentChildren.find((child) => child._key === segment._key)\n }\n } else {\n node = currentChildren.find((child) => child._key === segment._key)\n }\n resolvedPath.push(segment)\n isRootLevel = false\n } else if (typeof segment === 'number') {\n node = currentChildren.at(segment)\n if (node) {\n resolvedPath.push({_key: node._key})\n }\n } else {\n return undefined\n }\n\n if (!node) {\n return undefined\n }\n\n let hasMoreSegments = false\n for (let j = i + 1; j < path.length; j++) {\n const s = path[j]\n if (isKeyedSegment(s) || typeof s === 'number') {\n hasMoreSegments = true\n break\n }\n }\n\n if (hasMoreSegments) {\n const next = getNodeChildren(context, node, currentParent)\n\n if (!next) {\n return undefined\n }\n\n currentChildren = next.children\n currentParent = next.parent\n }\n }\n\n if (!node) {\n return undefined\n }\n\n return {node, path: resolvedPath}\n}\n"],"names":["isKeyedSegment","segment","isTypedObject","object","isRecord","value","isObjectNode","context","node","_type","schema","block","name","span","getChildren","snapshot","path","currentChildren","currentFieldName","currentPath","isRoot","currentParent","find","child","_key","at","next","getNodeChildren","children","fieldName","parent","map","isTextBlock","undefined","resolved","resolveNodeContainer","containers","fieldValue","field","Array","isArray","of","entry","type","get","getAncestors","keyedIndices","i","length","push","blockIndexMap","isRootLevel","ancestorsByDepth","resolvedPath","targetKeyedIndex","segmentIndex","size","index","slice","reverse","getAncestor","match","ancestors","ancestor","getNode","candidate","hasMoreSegments","j","s"],"mappings":"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"}
import { isTextBlock, isSpan } from "@portabletext/schema";
import { isEqualSelectionPoints } from "./util.slice-blocks.js";
function getTextBlockText(block) {
return block.children.map((child) => child.text ?? "").join("");
}
function isEmptyTextBlock(context, block) {
if (!isTextBlock(context, block))
return !1;
const onlyText = block.children.every((child) => isSpan(context, child)), blockText = getTextBlockText(block);
return onlyText && blockText === "";
}
function isEqualSelections(a, b) {
return !a && !b ? !0 : !a || !b ? !1 : isEqualSelectionPoints(a.anchor, b.anchor) && isEqualSelectionPoints(a.focus, b.focus);
}
export {
getTextBlockText,
isEmptyTextBlock,
isEqualSelections
};
//# sourceMappingURL=util.is-equal-selections.js.map
{"version":3,"file":"util.is-equal-selections.js","sources":["../../src/utils/util.get-text-block-text.ts","../../src/utils/util.is-empty-text-block.ts","../../src/utils/util.is-equal-selections.ts"],"sourcesContent":["import type {PortableTextTextBlock} from '@portabletext/schema'\n\n/**\n * @public\n */\nexport function getTextBlockText(block: PortableTextTextBlock) {\n return block.children.map((child) => child.text ?? '').join('')\n}\n","import {isSpan, isTextBlock, type PortableTextBlock} from '@portabletext/schema'\nimport type {EditorContext} from '../editor/editor-snapshot'\nimport {getTextBlockText} from './util.get-text-block-text'\n\n/**\n * @public\n */\nexport function isEmptyTextBlock(\n context: Pick<EditorContext, 'schema'>,\n block: PortableTextBlock | unknown,\n) {\n if (!isTextBlock(context, block)) {\n return false\n }\n\n const onlyText = block.children.every((child) => isSpan(context, child))\n const blockText = getTextBlockText(block)\n\n return onlyText && blockText === ''\n}\n","import type {EditorSelection} from '../types/editor'\nimport {isEqualSelectionPoints} from './util.is-equal-selection-points'\n\n/**\n * @public\n */\nexport function isEqualSelections(a: EditorSelection, b: EditorSelection) {\n if (!a && !b) {\n return true\n }\n\n if (!a || !b) {\n return false\n }\n\n return (\n isEqualSelectionPoints(a.anchor, b.anchor) &&\n isEqualSelectionPoints(a.focus, b.focus)\n )\n}\n"],"names":["getTextBlockText","block","children","map","child","text","join","isEmptyTextBlock","context","isTextBlock","onlyText","every","isSpan","blockText","isEqualSelections","a","b","isEqualSelectionPoints","anchor","focus"],"mappings":";;AAKO,SAASA,iBAAiBC,OAA8B;AAC7D,SAAOA,MAAMC,SAASC,IAAKC,CAAAA,UAAUA,MAAMC,QAAQ,EAAE,EAAEC,KAAK,EAAE;AAChE;ACAO,SAASC,iBACdC,SACAP,OACA;AACA,MAAI,CAACQ,YAAYD,SAASP,KAAK;AAC7B,WAAO;AAGT,QAAMS,WAAWT,MAAMC,SAASS,MAAOP,CAAAA,UAAUQ,OAAOJ,SAASJ,KAAK,CAAC,GACjES,YAAYb,iBAAiBC,KAAK;AAExC,SAAOS,YAAYG,cAAc;AACnC;ACbO,SAASC,kBAAkBC,GAAoBC,GAAoB;AACxE,SAAI,CAACD,KAAK,CAACC,IACF,KAGL,CAACD,KAAK,CAACC,IACF,KAIPC,uBAAuBF,EAAEG,QAAQF,EAAEE,MAAM,KACzCD,uBAAuBF,EAAEI,OAAOH,EAAEG,KAAK;AAE3C;"}
+1
-1

@@ -1,1 +0,1 @@

{"version":3,"file":"behavior.types.action.d.ts","names":[],"sources":["../../src/internal-utils/mime-type.ts","../../src/type-utils.ts","../../src/converters/converter.types.ts","../../src/editor/PortableTextEditor.tsx","../../src/types/options.ts","../../src/editor/Editable.tsx","../../src/types/editor.ts","../../src/slate/types/types.ts","../../src/slate/interfaces/point.ts","../../src/slate/interfaces/range.ts","../../src/slate/interfaces/operation.ts","../../src/editor/range-decorations-machine.ts","../../src/slate/interfaces/location.ts","../../src/slate/interfaces/path-ref.ts","../../src/slate/interfaces/point-ref.ts","../../src/slate/interfaces/range-ref.ts","../../src/slate/interfaces/editor.ts","../../src/slate/dom/utils/diff-text.ts","../../src/slate/dom/utils/dom.ts","../../src/slate/dom/plugin/dom-editor.ts","../../src/types/slate-editor.ts","../../src/editor/editor-snapshot.ts","../../src/behaviors/behavior.types.guard.ts","../../src/behaviors/behavior.types.behavior.ts","../../src/editor/relay-machine.ts","../../src/editor.ts","../../src/editor/editor-provider.tsx","../../src/editor/editor-selector.ts","../../src/editor/usePortableTextEditor.ts","../../src/editor/usePortableTextEditorSelection.tsx","../../src/utils/key-generator.ts","../../src/editor/use-editor.ts","../../src/types/block-offset.ts","../../src/priority/priority.types.ts","../../src/behaviors/behavior.config.ts","../../src/editor/editor-machine.ts","../../src/internal-utils/event-position.ts","../../src/types/block-with-optional-key.ts","../../src/behaviors/behavior.types.event.ts","../../src/editor/editor-dom.ts","../../src/behaviors/behavior.types.action.ts"],"sourcesContent":[],"mappings":"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"}
{"version":3,"file":"behavior.types.action.d.ts","names":[],"sources":["../../src/internal-utils/mime-type.ts","../../src/type-utils.ts","../../src/converters/converter.types.ts","../../src/editor/PortableTextEditor.tsx","../../src/types/options.ts","../../src/editor/Editable.tsx","../../src/types/editor.ts","../../src/engine/types/types.ts","../../src/engine/interfaces/point.ts","../../src/engine/interfaces/range.ts","../../src/engine/interfaces/operation.ts","../../src/editor/range-decorations-machine.ts","../../src/engine/interfaces/location.ts","../../src/engine/interfaces/path-ref.ts","../../src/engine/interfaces/point-ref.ts","../../src/engine/interfaces/range-ref.ts","../../src/engine/interfaces/editor.ts","../../src/engine/dom/utils/diff-text.ts","../../src/engine/dom/utils/dom.ts","../../src/engine/dom/plugin/dom-editor.ts","../../src/types/editor-engine.ts","../../src/editor/editor-snapshot.ts","../../src/behaviors/behavior.types.guard.ts","../../src/behaviors/behavior.types.behavior.ts","../../src/editor/relay-machine.ts","../../src/editor.ts","../../src/editor/editor-provider.tsx","../../src/editor/editor-selector.ts","../../src/editor/usePortableTextEditor.ts","../../src/editor/usePortableTextEditorSelection.tsx","../../src/utils/key-generator.ts","../../src/editor/use-editor.ts","../../src/types/block-offset.ts","../../src/priority/priority.types.ts","../../src/behaviors/behavior.config.ts","../../src/editor/editor-machine.ts","../../src/internal-utils/event-position.ts","../../src/types/block-with-optional-key.ts","../../src/behaviors/behavior.types.event.ts","../../src/editor/editor-dom.ts","../../src/behaviors/behavior.types.action.ts"],"sourcesContent":[],"mappings":"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"}

@@ -1,1 +0,1 @@

{"version":3,"file":"resolve-containers.d.ts","names":[],"sources":["../../src/types/paths.ts","../../src/slate/interfaces/path.ts","../../src/renderers/renderer.types.ts","../../src/schema/container-types.ts","../../src/editor/editor-schema.ts","../../src/slate/interfaces/node.ts","../../src/node-traversal/traversal-snapshot.ts","../../src/schema/resolve-container-at.ts"],"sourcesContent":[],"mappings":"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"}
{"version":3,"file":"resolve-containers.d.ts","names":[],"sources":["../../src/types/paths.ts","../../src/engine/interfaces/path.ts","../../src/renderers/renderer.types.ts","../../src/schema/container-types.ts","../../src/editor/editor-schema.ts","../../src/engine/interfaces/node.ts","../../src/node-traversal/traversal-snapshot.ts","../../src/schema/resolve-container-at.ts"],"sourcesContent":[],"mappings":"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"}

@@ -1,2 +0,2 @@

import { getChildren, getNode, isKeyedSegment, getNodeChildren } from "./get-ancestor.js";
import { getChildren, getNode, isKeyedSegment, getNodeChildren } from "./get-node.js";
import { isSpan, isTextBlock, getSubSchema } from "@portabletext/schema";

@@ -3,0 +3,0 @@ import { getNodes } from "./get-path-sub-schema.js";

@@ -1,1 +0,1 @@

{"version":3,"file":"get-first-child.js","sources":["../../src/node-traversal/get-leaf.ts","../../src/node-traversal/get-text.ts","../../src/node-traversal/get-span-node.ts","../../src/node-traversal/get-text-block-node.ts","../../src/traversal/get-union-schema.ts","../../src/node-traversal/is-leaf.ts","../../src/node-traversal/get-first-child.ts"],"sourcesContent":["import type {Node} from '../slate/interfaces/node'\nimport type {Path} from '../slate/interfaces/path'\nimport {getChildren} from './get-children'\nimport {getNode} from './get-node'\nimport type {TraversalSnapshot} from './traversal-snapshot'\n\n/**\n * Get the deepest leaf node starting from a path, walking toward either the\n * start or end edge. A leaf is any node that has no children according to the\n * traversal context.\n *\n * @beta\n */\nexport function getLeaf(\n snapshot: TraversalSnapshot,\n path: Path,\n options: {edge: 'start' | 'end'},\n): {node: Node; path: Path} | undefined {\n const {edge} = options\n\n let currentPath = path\n\n // If starting from root (empty path), descend into first/last child\n if (currentPath.length === 0) {\n const children = getChildren(snapshot, [])\n if (children.length === 0) {\n return undefined\n }\n const firstOrLast = edge === 'end' ? children.at(-1)! : children.at(0)!\n const nodeChildren = getChildren(snapshot, firstOrLast.path)\n if (nodeChildren.length === 0) {\n return firstOrLast\n }\n currentPath = firstOrLast.path\n } else {\n // Check if the node at path is already a leaf\n const entry = getNode(snapshot, currentPath)\n if (!entry) {\n return undefined\n }\n const children = getChildren(snapshot, currentPath)\n if (children.length === 0) {\n return entry\n }\n }\n\n // Descend to deepest leaf\n while (true) {\n const children = getChildren(snapshot, currentPath)\n if (children.length === 0) {\n const entry = getNode(snapshot, currentPath)\n return entry ?? undefined\n }\n const child = edge === 'end' ? children.at(-1)! : children.at(0)!\n currentPath = child.path\n }\n}\n","import {isSpan} from '@portabletext/schema'\nimport type {Path} from '../slate/interfaces/path'\nimport {getNode} from './get-node'\nimport {getNodes} from './get-nodes'\nimport type {TraversalSnapshot} from './traversal-snapshot'\n\n/**\n * Get the concatenated text content of the node at a given path.\n *\n * @beta\n */\nexport function getText(\n snapshot: TraversalSnapshot,\n path: Path,\n): string | undefined {\n const entry = getNode(snapshot, path)\n\n if (!entry) {\n return undefined\n }\n\n if (isSpan({schema: snapshot.context.schema}, entry.node)) {\n return entry.node.text\n }\n\n let text = ''\n\n for (const descendant of getNodes(snapshot, {at: path})) {\n if (isSpan({schema: snapshot.context.schema}, descendant.node)) {\n text += descendant.node.text\n }\n }\n\n return text\n}\n","import {isSpan, type PortableTextSpan} from '@portabletext/schema'\nimport type {Path} from '../slate/interfaces/path'\nimport {getNode} from './get-node'\nimport type {TraversalSnapshot} from './traversal-snapshot'\n\n/**\n * Get the span node at a given path.\n *\n * @beta\n */\nexport function getSpanNode(\n snapshot: TraversalSnapshot,\n path: Path,\n): {node: PortableTextSpan; path: Path} | undefined {\n const entry = getNode(snapshot, path)\n\n if (!entry) {\n return undefined\n }\n\n if (!isSpan({schema: snapshot.context.schema}, entry.node)) {\n return undefined\n }\n\n return {node: entry.node, path: entry.path}\n}\n","import {isTextBlock, type PortableTextTextBlock} from '@portabletext/schema'\nimport type {Path} from '../slate/interfaces/path'\nimport {getNode} from './get-node'\nimport type {TraversalSnapshot} from './traversal-snapshot'\n\n/**\n * Get the text block node at a given path.\n *\n * @beta\n */\nexport function getTextBlockNode(\n snapshot: TraversalSnapshot,\n path: Path,\n): {node: PortableTextTextBlock; path: Path} | undefined {\n const entry = getNode(snapshot, path)\n\n if (!entry) {\n return undefined\n }\n\n if (!isTextBlock({schema: snapshot.context.schema}, entry.node)) {\n return undefined\n }\n\n return {node: entry.node, path: entry.path}\n}\n","import {getSubSchema, type Schema} from '@portabletext/schema'\nimport type {Containers} from '../schema/resolve-containers'\n\n/**\n * Return a `Schema` that contains every named member declared anywhere\n * in the editor's schema graph that is reachable from a position where text\n * is edited - the root schema merged with the sub-schema of every registered\n * container whose field accepts text blocks, deduped by name. Useful for\n * rendering a static toolbar whose buttons stay stable across selection\n * moves while still reflecting everything that could plausibly be edited or\n * inserted somewhere.\n *\n * Containers whose field does NOT accept text blocks (e.g. a `table`\n * container whose `rows` field only accepts `row` objects, or a `row`\n * container whose `cells` field only accepts `cell` objects) are\n * **structural**: their immediate `of` types are organizational, not\n * insertable user content. Those structural types are excluded from the\n * union. Their nested text-block-accepting descendants (e.g. a `cell`\n * that contains a `content` field of `{type: 'block'}`) are reached via\n * those descendants' own container registration.\n *\n * Pair with `getPathSubSchema` (or a path-based intersection across a\n * range) to determine which of the union's members are applicable at the\n * current selection.\n *\n * @beta\n */\nexport function getUnionSchema(schema: Schema, containers: Containers): Schema {\n const decorators = mergeByName(schema.decorators, [])\n const annotations = mergeByName(schema.annotations, [])\n const lists = mergeByName(schema.lists, [])\n const styles = mergeByName(schema.styles, [])\n const inlineObjects = mergeByName(schema.inlineObjects, [])\n const blockObjects = mergeByName(schema.blockObjects, [])\n\n for (const container of containers.values()) {\n if (!acceptsTextBlock(container.field.of, schema.block.name)) {\n continue\n }\n const sub = getSubSchema(schema, container.field.of)\n mergeByName(sub.decorators, decorators)\n mergeByName(sub.annotations, annotations)\n mergeByName(sub.lists, lists)\n mergeByName(sub.styles, styles)\n mergeByName(sub.inlineObjects, inlineObjects)\n mergeByName(sub.blockObjects, blockObjects)\n }\n\n return {\n ...schema,\n decorators,\n annotations,\n lists,\n styles,\n inlineObjects,\n blockObjects,\n }\n}\n\nfunction acceptsTextBlock(\n of: ReadonlyArray<{type: string}>,\n blockName: string,\n): boolean {\n return of.some(\n (member) => member.type === 'block' || member.type === blockName,\n )\n}\n\nfunction mergeByName<T extends {name: string}>(\n source: ReadonlyArray<T>,\n target: Array<T>,\n): Array<T> {\n for (const entry of source) {\n if (target.some((existing) => existing.name === entry.name)) {\n continue\n }\n target.push(entry)\n }\n return target\n}\n","import type {Node} from '../slate/interfaces/node'\nimport type {Path} from '../slate/interfaces/path'\nimport {isKeyedSegment} from '../utils/util.is-keyed-segment'\nimport {getNodeChildren} from './get-children'\nimport type {TraversalSnapshot} from './traversal-snapshot'\n\n/**\n * Determine if a node at the given path is a leaf.\n *\n * A leaf node cannot have children. Spans and non-editable object nodes are\n * leaves. Text blocks and editable container objects are not.\n *\n * @beta\n */\nexport function isLeaf(snapshot: TraversalSnapshot, path: Path): boolean {\n if (path.length === 0) {\n return false\n }\n\n let currentChildren: Array<Node> = snapshot.context.value\n let currentParent:\n | import('../schema/resolve-containers').RegisteredContainer\n | undefined\n\n for (let i = 0; i < path.length; i++) {\n const segment = path[i]!\n let node: Node | undefined\n\n if (isKeyedSegment(segment)) {\n node = currentChildren.find((child) => child._key === segment._key)\n } else if (typeof segment === 'number') {\n node = currentChildren.at(segment)\n } else {\n continue\n }\n\n if (!node) {\n return false\n }\n\n const next = getNodeChildren(snapshot.context, node, currentParent)\n\n if (i === path.length - 1) {\n return next === undefined\n }\n\n if (!next) {\n return false\n }\n\n currentChildren = next.children\n currentParent = next.parent\n }\n\n return false\n}\n","import type {Node} from '../slate/interfaces/node'\nimport type {Path} from '../slate/interfaces/path'\nimport {getChildren} from './get-children'\nimport type {TraversalSnapshot} from './traversal-snapshot'\n\n/**\n * Get the first child of a node at a given path.\n *\n * @beta\n */\nexport function getFirstChild(\n snapshot: TraversalSnapshot,\n path: Path,\n): {node: Node; path: Path} | undefined {\n return getChildren(snapshot, path).at(0)\n}\n"],"names":["getLeaf","snapshot","path","options","edge","currentPath","length","children","getChildren","firstOrLast","at","entry","getNode","undefined","getText","isSpan","schema","context","node","text","descendant","getNodes","getSpanNode","getTextBlockNode","isTextBlock","getUnionSchema","containers","decorators","mergeByName","annotations","lists","styles","inlineObjects","blockObjects","container","values","acceptsTextBlock","field","of","block","name","sub","getSubSchema","blockName","some","member","type","source","target","existing","push","isLeaf","currentChildren","value","currentParent","i","segment","isKeyedSegment","find","child","_key","next","getNodeChildren","parent","getFirstChild"],"mappings":"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"}
{"version":3,"file":"get-first-child.js","sources":["../../src/node-traversal/get-leaf.ts","../../src/node-traversal/get-text.ts","../../src/node-traversal/get-span-node.ts","../../src/node-traversal/get-text-block-node.ts","../../src/traversal/get-union-schema.ts","../../src/node-traversal/is-leaf.ts","../../src/node-traversal/get-first-child.ts"],"sourcesContent":["import type {Node} from '../engine/interfaces/node'\nimport type {Path} from '../engine/interfaces/path'\nimport {getChildren} from './get-children'\nimport {getNode} from './get-node'\nimport type {TraversalSnapshot} from './traversal-snapshot'\n\n/**\n * Get the deepest leaf node starting from a path, walking toward either the\n * start or end edge. A leaf is any node that has no children according to the\n * traversal context.\n *\n * @beta\n */\nexport function getLeaf(\n snapshot: TraversalSnapshot,\n path: Path,\n options: {edge: 'start' | 'end'},\n): {node: Node; path: Path} | undefined {\n const {edge} = options\n\n let currentPath = path\n\n // If starting from root (empty path), descend into first/last child\n if (currentPath.length === 0) {\n const children = getChildren(snapshot, [])\n if (children.length === 0) {\n return undefined\n }\n const firstOrLast = edge === 'end' ? children.at(-1)! : children.at(0)!\n const nodeChildren = getChildren(snapshot, firstOrLast.path)\n if (nodeChildren.length === 0) {\n return firstOrLast\n }\n currentPath = firstOrLast.path\n } else {\n // Check if the node at path is already a leaf\n const entry = getNode(snapshot, currentPath)\n if (!entry) {\n return undefined\n }\n const children = getChildren(snapshot, currentPath)\n if (children.length === 0) {\n return entry\n }\n }\n\n // Descend to deepest leaf\n while (true) {\n const children = getChildren(snapshot, currentPath)\n if (children.length === 0) {\n const entry = getNode(snapshot, currentPath)\n return entry ?? undefined\n }\n const child = edge === 'end' ? children.at(-1)! : children.at(0)!\n currentPath = child.path\n }\n}\n","import {isSpan} from '@portabletext/schema'\nimport type {Path} from '../engine/interfaces/path'\nimport {getNode} from './get-node'\nimport {getNodes} from './get-nodes'\nimport type {TraversalSnapshot} from './traversal-snapshot'\n\n/**\n * Get the concatenated text content of the node at a given path.\n *\n * @beta\n */\nexport function getText(\n snapshot: TraversalSnapshot,\n path: Path,\n): string | undefined {\n const entry = getNode(snapshot, path)\n\n if (!entry) {\n return undefined\n }\n\n if (isSpan({schema: snapshot.context.schema}, entry.node)) {\n return entry.node.text\n }\n\n let text = ''\n\n for (const descendant of getNodes(snapshot, {at: path})) {\n if (isSpan({schema: snapshot.context.schema}, descendant.node)) {\n text += descendant.node.text\n }\n }\n\n return text\n}\n","import {isSpan, type PortableTextSpan} from '@portabletext/schema'\nimport type {Path} from '../engine/interfaces/path'\nimport {getNode} from './get-node'\nimport type {TraversalSnapshot} from './traversal-snapshot'\n\n/**\n * Get the span node at a given path.\n *\n * @beta\n */\nexport function getSpanNode(\n snapshot: TraversalSnapshot,\n path: Path,\n): {node: PortableTextSpan; path: Path} | undefined {\n const entry = getNode(snapshot, path)\n\n if (!entry) {\n return undefined\n }\n\n if (!isSpan({schema: snapshot.context.schema}, entry.node)) {\n return undefined\n }\n\n return {node: entry.node, path: entry.path}\n}\n","import {isTextBlock, type PortableTextTextBlock} from '@portabletext/schema'\nimport type {Path} from '../engine/interfaces/path'\nimport {getNode} from './get-node'\nimport type {TraversalSnapshot} from './traversal-snapshot'\n\n/**\n * Get the text block node at a given path.\n *\n * @beta\n */\nexport function getTextBlockNode(\n snapshot: TraversalSnapshot,\n path: Path,\n): {node: PortableTextTextBlock; path: Path} | undefined {\n const entry = getNode(snapshot, path)\n\n if (!entry) {\n return undefined\n }\n\n if (!isTextBlock({schema: snapshot.context.schema}, entry.node)) {\n return undefined\n }\n\n return {node: entry.node, path: entry.path}\n}\n","import {getSubSchema, type Schema} from '@portabletext/schema'\nimport type {Containers} from '../schema/resolve-containers'\n\n/**\n * Return a `Schema` that contains every named member declared anywhere\n * in the editor's schema graph that is reachable from a position where text\n * is edited - the root schema merged with the sub-schema of every registered\n * container whose field accepts text blocks, deduped by name. Useful for\n * rendering a static toolbar whose buttons stay stable across selection\n * moves while still reflecting everything that could plausibly be edited or\n * inserted somewhere.\n *\n * Containers whose field does NOT accept text blocks (e.g. a `table`\n * container whose `rows` field only accepts `row` objects, or a `row`\n * container whose `cells` field only accepts `cell` objects) are\n * **structural**: their immediate `of` types are organizational, not\n * insertable user content. Those structural types are excluded from the\n * union. Their nested text-block-accepting descendants (e.g. a `cell`\n * that contains a `content` field of `{type: 'block'}`) are reached via\n * those descendants' own container registration.\n *\n * Pair with `getPathSubSchema` (or a path-based intersection across a\n * range) to determine which of the union's members are applicable at the\n * current selection.\n *\n * @beta\n */\nexport function getUnionSchema(schema: Schema, containers: Containers): Schema {\n const decorators = mergeByName(schema.decorators, [])\n const annotations = mergeByName(schema.annotations, [])\n const lists = mergeByName(schema.lists, [])\n const styles = mergeByName(schema.styles, [])\n const inlineObjects = mergeByName(schema.inlineObjects, [])\n const blockObjects = mergeByName(schema.blockObjects, [])\n\n for (const container of containers.values()) {\n if (!acceptsTextBlock(container.field.of, schema.block.name)) {\n continue\n }\n const sub = getSubSchema(schema, container.field.of)\n mergeByName(sub.decorators, decorators)\n mergeByName(sub.annotations, annotations)\n mergeByName(sub.lists, lists)\n mergeByName(sub.styles, styles)\n mergeByName(sub.inlineObjects, inlineObjects)\n mergeByName(sub.blockObjects, blockObjects)\n }\n\n return {\n ...schema,\n decorators,\n annotations,\n lists,\n styles,\n inlineObjects,\n blockObjects,\n }\n}\n\nfunction acceptsTextBlock(\n of: ReadonlyArray<{type: string}>,\n blockName: string,\n): boolean {\n return of.some(\n (member) => member.type === 'block' || member.type === blockName,\n )\n}\n\nfunction mergeByName<T extends {name: string}>(\n source: ReadonlyArray<T>,\n target: Array<T>,\n): Array<T> {\n for (const entry of source) {\n if (target.some((existing) => existing.name === entry.name)) {\n continue\n }\n target.push(entry)\n }\n return target\n}\n","import type {Node} from '../engine/interfaces/node'\nimport type {Path} from '../engine/interfaces/path'\nimport {isKeyedSegment} from '../utils/util.is-keyed-segment'\nimport {getNodeChildren} from './get-children'\nimport type {TraversalSnapshot} from './traversal-snapshot'\n\n/**\n * Determine if a node at the given path is a leaf.\n *\n * A leaf node cannot have children. Spans and non-editable object nodes are\n * leaves. Text blocks and editable container objects are not.\n *\n * @beta\n */\nexport function isLeaf(snapshot: TraversalSnapshot, path: Path): boolean {\n if (path.length === 0) {\n return false\n }\n\n let currentChildren: Array<Node> = snapshot.context.value\n let currentParent:\n | import('../schema/resolve-containers').RegisteredContainer\n | undefined\n\n for (let i = 0; i < path.length; i++) {\n const segment = path[i]!\n let node: Node | undefined\n\n if (isKeyedSegment(segment)) {\n node = currentChildren.find((child) => child._key === segment._key)\n } else if (typeof segment === 'number') {\n node = currentChildren.at(segment)\n } else {\n continue\n }\n\n if (!node) {\n return false\n }\n\n const next = getNodeChildren(snapshot.context, node, currentParent)\n\n if (i === path.length - 1) {\n return next === undefined\n }\n\n if (!next) {\n return false\n }\n\n currentChildren = next.children\n currentParent = next.parent\n }\n\n return false\n}\n","import type {Node} from '../engine/interfaces/node'\nimport type {Path} from '../engine/interfaces/path'\nimport {getChildren} from './get-children'\nimport type {TraversalSnapshot} from './traversal-snapshot'\n\n/**\n * Get the first child of a node at a given path.\n *\n * @beta\n */\nexport function getFirstChild(\n snapshot: TraversalSnapshot,\n path: Path,\n): {node: Node; path: Path} | undefined {\n return getChildren(snapshot, path).at(0)\n}\n"],"names":["getLeaf","snapshot","path","options","edge","currentPath","length","children","getChildren","firstOrLast","at","entry","getNode","undefined","getText","isSpan","schema","context","node","text","descendant","getNodes","getSpanNode","getTextBlockNode","isTextBlock","getUnionSchema","containers","decorators","mergeByName","annotations","lists","styles","inlineObjects","blockObjects","container","values","acceptsTextBlock","field","of","block","name","sub","getSubSchema","blockName","some","member","type","source","target","existing","push","isLeaf","currentChildren","value","currentParent","i","segment","isKeyedSegment","find","child","_key","next","getNodeChildren","parent","getFirstChild"],"mappings":"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"}

@@ -1,5 +0,5 @@

import { isTypedObject, isKeyedSegment, getNode, getAncestors, getChildren, getNodeChildren, isObjectNode } from "./get-ancestor.js";
import { getNode, isTypedObject, isKeyedSegment, getChildren, getNodeChildren, getAncestors, isObjectNode } from "./get-node.js";
import { getSubSchema } from "@portabletext/schema";
function isSpanNode(context, node) {
return isTypedObject(node) && node._type === context.schema.span.name;
function hasNode(snapshot, path) {
return getNode(snapshot, path) !== void 0;
}

@@ -9,42 +9,2 @@ function isTextBlockNode(context, node) {

}
function parentPath(path) {
if (path.length === 0)
throw new Error(`Cannot get the parent path of the root path [${path}].`);
let lastNodeIndex = -1;
for (let i = path.length - 1; i >= 0; i--)
if (isKeyedSegment(path[i]) || typeof path[i] == "number") {
lastNodeIndex = i;
break;
}
if (lastNodeIndex === -1)
return [];
const result = path.slice(0, lastNodeIndex);
return result.length > 0 && typeof result[result.length - 1] == "string" ? result.slice(0, -1) : result;
}
function getParent(snapshot, path) {
if (path.length === 0)
return;
const parent = parentPath(path);
if (parent.length !== 0)
return getNode(snapshot, parent);
}
function isBlock(snapshot, path) {
const parent = getParent(snapshot, path);
return parent ? !isTextBlockNode({
schema: snapshot.context.schema
}, parent.node) : !0;
}
function getBlock(snapshot, path) {
const entry = getNode(snapshot, path);
if (entry && isBlock(snapshot, path) && !isSpanNode({
schema: snapshot.context.schema
}, entry.node))
return {
node: entry.node,
path: entry.path
};
}
function hasNode(snapshot, path) {
return getNode(snapshot, path) !== void 0;
}
function resolveContainerAt(containers, value, path) {

@@ -94,13 +54,2 @@ const keyedIndices = [];

}
function getEnclosingBlock(snapshot, path) {
const direct = getBlock(snapshot, path);
if (direct)
return direct;
for (const ancestor of getAncestors(snapshot, path))
if (isBlock(snapshot, ancestor.path)) {
const block = getBlock(snapshot, ancestor.path);
if (block)
return block;
}
}
function isAncestorPath(path, another) {

@@ -209,2 +158,16 @@ if (path.length >= another.length)

}
function parentPath(path) {
if (path.length === 0)
throw new Error(`Cannot get the parent path of the root path [${path}].`);
let lastNodeIndex = -1;
for (let i = path.length - 1; i >= 0; i--)
if (isKeyedSegment(path[i]) || typeof path[i] == "number") {
lastNodeIndex = i;
break;
}
if (lastNodeIndex === -1)
return [];
const result = path.slice(0, lastNodeIndex);
return result.length > 0 && typeof result[result.length - 1] == "string" ? result.slice(0, -1) : result;
}
function getSibling(snapshot, path, direction) {

@@ -223,5 +186,42 @@ if (path.length === 0)

}
function isSpanNode(context, node) {
return isTypedObject(node) && node._type === context.schema.span.name;
}
function getParent(snapshot, path) {
if (path.length === 0)
return;
const parent = parentPath(path);
if (parent.length !== 0)
return getNode(snapshot, parent);
}
function isBlock(snapshot, path) {
const parent = getParent(snapshot, path);
return parent ? !isTextBlockNode({
schema: snapshot.context.schema
}, parent.node) : !0;
}
function getBlock(snapshot, path) {
const entry = getNode(snapshot, path);
if (entry && isBlock(snapshot, path) && !isSpanNode({
schema: snapshot.context.schema
}, entry.node))
return {
node: entry.node,
path: entry.path
};
}
function isInline(snapshot, path) {
return !isBlock(snapshot, path);
}
function getEnclosingBlock(snapshot, path) {
const direct = getBlock(snapshot, path);
if (direct)
return direct;
for (const ancestor of getAncestors(snapshot, path))
if (isBlock(snapshot, ancestor.path)) {
const block = getBlock(snapshot, ancestor.path);
if (block)
return block;
}
}
function descendToParent(snapshot, path) {

@@ -228,0 +228,0 @@ const ancestors = getAncestors(snapshot, path);

@@ -1,1 +0,1 @@

{"version":3,"file":"get-path-sub-schema.js","sources":["../../src/slate/node/is-span-node.ts","../../src/slate/node/is-text-block-node.ts","../../src/slate/path/parent-path.ts","../../src/node-traversal/get-parent.ts","../../src/node-traversal/is-block.ts","../../src/node-traversal/has-node.ts","../../src/schema/resolve-container-at.ts","../../src/node-traversal/get-enclosing-block.ts","../../src/slate/path/is-ancestor-path.ts","../../src/node-traversal/get-nodes.ts","../../src/node-traversal/get-sibling.ts","../../src/node-traversal/is-inline.ts","../../src/schema/descend-to-parent.ts","../../src/schema/get-enclosing-container.ts","../../src/traversal/get-path-sub-schema.ts"],"sourcesContent":["import type {EditorSchema} from '../../editor/editor-schema'\nimport {isTypedObject} from '../../utils/asserters'\n\nexport type SpanNode = {\n _type: string\n _key: string\n text?: string\n marks?: Array<string>\n}\n\n/**\n * Checks if a node is a span based on `_type` alone, without requiring `text`\n * to be present. This is needed to identify spans before normalization has had\n * a chance to add the missing `text` property.\n */\nexport function isSpanNode(\n context: {schema: EditorSchema},\n node: unknown,\n): node is SpanNode {\n return isTypedObject(node) && node._type === context.schema.span.name\n}\n","import type {PortableTextObject, PortableTextSpan} from '@portabletext/schema'\nimport type {EditorSchema} from '../../editor/editor-schema'\nimport {isTypedObject} from '../../utils/asserters'\n\ntype TextBlockNode = {\n _type: string\n _key: string\n children?: Array<PortableTextSpan | PortableTextObject>\n markDefs?: Array<PortableTextObject>\n style?: string\n listItem?: string\n level?: number\n}\n\n/**\n * Checks if a node is a text block based on `_type` alone, without requiring\n * `children` to be present. This is needed to identify text blocks before\n * normalization has had a chance to add the missing `children` property.\n */\nexport function isTextBlockNode(\n context: {schema: EditorSchema},\n node: unknown,\n): node is TextBlockNode {\n return isTypedObject(node) && node._type === context.schema.block.name\n}\n","import {isKeyedSegment} from '../../utils/util.is-keyed-segment'\nimport type {Path} from '../interfaces/path'\n\n/**\n * Get the parent path of a path.\n *\n * Drops the last node segment (keyed or numeric) and the preceding field\n * name string.\n *\n * [{_key:'b1'}, 'children', {_key:'s1'}] → [{_key:'b1'}]\n * [{_key:'b1'}, 'children', 0] → [{_key:'b1'}]\n * [{_key:'b1'}] → []\n */\nexport function parentPath(path: Path): Path {\n if (path.length === 0) {\n throw new Error(`Cannot get the parent path of the root path [${path}].`)\n }\n\n let lastNodeIndex = -1\n for (let i = path.length - 1; i >= 0; i--) {\n if (isKeyedSegment(path[i]) || typeof path[i] === 'number') {\n lastNodeIndex = i\n break\n }\n }\n\n if (lastNodeIndex === -1) {\n return []\n }\n\n const result = path.slice(0, lastNodeIndex)\n\n if (result.length > 0 && typeof result[result.length - 1] === 'string') {\n return result.slice(0, -1)\n }\n\n return result\n}\n","import type {Node} from '../slate/interfaces/node'\nimport type {Path} from '../slate/interfaces/path'\nimport {parentPath} from '../slate/path/parent-path'\nimport {getNode} from './get-node'\nimport type {TraversalSnapshot} from './traversal-snapshot'\n\n/**\n * Get the parent of a node at a given path.\n *\n * @beta\n */\nexport function getParent(\n snapshot: TraversalSnapshot,\n path: Path,\n): {node: Node; path: Path} | undefined {\n if (path.length === 0) {\n return undefined\n }\n\n const parent = parentPath(path)\n\n if (parent.length === 0) {\n return undefined\n }\n\n return getNode(snapshot, parent)\n}\n","import type {PortableTextBlock} from '@portabletext/schema'\nimport type {Path} from '../slate/interfaces/path'\nimport {isSpanNode} from '../slate/node/is-span-node'\nimport {isTextBlockNode} from '../slate/node/is-text-block-node'\nimport {getNode} from './get-node'\nimport {getParent} from './get-parent'\nimport type {TraversalSnapshot} from './traversal-snapshot'\n\n/**\n * Determine if a node at the given path is a block.\n *\n * A node is a block if its parent is not a text block. Top-level nodes\n * (direct children of the editor) are always blocks. Children of text blocks\n * (spans and inline objects) are not blocks. Children of containers are\n * blocks within that container.\n *\n * @beta\n */\nexport function isBlock(snapshot: TraversalSnapshot, path: Path): boolean {\n const parent = getParent(snapshot, path)\n\n if (!parent) {\n return true\n }\n\n return !isTextBlockNode({schema: snapshot.context.schema}, parent.node)\n}\n\n/**\n * Get the node at the given path if it is a block.\n *\n * Returns the node narrowed to PortableTextBlock, or undefined if the node\n * doesn't exist or is not a block.\n *\n * @beta\n */\nexport function getBlock(\n snapshot: TraversalSnapshot,\n path: Path,\n): {node: PortableTextBlock; path: Path} | undefined {\n const entry = getNode(snapshot, path)\n\n if (!entry) {\n return undefined\n }\n\n if (!isBlock(snapshot, path)) {\n return undefined\n }\n\n // Narrow the type: a block is never a span (spans always have a text block\n // parent, so isBlock returns false for them).\n if (isSpanNode({schema: snapshot.context.schema}, entry.node)) {\n return undefined\n }\n\n // Node minus PortableTextSpan = PortableTextTextBlock | PortableTextObject = PortableTextBlock\n return {node: entry.node, path: entry.path}\n}\n","import type {Path} from '../slate/interfaces/path'\nimport {getNode} from './get-node'\nimport type {TraversalSnapshot} from './traversal-snapshot'\n\n/**\n * Check if a node exists at a given path.\n *\n * @beta\n */\nexport function hasNode(snapshot: TraversalSnapshot, path: Path): boolean {\n return getNode(snapshot, path) !== undefined\n}\n","import type {Node} from '../slate/interfaces/node'\nimport type {Path} from '../slate/interfaces/path'\nimport {isKeyedSegment} from '../utils/util.is-keyed-segment'\nimport type {\n Containers,\n RegisteredContainer,\n RegisteredPositional,\n} from './container-types'\n\n/**\n * Walk the editor value following `path` and return the\n * {@link RegisteredContainer} or {@link RegisteredPositional} that applies\n * at `path`'s target position.\n *\n * Resolution rules at each step:\n *\n * 1. **Positional override.** If the current parent declares the\n * child's `_type` in its `of`, the positional entry wins.\n * Used to resolve same-`_type` registered under different\n * parents with different `field` values.\n *\n * 2. **Global fallback.** If the parent has no positional override,\n * fall back to the top-level entry for `_type` in\n * `containers`.\n *\n * 3. **Chain validity.** If any ancestor along the path has no\n * resolved container entry (unregistered or not reachable as a\n * container at its position), return `undefined`.\n *\n * Returns `undefined` when the target's `_type` is not registered\n * at this position. Returns a {@link RegisteredPositional} when the target\n * resolves to a leaf in a positional `of` (terminal node with no\n * editable children).\n *\n * @alpha\n */\nexport function resolveContainerAt(\n containers: Containers,\n value: ReadonlyArray<Node>,\n path: Path,\n): RegisteredContainer | RegisteredPositional | undefined {\n const keyedIndices: Array<number> = []\n for (let index = 0; index < path.length; index++) {\n if (isKeyedSegment(path[index])) {\n keyedIndices.push(index)\n }\n }\n if (keyedIndices.length === 0) {\n return undefined\n }\n\n let currentChildren: ReadonlyArray<Node> = value\n let parent: RegisteredContainer | undefined\n let resolved: RegisteredContainer | RegisteredPositional | undefined\n const targetKeyedIndex = keyedIndices[keyedIndices.length - 1]!\n\n let segmentIndex = 0\n while (segmentIndex <= targetKeyedIndex) {\n const segment = path[segmentIndex]!\n if (typeof segment === 'string') {\n segmentIndex++\n continue\n }\n\n let node: Node | undefined\n if (isKeyedSegment(segment)) {\n node = currentChildren.find((child) => child._key === segment._key)\n } else if (typeof segment === 'number') {\n node = currentChildren.at(segment)\n } else {\n return undefined\n }\n if (!node) {\n return undefined\n }\n\n resolved = resolveNodeEntry(containers, parent, node)\n if (!resolved) {\n return undefined\n }\n\n if (segmentIndex < targetKeyedIndex) {\n // Walk one more level. The resolved entry must be a container\n // (have children) for descent to continue.\n if (!('field' in resolved)) {\n return undefined\n }\n const fieldValue = (node as Record<string, unknown>)[resolved.field.name]\n if (!Array.isArray(fieldValue)) {\n return undefined\n }\n parent = resolved\n currentChildren = fieldValue as Array<Node>\n }\n segmentIndex++\n }\n\n return resolved\n}\n\nfunction resolveNodeEntry(\n containers: Containers,\n parent: RegisteredContainer | undefined,\n node: Node,\n): RegisteredContainer | RegisteredPositional | undefined {\n if (parent?.of) {\n for (const entry of parent.of) {\n if (entry.type === node._type) {\n return entry\n }\n }\n }\n return containers.get(node._type)\n}\n","import type {PortableTextBlock} from '@portabletext/schema'\nimport type {Path} from '../slate/interfaces/path'\nimport {getAncestors} from './get-ancestors'\nimport {getBlock, isBlock} from './is-block'\nimport type {TraversalSnapshot} from './traversal-snapshot'\n\n/**\n * Walk up from a path to find the nearest enclosing block.\n *\n * Returns the node at the path if it is a block, otherwise the first ancestor\n * that is a block. Works at any depth — inside a container this returns the\n * container-internal block, not the outer container.\n *\n * @beta\n */\nexport function getEnclosingBlock(\n snapshot: TraversalSnapshot,\n path: Path,\n): {node: PortableTextBlock; path: Path} | undefined {\n const direct = getBlock(snapshot, path)\n\n if (direct) {\n return direct\n }\n\n for (const ancestor of getAncestors(snapshot, path)) {\n if (isBlock(snapshot, ancestor.path)) {\n const block = getBlock(snapshot, ancestor.path)\n\n if (block) {\n return block\n }\n }\n }\n\n return undefined\n}\n","import {isKeyedSegment} from '../../utils/util.is-keyed-segment'\nimport type {Path} from '../interfaces/path'\n\nexport function isAncestorPath(path: Path, another: Path): boolean {\n if (path.length >= another.length) {\n return false\n }\n\n for (let i = 0; i < path.length; i++) {\n const segment = path[i]\n const otherSegment = another[i]\n\n if (isKeyedSegment(segment) && isKeyedSegment(otherSegment)) {\n if (segment._key !== otherSegment._key) {\n return false\n }\n } else if (segment !== otherSegment) {\n return false\n }\n }\n\n return true\n}\n","import type {EditorSchema} from '../editor/editor-schema'\nimport type {\n Containers,\n RegisteredContainer,\n} from '../schema/resolve-containers'\nimport type {Node} from '../slate/interfaces/node'\nimport type {Path} from '../slate/interfaces/path'\nimport {isAncestorPath} from '../slate/path/is-ancestor-path'\nimport {isKeyedSegment} from '../utils/util.is-keyed-segment'\nimport {getChildren, getNodeChildren} from './get-children'\nimport type {TraversalSnapshot} from './traversal-snapshot'\n\n/**\n * Get the descendant nodes of the node at a given path.\n *\n * When `from` and `to` are provided, performs a range-bounded DFS traversal,\n * yielding only nodes between `from` and `to` (inclusive). Both paths are\n * always in document order: `from` is the earlier path, `to` is the later\n * path. The `reverse` flag controls iteration direction within that range.\n *\n * When `match` is provided, only yields nodes where the predicate returns true.\n * The traversal still visits all nodes in range - `match` is a filter, not a\n * traversal control.\n *\n * When `at` is provided, traverses descendants of the node at that path\n * instead of the root.\n */\nexport function* getNodes(\n snapshot: TraversalSnapshot,\n options: {\n at?: Path\n from?: Path\n to?: Path\n match?: (node: Node, path: Path) => boolean\n reverse?: boolean\n } = {},\n): Generator<{node: Node; path: Path}, void, undefined> {\n const {at = [], from, to, match, reverse = false} = options\n\n if (from === undefined && to === undefined) {\n yield* getNodesSimple(snapshot, at, {match, reverse})\n return\n }\n\n yield* getNodesInRange(snapshot, at, {from, to, match, reverse})\n}\n\n/**\n * Get descendant nodes of a standalone node (not in the editor tree).\n * Used for cases like getDirtyPaths where the node hasn't been inserted yet.\n */\nexport function* getNodeDescendants(\n context: {\n schema: EditorSchema\n containers: Containers\n },\n node: Node | {value: Array<Node>},\n): Generator<{node: Node; path: Path}, void, undefined> {\n // The editor root wrapper ({value: [...]}) is not a real node, so its field\n // name is not part of paths. For standalone nodes (a real {_key, _type, ...}\n // passed in by callers like getDirtyPaths), the field name IS part of the\n // path.\n const isRoot = !('_key' in node) && !('_type' in node)\n yield* walkStandalone(context, node, [], isRoot)\n}\n\nfunction* walkStandalone(\n context: {\n schema: EditorSchema\n containers: Containers\n },\n node: Node | {value: Array<Node>},\n path: Path,\n isRoot: boolean,\n parent?: RegisteredContainer,\n): Generator<{node: Node; path: Path}, void, undefined> {\n const next = getNodeChildren(context, node, parent)\n if (!next) {\n return\n }\n\n for (const child of next.children) {\n const childPath: Path = isRoot\n ? [{_key: child._key}]\n : [...path, next.fieldName, {_key: child._key}]\n yield {node: child, path: childPath}\n yield* walkStandalone(context, child, childPath, false, next.parent)\n }\n}\n\n/**\n * Simple recursive DFS - the original behavior.\n * Yields all descendants of the node at `path`.\n */\nfunction* getNodesSimple(\n snapshot: TraversalSnapshot,\n path: Path,\n options: {\n match?: (node: Node, path: Path) => boolean\n reverse?: boolean\n },\n): Generator<{node: Node; path: Path}, void, undefined> {\n const {match, reverse = false} = options\n\n const children = getChildren(snapshot, path)\n\n const entries = reverse ? [...children].reverse() : children\n\n for (const entry of entries) {\n if (!match || match(entry.node, entry.path)) {\n yield entry\n }\n\n yield* getNodesSimple(snapshot, entry.path, options)\n }\n}\n\n/**\n * Compare two keyed paths in document order. Returns -1, 0, or 1.\n *\n * Descends both paths from the root in a single pass, advancing\n * `currentNode` and `currentChildren` together so each level costs\n * one keyed-segment scan instead of an O(depth) walk from root.\n *\n * Uses `blockIndexMap` for O(1) lookup at the root level. Deeper\n * levels fall back to a linear scan of the current sibling array.\n */\nfunction comparePathsInTree(\n snapshot: TraversalSnapshot,\n pathA: Path,\n pathB: Path,\n): -1 | 0 | 1 {\n const keysA = pathA.filter(isKeyedSegment)\n const keysB = pathB.filter(isKeyedSegment)\n\n const {context} = snapshot\n let currentChildren: Array<Node> = context.value\n let currentParent: RegisteredContainer | undefined\n let isRootLevel = true\n\n const minDepth = Math.min(keysA.length, keysB.length)\n\n for (let depth = 0; depth < minDepth; depth++) {\n const keyA = keysA[depth]!\n const keyB = keysB[depth]!\n\n if (keyA._key === keyB._key) {\n // Same node at this depth: descend into its children for the next\n // iteration. The root level can short-circuit via blockIndexMap;\n // deeper levels scan the current sibling array.\n let matchedNode: Node | undefined\n if (isRootLevel && snapshot.blockIndexMap.has(keyA._key)) {\n const index = snapshot.blockIndexMap.get(keyA._key)\n if (index !== undefined) {\n matchedNode = currentChildren[index]\n }\n } else {\n matchedNode = currentChildren.find((c) => c._key === keyA._key)\n }\n if (!matchedNode) {\n return 0\n }\n const next = getNodeChildren(context, matchedNode, currentParent)\n if (!next) {\n return 0\n }\n currentChildren = next.children\n currentParent = next.parent\n\n isRootLevel = false\n continue\n }\n\n if (isRootLevel) {\n const indexA = snapshot.blockIndexMap.get(keyA._key) ?? -1\n const indexB = snapshot.blockIndexMap.get(keyB._key) ?? -1\n if (indexA !== -1 && indexB !== -1) {\n if (indexA < indexB) {\n return -1\n }\n if (indexA > indexB) {\n return 1\n }\n return 0\n }\n }\n\n let indexA = -1\n let indexB = -1\n for (let i = 0; i < currentChildren.length; i++) {\n const sibling = currentChildren[i]!\n if (sibling._key === keyA._key) {\n indexA = i\n }\n if (sibling._key === keyB._key) {\n indexB = i\n }\n if (indexA !== -1 && indexB !== -1) {\n break\n }\n }\n\n if (indexA < indexB) {\n return -1\n }\n if (indexA > indexB) {\n return 1\n }\n\n return 0\n }\n\n // One path is a prefix of the other (ancestor relationship)\n // In DFS order, shorter path (ancestor) comes first\n if (keysA.length < keysB.length) {\n return -1\n }\n if (keysA.length > keysB.length) {\n return 1\n }\n\n return 0\n}\n\n/**\n * Range-bounded recursive DFS traversal.\n *\n * `from` and `to` are always in document order (from is earlier, to is\n * later), regardless of traversal direction.\n */\nfunction* getNodesInRange(\n snapshot: TraversalSnapshot,\n path: Path,\n options: {\n from?: Path\n to?: Path\n match?: (node: Node, path: Path) => boolean\n reverse?: boolean\n },\n): Generator<{node: Node; path: Path}, void, undefined> {\n const {from, to, match, reverse = false} = options\n\n const children = getChildren(snapshot, path)\n const entries = reverse ? [...children].reverse() : children\n\n for (const entry of entries) {\n if (canStopTraversal(snapshot, entry.path, from, to, reverse)) {\n return\n }\n\n if (!couldContainInRangeNodes(snapshot, entry.path, from, to)) {\n continue\n }\n\n if (isInRange(snapshot, entry.path, from, to)) {\n if (!match || match(entry.node, entry.path)) {\n yield entry\n }\n }\n\n yield* getNodesInRange(snapshot, entry.path, options)\n }\n}\n\n/**\n * Check if a node is within the [from, to] range in document order.\n * Both bounds are inclusive. Ancestor nodes of from or to are also\n * considered in range since they contain the range boundary.\n */\nfunction isInRange(\n snapshot: TraversalSnapshot,\n nodePath: Path,\n from: Path | undefined,\n to: Path | undefined,\n): boolean {\n if (\n from !== undefined &&\n comparePathsInTree(snapshot, nodePath, from) === -1\n ) {\n if (!isAncestorPath(nodePath, from)) {\n return false\n }\n }\n\n if (to !== undefined && comparePathsInTree(snapshot, nodePath, to) === 1) {\n if (!isAncestorPath(nodePath, to)) {\n return false\n }\n }\n\n return true\n}\n\n/**\n * Check if a subtree rooted at `nodePath` could contain any nodes in the\n * [from, to] range.\n */\nfunction couldContainInRangeNodes(\n snapshot: TraversalSnapshot,\n nodePath: Path,\n from: Path | undefined,\n to: Path | undefined,\n): boolean {\n if (isInRange(snapshot, nodePath, from, to)) {\n return true\n }\n\n if (from !== undefined && isAncestorPath(nodePath, from)) {\n return true\n }\n\n if (to !== undefined && isAncestorPath(nodePath, to)) {\n return true\n }\n\n return false\n}\n\n/**\n * Check if all remaining nodes in iteration order will be outside the range.\n */\nfunction canStopTraversal(\n snapshot: TraversalSnapshot,\n nodePath: Path,\n from: Path | undefined,\n to: Path | undefined,\n reverse: boolean,\n): boolean {\n if (reverse) {\n if (from === undefined) {\n return false\n }\n\n return (\n comparePathsInTree(snapshot, nodePath, from) === -1 &&\n !isAncestorPath(nodePath, from)\n )\n }\n\n if (to === undefined) {\n return false\n }\n\n return comparePathsInTree(snapshot, nodePath, to) === 1\n}\n","import type {Node} from '../slate/interfaces/node'\nimport type {Path} from '../slate/interfaces/path'\nimport {parentPath} from '../slate/path/parent-path'\nimport {isKeyedSegment} from '../utils/util.is-keyed-segment'\nimport {getChildren} from './get-children'\nimport type {TraversalSnapshot} from './traversal-snapshot'\n\n/**\n * Get the next or previous sibling of the node at a given path.\n *\n * @beta\n */\nexport function getSibling(\n snapshot: TraversalSnapshot,\n path: Path,\n direction: 'next' | 'previous',\n): {node: Node; path: Path} | undefined {\n if (path.length === 0) {\n return undefined\n }\n\n const lastSegment = path.at(-1)\n\n if (!isKeyedSegment(lastSegment)) {\n return undefined\n }\n\n const parent = parentPath(path)\n const children = getChildren(snapshot, parent)\n\n const currentIndex = children.findIndex(\n (child) => child.node._key === lastSegment._key,\n )\n\n if (currentIndex === -1) {\n return undefined\n }\n\n const siblingIndex =\n direction === 'next' ? currentIndex + 1 : currentIndex - 1\n\n if (siblingIndex < 0 || siblingIndex >= children.length) {\n return undefined\n }\n\n return children[siblingIndex]\n}\n","import type {Path} from '../slate/interfaces/path'\nimport {isBlock} from './is-block'\nimport type {TraversalSnapshot} from './traversal-snapshot'\n\n/**\n * Determine if a node at the given path is inline.\n *\n * A node is inline if its parent is a text block. This is the inverse of\n * `isBlock`. Top-level nodes are never inline.\n *\n * @beta\n */\nexport function isInline(snapshot: TraversalSnapshot, path: Path): boolean {\n return !isBlock(snapshot, path)\n}\n","import {getAncestors} from '../node-traversal/get-ancestors'\nimport type {TraversalSnapshot} from '../node-traversal/traversal-snapshot'\nimport type {Path} from '../slate/interfaces/path'\nimport {isObjectNode} from '../slate/node/is-object-node'\nimport type {RegisteredContainer} from './container-types'\nimport {resolveContainerAt} from './resolve-container-at'\n\n/**\n * Descent primitive: return the immediate parent\n * {@link RegisteredContainer} of the node at `path` (and that parent's\n * path), or `undefined` when the target's immediate parent is the\n * editor root, when no object-node ancestor is a registered container,\n * or when descent hits an ancestor whose `_type` is not registered.\n *\n * Walks ancestors and resolves each object-node ancestor positionally\n * via {@link resolveContainerAt}. Text-block and span ancestors are\n * skipped - \"container\" here means the enclosing object container,\n * not the text-block holding spans.\n */\nexport function descendToParent(\n snapshot: TraversalSnapshot,\n path: Path,\n): {parent: RegisteredContainer; parentPath: Path} | undefined {\n const ancestors = getAncestors(snapshot, path)\n for (const ancestor of ancestors) {\n if (!isObjectNode({schema: snapshot.context.schema}, ancestor.node)) {\n continue\n }\n const resolved = resolveContainerAt(\n snapshot.context.containers,\n snapshot.context.value,\n ancestor.path,\n )\n if (!resolved || !('field' in resolved)) {\n return undefined\n }\n return {parent: resolved, parentPath: ancestor.path}\n }\n return undefined\n}\n","import type {OfDefinition} from '@portabletext/schema'\nimport type {TraversalSnapshot} from '../node-traversal/traversal-snapshot'\nimport type {Path} from '../slate/interfaces/path'\nimport {descendToParent} from './descend-to-parent'\n\n/**\n * Return the immediate registered-container ancestor of `path` along\n * with its `of` array (the schema definitions accepted at this position).\n *\n * Position-aware: nested-only registrations (e.g. `cell` registered\n * only inside `table.row.of`) are recognized via the same descent\n * primitive used by all parent-aware traversal.\n *\n * Returns `undefined` when `path` has no registered-container ancestor\n * (i.e. is at the document root) or when descent hits a leaf-resolved\n * ancestor.\n */\nexport function getEnclosingContainer(\n snapshot: TraversalSnapshot,\n path: Path,\n):\n | {\n of: ReadonlyArray<OfDefinition>\n path: Path\n }\n | undefined {\n const descent = descendToParent(snapshot, path)\n if (!descent) {\n return undefined\n }\n return {\n of: descent.parent.field.of,\n path: descent.parentPath,\n }\n}\n","import {getSubSchema, type Schema} from '@portabletext/schema'\nimport type {TraversalSnapshot} from '../node-traversal/traversal-snapshot'\nimport {getEnclosingContainer} from '../schema/get-enclosing-container'\nimport type {Path} from '../slate/interfaces/path'\n\n/**\n * Return the `Schema` view that applies at a given path.\n *\n * For paths at the root of the document, or for paths where no ancestor is\n * a registered container, returns the top-level schema. For paths inside a\n * container, walks ancestors to find the nearest container and returns the\n * sub-schema derived from its `of` declaration.\n *\n * @beta\n */\nexport function getPathSubSchema(\n snapshot: TraversalSnapshot,\n path: Path,\n): Schema {\n const enclosing = getEnclosingContainer(snapshot, path)\n\n if (!enclosing) {\n return snapshot.context.schema\n }\n\n return getSubSchema(snapshot.context.schema, enclosing.of)\n}\n"],"names":["isSpanNode","context","node","isTypedObject","_type","schema","span","name","isTextBlockNode","block","parentPath","path","length","Error","lastNodeIndex","i","isKeyedSegment","result","slice","getParent","snapshot","parent","getNode","isBlock","getBlock","entry","hasNode","undefined","resolveContainerAt","containers","value","keyedIndices","index","push","currentChildren","resolved","targetKeyedIndex","segmentIndex","segment","find","child","_key","at","resolveNodeEntry","fieldValue","field","Array","isArray","of","type","get","getEnclosingBlock","direct","ancestor","getAncestors","isAncestorPath","another","otherSegment","getNodes","options","from","to","match","reverse","getNodesSimple","getNodesInRange","children","getChildren","entries","comparePathsInTree","pathA","pathB","keysA","filter","keysB","currentParent","isRootLevel","minDepth","Math","min","depth","keyA","keyB","matchedNode","blockIndexMap","has","c","next","getNodeChildren","indexA","indexB","sibling","canStopTraversal","couldContainInRangeNodes","isInRange","nodePath","getSibling","direction","lastSegment","currentIndex","findIndex","siblingIndex","isInline","descendToParent","ancestors","isObjectNode","getEnclosingContainer","descent","getPathSubSchema","enclosing","getSubSchema"],"mappings":"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"}
{"version":3,"file":"get-path-sub-schema.js","sources":["../../src/node-traversal/has-node.ts","../../src/engine/node/is-text-block-node.ts","../../src/schema/resolve-container-at.ts","../../src/engine/path/is-ancestor-path.ts","../../src/node-traversal/get-nodes.ts","../../src/engine/path/parent-path.ts","../../src/node-traversal/get-sibling.ts","../../src/engine/node/is-span-node.ts","../../src/node-traversal/get-parent.ts","../../src/node-traversal/is-block.ts","../../src/node-traversal/is-inline.ts","../../src/node-traversal/get-enclosing-block.ts","../../src/schema/descend-to-parent.ts","../../src/schema/get-enclosing-container.ts","../../src/traversal/get-path-sub-schema.ts"],"sourcesContent":["import type {Path} from '../engine/interfaces/path'\nimport {getNode} from './get-node'\nimport type {TraversalSnapshot} from './traversal-snapshot'\n\n/**\n * Check if a node exists at a given path.\n *\n * @beta\n */\nexport function hasNode(snapshot: TraversalSnapshot, path: Path): boolean {\n return getNode(snapshot, path) !== undefined\n}\n","import type {PortableTextObject, PortableTextSpan} from '@portabletext/schema'\nimport type {EditorSchema} from '../../editor/editor-schema'\nimport {isTypedObject} from '../../utils/asserters'\n\ntype TextBlockNode = {\n _type: string\n _key: string\n children?: Array<PortableTextSpan | PortableTextObject>\n markDefs?: Array<PortableTextObject>\n style?: string\n listItem?: string\n level?: number\n}\n\n/**\n * Checks if a node is a text block based on `_type` alone, without requiring\n * `children` to be present. This is needed to identify text blocks before\n * normalization has had a chance to add the missing `children` property.\n */\nexport function isTextBlockNode(\n context: {schema: EditorSchema},\n node: unknown,\n): node is TextBlockNode {\n return isTypedObject(node) && node._type === context.schema.block.name\n}\n","import type {Node} from '../engine/interfaces/node'\nimport type {Path} from '../engine/interfaces/path'\nimport {isKeyedSegment} from '../utils/util.is-keyed-segment'\nimport type {\n Containers,\n RegisteredContainer,\n RegisteredPositional,\n} from './container-types'\n\n/**\n * Walk the editor value following `path` and return the\n * {@link RegisteredContainer} or {@link RegisteredPositional} that applies\n * at `path`'s target position.\n *\n * Resolution rules at each step:\n *\n * 1. **Positional override.** If the current parent declares the\n * child's `_type` in its `of`, the positional entry wins.\n * Used to resolve same-`_type` registered under different\n * parents with different `field` values.\n *\n * 2. **Global fallback.** If the parent has no positional override,\n * fall back to the top-level entry for `_type` in\n * `containers`.\n *\n * 3. **Chain validity.** If any ancestor along the path has no\n * resolved container entry (unregistered or not reachable as a\n * container at its position), return `undefined`.\n *\n * Returns `undefined` when the target's `_type` is not registered\n * at this position. Returns a {@link RegisteredPositional} when the target\n * resolves to a leaf in a positional `of` (terminal node with no\n * editable children).\n *\n * @alpha\n */\nexport function resolveContainerAt(\n containers: Containers,\n value: ReadonlyArray<Node>,\n path: Path,\n): RegisteredContainer | RegisteredPositional | undefined {\n const keyedIndices: Array<number> = []\n for (let index = 0; index < path.length; index++) {\n if (isKeyedSegment(path[index])) {\n keyedIndices.push(index)\n }\n }\n if (keyedIndices.length === 0) {\n return undefined\n }\n\n let currentChildren: ReadonlyArray<Node> = value\n let parent: RegisteredContainer | undefined\n let resolved: RegisteredContainer | RegisteredPositional | undefined\n const targetKeyedIndex = keyedIndices[keyedIndices.length - 1]!\n\n let segmentIndex = 0\n while (segmentIndex <= targetKeyedIndex) {\n const segment = path[segmentIndex]!\n if (typeof segment === 'string') {\n segmentIndex++\n continue\n }\n\n let node: Node | undefined\n if (isKeyedSegment(segment)) {\n node = currentChildren.find((child) => child._key === segment._key)\n } else if (typeof segment === 'number') {\n node = currentChildren.at(segment)\n } else {\n return undefined\n }\n if (!node) {\n return undefined\n }\n\n resolved = resolveNodeEntry(containers, parent, node)\n if (!resolved) {\n return undefined\n }\n\n if (segmentIndex < targetKeyedIndex) {\n // Walk one more level. The resolved entry must be a container\n // (have children) for descent to continue.\n if (!('field' in resolved)) {\n return undefined\n }\n const fieldValue = (node as Record<string, unknown>)[resolved.field.name]\n if (!Array.isArray(fieldValue)) {\n return undefined\n }\n parent = resolved\n currentChildren = fieldValue as Array<Node>\n }\n segmentIndex++\n }\n\n return resolved\n}\n\nfunction resolveNodeEntry(\n containers: Containers,\n parent: RegisteredContainer | undefined,\n node: Node,\n): RegisteredContainer | RegisteredPositional | undefined {\n if (parent?.of) {\n for (const entry of parent.of) {\n if (entry.type === node._type) {\n return entry\n }\n }\n }\n return containers.get(node._type)\n}\n","import {isKeyedSegment} from '../../utils/util.is-keyed-segment'\nimport type {Path} from '../interfaces/path'\n\nexport function isAncestorPath(path: Path, another: Path): boolean {\n if (path.length >= another.length) {\n return false\n }\n\n for (let i = 0; i < path.length; i++) {\n const segment = path[i]\n const otherSegment = another[i]\n\n if (isKeyedSegment(segment) && isKeyedSegment(otherSegment)) {\n if (segment._key !== otherSegment._key) {\n return false\n }\n } else if (segment !== otherSegment) {\n return false\n }\n }\n\n return true\n}\n","import type {EditorSchema} from '../editor/editor-schema'\nimport type {Node} from '../engine/interfaces/node'\nimport type {Path} from '../engine/interfaces/path'\nimport {isAncestorPath} from '../engine/path/is-ancestor-path'\nimport type {\n Containers,\n RegisteredContainer,\n} from '../schema/resolve-containers'\nimport {isKeyedSegment} from '../utils/util.is-keyed-segment'\nimport {getChildren, getNodeChildren} from './get-children'\nimport type {TraversalSnapshot} from './traversal-snapshot'\n\n/**\n * Get the descendant nodes of the node at a given path.\n *\n * When `from` and `to` are provided, performs a range-bounded DFS traversal,\n * yielding only nodes between `from` and `to` (inclusive). Both paths are\n * always in document order: `from` is the earlier path, `to` is the later\n * path. The `reverse` flag controls iteration direction within that range.\n *\n * When `match` is provided, only yields nodes where the predicate returns true.\n * The traversal still visits all nodes in range - `match` is a filter, not a\n * traversal control.\n *\n * When `at` is provided, traverses descendants of the node at that path\n * instead of the root.\n */\nexport function* getNodes(\n snapshot: TraversalSnapshot,\n options: {\n at?: Path\n from?: Path\n to?: Path\n match?: (node: Node, path: Path) => boolean\n reverse?: boolean\n } = {},\n): Generator<{node: Node; path: Path}, void, undefined> {\n const {at = [], from, to, match, reverse = false} = options\n\n if (from === undefined && to === undefined) {\n yield* getNodesSimple(snapshot, at, {match, reverse})\n return\n }\n\n yield* getNodesInRange(snapshot, at, {from, to, match, reverse})\n}\n\n/**\n * Get descendant nodes of a standalone node (not in the editor tree).\n * Used for cases like getDirtyPaths where the node hasn't been inserted yet.\n */\nexport function* getNodeDescendants(\n context: {\n schema: EditorSchema\n containers: Containers\n },\n node: Node | {value: Array<Node>},\n): Generator<{node: Node; path: Path}, void, undefined> {\n // The editor root wrapper ({value: [...]}) is not a real node, so its field\n // name is not part of paths. For standalone nodes (a real {_key, _type, ...}\n // passed in by callers like getDirtyPaths), the field name IS part of the\n // path.\n const isRoot = !('_key' in node) && !('_type' in node)\n yield* walkStandalone(context, node, [], isRoot)\n}\n\nfunction* walkStandalone(\n context: {\n schema: EditorSchema\n containers: Containers\n },\n node: Node | {value: Array<Node>},\n path: Path,\n isRoot: boolean,\n parent?: RegisteredContainer,\n): Generator<{node: Node; path: Path}, void, undefined> {\n const next = getNodeChildren(context, node, parent)\n if (!next) {\n return\n }\n\n for (const child of next.children) {\n const childPath: Path = isRoot\n ? [{_key: child._key}]\n : [...path, next.fieldName, {_key: child._key}]\n yield {node: child, path: childPath}\n yield* walkStandalone(context, child, childPath, false, next.parent)\n }\n}\n\n/**\n * Simple recursive DFS - the original behavior.\n * Yields all descendants of the node at `path`.\n */\nfunction* getNodesSimple(\n snapshot: TraversalSnapshot,\n path: Path,\n options: {\n match?: (node: Node, path: Path) => boolean\n reverse?: boolean\n },\n): Generator<{node: Node; path: Path}, void, undefined> {\n const {match, reverse = false} = options\n\n const children = getChildren(snapshot, path)\n\n const entries = reverse ? [...children].reverse() : children\n\n for (const entry of entries) {\n if (!match || match(entry.node, entry.path)) {\n yield entry\n }\n\n yield* getNodesSimple(snapshot, entry.path, options)\n }\n}\n\n/**\n * Compare two keyed paths in document order. Returns -1, 0, or 1.\n *\n * Descends both paths from the root in a single pass, advancing\n * `currentNode` and `currentChildren` together so each level costs\n * one keyed-segment scan instead of an O(depth) walk from root.\n *\n * Uses `blockIndexMap` for O(1) lookup at the root level. Deeper\n * levels fall back to a linear scan of the current sibling array.\n */\nfunction comparePathsInTree(\n snapshot: TraversalSnapshot,\n pathA: Path,\n pathB: Path,\n): -1 | 0 | 1 {\n const keysA = pathA.filter(isKeyedSegment)\n const keysB = pathB.filter(isKeyedSegment)\n\n const {context} = snapshot\n let currentChildren: Array<Node> = context.value\n let currentParent: RegisteredContainer | undefined\n let isRootLevel = true\n\n const minDepth = Math.min(keysA.length, keysB.length)\n\n for (let depth = 0; depth < minDepth; depth++) {\n const keyA = keysA[depth]!\n const keyB = keysB[depth]!\n\n if (keyA._key === keyB._key) {\n // Same node at this depth: descend into its children for the next\n // iteration. The root level can short-circuit via blockIndexMap;\n // deeper levels scan the current sibling array.\n let matchedNode: Node | undefined\n if (isRootLevel && snapshot.blockIndexMap.has(keyA._key)) {\n const index = snapshot.blockIndexMap.get(keyA._key)\n if (index !== undefined) {\n matchedNode = currentChildren[index]\n }\n } else {\n matchedNode = currentChildren.find((c) => c._key === keyA._key)\n }\n if (!matchedNode) {\n return 0\n }\n const next = getNodeChildren(context, matchedNode, currentParent)\n if (!next) {\n return 0\n }\n currentChildren = next.children\n currentParent = next.parent\n\n isRootLevel = false\n continue\n }\n\n if (isRootLevel) {\n const indexA = snapshot.blockIndexMap.get(keyA._key) ?? -1\n const indexB = snapshot.blockIndexMap.get(keyB._key) ?? -1\n if (indexA !== -1 && indexB !== -1) {\n if (indexA < indexB) {\n return -1\n }\n if (indexA > indexB) {\n return 1\n }\n return 0\n }\n }\n\n let indexA = -1\n let indexB = -1\n for (let i = 0; i < currentChildren.length; i++) {\n const sibling = currentChildren[i]!\n if (sibling._key === keyA._key) {\n indexA = i\n }\n if (sibling._key === keyB._key) {\n indexB = i\n }\n if (indexA !== -1 && indexB !== -1) {\n break\n }\n }\n\n if (indexA < indexB) {\n return -1\n }\n if (indexA > indexB) {\n return 1\n }\n\n return 0\n }\n\n // One path is a prefix of the other (ancestor relationship)\n // In DFS order, shorter path (ancestor) comes first\n if (keysA.length < keysB.length) {\n return -1\n }\n if (keysA.length > keysB.length) {\n return 1\n }\n\n return 0\n}\n\n/**\n * Range-bounded recursive DFS traversal.\n *\n * `from` and `to` are always in document order (from is earlier, to is\n * later), regardless of traversal direction.\n */\nfunction* getNodesInRange(\n snapshot: TraversalSnapshot,\n path: Path,\n options: {\n from?: Path\n to?: Path\n match?: (node: Node, path: Path) => boolean\n reverse?: boolean\n },\n): Generator<{node: Node; path: Path}, void, undefined> {\n const {from, to, match, reverse = false} = options\n\n const children = getChildren(snapshot, path)\n const entries = reverse ? [...children].reverse() : children\n\n for (const entry of entries) {\n if (canStopTraversal(snapshot, entry.path, from, to, reverse)) {\n return\n }\n\n if (!couldContainInRangeNodes(snapshot, entry.path, from, to)) {\n continue\n }\n\n if (isInRange(snapshot, entry.path, from, to)) {\n if (!match || match(entry.node, entry.path)) {\n yield entry\n }\n }\n\n yield* getNodesInRange(snapshot, entry.path, options)\n }\n}\n\n/**\n * Check if a node is within the [from, to] range in document order.\n * Both bounds are inclusive. Ancestor nodes of from or to are also\n * considered in range since they contain the range boundary.\n */\nfunction isInRange(\n snapshot: TraversalSnapshot,\n nodePath: Path,\n from: Path | undefined,\n to: Path | undefined,\n): boolean {\n if (\n from !== undefined &&\n comparePathsInTree(snapshot, nodePath, from) === -1\n ) {\n if (!isAncestorPath(nodePath, from)) {\n return false\n }\n }\n\n if (to !== undefined && comparePathsInTree(snapshot, nodePath, to) === 1) {\n if (!isAncestorPath(nodePath, to)) {\n return false\n }\n }\n\n return true\n}\n\n/**\n * Check if a subtree rooted at `nodePath` could contain any nodes in the\n * [from, to] range.\n */\nfunction couldContainInRangeNodes(\n snapshot: TraversalSnapshot,\n nodePath: Path,\n from: Path | undefined,\n to: Path | undefined,\n): boolean {\n if (isInRange(snapshot, nodePath, from, to)) {\n return true\n }\n\n if (from !== undefined && isAncestorPath(nodePath, from)) {\n return true\n }\n\n if (to !== undefined && isAncestorPath(nodePath, to)) {\n return true\n }\n\n return false\n}\n\n/**\n * Check if all remaining nodes in iteration order will be outside the range.\n */\nfunction canStopTraversal(\n snapshot: TraversalSnapshot,\n nodePath: Path,\n from: Path | undefined,\n to: Path | undefined,\n reverse: boolean,\n): boolean {\n if (reverse) {\n if (from === undefined) {\n return false\n }\n\n return (\n comparePathsInTree(snapshot, nodePath, from) === -1 &&\n !isAncestorPath(nodePath, from)\n )\n }\n\n if (to === undefined) {\n return false\n }\n\n return comparePathsInTree(snapshot, nodePath, to) === 1\n}\n","import {isKeyedSegment} from '../../utils/util.is-keyed-segment'\nimport type {Path} from '../interfaces/path'\n\n/**\n * Get the parent path of a path.\n *\n * Drops the last node segment (keyed or numeric) and the preceding field\n * name string.\n *\n * [{_key:'b1'}, 'children', {_key:'s1'}] → [{_key:'b1'}]\n * [{_key:'b1'}, 'children', 0] → [{_key:'b1'}]\n * [{_key:'b1'}] → []\n */\nexport function parentPath(path: Path): Path {\n if (path.length === 0) {\n throw new Error(`Cannot get the parent path of the root path [${path}].`)\n }\n\n let lastNodeIndex = -1\n for (let i = path.length - 1; i >= 0; i--) {\n if (isKeyedSegment(path[i]) || typeof path[i] === 'number') {\n lastNodeIndex = i\n break\n }\n }\n\n if (lastNodeIndex === -1) {\n return []\n }\n\n const result = path.slice(0, lastNodeIndex)\n\n if (result.length > 0 && typeof result[result.length - 1] === 'string') {\n return result.slice(0, -1)\n }\n\n return result\n}\n","import type {Node} from '../engine/interfaces/node'\nimport type {Path} from '../engine/interfaces/path'\nimport {parentPath} from '../engine/path/parent-path'\nimport {isKeyedSegment} from '../utils/util.is-keyed-segment'\nimport {getChildren} from './get-children'\nimport type {TraversalSnapshot} from './traversal-snapshot'\n\n/**\n * Get the next or previous sibling of the node at a given path.\n *\n * @beta\n */\nexport function getSibling(\n snapshot: TraversalSnapshot,\n path: Path,\n direction: 'next' | 'previous',\n): {node: Node; path: Path} | undefined {\n if (path.length === 0) {\n return undefined\n }\n\n const lastSegment = path.at(-1)\n\n if (!isKeyedSegment(lastSegment)) {\n return undefined\n }\n\n const parent = parentPath(path)\n const children = getChildren(snapshot, parent)\n\n const currentIndex = children.findIndex(\n (child) => child.node._key === lastSegment._key,\n )\n\n if (currentIndex === -1) {\n return undefined\n }\n\n const siblingIndex =\n direction === 'next' ? currentIndex + 1 : currentIndex - 1\n\n if (siblingIndex < 0 || siblingIndex >= children.length) {\n return undefined\n }\n\n return children[siblingIndex]\n}\n","import type {EditorSchema} from '../../editor/editor-schema'\nimport {isTypedObject} from '../../utils/asserters'\n\nexport type SpanNode = {\n _type: string\n _key: string\n text?: string\n marks?: Array<string>\n}\n\n/**\n * Checks if a node is a span based on `_type` alone, without requiring `text`\n * to be present. This is needed to identify spans before normalization has had\n * a chance to add the missing `text` property.\n */\nexport function isSpanNode(\n context: {schema: EditorSchema},\n node: unknown,\n): node is SpanNode {\n return isTypedObject(node) && node._type === context.schema.span.name\n}\n","import type {Node} from '../engine/interfaces/node'\nimport type {Path} from '../engine/interfaces/path'\nimport {parentPath} from '../engine/path/parent-path'\nimport {getNode} from './get-node'\nimport type {TraversalSnapshot} from './traversal-snapshot'\n\n/**\n * Get the parent of a node at a given path.\n *\n * @beta\n */\nexport function getParent(\n snapshot: TraversalSnapshot,\n path: Path,\n): {node: Node; path: Path} | undefined {\n if (path.length === 0) {\n return undefined\n }\n\n const parent = parentPath(path)\n\n if (parent.length === 0) {\n return undefined\n }\n\n return getNode(snapshot, parent)\n}\n","import type {PortableTextBlock} from '@portabletext/schema'\nimport type {Path} from '../engine/interfaces/path'\nimport {isSpanNode} from '../engine/node/is-span-node'\nimport {isTextBlockNode} from '../engine/node/is-text-block-node'\nimport {getNode} from './get-node'\nimport {getParent} from './get-parent'\nimport type {TraversalSnapshot} from './traversal-snapshot'\n\n/**\n * Determine if a node at the given path is a block.\n *\n * A node is a block if its parent is not a text block. Top-level nodes\n * (direct children of the editor) are always blocks. Children of text blocks\n * (spans and inline objects) are not blocks. Children of containers are\n * blocks within that container.\n *\n * @beta\n */\nexport function isBlock(snapshot: TraversalSnapshot, path: Path): boolean {\n const parent = getParent(snapshot, path)\n\n if (!parent) {\n return true\n }\n\n return !isTextBlockNode({schema: snapshot.context.schema}, parent.node)\n}\n\n/**\n * Get the node at the given path if it is a block.\n *\n * Returns the node narrowed to PortableTextBlock, or undefined if the node\n * doesn't exist or is not a block.\n *\n * @beta\n */\nexport function getBlock(\n snapshot: TraversalSnapshot,\n path: Path,\n): {node: PortableTextBlock; path: Path} | undefined {\n const entry = getNode(snapshot, path)\n\n if (!entry) {\n return undefined\n }\n\n if (!isBlock(snapshot, path)) {\n return undefined\n }\n\n // Narrow the type: a block is never a span (spans always have a text block\n // parent, so isBlock returns false for them).\n if (isSpanNode({schema: snapshot.context.schema}, entry.node)) {\n return undefined\n }\n\n // Node minus PortableTextSpan = PortableTextTextBlock | PortableTextObject = PortableTextBlock\n return {node: entry.node, path: entry.path}\n}\n","import type {Path} from '../engine/interfaces/path'\nimport {isBlock} from './is-block'\nimport type {TraversalSnapshot} from './traversal-snapshot'\n\n/**\n * Determine if a node at the given path is inline.\n *\n * A node is inline if its parent is a text block. This is the inverse of\n * `isBlock`. Top-level nodes are never inline.\n *\n * @beta\n */\nexport function isInline(snapshot: TraversalSnapshot, path: Path): boolean {\n return !isBlock(snapshot, path)\n}\n","import type {PortableTextBlock} from '@portabletext/schema'\nimport type {Path} from '../engine/interfaces/path'\nimport {getAncestors} from './get-ancestors'\nimport {getBlock, isBlock} from './is-block'\nimport type {TraversalSnapshot} from './traversal-snapshot'\n\n/**\n * Walk up from a path to find the nearest enclosing block.\n *\n * Returns the node at the path if it is a block, otherwise the first ancestor\n * that is a block. Works at any depth — inside a container this returns the\n * container-internal block, not the outer container.\n *\n * @beta\n */\nexport function getEnclosingBlock(\n snapshot: TraversalSnapshot,\n path: Path,\n): {node: PortableTextBlock; path: Path} | undefined {\n const direct = getBlock(snapshot, path)\n\n if (direct) {\n return direct\n }\n\n for (const ancestor of getAncestors(snapshot, path)) {\n if (isBlock(snapshot, ancestor.path)) {\n const block = getBlock(snapshot, ancestor.path)\n\n if (block) {\n return block\n }\n }\n }\n\n return undefined\n}\n","import type {Path} from '../engine/interfaces/path'\nimport {isObjectNode} from '../engine/node/is-object-node'\nimport {getAncestors} from '../node-traversal/get-ancestors'\nimport type {TraversalSnapshot} from '../node-traversal/traversal-snapshot'\nimport type {RegisteredContainer} from './container-types'\nimport {resolveContainerAt} from './resolve-container-at'\n\n/**\n * Descent primitive: return the immediate parent\n * {@link RegisteredContainer} of the node at `path` (and that parent's\n * path), or `undefined` when the target's immediate parent is the\n * editor root, when no object-node ancestor is a registered container,\n * or when descent hits an ancestor whose `_type` is not registered.\n *\n * Walks ancestors and resolves each object-node ancestor positionally\n * via {@link resolveContainerAt}. Text-block and span ancestors are\n * skipped - \"container\" here means the enclosing object container,\n * not the text-block holding spans.\n */\nexport function descendToParent(\n snapshot: TraversalSnapshot,\n path: Path,\n): {parent: RegisteredContainer; parentPath: Path} | undefined {\n const ancestors = getAncestors(snapshot, path)\n for (const ancestor of ancestors) {\n if (!isObjectNode({schema: snapshot.context.schema}, ancestor.node)) {\n continue\n }\n const resolved = resolveContainerAt(\n snapshot.context.containers,\n snapshot.context.value,\n ancestor.path,\n )\n if (!resolved || !('field' in resolved)) {\n return undefined\n }\n return {parent: resolved, parentPath: ancestor.path}\n }\n return undefined\n}\n","import type {OfDefinition} from '@portabletext/schema'\nimport type {Path} from '../engine/interfaces/path'\nimport type {TraversalSnapshot} from '../node-traversal/traversal-snapshot'\nimport {descendToParent} from './descend-to-parent'\n\n/**\n * Return the immediate registered-container ancestor of `path` along\n * with its `of` array (the schema definitions accepted at this position).\n *\n * Position-aware: nested-only registrations (e.g. `cell` registered\n * only inside `table.row.of`) are recognized via the same descent\n * primitive used by all parent-aware traversal.\n *\n * Returns `undefined` when `path` has no registered-container ancestor\n * (i.e. is at the document root) or when descent hits a leaf-resolved\n * ancestor.\n */\nexport function getEnclosingContainer(\n snapshot: TraversalSnapshot,\n path: Path,\n):\n | {\n of: ReadonlyArray<OfDefinition>\n path: Path\n }\n | undefined {\n const descent = descendToParent(snapshot, path)\n if (!descent) {\n return undefined\n }\n return {\n of: descent.parent.field.of,\n path: descent.parentPath,\n }\n}\n","import {getSubSchema, type Schema} from '@portabletext/schema'\nimport type {Path} from '../engine/interfaces/path'\nimport type {TraversalSnapshot} from '../node-traversal/traversal-snapshot'\nimport {getEnclosingContainer} from '../schema/get-enclosing-container'\n\n/**\n * Return the `Schema` view that applies at a given path.\n *\n * For paths at the root of the document, or for paths where no ancestor is\n * a registered container, returns the top-level schema. For paths inside a\n * container, walks ancestors to find the nearest container and returns the\n * sub-schema derived from its `of` declaration.\n *\n * @beta\n */\nexport function getPathSubSchema(\n snapshot: TraversalSnapshot,\n path: Path,\n): Schema {\n const enclosing = getEnclosingContainer(snapshot, path)\n\n if (!enclosing) {\n return snapshot.context.schema\n }\n\n return getSubSchema(snapshot.context.schema, enclosing.of)\n}\n"],"names":["hasNode","snapshot","path","getNode","undefined","isTextBlockNode","context","node","isTypedObject","_type","schema","block","name","resolveContainerAt","containers","value","keyedIndices","index","length","isKeyedSegment","push","currentChildren","parent","resolved","targetKeyedIndex","segmentIndex","segment","find","child","_key","at","resolveNodeEntry","fieldValue","field","Array","isArray","of","entry","type","get","isAncestorPath","another","i","otherSegment","getNodes","options","from","to","match","reverse","getNodesSimple","getNodesInRange","children","getChildren","entries","comparePathsInTree","pathA","pathB","keysA","filter","keysB","currentParent","isRootLevel","minDepth","Math","min","depth","keyA","keyB","matchedNode","blockIndexMap","has","c","next","getNodeChildren","indexA","indexB","sibling","canStopTraversal","couldContainInRangeNodes","isInRange","nodePath","parentPath","Error","lastNodeIndex","result","slice","getSibling","direction","lastSegment","currentIndex","findIndex","siblingIndex","isSpanNode","span","getParent","isBlock","getBlock","isInline","getEnclosingBlock","direct","ancestor","getAncestors","descendToParent","ancestors","isObjectNode","getEnclosingContainer","descent","getPathSubSchema","enclosing","getSubSchema"],"mappings":"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"}
import { resolveContainerAt, isInline, isSpanNode, getEnclosingBlock, hasNode, getBlock, getNodes, parentPath, getPathSubSchema, isTextBlockNode, getSibling } from "./get-path-sub-schema.js";
import { isKeyedSegment, getNode, isObjectNode, getNodeChildren, getChildren } from "./get-ancestor.js";
import { isKeyedSegment, getNode, isObjectNode, getNodeChildren, getChildren } from "./get-node.js";
import { isEqualPaths, getSelectionStartPoint as getSelectionStartPoint$1, getSelectionEndPoint as getSelectionEndPoint$1, sliceBlocks, getBlockStartPoint, getBlockEndPoint, isEqualSelectionPoints, isSelectionCollapsed as isSelectionCollapsed$1, blockOffsetToSpanSelectionPoint, getAncestorTextBlock, spanSelectionPointToBlockOffset, isListBlock } from "./util.slice-blocks.js";

@@ -4,0 +4,0 @@ import { isSpan, isTextBlock } from "@portabletext/schema";

import { isTextBlock, isSpan, getSubSchema } from "@portabletext/schema";
import { getAncestor, getNode, isKeyedSegment, isTypedObject, isRecord } from "./get-ancestor.js";
import { getAncestor, getNode, isKeyedSegment, isTypedObject, isRecord } from "./get-node.js";
function getAncestorTextBlock(snapshot, path) {

@@ -4,0 +4,0 @@ const result = getAncestor(snapshot, path, (node) => isTextBlock({

@@ -1,1 +0,1 @@

{"version":3,"file":"util.slice-blocks.js","sources":["../../src/node-traversal/get-ancestor-text-block.ts","../../src/utils/util.block-offset.ts","../../src/utils/util.is-equal-path-segments.ts","../../src/utils/util.is-equal-paths.ts","../../src/utils/util.is-equal-selection-points.ts","../../src/utils/util.selection-point.ts","../../src/utils/util.get-block-end-point.ts","../../src/utils/util.get-block-start-point.ts","../../src/utils/util.is-selection-collapsed.ts","../../src/utils/util.get-selection-end-point.ts","../../src/utils/util.get-selection-start-point.ts","../../src/utils/parse-blocks.ts","../../src/utils/key-generator.ts","../../src/utils/util.slice-blocks.ts"],"sourcesContent":["import type {PortableTextTextBlock} from '@portabletext/schema'\nimport {isTextBlock} from '@portabletext/schema'\nimport type {Path} from '../slate/interfaces/path'\nimport {getAncestor} from './get-ancestor'\nimport type {TraversalSnapshot} from './traversal-snapshot'\n\nexport function getAncestorTextBlock(\n snapshot: TraversalSnapshot,\n path: Path,\n): {node: PortableTextTextBlock; path: Path} | undefined {\n const result = getAncestor(snapshot, path, (node) =>\n isTextBlock({schema: snapshot.context.schema}, node),\n )\n if (!result) {\n return undefined\n }\n if (!isTextBlock({schema: snapshot.context.schema}, result.node)) {\n return undefined\n }\n return {node: result.node, path: result.path}\n}\n","import {isSpan, isTextBlock} from '@portabletext/schema'\nimport {getAncestorTextBlock} from '../node-traversal/get-ancestor-text-block'\nimport {getNode} from '../node-traversal/get-node'\nimport type {TraversalSnapshot} from '../node-traversal/traversal-snapshot'\nimport type {BlockOffset} from '../types/block-offset'\nimport type {EditorSelectionPoint} from '../types/editor'\nimport type {ChildPath} from '../types/paths'\nimport {isKeyedSegment} from './util.is-keyed-segment'\n\n/**\n * @public\n */\nexport function blockOffsetToSpanSelectionPoint({\n snapshot,\n blockOffset,\n direction,\n}: {\n snapshot: TraversalSnapshot\n blockOffset: BlockOffset\n direction: 'forward' | 'backward'\n}) {\n const blockEntry = getNode(snapshot, blockOffset.path)\n\n if (!blockEntry || !isTextBlock(snapshot.context, blockEntry.node)) {\n return undefined\n }\n\n const block = blockEntry.node\n const blockPath = blockEntry.path\n\n let offsetLeft = blockOffset.offset\n let selectionPoint: {path: ChildPath; offset: number} | undefined\n let skippedInlineObject = false\n\n for (const child of block.children) {\n if (direction === 'forward') {\n if (!isSpan(snapshot.context, child)) {\n continue\n }\n\n if (offsetLeft <= child.text.length) {\n selectionPoint = {\n path: [...blockPath, 'children', {_key: child._key}],\n offset: offsetLeft,\n }\n break\n }\n\n offsetLeft -= child.text.length\n\n continue\n }\n\n if (!isSpan(snapshot.context, child)) {\n skippedInlineObject = true\n continue\n }\n\n if (offsetLeft === 0 && selectionPoint && !skippedInlineObject) {\n if (skippedInlineObject) {\n selectionPoint = {\n path: [...blockPath, 'children', {_key: child._key}],\n offset: 0,\n }\n }\n break\n }\n\n if (offsetLeft > child.text.length) {\n offsetLeft -= child.text.length\n continue\n }\n\n if (offsetLeft <= child.text.length) {\n selectionPoint = {\n path: [...blockPath, 'children', {_key: child._key}],\n offset: offsetLeft,\n }\n\n offsetLeft -= child.text.length\n\n if (offsetLeft !== 0) {\n break\n }\n }\n }\n\n return selectionPoint\n}\n\n/**\n * @public\n */\nexport function spanSelectionPointToBlockOffset({\n snapshot,\n selectionPoint,\n}: {\n snapshot: TraversalSnapshot\n selectionPoint: EditorSelectionPoint\n}): BlockOffset | undefined {\n const spanSegment = selectionPoint.path.at(-1)\n\n if (!isKeyedSegment(spanSegment)) {\n return undefined\n }\n\n const textBlock = getAncestorTextBlock(snapshot, selectionPoint.path)\n\n if (!textBlock) {\n return undefined\n }\n\n let offset = 0\n\n for (const child of textBlock.node.children) {\n if (!isSpan(snapshot.context, child)) {\n continue\n }\n\n if (child._key === spanSegment._key) {\n return {\n path: textBlock.path,\n offset: offset + selectionPoint.offset,\n }\n }\n\n offset += child.text.length\n }\n\n return undefined\n}\n","import type {PathSegment} from '../types/paths'\nimport {isKeyedSegment} from './util.is-keyed-segment'\n\nexport function isEqualPathSegments(\n segA: PathSegment | undefined,\n segB: PathSegment | undefined,\n): boolean {\n if (segA === segB) {\n return true\n }\n\n if (segA === undefined || segB === undefined) {\n return false\n }\n\n if (\n (typeof segA === 'string' || typeof segA === 'number') &&\n (typeof segB === 'string' || typeof segB === 'number')\n ) {\n return segA === segB\n }\n\n if (isKeyedSegment(segA) && isKeyedSegment(segB)) {\n return segA._key === segB._key\n }\n\n if (Array.isArray(segA) && Array.isArray(segB)) {\n return segA[0] === segB[0] && segA[1] === segB[1]\n }\n\n return false\n}\n","import type {Path} from '../types/paths'\nimport {isEqualPathSegments} from './util.is-equal-path-segments'\n\n/**\n * @public\n */\nexport function isEqualPaths(a: Path, b: Path): boolean {\n if (a.length !== b.length) {\n return false\n }\n\n for (let i = 0; i < a.length; i++) {\n if (!isEqualPathSegments(a[i], b[i])) {\n return false\n }\n }\n\n return true\n}\n","import type {EditorSelectionPoint} from '../types/editor'\nimport {isEqualPaths} from './util.is-equal-paths'\n\n/**\n * @public\n */\nexport function isEqualSelectionPoints(\n a: EditorSelectionPoint,\n b: EditorSelectionPoint,\n) {\n return a.offset === b.offset && isEqualPaths(a.path, b.path)\n}\n","import type {EditorSelectionPoint} from '../types/editor'\nimport {isKeyedSegment} from './util.is-keyed-segment'\n\nexport function getBlockKeyFromSelectionPoint(point: EditorSelectionPoint) {\n const blockPathSegment = point.path.at(0)\n\n if (isKeyedSegment(blockPathSegment)) {\n return blockPathSegment._key\n }\n\n return undefined\n}\n\nexport function getChildKeyFromSelectionPoint(point: EditorSelectionPoint) {\n const childPathSegment = point.path.at(2)\n\n if (isKeyedSegment(childPathSegment)) {\n return childPathSegment._key\n }\n\n return undefined\n}\n","import {isSpan, isTextBlock, type PortableTextBlock} from '@portabletext/schema'\nimport type {EditorContext} from '../editor/editor-snapshot'\nimport type {EditorSelectionPoint} from '../types/editor'\nimport type {BlockPath} from '../types/paths'\n\n/**\n * @public\n */\nexport function getBlockEndPoint({\n context,\n block,\n}: {\n context: Pick<EditorContext, 'schema'>\n block: {\n node: PortableTextBlock\n path: BlockPath\n }\n}): EditorSelectionPoint {\n if (isTextBlock(context, block.node)) {\n const lastChild = block.node.children[block.node.children.length - 1]\n\n if (lastChild) {\n return {\n path: [...block.path, 'children', {_key: lastChild._key}],\n offset: isSpan(context, lastChild) ? lastChild.text.length : 0,\n }\n }\n }\n\n return {\n path: block.path,\n offset: 0,\n }\n}\n","import {isTextBlock, type PortableTextBlock} from '@portabletext/schema'\nimport type {EditorContext} from '../editor/editor-snapshot'\nimport type {EditorSelectionPoint} from '../types/editor'\nimport type {BlockPath} from '../types/paths'\n\n/**\n * @public\n */\nexport function getBlockStartPoint({\n context,\n block,\n}: {\n context: Pick<EditorContext, 'schema'>\n block: {\n node: PortableTextBlock\n path: BlockPath\n }\n}): EditorSelectionPoint {\n if (isTextBlock(context, block.node)) {\n const firstChild = block.node.children[0]\n return {\n path: [...block.path, 'children', {_key: firstChild?._key ?? ''}],\n offset: 0,\n }\n }\n\n return {\n path: block.path,\n offset: 0,\n }\n}\n","import type {EditorSelection} from '../types/editor'\nimport {isEqualPaths} from './util.is-equal-paths'\n\n/**\n * @public\n */\nexport function isSelectionCollapsed(selection: EditorSelection) {\n if (!selection) {\n return false\n }\n\n return (\n isEqualPaths(selection.anchor.path, selection.focus.path) &&\n selection.anchor.offset === selection.focus.offset\n )\n}\n","import type {EditorSelection, EditorSelectionPoint} from '../types/editor'\n\n/**\n * @public\n */\nexport function getSelectionEndPoint<\n TEditorSelection extends NonNullable<EditorSelection> | null,\n TEditorSelectionPoint extends EditorSelectionPoint | null =\n TEditorSelection extends NonNullable<EditorSelection>\n ? EditorSelectionPoint\n : null,\n>(selection: TEditorSelection): TEditorSelectionPoint {\n if (!selection) {\n return null as TEditorSelectionPoint\n }\n\n return (\n selection.backward ? selection.anchor : selection.focus\n ) as TEditorSelectionPoint\n}\n","import type {EditorSelection, EditorSelectionPoint} from '../types/editor'\n\n/**\n * @public\n */\nexport function getSelectionStartPoint<\n TEditorSelection extends NonNullable<EditorSelection> | null,\n TEditorSelectionPoint extends EditorSelectionPoint | null =\n TEditorSelection extends NonNullable<EditorSelection>\n ? EditorSelectionPoint\n : null,\n>(selection: TEditorSelection): TEditorSelectionPoint {\n if (!selection) {\n return null as TEditorSelectionPoint\n }\n\n return (\n selection.backward ? selection.focus : selection.anchor\n ) as TEditorSelectionPoint\n}\n","import {\n getSubSchema,\n isSpan,\n isTextBlock,\n type FieldDefinition,\n type OfDefinition,\n type PortableTextBlock,\n type PortableTextListBlock,\n type PortableTextObject,\n type PortableTextSpan,\n type PortableTextTextBlock,\n type Schema,\n type TypedObject,\n} from '@portabletext/schema'\nimport type {EditorContext} from '../editor/editor-snapshot'\nimport {isRecord, isTypedObject} from './asserters'\n\nexport function parseBlocks({\n schema,\n keyGenerator,\n blocks,\n options,\n}: {\n schema: Schema\n keyGenerator: () => string\n blocks: unknown\n options: {\n normalize: boolean\n removeUnusedMarkDefs: boolean\n validateFields: boolean\n }\n}): Array<PortableTextBlock> {\n if (!Array.isArray(blocks)) {\n return []\n }\n\n return blocks.flatMap((block) => {\n const parsedBlock = parseBlockInternal({\n schema,\n keyGenerator,\n block,\n options,\n })\n\n return parsedBlock ? [parsedBlock] : []\n })\n}\n\nexport function parseBlock({\n schema,\n keyGenerator,\n block,\n options,\n}: {\n schema: Schema\n keyGenerator: () => string\n block: unknown\n options: {\n normalize: boolean\n removeUnusedMarkDefs: boolean\n validateFields: boolean\n }\n}): PortableTextBlock | undefined {\n return parseBlockInternal({schema, keyGenerator, block, options})\n}\n\nexport function parseSpan({\n span,\n schema,\n keyGenerator,\n markDefKeyMap,\n options,\n}: {\n span: unknown\n schema: Schema\n keyGenerator: () => string\n markDefKeyMap: Map<string, string>\n options: {validateFields: boolean}\n}): PortableTextSpan | undefined {\n return parseSpanInternal({span, schema, keyGenerator, markDefKeyMap, options})\n}\n\nexport function parseInlineObject({\n inlineObject,\n schema,\n keyGenerator,\n options,\n}: {\n inlineObject: unknown\n schema: Schema\n keyGenerator: () => string\n options: {validateFields: boolean}\n}): PortableTextObject | undefined {\n return parseInlineObjectInternal({\n inlineObject,\n schema,\n keyGenerator,\n options,\n })\n}\n\nexport function parseChild({\n child,\n schema,\n keyGenerator,\n markDefKeyMap,\n options,\n}: {\n child: unknown\n schema: Schema\n keyGenerator: () => string\n markDefKeyMap: Map<string, string>\n options: {validateFields: boolean}\n}): PortableTextSpan | PortableTextObject | undefined {\n return parseChildInternal({\n child,\n schema,\n keyGenerator,\n markDefKeyMap,\n options,\n })\n}\n\nexport function parseMarkDefs({\n schema,\n keyGenerator,\n markDefs,\n options,\n}: {\n schema: Schema\n keyGenerator: () => string\n markDefs: unknown\n options: {validateFields: boolean}\n}): {\n markDefs: Array<PortableTextObject>\n markDefKeyMap: Map<string, string>\n} {\n return parseMarkDefsInternal({schema, keyGenerator, markDefs, options})\n}\n\nfunction parseBlockInternal({\n schema,\n keyGenerator,\n block,\n options,\n}: {\n schema: Schema\n keyGenerator: () => string\n block: unknown\n options: {\n normalize: boolean\n removeUnusedMarkDefs: boolean\n validateFields: boolean\n }\n}): PortableTextBlock | undefined {\n return (\n parseTextBlock({block, schema, keyGenerator, options}) ??\n parseBlockObject({blockObject: block, schema, keyGenerator, options})\n )\n}\n\nfunction parseBlockObject({\n blockObject,\n schema,\n keyGenerator,\n options,\n}: {\n blockObject: unknown\n schema: Schema\n keyGenerator: () => string\n options: {validateFields: boolean}\n}): PortableTextObject | undefined {\n if (!isTypedObject(blockObject)) {\n return undefined\n }\n\n const schemaType = schema.blockObjects.find(\n ({name}) => name === blockObject._type,\n )\n\n if (!schemaType) {\n return undefined\n }\n\n return parseObject({\n object: blockObject,\n schema,\n keyGenerator,\n schemaType,\n options,\n })\n}\n\nexport function isListBlock(\n context: Pick<EditorContext, 'schema'>,\n block: unknown,\n): block is PortableTextListBlock {\n return (\n isTextBlock(context, block) &&\n block.level !== undefined &&\n block.listItem !== undefined\n )\n}\n\nfunction parseTextBlock({\n block,\n schema,\n keyGenerator,\n options,\n}: {\n block: unknown\n schema: Schema\n keyGenerator: () => string\n options: {\n normalize: boolean\n removeUnusedMarkDefs: boolean\n validateFields: boolean\n }\n}): PortableTextTextBlock | undefined {\n if (!isTypedObject(block)) {\n return undefined\n }\n\n if (block._type !== schema.block.name) {\n return undefined\n }\n\n const customFields: Record<string, unknown> = {}\n\n for (const key of Object.keys(block)) {\n if (\n key === '_type' ||\n key === '_key' ||\n key === 'children' ||\n key === 'markDefs' ||\n key === 'style' ||\n key === 'listItem' ||\n key === 'level'\n ) {\n continue\n }\n\n if (options.validateFields) {\n if ((schema.block.fields ?? []).some((f) => f.name === key)) {\n customFields[key] = block[key]\n }\n } else {\n customFields[key] = block[key]\n }\n }\n\n const _key =\n typeof block['_key'] === 'string' ? block['_key'] : keyGenerator()\n\n const {markDefs, markDefKeyMap} = parseMarkDefsInternal({\n schema,\n keyGenerator,\n markDefs: block['markDefs'],\n options,\n })\n\n const unparsedChildren: Array<unknown> = Array.isArray(block['children'])\n ? block['children']\n : []\n\n const parsedChildren = unparsedChildren\n .map((child) =>\n parseChildInternal({child, schema, keyGenerator, markDefKeyMap, options}),\n )\n .filter((child) => child !== undefined)\n const marks = parsedChildren.flatMap((child) => child.marks ?? [])\n\n const children =\n parsedChildren.length > 0\n ? parsedChildren\n : [\n {\n _key: keyGenerator(),\n _type: schema.span.name,\n text: '',\n marks: [],\n },\n ]\n\n const normalizedChildren = options.normalize\n ? // Ensure that inline objects re surrounded by spans\n children.reduce<Array<PortableTextObject | PortableTextSpan>>(\n (normalizedChildren, child, index) => {\n if (isSpan({schema}, child)) {\n return [...normalizedChildren, child]\n }\n\n const previousChild = normalizedChildren.at(-1)\n\n if (!previousChild || !isSpan({schema}, previousChild)) {\n return [\n ...normalizedChildren,\n {\n _key: keyGenerator(),\n _type: schema.span.name,\n text: '',\n marks: [],\n },\n child,\n ...(index === children.length - 1\n ? [\n {\n _key: keyGenerator(),\n _type: schema.span.name,\n text: '',\n marks: [],\n },\n ]\n : []),\n ]\n }\n\n return [...normalizedChildren, child]\n },\n [],\n )\n : children\n\n const parsedBlock: PortableTextTextBlock = {\n _type: schema.block.name,\n _key,\n children: normalizedChildren,\n ...customFields,\n }\n\n if (typeof block['markDefs'] === 'object' && block['markDefs'] !== null) {\n parsedBlock.markDefs = options.removeUnusedMarkDefs\n ? markDefs.filter((markDef) => marks.includes(markDef._key))\n : markDefs\n }\n\n if (\n typeof block['style'] === 'string' &&\n schema.styles.find((style) => style.name === block['style'])\n ) {\n parsedBlock.style = block['style']\n }\n\n if (\n typeof block['listItem'] === 'string' &&\n schema.lists.find((list) => list.name === block['listItem'])\n ) {\n parsedBlock.listItem = block['listItem']\n }\n\n if (typeof block['level'] === 'number') {\n parsedBlock.level = block['level']\n }\n\n return parsedBlock\n}\n\nfunction parseMarkDefsInternal({\n schema,\n keyGenerator,\n markDefs,\n options,\n}: {\n schema: Schema\n keyGenerator: () => string\n markDefs: unknown\n options: {validateFields: boolean}\n}): {\n markDefs: Array<PortableTextObject>\n markDefKeyMap: Map<string, string>\n} {\n const unparsedMarkDefs: Array<unknown> = Array.isArray(markDefs)\n ? markDefs\n : []\n const markDefKeyMap = new Map<string, string>()\n\n const parsedMarkDefs = unparsedMarkDefs.flatMap((markDef) => {\n if (!isTypedObject(markDef)) {\n return []\n }\n\n const schemaType = schema.annotations.find(\n ({name}) => name === markDef._type,\n )\n\n if (!schemaType) {\n return []\n }\n\n if (typeof markDef['_key'] !== 'string') {\n // If the `markDef` doesn't have a `_key` then we don't know what spans\n // it belongs to and therefore we have to discard it.\n return []\n }\n\n const parsedAnnotation = parseObject({\n object: markDef,\n schema,\n keyGenerator,\n schemaType,\n options,\n })\n\n if (!parsedAnnotation) {\n return []\n }\n\n markDefKeyMap.set(markDef['_key'], parsedAnnotation._key)\n\n return [parsedAnnotation]\n })\n\n return {\n markDefs: parsedMarkDefs,\n markDefKeyMap,\n }\n}\n\nfunction parseChildInternal({\n child,\n schema,\n keyGenerator,\n markDefKeyMap,\n options,\n}: {\n child: unknown\n schema: Schema\n keyGenerator: () => string\n markDefKeyMap: Map<string, string>\n options: {validateFields: boolean}\n}): PortableTextSpan | PortableTextObject | undefined {\n return (\n parseSpanInternal({\n span: child,\n schema,\n keyGenerator,\n markDefKeyMap,\n options,\n }) ??\n parseInlineObjectInternal({\n inlineObject: child,\n schema,\n keyGenerator,\n options,\n })\n )\n}\n\nfunction parseSpanInternal({\n span,\n schema,\n keyGenerator,\n markDefKeyMap,\n options,\n}: {\n span: unknown\n schema: Schema\n keyGenerator: () => string\n markDefKeyMap: Map<string, string>\n options: {validateFields: boolean}\n}): PortableTextSpan | undefined {\n if (!isRecord(span)) {\n return undefined\n }\n\n const customFields: Record<string, unknown> = {}\n\n for (const key of Object.keys(span)) {\n if (\n key !== '_type' &&\n key !== '_key' &&\n key !== 'text' &&\n key !== 'marks'\n ) {\n customFields[key] = span[key]\n }\n }\n\n const unparsedMarks: Array<unknown> = Array.isArray(span['marks'])\n ? span['marks']\n : []\n const marks = unparsedMarks.flatMap((mark) => {\n if (typeof mark !== 'string') {\n return []\n }\n\n const markDefKey = markDefKeyMap.get(mark)\n\n if (markDefKey !== undefined) {\n return [markDefKey]\n }\n\n if (schema.decorators.some((decorator) => decorator.name === mark)) {\n return [mark]\n }\n\n return []\n })\n\n if (typeof span['_type'] === 'string' && span['_type'] !== schema.span.name) {\n return undefined\n }\n\n if (typeof span['_type'] !== 'string') {\n if (typeof span['text'] === 'string') {\n return {\n _type: schema.span.name as 'span',\n _key: typeof span['_key'] === 'string' ? span['_key'] : keyGenerator(),\n text: span['text'],\n marks,\n ...(options.validateFields ? {} : customFields),\n }\n }\n\n return undefined\n }\n\n return {\n _type: schema.span.name as 'span',\n _key: typeof span['_key'] === 'string' ? span['_key'] : keyGenerator(),\n text: typeof span['text'] === 'string' ? span['text'] : '',\n marks,\n ...(options.validateFields ? {} : customFields),\n }\n}\n\nfunction parseInlineObjectInternal({\n inlineObject,\n schema,\n keyGenerator,\n options,\n}: {\n inlineObject: unknown\n schema: Schema\n keyGenerator: () => string\n options: {validateFields: boolean}\n}): PortableTextObject | undefined {\n if (!isTypedObject(inlineObject)) {\n return undefined\n }\n\n const schemaType = schema.inlineObjects.find(\n ({name}) => name === inlineObject._type,\n )\n\n if (!schemaType) {\n return undefined\n }\n\n return parseObject({\n object: inlineObject,\n schema,\n keyGenerator,\n schemaType,\n options,\n })\n}\n\nexport function parseAnnotation({\n annotation,\n schema,\n keyGenerator,\n options,\n}: {\n annotation: TypedObject\n schema: Schema\n keyGenerator: () => string\n options: {validateFields: boolean}\n}): PortableTextObject | undefined {\n if (!isTypedObject(annotation)) {\n return undefined\n }\n\n const schemaType = schema.annotations.find(\n ({name}) => name === annotation._type,\n )\n\n if (!schemaType) {\n return undefined\n }\n\n return parseObject({\n object: annotation,\n schema,\n keyGenerator,\n schemaType,\n options,\n })\n}\n\n/**\n * Resolve an `of` member against a runtime `_type`. Returns the schema-type\n * to use for parsing the item, or `undefined` if no member matches.\n *\n * Three forms (one branch each):\n * - Inline declaration `{type: 'object', name: 'X', fields: [...]}` -- name\n * matches `_type`, fields are inline.\n * - Reference `{type: 'X'}` -- looks up in the ancestor chain first\n * (inline-declared types are visible to descendants), then in the schema's\n * root `blockObjects`. Mirrors `resolve-containers.ts`'s reference\n * resolution.\n * - `{type: 'block'}` -- not a non-PTE object member, returns `undefined`.\n */\nfunction resolveOfMember(\n of: ReadonlyArray<OfDefinition>,\n typeName: string,\n schema: Schema,\n ancestorFields: ReadonlyMap<string, ReadonlyArray<FieldDefinition>>,\n): {name: string; fields: ReadonlyArray<FieldDefinition>} | undefined {\n for (const member of of) {\n if (member.type === 'block') {\n continue\n }\n if (member.type === 'object' && 'name' in member && member.name) {\n if (member.name === typeName && 'fields' in member && member.fields) {\n return {name: member.name, fields: member.fields}\n }\n continue\n }\n if (member.type === typeName) {\n const ancestorMatch = ancestorFields.get(typeName)\n if (ancestorMatch) {\n return {name: typeName, fields: ancestorMatch}\n }\n const rootMatch = schema.blockObjects.find(\n (blockObject) => blockObject.name === typeName,\n )\n if (rootMatch && 'fields' in rootMatch && rootMatch.fields) {\n return {name: rootMatch.name, fields: rootMatch.fields}\n }\n return undefined\n }\n }\n return undefined\n}\n\n/**\n * Parse an object against a `{name, fields}` schema type. Validates top-level\n * fields and recurses into any array field whose `of` contains a block-like\n * member -- parsing the nested blocks against a child `Schema` built from\n * that `of`.\n */\nfunction parseObject({\n object,\n schema,\n keyGenerator,\n schemaType,\n ancestorFields,\n options,\n}: {\n object: TypedObject\n schema: Schema\n keyGenerator: () => string\n schemaType: {\n name: string\n fields: ReadonlyArray<FieldDefinition>\n }\n ancestorFields?: ReadonlyMap<string, ReadonlyArray<FieldDefinition>>\n options: {validateFields: boolean}\n}): PortableTextObject {\n const {_key, ...customFields} = object\n\n const fieldsByName = new Map(\n schemaType.fields.map((field) => [field.name, field]),\n )\n\n const nextAncestors = new Map(ancestorFields ?? [])\n nextAncestors.set(schemaType.name, schemaType.fields)\n\n const values: Record<string, unknown> = {}\n\n for (const [key, value] of Object.entries(customFields)) {\n if (key === '_type') {\n continue\n }\n\n if (value === undefined) {\n continue\n }\n\n const field = fieldsByName.get(key)\n\n if (options.validateFields && !field) {\n continue\n }\n\n if (field && field.type === 'array' && field.of && Array.isArray(value)) {\n values[key] = parseContainerFieldValue({\n schema,\n keyGenerator,\n of: field.of,\n value,\n ancestorFields: nextAncestors,\n options,\n })\n continue\n }\n\n values[key] = value\n }\n\n return {\n _type: schemaType.name,\n _key: typeof _key === 'string' ? _key : keyGenerator(),\n ...values,\n }\n}\n\n/**\n * Parse the value of an array field whose `of` declares what's allowed at\n * that position. Each item is dispatched per its own type:\n *\n * - Text blocks (`_type === schema.block.name`) are parsed against a child\n * sub-schema derived from the `{type: 'block'}` member of `of` (which\n * carries the styles, decorators, annotations, lists, and inline objects\n * allowed at this position).\n *\n * - Block objects (and structural objects sitting between containers and\n * text blocks) are parsed via `resolveOfMember` against the `of` array,\n * with `ancestorFields` carrying inline type declarations down to bare\n * references like `{type: 'list'}`. This lets nested containers resolve\n * to their inline shapes at any depth.\n *\n * Items that don't resolve are passed through unchanged.\n */\nfunction parseContainerFieldValue({\n schema,\n keyGenerator,\n of,\n value,\n ancestorFields,\n options,\n}: {\n schema: Schema\n keyGenerator: () => string\n of: ReadonlyArray<OfDefinition>\n value: ReadonlyArray<unknown>\n ancestorFields: ReadonlyMap<string, ReadonlyArray<FieldDefinition>>\n options: {validateFields: boolean; normalize?: boolean}\n}): Array<unknown> {\n const hasBlockMember = of.some((member) => member.type === 'block')\n const childBlockSubSchema = hasBlockMember\n ? getSubSchema(schema, of)\n : undefined\n\n return value.flatMap((item) => {\n if (!isTypedObject(item)) {\n return [item]\n }\n\n if (childBlockSubSchema && item._type === childBlockSubSchema.block.name) {\n const parsed = parseTextBlock({\n block: item,\n schema: childBlockSubSchema,\n keyGenerator,\n options: {\n normalize: false,\n removeUnusedMarkDefs: false,\n validateFields: options.validateFields,\n },\n })\n return parsed ? [parsed] : []\n }\n\n const schemaType = resolveOfMember(of, item._type, schema, ancestorFields)\n if (!schemaType) {\n return [item]\n }\n return [\n parseObject({\n object: item,\n schema,\n keyGenerator,\n schemaType: {\n name: schemaType.name,\n fields: schemaType.fields,\n },\n ancestorFields,\n options,\n }),\n ]\n })\n}\n","/**\n * @public\n */\nexport const defaultKeyGenerator = (): string => randomKey(12)\n\nconst getByteHexTable = (() => {\n let table: any[]\n return () => {\n if (table) {\n return table\n }\n\n table = []\n for (let i = 0; i < 256; ++i) {\n table[i] = (i + 0x100).toString(16).slice(1)\n }\n return table\n }\n})()\n\n// WHATWG crypto RNG - https://w3c.github.io/webcrypto/Overview.html\nfunction whatwgRNG(length = 16) {\n const rnds8 = new Uint8Array(length)\n crypto.getRandomValues(rnds8)\n return rnds8\n}\n\nfunction randomKey(length?: number): string {\n const table = getByteHexTable()\n return whatwgRNG(length)\n .reduce((str, n) => str + table[n], '')\n .slice(0, length)\n}\n","import {isSpan, isTextBlock, type PortableTextBlock} from '@portabletext/schema'\nimport type {EditorContext} from '../editor/editor-snapshot'\nimport {defaultKeyGenerator} from './key-generator'\nimport {parseBlock} from './parse-blocks'\nimport {getSelectionEndPoint} from './util.get-selection-end-point'\nimport {getSelectionStartPoint} from './util.get-selection-start-point'\nimport {\n getBlockKeyFromSelectionPoint,\n getChildKeyFromSelectionPoint,\n} from './util.selection-point'\n\n/**\n * @public\n */\nexport function sliceBlocks({\n context,\n blocks,\n}: {\n context: Pick<EditorContext, 'schema' | 'selection'> & {\n keyGenerator?: () => string\n }\n blocks: Array<PortableTextBlock>\n}): Array<PortableTextBlock> {\n const slice: Array<PortableTextBlock> = []\n\n if (!context.selection) {\n return slice\n }\n\n let startBlock: PortableTextBlock | undefined\n const middleBlocks: PortableTextBlock[] = []\n let endBlock: PortableTextBlock | undefined\n\n const startPoint = getSelectionStartPoint(context.selection)\n const endPoint = getSelectionEndPoint(context.selection)\n const startBlockKey = getBlockKeyFromSelectionPoint(startPoint)\n const startChildKey = getChildKeyFromSelectionPoint(startPoint)\n const endBlockKey = getBlockKeyFromSelectionPoint(endPoint)\n const endChildKey = getChildKeyFromSelectionPoint(endPoint)\n\n if (!startBlockKey || !endBlockKey) {\n return slice\n }\n\n for (const block of blocks) {\n if (!isTextBlock(context, block)) {\n if (block._key === startBlockKey && block._key === endBlockKey) {\n startBlock = block\n break\n }\n }\n\n if (block._key === startBlockKey) {\n if (!isTextBlock(context, block)) {\n startBlock = block\n continue\n }\n\n if (startChildKey) {\n for (const child of block.children) {\n if (child._key === startChildKey) {\n if (isSpan(context, child)) {\n const text =\n child._key === endChildKey\n ? child.text.slice(startPoint.offset, endPoint.offset)\n : child.text.slice(startPoint.offset)\n\n startBlock = {\n ...block,\n children: [\n {\n ...child,\n text,\n },\n ],\n }\n } else {\n startBlock = {\n ...block,\n children: [child],\n }\n }\n\n if (block._key === endBlockKey && startChildKey === endChildKey) {\n break\n }\n continue\n }\n\n if (startBlock && isTextBlock(context, startBlock)) {\n if (\n endChildKey &&\n child._key === endChildKey &&\n isSpan(context, child)\n ) {\n startBlock.children.push({\n ...child,\n text: child.text.slice(0, endPoint.offset),\n })\n } else {\n startBlock.children.push(child)\n }\n\n if (\n block._key === endBlockKey &&\n endChildKey &&\n child._key === endChildKey\n ) {\n break\n }\n }\n }\n\n if (startBlockKey === endBlockKey) {\n break\n }\n\n continue\n }\n\n startBlock = block\n\n if (startBlockKey === endBlockKey) {\n break\n }\n }\n\n if (block._key === endBlockKey) {\n if (!isTextBlock(context, block)) {\n endBlock = block\n break\n }\n\n if (endChildKey) {\n endBlock = {\n ...block,\n children: [],\n }\n\n for (const child of block.children) {\n if (endBlock && isTextBlock(context, endBlock)) {\n if (child._key === endChildKey && isSpan(context, child)) {\n endBlock.children.push({\n ...child,\n text: child.text.slice(0, endPoint.offset),\n })\n\n break\n }\n\n endBlock.children.push(child)\n\n if (endChildKey && child._key === endChildKey) {\n break\n }\n }\n }\n\n break\n }\n\n endBlock = block\n\n break\n }\n\n if (startBlock) {\n middleBlocks.push(\n parseBlock({\n keyGenerator: context.keyGenerator ?? defaultKeyGenerator,\n block,\n options: {\n normalize: false,\n removeUnusedMarkDefs: true,\n validateFields: false,\n },\n schema: context.schema,\n }) ?? block,\n )\n }\n }\n\n const parsedStartBlock = startBlock\n ? parseBlock({\n keyGenerator: context.keyGenerator ?? defaultKeyGenerator,\n block: startBlock,\n options: {\n normalize: false,\n removeUnusedMarkDefs: true,\n validateFields: false,\n },\n schema: context.schema,\n })\n : undefined\n\n const parsedEndBlock = endBlock\n ? parseBlock({\n keyGenerator: context.keyGenerator ?? defaultKeyGenerator,\n block: endBlock,\n options: {\n normalize: false,\n removeUnusedMarkDefs: true,\n validateFields: false,\n },\n schema: context.schema,\n })\n : undefined\n\n return [\n ...(parsedStartBlock ? [parsedStartBlock] : []),\n ...middleBlocks,\n ...(parsedEndBlock ? [parsedEndBlock] : []),\n ]\n}\n"],"names":["getAncestorTextBlock","snapshot","path","result","getAncestor","node","isTextBlock","schema","context","blockOffsetToSpanSelectionPoint","blockOffset","direction","blockEntry","getNode","block","blockPath","offsetLeft","offset","selectionPoint","skippedInlineObject","child","children","isSpan","text","length","_key","spanSelectionPointToBlockOffset","spanSegment","at","isKeyedSegment","textBlock","isEqualPathSegments","segA","segB","undefined","Array","isArray","isEqualPaths","a","b","i","isEqualSelectionPoints","getBlockKeyFromSelectionPoint","point","blockPathSegment","getChildKeyFromSelectionPoint","childPathSegment","getBlockEndPoint","lastChild","getBlockStartPoint","firstChild","isSelectionCollapsed","selection","anchor","focus","getSelectionEndPoint","backward","getSelectionStartPoint","parseBlocks","keyGenerator","blocks","options","flatMap","parsedBlock","parseBlockInternal","parseBlock","parseSpan","span","markDefKeyMap","parseSpanInternal","parseInlineObject","inlineObject","parseInlineObjectInternal","parseMarkDefs","markDefs","parseMarkDefsInternal","parseTextBlock","parseBlockObject","blockObject","isTypedObject","schemaType","blockObjects","find","name","_type","parseObject","object","isListBlock","level","listItem","customFields","key","Object","keys","validateFields","fields","some","f","parsedChildren","map","parseChildInternal","filter","marks","normalizedChildren","normalize","reduce","index","previousChild","removeUnusedMarkDefs","markDef","includes","styles","style","lists","list","unparsedMarkDefs","Map","annotations","parsedAnnotation","set","isRecord","mark","markDefKey","get","decorators","decorator","inlineObjects","parseAnnotation","annotation","resolveOfMember","of","typeName","ancestorFields","member","type","ancestorMatch","rootMatch","fieldsByName","field","nextAncestors","values","value","entries","parseContainerFieldValue","childBlockSubSchema","getSubSchema","item","parsed","defaultKeyGenerator","randomKey","getByteHexTable","table","toString","slice","whatwgRNG","rnds8","Uint8Array","crypto","getRandomValues","str","n","sliceBlocks","startBlock","middleBlocks","endBlock","startPoint","endPoint","startBlockKey","startChildKey","endBlockKey","endChildKey","push","parsedStartBlock","parsedEndBlock"],"mappings":"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"}
{"version":3,"file":"util.slice-blocks.js","sources":["../../src/node-traversal/get-ancestor-text-block.ts","../../src/utils/util.block-offset.ts","../../src/utils/util.is-equal-path-segments.ts","../../src/utils/util.is-equal-paths.ts","../../src/utils/util.is-equal-selection-points.ts","../../src/utils/util.selection-point.ts","../../src/utils/util.get-block-end-point.ts","../../src/utils/util.get-block-start-point.ts","../../src/utils/util.is-selection-collapsed.ts","../../src/utils/util.get-selection-end-point.ts","../../src/utils/util.get-selection-start-point.ts","../../src/utils/parse-blocks.ts","../../src/utils/key-generator.ts","../../src/utils/util.slice-blocks.ts"],"sourcesContent":["import type {PortableTextTextBlock} from '@portabletext/schema'\nimport {isTextBlock} from '@portabletext/schema'\nimport type {Path} from '../engine/interfaces/path'\nimport {getAncestor} from './get-ancestor'\nimport type {TraversalSnapshot} from './traversal-snapshot'\n\nexport function getAncestorTextBlock(\n snapshot: TraversalSnapshot,\n path: Path,\n): {node: PortableTextTextBlock; path: Path} | undefined {\n const result = getAncestor(snapshot, path, (node) =>\n isTextBlock({schema: snapshot.context.schema}, node),\n )\n if (!result) {\n return undefined\n }\n if (!isTextBlock({schema: snapshot.context.schema}, result.node)) {\n return undefined\n }\n return {node: result.node, path: result.path}\n}\n","import {isSpan, isTextBlock} from '@portabletext/schema'\nimport {getAncestorTextBlock} from '../node-traversal/get-ancestor-text-block'\nimport {getNode} from '../node-traversal/get-node'\nimport type {TraversalSnapshot} from '../node-traversal/traversal-snapshot'\nimport type {BlockOffset} from '../types/block-offset'\nimport type {EditorSelectionPoint} from '../types/editor'\nimport type {ChildPath} from '../types/paths'\nimport {isKeyedSegment} from './util.is-keyed-segment'\n\n/**\n * @public\n */\nexport function blockOffsetToSpanSelectionPoint({\n snapshot,\n blockOffset,\n direction,\n}: {\n snapshot: TraversalSnapshot\n blockOffset: BlockOffset\n direction: 'forward' | 'backward'\n}) {\n const blockEntry = getNode(snapshot, blockOffset.path)\n\n if (!blockEntry || !isTextBlock(snapshot.context, blockEntry.node)) {\n return undefined\n }\n\n const block = blockEntry.node\n const blockPath = blockEntry.path\n\n let offsetLeft = blockOffset.offset\n let selectionPoint: {path: ChildPath; offset: number} | undefined\n let skippedInlineObject = false\n\n for (const child of block.children) {\n if (direction === 'forward') {\n if (!isSpan(snapshot.context, child)) {\n continue\n }\n\n if (offsetLeft <= child.text.length) {\n selectionPoint = {\n path: [...blockPath, 'children', {_key: child._key}],\n offset: offsetLeft,\n }\n break\n }\n\n offsetLeft -= child.text.length\n\n continue\n }\n\n if (!isSpan(snapshot.context, child)) {\n skippedInlineObject = true\n continue\n }\n\n if (offsetLeft === 0 && selectionPoint && !skippedInlineObject) {\n if (skippedInlineObject) {\n selectionPoint = {\n path: [...blockPath, 'children', {_key: child._key}],\n offset: 0,\n }\n }\n break\n }\n\n if (offsetLeft > child.text.length) {\n offsetLeft -= child.text.length\n continue\n }\n\n if (offsetLeft <= child.text.length) {\n selectionPoint = {\n path: [...blockPath, 'children', {_key: child._key}],\n offset: offsetLeft,\n }\n\n offsetLeft -= child.text.length\n\n if (offsetLeft !== 0) {\n break\n }\n }\n }\n\n return selectionPoint\n}\n\n/**\n * @public\n */\nexport function spanSelectionPointToBlockOffset({\n snapshot,\n selectionPoint,\n}: {\n snapshot: TraversalSnapshot\n selectionPoint: EditorSelectionPoint\n}): BlockOffset | undefined {\n const spanSegment = selectionPoint.path.at(-1)\n\n if (!isKeyedSegment(spanSegment)) {\n return undefined\n }\n\n const textBlock = getAncestorTextBlock(snapshot, selectionPoint.path)\n\n if (!textBlock) {\n return undefined\n }\n\n let offset = 0\n\n for (const child of textBlock.node.children) {\n if (!isSpan(snapshot.context, child)) {\n continue\n }\n\n if (child._key === spanSegment._key) {\n return {\n path: textBlock.path,\n offset: offset + selectionPoint.offset,\n }\n }\n\n offset += child.text.length\n }\n\n return undefined\n}\n","import type {PathSegment} from '../types/paths'\nimport {isKeyedSegment} from './util.is-keyed-segment'\n\nexport function isEqualPathSegments(\n segA: PathSegment | undefined,\n segB: PathSegment | undefined,\n): boolean {\n if (segA === segB) {\n return true\n }\n\n if (segA === undefined || segB === undefined) {\n return false\n }\n\n if (\n (typeof segA === 'string' || typeof segA === 'number') &&\n (typeof segB === 'string' || typeof segB === 'number')\n ) {\n return segA === segB\n }\n\n if (isKeyedSegment(segA) && isKeyedSegment(segB)) {\n return segA._key === segB._key\n }\n\n if (Array.isArray(segA) && Array.isArray(segB)) {\n return segA[0] === segB[0] && segA[1] === segB[1]\n }\n\n return false\n}\n","import type {Path} from '../types/paths'\nimport {isEqualPathSegments} from './util.is-equal-path-segments'\n\n/**\n * @public\n */\nexport function isEqualPaths(a: Path, b: Path): boolean {\n if (a.length !== b.length) {\n return false\n }\n\n for (let i = 0; i < a.length; i++) {\n if (!isEqualPathSegments(a[i], b[i])) {\n return false\n }\n }\n\n return true\n}\n","import type {EditorSelectionPoint} from '../types/editor'\nimport {isEqualPaths} from './util.is-equal-paths'\n\n/**\n * @public\n */\nexport function isEqualSelectionPoints(\n a: EditorSelectionPoint,\n b: EditorSelectionPoint,\n) {\n return a.offset === b.offset && isEqualPaths(a.path, b.path)\n}\n","import type {EditorSelectionPoint} from '../types/editor'\nimport {isKeyedSegment} from './util.is-keyed-segment'\n\nexport function getBlockKeyFromSelectionPoint(point: EditorSelectionPoint) {\n const blockPathSegment = point.path.at(0)\n\n if (isKeyedSegment(blockPathSegment)) {\n return blockPathSegment._key\n }\n\n return undefined\n}\n\nexport function getChildKeyFromSelectionPoint(point: EditorSelectionPoint) {\n const childPathSegment = point.path.at(2)\n\n if (isKeyedSegment(childPathSegment)) {\n return childPathSegment._key\n }\n\n return undefined\n}\n","import {isSpan, isTextBlock, type PortableTextBlock} from '@portabletext/schema'\nimport type {EditorContext} from '../editor/editor-snapshot'\nimport type {EditorSelectionPoint} from '../types/editor'\nimport type {BlockPath} from '../types/paths'\n\n/**\n * @public\n */\nexport function getBlockEndPoint({\n context,\n block,\n}: {\n context: Pick<EditorContext, 'schema'>\n block: {\n node: PortableTextBlock\n path: BlockPath\n }\n}): EditorSelectionPoint {\n if (isTextBlock(context, block.node)) {\n const lastChild = block.node.children[block.node.children.length - 1]\n\n if (lastChild) {\n return {\n path: [...block.path, 'children', {_key: lastChild._key}],\n offset: isSpan(context, lastChild) ? lastChild.text.length : 0,\n }\n }\n }\n\n return {\n path: block.path,\n offset: 0,\n }\n}\n","import {isTextBlock, type PortableTextBlock} from '@portabletext/schema'\nimport type {EditorContext} from '../editor/editor-snapshot'\nimport type {EditorSelectionPoint} from '../types/editor'\nimport type {BlockPath} from '../types/paths'\n\n/**\n * @public\n */\nexport function getBlockStartPoint({\n context,\n block,\n}: {\n context: Pick<EditorContext, 'schema'>\n block: {\n node: PortableTextBlock\n path: BlockPath\n }\n}): EditorSelectionPoint {\n if (isTextBlock(context, block.node)) {\n const firstChild = block.node.children[0]\n return {\n path: [...block.path, 'children', {_key: firstChild?._key ?? ''}],\n offset: 0,\n }\n }\n\n return {\n path: block.path,\n offset: 0,\n }\n}\n","import type {EditorSelection} from '../types/editor'\nimport {isEqualPaths} from './util.is-equal-paths'\n\n/**\n * @public\n */\nexport function isSelectionCollapsed(selection: EditorSelection) {\n if (!selection) {\n return false\n }\n\n return (\n isEqualPaths(selection.anchor.path, selection.focus.path) &&\n selection.anchor.offset === selection.focus.offset\n )\n}\n","import type {EditorSelection, EditorSelectionPoint} from '../types/editor'\n\n/**\n * @public\n */\nexport function getSelectionEndPoint<\n TEditorSelection extends NonNullable<EditorSelection> | null,\n TEditorSelectionPoint extends EditorSelectionPoint | null =\n TEditorSelection extends NonNullable<EditorSelection>\n ? EditorSelectionPoint\n : null,\n>(selection: TEditorSelection): TEditorSelectionPoint {\n if (!selection) {\n return null as TEditorSelectionPoint\n }\n\n return (\n selection.backward ? selection.anchor : selection.focus\n ) as TEditorSelectionPoint\n}\n","import type {EditorSelection, EditorSelectionPoint} from '../types/editor'\n\n/**\n * @public\n */\nexport function getSelectionStartPoint<\n TEditorSelection extends NonNullable<EditorSelection> | null,\n TEditorSelectionPoint extends EditorSelectionPoint | null =\n TEditorSelection extends NonNullable<EditorSelection>\n ? EditorSelectionPoint\n : null,\n>(selection: TEditorSelection): TEditorSelectionPoint {\n if (!selection) {\n return null as TEditorSelectionPoint\n }\n\n return (\n selection.backward ? selection.focus : selection.anchor\n ) as TEditorSelectionPoint\n}\n","import {\n getSubSchema,\n isSpan,\n isTextBlock,\n type FieldDefinition,\n type OfDefinition,\n type PortableTextBlock,\n type PortableTextListBlock,\n type PortableTextObject,\n type PortableTextSpan,\n type PortableTextTextBlock,\n type Schema,\n type TypedObject,\n} from '@portabletext/schema'\nimport type {EditorContext} from '../editor/editor-snapshot'\nimport {isRecord, isTypedObject} from './asserters'\n\nexport function parseBlocks({\n schema,\n keyGenerator,\n blocks,\n options,\n}: {\n schema: Schema\n keyGenerator: () => string\n blocks: unknown\n options: {\n normalize: boolean\n removeUnusedMarkDefs: boolean\n validateFields: boolean\n }\n}): Array<PortableTextBlock> {\n if (!Array.isArray(blocks)) {\n return []\n }\n\n return blocks.flatMap((block) => {\n const parsedBlock = parseBlockInternal({\n schema,\n keyGenerator,\n block,\n options,\n })\n\n return parsedBlock ? [parsedBlock] : []\n })\n}\n\nexport function parseBlock({\n schema,\n keyGenerator,\n block,\n options,\n}: {\n schema: Schema\n keyGenerator: () => string\n block: unknown\n options: {\n normalize: boolean\n removeUnusedMarkDefs: boolean\n validateFields: boolean\n }\n}): PortableTextBlock | undefined {\n return parseBlockInternal({schema, keyGenerator, block, options})\n}\n\nexport function parseSpan({\n span,\n schema,\n keyGenerator,\n markDefKeyMap,\n options,\n}: {\n span: unknown\n schema: Schema\n keyGenerator: () => string\n markDefKeyMap: Map<string, string>\n options: {validateFields: boolean}\n}): PortableTextSpan | undefined {\n return parseSpanInternal({span, schema, keyGenerator, markDefKeyMap, options})\n}\n\nexport function parseInlineObject({\n inlineObject,\n schema,\n keyGenerator,\n options,\n}: {\n inlineObject: unknown\n schema: Schema\n keyGenerator: () => string\n options: {validateFields: boolean}\n}): PortableTextObject | undefined {\n return parseInlineObjectInternal({\n inlineObject,\n schema,\n keyGenerator,\n options,\n })\n}\n\nexport function parseChild({\n child,\n schema,\n keyGenerator,\n markDefKeyMap,\n options,\n}: {\n child: unknown\n schema: Schema\n keyGenerator: () => string\n markDefKeyMap: Map<string, string>\n options: {validateFields: boolean}\n}): PortableTextSpan | PortableTextObject | undefined {\n return parseChildInternal({\n child,\n schema,\n keyGenerator,\n markDefKeyMap,\n options,\n })\n}\n\nexport function parseMarkDefs({\n schema,\n keyGenerator,\n markDefs,\n options,\n}: {\n schema: Schema\n keyGenerator: () => string\n markDefs: unknown\n options: {validateFields: boolean}\n}): {\n markDefs: Array<PortableTextObject>\n markDefKeyMap: Map<string, string>\n} {\n return parseMarkDefsInternal({schema, keyGenerator, markDefs, options})\n}\n\nfunction parseBlockInternal({\n schema,\n keyGenerator,\n block,\n options,\n}: {\n schema: Schema\n keyGenerator: () => string\n block: unknown\n options: {\n normalize: boolean\n removeUnusedMarkDefs: boolean\n validateFields: boolean\n }\n}): PortableTextBlock | undefined {\n return (\n parseTextBlock({block, schema, keyGenerator, options}) ??\n parseBlockObject({blockObject: block, schema, keyGenerator, options})\n )\n}\n\nfunction parseBlockObject({\n blockObject,\n schema,\n keyGenerator,\n options,\n}: {\n blockObject: unknown\n schema: Schema\n keyGenerator: () => string\n options: {validateFields: boolean}\n}): PortableTextObject | undefined {\n if (!isTypedObject(blockObject)) {\n return undefined\n }\n\n const schemaType = schema.blockObjects.find(\n ({name}) => name === blockObject._type,\n )\n\n if (!schemaType) {\n return undefined\n }\n\n return parseObject({\n object: blockObject,\n schema,\n keyGenerator,\n schemaType,\n options,\n })\n}\n\nexport function isListBlock(\n context: Pick<EditorContext, 'schema'>,\n block: unknown,\n): block is PortableTextListBlock {\n return (\n isTextBlock(context, block) &&\n block.level !== undefined &&\n block.listItem !== undefined\n )\n}\n\nfunction parseTextBlock({\n block,\n schema,\n keyGenerator,\n options,\n}: {\n block: unknown\n schema: Schema\n keyGenerator: () => string\n options: {\n normalize: boolean\n removeUnusedMarkDefs: boolean\n validateFields: boolean\n }\n}): PortableTextTextBlock | undefined {\n if (!isTypedObject(block)) {\n return undefined\n }\n\n if (block._type !== schema.block.name) {\n return undefined\n }\n\n const customFields: Record<string, unknown> = {}\n\n for (const key of Object.keys(block)) {\n if (\n key === '_type' ||\n key === '_key' ||\n key === 'children' ||\n key === 'markDefs' ||\n key === 'style' ||\n key === 'listItem' ||\n key === 'level'\n ) {\n continue\n }\n\n if (options.validateFields) {\n if ((schema.block.fields ?? []).some((f) => f.name === key)) {\n customFields[key] = block[key]\n }\n } else {\n customFields[key] = block[key]\n }\n }\n\n const _key =\n typeof block['_key'] === 'string' ? block['_key'] : keyGenerator()\n\n const {markDefs, markDefKeyMap} = parseMarkDefsInternal({\n schema,\n keyGenerator,\n markDefs: block['markDefs'],\n options,\n })\n\n const unparsedChildren: Array<unknown> = Array.isArray(block['children'])\n ? block['children']\n : []\n\n const parsedChildren = unparsedChildren\n .map((child) =>\n parseChildInternal({child, schema, keyGenerator, markDefKeyMap, options}),\n )\n .filter((child) => child !== undefined)\n const marks = parsedChildren.flatMap((child) => child.marks ?? [])\n\n const children =\n parsedChildren.length > 0\n ? parsedChildren\n : [\n {\n _key: keyGenerator(),\n _type: schema.span.name,\n text: '',\n marks: [],\n },\n ]\n\n const normalizedChildren = options.normalize\n ? // Ensure that inline objects re surrounded by spans\n children.reduce<Array<PortableTextObject | PortableTextSpan>>(\n (normalizedChildren, child, index) => {\n if (isSpan({schema}, child)) {\n return [...normalizedChildren, child]\n }\n\n const previousChild = normalizedChildren.at(-1)\n\n if (!previousChild || !isSpan({schema}, previousChild)) {\n return [\n ...normalizedChildren,\n {\n _key: keyGenerator(),\n _type: schema.span.name,\n text: '',\n marks: [],\n },\n child,\n ...(index === children.length - 1\n ? [\n {\n _key: keyGenerator(),\n _type: schema.span.name,\n text: '',\n marks: [],\n },\n ]\n : []),\n ]\n }\n\n return [...normalizedChildren, child]\n },\n [],\n )\n : children\n\n const parsedBlock: PortableTextTextBlock = {\n _type: schema.block.name,\n _key,\n children: normalizedChildren,\n ...customFields,\n }\n\n if (typeof block['markDefs'] === 'object' && block['markDefs'] !== null) {\n parsedBlock.markDefs = options.removeUnusedMarkDefs\n ? markDefs.filter((markDef) => marks.includes(markDef._key))\n : markDefs\n }\n\n if (\n typeof block['style'] === 'string' &&\n schema.styles.find((style) => style.name === block['style'])\n ) {\n parsedBlock.style = block['style']\n }\n\n if (\n typeof block['listItem'] === 'string' &&\n schema.lists.find((list) => list.name === block['listItem'])\n ) {\n parsedBlock.listItem = block['listItem']\n }\n\n if (typeof block['level'] === 'number') {\n parsedBlock.level = block['level']\n }\n\n return parsedBlock\n}\n\nfunction parseMarkDefsInternal({\n schema,\n keyGenerator,\n markDefs,\n options,\n}: {\n schema: Schema\n keyGenerator: () => string\n markDefs: unknown\n options: {validateFields: boolean}\n}): {\n markDefs: Array<PortableTextObject>\n markDefKeyMap: Map<string, string>\n} {\n const unparsedMarkDefs: Array<unknown> = Array.isArray(markDefs)\n ? markDefs\n : []\n const markDefKeyMap = new Map<string, string>()\n\n const parsedMarkDefs = unparsedMarkDefs.flatMap((markDef) => {\n if (!isTypedObject(markDef)) {\n return []\n }\n\n const schemaType = schema.annotations.find(\n ({name}) => name === markDef._type,\n )\n\n if (!schemaType) {\n return []\n }\n\n if (typeof markDef['_key'] !== 'string') {\n // If the `markDef` doesn't have a `_key` then we don't know what spans\n // it belongs to and therefore we have to discard it.\n return []\n }\n\n const parsedAnnotation = parseObject({\n object: markDef,\n schema,\n keyGenerator,\n schemaType,\n options,\n })\n\n if (!parsedAnnotation) {\n return []\n }\n\n markDefKeyMap.set(markDef['_key'], parsedAnnotation._key)\n\n return [parsedAnnotation]\n })\n\n return {\n markDefs: parsedMarkDefs,\n markDefKeyMap,\n }\n}\n\nfunction parseChildInternal({\n child,\n schema,\n keyGenerator,\n markDefKeyMap,\n options,\n}: {\n child: unknown\n schema: Schema\n keyGenerator: () => string\n markDefKeyMap: Map<string, string>\n options: {validateFields: boolean}\n}): PortableTextSpan | PortableTextObject | undefined {\n return (\n parseSpanInternal({\n span: child,\n schema,\n keyGenerator,\n markDefKeyMap,\n options,\n }) ??\n parseInlineObjectInternal({\n inlineObject: child,\n schema,\n keyGenerator,\n options,\n })\n )\n}\n\nfunction parseSpanInternal({\n span,\n schema,\n keyGenerator,\n markDefKeyMap,\n options,\n}: {\n span: unknown\n schema: Schema\n keyGenerator: () => string\n markDefKeyMap: Map<string, string>\n options: {validateFields: boolean}\n}): PortableTextSpan | undefined {\n if (!isRecord(span)) {\n return undefined\n }\n\n const customFields: Record<string, unknown> = {}\n\n for (const key of Object.keys(span)) {\n if (\n key !== '_type' &&\n key !== '_key' &&\n key !== 'text' &&\n key !== 'marks'\n ) {\n customFields[key] = span[key]\n }\n }\n\n const unparsedMarks: Array<unknown> = Array.isArray(span['marks'])\n ? span['marks']\n : []\n const marks = unparsedMarks.flatMap((mark) => {\n if (typeof mark !== 'string') {\n return []\n }\n\n const markDefKey = markDefKeyMap.get(mark)\n\n if (markDefKey !== undefined) {\n return [markDefKey]\n }\n\n if (schema.decorators.some((decorator) => decorator.name === mark)) {\n return [mark]\n }\n\n return []\n })\n\n if (typeof span['_type'] === 'string' && span['_type'] !== schema.span.name) {\n return undefined\n }\n\n if (typeof span['_type'] !== 'string') {\n if (typeof span['text'] === 'string') {\n return {\n _type: schema.span.name as 'span',\n _key: typeof span['_key'] === 'string' ? span['_key'] : keyGenerator(),\n text: span['text'],\n marks,\n ...(options.validateFields ? {} : customFields),\n }\n }\n\n return undefined\n }\n\n return {\n _type: schema.span.name as 'span',\n _key: typeof span['_key'] === 'string' ? span['_key'] : keyGenerator(),\n text: typeof span['text'] === 'string' ? span['text'] : '',\n marks,\n ...(options.validateFields ? {} : customFields),\n }\n}\n\nfunction parseInlineObjectInternal({\n inlineObject,\n schema,\n keyGenerator,\n options,\n}: {\n inlineObject: unknown\n schema: Schema\n keyGenerator: () => string\n options: {validateFields: boolean}\n}): PortableTextObject | undefined {\n if (!isTypedObject(inlineObject)) {\n return undefined\n }\n\n const schemaType = schema.inlineObjects.find(\n ({name}) => name === inlineObject._type,\n )\n\n if (!schemaType) {\n return undefined\n }\n\n return parseObject({\n object: inlineObject,\n schema,\n keyGenerator,\n schemaType,\n options,\n })\n}\n\nexport function parseAnnotation({\n annotation,\n schema,\n keyGenerator,\n options,\n}: {\n annotation: TypedObject\n schema: Schema\n keyGenerator: () => string\n options: {validateFields: boolean}\n}): PortableTextObject | undefined {\n if (!isTypedObject(annotation)) {\n return undefined\n }\n\n const schemaType = schema.annotations.find(\n ({name}) => name === annotation._type,\n )\n\n if (!schemaType) {\n return undefined\n }\n\n return parseObject({\n object: annotation,\n schema,\n keyGenerator,\n schemaType,\n options,\n })\n}\n\n/**\n * Resolve an `of` member against a runtime `_type`. Returns the schema-type\n * to use for parsing the item, or `undefined` if no member matches.\n *\n * Three forms (one branch each):\n * - Inline declaration `{type: 'object', name: 'X', fields: [...]}` -- name\n * matches `_type`, fields are inline.\n * - Reference `{type: 'X'}` -- looks up in the ancestor chain first\n * (inline-declared types are visible to descendants), then in the schema's\n * root `blockObjects`. Mirrors `resolve-containers.ts`'s reference\n * resolution.\n * - `{type: 'block'}` -- not a non-PTE object member, returns `undefined`.\n */\nfunction resolveOfMember(\n of: ReadonlyArray<OfDefinition>,\n typeName: string,\n schema: Schema,\n ancestorFields: ReadonlyMap<string, ReadonlyArray<FieldDefinition>>,\n): {name: string; fields: ReadonlyArray<FieldDefinition>} | undefined {\n for (const member of of) {\n if (member.type === 'block') {\n continue\n }\n if (member.type === 'object' && 'name' in member && member.name) {\n if (member.name === typeName && 'fields' in member && member.fields) {\n return {name: member.name, fields: member.fields}\n }\n continue\n }\n if (member.type === typeName) {\n const ancestorMatch = ancestorFields.get(typeName)\n if (ancestorMatch) {\n return {name: typeName, fields: ancestorMatch}\n }\n const rootMatch = schema.blockObjects.find(\n (blockObject) => blockObject.name === typeName,\n )\n if (rootMatch && 'fields' in rootMatch && rootMatch.fields) {\n return {name: rootMatch.name, fields: rootMatch.fields}\n }\n return undefined\n }\n }\n return undefined\n}\n\n/**\n * Parse an object against a `{name, fields}` schema type. Validates top-level\n * fields and recurses into any array field whose `of` contains a block-like\n * member -- parsing the nested blocks against a child `Schema` built from\n * that `of`.\n */\nfunction parseObject({\n object,\n schema,\n keyGenerator,\n schemaType,\n ancestorFields,\n options,\n}: {\n object: TypedObject\n schema: Schema\n keyGenerator: () => string\n schemaType: {\n name: string\n fields: ReadonlyArray<FieldDefinition>\n }\n ancestorFields?: ReadonlyMap<string, ReadonlyArray<FieldDefinition>>\n options: {validateFields: boolean}\n}): PortableTextObject {\n const {_key, ...customFields} = object\n\n const fieldsByName = new Map(\n schemaType.fields.map((field) => [field.name, field]),\n )\n\n const nextAncestors = new Map(ancestorFields ?? [])\n nextAncestors.set(schemaType.name, schemaType.fields)\n\n const values: Record<string, unknown> = {}\n\n for (const [key, value] of Object.entries(customFields)) {\n if (key === '_type') {\n continue\n }\n\n if (value === undefined) {\n continue\n }\n\n const field = fieldsByName.get(key)\n\n if (options.validateFields && !field) {\n continue\n }\n\n if (field && field.type === 'array' && field.of && Array.isArray(value)) {\n values[key] = parseContainerFieldValue({\n schema,\n keyGenerator,\n of: field.of,\n value,\n ancestorFields: nextAncestors,\n options,\n })\n continue\n }\n\n values[key] = value\n }\n\n return {\n _type: schemaType.name,\n _key: typeof _key === 'string' ? _key : keyGenerator(),\n ...values,\n }\n}\n\n/**\n * Parse the value of an array field whose `of` declares what's allowed at\n * that position. Each item is dispatched per its own type:\n *\n * - Text blocks (`_type === schema.block.name`) are parsed against a child\n * sub-schema derived from the `{type: 'block'}` member of `of` (which\n * carries the styles, decorators, annotations, lists, and inline objects\n * allowed at this position).\n *\n * - Block objects (and structural objects sitting between containers and\n * text blocks) are parsed via `resolveOfMember` against the `of` array,\n * with `ancestorFields` carrying inline type declarations down to bare\n * references like `{type: 'list'}`. This lets nested containers resolve\n * to their inline shapes at any depth.\n *\n * Items that don't resolve are passed through unchanged.\n */\nfunction parseContainerFieldValue({\n schema,\n keyGenerator,\n of,\n value,\n ancestorFields,\n options,\n}: {\n schema: Schema\n keyGenerator: () => string\n of: ReadonlyArray<OfDefinition>\n value: ReadonlyArray<unknown>\n ancestorFields: ReadonlyMap<string, ReadonlyArray<FieldDefinition>>\n options: {validateFields: boolean; normalize?: boolean}\n}): Array<unknown> {\n const hasBlockMember = of.some((member) => member.type === 'block')\n const childBlockSubSchema = hasBlockMember\n ? getSubSchema(schema, of)\n : undefined\n\n return value.flatMap((item) => {\n if (!isTypedObject(item)) {\n return [item]\n }\n\n if (childBlockSubSchema && item._type === childBlockSubSchema.block.name) {\n const parsed = parseTextBlock({\n block: item,\n schema: childBlockSubSchema,\n keyGenerator,\n options: {\n normalize: false,\n removeUnusedMarkDefs: false,\n validateFields: options.validateFields,\n },\n })\n return parsed ? [parsed] : []\n }\n\n const schemaType = resolveOfMember(of, item._type, schema, ancestorFields)\n if (!schemaType) {\n return [item]\n }\n return [\n parseObject({\n object: item,\n schema,\n keyGenerator,\n schemaType: {\n name: schemaType.name,\n fields: schemaType.fields,\n },\n ancestorFields,\n options,\n }),\n ]\n })\n}\n","/**\n * @public\n */\nexport const defaultKeyGenerator = (): string => randomKey(12)\n\nconst getByteHexTable = (() => {\n let table: any[]\n return () => {\n if (table) {\n return table\n }\n\n table = []\n for (let i = 0; i < 256; ++i) {\n table[i] = (i + 0x100).toString(16).slice(1)\n }\n return table\n }\n})()\n\n// WHATWG crypto RNG - https://w3c.github.io/webcrypto/Overview.html\nfunction whatwgRNG(length = 16) {\n const rnds8 = new Uint8Array(length)\n crypto.getRandomValues(rnds8)\n return rnds8\n}\n\nfunction randomKey(length?: number): string {\n const table = getByteHexTable()\n return whatwgRNG(length)\n .reduce((str, n) => str + table[n], '')\n .slice(0, length)\n}\n","import {isSpan, isTextBlock, type PortableTextBlock} from '@portabletext/schema'\nimport type {EditorContext} from '../editor/editor-snapshot'\nimport {defaultKeyGenerator} from './key-generator'\nimport {parseBlock} from './parse-blocks'\nimport {getSelectionEndPoint} from './util.get-selection-end-point'\nimport {getSelectionStartPoint} from './util.get-selection-start-point'\nimport {\n getBlockKeyFromSelectionPoint,\n getChildKeyFromSelectionPoint,\n} from './util.selection-point'\n\n/**\n * @public\n */\nexport function sliceBlocks({\n context,\n blocks,\n}: {\n context: Pick<EditorContext, 'schema' | 'selection'> & {\n keyGenerator?: () => string\n }\n blocks: Array<PortableTextBlock>\n}): Array<PortableTextBlock> {\n const slice: Array<PortableTextBlock> = []\n\n if (!context.selection) {\n return slice\n }\n\n let startBlock: PortableTextBlock | undefined\n const middleBlocks: PortableTextBlock[] = []\n let endBlock: PortableTextBlock | undefined\n\n const startPoint = getSelectionStartPoint(context.selection)\n const endPoint = getSelectionEndPoint(context.selection)\n const startBlockKey = getBlockKeyFromSelectionPoint(startPoint)\n const startChildKey = getChildKeyFromSelectionPoint(startPoint)\n const endBlockKey = getBlockKeyFromSelectionPoint(endPoint)\n const endChildKey = getChildKeyFromSelectionPoint(endPoint)\n\n if (!startBlockKey || !endBlockKey) {\n return slice\n }\n\n for (const block of blocks) {\n if (!isTextBlock(context, block)) {\n if (block._key === startBlockKey && block._key === endBlockKey) {\n startBlock = block\n break\n }\n }\n\n if (block._key === startBlockKey) {\n if (!isTextBlock(context, block)) {\n startBlock = block\n continue\n }\n\n if (startChildKey) {\n for (const child of block.children) {\n if (child._key === startChildKey) {\n if (isSpan(context, child)) {\n const text =\n child._key === endChildKey\n ? child.text.slice(startPoint.offset, endPoint.offset)\n : child.text.slice(startPoint.offset)\n\n startBlock = {\n ...block,\n children: [\n {\n ...child,\n text,\n },\n ],\n }\n } else {\n startBlock = {\n ...block,\n children: [child],\n }\n }\n\n if (block._key === endBlockKey && startChildKey === endChildKey) {\n break\n }\n continue\n }\n\n if (startBlock && isTextBlock(context, startBlock)) {\n if (\n endChildKey &&\n child._key === endChildKey &&\n isSpan(context, child)\n ) {\n startBlock.children.push({\n ...child,\n text: child.text.slice(0, endPoint.offset),\n })\n } else {\n startBlock.children.push(child)\n }\n\n if (\n block._key === endBlockKey &&\n endChildKey &&\n child._key === endChildKey\n ) {\n break\n }\n }\n }\n\n if (startBlockKey === endBlockKey) {\n break\n }\n\n continue\n }\n\n startBlock = block\n\n if (startBlockKey === endBlockKey) {\n break\n }\n }\n\n if (block._key === endBlockKey) {\n if (!isTextBlock(context, block)) {\n endBlock = block\n break\n }\n\n if (endChildKey) {\n endBlock = {\n ...block,\n children: [],\n }\n\n for (const child of block.children) {\n if (endBlock && isTextBlock(context, endBlock)) {\n if (child._key === endChildKey && isSpan(context, child)) {\n endBlock.children.push({\n ...child,\n text: child.text.slice(0, endPoint.offset),\n })\n\n break\n }\n\n endBlock.children.push(child)\n\n if (endChildKey && child._key === endChildKey) {\n break\n }\n }\n }\n\n break\n }\n\n endBlock = block\n\n break\n }\n\n if (startBlock) {\n middleBlocks.push(\n parseBlock({\n keyGenerator: context.keyGenerator ?? defaultKeyGenerator,\n block,\n options: {\n normalize: false,\n removeUnusedMarkDefs: true,\n validateFields: false,\n },\n schema: context.schema,\n }) ?? block,\n )\n }\n }\n\n const parsedStartBlock = startBlock\n ? parseBlock({\n keyGenerator: context.keyGenerator ?? defaultKeyGenerator,\n block: startBlock,\n options: {\n normalize: false,\n removeUnusedMarkDefs: true,\n validateFields: false,\n },\n schema: context.schema,\n })\n : undefined\n\n const parsedEndBlock = endBlock\n ? parseBlock({\n keyGenerator: context.keyGenerator ?? defaultKeyGenerator,\n block: endBlock,\n options: {\n normalize: false,\n removeUnusedMarkDefs: true,\n validateFields: false,\n },\n schema: context.schema,\n })\n : undefined\n\n return [\n ...(parsedStartBlock ? [parsedStartBlock] : []),\n ...middleBlocks,\n ...(parsedEndBlock ? [parsedEndBlock] : []),\n ]\n}\n"],"names":["getAncestorTextBlock","snapshot","path","result","getAncestor","node","isTextBlock","schema","context","blockOffsetToSpanSelectionPoint","blockOffset","direction","blockEntry","getNode","block","blockPath","offsetLeft","offset","selectionPoint","skippedInlineObject","child","children","isSpan","text","length","_key","spanSelectionPointToBlockOffset","spanSegment","at","isKeyedSegment","textBlock","isEqualPathSegments","segA","segB","undefined","Array","isArray","isEqualPaths","a","b","i","isEqualSelectionPoints","getBlockKeyFromSelectionPoint","point","blockPathSegment","getChildKeyFromSelectionPoint","childPathSegment","getBlockEndPoint","lastChild","getBlockStartPoint","firstChild","isSelectionCollapsed","selection","anchor","focus","getSelectionEndPoint","backward","getSelectionStartPoint","parseBlocks","keyGenerator","blocks","options","flatMap","parsedBlock","parseBlockInternal","parseBlock","parseSpan","span","markDefKeyMap","parseSpanInternal","parseInlineObject","inlineObject","parseInlineObjectInternal","parseMarkDefs","markDefs","parseMarkDefsInternal","parseTextBlock","parseBlockObject","blockObject","isTypedObject","schemaType","blockObjects","find","name","_type","parseObject","object","isListBlock","level","listItem","customFields","key","Object","keys","validateFields","fields","some","f","parsedChildren","map","parseChildInternal","filter","marks","normalizedChildren","normalize","reduce","index","previousChild","removeUnusedMarkDefs","markDef","includes","styles","style","lists","list","unparsedMarkDefs","Map","annotations","parsedAnnotation","set","isRecord","mark","markDefKey","get","decorators","decorator","inlineObjects","parseAnnotation","annotation","resolveOfMember","of","typeName","ancestorFields","member","type","ancestorMatch","rootMatch","fieldsByName","field","nextAncestors","values","value","entries","parseContainerFieldValue","childBlockSubSchema","getSubSchema","item","parsed","defaultKeyGenerator","randomKey","getByteHexTable","table","toString","slice","whatwgRNG","rnds8","Uint8Array","crypto","getRandomValues","str","n","sliceBlocks","startBlock","middleBlocks","endBlock","startPoint","endPoint","startBlockKey","startChildKey","endBlockKey","endChildKey","push","parsedStartBlock","parsedEndBlock"],"mappings":"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"}

@@ -6,3 +6,3 @@ import { getInline, getSelectionStartPoint, getSelectionEndPoint, getFocusTextBlock, getSelectionText, comparePaths } from "../_chunks-es/selector.is-at-the-start-of-block.js";

import { spanSelectionPointToBlockOffset, getBlockEndPoint, getSelectionEndPoint as getSelectionEndPoint$1, getBlockStartPoint, getSelectionStartPoint as getSelectionStartPoint$1 } from "../_chunks-es/util.slice-blocks.js";
import { getChildren, isKeyedSegment, isObjectNode } from "../_chunks-es/get-ancestor.js";
import { getChildren, isKeyedSegment, isObjectNode } from "../_chunks-es/get-node.js";
const getAnchorBlock = (snapshot) => {

@@ -9,0 +9,0 @@ const selection = snapshot.context.selection;

@@ -1,1 +0,1 @@

{"version":3,"file":"index.js","sources":["../../src/selectors/selector.get-anchor-block.ts","../../src/selectors/selector.get-anchor-child.ts","../../src/selectors/selector.get-anchor-span.ts","../../src/selectors/selector.get-anchor-text-block.ts","../../src/selectors/selector.get-block-offsets.ts","../../src/selectors/selector.get-next-inline-objects.ts","../../src/selectors/selector.get-previous-inline-objects.ts","../../src/selectors/selector.get-selection.ts","../../src/selectors/selector.get-text-after.ts","../../src/selectors/selector.get-text-before.ts","../../src/selectors/selector.get-value.ts","../../src/utils/util.compare-points.ts","../../src/selectors/selector.is-point-after-selection.ts","../../src/selectors/selector.is-point-before-selection.ts"],"sourcesContent":["import type {PortableTextBlock} from '@portabletext/schema'\nimport type {EditorSelector} from '../editor/editor-selector'\nimport {getEnclosingBlock} from '../node-traversal/get-enclosing-block'\nimport type {BlockPath} from '../types/paths'\n\n/**\n * Returns the block containing the anchor selection, resolved at any depth.\n *\n * @public\n */\nexport const getAnchorBlock: EditorSelector<\n {node: PortableTextBlock; path: BlockPath} | undefined\n> = (snapshot) => {\n const selection = snapshot.context.selection\n\n if (!selection) {\n return undefined\n }\n\n return getEnclosingBlock(snapshot, selection.anchor.path)\n}\n","import type {PortableTextObject, PortableTextSpan} from '@portabletext/schema'\nimport type {EditorSelector} from '../editor/editor-selector'\nimport {getInline} from '../node-traversal/get-inline'\nimport type {ChildPath} from '../types/paths'\n\n/**\n * Returns the child (span or inline object) containing the anchor selection,\n * resolved at any depth.\n *\n * @public\n */\nexport const getAnchorChild: EditorSelector<\n | {\n node: PortableTextObject | PortableTextSpan\n path: ChildPath\n }\n | undefined\n> = (snapshot) => {\n const selection = snapshot.context.selection\n\n if (!selection) {\n return undefined\n }\n\n return getInline(snapshot, selection.anchor.path)\n}\n","import {isSpan, type PortableTextSpan} from '@portabletext/schema'\nimport type {EditorSelector} from '../editor/editor-selector'\nimport type {ChildPath} from '../types/paths'\nimport {getAnchorChild} from './selector.get-anchor-child'\n\n/**\n * Returns the span containing the anchor selection, resolved at any depth.\n *\n * @public\n */\nexport const getAnchorSpan: EditorSelector<\n {node: PortableTextSpan; path: ChildPath} | undefined\n> = (snapshot) => {\n const anchorChild = getAnchorChild(snapshot)\n\n return anchorChild && isSpan(snapshot.context, anchorChild.node)\n ? {node: anchorChild.node, path: anchorChild.path}\n : undefined\n}\n","import {isTextBlock, type PortableTextTextBlock} from '@portabletext/schema'\nimport type {EditorSelector} from '../editor/editor-selector'\nimport type {BlockPath} from '../types/paths'\nimport {getAnchorBlock} from './selector.get-anchor-block'\n\n/**\n * Returns the text block containing the anchor selection, resolved at any\n * depth.\n *\n * @public\n */\nexport const getAnchorTextBlock: EditorSelector<\n {node: PortableTextTextBlock; path: BlockPath} | undefined\n> = (snapshot) => {\n const anchorBlock = getAnchorBlock(snapshot)\n\n return anchorBlock && isTextBlock(snapshot.context, anchorBlock.node)\n ? {node: anchorBlock.node, path: anchorBlock.path}\n : undefined\n}\n","import type {EditorSelector} from '../editor/editor-selector'\nimport type {BlockOffset} from '../types/block-offset'\nimport {spanSelectionPointToBlockOffset} from '../utils/util.block-offset'\nimport {getSelectionEndPoint} from './selector.get-selection-end-point'\nimport {getSelectionStartPoint} from './selector.get-selection-start-point'\n\n/**\n * @public\n */\nexport const getBlockOffsets: EditorSelector<\n {start: BlockOffset; end: BlockOffset} | undefined\n> = (snapshot) => {\n if (!snapshot.context.selection) {\n return undefined\n }\n\n const selectionStartPoint = getSelectionStartPoint(snapshot)\n const selectionEndPoint = getSelectionEndPoint(snapshot)\n\n if (!selectionStartPoint || !selectionEndPoint) {\n return undefined\n }\n\n const start = spanSelectionPointToBlockOffset({\n snapshot,\n selectionPoint: selectionStartPoint,\n })\n const end = spanSelectionPointToBlockOffset({\n snapshot,\n selectionPoint: selectionEndPoint,\n })\n\n return start && end ? {start, end} : undefined\n}\n","import type {PortableTextObject} from '@portabletext/schema'\nimport type {EditorSelector} from '../editor/editor-selector'\nimport {getChildren} from '../node-traversal/get-children'\nimport {isObjectNode} from '../slate/node/is-object-node'\nimport {parentPath} from '../slate/path/parent-path'\nimport type {ChildPath} from '../types/paths'\nimport {isKeyedSegment} from '../utils/util.is-keyed-segment'\nimport {getSelectionEndPoint} from './selector.get-selection-end-point'\n\n/**\n * Returns all inline objects after the selection end within the same text\n * block, resolved at any depth.\n *\n * @public\n */\nexport const getNextInlineObjects: EditorSelector<\n Array<{node: PortableTextObject; path: ChildPath}>\n> = (snapshot) => {\n const point = getSelectionEndPoint(snapshot)\n\n if (!point) {\n return []\n }\n\n const endSegment = point.path.at(-1)\n const endKey = isKeyedSegment(endSegment) ? endSegment._key : undefined\n\n if (!endKey) {\n return []\n }\n\n const children = getChildren(snapshot, parentPath(point.path))\n const inlineObjects: Array<{node: PortableTextObject; path: ChildPath}> = []\n let endFound = false\n\n for (const child of children) {\n const segment = child.path.at(-1)\n const childKey = isKeyedSegment(segment) ? segment._key : undefined\n\n if (childKey === endKey) {\n endFound = true\n continue\n }\n\n if (\n endFound &&\n isObjectNode({schema: snapshot.context.schema}, child.node)\n ) {\n inlineObjects.push({\n node: child.node,\n path: child.path,\n })\n }\n }\n\n return inlineObjects\n}\n","import type {PortableTextObject} from '@portabletext/schema'\nimport type {EditorSelector} from '../editor/editor-selector'\nimport {getChildren} from '../node-traversal/get-children'\nimport {isObjectNode} from '../slate/node/is-object-node'\nimport {parentPath} from '../slate/path/parent-path'\nimport type {ChildPath} from '../types/paths'\nimport {isKeyedSegment} from '../utils/util.is-keyed-segment'\nimport {getSelectionStartPoint} from './selector.get-selection-start-point'\n\n/**\n * Returns all inline objects before the selection start within the same text\n * block, resolved at any depth.\n *\n * @public\n */\nexport const getPreviousInlineObjects: EditorSelector<\n Array<{node: PortableTextObject; path: ChildPath}>\n> = (snapshot) => {\n const point = getSelectionStartPoint(snapshot)\n\n if (!point) {\n return []\n }\n\n const startSegment = point.path.at(-1)\n const startKey = isKeyedSegment(startSegment) ? startSegment._key : undefined\n\n if (!startKey) {\n return []\n }\n\n const children = getChildren(snapshot, parentPath(point.path))\n const inlineObjects: Array<{node: PortableTextObject; path: ChildPath}> = []\n\n for (const child of children) {\n const segment = child.path.at(-1)\n const childKey = isKeyedSegment(segment) ? segment._key : undefined\n\n if (childKey === startKey) {\n break\n }\n\n if (isObjectNode({schema: snapshot.context.schema}, child.node)) {\n inlineObjects.push({\n node: child.node,\n path: child.path,\n })\n }\n }\n\n return inlineObjects\n}\n","import type {EditorSelector} from '../editor/editor-selector'\nimport type {EditorSelection} from '../types/editor'\n\n/**\n * @public\n */\nexport const getSelection: EditorSelector<EditorSelection> = (snapshot) => {\n return snapshot.context.selection\n}\n","import type {EditorSelector} from '../editor/editor-selector'\nimport {getBlockEndPoint} from '../utils/util.get-block-end-point'\nimport {getSelectionEndPoint} from '../utils/util.get-selection-end-point'\nimport {getFocusTextBlock} from './selector.get-focus-text-block'\nimport {getSelectionText} from './selector.get-selection-text'\n\n/**\n * @public\n */\nexport const getBlockTextAfter: EditorSelector<string> = (snapshot) => {\n if (!snapshot.context.selection) {\n return ''\n }\n\n const endPoint = getSelectionEndPoint(snapshot.context.selection)\n const block = getFocusTextBlock({\n ...snapshot,\n context: {\n ...snapshot.context,\n selection: {\n anchor: endPoint,\n focus: endPoint,\n },\n },\n })\n\n if (!block) {\n return ''\n }\n\n const endOfBlock = getBlockEndPoint({\n context: snapshot.context,\n block,\n })\n\n return getSelectionText({\n ...snapshot,\n context: {\n ...snapshot.context,\n selection: {\n anchor: endPoint,\n focus: endOfBlock,\n },\n },\n })\n}\n","import type {EditorSelector} from '../editor/editor-selector'\nimport {getBlockStartPoint} from '../utils/util.get-block-start-point'\nimport {getSelectionStartPoint} from '../utils/util.get-selection-start-point'\nimport {getFocusTextBlock} from './selector.get-focus-text-block'\nimport {getSelectionText} from './selector.get-selection-text'\n\n/**\n * @public\n */\nexport const getBlockTextBefore: EditorSelector<string> = (snapshot) => {\n if (!snapshot.context.selection) {\n return ''\n }\n\n const startPoint = getSelectionStartPoint(snapshot.context.selection)\n const block = getFocusTextBlock({\n ...snapshot,\n context: {\n ...snapshot.context,\n selection: {\n anchor: startPoint,\n focus: startPoint,\n },\n },\n })\n\n if (!block) {\n return ''\n }\n\n const startOfBlock = getBlockStartPoint({\n context: snapshot.context,\n block,\n })\n\n return getSelectionText({\n ...snapshot,\n context: {\n ...snapshot.context,\n selection: {\n anchor: startOfBlock,\n focus: startPoint,\n },\n },\n })\n}\n","import type {PortableTextBlock} from '@portabletext/schema'\nimport type {EditorSelector} from '../editor/editor-selector'\n\n/**\n * @public\n */\nexport const getValue: EditorSelector<Array<PortableTextBlock>> = (\n snapshot,\n) => {\n return snapshot.context.value\n}\n","import type {EditorSnapshot} from '../editor/editor-snapshot'\nimport {comparePaths} from '../slate/path/compare-paths'\nimport type {EditorSelectionPoint} from '../types/editor'\n\n/**\n * Returns:\n *\n * - `-1` if `pointA` is before `pointB`\n * - `0` if `pointA` and `pointB` are equal\n * - `1` if `pointA` is after `pointB`.\n *\n * Compares the two points by document order, resolved at any depth. When\n * the paths are equal, compares offsets.\n */\nexport function comparePoints(\n snapshot: EditorSnapshot,\n pointA: EditorSelectionPoint,\n pointB: EditorSelectionPoint,\n): -1 | 0 | 1 {\n const pathComparison = comparePaths(pointA.path, pointB.path, {\n children: snapshot.context.value,\n })\n\n if (pathComparison !== 0) {\n return pathComparison\n }\n\n if (pointA.offset < pointB.offset) {\n return -1\n }\n\n if (pointA.offset > pointB.offset) {\n return 1\n }\n\n return 0\n}\n","import type {EditorSelector} from '../editor/editor-selector'\nimport type {EditorSelectionPoint} from '../types/editor'\nimport {comparePoints} from '../utils/util.compare-points'\nimport {getSelectionEndPoint} from '../utils/util.get-selection-end-point'\n\n/**\n * @public\n */\nexport function isPointAfterSelection(\n point: EditorSelectionPoint,\n): EditorSelector<boolean> {\n return (snapshot) => {\n if (!snapshot.context.selection) {\n return false\n }\n\n const endPoint = getSelectionEndPoint(snapshot.context.selection)\n\n return comparePoints(snapshot, point, endPoint) === 1\n }\n}\n","import type {EditorSelector} from '../editor/editor-selector'\nimport type {EditorSelectionPoint} from '../types/editor'\nimport {comparePoints} from '../utils/util.compare-points'\nimport {getSelectionStartPoint} from '../utils/util.get-selection-start-point'\n\n/**\n * @public\n */\nexport function isPointBeforeSelection(\n point: EditorSelectionPoint,\n): EditorSelector<boolean> {\n return (snapshot) => {\n if (!snapshot.context.selection) {\n return false\n }\n\n const startPoint = getSelectionStartPoint(snapshot.context.selection)\n\n return comparePoints(snapshot, point, startPoint) === -1\n }\n}\n"],"names":["getAnchorBlock","snapshot","selection","context","getEnclosingBlock","anchor","path","getAnchorChild","getInline","getAnchorSpan","anchorChild","isSpan","node","undefined","getAnchorTextBlock","anchorBlock","isTextBlock","getBlockOffsets","selectionStartPoint","getSelectionStartPoint","selectionEndPoint","getSelectionEndPoint","start","spanSelectionPointToBlockOffset","selectionPoint","end","getNextInlineObjects","point","endSegment","at","endKey","isKeyedSegment","_key","children","getChildren","parentPath","inlineObjects","endFound","child","segment","isObjectNode","schema","push","getPreviousInlineObjects","startSegment","startKey","getSelection","getBlockTextAfter","endPoint","block","getFocusTextBlock","focus","endOfBlock","getBlockEndPoint","getSelectionText","getBlockTextBefore","startPoint","startOfBlock","getBlockStartPoint","getValue","value","comparePoints","pointA","pointB","pathComparison","comparePaths","offset","isPointAfterSelection","isPointBeforeSelection"],"mappings":"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"}
{"version":3,"file":"index.js","sources":["../../src/selectors/selector.get-anchor-block.ts","../../src/selectors/selector.get-anchor-child.ts","../../src/selectors/selector.get-anchor-span.ts","../../src/selectors/selector.get-anchor-text-block.ts","../../src/selectors/selector.get-block-offsets.ts","../../src/selectors/selector.get-next-inline-objects.ts","../../src/selectors/selector.get-previous-inline-objects.ts","../../src/selectors/selector.get-selection.ts","../../src/selectors/selector.get-text-after.ts","../../src/selectors/selector.get-text-before.ts","../../src/selectors/selector.get-value.ts","../../src/utils/util.compare-points.ts","../../src/selectors/selector.is-point-after-selection.ts","../../src/selectors/selector.is-point-before-selection.ts"],"sourcesContent":["import type {PortableTextBlock} from '@portabletext/schema'\nimport type {EditorSelector} from '../editor/editor-selector'\nimport {getEnclosingBlock} from '../node-traversal/get-enclosing-block'\nimport type {BlockPath} from '../types/paths'\n\n/**\n * Returns the block containing the anchor selection, resolved at any depth.\n *\n * @public\n */\nexport const getAnchorBlock: EditorSelector<\n {node: PortableTextBlock; path: BlockPath} | undefined\n> = (snapshot) => {\n const selection = snapshot.context.selection\n\n if (!selection) {\n return undefined\n }\n\n return getEnclosingBlock(snapshot, selection.anchor.path)\n}\n","import type {PortableTextObject, PortableTextSpan} from '@portabletext/schema'\nimport type {EditorSelector} from '../editor/editor-selector'\nimport {getInline} from '../node-traversal/get-inline'\nimport type {ChildPath} from '../types/paths'\n\n/**\n * Returns the child (span or inline object) containing the anchor selection,\n * resolved at any depth.\n *\n * @public\n */\nexport const getAnchorChild: EditorSelector<\n | {\n node: PortableTextObject | PortableTextSpan\n path: ChildPath\n }\n | undefined\n> = (snapshot) => {\n const selection = snapshot.context.selection\n\n if (!selection) {\n return undefined\n }\n\n return getInline(snapshot, selection.anchor.path)\n}\n","import {isSpan, type PortableTextSpan} from '@portabletext/schema'\nimport type {EditorSelector} from '../editor/editor-selector'\nimport type {ChildPath} from '../types/paths'\nimport {getAnchorChild} from './selector.get-anchor-child'\n\n/**\n * Returns the span containing the anchor selection, resolved at any depth.\n *\n * @public\n */\nexport const getAnchorSpan: EditorSelector<\n {node: PortableTextSpan; path: ChildPath} | undefined\n> = (snapshot) => {\n const anchorChild = getAnchorChild(snapshot)\n\n return anchorChild && isSpan(snapshot.context, anchorChild.node)\n ? {node: anchorChild.node, path: anchorChild.path}\n : undefined\n}\n","import {isTextBlock, type PortableTextTextBlock} from '@portabletext/schema'\nimport type {EditorSelector} from '../editor/editor-selector'\nimport type {BlockPath} from '../types/paths'\nimport {getAnchorBlock} from './selector.get-anchor-block'\n\n/**\n * Returns the text block containing the anchor selection, resolved at any\n * depth.\n *\n * @public\n */\nexport const getAnchorTextBlock: EditorSelector<\n {node: PortableTextTextBlock; path: BlockPath} | undefined\n> = (snapshot) => {\n const anchorBlock = getAnchorBlock(snapshot)\n\n return anchorBlock && isTextBlock(snapshot.context, anchorBlock.node)\n ? {node: anchorBlock.node, path: anchorBlock.path}\n : undefined\n}\n","import type {EditorSelector} from '../editor/editor-selector'\nimport type {BlockOffset} from '../types/block-offset'\nimport {spanSelectionPointToBlockOffset} from '../utils/util.block-offset'\nimport {getSelectionEndPoint} from './selector.get-selection-end-point'\nimport {getSelectionStartPoint} from './selector.get-selection-start-point'\n\n/**\n * @public\n */\nexport const getBlockOffsets: EditorSelector<\n {start: BlockOffset; end: BlockOffset} | undefined\n> = (snapshot) => {\n if (!snapshot.context.selection) {\n return undefined\n }\n\n const selectionStartPoint = getSelectionStartPoint(snapshot)\n const selectionEndPoint = getSelectionEndPoint(snapshot)\n\n if (!selectionStartPoint || !selectionEndPoint) {\n return undefined\n }\n\n const start = spanSelectionPointToBlockOffset({\n snapshot,\n selectionPoint: selectionStartPoint,\n })\n const end = spanSelectionPointToBlockOffset({\n snapshot,\n selectionPoint: selectionEndPoint,\n })\n\n return start && end ? {start, end} : undefined\n}\n","import type {PortableTextObject} from '@portabletext/schema'\nimport type {EditorSelector} from '../editor/editor-selector'\nimport {isObjectNode} from '../engine/node/is-object-node'\nimport {parentPath} from '../engine/path/parent-path'\nimport {getChildren} from '../node-traversal/get-children'\nimport type {ChildPath} from '../types/paths'\nimport {isKeyedSegment} from '../utils/util.is-keyed-segment'\nimport {getSelectionEndPoint} from './selector.get-selection-end-point'\n\n/**\n * Returns all inline objects after the selection end within the same text\n * block, resolved at any depth.\n *\n * @public\n */\nexport const getNextInlineObjects: EditorSelector<\n Array<{node: PortableTextObject; path: ChildPath}>\n> = (snapshot) => {\n const point = getSelectionEndPoint(snapshot)\n\n if (!point) {\n return []\n }\n\n const endSegment = point.path.at(-1)\n const endKey = isKeyedSegment(endSegment) ? endSegment._key : undefined\n\n if (!endKey) {\n return []\n }\n\n const children = getChildren(snapshot, parentPath(point.path))\n const inlineObjects: Array<{node: PortableTextObject; path: ChildPath}> = []\n let endFound = false\n\n for (const child of children) {\n const segment = child.path.at(-1)\n const childKey = isKeyedSegment(segment) ? segment._key : undefined\n\n if (childKey === endKey) {\n endFound = true\n continue\n }\n\n if (\n endFound &&\n isObjectNode({schema: snapshot.context.schema}, child.node)\n ) {\n inlineObjects.push({\n node: child.node,\n path: child.path,\n })\n }\n }\n\n return inlineObjects\n}\n","import type {PortableTextObject} from '@portabletext/schema'\nimport type {EditorSelector} from '../editor/editor-selector'\nimport {isObjectNode} from '../engine/node/is-object-node'\nimport {parentPath} from '../engine/path/parent-path'\nimport {getChildren} from '../node-traversal/get-children'\nimport type {ChildPath} from '../types/paths'\nimport {isKeyedSegment} from '../utils/util.is-keyed-segment'\nimport {getSelectionStartPoint} from './selector.get-selection-start-point'\n\n/**\n * Returns all inline objects before the selection start within the same text\n * block, resolved at any depth.\n *\n * @public\n */\nexport const getPreviousInlineObjects: EditorSelector<\n Array<{node: PortableTextObject; path: ChildPath}>\n> = (snapshot) => {\n const point = getSelectionStartPoint(snapshot)\n\n if (!point) {\n return []\n }\n\n const startSegment = point.path.at(-1)\n const startKey = isKeyedSegment(startSegment) ? startSegment._key : undefined\n\n if (!startKey) {\n return []\n }\n\n const children = getChildren(snapshot, parentPath(point.path))\n const inlineObjects: Array<{node: PortableTextObject; path: ChildPath}> = []\n\n for (const child of children) {\n const segment = child.path.at(-1)\n const childKey = isKeyedSegment(segment) ? segment._key : undefined\n\n if (childKey === startKey) {\n break\n }\n\n if (isObjectNode({schema: snapshot.context.schema}, child.node)) {\n inlineObjects.push({\n node: child.node,\n path: child.path,\n })\n }\n }\n\n return inlineObjects\n}\n","import type {EditorSelector} from '../editor/editor-selector'\nimport type {EditorSelection} from '../types/editor'\n\n/**\n * @public\n */\nexport const getSelection: EditorSelector<EditorSelection> = (snapshot) => {\n return snapshot.context.selection\n}\n","import type {EditorSelector} from '../editor/editor-selector'\nimport {getBlockEndPoint} from '../utils/util.get-block-end-point'\nimport {getSelectionEndPoint} from '../utils/util.get-selection-end-point'\nimport {getFocusTextBlock} from './selector.get-focus-text-block'\nimport {getSelectionText} from './selector.get-selection-text'\n\n/**\n * @public\n */\nexport const getBlockTextAfter: EditorSelector<string> = (snapshot) => {\n if (!snapshot.context.selection) {\n return ''\n }\n\n const endPoint = getSelectionEndPoint(snapshot.context.selection)\n const block = getFocusTextBlock({\n ...snapshot,\n context: {\n ...snapshot.context,\n selection: {\n anchor: endPoint,\n focus: endPoint,\n },\n },\n })\n\n if (!block) {\n return ''\n }\n\n const endOfBlock = getBlockEndPoint({\n context: snapshot.context,\n block,\n })\n\n return getSelectionText({\n ...snapshot,\n context: {\n ...snapshot.context,\n selection: {\n anchor: endPoint,\n focus: endOfBlock,\n },\n },\n })\n}\n","import type {EditorSelector} from '../editor/editor-selector'\nimport {getBlockStartPoint} from '../utils/util.get-block-start-point'\nimport {getSelectionStartPoint} from '../utils/util.get-selection-start-point'\nimport {getFocusTextBlock} from './selector.get-focus-text-block'\nimport {getSelectionText} from './selector.get-selection-text'\n\n/**\n * @public\n */\nexport const getBlockTextBefore: EditorSelector<string> = (snapshot) => {\n if (!snapshot.context.selection) {\n return ''\n }\n\n const startPoint = getSelectionStartPoint(snapshot.context.selection)\n const block = getFocusTextBlock({\n ...snapshot,\n context: {\n ...snapshot.context,\n selection: {\n anchor: startPoint,\n focus: startPoint,\n },\n },\n })\n\n if (!block) {\n return ''\n }\n\n const startOfBlock = getBlockStartPoint({\n context: snapshot.context,\n block,\n })\n\n return getSelectionText({\n ...snapshot,\n context: {\n ...snapshot.context,\n selection: {\n anchor: startOfBlock,\n focus: startPoint,\n },\n },\n })\n}\n","import type {PortableTextBlock} from '@portabletext/schema'\nimport type {EditorSelector} from '../editor/editor-selector'\n\n/**\n * @public\n */\nexport const getValue: EditorSelector<Array<PortableTextBlock>> = (\n snapshot,\n) => {\n return snapshot.context.value\n}\n","import type {EditorSnapshot} from '../editor/editor-snapshot'\nimport {comparePaths} from '../engine/path/compare-paths'\nimport type {EditorSelectionPoint} from '../types/editor'\n\n/**\n * Returns:\n *\n * - `-1` if `pointA` is before `pointB`\n * - `0` if `pointA` and `pointB` are equal\n * - `1` if `pointA` is after `pointB`.\n *\n * Compares the two points by document order, resolved at any depth. When\n * the paths are equal, compares offsets.\n */\nexport function comparePoints(\n snapshot: EditorSnapshot,\n pointA: EditorSelectionPoint,\n pointB: EditorSelectionPoint,\n): -1 | 0 | 1 {\n const pathComparison = comparePaths(pointA.path, pointB.path, {\n children: snapshot.context.value,\n })\n\n if (pathComparison !== 0) {\n return pathComparison\n }\n\n if (pointA.offset < pointB.offset) {\n return -1\n }\n\n if (pointA.offset > pointB.offset) {\n return 1\n }\n\n return 0\n}\n","import type {EditorSelector} from '../editor/editor-selector'\nimport type {EditorSelectionPoint} from '../types/editor'\nimport {comparePoints} from '../utils/util.compare-points'\nimport {getSelectionEndPoint} from '../utils/util.get-selection-end-point'\n\n/**\n * @public\n */\nexport function isPointAfterSelection(\n point: EditorSelectionPoint,\n): EditorSelector<boolean> {\n return (snapshot) => {\n if (!snapshot.context.selection) {\n return false\n }\n\n const endPoint = getSelectionEndPoint(snapshot.context.selection)\n\n return comparePoints(snapshot, point, endPoint) === 1\n }\n}\n","import type {EditorSelector} from '../editor/editor-selector'\nimport type {EditorSelectionPoint} from '../types/editor'\nimport {comparePoints} from '../utils/util.compare-points'\nimport {getSelectionStartPoint} from '../utils/util.get-selection-start-point'\n\n/**\n * @public\n */\nexport function isPointBeforeSelection(\n point: EditorSelectionPoint,\n): EditorSelector<boolean> {\n return (snapshot) => {\n if (!snapshot.context.selection) {\n return false\n }\n\n const startPoint = getSelectionStartPoint(snapshot.context.selection)\n\n return comparePoints(snapshot, point, startPoint) === -1\n }\n}\n"],"names":["getAnchorBlock","snapshot","selection","context","getEnclosingBlock","anchor","path","getAnchorChild","getInline","getAnchorSpan","anchorChild","isSpan","node","undefined","getAnchorTextBlock","anchorBlock","isTextBlock","getBlockOffsets","selectionStartPoint","getSelectionStartPoint","selectionEndPoint","getSelectionEndPoint","start","spanSelectionPointToBlockOffset","selectionPoint","end","getNextInlineObjects","point","endSegment","at","endKey","isKeyedSegment","_key","children","getChildren","parentPath","inlineObjects","endFound","child","segment","isObjectNode","schema","push","getPreviousInlineObjects","startSegment","startKey","getSelection","getBlockTextAfter","endPoint","block","getFocusTextBlock","focus","endOfBlock","getBlockEndPoint","getSelectionText","getBlockTextBefore","startPoint","startOfBlock","getBlockStartPoint","getValue","value","comparePoints","pointA","pointB","pathComparison","comparePaths","offset","isPointAfterSelection","isPointBeforeSelection"],"mappings":"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"}

@@ -1,3 +0,3 @@

import { getChildren } from "../_chunks-es/get-ancestor.js";
import { getAncestor, getAncestors, getNode } from "../_chunks-es/get-ancestor.js";
import { getChildren } from "../_chunks-es/get-node.js";
import { getAncestor, getAncestors, getNode } from "../_chunks-es/get-node.js";
import { getBlock, getEnclosingBlock, getParent, getPathSubSchema, getSibling, hasNode, isBlock, isInline } from "../_chunks-es/get-path-sub-schema.js";

@@ -4,0 +4,0 @@ import { getFirstChild, getLeaf, getSpanNode, getText, getTextBlockNode, getUnionSchema, isLeaf } from "../_chunks-es/get-first-child.js";

@@ -1,1 +0,1 @@

{"version":3,"file":"index.js","sources":["../../src/node-traversal/get-last-child.ts"],"sourcesContent":["import type {Node} from '../slate/interfaces/node'\nimport type {Path} from '../slate/interfaces/path'\nimport {getChildren} from './get-children'\nimport type {TraversalSnapshot} from './traversal-snapshot'\n\n/**\n * Get the last child of a node at a given path.\n *\n * @beta\n */\nexport function getLastChild(\n snapshot: TraversalSnapshot,\n path: Path,\n): {node: Node; path: Path} | undefined {\n const children = getChildren(snapshot, path)\n\n return children.at(-1)\n}\n"],"names":["getLastChild","snapshot","path","getChildren","at"],"mappings":";;;;AAUO,SAASA,aACdC,UACAC,MACsC;AAGtC,SAFiBC,YAAYF,UAAUC,IAAI,EAE3BE,GAAG,EAAE;AACvB;"}
{"version":3,"file":"index.js","sources":["../../src/node-traversal/get-last-child.ts"],"sourcesContent":["import type {Node} from '../engine/interfaces/node'\nimport type {Path} from '../engine/interfaces/path'\nimport {getChildren} from './get-children'\nimport type {TraversalSnapshot} from './traversal-snapshot'\n\n/**\n * Get the last child of a node at a given path.\n *\n * @beta\n */\nexport function getLastChild(\n snapshot: TraversalSnapshot,\n path: Path,\n): {node: Node; path: Path} | undefined {\n const children = getChildren(snapshot, path)\n\n return children.at(-1)\n}\n"],"names":["getLastChild","snapshot","path","getChildren","at"],"mappings":";;;;AAUO,SAASA,aACdC,UACAC,MACsC;AAGtC,SAFiBC,YAAYF,UAAUC,IAAI,EAE3BE,GAAG,EAAE;AACvB;"}
import { F as BlockOffset, Q as EditorContext, ct as EditorSelection, lt as EditorSelectionPoint } from "../_chunks-dts/behavior.types.action.js";
import { A as ChildPath, M as Path, j as KeyedSegment, k as BlockPath, n as TraversalSnapshot } from "../_chunks-dts/resolve-containers.js";
import * as _portabletext_schema9 from "@portabletext/schema";
import * as _portabletext_schema5 from "@portabletext/schema";
import { PortableTextBlock, PortableTextTextBlock, isSpan, isTextBlock } from "@portabletext/schema";

@@ -128,3 +128,3 @@ /**

incomingBlock: PortableTextTextBlock;
}): PortableTextTextBlock<_portabletext_schema9.PortableTextObject | _portabletext_schema9.PortableTextSpan>;
}): PortableTextTextBlock<_portabletext_schema5.PortableTextSpan | _portabletext_schema5.PortableTextObject>;
/**

@@ -131,0 +131,0 @@ * @public

@@ -1,1 +0,1 @@

{"version":3,"file":"index.d.ts","names":[],"sources":["../../src/utils/util.block-offset.ts","../../src/utils/util.block-offsets-to-selection.ts","../../src/utils/util.child-selection-point-to-block-offset.ts","../../src/utils/util.get-block-end-point.ts","../../src/utils/util.get-block-start-point.ts","../../src/utils/util.get-selection-end-point.ts","../../src/utils/util.get-selection-start-point.ts","../../src/utils/util.get-text-block-text.ts","../../src/utils/util.is-empty-text-block.ts","../../src/utils/util.is-equal-paths.ts","../../src/utils/util.is-equal-selection-points.ts","../../src/utils/util.is-equal-selections.ts","../../src/utils/util.is-keyed-segment.ts","../../src/utils/util.is-selection-collapsed.ts","../../src/utils/util.merge-text-blocks.ts","../../src/utils/util.reverse-selection.ts","../../src/utils/util.slice-blocks.ts"],"sourcesContent":[],"mappings":";;;;;AAYA;;AAEE,iBAFc,+BAAA,CAEd;EAAA,QAAA;EAAA,WAAA;EAAA;CAAA,EAAA;EACA,QAAA,EAEU,iBAFV;EAEU,WAAA,EACG,WADH;EACG,SAAA,EAAA,SAAA,GAAA,UAAA;CAac,CAAA,EAAA;EAAS,IAAA,EAAT,SAAS;EA8DtB,MAAA,EAAA,MAAA;CACd,GAAA,SAAA;;;;AAKE,iBANY,+BAAA,CAMZ;EAAA,QAAA;EAAA;AC3FJ,CD2FI,EAAA;EAAW,QAAA,EAFH,iBAEG;kBADG;AC1FlB,CAAA,CAAA,ED2FI,WC3FY,GAAA,SAAA;;;ADIhB;AACE,iBCLc,uBAAA,CDKd;EAAA,QAAA;EAAA,OAAA;EAAA;AAgFF,CAhFE,EAAA;EACA,QAAA,ECDU,iBDCV;EACA,OAAA,EAAA;IAEU,MAAA,ECHQ,WDGR;IACG,KAAA,ECJyB,WDIzB;EAac,CAAA;EAAS,QAAA,CAAA,EAAA,OAAA;AA8DtC,CAAA,CAAA,EC7EI,eD6EY;;;AAjFhB;AACE,iBEHc,gCAAA,CFGd;EAAA,QAAA;EAAA;CAAA,EAAA;EACA,QAAA,EEAU,iBFAV;EACA,cAAA,EEAgB,oBFAhB;CAEU,CAAA,EEDR,WFCQ,GAAA,SAAA;;AALZ;;AAEE,iBGNc,gBAAA,CHMd;EAAA,OAAA;EAAA;AA+EF,CA/EE,EAAA;EACA,OAAA,EGHS,IHGT,CGHc,aHGd,EAAA,QAAA,CAAA;EAEU,KAAA,EAAA;IACG,IAAA,EGJL,iBHIK;IAac,IAAA,EGhBnB,SHgBmB;EAAS,CAAA;AA8DtC,CAAA,CAAA,EG5EI,oBH4EY;;AAjFhB;;AAEE,iBINc,kBAAA,CJMd;EAAA,OAAA;EAAA;AA+EF,CA/EE,EAAA;EACA,OAAA,EIHS,IJGT,CIHc,aJGd,EAAA,QAAA,CAAA;EAEU,KAAA,EAAA;IACG,IAAA,EIJL,iBJIK;IAac,IAAA,EIhBnB,SJgBmB;EAAS,CAAA;AA8DtC,CAAA,CAAA,EI5EI,oBJ4EY;;;;iBKxFA,8CACW,YAAY,uDACP,+BAC5B,yBAAyB,YAAY,mBACjC,yCAEK,mBAAmB;;;;iBCNhB,gDACW,YAAY,uDACP,+BAC5B,yBAAyB,YAAY,mBACjC,yCAEK,mBAAmB;;;;iBCNhB,gBAAA,QAAwB;;;;APOxB,iBQLA,gBAAA,CRK+B,OAAA,EQJpC,IRIoC,CQJ/B,aRI+B,EAAA,QAAA,CAAA,EAAA,KAAA,EQHtC,iBRGsC,GAAA,OAAA,CAAA,EAAA,OAAA;;;;iBSN/B,YAAA,IAAgB,SAAS;;;;iBCAzB,sBAAA,IACX,yBACA;;;;iBCFW,iBAAA,IAAqB,oBAAoB;;;;iBCDzC,cAAA,+BAA6C;;;;iBCC7C,oBAAA,YAAgC;;;;AbMhC,iBcLA,eAAA,CdK+B;EAAA,OAAA;EAAA,WAAA;EAAA;CAAA,EAAA;EAC7C,OAAA,EcDS,IdCT,CcDc,adCd,EAAA,cAAA,GAAA,QAAA,CAAA;EACA,WAAA,EcDa,qBdCb;EACA,aAAA,EcDe,qBdCf;CAEU,CAAA,EcFX,qBdEW,CcH0B,qBAAA,CACrC,kBAAA,GAAA,qBAAA,CAAA,gBdEW,CAAA;;;;iBeZI,0CACW,YAAY,oCAC1B,mBAAmB;;;;AfKhB,iBgBEA,WAAA,ChBFA;EAA+B,OAAA;EAAA;CAAA,EAAA;EAC7C,OAAA,EgBKS,IhBLT,CgBKc,ahBLd,EAAA,QAAA,GAAA,WAAA,CAAA,GAAA;IACA,YAAA,CAAA,EAAA,GAAA,GAAA,MAAA;EACA,CAAA;EAEU,MAAA,EgBIF,KhBJE,CgBII,iBhBJJ,CAAA;CACG,CAAA,EgBIX,KhBJW,CgBIL,iBhBJK,CAAA"}
{"version":3,"file":"index.d.ts","names":[],"sources":["../../src/utils/util.block-offset.ts","../../src/utils/util.block-offsets-to-selection.ts","../../src/utils/util.child-selection-point-to-block-offset.ts","../../src/utils/util.get-block-end-point.ts","../../src/utils/util.get-block-start-point.ts","../../src/utils/util.get-selection-end-point.ts","../../src/utils/util.get-selection-start-point.ts","../../src/utils/util.get-text-block-text.ts","../../src/utils/util.is-empty-text-block.ts","../../src/utils/util.is-equal-paths.ts","../../src/utils/util.is-equal-selection-points.ts","../../src/utils/util.is-equal-selections.ts","../../src/utils/util.is-keyed-segment.ts","../../src/utils/util.is-selection-collapsed.ts","../../src/utils/util.merge-text-blocks.ts","../../src/utils/util.reverse-selection.ts","../../src/utils/util.slice-blocks.ts"],"sourcesContent":[],"mappings":";;;;;AAYA;;AAEE,iBAFc,+BAAA,CAEd;EAAA,QAAA;EAAA,WAAA;EAAA;CAAA,EAAA;EACA,QAAA,EAEU,iBAFV;EAEU,WAAA,EACG,WADH;EACG,SAAA,EAAA,SAAA,GAAA,UAAA;CAac,CAAA,EAAA;EAAS,IAAA,EAAT,SAAS;EA8DtB,MAAA,EAAA,MAAA;CACd,GAAA,SAAA;;;;AAKE,iBANY,+BAAA,CAMZ;EAAA,QAAA;EAAA;AC3FJ,CD2FI,EAAA;EAAW,QAAA,EAFH,iBAEG;kBADG;AC1FlB,CAAA,CAAA,ED2FI,WC3FY,GAAA,SAAA;;;ADIhB;AACE,iBCLc,uBAAA,CDKd;EAAA,QAAA;EAAA,OAAA;EAAA;AAgFF,CAhFE,EAAA;EACA,QAAA,ECDU,iBDCV;EACA,OAAA,EAAA;IAEU,MAAA,ECHQ,WDGR;IACG,KAAA,ECJyB,WDIzB;EAac,CAAA;EAAS,QAAA,CAAA,EAAA,OAAA;AA8DtC,CAAA,CAAA,EC7EI,eD6EY;;;AAjFhB;AACE,iBEHc,gCAAA,CFGd;EAAA,QAAA;EAAA;CAAA,EAAA;EACA,QAAA,EEAU,iBFAV;EACA,cAAA,EEAgB,oBFAhB;CAEU,CAAA,EEDR,WFCQ,GAAA,SAAA;;AALZ;;AAEE,iBGNc,gBAAA,CHMd;EAAA,OAAA;EAAA;AA+EF,CA/EE,EAAA;EACA,OAAA,EGHS,IHGT,CGHc,aHGd,EAAA,QAAA,CAAA;EAEU,KAAA,EAAA;IACG,IAAA,EGJL,iBHIK;IAac,IAAA,EGhBnB,SHgBmB;EAAS,CAAA;AA8DtC,CAAA,CAAA,EG5EI,oBH4EY;;AAjFhB;;AAEE,iBINc,kBAAA,CJMd;EAAA,OAAA;EAAA;AA+EF,CA/EE,EAAA;EACA,OAAA,EIHS,IJGT,CIHc,aJGd,EAAA,QAAA,CAAA;EAEU,KAAA,EAAA;IACG,IAAA,EIJL,iBJIK;IAac,IAAA,EIhBnB,SJgBmB;EAAS,CAAA;AA8DtC,CAAA,CAAA,EI5EI,oBJ4EY;;;;iBKxFA,8CACW,YAAY,uDACP,+BAC5B,yBAAyB,YAAY,mBACjC,yCAEK,mBAAmB;;;;iBCNhB,gDACW,YAAY,uDACP,+BAC5B,yBAAyB,YAAY,mBACjC,yCAEK,mBAAmB;;;;iBCNhB,gBAAA,QAAwB;;;;APOxB,iBQLA,gBAAA,CRK+B,OAAA,EQJpC,IRIoC,CQJ/B,aRI+B,EAAA,QAAA,CAAA,EAAA,KAAA,EQHtC,iBRGsC,GAAA,OAAA,CAAA,EAAA,OAAA;;;;iBSN/B,YAAA,IAAgB,SAAS;;;;iBCAzB,sBAAA,IACX,yBACA;;;;iBCFW,iBAAA,IAAqB,oBAAoB;;;;iBCDzC,cAAA,+BAA6C;;;;iBCC7C,oBAAA,YAAgC;;;;AbMhC,iBcLA,eAAA,CdK+B;EAAA,OAAA;EAAA,WAAA;EAAA;CAAA,EAAA;EAC7C,OAAA,EcDS,IdCT,CcDc,adCd,EAAA,cAAA,GAAA,QAAA,CAAA;EACA,WAAA,EcDa,qBdCb;EACA,aAAA,EcDe,qBdCf;CAEU,CAAA,EcFX,qBdEW,CcH0B,qBAAA,CACrC,gBAAA,GAAA,qBAAA,CAAA,kBdEW,CAAA;;;;iBeZI,0CACW,YAAY,oCAC1B,mBAAmB;;;;AfKhB,iBgBEA,WAAA,ChBFA;EAA+B,OAAA;EAAA;CAAA,EAAA;EAC7C,OAAA,EgBKS,IhBLT,CgBKc,ahBLd,EAAA,QAAA,GAAA,WAAA,CAAA,GAAA;IACA,YAAA,CAAA,EAAA,GAAA,GAAA,MAAA;EACA,CAAA;EAEU,MAAA,EgBIF,KhBJE,CgBII,iBhBJJ,CAAA;CACG,CAAA,EgBIX,KhBJW,CgBIL,iBhBJK,CAAA"}

@@ -1,7 +0,7 @@

import { blockOffsetToSpanSelectionPoint, getAncestorTextBlock, isEqualSelectionPoints, parseBlock } from "../_chunks-es/util.slice-blocks.js";
import { getBlockEndPoint, getBlockStartPoint, getSelectionEndPoint, getSelectionStartPoint, isEqualPaths, isSelectionCollapsed, sliceBlocks, spanSelectionPointToBlockOffset } from "../_chunks-es/util.slice-blocks.js";
import { getNode, isKeyedSegment } from "../_chunks-es/get-ancestor.js";
import { blockOffsetToSpanSelectionPoint, getAncestorTextBlock, parseBlock } from "../_chunks-es/util.slice-blocks.js";
import { getBlockEndPoint, getBlockStartPoint, getSelectionEndPoint, getSelectionStartPoint, isEqualPaths, isEqualSelectionPoints, isSelectionCollapsed, sliceBlocks, spanSelectionPointToBlockOffset } from "../_chunks-es/util.slice-blocks.js";
import { getNode, isKeyedSegment } from "../_chunks-es/get-node.js";
import { isSpan, isTextBlock } from "@portabletext/schema";
import { isSpan as isSpan2, isTextBlock as isTextBlock2 } from "@portabletext/schema";
import { getTextBlockText, isEmptyTextBlock } from "../_chunks-es/util.is-empty-text-block.js";
import { getTextBlockText, isEmptyTextBlock, isEqualSelections } from "../_chunks-es/util.is-equal-selections.js";
function blockOffsetToBlockSelectionPoint({

@@ -72,5 +72,2 @@ snapshot,

}
function isEqualSelections(a, b) {
return !a && !b ? !0 : !a || !b ? !1 : isEqualSelectionPoints(a.anchor, b.anchor) && isEqualSelectionPoints(a.focus, b.focus);
}
function mergeTextBlocks({

@@ -77,0 +74,0 @@ context,

@@ -1,1 +0,1 @@

{"version":3,"file":"index.js","sources":["../../src/utils/util.block-offset-to-block-selection-point.ts","../../src/utils/util.block-offset-to-selection-point.ts","../../src/utils/util.block-offsets-to-selection.ts","../../src/utils/util.child-selection-point-to-block-offset.ts","../../src/utils/util.is-equal-selections.ts","../../src/utils/util.merge-text-blocks.ts","../../src/utils/util.reverse-selection.ts"],"sourcesContent":["import {getNode} from '../node-traversal/get-node'\nimport type {TraversalSnapshot} from '../node-traversal/traversal-snapshot'\nimport type {BlockOffset} from '../types/block-offset'\nimport type {EditorSelectionPoint} from '../types/editor'\n\nexport function blockOffsetToBlockSelectionPoint({\n snapshot,\n blockOffset,\n}: {\n snapshot: TraversalSnapshot\n blockOffset: BlockOffset\n}): EditorSelectionPoint | undefined {\n const blockEntry = getNode(snapshot, blockOffset.path)\n\n if (!blockEntry) {\n return undefined\n }\n\n return {\n path: blockEntry.path,\n offset: blockOffset.offset,\n }\n}\n","import type {TraversalSnapshot} from '../node-traversal/traversal-snapshot'\nimport type {BlockOffset} from '../types/block-offset'\nimport type {EditorSelectionPoint} from '../types/editor'\nimport {blockOffsetToSpanSelectionPoint} from './util.block-offset'\nimport {blockOffsetToBlockSelectionPoint} from './util.block-offset-to-block-selection-point'\n\nexport function blockOffsetToSelectionPoint({\n snapshot,\n blockOffset,\n direction,\n}: {\n snapshot: TraversalSnapshot\n blockOffset: BlockOffset\n direction: 'forward' | 'backward'\n}): EditorSelectionPoint | undefined {\n const spanSelectionPoint = blockOffsetToSpanSelectionPoint({\n snapshot,\n blockOffset,\n direction,\n })\n\n if (!spanSelectionPoint) {\n return blockOffsetToBlockSelectionPoint({\n snapshot,\n blockOffset,\n })\n }\n\n return spanSelectionPoint\n}\n","import type {TraversalSnapshot} from '../node-traversal/traversal-snapshot'\nimport type {BlockOffset} from '../types/block-offset'\nimport type {EditorSelection} from '../types/editor'\nimport {blockOffsetToSelectionPoint} from './util.block-offset-to-selection-point'\n\n/**\n * @public\n */\nexport function blockOffsetsToSelection({\n snapshot,\n offsets,\n backward,\n}: {\n snapshot: TraversalSnapshot\n offsets: {anchor: BlockOffset; focus: BlockOffset}\n backward?: boolean\n}): EditorSelection {\n const anchor = blockOffsetToSelectionPoint({\n snapshot,\n blockOffset: offsets.anchor,\n direction: backward ? 'backward' : 'forward',\n })\n const focus = blockOffsetToSelectionPoint({\n snapshot,\n blockOffset: offsets.focus,\n direction: backward ? 'forward' : 'backward',\n })\n\n if (!anchor || !focus) {\n return null\n }\n\n return {\n anchor,\n focus,\n backward,\n }\n}\n","import {isSpan} from '@portabletext/schema'\nimport {getAncestorTextBlock} from '../node-traversal/get-ancestor-text-block'\nimport type {TraversalSnapshot} from '../node-traversal/traversal-snapshot'\nimport type {BlockOffset} from '../types/block-offset'\nimport type {EditorSelectionPoint} from '../types/editor'\nimport {isKeyedSegment} from './util.is-keyed-segment'\n\n/**\n * @public\n */\nexport function childSelectionPointToBlockOffset({\n snapshot,\n selectionPoint,\n}: {\n snapshot: TraversalSnapshot\n selectionPoint: EditorSelectionPoint\n}): BlockOffset | undefined {\n const childSegment = selectionPoint.path.at(-1)\n\n if (!isKeyedSegment(childSegment)) {\n return undefined\n }\n\n const textBlock = getAncestorTextBlock(snapshot, selectionPoint.path)\n\n if (!textBlock) {\n return undefined\n }\n\n let offset = 0\n\n for (const child of textBlock.node.children) {\n if (child._key === childSegment._key) {\n return {\n path: textBlock.path,\n offset: offset + selectionPoint.offset,\n }\n }\n\n if (isSpan(snapshot.context, child)) {\n offset += child.text.length\n }\n }\n\n return undefined\n}\n","import type {EditorSelection} from '../types/editor'\nimport {isEqualSelectionPoints} from './util.is-equal-selection-points'\n\n/**\n * @public\n */\nexport function isEqualSelections(a: EditorSelection, b: EditorSelection) {\n if (!a && !b) {\n return true\n }\n\n if (!a || !b) {\n return false\n }\n\n return (\n isEqualSelectionPoints(a.anchor, b.anchor) &&\n isEqualSelectionPoints(a.focus, b.focus)\n )\n}\n","import {isTextBlock, type PortableTextTextBlock} from '@portabletext/schema'\nimport type {EditorContext} from '../editor/editor-snapshot'\nimport {parseBlock} from './parse-blocks'\n\n/**\n * @beta\n */\nexport function mergeTextBlocks({\n context,\n targetBlock,\n incomingBlock,\n}: {\n context: Pick<EditorContext, 'keyGenerator' | 'schema'>\n targetBlock: PortableTextTextBlock\n incomingBlock: PortableTextTextBlock\n}) {\n const parsedIncomingBlock = parseBlock({\n keyGenerator: context.keyGenerator,\n block: incomingBlock,\n options: {\n normalize: false,\n removeUnusedMarkDefs: true,\n validateFields: false,\n },\n schema: context.schema,\n })\n\n if (!parsedIncomingBlock || !isTextBlock(context, parsedIncomingBlock)) {\n return targetBlock\n }\n\n return {\n ...targetBlock,\n children: [...targetBlock.children, ...parsedIncomingBlock.children],\n markDefs: [\n ...(targetBlock.markDefs ?? []),\n ...(parsedIncomingBlock.markDefs ?? []),\n ],\n }\n}\n","import type {EditorSelection} from '../types/editor'\n\n/**\n * @public\n */\nexport function reverseSelection<\n TEditorSelection extends NonNullable<EditorSelection> | null,\n>(selection: TEditorSelection): TEditorSelection {\n if (!selection) {\n return selection\n }\n\n if (selection.backward) {\n return {\n anchor: selection.focus,\n focus: selection.anchor,\n backward: false,\n } as TEditorSelection\n }\n\n return {\n anchor: selection.focus,\n focus: selection.anchor,\n backward: true,\n } as TEditorSelection\n}\n"],"names":["blockOffsetToBlockSelectionPoint","snapshot","blockOffset","blockEntry","getNode","path","offset","blockOffsetToSelectionPoint","direction","blockOffsetToSpanSelectionPoint","blockOffsetsToSelection","offsets","backward","anchor","focus","childSelectionPointToBlockOffset","selectionPoint","childSegment","at","isKeyedSegment","textBlock","getAncestorTextBlock","child","node","children","_key","isSpan","context","text","length","isEqualSelections","a","b","isEqualSelectionPoints","mergeTextBlocks","targetBlock","incomingBlock","parsedIncomingBlock","parseBlock","keyGenerator","block","options","normalize","removeUnusedMarkDefs","validateFields","schema","isTextBlock","markDefs","reverseSelection","selection"],"mappings":"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"}
{"version":3,"file":"index.js","sources":["../../src/utils/util.block-offset-to-block-selection-point.ts","../../src/utils/util.block-offset-to-selection-point.ts","../../src/utils/util.block-offsets-to-selection.ts","../../src/utils/util.child-selection-point-to-block-offset.ts","../../src/utils/util.merge-text-blocks.ts","../../src/utils/util.reverse-selection.ts"],"sourcesContent":["import {getNode} from '../node-traversal/get-node'\nimport type {TraversalSnapshot} from '../node-traversal/traversal-snapshot'\nimport type {BlockOffset} from '../types/block-offset'\nimport type {EditorSelectionPoint} from '../types/editor'\n\nexport function blockOffsetToBlockSelectionPoint({\n snapshot,\n blockOffset,\n}: {\n snapshot: TraversalSnapshot\n blockOffset: BlockOffset\n}): EditorSelectionPoint | undefined {\n const blockEntry = getNode(snapshot, blockOffset.path)\n\n if (!blockEntry) {\n return undefined\n }\n\n return {\n path: blockEntry.path,\n offset: blockOffset.offset,\n }\n}\n","import type {TraversalSnapshot} from '../node-traversal/traversal-snapshot'\nimport type {BlockOffset} from '../types/block-offset'\nimport type {EditorSelectionPoint} from '../types/editor'\nimport {blockOffsetToSpanSelectionPoint} from './util.block-offset'\nimport {blockOffsetToBlockSelectionPoint} from './util.block-offset-to-block-selection-point'\n\nexport function blockOffsetToSelectionPoint({\n snapshot,\n blockOffset,\n direction,\n}: {\n snapshot: TraversalSnapshot\n blockOffset: BlockOffset\n direction: 'forward' | 'backward'\n}): EditorSelectionPoint | undefined {\n const spanSelectionPoint = blockOffsetToSpanSelectionPoint({\n snapshot,\n blockOffset,\n direction,\n })\n\n if (!spanSelectionPoint) {\n return blockOffsetToBlockSelectionPoint({\n snapshot,\n blockOffset,\n })\n }\n\n return spanSelectionPoint\n}\n","import type {TraversalSnapshot} from '../node-traversal/traversal-snapshot'\nimport type {BlockOffset} from '../types/block-offset'\nimport type {EditorSelection} from '../types/editor'\nimport {blockOffsetToSelectionPoint} from './util.block-offset-to-selection-point'\n\n/**\n * @public\n */\nexport function blockOffsetsToSelection({\n snapshot,\n offsets,\n backward,\n}: {\n snapshot: TraversalSnapshot\n offsets: {anchor: BlockOffset; focus: BlockOffset}\n backward?: boolean\n}): EditorSelection {\n const anchor = blockOffsetToSelectionPoint({\n snapshot,\n blockOffset: offsets.anchor,\n direction: backward ? 'backward' : 'forward',\n })\n const focus = blockOffsetToSelectionPoint({\n snapshot,\n blockOffset: offsets.focus,\n direction: backward ? 'forward' : 'backward',\n })\n\n if (!anchor || !focus) {\n return null\n }\n\n return {\n anchor,\n focus,\n backward,\n }\n}\n","import {isSpan} from '@portabletext/schema'\nimport {getAncestorTextBlock} from '../node-traversal/get-ancestor-text-block'\nimport type {TraversalSnapshot} from '../node-traversal/traversal-snapshot'\nimport type {BlockOffset} from '../types/block-offset'\nimport type {EditorSelectionPoint} from '../types/editor'\nimport {isKeyedSegment} from './util.is-keyed-segment'\n\n/**\n * @public\n */\nexport function childSelectionPointToBlockOffset({\n snapshot,\n selectionPoint,\n}: {\n snapshot: TraversalSnapshot\n selectionPoint: EditorSelectionPoint\n}): BlockOffset | undefined {\n const childSegment = selectionPoint.path.at(-1)\n\n if (!isKeyedSegment(childSegment)) {\n return undefined\n }\n\n const textBlock = getAncestorTextBlock(snapshot, selectionPoint.path)\n\n if (!textBlock) {\n return undefined\n }\n\n let offset = 0\n\n for (const child of textBlock.node.children) {\n if (child._key === childSegment._key) {\n return {\n path: textBlock.path,\n offset: offset + selectionPoint.offset,\n }\n }\n\n if (isSpan(snapshot.context, child)) {\n offset += child.text.length\n }\n }\n\n return undefined\n}\n","import {isTextBlock, type PortableTextTextBlock} from '@portabletext/schema'\nimport type {EditorContext} from '../editor/editor-snapshot'\nimport {parseBlock} from './parse-blocks'\n\n/**\n * @beta\n */\nexport function mergeTextBlocks({\n context,\n targetBlock,\n incomingBlock,\n}: {\n context: Pick<EditorContext, 'keyGenerator' | 'schema'>\n targetBlock: PortableTextTextBlock\n incomingBlock: PortableTextTextBlock\n}) {\n const parsedIncomingBlock = parseBlock({\n keyGenerator: context.keyGenerator,\n block: incomingBlock,\n options: {\n normalize: false,\n removeUnusedMarkDefs: true,\n validateFields: false,\n },\n schema: context.schema,\n })\n\n if (!parsedIncomingBlock || !isTextBlock(context, parsedIncomingBlock)) {\n return targetBlock\n }\n\n return {\n ...targetBlock,\n children: [...targetBlock.children, ...parsedIncomingBlock.children],\n markDefs: [\n ...(targetBlock.markDefs ?? []),\n ...(parsedIncomingBlock.markDefs ?? []),\n ],\n }\n}\n","import type {EditorSelection} from '../types/editor'\n\n/**\n * @public\n */\nexport function reverseSelection<\n TEditorSelection extends NonNullable<EditorSelection> | null,\n>(selection: TEditorSelection): TEditorSelection {\n if (!selection) {\n return selection\n }\n\n if (selection.backward) {\n return {\n anchor: selection.focus,\n focus: selection.anchor,\n backward: false,\n } as TEditorSelection\n }\n\n return {\n anchor: selection.focus,\n focus: selection.anchor,\n backward: true,\n } as TEditorSelection\n}\n"],"names":["blockOffsetToBlockSelectionPoint","snapshot","blockOffset","blockEntry","getNode","path","offset","blockOffsetToSelectionPoint","direction","blockOffsetToSpanSelectionPoint","blockOffsetsToSelection","offsets","backward","anchor","focus","childSelectionPointToBlockOffset","selectionPoint","childSegment","at","isKeyedSegment","textBlock","getAncestorTextBlock","child","node","children","_key","isSpan","context","text","length","mergeTextBlocks","targetBlock","incomingBlock","parsedIncomingBlock","parseBlock","keyGenerator","block","options","normalize","removeUnusedMarkDefs","validateFields","schema","isTextBlock","markDefs","reverseSelection","selection"],"mappings":";;;;;;AAKO,SAASA,iCAAiC;AAAA,EAC/CC;AAAAA,EACAC;AAIF,GAAqC;AACnC,QAAMC,aAAaC,QAAQH,UAAUC,YAAYG,IAAI;AAErD,MAAKF;AAIL,WAAO;AAAA,MACLE,MAAMF,WAAWE;AAAAA,MACjBC,QAAQJ,YAAYI;AAAAA,IAAAA;AAExB;AChBO,SAASC,4BAA4B;AAAA,EAC1CN;AAAAA,EACAC;AAAAA,EACAM;AAKF,GAAqC;AAOnC,SAN2BC,gCAAgC;AAAA,IACzDR;AAAAA,IACAC;AAAAA,IACAM;AAAAA,EAAAA,CACD,KAGQR,iCAAiC;AAAA,IACtCC;AAAAA,IACAC;AAAAA,EAAAA,CACD;AAIL;ACrBO,SAASQ,wBAAwB;AAAA,EACtCT;AAAAA,EACAU;AAAAA,EACAC;AAKF,GAAoB;AAClB,QAAMC,SAASN,4BAA4B;AAAA,IACzCN;AAAAA,IACAC,aAAaS,QAAQE;AAAAA,IACrBL,WAAWI,WAAW,aAAa;AAAA,EAAA,CACpC,GACKE,QAAQP,4BAA4B;AAAA,IACxCN;AAAAA,IACAC,aAAaS,QAAQG;AAAAA,IACrBN,WAAWI,WAAW,YAAY;AAAA,EAAA,CACnC;AAED,SAAI,CAACC,UAAU,CAACC,QACP,OAGF;AAAA,IACLD;AAAAA,IACAC;AAAAA,IACAF;AAAAA,EAAAA;AAEJ;AC3BO,SAASG,iCAAiC;AAAA,EAC/Cd;AAAAA,EACAe;AAIF,GAA4B;AAC1B,QAAMC,eAAeD,eAAeX,KAAKa,GAAG,EAAE;AAE9C,MAAI,CAACC,eAAeF,YAAY;AAC9B;AAGF,QAAMG,YAAYC,qBAAqBpB,UAAUe,eAAeX,IAAI;AAEpE,MAAI,CAACe;AACH;AAGF,MAAId,SAAS;AAEb,aAAWgB,SAASF,UAAUG,KAAKC,UAAU;AAC3C,QAAIF,MAAMG,SAASR,aAAaQ;AAC9B,aAAO;AAAA,QACLpB,MAAMe,UAAUf;AAAAA,QAChBC,QAAQA,SAASU,eAAeV;AAAAA,MAAAA;AAIhCoB,WAAOzB,SAAS0B,SAASL,KAAK,MAChChB,UAAUgB,MAAMM,KAAKC;AAAAA,EAEzB;AAGF;ACtCO,SAASC,gBAAgB;AAAA,EAC9BH;AAAAA,EACAI;AAAAA,EACAC;AAKF,GAAG;AACD,QAAMC,sBAAsBC,WAAW;AAAA,IACrCC,cAAcR,QAAQQ;AAAAA,IACtBC,OAAOJ;AAAAA,IACPK,SAAS;AAAA,MACPC,WAAW;AAAA,MACXC,sBAAsB;AAAA,MACtBC,gBAAgB;AAAA,IAAA;AAAA,IAElBC,QAAQd,QAAQc;AAAAA,EAAAA,CACjB;AAED,SAAI,CAACR,uBAAuB,CAACS,YAAYf,SAASM,mBAAmB,IAC5DF,cAGF;AAAA,IACL,GAAGA;AAAAA,IACHP,UAAU,CAAC,GAAGO,YAAYP,UAAU,GAAGS,oBAAoBT,QAAQ;AAAA,IACnEmB,UAAU,CACR,GAAIZ,YAAYY,YAAY,CAAA,GAC5B,GAAIV,oBAAoBU,YAAY,CAAA,CAAG;AAAA,EAAA;AAG7C;AClCO,SAASC,iBAEdC,WAA+C;AAC/C,SAAKA,cAIDA,UAAUjC,WACL;AAAA,IACLC,QAAQgC,UAAU/B;AAAAA,IAClBA,OAAO+B,UAAUhC;AAAAA,IACjBD,UAAU;AAAA,EAAA,IAIP;AAAA,IACLC,QAAQgC,UAAU/B;AAAAA,IAClBA,OAAO+B,UAAUhC;AAAAA,IACjBD,UAAU;AAAA,EAAA;AAEd;"}
{
"name": "@portabletext/editor",
"version": "7.0.2",
"version": "7.0.3",
"description": "Portable Text Editor made in React",

@@ -53,3 +53,3 @@ "keywords": [

"@portabletext/keyboard-shortcuts": "^2.1.2",
"@portabletext/markdown": "^1.3.1",
"@portabletext/markdown": "^1.3.2",
"@portabletext/patches": "^2.0.4",

@@ -56,0 +56,0 @@ "@portabletext/schema": "^2.2.0"

import { isTextBlock } from "@portabletext/schema";
function isTypedObject(object) {
return isRecord(object) && typeof object._type == "string";
}
function isRecord(value) {
return !!value && (typeof value == "object" || typeof value == "function");
}
function isObjectNode(context, node) {
return isTypedObject(node) && node._type !== context.schema.block.name && node._type !== context.schema.span.name;
}
function isKeyedSegment(segment) {
return typeof segment == "object" && segment !== null && "_key" in segment;
}
function getChildren(snapshot, path) {
let currentChildren = snapshot.context.value, currentFieldName = "value", currentPath = [], isRoot = !0, currentParent;
for (const segment of path) {
if (typeof segment == "string")
continue;
let node;
if (isKeyedSegment(segment) ? node = currentChildren.find((child) => child._key === segment._key) : typeof segment == "number" && (node = currentChildren.at(segment)), !node)
return [];
currentPath = isRoot ? [{
_key: node._key
}] : [...currentPath, currentFieldName, {
_key: node._key
}], isRoot = !1;
const next = getNodeChildren(snapshot.context, node, currentParent);
if (!next)
return [];
currentChildren = next.children, currentFieldName = next.fieldName, currentParent = next.parent;
}
return currentChildren.map((child) => ({
node: child,
path: isRoot ? [{
_key: child._key
}] : [...currentPath, currentFieldName, {
_key: child._key
}]
}));
}
function getNodeChildren(context, node, parent) {
if (isTextBlock(context, node))
return {
children: node.children,
fieldName: "children",
parent: void 0
};
if (isObjectNode(context, node)) {
const resolved = resolveNodeContainer(context.containers, parent, node);
if (!resolved)
return;
const fieldValue = node[resolved.field.name];
return Array.isArray(fieldValue) ? {
children: fieldValue,
fieldName: resolved.field.name,
parent: resolved
} : void 0;
}
if ("value" in node && Array.isArray(node.value) && !("_key" in node) && !("_type" in node))
return {
children: node.value,
fieldName: "value",
parent: void 0
};
}
function resolveNodeContainer(containers, parent, node) {
if (parent?.of) {
for (const entry of parent.of)
if (entry.type === node._type)
return "field" in entry ? entry : void 0;
}
return containers.get(node._type);
}
function getNode(snapshot, path) {
if (path.length === 0)
return;
const {
context,
blockIndexMap
} = snapshot;
let currentChildren = context.value, node, currentParent;
const resolvedPath = [];
let isRootLevel = !0;
for (let i = 0; i < path.length; i++) {
const segment = path[i];
if (typeof segment == "string") {
resolvedPath.push(segment);
continue;
}
if (isKeyedSegment(segment)) {
if (isRootLevel && blockIndexMap.size === currentChildren.length) {
const index = blockIndexMap.get(segment._key);
if (index !== void 0) {
const candidate = currentChildren[index];
candidate && candidate._key === segment._key ? node = candidate : node = currentChildren.find((child) => child._key === segment._key);
} else
node = currentChildren.find((child) => child._key === segment._key);
} else
node = currentChildren.find((child) => child._key === segment._key);
resolvedPath.push(segment), isRootLevel = !1;
} else if (typeof segment == "number")
node = currentChildren.at(segment), node && resolvedPath.push({
_key: node._key
});
else
return;
if (!node)
return;
let hasMoreSegments = !1;
for (let j = i + 1; j < path.length; j++) {
const s = path[j];
if (isKeyedSegment(s) || typeof s == "number") {
hasMoreSegments = !0;
break;
}
}
if (hasMoreSegments) {
const next = getNodeChildren(context, node, currentParent);
if (!next)
return;
currentChildren = next.children, currentParent = next.parent;
}
}
if (node)
return {
node,
path: resolvedPath
};
}
function getAncestors(snapshot, path) {
const keyedIndices = [];
for (let i = 0; i < path.length; i++)
isKeyedSegment(path[i]) && keyedIndices.push(i);
if (keyedIndices.length <= 1)
return [];
const {
context,
blockIndexMap
} = snapshot;
let currentChildren = context.value, isRootLevel = !0, currentParent;
const ancestorsByDepth = [], resolvedPath = [], targetKeyedIndex = keyedIndices[keyedIndices.length - 1];
let segmentIndex = 0;
for (; segmentIndex < targetKeyedIndex; ) {
const segment = path[segmentIndex];
if (typeof segment == "string") {
resolvedPath.push(segment), segmentIndex++;
continue;
}
let node;
if (isKeyedSegment(segment)) {
if (isRootLevel && blockIndexMap.size === currentChildren.length) {
const index = blockIndexMap.get(segment._key);
node = index !== void 0 ? currentChildren[index] : currentChildren.find((child) => child._key === segment._key);
} else
node = currentChildren.find((child) => child._key === segment._key);
resolvedPath.push(segment), isRootLevel = !1;
} else if (typeof segment == "number")
node = currentChildren.at(segment), node && resolvedPath.push({
_key: node._key
});
else
return [];
if (!node)
return [];
const next = getNodeChildren(context, node, currentParent);
if (!next)
return [];
ancestorsByDepth.push({
node,
path: resolvedPath.slice()
}), currentChildren = next.children, currentParent = next.parent, segmentIndex++;
}
return ancestorsByDepth.reverse();
}
function getAncestor(snapshot, path, match) {
const ancestors = getAncestors(snapshot, path);
for (const ancestor of ancestors)
if (match(ancestor.node, ancestor.path))
return ancestor;
}
export {
getAncestor,
getAncestors,
getChildren,
getNode,
getNodeChildren,
isKeyedSegment,
isObjectNode,
isRecord,
isTypedObject
};
//# sourceMappingURL=get-ancestor.js.map
{"version":3,"file":"get-ancestor.js","sources":["../../src/utils/asserters.ts","../../src/slate/node/is-object-node.ts","../../src/utils/util.is-keyed-segment.ts","../../src/node-traversal/get-children.ts","../../src/node-traversal/get-node.ts","../../src/node-traversal/get-ancestors.ts","../../src/node-traversal/get-ancestor.ts"],"sourcesContent":["import type {TypedObject} from '@portabletext/schema'\n\nexport function isTypedObject(object: unknown): object is TypedObject {\n return isRecord(object) && typeof object['_type'] === 'string'\n}\n\nexport function isRecord(value: unknown): value is Record<string, unknown> {\n return !!value && (typeof value === 'object' || typeof value === 'function')\n}\n","import type {PortableTextObject} from '@portabletext/schema'\nimport type {EditorSchema} from '../../editor/editor-schema'\nimport {isTypedObject} from '../../utils/asserters'\n\nexport function isObjectNode(\n context: {schema: EditorSchema},\n node: unknown,\n): node is PortableTextObject {\n return (\n isTypedObject(node) &&\n node._type !== context.schema.block.name &&\n node._type !== context.schema.span.name\n )\n}\n","import type {KeyedSegment} from '../types/paths'\n\n/**\n * @public\n */\nexport function isKeyedSegment(segment: unknown): segment is KeyedSegment {\n return typeof segment === 'object' && segment !== null && '_key' in segment\n}\n","import {isTextBlock} from '@portabletext/schema'\nimport type {EditorSchema} from '../editor/editor-schema'\nimport type {\n Containers,\n RegisteredContainer,\n} from '../schema/resolve-containers'\nimport type {Node} from '../slate/interfaces/node'\nimport type {Path} from '../slate/interfaces/path'\nimport {isObjectNode} from '../slate/node/is-object-node'\nimport {isKeyedSegment} from '../utils/util.is-keyed-segment'\nimport type {TraversalSnapshot} from './traversal-snapshot'\n\n/**\n * Get the children of a node at a given path.\n *\n * @beta\n */\nexport function getChildren(\n snapshot: TraversalSnapshot,\n path: Path,\n): Array<{node: Node; path: Path}> {\n let currentChildren: Array<Node> = snapshot.context.value\n let currentFieldName = 'value'\n let currentPath: Path = []\n let isRoot = true\n let currentParent: RegisteredContainer | undefined\n\n for (const segment of path) {\n if (typeof segment === 'string') {\n continue\n }\n\n let node: Node | undefined\n if (isKeyedSegment(segment)) {\n node = currentChildren.find((child) => child._key === segment._key)\n } else if (typeof segment === 'number') {\n node = currentChildren.at(segment)\n }\n\n if (!node) {\n return []\n }\n\n currentPath = isRoot\n ? [{_key: node._key}]\n : [...currentPath, currentFieldName, {_key: node._key}]\n isRoot = false\n\n const next = getNodeChildren(snapshot.context, node, currentParent)\n\n if (!next) {\n return []\n }\n\n currentChildren = next.children\n currentFieldName = next.fieldName\n currentParent = next.parent\n }\n\n return currentChildren.map((child) => ({\n node: child,\n path: isRoot\n ? [{_key: child._key}]\n : [...currentPath, currentFieldName, {_key: child._key}],\n }))\n}\n\n/**\n * Resolve a node's editable child array.\n *\n * When `parent` is provided and its `of` declares a positional entry\n * matching `node._type`, that positional entry's `field` is used.\n * Otherwise the top-level `containers.get(node._type)` provides the\n * fallback.\n *\n * The returned `parent` is the resolved container entry for `node`\n * itself (used by the caller to thread further descent).\n *\n * @beta\n */\nexport function getNodeChildren(\n context: {\n schema: EditorSchema\n containers: Containers\n },\n node: Node | {value: Array<Node>},\n parent?: RegisteredContainer,\n):\n | {\n children: Array<Node>\n fieldName: string\n parent: RegisteredContainer | undefined\n }\n | undefined {\n // Text blocks store children in .children\n if (isTextBlock(context, node)) {\n return {\n children: node.children,\n fieldName: 'children',\n parent: undefined,\n }\n }\n\n if (isObjectNode(context, node)) {\n const resolved = resolveNodeContainer(context.containers, parent, node)\n\n if (!resolved) {\n return undefined\n }\n\n const fieldValue = (node as Record<string, unknown>)[resolved.field.name]\n\n if (!Array.isArray(fieldValue)) {\n return undefined\n }\n\n return {\n children: fieldValue as Array<Node>,\n fieldName: resolved.field.name,\n parent: resolved,\n }\n }\n\n // Root context: has .value array but no _key or _type\n if (\n 'value' in node &&\n Array.isArray(node['value']) &&\n !('_key' in node) &&\n !('_type' in node)\n ) {\n return {\n children: node['value'] as Array<Node>,\n fieldName: 'value',\n parent: undefined,\n }\n }\n\n return undefined\n}\n\n/**\n * Pick the positional override from `parent.of` if present; fall back\n * to the top-level entry. Returns only `RegisteredContainer` entries\n * since leaves do not have editable children.\n */\nfunction resolveNodeContainer(\n containers: Containers,\n parent: RegisteredContainer | undefined,\n node: Node,\n): RegisteredContainer | undefined {\n if (parent?.of) {\n for (const entry of parent.of) {\n if (entry.type === node._type) {\n // Only return container entries; leaves have no editable children.\n if ('field' in entry) {\n return entry\n }\n return undefined\n }\n }\n }\n return containers.get(node._type)\n}\n","import type {Node} from '../slate/interfaces/node'\nimport type {Path} from '../slate/interfaces/path'\nimport {isKeyedSegment} from '../utils/util.is-keyed-segment'\nimport {getNodeChildren} from './get-children'\nimport type {TraversalSnapshot} from './traversal-snapshot'\n\n/**\n * Get the node at a given path.\n *\n * The path can be either keyed (KeyedSegment + field name strings) or\n * indexed (numbers). Keyed segments are resolved by matching `_key`,\n * field name strings are skipped (they're structural), and numbers\n * are resolved by index.\n *\n * The returned path is always fully keyed, even if the input path\n * contained numeric indices.\n *\n * @beta\n */\nexport function getNode(\n snapshot: TraversalSnapshot,\n path: Path,\n): {node: Node; path: Path} | undefined {\n if (path.length === 0) {\n return undefined\n }\n\n const {context, blockIndexMap} = snapshot\n let currentChildren: Array<Node> = context.value\n let node: Node | undefined\n let currentParent:\n | import('../schema/resolve-containers').RegisteredContainer\n | undefined\n const resolvedPath: Path = []\n let isRootLevel = true\n\n for (let i = 0; i < path.length; i++) {\n const segment = path[i]\n\n if (typeof segment === 'string') {\n resolvedPath.push(segment)\n continue\n }\n\n if (isKeyedSegment(segment)) {\n if (isRootLevel && blockIndexMap.size === currentChildren.length) {\n const index = blockIndexMap.get(segment._key)\n if (index !== undefined) {\n const candidate = currentChildren[index]\n if (candidate && candidate._key === segment._key) {\n node = candidate\n } else {\n node = currentChildren.find((child) => child._key === segment._key)\n }\n } else {\n node = currentChildren.find((child) => child._key === segment._key)\n }\n } else {\n node = currentChildren.find((child) => child._key === segment._key)\n }\n resolvedPath.push(segment)\n isRootLevel = false\n } else if (typeof segment === 'number') {\n node = currentChildren.at(segment)\n if (node) {\n resolvedPath.push({_key: node._key})\n }\n } else {\n return undefined\n }\n\n if (!node) {\n return undefined\n }\n\n let hasMoreSegments = false\n for (let j = i + 1; j < path.length; j++) {\n const s = path[j]\n if (isKeyedSegment(s) || typeof s === 'number') {\n hasMoreSegments = true\n break\n }\n }\n\n if (hasMoreSegments) {\n const next = getNodeChildren(context, node, currentParent)\n\n if (!next) {\n return undefined\n }\n\n currentChildren = next.children\n currentParent = next.parent\n }\n }\n\n if (!node) {\n return undefined\n }\n\n return {node, path: resolvedPath}\n}\n","import type {Node} from '../slate/interfaces/node'\nimport type {Path} from '../slate/interfaces/path'\nimport {isKeyedSegment} from '../utils/util.is-keyed-segment'\nimport {getNodeChildren} from './get-children'\nimport type {TraversalSnapshot} from './traversal-snapshot'\n\n/**\n * Get all ancestors of the node at a given path, from nearest to furthest.\n *\n * For a path like [{_key:'t1'}, 'rows', {_key:'r1'}, 'cells', {_key:'c1'}],\n * the ancestors are (nearest first):\n * [{_key:'t1'}, 'rows', {_key:'r1'}]\n * [{_key:'t1'}]\n *\n * Walks from root to the target in a single pass collecting each ancestor\n * as it goes.\n *\n * @beta\n */\nexport function getAncestors(\n snapshot: TraversalSnapshot,\n path: Path,\n): Array<{node: Node; path: Path}> {\n // Collect keyed-segment indices to know where each ancestor's path ends.\n const keyedIndices: Array<number> = []\n for (let i = 0; i < path.length; i++) {\n if (isKeyedSegment(path[i])) {\n keyedIndices.push(i)\n }\n }\n\n // Need at least 2 keyed segments to have an ancestor (the last is self).\n if (keyedIndices.length <= 1) {\n return []\n }\n\n const {context, blockIndexMap} = snapshot\n let currentChildren: Array<Node> = context.value\n let isRootLevel = true\n let currentParent:\n | import('../schema/resolve-containers').RegisteredContainer\n | undefined\n\n const ancestorsByDepth: Array<{node: Node; path: Path}> = []\n const resolvedPath: Path = []\n\n // Descend once. We walk only as far as the second-to-last keyed segment;\n // the last keyed segment is the target itself, which is not an ancestor.\n const targetKeyedIndex = keyedIndices[keyedIndices.length - 1]!\n\n let segmentIndex = 0\n while (segmentIndex < targetKeyedIndex) {\n const segment = path[segmentIndex]!\n\n if (typeof segment === 'string') {\n resolvedPath.push(segment)\n segmentIndex++\n continue\n }\n\n let node: Node | undefined\n if (isKeyedSegment(segment)) {\n // Production snapshots maintain `blockIndexMap` in lockstep with\n // `context.value` so this fast path always fires. Some test\n // fixtures still pass empty or stale maps, which is the debt this\n // size check is working around - see /specs/snapshot-invariants.md.\n // When the fixtures are aligned, drop the guard and use the map\n // directly.\n if (isRootLevel && blockIndexMap.size === currentChildren.length) {\n const index = blockIndexMap.get(segment._key)\n node =\n index !== undefined\n ? currentChildren[index]\n : currentChildren.find((child) => child._key === segment._key)\n } else {\n node = currentChildren.find((child) => child._key === segment._key)\n }\n resolvedPath.push(segment)\n isRootLevel = false\n } else if (typeof segment === 'number') {\n node = currentChildren.at(segment)\n if (node) {\n resolvedPath.push({_key: node._key})\n }\n } else {\n return []\n }\n\n if (!node) {\n return []\n }\n\n // Descend with positional awareness. `getNodeChildren` checks the\n // current parent's `of` for a positional override before falling\n // back to the top-level `containers` map - so same-`_type`\n // registered under different parents with different `field`\n // resolves to the right entry at this position.\n const next = getNodeChildren(context, node, currentParent)\n if (!next) {\n return []\n }\n\n ancestorsByDepth.push({\n node,\n path: resolvedPath.slice(),\n })\n\n currentChildren = next.children\n currentParent = next.parent\n segmentIndex++\n }\n\n // Return nearest-first (reverse of document order at the call site).\n return ancestorsByDepth.reverse()\n}\n","import type {Node} from '../slate/interfaces/node'\nimport type {Path} from '../slate/interfaces/path'\nimport {getAncestors} from './get-ancestors'\nimport type {TraversalSnapshot} from './traversal-snapshot'\n\n/**\n * Find the first ancestor of the node at a given path that matches a predicate.\n * Does not check the node at the path itself, only its ancestors.\n *\n * When `match` is a type predicate, the returned `node` narrows to that type.\n *\n * @beta\n */\nexport function getAncestor<TMatch extends Node>(\n snapshot: TraversalSnapshot,\n path: Path,\n match: (node: Node, path: Path) => node is TMatch,\n): {node: TMatch; path: Path} | undefined\n/**\n * @beta\n */\nexport function getAncestor(\n snapshot: TraversalSnapshot,\n path: Path,\n match: (node: Node, path: Path) => boolean,\n): {node: Node; path: Path} | undefined\nexport function getAncestor(\n snapshot: TraversalSnapshot,\n path: Path,\n match: (node: Node, path: Path) => boolean,\n): {node: Node; path: Path} | undefined {\n const ancestors = getAncestors(snapshot, path)\n\n for (const ancestor of ancestors) {\n if (match(ancestor.node, ancestor.path)) {\n return ancestor\n }\n }\n\n return undefined\n}\n"],"names":["isTypedObject","object","isRecord","value","isObjectNode","context","node","_type","schema","block","name","span","isKeyedSegment","segment","getChildren","snapshot","path","currentChildren","currentFieldName","currentPath","isRoot","currentParent","find","child","_key","at","next","getNodeChildren","children","fieldName","parent","map","isTextBlock","undefined","resolved","resolveNodeContainer","containers","fieldValue","field","Array","isArray","of","entry","type","get","getNode","length","blockIndexMap","resolvedPath","isRootLevel","i","push","size","index","candidate","hasMoreSegments","j","s","getAncestors","keyedIndices","ancestorsByDepth","targetKeyedIndex","segmentIndex","slice","reverse","getAncestor","match","ancestors","ancestor"],"mappings":"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"}
import { isTextBlock, isSpan } from "@portabletext/schema";
function getTextBlockText(block) {
return block.children.map((child) => child.text ?? "").join("");
}
function isEmptyTextBlock(context, block) {
if (!isTextBlock(context, block))
return !1;
const onlyText = block.children.every((child) => isSpan(context, child)), blockText = getTextBlockText(block);
return onlyText && blockText === "";
}
export {
getTextBlockText,
isEmptyTextBlock
};
//# sourceMappingURL=util.is-empty-text-block.js.map
{"version":3,"file":"util.is-empty-text-block.js","sources":["../../src/utils/util.get-text-block-text.ts","../../src/utils/util.is-empty-text-block.ts"],"sourcesContent":["import type {PortableTextTextBlock} from '@portabletext/schema'\n\n/**\n * @public\n */\nexport function getTextBlockText(block: PortableTextTextBlock) {\n return block.children.map((child) => child.text ?? '').join('')\n}\n","import {isSpan, isTextBlock, type PortableTextBlock} from '@portabletext/schema'\nimport type {EditorContext} from '../editor/editor-snapshot'\nimport {getTextBlockText} from './util.get-text-block-text'\n\n/**\n * @public\n */\nexport function isEmptyTextBlock(\n context: Pick<EditorContext, 'schema'>,\n block: PortableTextBlock | unknown,\n) {\n if (!isTextBlock(context, block)) {\n return false\n }\n\n const onlyText = block.children.every((child) => isSpan(context, child))\n const blockText = getTextBlockText(block)\n\n return onlyText && blockText === ''\n}\n"],"names":["getTextBlockText","block","children","map","child","text","join","isEmptyTextBlock","context","isTextBlock","onlyText","every","isSpan","blockText"],"mappings":";AAKO,SAASA,iBAAiBC,OAA8B;AAC7D,SAAOA,MAAMC,SAASC,IAAKC,CAAAA,UAAUA,MAAMC,QAAQ,EAAE,EAAEC,KAAK,EAAE;AAChE;ACAO,SAASC,iBACdC,SACAP,OACA;AACA,MAAI,CAACQ,YAAYD,SAASP,KAAK;AAC7B,WAAO;AAGT,QAAMS,WAAWT,MAAMC,SAASS,MAAOP,CAAAA,UAAUQ,OAAOJ,SAASJ,KAAK,CAAC,GACjES,YAAYb,iBAAiBC,KAAK;AAExC,SAAOS,YAAYG,cAAc;AACnC;"}

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display