@parhelia/core 0.3.12763 → 0.3.12768

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 (712) hide show
  1. package/dist/agents-view/AgentCard.js +7 -9
  2. package/dist/agents-view/AgentCard.js.map +1 -1
  3. package/dist/agents-view/AgentGalleryView.js +4 -4
  4. package/dist/agents-view/AgentGalleryView.js.map +1 -1
  5. package/dist/agents-view/AgentProfileIcon.js +1 -8
  6. package/dist/agents-view/AgentProfileIcon.js.map +1 -1
  7. package/dist/agents-view/AgentsWorkspaceView.js +2 -2
  8. package/dist/agents-view/AgentsWorkspaceView.js.map +1 -1
  9. package/dist/agents-view/RenameAgentDialog.js +1 -1
  10. package/dist/agents-view/RenameAgentDialog.js.map +1 -1
  11. package/dist/components/MarkdownViewerPopover.js +3 -3
  12. package/dist/components/MarkdownViewerPopover.js.map +1 -1
  13. package/dist/components/WorkspaceHomeView.js +1 -1
  14. package/dist/components/WorkspaceHomeView.js.map +1 -1
  15. package/dist/components/ui/LanguageSelector.js +1 -1
  16. package/dist/components/ui/LanguageSelector.js.map +1 -1
  17. package/dist/components/ui/PlaceholderInput.js +1 -1
  18. package/dist/components/ui/PlaceholderItemSelector.js +1 -1
  19. package/dist/components/ui/PlaceholderItemSelector.js.map +1 -1
  20. package/dist/components/ui/UserPicker.js +2 -2
  21. package/dist/components/ui/UserPicker.js.map +1 -1
  22. package/dist/components/ui/accordion.js +1 -1
  23. package/dist/components/ui/accordion.js.map +1 -1
  24. package/dist/components/ui/breadcrumb.js +2 -2
  25. package/dist/components/ui/breadcrumb.js.map +1 -1
  26. package/dist/components/ui/calendar.js +3 -3
  27. package/dist/components/ui/calendar.js.map +1 -1
  28. package/dist/components/ui/card.js +2 -2
  29. package/dist/components/ui/card.js.map +1 -1
  30. package/dist/components/ui/checkbox.js +1 -1
  31. package/dist/components/ui/checkbox.js.map +1 -1
  32. package/dist/components/ui/context-menu.js +3 -3
  33. package/dist/components/ui/context-menu.js.map +1 -1
  34. package/dist/components/ui/delete-icon.js +1 -1
  35. package/dist/components/ui/delete-icon.js.map +1 -1
  36. package/dist/components/ui/dropdown-menu.js +4 -4
  37. package/dist/components/ui/dropdown-menu.js.map +1 -1
  38. package/dist/components/ui/mention-textarea.js +2 -2
  39. package/dist/components/ui/mention-textarea.js.map +1 -1
  40. package/dist/components/ui/multi-switch-button.js +1 -1
  41. package/dist/components/ui/multi-switch-button.js.map +1 -1
  42. package/dist/components/ui/upload-button.js +1 -1
  43. package/dist/components/ui/upload-button.js.map +1 -1
  44. package/dist/config/config.js +29 -18
  45. package/dist/config/config.js.map +1 -1
  46. package/dist/editor/AdminRequiredView.js +1 -1
  47. package/dist/editor/AdminRequiredView.js.map +1 -1
  48. package/dist/editor/ConcurrentUserLimitDialog.d.ts +2 -1
  49. package/dist/editor/ConcurrentUserLimitDialog.js +26 -11
  50. package/dist/editor/ConcurrentUserLimitDialog.js.map +1 -1
  51. package/dist/editor/ConfirmationDialog.js +1 -1
  52. package/dist/editor/ContentTree.js +2 -2
  53. package/dist/editor/ContentTree.js.map +1 -1
  54. package/dist/editor/ContextMenu.js +36 -6
  55. package/dist/editor/ContextMenu.js.map +1 -1
  56. package/dist/editor/DeleteItemsWarning.js +2 -2
  57. package/dist/editor/DeleteItemsWarning.js.map +1 -1
  58. package/dist/editor/Editor.js +49 -4
  59. package/dist/editor/Editor.js.map +1 -1
  60. package/dist/editor/EditorWarning.js +1 -1
  61. package/dist/editor/EditorWarning.js.map +1 -1
  62. package/dist/editor/FieldActionsOverlay.js +1 -1
  63. package/dist/editor/FieldActionsOverlay.js.map +1 -1
  64. package/dist/editor/FieldHistory.js +7 -7
  65. package/dist/editor/FieldHistory.js.map +1 -1
  66. package/dist/editor/FieldList.js +45 -4
  67. package/dist/editor/FieldList.js.map +1 -1
  68. package/dist/editor/FieldListField.js +5 -3
  69. package/dist/editor/FieldListField.js.map +1 -1
  70. package/dist/editor/FieldListFieldWithFallbacks.js +1 -1
  71. package/dist/editor/FieldListFieldWithFallbacks.js.map +1 -1
  72. package/dist/editor/MainLayout.js +3 -6
  73. package/dist/editor/MainLayout.js.map +1 -1
  74. package/dist/editor/MigrationsView.js +6 -6
  75. package/dist/editor/MigrationsView.js.map +1 -1
  76. package/dist/editor/PictureCropper.js +2 -2
  77. package/dist/editor/PictureCropper.js.map +1 -1
  78. package/dist/editor/SetupWizard.js +1 -1
  79. package/dist/editor/SetupWizard.js.map +1 -1
  80. package/dist/editor/UsedBy.js +2 -2
  81. package/dist/editor/UsedBy.js.map +1 -1
  82. package/dist/editor/WorkspaceTitleSwitcher.js +3 -3
  83. package/dist/editor/WorkspaceTitleSwitcher.js.map +1 -1
  84. package/dist/editor/ai/AgentProfileSelector.js +4 -4
  85. package/dist/editor/ai/AgentProfileSelector.js.map +1 -1
  86. package/dist/editor/ai/AgentSharingSection.js +6 -6
  87. package/dist/editor/ai/AgentSharingSection.js.map +1 -1
  88. package/dist/editor/ai/Agents.js +3 -3
  89. package/dist/editor/ai/Agents.js.map +1 -1
  90. package/dist/editor/ai/ContentInspectorPopover.js +2 -2
  91. package/dist/editor/ai/ContentInspectorPopover.js.map +1 -1
  92. package/dist/editor/ai/GuidanceOverlay.js +1 -1
  93. package/dist/editor/ai/GuidanceOverlay.js.map +1 -1
  94. package/dist/editor/ai/HeartbeatDiagnosticsPanel.js +5 -19
  95. package/dist/editor/ai/HeartbeatDiagnosticsPanel.js.map +1 -1
  96. package/dist/editor/ai/InlineAiDialog.d.ts +13 -0
  97. package/dist/editor/ai/InlineAiDialog.js +52 -14
  98. package/dist/editor/ai/InlineAiDialog.js.map +1 -1
  99. package/dist/editor/ai/InlineAiTrigger.js +1 -1
  100. package/dist/editor/ai/InlineAiTrigger.js.map +1 -1
  101. package/dist/editor/ai/bridgeInlineTextReplace.d.ts +16 -0
  102. package/dist/editor/ai/bridgeInlineTextReplace.js +31 -0
  103. package/dist/editor/ai/bridgeInlineTextReplace.js.map +1 -0
  104. package/dist/editor/ai/dialogs/ComponentTypeSelectorInline.js +2 -2
  105. package/dist/editor/ai/dialogs/ComponentTypeSelectorInline.js.map +1 -1
  106. package/dist/editor/ai/dialogs/QuestionnaireInline.js +3 -3
  107. package/dist/editor/ai/dialogs/QuestionnaireInline.js.map +1 -1
  108. package/dist/editor/ai/inlineAiTextEditLabels.d.ts +1 -1
  109. package/dist/editor/ai/inlineAiTextEditLabels.js +1 -1
  110. package/dist/editor/ai/terminal/components/ActivitySummaryCell.js +4 -4
  111. package/dist/editor/ai/terminal/components/ActivitySummaryCell.js.map +1 -1
  112. package/dist/editor/ai/terminal/components/AgentActivityOverviewPanel.js +7 -7
  113. package/dist/editor/ai/terminal/components/AgentActivityOverviewPanel.js.map +1 -1
  114. package/dist/editor/ai/terminal/components/AgentContextItemPicker.js +1 -1
  115. package/dist/editor/ai/terminal/components/AgentContextItemPicker.js.map +1 -1
  116. package/dist/editor/ai/terminal/components/AgentDocumentList.js +3 -3
  117. package/dist/editor/ai/terminal/components/AgentDocumentList.js.map +1 -1
  118. package/dist/editor/ai/terminal/components/AgentEditHistoryButton.js +1 -1
  119. package/dist/editor/ai/terminal/components/AgentEditHistoryButton.js.map +1 -1
  120. package/dist/editor/ai/terminal/components/AgentGreeting.js +2 -2
  121. package/dist/editor/ai/terminal/components/AgentGreeting.js.map +1 -1
  122. package/dist/editor/ai/terminal/components/AgentMemoryPanel.js +2 -2
  123. package/dist/editor/ai/terminal/components/AgentMemoryPanel.js.map +1 -1
  124. package/dist/editor/ai/terminal/components/AgentModeSelector.js +2 -2
  125. package/dist/editor/ai/terminal/components/AgentModeSelector.js.map +1 -1
  126. package/dist/editor/ai/terminal/components/AgentParentLink.js +1 -1
  127. package/dist/editor/ai/terminal/components/AgentParentLink.js.map +1 -1
  128. package/dist/editor/ai/terminal/components/AgentProfileModelSettingsSection.js +1 -1
  129. package/dist/editor/ai/terminal/components/AgentProfileModelSettingsSection.js.map +1 -1
  130. package/dist/editor/ai/terminal/components/AgentProfileSwitcher.js +1 -1
  131. package/dist/editor/ai/terminal/components/AgentProfileSwitcher.js.map +1 -1
  132. package/dist/editor/ai/terminal/components/AgentProjectProgress.js +1 -1
  133. package/dist/editor/ai/terminal/components/AgentProjectProgress.js.map +1 -1
  134. package/dist/editor/ai/terminal/components/AgentPromptActionButtons.js +1 -1
  135. package/dist/editor/ai/terminal/components/AgentPromptActionButtons.js.map +1 -1
  136. package/dist/editor/ai/terminal/components/AgentPromptInputArea.js +1 -1
  137. package/dist/editor/ai/terminal/components/AgentPromptInputArea.js.map +1 -1
  138. package/dist/editor/ai/terminal/components/AgentPromptTrayPopovers.js +5 -5
  139. package/dist/editor/ai/terminal/components/AgentPromptTrayPopovers.js.map +1 -1
  140. package/dist/editor/ai/terminal/components/AgentReadOnlyNotice.js +1 -1
  141. package/dist/editor/ai/terminal/components/AgentReadOnlyNotice.js.map +1 -1
  142. package/dist/editor/ai/terminal/components/AgentSettingsPopover.js +1 -1
  143. package/dist/editor/ai/terminal/components/AgentSettingsPopover.js.map +1 -1
  144. package/dist/editor/ai/terminal/components/AgentSettingsSections.js +4 -2
  145. package/dist/editor/ai/terminal/components/AgentSettingsSections.js.map +1 -1
  146. package/dist/editor/ai/terminal/components/AgentSkillSettingsSection.js +2 -2
  147. package/dist/editor/ai/terminal/components/AgentSkillSettingsSection.js.map +1 -1
  148. package/dist/editor/ai/terminal/components/AgentSuggestionBanner.js +1 -1
  149. package/dist/editor/ai/terminal/components/AgentSuggestionBanner.js.map +1 -1
  150. package/dist/editor/ai/terminal/components/AgentTerminalFullUpperContent.js +1 -1
  151. package/dist/editor/ai/terminal/components/AgentTerminalFullUpperContent.js.map +1 -1
  152. package/dist/editor/ai/terminal/components/AgentTerminalStatusBar.js +3 -3
  153. package/dist/editor/ai/terminal/components/AgentTerminalStatusBar.js.map +1 -1
  154. package/dist/editor/ai/terminal/components/AiResponseMessage.js +11 -14
  155. package/dist/editor/ai/terminal/components/AiResponseMessage.js.map +1 -1
  156. package/dist/editor/ai/terminal/components/ApprovalCard.js +3 -4
  157. package/dist/editor/ai/terminal/components/ApprovalCard.js.map +1 -1
  158. package/dist/editor/ai/terminal/components/ContextInfoBar.js +1 -1
  159. package/dist/editor/ai/terminal/components/ContextInfoBar.js.map +1 -1
  160. package/dist/editor/ai/terminal/components/EditOperationsPanel.js +2 -2
  161. package/dist/editor/ai/terminal/components/EditOperationsPanel.js.map +1 -1
  162. package/dist/editor/ai/terminal/components/HeartbeatMessage.js +1 -1
  163. package/dist/editor/ai/terminal/components/HeartbeatMessage.js.map +1 -1
  164. package/dist/editor/ai/terminal/components/QuestionnaireRecap.js +2 -2
  165. package/dist/editor/ai/terminal/components/QuestionnaireRecap.js.map +1 -1
  166. package/dist/editor/ai/terminal/components/QueuedPromptsPanel.js +4 -4
  167. package/dist/editor/ai/terminal/components/QueuedPromptsPanel.js.map +1 -1
  168. package/dist/editor/ai/terminal/components/TodoListPanel.js +4 -4
  169. package/dist/editor/ai/terminal/components/TodoListPanel.js.map +1 -1
  170. package/dist/editor/ai/terminal/components/ToolCallDisplay.d.ts +9 -0
  171. package/dist/editor/ai/terminal/components/ToolCallDisplay.js +63 -22
  172. package/dist/editor/ai/terminal/components/ToolCallDisplay.js.map +1 -1
  173. package/dist/editor/ai/terminal/components/UserMessage.js +10 -6
  174. package/dist/editor/ai/terminal/components/UserMessage.js.map +1 -1
  175. package/dist/editor/ai/terminal/useAgentTextareaDropHandlers.js +35 -7
  176. package/dist/editor/ai/terminal/useAgentTextareaDropHandlers.js.map +1 -1
  177. package/dist/editor/ai-image-editor/AiImageEditorDialog.js +5 -5
  178. package/dist/editor/ai-image-editor/AiImageEditorDialog.js.map +1 -1
  179. package/dist/editor/ai-image-editor/AiImageResultOverlay.js +1 -1
  180. package/dist/editor/bridge/protocol.d.ts +12 -0
  181. package/dist/editor/bridge/protocol.js +1 -1
  182. package/dist/editor/bridge/protocol.js.map +1 -1
  183. package/dist/editor/client/AboutDialog.js +1 -1
  184. package/dist/editor/client/AboutDialog.js.map +1 -1
  185. package/dist/editor/client/EditorShell.js +103 -51
  186. package/dist/editor/client/EditorShell.js.map +1 -1
  187. package/dist/editor/client/agentTerminalFocus.d.ts +1 -1
  188. package/dist/editor/client/agentTerminalFocus.js +1 -1
  189. package/dist/editor/client/agentTerminalFocus.js.map +1 -1
  190. package/dist/editor/client/editContext.d.ts +4 -1
  191. package/dist/editor/client/editContext.js.map +1 -1
  192. package/dist/editor/client/editHistoryReconciliation.d.ts +10 -0
  193. package/dist/editor/client/editHistoryReconciliation.js +25 -0
  194. package/dist/editor/client/editHistoryReconciliation.js.map +1 -0
  195. package/dist/editor/client/errorToast.js +1 -1
  196. package/dist/editor/client/errorToast.js.map +1 -1
  197. package/dist/editor/client/hooks/useEditorWebSocket.d.ts +4 -3
  198. package/dist/editor/client/hooks/useEditorWebSocket.js +265 -64
  199. package/dist/editor/client/hooks/useEditorWebSocket.js.map +1 -1
  200. package/dist/editor/client/hooks/useSocketMessageHandler.d.ts +1 -0
  201. package/dist/editor/client/hooks/useSocketMessageHandler.js +44 -11
  202. package/dist/editor/client/hooks/useSocketMessageHandler.js.map +1 -1
  203. package/dist/editor/client/operations.d.ts +1 -1
  204. package/dist/editor/client/operations.js +123 -77
  205. package/dist/editor/client/operations.js.map +1 -1
  206. package/dist/editor/client/pageModelBuilder.js +11 -6
  207. package/dist/editor/client/pageModelBuilder.js.map +1 -1
  208. package/dist/editor/client/sessionIdClaim.d.ts +22 -0
  209. package/dist/editor/client/sessionIdClaim.js +77 -0
  210. package/dist/editor/client/sessionIdClaim.js.map +1 -0
  211. package/dist/editor/client/sidebarAvailability.d.ts +9 -0
  212. package/dist/editor/client/sidebarAvailability.js +29 -0
  213. package/dist/editor/client/sidebarAvailability.js.map +1 -0
  214. package/dist/editor/client/suggestedEditFieldQueue.d.ts +2 -0
  215. package/dist/editor/client/suggestedEditFieldQueue.js +16 -0
  216. package/dist/editor/client/suggestedEditFieldQueue.js.map +1 -0
  217. package/dist/editor/client/ui/FullscreenControls.js +1 -1
  218. package/dist/editor/client/ui/FullscreenControls.js.map +1 -1
  219. package/dist/editor/client/waitForEditOperationTerminal.d.ts +2 -0
  220. package/dist/editor/client/waitForEditOperationTerminal.js +73 -9
  221. package/dist/editor/client/waitForEditOperationTerminal.js.map +1 -1
  222. package/dist/editor/commands/componentCommands.js +17 -15
  223. package/dist/editor/commands/componentCommands.js.map +1 -1
  224. package/dist/editor/commands/deleteVersionCommand.js +1 -1
  225. package/dist/editor/commands/deleteVersionCommand.js.map +1 -1
  226. package/dist/editor/commands/itemCommands.js +64 -9
  227. package/dist/editor/commands/itemCommands.js.map +1 -1
  228. package/dist/editor/commands/placeholderCommands.js +1 -1
  229. package/dist/editor/commands/placeholderCommands.js.map +1 -1
  230. package/dist/editor/content-tree/IndicatorSettings.js +2 -2
  231. package/dist/editor/content-tree/TreeSettingsMenu.js +1 -1
  232. package/dist/editor/content-tree/TreeSettingsMenu.js.map +1 -1
  233. package/dist/editor/context-menu/InsertMenu.js +1 -1
  234. package/dist/editor/context-menu/InsertMenu.js.map +1 -1
  235. package/dist/editor/editor-warnings/FinalWorkflowStateReadOnly.js +1 -1
  236. package/dist/editor/editor-warnings/FinalWorkflowStateReadOnly.js.map +1 -1
  237. package/dist/editor/editor-warnings/NoWorkflowWriteAccess.js +1 -1
  238. package/dist/editor/editor-warnings/NoWorkflowWriteAccess.js.map +1 -1
  239. package/dist/editor/editor-warnings/NoWriteAccess.js +3 -1
  240. package/dist/editor/editor-warnings/NoWriteAccess.js.map +1 -1
  241. package/dist/editor/field-types/AttachmentEditor.js +1 -1
  242. package/dist/editor/field-types/AttachmentEditor.js.map +1 -1
  243. package/dist/editor/field-types/CheckboxEditor.js +1 -1
  244. package/dist/editor/field-types/CheckboxEditor.js.map +1 -1
  245. package/dist/editor/field-types/DateFieldEditor.js +2 -2
  246. package/dist/editor/field-types/DateFieldEditor.js.map +1 -1
  247. package/dist/editor/field-types/DateTimeFieldEditor.js +1 -1
  248. package/dist/editor/field-types/DateTimeFieldEditor.js.map +1 -1
  249. package/dist/editor/field-types/TreeListEditor.d.ts +3 -1
  250. package/dist/editor/field-types/TreeListEditor.js +5 -5
  251. package/dist/editor/field-types/TreeListEditor.js.map +1 -1
  252. package/dist/editor/field-types/richtext/components/ReactSlate.js +15 -2
  253. package/dist/editor/field-types/richtext/components/ReactSlate.js.map +1 -1
  254. package/dist/editor/field-types/richtext/richTextToolbarIcons.js +14 -14
  255. package/dist/editor/field-types/richtext/richTextToolbarIcons.js.map +1 -1
  256. package/dist/editor/field-types/textContextMenuFactory.js +1 -1
  257. package/dist/editor/field-types/textContextMenuFactory.js.map +1 -1
  258. package/dist/editor/itemContextMenu.js +1 -1
  259. package/dist/editor/itemContextMenu.js.map +1 -1
  260. package/dist/editor/media-selector/AiImageSearchPrompt.js +1 -1
  261. package/dist/editor/media-selector/AiImageSearchPrompt.js.map +1 -1
  262. package/dist/editor/media-selector/MediaFolderBrowser.js +5 -5
  263. package/dist/editor/media-selector/MediaFolderBrowser.js.map +1 -1
  264. package/dist/editor/media-selector/MediaSelector.js +1 -1
  265. package/dist/editor/media-selector/MediaSelector.js.map +1 -1
  266. package/dist/editor/media-selector/Preview.js +1 -1
  267. package/dist/editor/media-selector/Preview.js.map +1 -1
  268. package/dist/editor/media-selector/Thumbnails.js +4 -4
  269. package/dist/editor/media-selector/Thumbnails.js.map +1 -1
  270. package/dist/editor/media-selector/TreeSelector.js +3 -3
  271. package/dist/editor/media-selector/TreeSelector.js.map +1 -1
  272. package/dist/editor/media-selector/UploadZone.js +1 -1
  273. package/dist/editor/media-selector/UploadZone.js.map +1 -1
  274. package/dist/editor/menubar/ActiveUsers.js +17 -15
  275. package/dist/editor/menubar/ActiveUsers.js.map +1 -1
  276. package/dist/editor/menubar/FavoritesControls.js +3 -3
  277. package/dist/editor/menubar/FavoritesControls.js.map +1 -1
  278. package/dist/editor/menubar/ItemLanguageVersion.js +7 -3
  279. package/dist/editor/menubar/ItemLanguageVersion.js.map +1 -1
  280. package/dist/editor/menubar/OpenInNewTabButton.d.ts +1 -1
  281. package/dist/editor/menubar/OpenInNewTabButton.js +2 -2
  282. package/dist/editor/menubar/OpenInNewTabButton.js.map +1 -1
  283. package/dist/editor/menubar/OperationsIndicator.js +3 -3
  284. package/dist/editor/menubar/OperationsIndicator.js.map +1 -1
  285. package/dist/editor/menubar/ToolbarFactory.js +2 -7
  286. package/dist/editor/menubar/ToolbarFactory.js.map +1 -1
  287. package/dist/editor/menubar/VersionSelector.js +15 -14
  288. package/dist/editor/menubar/VersionSelector.js.map +1 -1
  289. package/dist/editor/menubar/WorkflowButton.js +5 -5
  290. package/dist/editor/menubar/WorkflowButton.js.map +1 -1
  291. package/dist/editor/menubar/activeUserSessions.d.ts +9 -0
  292. package/dist/editor/menubar/activeUserSessions.js +30 -0
  293. package/dist/editor/menubar/activeUserSessions.js.map +1 -0
  294. package/dist/editor/menubar/toolbar-sections/CompareControls.js +1 -1
  295. package/dist/editor/menubar/toolbar-sections/CompareControls.js.map +1 -1
  296. package/dist/editor/menubar/toolbar-sections/FullscreenControl.js +1 -1
  297. package/dist/editor/menubar/toolbar-sections/FullscreenControl.js.map +1 -1
  298. package/dist/editor/menubar/toolbar-sections/ManualBrowser.js +12 -12
  299. package/dist/editor/menubar/toolbar-sections/ManualBrowser.js.map +1 -1
  300. package/dist/editor/menubar/toolbar-sections/UndoRedoControls.js +1 -1
  301. package/dist/editor/menubar/toolbar-sections/UndoRedoControls.js.map +1 -1
  302. package/dist/editor/menubar/toolbar-sections/UtilityControls.d.ts +1 -3
  303. package/dist/editor/menubar/toolbar-sections/UtilityControls.js +3 -4
  304. package/dist/editor/menubar/toolbar-sections/UtilityControls.js.map +1 -1
  305. package/dist/editor/menubar/toolbar-sections/ViewportControls.js +3 -2
  306. package/dist/editor/menubar/toolbar-sections/ViewportControls.js.map +1 -1
  307. package/dist/editor/notifications/NotificationCenter.js +23 -5
  308. package/dist/editor/notifications/NotificationCenter.js.map +1 -1
  309. package/dist/editor/notifications/NotificationItem.js +3 -3
  310. package/dist/editor/notifications/NotificationItem.js.map +1 -1
  311. package/dist/editor/notifications/WatchButton.js +8 -8
  312. package/dist/editor/notifications/WatchButton.js.map +1 -1
  313. package/dist/editor/notifications/watchEventOptions.js +2 -2
  314. package/dist/editor/notifications/watchEventOptions.js.map +1 -1
  315. package/dist/editor/page-editor-chrome/BridgeInlineFormatOverlay.js +2 -2
  316. package/dist/editor/page-editor-chrome/BridgeInlineFormatOverlay.js.map +1 -1
  317. package/dist/editor/page-editor-chrome/DragInsertionOverlay.js +5 -5
  318. package/dist/editor/page-editor-chrome/DragInsertionOverlay.js.map +1 -1
  319. package/dist/editor/page-editor-chrome/EmptyImageFieldIndicators.js +2 -2
  320. package/dist/editor/page-editor-chrome/EmptyImageFieldIndicators.js.map +1 -1
  321. package/dist/editor/page-editor-chrome/FieldActionIndicator.js +1 -1
  322. package/dist/editor/page-editor-chrome/FieldActionIndicator.js.map +1 -1
  323. package/dist/editor/page-editor-chrome/FrameMenu.js +2 -2
  324. package/dist/editor/page-editor-chrome/FrameMenu.js.map +1 -1
  325. package/dist/editor/page-editor-chrome/PlaceholderDropZone.js +1 -1
  326. package/dist/editor/page-editor-chrome/PlaceholderDropZone.js.map +1 -1
  327. package/dist/editor/page-editor-chrome/SuggestionHighlightings.js +119 -27
  328. package/dist/editor/page-editor-chrome/SuggestionHighlightings.js.map +1 -1
  329. package/dist/editor/page-editor-chrome/SuggestionVariantSwitcher.d.ts +6 -0
  330. package/dist/editor/page-editor-chrome/SuggestionVariantSwitcher.js +23 -0
  331. package/dist/editor/page-editor-chrome/SuggestionVariantSwitcher.js.map +1 -0
  332. package/dist/editor/page-editor-chrome/overlay/geometry.d.ts +8 -1
  333. package/dist/editor/page-editor-chrome/overlay/geometry.js +30 -0
  334. package/dist/editor/page-editor-chrome/overlay/geometry.js.map +1 -1
  335. package/dist/editor/page-editor-chrome/useBridgeInlineEditing.d.ts +16 -13
  336. package/dist/editor/page-editor-chrome/useBridgeInlineEditing.js +75 -35
  337. package/dist/editor/page-editor-chrome/useBridgeInlineEditing.js.map +1 -1
  338. package/dist/editor/page-viewer/EditorForm.js +7 -2
  339. package/dist/editor/page-viewer/EditorForm.js.map +1 -1
  340. package/dist/editor/page-viewer/MiniMap.d.ts +2 -1
  341. package/dist/editor/page-viewer/MiniMap.js +98 -12
  342. package/dist/editor/page-viewer/MiniMap.js.map +1 -1
  343. package/dist/editor/page-viewer/PageViewer.js +2 -2
  344. package/dist/editor/page-viewer/PageViewerFrame.js +248 -115
  345. package/dist/editor/page-viewer/PageViewerFrame.js.map +1 -1
  346. package/dist/editor/page-viewer/bridgeFieldPatch.d.ts +34 -1
  347. package/dist/editor/page-viewer/bridgeFieldPatch.js +69 -1
  348. package/dist/editor/page-viewer/bridgeFieldPatch.js.map +1 -1
  349. package/dist/editor/page-viewer/bridgeInlineEditSession.d.ts +49 -0
  350. package/dist/editor/page-viewer/bridgeInlineEditSession.js +189 -0
  351. package/dist/editor/page-viewer/bridgeInlineEditSession.js.map +1 -0
  352. package/dist/editor/personalization/ActionList.js +1 -1
  353. package/dist/editor/personalization/ActionList.js.map +1 -1
  354. package/dist/editor/personalization/ConditionTreeEditor.js +1 -1
  355. package/dist/editor/personalization/ConditionTreeEditor.js.map +1 -1
  356. package/dist/editor/personalization/PersonalizationPanel.js +98 -34
  357. package/dist/editor/personalization/PersonalizationPanel.js.map +1 -1
  358. package/dist/editor/personalization/RuleElementPicker.js +1 -1
  359. package/dist/editor/personalization/RuleElementPicker.js.map +1 -1
  360. package/dist/editor/personalization/RuleList.js +3 -3
  361. package/dist/editor/personalization/RuleList.js.map +1 -1
  362. package/dist/editor/personalization/TreeItemPicker.js +3 -3
  363. package/dist/editor/personalization/TreeItemPicker.js.map +1 -1
  364. package/dist/editor/reviews/CommentDisplayPopover.js +2 -2
  365. package/dist/editor/reviews/CommentEditor.js +3 -2
  366. package/dist/editor/reviews/CommentEditor.js.map +1 -1
  367. package/dist/editor/reviews/CommentPopover.js +5 -3
  368. package/dist/editor/reviews/CommentPopover.js.map +1 -1
  369. package/dist/editor/reviews/CommentView.js +8 -8
  370. package/dist/editor/reviews/CommentView.js.map +1 -1
  371. package/dist/editor/reviews/Comments.js +4 -4
  372. package/dist/editor/reviews/Comments.js.map +1 -1
  373. package/dist/editor/reviews/CreateReviewConfirmStep.js +1 -1
  374. package/dist/editor/reviews/CreateReviewConfirmStep.js.map +1 -1
  375. package/dist/editor/reviews/CreateReviewDialog.js +4 -5
  376. package/dist/editor/reviews/CreateReviewDialog.js.map +1 -1
  377. package/dist/editor/reviews/CreateReviewReviewersStep.js +1 -1
  378. package/dist/editor/reviews/CreateReviewReviewersStep.js.map +1 -1
  379. package/dist/editor/reviews/CreateReviewSettingsStep.js +2 -1
  380. package/dist/editor/reviews/CreateReviewSettingsStep.js.map +1 -1
  381. package/dist/editor/reviews/CreateReviewSuccessStep.js +1 -1
  382. package/dist/editor/reviews/CreateReviewSuccessStep.js.map +1 -1
  383. package/dist/editor/reviews/DecisionsMatrix.js +13 -13
  384. package/dist/editor/reviews/DecisionsMatrix.js.map +1 -1
  385. package/dist/editor/reviews/EditReviewSettingsDialog.d.ts +1 -1
  386. package/dist/editor/reviews/EditReviewSettingsDialog.js +28 -63
  387. package/dist/editor/reviews/EditReviewSettingsDialog.js.map +1 -1
  388. package/dist/editor/reviews/FeedbackModeIntro.js +3 -3
  389. package/dist/editor/reviews/FeedbackModeIntro.js.map +1 -1
  390. package/dist/editor/reviews/LatestFeedback.js +3 -3
  391. package/dist/editor/reviews/LatestFeedback.js.map +1 -1
  392. package/dist/editor/reviews/MultiReviewManager.js +0 -1
  393. package/dist/editor/reviews/MultiReviewManager.js.map +1 -1
  394. package/dist/editor/reviews/PreconfiguredReviewerSelector.js +1 -1
  395. package/dist/editor/reviews/PreconfiguredReviewerSelector.js.map +1 -1
  396. package/dist/editor/reviews/ReviewCard.d.ts +1 -4
  397. package/dist/editor/reviews/ReviewCard.js +28 -7
  398. package/dist/editor/reviews/ReviewCard.js.map +1 -1
  399. package/dist/editor/reviews/ReviewDetail.js +39 -35
  400. package/dist/editor/reviews/ReviewDetail.js.map +1 -1
  401. package/dist/editor/reviews/ReviewItemsPanel.d.ts +1 -3
  402. package/dist/editor/reviews/ReviewItemsPanel.js +20 -56
  403. package/dist/editor/reviews/ReviewItemsPanel.js.map +1 -1
  404. package/dist/editor/reviews/ReviewersPanel.js +3 -3
  405. package/dist/editor/reviews/ReviewersPanel.js.map +1 -1
  406. package/dist/editor/reviews/ReviewsList.js +9 -74
  407. package/dist/editor/reviews/ReviewsList.js.map +1 -1
  408. package/dist/editor/reviews/SecretPhraseInput.d.ts +8 -0
  409. package/dist/editor/reviews/SecretPhraseInput.js +9 -0
  410. package/dist/editor/reviews/SecretPhraseInput.js.map +1 -0
  411. package/dist/editor/reviews/SuggestedEdit.js +36 -70
  412. package/dist/editor/reviews/SuggestedEdit.js.map +1 -1
  413. package/dist/editor/reviews/SuggestionDisplayPopover.js +77 -58
  414. package/dist/editor/reviews/SuggestionDisplayPopover.js.map +1 -1
  415. package/dist/editor/reviews/applySuggestedEditActions.d.ts +21 -0
  416. package/dist/editor/reviews/applySuggestedEditActions.js +242 -0
  417. package/dist/editor/reviews/applySuggestedEditActions.js.map +1 -0
  418. package/dist/editor/reviews/feedbackScrollTarget.js +3 -2
  419. package/dist/editor/reviews/feedbackScrollTarget.js.map +1 -1
  420. package/dist/editor/reviews/reviewListPresentation.d.ts +2 -0
  421. package/dist/editor/reviews/reviewListPresentation.js +11 -0
  422. package/dist/editor/reviews/reviewListPresentation.js.map +1 -1
  423. package/dist/editor/reviews/suggestedEditState.js +12 -1
  424. package/dist/editor/reviews/suggestedEditState.js.map +1 -1
  425. package/dist/editor/reviews/suggestionDisplayValue.d.ts +38 -1
  426. package/dist/editor/reviews/suggestionDisplayValue.js +99 -21
  427. package/dist/editor/reviews/suggestionDisplayValue.js.map +1 -1
  428. package/dist/editor/reviews/suggestionPatch.d.ts +10 -0
  429. package/dist/editor/reviews/suggestionPatch.js +17 -0
  430. package/dist/editor/reviews/suggestionPatch.js.map +1 -0
  431. package/dist/editor/reviews/useMultiReview.d.ts +1 -2
  432. package/dist/editor/reviews/useMultiReview.js +74 -65
  433. package/dist/editor/reviews/useMultiReview.js.map +1 -1
  434. package/dist/editor/services/contentService.d.ts +1 -9
  435. package/dist/editor/services/contentService.js +4 -1
  436. package/dist/editor/services/contentService.js.map +1 -1
  437. package/dist/editor/services/editService.d.ts +1 -0
  438. package/dist/editor/services/editService.js +12 -19
  439. package/dist/editor/services/editService.js.map +1 -1
  440. package/dist/editor/services/reviewsService.d.ts +1 -9
  441. package/dist/editor/services/reviewsService.js +1 -9
  442. package/dist/editor/services/reviewsService.js.map +1 -1
  443. package/dist/editor/services/suggestedEditsService.d.ts +17 -5
  444. package/dist/editor/services/suggestedEditsService.js +23 -5
  445. package/dist/editor/services/suggestedEditsService.js.map +1 -1
  446. package/dist/editor/services/systemService.d.ts +1 -2
  447. package/dist/editor/services/systemService.js +0 -3
  448. package/dist/editor/services/systemService.js.map +1 -1
  449. package/dist/editor/settings/About.js +6 -6
  450. package/dist/editor/settings/About.js.map +1 -1
  451. package/dist/editor/settings/IndexOverview.js +1 -1
  452. package/dist/editor/settings/IndexOverview.js.map +1 -1
  453. package/dist/editor/settings/QuotaInfo.js +5 -5
  454. package/dist/editor/settings/QuotaInfo.js.map +1 -1
  455. package/dist/editor/settings/SettingsBreadcrumb.js +1 -1
  456. package/dist/editor/settings/SettingsBreadcrumb.js.map +1 -1
  457. package/dist/editor/settings/SettingsView.js +3 -2
  458. package/dist/editor/settings/SettingsView.js.map +1 -1
  459. package/dist/editor/settings/StatusSummary.js +6 -6
  460. package/dist/editor/settings/StatusSummary.js.map +1 -1
  461. package/dist/editor/settings/index/EmbeddingProviderInfo.js +2 -2
  462. package/dist/editor/settings/index/EmbeddingProviderInfo.js.map +1 -1
  463. package/dist/editor/settings/index/QueueErrorsDisplay.d.ts +1 -1
  464. package/dist/editor/settings/index/QueueErrorsDisplay.js +7 -3
  465. package/dist/editor/settings/index/QueueErrorsDisplay.js.map +1 -1
  466. package/dist/editor/settings/index/embeddingErrors.d.ts +7 -0
  467. package/dist/editor/settings/index/embeddingErrors.js +105 -0
  468. package/dist/editor/settings/index/embeddingErrors.js.map +1 -0
  469. package/dist/editor/settings/index/types.d.ts +1 -0
  470. package/dist/editor/settings/index/useIndexStatus.js +2 -2
  471. package/dist/editor/settings/index/useIndexStatus.js.map +1 -1
  472. package/dist/editor/settings/panels/AgentProfileConfigPanel.js +6 -6
  473. package/dist/editor/settings/panels/AgentProfileConfigPanel.js.map +1 -1
  474. package/dist/editor/settings/panels/AgentToolsPanel.js +3 -3
  475. package/dist/editor/settings/panels/AgentToolsPanel.js.map +1 -1
  476. package/dist/editor/settings/panels/AgentsPanel.js +2 -2
  477. package/dist/editor/settings/panels/AgentsPanel.js.map +1 -1
  478. package/dist/editor/settings/panels/ClusterInstancesPanel.js +3 -3
  479. package/dist/editor/settings/panels/ClusterInstancesPanel.js.map +1 -1
  480. package/dist/editor/settings/panels/CreateAgentProfileDialog.js +1 -1
  481. package/dist/editor/settings/panels/CreateAgentProfileDialog.js.map +1 -1
  482. package/dist/editor/settings/panels/CreateJavaScriptToolDialog.js +1 -1
  483. package/dist/editor/settings/panels/CreateJavaScriptToolDialog.js.map +1 -1
  484. package/dist/editor/settings/panels/CreateMcpServerDialog.js +1 -1
  485. package/dist/editor/settings/panels/CreateMcpServerDialog.js.map +1 -1
  486. package/dist/editor/settings/panels/FieldTypeSerializersPanel.js +2 -2
  487. package/dist/editor/settings/panels/FieldTypeSerializersPanel.js.map +1 -1
  488. package/dist/editor/settings/panels/GroupedFieldConfigPanel.js +1 -1
  489. package/dist/editor/settings/panels/GroupedFieldConfigPanel.js.map +1 -1
  490. package/dist/editor/settings/panels/ItemConfigPanel.js +1 -1
  491. package/dist/editor/settings/panels/ItemConfigPanel.js.map +1 -1
  492. package/dist/editor/settings/panels/JavaScriptToolAgentPanel.js +1 -1
  493. package/dist/editor/settings/panels/JavaScriptToolAgentPanel.js.map +1 -1
  494. package/dist/editor/settings/panels/JavaScriptToolConfigPanel.js +5 -5
  495. package/dist/editor/settings/panels/JavaScriptToolConfigPanel.js.map +1 -1
  496. package/dist/editor/settings/panels/JavaScriptToolsPanel.js +5 -5
  497. package/dist/editor/settings/panels/JavaScriptToolsPanel.js.map +1 -1
  498. package/dist/editor/settings/panels/McpToolsPanel.js +3 -3
  499. package/dist/editor/settings/panels/McpToolsPanel.js.map +1 -1
  500. package/dist/editor/settings/panels/ModelConfigPanel.js +6 -6
  501. package/dist/editor/settings/panels/ModelConfigPanel.js.map +1 -1
  502. package/dist/editor/settings/panels/ModelsPanel.js +4 -4
  503. package/dist/editor/settings/panels/ModelsPanel.js.map +1 -1
  504. package/dist/editor/settings/panels/NotificationSubscriptionsPanel.js +16 -13
  505. package/dist/editor/settings/panels/NotificationSubscriptionsPanel.js.map +1 -1
  506. package/dist/editor/settings/panels/PersistentLogsPanel.js +1 -1
  507. package/dist/editor/settings/panels/PersistentLogsPanel.js.map +1 -1
  508. package/dist/editor/settings/panels/ProjectTemplateAgentPanel.js +2 -3
  509. package/dist/editor/settings/panels/ProjectTemplateAgentPanel.js.map +1 -1
  510. package/dist/editor/settings/panels/ProjectTemplateSelector.js +1 -1
  511. package/dist/editor/settings/panels/ProjectTemplateSelector.js.map +1 -1
  512. package/dist/editor/settings/panels/ProjectTemplateSelectorList.js +1 -1
  513. package/dist/editor/settings/panels/ProjectTemplateSelectorList.js.map +1 -1
  514. package/dist/editor/settings/panels/ProjectTemplatesPanel.js +13 -13
  515. package/dist/editor/settings/panels/ProjectTemplatesPanel.js.map +1 -1
  516. package/dist/editor/settings/panels/ProviderConfigPanel.js +3 -3
  517. package/dist/editor/settings/panels/ProviderConfigPanel.js.map +1 -1
  518. package/dist/editor/settings/panels/ProvidersPanel.js +1 -1
  519. package/dist/editor/settings/panels/ProvidersPanel.js.map +1 -1
  520. package/dist/editor/settings/panels/SearchConfigPanel.js +3 -3
  521. package/dist/editor/settings/panels/SearchConfigPanel.js.map +1 -1
  522. package/dist/editor/settings/panels/StatusPanel.js +5 -5
  523. package/dist/editor/settings/panels/StatusPanel.js.map +1 -1
  524. package/dist/editor/settings/panels/SystemSettingsPanel.js +1 -1
  525. package/dist/editor/settings/panels/SystemSettingsPanel.js.map +1 -1
  526. package/dist/editor/settings/panels/UserPreferencesPanel.js +1 -1
  527. package/dist/editor/settings/panels/UserPreferencesPanel.js.map +1 -1
  528. package/dist/editor/setup-wizard/SetupStepError.js +1 -1
  529. package/dist/editor/setup-wizard/SetupStepError.js.map +1 -1
  530. package/dist/editor/setup-wizard/SetupStepLayout.js +1 -1
  531. package/dist/editor/setup-wizard/SetupStepLayout.js.map +1 -1
  532. package/dist/editor/setup-wizard/steps/CompleteStep.js +2 -2
  533. package/dist/editor/setup-wizard/steps/CompleteStep.js.map +1 -1
  534. package/dist/editor/setup-wizard/steps/CreateSettingsStep.js +1 -1
  535. package/dist/editor/setup-wizard/steps/CreateSettingsStep.js.map +1 -1
  536. package/dist/editor/setup-wizard/steps/LicenseActivationStep.js +1 -1
  537. package/dist/editor/setup-wizard/steps/LicenseActivationStep.js.map +1 -1
  538. package/dist/editor/setup-wizard/steps/LicenseEmailStep.js +1 -1
  539. package/dist/editor/setup-wizard/steps/LicenseEmailStep.js.map +1 -1
  540. package/dist/editor/setup-wizard/steps/ModelSelectionStep.js +6 -12
  541. package/dist/editor/setup-wizard/steps/ModelSelectionStep.js.map +1 -1
  542. package/dist/editor/setup-wizard/steps/ProviderStep.js +6 -6
  543. package/dist/editor/setup-wizard/steps/ProviderStep.js.map +1 -1
  544. package/dist/editor/setup-wizard/steps/WelcomeStep.js +1 -1
  545. package/dist/editor/sidebar/Completions.js +1 -1
  546. package/dist/editor/sidebar/Completions.js.map +1 -1
  547. package/dist/editor/sidebar/ComponentPalette.js +1 -1
  548. package/dist/editor/sidebar/ComponentPalette.js.map +1 -1
  549. package/dist/editor/sidebar/ComponentTree.js +11 -11
  550. package/dist/editor/sidebar/ComponentTree.js.map +1 -1
  551. package/dist/editor/sidebar/DictionaryEditor.js +48 -23
  552. package/dist/editor/sidebar/DictionaryEditor.js.map +1 -1
  553. package/dist/editor/sidebar/Favorites.js +5 -5
  554. package/dist/editor/sidebar/Favorites.js.map +1 -1
  555. package/dist/editor/sidebar/NavigationPanelItem.js +1 -1
  556. package/dist/editor/sidebar/NavigationPanelItem.js.map +1 -1
  557. package/dist/editor/sidebar/OperationItem.js +4 -4
  558. package/dist/editor/sidebar/OperationItem.js.map +1 -1
  559. package/dist/editor/sidebar/Sessions.js +14 -7
  560. package/dist/editor/sidebar/Sessions.js.map +1 -1
  561. package/dist/editor/sidebar/SidebarPanel.js +7 -5
  562. package/dist/editor/sidebar/SidebarPanel.js.map +1 -1
  563. package/dist/editor/sidebar/TimelineView.js +1 -1
  564. package/dist/editor/sidebar/TimelineView.js.map +1 -1
  565. package/dist/editor/sidebar/Validation.js +1 -1
  566. package/dist/editor/sidebar/Validation.js.map +1 -1
  567. package/dist/editor/sidebar/Workbox.js +1 -1
  568. package/dist/editor/sidebar/Workbox.js.map +1 -1
  569. package/dist/editor/template-wizard/TemplateBuilderDialog.js +1 -1
  570. package/dist/editor/template-wizard/TemplateBuilderDialog.js.map +1 -1
  571. package/dist/editor/template-wizard/TemplateStructureInlineEditor.js +10 -10
  572. package/dist/editor/template-wizard/TemplateStructureInlineEditor.js.map +1 -1
  573. package/dist/editor/tree-indicators/GutterColumns.js +2 -2
  574. package/dist/editor/ui/ComponentThumbnailDialog.js +1 -1
  575. package/dist/editor/ui/ComponentThumbnailDialog.js.map +1 -1
  576. package/dist/editor/ui/IconSelectorDialog.js +1 -1
  577. package/dist/editor/ui/IconSelectorDialog.js.map +1 -1
  578. package/dist/editor/ui/Icons.d.ts +1 -1
  579. package/dist/editor/ui/Icons.js +7 -7
  580. package/dist/editor/ui/Icons.js.map +1 -1
  581. package/dist/editor/ui/ItemList.js +1 -1
  582. package/dist/editor/ui/ItemList.js.map +1 -1
  583. package/dist/editor/ui/PerfectTree.js +2 -2
  584. package/dist/editor/ui/PerfectTree.js.map +1 -1
  585. package/dist/editor/ui/PublishDialog.js +1 -1
  586. package/dist/editor/ui/PublishDialog.js.map +1 -1
  587. package/dist/editor/ui/PublishItemDialog.js +2 -2
  588. package/dist/editor/ui/PublishItemDialog.js.map +1 -1
  589. package/dist/editor/ui/PublishRestrictionsDialog.js +20 -11
  590. package/dist/editor/ui/PublishRestrictionsDialog.js.map +1 -1
  591. package/dist/editor/ui/Section.js +2 -2
  592. package/dist/editor/ui/Section.js.map +1 -1
  593. package/dist/editor/ui/SharedFolderSelectorDialog.js +17 -3
  594. package/dist/editor/ui/SharedFolderSelectorDialog.js.map +1 -1
  595. package/dist/editor/ui/SimpleTable.d.ts +3 -1
  596. package/dist/editor/ui/SimpleTable.js +3 -3
  597. package/dist/editor/ui/SimpleTable.js.map +1 -1
  598. package/dist/editor/ui/Spinner.js +1 -1
  599. package/dist/editor/ui/Spinner.js.map +1 -1
  600. package/dist/editor/ui/Splitter.js +3 -7
  601. package/dist/editor/ui/Splitter.js.map +1 -1
  602. package/dist/editor/ui/TemplateSelectorDialog.js +2 -2
  603. package/dist/editor/ui/TemplateSelectorDialog.js.map +1 -1
  604. package/dist/editor/ui/WorkboxItemsTable.js +2 -2
  605. package/dist/editor/ui/WorkboxItemsTable.js.map +1 -1
  606. package/dist/editor/utils.js +6 -0
  607. package/dist/editor/utils.js.map +1 -1
  608. package/dist/editor/version-diff/versionDiffTargets.js +2 -1
  609. package/dist/editor/version-diff/versionDiffTargets.js.map +1 -1
  610. package/dist/editor/views/EditorSlot.js +1 -1
  611. package/dist/editor/views/EditorSlot.js.map +1 -1
  612. package/dist/editor/views/ItemEditor.js +2 -2
  613. package/dist/editor/views/ItemEditor.js.map +1 -1
  614. package/dist/editor/views/SingleEditView.js +2 -2
  615. package/dist/index.d.ts +0 -1
  616. package/dist/index.js +0 -1
  617. package/dist/index.js.map +1 -1
  618. package/dist/licensing/EmailEntry.js +1 -1
  619. package/dist/licensing/EmailEntry.js.map +1 -1
  620. package/dist/licensing/FeatureGate.js +1 -1
  621. package/dist/licensing/LicenseActivationForm.js +1 -1
  622. package/dist/licensing/LicenseActivationForm.js.map +1 -1
  623. package/dist/licensing/LicenseCodeEntry.js +1 -1
  624. package/dist/licensing/LicenseCodeEntry.js.map +1 -1
  625. package/dist/licensing/LicenseOverlay.js +2 -2
  626. package/dist/licensing/LicenseOverlay.js.map +1 -1
  627. package/dist/revision.d.ts +2 -2
  628. package/dist/revision.js +2 -2
  629. package/dist/setup/services/setupWizardService.js +4 -1
  630. package/dist/setup/services/setupWizardService.js.map +1 -1
  631. package/dist/setup/wizard/steps/AddModelDialog.js +1 -1
  632. package/dist/setup/wizard/steps/AddModelDialog.js.map +1 -1
  633. package/dist/setup/wizard/steps/ImportModelDialog.js +3 -3
  634. package/dist/setup/wizard/steps/ImportModelDialog.js.map +1 -1
  635. package/dist/splash-screen/ModernSplashScreen.d.ts +1 -1
  636. package/dist/splash-screen/ModernSplashScreen.js +11 -11
  637. package/dist/splash-screen/ModernSplashScreen.js.map +1 -1
  638. package/dist/splash-screen/NewPage.js +3 -3
  639. package/dist/splash-screen/NewPage.js.map +1 -1
  640. package/dist/splash-screen/OpenPage.js +1 -1
  641. package/dist/splash-screen/OpenPage.js.map +1 -1
  642. package/dist/splash-screen/ParheliaAssistantChat.js +7 -7
  643. package/dist/splash-screen/ParheliaAssistantChat.js.map +1 -1
  644. package/dist/splash-screen/RecentPages.js +1 -1
  645. package/dist/splash-screen/RecentPages.js.map +1 -1
  646. package/dist/task-board/TaskBoardWorkspace.js +1 -1
  647. package/dist/task-board/TaskBoardWorkspace.js.map +1 -1
  648. package/dist/task-board/components/CommentsList.js +4 -4
  649. package/dist/task-board/components/CommentsList.js.map +1 -1
  650. package/dist/task-board/components/FinishedProjectCard.js +1 -1
  651. package/dist/task-board/components/FinishedProjectCard.js.map +1 -1
  652. package/dist/task-board/components/ItemCollectionEditorDialog.js +1 -1
  653. package/dist/task-board/components/ItemCollectionEditorDialog.js.map +1 -1
  654. package/dist/task-board/components/ItemCollectionPicker.js +1 -1
  655. package/dist/task-board/components/ItemCollectionPicker.js.map +1 -1
  656. package/dist/task-board/components/ProjectBudgetBanner.js +1 -1
  657. package/dist/task-board/components/ProjectBudgetBanner.js.map +1 -1
  658. package/dist/task-board/components/ProjectDashboard.js +4 -4
  659. package/dist/task-board/components/ProjectDashboard.js.map +1 -1
  660. package/dist/task-board/components/ProjectGoalsPanel.js +17 -13
  661. package/dist/task-board/components/ProjectGoalsPanel.js.map +1 -1
  662. package/dist/task-board/components/ProjectListContent.js +5 -5
  663. package/dist/task-board/components/ProjectListContent.js.map +1 -1
  664. package/dist/task-board/components/ProjectOverviewContent.js +4 -4
  665. package/dist/task-board/components/ProjectOverviewContent.js.map +1 -1
  666. package/dist/task-board/components/ProjectPropertiesPanel.js +5 -5
  667. package/dist/task-board/components/ProjectPropertiesPanel.js.map +1 -1
  668. package/dist/task-board/components/ProjectSettingsDialog.js +3 -3
  669. package/dist/task-board/components/ProjectSettingsDialog.js.map +1 -1
  670. package/dist/task-board/components/TaskAgentPanel.js +4 -4
  671. package/dist/task-board/components/TaskAgentPanel.js.map +1 -1
  672. package/dist/task-board/components/TaskAssigneePicker.js +4 -4
  673. package/dist/task-board/components/TaskAssigneePicker.js.map +1 -1
  674. package/dist/task-board/components/TaskAttachmentDropZone.js +3 -3
  675. package/dist/task-board/components/TaskAttachmentDropZone.js.map +1 -1
  676. package/dist/task-board/components/TaskAttachmentsSection.js +1 -1
  677. package/dist/task-board/components/TaskAttachmentsSection.js.map +1 -1
  678. package/dist/task-board/components/TaskBoardMyTasksSidebar.js +1 -1
  679. package/dist/task-board/components/TaskBoardMyTasksSidebar.js.map +1 -1
  680. package/dist/task-board/components/TaskBoardProjectListSidebar.js +4 -4
  681. package/dist/task-board/components/TaskBoardProjectListSidebar.js.map +1 -1
  682. package/dist/task-board/components/TaskBoardProjectSelector.js +1 -1
  683. package/dist/task-board/components/TaskBoardProjectSelector.js.map +1 -1
  684. package/dist/task-board/components/TaskBoardTitlebar.js +1 -1
  685. package/dist/task-board/components/TaskBoardTitlebar.js.map +1 -1
  686. package/dist/task-board/components/TaskCard.js +1 -1
  687. package/dist/task-board/components/TaskCard.js.map +1 -1
  688. package/dist/task-board/components/TaskDetailPanel.js +6 -6
  689. package/dist/task-board/components/TaskDetailPanel.js.map +1 -1
  690. package/dist/task-board/components/TaskReviewActions.js +6 -6
  691. package/dist/task-board/components/TaskReviewActions.js.map +1 -1
  692. package/dist/task-board/components/TaskRow.js +1 -1
  693. package/dist/task-board/components/TaskRow.js.map +1 -1
  694. package/dist/task-board/components/TaskboardPersistentLogPanel.js +3 -3
  695. package/dist/task-board/components/TaskboardPersistentLogPanel.js.map +1 -1
  696. package/dist/task-board/components/WizardCommunicationCards.js +3 -3
  697. package/dist/task-board/components/WizardCommunicationCards.js.map +1 -1
  698. package/dist/task-board/components/WizardCommunicationCenter.js +1 -1
  699. package/dist/task-board/components/WizardCommunicationCenter.js.map +1 -1
  700. package/dist/task-board/components/WizardTaskDetailsPanel.js +3 -3
  701. package/dist/task-board/components/WizardTaskDetailsPanel.js.map +1 -1
  702. package/dist/task-board/views/DependencyGraphView.js +8 -8
  703. package/dist/task-board/views/DependencyGraphView.js.map +1 -1
  704. package/dist/task-board/views/WizardView.js +4 -4
  705. package/dist/task-board/views/WizardView.js.map +1 -1
  706. package/dist/tour/default-tour.js +17 -17
  707. package/dist/tour/default-tour.js.map +1 -1
  708. package/dist/tour/preview-tour.js +6 -6
  709. package/dist/tour/preview-tour.js.map +1 -1
  710. package/dist/types.d.ts +13 -5
  711. package/package.json +1 -1
  712. package/styles.css +25 -2
