@parhelia/core 0.1.12836 → 0.1.12839

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.
Files changed (87) hide show
  1. package/dist/components/ui/avatar.d.ts +30 -0
  2. package/dist/components/ui/avatar.js +46 -0
  3. package/dist/components/ui/avatar.js.map +1 -0
  4. package/dist/config/config.js +9 -2
  5. package/dist/config/config.js.map +1 -1
  6. package/dist/editor/GlobalMenuBar.js +2 -1
  7. package/dist/editor/GlobalMenuBar.js.map +1 -1
  8. package/dist/editor/client/EditorShell.js +67 -18
  9. package/dist/editor/client/EditorShell.js.map +1 -1
  10. package/dist/editor/client/editContext.d.ts +8 -0
  11. package/dist/editor/client/editContext.js.map +1 -1
  12. package/dist/editor/client/hooks/useEditorWebSocket.d.ts +2 -0
  13. package/dist/editor/client/hooks/useEditorWebSocket.js +214 -10
  14. package/dist/editor/client/hooks/useEditorWebSocket.js.map +1 -1
  15. package/dist/editor/client/hooks/useWorkbox.js +19 -2
  16. package/dist/editor/client/hooks/useWorkbox.js.map +1 -1
  17. package/dist/editor/client/realtime/realtimeTransport.d.ts +56 -0
  18. package/dist/editor/client/realtime/realtimeTransport.js +197 -0
  19. package/dist/editor/client/realtime/realtimeTransport.js.map +1 -0
  20. package/dist/editor/menubar/ActiveUsers.js +17 -31
  21. package/dist/editor/menubar/ActiveUsers.js.map +1 -1
  22. package/dist/editor/menubar/OpenInNewTabButton.d.ts +15 -0
  23. package/dist/editor/menubar/OpenInNewTabButton.js +42 -0
  24. package/dist/editor/menubar/OpenInNewTabButton.js.map +1 -0
  25. package/dist/editor/menubar/User.js +2 -7
  26. package/dist/editor/menubar/User.js.map +1 -1
  27. package/dist/editor/menubar/toolbar-sections/ViewportControls.js +48 -3
  28. package/dist/editor/menubar/toolbar-sections/ViewportControls.js.map +1 -1
  29. package/dist/editor/page-editor-chrome/CommentHighlightings.js +180 -44
  30. package/dist/editor/page-editor-chrome/CommentHighlightings.js.map +1 -1
  31. package/dist/editor/page-editor-chrome/InlineEditor.js +145 -6
  32. package/dist/editor/page-editor-chrome/InlineEditor.js.map +1 -1
  33. package/dist/editor/page-editor-chrome/LockedFieldIndicator.js +40 -53
  34. package/dist/editor/page-editor-chrome/LockedFieldIndicator.js.map +1 -1
  35. package/dist/editor/page-editor-chrome/overlay/geometry.d.ts +2 -0
  36. package/dist/editor/page-editor-chrome/overlay/geometry.js +45 -5
  37. package/dist/editor/page-editor-chrome/overlay/geometry.js.map +1 -1
  38. package/dist/editor/page-viewer/PageViewerFrame.js +45 -10
  39. package/dist/editor/page-viewer/PageViewerFrame.js.map +1 -1
  40. package/dist/editor/page-viewer/pageViewContext.js +7 -1
  41. package/dist/editor/page-viewer/pageViewContext.js.map +1 -1
  42. package/dist/editor/reviews/CommentView.js +7 -2
  43. package/dist/editor/reviews/CommentView.js.map +1 -1
  44. package/dist/editor/reviews/SuggestedEdit.js +7 -2
  45. package/dist/editor/reviews/SuggestedEdit.js.map +1 -1
  46. package/dist/editor/reviews/SuggestionDisplayPopover.js +7 -2
  47. package/dist/editor/reviews/SuggestionDisplayPopover.js.map +1 -1
  48. package/dist/editor/services/agentSubscriptionRegistry.js +12 -13
  49. package/dist/editor/services/agentSubscriptionRegistry.js.map +1 -1
  50. package/dist/editor/services/editService.d.ts +2 -0
  51. package/dist/editor/services/editService.js.map +1 -1
  52. package/dist/editor/services/systemService.d.ts +9 -0
  53. package/dist/editor/services/systemService.js +7 -0
  54. package/dist/editor/services/systemService.js.map +1 -1
  55. package/dist/editor/services/userResolution.d.ts +18 -0
  56. package/dist/editor/services/userResolution.js +86 -0
  57. package/dist/editor/services/userResolution.js.map +1 -0
  58. package/dist/editor/services/userService.d.ts +8 -0
  59. package/dist/editor/services/userService.js +26 -0
  60. package/dist/editor/services/userService.js.map +1 -1
  61. package/dist/editor/settings/panels/SystemSettingsPanel.d.ts +2 -0
  62. package/dist/editor/settings/panels/SystemSettingsPanel.js +69 -0
  63. package/dist/editor/settings/panels/SystemSettingsPanel.js.map +1 -0
  64. package/dist/editor/settings/panels/UserPreferencesPanel.js +50 -2
  65. package/dist/editor/settings/panels/UserPreferencesPanel.js.map +1 -1
  66. package/dist/editor/settings/panels/index.d.ts +1 -0
  67. package/dist/editor/settings/panels/index.js +1 -0
  68. package/dist/editor/settings/panels/index.js.map +1 -1
  69. package/dist/editor/settings/status/coreStatusChecks.js +65 -5
  70. package/dist/editor/settings/status/coreStatusChecks.js.map +1 -1
  71. package/dist/editor/setup-wizard/steps/ProviderStep.js +4 -4
  72. package/dist/editor/setup-wizard/steps/ProviderStep.js.map +1 -1
  73. package/dist/editor/ui/Section.js +5 -7
  74. package/dist/editor/ui/Section.js.map +1 -1
  75. package/dist/editor/ui/SimpleMenu.js +1 -1
  76. package/dist/editor/ui/SimpleMenu.js.map +1 -1
  77. package/dist/editor/views/editorSlotContext.js +5 -0
  78. package/dist/editor/views/editorSlotContext.js.map +1 -1
  79. package/dist/index.d.ts +2 -0
  80. package/dist/index.js +1 -0
  81. package/dist/index.js.map +1 -1
  82. package/dist/revision.d.ts +2 -2
  83. package/dist/revision.js +2 -2
  84. package/dist/splash-screen/ModernSplashScreen.js +2 -1
  85. package/dist/splash-screen/ModernSplashScreen.js.map +1 -1
  86. package/dist/types.d.ts +4 -0
  87. package/package.json +1 -1
