@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 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
@@ -1,5 +1,7 @@
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";
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;
@@ -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":"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"}
@@ -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":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAyC9D,MAAM,CAAC,MAAM,2BAA2B,GAAG,IAAI,SAAS,CAA0B,qBAAqB,CAAC,CAAC;AAEzG,MAAM,UAAU,sBAAsB,CAAC,GAAoB;IACzD,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,MAAM,SAAS,GAAa,EAAE,CAAC;IAE/B,GAAG,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,EAAE;QACjD,gDAAgD;QAChD,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;YACnB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrB,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC9B,CAAC;QAED,SAAS,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE;YAC1C,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACjB,OAAO,IAAI,CAAC;YACd,CAAC;YAED,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;YAC7B,MAAM,WAAW,GAAG,WAAW,GAAG,CAAC,GAAG,WAAW,CAAC;YAElD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;gBACpD,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;gBAClC,SAAS,CAAC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,CAAC;YACtC,CAAC;YAED,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,SAAS;KACV,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,GAAoB;IAC5D,OAAO,sBAAsB,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,SAAmB,EACnB,KAAgB;IAEhB,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACpC,MAAM,oBAAoB,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IAE7E,IAAI,IAAI,KAAK,SAAS,IAAI,oBAAoB,KAAK,SAAS,EAAE,CAAC;QAC7D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,EAAE,GAAG,oBAAoB,GAAG,CAAC,CAAC;IACpC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACzC,CAAC;AAED,SAAS,YAAY,CAAC,GAAoB,EAAE,KAAkB;IAC5D,OAAO,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAoB,EAAE,KAAkB,EAAE,IAAa;IAChF,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,IAAI,CAAC;AAC3C,CAAC;AAED,SAAS,eAAe,CAAC,GAAoB,EAAE,KAAkB,EAAE,IAAa;IAC9E,OAAO,IAAI,IAAI,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,SAAS,CAAC;AACvD,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAY,EAAE,MAAc,EAAE,cAAsB;IAChF,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,CAAC,CAAC;IACZ,CAAC;IAED,IAAI,YAAY,GAAG,CAAC,CAAC,CAAC;IACtB,IAAI,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC;IAC/C,IAAI,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAEvC,OAAO,WAAW,IAAI,CAAC,EAAE,CAAC;QACxB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,cAAc,CAAC,CAAC;QACxD,IAAI,QAAQ,GAAG,eAAe,EAAE,CAAC;YAC/B,YAAY,GAAG,WAAW,CAAC;YAC3B,eAAe,GAAG,QAAQ,CAAC;QAC7B,CAAC;QAED,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC;IACtD,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,2BAA2B,CACzC,SAAiB,EACjB,KAAgB,EAChB,YAAY,GAAG,KAAK,CAAC,WAAW;IAEhC,MAAM,eAAe,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IAC9C,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,eAAe,CAAC,KAAK,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC;IAC/E,MAAM,qBAAqB,GAAG,eAAe,CAAC,GAAG,IAAI,SAAS,CAAC,MAAM,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;IAC/F,IAAI,qBAAqB,IAAI,CAAC,CAAC,YAAY,IAAI,UAAU,KAAK,YAAY,CAAC,EAAE,CAAC;QAC5E,OAAO;YACL,KAAK,EAAE,eAAe,CAAC,KAAK;YAC5B,GAAG,EAAE,eAAe,CAAC,GAAG;YACxB,WAAW,EAAE,YAAY,IAAI,UAAU;YACvC,MAAM,EAAE,QAAQ;SACjB,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,aAAa,GAAG,oBAAoB,CAAC,SAAS,EAAE,YAAY,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC;IAC3F,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;QACL,KAAK,EAAE,aAAa;QACpB,GAAG,EAAE,aAAa,GAAG,YAAY,CAAC,MAAM;QACxC,WAAW,EAAE,YAAY;QACzB,MAAM,EAAE,UAAU;KACnB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,gCAAgC,CAC9C,SAAiB,EACjB,KAAgB,EAChB,YAAY,GAAG,KAAK,CAAC,WAAW;IAEhC,OAAO,OAAO,CAAC,2BAA2B,CAAC,SAAS,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC;AAC9E,CAAC;AAED,MAAM,UAAU,iCAAiC,CAC/C,SAAiB,EACjB,SAA6B;IAE7B,OAAO,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CACtD,gCAAgC,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,CACtE,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,SAA6B,EAAE,KAAgB,EAAE,KAAa;IACjF,OAAO;QACL,SAAS,CAAC,UAAU;QACpB,SAAS,CAAC,WAAW;QACrB,KAAK,CAAC,OAAO,IAAI,eAAe;QAChC,KAAK,CAAC,KAAK;QACX,KAAK,CAAC,GAAG;QACT,KAAK;KACN,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,SAAS,kBAAkB,CACzB,SAA6B,EAC7B,KAAgB;IAEhB,OAAO;QACL,KAAK,EAAE,oBAAoB,CAAC,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC;QACtF,mBAAmB,EAAE,SAAS,CAAC,WAAW;QAC1C,mBAAmB,EAAE,SAAS,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC;QACzF,aAAa,EAAE,SAAS,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM;QAC/C,oBAAoB,EAAE,SAAS,CAAC,YAAY,IAAI,KAAK,CAAC,YAAY;QAClE,mBAAmB,EAAE,SAAS,CAAC,WAAW;QAC1C,eAAe,EAAE,SAAS,CAAC,YAAY,EAAE,OAAO,IAAI,KAAK,CAAC,YAAY,EAAE,OAAO;KAChF,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CACnB,GAAoB,EACpB,QAA2B,EAC3B,SAA6B,EAC7B,KAAgB,EAChB,KAAa,EACb,YAAY,GAAG,KAAK,CAAC,WAAW;IAEhC,MAAM,WAAW,GAAG,0BAA0B,CAAC,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC1E,IAAI,WAAW,IAAI,iBAAiB,CAAC,GAAG,EAAE,WAAW,EAAE,YAAY,CAAC,EAAE,CAAC;QACrE,OAAO;YACL,GAAG,EAAE,WAAW,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC;YACzC,IAAI,EAAE,WAAW,CAAC,IAAI;YACtB,EAAE,EAAE,WAAW,CAAC,EAAE;YAClB,KAAK,EAAE,kBAAkB,CAAC,SAAS,EAAE,KAAK,CAAC;YAC3C,YAAY,EAAE,eAAe,CAAC,GAAG,EAAE,WAAW,EAAE,YAAY,CAAC;YAC7D,KAAK,EAAE,IAAI;SACZ,CAAC;IACJ,CAAC;IAED,MAAM,aAAa,GAAG,oBAAoB,CAAC,QAAQ,CAAC,IAAI,EAAE,YAAY,IAAI,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IAC3F,MAAM,aAAa,GACjB,aAAa,IAAI,CAAC,IAAI,YAAY;QAChC,CAAC,CAAC,0BAA0B,CAAC,QAAQ,CAAC,SAAS,EAAE;YAC7C,GAAG,KAAK;YACR,KAAK,EAAE,aAAa;YACpB,GAAG,EAAE,aAAa,GAAG,YAAY,CAAC,MAAM;SACzC,CAAC;QACJ,CAAC,CAAC,IAAI,CAAC;IAEX,IAAI,CAAC,aAAa,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,aAAa,EAAE,YAAY,CAAC,EAAE,CAAC;QAC3E,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;QACL,GAAG,EAAE,WAAW,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC;QACzC,IAAI,EAAE,aAAa,CAAC,IAAI;QACxB,EAAE,EAAE,aAAa,CAAC,EAAE;QACpB,KAAK,EAAE,kBAAkB,CAAC,SAAS,EAAE,KAAK,CAAC;QAC3C,YAAY,EAAE,eAAe,CAAC,GAAG,EAAE,aAAa,EAAE,YAAY,CAAC;QAC/D,KAAK,EAAE,IAAI;KACZ,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,GAAoB,EAAE,OAA0B,EAAE,UAAoB;IAC9F,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;IACzC,MAAM,WAAW,GAAG,OAAO;SACxB,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,IAAI,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC;SAC3F,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAE5E,OAAO,aAAa,CAAC,MAAM,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;AAChD,CAAC;AAED,SAAS,mBAAmB,CAC1B,GAAoB,EACpB,UAAgC,EAChC,kBAAmD,EAAE;IAErD,MAAM,QAAQ,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAG,EAAE,GAAG,eAAe,EAAE,CAAC;IACvC,MAAM,UAAU,GAAa,EAAE,CAAC;IAEhC,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,MAAM,MAAM,GAAG,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAEjD,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;YAC9C,MAAM,GAAG,GAAG,WAAW,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;YACjD,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;YACpC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAErB,IAAI,cAAc,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;gBAC5C,MAAM,cAAc,GAAG,YAAY,CAAC,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,CAAC,YAAY,CAAC,CAAC;gBACzG,IAAI,cAAc,EAAE,CAAC;oBACnB,OAAO,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC;gBAChC,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,GAAG,CAAC,GAAG;wBACb,GAAG,cAAc;wBACjB,KAAK,EAAE,kBAAkB,CAAC,SAAS,EAAE,KAAK,CAAC;qBAC5C,CAAC;gBACJ,CAAC;gBACD,SAAS;YACX,CAAC;YAED,IAAI,cAAc,EAAE,CAAC;gBACnB,MAAM,aAAa,GAAG;oBACpB,GAAG,cAAc;oBACjB,KAAK,EAAE,kBAAkB,CAAC,SAAS,EAAE,KAAK,CAAC;iBAC5C,CAAC;gBACF,IAAI,iBAAiB,CAAC,GAAG,EAAE,aAAa,EAAE,aAAa,CAAC,YAAY,CAAC,EAAE,CAAC;oBACtE,OAAO,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC;gBAC/B,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,GAAG,CAAC;wBACV,YAAY,CAAC,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,CAAC,YAAY,CAAC,IAAI;4BAClF,GAAG,aAAa;4BAChB,KAAK,EAAE,KAAK;yBACb,CAAC;gBACN,CAAC;gBACD,SAAS;YACX,CAAC;YAED,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;YACpE,IAAI,MAAM,EAAE,CAAC;gBACX,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;YACxB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO;QACL,WAAW,EAAE,gBAAgB,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC;QACtE,OAAO;QACP,UAAU;KACX,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CACjB,GAAoB,EACpB,OAAwC,EACxC,UAAoB,EACpB,SAA8C;IAE9C,MAAM,WAAW,GAAoC,EAAE,CAAC;IACxD,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;IAEzC,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACpD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3B,WAAW,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;YAC1B,SAAS;QACX,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAClB,WAAW,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;YAC1B,SAAS;QACX,CAAC;QAED,MAAM,UAAU,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACvD,MAAM,QAAQ,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QACpD,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC;QAC5B,MAAM,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC;QACxB,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,IAAI,EAAE,IAAI,IAAI,CAAC;QACxE,MAAM,YAAY,GAAG;YACnB,GAAG,MAAM;YACT,IAAI;YACJ,EAAE;SACH,CAAC;QACF,MAAM,WAAW,GAAG,CAAC,iBAAiB,CAAC,GAAG,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;QAE/E,WAAW,CAAC,GAAG,CAAC,GAAG;YACjB,GAAG,YAAY;YACf,KAAK,EAAE,CAAC,UAAU,IAAI,EAAE,GAAG,IAAI,IAAI,EAAE,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,WAAW;SAC1E,CAAC;IACJ,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,MAAM,CAAC,MAAM,2BAA2B,GAAG,SAAS,CAAC,MAAM,CAAC;IAC1D,IAAI,EAAE,oBAAoB;IAE1B,UAAU;QACR,OAAO;YACL,UAAU,EAAE,EAA0B;SACvC,CAAC;IACJ,CAAC;IAED,WAAW;QACT,OAAO;YACL,sBAAsB,EACpB,CAAC,UAAU,EAAE,EAAE,CACf,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;gBACnB,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,UAAU,CAAC;gBAErC,IAAI,QAAQ,EAAE,CAAC;oBACb,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,2BAA2B,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;gBACpE,CAAC;gBAED,OAAO,IAAI,CAAC;YACd,CAAC;SACJ,CAAC;IACJ,CAAC;IAED,qBAAqB;QACnB,OAAO;YACL,IAAI,MAAM,CAAC;gBACT,GAAG,EAAE,2BAA2B;gBAChC,KAAK,EAAE;oBACL,IAAI,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,mBAAmB,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;oBAC3E,KAAK,EAAE,CAAC,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE;wBAC9C,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,2BAA2B,CAEtC,CAAC;wBAEd,IAAI,IAAI,EAAE,UAAU,EAAE,CAAC;4BACrB,OAAO,mBAAmB,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;wBACjF,CAAC;wBAED,MAAM,OAAO,GAAG,UAAU,CAAC,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,UAAU,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC;wBAClG,OAAO;4BACL,GAAG,WAAW;4BACd,WAAW,EAAE,gBAAgB,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC,UAAU,CAAC;4BAC3F,OAAO;yBACR,CAAC;oBACJ,CAAC;iBACF;gBACD,KAAK,EAAE;oBACL,WAAW,CAAC,KAAK;wBACf,OAAO,2BAA2B,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC;oBAClE,CAAC;iBACF;aACF,CAAC;SACH,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jhl548/duplicate-doc-core",
3
- "version": "0.1.2",
3
+ "version": "0.1.3",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
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
+ }