@@ -7,8 +7,10 @@ import { useSlotContext } from "../views/editorSlotContext";
7
7
  import { useDebouncedCallback, useThrottledCallback } from "use-debounce";
8
8
  import { PageEditorChrome } from "../page-editor-chrome/PageEditorChrome";
9
9
  import { useBridgeInlineEditing, } from "../page-editor-chrome/useBridgeInlineEditing";
10
+ import { createBridgeInlineEditSessionCoordinator, } from "./bridgeInlineEditSession";
10
11
  import { getInlineAiAnchorFromBridgeToolbar, getVisibleBridgeToolbarRect, waitForVisibleBridgeToolbarRect, } from "../page-editor-chrome/bridgeInlineFormatToolbarLayout";
11
12
  import { IFRAME_OVERLAY_BRIDGE_DRAG_GESTURE_EVENT, IFRAME_OVERLAY_BRIDGE_GEOMETRY_EVENT, IFRAME_OVERLAY_BRIDGE_SCROLL_EVENT, IframeOverlayProvider, } from "../page-editor-chrome/overlay/IframeOverlayProvider";
13
+ import { projectBridgeGeometryToScroll } from "../page-editor-chrome/overlay/geometry";
12
14
  import { CANVAS_REFRESH_COMPLETED_EVENT, DEVICE_CHANGE_EVENT, useViewportChangeSignal, } from "./pageViewContext";