@@ -5,7 +5,7 @@ import { findFieldElement } from "../utils";
5
5
  import { cn } from "../../lib/utils";
6
6
  import { CommentIcon } from "../ui/Icons";
7
7
  import { CommentDisplayPopover } from "../reviews/CommentDisplayPopover";
8
- import { measureElementRect, measureTextRangeRects, rectListEquals, } from "./overlay/geometry";
8
+ import { measureElementRect, rectListEquals, toOverlayRect, } from "./overlay/geometry";
9
9
  import { getAccessibleIframeDocument } from "./overlay/iframeAccess";
10
10
  import { useOverlayMeasurement } from "./overlay/useOverlayMeasurement";
11
11
  function commentMeasurementsEqual(previous, next) {
@@ -52,7 +52,7 @@ export function CommentHighlightings({ iframe, }) {
52
52
  let rects = [];
53
53
  let isTextRange = false;
54
54
  if (fieldElement && range) {
55
- rects = measureTextRangeRects(iframeDocument, fieldElement, range[0], range[1], metrics);
55
+ rects = measureVisibleTextRangeRects(iframeDocument, fieldElement, range[0], range[1], metrics);
56
56
  isTextRange = rects.length > 0;
57
57
  }
58
58
  if (rects.length === 0) {
@@ -80,49 +80,185 @@ export function CommentHighlightings({ iframe, }) {
80
80
  });
81
81
  if (!editContext)
82
82
  return null;
83
- return (_jsx(_Fragment, { children: visibleComments.flatMap((comment) => {
84
- const measurement = measurements[comment.id];
85
- if (!measurement?.rects.length)
86
- return [];
87
- const isSelected = comment.id === editContext.selectedComment?.id;
88
- return measurement.rects.map((rect, index) => (_jsxs("div", { style: {
89
- position: "absolute",
90
- top: rect.y,
91
- left: rect.x,
92
- width: rect.width,
93
- height: rect.height,
94
- pointerEvents: "none",
95
- }, children: [index === 0 && (_jsx(CommentDisplayPopover, { comment: comment, onCommentUpdated: () => {
96
- editContext?.loadComments?.();
97
- }, children: _jsx("div", { className: "pointer-events-auto absolute top-0 right-0 h-5 w-5 cursor-pointer", "data-testid": "comment-highlight-icon", onClick: () => {
98
- editContext?.setSelectedComment(comment);
99
- editContext?.setScrollIntoView(comment.itemId);
100
- editContext?.select([comment.itemId]);
101
- if (comment.fieldId) {
102
- modifiedFields?.setFocusedField({
103
- fieldId: comment.fieldId,
104
- item: {
105
- id: comment.itemId,
106
- language: comment.language,
107
- version: comment.version,
108
- },
109
- }, false);
110
- }
111
- }, children: _jsx(CommentIcon, { className: cn(comment.isResolved
112
- ? "text-feedback-green hover:text-feedback-green"
113
- : isSelected
114
- ? "text-feedback-red hover:text-feedback-red"
115
- : "text-feedback-blue hover:text-feedback-blue") }) }) })), measurement.isTextRange && (_jsx("div", { className: "opacity-45", style: {
116
- width: "100%",
117
- height: "100%",
118
- backgroundColor: isSelected
119
- ? "var(--color-feedback-red)"
120
- : comment.isResolved
121
- ? "color-mix(in srgb, var(--color-feedback-green) 45%, transparent)"
122
- : "color-mix(in srgb, var(--color-feedback-blue) 45%, transparent)",
123
- } }))] }, `${comment.id}-${index}`)));
124
- }) }));
83
+ return (_jsxs(_Fragment, { children: [_jsx("style", { children: commentHighlightingStyles }), visibleComments.flatMap((comment) => {
84
+ const measurement = measurements[comment.id];
85
+ if (!measurement?.rects.length)
86
+ return [];
87
+ const isSelected = comment.id === editContext.selectedComment?.id;
88
+ return measurement.rects.map((rect, index) => (_jsxs("div", { style: {
89
+ position: "absolute",
90
+ top: rect.y,
91
+ left: rect.x,
92
+ width: rect.width,
93
+ height: rect.height,
94
+ pointerEvents: "none",
95
+ }, children: [index === 0 && (_jsx(CommentDisplayPopover, { comment: comment, onCommentUpdated: () => {
96
+ editContext?.loadComments?.();
97
+ }, children: _jsx("div", { className: "pointer-events-auto absolute -top-5 right-0 h-5 w-5 cursor-pointer", "data-testid": "comment-highlight-icon", onClick: () => {
98
+ editContext?.setSelectedComment(comment);
99
+ editContext?.setScrollIntoView(comment.itemId);
100
+ editContext?.select([comment.itemId]);
101
+ if (comment.fieldId) {
102
+ modifiedFields?.setFocusedField({
103
+ fieldId: comment.fieldId,
104
+ item: {
105
+ id: comment.itemId,
106
+ language: comment.language,
107
+ version: comment.version,
108
+ },
109
+ }, false);
110
+ }
111
+ }, children: _jsx(CommentIcon, { className: cn(comment.isResolved
112
+ ? "text-feedback-green hover:text-feedback-green"
113
+ : isSelected
114
+ ? "text-feedback-red hover:text-feedback-red"
115
+ : "text-feedback-blue hover:text-feedback-blue") }) }) })), measurement.isTextRange && (_jsx("div", { className: "absolute right-0 -bottom-0.5 left-0 h-2", style: {
116
+ ...getCommentUnderlineStyle(comment, isSelected, index),
117
+ } }))] }, `${comment.id}-${index}`)));
118
+ })] }));
125
119
  }
120
+ function measureVisibleTextRangeRects(iframeDocument, root, start, end, metrics) {
121
+ const text = root.textContent || "";
122
+ const boundedStart = Math.max(0, Math.min(start, text.length));
123
+ const boundedEnd = Math.max(boundedStart, Math.min(end, text.length));
124
+ if (boundedStart >= boundedEnd)
125
+ return [];
126
+ const rects = [];
127
+ const walker = iframeDocument.createTreeWalker(root, NodeFilter.SHOW_TEXT);
128
+ let absoluteOffset = 0;
129
+ let textNode;
130
+ while ((textNode = walker.nextNode())) {
131
+ const nodeText = textNode.textContent || "";
132
+ const nodeStart = absoluteOffset;
133
+ const nodeEnd = nodeStart + nodeText.length;
134
+ if (nodeEnd > boundedStart && nodeStart < boundedEnd) {
135
+ const localStart = Math.max(0, boundedStart - nodeStart);
136
+ const localEnd = Math.min(nodeText.length, boundedEnd - nodeStart);
137
+ rects.push(...measureVisibleTextNodeRects(iframeDocument, textNode, nodeText, localStart, localEnd, metrics));
138
+ }
139
+ absoluteOffset = nodeEnd;
140
+ if (absoluteOffset >= boundedEnd)
141
+ break;
142
+ }
143
+ return rects;
144
+ }
145
+ function measureVisibleTextNodeRects(iframeDocument, textNode, nodeText, start, end, metrics) {
146
+ const rects = [];
147
+ let cursor = start;
148
+ while (cursor < end) {
149
+ let lineEnd = cursor;
150
+ while (lineEnd < end && !isLineBreak(nodeText[lineEnd])) {
151
+ lineEnd++;
152
+ }
153
+ let visibleStart = cursor;
154
+ while (visibleStart < lineEnd &&
155
+ isHorizontalWhitespace(nodeText[visibleStart])) {
156
+ visibleStart++;
157
+ }
158
+ let visibleEnd = lineEnd;
159
+ while (visibleEnd > visibleStart &&
160
+ isHorizontalWhitespace(nodeText[visibleEnd - 1])) {
161
+ visibleEnd--;
162
+ }
163
+ if (visibleStart < visibleEnd) {
164
+ try {
165
+ const textRange = iframeDocument.createRange();
166
+ textRange.setStart(textNode, visibleStart);
167
+ textRange.setEnd(textNode, visibleEnd);
168
+ rects.push(...Array.from(textRange.getClientRects())
169
+ .filter((rect) => rect.width > 1 && rect.height > 1)
170
+ .map((rect) => toOverlayRect(rect, metrics)));
171
+ }
172
+ catch {
173
+ // Ignore detached or otherwise invalid text nodes while the iframe mutates.
174
+ }
175
+ }
176
+ cursor = lineEnd;
177
+ if (nodeText[cursor] === "\r" && nodeText[cursor + 1] === "\n") {
178
+ cursor += 2;
179
+ }
180
+ else {
181
+ cursor++;
182
+ }
183
+ }
184
+ return rects;
185
+ }
186
+ function isLineBreak(value) {
187
+ return value === "\n" || value === "\r";
188
+ }
189
+ function isHorizontalWhitespace(value) {
190
+ return value === " " || value === "\t" || value === "\f" || value === "\v";
191
+ }
192
+ function getCommentUnderlineStyle(comment, isSelected, index) {
193
+ const color = comment.isResolved
194
+ ? "var(--color-feedback-green)"
195
+ : isSelected
196
+ ? "var(--color-feedback-red)"
197
+ : "var(--color-feedback-blue)";
198
+ const strength = isSelected ? 62 : 48;
199
+ const textureStrength = isSelected ? 20 : 14;
200
+ const shadowStrength = isSelected ? 24 : 14;
201
+ const offset = (hashString(comment.id) + index * 17) % 64;
202
+ const style = {
203
+ "--comment-squiggle-offset": `${offset}px`,
204
+ background: [
205
+ `radial-gradient(circle at 18% 45%, color-mix(in srgb, ${color} ${textureStrength}%, transparent) 0 1px, transparent 1.5px)`,
206
+ `radial-gradient(circle at 68% 55%, color-mix(in srgb, ${color} ${textureStrength}%, transparent) 0 1px, transparent 1.5px)`,
207
+ `linear-gradient(90deg, color-mix(in srgb, ${color} ${strength}%, transparent), color-mix(in srgb, ${color} ${Math.max(strength - 10, 0)}%, transparent) 45%, color-mix(in srgb, ${color} ${strength}%, transparent))`,
208
+ ].join(", "),
209
+ backgroundSize: "15px 8px, 21px 8px, 100% 100%",
210
+ backgroundPosition: `${offset % 15}px 0, -${offset % 21}px 0, 0 0`,
211
+ filter: `drop-shadow(0 1px 1px color-mix(in srgb, ${color} ${shadowStrength}%, transparent))`,
212
+ maskImage: `url("${squiggleUnderlineMask}")`,
213
+ maskRepeat: "repeat-x",
214
+ maskSize: "64px 8px",
215
+ maskPosition: `var(--comment-squiggle-offset) 0`,
216
+ WebkitMaskImage: `url("${squiggleUnderlineMask}")`,
217
+ WebkitMaskRepeat: "repeat-x",
218
+ WebkitMaskSize: "64px 8px",
219
+ WebkitMaskPosition: `var(--comment-squiggle-offset) 0`,
220
+ ...(isSelected
221
+ ? {
222
+ animation: "parhelia-comment-squiggle-pulse 3.2s ease-in-out infinite, parhelia-comment-squiggle-drift 8s linear infinite",
223
+ willChange: "background-position, mask-position, -webkit-mask-position, filter, opacity",
224
+ }
225
+ : {}),
226
+ };
227
+ return style;
228
+ }
229
+ function hashString(value) {
230
+ let hash = 0;
231
+ for (let i = 0; i < value.length; i++) {
232
+ hash = (hash * 31 + value.charCodeAt(i)) | 0;
233
+ }
234
+ return Math.abs(hash);
235
+ }
236
+ const squiggleUnderlineMask = "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='8' viewBox='0 0 64 8'%3E%3Cpath d='M0 4.8 C 2.5 1.4 5.8 1.9 8.7 4.7 C 11.1 7 13.8 6.7 16.2 3.7 C 18.3 1 21.9 1.7 24.4 4.9 C 27.2 8.3 30.1 6 32.7 3.5 C 35 1.2 38 2.4 40.8 5.2 C 43.4 7.8 46.4 6.4 48.9 3.4 C 51.5 0.4 54.6 2.2 56.8 4.6 C 59.3 7.2 62 6.8 64 3.9' fill='none' stroke='black' stroke-width='4' stroke-linecap='round'/%3E%3Cpath d='M0 5.7 C 6 4.3 10 5.9 15 4.9 C 20.5 3.8 26 5.6 31 4.7 C 36.5 3.7 41.5 5.4 47 4.6 C 52.5 3.8 58 5.6 64 4.4' fill='none' stroke='black' stroke-opacity='.45' stroke-width='1.2' stroke-linecap='round'/%3E%3C/svg%3E";
237
+ const commentHighlightingStyles = `
238
+ @keyframes parhelia-comment-squiggle-pulse {
239
+ 0%, 100% {
240
+ opacity: 0.86;
241
+ filter: saturate(1);
242
+ }
243
+ 50% {
244
+ opacity: 0.96;
245
+ filter: saturate(1.12) brightness(1.03);
246
+ }
247
+ }
248
+
249
+ @keyframes parhelia-comment-squiggle-drift {
250
+ from {
251
+ background-position: 0 0, 0 0, 0 0;
252
+ mask-position: var(--comment-squiggle-offset) 0;
253
+ -webkit-mask-position: var(--comment-squiggle-offset) 0;
254
+ }
255
+ to {
256
+ background-position: 15px 0, -21px 0, 0 0;
257
+ mask-position: calc(var(--comment-squiggle-offset) + 64px) 0;
258
+ -webkit-mask-position: calc(var(--comment-squiggle-offset) + 64px) 0;
259
+ }
260
+ }
261
+ `;
126
262
  function resolveCommentRange(comment, fieldElement, iframeDocument) {
127
263
  if (comment.rangeStart === undefined || comment.rangeEnd === undefined) {
128
264
  return null;
@@ -1 +1 @@
1
- {"version":3,"file":"CommentHighlightings.js","sourceRoot":"","sources":["../../../src/editor/page-editor-chrome/CommentHighlightings.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CommentHighlightings.js","sourceRoot":"","sources":["../../../src/editor/page-editor-chrome/CommentHighlightings.tsx"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { useEffect, useRef, useState } from "react";
3
3
  import { createPortal } from "react-dom";
4
4
  import { useEditContext, useFieldsEditContext, useEditContextRef, } from "../client/editContext";
5
- import { getFieldDescriptorFromElement, hasFieldLock, getSessionWithFieldLock, } from "../utils";
5
+ import { findFieldElement, getFieldDescriptorFromElement, hasFieldLock, getSessionWithFieldLock, } from "../utils";
6
6
  import { applyPatch, diffWords } from "diff";
7
7
  import { createPatch } from "diff";
8
8
  // import { useDebouncedCallback } from "use-debounce";
@@ -188,6 +188,8 @@ function InlineEditorContent({ pageViewContext, compareView, context, }) {
188
188
  const inlineFormatCommandsCacheRef = useRef(new Map());
189
189
  const inlineFormatCommandsLoadingRef = useRef(new Set());
190
190
  const inlineFormatPointerDownRef = useRef(false);
191
+ const caretUpdateFrameRef = useRef(null);
192
+ const lastSentCaretRef = useRef(null);
191
193
  const refreshCompletion = useInlineAiCompletion({
192
194
  pageViewContext,
193
195
  cursorSpanId,
@@ -469,6 +471,55 @@ function InlineEditorContent({ pageViewContext, compareView, context, }) {
469
471
  element.contains(selection.focusNode));
470
472
  };
471
473
  const isElementActiveOrSelectedInIframe = (doc, element) => isElementActiveInIframe(doc, element) || isSelectionInsideElement(element);
474
+ const clearRemoteCaretPosition = () => {
475
+ if (caretUpdateFrameRef.current != null) {
476
+ window.cancelAnimationFrame(caretUpdateFrameRef.current);
477
+ caretUpdateFrameRef.current = null;
478
+ }
479
+ if (lastSentCaretRef.current === "clear")
480
+ return;
481
+ context.sendSocketMessage({
482
+ type: "caret-position",
483
+ payload: { offset: null },
484
+ });
485
+ lastSentCaretRef.current = "clear";
486
+ };
487
+ const scheduleCaretPositionUpdate = (element, fieldDescriptor) => {
488
+ if (caretUpdateFrameRef.current != null)
489
+ return;
490
+ caretUpdateFrameRef.current = window.requestAnimationFrame(() => {
491
+ caretUpdateFrameRef.current = null;
492
+ const iframeDocument = getAccessibleIframeDocument(pageViewContext.editorIframe);
493
+ if (!isElementActiveOrSelectedInIframe(iframeDocument, element)) {
494
+ clearRemoteCaretPosition();
495
+ return;
496
+ }
497
+ const selection = getAccessibleIframeSelection(pageViewContext.editorIframe);
498
+ if (!selection || selection.rangeCount === 0 || !selection.isCollapsed) {
499
+ clearRemoteCaretPosition();
500
+ return;
501
+ }
502
+ const caret = saveCaretPosition(element);
503
+ if (!caret || caret.startOffset !== caret.endOffset) {
504
+ clearRemoteCaretPosition();
505
+ return;
506
+ }
507
+ const value = sanitizeEditableValue(element, element.getAttribute("data-is-richtext") === "true");
508
+ const nextKey = `${fieldDescriptor.fieldId}:${fieldDescriptor.item.id}:${fieldDescriptor.item.language}:${fieldDescriptor.item.version}:${caret.startOffset}:${value}`;
509
+ if (lastSentCaretRef.current === nextKey)
510
+ return;
511
+ context.sendSocketMessage({
512
+ type: "caret-position",
513
+ payload: {
514
+ fieldId: fieldDescriptor.fieldId,
515
+ item: fieldDescriptor.item,
516
+ offset: caret.startOffset,
517
+ value,
518
+ },
519
+ });
520
+ lastSentCaretRef.current = nextKey;
521
+ });
522
+ };
472
523
  const isInlineFieldBeingEdited = (doc, element) => {
473
524
  if (!doc || !element)
474
525
  return false;
@@ -490,11 +541,32 @@ function InlineEditorContent({ pageViewContext, compareView, context, }) {
490
541
  selection.removeAllRanges();
491
542
  selection.addRange(range);
492
543
  };
544
+ function hasRemoteCaretForField({ fieldId, itemId, language, version, }) {
545
+ if (!fieldId || !itemId || !language || version == null)
546
+ return false;
547
+ return Object.values(contextRef.current?.remoteCarets ?? context.remoteCarets).some((caret) => caret.offset != null &&
548
+ caret.fieldId === fieldId &&
549
+ caret.item?.id === itemId &&
550
+ caret.item?.language === language &&
551
+ caret.item?.version === version);
552
+ }
493
553
  // Helper: set innerHTML when content changes
494
554
  function setInnerHTMLWithStackTrace(element, nextHTML, meta) {
495
555
  const prevHTML = element.innerHTML ?? "";
496
556
  if (prevHTML === nextHTML)
497
557
  return false;
558
+ if (meta.source !== "remote-caret:value" &&
559
+ hasRemoteCaretForField({
560
+ fieldId: meta.fieldId ?? element.getAttribute("data-fieldid"),
561
+ itemId: meta.itemId ?? element.getAttribute("data-itemid"),
562
+ language: meta.language ?? element.getAttribute("data-language"),
563
+ version: meta.version ??
564
+ (element.getAttribute("data-version")
565
+ ? parseInt(element.getAttribute("data-version"), 10)
566
+ : null),
567
+ })) {
568
+ return false;
569
+ }
498
570
  if (contextRef.current?.mode === "suggestions") {
499
571
  const iframeDocument = getAccessibleIframeDocument(pageViewContext.editorIframe);
500
572
  const iframeHasFocus = pageViewContext.editorIframe?.ownerDocument.activeElement ===
@@ -558,6 +630,19 @@ function InlineEditorContent({ pageViewContext, compareView, context, }) {
558
630
  // }
559
631
  return true;
560
632
  }
633
+ function setEditableElementValue(element, nextValue, isRichText, meta) {
634
+ if (isRichText) {
635
+ return setInnerHTMLWithStackTrace(element, nextValue, meta);
636
+ }
637
+ if ((element.innerText ?? "") === nextValue)
638
+ return false;
639
+ isUpdatingRef.current = true;
640
+ element.innerText = nextValue;
641
+ setTimeout(() => {
642
+ isUpdatingRef.current = false;
643
+ }, 0);
644
+ return true;
645
+ }
561
646
  function isCurrentInlineEditSource(sourceElement, key) {
562
647
  if (!sourceElement.isConnected)
563
648
  return false;
@@ -649,6 +734,41 @@ function InlineEditorContent({ pageViewContext, compareView, context, }) {
649
734
  }
650
735
  return currentValue;
651
736
  };
737
+ useEffect(() => {
738
+ const editorIframe = pageViewContext.editorIframe;
739
+ if (compareView || !editorIframe)
740
+ return;
741
+ context.activeSessions.forEach((session) => {
742
+ if (session.sessionId === context.sessionId || !session.fieldLock)
743
+ return;
744
+ const remoteCaret = context.remoteCarets[session.sessionId];
745
+ if (remoteCaret?.value == null)
746
+ return;
747
+ const caretMatchesLock = remoteCaret.fieldId === session.fieldLock.fieldId &&
748
+ remoteCaret.item?.id === session.fieldLock.item.id &&
749
+ remoteCaret.item?.language === session.fieldLock.item.language &&
750
+ remoteCaret.item?.version === session.fieldLock.item.version;
751
+ if (!caretMatchesLock)
752
+ return;
753
+ const element = findFieldElement(editorIframe, session.fieldLock);
754
+ if (!element || element === modifiedFieldsContext?.inlineEditingFieldElement)
755
+ return;
756
+ setEditableElementValue(element, remoteCaret.value, element.getAttribute("data-is-richtext") === "true", {
757
+ source: "remote-caret:value",
758
+ fieldId: session.fieldLock.fieldId,
759
+ itemId: session.fieldLock.item.id,
760
+ language: session.fieldLock.item.language,
761
+ version: session.fieldLock.item.version,
762
+ });
763
+ });
764
+ }, [
765
+ compareView,
766
+ context.activeSessions,
767
+ context.remoteCarets,
768
+ context.sessionId,
769
+ modifiedFieldsContext?.inlineEditingFieldElement,
770
+ pageViewContext.editorIframe,
771
+ ]);
652
772
  useEffect(() => {
653
773
  if (compareView || context.mode === "preview")
654
774
  return;
@@ -835,6 +955,7 @@ function InlineEditorContent({ pageViewContext, compareView, context, }) {
835
955
  fromUserInput: true,
836
956
  source: "input",
837
957
  });
958
+ scheduleCaretPositionUpdate(element, fieldDescriptor);
838
959
  };
839
960
  element.addEventListener("input", inputHandler);
840
961
  // Setup a more robust mutation observer
@@ -904,19 +1025,29 @@ function InlineEditorContent({ pageViewContext, compareView, context, }) {
904
1025
  };
905
1026
  focusIfNeeded();
906
1027
  setTimeout(focusIfNeeded, 50);
1028
+ scheduleCaretPositionUpdate(element, fieldDescriptor);
907
1029
  // Initial cursor placement
908
1030
  // setTimeout(updateCursorSpan, 10);
909
1031
  // Add listener for selection changes
910
1032
  if (iframeWindow) {
911
1033
  const selectionChangeHandler = () => {
912
- // Only update if we're not already updating
913
- // if (!isUpdatingRef.current) {
914
- // setTimeout(updateCursorSpan, 0);
915
- // }
1034
+ scheduleCaretPositionUpdate(element, fieldDescriptor);
1035
+ };
1036
+ const keyOrMouseHandler = () => {
1037
+ scheduleCaretPositionUpdate(element, fieldDescriptor);
1038
+ };
1039
+ const blurHandler = () => {
1040
+ clearRemoteCaretPosition();
916
1041
  };
917
1042
  iframeWindow.document.addEventListener("selectionchange", selectionChangeHandler);
1043
+ iframeWindow.document.addEventListener("keyup", keyOrMouseHandler);
1044
+ iframeWindow.document.addEventListener("mouseup", keyOrMouseHandler);
1045
+ element.addEventListener("blur", blurHandler);
918
1046
  selectionChangeListenerRef.current = () => {
919
1047
  iframeWindow.document.removeEventListener("selectionchange", selectionChangeHandler);
1048
+ iframeWindow.document.removeEventListener("keyup", keyOrMouseHandler);
1049
+ iframeWindow.document.removeEventListener("mouseup", keyOrMouseHandler);
1050
+ element.removeEventListener("blur", blurHandler);
920
1051
  };
921
1052
  mutationObserverRef.current.observe(element, {
922
1053
  childList: true, // observe direct children changes
@@ -940,6 +1071,7 @@ function InlineEditorContent({ pageViewContext, compareView, context, }) {
940
1071
  if (cursorElement) {
941
1072
  cursorElement.parentNode?.removeChild(cursorElement);
942
1073
  }
1074
+ clearRemoteCaretPosition();
943
1075
  };
944
1076
  }
945
1077
  }
@@ -1053,6 +1185,7 @@ function InlineEditorContent({ pageViewContext, compareView, context, }) {
1053
1185
  if (cursorElement) {
1054
1186
  cursorElement.parentNode?.removeChild(cursorElement);
1055
1187
  }
1188
+ clearRemoteCaretPosition();
1056
1189
  };
1057
1190
  }, [context.mode, modifiedFieldsContext?.inlineEditingFieldElement]);
1058
1191
  function saveCaretPosition(editableElement) {
@@ -1376,6 +1509,7 @@ function InlineEditorContent({ pageViewContext, compareView, context, }) {
1376
1509
  pageViewContext.page,
1377
1510
  context.showSuggestedEditsDiff,
1378
1511
  context.showSuggestedEdits,
1512
+ context.remoteCarets,
1379
1513
  ]);
1380
1514
  useEffect(() => {
1381
1515
  if (!context || compareView)
@@ -1466,7 +1600,12 @@ function InlineEditorContent({ pageViewContext, compareView, context, }) {
1466
1600
  });
1467
1601
  }
1468
1602
  });
1469
- }, [context.mode, context.showSuggestedEdits, context.suggestedEdits]);
1603
+ }, [
1604
+ context.mode,
1605
+ context.showSuggestedEdits,
1606
+ context.suggestedEdits,
1607
+ context.remoteCarets,
1608
+ ]);
1470
1609
  useEffect(() => {
1471
1610
  if (compareView || context.mode === "preview") {
1472
1611
  hideInlineFormatOverlay();