@parhelia/core 0.4.12818 → 0.4.12871

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 (1146) hide show
  1. package/dist/components/emoji/EmojiPicker.d.ts +18 -0
  2. package/dist/components/emoji/EmojiPicker.js +102 -0
  3. package/dist/components/emoji/EmojiPicker.js.map +1 -0
  4. package/dist/components/emoji/EmojiText.d.ts +19 -0
  5. package/dist/components/emoji/EmojiText.js +30 -0
  6. package/dist/components/emoji/EmojiText.js.map +1 -0
  7. package/dist/components/emoji/emojiData.generated.d.ts +2 -0
  8. package/dist/components/emoji/emojiData.generated.js +1878 -0
  9. package/dist/components/emoji/emojiData.generated.js.map +1 -0
  10. package/dist/components/emoji/emojiIndex.d.ts +46 -0
  11. package/dist/components/emoji/emojiIndex.js +173 -0
  12. package/dist/components/emoji/emojiIndex.js.map +1 -0
  13. package/dist/components/emoji/emoticons.d.ts +21 -0
  14. package/dist/components/emoji/emoticons.js +167 -0
  15. package/dist/components/emoji/emoticons.js.map +1 -0
  16. package/dist/components/emoji/textareaInsert.d.ts +19 -0
  17. package/dist/components/emoji/textareaInsert.js +29 -0
  18. package/dist/components/emoji/textareaInsert.js.map +1 -0
  19. package/dist/components/emoji/twemoji.d.ts +30 -0
  20. package/dist/components/emoji/twemoji.js +84 -0
  21. package/dist/components/emoji/twemoji.js.map +1 -0
  22. package/dist/components/ui/alert.d.ts +6 -1
  23. package/dist/components/ui/alert.js +12 -3
  24. package/dist/components/ui/alert.js.map +1 -1
  25. package/dist/components/ui/context-menu.d.ts +25 -0
  26. package/dist/components/ui/context-menu.js +54 -36
  27. package/dist/components/ui/context-menu.js.map +1 -1
  28. package/dist/components/ui/copy-button.d.ts +3 -1
  29. package/dist/components/ui/copy-button.js +13 -2
  30. package/dist/components/ui/copy-button.js.map +1 -1
  31. package/dist/components/ui/mention-textarea.d.ts +8 -0
  32. package/dist/components/ui/mention-textarea.js +98 -46
  33. package/dist/components/ui/mention-textarea.js.map +1 -1
  34. package/dist/components/ui/paste-button.js +11 -1
  35. package/dist/components/ui/paste-button.js.map +1 -1
  36. package/dist/config/config.js +46 -4
  37. package/dist/config/config.js.map +1 -1
  38. package/dist/config/types.d.ts +2 -0
  39. package/dist/config/types.js.map +1 -1
  40. package/dist/editor/ConcurrentUserLimitDialog.js +5 -2
  41. package/dist/editor/ConcurrentUserLimitDialog.js.map +1 -1
  42. package/dist/editor/ContentTree.js +7 -2
  43. package/dist/editor/ContentTree.js.map +1 -1
  44. package/dist/editor/ContextMenu.js +11 -36
  45. package/dist/editor/ContextMenu.js.map +1 -1
  46. package/dist/editor/EditorWarning.js +8 -4
  47. package/dist/editor/EditorWarning.js.map +1 -1
  48. package/dist/editor/FieldList.js +1 -1
  49. package/dist/editor/FieldList.js.map +1 -1
  50. package/dist/editor/FieldListField.js +18 -13
  51. package/dist/editor/FieldListField.js.map +1 -1
  52. package/dist/editor/FieldListFieldWithFallbacks.js +1 -1
  53. package/dist/editor/GlobalMenuBar.js +2 -1
  54. package/dist/editor/GlobalMenuBar.js.map +1 -1
  55. package/dist/editor/ImageEditor.js +3 -1
  56. package/dist/editor/ImageEditor.js.map +1 -1
  57. package/dist/editor/MainLayout.js +1 -1
  58. package/dist/editor/MainLayout.js.map +1 -1
  59. package/dist/editor/MigrationsView.js +3 -2
  60. package/dist/editor/MigrationsView.js.map +1 -1
  61. package/dist/editor/MobileLayout.js +43 -20
  62. package/dist/editor/MobileLayout.js.map +1 -1
  63. package/dist/editor/PictureEditor.js +4 -2
  64. package/dist/editor/PictureEditor.js.map +1 -1
  65. package/dist/editor/QuickItemSwitcher.js +4 -2
  66. package/dist/editor/QuickItemSwitcher.js.map +1 -1
  67. package/dist/editor/agent-changes/agentChangeTargets.js +6 -0
  68. package/dist/editor/agent-changes/agentChangeTargets.js.map +1 -1
  69. package/dist/editor/agent-changes/agentChangeTextHighlight.d.ts +48 -4
  70. package/dist/editor/agent-changes/agentChangeTextHighlight.js +67 -9
  71. package/dist/editor/agent-changes/agentChangeTextHighlight.js.map +1 -1
  72. package/dist/editor/ai/AgentStatusBadge.js +11 -9
  73. package/dist/editor/ai/AgentStatusBadge.js.map +1 -1
  74. package/dist/editor/ai/Agents.js +2 -2
  75. package/dist/editor/ai/Agents.js.map +1 -1
  76. package/dist/editor/ai/HeartbeatDiagnosticsPanel.js +1 -1
  77. package/dist/editor/ai/InlineAiDialog.js +11 -8
  78. package/dist/editor/ai/InlineAiDialog.js.map +1 -1
  79. package/dist/editor/ai/InlineAiTrigger.js +18 -14
  80. package/dist/editor/ai/InlineAiTrigger.js.map +1 -1
  81. package/dist/editor/ai/agentActivitySummary.js +5 -0
  82. package/dist/editor/ai/agentActivitySummary.js.map +1 -1
  83. package/dist/editor/ai/agentDiagnostics.d.ts +1 -1
  84. package/dist/editor/ai/agentDiagnostics.js +8 -0
  85. package/dist/editor/ai/agentDiagnostics.js.map +1 -1
  86. package/dist/editor/ai/agentMessageConversion.js +1 -0
  87. package/dist/editor/ai/agentMessageConversion.js.map +1 -1
  88. package/dist/editor/ai/agentMessageMarkdown.js +4 -4
  89. package/dist/editor/ai/agentMessageMarkdown.js.map +1 -1
  90. package/dist/editor/ai/dialogs/capturePageScreenshot.d.ts +4 -1
  91. package/dist/editor/ai/dialogs/capturePageScreenshot.js +214 -44
  92. package/dist/editor/ai/dialogs/capturePageScreenshot.js.map +1 -1
  93. package/dist/editor/ai/dialogs/captureShared.d.ts +8 -1
  94. package/dist/editor/ai/dialogs/captureShared.js +4 -1
  95. package/dist/editor/ai/dialogs/captureShared.js.map +1 -1
  96. package/dist/editor/ai/dialogs/offscreenPageCapture.js +1 -1
  97. package/dist/editor/ai/dialogs/offscreenPageCapture.js.map +1 -1
  98. package/dist/editor/ai/prepareInlineAiTextSelection.d.ts +2 -1
  99. package/dist/editor/ai/prepareInlineAiTextSelection.js +1 -2
  100. package/dist/editor/ai/prepareInlineAiTextSelection.js.map +1 -1
  101. package/dist/editor/ai/terminal/agentCost.d.ts +2 -0
  102. package/dist/editor/ai/terminal/agentCost.js +1 -0
  103. package/dist/editor/ai/terminal/agentCost.js.map +1 -1
  104. package/dist/editor/ai/terminal/agentSessionLiveTotals.js +3 -0
  105. package/dist/editor/ai/terminal/agentSessionLiveTotals.js.map +1 -1
  106. package/dist/editor/ai/terminal/agentSessionSelectors.d.ts +5 -2
  107. package/dist/editor/ai/terminal/agentSessionSelectors.js +5 -2
  108. package/dist/editor/ai/terminal/agentSessionSelectors.js.map +1 -1
  109. package/dist/editor/ai/terminal/agentSessionSnapshot.d.ts +15 -0
  110. package/dist/editor/ai/terminal/agentSessionSnapshot.js +103 -3
  111. package/dist/editor/ai/terminal/agentSessionSnapshot.js.map +1 -1
  112. package/dist/editor/ai/terminal/agentSessionState.js +13 -2
  113. package/dist/editor/ai/terminal/agentSessionState.js.map +1 -1
  114. package/dist/editor/ai/terminal/components/AgentActivityOverviewPanel.js +7 -7
  115. package/dist/editor/ai/terminal/components/AgentActivityOverviewPanel.js.map +1 -1
  116. package/dist/editor/ai/terminal/components/AgentBanners.js +2 -2
  117. package/dist/editor/ai/terminal/components/AgentBanners.js.map +1 -1
  118. package/dist/editor/ai/terminal/components/AgentCostDisplay.d.ts +2 -0
  119. package/dist/editor/ai/terminal/components/AgentCostDisplay.js +2 -1
  120. package/dist/editor/ai/terminal/components/AgentCostDisplay.js.map +1 -1
  121. package/dist/editor/ai/terminal/components/AgentFullPromptControls.js +1 -1
  122. package/dist/editor/ai/terminal/components/AgentFullPromptControls.js.map +1 -1
  123. package/dist/editor/ai/terminal/components/AgentModeSelector.js +7 -3
  124. package/dist/editor/ai/terminal/components/AgentModeSelector.js.map +1 -1
  125. package/dist/editor/ai/terminal/components/AgentPromptActionButtons.js +3 -3
  126. package/dist/editor/ai/terminal/components/AgentPromptActionButtons.js.map +1 -1
  127. package/dist/editor/ai/terminal/components/AgentPromptInputArea.js +2 -2
  128. package/dist/editor/ai/terminal/components/AgentPromptTrayPopovers.js +1 -1
  129. package/dist/editor/ai/terminal/components/AgentPromptTrayPopovers.js.map +1 -1
  130. package/dist/editor/ai/terminal/components/AgentReadOnlyNotice.js +1 -1
  131. package/dist/editor/ai/terminal/components/AgentReadOnlyNotice.js.map +1 -1
  132. package/dist/editor/ai/terminal/components/AgentSkillSettingsSection.js +2 -2
  133. package/dist/editor/ai/terminal/components/AgentSkillSettingsSection.js.map +1 -1
  134. package/dist/editor/ai/terminal/components/AgentTerminalFullLayout.js +1 -1
  135. package/dist/editor/ai/terminal/components/AgentTerminalStatusBar.d.ts +5 -2
  136. package/dist/editor/ai/terminal/components/AgentTerminalStatusBar.js +43 -4
  137. package/dist/editor/ai/terminal/components/AgentTerminalStatusBar.js.map +1 -1
  138. package/dist/editor/ai/terminal/components/AgentTerminalSummaryLayout.js +1 -1
  139. package/dist/editor/ai/terminal/components/AgentTerminalSummaryLayout.js.map +1 -1
  140. package/dist/editor/ai/terminal/components/AiResponseMessage.js +40 -22
  141. package/dist/editor/ai/terminal/components/AiResponseMessage.js.map +1 -1
  142. package/dist/editor/ai/terminal/components/ApprovalCard.d.ts +3 -1
  143. package/dist/editor/ai/terminal/components/ApprovalCard.js +8 -16
  144. package/dist/editor/ai/terminal/components/ApprovalCard.js.map +1 -1
  145. package/dist/editor/ai/terminal/components/ContextInfoBar.js +1 -1
  146. package/dist/editor/ai/terminal/components/ContextInfoBar.js.map +1 -1
  147. package/dist/editor/ai/terminal/components/CreateItemToolCallContent.js +1 -1
  148. package/dist/editor/ai/terminal/components/CreateItemToolCallContent.js.map +1 -1
  149. package/dist/editor/ai/terminal/components/EditFieldToolCallContent.d.ts +7 -4
  150. package/dist/editor/ai/terminal/components/EditFieldToolCallContent.js +57 -32
  151. package/dist/editor/ai/terminal/components/EditFieldToolCallContent.js.map +1 -1
  152. package/dist/editor/ai/terminal/components/ResponseTurnDuration.js +1 -2
  153. package/dist/editor/ai/terminal/components/ResponseTurnDuration.js.map +1 -1
  154. package/dist/editor/ai/terminal/components/ToolCallDiagnosticsPanel.d.ts +6 -0
  155. package/dist/editor/ai/terminal/components/ToolCallDiagnosticsPanel.js +61 -0
  156. package/dist/editor/ai/terminal/components/ToolCallDiagnosticsPanel.js.map +1 -0
  157. package/dist/editor/ai/terminal/components/ToolCallDisplay.d.ts +5 -0
  158. package/dist/editor/ai/terminal/components/ToolCallDisplay.js +19 -8
  159. package/dist/editor/ai/terminal/components/ToolCallDisplay.js.map +1 -1
  160. package/dist/editor/ai/terminal/components/UserMessage.js +4 -2
  161. package/dist/editor/ai/terminal/components/UserMessage.js.map +1 -1
  162. package/dist/editor/ai/terminal/components/ValueDiff.js +1 -1
  163. package/dist/editor/ai/terminal/components/ValueDiff.js.map +1 -1
  164. package/dist/editor/ai/terminal/components/toolCallContentRenderers.js +7 -4
  165. package/dist/editor/ai/terminal/components/toolCallContentRenderers.js.map +1 -1
  166. package/dist/editor/ai/terminal/components/useApprovalActions.js +1 -1
  167. package/dist/editor/ai/terminal/components/useApprovalActions.js.map +1 -1
  168. package/dist/editor/ai/terminal/toolCallDiagnostics.d.ts +34 -0
  169. package/dist/editor/ai/terminal/toolCallDiagnostics.js +218 -0
  170. package/dist/editor/ai/terminal/toolCallDiagnostics.js.map +1 -0
  171. package/dist/editor/ai/terminal/types.d.ts +1 -0
  172. package/dist/editor/ai/terminal/useAgentEditorContext.js +16 -4
  173. package/dist/editor/ai/terminal/useAgentEditorContext.js.map +1 -1
  174. package/dist/editor/ai/terminal/useAgentLoadPipeline.d.ts +1 -0
  175. package/dist/editor/ai/terminal/useAgentLoadPipeline.js +2 -1
  176. package/dist/editor/ai/terminal/useAgentLoadPipeline.js.map +1 -1
  177. package/dist/editor/ai/terminal/useAgentLoader.d.ts +2 -0
  178. package/dist/editor/ai/terminal/useAgentLoader.js +17 -2
  179. package/dist/editor/ai/terminal/useAgentLoader.js.map +1 -1
  180. package/dist/editor/ai/terminal/useAgentModeState.d.ts +5 -1
  181. package/dist/editor/ai/terminal/useAgentModeState.js +11 -3
  182. package/dist/editor/ai/terminal/useAgentModeState.js.map +1 -1
  183. package/dist/editor/ai/terminal/useAgentOperationHistoryLoader.js +5 -1
  184. package/dist/editor/ai/terminal/useAgentOperationHistoryLoader.js.map +1 -1
  185. package/dist/editor/ai/terminal/useAgentOperationSocketHandler.js +33 -1
  186. package/dist/editor/ai/terminal/useAgentOperationSocketHandler.js.map +1 -1
  187. package/dist/editor/ai/terminal/useAgentRunDeltaSocketHandler.d.ts +1 -0
  188. package/dist/editor/ai/terminal/useAgentRunDeltaSocketHandler.js +5 -1
  189. package/dist/editor/ai/terminal/useAgentRunDeltaSocketHandler.js.map +1 -1
  190. package/dist/editor/ai/terminal/useAgentRunRefs.d.ts +1 -0
  191. package/dist/editor/ai/terminal/useAgentRunRefs.js +3 -0
  192. package/dist/editor/ai/terminal/useAgentRunRefs.js.map +1 -1
  193. package/dist/editor/ai/terminal/useAgentServerReconciler.js +11 -0
  194. package/dist/editor/ai/terminal/useAgentServerReconciler.js.map +1 -1
  195. package/dist/editor/ai/terminal/useAgentSessionSync.d.ts +6 -0
  196. package/dist/editor/ai/terminal/useAgentSessionSync.js +27 -3
  197. package/dist/editor/ai/terminal/useAgentSessionSync.js.map +1 -1
  198. package/dist/editor/ai/terminal/useAgentSettingsData.d.ts +1 -1
  199. package/dist/editor/ai/terminal/useAgentSettingsPanel.js +7 -6
  200. package/dist/editor/ai/terminal/useAgentSettingsPanel.js.map +1 -1
  201. package/dist/editor/ai/terminal/useAgentSettingsSelectOptions.js +14 -2
  202. package/dist/editor/ai/terminal/useAgentSettingsSelectOptions.js.map +1 -1
  203. package/dist/editor/ai/terminal/useAgentStatusBarContent.js +11 -4
  204. package/dist/editor/ai/terminal/useAgentStatusBarContent.js.map +1 -1
  205. package/dist/editor/ai/terminal/useAgentStreamPipeline.d.ts +1 -0
  206. package/dist/editor/ai/terminal/useAgentStreamPipeline.js +2 -1
  207. package/dist/editor/ai/terminal/useAgentStreamPipeline.js.map +1 -1
  208. package/dist/editor/ai/terminal/useAgentSubmitHandlers.d.ts +1 -0
  209. package/dist/editor/ai/terminal/useAgentSubmitHandlers.js +17 -4
  210. package/dist/editor/ai/terminal/useAgentSubmitHandlers.js.map +1 -1
  211. package/dist/editor/ai/terminal/useAgentTerminalController.js +7 -1
  212. package/dist/editor/ai/terminal/useAgentTerminalController.js.map +1 -1
  213. package/dist/editor/ai/terminal/useAgentToolCallHandler.js +1 -0
  214. package/dist/editor/ai/terminal/useAgentToolCallHandler.js.map +1 -1
  215. package/dist/editor/ai/types.d.ts +4 -0
  216. package/dist/editor/ai-image-editor/AiImageEditorDialog.d.ts +33 -0
  217. package/dist/editor/ai-image-editor/AiImageEditorDialog.js +372 -127
  218. package/dist/editor/ai-image-editor/AiImageEditorDialog.js.map +1 -1
  219. package/dist/editor/ai-image-editor/AiImageResultOverlay.js +4 -2
  220. package/dist/editor/ai-image-editor/AiImageResultOverlay.js.map +1 -1
  221. package/dist/editor/bridge/BridgeClient.js +11 -0
  222. package/dist/editor/bridge/BridgeClient.js.map +1 -1
  223. package/dist/editor/bridge/protocol.d.ts +61 -0
  224. package/dist/editor/bridge/protocol.js +3 -0
  225. package/dist/editor/bridge/protocol.js.map +1 -1
  226. package/dist/editor/client/EditorShell.js +335 -125
  227. package/dist/editor/client/EditorShell.js.map +1 -1
  228. package/dist/editor/client/SessionExpiredOverlay.js +9 -2
  229. package/dist/editor/client/SessionExpiredOverlay.js.map +1 -1
  230. package/dist/editor/client/clipboardStorage.d.ts +10 -0
  231. package/dist/editor/client/clipboardStorage.js +57 -0
  232. package/dist/editor/client/clipboardStorage.js.map +1 -0
  233. package/dist/editor/client/editContext.d.ts +92 -11
  234. package/dist/editor/client/editContext.js.map +1 -1
  235. package/dist/editor/client/editHistoryReconciliation.d.ts +2 -1
  236. package/dist/editor/client/editHistoryReconciliation.js +5 -2
  237. package/dist/editor/client/editHistoryReconciliation.js.map +1 -1
  238. package/dist/editor/client/hooks/useRepositoryItemRefresh.d.ts +4 -0
  239. package/dist/editor/client/hooks/useRepositoryItemRefresh.js +62 -0
  240. package/dist/editor/client/hooks/useRepositoryItemRefresh.js.map +1 -0
  241. package/dist/editor/client/hooks/useSocketMessageHandler.d.ts +6 -0
  242. package/dist/editor/client/hooks/useSocketMessageHandler.js +69 -4
  243. package/dist/editor/client/hooks/useSocketMessageHandler.js.map +1 -1
  244. package/dist/editor/client/itemsRepository.d.ts +10 -2
  245. package/dist/editor/client/itemsRepository.js +224 -43
  246. package/dist/editor/client/itemsRepository.js.map +1 -1
  247. package/dist/editor/client/liveEditState.d.ts +16 -0
  248. package/dist/editor/client/liveEditState.js +25 -0
  249. package/dist/editor/client/liveEditState.js.map +1 -0
  250. package/dist/editor/client/liveSessionState.d.ts +6 -0
  251. package/dist/editor/client/liveSessionState.js +20 -0
  252. package/dist/editor/client/liveSessionState.js.map +1 -0
  253. package/dist/editor/client/operations.d.ts +13 -2
  254. package/dist/editor/client/operations.js +134 -31
  255. package/dist/editor/client/operations.js.map +1 -1
  256. package/dist/editor/client/pageModelBuilder.d.ts +6 -0
  257. package/dist/editor/client/pageModelBuilder.js +74 -7
  258. package/dist/editor/client/pageModelBuilder.js.map +1 -1
  259. package/dist/editor/client/ui/EditorChrome.d.ts +2 -2
  260. package/dist/editor/client/ui/EditorChrome.js +12 -8
  261. package/dist/editor/client/ui/EditorChrome.js.map +1 -1
  262. package/dist/editor/client/ui/FullscreenControls.d.ts +3 -5
  263. package/dist/editor/client/ui/FullscreenControls.js +2 -2
  264. package/dist/editor/client/ui/FullscreenControls.js.map +1 -1
  265. package/dist/editor/client/valueStore.d.ts +22 -0
  266. package/dist/editor/client/valueStore.js +29 -0
  267. package/dist/editor/client/valueStore.js.map +1 -0
  268. package/dist/editor/commands/commands.d.ts +6 -0
  269. package/dist/editor/commands/commands.js.map +1 -1
  270. package/dist/editor/commands/componentClipboardCommands.d.ts +35 -0
  271. package/dist/editor/commands/componentClipboardCommands.js +271 -0
  272. package/dist/editor/commands/componentClipboardCommands.js.map +1 -0
  273. package/dist/editor/commands/componentCommands.js +80 -19
  274. package/dist/editor/commands/componentCommands.js.map +1 -1
  275. package/dist/editor/commands/componentMenuGroups.d.ts +2 -0
  276. package/dist/editor/commands/componentMenuGroups.js +43 -0
  277. package/dist/editor/commands/componentMenuGroups.js.map +1 -0
  278. package/dist/editor/commands/itemCommands.d.ts +9 -0
  279. package/dist/editor/commands/itemCommands.js +76 -9
  280. package/dist/editor/commands/itemCommands.js.map +1 -1
  281. package/dist/editor/component-conversion/ComponentTypePickerDialog.d.ts +12 -0
  282. package/dist/editor/component-conversion/ComponentTypePickerDialog.js +40 -0
  283. package/dist/editor/component-conversion/ComponentTypePickerDialog.js.map +1 -0
  284. package/dist/editor/component-conversion/ConversionAiDebugButton.d.ts +17 -0
  285. package/dist/editor/component-conversion/ConversionAiDebugButton.js +80 -0
  286. package/dist/editor/component-conversion/ConversionAiDebugButton.js.map +1 -0
  287. package/dist/editor/component-conversion/ConvertComponentDialog.d.ts +28 -0
  288. package/dist/editor/component-conversion/ConvertComponentDialog.js +633 -0
  289. package/dist/editor/component-conversion/ConvertComponentDialog.js.map +1 -0
  290. package/dist/editor/component-conversion/conversionModel.d.ts +109 -0
  291. package/dist/editor/component-conversion/conversionModel.js +519 -0
  292. package/dist/editor/component-conversion/conversionModel.js.map +1 -0
  293. package/dist/editor/component-conversion/conversionService.d.ts +12 -0
  294. package/dist/editor/component-conversion/conversionService.js +16 -0
  295. package/dist/editor/component-conversion/conversionService.js.map +1 -0
  296. package/dist/editor/component-conversion/conversionTypes.d.ts +214 -0
  297. package/dist/editor/component-conversion/conversionTypes.js +2 -0
  298. package/dist/editor/component-conversion/conversionTypes.js.map +1 -0
  299. package/dist/editor/component-conversion/convertComponentsCommand.d.ts +25 -0
  300. package/dist/editor/component-conversion/convertComponentsCommand.js +196 -0
  301. package/dist/editor/component-conversion/convertComponentsCommand.js.map +1 -0
  302. package/dist/editor/editor-warnings/ValidationErrors.js +4 -4
  303. package/dist/editor/editor-warnings/ValidationErrors.js.map +1 -1
  304. package/dist/editor/field-types/AttachmentEditor.js +4 -3
  305. package/dist/editor/field-types/AttachmentEditor.js.map +1 -1
  306. package/dist/editor/field-types/DateFieldEditor.js +2 -1
  307. package/dist/editor/field-types/DateFieldEditor.js.map +1 -1
  308. package/dist/editor/field-types/DateTimeFieldEditor.js +2 -1
  309. package/dist/editor/field-types/DateTimeFieldEditor.js.map +1 -1
  310. package/dist/editor/field-types/DropLinkEditor.js +3 -1
  311. package/dist/editor/field-types/DropLinkEditor.js.map +1 -1
  312. package/dist/editor/field-types/DropListEditor.js +3 -1
  313. package/dist/editor/field-types/DropListEditor.js.map +1 -1
  314. package/dist/editor/field-types/FieldHistoryBoundary.js +28 -7
  315. package/dist/editor/field-types/FieldHistoryBoundary.js.map +1 -1
  316. package/dist/editor/field-types/ImageFieldEditor.js +3 -1
  317. package/dist/editor/field-types/ImageFieldEditor.js.map +1 -1
  318. package/dist/editor/field-types/InternalLinkFieldEditor.js +2 -1
  319. package/dist/editor/field-types/InternalLinkFieldEditor.js.map +1 -1
  320. package/dist/editor/field-types/LinkFieldEditor.js +2 -1
  321. package/dist/editor/field-types/LinkFieldEditor.js.map +1 -1
  322. package/dist/editor/field-types/MultiLineText.js +68 -22
  323. package/dist/editor/field-types/MultiLineText.js.map +1 -1
  324. package/dist/editor/field-types/NameValueListEditor.js +3 -1
  325. package/dist/editor/field-types/NameValueListEditor.js.map +1 -1
  326. package/dist/editor/field-types/PictureFieldEditor.js +4 -2
  327. package/dist/editor/field-types/PictureFieldEditor.js.map +1 -1
  328. package/dist/editor/field-types/RawEditor.js +7 -4
  329. package/dist/editor/field-types/RawEditor.js.map +1 -1
  330. package/dist/editor/field-types/RichTextEditor.d.ts +1 -2
  331. package/dist/editor/field-types/RichTextEditor.js +5 -26
  332. package/dist/editor/field-types/RichTextEditor.js.map +1 -1
  333. package/dist/editor/field-types/RichTextEditorComponent.d.ts +1 -2
  334. package/dist/editor/field-types/RichTextEditorComponent.js +121 -26
  335. package/dist/editor/field-types/RichTextEditorComponent.js.map +1 -1
  336. package/dist/editor/field-types/SingleLineText.js +68 -22
  337. package/dist/editor/field-types/SingleLineText.js.map +1 -1
  338. package/dist/editor/field-types/TreeListEditor.js +4 -2
  339. package/dist/editor/field-types/TreeListEditor.js.map +1 -1
  340. package/dist/editor/field-types/fieldStyles.d.ts +21 -0
  341. package/dist/editor/field-types/fieldStyles.js +22 -0
  342. package/dist/editor/field-types/fieldStyles.js.map +1 -0
  343. package/dist/editor/field-types/richtext/bridgeRichTextProfile.d.ts +15 -1
  344. package/dist/editor/field-types/richtext/bridgeRichTextProfile.js +27 -0
  345. package/dist/editor/field-types/richtext/bridgeRichTextProfile.js.map +1 -1
  346. package/dist/editor/field-types/richtext/components/EditorDropdown.css +14 -0
  347. package/dist/editor/field-types/richtext/components/EditorDropdown.d.ts +3 -1
  348. package/dist/editor/field-types/richtext/components/EditorDropdown.js +33 -8
  349. package/dist/editor/field-types/richtext/components/EditorDropdown.js.map +1 -1
  350. package/dist/editor/field-types/richtext/components/ReactSlate.css +23 -54
  351. package/dist/editor/field-types/richtext/components/ReactSlate.d.ts +10 -1
  352. package/dist/editor/field-types/richtext/components/ReactSlate.js +373 -174
  353. package/dist/editor/field-types/richtext/components/ReactSlate.js.map +1 -1
  354. package/dist/editor/field-types/richtext/components/SimpleRichTextEditor.js +1 -1
  355. package/dist/editor/field-types/richtext/components/SimpleRichTextEditor.js.map +1 -1
  356. package/dist/editor/field-types/richtext/components/ToolbarButton.js +13 -5
  357. package/dist/editor/field-types/richtext/components/ToolbarButton.js.map +1 -1
  358. package/dist/editor/field-types/richtext/config/pluginFactory.d.ts +2 -0
  359. package/dist/editor/field-types/richtext/config/pluginFactory.js +2 -1
  360. package/dist/editor/field-types/richtext/config/pluginFactory.js.map +1 -1
  361. package/dist/editor/field-types/richtext/hooks/useProfileCache.js +1 -0
  362. package/dist/editor/field-types/richtext/hooks/useProfileCache.js.map +1 -1
  363. package/dist/editor/field-types/richtext/hooks/useRichTextProfile.d.ts +0 -2
  364. package/dist/editor/field-types/richtext/hooks/useRichTextProfile.js +2 -5
  365. package/dist/editor/field-types/richtext/hooks/useRichTextProfile.js.map +1 -1
  366. package/dist/editor/field-types/richtext/types.d.ts +47 -2
  367. package/dist/editor/field-types/richtext/types.js +19 -0
  368. package/dist/editor/field-types/richtext/types.js.map +1 -1
  369. package/dist/editor/field-types/richtext/utils/changeHighlight.d.ts +14 -0
  370. package/dist/editor/field-types/richtext/utils/changeHighlight.js +12 -1
  371. package/dist/editor/field-types/richtext/utils/changeHighlight.js.map +1 -1
  372. package/dist/editor/field-types/richtext/utils/conversion.js +108 -32
  373. package/dist/editor/field-types/richtext/utils/conversion.js.map +1 -1
  374. package/dist/editor/field-types/richtext/utils/cssClasses.d.ts +27 -0
  375. package/dist/editor/field-types/richtext/utils/cssClasses.js +98 -0
  376. package/dist/editor/field-types/richtext/utils/cssClasses.js.map +1 -0
  377. package/dist/editor/field-types/richtext/utils/plugins.d.ts +40 -1
  378. package/dist/editor/field-types/richtext/utils/plugins.js +178 -4
  379. package/dist/editor/field-types/richtext/utils/plugins.js.map +1 -1
  380. package/dist/editor/field-types/richtext/utils/profileMapper.d.ts +17 -1
  381. package/dist/editor/field-types/richtext/utils/profileMapper.js +153 -55
  382. package/dist/editor/field-types/richtext/utils/profileMapper.js.map +1 -1
  383. package/dist/editor/field-types/richtext/utils/spellCheckText.d.ts +31 -0
  384. package/dist/editor/field-types/richtext/utils/spellCheckText.js +82 -0
  385. package/dist/editor/field-types/richtext/utils/spellCheckText.js.map +1 -0
  386. package/dist/editor/field-types/useFocusedFieldInput.d.ts +13 -0
  387. package/dist/editor/field-types/useFocusedFieldInput.js +50 -0
  388. package/dist/editor/field-types/useFocusedFieldInput.js.map +1 -0
  389. package/dist/editor/field-types/useFormFieldCaretPresence.js +9 -1
  390. package/dist/editor/field-types/useFormFieldCaretPresence.js.map +1 -1
  391. package/dist/editor/field-types/useFormFieldSelectionRange.d.ts +20 -13
  392. package/dist/editor/field-types/useFormFieldSelectionRange.js +40 -14
  393. package/dist/editor/field-types/useFormFieldSelectionRange.js.map +1 -1
  394. package/dist/editor/find-replace/FindReplacePanel.d.ts +11 -0
  395. package/dist/editor/find-replace/FindReplacePanel.js +311 -0
  396. package/dist/editor/find-replace/FindReplacePanel.js.map +1 -0
  397. package/dist/editor/find-replace/findReplaceCommand.d.ts +8 -0
  398. package/dist/editor/find-replace/findReplaceCommand.js +25 -0
  399. package/dist/editor/find-replace/findReplaceCommand.js.map +1 -0
  400. package/dist/editor/find-replace/findReplaceMatches.d.ts +42 -0
  401. package/dist/editor/find-replace/findReplaceMatches.js +66 -0
  402. package/dist/editor/find-replace/findReplaceMatches.js.map +1 -0
  403. package/dist/editor/find-replace/findReplaceStore.d.ts +30 -0
  404. package/dist/editor/find-replace/findReplaceStore.js +61 -0
  405. package/dist/editor/find-replace/findReplaceStore.js.map +1 -0
  406. package/dist/editor/find-replace/findReplaceTargets.d.ts +51 -0
  407. package/dist/editor/find-replace/findReplaceTargets.js +110 -0
  408. package/dist/editor/find-replace/findReplaceTargets.js.map +1 -0
  409. package/dist/editor/find-replace/findReplaceText.d.ts +50 -0
  410. package/dist/editor/find-replace/findReplaceText.js +189 -0
  411. package/dist/editor/find-replace/findReplaceText.js.map +1 -0
  412. package/dist/editor/itemContextMenuGroups.js +10 -1
  413. package/dist/editor/itemContextMenuGroups.js.map +1 -1
  414. package/dist/editor/media-selector/AiImageSearch.js +1 -163
  415. package/dist/editor/media-selector/AiImageSearch.js.map +1 -1
  416. package/dist/editor/media-selector/MediaDetailsView.d.ts +14 -0
  417. package/dist/editor/media-selector/MediaDetailsView.js +152 -0
  418. package/dist/editor/media-selector/MediaDetailsView.js.map +1 -0
  419. package/dist/editor/media-selector/MediaFolderBrowser.js +326 -106
  420. package/dist/editor/media-selector/MediaFolderBrowser.js.map +1 -1
  421. package/dist/editor/media-selector/TreeSelector.js +40 -2
  422. package/dist/editor/media-selector/TreeSelector.js.map +1 -1
  423. package/dist/editor/media-selector/UploadZone.js +1 -1
  424. package/dist/editor/media-selector/UploadZone.js.map +1 -1
  425. package/dist/editor/media-selector/useMediaFolderDrag.d.ts +26 -0
  426. package/dist/editor/media-selector/useMediaFolderDrag.js +153 -0
  427. package/dist/editor/media-selector/useMediaFolderDrag.js.map +1 -0
  428. package/dist/editor/menubar/ActiveUsers.js +6 -4
  429. package/dist/editor/menubar/ActiveUsers.js.map +1 -1
  430. package/dist/editor/menubar/PageSelector.js +21 -22
  431. package/dist/editor/menubar/PageSelector.js.map +1 -1
  432. package/dist/editor/menubar/ToolbarFactory.js +16 -2
  433. package/dist/editor/menubar/ToolbarFactory.js.map +1 -1
  434. package/dist/editor/menubar/VersionPreviewCard.js +4 -2
  435. package/dist/editor/menubar/VersionPreviewCard.js.map +1 -1
  436. package/dist/editor/menubar/VersionSelector.js +2 -2
  437. package/dist/editor/menubar/VersionSelector.js.map +1 -1
  438. package/dist/editor/menubar/WorkflowButton.js +10 -10
  439. package/dist/editor/menubar/WorkflowButton.js.map +1 -1
  440. package/dist/editor/menubar/toolbar-sections/CommentsToggleControl.d.ts +13 -0
  441. package/dist/editor/menubar/toolbar-sections/CommentsToggleControl.js +88 -0
  442. package/dist/editor/menubar/toolbar-sections/CommentsToggleControl.js.map +1 -0
  443. package/dist/editor/menubar/toolbar-sections/DeviceSwitchToolbar.d.ts +3 -4
  444. package/dist/editor/menubar/toolbar-sections/DeviceSwitchToolbar.js +15 -13
  445. package/dist/editor/menubar/toolbar-sections/DeviceSwitchToolbar.js.map +1 -1
  446. package/dist/editor/menubar/toolbar-sections/EditControls.d.ts +9 -0
  447. package/dist/editor/menubar/toolbar-sections/EditControls.js +24 -1
  448. package/dist/editor/menubar/toolbar-sections/EditControls.js.map +1 -1
  449. package/dist/editor/menubar/toolbar-sections/FindReplaceControls.d.ts +6 -0
  450. package/dist/editor/menubar/toolbar-sections/FindReplaceControls.js +31 -0
  451. package/dist/editor/menubar/toolbar-sections/FindReplaceControls.js.map +1 -0
  452. package/dist/editor/menubar/toolbar-sections/FullscreenControl.js +3 -2
  453. package/dist/editor/menubar/toolbar-sections/FullscreenControl.js.map +1 -1
  454. package/dist/editor/menubar/toolbar-sections/InsertControls.js +4 -2
  455. package/dist/editor/menubar/toolbar-sections/InsertControls.js.map +1 -1
  456. package/dist/editor/menubar/toolbar-sections/LayoutModeControls.js +3 -2
  457. package/dist/editor/menubar/toolbar-sections/LayoutModeControls.js.map +1 -1
  458. package/dist/editor/menubar/toolbar-sections/ReviewCommands.js +2 -2
  459. package/dist/editor/menubar/toolbar-sections/ReviewCommands.js.map +1 -1
  460. package/dist/editor/menubar/toolbar-sections/SpellCheckToggleControl.d.ts +5 -0
  461. package/dist/editor/menubar/toolbar-sections/SpellCheckToggleControl.js +16 -0
  462. package/dist/editor/menubar/toolbar-sections/SpellCheckToggleControl.js.map +1 -0
  463. package/dist/editor/menubar/toolbar-sections/UndoRedoControls.js +2 -2
  464. package/dist/editor/menubar/toolbar-sections/UndoRedoControls.js.map +1 -1
  465. package/dist/editor/menubar/toolbar-sections/UtilityControls.js +7 -7
  466. package/dist/editor/menubar/toolbar-sections/UtilityControls.js.map +1 -1
  467. package/dist/editor/menubar/toolbar-sections/ViewportControls.d.ts +3 -4
  468. package/dist/editor/menubar/toolbar-sections/ViewportControls.js +19 -31
  469. package/dist/editor/menubar/toolbar-sections/ViewportControls.js.map +1 -1
  470. package/dist/editor/menubar/toolbar-sections/index.d.ts +2 -1
  471. package/dist/editor/menubar/toolbar-sections/index.js +2 -1
  472. package/dist/editor/menubar/toolbar-sections/index.js.map +1 -1
  473. package/dist/editor/mobileBottomPanel.d.ts +40 -0
  474. package/dist/editor/mobileBottomPanel.js +63 -0
  475. package/dist/editor/mobileBottomPanel.js.map +1 -0
  476. package/dist/editor/notifications/useNotifications.js +12 -17
  477. package/dist/editor/notifications/useNotifications.js.map +1 -1
  478. package/dist/editor/page-editor-chrome/AgentChangeHighlightings.d.ts +3 -6
  479. package/dist/editor/page-editor-chrome/AgentChangeHighlightings.js +8 -6
  480. package/dist/editor/page-editor-chrome/AgentChangeHighlightings.js.map +1 -1
  481. package/dist/editor/page-editor-chrome/BridgeInlineFormatOverlay.d.ts +5 -1
  482. package/dist/editor/page-editor-chrome/BridgeInlineFormatOverlay.js +60 -10
  483. package/dist/editor/page-editor-chrome/BridgeInlineFormatOverlay.js.map +1 -1
  484. package/dist/editor/page-editor-chrome/BridgePasteCleanupOverlay.d.ts +6 -0
  485. package/dist/editor/page-editor-chrome/BridgePasteCleanupOverlay.js +100 -0
  486. package/dist/editor/page-editor-chrome/BridgePasteCleanupOverlay.js.map +1 -0
  487. package/dist/editor/page-editor-chrome/BridgeToolbarDropdown.d.ts +16 -0
  488. package/dist/editor/page-editor-chrome/BridgeToolbarDropdown.js +23 -0
  489. package/dist/editor/page-editor-chrome/BridgeToolbarDropdown.js.map +1 -0
  490. package/dist/editor/page-editor-chrome/CanvasOverviewRulerBinding.d.ts +9 -0
  491. package/dist/editor/page-editor-chrome/CanvasOverviewRulerBinding.js +32 -0
  492. package/dist/editor/page-editor-chrome/CanvasOverviewRulerBinding.js.map +1 -0
  493. package/dist/editor/page-editor-chrome/CommentHighlightings.d.ts +4 -1
  494. package/dist/editor/page-editor-chrome/CommentHighlightings.js +195 -388
  495. package/dist/editor/page-editor-chrome/CommentHighlightings.js.map +1 -1
  496. package/dist/editor/page-editor-chrome/CommentTargetPickerCanvasLayer.d.ts +14 -0
  497. package/dist/editor/page-editor-chrome/CommentTargetPickerCanvasLayer.js +110 -0
  498. package/dist/editor/page-editor-chrome/CommentTargetPickerCanvasLayer.js.map +1 -0
  499. package/dist/editor/page-editor-chrome/ConversionIndicators.d.ts +8 -0
  500. package/dist/editor/page-editor-chrome/ConversionIndicators.js +75 -0
  501. package/dist/editor/page-editor-chrome/ConversionIndicators.js.map +1 -0
  502. package/dist/editor/page-editor-chrome/DiffHighlightOverlay.d.ts +9 -13
  503. package/dist/editor/page-editor-chrome/DiffHighlightOverlay.js +25 -20
  504. package/dist/editor/page-editor-chrome/DiffHighlightOverlay.js.map +1 -1
  505. package/dist/editor/page-editor-chrome/DragInsertionOverlay.js +21 -17
  506. package/dist/editor/page-editor-chrome/DragInsertionOverlay.js.map +1 -1
  507. package/dist/editor/page-editor-chrome/EmptyImageFieldIndicators.d.ts +1 -1
  508. package/dist/editor/page-editor-chrome/EmptyImageFieldIndicators.js +9 -6
  509. package/dist/editor/page-editor-chrome/EmptyImageFieldIndicators.js.map +1 -1
  510. package/dist/editor/page-editor-chrome/FeedbackLeaderCanvasSegment.d.ts +15 -0
  511. package/dist/editor/page-editor-chrome/FeedbackLeaderCanvasSegment.js +31 -0
  512. package/dist/editor/page-editor-chrome/FeedbackLeaderCanvasSegment.js.map +1 -0
  513. package/dist/editor/page-editor-chrome/FieldActionIndicator.d.ts +1 -1
  514. package/dist/editor/page-editor-chrome/FieldActionIndicator.js +14 -7
  515. package/dist/editor/page-editor-chrome/FieldActionIndicator.js.map +1 -1
  516. package/dist/editor/page-editor-chrome/FieldEditedIndicator.js +10 -6
  517. package/dist/editor/page-editor-chrome/FieldEditedIndicator.js.map +1 -1
  518. package/dist/editor/page-editor-chrome/FindReplaceHighlightings.d.ts +11 -0
  519. package/dist/editor/page-editor-chrome/FindReplaceHighlightings.js +120 -0
  520. package/dist/editor/page-editor-chrome/FindReplaceHighlightings.js.map +1 -0
  521. package/dist/editor/page-editor-chrome/FrameMenu.d.ts +1 -1
  522. package/dist/editor/page-editor-chrome/FrameMenu.js +13 -11
  523. package/dist/editor/page-editor-chrome/FrameMenu.js.map +1 -1
  524. package/dist/editor/page-editor-chrome/FrameMenus.d.ts +1 -1
  525. package/dist/editor/page-editor-chrome/FrameMenus.js +7 -5
  526. package/dist/editor/page-editor-chrome/FrameMenus.js.map +1 -1
  527. package/dist/editor/page-editor-chrome/InlineFieldHistoryButton.d.ts +2 -2
  528. package/dist/editor/page-editor-chrome/InlineFieldHistoryButton.js +20 -39
  529. package/dist/editor/page-editor-chrome/InlineFieldHistoryButton.js.map +1 -1
  530. package/dist/editor/page-editor-chrome/LockedFieldIndicator.d.ts +1 -1
  531. package/dist/editor/page-editor-chrome/LockedFieldIndicator.js +27 -21
  532. package/dist/editor/page-editor-chrome/LockedFieldIndicator.js.map +1 -1
  533. package/dist/editor/page-editor-chrome/NoLayout.js +5 -3
  534. package/dist/editor/page-editor-chrome/NoLayout.js.map +1 -1
  535. package/dist/editor/page-editor-chrome/PageEditorChrome.d.ts +1 -1
  536. package/dist/editor/page-editor-chrome/PageEditorChrome.js +30 -23
  537. package/dist/editor/page-editor-chrome/PageEditorChrome.js.map +1 -1
  538. package/dist/editor/page-editor-chrome/PictureEditorOverlay.d.ts +1 -1
  539. package/dist/editor/page-editor-chrome/PictureEditorOverlay.js +24 -21
  540. package/dist/editor/page-editor-chrome/PictureEditorOverlay.js.map +1 -1
  541. package/dist/editor/page-editor-chrome/PlaceholderDropZone.js +10 -4
  542. package/dist/editor/page-editor-chrome/PlaceholderDropZone.js.map +1 -1
  543. package/dist/editor/page-editor-chrome/PlaceholderDropZones.d.ts +1 -1
  544. package/dist/editor/page-editor-chrome/PlaceholderDropZones.js +11 -10
  545. package/dist/editor/page-editor-chrome/PlaceholderDropZones.js.map +1 -1
  546. package/dist/editor/page-editor-chrome/SpellCheckHighlightings.d.ts +12 -0
  547. package/dist/editor/page-editor-chrome/SpellCheckHighlightings.js +197 -0
  548. package/dist/editor/page-editor-chrome/SpellCheckHighlightings.js.map +1 -0
  549. package/dist/editor/page-editor-chrome/SuggestionHighlightings.d.ts +1 -1
  550. package/dist/editor/page-editor-chrome/SuggestionHighlightings.js +226 -381
  551. package/dist/editor/page-editor-chrome/SuggestionHighlightings.js.map +1 -1
  552. package/dist/editor/page-editor-chrome/ValidationRulerMarks.d.ts +11 -0
  553. package/dist/editor/page-editor-chrome/ValidationRulerMarks.js +56 -0
  554. package/dist/editor/page-editor-chrome/ValidationRulerMarks.js.map +1 -0
  555. package/dist/editor/page-editor-chrome/VersionDiffHighlightings.d.ts +1 -1
  556. package/dist/editor/page-editor-chrome/VersionDiffHighlightings.js +11 -8
  557. package/dist/editor/page-editor-chrome/VersionDiffHighlightings.js.map +1 -1
  558. package/dist/editor/page-editor-chrome/overlay/IframeOverlayProvider.d.ts +15 -2
  559. package/dist/editor/page-editor-chrome/overlay/IframeOverlayProvider.js +70 -9
  560. package/dist/editor/page-editor-chrome/overlay/IframeOverlayProvider.js.map +1 -1
  561. package/dist/editor/page-editor-chrome/overlay/feedbackAnchorMeasurements.d.ts +44 -0
  562. package/dist/editor/page-editor-chrome/overlay/feedbackAnchorMeasurements.js +89 -0
  563. package/dist/editor/page-editor-chrome/overlay/feedbackAnchorMeasurements.js.map +1 -0
  564. package/dist/editor/page-editor-chrome/overlay/feedbackAnchorStore.d.ts +17 -0
  565. package/dist/editor/page-editor-chrome/overlay/feedbackAnchorStore.js +53 -0
  566. package/dist/editor/page-editor-chrome/overlay/feedbackAnchorStore.js.map +1 -0
  567. package/dist/editor/page-editor-chrome/overlay/geometry.d.ts +15 -0
  568. package/dist/editor/page-editor-chrome/overlay/geometry.js +40 -0
  569. package/dist/editor/page-editor-chrome/overlay/geometry.js.map +1 -1
  570. package/dist/editor/page-editor-chrome/overlay/useBridgeTextRangeRequest.d.ts +11 -0
  571. package/dist/editor/page-editor-chrome/overlay/useBridgeTextRangeRequest.js +84 -0
  572. package/dist/editor/page-editor-chrome/overlay/useBridgeTextRangeRequest.js.map +1 -0
  573. package/dist/editor/page-editor-chrome/overlay/useCommentAnchorMeasurements.d.ts +34 -0
  574. package/dist/editor/page-editor-chrome/overlay/useCommentAnchorMeasurements.js +229 -0
  575. package/dist/editor/page-editor-chrome/overlay/useCommentAnchorMeasurements.js.map +1 -0
  576. package/dist/editor/page-editor-chrome/overlay/useOverlayViewportRight.d.ts +9 -0
  577. package/dist/editor/page-editor-chrome/overlay/useOverlayViewportRight.js +34 -0
  578. package/dist/editor/page-editor-chrome/overlay/useOverlayViewportRight.js.map +1 -0
  579. package/dist/editor/page-editor-chrome/overlay/useSuggestionAnchorMeasurements.d.ts +49 -0
  580. package/dist/editor/page-editor-chrome/overlay/useSuggestionAnchorMeasurements.js +241 -0
  581. package/dist/editor/page-editor-chrome/overlay/useSuggestionAnchorMeasurements.js.map +1 -0
  582. package/dist/editor/page-editor-chrome/useBridgeInlineEditing.d.ts +7 -0
  583. package/dist/editor/page-editor-chrome/useBridgeInlineEditing.js +63 -5
  584. package/dist/editor/page-editor-chrome/useBridgeInlineEditing.js.map +1 -1
  585. package/dist/editor/page-editor-chrome/useBridgeRichTextFieldOptions.d.ts +12 -0
  586. package/dist/editor/page-editor-chrome/useBridgeRichTextFieldOptions.js +79 -0
  587. package/dist/editor/page-editor-chrome/useBridgeRichTextFieldOptions.js.map +1 -0
  588. package/dist/editor/page-editor-chrome/useComponentDragHandle.js +1 -1
  589. package/dist/editor/page-editor-chrome/useComponentDragHandle.js.map +1 -1
  590. package/dist/editor/page-editor-chrome/useDragInsertionGesture.js +1 -1
  591. package/dist/editor/page-editor-chrome/useDragInsertionGesture.js.map +1 -1
  592. package/dist/editor/page-editor-chrome/usePinnedHoveredComponentId.d.ts +1 -1
  593. package/dist/editor/page-editor-chrome/usePinnedHoveredComponentId.js +4 -2
  594. package/dist/editor/page-editor-chrome/usePinnedHoveredComponentId.js.map +1 -1
  595. package/dist/editor/page-viewer/CanvasOverviewRuler.d.ts +11 -0
  596. package/dist/editor/page-viewer/CanvasOverviewRuler.js +65 -0
  597. package/dist/editor/page-viewer/CanvasOverviewRuler.js.map +1 -0
  598. package/dist/editor/page-viewer/DeviceToolbar.d.ts +1 -1
  599. package/dist/editor/page-viewer/DeviceToolbar.js +8 -3
  600. package/dist/editor/page-viewer/DeviceToolbar.js.map +1 -1
  601. package/dist/editor/page-viewer/DynamicRenderingsBar.d.ts +23 -0
  602. package/dist/editor/page-viewer/DynamicRenderingsBar.js +28 -0
  603. package/dist/editor/page-viewer/DynamicRenderingsBar.js.map +1 -0
  604. package/dist/editor/page-viewer/DynamicRenderingsStrip.d.ts +18 -0
  605. package/dist/editor/page-viewer/DynamicRenderingsStrip.js +29 -0
  606. package/dist/editor/page-viewer/DynamicRenderingsStrip.js.map +1 -0
  607. package/dist/editor/page-viewer/EditorForm.js +29 -24
  608. package/dist/editor/page-viewer/EditorForm.js.map +1 -1
  609. package/dist/editor/page-viewer/FeedbackMargin.d.ts +57 -0
  610. package/dist/editor/page-viewer/FeedbackMargin.js +378 -0
  611. package/dist/editor/page-viewer/FeedbackMargin.js.map +1 -0
  612. package/dist/editor/page-viewer/FeedbackMarginController.d.ts +76 -0
  613. package/dist/editor/page-viewer/FeedbackMarginController.js +241 -0
  614. package/dist/editor/page-viewer/FeedbackMarginController.js.map +1 -0
  615. package/dist/editor/page-viewer/FeedbackMarginMarker.d.ts +16 -0
  616. package/dist/editor/page-viewer/FeedbackMarginMarker.js +24 -0
  617. package/dist/editor/page-viewer/FeedbackMarginMarker.js.map +1 -0
  618. package/dist/editor/page-viewer/FeedbackMarginResizeHandle.d.ts +23 -0
  619. package/dist/editor/page-viewer/FeedbackMarginResizeHandle.js +105 -0
  620. package/dist/editor/page-viewer/FeedbackMarginResizeHandle.js.map +1 -0
  621. package/dist/editor/page-viewer/InteractivePreviewBar.d.ts +24 -0
  622. package/dist/editor/page-viewer/InteractivePreviewBar.js +31 -0
  623. package/dist/editor/page-viewer/InteractivePreviewBar.js.map +1 -0
  624. package/dist/editor/page-viewer/MiniMap.d.ts +15 -5
  625. package/dist/editor/page-viewer/MiniMap.js +175 -67
  626. package/dist/editor/page-viewer/MiniMap.js.map +1 -1
  627. package/dist/editor/page-viewer/MinimapDropTargets.d.ts +1 -1
  628. package/dist/editor/page-viewer/MinimapDropTargets.js +9 -7
  629. package/dist/editor/page-viewer/MinimapDropTargets.js.map +1 -1
  630. package/dist/editor/page-viewer/MobileCommentsPanel.d.ts +16 -0
  631. package/dist/editor/page-viewer/MobileCommentsPanel.js +112 -0
  632. package/dist/editor/page-viewer/MobileCommentsPanel.js.map +1 -0
  633. package/dist/editor/page-viewer/PageViewer.js +22 -67
  634. package/dist/editor/page-viewer/PageViewer.js.map +1 -1
  635. package/dist/editor/page-viewer/PageViewerFrame.d.ts +1 -0
  636. package/dist/editor/page-viewer/PageViewerFrame.js +631 -229
  637. package/dist/editor/page-viewer/PageViewerFrame.js.map +1 -1
  638. package/dist/editor/page-viewer/RenderingAiCheck.d.ts +18 -0
  639. package/dist/editor/page-viewer/RenderingAiCheck.js +45 -0
  640. package/dist/editor/page-viewer/RenderingAiCheck.js.map +1 -0
  641. package/dist/editor/page-viewer/RenderingApprovalDialog.d.ts +32 -0
  642. package/dist/editor/page-viewer/RenderingApprovalDialog.js +191 -0
  643. package/dist/editor/page-viewer/RenderingApprovalDialog.js.map +1 -0
  644. package/dist/editor/page-viewer/SealedClientCodePreview.d.ts +17 -0
  645. package/dist/editor/page-viewer/SealedClientCodePreview.js +38 -0
  646. package/dist/editor/page-viewer/SealedClientCodePreview.js.map +1 -0
  647. package/dist/editor/page-viewer/bridgeFieldPatch.d.ts +9 -0
  648. package/dist/editor/page-viewer/bridgeFieldPatch.js +21 -0
  649. package/dist/editor/page-viewer/bridgeFieldPatch.js.map +1 -1
  650. package/dist/editor/page-viewer/bridgeInlineEditSession.js +8 -0
  651. package/dist/editor/page-viewer/bridgeInlineEditSession.js.map +1 -1
  652. package/dist/editor/page-viewer/bridgeKeyboardShortcuts.d.ts +6 -0
  653. package/dist/editor/page-viewer/bridgeKeyboardShortcuts.js +19 -1
  654. package/dist/editor/page-viewer/bridgeKeyboardShortcuts.js.map +1 -1
  655. package/dist/editor/page-viewer/canvasFrameNavigation.d.ts +18 -0
  656. package/dist/editor/page-viewer/canvasFrameNavigation.js +36 -0
  657. package/dist/editor/page-viewer/canvasFrameNavigation.js.map +1 -0
  658. package/dist/editor/page-viewer/canvasLoadSettling.d.ts +42 -0
  659. package/dist/editor/page-viewer/canvasLoadSettling.js +46 -0
  660. package/dist/editor/page-viewer/canvasLoadSettling.js.map +1 -0
  661. package/dist/editor/page-viewer/canvasScrollHandoff.d.ts +34 -0
  662. package/dist/editor/page-viewer/canvasScrollHandoff.js +55 -0
  663. package/dist/editor/page-viewer/canvasScrollHandoff.js.map +1 -0
  664. package/dist/editor/page-viewer/feedbackMarginLayout.d.ts +119 -0
  665. package/dist/editor/page-viewer/feedbackMarginLayout.js +155 -0
  666. package/dist/editor/page-viewer/feedbackMarginLayout.js.map +1 -0
  667. package/dist/editor/page-viewer/feedbackMarginSources.d.ts +36 -0
  668. package/dist/editor/page-viewer/feedbackMarginSources.js +196 -0
  669. package/dist/editor/page-viewer/feedbackMarginSources.js.map +1 -0
  670. package/dist/editor/page-viewer/feedbackMarginWidth.d.ts +43 -0
  671. package/dist/editor/page-viewer/feedbackMarginWidth.js +107 -0
  672. package/dist/editor/page-viewer/feedbackMarginWidth.js.map +1 -0
  673. package/dist/editor/page-viewer/interactivePreview.d.ts +168 -0
  674. package/dist/editor/page-viewer/interactivePreview.js +344 -0
  675. package/dist/editor/page-viewer/interactivePreview.js.map +1 -0
  676. package/dist/editor/page-viewer/minimapViewport.d.ts +2 -0
  677. package/dist/editor/page-viewer/minimapViewport.js +34 -0
  678. package/dist/editor/page-viewer/minimapViewport.js.map +1 -0
  679. package/dist/editor/page-viewer/openPageItems.d.ts +29 -0
  680. package/dist/editor/page-viewer/openPageItems.js +73 -0
  681. package/dist/editor/page-viewer/openPageItems.js.map +1 -0
  682. package/dist/editor/page-viewer/overviewRuler.d.ts +128 -0
  683. package/dist/editor/page-viewer/overviewRuler.js +226 -0
  684. package/dist/editor/page-viewer/overviewRuler.js.map +1 -0
  685. package/dist/editor/page-viewer/pageViewContext.d.ts +99 -37
  686. package/dist/editor/page-viewer/pageViewContext.js +207 -238
  687. package/dist/editor/page-viewer/pageViewContext.js.map +1 -1
  688. package/dist/editor/page-viewer/renderingApproval.d.ts +59 -0
  689. package/dist/editor/page-viewer/renderingApproval.js +186 -0
  690. package/dist/editor/page-viewer/renderingApproval.js.map +1 -0
  691. package/dist/editor/page-viewer/renderingChanges.d.ts +29 -0
  692. package/dist/editor/page-viewer/renderingChanges.js +40 -0
  693. package/dist/editor/page-viewer/renderingChanges.js.map +1 -0
  694. package/dist/editor/page-viewer/scrollIntoViewTextRanges.d.ts +23 -0
  695. package/dist/editor/page-viewer/scrollIntoViewTextRanges.js +26 -0
  696. package/dist/editor/page-viewer/scrollIntoViewTextRanges.js.map +1 -0
  697. package/dist/editor/page-viewer/useInteractivePreview.d.ts +77 -0
  698. package/dist/editor/page-viewer/useInteractivePreview.js +210 -0
  699. package/dist/editor/page-viewer/useInteractivePreview.js.map +1 -0
  700. package/dist/editor/pageModel.d.ts +12 -0
  701. package/dist/editor/personalization/ConditionTreeEditor.js +1 -1
  702. package/dist/editor/personalization/ConditionTreeEditor.js.map +1 -1
  703. package/dist/editor/personalization/PersonalizationPanel.js +1 -1
  704. package/dist/editor/personalization/PersonalizationPanel.js.map +1 -1
  705. package/dist/editor/reviews/CollapsibleText.d.ts +13 -0
  706. package/dist/editor/reviews/CollapsibleText.js +41 -0
  707. package/dist/editor/reviews/CollapsibleText.js.map +1 -0
  708. package/dist/editor/reviews/Comment.d.ts +10 -1
  709. package/dist/editor/reviews/Comment.js +47 -26
  710. package/dist/editor/reviews/Comment.js.map +1 -1
  711. package/dist/editor/reviews/CommentDisplayPopover.js +29 -25
  712. package/dist/editor/reviews/CommentDisplayPopover.js.map +1 -1
  713. package/dist/editor/reviews/CommentEditor.d.ts +25 -1
  714. package/dist/editor/reviews/CommentEditor.js +158 -47
  715. package/dist/editor/reviews/CommentEditor.js.map +1 -1
  716. package/dist/editor/reviews/CommentImageAttachments.d.ts +12 -0
  717. package/dist/editor/reviews/CommentImageAttachments.js +19 -0
  718. package/dist/editor/reviews/CommentImageAttachments.js.map +1 -0
  719. package/dist/editor/reviews/CommentPopover.d.ts +0 -4
  720. package/dist/editor/reviews/CommentPopover.js +4 -8
  721. package/dist/editor/reviews/CommentPopover.js.map +1 -1
  722. package/dist/editor/reviews/CommentQuote.d.ts +10 -1
  723. package/dist/editor/reviews/CommentQuote.js +15 -10
  724. package/dist/editor/reviews/CommentQuote.js.map +1 -1
  725. package/dist/editor/reviews/CommentTargetOutline.d.ts +13 -0
  726. package/dist/editor/reviews/CommentTargetOutline.js +21 -0
  727. package/dist/editor/reviews/CommentTargetOutline.js.map +1 -0
  728. package/dist/editor/reviews/CommentTargetPickerDomLayer.d.ts +7 -0
  729. package/dist/editor/reviews/CommentTargetPickerDomLayer.js +117 -0
  730. package/dist/editor/reviews/CommentTargetPickerDomLayer.js.map +1 -0
  731. package/dist/editor/reviews/CommentThreadAgentLink.d.ts +6 -1
  732. package/dist/editor/reviews/CommentThreadAgentLink.js +4 -4
  733. package/dist/editor/reviews/CommentThreadAgentLink.js.map +1 -1
  734. package/dist/editor/reviews/CommentThreadCard.d.ts +34 -0
  735. package/dist/editor/reviews/CommentThreadCard.js +156 -0
  736. package/dist/editor/reviews/CommentThreadCard.js.map +1 -0
  737. package/dist/editor/reviews/CommentView.d.ts +7 -1
  738. package/dist/editor/reviews/CommentView.js +24 -6
  739. package/dist/editor/reviews/CommentView.js.map +1 -1
  740. package/dist/editor/reviews/Comments.js +5 -14
  741. package/dist/editor/reviews/Comments.js.map +1 -1
  742. package/dist/editor/reviews/CreateReviewDialog.js +36 -9
  743. package/dist/editor/reviews/CreateReviewDialog.js.map +1 -1
  744. package/dist/editor/reviews/EditReviewSettingsDialog.js +1 -1
  745. package/dist/editor/reviews/EditReviewSettingsDialog.js.map +1 -1
  746. package/dist/editor/reviews/FeedbackCard.d.ts +16 -1
  747. package/dist/editor/reviews/FeedbackCard.js +14 -3
  748. package/dist/editor/reviews/FeedbackCard.js.map +1 -1
  749. package/dist/editor/reviews/FeedbackFilters.d.ts +9 -5
  750. package/dist/editor/reviews/FeedbackFilters.js +15 -36
  751. package/dist/editor/reviews/FeedbackFilters.js.map +1 -1
  752. package/dist/editor/reviews/FeedbackModeIntro.d.ts +7 -1
  753. package/dist/editor/reviews/FeedbackModeIntro.js +11 -6
  754. package/dist/editor/reviews/FeedbackModeIntro.js.map +1 -1
  755. package/dist/editor/reviews/MentionText.d.ts +2 -1
  756. package/dist/editor/reviews/MentionText.js +5 -3
  757. package/dist/editor/reviews/MentionText.js.map +1 -1
  758. package/dist/editor/reviews/MultiReviewManager.js +18 -3
  759. package/dist/editor/reviews/MultiReviewManager.js.map +1 -1
  760. package/dist/editor/reviews/ReviewItemsPanel.js +4 -0
  761. package/dist/editor/reviews/ReviewItemsPanel.js.map +1 -1
  762. package/dist/editor/reviews/SuggestedEdit.d.ts +10 -1
  763. package/dist/editor/reviews/SuggestedEdit.js +77 -10
  764. package/dist/editor/reviews/SuggestedEdit.js.map +1 -1
  765. package/dist/editor/reviews/SuggestionCommentThread.d.ts +5 -1
  766. package/dist/editor/reviews/SuggestionCommentThread.js +48 -17
  767. package/dist/editor/reviews/SuggestionCommentThread.js.map +1 -1
  768. package/dist/editor/reviews/SuggestionThreadCard.d.ts +19 -0
  769. package/dist/editor/reviews/SuggestionThreadCard.js +25 -0
  770. package/dist/editor/reviews/SuggestionThreadCard.js.map +1 -0
  771. package/dist/editor/reviews/addCommentOnTarget.d.ts +22 -0
  772. package/dist/editor/reviews/addCommentOnTarget.js +32 -0
  773. package/dist/editor/reviews/addCommentOnTarget.js.map +1 -0
  774. package/dist/editor/reviews/applySuggestedEditActions.js +7 -1
  775. package/dist/editor/reviews/applySuggestedEditActions.js.map +1 -1
  776. package/dist/editor/reviews/balloonLayout.d.ts +51 -0
  777. package/dist/editor/reviews/balloonLayout.js +101 -0
  778. package/dist/editor/reviews/balloonLayout.js.map +1 -0
  779. package/dist/editor/reviews/commentAgentAttachments.d.ts +5 -0
  780. package/dist/editor/reviews/commentAgentAttachments.js +51 -0
  781. package/dist/editor/reviews/commentAgentAttachments.js.map +1 -0
  782. package/dist/editor/reviews/commentAi.d.ts +4 -2
  783. package/dist/editor/reviews/commentAi.js +19 -12
  784. package/dist/editor/reviews/commentAi.js.map +1 -1
  785. package/dist/editor/reviews/commentImages.d.ts +1 -2
  786. package/dist/editor/reviews/commentImages.js +1 -37
  787. package/dist/editor/reviews/commentImages.js.map +1 -1
  788. package/dist/editor/reviews/commentTargetPicker.d.ts +114 -0
  789. package/dist/editor/reviews/commentTargetPicker.js +153 -0
  790. package/dist/editor/reviews/commentTargetPicker.js.map +1 -0
  791. package/dist/editor/reviews/feedbackAvatar.js +2 -1
  792. package/dist/editor/reviews/feedbackAvatar.js.map +1 -1
  793. package/dist/editor/reviews/feedbackBalloonDate.d.ts +8 -0
  794. package/dist/editor/reviews/feedbackBalloonDate.js +22 -0
  795. package/dist/editor/reviews/feedbackBalloonDate.js.map +1 -0
  796. package/dist/editor/reviews/feedbackDrafts.d.ts +49 -0
  797. package/dist/editor/reviews/feedbackDrafts.js +74 -0
  798. package/dist/editor/reviews/feedbackDrafts.js.map +1 -0
  799. package/dist/editor/reviews/feedbackHoverState.d.ts +18 -0
  800. package/dist/editor/reviews/feedbackHoverState.js +35 -0
  801. package/dist/editor/reviews/feedbackHoverState.js.map +1 -0
  802. package/dist/editor/reviews/feedbackPersonFilter.d.ts +3 -0
  803. package/dist/editor/reviews/feedbackPersonFilter.js +32 -0
  804. package/dist/editor/reviews/feedbackPersonFilter.js.map +1 -0
  805. package/dist/editor/reviews/feedbackSelection.js +7 -3
  806. package/dist/editor/reviews/feedbackSelection.js.map +1 -1
  807. package/dist/editor/reviews/feedbackThreadSelection.d.ts +10 -0
  808. package/dist/editor/reviews/feedbackThreadSelection.js +31 -0
  809. package/dist/editor/reviews/feedbackThreadSelection.js.map +1 -0
  810. package/dist/editor/reviews/feedbackThreads.d.ts +50 -0
  811. package/dist/editor/reviews/feedbackThreads.js +135 -0
  812. package/dist/editor/reviews/feedbackThreads.js.map +1 -0
  813. package/dist/editor/reviews/feedbackWheelForwarding.d.ts +34 -0
  814. package/dist/editor/reviews/feedbackWheelForwarding.js +108 -0
  815. package/dist/editor/reviews/feedbackWheelForwarding.js.map +1 -0
  816. package/dist/editor/reviews/openCommentsFeedback.d.ts +1 -1
  817. package/dist/editor/reviews/openCommentsFeedback.js +2 -1
  818. package/dist/editor/reviews/openCommentsFeedback.js.map +1 -1
  819. package/dist/editor/reviews/pendingReviewSelection.d.ts +13 -0
  820. package/dist/editor/reviews/pendingReviewSelection.js +29 -0
  821. package/dist/editor/reviews/pendingReviewSelection.js.map +1 -0
  822. package/dist/editor/reviews/requestReview.d.ts +27 -0
  823. package/dist/editor/reviews/requestReview.js +36 -0
  824. package/dist/editor/reviews/requestReview.js.map +1 -0
  825. package/dist/editor/reviews/reviewUrlScope.d.ts +23 -0
  826. package/dist/editor/reviews/reviewUrlScope.js +86 -0
  827. package/dist/editor/reviews/reviewUrlScope.js.map +1 -0
  828. package/dist/editor/reviews/scrollWithin.d.ts +29 -0
  829. package/dist/editor/reviews/scrollWithin.js +87 -0
  830. package/dist/editor/reviews/scrollWithin.js.map +1 -0
  831. package/dist/editor/reviews/subtreeFeedback.d.ts +57 -0
  832. package/dist/editor/reviews/subtreeFeedback.js +137 -0
  833. package/dist/editor/reviews/subtreeFeedback.js.map +1 -0
  834. package/dist/editor/reviews/useCommentImagePaste.d.ts +49 -14
  835. package/dist/editor/reviews/useCommentImagePaste.js +165 -62
  836. package/dist/editor/reviews/useCommentImagePaste.js.map +1 -1
  837. package/dist/editor/reviews/useFeedbackThreads.d.ts +35 -0
  838. package/dist/editor/reviews/useFeedbackThreads.js +137 -0
  839. package/dist/editor/reviews/useFeedbackThreads.js.map +1 -0
  840. package/dist/editor/reviews/useMeasuredHeights.d.ts +25 -0
  841. package/dist/editor/reviews/useMeasuredHeights.js +176 -0
  842. package/dist/editor/reviews/useMeasuredHeights.js.map +1 -0
  843. package/dist/editor/reviews/usePendingFeedbackFocus.d.ts +7 -0
  844. package/dist/editor/reviews/usePendingFeedbackFocus.js +42 -0
  845. package/dist/editor/reviews/usePendingFeedbackFocus.js.map +1 -0
  846. package/dist/editor/services/agentService.d.ts +101 -5
  847. package/dist/editor/services/agentService.js +16 -0
  848. package/dist/editor/services/agentService.js.map +1 -1
  849. package/dist/editor/services/agentStatus.d.ts +1 -0
  850. package/dist/editor/services/agentStatus.js +14 -0
  851. package/dist/editor/services/agentStatus.js.map +1 -1
  852. package/dist/editor/services/aiService.d.ts +2 -0
  853. package/dist/editor/services/aiService.js.map +1 -1
  854. package/dist/editor/services/contentService.d.ts +11 -1
  855. package/dist/editor/services/contentService.js +2 -1
  856. package/dist/editor/services/contentService.js.map +1 -1
  857. package/dist/editor/services/editService.d.ts +2 -0
  858. package/dist/editor/services/editService.js.map +1 -1
  859. package/dist/editor/services/indexService.d.ts +1 -0
  860. package/dist/editor/services/indexService.js +4 -0
  861. package/dist/editor/services/indexService.js.map +1 -1
  862. package/dist/editor/services/mcpAccessService.d.ts +93 -0
  863. package/dist/editor/services/mcpAccessService.js +41 -0
  864. package/dist/editor/services/mcpAccessService.js.map +1 -0
  865. package/dist/editor/services/previewTokenService.d.ts +14 -0
  866. package/dist/editor/services/previewTokenService.js +34 -0
  867. package/dist/editor/services/previewTokenService.js.map +1 -0
  868. package/dist/editor/services/renderingsService.d.ts +117 -0
  869. package/dist/editor/services/renderingsService.js +245 -0
  870. package/dist/editor/services/renderingsService.js.map +1 -0
  871. package/dist/editor/services/reviewsService.d.ts +6 -1
  872. package/dist/editor/services/reviewsService.js +14 -6
  873. package/dist/editor/services/reviewsService.js.map +1 -1
  874. package/dist/editor/services/serviceHelper.d.ts +17 -1
  875. package/dist/editor/services/serviceHelper.js +67 -12
  876. package/dist/editor/services/serviceHelper.js.map +1 -1
  877. package/dist/editor/services/spellCheckService.d.ts +13 -0
  878. package/dist/editor/services/spellCheckService.js +33 -0
  879. package/dist/editor/services/spellCheckService.js.map +1 -0
  880. package/dist/editor/services/suggestedEditsService.d.ts +1 -0
  881. package/dist/editor/services/suggestedEditsService.js +7 -0
  882. package/dist/editor/services/suggestedEditsService.js.map +1 -1
  883. package/dist/editor/settings/MigrationJournalCard.js +2 -2
  884. package/dist/editor/settings/MigrationJournalCard.js.map +1 -1
  885. package/dist/editor/settings/StatusSummary.js +5 -2
  886. package/dist/editor/settings/StatusSummary.js.map +1 -1
  887. package/dist/editor/settings/index/CollectionWarningsDisplay.js +1 -1
  888. package/dist/editor/settings/index/CollectionWarningsDisplay.js.map +1 -1
  889. package/dist/editor/settings/index/IndexGenerationsSection.d.ts +4 -5
  890. package/dist/editor/settings/index/IndexGenerationsSection.js +83 -33
  891. package/dist/editor/settings/index/IndexGenerationsSection.js.map +1 -1
  892. package/dist/editor/settings/index/RecentBatchesList.js +2 -1
  893. package/dist/editor/settings/index/RecentBatchesList.js.map +1 -1
  894. package/dist/editor/settings/panels/AgentProfileConfigPanel.js +1 -1
  895. package/dist/editor/settings/panels/AgentProfileConfigPanel.js.map +1 -1
  896. package/dist/editor/settings/panels/AgentToolsPanel.js +1 -1
  897. package/dist/editor/settings/panels/AgentToolsPanel.js.map +1 -1
  898. package/dist/editor/settings/panels/JavaScriptToolAgentPanel.js +1 -1
  899. package/dist/editor/settings/panels/JavaScriptToolAgentPanel.js.map +1 -1
  900. package/dist/editor/settings/panels/McpAccessPanel.d.ts +7 -0
  901. package/dist/editor/settings/panels/McpAccessPanel.js +96 -0
  902. package/dist/editor/settings/panels/McpAccessPanel.js.map +1 -0
  903. package/dist/editor/settings/panels/McpAccessSettingsView.d.ts +8 -0
  904. package/dist/editor/settings/panels/McpAccessSettingsView.js +221 -0
  905. package/dist/editor/settings/panels/McpAccessSettingsView.js.map +1 -0
  906. package/dist/editor/settings/panels/ModelConfigPanel.js +1 -0
  907. package/dist/editor/settings/panels/ModelConfigPanel.js.map +1 -1
  908. package/dist/editor/settings/panels/ModelsPanel.js +60 -6
  909. package/dist/editor/settings/panels/ModelsPanel.js.map +1 -1
  910. package/dist/editor/settings/panels/PersistentLogsPanel.js +2 -1
  911. package/dist/editor/settings/panels/PersistentLogsPanel.js.map +1 -1
  912. package/dist/editor/settings/panels/ProjectTemplateAgentPanel.js +1 -1
  913. package/dist/editor/settings/panels/ProjectTemplateAgentPanel.js.map +1 -1
  914. package/dist/editor/settings/panels/ProvidersPanel.js +2 -1
  915. package/dist/editor/settings/panels/ProvidersPanel.js.map +1 -1
  916. package/dist/editor/settings/panels/SearchConfigPanel.js +6 -5
  917. package/dist/editor/settings/panels/SearchConfigPanel.js.map +1 -1
  918. package/dist/editor/settings/panels/SpellCheckPanel.d.ts +8 -0
  919. package/dist/editor/settings/panels/SpellCheckPanel.js +253 -0
  920. package/dist/editor/settings/panels/SpellCheckPanel.js.map +1 -0
  921. package/dist/editor/settings/panels/StatusPanel.js +5 -6
  922. package/dist/editor/settings/panels/StatusPanel.js.map +1 -1
  923. package/dist/editor/settings/panels/UserPreferencesPanel.js +5 -2
  924. package/dist/editor/settings/panels/UserPreferencesPanel.js.map +1 -1
  925. package/dist/editor/settings/panels/index.d.ts +2 -0
  926. package/dist/editor/settings/panels/index.js +2 -0
  927. package/dist/editor/settings/panels/index.js.map +1 -1
  928. package/dist/editor/sidebar/ComponentPalette.js +7 -3
  929. package/dist/editor/sidebar/ComponentPalette.js.map +1 -1
  930. package/dist/editor/sidebar/ComponentTree.d.ts +1 -1
  931. package/dist/editor/sidebar/ComponentTree.js +37 -58
  932. package/dist/editor/sidebar/ComponentTree.js.map +1 -1
  933. package/dist/editor/sidebar/DictionaryEditor.js +2 -1
  934. package/dist/editor/sidebar/DictionaryEditor.js.map +1 -1
  935. package/dist/editor/sidebar/EditHistory.js +5 -4
  936. package/dist/editor/sidebar/EditHistory.js.map +1 -1
  937. package/dist/editor/sidebar/FeedbackSidebar.d.ts +7 -0
  938. package/dist/editor/sidebar/FeedbackSidebar.js +300 -0
  939. package/dist/editor/sidebar/FeedbackSidebar.js.map +1 -0
  940. package/dist/editor/sidebar/OperationDetailsContent.js +50 -0
  941. package/dist/editor/sidebar/OperationDetailsContent.js.map +1 -1
  942. package/dist/editor/sidebar/OperationItem.js +4 -1
  943. package/dist/editor/sidebar/OperationItem.js.map +1 -1
  944. package/dist/editor/sidebar/Sessions.js +3 -1
  945. package/dist/editor/sidebar/Sessions.js.map +1 -1
  946. package/dist/editor/sidebar/Validation.js +1 -1
  947. package/dist/editor/sidebar/Validation.js.map +1 -1
  948. package/dist/editor/sidebar/Workbox.js +3 -108
  949. package/dist/editor/sidebar/Workbox.js.map +1 -1
  950. package/dist/editor/sidebar/liveComponentThumbnails.d.ts +7 -3
  951. package/dist/editor/sidebar/liveComponentThumbnails.js +26 -16
  952. package/dist/editor/sidebar/liveComponentThumbnails.js.map +1 -1
  953. package/dist/editor/spellcheck/canvasSpellCheckContextMenu.d.ts +30 -0
  954. package/dist/editor/spellcheck/canvasSpellCheckContextMenu.js +69 -0
  955. package/dist/editor/spellcheck/canvasSpellCheckContextMenu.js.map +1 -0
  956. package/dist/editor/spellcheck/htmlSpellDocument.d.ts +60 -0
  957. package/dist/editor/spellcheck/htmlSpellDocument.js +181 -0
  958. package/dist/editor/spellcheck/htmlSpellDocument.js.map +1 -0
  959. package/dist/editor/spellcheck/htmlSpellTokenizer.d.ts +45 -0
  960. package/dist/editor/spellcheck/htmlSpellTokenizer.js +277 -0
  961. package/dist/editor/spellcheck/htmlSpellTokenizer.js.map +1 -0
  962. package/dist/editor/spellcheck/replacementGuard.d.ts +27 -0
  963. package/dist/editor/spellcheck/replacementGuard.js +29 -0
  964. package/dist/editor/spellcheck/replacementGuard.js.map +1 -0
  965. package/dist/editor/spellcheck/spellCheckCanvasStore.d.ts +17 -0
  966. package/dist/editor/spellcheck/spellCheckCanvasStore.js +37 -0
  967. package/dist/editor/spellcheck/spellCheckCanvasStore.js.map +1 -0
  968. package/dist/editor/spellcheck/spellCheckCanvasTargets.d.ts +71 -0
  969. package/dist/editor/spellcheck/spellCheckCanvasTargets.js +126 -0
  970. package/dist/editor/spellcheck/spellCheckCanvasTargets.js.map +1 -0
  971. package/dist/editor/spellcheck/spellCheckClient.d.ts +66 -0
  972. package/dist/editor/spellcheck/spellCheckClient.js +0 -0
  973. package/dist/editor/spellcheck/spellCheckClient.js.map +1 -0
  974. package/dist/editor/spellcheck/spellCheckContextMenu.d.ts +52 -0
  975. package/dist/editor/spellcheck/spellCheckContextMenu.js +120 -0
  976. package/dist/editor/spellcheck/spellCheckContextMenu.js.map +1 -0
  977. package/dist/editor/spellcheck/spellCheckReplace.d.ts +8 -0
  978. package/dist/editor/spellcheck/spellCheckReplace.js +20 -0
  979. package/dist/editor/spellcheck/spellCheckReplace.js.map +1 -0
  980. package/dist/editor/spellcheck/spellCheckStyles.d.ts +11 -0
  981. package/dist/editor/spellcheck/spellCheckStyles.js +12 -0
  982. package/dist/editor/spellcheck/spellCheckStyles.js.map +1 -0
  983. package/dist/editor/spellcheck/spellCheckTypes.d.ts +94 -0
  984. package/dist/editor/spellcheck/spellCheckTypes.js +2 -0
  985. package/dist/editor/spellcheck/spellCheckTypes.js.map +1 -0
  986. package/dist/editor/spellcheck/textMarkHitTest.d.ts +14 -0
  987. package/dist/editor/spellcheck/textMarkHitTest.js +39 -0
  988. package/dist/editor/spellcheck/textMarkHitTest.js.map +1 -0
  989. package/dist/editor/spellcheck/useSpellCheck.d.ts +16 -0
  990. package/dist/editor/spellcheck/useSpellCheck.js +57 -0
  991. package/dist/editor/spellcheck/useSpellCheck.js.map +1 -0
  992. package/dist/editor/ui/DynamicRenderingsPublishWarning.d.ts +14 -0
  993. package/dist/editor/ui/DynamicRenderingsPublishWarning.js +40 -0
  994. package/dist/editor/ui/DynamicRenderingsPublishWarning.js.map +1 -0
  995. package/dist/editor/ui/ItemNameDialogNew.js +11 -2
  996. package/dist/editor/ui/ItemNameDialogNew.js.map +1 -1
  997. package/dist/editor/ui/ItemSearch.d.ts +2 -0
  998. package/dist/editor/ui/ItemSearch.js +2 -2
  999. package/dist/editor/ui/ItemSearch.js.map +1 -1
  1000. package/dist/editor/ui/ParheliaMark.d.ts +15 -0
  1001. package/dist/editor/ui/ParheliaMark.js +12 -0
  1002. package/dist/editor/ui/ParheliaMark.js.map +1 -0
  1003. package/dist/editor/ui/PublishDialog.d.ts +2 -0
  1004. package/dist/editor/ui/PublishDialog.js +4 -1
  1005. package/dist/editor/ui/PublishDialog.js.map +1 -1
  1006. package/dist/editor/ui/PublishItemDialog.js +3 -2
  1007. package/dist/editor/ui/PublishItemDialog.js.map +1 -1
  1008. package/dist/editor/ui/PublishReadinessSummary.js +1 -1
  1009. package/dist/editor/ui/PublishReadinessSummary.js.map +1 -1
  1010. package/dist/editor/ui/PublishRestrictionsDialog.d.ts +33 -0
  1011. package/dist/editor/ui/PublishRestrictionsDialog.js +208 -38
  1012. package/dist/editor/ui/PublishRestrictionsDialog.js.map +1 -1
  1013. package/dist/editor/ui/RootItemPicker.d.ts +18 -0
  1014. package/dist/editor/ui/RootItemPicker.js +112 -0
  1015. package/dist/editor/ui/RootItemPicker.js.map +1 -0
  1016. package/dist/editor/ui/WorkboxItemsTable.js +1 -1
  1017. package/dist/editor/ui/WorkboxItemsTable.js.map +1 -1
  1018. package/dist/editor/undoEligibility.d.ts +2 -0
  1019. package/dist/editor/undoEligibility.js +8 -0
  1020. package/dist/editor/undoEligibility.js.map +1 -0
  1021. package/dist/editor/utils/dataTransferImages.d.ts +7 -0
  1022. package/dist/editor/utils/dataTransferImages.js +43 -0
  1023. package/dist/editor/utils/dataTransferImages.js.map +1 -0
  1024. package/dist/editor/utils/itemConverters.js +9 -0
  1025. package/dist/editor/utils/itemConverters.js.map +1 -1
  1026. package/dist/editor/utils/keyboardNavigation.js +54 -4
  1027. package/dist/editor/utils/keyboardNavigation.js.map +1 -1
  1028. package/dist/editor/utils.d.ts +4 -4
  1029. package/dist/editor/utils.js +9 -8
  1030. package/dist/editor/utils.js.map +1 -1
  1031. package/dist/editor/validation/navigateToValidationIssue.d.ts +2 -2
  1032. package/dist/editor/validation/navigateToValidationIssue.js +1 -1
  1033. package/dist/editor/validation/navigateToValidationIssue.js.map +1 -1
  1034. package/dist/editor/validation/validationRulerIssues.d.ts +17 -0
  1035. package/dist/editor/validation/validationRulerIssues.js +44 -0
  1036. package/dist/editor/validation/validationRulerIssues.js.map +1 -0
  1037. package/dist/editor/views/CompareView.js +3 -4
  1038. package/dist/editor/views/CompareView.js.map +1 -1
  1039. package/dist/editor/views/EditorSlot.js +10 -4
  1040. package/dist/editor/views/EditorSlot.js.map +1 -1
  1041. package/dist/editor/views/ItemEditor.d.ts +3 -1
  1042. package/dist/editor/views/ItemEditor.js +43 -38
  1043. package/dist/editor/views/ItemEditor.js.map +1 -1
  1044. package/dist/editor/views/ItemEditorPane.js +3 -3
  1045. package/dist/editor/views/ItemEditorPane.js.map +1 -1
  1046. package/dist/editor/views/SingleEditView.js +10 -32
  1047. package/dist/editor/views/SingleEditView.js.map +1 -1
  1048. package/dist/editor/views/editorSlotContext.js +62 -90
  1049. package/dist/editor/views/editorSlotContext.js.map +1 -1
  1050. package/dist/index.d.ts +11 -5
  1051. package/dist/index.js +9 -4
  1052. package/dist/index.js.map +1 -1
  1053. package/dist/lib/utils.d.ts +5 -0
  1054. package/dist/lib/utils.js +7 -0
  1055. package/dist/lib/utils.js.map +1 -1
  1056. package/dist/licensing/FeatureGate.js +1 -1
  1057. package/dist/licensing/FeatureGate.js.map +1 -1
  1058. package/dist/licensing/LicenseContext.js +31 -17
  1059. package/dist/licensing/LicenseContext.js.map +1 -1
  1060. package/dist/revision.d.ts +2 -2
  1061. package/dist/revision.js +2 -2
  1062. package/dist/setup/services/setupWizardService.d.ts +6 -2
  1063. package/dist/setup/services/setupWizardService.js +10 -0
  1064. package/dist/setup/services/setupWizardService.js.map +1 -1
  1065. package/dist/setup/wizard/steps/AddModelDialog.js +1 -0
  1066. package/dist/setup/wizard/steps/AddModelDialog.js.map +1 -1
  1067. package/dist/setup/wizard/steps/ImportModelDialog.js +2 -1
  1068. package/dist/setup/wizard/steps/ImportModelDialog.js.map +1 -1
  1069. package/dist/splash-screen/ModernSplashScreen.js +8 -6
  1070. package/dist/splash-screen/ModernSplashScreen.js.map +1 -1
  1071. package/dist/splash-screen/RecentPages.js +8 -5
  1072. package/dist/splash-screen/RecentPages.js.map +1 -1
  1073. package/dist/task-board/TaskBoardWorkspace.js +218 -35
  1074. package/dist/task-board/TaskBoardWorkspace.js.map +1 -1
  1075. package/dist/task-board/components/AttentionPromptDialog.d.ts +13 -0
  1076. package/dist/task-board/components/AttentionPromptDialog.js +45 -0
  1077. package/dist/task-board/components/AttentionPromptDialog.js.map +1 -0
  1078. package/dist/task-board/components/GoalDataView.d.ts +22 -1
  1079. package/dist/task-board/components/GoalDataView.js +63 -17
  1080. package/dist/task-board/components/GoalDataView.js.map +1 -1
  1081. package/dist/task-board/components/GoalFindingsTable.d.ts +43 -0
  1082. package/dist/task-board/components/GoalFindingsTable.js +160 -0
  1083. package/dist/task-board/components/GoalFindingsTable.js.map +1 -0
  1084. package/dist/task-board/components/GoalsMatrix.js +33 -6
  1085. package/dist/task-board/components/GoalsMatrix.js.map +1 -1
  1086. package/dist/task-board/components/IssuePanel.d.ts +31 -0
  1087. package/dist/task-board/components/IssuePanel.js +268 -0
  1088. package/dist/task-board/components/IssuePanel.js.map +1 -0
  1089. package/dist/task-board/components/ProjectBudgetBanner.js +1 -1
  1090. package/dist/task-board/components/ProjectBudgetBanner.js.map +1 -1
  1091. package/dist/task-board/components/ProjectGoalsPanel.js +66 -13
  1092. package/dist/task-board/components/ProjectGoalsPanel.js.map +1 -1
  1093. package/dist/task-board/components/SubgoalFindings.d.ts +40 -0
  1094. package/dist/task-board/components/SubgoalFindings.js +88 -0
  1095. package/dist/task-board/components/SubgoalFindings.js.map +1 -0
  1096. package/dist/task-board/components/TaskAgentPanel.d.ts +2 -0
  1097. package/dist/task-board/components/TaskAgentPanel.js +5 -4
  1098. package/dist/task-board/components/TaskAgentPanel.js.map +1 -1
  1099. package/dist/task-board/components/TaskDetailPanel.js +22 -16
  1100. package/dist/task-board/components/TaskDetailPanel.js.map +1 -1
  1101. package/dist/task-board/components/WizardCommunicationCards.js +1 -1
  1102. package/dist/task-board/components/WizardCommunicationCards.js.map +1 -1
  1103. package/dist/task-board/components/WizardCommunicationCenter.d.ts +2 -0
  1104. package/dist/task-board/components/WizardCommunicationCenter.js +5 -3
  1105. package/dist/task-board/components/WizardCommunicationCenter.js.map +1 -1
  1106. package/dist/task-board/components/WizardCommunicationShared.js +2 -1
  1107. package/dist/task-board/components/WizardCommunicationShared.js.map +1 -1
  1108. package/dist/task-board/components/WizardTask.d.ts +2 -0
  1109. package/dist/task-board/components/WizardTask.js +2 -2
  1110. package/dist/task-board/components/WizardTask.js.map +1 -1
  1111. package/dist/task-board/components/WizardTaskDetailsPanel.d.ts +4 -0
  1112. package/dist/task-board/components/WizardTaskDetailsPanel.js +16 -3
  1113. package/dist/task-board/components/WizardTaskDetailsPanel.js.map +1 -1
  1114. package/dist/task-board/services/issueService.d.ts +193 -0
  1115. package/dist/task-board/services/issueService.js +97 -0
  1116. package/dist/task-board/services/issueService.js.map +1 -0
  1117. package/dist/task-board/services/taskService.d.ts +1 -2
  1118. package/dist/task-board/services/taskService.js +0 -3
  1119. package/dist/task-board/services/taskService.js.map +1 -1
  1120. package/dist/task-board/taskBlockers.d.ts +10 -0
  1121. package/dist/task-board/taskBlockers.js +66 -0
  1122. package/dist/task-board/taskBlockers.js.map +1 -0
  1123. package/dist/task-board/types.d.ts +24 -7
  1124. package/dist/task-board/utils/projectDashboardModel.js +14 -0
  1125. package/dist/task-board/utils/projectDashboardModel.js.map +1 -1
  1126. package/dist/task-board/views/DependencyGraphView.d.ts +22 -0
  1127. package/dist/task-board/views/DependencyGraphView.js +111 -14
  1128. package/dist/task-board/views/DependencyGraphView.js.map +1 -1
  1129. package/dist/task-board/views/KanbanView.js +8 -10
  1130. package/dist/task-board/views/KanbanView.js.map +1 -1
  1131. package/dist/task-board/views/ProjectDashboardView.js +5 -13
  1132. package/dist/task-board/views/ProjectDashboardView.js.map +1 -1
  1133. package/dist/tour/Tour.js +4 -1
  1134. package/dist/tour/Tour.js.map +1 -1
  1135. package/dist/tour/sandbox-tour-copy.d.ts +8 -0
  1136. package/dist/tour/sandbox-tour-copy.js +8 -0
  1137. package/dist/tour/sandbox-tour-copy.js.map +1 -1
  1138. package/dist/tour/sandbox-tour.d.ts +3 -0
  1139. package/dist/tour/sandbox-tour.js +107 -3
  1140. package/dist/tour/sandbox-tour.js.map +1 -1
  1141. package/dist/types.d.ts +85 -1
  1142. package/package.json +6 -2
  1143. package/styles.css +74 -3
  1144. package/dist/editor/page-editor-chrome/bridgeLinkValue.d.ts +0 -10
  1145. package/dist/editor/page-editor-chrome/bridgeLinkValue.js +0 -55
  1146. package/dist/editor/page-editor-chrome/bridgeLinkValue.js.map +0 -1
