@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,5 @@
1
1
  import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import React, { forwardRef, memo, useCallback, useEffect, useImperativeHandle, useMemo, useRef, useState, } from "react";
2
+ import React, { forwardRef, Fragment, memo, useCallback, useEffect, useImperativeHandle, useMemo, useRef, useState, } from "react";
3
3
  import { Link2Off } from "lucide-react";
4
4
  import { createEditor, Editor, Element, Text, Transforms, Range, } from "slate";
5
5
  import { withHistory } from "slate-history";
@@ -15,9 +15,13 @@ import { htmlToSlate, slateToHtml } from "../utils/conversion";
15
15
  import { createKeyboardHandler, generateInternalLinkUrl, isHotkey, } from "../utils/plugins";
16
16
  import { cn } from "../../../../lib/utils";
17
17
  import { agentAddedTextClass, agentWholeFieldClass, computeTextHighlight, } from "../../../agent-changes/agentChangeTextHighlight";
18
- import { CHANGED_TEXT_LEAF, collectTextNodeStarts, decorateChangedText, getNodesText, } from "../utils/changeHighlight";
18
+ import { CHANGED_TEXT_LEAF, MISSPELLED_LEAF, collectTextNodeStarts, decorateChangedText, decorateRanges, getNodesText, } from "../utils/changeHighlight";
19
+ import { buildSpellCheckText, commonPrefixLength, pointAtSpellTextOffset, } from "../utils/spellCheckText";
20
+ import { useSpellCheck } from "../../../spellcheck/useSpellCheck";
21
+ import { misspelledTextClass } from "../../../spellcheck/spellCheckStyles";
19
22
  import { useCachedSimplifiedProfile } from "../hooks/useProfileCache";
20
23
  import { getRichTextAlignmentIcon, getRichTextHorizontalRuleIcon, getRichTextLinkIcon, getRichTextListIcon, getRichTextMarkIcon, getRichTextStripFormattingIcon, } from "../richTextToolbarIcons";
24
+ import { fieldBoxClassName, fieldFocusWithinClassName, } from "../../fieldStyles";
21
25
  // Dashed whole-field outline for an agent change that has no added text to
22
26
  // mark (deletion-only, or no baseline captured). Lives inside <Slate> and
23
27
  // subscribes to the editor so it follows external value updates, which never
@@ -55,15 +59,24 @@ const ToolbarButtonWrapper = memo(({ option, icon, onMouseDown }) => {
55
59
  return false;
56
60
  return !editor.selection || Range.isCollapsed(editor.selection);
57
61
  });
62
+ // Adding and removing a link both act on the selected text
63
+ const disabledTooltip = option.type !== "link"
64
+ ? undefined
65
+ : isActive
66
+ ? "Select the link text to remove the link"
67
+ : "Select text to add a link";
58
68
  const renderedIcon = option.type === "link" && isActive ? (_jsx(Link2Off, { className: "text-neutral-grey-100 h-4 w-4", strokeWidth: 1, "aria-hidden": "true" })) : (icon);
59
- return (_jsx(ToolbarButton, { icon: renderedIcon, active: isActive, disabled: isDisabled, onMouseDown: onMouseDown, type: `${option.type}-${option.id}` }));
69
+ return (_jsx(ToolbarButton, { icon: renderedIcon, active: isActive, disabled: isDisabled, disabledTooltip: disabledTooltip, onMouseDown: onMouseDown, type: `${option.type}-${option.id}` }));
60
70
  });
61
71
  ToolbarButtonWrapper.displayName = "ToolbarButtonWrapper";
62
72
  // Memoized dropdown component to prevent unnecessary re-renders