13
15
  import uuid from "react-uuid";
14
16
  import { cn } from "../../lib/utils";
@@ -29,8 +31,8 @@ import { toSitecoreDate } from "../utils/sitecoreDate";
29
31
  import { pickVersionAtDate } from "../utils/versionAtDate";
30
32
  import { BridgeClient } from "../bridge/BridgeClient";
31
33
  import { beginPerfTrace, isPerfTraceActive, isPerfTraceEnabled, perfTraceStep, } from "../perfTrace";
32
- import { getSuggestionDisplayValue } from "../reviews/suggestionDisplayValue";
33
- import { buildBridgeFieldPatchPayload, getBridgeFieldPatchValue, isBridgePatchableTextField, reduceActiveBridgeInlineEditForRefreshEvent, } from "./bridgeFieldPatch";
34
+ import { getPendingFieldSuggestions, getSuggestionSelectionKey, getSuggestionDisplayValue, } from "../reviews/suggestionDisplayValue";
35
+ import { buildBridgeFieldPatchPayload, buildBridgeFieldPatchSignature, buildRemoteCaretFieldPatches, getBridgeFieldPatchValue, hasRemoteCaretDraftForField, isBridgePatchableTextField, isSuggestionPreviewPatchSignature, } from "./bridgeFieldPatch";
34
36
  import { bridgeSelectionMatchesInteraction, resolveBridgeTextCompletionInput, } from "./bridgeTextCompletion";
