@portabletext/editor 7.8.2 → 7.10.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.
- package/lib/_chunks-dts/behavior.types.action.d.ts +110 -274
- package/lib/_chunks-dts/behavior.types.action.d.ts.map +1 -1
- package/lib/_chunks-dts/block-offset.d.ts +10 -0
- package/lib/_chunks-dts/block-offset.d.ts.map +1 -0
- package/lib/_chunks-dts/editor-selector.d.ts +33 -0
- package/lib/_chunks-dts/editor-selector.d.ts.map +1 -0
- package/lib/_chunks-dts/editor.d.ts +99 -0
- package/lib/_chunks-dts/editor.d.ts.map +1 -0
- package/lib/_chunks-es/{get-first-child.js → get-container.js} +10 -1
- package/lib/_chunks-es/get-container.js.map +1 -0
- package/lib/_chunks-es/get-parent.js +18 -6
- package/lib/_chunks-es/get-parent.js.map +1 -1
- package/lib/_chunks-es/get-path-sub-schema.js +38 -6
- package/lib/_chunks-es/get-path-sub-schema.js.map +1 -1
- package/lib/_chunks-es/selector.is-at-the-start-of-block.js +3 -0
- package/lib/_chunks-es/selector.is-at-the-start-of-block.js.map +1 -1
- package/lib/_chunks-es/{util.is-empty-text-block.js → util.is-equal-selections.js} +7 -2
- package/lib/_chunks-es/util.is-equal-selections.js.map +1 -0
- package/lib/_chunks-es/util.slice-blocks.js +1 -8
- package/lib/_chunks-es/util.slice-blocks.js.map +1 -1
- package/lib/behaviors/index.d.ts +1 -1
- package/lib/index.d.ts +67 -2
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +282 -106
- package/lib/index.js.map +1 -1
- package/lib/plugins/index.d.ts +2 -1
- package/lib/plugins/index.d.ts.map +1 -1
- package/lib/selectors/index.d.ts +3 -1
- package/lib/selectors/index.d.ts.map +1 -1
- package/lib/selectors/index.js +4 -2
- package/lib/selectors/index.js.map +1 -1
- package/lib/traversal/index.d.ts +41 -7
- package/lib/traversal/index.d.ts.map +1 -1
- package/lib/traversal/index.js +24 -2
- package/lib/traversal/index.js.map +1 -1
- package/lib/utils/index.d.ts +3 -3
- package/lib/utils/index.d.ts.map +1 -1
- package/lib/utils/index.js +3 -6
- package/lib/utils/index.js.map +1 -1
- package/package.json +20 -20
- package/lib/_chunks-es/get-first-child.js.map +0 -1
- package/lib/_chunks-es/util.is-empty-text-block.js.map +0 -1
package/lib/plugins/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { bt as RegistrableNode, g as EditorEmittedEvent, y as Behavior } from "../_chunks-dts/behavior.types.action.js";
|
|
2
|
+
import { t as Editor } from "../_chunks-dts/editor.js";
|
|
2
3
|
import React from "react";
|
|
3
4
|
/**
|
|
4
5
|
* @beta
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":[],"sources":["../../src/plugins/plugin.behavior.tsx","../../src/plugins/plugin.node.tsx","../../src/plugins/plugin.editor-ref.tsx","../../src/plugins/plugin.event-listener.tsx"],"
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../../src/plugins/plugin.behavior.tsx","../../src/plugins/plugin.node.tsx","../../src/plugins/plugin.editor-ref.tsx","../../src/plugins/plugin.event-listener.tsx"],"mappings":";;;;;;AAcA;;;;;;;iBAAgB,cAAA,CAAe,KAAA;EAAQ,SAAA,EAAW,KAAK,CAAC,QAAA;AAAA;;;;AAAxD;;;;;;;;;iBCEgB,UAAA,CAAW,KAAA;EAAQ,KAAA,EAAO,KAAK,CAAC,eAAA;AAAA;;;ADFhD;cEPa,eAAA,EAAe,KAAA,CAAA,yBAAA,CAAA,KAAA,CAAA,aAAA,CAAA,MAAA;;;;AFO5B;;;;;;;;;AAAkE;;ACElE;;;;;;;;;AAAiE;;ACTjE;;;;;;;;;;;;;;AAA4B;;AC8C5B;;;;;;;;iBAAgB,mBAAA,CAAoB,KAAA;EAClC,EAAA,GAAK,KAAA,EAAO,kBAAkB;AAAA"}
|
package/lib/selectors/index.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { It as Path, M as EditorSelection, N as EditorSelectionPoint, Nt as BlockPath, Pt as ChildPath } from "../_chunks-dts/behavior.types.action.js";
|
|
2
|
+
import { t as EditorSelector } from "../_chunks-dts/editor-selector.js";
|
|
3
|
+
import { t as BlockOffset } from "../_chunks-dts/block-offset.js";
|
|
2
4
|
import { PortableTextBlock, PortableTextListBlock, PortableTextObject, PortableTextSpan, PortableTextTextBlock } from "@portabletext/schema";
|
|
3
5
|
/**
|
|
4
6
|
* The set of schema member names applicable at the current selection,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":[],"sources":["../../src/selectors/selector.get-applicable-schema.ts","../../src/selectors/selector.get-active-annotations.ts","../../src/selectors/selector.get-active-list-item.ts","../../src/selectors/selector.get-active-style.ts","../../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-caret-word-selection.ts","../../src/selectors/selector.get-first-block.ts","../../src/selectors/selector.get-focus-block.ts","../../src/selectors/selector.get-focus-block-object.ts","../../src/selectors/selector.get-focus-child.ts","../../src/selectors/selector.get-focus-inline-object.ts","../../src/selectors/selector.get-focus-list-block.ts","../../src/selectors/selector.get-focus-span.ts","../../src/selectors/selector.get-focus-text-block.ts","../../src/selectors/selector.get-fragment.ts","../../src/selectors/selector.get-last-block.ts","../../src/selectors/selector.get-mark-state.ts","../../src/selectors/selector.get-next-block.ts","../../src/selectors/selector.get-next-inline-object.ts","../../src/selectors/selector.get-next-inline-objects.ts","../../src/selectors/selector.get-next-span.ts","../../src/selectors/selector.get-previous-block.ts","../../src/selectors/selector.get-previous-inline-object.ts","../../src/selectors/selector.get-previous-inline-objects.ts","../../src/selectors/selector.get-previous-span.ts","../../src/selectors/selector.get-selected-blocks.ts","../../src/selectors/selector.get-selected-spans.ts","../../src/selectors/selector.get-selected-text-blocks.ts","../../src/selectors/selector.get-selected-value.ts","../../src/selectors/selector.get-selection.ts","../../src/selectors/selector.get-selection-end-block.ts","../../src/selectors/selector.get-selection-end-child.ts","../../src/selectors/selector.get-selection-end-point.ts","../../src/selectors/selector.get-selection-start-block.ts","../../src/selectors/selector.get-selection-start-child.ts","../../src/selectors/selector.get-selection-start-point.ts","../../src/selectors/selector.get-selection-text.ts","../../src/selectors/selector.get-text-after.ts","../../src/selectors/selector.get-text-before.ts","../../src/selectors/selector.get-value.ts","../../src/selectors/selector.is-active-annotation.ts","../../src/selectors/selector.is-active-decorator.ts","../../src/selectors/selector.is-active-list-item.ts","../../src/selectors/selector.is-active-style.ts","../../src/selectors/selector.is-at-the-end-of-block.ts","../../src/selectors/selector.is-at-the-start-of-block.ts","../../src/selectors/selector.is-overlapping-selection.ts","../../src/selectors/selector.is-point-after-selection.ts","../../src/selectors/selector.is-point-before-selection.ts","../../src/selectors/selector.is-selecting-entire-blocks.ts","../../src/selectors/selector.is-selection-collapsed.ts","../../src/selectors/selector.is-selection-expanded.ts"],"
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../../src/selectors/selector.get-applicable-schema.ts","../../src/selectors/selector.get-active-annotations.ts","../../src/selectors/selector.get-active-list-item.ts","../../src/selectors/selector.get-active-style.ts","../../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-caret-word-selection.ts","../../src/selectors/selector.get-first-block.ts","../../src/selectors/selector.get-focus-block.ts","../../src/selectors/selector.get-focus-block-object.ts","../../src/selectors/selector.get-focus-child.ts","../../src/selectors/selector.get-focus-inline-object.ts","../../src/selectors/selector.get-focus-list-block.ts","../../src/selectors/selector.get-focus-span.ts","../../src/selectors/selector.get-focus-text-block.ts","../../src/selectors/selector.get-fragment.ts","../../src/selectors/selector.get-last-block.ts","../../src/selectors/selector.get-mark-state.ts","../../src/selectors/selector.get-next-block.ts","../../src/selectors/selector.get-next-inline-object.ts","../../src/selectors/selector.get-next-inline-objects.ts","../../src/selectors/selector.get-next-span.ts","../../src/selectors/selector.get-previous-block.ts","../../src/selectors/selector.get-previous-inline-object.ts","../../src/selectors/selector.get-previous-inline-objects.ts","../../src/selectors/selector.get-previous-span.ts","../../src/selectors/selector.get-selected-blocks.ts","../../src/selectors/selector.get-selected-spans.ts","../../src/selectors/selector.get-selected-text-blocks.ts","../../src/selectors/selector.get-selected-value.ts","../../src/selectors/selector.get-selection.ts","../../src/selectors/selector.get-selection-end-block.ts","../../src/selectors/selector.get-selection-end-child.ts","../../src/selectors/selector.get-selection-end-point.ts","../../src/selectors/selector.get-selection-start-block.ts","../../src/selectors/selector.get-selection-start-child.ts","../../src/selectors/selector.get-selection-start-point.ts","../../src/selectors/selector.get-selection-text.ts","../../src/selectors/selector.get-text-after.ts","../../src/selectors/selector.get-text-before.ts","../../src/selectors/selector.get-value.ts","../../src/selectors/selector.is-active-annotation.ts","../../src/selectors/selector.is-active-decorator.ts","../../src/selectors/selector.is-active-list-item.ts","../../src/selectors/selector.is-active-style.ts","../../src/selectors/selector.is-at-the-end-of-block.ts","../../src/selectors/selector.is-at-the-start-of-block.ts","../../src/selectors/selector.is-overlapping-selection.ts","../../src/selectors/selector.is-point-after-selection.ts","../../src/selectors/selector.is-point-before-selection.ts","../../src/selectors/selector.is-selecting-entire-blocks.ts","../../src/selectors/selector.is-selection-collapsed.ts","../../src/selectors/selector.is-selection-expanded.ts"],"mappings":";;;;;;;;AAWA;;KAAY,gBAAA;EACV,UAAA,EAAY,WAAA;EACZ,WAAA,EAAa,WAAA;EACb,KAAA,EAAO,WAAA;EACP,MAAA,EAAQ,WAAA;EACR,YAAA,EAAc,WAAA;EACd,aAAA,EAAe,WAAA;AAAA;;;;;;;;;;;;;;;AAAW;AAsC5B;;;;AAAiE;AAuDjE;;;;;;;;;AAEqB;;ACvGrB;;;;cD8Ca,mBAAA,EAAqB,cAAc,CAAC,gBAAA;;;;;;;;AC9CyB;iBDqG1D,uBAAA,CACd,CAAA,EAAG,gBAAA,EACH,CAAA,EAAG,gBAAgB;;;;cCvGR,oBAAA,EAAsB,cAAA,CAAe,KAAA,CAAM,kBAAA;;;;cCD3C,iBAAA,EAAmB,cAAc,CAC5C,qBAAA;;;;cCDW,cAAA,EAAgB,cAAc,CAAC,qBAAA;;;AHG5C;;;cIDa,cAAA,EAAgB,cAAA;EAC1B,IAAA,EAAM,iBAAA;EAAmB,IAAA,EAAM,SAAA;AAAA;;;AJAlC;;;;cKAa,cAAA,EAAgB,cAAA;EAEvB,IAAA,EAAM,kBAAA,GAAqB,gBAAA;EAC3B,IAAA,EAAM,SAAA;AAAA;;;ALHZ;;;cMDa,aAAA,EAAe,cAAA;EACzB,IAAA,EAAM,gBAAA;EAAkB,IAAA,EAAM,SAAA;AAAA;;;ANAjC;;;;cOAa,kBAAA,EAAoB,cAAA;EAC9B,IAAA,EAAM,qBAAA;EAAuB,IAAA,EAAM,SAAA;AAAA;;;;cCHzB,eAAA,EAAiB,cAAA;EAC3B,KAAA,EAAO,WAAA;EAAa,GAAA,EAAK,WAAA;AAAA;;;;ARC5B;;cSWa,qBAAA,EAAuB,cAAc,CAAC,eAAA;;;ATXnD;;;;;;;;cUOa,aAAA,EAAe,cAAA;EACzB,IAAA,EAAM,iBAAA;EAAmB,IAAA,EAAM,SAAA;AAAA;;;AVRlC;;;;;;;cWGa,aAAA,EAAe,cAAA;EACzB,IAAA,EAAM,iBAAA;EAAmB,IAAA,EAAM,SAAA;AAAA;;;AXJlC;;;;;;;cYKa,mBAAA,EAAqB,cAAA;EAC/B,IAAA,EAAM,kBAAA;EAAoB,IAAA,EAAM,SAAA;AAAA;;;AZNnC;;;;caAa,aAAA,EAAe,cAAA;EAEtB,IAAA,EAAM,kBAAA,GAAqB,gBAAA;EAC3B,IAAA,EAAM,SAAA;AAAA;;;AbHZ;;;;ccCa,oBAAA,EAAsB,cAAA;EAChC,IAAA,EAAM,kBAAA;EAAoB,IAAA,EAAM,SAAA;AAAA;;;AdFnC;;;;ceCa,iBAAA,EAAmB,cAAA;EAC7B,IAAA,EAAM,qBAAA;EAAuB,IAAA,EAAM,SAAA;AAAA;;;AfFtC;;;cgBDa,YAAA,EAAc,cAAA;EACxB,IAAA,EAAM,gBAAA;EAAkB,IAAA,EAAM,SAAA;AAAA;;;AhBAjC;;;;;;;ciBGa,iBAAA,EAAmB,cAAA;EAC7B,IAAA,EAAM,qBAAA;EAAuB,IAAA,EAAM,SAAA;AAAA;;;AjBJtC;;;;;;;;;;;;;;;;;;;;;;;;AAM4B;AAsC5B;ckBnBa,WAAA,EAAa,cAAA,CACxB,KAAA;EAAO,IAAA,EAAM,iBAAA;EAAmB,IAAA,EAAM,SAAA;AAAA;;;AlB1BxC;;;;;;;;cmBOa,YAAA,EAAc,cAAA;EACxB,IAAA,EAAM,iBAAA;EAAmB,IAAA,EAAM,SAAA;AAAA;;;;KCJtB,SAAA;EAEN,KAAA;EACA,KAAA,EAAO,KAAA;AAAA;EAGP,KAAA;EACA,KAAA,EAAO,KAAA;EACP,aAAA,EAAe,KAAA;AAAA;;;;;;cAQR,YAAA,EAAc,cAAc,CAAC,SAAA;;;ApBpB1C;;;;;;;cqBKa,YAAA,EAAc,cAAA;EACxB,IAAA,EAAM,iBAAA;EAAmB,IAAA,EAAM,SAAA;AAAA;;;ArBNlC;;;;csBEa,mBAAA,EAAqB,cAAA;EAC/B,IAAA,EAAM,kBAAA;EAAoB,IAAA,EAAM,SAAA;AAAA;;;AtBHnC;;;;cuBIa,oBAAA,EAAsB,cAAA,CACjC,KAAA;EAAO,IAAA,EAAM,kBAAA;EAAoB,IAAA,EAAM,SAAA;AAAA;;;AvBLzC;;;;cwBCa,WAAA,EAAa,cAAA;EACvB,IAAA,EAAM,gBAAA;EAAkB,IAAA,EAAM,IAAA;AAAA;;;AxBFjC;;;;;;;cyBKa,gBAAA,EAAkB,cAAA;EAC5B,IAAA,EAAM,iBAAA;EAAmB,IAAA,EAAM,SAAA;AAAA;;;AzBNlC;;;;c0BEa,uBAAA,EAAyB,cAAA;EACnC,IAAA,EAAM,kBAAA;EAAoB,IAAA,EAAM,SAAA;AAAA;;;A1BHnC;;;;c2BIa,wBAAA,EAA0B,cAAA,CACrC,KAAA;EAAO,IAAA,EAAM,kBAAA;EAAoB,IAAA,EAAM,SAAA;AAAA;;;A3BLzC;;;;c4BCa,eAAA,EAAiB,cAAA;EAC3B,IAAA,EAAM,gBAAA;EAAkB,IAAA,EAAM,IAAA;AAAA;;;A5BFjC;;;;;;;;;;;c6BWa,iBAAA,EAAmB,cAAA,CAC9B,KAAA;EAAO,IAAA,EAAM,iBAAA;EAAmB,IAAA,EAAM,SAAA;AAAA;;;A7BZxC;;;c8BDa,gBAAA,EAAkB,cAAA,CAC7B,KAAA;EACE,IAAA,EAAM,gBAAA;EACN,IAAA,EAAM,SAAA;AAAA;;;A9BFV;;;;;;;c+BMa,qBAAA,EAAuB,cAAA,CAClC,KAAA;EAAO,IAAA,EAAM,qBAAA;EAAuB,IAAA,EAAM,IAAA;AAAA;;;;A/BP5C;;;;;;;;;;;cgC2Ba,gBAAA,EAAkB,cAAA,CAAe,KAAA,CAAM,iBAAA;;;;cChCvC,YAAA,EAAc,cAAc,CAAC,eAAA;;;AjCK1C;;;;ckCCa,oBAAA,EAAsB,cAAA;EAE7B,IAAA,EAAM,iBAAA;EACN,IAAA,EAAM,SAAA;AAAA;;;AlCJZ;;;;cmCCa,oBAAA,EAAsB,cAAA;EAE7B,IAAA,EAAM,gBAAA,GAAmB,kBAAA;EACzB,IAAA,EAAM,SAAA;AAAA;;;;cCTC,oBAAA,EAAsB,cAAc,CAC/C,oBAAA;;;ApCIF;;;;cqCCa,sBAAA,EAAwB,cAAA;EAE/B,IAAA,EAAM,iBAAA;EACN,IAAA,EAAM,SAAA;AAAA;;;ArCJZ;;;;csCCa,sBAAA,EAAwB,cAAA;EAE/B,IAAA,EAAM,gBAAA,GAAmB,kBAAA;EACzB,IAAA,EAAM,SAAA;AAAA;;;;cCTC,sBAAA,EAAwB,cAAc,CACjD,oBAAA;;;;cCIW,gBAAA,EAAkB,cAAc;;;;cCFhC,iBAAA,EAAmB,cAAc;;;;cCAjC,kBAAA,EAAoB,cAAc;;;;cCHlC,QAAA,EAAU,cAAA,CAAe,KAAA,CAAM,iBAAA;;;;;A3CK5C;iB4CAgB,kBAAA,CACd,UAAA,UACA,OAAA;;;;;;;EAOE,IAAA;AAAA,IAED,cAAc;;;;iBCbD,iBAAA,CAAkB,SAAA,WAAoB,cAAc;;;;iBCHpD,gBAAA,CAAiB,QAAA,WAAmB,cAAc;;;;iBCAlD,aAAA,CAAc,KAAA,WAAgB,cAAc;;;A/CK5D;iBgDDgB,iBAAA,CAAkB,KAAA;EAChC,IAAA,EAAM,iBAAA;EACN,IAAA,EAAM,SAAA;AAAA,IACJ,cAAA;;;AhDFJ;iBiDDgB,mBAAA,CAAoB,KAAA;EAClC,IAAA,EAAM,iBAAA;EACN,IAAA,EAAM,SAAA;AAAA,IACJ,cAAA;;;;AjDFJ;;;;;;iBkDGgB,sBAAA,CACd,SAAA,EAAW,eAAA,GACV,cAAc;;;;iBCRD,qBAAA,CACd,KAAA,EAAO,oBAAA,GACN,cAAc;;;;iBCFD,sBAAA,CACd,KAAA,EAAO,oBAAA,GACN,cAAc;;;;cCAJ,uBAAA,EAAyB,cAAc;;;;cCJvC,oBAAA,EAAsB,cAAc;;;;cCApC,mBAAA,EAAqB,cAAc"}
|
package/lib/selectors/index.js
CHANGED
|
@@ -2,8 +2,8 @@ import { getInline, getSelectionStartPoint, getSelectionEndPoint, getFocusTextBl
|
|
|
2
2
|
import { compareApplicableSchema, getActiveAnnotations, getActiveListItem, getActiveStyle, getApplicableSchema, getCaretWordSelection, getFirstBlock, getFocusBlock, getFocusBlockObject, getFocusChild, getFocusInlineObject, getFocusListBlock, getFocusSpan, getFragment, getLastBlock, getMarkState, getNextBlock, getNextInlineObject, getNextSpan, getPreviousBlock, getPreviousInlineObject, getPreviousSpan, getSelectedBlocks, getSelectedSpans, getSelectedTextBlocks, getSelectedValue, getSelectionEndBlock, getSelectionEndChild, getSelectionStartBlock, getSelectionStartChild, isActiveAnnotation, isActiveDecorator, isActiveListItem, isActiveStyle, isAtTheEndOfBlock, isAtTheStartOfBlock, isOverlappingSelection, isSelectingEntireBlocks, isSelectionCollapsed, isSelectionExpanded } from "../_chunks-es/selector.is-at-the-start-of-block.js";
|
|
3
3
|
import { getEnclosingBlock, isObject, comparePoints } from "../_chunks-es/get-path-sub-schema.js";
|
|
4
4
|
import { isSpan, isTextBlock } from "@portabletext/schema";
|
|
5
|
-
import { spanSelectionPointToBlockOffset,
|
|
6
|
-
import { getChildren, parentPath
|
|
5
|
+
import { spanSelectionPointToBlockOffset, getSelectionEndPoint as getSelectionEndPoint$1, getBlockEndPoint, getSelectionStartPoint as getSelectionStartPoint$1, getBlockStartPoint } from "../_chunks-es/util.slice-blocks.js";
|
|
6
|
+
import { isKeyedSegment, getChildren, parentPath } from "../_chunks-es/get-parent.js";
|
|
7
7
|
const getAnchorBlock = (snapshot) => {
|
|
8
8
|
const selection = snapshot.context.selection;
|
|
9
9
|
if (selection)
|
|
@@ -100,6 +100,7 @@ const getAnchorBlock = (snapshot) => {
|
|
|
100
100
|
block
|
|
101
101
|
});
|
|
102
102
|
return getSelectionText({
|
|
103
|
+
...snapshot,
|
|
103
104
|
context: {
|
|
104
105
|
...snapshot.context,
|
|
105
106
|
selection: {
|
|
@@ -128,6 +129,7 @@ const getAnchorBlock = (snapshot) => {
|
|
|
128
129
|
block
|
|
129
130
|
});
|
|
130
131
|
return getSelectionText({
|
|
132
|
+
...snapshot,
|
|
131
133
|
context: {
|
|
132
134
|
...snapshot.context,
|
|
133
135
|
selection: {
|
|
@@ -1 +1 @@
|
|
|
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/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 '../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 '../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 {parentPath} from '../engine/path/parent-path'\nimport {getChildren} from '../traversal/get-children'\nimport {isObject} from '../traversal/is-object'\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 (endFound && isObject(snapshot, child.node)) {\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 {parentPath} from '../engine/path/parent-path'\nimport {getChildren} from '../traversal/get-children'\nimport {isObject} from '../traversal/is-object'\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 (isObject(snapshot, 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 {EditorSelector} from '../editor/editor-selector'\nimport {comparePoints} from '../traversal/compare-points'\nimport type {EditorSelectionPoint} from '../types/editor'\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 {comparePoints} from '../traversal/compare-points'\nimport type {EditorSelectionPoint} from '../types/editor'\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","isObject","push","getPreviousInlineObjects","startSegment","startKey","getSelection","getBlockTextAfter","endPoint","block","getFocusTextBlock","focus","endOfBlock","getBlockEndPoint","getSelectionText","getBlockTextBefore","startPoint","startOfBlock","getBlockStartPoint","getValue","value","isPointAfterSelection","comparePoints","isPointBeforeSelection"],"mappings":"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"}
|
|
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/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 '../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 '../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 {parentPath} from '../engine/path/parent-path'\nimport {getChildren} from '../traversal/get-children'\nimport {isObject} from '../traversal/is-object'\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 (endFound && isObject(snapshot, child.node)) {\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 {parentPath} from '../engine/path/parent-path'\nimport {getChildren} from '../traversal/get-children'\nimport {isObject} from '../traversal/is-object'\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 (isObject(snapshot, 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 {EditorSelector} from '../editor/editor-selector'\nimport {comparePoints} from '../traversal/compare-points'\nimport type {EditorSelectionPoint} from '../types/editor'\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 {comparePoints} from '../traversal/compare-points'\nimport type {EditorSelectionPoint} from '../types/editor'\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","isObject","push","getPreviousInlineObjects","startSegment","startKey","getSelection","getBlockTextAfter","endPoint","block","getFocusTextBlock","focus","endOfBlock","getBlockEndPoint","getSelectionText","getBlockTextBefore","startPoint","startOfBlock","getBlockStartPoint","getValue","value","isPointAfterSelection","comparePoints","isPointBeforeSelection"],"mappings":";;;;;;AAUO,MAAMA,iBAERC,CAAAA,aAAa;AAChB,QAAMC,YAAYD,SAASE,QAAQD;AAEnC,MAAKA;AAIL,WAAOE,kBAAkBH,UAAUC,UAAUG,OAAOC,IAAI;AAC1D,GCTaC,iBAMRN,CAAAA,aAAa;AAChB,QAAMC,YAAYD,SAASE,QAAQD;AAEnC,MAAKA;AAIL,WAAOM,UAAUP,UAAUC,UAAUG,OAAOC,IAAI;AAClD,GCfaG,gBAERR,CAAAA,aAAa;AAChB,QAAMS,cAAcH,eAAeN,QAAQ;AAE3C,SAAOS,eAAeC,OAAOV,SAASE,SAASO,YAAYE,IAAI,IAC3D;AAAA,IAACA,MAAMF,YAAYE;AAAAA,IAAMN,MAAMI,YAAYJ;AAAAA,EAAAA,IAC3CO;AACN,GCPaC,qBAERb,CAAAA,aAAa;AAChB,QAAMc,cAAcf,eAAeC,QAAQ;AAE3C,SAAOc,eAAeC,YAAYf,SAASE,SAASY,YAAYH,IAAI,IAChE;AAAA,IAACA,MAAMG,YAAYH;AAAAA,IAAMN,MAAMS,YAAYT;AAAAA,EAAAA,IAC3CO;AACN,GCVaI,kBAERhB,CAAAA,aAAa;AAChB,MAAI,CAACA,SAASE,QAAQD;AACpB;AAGF,QAAMgB,sBAAsBC,uBAAuBlB,QAAQ,GACrDmB,oBAAoBC,qBAAqBpB,QAAQ;AAEvD,MAAI,CAACiB,uBAAuB,CAACE;AAC3B;AAGF,QAAME,QAAQC,gCAAgC;AAAA,IAC5CtB;AAAAA,IACAuB,gBAAgBN;AAAAA,EAAAA,CACjB,GACKO,MAAMF,gCAAgC;AAAA,IAC1CtB;AAAAA,IACAuB,gBAAgBJ;AAAAA,EAAAA,CACjB;AAED,SAAOE,SAASG,MAAM;AAAA,IAACH;AAAAA,IAAOG;AAAAA,EAAAA,IAAOZ;AACvC,GClBaa,uBAERzB,CAAAA,aAAa;AAChB,QAAM0B,QAAQN,qBAAqBpB,QAAQ;AAE3C,MAAI,CAAC0B;AACH,WAAO,CAAA;AAGT,QAAMC,aAAaD,MAAMrB,KAAKuB,GAAG,EAAE,GAC7BC,SAASC,eAAeH,UAAU,IAAIA,WAAWI,OAAOnB;AAE9D,MAAI,CAACiB;AACH,WAAO,CAAA;AAGT,QAAMG,WAAWC,YAAYjC,UAAUkC,WAAWR,MAAMrB,IAAI,CAAC,GACvD8B,gBAAoE,CAAA;AAC1E,MAAIC,WAAW;AAEf,aAAWC,SAASL,UAAU;AAC5B,UAAMM,UAAUD,MAAMhC,KAAKuB,GAAG,EAAE;AAGhC,SAFiBE,eAAeQ,OAAO,IAAIA,QAAQP,OAAOnB,YAEzCiB,QAAQ;AACvBO,iBAAW;AACX;AAAA,IACF;AAEIA,gBAAYG,SAASvC,UAAUqC,MAAM1B,IAAI,KAC3CwB,cAAcK,KAAK;AAAA,MACjB7B,MAAM0B,MAAM1B;AAAAA,MACZN,MAAMgC,MAAMhC;AAAAA,IAAAA,CACb;AAAA,EAEL;AAEA,SAAO8B;AACT,GCtCaM,2BAERzC,CAAAA,aAAa;AAChB,QAAM0B,QAAQR,uBAAuBlB,QAAQ;AAE7C,MAAI,CAAC0B;AACH,WAAO,CAAA;AAGT,QAAMgB,eAAehB,MAAMrB,KAAKuB,GAAG,EAAE,GAC/Be,WAAWb,eAAeY,YAAY,IAAIA,aAAaX,OAAOnB;AAEpE,MAAI,CAAC+B;AACH,WAAO,CAAA;AAGT,QAAMX,WAAWC,YAAYjC,UAAUkC,WAAWR,MAAMrB,IAAI,CAAC,GACvD8B,gBAAoE,CAAA;AAE1E,aAAWE,SAASL,UAAU;AAC5B,UAAMM,UAAUD,MAAMhC,KAAKuB,GAAG,EAAE;AAGhC,SAFiBE,eAAeQ,OAAO,IAAIA,QAAQP,OAAOnB,YAEzC+B;AACf;AAGEJ,aAASvC,UAAUqC,MAAM1B,IAAI,KAC/BwB,cAAcK,KAAK;AAAA,MACjB7B,MAAM0B,MAAM1B;AAAAA,MACZN,MAAMgC,MAAMhC;AAAAA,IAAAA,CACb;AAAA,EAEL;AAEA,SAAO8B;AACT,GC7CaS,eAAiD5C,CAAAA,aACrDA,SAASE,QAAQD,WCEb4C,oBAA6C7C,CAAAA,aAAa;AACrE,MAAI,CAACA,SAASE,QAAQD;AACpB,WAAO;AAGT,QAAM6C,WAAW1B,uBAAqBpB,SAASE,QAAQD,SAAS,GAC1D8C,QAAQC,kBAAkB;AAAA,IAC9B,GAAGhD;AAAAA,IACHE,SAAS;AAAA,MACP,GAAGF,SAASE;AAAAA,MACZD,WAAW;AAAA,QACTG,QAAQ0C;AAAAA,QACRG,OAAOH;AAAAA,MAAAA;AAAAA,IACT;AAAA,EACF,CACD;AAED,MAAI,CAACC;AACH,WAAO;AAGT,QAAMG,aAAaC,iBAAiB;AAAA,IAClCjD,SAASF,SAASE;AAAAA,IAClB6C;AAAAA,EAAAA,CACD;AAED,SAAOK,iBAAiB;AAAA,IACtB,GAAGpD;AAAAA,IACHE,SAAS;AAAA,MACP,GAAGF,SAASE;AAAAA,MACZD,WAAW;AAAA,QACTG,QAAQ0C;AAAAA,QACRG,OAAOC;AAAAA,MAAAA;AAAAA,IACT;AAAA,EACF,CACD;AACH,GCpCaG,qBAA8CrD,CAAAA,aAAa;AACtE,MAAI,CAACA,SAASE,QAAQD;AACpB,WAAO;AAGT,QAAMqD,aAAapC,yBAAuBlB,SAASE,QAAQD,SAAS,GAC9D8C,QAAQC,kBAAkB;AAAA,IAC9B,GAAGhD;AAAAA,IACHE,SAAS;AAAA,MACP,GAAGF,SAASE;AAAAA,MACZD,WAAW;AAAA,QACTG,QAAQkD;AAAAA,QACRL,OAAOK;AAAAA,MAAAA;AAAAA,IACT;AAAA,EACF,CACD;AAED,MAAI,CAACP;AACH,WAAO;AAGT,QAAMQ,eAAeC,mBAAmB;AAAA,IACtCtD,SAASF,SAASE;AAAAA,IAClB6C;AAAAA,EAAAA,CACD;AAED,SAAOK,iBAAiB;AAAA,IACtB,GAAGpD;AAAAA,IACHE,SAAS;AAAA,MACP,GAAGF,SAASE;AAAAA,MACZD,WAAW;AAAA,QACTG,QAAQmD;AAAAA,QACRN,OAAOK;AAAAA,MAAAA;AAAAA,IACT;AAAA,EACF,CACD;AACH,GCvCaG,WACXzD,CAAAA,aAEOA,SAASE,QAAQwD;ACDnB,SAASC,sBACdjC,OACyB;AACzB,SAAQ1B,CAAAA,aAAa;AACnB,QAAI,CAACA,SAASE,QAAQD;AACpB,aAAO;AAGT,UAAM6C,WAAW1B,uBAAqBpB,SAASE,QAAQD,SAAS;AAEhE,WAAO2D,cAAc5D,UAAU0B,OAAOoB,QAAQ,MAAM;AAAA,EACtD;AACF;ACZO,SAASe,uBACdnC,OACyB;AACzB,SAAQ1B,CAAAA,aAAa;AACnB,QAAI,CAACA,SAASE,QAAQD;AACpB,aAAO;AAGT,UAAMqD,aAAapC,yBAAuBlB,SAASE,QAAQD,SAAS;AAEpE,WAAO2D,cAAc5D,UAAU0B,OAAO4B,UAAU,MAAM;AAAA,EACxD;AACF;"}
|
package/lib/traversal/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { It as
|
|
1
|
+
import { It as Path, M as EditorSelection, N as EditorSelectionPoint, at as Containers, nt as TraversalSnapshot, rt as Node, st as RegisteredContainer } from "../_chunks-dts/behavior.types.action.js";
|
|
2
2
|
import { PortableTextBlock, PortableTextObject, PortableTextSpan, PortableTextTextBlock, Schema } from "@portabletext/schema";
|
|
3
3
|
/**
|
|
4
4
|
* Find an ancestor of the node at a given path that matches a predicate.
|
|
@@ -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
|
*
|
|
@@ -80,6 +95,15 @@ declare function getChildren(snapshot: TraversalSnapshot, path: Path): Array<{
|
|
|
80
95
|
node: Node;
|
|
81
96
|
path: Path;
|
|
82
97
|
}>;
|
|
98
|
+
/**
|
|
99
|
+
* Get the registered editable container at a given path.
|
|
100
|
+
*
|
|
101
|
+
* @beta
|
|
102
|
+
*/
|
|
103
|
+
declare function getContainer(snapshot: TraversalSnapshot, path: Path): {
|
|
104
|
+
node: Node;
|
|
105
|
+
path: Path;
|
|
106
|
+
} | undefined;
|
|
83
107
|
/**
|
|
84
108
|
* Resolve a container node's editable child array.
|
|
85
109
|
*
|
|
@@ -172,11 +196,21 @@ declare function getLeaf(snapshot: TraversalSnapshot, path: Path, options: {
|
|
|
172
196
|
*
|
|
173
197
|
* The path can be either keyed (KeyedSegment + field name strings) or
|
|
174
198
|
* indexed (numbers). Keyed segments are resolved by matching `_key`,
|
|
175
|
-
* field name strings
|
|
176
|
-
* are resolved by index.
|
|
177
|
-
*
|
|
178
|
-
* The returned path
|
|
179
|
-
*
|
|
199
|
+
* field name strings name a structural descent into the previous
|
|
200
|
+
* node's children, and numbers are resolved by index.
|
|
201
|
+
*
|
|
202
|
+
* The returned `path` always identifies the returned node: it's fully
|
|
203
|
+
* keyed (numeric indices are converted to `KeyedSegment`s) and any
|
|
204
|
+
* trailing segments in the input that point outside the value tree —
|
|
205
|
+
* e.g. an object node's primitive field, or an annotation reached via
|
|
206
|
+
* `'markDefs'` on a text block — are stripped so that
|
|
207
|
+
* `getNode(snapshot, entry.path).node === entry.node`.
|
|
208
|
+
*
|
|
209
|
+
* The walk stops when a string segment names a field that isn't the
|
|
210
|
+
* current node's structural child array. Annotations live in
|
|
211
|
+
* `markDefs` on a text block, alongside `children` rather than inside
|
|
212
|
+
* it, so `getNode` resolves an annotation path to the enclosing text
|
|
213
|
+
* block. Use `getAnnotation` to resolve the annotation itself.
|
|
180
214
|
*
|
|
181
215
|
* @beta
|
|
182
216
|
*/
|
|
@@ -367,5 +401,5 @@ declare function isLeafObject(snapshot: TraversalSnapshot, node: unknown, path:
|
|
|
367
401
|
* @beta
|
|
368
402
|
*/
|
|
369
403
|
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 };
|
|
404
|
+
export { comparePoints, getAncestor, getAncestors, getAnnotation, getBlock, getChildren, getContainer, getContainerChildren, getEnclosingBlock, getFirstChild, getLastChild, getLeaf, getNode, getParent, getPathSubSchema, getSibling, getSpan, getText, getTextBlock, getUnionSchema, hasNode, isBlock, isInline, isLeafObject, isObject, pathContains, rangeIntersects };
|
|
371
405
|
//# 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"],"
|
|
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.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"],"mappings":"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"}
|
package/lib/traversal/index.js
CHANGED
|
@@ -1,7 +1,27 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { getTextBlock } from "../_chunks-es/get-container.js";
|
|
2
|
+
import { getAncestor, getContainer, getFirstChild, getLeaf, getSpan, getText, getUnionSchema, isLeafObject, pathContains, rangeIntersects } from "../_chunks-es/get-container.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,8 +29,10 @@ export {
|
|
|
9
29
|
comparePoints,
|
|
10
30
|
getAncestor,
|
|
11
31
|
getAncestors,
|
|
32
|
+
getAnnotation,
|
|
12
33
|
getBlock,
|
|
13
34
|
getChildren,
|
|
35
|
+
getContainer,
|
|
14
36
|
getContainerChildren,
|
|
15
37
|
getEnclosingBlock,
|
|
16
38
|
getFirstChild,
|
|
@@ -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":["
|
|
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/lib/utils/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
1
|
+
import { Ft as KeyedSegment, It as Path, M as EditorSelection, N as EditorSelectionPoint, Nt as BlockPath, Pt as ChildPath, S as EditorContext, nt as TraversalSnapshot } from "../_chunks-dts/behavior.types.action.js";
|
|
2
|
+
import { t as BlockOffset } from "../_chunks-dts/block-offset.js";
|
|
3
3
|
import { PortableTextBlock, PortableTextTextBlock, isSpan, isTextBlock } from "@portabletext/schema";
|
|
4
4
|
/**
|
|
5
5
|
* @public
|
|
@@ -124,7 +124,7 @@ declare function mergeTextBlocks({
|
|
|
124
124
|
context: Pick<EditorContext, 'keyGenerator' | 'schema'>;
|
|
125
125
|
targetBlock: PortableTextTextBlock;
|
|
126
126
|
incomingBlock: PortableTextTextBlock;
|
|
127
|
-
}): PortableTextTextBlock<
|
|
127
|
+
}): PortableTextTextBlock<import("@portabletext/schema").PortableTextObject | import("@portabletext/schema").PortableTextSpan>;
|
|
128
128
|
/**
|
|
129
129
|
* @public
|
|
130
130
|
*/
|
package/lib/utils/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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"],"
|
|
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"],"mappings":";;;AAYA;;;AAAA,iBAAgB,+BAAA;EACd,QAAA;EACA,WAAA;EACA;AAAA;EAEA,QAAA,EAAU,iBAAA;EACV,WAAA,EAAa,WAAA;EACb,SAAA;AAAA;QAY2B,SAAA;;;;;;iBA4Db,+BAAA;EACd,QAAA;EACA;AAAA;EAEA,QAAA,EAAU,iBAAA;EACV,cAAA,EAAgB,oBAAA;AAAA,IACd,WAAA;;AArFJ;;iBCJgB,uBAAA;EACd,QAAA;EACA,OAAA;EACA;AAAA;EAEA,QAAA,EAAU,iBAAA;EACV,OAAA;IAAU,MAAA,EAAQ,WAAA;IAAa,KAAA,EAAO,WAAA;EAAA;EACtC,QAAA;AAAA,IACE,eAAA;;ADJJ;;iBEFgB,gCAAA;EACd,QAAA;EACA;AAAA;EAEA,QAAA,EAAU,iBAAA;EACV,cAAA,EAAgB,oBAAA;AAAA,IACd,WAAA;AFJJ;;;AAAA,iBGJgB,gBAAA;EACd,OAAA;EACA;AAAA;EAEA,OAAA,EAAS,IAAA,CAAK,aAAA;EACd,KAAA;IACE,IAAA,EAAM,iBAAA;IACN,IAAA,EAAM,SAAA;EAAA;AAAA,IAEN,oBAAA;AHLJ;;;AAAA,iBIJgB,kBAAA;EACd,OAAA;EACA;AAAA;EAEA,OAAA,EAAS,IAAA,CAAK,aAAA;EACd,KAAA;IACE,IAAA,EAAM,iBAAA;IACN,IAAA,EAAM,SAAA;EAAA;AAAA,IAEN,oBAAA;;;;iBCZY,oBAAA,0BACW,WAAA,CAAY,eAAA,wCACP,oBAAA,WAC5B,gBAAA,SAAyB,WAAA,CAAY,eAAA,IACjC,oBAAA,UAEN,SAAA,EAAW,gBAAA,GAAmB,qBAAA;;;;iBCNhB,sBAAA,0BACW,WAAA,CAAY,eAAA,wCACP,oBAAA,WAC5B,gBAAA,SAAyB,WAAA,CAAY,eAAA,IACjC,oBAAA,UAEN,SAAA,EAAW,gBAAA,GAAmB,qBAAA;;;;iBCNhB,gBAAA,CAAiB,KAA4B,EAArB,qBAAqB;;;APO7D;iBQLgB,gBAAA,CACd,OAAA,EAAS,IAAA,CAAK,aAAA,aACd,KAAA,EAAO,iBAAA;;;;iBCHO,YAAA,CAAa,CAAA,EAAG,IAAA,EAAM,CAAA,EAAG,IAAI;;;;iBCA7B,sBAAA,CACd,CAAA,EAAG,oBAAA,EACH,CAAA,EAAG,oBAAoB;;;;iBCFT,iBAAA,CAAkB,CAAA,EAAG,eAAA,EAAiB,CAAA,EAAG,eAAe;;;;iBCDxD,cAAA,CAAe,OAAA,YAAmB,OAAA,IAAW,YAAY;;;;iBCCzD,oBAAA,CAAqB,SAA0B,EAAf,eAAe;;;AbM/D;iBcLgB,eAAA;EACd,OAAA;EACA,WAAA;EACA;AAAA;EAEA,OAAA,EAAS,IAAA,CAAK,aAAA;EACd,WAAA,EAAa,qBAAA;EACb,aAAA,EAAe,qBAAA;AAAA,IAChB,qBAAA,gCAAA,kBAAA,kCAAA,gBAAA;;;;iBCVe,gBAAA,0BACW,WAAA,CAAY,eAAA,UACrC,SAAA,EAAW,gBAAA,GAAmB,gBAAA;;;AfKhC;iBgBEgB,WAAA;EACd,OAAA;EACA;AAAA;EAEA,OAAA,EAAS,IAAA,CAAK,aAAA;IACZ,YAAA;EAAA;EAEF,MAAA,EAAQ,KAAA,CAAM,iBAAA;AAAA,IACZ,KAAA,CAAM,iBAAA"}
|
package/lib/utils/index.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { blockOffsetToSpanSelectionPoint,
|
|
2
|
-
import { getBlockEndPoint, getBlockStartPoint, getSelectionEndPoint, getSelectionStartPoint, isEqualPaths, isSelectionCollapsed, sliceBlocks, spanSelectionPointToBlockOffset } from "../_chunks-es/util.slice-blocks.js";
|
|
1
|
+
import { blockOffsetToSpanSelectionPoint, parseBlock } from "../_chunks-es/util.slice-blocks.js";
|
|
2
|
+
import { getBlockEndPoint, getBlockStartPoint, getSelectionEndPoint, getSelectionStartPoint, isEqualPaths, isEqualSelectionPoints, isSelectionCollapsed, sliceBlocks, spanSelectionPointToBlockOffset } from "../_chunks-es/util.slice-blocks.js";
|
|
3
3
|
import { getNode, isKeyedSegment, getParent } from "../_chunks-es/get-parent.js";
|
|
4
4
|
import { isSpan, isTextBlock } from "@portabletext/schema";
|
|
5
5
|
import { isSpan as isSpan2, isTextBlock as isTextBlock2 } from "@portabletext/schema";
|
|
6
|
-
import { getTextBlockText, isEmptyTextBlock } from "../_chunks-es/util.is-
|
|
6
|
+
import { getTextBlockText, isEmptyTextBlock, isEqualSelections } from "../_chunks-es/util.is-equal-selections.js";
|
|
7
7
|
function blockOffsetToBlockSelectionPoint({
|
|
8
8
|
snapshot,
|
|
9
9
|
blockOffset
|
|
@@ -73,9 +73,6 @@ function childSelectionPointToBlockOffset({
|
|
|
73
73
|
isSpan(snapshot.context, child) && (offset += child.text.length);
|
|
74
74
|
}
|
|
75
75
|
}
|
|
76
|
-
function isEqualSelections(a, b) {
|
|
77
|
-
return !a && !b ? !0 : !a || !b ? !1 : isEqualSelectionPoints(a.anchor, b.anchor) && isEqualSelectionPoints(a.focus, b.focus);
|
|
78
|
-
}
|
|
79
76
|
function mergeTextBlocks({
|
|
80
77
|
context,
|
|
81
78
|
targetBlock,
|
package/lib/utils/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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.
|
|
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.merge-text-blocks.ts","../../src/utils/util.reverse-selection.ts"],"sourcesContent":["import {getNode} from '../traversal/get-node'\nimport type {TraversalSnapshot} from '../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 '../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 '../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, isTextBlock} from '@portabletext/schema'\nimport {getParent} from '../traversal/get-parent'\nimport type {TraversalSnapshot} from '../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 = getParent(snapshot, selectionPoint.path, {\n match: (node) => isTextBlock({schema: snapshot.context.schema}, node),\n })\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","getParent","match","node","isTextBlock","schema","context","child","children","_key","isSpan","text","length","mergeTextBlocks","targetBlock","incomingBlock","parsedIncomingBlock","parseBlock","keyGenerator","block","options","normalize","removeUnusedMarkDefs","validateFields","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,UAAUpB,UAAUe,eAAeX,MAAM;AAAA,IACzDiB,OAAQC,UAASC,YAAY;AAAA,MAACC,QAAQxB,SAASyB,QAAQD;AAAAA,IAAAA,GAASF,IAAI;AAAA,EAAA,CACrE;AAED,MAAI,CAACH;AACH;AAGF,MAAId,SAAS;AAEb,aAAWqB,SAASP,UAAUG,KAAKK,UAAU;AAC3C,QAAID,MAAME,SAASZ,aAAaY;AAC9B,aAAO;AAAA,QACLxB,MAAMe,UAAUf;AAAAA,QAChBC,QAAQA,SAASU,eAAeV;AAAAA,MAAAA;AAIhCwB,WAAO7B,SAASyB,SAASC,KAAK,MAChCrB,UAAUqB,MAAMI,KAAKC;AAAAA,EAEzB;AAGF;ACxCO,SAASC,gBAAgB;AAAA,EAC9BP;AAAAA,EACAQ;AAAAA,EACAC;AAKF,GAAG;AACD,QAAMC,sBAAsBC,WAAW;AAAA,IACrCC,cAAcZ,QAAQY;AAAAA,IACtBC,OAAOJ;AAAAA,IACPK,SAAS;AAAA,MACPC,WAAW;AAAA,MACXC,sBAAsB;AAAA,MACtBC,gBAAgB;AAAA,IAAA;AAAA,IAElBlB,QAAQC,QAAQD;AAAAA,EAAAA,CACjB;AAED,SAAI,CAACW,uBAAuB,CAACZ,YAAYE,SAASU,mBAAmB,IAC5DF,cAGF;AAAA,IACL,GAAGA;AAAAA,IACHN,UAAU,CAAC,GAAGM,YAAYN,UAAU,GAAGQ,oBAAoBR,QAAQ;AAAA,IACnEgB,UAAU,CACR,GAAIV,YAAYU,YAAY,CAAA,GAC5B,GAAIR,oBAAoBQ,YAAY,CAAA,CAAG;AAAA,EAAA;AAG7C;AClCO,SAASC,iBAEdC,WAA+C;AAC/C,SAAKA,cAIDA,UAAUlC,WACL;AAAA,IACLC,QAAQiC,UAAUhC;AAAAA,IAClBA,OAAOgC,UAAUjC;AAAAA,IACjBD,UAAU;AAAA,EAAA,IAIP;AAAA,IACLC,QAAQiC,UAAUhC;AAAAA,IAClBA,OAAOgC,UAAUjC;AAAAA,IACjBD,UAAU;AAAA,EAAA;AAEd;"}
|