@@ -1,5 +1,6 @@
1
1
  "use client";
2
2
  import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useRepositoryItemRefresh } from "./hooks/useRepositoryItemRefresh";
3
4
  import React, { useState, useEffect, useLayoutEffect, useRef, useCallback, useMemo, startTransition, } from "react";
4
5
  import { toast } from "sonner";
5
6
  import { isPerfTraceActive, perfTracePaintStep, perfTraceStep, } from "../perfTrace";
@@ -20,8 +21,10 @@ import { onSocketReconnect as onAgentSocketReconnect } from "../services/agentSu
20
21
  import { useEditorWebSocket } from "./hooks/useEditorWebSocket";
21
22
  import { useClientInfoRegistration } from "./hooks/useClientInfoRegistration";
22
23
  import { getEditorRealtime } from "./realtime/realtimeTransport";
23
- import { createEditorSocketDiagnostics, } from "./socketDiagnostics";
24
+ import { createEditorSocketDiagnostics } from "./socketDiagnostics";
25
+ import { createValueStore, useValueStore } from "./valueStore";
24
26
  import { localStorageService } from "../services/localStorageService";
27
+ import { loadPersistedClipboard, persistClipboard, readClipboardFromStorageEvent, } from "./clipboardStorage";
25
28
  import { useSocketMessageHandler } from "./hooks/useSocketMessageHandler";
