@portabletext/editor 7.8.1 → 7.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -48,6 +48,21 @@ declare function getAncestors(snapshot: TraversalSnapshot, path: Path): Array<{
48
48
  node: PortableTextBlock;
49
49
  path: Path;
50
50
  }>;
51
+ /**
52
+ * Get the annotation at a given path.
53
+ *
54
+ * Annotations live in `markDefs` on a text block, alongside `children`
55
+ * rather than inside it, so they aren't reachable through `getNode`.
56
+ * `getAnnotation` resolves a path of the shape
57
+ * `[..., {_key: block}, 'markDefs', {_key: annotation}, ...]` to the
58
+ * annotation node on the enclosing text block.
59
+ *
60
+ * @beta
61
+ */
62
+ declare function getAnnotation(snapshot: TraversalSnapshot, path: Path): {
63
+ node: PortableTextObject;
64
+ path: Path;
65
+ } | undefined;
51
66
  /**
52
67
  * Determine if a node at the given path is a block.
53
68
  *
@@ -172,11 +187,21 @@ declare function getLeaf(snapshot: TraversalSnapshot, path: Path, options: {
172
187
  *
173
188
  * The path can be either keyed (KeyedSegment + field name strings) or
174
189
  * indexed (numbers). Keyed segments are resolved by matching `_key`,
175
- * field name strings are skipped (they're structural), and numbers
176
- * are resolved by index.
177
- *
178
- * The returned path is always fully keyed, even if the input path
179
- * contained numeric indices.
190
+ * field name strings name a structural descent into the previous
191
+ * node's children, and numbers are resolved by index.
192
+ *
193
+ * The returned `path` always identifies the returned node: it's fully
194
+ * keyed (numeric indices are converted to `KeyedSegment`s) and any
195
+ * trailing segments in the input that point outside the value tree —
196
+ * e.g. an object node's primitive field, or an annotation reached via
197
+ * `'markDefs'` on a text block — are stripped so that
198
+ * `getNode(snapshot, entry.path).node === entry.node`.
199
+ *
200
+ * The walk stops when a string segment names a field that isn't the
201
+ * current node's structural child array. Annotations live in
202
+ * `markDefs` on a text block, alongside `children` rather than inside
203
+ * it, so `getNode` resolves an annotation path to the enclosing text
204
+ * block. Use `getAnnotation` to resolve the annotation itself.
180
205
  *
181
206
  * @beta
182
207
  */
