@portabletext/editor 7.0.3 → 7.0.4
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 +2 -2
- package/lib/_chunks-dts/behavior.types.action.d.ts.map +1 -1
- package/lib/_chunks-es/{util.is-equal-selections.js → util.is-empty-text-block.js} +2 -7
- package/lib/_chunks-es/util.is-empty-text-block.js.map +1 -0
- package/lib/index.js +40 -58
- package/lib/index.js.map +1 -1
- package/lib/utils/index.d.ts +2 -2
- package/lib/utils/index.d.ts.map +1 -1
- package/lib/utils/index.js +6 -3
- package/lib/utils/index.js.map +1 -1
- package/package.json +1 -1
- package/lib/_chunks-es/util.is-equal-selections.js.map +0 -1
package/lib/utils/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { F as BlockOffset, Q as EditorContext, ct as EditorSelection, lt as EditorSelectionPoint } from "../_chunks-dts/behavior.types.action.js";
|
|
2
2
|
import { A as ChildPath, M as Path, j as KeyedSegment, k as BlockPath, n as TraversalSnapshot } from "../_chunks-dts/resolve-containers.js";
|
|
3
|
-
import * as
|
|
3
|
+
import * as _portabletext_schema9 from "@portabletext/schema";
|
|
4
4
|
import { PortableTextBlock, PortableTextTextBlock, isSpan, isTextBlock } from "@portabletext/schema";
|
|
5
5
|
/**
|
|
6
6
|
* @public
|
|
@@ -125,7 +125,7 @@ declare function mergeTextBlocks({
|
|
|
125
125
|
context: Pick<EditorContext, 'keyGenerator' | 'schema'>;
|
|
126
126
|
targetBlock: PortableTextTextBlock;
|
|
127
127
|
incomingBlock: PortableTextTextBlock;
|
|
128
|
-
}): PortableTextTextBlock<
|
|
128
|
+
}): PortableTextTextBlock<_portabletext_schema9.PortableTextObject | _portabletext_schema9.PortableTextSpan>;
|
|
129
129
|
/**
|
|
130
130
|
* @public
|
|
131
131
|
*/
|
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"],"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,
|
|
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"}
|
package/lib/utils/index.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { blockOffsetToSpanSelectionPoint, getAncestorTextBlock, parseBlock } from "../_chunks-es/util.slice-blocks.js";
|
|
2
|
-
import { getBlockEndPoint, getBlockStartPoint, getSelectionEndPoint, getSelectionStartPoint, isEqualPaths,
|
|
1
|
+
import { blockOffsetToSpanSelectionPoint, getAncestorTextBlock, isEqualSelectionPoints, parseBlock } from "../_chunks-es/util.slice-blocks.js";
|
|
2
|
+
import { getBlockEndPoint, getBlockStartPoint, getSelectionEndPoint, getSelectionStartPoint, isEqualPaths, isSelectionCollapsed, sliceBlocks, spanSelectionPointToBlockOffset } from "../_chunks-es/util.slice-blocks.js";
|
|
3
3
|
import { getNode, isKeyedSegment } from "../_chunks-es/get-node.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
|
|
6
|
+
import { getTextBlockText, isEmptyTextBlock } from "../_chunks-es/util.is-empty-text-block.js";
|
|
7
7
|
function blockOffsetToBlockSelectionPoint({
|
|
8
8
|
snapshot,
|
|
9
9
|
blockOffset
|
|
@@ -69,6 +69,9 @@ function childSelectionPointToBlockOffset({
|
|
|
69
69
|
isSpan(snapshot.context, child) && (offset += child.text.length);
|
|
70
70
|
}
|
|
71
71
|
}
|
|
72
|
+
function isEqualSelections(a, b) {
|
|
73
|
+
return !a && !b ? !0 : !a || !b ? !1 : isEqualSelectionPoints(a.anchor, b.anchor) && isEqualSelectionPoints(a.focus, b.focus);
|
|
74
|
+
}
|
|
72
75
|
function mergeTextBlocks({
|
|
73
76
|
context,
|
|
74
77
|
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.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;
|
|
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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"}
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"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;"}
|