26
29
  import "react-json-view-lite/dist/index.css";
27
30
  import { MediaSelector, } from "../media-selector/MediaSelector";
@@ -41,6 +44,7 @@ import { filterRemovedComments } from "../reviews/commentState";
41
44
  import { post } from "../services/serviceHelper";
42
45
  import { CONTENT_TREE_SIDEBAR_ID } from "../sidebar/contentTreeConstants";
43
46
  import { PageViewerFrame } from "../page-viewer/PageViewerFrame";
47
+ import { isRenderingOnCanvas } from "../page-viewer/renderingChanges";
44
48
  import { useItemsRepository } from "./itemsRepository";
45
49
  import { logFieldValueDiagnostic, summarizeFieldDescriptor, } from "../fieldValueDiagnostics";
46
50
  import { Spinner } from "../ui/Spinner";
@@ -56,13 +60,14 @@ import { buildBridgeInsertTextCommand } from "../ai/bridgeInlineTextReplace";
56
60
  import { GuidanceOverlay } from "../ai/GuidanceOverlay";
57
61
  import { AgentDialogHandler } from "../ai/dialogs";
58
62
  import { setActiveAgentConversation } from "../ai/useActiveAgentConversation";
59
- import { CANVAS_REFRESH_COMPLETED_EVENT, usePageViewContext, } from "../page-viewer/pageViewContext";
63
+ import { CANVAS_REFRESH_COMPLETED_EVENT, usePageViewContext, usePageViewState, usePageViewStates, } from "../page-viewer/pageViewContext";
60
64
  import { QuickItemSwitcher } from "../QuickItemSwitcher";