@@ -367,5 +392,5 @@ declare function isLeafObject(snapshot: TraversalSnapshot, node: unknown, path:
367
392
  * @beta
368
393
  */
369
394
  declare function isObject(snapshot: TraversalSnapshot, node: unknown): node is PortableTextObject;
370
- export { comparePoints, getAncestor, getAncestors, getBlock, getChildren, getContainerChildren, getEnclosingBlock, getFirstChild, getLastChild, getLeaf, getNode, getParent, getPathSubSchema, getSibling, getSpan, getText, getTextBlock, getUnionSchema, hasNode, isBlock, isInline, isLeafObject, isObject, pathContains, rangeIntersects };
395
+ export { comparePoints, getAncestor, getAncestors, getAnnotation, getBlock, getChildren, getContainerChildren, getEnclosingBlock, getFirstChild, getLastChild, getLeaf, getNode, getParent, getPathSubSchema, getSibling, getSpan, getText, getTextBlock, getUnionSchema, hasNode, isBlock, isInline, isLeafObject, isObject, pathContains, rangeIntersects };
371
396
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/traversal/get-ancestor.ts","../../src/traversal/get-ancestors.ts","../../src/traversal/is-block.ts","../../src/traversal/get-children.ts","../../src/traversal/get-container-children.ts","../../src/traversal/get-enclosing-block.ts","../../src/traversal/get-first-child.ts","../../src/traversal/get-last-child.ts","../../src/traversal/get-leaf.ts","../../src/traversal/get-node.ts","../../src/traversal/get-parent.ts","../../src/traversal/get-path-sub-schema.ts","../../src/traversal/get-sibling.ts","../../src/traversal/compare-points.ts","../../src/traversal/path-contains.ts","../../src/traversal/range-intersects.ts","../../src/traversal/get-span.ts","../../src/traversal/get-text.ts","../../src/traversal/get-text-block.ts","../../src/traversal/get-union-schema.ts","../../src/traversal/has-node.ts","../../src/traversal/is-inline.ts","../../src/traversal/is-leaf-object.ts","../../src/traversal/is-object.ts"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/traversal/get-ancestor.ts","../../src/traversal/get-ancestors.ts","../../src/traversal/get-annotation.ts","../../src/traversal/is-block.ts","../../src/traversal/get-children.ts","../../src/traversal/get-container-children.ts","../../src/traversal/get-enclosing-block.ts","../../src/traversal/get-first-child.ts","../../src/traversal/get-last-child.ts","../../src/traversal/get-leaf.ts","../../src/traversal/get-node.ts","../../src/traversal/get-parent.ts","../../src/traversal/get-path-sub-schema.ts","../../src/traversal/get-sibling.ts","../../src/traversal/compare-points.ts","../../src/traversal/path-contains.ts","../../src/traversal/range-intersects.ts","../../src/traversal/get-span.ts","../../src/traversal/get-text.ts","../../src/traversal/get-text-block.ts","../../src/traversal/get-union-schema.ts","../../src/traversal/has-node.ts","../../src/traversal/is-inline.ts","../../src/traversal/is-leaf-object.ts","../../src/traversal/is-object.ts"],"sourcesContent":[],"mappings":"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"}
@@ -1,7 +1,27 @@
1
- import { getAncestor, getFirstChild, getLeaf, getSpan, getText, getTextBlock, getUnionSchema, isLeafObject, pathContains, rangeIntersects } from "../_chunks-es/get-first-child.js";
1
+ import { getTextBlock } from "../_chunks-es/get-first-child.js";
2
+ import { getAncestor, getFirstChild, getLeaf, getSpan, getText, getUnionSchema, isLeafObject, pathContains, rangeIntersects } from "../_chunks-es/get-first-child.js";
2
3
  import { comparePoints, getAncestors, getBlock, getEnclosingBlock, getPathSubSchema, getSibling, hasNode, isBlock, isInline, isObject } from "../_chunks-es/get-path-sub-schema.js";
3
- import { getChildren } from "../_chunks-es/get-parent.js";
4
+ import { isKeyedSegment, getChildren } from "../_chunks-es/get-parent.js";
4
5
  import { getContainerChildren, getNode, getParent } from "../_chunks-es/get-parent.js";
6
+ function getAnnotation(snapshot, path) {
7
+ for (let i = 0; i < path.length - 1; i++) {
8
+ if (path[i] !== "markDefs")
9
+ continue;
10
+ const annotationSegment = path[i + 1];
11
+ if (!isKeyedSegment(annotationSegment))
12
+ continue;
13
+ const block = getTextBlock(snapshot, path.slice(0, i));
14
+ if (!block)
15
+ continue;
16
+ const annotation = block.node.markDefs?.find((markDef) => markDef._key === annotationSegment._key);
17
+ return annotation ? {
18
+ node: annotation,
19
+ path: [...block.path, "markDefs", {
20
+ _key: annotation._key
21
+ }]
22
+ } : void 0;
23
+ }
24
+ }
5
25
  function getLastChild(snapshot, path) {
6
26
  return getChildren(snapshot, path).at(-1);
7
27
  }