63
- const MemoizedEditorDropdown = memo(({ options, editor, label, buttonStyle }) => {
64
- return (_jsx(EditorDropdown, { options: options, editor: editor, label: label, buttonStyle: buttonStyle }));
73
+ const MemoizedEditorDropdown = memo(({ options, editor, label, buttonStyle, iconOnly }) => {
74
+ return (_jsx(EditorDropdown, { options: options, editor: editor, label: label, buttonStyle: buttonStyle, iconOnly: iconOnly }));
65
75
  });
66
76
  MemoizedEditorDropdown.displayName = "MemoizedEditorDropdown";
77
+ // Handler keys for the "Style" (ApplyClass) dropdown entries
78
+ const CSS_CLASS_NONE_KEY = "css-class-none";
79
+ const CSS_CLASS_KEY_PREFIX = "css-class-";
67
80
  function getPointAtTextOffset(editor, requestedOffset) {
68
81
  const offset = Math.max(0, requestedOffset);
69
82
  let traversed = 0;
@@ -142,7 +155,7 @@ function resolveSnapshotSelection(editor, selection, snapshot) {
142
155
  }
143
156
  }
144
157
  export const ReactSlate = forwardRef((props, ref) => {
145
- const { value = "", onChange, onFocus, onBlur, onMouseUp, onKeyUp, onContextMenu, readOnly = false, placeholder = "Enter some text...", profile, showControls, changeBaseline, } = props;
158
+ const { value = "", onChange, onFocus, onBlur, onMouseUp, onKeyUp, onContextMenu, readOnly = false, placeholder = "Enter some text...", profile, changeBaseline, spellCheck, } = props;
146
159
  const editorProfile = profile || {
147
160
  toolbar: {
148
161
  groups: [],
@@ -193,12 +206,58 @@ export const ReactSlate = forwardRef((props, ref) => {
193
206
  changeHighlightCacheRef.current = next;
194
207
  return next;
195
208
  }, [baselineText, editor]);
209
+ // Spell checking: the document's spell text (block-separated, see
210
+ // spellCheckText.ts) is tracked per content change and checked through
211
+ // the shared client. Misspelling offsets are mapped onto text nodes via
212
+ // the `starts` of the current children; while a re-check is pending after
213
+ // typing, only the ranges before the first changed character are kept.
214
+ const [spellText, setSpellText] = useState(() => buildSpellCheckText(editor.children).text);
215
+ const lastSpellChildrenRef = useRef(editor.children);
216
+ const spell = useSpellCheck({
217
+ key: spellCheck?.key ?? "",
218
+ language: spellCheck?.language,
219
+ text: spellText,
220
+ enabled: !!spellCheck?.enabled && !!spellCheck?.key && !readOnly,
221
+ });
222
+ const spellRangesCacheRef = useRef(null);
223
+ const getSpellRanges = useCallback(() => {
224
+ if (spell.misspellings.length === 0)
225
+ return null;
226
+ const cached = spellRangesCacheRef.current;
227
+ if (cached &&
228
+ cached.children === editor.children &&
229
+ cached.misspellings === spell.misspellings &&
230
+ cached.checkedText === spell.checkedText) {
231
+ return cached;
232
+ }
233
+ const current = buildSpellCheckText(editor.children);
234
+ const checkedText = spell.checkedText ?? "";
235
+ const stable = commonPrefixLength(checkedText, current.text);
236
+ const ranges = current.text === checkedText
237
+ ? spell.misspellings
238
+ : spell.misspellings.filter((m) => m.end <= stable);
239
+ const next = {
240
+ children: editor.children,
241
+ misspellings: spell.misspellings,
242
+ checkedText: spell.checkedText,
243
+ starts: current.starts,
244
+ ranges,
245
+ };
246
+ spellRangesCacheRef.current = next;
247
+ return next;
248
+ }, [editor, spell.misspellings, spell.checkedText]);
196
249
  const decorate = useCallback((entry) => {
250
+ const decorations = [];
197
251
  const state = getChangeHighlight();
198
- if (!state?.highlight)
199
- return [];
200
- return decorateChangedText(entry, state.starts, state.highlight.ranges);
201
- }, [getChangeHighlight]);
252
+ if (state?.highlight) {
253
+ decorations.push(...decorateChangedText(entry, state.starts, state.highlight.ranges));
254
+ }
255
+ const spellState = getSpellRanges();
256
+ if (spellState) {
257
+ decorations.push(...decorateRanges(entry, spellState.starts, spellState.ranges, MISSPELLED_LEAF));
258
+ }
259
+ return decorations;
260
+ }, [getChangeHighlight, getSpellRanges]);
202
261
  // Track previous value to detect external changes
203
262
  const previousValueRef = useRef(value);
204
263
  const isInternalChangeRef = useRef(false);
@@ -269,7 +328,65 @@ export const ReactSlate = forwardRef((props, ref) => {
269
328
  },
270
329
  });
271
330
  },
272
- }), [editor, onChange, simplifiedProfile, value]);
331
+ getSpellText: () => buildSpellCheckText(editor.children).text,
332
+ getTextOffsetAtPoint: (clientX, clientY) => {
333
+ let domRange = null;
334
+ try {
335
+ const doc = ReactEditor.toDOMNode(editor, editor).ownerDocument;
336
+ const caretDocument = doc;
337
+ if (caretDocument.caretPositionFromPoint) {
338
+ const position = caretDocument.caretPositionFromPoint(clientX, clientY);
339
+ if (position) {
340
+ domRange = doc.createRange();
341
+ domRange.setStart(position.offsetNode, position.offset);
342
+ domRange.collapse(true);
343
+ }
344
+ }
345
+ else if (caretDocument.caretRangeFromPoint) {
346
+ domRange = caretDocument.caretRangeFromPoint(clientX, clientY);
347
+ }
348
+ if (!domRange)
349
+ return null;
350
+ const slateRange = ReactEditor.toSlateRange(editor, domRange, {
351
+ exactMatch: false,
352
+ suppressThrow: true,
353
+ });
354
+ if (!slateRange)
355
+ return null;
356
+ const { starts } = buildSpellCheckText(editor.children);
357
+ const start = starts.get(slateRange.anchor.path.join("."));
358
+ return start === undefined ? null : start + slateRange.anchor.offset;
359
+ }
360
+ catch {
361
+ return null;
362
+ }
363
+ },
364
+ getMisspellingAtOffset: (offset) => getSpellRanges()?.ranges.find((m) => m.start <= offset && offset <= m.end),
365
+ replaceTextAtOffsets: (start, end, newText) => {
366
+ const { starts } = buildSpellCheckText(editor.children);
367
+ const anchor = pointAtSpellTextOffset(editor, starts, start);
368
+ const focus = pointAtSpellTextOffset(editor, starts, end);
369
+ Transforms.select(editor, { anchor, focus });
370
+ if (editor.selection &&
371
+ Range.isRange(editor.selection) &&
372
+ !Range.isCollapsed(editor.selection)) {
373
+ Transforms.delete(editor);
374
+ }
375
+ Transforms.insertText(editor, newText);
376
+ if (onChange) {
377
+ try {
378
+ const html = slateToHtml(editor.children, simplifiedProfile);
379
+ if (html !== value) {
380
+ isInternalChangeRef.current = true;
381
+ onChange(html);
382
+ }
383
+ }
384
+ catch (error) {
385
+ console.warn("Failed to convert Slate to HTML in replaceTextAtOffsets:", error);
386
+ }
387
+ }
388
+ },
389
+ }), [editor, getSpellRanges, onChange, simplifiedProfile, value]);
273
390
  // Initial value for Slate - capture initial props at mount time