61
65
  import { useEditorSlotContext, } from "../views/editorSlotContext";
62
66
  import { getComments, getAvailableCommentTags, } from "../services/reviewsService";
63
67
  import { useReviews } from "../reviews/useReviews";
64
68
  import { closeActiveCommentPopover, COMMENT_POPOVER_OVERLAY_ID, } from "../reviews/CommentPopover";
65
69
  import { isSuggestedEditRemoved } from "../reviews/suggestedEditState";
70
+ import { useLeftoverReviewIdCleanup } from "../reviews/reviewUrlScope";
66
71
  import { COMMENT_TRANSIENT_ELEMENT_KEY, COMMENT_TRANSIENT_SELECTION_RECT, } from "../reviews/commentTransientSelection";
67
72
  import uuid from "react-uuid";
68
73
  import { flushSync } from "react-dom";
@@ -188,16 +193,28 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
188
193
  const [selectedForInsertion, setSelectedForInsertion] = useState("");
189
194
  const [refreshCompletedFlag, setRefreshCompletedFlag] = useState(false);
190
195
  const [isRefreshing, setIsRefreshing] = useState(false);
191
- // Token incremented by editor slots when their page model finishes building.
192
- // Forces the isRefreshingEffect to re-evaluate with the fresh page from the mutable slot ref.
193
- const [pageModelReadyToken, setPageModelReadyToken] = useState(0);
194
- const notifyPageModelReady = useCallback(() => setPageModelReadyToken((c) => c + 1), []);
195
196
  const [dragObject, setDragObject] = useState();