@@ -9,6 +29,7 @@ export {
9
29
  comparePoints,
10
30
  getAncestor,
11
31
  getAncestors,
32
+ getAnnotation,
12
33
  getBlock,
13
34
  getChildren,
14
35
  getContainerChildren,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/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;"}
1
+ {"version":3,"file":"index.js","sources":["../../src/traversal/get-annotation.ts","../../src/traversal/get-last-child.ts"],"sourcesContent":["import type {PortableTextObject} from '@portabletext/schema'\nimport type {Path} from '../engine/interfaces/path'\nimport {isKeyedSegment} from '../utils/util.is-keyed-segment'\nimport {getTextBlock} from './get-text-block'\nimport type {TraversalSnapshot} from './traversal-snapshot'\n\n/**\n * Get the annotation at a given path.\n *\n * Annotations live in `markDefs` on a text block, alongside `children`\n * rather than inside it, so they aren't reachable through `getNode`.\n * `getAnnotation` resolves a path of the shape\n * `[..., {_key: block}, 'markDefs', {_key: annotation}, ...]` to the\n * annotation node on the enclosing text block.\n *\n * @beta\n */\nexport function getAnnotation(\n snapshot: TraversalSnapshot,\n path: Path,\n): {node: PortableTextObject; path: Path} | undefined {\n // A path may cross multiple `'markDefs'` segments if a consumer\n // registers a container whose array field is named `markDefs`. Try\n // each position and pick the one whose prefix resolves to a text\n // block.\n for (let i = 0; i < path.length - 1; i++) {\n if (path[i] !== 'markDefs') {\n continue\n }\n\n const annotationSegment = path[i + 1]\n\n if (!isKeyedSegment(annotationSegment)) {\n continue\n }\n\n const block = getTextBlock(snapshot, path.slice(0, i))\n\n if (!block) {\n continue\n }\n\n const annotation = block.node.markDefs?.find(\n (markDef) => markDef._key === annotationSegment._key,\n )\n\n if (!annotation) {\n return undefined\n }\n\n return {\n node: annotation,\n path: [...block.path, 'markDefs', {_key: annotation._key}],\n }\n }\n\n return undefined\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 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":["getAnnotation","snapshot","path","i","length","annotationSegment","isKeyedSegment","block","getTextBlock","slice","annotation","node","markDefs","find","markDef","_key","getLastChild","getChildren","at"],"mappings":";;;;;AAiBO,SAASA,cACdC,UACAC,MACoD;AAKpD,WAASC,IAAI,GAAGA,IAAID,KAAKE,SAAS,GAAGD,KAAK;AACxC,QAAID,KAAKC,CAAC,MAAM;AACd;AAGF,UAAME,oBAAoBH,KAAKC,IAAI,CAAC;AAEpC,QAAI,CAACG,eAAeD,iBAAiB;AACnC;AAGF,UAAME,QAAQC,aAAaP,UAAUC,KAAKO,MAAM,GAAGN,CAAC,CAAC;AAErD,QAAI,CAACI;AACH;AAGF,UAAMG,aAAaH,MAAMI,KAAKC,UAAUC,KACrCC,CAAAA,YAAYA,QAAQC,SAASV,kBAAkBU,IAClD;AAEA,WAAKL,aAIE;AAAA,MACLC,MAAMD;AAAAA,MACNR,MAAM,CAAC,GAAGK,MAAML,MAAM,YAAY;AAAA,QAACa,MAAML,WAAWK;AAAAA,MAAAA,CAAK;AAAA,IAAA,IALzD;AAAA,EAOJ;AAGF;AC/CO,SAASC,aACdf,UACAC,MACsC;AAGtC,SAFiBe,YAAYhB,UAAUC,IAAI,EAE3BgB,GAAG,EAAE;AACvB;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@portabletext/editor",
3
- "version": "7.8.1",
3
+ "version": "7.9.0",
4
4
  "description": "Portable Text Editor made in React",
5
5
  "keywords": [
6
6
  "sanity",
@@ -47,7 +47,7 @@
47
47
  "@xstate/react": "^6.1.0",
48
48
  "debug": "^4.4.3",
49
49
  "scroll-into-view-if-needed": "^3.1.0",
50
- "xstate": "^5.32.1",
50
+ "xstate": "^5.32.2",
51
51
  "@portabletext/html": "^1.1.0",
52
52
  "@portabletext/keyboard-shortcuts": "^2.1.3",
53
53
  "@portabletext/markdown": "^1.4.2",