@alpaca-editor/core 1.0.3818 → 1.0.3820
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/dist/editor/page-editor-chrome/CommentHighlightings.js +10 -5
- package/dist/editor/page-editor-chrome/CommentHighlightings.js.map +1 -1
- package/dist/editor/page-editor-chrome/InlineEditor.js +97 -14
- package/dist/editor/page-editor-chrome/InlineEditor.js.map +1 -1
- package/dist/editor/page-editor-chrome/SuggestionHighlighting.d.ts +6 -0
- package/dist/editor/page-editor-chrome/SuggestionHighlighting.js +219 -0
- package/dist/editor/page-editor-chrome/SuggestionHighlighting.js.map +1 -0
- package/dist/editor/reviews/Comments.js +13 -4
- package/dist/editor/reviews/Comments.js.map +1 -1
- package/dist/editor/sidebar/ComponentTree.js +25 -23
- package/dist/editor/sidebar/ComponentTree.js.map +1 -1
- package/dist/styles.css +7 -0
- package/package.json +1 -1
- package/src/editor/page-editor-chrome/CommentHighlightings.tsx +17 -2
- package/src/editor/page-editor-chrome/InlineEditor.tsx +130 -16
- package/src/editor/page-editor-chrome/SuggestionHighlighting.tsx +300 -0
- package/src/editor/reviews/Comments.tsx +37 -4
- package/src/editor/sidebar/ComponentTree.tsx +57 -47
|
@@ -1,15 +1,20 @@
|
|
|
1
|
-
import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { useEffect, useState } from "react";
|
|
3
3
|
import { useEditContext } from "../client/editContext";
|
|
4
4
|
import { CommentHighlighting } from "./CommentHighlighting";
|
|
5
|
+
import { SuggestionHighlighting } from "./SuggestionHighlighting";
|
|
5
6
|
export function CommentHighlightings({ scale, iframe, }) {
|
|
6
7
|
const editContext = useEditContext();
|
|
7
8
|
const [comments, setComments] = useState([]);
|
|
9
|
+
const [suggestions, setSuggestions] = useState([]);
|
|
8
10
|
useEffect(() => {
|
|
9
11
|
setComments(editContext?.comments || []);
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
setSuggestions(editContext?.suggestedEdits.filter((x) => x.status === "Pending") || []);
|
|
13
|
+
}, [editContext?.comments, editContext?.suggestedEdits]);
|
|
14
|
+
return (_jsxs(_Fragment, { children: [comments
|
|
15
|
+
.filter((x) => !x.isResolved)
|
|
16
|
+
.map((comment) => (_jsx(CommentHighlighting, { iframe: iframe, scale: scale, comment: comment }, comment.id))), suggestions
|
|
17
|
+
.filter((x) => x.status !== "approved" && x.status !== "rejected")
|
|
18
|
+
.map((suggestion) => (_jsx(SuggestionHighlighting, { iframe: iframe, scale: scale, suggestion: suggestion }, suggestion.id)))] }));
|
|
14
19
|
}
|
|
15
20
|
//# sourceMappingURL=CommentHighlightings.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CommentHighlightings.js","sourceRoot":"","sources":["../../../src/editor/page-editor-chrome/CommentHighlightings.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"CommentHighlightings.js","sourceRoot":"","sources":["../../../src/editor/page-editor-chrome/CommentHighlightings.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAIlE,MAAM,UAAU,oBAAoB,CAAC,EACnC,KAAK,EACL,MAAM,GAIP;IACC,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAY,EAAE,CAAC,CAAC;IACxD,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAkB,EAAE,CAAC,CAAC;IAEpE,SAAS,CAAC,GAAG,EAAE;QACb,WAAW,CAAC,WAAW,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC;QACzC,cAAc,CACZ,WAAW,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,IAAI,EAAE,CACxE,CAAC;IACJ,CAAC,EAAE,CAAC,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,cAAc,CAAC,CAAC,CAAC;IAEzD,OAAO,CACL,8BACG,QAAQ;iBACN,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;iBAC5B,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAChB,KAAC,mBAAmB,IAClB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,KAAK,EAEZ,OAAO,EAAE,OAAO,IADX,OAAO,CAAC,EAAE,CAEf,CACH,CAAC,EACH,WAAW;iBACT,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,UAAU,IAAI,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC;iBACjE,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CACnB,KAAC,sBAAsB,IACrB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,KAAK,EAEZ,UAAU,EAAE,UAAU,IADjB,UAAU,CAAC,EAAE,CAElB,CACH,CAAC,IACH,CACJ,CAAC;AACJ,CAAC"}
|
|
@@ -58,6 +58,7 @@ export function InlineEditor({ pageViewContext, compareView, }) {
|
|
|
58
58
|
element.setAttribute("contenteditable", "true");
|
|
59
59
|
mutationObserverRef.current = new MutationObserver(() => {
|
|
60
60
|
debouncedSetFieldvalue(isRichText ? element.innerHTML : element.innerText, fieldId, fieldName, itemId, language, version);
|
|
61
|
+
// getCompletionDebounced();
|
|
61
62
|
});
|
|
62
63
|
element.focus();
|
|
63
64
|
mutationObserverRef.current.observe(element, {
|
|
@@ -76,18 +77,95 @@ export function InlineEditor({ pageViewContext, compareView, }) {
|
|
|
76
77
|
}, [context?.inlineEditingFieldElement]);
|
|
77
78
|
function saveCaretPosition(editableElement) {
|
|
78
79
|
const selection = pageViewContext.editorIframeRef.current?.contentWindow?.getSelection();
|
|
79
|
-
if (selection
|
|
80
|
-
selection.rangeCount
|
|
81
|
-
editableElement.contains(selection.anchorNode)) {
|
|
82
|
-
return
|
|
80
|
+
if (!selection ||
|
|
81
|
+
selection.rangeCount === 0 ||
|
|
82
|
+
!editableElement.contains(selection.anchorNode)) {
|
|
83
|
+
return null;
|
|
83
84
|
}
|
|
84
|
-
|
|
85
|
+
// Get the current range
|
|
86
|
+
const range = selection.getRangeAt(0);
|
|
87
|
+
const startNode = range.startContainer;
|
|
88
|
+
const startOffset = range.startOffset;
|
|
89
|
+
// Calculate absolute position from the beginning of the element
|
|
90
|
+
let absoluteOffset = 0;
|
|
91
|
+
// Function to calculate text length before a node
|
|
92
|
+
function getTextLengthBefore(node) {
|
|
93
|
+
let length = 0;
|
|
94
|
+
// Process all nodes before this one in current parent
|
|
95
|
+
let currentNode = node.parentNode?.firstChild;
|
|
96
|
+
while (currentNode && currentNode !== node) {
|
|
97
|
+
length += currentNode.textContent?.length || 0;
|
|
98
|
+
currentNode = currentNode.nextSibling;
|
|
99
|
+
}
|
|
100
|
+
// If the node's parent isn't the editable element, add lengths from higher levels
|
|
101
|
+
if (node.parentNode &&
|
|
102
|
+
node.parentNode !== editableElement &&
|
|
103
|
+
node.parentNode.parentNode) {
|
|
104
|
+
length += getTextLengthBefore(node.parentNode);
|
|
105
|
+
}
|
|
106
|
+
return length;
|
|
107
|
+
}
|
|
108
|
+
// If we're in a text node directly under the editable element
|
|
109
|
+
if (startNode.nodeType === Node.TEXT_NODE) {
|
|
110
|
+
absoluteOffset = getTextLengthBefore(startNode) + startOffset;
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
// Handle cases where selection is on an element node
|
|
114
|
+
absoluteOffset = getTextLengthBefore(startNode);
|
|
115
|
+
}
|
|
116
|
+
console.log("Saved position:", absoluteOffset, "startNode:", startNode, "offset:", startOffset);
|
|
117
|
+
return { node: startNode, offset: absoluteOffset };
|
|
85
118
|
}
|
|
86
|
-
function restoreCaretPosition(
|
|
87
|
-
if (
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
119
|
+
function restoreCaretPosition(element, position) {
|
|
120
|
+
if (position === undefined || position === null)
|
|
121
|
+
return;
|
|
122
|
+
const selection = pageViewContext.editorIframeRef.current?.contentWindow?.getSelection();
|
|
123
|
+
if (!selection)
|
|
124
|
+
return;
|
|
125
|
+
selection.removeAllRanges();
|
|
126
|
+
// Find the appropriate text node and offset
|
|
127
|
+
let currentNode = element.firstChild;
|
|
128
|
+
let currentPos = 0;
|
|
129
|
+
// Helper function to find the right node and position
|
|
130
|
+
function findNodeAtPosition(node, targetPos) {
|
|
131
|
+
while (node) {
|
|
132
|
+
// Text node case
|
|
133
|
+
if (node.nodeType === Node.TEXT_NODE) {
|
|
134
|
+
const length = node.textContent?.length || 0;
|
|
135
|
+
if (currentPos + length >= targetPos) {
|
|
136
|
+
return { node, offset: targetPos - currentPos };
|
|
137
|
+
}
|
|
138
|
+
currentPos += length;
|
|
139
|
+
}
|
|
140
|
+
// Element node case - check its children
|
|
141
|
+
else if (node.nodeType === Node.ELEMENT_NODE && node.hasChildNodes()) {
|
|
142
|
+
const result = findNodeAtPosition(node.firstChild, targetPos);
|
|
143
|
+
if (result)
|
|
144
|
+
return result;
|
|
145
|
+
}
|
|
146
|
+
node = node.nextSibling;
|
|
147
|
+
}
|
|
148
|
+
return null;
|
|
149
|
+
}
|
|
150
|
+
const result = findNodeAtPosition(currentNode, position);
|
|
151
|
+
// If we found a valid node, set the range
|
|
152
|
+
if (result) {
|
|
153
|
+
const range = new Range();
|
|
154
|
+
range.setStart(result.node, result.offset);
|
|
155
|
+
range.setEnd(result.node, result.offset);
|
|
156
|
+
selection.addRange(range);
|
|
157
|
+
console.log("Restored position at node:", result.node, "offset:", result.offset);
|
|
158
|
+
}
|
|
159
|
+
else if (element.firstChild) {
|
|
160
|
+
// Fallback to end of content if position is too large
|
|
161
|
+
const lastNode = element.lastChild;
|
|
162
|
+
if (lastNode && lastNode.nodeType === Node.TEXT_NODE) {
|
|
163
|
+
const range = new Range();
|
|
164
|
+
range.setStart(lastNode, lastNode.textContent?.length || 0);
|
|
165
|
+
range.setEnd(lastNode, lastNode.textContent?.length || 0);
|
|
166
|
+
selection.addRange(range);
|
|
167
|
+
console.log("Fallback: Restored to end of content");
|
|
168
|
+
}
|
|
91
169
|
}
|
|
92
170
|
}
|
|
93
171
|
useEffect(() => {
|
|
@@ -139,6 +217,8 @@ export function InlineEditor({ pageViewContext, compareView, }) {
|
|
|
139
217
|
s.mainItemLanguage === language &&
|
|
140
218
|
s.mainItemId === pageViewContext.pageItemDescriptor?.id &&
|
|
141
219
|
s.mainItemVersion === version);
|
|
220
|
+
if (!fieldSuggestions.length)
|
|
221
|
+
return;
|
|
142
222
|
// Sort suggestions in chronological order (oldest first).
|
|
143
223
|
fieldSuggestions.sort((a, b) => new Date(a.created).getTime() - new Date(b.created).getTime());
|
|
144
224
|
// Apply suggestions sequentially to generate the merged value.
|
|
@@ -196,8 +276,9 @@ export function InlineEditor({ pageViewContext, compareView, }) {
|
|
|
196
276
|
const element = context?.inlineEditingFieldElement;
|
|
197
277
|
if (!element)
|
|
198
278
|
return;
|
|
199
|
-
const
|
|
200
|
-
|
|
279
|
+
const savedPosition = saveCaretPosition(element);
|
|
280
|
+
const start = savedPosition?.offset || 0;
|
|
281
|
+
console.log("saved position:", start);
|
|
201
282
|
const fieldId = element.getAttribute("data-fieldid");
|
|
202
283
|
const itemId = element.getAttribute("data-itemid");
|
|
203
284
|
const language = element.getAttribute("data-language");
|
|
@@ -247,8 +328,10 @@ export function InlineEditor({ pageViewContext, compareView, }) {
|
|
|
247
328
|
element.innerHTML = baseValue;
|
|
248
329
|
}
|
|
249
330
|
}
|
|
250
|
-
console.log("restoring caret position",
|
|
251
|
-
|
|
331
|
+
console.log("restoring caret position", savedPosition);
|
|
332
|
+
setTimeout(() => {
|
|
333
|
+
restoreCaretPosition(element, start);
|
|
334
|
+
}, 0);
|
|
252
335
|
}
|
|
253
336
|
updateFocusedFieldContent();
|
|
254
337
|
}, [context?.inlineEditingFieldElement]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InlineEditor.js","sourceRoot":"","sources":["../../../src/editor/page-editor-chrome/InlineEditor.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EACL,cAAc,EACd,wBAAwB,EACxB,iBAAiB,GAClB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,6BAA6B,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAEvE,OAAO,EAAE,UAAU,EAAuB,SAAS,EAAE,MAAM,MAAM,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,MAAM,CAAC;AAEnC,MAAM,UAAU,YAAY,CAAC,EAC3B,eAAe,EACf,WAAW,GAIZ;IACC,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;IACjC,MAAM,UAAU,GAAG,iBAAiB,EAAE,CAAC;IACvC,MAAM,qBAAqB,GAAG,wBAAwB,EAAE,CAAC;IAEzD,IAAI,CAAC,OAAO;QAAE,OAAO;IAErB,MAAM,mBAAmB,GAAG,MAAM,CAA0B,IAAI,CAAC,CAAC;IAElE,MAAM,sBAAsB,GAAG,oBAAoB,CACjD,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE;QACvD,IAAI,kBAAkB,GAAG,qBAAqB,EAAE,cAAc,CAAC,IAAI,CACjE,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,OAAO,KAAK,OAAO;YACrB,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,MAAM;YACpB,CAAC,CAAC,IAAI,CAAC,QAAQ,KAAK,QAAQ;YAC5B,CAAC,CAAC,IAAI,CAAC,OAAO,KAAK,OAAO,CAC7B,EAAE,KAAK,CAAC;QAET,IAAI,kBAAkB,KAAK,KAAK;YAAE,OAAO;QAEzC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,SAAS,CAAC;YACvC,KAAK,EAAE;gBACL,OAAO;gBACP,SAAS,EAAE,SAAS,IAAI,SAAS;gBACjC,IAAI,EAAE;oBACJ,EAAE,EAAE,MAAM;oBACV,QAAQ;oBACR,OAAO;iBACR;aACF;YACD,OAAO,EAAE,MAAM;YACf,KAAK,EAAE,KAAK;SACb,CAAC,CAAC;IACL,CAAC,EACD,OAAO,CAAC,aAAa,CAAC,0BAA0B,CACjD,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,OAAO,IAAI,WAAW,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS;YAAE,OAAO;QAClE,MAAM,OAAO,GAAG,OAAO,CAAC,yBAAyB,CAAC;QAElD,MAAM,gBAAgB,GACpB,eAAe,CAAC,eAAe,CAAC,OAAO,EAAE,aAAa,EAAE,QAAQ,CAAC,gBAAgB,CAC/E,0BAA0B,CAC3B,CAAC;QAEJ,gBAAgB,EAAE,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YACpC,IAAI,OAAO,KAAK,OAAO,CAAC,yBAAyB;gBAC/C,OAAO,CAAC,YAAY,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;QAEH,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;YACrD,MAAM,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;YACzD,MAAM,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;YACnD,MAAM,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;YACvD,MAAM,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;YACzD,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAChE,MAAM,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,kBAAkB,CAAC,KAAK,MAAM,CAAC;YAEvE,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO;gBAAE,OAAO;YAEzD,MAAM,eAAe,GAAG,6BAA6B,CAAC,OAAO,CAAC,CAAC;YAE/D,MAAM,WAAW,GAAG,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;YAE3D,IAAI,CAAC,WAAW;gBAAE,OAAO;YAEzB,OAAO,CAAC,YAAY,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;YAEhD,mBAAmB,CAAC,OAAO,GAAG,IAAI,gBAAgB,CAAC,GAAG,EAAE;gBACtD,sBAAsB,CACpB,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,EAClD,OAAO,EACP,SAAS,EACT,MAAM,EACN,QAAQ,EACR,OAAO,CACR,CAAC;YACJ,CAAC,CAAC,CAAC;YAEH,OAAO,CAAC,KAAK,EAAE,CAAC;YAEhB,mBAAmB,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE;gBAC3C,SAAS,EAAE,IAAI,EAAE,kCAAkC;gBACnD,OAAO,EAAE,IAAI,EAAE,kCAAkC;gBACjD,aAAa,EAAE,IAAI,EAAE,uBAAuB;gBAC5C,sEAAsE;aACvE,CAAC,CAAC;QACL,CAAC;QACD,OAAO,GAAG,EAAE;YACV,IAAI,mBAAmB,CAAC,OAAO,EAAE,CAAC;gBAChC,mBAAmB,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;gBACzC,mBAAmB,CAAC,OAAO,GAAG,IAAI,CAAC;YACrC,CAAC;QACH,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,OAAO,EAAE,yBAAyB,CAAC,CAAC,CAAC;IAEzC,SAAS,iBAAiB,CAAC,eAA4B;QACrD,MAAM,SAAS,GACb,eAAe,CAAC,eAAe,CAAC,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,CAAC;QACzE,IACE,SAAS;YACT,SAAS,CAAC,UAAU,GAAG,CAAC;YACxB,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,EAC9C,CAAC;YACD,OAAO,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACjC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,SAAS,oBAAoB,CAAC,KAAmB;QAC/C,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,SAAS,GACb,eAAe,CAAC,eAAe,CAAC,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,CAAC;YACzE,SAAS,EAAE,eAAe,EAAE,CAAC;YAC7B,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,2BAA2B,GAAG,KAAK,IAAI,EAAE;YAC7C,MAAM,YAAY,GAChB,eAAe,CAAC,eAAe,CAAC,OAAO,EAAE,aAAa,CAAC;YACzD,IAAI,CAAC,YAAY;gBAAE,OAAO;YAC1B,MAAM,GAAG,GAAG,YAAY,CAAC,QAAQ,CAAC;YAElC,+CAA+C;YAC/C,MAAM,aAAa,GAAG,GAAG,CAAC,gBAAgB,CACxC,0DAA0D,CAC3D,CAAC;YAEF,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;gBACtC,oDAAoD;gBACpD,IAAI,OAAO,KAAK,OAAO,CAAC,yBAAyB;oBAAE,OAAO;gBAE1D,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;gBACrD,MAAM,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;gBACnD,MAAM,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;gBACvD,MAAM,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;gBACxD,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ,IAAI,CAAC,UAAU;oBAAE,OAAO;gBAC5D,MAAM,OAAO,GAAG,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;gBAEzC,4BAA4B;gBAC5B,MAAM,UAAU,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;gBAErD,8CAA8C;gBAC9C,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;gBACrE,IAAI,CAAC,UAAU;oBAAE,OAAO;gBAExB,oCAAoC;gBACpC,MAAM,eAAe,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAC5C,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAC7B,CAAC;gBACF,IAAI,aAAa,GAAG,eAAe;oBACjC,CAAC,CAAC,eAAe,CAAC,QAAQ,IAAI,EAAE;oBAChC,CAAC,CAAC,EAAE,CAAC;gBAEP,oDAAoD;gBACpD,MAAM,QAAQ,GAAG,qBAAqB,EAAE,cAAc,CAAC,IAAI,CACzD,CAAC,GAAQ,EAAE,EAAE,CACX,GAAG,CAAC,OAAO,KAAK,OAAO;oBACvB,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,MAAM;oBACtB,GAAG,CAAC,IAAI,CAAC,QAAQ,KAAK,QAAQ;oBAC9B,GAAG,CAAC,IAAI,CAAC,OAAO,KAAK,OAAO,CAC/B,CAAC;gBACF,IAAI,QAAQ,EAAE,CAAC;oBACb,aAAa,GAAG,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC;gBACvC,CAAC;gBAED,8DAA8D;gBAC9D,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC;oBAChC,OAAO,CAAC,SAAS,GAAG,aAAa,CAAC;oBAClC,OAAO;gBACT,CAAC;gBAED,oDAAoD;gBACpD,MAAM,gBAAgB,GAAG,OAAO,CAAC,cAAc,CAAC,MAAM,CACpD,CAAC,CAAM,EAAE,EAAE,CACT,CAAC,CAAC,OAAO,KAAK,OAAO;oBACrB,CAAC,CAAC,MAAM,KAAK,MAAM;oBACnB,CAAC,CAAC,gBAAgB,KAAK,QAAQ;oBAC/B,CAAC,CAAC,UAAU,KAAK,eAAe,CAAC,kBAAkB,EAAE,EAAE;oBACvD,CAAC,CAAC,eAAe,KAAK,OAAO,CAChC,CAAC;gBAEF,0DAA0D;gBAC1D,gBAAgB,CAAC,IAAI,CACnB,CAAC,CAAM,EAAE,CAAM,EAAE,EAAE,CACjB,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAChE,CAAC;gBAEF,+DAA+D;gBAC/D,IAAI,WAAW,GAAG,aAAa,CAAC;gBAChC,KAAK,MAAM,UAAU,IAAI,gBAAgB,EAAE,CAAC;oBAC1C,4EAA4E;oBAC5E,MAAM,KAAK,GAAG,WAAW,CACvB,OAAO,EACP,UAAU,CAAC,QAAQ,EACnB,UAAU,CAAC,QAAQ,CACpB,CAAC;oBACF,MAAM,gBAAgB,GAAG,UAAU,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;oBACxD,IACE,gBAAgB,KAAK,KAAK;wBAC1B,OAAO,gBAAgB,KAAK,QAAQ,EACpC,CAAC;wBACD,WAAW,GAAG,gBAAgB,CAAC;oBACjC,CAAC;oBACD,oDAAoD;gBACtD,CAAC;gBAED,gEAAgE;gBAChE,IAAI,CAAC,OAAO,CAAC,sBAAsB,EAAE,CAAC;oBACpC,OAAO,CAAC,SAAS,GAAG,WAAW,CAAC;oBAChC,OAAO;gBACT,CAAC;gBAED,mEAAmE;gBACnE,MAAM,SAAS,GAAG,SAAS,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;gBAExD,mCAAmC;gBACnC,IAAI,QAAQ,GAAG,EAAE,CAAC;gBAClB,SAAS,CAAC,OAAO,CAAC,CAAC,IAAS,EAAE,EAAE;oBAC9B,IAAI,KAAK,GAAG,EAAE,CAAC;oBACf,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;wBACf,KAAK,GAAG,eAAe,CAAC;oBAC1B,CAAC;yBAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;wBACxB,KAAK,GAAG,4CAA4C,CAAC;oBACvD,CAAC;yBAAM,CAAC;wBACN,KAAK,GAAG,cAAc,CAAC;oBACzB,CAAC;oBACD,2CAA2C;oBAC3C,QAAQ,IAAI,gBAAgB,KAAK,KAAK,IAAI,CAAC,KAAK,SAAS,CAAC;gBAC5D,CAAC,CAAC,CAAC;gBAEH,uDAAuD;gBACvD,OAAO,CAAC,SAAS,GAAG,QAAQ,CAAC;YAC/B,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,2BAA2B,EAAE,CAAC;IAChC,CAAC,EAAE;QACD,qBAAqB,EAAE,cAAc;QACrC,OAAO,EAAE,eAAe,CAAC,QAAQ;QACjC,OAAO,EAAE,yBAAyB;QAClC,OAAO,EAAE,kBAAkB;QAC3B,OAAO,EAAE,cAAc;QACvB,eAAe,CAAC,kBAAkB;QAClC,OAAO,CAAC,QAAQ,CAAC,IAAI;QACrB,OAAO,CAAC,sBAAsB;KAC/B,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,KAAK,UAAU,yBAAyB;YACtC,MAAM,OAAO,GAAG,OAAO,EAAE,yBAAyB,CAAC;YACnD,IAAI,CAAC,OAAO;gBAAE,OAAO;YAErB,MAAM,UAAU,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;YAC9C,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;YAE/C,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;YACrD,MAAM,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;YACnD,MAAM,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;YACvD,MAAM,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;YACxD,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ,IAAI,CAAC,UAAU;gBAAE,OAAO;YAE5D,MAAM,OAAO,GAAG,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;YACzC,MAAM,UAAU,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;YAErD,wDAAwD;YACxD,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YACrE,IAAI,CAAC,UAAU;gBAAE,OAAO;YACxB,8CAA8C;YAC9C,MAAM,eAAe,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAC5C,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAC7B,CAAC;YACF,IAAI,SAAS,GAAG,eAAe,CAAC,CAAC,CAAC,eAAe,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAEtE,uDAAuD;YACvD,MAAM,QAAQ,GAAG,qBAAqB,EAAE,cAAc,CAAC,IAAI,CACzD,CAAC,GAAQ,EAAE,EAAE,CACX,GAAG,CAAC,OAAO,KAAK,OAAO;gBACvB,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,MAAM;gBACtB,GAAG,CAAC,IAAI,CAAC,QAAQ,KAAK,QAAQ;gBAC9B,GAAG,CAAC,IAAI,CAAC,OAAO,KAAK,OAAO,CAC/B,CAAC;YACF,IAAI,QAAQ,EAAE,CAAC;gBACb,SAAS,GAAG,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC;YACnC,CAAC;YAED,uEAAuE;YAEvE,IAAI,OAAO,CAAC,kBAAkB,IAAI,OAAO,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;gBACjE,MAAM,gBAAgB,GAAG,OAAO,CAAC,cAAc,CAAC,MAAM,CACpD,CAAC,CAAM,EAAE,EAAE,CACT,CAAC,CAAC,OAAO,KAAK,OAAO;oBACrB,CAAC,CAAC,MAAM,KAAK,MAAM;oBACnB,CAAC,CAAC,gBAAgB,KAAK,QAAQ;oBAC/B,CAAC,CAAC,eAAe,KAAK,OAAO,CAChC,CAAC;gBACF,0DAA0D;gBAC1D,gBAAgB,CAAC,IAAI,CACnB,CAAC,CAAM,EAAE,CAAM,EAAE,EAAE,CACjB,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAChE,CAAC;gBAEF,IAAI,WAAW,GAAG,SAAS,CAAC;gBAC5B,KAAK,MAAM,UAAU,IAAI,gBAAgB,EAAE,CAAC;oBAC1C,MAAM,KAAK,GAAG,WAAW,CACvB,OAAO,EACP,UAAU,CAAC,QAAQ,EACnB,UAAU,CAAC,QAAQ,CACpB,CAAC;oBACF,MAAM,gBAAgB,GAAG,UAAU,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;oBACxD,IACE,gBAAgB,KAAK,KAAK;wBAC1B,OAAO,gBAAgB,KAAK,QAAQ,EACpC,CAAC;wBACD,WAAW,GAAG,gBAAgB,CAAC;oBACjC,CAAC;gBACH,CAAC;gBACD,iEAAiE;gBACjE,OAAO,CAAC,SAAS,GAAG,WAAW,CAAC;YAClC,CAAC;iBAAM,CAAC;gBACN,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;oBACpC,0DAA0D;oBAC1D,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;gBAChC,CAAC;YACH,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,0BAA0B,EAAE,UAAU,CAAC,CAAC;YACpD,oBAAoB,CAAC,UAAU,CAAC,CAAC;QACnC,CAAC;QAED,yBAAyB,EAAE,CAAC;IAC9B,CAAC,EAAE,CAAC,OAAO,EAAE,yBAAyB,CAAC,CAAC,CAAC;IAEzC,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
1
|
+
{"version":3,"file":"InlineEditor.js","sourceRoot":"","sources":["../../../src/editor/page-editor-chrome/InlineEditor.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { useEditContext, useModifiedFieldsContext, } from "../client/editContext";
|
|
3
|
+
import { findFieldElement } from "../utils";
|
|
4
|
+
import { useState } from "react";
|
|
5
|
+
import { useEffect } from "react";
|
|
6
|
+
import { classNames } from "primereact/utils";
|
|
7
|
+
import { UserRoundPen } from "lucide-react";
|
|
8
|
+
import * as DiffLib from "diff";
|
|
9
|
+
export function SuggestionHighlighting({ suggestion, scale, iframe, }) {
|
|
10
|
+
const editContext = useEditContext();
|
|
11
|
+
const modifiedFields = useModifiedFieldsContext();
|
|
12
|
+
const [ranges, setRanges] = useState([]);
|
|
13
|
+
const [textContent, setTextContent] = useState("");
|
|
14
|
+
useEffect(() => {
|
|
15
|
+
const findRanges = async () => {
|
|
16
|
+
if (!editContext)
|
|
17
|
+
return;
|
|
18
|
+
const field = await editContext.itemsRepository.getField({
|
|
19
|
+
item: {
|
|
20
|
+
id: suggestion.itemId,
|
|
21
|
+
language: suggestion.mainItemLanguage,
|
|
22
|
+
version: suggestion.mainItemVersion,
|
|
23
|
+
},
|
|
24
|
+
fieldId: suggestion.fieldId,
|
|
25
|
+
});
|
|
26
|
+
const modifiedField = modifiedFields?.modifiedFields.find((x) => x.fieldId === field?.id &&
|
|
27
|
+
x.item.id === suggestion.itemId &&
|
|
28
|
+
x.item.language === suggestion.mainItemLanguage &&
|
|
29
|
+
x.item.version === suggestion.mainItemVersion);
|
|
30
|
+
// Calculate the actual differences between oldValue and newValue
|
|
31
|
+
const oldValue = suggestion.oldValue || field?.rawValue || "";
|
|
32
|
+
const newValue = modifiedField?.value || suggestion.newValue || "";
|
|
33
|
+
// If values are identical, no need to highlight
|
|
34
|
+
if (oldValue === newValue) {
|
|
35
|
+
setRanges([]);
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
// Save oldValue for use in the component
|
|
39
|
+
setTextContent(oldValue);
|
|
40
|
+
// Use the diff library to find the changed parts - using diffChars for more precise matching
|
|
41
|
+
const diffResult = DiffLib.diffChars(oldValue, newValue);
|
|
42
|
+
const changeRanges = [];
|
|
43
|
+
let positionInOld = 0;
|
|
44
|
+
// Process the diff result to find all change ranges
|
|
45
|
+
for (const part of diffResult) {
|
|
46
|
+
if (part.removed) {
|
|
47
|
+
// If a part is removed, highlight it in the original text
|
|
48
|
+
changeRanges.push([positionInOld, positionInOld + part.value.length]);
|
|
49
|
+
positionInOld += part.value.length;
|
|
50
|
+
}
|
|
51
|
+
else if (part.added) {
|
|
52
|
+
// For added parts, mark the insertion point
|
|
53
|
+
if (changeRanges.length > 0) {
|
|
54
|
+
const lastRange = changeRanges[changeRanges.length - 1];
|
|
55
|
+
if (lastRange && lastRange[1] === positionInOld) {
|
|
56
|
+
// If this addition comes right after a removal, the previous range already covers the position
|
|
57
|
+
continue;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
// Mark the insertion point for new content
|
|
61
|
+
changeRanges.push([positionInOld, positionInOld]);
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
// Unchanged part, just advance the position
|
|
65
|
+
positionInOld += part.value.length;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
// Merge adjacent or overlapping ranges
|
|
69
|
+
const mergedRanges = [];
|
|
70
|
+
if (changeRanges.length > 0) {
|
|
71
|
+
changeRanges.sort((a, b) => a[0] - b[0]);
|
|
72
|
+
// Start with the first range
|
|
73
|
+
const firstRange = changeRanges[0];
|
|
74
|
+
if (!firstRange) {
|
|
75
|
+
setRanges([]);
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
let currentRange = [...firstRange];
|
|
79
|
+
// Process the rest of the ranges
|
|
80
|
+
for (let i = 1; i < changeRanges.length; i++) {
|
|
81
|
+
const nextRange = changeRanges[i];
|
|
82
|
+
// Skip undefined ranges
|
|
83
|
+
if (!nextRange)
|
|
84
|
+
continue;
|
|
85
|
+
// If the next range starts very close to the end of the current range, merge them
|
|
86
|
+
if (nextRange[0] <= currentRange[1] + 3) {
|
|
87
|
+
// Allow slightly larger gaps (3 chars) for better highlighting
|
|
88
|
+
// Extend the current range
|
|
89
|
+
currentRange[1] = Math.max(currentRange[1], nextRange[1]);
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
// Save the current range and start a new one
|
|
93
|
+
mergedRanges.push([currentRange[0], currentRange[1]]);
|
|
94
|
+
currentRange = [...nextRange];
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
// Add the last range
|
|
98
|
+
mergedRanges.push([currentRange[0], currentRange[1]]);
|
|
99
|
+
}
|
|
100
|
+
// Set ranges to highlight the changed parts
|
|
101
|
+
setRanges(mergedRanges);
|
|
102
|
+
};
|
|
103
|
+
findRanges();
|
|
104
|
+
}, [editContext, modifiedFields?.modifiedFields, suggestion]);
|
|
105
|
+
if (!editContext)
|
|
106
|
+
return null;
|
|
107
|
+
if (!suggestion.fieldId)
|
|
108
|
+
return null;
|
|
109
|
+
const fieldElement = findFieldElement(iframe, {
|
|
110
|
+
item: {
|
|
111
|
+
id: suggestion.itemId,
|
|
112
|
+
language: suggestion.mainItemLanguage,
|
|
113
|
+
version: suggestion.mainItemVersion,
|
|
114
|
+
},
|
|
115
|
+
fieldId: suggestion.fieldId,
|
|
116
|
+
});
|
|
117
|
+
if (!fieldElement)
|
|
118
|
+
return null;
|
|
119
|
+
// Process each range and collect all DOM rectangles
|
|
120
|
+
const allRects = [];
|
|
121
|
+
ranges.forEach((range) => {
|
|
122
|
+
if (range[0] !== undefined && range[1] !== undefined) {
|
|
123
|
+
// For insertion points (zero-length ranges), expand to include at least one character
|
|
124
|
+
// to make it visible
|
|
125
|
+
const start = range[0];
|
|
126
|
+
const end = range[0] === range[1]
|
|
127
|
+
? Math.min(range[0] + 1, textContent.length)
|
|
128
|
+
: range[1];
|
|
129
|
+
if (start < end) {
|
|
130
|
+
const startData = getTextNodeAtPosition(fieldElement, start);
|
|
131
|
+
const endData = getTextNodeAtPosition(fieldElement, end);
|
|
132
|
+
if (startData && endData) {
|
|
133
|
+
try {
|
|
134
|
+
const textRange = document.createRange();
|
|
135
|
+
textRange.setStart(startData.node, startData.offset);
|
|
136
|
+
textRange.setEnd(endData.node, endData.offset);
|
|
137
|
+
const rangeRects = textRange.getClientRects();
|
|
138
|
+
// Convert DOMRectList to Array
|
|
139
|
+
for (let i = 0; i < rangeRects.length; i++) {
|
|
140
|
+
const rect = rangeRects[i];
|
|
141
|
+
if (rect) {
|
|
142
|
+
allRects.push(rect);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
catch (e) {
|
|
147
|
+
console.error("Error creating range", e);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
});
|
|
153
|
+
// If no rects were found, fall back to highlighting the entire field
|
|
154
|
+
if (allRects.length === 0 && ranges.length > 0) {
|
|
155
|
+
const fallbackRect = fieldElement.getBoundingClientRect();
|
|
156
|
+
allRects.push(fallbackRect);
|
|
157
|
+
}
|
|
158
|
+
const iframeRect = iframe.getBoundingClientRect();
|
|
159
|
+
return (_jsx(_Fragment, { children: allRects.map((rect, index) => (_jsx("div", { style: {
|
|
160
|
+
position: "absolute",
|
|
161
|
+
top: rect.top * scale,
|
|
162
|
+
left: rect.left * scale,
|
|
163
|
+
width: rect.width * scale,
|
|
164
|
+
height: rect.height * scale,
|
|
165
|
+
pointerEvents: "none",
|
|
166
|
+
}, children: index === 0 && (_jsx("div", { className: classNames("pointer-events-auto absolute h-5 w-5 cursor-pointer", rect.top * scale < 18 ? "top-0" : "top-[-18px]", (rect.left + rect.width) * scale > iframeRect.width - 18
|
|
167
|
+
? "right-0"
|
|
168
|
+
: "right-[-18px]"), onClick: () => {
|
|
169
|
+
editContext.select([suggestion.itemId]);
|
|
170
|
+
editContext.setFocusedField({
|
|
171
|
+
item: {
|
|
172
|
+
id: suggestion.itemId,
|
|
173
|
+
language: suggestion.mainItemLanguage,
|
|
174
|
+
version: suggestion.mainItemVersion,
|
|
175
|
+
},
|
|
176
|
+
fieldId: suggestion.fieldId,
|
|
177
|
+
}, true);
|
|
178
|
+
}, children: _jsx(UserRoundPen, { className: "rounded-full bg-emerald-400/70 p-1 text-white", size: 20 }) })) }, index))) }));
|
|
179
|
+
}
|
|
180
|
+
// Improved function to find text node at a given character position
|
|
181
|
+
function getTextNodeAtPosition(root, targetOffset) {
|
|
182
|
+
// Handle edge cases
|
|
183
|
+
if (targetOffset < 0)
|
|
184
|
+
return null;
|
|
185
|
+
// Get all text nodes in order
|
|
186
|
+
const textNodes = [];
|
|
187
|
+
const walker = document.createTreeWalker(root, NodeFilter.SHOW_TEXT, null);
|
|
188
|
+
let node;
|
|
189
|
+
while ((node = walker.nextNode())) {
|
|
190
|
+
if (node)
|
|
191
|
+
textNodes.push(node);
|
|
192
|
+
}
|
|
193
|
+
let currentOffset = 0;
|
|
194
|
+
// Walk through all text nodes to find the one containing our target position
|
|
195
|
+
for (const node of textNodes) {
|
|
196
|
+
const nodeLength = node.textContent?.length || 0;
|
|
197
|
+
// If this node contains our target position
|
|
198
|
+
if (currentOffset + nodeLength >= targetOffset) {
|
|
199
|
+
return {
|
|
200
|
+
node: node,
|
|
201
|
+
offset: targetOffset - currentOffset,
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
currentOffset += nodeLength;
|
|
205
|
+
}
|
|
206
|
+
// If we've gone through all nodes and haven't found the position
|
|
207
|
+
// Return the last position in the last text node
|
|
208
|
+
if (textNodes.length > 0) {
|
|
209
|
+
const lastNode = textNodes[textNodes.length - 1];
|
|
210
|
+
if (lastNode) {
|
|
211
|
+
return {
|
|
212
|
+
node: lastNode,
|
|
213
|
+
offset: lastNode.textContent?.length || 0,
|
|
214
|
+
};
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
return null;
|
|
218
|
+
}
|
|
219
|
+
//# sourceMappingURL=SuggestionHighlighting.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SuggestionHighlighting.js","sourceRoot":"","sources":["../../../src/editor/page-editor-chrome/SuggestionHighlighting.tsx"],"names":[],"mappings":"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"}
|
|
@@ -5,29 +5,38 @@ import { Comment as CommentComponent } from "./Comment";
|
|
|
5
5
|
import { SuggestedEditComponent } from "./SuggestedEdit";
|
|
6
6
|
import { SimpleToolbar } from "../ui/SimpleToolbar";
|
|
7
7
|
import { SimpleIconButton } from "../ui/SimpleIconButton";
|
|
8
|
-
import { FileDiff,
|
|
8
|
+
import { FileDiff, SquarePen, CheckCircle, CheckCircle2, Eye, } from "lucide-react";
|
|
9
9
|
export function Comments() {
|
|
10
10
|
const editContext = useEditContext();
|
|
11
11
|
const [feedbackItems, setFeedbackItems] = useState([]);
|
|
12
|
+
const [hideAppliedSuggestions, setHideAppliedSuggestions] = useState(true);
|
|
12
13
|
useEffect(() => {
|
|
13
14
|
// Retrieve your list of comments (and ensure there's an array of suggested edits,
|
|
14
15
|
// for instance from your editContext)
|
|
15
16
|
const comments = editContext?.comments || [];
|
|
16
17
|
const suggestedEdits = editContext?.suggestedEdits || [];
|
|
17
|
-
|
|
18
|
+
// Filter out applied suggestions if hideAppliedSuggestions is true
|
|
19
|
+
const filteredSuggestedEdits = hideAppliedSuggestions
|
|
20
|
+
? suggestedEdits.filter((edit) => edit.status !== "Applied")
|
|
21
|
+
: suggestedEdits;
|
|
22
|
+
const combined = [...comments, ...filteredSuggestedEdits];
|
|
18
23
|
// Sort by creation date. Adjust the comparison as needed if the date properties differ.
|
|
19
24
|
combined.sort((a, b) => new Date(b.created || "").getTime() -
|
|
20
25
|
new Date(a.created || "").getTime());
|
|
21
26
|
setFeedbackItems(combined);
|
|
22
|
-
}, [editContext]);
|
|
27
|
+
}, [editContext, hideAppliedSuggestions]);
|
|
23
28
|
return (_jsxs("div", { className: "flex h-full flex-col", children: [_jsxs(SimpleToolbar, { children: [_jsx(SimpleIconButton, { id: "add-comment", icon: "pi pi-plus", label: "Add Comment", onClick: () => {
|
|
24
29
|
editContext?.addComment();
|
|
25
|
-
} }), _jsx(SimpleIconButton, { selected: editContext?.showComments, icon: _jsx(
|
|
30
|
+
} }), _jsx(SimpleIconButton, { selected: editContext?.showComments, icon: _jsx(Eye, { size: 16, className: "p-0.5" }), label: "Show Comments", onClick: () => {
|
|
26
31
|
editContext?.setShowComments((x) => !x);
|
|
27
32
|
} }), _jsx(SimpleIconButton, { selected: editContext?.showSuggestedEdits, icon: _jsx(SquarePen, { size: 16, className: "p-0.5" }), label: "Show Suggestions", onClick: () => {
|
|
28
33
|
editContext?.setShowSuggestedEdits((x) => !x);
|
|
29
34
|
} }), _jsx(SimpleIconButton, { selected: editContext?.showSuggestedEditsDiff, icon: _jsx(FileDiff, { size: 16, className: "p-0.5" }), label: "Show Suggestions Diff", onClick: () => {
|
|
30
35
|
editContext?.setShowSuggestedEditsDiff((x) => !x);
|
|
36
|
+
} }), _jsx(SimpleIconButton, { selected: hideAppliedSuggestions, icon: hideAppliedSuggestions ? (_jsx(CheckCircle2, { size: 16, className: "p-0.5" })) : (_jsx(CheckCircle, { size: 16, className: "p-0.5" })), label: hideAppliedSuggestions
|
|
37
|
+
? "Show Applied Suggestions"
|
|
38
|
+
: "Hide Applied Suggestions", onClick: () => {
|
|
39
|
+
setHideAppliedSuggestions((x) => !x);
|
|
31
40
|
} })] }), _jsx("div", { className: "flex-1 overflow-auto", children: _jsx("div", { className: "h-fill-available border-l border-gray-200 bg-gray-50 p-4", children: feedbackItems.map((item) => {
|
|
32
41
|
// Use a discriminator check. Here we assume suggested edits have the properties oldValue and newValue.
|
|
33
42
|
if ("oldValue" in item && "newValue" in item) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Comments.js","sourceRoot":"","sources":["../../../src/editor/reviews/Comments.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,WAAW,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,
|
|
1
|
+
{"version":3,"file":"Comments.js","sourceRoot":"","sources":["../../../src/editor/reviews/Comments.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
3
|
import { useEditContext, useEditContextRef } from "../client/editContext";
|
|
4
|
-
import { useEffect, useRef, useState } from "react";
|
|
4
|
+
import { useCallback, useEffect, useRef, useState } from "react";
|
|
5
5
|
import { confirmDialog } from "primereact/confirmdialog";
|
|
6
6
|
import { getComponentCommands } from "../commands/componentCommands";
|
|
7
7
|
import { PerfectTree } from "../ui/PerfectTree";
|
|
@@ -186,7 +186,7 @@ export function ComponentTree({}) {
|
|
|
186
186
|
setRootNodes([pageNode, ...treeNodes]);
|
|
187
187
|
setNodeDictionary(dict);
|
|
188
188
|
}, [page]);
|
|
189
|
-
const handleTreeSelection = (key, event) => {
|
|
189
|
+
const handleTreeSelection = useCallback((key, event) => {
|
|
190
190
|
let newKeys = [key];
|
|
191
191
|
if (event.ctrlKey) {
|
|
192
192
|
if (selectedKeys.includes(key)) {
|
|
@@ -203,7 +203,7 @@ export function ComponentTree({}) {
|
|
|
203
203
|
if (selectedComponentIds.length === 1) {
|
|
204
204
|
editContextRef.current?.setScrollIntoView(selectedComponentIds[0]);
|
|
205
205
|
}
|
|
206
|
-
};
|
|
206
|
+
}, [selectedKeys, nodeDictionary, editContextRef]);
|
|
207
207
|
// Handle tree context menu
|
|
208
208
|
const handleTreeContextMenu = (node, event) => {
|
|
209
209
|
const componentId = nodeDictionary[node.key]?.componentId;
|
|
@@ -246,8 +246,15 @@ export function ComponentTree({}) {
|
|
|
246
246
|
const expandedItems = expandedKeys;
|
|
247
247
|
// Convert selected keys for PerfectTree
|
|
248
248
|
const selectedItems = selectedKeys;
|
|
249
|
+
const handleCollapseItem = useCallback((key) => {
|
|
250
|
+
// First, get the node we're collapsing
|
|
251
|
+
const nodeToCollapse = nodeDictionary[key];
|
|
252
|
+
// Create a new array for expanded keys
|
|
253
|
+
const newExpandedKeys = [...expandedKeys].filter((x) => x !== key);
|
|
254
|
+
setExpandedKeys(newExpandedKeys);
|
|
255
|
+
}, [expandedKeys, nodeDictionary]);
|
|
249
256
|
// Handle expanding nodes
|
|
250
|
-
const handleToggle = (key) => {
|
|
257
|
+
const handleToggle = useCallback((key) => {
|
|
251
258
|
if (expandedKeys.includes(key)) {
|
|
252
259
|
handleCollapseItem(key);
|
|
253
260
|
}
|
|
@@ -256,15 +263,8 @@ export function ComponentTree({}) {
|
|
|
256
263
|
newExpandedKeys.push(key);
|
|
257
264
|
setExpandedKeys(newExpandedKeys);
|
|
258
265
|
}
|
|
259
|
-
};
|
|
266
|
+
}, [expandedKeys, handleCollapseItem]);
|
|
260
267
|
// Handle collapsing nodes
|
|
261
|
-
const handleCollapseItem = (key) => {
|
|
262
|
-
// First, get the node we're collapsing
|
|
263
|
-
const nodeToCollapse = nodeDictionary[key];
|
|
264
|
-
// Create a new array for expanded keys
|
|
265
|
-
const newExpandedKeys = [...expandedKeys].filter((x) => x !== key);
|
|
266
|
-
setExpandedKeys(newExpandedKeys);
|
|
267
|
-
};
|
|
268
268
|
const getPlaceholder = (node) => {
|
|
269
269
|
if (!node)
|
|
270
270
|
return null;
|
|
@@ -303,17 +303,19 @@ export function ComponentTree({}) {
|
|
|
303
303
|
// Only create drag object for components with datasourceItem
|
|
304
304
|
if (!component?.datasourceItem)
|
|
305
305
|
return;
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
306
|
+
setTimeout(() => {
|
|
307
|
+
editContext.dragStart({
|
|
308
|
+
type: "component",
|
|
309
|
+
typeId: component.typeId,
|
|
310
|
+
templateId: component.datasourceItem?.templateId,
|
|
311
|
+
name: component.name,
|
|
312
|
+
component: {
|
|
313
|
+
id: component.id,
|
|
314
|
+
language: editContext.page.item.language,
|
|
315
|
+
version: editContext.page.item.version,
|
|
316
|
+
},
|
|
317
|
+
});
|
|
318
|
+
}, 1);
|
|
317
319
|
}, onDragEnd: (event) => {
|
|
318
320
|
editContext.dragEnd();
|
|
319
321
|
}, onDrop: (parent, index, event) => handleDropZone(parent, index, event), renderNode: (node) => renderNode(node) }) }));
|