196
197
  // Pointer gestures can start and end between React's commit and passive-effect
197
198
  // phases. Keep the event-time payload synchronous so a bridge listener from
198
199
  // the preceding render cannot observe a stale `dragObject` closure at drop.
199
200
  const dragObjectRef = useRef(undefined);
200
- const [clipboard, setClipboard] = useState(null);
201
+ // The clipboard outlives page switches and reloads (and syncs across tabs) so a
202
+ // component copied on one page can be pasted on another.
203
+ const [clipboard, setClipboard] = useState(() => loadPersistedClipboard());
204
+ useEffect(() => {
205
+ persistClipboard(clipboard);
206
+ }, [clipboard]);
207
+ useEffect(() => {
208
+ if (typeof window === "undefined")
209
+ return;
210
+ const handleStorage = (event) => {
211
+ const next = readClipboardFromStorageEvent(event);
212
+ if (next !== undefined)
213
+ setClipboard(next);
214
+ };
215
+ window.addEventListener("storage", handleStorage);
216
+ return () => window.removeEventListener("storage", handleStorage);
217
+ }, []);
201
218
  // media selection handled by useMediaSelector hook
202
219
  const [scrollIntoView, setScrollIntoView] = useState();
203
220
  const confirmationDialogRef = useRef(null);