35
37
  import { logFieldValueDiagnostic, summarizeField, summarizeFieldDescriptor, summarizeFieldValue, } from "../fieldValueDiagnostics";
36
38
  import { createKeyboardEventFromBridgeInteraction } from "./bridgeKeyboardShortcuts";
@@ -618,18 +620,21 @@ function PageViewerFrameContent({ compareView, pageViewContext, editContext, cla
618
620
  const bridgeTextRangeSourcesRef = useRef(new Map());
619
621
  const activeBridgeInlineEditRef = useRef(null);
620
622
  const [isBridgeInlineEditing, setIsBridgeInlineEditing] = useState(false);
623
+ const bridgeInlineEditSessionRef = useRef(null);
624
+ if (!bridgeInlineEditSessionRef.current) {
625
+ bridgeInlineEditSessionRef.current =
626
+ createBridgeInlineEditSessionCoordinator({
627
+ stateRef: activeBridgeInlineEditRef,
628
+ onStateChange: (state) => setIsBridgeInlineEditing(!!state),
629
+ });
630
+ }
631
+ const bridgeInlineEditSession = bridgeInlineEditSessionRef.current;
621
632
  const clearActiveBridgeInlineEdit = useCallback(() => {
622
- activeBridgeInlineEditRef.current = null;
623
- setIsBridgeInlineEditing(false);
624
- }, []);
633
+ bridgeInlineEditSession.clear();
634
+ }, [bridgeInlineEditSession]);
625
635
  const reconcileActiveBridgeInlineEdit = useCallback((event) => {
626
- const current = activeBridgeInlineEditRef.current;
627
- const reconciled = reduceActiveBridgeInlineEditForRefreshEvent(current, event);
628
- if (reconciled === current)
629
- return;
630
- activeBridgeInlineEditRef.current = reconciled;
631
- setIsBridgeInlineEditing(!!reconciled);
632
- }, []);
636
+ bridgeInlineEditSession.reconcileForRefreshEvent(event);
637
+ }, [bridgeInlineEditSession]);
633
638
  const bridgeTextCompletionRef = useRef(null);
