@jhl548/duplicate-doc-core 0.1.2 → 0.1.3
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/README.md +4 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/position.d.ts +29 -0
- package/dist/position.js +63 -0
- package/dist/position.js.map +1 -0
- package/dist/selection.d.ts +28 -0
- package/dist/selection.js +39 -0
- package/dist/selection.js.map +1 -0
- package/dist/tiptapDuplicateHighlight.d.ts +9 -0
- package/dist/tiptapDuplicateHighlight.js +36 -1
- package/dist/tiptapDuplicateHighlight.js.map +1 -1
- package/dist/types.d.ts +12 -0
- package/package.json +1 -1
- package/src/style.css +50 -0
package/README.md
CHANGED
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
- Shared document, range, duplicate point, and editor snapshot types.
|
|
8
8
|
- Similarity-based highlight color and CSS class helpers.
|
|
9
9
|
- Range normalization and document filtering utilities.
|
|
10
|
+
- Plain-text highlight resolution helpers for checking whether a range can still render after edits.
|
|
10
11
|
- Tiptap duplicate highlight extension.
|
|
11
12
|
- Shared highlight styles via `@jhl548/duplicate-doc-core/style.css`.
|
|
12
13
|
|
|
@@ -22,6 +23,7 @@ npm install @jhl548/duplicate-doc-core
|
|
|
22
23
|
import {
|
|
23
24
|
DuplicateHighlightExtension,
|
|
24
25
|
filterHighlightsForDocument,
|
|
26
|
+
hasResolvableHighlightInPlainText,
|
|
25
27
|
type DuplicateHighlight,
|
|
26
28
|
type NormalizedDocument
|
|
27
29
|
} from "@jhl548/duplicate-doc-core";
|
|
@@ -29,3 +31,5 @@ import "@jhl548/duplicate-doc-core/style.css";
|
|
|
29
31
|
```
|
|
30
32
|
|
|
31
33
|
This package is intended to be consumed directly by framework adapters such as `@jhl548/duplicate-doc-vue`, or by applications that need access to the shared duplicate document model.
|
|
34
|
+
|
|
35
|
+
Use `hasResolvableHighlightInPlainText(plainText, highlight)` before switching documents when the app needs to know whether at least one highlight range can still be resolved in the current edited text.
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
export * from "./colors.js";
|
|
2
|
+
export * from "./position.js";
|
|
2
3
|
export * from "./ranges.js";
|
|
3
4
|
export * from "./scroll.js";
|
|
5
|
+
export * from "./selection.js";
|
|
4
6
|
export * from "./tiptapDuplicateHighlight.js";
|
|
5
7
|
export * from "./types.js";
|
|
6
8
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,+BAA+B,CAAC;AAC9C,cAAc,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,+BAA+B,CAAC;AAC9C,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { DocumentSelectionChangePayload, RangeMapEntry } from "./types.js";
|
|
2
|
+
export interface PopupPosition {
|
|
3
|
+
top: number;
|
|
4
|
+
left: number;
|
|
5
|
+
placement: "above" | "below";
|
|
6
|
+
}
|
|
7
|
+
export interface SelectionPopupData {
|
|
8
|
+
documentId: string;
|
|
9
|
+
selection: DocumentSelectionChangePayload;
|
|
10
|
+
overlappingEntries: RangeMapEntry[];
|
|
11
|
+
}
|
|
12
|
+
export declare function calcSelectionPopupPosition(selRect: {
|
|
13
|
+
top: number;
|
|
14
|
+
bottom: number;
|
|
15
|
+
left: number;
|
|
16
|
+
right: number;
|
|
17
|
+
height: number;
|
|
18
|
+
}, viewportWidth: number, viewportHeight: number, popupRect?: {
|
|
19
|
+
width: number;
|
|
20
|
+
height: number;
|
|
21
|
+
}): PopupPosition;
|
|
22
|
+
export declare function getDomSelectionRect(): {
|
|
23
|
+
top: number;
|
|
24
|
+
bottom: number;
|
|
25
|
+
left: number;
|
|
26
|
+
right: number;
|
|
27
|
+
height: number;
|
|
28
|
+
} | null;
|
|
29
|
+
export declare function isDomSelectionInsideContainer(containerElement: HTMLElement): boolean;
|
package/dist/position.js
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
export function calcSelectionPopupPosition(selRect, viewportWidth, viewportHeight, popupRect) {
|
|
2
|
+
const GAP = 8;
|
|
3
|
+
const popupWidth = popupRect?.width ?? 360;
|
|
4
|
+
const popupHeight = popupRect?.height ?? 200;
|
|
5
|
+
let left = selRect.left + (selRect.right - selRect.left) / 2 - popupWidth / 2;
|
|
6
|
+
left = Math.max(8, Math.min(left, viewportWidth - popupWidth - 8));
|
|
7
|
+
let top;
|
|
8
|
+
let placement;
|
|
9
|
+
const spaceBelow = viewportHeight - selRect.bottom;
|
|
10
|
+
const spaceAbove = selRect.top;
|
|
11
|
+
if (spaceBelow >= popupHeight + GAP || spaceBelow >= spaceAbove) {
|
|
12
|
+
placement = "below";
|
|
13
|
+
top = selRect.bottom + GAP;
|
|
14
|
+
}
|
|
15
|
+
else {
|
|
16
|
+
placement = "above";
|
|
17
|
+
top = selRect.top - popupHeight - GAP;
|
|
18
|
+
}
|
|
19
|
+
return { top, left, placement };
|
|
20
|
+
}
|
|
21
|
+
export function getDomSelectionRect() {
|
|
22
|
+
const domSelection = window.getSelection();
|
|
23
|
+
if (!domSelection || domSelection.isCollapsed || domSelection.rangeCount === 0) {
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
26
|
+
const domRange = domSelection.getRangeAt(0);
|
|
27
|
+
const rect = domRange.getBoundingClientRect();
|
|
28
|
+
if (rect.width === 0 && rect.height === 0) {
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
return {
|
|
32
|
+
top: rect.top,
|
|
33
|
+
bottom: rect.bottom,
|
|
34
|
+
left: rect.left,
|
|
35
|
+
right: rect.right,
|
|
36
|
+
height: rect.height
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
export function isDomSelectionInsideContainer(containerElement) {
|
|
40
|
+
const domSelection = window.getSelection();
|
|
41
|
+
if (!domSelection || domSelection.isCollapsed || domSelection.rangeCount === 0) {
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
|
+
const domRange = domSelection.getRangeAt(0);
|
|
45
|
+
const containerRect = containerElement.getBoundingClientRect();
|
|
46
|
+
if (domRange.startContainer) {
|
|
47
|
+
const node = domRange.startContainer;
|
|
48
|
+
if (!containerElement.contains(node.nodeType === Node.TEXT_NODE ? node.parentNode : node)) {
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
return false;
|
|
54
|
+
}
|
|
55
|
+
const rect = domRange.getBoundingClientRect();
|
|
56
|
+
if (rect.width === 0 && rect.height === 0) {
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
const isHorizontallyVisible = rect.right > containerRect.left && rect.left < containerRect.right;
|
|
60
|
+
const isVerticallyVisible = rect.bottom > containerRect.top && rect.top < containerRect.bottom;
|
|
61
|
+
return isHorizontallyVisible && isVerticallyVisible;
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=position.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"position.js","sourceRoot":"","sources":["../src/position.ts"],"names":[],"mappings":"AAcA,MAAM,UAAU,0BAA0B,CACxC,OAAqF,EACrF,aAAqB,EACrB,cAAsB,EACtB,SAA6C;IAE7C,MAAM,GAAG,GAAG,CAAC,CAAC;IACd,MAAM,UAAU,GAAG,SAAS,EAAE,KAAK,IAAI,GAAG,CAAC;IAC3C,MAAM,WAAW,GAAG,SAAS,EAAE,MAAM,IAAI,GAAG,CAAC;IAE7C,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,UAAU,GAAG,CAAC,CAAC;IAC9E,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,aAAa,GAAG,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC;IAEnE,IAAI,GAAW,CAAC;IAChB,IAAI,SAA4B,CAAC;IAEjC,MAAM,UAAU,GAAG,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;IACnD,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC;IAE/B,IAAI,UAAU,IAAI,WAAW,GAAG,GAAG,IAAI,UAAU,IAAI,UAAU,EAAE,CAAC;QAChE,SAAS,GAAG,OAAO,CAAC;QACpB,GAAG,GAAG,OAAO,CAAC,MAAM,GAAG,GAAG,CAAC;IAC7B,CAAC;SAAM,CAAC;QACN,SAAS,GAAG,OAAO,CAAC;QACpB,GAAG,GAAG,OAAO,CAAC,GAAG,GAAG,WAAW,GAAG,GAAG,CAAC;IACxC,CAAC;IAED,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;IAC3C,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,WAAW,IAAI,YAAY,CAAC,UAAU,KAAK,CAAC,EAAE,CAAC;QAC/E,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,QAAQ,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,QAAQ,CAAC,qBAAqB,EAAE,CAAC;IAE9C,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;QACL,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,MAAM,EAAE,IAAI,CAAC,MAAM;KACpB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,gBAA6B;IACzE,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;IAC3C,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,WAAW,IAAI,YAAY,CAAC,UAAU,KAAK,CAAC,EAAE,CAAC;QAC/E,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,QAAQ,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAC5C,MAAM,aAAa,GAAG,gBAAgB,CAAC,qBAAqB,EAAE,CAAC;IAE/D,IAAI,QAAQ,CAAC,cAAc,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,QAAQ,CAAC,cAAc,CAAC;QACrC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1F,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,IAAI,GAAG,QAAQ,CAAC,qBAAqB,EAAE,CAAC;IAC9C,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1C,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,qBAAqB,GAAG,IAAI,CAAC,KAAK,GAAG,aAAa,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC;IACjG,MAAM,mBAAmB,GAAG,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,aAAa,CAAC,MAAM,CAAC;IAE/F,OAAO,qBAAqB,IAAI,mBAAmB,CAAC;AACtD,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { RangeMapEntry, TextRange } from "./types.js";
|
|
2
|
+
export interface SelectionRangeInfo {
|
|
3
|
+
selectedText: string;
|
|
4
|
+
from: number;
|
|
5
|
+
to: number;
|
|
6
|
+
empty: boolean;
|
|
7
|
+
plainTextOffset: {
|
|
8
|
+
start: number;
|
|
9
|
+
end: number;
|
|
10
|
+
} | null;
|
|
11
|
+
selectedRange: TextRange | null;
|
|
12
|
+
}
|
|
13
|
+
export declare function getSelectionRangeInfo(editor: {
|
|
14
|
+
state: {
|
|
15
|
+
selection: {
|
|
16
|
+
from: number;
|
|
17
|
+
to: number;
|
|
18
|
+
empty: boolean;
|
|
19
|
+
};
|
|
20
|
+
doc: {
|
|
21
|
+
textBetween: (from: number, to: number, separator: string | null, leafText?: string | null | ((leafNode: unknown) => string)) => string;
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
}): SelectionRangeInfo;
|
|
25
|
+
export declare function findOverlappingRangeMapEntries(rangeMap: RangeMapEntry[], plainTextOffset: {
|
|
26
|
+
start: number;
|
|
27
|
+
end: number;
|
|
28
|
+
}): RangeMapEntry[];
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { buildPlainTextPositionMap } from "./tiptapDuplicateHighlight.js";
|
|
2
|
+
export function getSelectionRangeInfo(editor) {
|
|
3
|
+
const { from, to, empty } = editor.state.selection;
|
|
4
|
+
const selectedText = editor.state.doc.textBetween(from, to, "\n");
|
|
5
|
+
let plainTextOffset = null;
|
|
6
|
+
let selectedRange = null;
|
|
7
|
+
if (!empty) {
|
|
8
|
+
const positions = buildPlainTextPositionMap(editor.state.doc);
|
|
9
|
+
const startIdx = positions.indexOf(from);
|
|
10
|
+
const lastIdx = positions.lastIndexOf(to - 1);
|
|
11
|
+
if (startIdx !== -1 && lastIdx !== -1 && lastIdx >= startIdx) {
|
|
12
|
+
const endIdx = lastIdx + 1;
|
|
13
|
+
plainTextOffset = { start: startIdx, end: endIdx };
|
|
14
|
+
selectedRange = {
|
|
15
|
+
start: startIdx,
|
|
16
|
+
end: endIdx,
|
|
17
|
+
matchedText: selectedText
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
return {
|
|
22
|
+
selectedText,
|
|
23
|
+
from,
|
|
24
|
+
to,
|
|
25
|
+
empty,
|
|
26
|
+
plainTextOffset,
|
|
27
|
+
selectedRange
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
export function findOverlappingRangeMapEntries(rangeMap, plainTextOffset) {
|
|
31
|
+
return rangeMap.filter((entry) => {
|
|
32
|
+
const entryStart = entry.textStart;
|
|
33
|
+
const entryEnd = entry.textEnd;
|
|
34
|
+
const selStart = plainTextOffset.start;
|
|
35
|
+
const selEnd = plainTextOffset.end;
|
|
36
|
+
return selStart < entryEnd && selEnd > entryStart;
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=selection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selection.js","sourceRoot":"","sources":["../src/selection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAY1E,MAAM,UAAU,qBAAqB,CAAC,MAKrC;IACC,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC;IACnD,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;IAElE,IAAI,eAAe,GAA0C,IAAI,CAAC;IAClE,IAAI,aAAa,GAAqB,IAAI,CAAC;IAE3C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,SAAS,GAAG,yBAAyB,CAAC,MAAM,CAAC,KAAK,CAAC,GAAU,CAAC,CAAC;QAErE,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,OAAO,GAAG,SAAS,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAE9C,IAAI,QAAQ,KAAK,CAAC,CAAC,IAAI,OAAO,KAAK,CAAC,CAAC,IAAI,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC7D,MAAM,MAAM,GAAG,OAAO,GAAG,CAAC,CAAC;YAC3B,eAAe,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;YAEnD,aAAa,GAAG;gBACd,KAAK,EAAE,QAAQ;gBACf,GAAG,EAAE,MAAM;gBACX,WAAW,EAAE,YAAY;aAC1B,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO;QACL,YAAY;QACZ,IAAI;QACJ,EAAE;QACF,KAAK;QACL,eAAe;QACf,aAAa;KACd,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,8BAA8B,CAC5C,QAAyB,EACzB,eAA+C;IAE/C,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;QAC/B,MAAM,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC;QACnC,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC;QAC/B,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,CAAC;QACvC,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC;QAEnC,OAAO,QAAQ,GAAG,QAAQ,IAAI,MAAM,GAAG,UAAU,CAAC;IACpD,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -29,10 +29,19 @@ interface PlainTextSnapshot {
|
|
|
29
29
|
text: string;
|
|
30
30
|
positions: number[];
|
|
31
31
|
}
|
|
32
|
+
export interface ResolvedPlainTextRange {
|
|
33
|
+
start: number;
|
|
34
|
+
end: number;
|
|
35
|
+
matchedText: string;
|
|
36
|
+
source: "direct" | "fallback";
|
|
37
|
+
}
|
|
32
38
|
export declare const duplicateHighlightPluginKey: PluginKey<DuplicateHighlightState>;
|
|
33
39
|
export declare function buildPlainTextSnapshot(doc: ProseMirrorNode): PlainTextSnapshot;
|
|
34
40
|
export declare function buildPlainTextPositionMap(doc: ProseMirrorNode): number[];
|
|
35
41
|
export declare function mapTextRangeToDocPositions(positions: number[], range: TextRange): MappedRange | null;
|
|
42
|
+
export declare function resolveTextRangeInPlainText(plainText: string, range: TextRange, expectedText?: string | undefined): ResolvedPlainTextRange | null;
|
|
43
|
+
export declare function isTextRangeResolvableInPlainText(plainText: string, range: TextRange, expectedText?: string | undefined): boolean;
|
|
44
|
+
export declare function hasResolvableHighlightInPlainText(plainText: string, highlight: DuplicateHighlight): boolean;
|
|
36
45
|
export declare const DuplicateHighlightExtension: Extension<any, {
|
|
37
46
|
highlights: DuplicateHighlight[];
|
|
38
47
|
}>;
|
|
@@ -2,7 +2,7 @@ import { Extension } from "@tiptap/core";
|
|
|
2
2
|
import { Plugin, PluginKey } from "@tiptap/pm/state";
|
|
3
3
|
import { Decoration, DecorationSet } from "@tiptap/pm/view";
|
|
4
4
|
import { createHighlightClass } from "./colors.js";
|
|
5
|
-
import { normalizeRanges } from "./ranges.js";
|
|
5
|
+
import { normalizeRange, normalizeRanges } from "./ranges.js";
|
|
6
6
|
export const duplicateHighlightPluginKey = new PluginKey("duplicate-highlight");
|
|
7
7
|
export function buildPlainTextSnapshot(doc) {
|
|
8
8
|
const textParts = [];
|
|
@@ -72,6 +72,41 @@ function findClosestTextIndex(text, target, preferredIndex) {
|
|
|
72
72
|
}
|
|
73
73
|
return closestIndex;
|
|
74
74
|
}
|
|
75
|
+
export function resolveTextRangeInPlainText(plainText, range, expectedText = range.matchedText) {
|
|
76
|
+
const normalizedRange = normalizeRange(range);
|
|
77
|
+
if (!normalizedRange) {
|
|
78
|
+
return null;
|
|
79
|
+
}
|
|
80
|
+
const directText = plainText.slice(normalizedRange.start, normalizedRange.end);
|
|
81
|
+
const isDirectRangeInBounds = normalizedRange.end <= plainText.length && directText.length > 0;
|
|
82
|
+
if (isDirectRangeInBounds && (!expectedText || directText === expectedText)) {
|
|
83
|
+
return {
|
|
84
|
+
start: normalizedRange.start,
|
|
85
|
+
end: normalizedRange.end,
|
|
86
|
+
matchedText: expectedText || directText,
|
|
87
|
+
source: "direct"
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
if (!expectedText) {
|
|
91
|
+
return null;
|
|
92
|
+
}
|
|
93
|
+
const fallbackStart = findClosestTextIndex(plainText, expectedText, normalizedRange.start);
|
|
94
|
+
if (fallbackStart < 0) {
|
|
95
|
+
return null;
|
|
96
|
+
}
|
|
97
|
+
return {
|
|
98
|
+
start: fallbackStart,
|
|
99
|
+
end: fallbackStart + expectedText.length,
|
|
100
|
+
matchedText: expectedText,
|
|
101
|
+
source: "fallback"
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
export function isTextRangeResolvableInPlainText(plainText, range, expectedText = range.matchedText) {
|
|
105
|
+
return Boolean(resolveTextRangeInPlainText(plainText, range, expectedText));
|
|
106
|
+
}
|
|
107
|
+
export function hasResolvableHighlightInPlainText(plainText, highlight) {
|
|
108
|
+
return normalizeRanges(highlight.ranges).some((range) => isTextRangeResolvableInPlainText(plainText, range, range.matchedText));
|
|
109
|
+
}
|
|
75
110
|
function getRangeKey(highlight, range, index) {
|
|
76
111
|
return [
|
|
77
112
|
highlight.documentId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tiptapDuplicateHighlight.js","sourceRoot":"","sources":["../src/tiptapDuplicateHighlight.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tiptapDuplicateHighlight.js","sourceRoot":"","sources":["../src/tiptapDuplicateHighlight.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -89,3 +89,15 @@ export interface EditorChangePayload {
|
|
|
89
89
|
plainText: string;
|
|
90
90
|
json?: unknown;
|
|
91
91
|
}
|
|
92
|
+
export interface DocumentSelectionChangePayload {
|
|
93
|
+
documentId: string;
|
|
94
|
+
selectedText: string;
|
|
95
|
+
from: number;
|
|
96
|
+
to: number;
|
|
97
|
+
empty: boolean;
|
|
98
|
+
plainTextOffset: {
|
|
99
|
+
start: number;
|
|
100
|
+
end: number;
|
|
101
|
+
} | null;
|
|
102
|
+
selectedRange: TextRange | null;
|
|
103
|
+
}
|
package/package.json
CHANGED
package/src/style.css
CHANGED
|
@@ -29,3 +29,53 @@
|
|
|
29
29
|
opacity: 0.62;
|
|
30
30
|
border-bottom-style: dashed;
|
|
31
31
|
}
|
|
32
|
+
|
|
33
|
+
.dupdoc-selection-popup {
|
|
34
|
+
position: fixed;
|
|
35
|
+
z-index: 1000;
|
|
36
|
+
background: #ffffff;
|
|
37
|
+
border: 1px solid rgba(15, 23, 42, 0.12);
|
|
38
|
+
border-radius: 12px;
|
|
39
|
+
box-shadow: 0 12px 40px rgba(15, 23, 42, 0.14);
|
|
40
|
+
overflow: auto;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
.dupdoc-selection-popup__header {
|
|
44
|
+
display: flex;
|
|
45
|
+
align-items: center;
|
|
46
|
+
justify-content: space-between;
|
|
47
|
+
padding: 10px 14px;
|
|
48
|
+
border-bottom: 1px solid rgba(15, 23, 42, 0.08);
|
|
49
|
+
font-size: 13px;
|
|
50
|
+
font-weight: 600;
|
|
51
|
+
color: #344054;
|
|
52
|
+
background: #f9fafb;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
.dupdoc-selection-popup__close {
|
|
56
|
+
display: inline-flex;
|
|
57
|
+
align-items: center;
|
|
58
|
+
justify-content: center;
|
|
59
|
+
width: 20px;
|
|
60
|
+
height: 20px;
|
|
61
|
+
border: 0;
|
|
62
|
+
border-radius: 4px;
|
|
63
|
+
color: #667085;
|
|
64
|
+
background: transparent;
|
|
65
|
+
cursor: pointer;
|
|
66
|
+
font-size: 14px;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
.dupdoc-selection-popup__close:hover {
|
|
70
|
+
background: rgba(15, 23, 42, 0.06);
|
|
71
|
+
color: #1f2937;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
.dupdoc-selection-popup__body {
|
|
75
|
+
padding: 12px 14px;
|
|
76
|
+
font-size: 13px;
|
|
77
|
+
line-height: 1.6;
|
|
78
|
+
color: #475467;
|
|
79
|
+
max-height: 60vh;
|
|
80
|
+
overflow: auto;
|
|
81
|
+
}
|