@@ -236,11 +253,32 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
236
253
  const [item, setItem] = useState();
237
254
  const [focusedField, setFocusedField] = useState();
238
255
  const focusedFieldRef = useRef(undefined);
239
- const [selectedRange, setSelectedRange] = useState();
256
+ // A store, not state: a text selection is republished on every step of a
257
+ // canvas drag or Shift+Arrow, and a change of the EditContext value
258
+ // re-renders every consumer in the editor (~300 ms on a large page).
259
+ // Components that render from it subscribe with useSelectedRange().
260
+ const [selectedRangeStore] = useState(() => createValueStore(undefined));
240
261
  const lastTextSelectionRangeRef = useRef(undefined);
262
+ // Caret-only form positions change on every focus, click and typing pause,
263
+ // but are only read when something inserts at the caret, so they are not
264
+ // published at all. Whichever of the two was recorded last wins.
265
+ const caretRangeRef = useRef(undefined);
266
+ const setSelectedRange = useCallback((next) => {
267
+ caretRangeRef.current = undefined;
268
+ selectedRangeStore.set(next);
269
+ const published = selectedRangeStore.get();
270
+ if (isUsableTextSelectionRange(published)) {
271
+ lastTextSelectionRangeRef.current = published;
272
+ }
273
+ }, [selectedRangeStore]);
274
+ const setCaretRange = useCallback((range) => {
275
+ caretRangeRef.current = range;
276
+ selectedRangeStore.set(undefined);
277
+ }, [selectedRangeStore]);
241
278
  const [validating, setValidating] = useState(false);
242
279
  const [inserting, setInserting] = useState();
243
280
  const [removingComponentIds, setRemovingComponentIds] = useState([]);
281
+ const [recentConversion, setRecentConversion] = useState();
244
282
  const insertingSequenceRef = useRef(0);
245
283
  // Armed by selectWithoutAutoScroll for programmatic selections (drop
246
284
  // target's parent, post-operation focus): the canvas selection-scroll
@@ -314,7 +352,11 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
314
352
  const [activeFieldActions, setActiveFieldActions] = useState([]);
315
353
  const fieldEditorPopupRef = React.useRef(null);
316
354
  const [validationResult, setValidationResult] = useState();
317
- const [editHistory, setEditHistory] = useState([]);
355
+ // A store, not state: every operation update (save progress, completion,
356
+ // other sessions' edits) replaces the list. Components that render it
357
+ // subscribe with useEditHistory(); handlers read editContext.editHistory.
358
+ const [editHistoryStore] = useState(() => createValueStore([]));
359
+ const setEditHistory = editHistoryStore.set;
318
360
  const [historyMode, setHistoryMode] = useState("global");
319
361
  const [showOnlyMyChanges, setShowOnlyMyChanges] = useState(true);
320
362
  const [filterByCurrentLanguage, setFilterByCurrentLanguage] = useState(true);
@@ -339,7 +381,9 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
339
381
  ];
340
382
  });
341
383
  }, []);
342
- const [activeSessions, setActiveSessions] = useState(() => {
384
+ // A store, not EditContext state: presence broadcasts replace the list
385
+ // whenever any session focuses or locks a field.
386
+ const [activeSessionsStore] = useState(() => createValueStore((() => {
343
387
  try {
344
388
  const existing = globalThis.__alpacaActiveSessions;
345
389
  return Array.isArray(existing) ? existing : [];
@@ -347,8 +391,20 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
347
391
  catch {
348
392
  return [];
349
393
  }
350
- });
351
- const [remoteCarets, setRemoteCarets] = useState({});
394
+ })()));
395
+ const activeSessions = useValueStore(activeSessionsStore);
396
+ const setActiveSessions = activeSessionsStore.set;
397
+ const sessionUser = activeSessions.find((x) => x.sessionId === sessionId)?.user ||
398
+ userInfo.user;
399
+ // Presence broadcasts rebuild the session list, and with it this object,
400
+ // whenever anyone focuses or locks a field. Keep one identity per distinct
401
+ // value so they do not rebuild the EditContext value.
402
+ const sessionUserKey = JSON.stringify(sessionUser);
403
+ // eslint-disable-next-line react-hooks/exhaustive-deps
404
+ const user = useMemo(() => sessionUser, [sessionUserKey]);
405
+ // A store, not state: carets move on every keystroke of every session.
406
+ const [remoteCaretsStore] = useState(() => createValueStore({}));
407
+ const setRemoteCarets = remoteCaretsStore.set;
352
408
  // Block editing until the server acknowledges our client-info for the current item
353
409
  const [isClientInfoAcknowledged, setIsClientInfoAcknowledged] = useState(false);
354
410
  if (typeof window !== "undefined")
@@ -512,7 +568,10 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
512
568
  const [componentDesignerComponent, setComponentDesignerComponent] = useState();
513
569
  const [componentDesignerRendering, setComponentDesignerRendering] = useState();
514
570
  const [insertMode, setInsertMode] = useState(false);
515
- const [ignoreBlur, setIgnoreBlur] = useState(false);
571
+ // A ref, not state: it flips true and back within 20ms of every field click,
572
+ // and as state each flip changed setFocusedFieldWithLock's identity and with
573
+ // it the FieldsEditContext value.
574
+ const ignoreBlurRef = useRef(false);
516
575
  // Timestamp of the most recent pointer-down on a User Manual "Show me" control.
517
576
  // Used by the field-blur guard so clicking a field-gated Show me button keeps
518
577
  // the focused field (and thus the `.focused-field` anchor + field actions).
@@ -676,7 +735,7 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
676
735
  const [showVersionDiffHighlighting, setShowVersionDiffHighlighting] = useState(false);
677
736
  const [agentChangeHighlighting, setAgentChangeHighlighting] = useState(null);
678
737
  const [availableCommentTags, setAvailableCommentTags] = useState([]);
679
- const [showComments, setShowComments] = useState(() => {
738
+ const [showComments, setShowCommentsRaw] = useState(() => {
680
739
  // ?showFeedback=true|false overrides the persisted preference, e.g. the
681
740
  // sandbox register redirect lands users with the feedback panel closed.
682
741
  const showFeedbackParam = searchParams.get("showFeedback");
@@ -685,9 +744,27 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
685
744
  }
686
745
  return localStorageService.getOrSetItem("editor.showComments", true);
687
746
  });
747
+ const showCommentsRef = useRef(showComments);
748
+ showCommentsRef.current = showComments;
688
749
  useEffect(() => {
689
750
  localStorageService.setItem("editor.showComments", showComments);
690
751
  }, [showComments]);
752
+ // The mobile comments panel (the comment list below the canvas on a phone)
753
+ // is opt-in per session: it starts closed whatever the persisted preference
754
+ // says, and follows every on/off transition made on the phone. The reveal
755
+ // helper is defined with the other mobile panel state further down; the
756
+ // ref lets the setter (declared here, used by mode changes above) reach it.
757
+ const [mobileCommentsPanelOpen, setMobileCommentsPanelOpen] = useState(false);
758
+ const revealMobileCommentsPanelRef = useRef(() => { });
759
+ const setShowComments = useCallback((value) => {
760
+ const next = typeof value === "function" ? value(showCommentsRef.current) : value;
761
+ showCommentsRef.current = next;
762
+ setShowCommentsRaw(next);
763
+ if (next)
764
+ revealMobileCommentsPanelRef.current();
765
+ else
766
+ setMobileCommentsPanelOpen(false);
767
+ }, []);
691
768
  const [showResolvedComments, setShowResolvedComments] = useState(() => {
692
769
  return localStorageService.getOrSetItem("editor.showResolvedComments", false);
693
770
  });
@@ -897,6 +974,7 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
897
974
  const [editorFormHintSeen, setEditorFormHintSeenState] = useState(userPreferences.editorFormHintSeen ?? false);
898
975
  const [editorFormHintVisible, setEditorFormHintVisible] = useState(false);
899
976
  const editorFormToggleButtonRef = useRef(null);
977
+ const [componentInsertionHintSeen, setComponentInsertionHintSeenState] = useState(userPreferences.componentInsertionHintSeen ?? false);
900
978
  const [showMinimap, setShowMinimap] = useState(userPreferences.showMinimap ?? true);
901
979
  const effectiveShowMinimap = minimapEnabledInSettings && showMinimap;
902
980
  const [showHelpTerminal, setShowHelpTerminal] = useState(false);
@@ -929,7 +1007,9 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
929
1007
  }
930
1008
  }, [setQuotaInfo]);
931
1009
  const [webSocketMessages, setWebSocketMessages] = useState([]);
932
- const [socketDiagnostics, setSocketDiagnostics] = useState(() => createEditorSocketDiagnostics(sessionId));
1010
+ // A store, not state: it changes on every socket message.
1011
+ const [socketDiagnosticsStore] = useState(() => createValueStore(createEditorSocketDiagnostics(sessionId)));
1012
+ const setSocketDiagnostics = socketDiagnosticsStore.set;
933
1013
  const [favorites, setFavorites] = useState([]);
934
1014
  // Quick item switcher state
935
1015
  const [quickSwitcherVisible, setQuickSwitcherVisible] = useState(false);
@@ -1005,12 +1085,14 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
1005
1085
  focusedField.item.id !== lastTextSelection.itemId)) {
1006
1086
  lastTextSelectionRangeRef.current = undefined;
1007
1087
  }
1008
- }, [focusedField]);
1009
- useEffect(() => {
1010
- if (isUsableTextSelectionRange(selectedRange)) {
1011
- lastTextSelectionRangeRef.current = selectedRange;
1088
+ const caretRange = caretRangeRef.current;
1089
+ if (focusedField &&
1090
+ caretRange &&
1091
+ (focusedField.fieldId !== caretRange.fieldId ||
1092
+ focusedField.item.id !== caretRange.itemId)) {
1093
+ caretRangeRef.current = undefined;
1012
1094
  }
1013
- }, [selectedRange]);
1095
+ }, [focusedField]);
1014
1096
  // Track the current page item descriptor for itemsRepository
1015
1097
  const [currentPageItem, setCurrentPageItem] = useState();
1016
1098
  // Create itemsRepository with current page item (will be updated when page loads)
@@ -1107,18 +1189,18 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
1107
1189
  useEffect(() => {
1108
1190
  activePageViewContextRef.current = activePageViewContext;
1109
1191
  }, [activePageViewContext]);
1192
+ const page = usePageViewState(activePageViewContext, (state) => state.page);
1193
+ const activeIframeSupportsRefresh = usePageViewState(activePageViewContext, (state) => state.iframeSupportsRefresh);
1110
1194
  // Keep the active PageViewContext's fullscreen flag in sync with the shell fullscreen mode.
1111
1195
  useEffect(() => {
1112
- if (activePageViewContext.fullscreen !== fullscreen) {
1113
- activePageViewContext.setFullscreen(fullscreen);
1114
- }
1196
+ activePageViewContext.setFullscreen(fullscreen);
1115
1197
  }, [activePageViewContext, fullscreen]);
1116
1198
  // Update currentPageItem when pageViewContext.page is available
1117
1199
  useEffect(() => {
1118
- if (activePageViewContext.page?.item.descriptor) {
1119
- setCurrentPageItem(activePageViewContext.page.item.descriptor);
1200
+ if (page?.item.descriptor) {
1201
+ setCurrentPageItem(page.item.descriptor);
1120
1202
  }
1121
- }, [activePageViewContext.page?.item.descriptor]);
1203
+ }, [page?.item.descriptor]);
1122
1204
  // Track which items are rendered/used by the current page for targeted refresh
1123
1205
  const pageItemsSetRef = useRef(new Set());
1124
1206
  const makeItemKey = useCallback((d) => `${d.id}-${d.language}-${d.version}`.toLowerCase(), []);
@@ -1132,20 +1214,20 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
1132
1214
  component.items?.forEach((i) => newSet.add(makeItemKey(i)));