634
639
  const bridgeTextCompletionAbortRef = useRef(null);
635
640
  const bridgeTextCompletionRequestIdRef = useRef(0);
@@ -654,6 +659,7 @@ function PageViewerFrameContent({ compareView, pageViewContext, editContext, cla
654
659
  // skipped entirely: the bridge learns the mode via setEditorMode, and a
655
660
  // needless refresh would drop scroll position and inline-edit state.
656
661
  const lastRenderSignatureRef = useRef(undefined);
662
+ const lastRenderModeRef = useRef(editContext.mode);
657
663
  // Set when a canvas refresh (bridge patch or full reload) has been requested
658
664
  // and its result has not landed yet. While in flight, bridgeGeometry still
659
665
  // describes the PRE-refresh DOM — a moved component is still measured at its
@@ -806,6 +812,19 @@ function PageViewerFrameContent({ compareView, pageViewContext, editContext, cla
806
812
  setBridgeGeometryRevision((revision) => revision + 1);
807
813
  });
808
814
  }, []);
815
+ const projectCurrentBridgeGeometryToScroll = useCallback((scroll) => {
816
+ const activeContext = pageViewContextRef.current;
817
+ const currentGeometry = activeContext?.bridgeGeometry;
818
+ const projectedGeometry = projectBridgeGeometryToScroll(currentGeometry, scroll);
819
+ if (!activeContext ||
820
+ !projectedGeometry ||
821
+ projectedGeometry === currentGeometry) {
822
+ return;
823
+ }
824
+ activeContext.bridgeGeometry = projectedGeometry;
825
+ activeContext.setBridgeGeometry(projectedGeometry);
826
+ scheduleBridgeGeometryRevision();
827
+ }, [scheduleBridgeGeometryRevision]);
809
828
  const scheduleBridgeDomRevision = useCallback(() => {
810
829
  if (bridgeDomRevisionRafRef.current != null)
811
830
  return;
@@ -897,7 +916,7 @@ function PageViewerFrameContent({ compareView, pageViewContext, editContext, cla
897
916
  }, []);
898
917
  const { beginInlineEdit: beginBridgeInlineEdit, clearInlineDedupe: clearBridgeInlineDedupe, endFieldFocus: endBridgeFieldFocus, handleFieldValueChanged: handleBridgeFieldValueChanged, handleInlineEditEnded: handleBridgeInlineEditEnded, } = useBridgeInlineEditing({
899
918
  pageViewContextRef,
900
- activeBridgeInlineEditRef,
919
+ inlineEditSession: bridgeInlineEditSession,
901
920
  blockIframeBlurUntil,
902
921
  sendBeginInlineEdit,
903
922
  sendCancelInlineEdit,
@@ -916,30 +935,27 @@ function PageViewerFrameContent({ compareView, pageViewContext, editContext, cla
916
935
  selectionEndOffset: interaction.selectionEndOffset,
917
936
  },
918
937
  });
919
- clearActiveBridgeInlineEdit();
920
- const started = await beginBridgeInlineEdit(interaction);
921
- if (started && interaction.elementKey && interaction.fieldId) {
922
- const interactionItem = interaction.item?.id &&
923
- interaction.item.language &&
924
- typeof interaction.item.version === "number"
925
- ? {
926
- id: interaction.item.id,
927
- language: interaction.item.language,
928
- version: interaction.item.version,
929
- name: interaction.item.name,
930
- displayName: interaction.item.displayName,
931
- path: interaction.item.path,
932
- database: interaction.item.database,
933
- }
934
- : undefined;
935
- activeBridgeInlineEditRef.current = {
936
- elementKey: interaction.elementKey,
937
- fieldId: interaction.fieldId,
938
- item: interactionItem,
939
- modeAtStart: editContextRef.current?.mode ?? editContext.mode,
940
- };
941
- setIsBridgeInlineEditing(true);
942
- }
938
+ if (!interaction.elementKey || !interaction.fieldId)
939
+ return false;
940
+ const interactionItem = interaction.item?.id &&
941
+ interaction.item.language &&
942
+ typeof interaction.item.version === "number"
943
+ ? {
944
+ id: interaction.item.id,
945
+ language: interaction.item.language,
946
+ version: interaction.item.version,
947
+ name: interaction.item.name,
948
+ displayName: interaction.item.displayName,
949
+ path: interaction.item.path,
950
+ database: interaction.item.database,
951
+ }
952
+ : undefined;
953
+ const started = await bridgeInlineEditSession.beginSession({
954
+ elementKey: interaction.elementKey,
955
+ fieldId: interaction.fieldId,
956
+ item: interactionItem,
957
+ modeAtStart: editContextRef.current?.mode ?? editContext.mode,
958
+ }, ({ isCurrent, sessionId }) => beginBridgeInlineEdit(interaction, { isCurrent, sessionId }));
943
959
  logFieldValueDiagnostic("bridge-frame", "tracked inline edit result", {
944
960
  started,
945
961
  nextActiveInlineEdit: activeBridgeInlineEditRef.current,
@@ -947,7 +963,7 @@ function PageViewerFrameContent({ compareView, pageViewContext, editContext, cla
947
963
  return started;
948
964
  }, [
949
965
  beginBridgeInlineEdit,
950
- clearActiveBridgeInlineEdit,
966
+ bridgeInlineEditSession,
951
967
  editContext.mode,
952
968
  editContextRef,
953
969
  ]);
@@ -1015,6 +1031,11 @@ function PageViewerFrameContent({ compareView, pageViewContext, editContext, cla
1015
1031
  const getBridgePatchDisplayValue = useCallback(({ field, structureField, itemDescriptor, preferRepositoryValue, }) => {
1016
1032
  const showSuggestions = editContext.mode === "suggestions" || editContext.showSuggestedEdits;
1017
1033
  const repositoryValue = getBridgeFieldPatchValue(field);
1034
+ const selectionKey = getSuggestionSelectionKey({
1035
+ itemId: itemDescriptor.id,
1036
+ language: itemDescriptor.language,
1037
+ fieldId: field.id || structureField.fieldId,
1038
+ });
1018
1039
  const display = getSuggestionDisplayValue({
1019
1040
  repositoryValue,
1020
1041
  modifiedFields: preferRepositoryValue
@@ -1027,12 +1048,14 @@ function PageViewerFrameContent({ compareView, pageViewContext, editContext, cla
1027
1048
  language: itemDescriptor.language,
1028
1049
  version: itemDescriptor.version,
1029
1050
  pageItemId: pageViewContext.pageItemDescriptor?.id,
1051
+ pageItemLanguage: pageViewContext.pageItemDescriptor?.language,
1030
1052
  pageItemVersion: pageViewContext.pageItemDescriptor?.version,
1031
1053
  },
1032
1054
  mode: showSuggestions ? "suggestions" : "baseline",
1055
+ selectedVariantId: editContext.suggestionVariantSelection[selectionKey],
1033
1056
  });
1034
1057
  const result = {
1035
- value: showSuggestions ? display.mergedValue : display.baselineValue,
1058
+ value: showSuggestions ? display.selectedValue : display.baselineValue,
1036
1059
  source: showSuggestions && display.hasSuggestions
1037
1060
  ? "suggestion-preview"
1038
1061
  : "real",
@@ -1062,6 +1085,7 @@ function PageViewerFrameContent({ compareView, pageViewContext, editContext, cla
1062
1085
  editContext.mode,
1063
1086
  editContext.showSuggestedEdits,
1064
1087
  editContext.suggestedEdits,
1088
+ editContext.suggestionVariantSelection,
1065
1089
  fieldsContext?.modifiedFields,
1066
1090
  pageViewContext.pageItemDescriptor,
1067
1091
  ]);
@@ -1086,12 +1110,7 @@ function PageViewerFrameContent({ compareView, pageViewContext, editContext, cla
1086
1110
  }, []);
1087
1111
  const sendBridgeFieldPatch = useCallback((bridge, patch, observedTextContent) => {
1088
1112
  const cacheKey = `${patch.elementKey}:${patch.fieldId}`;
1089
- const signature = JSON.stringify({
1090
- value: patch.value,
1091
- isRichText: !!patch.isRichText,
1092
- source: patch.source ?? "",
1093
- observedTextContent: observedTextContent ?? "",
1094
- });
1113
+ const signature = buildBridgeFieldPatchSignature(patch, observedTextContent);
1095
1114
  const previousSignature = bridgePatchSignatureRef.current.get(cacheKey);
1096
1115
  if (previousSignature === signature) {
1097
1116
  logFieldValueDiagnostic("bridge-patch", "skipped duplicate send", {
@@ -1133,6 +1152,7 @@ function PageViewerFrameContent({ compareView, pageViewContext, editContext, cla
1133
1152
  const offset = selection.startOffset ?? selection.endOffset;
1134
1153
  if (!editor ||
1135
1154
  !activeField?.fieldId ||
1155
+ activeField.inlineEditing !== true ||
1136
1156
  !selection.collapsed ||
1137
1157
  offset == null) {
1138
1158
  clearBridgeRemoteCaretPosition();
@@ -1153,19 +1173,50 @@ function PageViewerFrameContent({ compareView, pageViewContext, editContext, cla
1153
1173
  ...sourceItem,
1154
1174
  version,
1155
1175
  };
1156
- const nextKey = `${activeField.fieldId}:${item.id}:${item.language}:${item.version}:${offset}`;
1176
+ const nextKey = JSON.stringify({
1177
+ fieldId: activeField.fieldId,
1178
+ item,
1179
+ offset,
1180
+ value: activeField.value,
1181
+ });
1157
1182
  if (lastSentBridgeCaretRef.current === nextKey)
1158
1183
  return;
1184
+ logFieldValueDiagnostic("bridge-caret", "sending position", {
1185
+ fieldId: activeField.fieldId,
1186
+ item,
1187
+ offset,
1188
+ value: summarizeFieldValue(activeField.value),
1189
+ });
1159
1190
  editor.sendSocketMessage({
1160
1191
  type: "caret-position",
1161
1192
  payload: {
1162
1193
  fieldId: activeField.fieldId,
1163
1194
  item,
1164
1195
  offset,
1196
+ value: activeField.value,
1165
1197
  },
1166
1198
  });
1167
1199
  lastSentBridgeCaretRef.current = nextKey;
1168
1200
  }, [clearBridgeRemoteCaretPosition, editContextRef, pageViewContextRef]);
1201
+ useEffect(() => {
1202
+ const bridge = bridgeClientRef.current;
1203
+ const structureFields = pageViewContext.bridgeStructure?.fields ?? [];
1204
+ if (!bridge || structureFields.length === 0)
1205
+ return;
1206
+ const patches = buildRemoteCaretFieldPatches({
1207
+ remoteCarets: editContext.remoteCarets,
1208
+ structureFields,
1209
+ activeInlineEdit: activeBridgeInlineEditRef.current,
1210
+ });
1211
+ for (const patch of patches) {
1212
+ const structureField = structureFields.find((field) => field.elementKey === patch.elementKey);
1213
+ sendBridgeFieldPatch(bridge, patch, structureField?.textContent);
1214
+ }
1215
+ }, [
1216
+ editContext.remoteCarets,
1217
+ pageViewContext.bridgeStructure,
1218
+ sendBridgeFieldPatch,
1219
+ ]);
1169
1220
  const handleBridgeSelection = useCallback((selection, iframe) => {
1170
1221
  const editor = editContextRef.current;
1171
1222
  if (!editor)
@@ -1305,8 +1356,27 @@ function PageViewerFrameContent({ compareView, pageViewContext, editContext, cla
1305
1356
  addCandidateItem(component?.datasourceItem);
1306
1357
  component?.items.forEach(addCandidateItem);
1307
1358
  addCandidateItem(fallbackItem);
1359
+ const fallbackDescriptorItem = candidateItems[0];
1360
+ if (!fallbackDescriptorItem)
1361
+ return undefined;
1362
+ // Limited-preview users only need read-only actions such as comments.
1363
+ // The bridge already provides the reviewed item's field descriptor, while
1364
+ // repository hydration may be intentionally denied by preview access.
1365
+ if (editContextRef.current?.user?.isLimitedPreviewUser) {
1366
+ return { fieldId, item: fallbackDescriptorItem };
1367
+ }
1308
1368
  for (const item of candidateItems) {
1309
- const repositoryItem = await editContextRef.current?.itemsRepository.getItem(item);
1369
+ let repositoryItem;
1370
+ try {
1371
+ repositoryItem =
1372
+ await editContextRef.current?.itemsRepository.getItem(item);
1373
+ }
1374
+ catch {
1375
+ // Review-preview access may allow the rendered page while denying a
1376
+ // repository candidate. Keep trying and fall back to the bridge
1377
+ // descriptor so read-only context-menu actions can still load.
1378
+ continue;
1379
+ }
1310
1380
  const repositoryField = repositoryItem?.fields.find((field) => fieldIdentifierMatches(field, fieldId));
1311
1381
  if (repositoryField) {
1312
1382
  return {
@@ -1315,9 +1385,6 @@ function PageViewerFrameContent({ compareView, pageViewContext, editContext, cla
1315
1385
  };
1316
1386
  }
1317
1387
  }
1318
- const fallbackDescriptorItem = candidateItems[0];
1319
- if (!fallbackDescriptorItem)
1320
- return undefined;
1321
1388
  return {
1322
1389
  fieldId,
1323
1390
  item: fallbackDescriptorItem,
@@ -1774,41 +1841,59 @@ function PageViewerFrameContent({ compareView, pageViewContext, editContext, cla
1774
1841
  },
1775
1842
  ]);
1776
1843
  }, 100);
1777
- const field = await resolveBridgeFieldDescriptor(effectiveInteraction);
1778
- const fieldButtons = field ? await loadFieldButtons(field) : [];
1779
- const handleParameterizedActionWithPosition = (field, action) => {
1780
- setContextMenuField(field);
1781
- setContextMenuFieldButtons([action]);
1782
- setPreSelectedAction(action);
1783
- window.setTimeout(() => {
1784
- const tempElement = document.createElement("div");
1785
- tempElement.style.position = "fixed";
1786
- tempElement.style.left = menuPosition.x + "px";
1787
- tempElement.style.top = menuPosition.y + "px";
1788
- tempElement.style.width = "1px";
1789
- tempElement.style.height = "1px";
1790
- tempElement.style.visibility = "hidden";
1791
- tempElement.style.pointerEvents = "none";
1792
- document.body.appendChild(tempElement);
1793
- const positionedEvent = new MouseEvent("click", {
1794
- bubbles: true,
1795
- cancelable: true,
1796
- view: window,
1797
- clientX: menuPosition.x,
1798
- clientY: menuPosition.y,
1799
- });
1800
- Object.defineProperty(positionedEvent, "target", {
1801
- value: tempElement,
1802
- enumerable: true,
1803
- });
1804
- fieldActionsOverlay.current?.show(positionedEvent, action);
1844
+ let items = [];
1845
+ try {
1846
+ const field = await resolveBridgeFieldDescriptor(effectiveInteraction);
1847
+ const canLoadFieldButtons = !!field && !editor.readonly && !editor.user?.isLimitedPreviewUser;
1848
+ const fieldButtons = canLoadFieldButtons
1849
+ ? await loadFieldButtons(field)
1850
+ : [];
1851
+ const handleParameterizedActionWithPosition = (field, action) => {
1852
+ setContextMenuField(field);
1853
+ setContextMenuFieldButtons([action]);
1854
+ setPreSelectedAction(action);
1805
1855
  window.setTimeout(() => {
1806
- tempElement.remove();
1807
- }, 1000);
1808
- }, 100);
1809
- };
1810
- const items = await buildComponentContextMenuItems(selectedComponents, editor, field, fieldButtons, handleParameterizedActionWithPosition);
1811
- window.clearTimeout(loadingTimer);
1856
+ const tempElement = document.createElement("div");
1857
+ tempElement.style.position = "fixed";
1858
+ tempElement.style.left = menuPosition.x + "px";
1859
+ tempElement.style.top = menuPosition.y + "px";
1860
+ tempElement.style.width = "1px";
1861
+ tempElement.style.height = "1px";
1862
+ tempElement.style.visibility = "hidden";
1863
+ tempElement.style.pointerEvents = "none";
1864
+ document.body.appendChild(tempElement);
1865
+ const positionedEvent = new MouseEvent("click", {
1866
+ bubbles: true,
1867
+ cancelable: true,
1868
+ view: window,
1869
+ clientX: menuPosition.x,
1870
+ clientY: menuPosition.y,
1871
+ });
1872
+ Object.defineProperty(positionedEvent, "target", {
1873
+ value: tempElement,
1874
+ enumerable: true,
1875
+ });
1876
+ fieldActionsOverlay.current?.show(positionedEvent, action);
1877
+ window.setTimeout(() => {
1878
+ tempElement.remove();
1879
+ }, 1000);
1880
+ }, 100);
1881
+ };
1882
+ items = await buildComponentContextMenuItems(selectedComponents, editor, field, fieldButtons, handleParameterizedActionWithPosition);
1883
+ }
1884
+ catch (error) {
1885
+ console.error("Failed to build component context menu:", error);
1886
+ items = [
1887
+ {
1888
+ id: "context-menu-error",
1889
+ label: "Unable to load menu",
1890
+ disabled: true,
1891
+ },
1892
+ ];
1893
+ }
1894
+ finally {
1895
+ window.clearTimeout(loadingTimer);
1896
+ }
1812
1897
  if (loadingShown) {
1813
1898
  editor.updateContextMenu(items);
1814
1899
  }
@@ -1906,6 +1991,8 @@ function PageViewerFrameContent({ compareView, pageViewContext, editContext, cla
1906
1991
  return;
1907
1992
  lastX = scroll.x;
1908
1993
  lastY = scroll.y;
1994
+ latestBridgeScrollRef.current = scroll;
1995
+ projectCurrentBridgeGeometryToScroll(scroll);
1909
1996
  dispatchBridgeOverlayScroll(iframe, scroll, getBridgeGeometryScrollScale(pageViewContextRef.current?.bridgeGeometry));
1910
1997
  };
1911
1998
  iframeDocument.addEventListener("scroll", handleScroll, {
@@ -1928,7 +2015,7 @@ function PageViewerFrameContent({ compareView, pageViewContext, editContext, cla
1928
2015
  detach?.();
1929
2016
  directOverlayScrollSyncRef.current = false;
1930
2017
  };
1931
- }, [iframeElement, loadedIframeSrc]);
2018
+ }, [iframeElement, loadedIframeSrc, projectCurrentBridgeGeometryToScroll]);
1932
2019
  useEffect(() => {
1933
2020
  const iframe = iframeElement;
1934
2021
  if (!iframe)
@@ -2038,19 +2125,22 @@ function PageViewerFrameContent({ compareView, pageViewContext, editContext, cla
2038
2125
  transportMs: Date.now() - event.timestamp,
2039
2126
  });
2040
2127
  }
2041
- latestBridgeScrollRef.current = event.payload.geometry.scroll;
2042
- pageViewContext.bridgeGeometry = event.payload.geometry;
2043
- pageViewContext.setBridgeGeometry(event.payload.geometry);
2044
- scheduleBridgeGeometryRevision();
2045
- // The snapshot's scroll can be a frame older than what the direct
2046
- // same-origin listener already applied; prefer the live position.
2047
- const overlayScroll = (directOverlayScrollSyncRef.current
2128
+ // Geometry replies race the iframe's synchronous scroll event. A
2129
+ // reply measured before the scroll must not replace the projected
2130
+ // rects with a stale snapshot while the overlay layer is already
2131
+ // positioned at the live scroll offset.
2132
+ const liveScroll = (directOverlayScrollSyncRef.current
2048
2133
  ? getIframeWindowScroll(iframe)
2049
2134
  : undefined) ?? event.payload.geometry.scroll;
2050
- dispatchBridgeOverlayScroll(iframe, overlayScroll, getBridgeGeometryScrollScale(event.payload.geometry));
2051
- dispatchBridgeOverlayGeometry(iframe, event.payload.geometry, overlayScroll);
2135
+ const geometry = projectBridgeGeometryToScroll(event.payload.geometry, liveScroll) ?? event.payload.geometry;
2136
+ latestBridgeScrollRef.current = geometry.scroll;
2137
+ pageViewContext.bridgeGeometry = geometry;
2138
+ pageViewContext.setBridgeGeometry(geometry);
2139
+ scheduleBridgeGeometryRevision();
2140
+ dispatchBridgeOverlayScroll(iframe, geometry.scroll, getBridgeGeometryScrollScale(geometry));
2141
+ dispatchBridgeOverlayGeometry(iframe, geometry, geometry.scroll);
2052
2142
  if (shouldTrackMinimapScroll()) {
2053
- scrollHandlerRef.current(event.payload.geometry.scroll.y);
2143
+ scrollHandlerRef.current(geometry.scroll.y);
2054
2144
  }
2055
2145
  break;
2056
2146
  }
@@ -2096,20 +2186,25 @@ function PageViewerFrameContent({ compareView, pageViewContext, editContext, cla
2096
2186
  pageViewContext.setBridgeStructure(event.payload.structure);
2097
2187
  }
2098
2188
  if (event.payload.geometry) {
2099
- latestBridgeScrollRef.current = event.payload.geometry.scroll;
2100
- pageViewContext.bridgeGeometry = event.payload.geometry;
2101
- pageViewContext.setBridgeGeometry(event.payload.geometry);
2102
- scheduleBridgeGeometryRevision();
2103
- const overlayScroll = (directOverlayScrollSyncRef.current
2189
+ const liveScroll = (directOverlayScrollSyncRef.current
2104
2190
  ? getIframeWindowScroll(iframe)
2105
2191
  : undefined) ?? event.payload.geometry.scroll;
2106
- dispatchBridgeOverlayScroll(iframe, overlayScroll, getBridgeGeometryScrollScale(event.payload.geometry));
2107
- dispatchBridgeOverlayGeometry(iframe, event.payload.geometry, overlayScroll);
2192
+ const geometry = projectBridgeGeometryToScroll(event.payload.geometry, liveScroll) ?? event.payload.geometry;
2193
+ latestBridgeScrollRef.current = geometry.scroll;
2194
+ pageViewContext.bridgeGeometry = geometry;
2195
+ pageViewContext.setBridgeGeometry(geometry);
2196
+ scheduleBridgeGeometryRevision();
2197
+ dispatchBridgeOverlayScroll(iframe, geometry.scroll, getBridgeGeometryScrollScale(geometry));
2198
+ dispatchBridgeOverlayGeometry(iframe, geometry, geometry.scroll);
2108
2199
  if (shouldTrackMinimapScroll()) {
2109
- scrollHandlerRef.current(event.payload.geometry.scroll.y);
2200
+ scrollHandlerRef.current(geometry.scroll.y);
2110
2201
  }
2111
2202
  }
2112
- if (event.payload.scrollIntentApplied) {
2203
+ const replayedScrollIsNewerThanCapture = event.payload.scrollIntentApplied &&
2204
+ (typeof event.payload.scrollIntentTimestamp !== "number" ||
2205
+ event.payload.scrollIntentTimestamp >=
2206
+ pendingRefreshScrollCapturedAtRef.current);
2207
+ if (replayedScrollIsNewerThanCapture) {
2113
2208
  // The host already replayed a scroll issued during the refresh
2114
2209
  // (e.g. a minimap navigation) — restoring the pre-refresh
2115
2210
  // position now would clobber that newer intent.
@@ -2148,9 +2243,6 @@ function PageViewerFrameContent({ compareView, pageViewContext, editContext, cla
2148
2243
  handleBridgeSelection(event.payload.selection, iframe);
2149
2244
  break;
2150
2245
  case "fieldValueChanged":
2151
- if (event.payload.elementKey && event.payload.fieldId) {
2152
- setIsBridgeInlineEditing(true);
2153
- }
2154
2246
  logFieldValueDiagnostic("bridge-frame", "fieldValueChanged event", {
2155
2247
  elementKey: event.payload.elementKey,
2156
2248
  fieldId: event.payload.fieldId,
@@ -2171,9 +2263,15 @@ function PageViewerFrameContent({ compareView, pageViewContext, editContext, cla
2171
2263
  value: summarizeFieldValue(event.payload.value),
2172
2264
  activeInlineEdit: activeBridgeInlineEditRef.current,
2173
2265
  });
2174
- handleBridgeInlineEditEnded(event.payload);
2175
- clearActiveBridgeInlineEdit();
2176
- logFieldValueDiagnostic("bridge-frame", "active inline edit cleared after end", {
2266
+ const inlineEditEnd = bridgeInlineEditSession.end(event.payload);
2267
+ handleBridgeInlineEditEnded(event.payload, {
2268
+ recordSession: false,
2269
+ releaseFocus: inlineEditEnd.matched,
2270
+ endedModeAtStart: inlineEditEnd.endedState?.modeAtStart,
2271
+ });
2272
+ logFieldValueDiagnostic("bridge-frame", inlineEditEnd.matched
2273
+ ? "active inline edit cleared after end"
2274
+ : "non-current inline edit end persisted", {
2177
2275
  fieldId: event.payload.fieldId,
2178
2276
  reason: event.payload.reason,
2179
2277
  });
@@ -2232,6 +2330,7 @@ function PageViewerFrameContent({ compareView, pageViewContext, editContext, cla
2232
2330
  break;
2233
2331
  case "scrollChanged":
2234
2332
  latestBridgeScrollRef.current = event.payload.scroll;
2333
+ projectCurrentBridgeGeometryToScroll(event.payload.scroll);
2235
2334
  // With the direct same-origin listener active, this message is a
2236
2335
  // late echo of a scroll the overlay already applied; re-dispatching
2237
2336
  // it would briefly drag the overlay back to a stale position.
@@ -2273,6 +2372,7 @@ function PageViewerFrameContent({ compareView, pageViewContext, editContext, cla
2273
2372
  clearBridgeTextCompletion,
2274
2373
  clearBridgePatchSignatures,
2275
2374
  clearActiveBridgeInlineEdit,
2375
+ bridgeInlineEditSession,
2276
2376
  reconcileActiveBridgeInlineEdit,
2277
2377
  pageViewContext.editUrl,
2278
2378
  pageViewContext.previewUrl,
@@ -2310,6 +2410,17 @@ function PageViewerFrameContent({ compareView, pageViewContext, editContext, cla
2310
2410
  if (!bridgeFieldMatchesChangedField(structureField.fieldId, changedFieldId, field)) {
2311
2411
  continue;
2312
2412
  }
2413
+ // A remote session is live-syncing this field: its draft is
2414
+ // authoritative, and the saved-value echo behind this change is
2415
+ // stale mid-typing — applying it would roll the canvas text back
2416
+ // and make the remote caret jump against the shorter text.
2417
+ if (hasRemoteCaretDraftForField({
2418
+ remoteCarets: editContextRef.current?.remoteCarets,
2419
+ fieldId: structureField.fieldId,
2420
+ item: structureField.item,
2421
+ })) {
2422
+ continue;
2423
+ }
2313
2424
  const patch = buildBridgeFieldPatch({
2314
2425
  field,
2315
2426
  structureField,
@@ -2431,7 +2542,25 @@ function PageViewerFrameContent({ compareView, pageViewContext, editContext, cla
2431
2542
  itemDescriptor: itemDescriptor,
2432
2543
  dirtyOnly: true,
2433
2544
  });
2434
- if (!showSuggestions && !dirtyModifiedField) {
2545
+ // When suggestion display turns off, a field can still show suggestion
2546
+ // text even though nothing is dirty: either its last patch was a
2547
+ // suggestion preview, or an inline edit typed the suggestion into the
2548
+ // DOM and the recorded suggestion only lands after the toggle. Both
2549
+ // need an explicit restore patch back to the baseline value.
2550
+ const needsSuggestionRestore = !showSuggestions &&
2551
+ (isSuggestionPreviewPatchSignature(bridgePatchSignatureRef.current.get(`${structureField.elementKey}:${structureField.fieldId}`)) ||
2552
+ getPendingFieldSuggestions(editContext.suggestedEdits, {
2553
+ fieldId: field.id || structureField.fieldId,
2554
+ itemId: itemDescriptor.id,
2555
+ language: itemDescriptor.language,
2556
+ version: itemDescriptor.version,
2557
+ pageItemId: pageViewContextRef.current?.pageItemDescriptor?.id,
2558
+ pageItemLanguage: pageViewContextRef.current?.pageItemDescriptor?.language,
2559
+ pageItemVersion: pageViewContextRef.current?.pageItemDescriptor?.version,
2560
+ }).length > 0);
2561
+ if (!showSuggestions &&
2562
+ !dirtyModifiedField &&
2563
+ !needsSuggestionRestore) {
2435
2564
  continue;
2436
2565
  }
2437
2566
  const patch = buildBridgeFieldPatch({
@@ -2698,14 +2827,18 @@ function PageViewerFrameContent({ compareView, pageViewContext, editContext, cla
2698
2827
  const signatureUrl = new URL(renderUrl.toString());
2699
2828
  signatureUrl.searchParams.delete("edit_rev");
2700
2829
  const renderSignature = `${signatureUrl.toString()}|rev:${editContext.revision}`;
2830
+ const modeChanged = lastRenderModeRef.current !== editContext.mode;
2831
+ lastRenderModeRef.current = editContext.mode;
2701
2832
  // Only skip when a live bridge confirms the last refresh actually reached
2702
- // the host. Before the bridge is connected, re-runs must keep going: the
2703
- // retry/fallback-reload path below is what recovers a canvas whose first
2704
- // load raced the bridge injection.
2833
+ // the host, or when the only meaningful trigger is an edit/suggestions
2834
+ // mode change. Mode is delivered by setEditorMode and cannot change the
2835
+ // server-rendered URL/revision; reloading during a transient bridge
2836
+ // disconnect would needlessly reset iframe scroll. Before the first bridge
2837
+ // connection, identical non-mode re-runs still use the recovery path.
2705
2838
  if (!shouldUseIframeSrcReload &&
2706
2839
  !versionChanged &&
2707
2840
  lastRenderSignatureRef.current === renderSignature &&
2708
- bridgeClientRef.current?.supportsCapability("refresh")) {
2841
+ (modeChanged || bridgeClientRef.current?.supportsCapability("refresh"))) {
2709
2842
  setCurrentItemDescriptor(pageItemDescriptor);
2710
2843
  return;
2711
2844
  }