274
391
  const initialSlateValue = useMemo(() => {
275
392
  try {
@@ -291,17 +408,14 @@ export const ReactSlate = forwardRef((props, ref) => {
291
408
  return [{ type: "paragraph", children: [{ text: "" }] }];
292
409
  }
293
410
  }, [value, simplifiedProfile]);
294
- // Track if user-initiated focus should be restored after toolbar renders
295
- const pendingFocusRestoreRef = useRef(false);
296
- const previousShowControlsRef = useRef(showControls);
297
411
  // The caret position the user clicked, captured at mousedown as a *logical*
298
- // Slate range. When an unfocused field is clicked, the toolbar appears and
299
- // steals focus, which clears both editor.selection and the DOM selection by
300
- // the time we re-focus - so neither can be read back. Capturing from the
301
- // click coordinates up front, before any of that, is the only reliable
302
- // source. A logical range also survives the layout shift when the toolbar
303
- // pushes the content down.
412
+ // Slate range. When an unfocused field is clicked, Slate still holds its
413
+ // pre-blur selection at focus time and the renders triggered by focusing
414
+ // can re-apply it, so the click coordinates captured up front are the only
415
+ // reliable source for where the caret belongs.
304
416
  const pendingClickRangeRef = useRef(null);
417
+ const pendingCharacterDragRef = useRef(null);
418
+ const pendingSelectionCollapseRef = useRef(null);
305
419
  // Keep the last deliberate expanded selection in Slate coordinates. A
306
420
  // toolbar interaction can make the browser collapse or discard its DOM
307
421
  // selection before React handles the button event; the logical range is the
@@ -343,6 +457,16 @@ export const ReactSlate = forwardRef((props, ref) => {
343
457
  }, [editor]);
344
458
  // Capture the click target before focus/toolbar can disrupt the selection.
345
459
  const handleMouseDown = useCallback((event) => {
460
+ pendingCharacterDragRef.current =
461
+ event.button === 0 &&
462
+ event.detail === 1 &&
463
+ !event.shiftKey &&
464
+ !event.ctrlKey &&
465
+ !event.metaKey &&
466
+ !event.altKey
467
+ ? { x: event.clientX, y: event.clientY, moved: false }
468
+ : null;
469
+ pendingSelectionCollapseRef.current = null;
346
470
  // Multi-clicks (double = word, triple = paragraph) expand the selection
347
471
  // natively. Capturing a collapsed point here would let the delayed
348
472
  // caret-restore logic collapse that expansion again.
@@ -352,7 +476,30 @@ export const ReactSlate = forwardRef((props, ref) => {
352
476
  }
353
477
  lastExpandedSelectionRef.current = null;
354
478
  pendingClickRangeRef.current = slateRangeFromPoint(event.clientX, event.clientY);
355
- }, [slateRangeFromPoint]);
479
+ const clickedRange = pendingClickRangeRef.current;
480
+ const domSelection = window.getSelection();
481
+ if (event.button === 0 &&
482
+ !event.shiftKey &&
483
+ !event.ctrlKey &&
484
+ !event.metaKey &&
485
+ !event.altKey &&
486
+ clickedRange &&
487
+ domSelection &&
488
+ !domSelection.isCollapsed) {
489
+ const selectedRange = ReactEditor.toSlateRange(editor, domSelection, {
490
+ exactMatch: false,
491
+ suppressThrow: true,
492
+ });
493
+ if (selectedRange &&
494
+ Range.includes(selectedRange, clickedRange.anchor)) {
495
+ pendingSelectionCollapseRef.current = {
496
+ range: clickedRange,
497
+ x: event.clientX,
498
+ y: event.clientY,
499
+ };
500
+ }
501
+ }
502
+ }, [editor, slateRangeFromPoint]);
356
503
  const selectPendingClickRangeIfStaleCollapsed = useCallback(() => {
357
504
  const clickedRange = pendingClickRangeRef.current;
358
505
  const currentSelection = editor.selection;
@@ -383,60 +530,6 @@ export const ReactSlate = forwardRef((props, ref) => {
383
530
  return false;
384
531
  }
385
532
  }, [editor]);
386
- // Re-focus the editor after the toolbar mounts and put the caret back where
387
- // the user clicked. If Slate kept a selection (e.g. a drag-select), trust it
388
- // and leave it alone; only fall back to the captured click point - or the end
389
- // of the content - when the selection was lost.
390
- const restoreClickedCaret = useCallback(() => {
391
- if (selectPendingClickRangeIfStaleCollapsed()) {
392
- return;
393
- }
394
- // An expanded DOM selection (double-click word selection, drag-select)
395
- // is newer than Slate's internal state — don't replace it with a caret.
396
- const domSelection = window.getSelection();
397
- if (domSelection && !domSelection.isCollapsed) {
398
- return;
399
- }
400
- if (editor.selection) {
401
- try {
402
- ReactEditor.focus(editor);
403
- }
404
- catch {
405
- // Silently fail if editor is not ready
406
- }
407
- return;
408
- }
409
- const clickedRange = pendingClickRangeRef.current;
410
- pendingClickRangeRef.current = null;
411
- try {
412
- ReactEditor.focus(editor);
413
- if (clickedRange) {
414
- Transforms.select(editor, clickedRange);
415
- }
416
- else if (editor.children.length > 0) {
417
- Transforms.select(editor, Editor.end(editor, []));
418
- }
419
- }
420
- catch {
421
- // Silently fail - focus is set, Slate will place the caret on keystroke
422
- }
423
- }, [editor, selectPendingClickRangeIfStaleCollapsed]);
424
- // Restore focus after toolbar appears (only when user-initiated via pendingFocusRestoreRef)
425
- useEffect(() => {
426
- const wasShowingControls = previousShowControlsRef.current;
427
- previousShowControlsRef.current = showControls;
428
- // If showControls just became true and we have a pending focus restore
429
- if (showControls &&
430
- !wasShowingControls &&
431
- pendingFocusRestoreRef.current) {
432
- pendingFocusRestoreRef.current = false;
433
- // Use a short timeout to let the toolbar render complete
434
- const timeoutId = setTimeout(() => {
435
- restoreClickedCaret();
436
- }, 50);
437
- return () => clearTimeout(timeoutId);
438
- }
439
- }, [showControls, editor, restoreClickedCaret]);
440
533
  // Update editor when value changes from outside
441
534
  useEffect(() => {
442
535
  // Skip if this is an internal change (from our own onChange)
@@ -460,6 +553,8 @@ export const ReactSlate = forwardRef((props, ref) => {
460
553
  editor.children = newChildren;
461
554
  // Normalize the editor to ensure consistency
462
555
  Editor.normalize(editor, { force: true });
556
+ lastSpellChildrenRef.current = editor.children;
557
+ setSpellText(buildSpellCheckText(editor.children).text);
463
558
  // Restore selection if it was valid, otherwise set to end
464
559
  if (currentSelection &&
465
560
  Editor.hasPath(editor, currentSelection.anchor.path)) {
@@ -485,6 +580,12 @@ export const ReactSlate = forwardRef((props, ref) => {
485
580
  }, [editor, slateValue, value]);
486
581
  // Handle value changes with proper Slate patterns
487
582
  const handleChange = useCallback((newValue) => {
583
+ // Slate calls onChange for selection changes too; only rebuild the
584
+ // spell text when the content actually changed.
585
+ if (newValue !== lastSpellChildrenRef.current) {
586
+ lastSpellChildrenRef.current = newValue;
587
+ setSpellText(buildSpellCheckText(newValue).text);
588
+ }
488
589
  // If this change was caused by applying an external `value` prop (and normalization),
489
590
  // do not echo it back to the parent.
490
591
  if (isApplyingExternalValueRef.current) {
@@ -539,7 +640,9 @@ export const ReactSlate = forwardRef((props, ref) => {
539
640
  const domRange = domSelection.getRangeAt(0);
540
641
  if (!editableEl.contains(domRange.commonAncestorContainer))
541
642
  return null;
542
- const slateRange = ReactEditor.toSlateRange(editor, domRange, {
643
+ // A DOM Range is always ordered start-to-end. Pass the Selection so
644
+ // backwards drags retain their anchor/focus when extended by keyboard.
645
+ const slateRange = ReactEditor.toSlateRange(editor, domSelection, {
543
646
  exactMatch: false,
544
647
  suppressThrow: true,
545
648
  });
@@ -603,7 +706,9 @@ export const ReactSlate = forwardRef((props, ref) => {
603
706
  // Memoize option handlers to prevent creating new functions on every render
604
707
  const optionHandlers = useMemo(() => {
605
708
  const handlers = {};
606
- const handleOptionSelect = (option) => (editor, event) => {
709
+ // Shared toolbar click handling: restore the selection, run the command,
710
+ // remember an expanded selection for the next toolbar click.
711
+ const runToolbarCommand = (editor, event, command) => {
607
712
  event.preventDefault();
608
713
  // A toolbar click is an explicit user edit. It can arrive immediately
609
714
  // after a new value is synchronized into Slate, before the deferred
@@ -616,9 +721,21 @@ export const ReactSlate = forwardRef((props, ref) => {
616
721
  if (!editor.selection && editor.children.length > 0) {
617
722
  Transforms.select(editor, Editor.end(editor, []));
618
723
  }
724
+ if (command() === false) {
725
+ return;
726
+ }
727
+ if (editor.selection && !Range.isCollapsed(editor.selection)) {
728
+ lastExpandedSelectionRef.current = {
729
+ anchor: { ...editor.selection.anchor },
730
+ focus: { ...editor.selection.focus },
731
+ };
732
+ }
733
+ };
734
+ // Returns false when the option cannot run on the current selection
735
+ const applyOption = (editor, option) => {
619
736
  if (option.type === "link" &&
620
737
  (!editor.selection || Range.isCollapsed(editor.selection))) {
621
- return;
738
+ return false;
622
739
  }
623
740
  switch (option.type) {
624
741
  case "mark":
@@ -643,16 +760,16 @@ export const ReactSlate = forwardRef((props, ref) => {
643
760
  editor.insertHorizontalRule();
644
761
  }
645
762
  break;
763
+ case "class":
764
+ // Applied through the per-class handlers below
765
+ break;
646
766
  default:
647
767
  console.warn(`Unhandled option type: ${option.type}`);
648
768
  }
649
- if (editor.selection && !Range.isCollapsed(editor.selection)) {
650
- lastExpandedSelectionRef.current = {
651
- anchor: { ...editor.selection.anchor },
652
- focus: { ...editor.selection.focus },
653
- };
654
- }
655
769
  };
770
+ const handleOptionSelect = (option) => (editor, event) => runToolbarCommand(editor, event, () => applyOption(editor, option));
771
+ // Classes from the profile's Classes folder (ApplyClass dropdown)
772
+ const handleCssClassSelect = (cssClass) => (editor, event) => runToolbarCommand(editor, event, () => editor.applyCssClass(cssClass, editorProfile.classes ?? []));
656
773
  // Pre-create handlers for all possible options
657
774
  editorProfile.toolbar.groups.forEach((group) => {
658
775
  group.options.forEach((option) => {
@@ -660,10 +777,16 @@ export const ReactSlate = forwardRef((props, ref) => {
660
777
  handlers[key] = handleOptionSelect(option);
661
778
  });
662
779
  });
780
+ handlers[CSS_CLASS_NONE_KEY] = handleCssClassSelect(null);
781
+ (editorProfile.classes ?? []).forEach((cssClass, index) => {
782
+ handlers[`${CSS_CLASS_KEY_PREFIX}${index}`] =
783
+ handleCssClassSelect(cssClass);
784
+ });
663
785
  return handlers;
664
786
  }, [
665
787
  editor,
666
788
  editorProfile.toolbar.groups,
789
+ editorProfile.classes,
667
790
  handleLinkButtonClick,
668
791
  restoreLastExpandedSelection,
669
792
  syncDomSelectionToEditor,
@@ -694,7 +817,7 @@ export const ReactSlate = forwardRef((props, ref) => {
694
817
  const blockConfig = SLATE_BLOCKS[option.id];
695
818
  return {
696
819
  id: option.id,
697
- label: blockConfig.label,
820
+ label: option.label || blockConfig.label,
698
821
  icon: blockConfig.icon,
699
822
  isActive: (editor) => editor.isBlockActive(option.id),
700
823
  toggle: optionHandlers[handlerKey],
@@ -798,76 +921,102 @@ export const ReactSlate = forwardRef((props, ref) => {
798
921
  }
799
922
  return subGroups;
800
923
  }, []);
801
- // Memoize toolbar group rendering
924
+ // "Style" dropdown: "No style" plus the profile's Classes folder entries
925
+ const cssClassDropdownOptions = useMemo(() => {
926
+ const classes = editorProfile.classes ?? [];
927
+ const noneHandler = optionHandlers[CSS_CLASS_NONE_KEY];
928
+ if (classes.length === 0 || !noneHandler)
929
+ return [];
930
+ const options = [
931
+ {
932
+ value: null,
933
+ label: "No style",
934
+ isActive: (editor) => !editor.getActiveCssClass(classes),
935
+ onSelect: noneHandler,
936
+ },
937
+ ];
938
+ classes.forEach((cssClass, index) => {
939
+ const handler = optionHandlers[`${CSS_CLASS_KEY_PREFIX}${index}`];
940
+ if (!handler)
941
+ return;
942
+ options.push({
943
+ value: cssClass,
944
+ label: cssClass.label,
945
+ isActive: (editor) => editor.getActiveCssClass(classes) === cssClass,
946
+ onSelect: handler,
947
+ });
948
+ });
949
+ return options;
950
+ }, [editorProfile.classes, optionHandlers]);
951
+ // Render a profile group as toolbar segments: one per run of buttons
952
+ // between dividers, or a single dropdown. The toolbar separates segments.
802
953
  const renderToolbarGroup = useCallback((group, index) => {
954
+ if (group.options.some((option) => option.type === "class")) {
955
+ if (cssClassDropdownOptions.length === 0)
956
+ return [];
957
+ return [
958
+ _jsx("div", { className: "toolbar-dropdown-container", title: "Apply CSS class", children: _jsx(MemoizedEditorDropdown, { options: cssClassDropdownOptions, editor: editor, buttonStyle: {
959
+ padding: "4px 8px",
960
+ margin: "0",
961
+ background: "transparent",
962
+ border: "none",
963
+ borderRadius: "3px",
964
+ cursor: "pointer",
965
+ } }) }, `group-${group.id || index}`),
966
+ ];
967
+ }
803
968
  const validOptions = group.options.filter((option) => getOption(option) || option.type === "divider");
804
969
  if (validOptions.length === 0)
805
- return null;
970
+ return [];
806
971
  // Skip rendering dropdown groups with only one option
807
972
  if (group.display === "dropdown" && validOptions.length === 1)
808
- return null;
809
- const groupStyle = {
810
- display: "flex",
811
- alignItems: "center",
812
- gap: "8px",
813
- flexWrap: "wrap",
973
+ return [];
974
+ const groupKey = `group-${group.id || index}`;
975
+ if (group.display === "buttons") {
976
+ return splitOptionsByDividers(validOptions).map((subGroup, subGroupIndex) => (_jsx("div", { className: "toolbar-button-group", children: subGroup.map((option) => {
977
+ const optionObj = getOption(option);
978
+ const handler = buttonHandlers[`${option.type}-${option.id}`];
979
+ if (!optionObj || !handler)
980
+ return null;
981
+ return (_jsx(ToolbarButtonWrapper, { option: option, icon: optionObj.icon, onMouseDown: handler }, `${option.type}-${option.id}`));
982
+ }) }, `${groupKey}-${subGroupIndex}`)));
983
+ }
984
+ const dropdownOptions = createDropdownOptions(validOptions);
985
+ const blockOptions = validOptions.filter((option) => option.type === "block");
986
+ // If there's only one block option, render it as a disabled-style button
987
+ if (blockOptions.length === 1) {
988
+ const singleOption = dropdownOptions.find((opt) => blockOptions.some((blockOpt) => blockOpt.type === "block" && getOption(blockOpt) === opt.value));
989
+ return [
990
+ _jsx("div", { className: "toolbar-dropdown-container", children: _jsx("button", { className: "toolbar-dropdown-button", disabled: true, children: group.label ? (_jsxs(_Fragment, { children: [_jsxs("span", { className: "toolbar-dropdown-content", children: [group.label, ": ", singleOption?.label] }), _jsx("span", { className: "toolbar-dropdown-arrow", children: "\u25BC" })] })) : group.showIconsOnly ? (_jsxs(_Fragment, { children: [_jsx("span", { className: "toolbar-dropdown-icon", children: singleOption?.icon }), _jsx("span", { className: "toolbar-dropdown-arrow", children: "\u25BC" })] })) : (_jsxs(_Fragment, { children: [_jsxs("span", { className: "toolbar-dropdown-icon", children: [singleOption?.icon && (_jsx("span", { className: "toolbar-dropdown-icon", children: singleOption.icon })), _jsx("span", { className: "toolbar-dropdown-content", children: singleOption?.label })] }), _jsx("span", { className: "toolbar-dropdown-arrow", children: "\u25BC" })] })) }) }, groupKey),
991
+ ];
992
+ }
993
+ const isActive = dropdownOptions.some((option) => option.isActive(editor));
994
+ const buttonStyle = {
995
+ padding: group.showIconsOnly ? "4px" : "4px 8px",
996
+ margin: "0",
997
+ background: isActive ? "var(--color-neutral-grey-10)" : "transparent",
998
+ border: "none",
999
+ borderRadius: "3px",
1000
+ cursor: "pointer",
814
1001
  };
815
- return (_jsx("div", { style: groupStyle, children: group.display === "buttons"
816
- ? (() => {
817
- const subGroups = splitOptionsByDividers(validOptions);
818
- return subGroups.map((subGroup, subGroupIndex) => (_jsx("div", { className: "toolbar-button-group", children: subGroup.map((option) => {
819
- const optionObj = getOption(option);
820
- const handler = buttonHandlers[`${option.type}-${option.id}`];
821
- if (!optionObj || !handler)
822
- return null;
823
- return (_jsx(ToolbarButtonWrapper, { option: option, icon: optionObj.icon, onMouseDown: handler }, `${option.type}-${option.id}`));
824
- }) }, `subgroup-${subGroupIndex}`)));
825
- })()
826
- : (() => {
827
- const dropdownOptions = createDropdownOptions(validOptions);
828
- const blockOptions = validOptions.filter((option) => option.type === "block");
829
- // If there's only one block option, render it as a disabled-style button
830
- if (blockOptions.length === 1) {
831
- const singleOption = dropdownOptions.find((opt) => blockOptions.some((blockOpt) => blockOpt.type === "block" &&
832
- getOption(blockOpt) === opt.value));
833
- return (_jsx("div", { className: "toolbar-dropdown-container", children: _jsx("button", { className: "toolbar-dropdown-button", disabled: true, children: group.label ? (_jsxs(_Fragment, { children: [_jsxs("span", { className: "toolbar-dropdown-content", children: [group.label, ": ", singleOption?.label] }), _jsx("span", { className: "toolbar-dropdown-arrow", children: "\u25BC" })] })) : group.showIconsOnly ? (_jsxs(_Fragment, { children: [_jsx("span", { className: "toolbar-dropdown-icon", children: singleOption?.icon }), _jsx("span", { className: "toolbar-dropdown-arrow", children: "\u25BC" })] })) : (_jsxs(_Fragment, { children: [_jsxs("span", { className: "toolbar-dropdown-icon", children: [singleOption?.icon && (_jsx("span", { className: "toolbar-dropdown-icon", children: singleOption.icon })), _jsx("span", { className: "toolbar-dropdown-content", children: singleOption?.label })] }), _jsx("span", { className: "toolbar-dropdown-arrow", children: "\u25BC" })] })) }) }));
834
- }
835
- // Multiple options - render normally wrapped in grey container
836
- const isActive = dropdownOptions.some((option) => option.isActive(editor));
837
- const buttonStyle = {
838
- padding: "5px 10px",
839
- margin: "0",
840
- background: isActive ? "var(--color-white)" : "transparent",
841
- border: "none",
842
- borderRadius: "3px",
843
- cursor: "pointer",
844
- boxShadow: isActive
845
- ? "0 1px 2px color-mix(in srgb, var(--color-neutral-grey-100) 10%, transparent)"
846
- : "none",
847
- };
848
- return (_jsx("div", { className: "toolbar-dropdown-container", children: _jsx(MemoizedEditorDropdown, { options: dropdownOptions, editor: editor, label: group.label, buttonStyle: buttonStyle }) }));
849
- })() }, `group-${group.id || index}`));
1002
+ return [
1003
+ _jsx("div", { className: "toolbar-dropdown-container", children: _jsx(MemoizedEditorDropdown, { options: dropdownOptions, editor: editor, label: group.label, buttonStyle: buttonStyle, iconOnly: group.showIconsOnly }) }, groupKey),
1004
+ ];
850
1005
  }, [
851
1006
  getOption,
852
1007
  splitOptionsByDividers,
853
1008
  createDropdownOptions,
1009
+ cssClassDropdownOptions,
854
1010
  optionHandlers,
855
1011
  buttonHandlers,
856
1012
  editor,
857
1013
  ]);
858
- // Memoize toolbar structure (expensive grouping operation)
859
- const toolbarStructure = useMemo(() => {
860
- // Group toolbar items by row
861
- const groupsByRow = editorProfile.toolbar.groups.reduce((acc, group, index) => {
862
- const row = group.row !== undefined ? group.row : index;
863
- if (!acc[row])
864
- acc[row] = [];
865
- acc[row].push(group);
866
- return acc;
867
- }, {});
868
- // Return sorted entries for consistent rendering
869
- return Object.entries(groupsByRow).sort(([a], [b]) => parseInt(a) - parseInt(b));
870
- }, [editorProfile.toolbar.groups]);
1014
+ // Profile rows (Sitecore's toolbars) only order the groups; the toolbar
1015
+ // itself is one line that wraps when the field is too narrow.
1016
+ const orderedToolbarGroups = useMemo(() => editorProfile.toolbar.groups
1017
+ .map((group, index) => ({ group, row: group.row ?? index }))
1018
+ .sort((a, b) => a.row - b.row)
1019
+ .map(({ group }) => group), [editorProfile.toolbar.groups]);
871
1020
  const editLink = useCallback((element) => {
872
1021
  const linkType = element.link?.type || "external";
873
1022
  let linkData;
@@ -960,43 +1109,77 @@ export const ReactSlate = forwardRef((props, ref) => {
960
1109
  }
961
1110
  baseKeyboardHandler(event);
962
1111
  }, [baseKeyboardHandler, handleLinkButtonClick]);
963
- // Handle focus - restore focus if toolbar just appeared and stole it
964
1112
  const handleFocus = useCallback(() => {
965
- // If controls are not showing yet, mark that we need to restore focus after they appear
966
- if (!showControls && !readOnly) {
967
- pendingFocusRestoreRef.current = true;
968
- }
969
- else if (showControls && !readOnly) {
970
- // Controls are already showing - user clicked but toolbar render may have stolen focus
971
- // Use setTimeout to allow editor to fully initialize after re-render
972
- setTimeout(() => {
973
- restoreClickedCaret();
974
- }, 100);
975
- }
976
1113
  selectPendingClickRangeIfStaleCollapsed();
977
- // Call the original onFocus handler
978
1114
  onFocus?.();
979
- }, [
980
- showControls,
981
- readOnly,
982
- onFocus,
983
- restoreClickedCaret,
984
- selectPendingClickRangeIfStaleCollapsed,
985
- ]);
1115
+ }, [onFocus, selectPendingClickRangeIfStaleCollapsed]);
986
1116
  // Handle blur
987
1117
  const handleBlur = useCallback(() => {
988
1118
  onBlur?.();
989
1119
  }, [onBlur]);
990
- const handleMouseUp = useCallback(() => {
991
- syncDomSelectionToEditor();
1120
+ const handleMouseUp = useCallback((event) => {
1121
+ const nativeRange = syncDomSelectionToEditor();
992
1122
  onMouseUp?.();
993
- }, [onMouseUp, syncDomSelectionToEditor]);
1123
+ const drag = pendingCharacterDragRef.current;
1124
+ pendingCharacterDragRef.current = null;
1125
+ if (drag?.moved && nativeRange) {
1126
+ // Slate's throttled selection update can render between the final
1127
+ // mousemove and mouseup, restoring the penultimate native endpoint.
1128
+ // At gesture end the pointer is authoritative for character drags;
1129
+ // keep the native anchor (including backwards drags) and commit its
1130
+ // final focus after the parent's selection publication.
1131
+ const endpoint = slateRangeFromPoint(event.clientX, event.clientY);
1132
+ if (endpoint) {
1133
+ const finalRange = {
1134
+ anchor: nativeRange.anchor,
1135
+ focus: endpoint.focus,
1136
+ };
1137
+ Transforms.select(editor, finalRange);
1138
+ pendingClickRangeRef.current = null;
1139
+ lastExpandedSelectionRef.current = Range.isCollapsed(finalRange)
1140
+ ? null
1141
+ : finalRange;
1142
+ }
1143
+ }
1144
+ }, [editor, onMouseUp, slateRangeFromPoint, syncDomSelectionToEditor]);
1145
+ const handleMouseMove = useCallback((event) => {
1146
+ const drag = pendingCharacterDragRef.current;
1147
+ if (drag && (event.clientX !== drag.x || event.clientY !== drag.y)) {
1148
+ drag.moved = true;
1149
+ }
1150
+ const collapse = pendingSelectionCollapseRef.current;
1151
+ if (collapse &&
1152
+ (event.clientX !== collapse.x || event.clientY !== collapse.y)) {
1153
+ pendingSelectionCollapseRef.current = null;
1154
+ }
1155
+ }, []);
1156
+ const handleClick = useCallback((event) => {
1157
+ const collapse = pendingSelectionCollapseRef.current;
1158
+ pendingSelectionCollapseRef.current = null;
1159
+ // Chromium collapses a click inside highlighted text after mouseup.
1160
+ // A render caused by mouseup/focus can restore Slate's expanded range
1161
+ // before its throttled selection listener sees that native collapse.
1162
+ // Commit the captured point at click, after the gesture is complete.
1163
+ // Movement and multi-clicks retain their native expanded selection.
1164
+ if (collapse &&
1165
+ event.detail === 1 &&
1166
+ event.clientX === collapse.x &&
1167
+ event.clientY === collapse.y) {
1168
+ Transforms.select(editor, collapse.range);
1169
+ pendingClickRangeRef.current = null;
1170
+ lastExpandedSelectionRef.current = null;
1171
+ }
1172
+ }, [editor]);
994
1173
  const handleDoubleClick = useCallback(() => {
995
1174
  syncDomSelectionToEditor();
996
1175
  }, [syncDomSelectionToEditor]);
997
1176
  const handleKeyUp = useCallback(() => {
1177
+ // The parent publishes the range synchronously and may re-render us.
1178
+ // Commit native Shift+Arrow changes before that render can restore the
1179
+ // previous Slate selection over the new DOM selection.
1180
+ syncDomSelectionToEditor();
998
1181
  onKeyUp?.();
999
- }, [onKeyUp]);
1182
+ }, [onKeyUp, syncDomSelectionToEditor]);
1000
1183
  // Calculate proper list numbering for ordered lists
1001
1184
  const calculateListNumbers = useCallback((elements) => {
1002
1185
  const numberMap = new Map();
@@ -1043,6 +1226,11 @@ export const ReactSlate = forwardRef((props, ref) => {
1043
1226
  const style = {
1044
1227
  textAlign: element.align || "left",
1045
1228
  };
1229
+ // Content classes are styled by the site frontend; in the editor they
1230
+ // are only marked (applying them could clash with editor classes).
1231
+ const classAttributes = element.className
1232
+ ? { "data-rte-class": element.className, title: element.className }
1233
+ : {};
1046
1234
  if (element.type === "link") {
1047
1235
  const isInternal = element.link?.type === "internal";
1048
1236
  const url = isInternal
@@ -1066,7 +1254,7 @@ export const ReactSlate = forwardRef((props, ref) => {
1066
1254
  // Find the element's index in the editor children to get the correct number
1067
1255
  const elementIndex = editor.children.findIndex((child) => child === element);
1068
1256
  const listNumber = listNumbers.get(`${elementIndex}`) || "";
1069
- return (_jsxs("div", { ...attributes, style: listStyle, className: `slate-list-item slate-list-${listType}`, "data-indent": indent, "data-list-number": listNumber, children: [_jsx("span", { className: "slate-list-bullet" }), _jsx("div", { className: "slate-list-content", children: children })] }));
1257
+ return (_jsxs("div", { ...attributes, style: listStyle, className: `slate-list-item slate-list-${listType}`, ...classAttributes, "data-indent": indent, "data-list-number": listNumber, children: [_jsx("span", { className: "slate-list-bullet" }), _jsx("div", { className: "slate-list-content", children: children })] }));
1070
1258
  }
1071
1259
  if (element.type === "horizontal-rule") {
1072
1260
  return (_jsxs("div", { ...attributes, contentEditable: false, style: { ...style, userSelect: "none" }, children: [children, _jsx("hr", { style: {
@@ -1091,15 +1279,17 @@ export const ReactSlate = forwardRef((props, ref) => {
1091
1279
  // For standard blocks, use the appropriate HTML tag
1092
1280
  if (blockConfig) {
1093
1281
  const tagName = blockConfig.htmlTag;
1094
- return React.createElement(tagName, { ...attributes, style }, children);
1282
+ return React.createElement(tagName, { ...attributes, ...classAttributes, style }, children);
1095
1283
  }
1096
1284
  // Default fallback to paragraph
1097
- return (_jsx("p", { ...attributes, style: style, children: children }));
1285
+ return (_jsx("p", { ...attributes, ...classAttributes, style: style, children: children }));
1098
1286
  }, [readOnly, editLink, editor.children, listNumbers]);
1099
1287
  // Memoize renderLeaf to prevent unnecessary re-renders as per Slate performance docs
1100
1288
  const renderLeaf = useCallback(({ attributes, children, leaf }) => {
1101
1289
  const changed = !!leaf[CHANGED_TEXT_LEAF];
1102
- let el = (_jsx("span", { ...attributes, className: changed ? agentAddedTextClass : undefined, "data-changed-text": changed ? "true" : undefined, children: children }));
1290
+ const misspelled = !!leaf[MISSPELLED_LEAF];
1291
+ let el = (_jsx("span", { ...attributes, className: cn(changed && agentAddedTextClass, misspelled && misspelledTextClass) ||
1292
+ undefined, "data-changed-text": changed ? "true" : undefined, "data-misspelled": misspelled ? "true" : undefined, "data-rte-class": leaf.className || undefined, title: leaf.className || undefined, children: children }));
1103
1293
  // Apply marks using the built-in SLATE_MARKS configuration
1104
1294
  // Iterate over all possible marks to preserve existing formatting
1105
1295
  Object.keys(SLATE_MARKS).forEach((markId) => {
@@ -1122,11 +1312,20 @@ export const ReactSlate = forwardRef((props, ref) => {
1122
1312
  }, []);
1123
1313
  // Memoize renderPlaceholder for consistency
1124
1314
  const renderPlaceholder = useCallback(({ attributes, children }) => (_jsx("span", { ...attributes, className: "text-neutral-grey-50 p-2", children: children })), []);
1125
- return (_jsxs("div", { className: `slate-editor ${props.className && props.className}`, children: [_jsxs(Slate, { editor: editor, initialValue: initialSlateValue, onChange: handleChange, children: [!readOnly && showControls && (_jsx("div", { className: "rte-toolbar-reveal", children: _jsxs("div", { className: "rte-toolbar flex flex-col gap-2 pb-4", children: [toolbarStructure.map(([rowIndex, rowGroups], mapIndex) => (_jsxs("div", { className: "toolbar-row", "data-testid": `rte-toolbar-row-${rowGroups[0]?.options?.[0]?.id || "unknown"}`, children: [rowGroups.map((group) => renderToolbarGroup(group, parseInt(rowIndex))), mapIndex === toolbarStructure.length - 1 && (_jsx("div", { className: "toolbar-button-group", children: _jsx(ToolbarButton, { icon: getRichTextStripFormattingIcon(), active: false, onMouseDown: handleStripFormattingClick, type: "strip-formatting" }) }))] }, `row-${rowIndex}`))), toolbarStructure.length === 0 && (_jsx("div", { className: "toolbar-row", children: _jsx("div", { className: "toolbar-button-group", children: _jsx(ToolbarButton, { icon: getRichTextStripFormattingIcon(), active: false, onMouseDown: handleStripFormattingClick, type: "strip-formatting" }) }) }))] }) })), _jsxs("div", { className: "relative", children: [_jsx(Editable, { "aria-label": props.ariaLabel || "Rich text", "data-testid": "rte-editable", className: cn("border-border-default min-h-7 rounded-[4px] border p-1.5", "focus:border-neutral-grey-100", readOnly ? "bg-neutral-grey-5" : "bg-neutral-grey-5", "focus-shadow", "slate-editable",
1126
- // MainLayout disables text selection app-wide (select-none);
1127
- // contenteditable content must re-enable it for mouse selection
1128
- // (double-click word select, drag select) to work.
1129
- "select-text"), decorate: decorate, readOnly: readOnly, renderPlaceholder: renderPlaceholder, onFocus: handleFocus, onBlur: handleBlur, onBeforeInputCapture: markUserInput, onInputCapture: markUserInput, onPasteCapture: markUserInput, onMouseDown: handleMouseDown, onMouseUp: handleMouseUp, onDoubleClick: handleDoubleClick, onKeyUp: handleKeyUp, onContextMenu: onContextMenu, onKeyDown: handleKeyDown, renderElement: renderElement, renderLeaf: renderLeaf }), _jsx(ChangedTextOutline, { getChangeHighlight: getChangeHighlight })] })] }), showLinkDialog && selectedLink && (_jsx(LinkEditorDialog, { linkValue: selectedLink, onOk: handleLinkUpdate, onCancel: () => {
1315
+ const toolbarSegments = [
1316
+ ...orderedToolbarGroups.flatMap((group, index) => renderToolbarGroup(group, index)),
1317
+ _jsx("div", { className: "toolbar-button-group", children: _jsx(ToolbarButton, { icon: getRichTextStripFormattingIcon(), active: false, onMouseDown: handleStripFormattingClick, type: "strip-formatting" }) }, "strip-formatting"),
1318
+ ];
1319
+ return (_jsxs("div", { className: `slate-editor ${props.className && props.className}`, children: [_jsx(Slate, { editor: editor, initialValue: initialSlateValue, onChange: handleChange, children: _jsxs("div", { className: cn("relative", fieldBoxClassName, fieldFocusWithinClassName, "focus-shadow"), children: [!readOnly && (_jsx("div", { role: "toolbar", "aria-label": "Formatting", "data-testid": "rte-toolbar", className: "rte-toolbar border-neutral-grey-15 bg-neutral-grey-5 flex flex-wrap items-center gap-1 rounded-t-[5px] border-b p-1", children: toolbarSegments.map((segment, index) => (_jsxs(Fragment, { children: [index > 0 && (_jsx("span", { "aria-hidden": "true", className: "toolbar-separator" })), segment] }, segment.key))) })), _jsx(Editable, { "aria-label": props.ariaLabel || "Rich text", "data-testid": "rte-editable", className: cn("min-h-10 px-3 py-2.5 focus:outline-none", "slate-editable",
1320
+ // MainLayout disables text selection app-wide (select-none);
1321
+ // contenteditable content must re-enable it for mouse selection
1322
+ // (double-click word select, drag select) to work.
1323
+ "select-text"), decorate: decorate, readOnly: readOnly, spellCheck: false, renderPlaceholder: renderPlaceholder, onFocus: handleFocus, onBlur: handleBlur, onBeforeInputCapture: markUserInput, onInputCapture: markUserInput, onPasteCapture: markUserInput, onMouseDown: handleMouseDown, onClick: handleClick, onMouseMove: handleMouseMove, onDragStart: () => {
1324
+ // Moving selected content is a native drag-and-drop operation,
1325
+ // not a character-selection gesture.
1326
+ pendingCharacterDragRef.current = null;
1327
+ pendingSelectionCollapseRef.current = null;
1328
+ }, onMouseUp: handleMouseUp, onDoubleClick: handleDoubleClick, onKeyUp: handleKeyUp, onContextMenu: onContextMenu, onKeyDown: handleKeyDown, renderElement: renderElement, renderLeaf: renderLeaf }), _jsx(ChangedTextOutline, { getChangeHighlight: getChangeHighlight })] }) }), showLinkDialog && selectedLink && (_jsx(LinkEditorDialog, { linkValue: selectedLink, onOk: handleLinkUpdate, onCancel: () => {
1130
1329
  setShowLinkDialog(false);
1131
1330
  setSelectedLink(null);
1132
1331
  setLinkDialogCallback(null);