1133
1215
  component.placeholders?.forEach((ph) => ph.components?.forEach(collect));
1134
1216
  };
1135
- if (activePageViewContext?.page) {
1217
+ if (page) {
1136
1218
  // Include the page item itself
1137
- const pageDescriptor = activePageViewContext.page.item.descriptor;
1219
+ const pageDescriptor = page.item.descriptor;
1138
1220
  newSet.add(makeItemKey(pageDescriptor));
1139
- collect(activePageViewContext.page.rootComponent);
1221
+ collect(page.rootComponent);
1140
1222
  }
1141
1223
  pageItemsSetRef.current = newSet;
1142
- }, [activePageViewContext.page?.editRevision]);
1224
+ }, [page?.editRevision]);
1143
1225
  const isItemUsedInCurrentPage = useCallback((item) => pageItemsSetRef.current.has(makeItemKey(item)), [makeItemKey]);
1144
1226
  const socketMessageListeners = useRef(new Set());
1145
1227
  const [socketConnectionVersion, setSocketConnectionVersion] = useState(0);
1146
1228
  useEffect(() => {
1147
1229
  setSocketDiagnostics(createEditorSocketDiagnostics(sessionId));
1148
- }, [sessionId]);
1230
+ }, [sessionId, setSocketDiagnostics]);
1149
1231
  const addSocketMessageListener = useCallback((callback) => {
1150
1232
  socketMessageListeners.current.add(callback);
1151
1233
  return () => socketMessageListeners.current.delete(callback);
@@ -1184,7 +1266,7 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
1184
1266
  }
1185
1267
  catch { }
1186
1268
  };
1187
- }, [addSocketMessageListener, sessionId]);
1269
+ }, [addSocketMessageListener, sessionId, setRemoteCarets]);
1188
1270
  useEffect(() => {
1189
1271
  const activeSessionIds = new Set(activeSessions.map((s) => s.sessionId));
1190
1272
  setRemoteCarets((current) => {
@@ -1200,7 +1282,7 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
1200
1282
  });
1201
1283
  return changed ? next : current;
1202
1284
  });
1203
- }, [activeSessions]);
1285
+ }, [activeSessions, setRemoteCarets]);
1204
1286
  // Listen for batch completion notifications
1205
1287
  useEffect(() => {
1206
1288
  const removeListener = addSocketMessageListener((message) => {
@@ -1294,6 +1376,7 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
1294
1376
  // Only clear selection range if we specifically switched to a DIFFERENT field.
1295
1377
  // If focusedField is undefined (e.g. lost focus to a dialog), keep the previous selection context
1296
1378
  // so the AI tool can still act on it.
1379
+ const selectedRange = selectedRangeStore.get();
1297
1380
  if (focusedField &&
1298
1381
  selectedRange &&
1299
1382
  (focusedField.fieldId !== selectedRange.fieldId ||
@@ -1323,7 +1406,7 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
1323
1406
  }, [currentWorkspace]);
1324
1407
  const sendClientInfoImmediate = useCallback(async () => {
1325
1408
  const itemAtSend = currentItemRef.current;
1326
- const pageAtSend = activePageViewContextRef.current?.page?.item;
1409
+ const pageAtSend = activePageViewContextRef.current?.getState().page?.item;
1327
1410
  const clientInfoMessage = {
1328
1411
  type: "client-info",
1329
1412
  sessionId: sessionId,
@@ -1543,6 +1626,19 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
1543
1626
  setOpenSidebars([]);
1544
1627
  }
1545
1628
  }, [isMobile, mobilePanelDismissToken]);
1629
+ // Bring the comments panel to the front: the form panel and the sidebars
1630
+ // cover it (precedence form > sidebars > comments), so opening it closes
1631
+ // them. Closing the form records the dismiss token for the current
1632
+ // selection, so the form does not bounce back until the next canvas tap.
1633
+ const revealMobileCommentsPanel = useCallback(() => {
1634
+ if (!isMobile)
1635
+ return;
1636
+ setMobileCommentsPanelOpen(true);
1637
+ handleSetMobileEditorPanelOpen(false);
1638
+ openSidebarsRef.current = [];
1639
+ setOpenSidebars([]);
1640
+ }, [isMobile, handleSetMobileEditorPanelOpen]);
1641
+ revealMobileCommentsPanelRef.current = revealMobileCommentsPanel;
1546
1642
  const handleSetShowMinimap = useCallback((value) => {
1547
1643
  const newValue = typeof value === "function" ? value(showMinimap) : value;
1548
1644
  setShowMinimap(newValue);
@@ -1588,6 +1684,14 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
1588
1684
  setEditorFormHintSeenState(true);
1589
1685
  setUserPreferences({ editorFormHintSeen: true });
1590
1686
  }, [setUserPreferences]);
1687
+ const markComponentInsertionHintSeen = useCallback(() => {
1688
+ setComponentInsertionHintSeenState((prev) => {
1689
+ if (prev)
1690
+ return prev;
1691
+ setUserPreferences({ componentInsertionHintSeen: true });
1692
+ return true;
1693
+ });
1694
+ }, [setUserPreferences]);
1591
1695
  const showEditorFormHint = useCallback(() => {
1592
1696
  setEditorFormHintVisible(true);
1593
1697
  }, []);
@@ -1667,8 +1771,6 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
1667
1771
  setUserPreferences({ pinnedSidebars: newPinnedSidebars });
1668
1772
  }, [setUserPreferences]);
1669
1773
  // messageHandler is defined after loadItem/loadHistory declarations to avoid temporal dead zones
1670
- const user = activeSessions.find((x) => x.sessionId === sessionId)?.user ||
1671
- userInfo.user;
1672
1774
  // Self-heal if our session disappears (e.g., after HMR). Skip when concurrent user limit
1673
1775
  // is showing so we don't spam recovery attempts when the connection was rejected.
1674
1776
  const missingSessionRecoveryTimerRef = useRef(null);
@@ -1946,7 +2048,7 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
1946
2048
  if (selection.length)
1947
2049
  setSelectedForInsertion("");
1948
2050
  // Does the current focused field belong to the current item?
1949
- const currentItem = selection.length > 0 ? selection[0] : activePageViewContext.page?.item.id;
2051
+ const currentItem = selection.length > 0 ? selection[0] : page?.item.id;
1950
2052
  if (currentItem && focusedField?.item.id !== currentItem) {
1951
2053
  setFocusedField(undefined);
1952
2054
  }
@@ -2038,7 +2140,8 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
2038
2140
  setRefreshCompletedFlag(!refreshCompletedFlag);
2039
2141
  setInserting(undefined);
2040
2142
  setRemovingComponentIds([]);
2041
- }, [currentItemDescriptor, activePageViewContext.page?.item.id]);
2143
+ setRecentConversion(undefined);
2144
+ }, [currentItemDescriptor, page?.item.id]);
2042
2145
  useEffect(() => {
2043
2146
  // When the item changes, reset acknowledgment. Registration below sends
2044
2147
  // immediately and keeps retrying until active-sessions confirms it.
@@ -2068,6 +2171,15 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
2068
2171
  }
2069
2172
  catch { }
2070
2173
  }, [activeSessions, sessionId]);
2174
+ // Reviewers from a review link stay in their review; everyone else loses a
2175
+ // reviewId that no longer applies once they browse to other pages.
2176
+ useLeftoverReviewIdCleanup(item
2177
+ ? {
2178
+ id: item.descriptor.id,
2179
+ language: item.descriptor.language,
2180
+ idPath: item.idPath,
2181
+ }
2182
+ : undefined, !userInfo.user?.isLimitedPreviewUser);
2071
2183
  const loadComments = useCallback(async () => {
2072
2184
  const requestId = ++commentsLoadRequestRef.current;
2073
2185
  if (!currentItemDescriptor)
@@ -2142,7 +2254,6 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
2142
2254
  const refreshFavorites = useCallback(async (opts) => {
2143
2255
  await loadFavorites();
2144
2256
  }, [loadFavorites]);
2145
- const page = activePageViewContext.page;
2146
2257
  const currentHistoryScope = useMemo(() => {
2147
2258
  const currentItem = item?.descriptor;
2148
2259
  const currentLanguage = item?.descriptor?.language || currentItemDescriptor?.language;
@@ -2249,21 +2360,16 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
2249
2360
  }
2250
2361
  }, []);
2251
2362
  useEffect(() => {
2252
- // Read fresh page from the mutable slot context ref chain.
2253
- // The slot context uses a stable ref that is mutated in-place (see editorSlotContext.ts),
2254
- // so `page` from the render scope may be stale when the slot's page model completes.
2255
- // pageModelReadyToken triggers this effect to re-evaluate with the latest page.
2256
- const freshPage = activePageViewContext.page ?? page;
2257
2363
  const isLoading = !!item &&
2258
2364
  item.hasLayout &&
2259
- (!freshPage || (freshPage?.editRevision ?? "") != (revision ?? ""));
2365
+ (!page || (page?.editRevision ?? "") != (revision ?? ""));
2260
2366
  const newIsRefreshing = isLoading && viewName === "editor";
2261
2367
  setIsRefreshing(newIsRefreshing);
2262
2368
  if (!isLoading) {
2263
2369
  setInserting(undefined);
2264
2370
  setRemovingComponentIds([]);
2265
2371
  }
2266
- }, [page, viewName, revision, pageModelReadyToken]);
2372
+ }, [page, viewName, revision]);
2267
2373
  // moved below to ensure requestRefresh is declared first
2268
2374
  const loadHistory = useDebouncedCallback(async () => {
2269
2375
  if (!sessionId)
@@ -2941,24 +3047,7 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
2941
3047
  showHelpTerminal,
2942
3048
  selectedHelpSectionId,
2943
3049
  ]);
2944
- useEffect(() => {
2945
- async function load() {
2946
- if (!currentItemDescriptor)
2947
- return;
2948
- // Capture the item ID at the start of this async operation
2949
- const descriptorIdAtStart = currentItemDescriptor.id;
2950
- const item = await itemsRepository.getItem(currentItemDescriptor);
2951
- // Check if the current item has changed during the async operation
2952
- // If so, skip this update to avoid overwriting with stale data
2953
- if (currentItemDescriptorRef.current?.id !== descriptorIdAtStart) {
2954
- return;
2955
- }
2956
- setItem(item);
2957
- if (!item)
2958
- return;
2959
- }
2960
- load();
2961
- }, [itemsRepository.revision]);
3050
+ useRepositoryItemRefresh(itemsRepository, currentItemDescriptor, currentItemDescriptorRef, setItem);
2962
3051
  const addToBrowseHistory = useCallback((item) => {
2963
3052
  const historyEntry = {
2964
3053
  path: item.path || "unknown",
@@ -3300,7 +3389,10 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
3300
3389
  lockedField,
3301
3390
  itemsRepository,
3302
3391
  user,
3303
- editHistory,
3392
+ get editHistory() {
3393
+ return editHistoryStore.get();
3394
+ },
3395
+ editHistoryStore,
3304
3396
  setEditHistory,
3305
3397
  showOnlyMyChanges,
3306
3398
  historyMode,
@@ -3446,18 +3538,19 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
3446
3538
  ? existingOp.progress
3447
3539
  : op.progress;
3448
3540
  // IMPORTANT: Once canUndo becomes true, never downgrade it to false,
3449
- // UNLESS this update indicates the operation was undone.
3541
+ // UNLESS this update indicates it was undone or undo is no longer supported.
3450
3542
  // Runtime logs show long-running undo completion can arrive as:
3451
3543
  // - existing: canUndo=true, executionStatus=executing
3452
3544
  // - incoming: canUndo=false, executionStatus=completed
3453
3545
  // without explicit undone/canRedo flags yet.
3454
3546
  const isExplicitUndoUpdate = op.undone === true || op.canRedo === true;
3455
- const isInferredUndoCompletion = existingOp.executionStatus === "executing" &&
3547
+ const isInferredUndoCompletion = op.undoSupported !== false &&
3548
+ existingOp.executionStatus === "executing" &&
3456
3549
  op.executionStatus === "completed" &&
3457
3550
  existingOp.canUndo === true &&
3458
3551
  op.canUndo === false;
3459
3552
  const isUndoUpdate = isExplicitUndoUpdate || isInferredUndoCompletion;
3460
- const mergedCanUndo = isUndoUpdate
3553
+ const mergedCanUndo = isUndoUpdate || op.undoSupported === false
3461
3554
  ? false
3462
3555
  : existingOp.canUndo === true
3463
3556
  ? true
@@ -3508,6 +3601,17 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
3508
3601
  const onOperationExecuted = useCallback((op) => {
3509
3602
  // Update the history through the single merge path.
3510
3603
  updateOperationInHistory(op);
3604
+ // The "Converted from" badge lasts until the next edit.
3605
+ setRecentConversion((current) => current &&
3606
+ current.operationId.replace(/[{}]/g, "").toLowerCase() !==
3607
+ op.id.replace(/[{}]/g, "").toLowerCase()
3608
+ ? undefined
3609
+ : current);
3610
+ // The palette's how-to hint is for users who have never inserted a
3611
+ // component; the first local insertion retires it.
3612
+ if (op.type === "add-component") {
3613
+ markComponentInsertionHintSeen();
3614
+ }
3511
3615
  if (item?.id === op.mainItem?.id &&
3512
3616
  item?.language === op.mainItem?.language &&
3513
3617
  item?.version === op.mainItem?.version) {
@@ -3516,29 +3620,34 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
3516
3620
  // Note: We intentionally do NOT call refreshHistory() here.
3517
3621
  // The websocket handler + merge logic above keeps the history up to date without
3518
3622
  // causing a race where stale server data arrives before the server has processed a redo.
3519
- }, [item, setInsertMode, updateOperationInHistory]);
3520
- const ui = {
3623
+ }, [
3624
+ item,
3625
+ setInsertMode,
3626
+ updateOperationInHistory,
3627
+ markComponentInsertionHintSeen,
3628
+ ]);
3629
+ // Memoized: `ui` is a dependency of most operation callbacks, and through
3630
+ // them of `operations` and the EditContext value. A fresh object per shell
3631
+ // render rebuilt all three on every render (each field click), re-rendering
3632
+ // every EditContext consumer.
3633
+ const ui = useMemo(() => ({
3521
3634
  showErrorToast,
3522
3635
  confirmationDialogRef,
3523
3636
  onOperationExecuted,
3524
- };
3637
+ }), [showErrorToast, onOperationExecuted]);
3525
3638
  // moved to useMediaSelector
3526
3639
  // Workbox/validation scope spans every open slot (each slot's page tree plus
3527
3640
  // its item), so opening a validation result in a second slot keeps the page's
3528
- // list intact regardless of which slot is active. The slot contexts are
3529
- // mutable refs; re-reads happen because notifyPageModelReady bumps the
3530
- // pageModelReadyToken state whenever a slot's page model finishes building.
3531
- const registeredSlotScopes = editorSlots.flatMap((slot) => {
3641
+ // list intact regardless of which slot is active.
3642
+ const registeredSlotContexts = editorSlots.flatMap((slot) => {
3532
3643
  const slotContext = slotContexts.get(slot.slotId);
3533
- if (!slotContext)
3534
- return [];
3535
- return [
3536
- {
3537
- page: slotContext.primaryPageViewContext.page,
3538
- itemDescriptor: slotContext.itemDescriptor,
3539
- },
3540
- ];
3644
+ return slotContext ? [slotContext] : [];
3541
3645
  });
3646
+ const registeredSlotPages = usePageViewStates(registeredSlotContexts.map((slotContext) => slotContext.primaryPageViewContext), (state) => state.page);
3647
+ const registeredSlotScopes = registeredSlotContexts.map((slotContext, index) => ({
3648
+ page: registeredSlotPages[index],
3649
+ itemDescriptor: slotContext.itemDescriptor,
3650
+ }));
3542
3651
  const workboxScopeSlots = registeredSlotScopes.length
3543
3652
  ? registeredSlotScopes
3544
3653
  : [{ page, itemDescriptor: currentItemDescriptor }];
@@ -3585,7 +3694,18 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
3585
3694
  updateExecutingOperationProgressRef.current?.(operationId, progress, statusMessage);
3586
3695
  },
3587
3696
  refreshWorkbox,
3588
- canvasHasChromeSuppressedTargets: () => !!activePageViewContextRef.current?.bridgeGeometry?.targets.some((target) => target.decorationsSuppressed),
3697
+ canvasHasChromeSuppressedTargets: () => !!activePageViewContextRef.current?.getState().bridgeGeometry?.targets.some((target) => target.decorationsSuppressed),
3698
+ isRenderingOnCanvas: (itemId, fieldIds) => {
3699
+ const page = currentItemRef.current;
3700
+ return isRenderingOnCanvas({
3701
+ itemId,
3702
+ fieldIds,
3703
+ iframe: activePageViewContextRef.current?.getState().editorIframe,
3704
+ page: page?.id && page.language && typeof page.version === "number"
3705
+ ? { id: page.id, language: page.language, version: page.version }
3706
+ : undefined,
3707
+ });
3708
+ },
3589
3709
  });
3590
3710
  // Concurrent user limit error state
3591
3711
  const [concurrentUserLimitError, setConcurrentUserLimitError] = useState(null);
@@ -3685,7 +3805,7 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
3685
3805
  }
3686
3806
  // Routes over whichever transport is active (WebSocket preferred, SSE fallback).
3687
3807
  getEditorRealtime().send(message);
3688
- }, [sessionId]);
3808
+ }, [sessionId, setRemoteCarets]);
3689
3809
  // URL update helper - defined early so it can be used by workspace/sidebar functions
3690
3810
  const updateUrl = useCallback((params) => {
3691
3811
  // Use the actual browser pathname (including any basePath like /parhelia)
@@ -4187,7 +4307,10 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
4187
4307
  ]);
4188
4308
  // Replace selected text with new content (for inline AI editing)
4189
4309
  const replaceSelectedText = useCallback(async (newText, selectionOverride) => {
4190
- const rangeToReplace = selectionOverride ?? selectedRange ?? lastTextSelectionRangeRef.current;
4310
+ const rangeToReplace = selectionOverride ??
4311
+ selectedRangeStore.get() ??
4312
+ caretRangeRef.current ??
4313
+ lastTextSelectionRangeRef.current;
4191
4314
  try {
4192
4315
  // If we have selected text and a replaceText callback, use it
4193
4316
  if (rangeToReplace?.text && rangeToReplace.replaceText) {
@@ -4216,7 +4339,9 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
4216
4339
  lastTextSelectionRangeRef.current = undefined;
4217
4340
  return;
4218
4341
  }
4219
- const fieldToReplace = focusedField ??
4342
+ // Read the focused field through the ref so this callback (part of
4343
+ // editContext) keeps its identity across field clicks.
4344
+ const fieldToReplace = focusedFieldRef.current ??
4220
4345
  (rangeToReplace?.fieldId &&
4221
4346
  rangeToReplace.itemId &&
4222
4347
  rangeToReplace.language &&
@@ -4278,14 +4403,15 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
4278
4403
  console.error("Failed to replace/insert text:", error);
4279
4404
  }
4280
4405
  }, [
4281
- selectedRange,
4282
- focusedField,
4406
+ selectedRangeStore,
4407
+ setSelectedRange,
4283
4408
  itemsRepository,
4284
4409
  operations,
4285
4410
  getActiveSlotContext,
4286
4411
  ]);
4287
4412
  // Insert text at cursor position (for when there's no selection)
4288
4413
  const insertTextAtCursor = useCallback(async (newText) => {
4414
+ const focusedField = focusedFieldRef.current;
4289
4415
  if (!focusedField)
4290
4416
  return;
4291
4417
  try {
@@ -4319,8 +4445,9 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
4319
4445
  }
4320
4446
  }
4321
4447
  // If we have a selectedRange with position info, use it
4322
- if (!insertPosition && selectedRange?.startOffset !== undefined) {
4323
- insertPosition = selectedRange.startOffset;
4448
+ const publishedRange = selectedRangeStore.get() ?? caretRangeRef.current;
4449
+ if (!insertPosition && publishedRange?.startOffset !== undefined) {
4450
+ insertPosition = publishedRange.startOffset;
4324
4451
  }
4325
4452
  // Fallback: use field value length (append)
4326
4453
  const { fieldId, item } = focusedField;
@@ -4344,8 +4471,8 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
4344
4471
  console.error("Failed to insert text at cursor:", error);
4345
4472
  }
4346
4473
  }, [
4347
- focusedField,
4348
- selectedRange,
4474
+ selectedRangeStore,
4475
+ setSelectedRange,
4349
4476
  itemsRepository,
4350
4477
  operations,
4351
4478
  getActiveSlotContext,
@@ -4359,14 +4486,31 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
4359
4486
  // Shared focused field setter with lock handling (used in both contexts)
4360
4487
  const setFocusedFieldWithLock = useCallback(async (field, requestLock) => {
4361
4488
  if (field) {
4362
- setIgnoreBlur(true);
4489
+ ignoreBlurRef.current = true;
4363
4490
  setTimeout(() => {
4364
- setIgnoreBlur(false);
4491
+ ignoreBlurRef.current = false;
4365
4492
  }, 20);
4366
4493
  // Selection follows the user's click independently of the asynchronous
4367
4494
  // edit lock. Lock ownership controls whether editing may proceed, but a
4368
4495
  // slow or rejected lock must not leave the form on the previous field.
4369
- setFocusedField({ ...field });
4496
+ //
4497
+ // Every click inside a field re-enters here (the field wrapper captures
4498
+ // clicks and focus), so a click on a field action such as Copy in the
4499
+ // already focused field must not publish a new descriptor object:
4500
+ // every consumer keyed on focusedField would re-run for a field that
4501
+ // did not change. The lock is still ensured below (a no-op when held).
4502
+ const current = focusedFieldRef.current;
4503
+ const alreadyFocused = !!current &&
4504
+ current.fieldId === field.fieldId &&
4505
+ current.item.id === field.item.id &&
4506
+ current.item.language === field.item.language &&
4507
+ current.item.version === field.item.version;
4508
+ if (!alreadyFocused) {
4509
+ // Mirror the state synchronously so a second call in the same
4510
+ // event (before the focusedField effect refreshes the ref) sees it.
4511
+ focusedFieldRef.current = field;
4512
+ setFocusedField({ ...field });
4513
+ }
4370
4514
  if (requestLock) {
4371
4515
  const lockResult = (await operations.ensureLock(field)) || false;
4372
4516
  if (!lockResult) {
@@ -4398,14 +4542,17 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
4398
4542
  lastAgentTerminalInteractionAt: agentTerminalInteractionAtRef.current,
4399
4543
  now: Date.now(),
4400
4544
  });
4401
- if (!ignoreBlur && !focusMovedToShowMe && !focusMovedToAgentTerminal) {
4545
+ if (!ignoreBlurRef.current &&
4546
+ !focusMovedToShowMe &&
4547
+ !focusMovedToAgentTerminal) {
4548
+ focusedFieldRef.current = undefined;
4402
4549
  setFocusedField(undefined);
4403
4550
  setLockedField(undefined); // Clear client-side lock state
4404
4551
  releaseFieldLocks(sessionId);
4405
4552
  }
4406
4553
  }
4407
4554
  return true;
4408
- }, [operations, ignoreBlur, sessionId, lockedField]);
4555
+ }, [operations, sessionId]);
4409
4556
  const quickSwitcherEntries = useMemo(() => {
4410
4557
  const entries = [];
4411
4558
  const seen = new Set();
@@ -4828,9 +4975,7 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
4828
4975
  if (!isInitialLoad)
4829
4976
  return;
4830
4977
  const isFullscreen = searchParams.get("fullscreen") === "true";
4831
- if (isFullscreen !== activePageViewContext.fullscreen) {
4832
- activePageViewContext.setFullscreen(isFullscreen);
4833
- }
4978
+ activePageViewContext.setFullscreen(isFullscreen);
4834
4979
  }, [searchParams, isInitialLoad, activePageViewContext]);
4835
4980
  useEffect(() => {
4836
4981
  if (typeof window === "undefined") {
@@ -4843,7 +4988,7 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
4843
4988
  }
4844
4989
  window.__parheliaViewportTestApi = {
4845
4990
  setZoom: (zoom) => activePageViewContext.setZoom(zoom),
4846
- getZoom: () => activePageViewContext.zoom,
4991
+ getZoom: () => activePageViewContext.getState().zoom,
4847
4992
  };
4848
4993
  return () => {
4849
4994
  delete window.__parheliaViewportTestApi;
@@ -4978,8 +5123,6 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
4978
5123
  },
4979
5124
  scrollIntoView,
4980
5125
  setScrollIntoView,
4981
- focusedField,
4982
- setFocusedField: setFocusedFieldWithLock,
4983
5126
  getComponentCommands: async (components, providerContext) => {
4984
5127
  return await getComponentCommands(components, editContext, providerContext);
4985
5128
  },
@@ -5159,7 +5302,7 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
5159
5302
  ];
5160
5303
  });
5161
5304
  try {
5162
- await executeFieldServerAction(fieldDescriptor.item, fieldDescriptor.fieldId, item.descriptor, actionButton.action, editContext.sessionId, selectedRange?.text || "", parameters || {}, (data) => {
5305
+ await executeFieldServerAction(fieldDescriptor.item, fieldDescriptor.fieldId, item.descriptor, actionButton.action, editContext.sessionId, selectedRangeStore.get()?.text || "", parameters || {}, (data) => {
5163
5306
  // Update progress message if available
5164
5307
  if (data?.responseText) {
5165
5308
  op.message = data.responseText;
@@ -5264,10 +5407,16 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
5264
5407
  },
5265
5408
  inserting,
5266
5409
  removingComponentIds,
5410
+ recentConversion,
5411
+ setRecentConversion,
5267
5412
  validating,
5268
5413
  validationResult,
5269
5414
  loadItem,
5270
- editHistory: editHistory,
5415
+ // Live read for handlers; components subscribe with useEditHistory().
5416
+ get editHistory() {
5417
+ return editHistoryStore.get();
5418
+ },
5419
+ editHistoryStore,
5271
5420
  historyMode,
5272
5421
  setHistoryMode,
5273
5422
  showOnlyMyChanges,
@@ -5283,8 +5432,12 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
5283
5432
  canLoadMoreHistory,
5284
5433
  isHistoryLoadingMore,
5285
5434
  loadMoreHistory,
5286
- activeSessions,
5287
- remoteCarets,
5435
+ // Live read for handlers; components subscribe with useActiveSessions().
5436
+ get activeSessions() {
5437
+ return activeSessionsStore.get();
5438
+ },
5439
+ activeSessionsStore,
5440
+ remoteCaretsStore,
5288
5441
  unlockField: async () => {
5289
5442
  setLockedField(undefined); // Clear client-side lock state
5290
5443
  await releaseFieldLocks(sessionId);
@@ -5339,11 +5492,15 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
5339
5492
  currentOverlay,
5340
5493
  contextMenuSource,
5341
5494
  setCurrentOverlay,
5342
- lockedField,
5343
5495
  timings,
5344
5496
  setTimings,
5345
- selectedRange,
5497
+ // Live read: selections and carets never rebuild this object.
5498
+ get selectedRange() {
5499
+ return selectedRangeStore.get() ?? caretRangeRef.current;
5500
+ },
5501
+ selectedRangeStore,
5346
5502
  setSelectedRange,
5503
+ setCaretRange,
5347
5504
  replaceSelectedText,
5348
5505
  insertTextAtCursor,
5349
5506
  confirm: (props) => {
@@ -5366,7 +5523,7 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
5366
5523
  addSocketMessageListener,
5367
5524
  sendSocketMessage,
5368
5525
  socketConnectionVersion,
5369
- socketDiagnostics,
5526
+ socketDiagnosticsStore,
5370
5527
  currentItemDescriptor,
5371
5528
  editorSlots,
5372
5529
  activeSlotId,
@@ -5380,8 +5537,6 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
5380
5537
  setActiveSlot,
5381
5538
  revision,
5382
5539
  fullReloadToken,
5383
- notifyPageModelReady,
5384
- pageModelReadyToken,
5385
5540
  selectedComment,
5386
5541
  setSelectedComment,
5387
5542
  selectedSuggestedEdit,
@@ -5412,12 +5567,19 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
5412
5567
  }
5413
5568
  // Snapshot selection context up-front so switching views doesn't change what we comment on.
5414
5569
  const hintedFieldSnapshot = options?.field;
5415
- const focusedFieldSnapshot = focusedFieldRef.current;
5570
+ // A picked target (field or whole item) is what the comment is about;
5571
+ // the focused field and selections elsewhere must not override it.
5572
+ const hasExplicitTarget = !!options?.field || !!options?.itemId;
5573
+ const focusedFieldSnapshot = hasExplicitTarget
5574
+ ? undefined
5575
+ : focusedFieldRef.current;
5576
+ const selectedRange = selectedRangeStore.get();
5416
5577
  const selectedRangeCandidate = isUsableTextSelectionRange(selectedRange)
5417
5578
  ? selectedRange
5418
5579
  : lastTextSelectionRangeRef.current;
5419
- const selectedRangeSnapshot = !hintedFieldSnapshot ||
5420
- selectionRangeMatchesField(selectedRangeCandidate, hintedFieldSnapshot)
5580
+ const selectedRangeSnapshot = (hintedFieldSnapshot
5581
+ ? selectionRangeMatchesField(selectedRangeCandidate, hintedFieldSnapshot)
5582
+ : !hasExplicitTarget)
5421
5583
  ? selectedRangeCandidate
5422
5584
  : undefined;
5423
5585
  const selectedRangeFieldSnapshot = isUsableTextSelectionRange(selectedRangeSnapshot)
@@ -5436,6 +5598,7 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
5436
5598
  hintedFieldSnapshot ??
5437
5599
  focusedFieldSnapshot;
5438
5600
  const itemId = commentFieldSnapshot?.item.id ||
5601
+ options?.itemId ||
5439
5602
  (selection.length > 0 ? selection[0] : undefined) ||
5440
5603
  descriptor.id;
5441
5604
  if (!itemId)
@@ -5540,6 +5703,8 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
5540
5703
  showEditorFormHint,
5541
5704
  dismissEditorFormHint,
5542
5705
  editorFormToggleButtonRef,
5706
+ componentInsertionHintSeen,
5707
+ markComponentInsertionHintSeen,
5543
5708
  showMinimap: effectiveShowMinimap,
5544
5709
  setShowMinimap: handleSetShowMinimap,
5545
5710
  showHelpTerminal,
@@ -5565,6 +5730,9 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
5565
5730
  isMobile,
5566
5731
  mobileEditorPanelOpen,
5567
5732
  setMobileEditorPanelOpen: handleSetMobileEditorPanelOpen,
5733
+ mobileCommentsPanelOpen,
5734
+ setMobileCommentsPanelOpen,
5735
+ revealMobileCommentsPanel,
5568
5736
  openDialog,
5569
5737
  webSocketMessages,
5570
5738
  clearWebSocketMessages: () => setWebSocketMessages([]),
@@ -5633,8 +5801,6 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
5633
5801
  media.mediaSelectorMode,
5634
5802
  media.selectedMediaIdPath,
5635
5803
  scrollIntoView,
5636
- focusedField,
5637
- setFocusedFieldWithLock,
5638
5804
  activeFieldActions,
5639
5805
  currentWorkspace,
5640
5806
  previousWorkspaceId,
@@ -5660,9 +5826,10 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
5660
5826
  insertMode,
5661
5827
  currentOverlay,
5662
5828
  contextMenuSource,
5663
- lockedField,
5664
5829
  timings,
5665
- selectedRange,
5830
+ selectedRangeStore,
5831
+ setSelectedRange,
5832
+ setCaretRange,
5666
5833
  replaceSelectedText,
5667
5834
  insertTextAtCursor,
5668
5835
  browseHistory,
@@ -5673,11 +5840,10 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
5673
5840
  sendSocketMessage,
5674
5841
  socketConnectionVersion,
5675
5842
  removingComponentIds,
5843
+ recentConversion,
5676
5844
  currentItemDescriptor,
5677
5845
  revision,
5678
5846
  fullReloadToken,
5679
- notifyPageModelReady,
5680
- pageModelReadyToken,
5681
5847
  selectedComment,
5682
5848
  selectedSuggestedEdit,
5683
5849
  comments,
@@ -5708,8 +5874,8 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
5708
5874
  quickSwitcherSelectedIndex,
5709
5875
  handleQuickSwitcherSelect,
5710
5876
  webSocketMessages,
5711
- socketDiagnostics,
5712
- remoteCarets,
5877
+ socketDiagnosticsStore,
5878
+ remoteCaretsStore,
5713
5879
  factoriesRef,
5714
5880
  user,
5715
5881
  statusMessage,
@@ -5727,6 +5893,8 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
5727
5893
  isMobile,
5728
5894
  mobileEditorPanelOpen,
5729
5895
  handleSetMobileEditorPanelOpen,
5896
+ mobileCommentsPanelOpen,
5897
+ revealMobileCommentsPanel,
5730
5898
  showComponentNavigator,
5731
5899
  isComponentNavigatorOpenForSlot,
5732
5900
  setComponentNavigatorOpenForSlot,
@@ -5766,6 +5934,46 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
5766
5934
  executeCommand,
5767
5935
  showInfoToast,
5768
5936
  showErrorToast,
5937
+ // Values below were missing and only looked fresh while this object was
5938
+ // rebuilt on every shell render or socket message.
5939
+ inserting,
5940
+ editHistoryStore,
5941
+ historyMode,
5942
+ showOnlyMyChanges,
5943
+ filterByCurrentLanguage,
5944
+ sidebarStacks,
5945
+ fullscreen,
5946
+ mode,
5947
+ showSuggestedEdits,
5948
+ showSuggestedEditsDiff,
5949
+ showSelectedSuggestionOnPage,
5950
+ showVersionDiffHighlighting,
5951
+ agentChangeHighlighting,
5952
+ componentInsertionHintSeen,
5953
+ selectWithoutAutoScroll,
5954
+ consumeNextSelectionAutoScrollSuppression,
5955
+ consumeNextFocusedFieldAutoScrollSuppression,
5956
+ loadItem,
5957
+ refreshHistory,
5958
+ stackSidebar,
5959
+ moveSidebarToColumn,
5960
+ unstackSidebar,
5961
+ reorderSidebarInStack,
5962
+ setCompareMode,
5963
+ registerSlotContext,
5964
+ unregisterSlotContext,
5965
+ getActiveSlotContext,
5966
+ getActiveSlotId,
5967
+ closeEditorSlot,
5968
+ setActiveSlot,
5969
+ setShowComments,
5970
+ setSuggestedEdits,
5971
+ getCurrentSuggestedEdits,
5972
+ markComponentInsertionHintSeen,
5973
+ handleSetShowHelpTerminal,
5974
+ handleSetShowAgentsWorkspaceEditor,
5975
+ handleSetShowLayoutComponents,
5976
+ activeSessionsStore,
5769
5977
  ]);
5770
5978
  // CRITICAL: Assign editContext to ref synchronously (not via useEffect)
5771
5979
  // This ensures editContextRef.current always has the latest value when executeCommand is called
@@ -5786,6 +5994,7 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
5786
5994
  addRecentEdit,
5787
5995
  focusedField,
5788
5996
  setFocusedField: setFocusedFieldWithLock,
5997
+ lockedField,
5789
5998
  unlockField: async () => {
5790
5999
  setLockedField(undefined); // Clear client-side lock state
5791
6000
  await releaseFieldLocks(sessionId);
@@ -5796,6 +6005,7 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
5796
6005
  addRecentEdit,
5797
6006
  focusedField,
5798
6007
  setFocusedFieldWithLock,
6008
+ lockedField,
5799
6009
  sessionId,
5800
6010
  ]);
5801
6011
  // Debug: Track editContext changes
@@ -6055,7 +6265,7 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
6055
6265
  startTour();
6056
6266
  }
6057
6267
  : undefined, replayEnabled: canStartTour })), _jsx(FeatureGate, { feature: LicenseFeatures.AI, children: _jsx(GuidanceOverlay, {}) }), _jsx(FeatureGate, { feature: LicenseFeatures.AI, children: _jsx(AgentDialogHandler, {}) })] }));
6058
- const showRefreshSpinner = editContext.isRefreshing && !activePageViewContext.iframeSupportsRefresh;
6268
+ const showRefreshSpinner = editContext.isRefreshing && !activeIframeSupportsRefresh;
6059
6269
  return (_jsx(LicenseProvider, { initialLicenseStatus: initialLicenseStatus, initialStatusLoaded: initialLicenseStatusLoaded, children: _jsx("div", { className: `editor h-full w-full`, children: _jsx(OperationsContextProvider, { value: operationsContext.context, children: _jsx(FieldsEditContextProvider, { value: fieldsEditContext, children: _jsx(EditContextProvider, { value: editContext, children: _jsxs(SelectionContextProvider, { value: selectionContextValue, children: [_jsx(DevModeIndicator, {}), startupChecks.state === "loading" && _jsx(EditorLoadingOverlay, {}), showRefreshSpinner && (_jsx("div", { className: "text-neutral-grey-50 pointer-events-none fixed right-0 bottom-0 flex h-24 w-24 items-center justify-center opacity-50 select-none", children: _jsx(Spinner, {}) })), (currentWorkspace.id === "agents" ||
6060
6270
  currentWorkspace.id === "taskboard" ||
6061
6271
  currentWorkspace.id === "translation-management") &&