@parhelia/core 0.3.12831 → 0.3.12833

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 (600) 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/editor/agent-changes/agentChangeTargets.d.ts +58 -0
  23. package/dist/editor/agent-changes/agentChangeTargets.js +180 -0
  24. package/dist/editor/agent-changes/agentChangeTargets.js.map +1 -0
  25. package/dist/editor/agent-changes/agentChangeTextHighlight.d.ts +101 -0
  26. package/dist/editor/agent-changes/agentChangeTextHighlight.js +167 -0
  27. package/dist/editor/agent-changes/agentChangeTextHighlight.js.map +1 -0
  28. package/dist/editor/ai/AgentImagePreview.d.ts +13 -0
  29. package/dist/editor/ai/AgentImagePreview.js +41 -0
  30. package/dist/editor/ai/AgentImagePreview.js.map +1 -0
  31. package/dist/editor/ai/activityRowNavigation.d.ts +28 -0
  32. package/dist/editor/ai/activityRowNavigation.js +53 -0
  33. package/dist/editor/ai/activityRowNavigation.js.map +1 -0
  34. package/dist/editor/ai/terminal/activeReasoningModel.d.ts +9 -0
  35. package/dist/editor/ai/terminal/activeReasoningModel.js +20 -0
  36. package/dist/editor/ai/terminal/activeReasoningModel.js.map +1 -0
  37. package/dist/editor/ai/terminal/agentDurations.d.ts +27 -0
  38. package/dist/editor/ai/terminal/agentDurations.js +89 -0
  39. package/dist/editor/ai/terminal/agentDurations.js.map +1 -0
  40. package/dist/editor/ai/terminal/agentTurnTiming.d.ts +35 -0
  41. package/dist/editor/ai/terminal/agentTurnTiming.js +128 -0
  42. package/dist/editor/ai/terminal/agentTurnTiming.js.map +1 -0
  43. package/dist/editor/ai/terminal/components/AgentMemorySettingsSection.d.ts +9 -0
  44. package/dist/editor/ai/terminal/components/AgentMemorySettingsSection.js +75 -0
  45. package/dist/editor/ai/terminal/components/AgentMemorySettingsSection.js.map +1 -0
  46. package/dist/editor/ai/terminal/components/AgentProfileRecovery.d.ts +10 -0
  47. package/dist/editor/ai/terminal/components/AgentProfileRecovery.js +12 -0
  48. package/dist/editor/ai/terminal/components/AgentProfileRecovery.js.map +1 -0
  49. package/dist/editor/ai/terminal/components/CreateItemToolCallContent.d.ts +3 -0
  50. package/dist/editor/ai/terminal/components/CreateItemToolCallContent.js +47 -0
  51. package/dist/editor/ai/terminal/components/CreateItemToolCallContent.js.map +1 -0
  52. package/dist/editor/ai/terminal/components/ResponseTurnDuration.d.ts +15 -0
  53. package/dist/editor/ai/terminal/components/ResponseTurnDuration.js +62 -0
  54. package/dist/editor/ai/terminal/components/ResponseTurnDuration.js.map +1 -0
  55. package/dist/editor/ai/terminal/components/ToolCallDiagnosticsPanel.d.ts +6 -0
  56. package/dist/editor/ai/terminal/components/ToolCallDiagnosticsPanel.js +61 -0
  57. package/dist/editor/ai/terminal/components/ToolCallDiagnosticsPanel.js.map +1 -0
  58. package/dist/editor/ai/terminal/components/toolCallResultJson.d.ts +1 -0
  59. package/dist/editor/ai/terminal/components/toolCallResultJson.js +46 -0
  60. package/dist/editor/ai/terminal/components/toolCallResultJson.js.map +1 -0
  61. package/dist/editor/ai/terminal/reasoningEffortLevels.d.ts +8 -0
  62. package/dist/editor/ai/terminal/reasoningEffortLevels.js +54 -0
  63. package/dist/editor/ai/terminal/reasoningEffortLevels.js.map +1 -0
  64. package/dist/editor/ai/terminal/requestUsage.d.ts +3 -0
  65. package/dist/editor/ai/terminal/requestUsage.js +22 -0
  66. package/dist/editor/ai/terminal/requestUsage.js.map +1 -0
  67. package/dist/editor/ai/terminal/toolCallDiagnostics.d.ts +34 -0
  68. package/dist/editor/ai/terminal/toolCallDiagnostics.js +218 -0
  69. package/dist/editor/ai/terminal/toolCallDiagnostics.js.map +1 -0
  70. package/dist/editor/ai/terminal/useAgentProviderWait.d.ts +18 -0
  71. package/dist/editor/ai/terminal/useAgentProviderWait.js +23 -0
  72. package/dist/editor/ai/terminal/useAgentProviderWait.js.map +1 -0
  73. package/dist/editor/ai/terminal/useAgentReasoningEffortState.d.ts +5 -0
  74. package/dist/editor/ai/terminal/useAgentReasoningEffortState.js +10 -0
  75. package/dist/editor/ai/terminal/useAgentReasoningEffortState.js.map +1 -0
  76. package/dist/editor/bridge/bridgeKeys.d.ts +5 -0
  77. package/dist/editor/bridge/bridgeKeys.js +8 -0
  78. package/dist/editor/bridge/bridgeKeys.js.map +1 -0
  79. package/dist/editor/bridge/linkDownload.d.ts +3 -0
  80. package/dist/editor/bridge/linkDownload.js +52 -0
  81. package/dist/editor/bridge/linkDownload.js.map +1 -0
  82. package/dist/editor/client/SessionsDialog.d.ts +2 -0
  83. package/dist/editor/client/SessionsDialog.js +27 -0
  84. package/dist/editor/client/SessionsDialog.js.map +1 -0
  85. package/dist/editor/client/agentLoadItemPolicy.d.ts +22 -0
  86. package/dist/editor/client/agentLoadItemPolicy.js +60 -0
  87. package/dist/editor/client/agentLoadItemPolicy.js.map +1 -0
  88. package/dist/editor/client/clipboardStorage.d.ts +10 -0
  89. package/dist/editor/client/clipboardStorage.js +57 -0
  90. package/dist/editor/client/clipboardStorage.js.map +1 -0
  91. package/dist/editor/client/hooks/useRepositoryItemRefresh.d.ts +4 -0
  92. package/dist/editor/client/hooks/useRepositoryItemRefresh.js +62 -0
  93. package/dist/editor/client/hooks/useRepositoryItemRefresh.js.map +1 -0
  94. package/dist/editor/client/liveEditState.d.ts +16 -0
  95. package/dist/editor/client/liveEditState.js +25 -0
  96. package/dist/editor/client/liveEditState.js.map +1 -0
  97. package/dist/editor/client/liveSessionState.d.ts +6 -0
  98. package/dist/editor/client/liveSessionState.js +20 -0
  99. package/dist/editor/client/liveSessionState.js.map +1 -0
  100. package/dist/editor/client/localUserEditActivity.d.ts +3 -0
  101. package/dist/editor/client/localUserEditActivity.js +12 -0
  102. package/dist/editor/client/localUserEditActivity.js.map +1 -0
  103. package/dist/editor/client/valueStore.d.ts +22 -0
  104. package/dist/editor/client/valueStore.js +29 -0
  105. package/dist/editor/client/valueStore.js.map +1 -0
  106. package/dist/editor/commands/componentClipboardCommands.d.ts +35 -0
  107. package/dist/editor/commands/componentClipboardCommands.js +271 -0
  108. package/dist/editor/commands/componentClipboardCommands.js.map +1 -0
  109. package/dist/editor/commands/componentMenuGroups.d.ts +2 -0
  110. package/dist/editor/commands/componentMenuGroups.js +43 -0
  111. package/dist/editor/commands/componentMenuGroups.js.map +1 -0
  112. package/dist/editor/commands/mediaCommands.d.ts +5 -0
  113. package/dist/editor/commands/mediaCommands.js +59 -0
  114. package/dist/editor/commands/mediaCommands.js.map +1 -0
  115. package/dist/editor/component-conversion/ComponentTypePickerDialog.d.ts +12 -0
  116. package/dist/editor/component-conversion/ComponentTypePickerDialog.js +40 -0
  117. package/dist/editor/component-conversion/ComponentTypePickerDialog.js.map +1 -0
  118. package/dist/editor/component-conversion/ConversionAiDebugButton.d.ts +17 -0
  119. package/dist/editor/component-conversion/ConversionAiDebugButton.js +80 -0
  120. package/dist/editor/component-conversion/ConversionAiDebugButton.js.map +1 -0
  121. package/dist/editor/component-conversion/ConvertComponentDialog.d.ts +28 -0
  122. package/dist/editor/component-conversion/ConvertComponentDialog.js +633 -0
  123. package/dist/editor/component-conversion/ConvertComponentDialog.js.map +1 -0
  124. package/dist/editor/component-conversion/conversionModel.d.ts +109 -0
  125. package/dist/editor/component-conversion/conversionModel.js +519 -0
  126. package/dist/editor/component-conversion/conversionModel.js.map +1 -0
  127. package/dist/editor/component-conversion/conversionService.d.ts +12 -0
  128. package/dist/editor/component-conversion/conversionService.js +16 -0
  129. package/dist/editor/component-conversion/conversionService.js.map +1 -0
  130. package/dist/editor/component-conversion/conversionTypes.d.ts +214 -0
  131. package/dist/editor/component-conversion/conversionTypes.js +2 -0
  132. package/dist/editor/component-conversion/conversionTypes.js.map +1 -0
  133. package/dist/editor/component-conversion/convertComponentsCommand.d.ts +25 -0
  134. package/dist/editor/component-conversion/convertComponentsCommand.js +196 -0
  135. package/dist/editor/component-conversion/convertComponentsCommand.js.map +1 -0
  136. package/dist/editor/componentVisualMode.d.ts +14 -0
  137. package/dist/editor/componentVisualMode.js +43 -0
  138. package/dist/editor/componentVisualMode.js.map +1 -0
  139. package/dist/editor/field-types/FieldHistoryBoundary.d.ts +7 -0
  140. package/dist/editor/field-types/FieldHistoryBoundary.js +40 -0
  141. package/dist/editor/field-types/FieldHistoryBoundary.js.map +1 -0
  142. package/dist/editor/field-types/fieldStyles.d.ts +21 -0
  143. package/dist/editor/field-types/fieldStyles.js +22 -0
  144. package/dist/editor/field-types/fieldStyles.js.map +1 -0
  145. package/dist/editor/field-types/richtext/utils/changeHighlight.d.ts +32 -0
  146. package/dist/editor/field-types/richtext/utils/changeHighlight.js +68 -0
  147. package/dist/editor/field-types/richtext/utils/changeHighlight.js.map +1 -0
  148. package/dist/editor/field-types/richtext/utils/spellCheckText.d.ts +31 -0
  149. package/dist/editor/field-types/richtext/utils/spellCheckText.js +82 -0
  150. package/dist/editor/field-types/richtext/utils/spellCheckText.js.map +1 -0
  151. package/dist/editor/field-types/useFocusedFieldInput.d.ts +13 -0
  152. package/dist/editor/field-types/useFocusedFieldInput.js +50 -0
  153. package/dist/editor/field-types/useFocusedFieldInput.js.map +1 -0
  154. package/dist/editor/field-types/useFormFieldSelectionRange.d.ts +43 -0
  155. package/dist/editor/field-types/useFormFieldSelectionRange.js +149 -0
  156. package/dist/editor/field-types/useFormFieldSelectionRange.js.map +1 -0
  157. package/dist/editor/find-replace/FindReplacePanel.d.ts +11 -0
  158. package/dist/editor/find-replace/FindReplacePanel.js +311 -0
  159. package/dist/editor/find-replace/FindReplacePanel.js.map +1 -0
  160. package/dist/editor/find-replace/findReplaceCommand.d.ts +8 -0
  161. package/dist/editor/find-replace/findReplaceCommand.js +25 -0
  162. package/dist/editor/find-replace/findReplaceCommand.js.map +1 -0
  163. package/dist/editor/find-replace/findReplaceMatches.d.ts +42 -0
  164. package/dist/editor/find-replace/findReplaceMatches.js +66 -0
  165. package/dist/editor/find-replace/findReplaceMatches.js.map +1 -0
  166. package/dist/editor/find-replace/findReplaceStore.d.ts +30 -0
  167. package/dist/editor/find-replace/findReplaceStore.js +61 -0
  168. package/dist/editor/find-replace/findReplaceStore.js.map +1 -0
  169. package/dist/editor/find-replace/findReplaceTargets.d.ts +51 -0
  170. package/dist/editor/find-replace/findReplaceTargets.js +110 -0
  171. package/dist/editor/find-replace/findReplaceTargets.js.map +1 -0
  172. package/dist/editor/find-replace/findReplaceText.d.ts +50 -0
  173. package/dist/editor/find-replace/findReplaceText.js +189 -0
  174. package/dist/editor/find-replace/findReplaceText.js.map +1 -0
  175. package/dist/editor/itemContextMenuGroups.d.ts +16 -0
  176. package/dist/editor/itemContextMenuGroups.js +57 -0
  177. package/dist/editor/itemContextMenuGroups.js.map +1 -0
  178. package/dist/editor/media-selector/MediaDetailsView.d.ts +14 -0
  179. package/dist/editor/media-selector/MediaDetailsView.js +152 -0
  180. package/dist/editor/media-selector/MediaDetailsView.js.map +1 -0
  181. package/dist/editor/media-selector/UploadMediaFileDialog.d.ts +5 -0
  182. package/dist/editor/media-selector/UploadMediaFileDialog.js +14 -0
  183. package/dist/editor/media-selector/UploadMediaFileDialog.js.map +1 -0
  184. package/dist/editor/media-selector/useMediaFolderDrag.d.ts +26 -0
  185. package/dist/editor/media-selector/useMediaFolderDrag.js +153 -0
  186. package/dist/editor/media-selector/useMediaFolderDrag.js.map +1 -0
  187. package/dist/editor/menubar/OpenPublishedPageButton.d.ts +1 -0
  188. package/dist/editor/menubar/OpenPublishedPageButton.js +22 -0
  189. package/dist/editor/menubar/OpenPublishedPageButton.js.map +1 -0
  190. package/dist/editor/menubar/toolbar-sections/CommentsToggleControl.d.ts +11 -0
  191. package/dist/editor/menubar/toolbar-sections/CommentsToggleControl.js +65 -0
  192. package/dist/editor/menubar/toolbar-sections/CommentsToggleControl.js.map +1 -0
  193. package/dist/editor/menubar/toolbar-sections/FindReplaceControls.d.ts +6 -0
  194. package/dist/editor/menubar/toolbar-sections/FindReplaceControls.js +31 -0
  195. package/dist/editor/menubar/toolbar-sections/FindReplaceControls.js.map +1 -0
  196. package/dist/editor/menubar/toolbar-sections/SpellCheckToggleControl.d.ts +5 -0
  197. package/dist/editor/menubar/toolbar-sections/SpellCheckToggleControl.js +16 -0
  198. package/dist/editor/menubar/toolbar-sections/SpellCheckToggleControl.js.map +1 -0
  199. package/dist/editor/mobileBottomPanel.d.ts +40 -0
  200. package/dist/editor/mobileBottomPanel.js +63 -0
  201. package/dist/editor/mobileBottomPanel.js.map +1 -0
  202. package/dist/editor/page-editor-chrome/AgentChangeHighlightings.d.ts +17 -0
  203. package/dist/editor/page-editor-chrome/AgentChangeHighlightings.js +33 -0
  204. package/dist/editor/page-editor-chrome/AgentChangeHighlightings.js.map +1 -0
  205. package/dist/editor/page-editor-chrome/BridgePasteCleanupOverlay.d.ts +6 -0
  206. package/dist/editor/page-editor-chrome/BridgePasteCleanupOverlay.js +100 -0
  207. package/dist/editor/page-editor-chrome/BridgePasteCleanupOverlay.js.map +1 -0
  208. package/dist/editor/page-editor-chrome/CanvasOverviewRulerBinding.d.ts +9 -0
  209. package/dist/editor/page-editor-chrome/CanvasOverviewRulerBinding.js +32 -0
  210. package/dist/editor/page-editor-chrome/CanvasOverviewRulerBinding.js.map +1 -0
  211. package/dist/editor/page-editor-chrome/CommentTargetPickerCanvasLayer.d.ts +14 -0
  212. package/dist/editor/page-editor-chrome/CommentTargetPickerCanvasLayer.js +110 -0
  213. package/dist/editor/page-editor-chrome/CommentTargetPickerCanvasLayer.js.map +1 -0
  214. package/dist/editor/page-editor-chrome/ConversionIndicators.d.ts +8 -0
  215. package/dist/editor/page-editor-chrome/ConversionIndicators.js +75 -0
  216. package/dist/editor/page-editor-chrome/ConversionIndicators.js.map +1 -0
  217. package/dist/editor/page-editor-chrome/DiffHighlightOverlay.d.ts +29 -0
  218. package/dist/editor/page-editor-chrome/DiffHighlightOverlay.js +295 -0
  219. package/dist/editor/page-editor-chrome/DiffHighlightOverlay.js.map +1 -0
  220. package/dist/editor/page-editor-chrome/FeedbackLeaderCanvasSegment.d.ts +15 -0
  221. package/dist/editor/page-editor-chrome/FeedbackLeaderCanvasSegment.js +31 -0
  222. package/dist/editor/page-editor-chrome/FeedbackLeaderCanvasSegment.js.map +1 -0
  223. package/dist/editor/page-editor-chrome/FindReplaceHighlightings.d.ts +11 -0
  224. package/dist/editor/page-editor-chrome/FindReplaceHighlightings.js +120 -0
  225. package/dist/editor/page-editor-chrome/FindReplaceHighlightings.js.map +1 -0
  226. package/dist/editor/page-editor-chrome/SpellCheckHighlightings.d.ts +12 -0
  227. package/dist/editor/page-editor-chrome/SpellCheckHighlightings.js +197 -0
  228. package/dist/editor/page-editor-chrome/SpellCheckHighlightings.js.map +1 -0
  229. package/dist/editor/page-editor-chrome/ValidationRulerMarks.d.ts +11 -0
  230. package/dist/editor/page-editor-chrome/ValidationRulerMarks.js +56 -0
  231. package/dist/editor/page-editor-chrome/ValidationRulerMarks.js.map +1 -0
  232. package/dist/editor/page-editor-chrome/diffRulerSegments.d.ts +18 -0
  233. package/dist/editor/page-editor-chrome/diffRulerSegments.js +37 -0
  234. package/dist/editor/page-editor-chrome/diffRulerSegments.js.map +1 -0
  235. package/dist/editor/page-editor-chrome/overlay/feedbackAnchorMeasurements.d.ts +44 -0
  236. package/dist/editor/page-editor-chrome/overlay/feedbackAnchorMeasurements.js +89 -0
  237. package/dist/editor/page-editor-chrome/overlay/feedbackAnchorMeasurements.js.map +1 -0
  238. package/dist/editor/page-editor-chrome/overlay/feedbackAnchorStore.d.ts +17 -0
  239. package/dist/editor/page-editor-chrome/overlay/feedbackAnchorStore.js +53 -0
  240. package/dist/editor/page-editor-chrome/overlay/feedbackAnchorStore.js.map +1 -0
  241. package/dist/editor/page-editor-chrome/overlay/useBridgeTextRangeRequest.d.ts +11 -0
  242. package/dist/editor/page-editor-chrome/overlay/useBridgeTextRangeRequest.js +84 -0
  243. package/dist/editor/page-editor-chrome/overlay/useBridgeTextRangeRequest.js.map +1 -0
  244. package/dist/editor/page-editor-chrome/overlay/useCommentAnchorMeasurements.d.ts +34 -0
  245. package/dist/editor/page-editor-chrome/overlay/useCommentAnchorMeasurements.js +229 -0
  246. package/dist/editor/page-editor-chrome/overlay/useCommentAnchorMeasurements.js.map +1 -0
  247. package/dist/editor/page-editor-chrome/overlay/useOverlayViewportRight.d.ts +9 -0
  248. package/dist/editor/page-editor-chrome/overlay/useOverlayViewportRight.js +34 -0
  249. package/dist/editor/page-editor-chrome/overlay/useOverlayViewportRight.js.map +1 -0
  250. package/dist/editor/page-editor-chrome/overlay/useSuggestionAnchorMeasurements.d.ts +49 -0
  251. package/dist/editor/page-editor-chrome/overlay/useSuggestionAnchorMeasurements.js +241 -0
  252. package/dist/editor/page-editor-chrome/overlay/useSuggestionAnchorMeasurements.js.map +1 -0
  253. package/dist/editor/page-viewer/CanvasOverviewRuler.d.ts +11 -0
  254. package/dist/editor/page-viewer/CanvasOverviewRuler.js +65 -0
  255. package/dist/editor/page-viewer/CanvasOverviewRuler.js.map +1 -0
  256. package/dist/editor/page-viewer/DynamicRenderingsBar.d.ts +23 -0
  257. package/dist/editor/page-viewer/DynamicRenderingsBar.js +28 -0
  258. package/dist/editor/page-viewer/DynamicRenderingsBar.js.map +1 -0
  259. package/dist/editor/page-viewer/DynamicRenderingsStrip.d.ts +18 -0
  260. package/dist/editor/page-viewer/DynamicRenderingsStrip.js +29 -0
  261. package/dist/editor/page-viewer/DynamicRenderingsStrip.js.map +1 -0
  262. package/dist/editor/page-viewer/FeedbackMargin.d.ts +57 -0
  263. package/dist/editor/page-viewer/FeedbackMargin.js +377 -0
  264. package/dist/editor/page-viewer/FeedbackMargin.js.map +1 -0
  265. package/dist/editor/page-viewer/FeedbackMarginController.d.ts +76 -0
  266. package/dist/editor/page-viewer/FeedbackMarginController.js +241 -0
  267. package/dist/editor/page-viewer/FeedbackMarginController.js.map +1 -0
  268. package/dist/editor/page-viewer/FeedbackMarginMarker.d.ts +16 -0
  269. package/dist/editor/page-viewer/FeedbackMarginMarker.js +24 -0
  270. package/dist/editor/page-viewer/FeedbackMarginMarker.js.map +1 -0
  271. package/dist/editor/page-viewer/FeedbackMarginResizeHandle.d.ts +23 -0
  272. package/dist/editor/page-viewer/FeedbackMarginResizeHandle.js +105 -0
  273. package/dist/editor/page-viewer/FeedbackMarginResizeHandle.js.map +1 -0
  274. package/dist/editor/page-viewer/InteractivePreviewBar.d.ts +24 -0
  275. package/dist/editor/page-viewer/InteractivePreviewBar.js +31 -0
  276. package/dist/editor/page-viewer/InteractivePreviewBar.js.map +1 -0
  277. package/dist/editor/page-viewer/MobileCommentsPanel.d.ts +16 -0
  278. package/dist/editor/page-viewer/MobileCommentsPanel.js +112 -0
  279. package/dist/editor/page-viewer/MobileCommentsPanel.js.map +1 -0
  280. package/dist/editor/page-viewer/PreviewModeNotice.d.ts +7 -0
  281. package/dist/editor/page-viewer/PreviewModeNotice.js +19 -0
  282. package/dist/editor/page-viewer/PreviewModeNotice.js.map +1 -0
  283. package/dist/editor/page-viewer/RenderingAiCheck.d.ts +18 -0
  284. package/dist/editor/page-viewer/RenderingAiCheck.js +45 -0
  285. package/dist/editor/page-viewer/RenderingAiCheck.js.map +1 -0
  286. package/dist/editor/page-viewer/RenderingApprovalDialog.d.ts +32 -0
  287. package/dist/editor/page-viewer/RenderingApprovalDialog.js +191 -0
  288. package/dist/editor/page-viewer/RenderingApprovalDialog.js.map +1 -0
  289. package/dist/editor/page-viewer/SealedClientCodePreview.d.ts +17 -0
  290. package/dist/editor/page-viewer/SealedClientCodePreview.js +38 -0
  291. package/dist/editor/page-viewer/SealedClientCodePreview.js.map +1 -0
  292. package/dist/editor/page-viewer/canvasFrameNavigation.d.ts +18 -0
  293. package/dist/editor/page-viewer/canvasFrameNavigation.js +36 -0
  294. package/dist/editor/page-viewer/canvasFrameNavigation.js.map +1 -0
  295. package/dist/editor/page-viewer/canvasLoadSettling.d.ts +42 -0
  296. package/dist/editor/page-viewer/canvasLoadSettling.js +46 -0
  297. package/dist/editor/page-viewer/canvasLoadSettling.js.map +1 -0
  298. package/dist/editor/page-viewer/canvasScrollHandoff.d.ts +34 -0
  299. package/dist/editor/page-viewer/canvasScrollHandoff.js +55 -0
  300. package/dist/editor/page-viewer/canvasScrollHandoff.js.map +1 -0
  301. package/dist/editor/page-viewer/compareFrameWidth.d.ts +8 -0
  302. package/dist/editor/page-viewer/compareFrameWidth.js +25 -0
  303. package/dist/editor/page-viewer/compareFrameWidth.js.map +1 -0
  304. package/dist/editor/page-viewer/feedbackMarginLayout.d.ts +119 -0
  305. package/dist/editor/page-viewer/feedbackMarginLayout.js +155 -0
  306. package/dist/editor/page-viewer/feedbackMarginLayout.js.map +1 -0
  307. package/dist/editor/page-viewer/feedbackMarginSources.d.ts +36 -0
  308. package/dist/editor/page-viewer/feedbackMarginSources.js +196 -0
  309. package/dist/editor/page-viewer/feedbackMarginSources.js.map +1 -0
  310. package/dist/editor/page-viewer/feedbackMarginWidth.d.ts +43 -0
  311. package/dist/editor/page-viewer/feedbackMarginWidth.js +107 -0
  312. package/dist/editor/page-viewer/feedbackMarginWidth.js.map +1 -0
  313. package/dist/editor/page-viewer/interactivePreview.d.ts +168 -0
  314. package/dist/editor/page-viewer/interactivePreview.js +344 -0
  315. package/dist/editor/page-viewer/interactivePreview.js.map +1 -0
  316. package/dist/editor/page-viewer/minimapViewport.d.ts +2 -0
  317. package/dist/editor/page-viewer/minimapViewport.js +34 -0
  318. package/dist/editor/page-viewer/minimapViewport.js.map +1 -0
  319. package/dist/editor/page-viewer/openPageItems.d.ts +29 -0
  320. package/dist/editor/page-viewer/openPageItems.js +73 -0
  321. package/dist/editor/page-viewer/openPageItems.js.map +1 -0
  322. package/dist/editor/page-viewer/overviewRuler.d.ts +128 -0
  323. package/dist/editor/page-viewer/overviewRuler.js +226 -0
  324. package/dist/editor/page-viewer/overviewRuler.js.map +1 -0
  325. package/dist/editor/page-viewer/previewEditAttempt.d.ts +31 -0
  326. package/dist/editor/page-viewer/previewEditAttempt.js +68 -0
  327. package/dist/editor/page-viewer/previewEditAttempt.js.map +1 -0
  328. package/dist/editor/page-viewer/renderingApproval.d.ts +59 -0
  329. package/dist/editor/page-viewer/renderingApproval.js +186 -0
  330. package/dist/editor/page-viewer/renderingApproval.js.map +1 -0
  331. package/dist/editor/page-viewer/renderingChanges.d.ts +29 -0
  332. package/dist/editor/page-viewer/renderingChanges.js +40 -0
  333. package/dist/editor/page-viewer/renderingChanges.js.map +1 -0
  334. package/dist/editor/page-viewer/scrollIntoViewTextRanges.d.ts +23 -0
  335. package/dist/editor/page-viewer/scrollIntoViewTextRanges.js +26 -0
  336. package/dist/editor/page-viewer/scrollIntoViewTextRanges.js.map +1 -0
  337. package/dist/editor/page-viewer/useInteractivePreview.d.ts +77 -0
  338. package/dist/editor/page-viewer/useInteractivePreview.js +210 -0
  339. package/dist/editor/page-viewer/useInteractivePreview.js.map +1 -0
  340. package/dist/editor/reviews/CollapsibleText.d.ts +13 -0
  341. package/dist/editor/reviews/CollapsibleText.js +41 -0
  342. package/dist/editor/reviews/CollapsibleText.js.map +1 -0
  343. package/dist/editor/reviews/CommentImageAttachments.d.ts +12 -0
  344. package/dist/editor/reviews/CommentImageAttachments.js +19 -0
  345. package/dist/editor/reviews/CommentImageAttachments.js.map +1 -0
  346. package/dist/editor/reviews/CommentQuote.d.ts +13 -0
  347. package/dist/editor/reviews/CommentQuote.js +35 -0
  348. package/dist/editor/reviews/CommentQuote.js.map +1 -0
  349. package/dist/editor/reviews/CommentTargetOutline.d.ts +13 -0
  350. package/dist/editor/reviews/CommentTargetOutline.js +21 -0
  351. package/dist/editor/reviews/CommentTargetOutline.js.map +1 -0
  352. package/dist/editor/reviews/CommentTargetPickerDomLayer.d.ts +7 -0
  353. package/dist/editor/reviews/CommentTargetPickerDomLayer.js +117 -0
  354. package/dist/editor/reviews/CommentTargetPickerDomLayer.js.map +1 -0
  355. package/dist/editor/reviews/CommentThreadAgentLink.d.ts +28 -0
  356. package/dist/editor/reviews/CommentThreadAgentLink.js +37 -0
  357. package/dist/editor/reviews/CommentThreadAgentLink.js.map +1 -0
  358. package/dist/editor/reviews/CommentThreadCard.d.ts +34 -0
  359. package/dist/editor/reviews/CommentThreadCard.js +156 -0
  360. package/dist/editor/reviews/CommentThreadCard.js.map +1 -0
  361. package/dist/editor/reviews/SuggestionThreadCard.d.ts +19 -0
  362. package/dist/editor/reviews/SuggestionThreadCard.js +25 -0
  363. package/dist/editor/reviews/SuggestionThreadCard.js.map +1 -0
  364. package/dist/editor/reviews/addCommentOnTarget.d.ts +22 -0
  365. package/dist/editor/reviews/addCommentOnTarget.js +32 -0
  366. package/dist/editor/reviews/addCommentOnTarget.js.map +1 -0
  367. package/dist/editor/reviews/balloonLayout.d.ts +51 -0
  368. package/dist/editor/reviews/balloonLayout.js +101 -0
  369. package/dist/editor/reviews/balloonLayout.js.map +1 -0
  370. package/dist/editor/reviews/commentAgentAttachments.d.ts +5 -0
  371. package/dist/editor/reviews/commentAgentAttachments.js +51 -0
  372. package/dist/editor/reviews/commentAgentAttachments.js.map +1 -0
  373. package/dist/editor/reviews/commentImages.d.ts +48 -0
  374. package/dist/editor/reviews/commentImages.js +128 -0
  375. package/dist/editor/reviews/commentImages.js.map +1 -0
  376. package/dist/editor/reviews/commentTargetPicker.d.ts +114 -0
  377. package/dist/editor/reviews/commentTargetPicker.js +153 -0
  378. package/dist/editor/reviews/commentTargetPicker.js.map +1 -0
  379. package/dist/editor/reviews/feedbackBalloonDate.d.ts +8 -0
  380. package/dist/editor/reviews/feedbackBalloonDate.js +22 -0
  381. package/dist/editor/reviews/feedbackBalloonDate.js.map +1 -0
  382. package/dist/editor/reviews/feedbackDrafts.d.ts +49 -0
  383. package/dist/editor/reviews/feedbackDrafts.js +74 -0
  384. package/dist/editor/reviews/feedbackDrafts.js.map +1 -0
  385. package/dist/editor/reviews/feedbackHoverState.d.ts +18 -0
  386. package/dist/editor/reviews/feedbackHoverState.js +35 -0
  387. package/dist/editor/reviews/feedbackHoverState.js.map +1 -0
  388. package/dist/editor/reviews/feedbackPersonFilter.d.ts +3 -0
  389. package/dist/editor/reviews/feedbackPersonFilter.js +32 -0
  390. package/dist/editor/reviews/feedbackPersonFilter.js.map +1 -0
  391. package/dist/editor/reviews/feedbackThreadSelection.d.ts +10 -0
  392. package/dist/editor/reviews/feedbackThreadSelection.js +31 -0
  393. package/dist/editor/reviews/feedbackThreadSelection.js.map +1 -0
  394. package/dist/editor/reviews/feedbackThreads.d.ts +50 -0
  395. package/dist/editor/reviews/feedbackThreads.js +135 -0
  396. package/dist/editor/reviews/feedbackThreads.js.map +1 -0
  397. package/dist/editor/reviews/feedbackWheelForwarding.d.ts +34 -0
  398. package/dist/editor/reviews/feedbackWheelForwarding.js +108 -0
  399. package/dist/editor/reviews/feedbackWheelForwarding.js.map +1 -0
  400. package/dist/editor/reviews/reviewUrlScope.d.ts +23 -0
  401. package/dist/editor/reviews/reviewUrlScope.js +86 -0
  402. package/dist/editor/reviews/reviewUrlScope.js.map +1 -0
  403. package/dist/editor/reviews/scrollWithin.d.ts +29 -0
  404. package/dist/editor/reviews/scrollWithin.js +87 -0
  405. package/dist/editor/reviews/scrollWithin.js.map +1 -0
  406. package/dist/editor/reviews/subtreeFeedback.d.ts +57 -0
  407. package/dist/editor/reviews/subtreeFeedback.js +137 -0
  408. package/dist/editor/reviews/subtreeFeedback.js.map +1 -0
  409. package/dist/editor/reviews/useCommentImagePaste.d.ts +80 -0
  410. package/dist/editor/reviews/useCommentImagePaste.js +252 -0
  411. package/dist/editor/reviews/useCommentImagePaste.js.map +1 -0
  412. package/dist/editor/reviews/useFeedbackThreads.d.ts +35 -0
  413. package/dist/editor/reviews/useFeedbackThreads.js +137 -0
  414. package/dist/editor/reviews/useFeedbackThreads.js.map +1 -0
  415. package/dist/editor/reviews/useMeasuredHeights.d.ts +25 -0
  416. package/dist/editor/reviews/useMeasuredHeights.js +176 -0
  417. package/dist/editor/reviews/useMeasuredHeights.js.map +1 -0
  418. package/dist/editor/reviews/usePendingFeedbackFocus.d.ts +7 -0
  419. package/dist/editor/reviews/usePendingFeedbackFocus.js +42 -0
  420. package/dist/editor/reviews/usePendingFeedbackFocus.js.map +1 -0
  421. package/dist/editor/services/mcpAccessService.d.ts +93 -0
  422. package/dist/editor/services/mcpAccessService.js +41 -0
  423. package/dist/editor/services/mcpAccessService.js.map +1 -0
  424. package/dist/editor/services/migrationService.d.ts +31 -0
  425. package/dist/editor/services/migrationService.js +22 -0
  426. package/dist/editor/services/migrationService.js.map +1 -0
  427. package/dist/editor/services/previewTokenService.d.ts +14 -0
  428. package/dist/editor/services/previewTokenService.js +34 -0
  429. package/dist/editor/services/previewTokenService.js.map +1 -0
  430. package/dist/editor/services/publicSiteService.d.ts +40 -0
  431. package/dist/editor/services/publicSiteService.js +5 -0
  432. package/dist/editor/services/publicSiteService.js.map +1 -0
  433. package/dist/editor/services/renderingsService.d.ts +117 -0
  434. package/dist/editor/services/renderingsService.js +245 -0
  435. package/dist/editor/services/renderingsService.js.map +1 -0
  436. package/dist/editor/services/spellCheckService.d.ts +13 -0
  437. package/dist/editor/services/spellCheckService.js +33 -0
  438. package/dist/editor/services/spellCheckService.js.map +1 -0
  439. package/dist/editor/settings/MigrationJournalCard.d.ts +12 -0
  440. package/dist/editor/settings/MigrationJournalCard.js +114 -0
  441. package/dist/editor/settings/MigrationJournalCard.js.map +1 -0
  442. package/dist/editor/settings/panels/McpAccessPanel.d.ts +7 -0
  443. package/dist/editor/settings/panels/McpAccessPanel.js +95 -0
  444. package/dist/editor/settings/panels/McpAccessPanel.js.map +1 -0
  445. package/dist/editor/settings/panels/McpAccessSettingsView.d.ts +8 -0
  446. package/dist/editor/settings/panels/McpAccessSettingsView.js +221 -0
  447. package/dist/editor/settings/panels/McpAccessSettingsView.js.map +1 -0
  448. package/dist/editor/settings/panels/PublicSiteEntryDialog.d.ts +8 -0
  449. package/dist/editor/settings/panels/PublicSiteEntryDialog.js +113 -0
  450. package/dist/editor/settings/panels/PublicSiteEntryDialog.js.map +1 -0
  451. package/dist/editor/settings/panels/PublicSitesPanel.d.ts +1 -0
  452. package/dist/editor/settings/panels/PublicSitesPanel.js +153 -0
  453. package/dist/editor/settings/panels/PublicSitesPanel.js.map +1 -0
  454. package/dist/editor/settings/panels/SpellCheckPanel.d.ts +8 -0
  455. package/dist/editor/settings/panels/SpellCheckPanel.js +253 -0
  456. package/dist/editor/settings/panels/SpellCheckPanel.js.map +1 -0
  457. package/dist/editor/settings/panels/publicSiteHelpers.d.ts +6 -0
  458. package/dist/editor/settings/panels/publicSiteHelpers.js +30 -0
  459. package/dist/editor/settings/panels/publicSiteHelpers.js.map +1 -0
  460. package/dist/editor/sidebar/FeedbackSidebar.d.ts +7 -0
  461. package/dist/editor/sidebar/FeedbackSidebar.js +300 -0
  462. package/dist/editor/sidebar/FeedbackSidebar.js.map +1 -0
  463. package/dist/editor/sidebar/OperationDetailsContent.d.ts +14 -0
  464. package/dist/editor/sidebar/OperationDetailsContent.js +571 -0
  465. package/dist/editor/sidebar/OperationDetailsContent.js.map +1 -0
  466. package/dist/editor/sidebar/liveComponentThumbnails.d.ts +66 -0
  467. package/dist/editor/sidebar/liveComponentThumbnails.js +225 -0
  468. package/dist/editor/sidebar/liveComponentThumbnails.js.map +1 -0
  469. package/dist/editor/spellcheck/canvasSpellCheckContextMenu.d.ts +30 -0
  470. package/dist/editor/spellcheck/canvasSpellCheckContextMenu.js +69 -0
  471. package/dist/editor/spellcheck/canvasSpellCheckContextMenu.js.map +1 -0
  472. package/dist/editor/spellcheck/htmlSpellDocument.d.ts +60 -0
  473. package/dist/editor/spellcheck/htmlSpellDocument.js +181 -0
  474. package/dist/editor/spellcheck/htmlSpellDocument.js.map +1 -0
  475. package/dist/editor/spellcheck/htmlSpellTokenizer.d.ts +45 -0
  476. package/dist/editor/spellcheck/htmlSpellTokenizer.js +277 -0
  477. package/dist/editor/spellcheck/htmlSpellTokenizer.js.map +1 -0
  478. package/dist/editor/spellcheck/replacementGuard.d.ts +27 -0
  479. package/dist/editor/spellcheck/replacementGuard.js +29 -0
  480. package/dist/editor/spellcheck/replacementGuard.js.map +1 -0
  481. package/dist/editor/spellcheck/spellCheckCanvasStore.d.ts +17 -0
  482. package/dist/editor/spellcheck/spellCheckCanvasStore.js +37 -0
  483. package/dist/editor/spellcheck/spellCheckCanvasStore.js.map +1 -0
  484. package/dist/editor/spellcheck/spellCheckCanvasTargets.d.ts +71 -0
  485. package/dist/editor/spellcheck/spellCheckCanvasTargets.js +126 -0
  486. package/dist/editor/spellcheck/spellCheckCanvasTargets.js.map +1 -0
  487. package/dist/editor/spellcheck/spellCheckClient.d.ts +66 -0
  488. package/dist/editor/spellcheck/spellCheckClient.js +0 -0
  489. package/dist/editor/spellcheck/spellCheckClient.js.map +1 -0
  490. package/dist/editor/spellcheck/spellCheckContextMenu.d.ts +52 -0
  491. package/dist/editor/spellcheck/spellCheckContextMenu.js +120 -0
  492. package/dist/editor/spellcheck/spellCheckContextMenu.js.map +1 -0
  493. package/dist/editor/spellcheck/spellCheckReplace.d.ts +8 -0
  494. package/dist/editor/spellcheck/spellCheckReplace.js +20 -0
  495. package/dist/editor/spellcheck/spellCheckReplace.js.map +1 -0
  496. package/dist/editor/spellcheck/spellCheckStyles.d.ts +11 -0
  497. package/dist/editor/spellcheck/spellCheckStyles.js +12 -0
  498. package/dist/editor/spellcheck/spellCheckStyles.js.map +1 -0
  499. package/dist/editor/spellcheck/spellCheckTypes.d.ts +94 -0
  500. package/dist/editor/spellcheck/spellCheckTypes.js +2 -0
  501. package/dist/editor/spellcheck/spellCheckTypes.js.map +1 -0
  502. package/dist/editor/spellcheck/textMarkHitTest.d.ts +14 -0
  503. package/dist/editor/spellcheck/textMarkHitTest.js +39 -0
  504. package/dist/editor/spellcheck/textMarkHitTest.js.map +1 -0
  505. package/dist/editor/spellcheck/useSpellCheck.d.ts +16 -0
  506. package/dist/editor/spellcheck/useSpellCheck.js +57 -0
  507. package/dist/editor/spellcheck/useSpellCheck.js.map +1 -0
  508. package/dist/editor/ui/DynamicRenderingsPublishWarning.d.ts +14 -0
  509. package/dist/editor/ui/DynamicRenderingsPublishWarning.js +40 -0
  510. package/dist/editor/ui/DynamicRenderingsPublishWarning.js.map +1 -0
  511. package/dist/editor/ui/ParheliaMark.d.ts +15 -0
  512. package/dist/editor/ui/ParheliaMark.js +12 -0
  513. package/dist/editor/ui/ParheliaMark.js.map +1 -0
  514. package/dist/editor/ui/PublishReadinessSummary.d.ts +12 -0
  515. package/dist/editor/ui/PublishReadinessSummary.js +34 -0
  516. package/dist/editor/ui/PublishReadinessSummary.js.map +1 -0
  517. package/dist/editor/ui/RootItemPicker.d.ts +18 -0
  518. package/dist/editor/ui/RootItemPicker.js +112 -0
  519. package/dist/editor/ui/RootItemPicker.js.map +1 -0
  520. package/dist/editor/ui/publishReadiness.d.ts +98 -0
  521. package/dist/editor/ui/publishReadiness.js +307 -0
  522. package/dist/editor/ui/publishReadiness.js.map +1 -0
  523. package/dist/editor/ui/usePublishingItem.d.ts +8 -0
  524. package/dist/editor/ui/usePublishingItem.js +47 -0
  525. package/dist/editor/ui/usePublishingItem.js.map +1 -0
  526. package/dist/editor/undoEligibility.d.ts +2 -0
  527. package/dist/editor/undoEligibility.js +8 -0
  528. package/dist/editor/undoEligibility.js.map +1 -0
  529. package/dist/editor/utils/dataTransferImages.d.ts +7 -0
  530. package/dist/editor/utils/dataTransferImages.js +43 -0
  531. package/dist/editor/utils/dataTransferImages.js.map +1 -0
  532. package/dist/editor/utils/linkDisplay.d.ts +12 -0
  533. package/dist/editor/utils/linkDisplay.js +23 -0
  534. package/dist/editor/utils/linkDisplay.js.map +1 -0
  535. package/dist/editor/validation/ValidationIssuesPopover.d.ts +39 -0
  536. package/dist/editor/validation/ValidationIssuesPopover.js +51 -0
  537. package/dist/editor/validation/ValidationIssuesPopover.js.map +1 -0
  538. package/dist/editor/validation/navigateToValidationIssue.d.ts +13 -0
  539. package/dist/editor/validation/navigateToValidationIssue.js +43 -0
  540. package/dist/editor/validation/navigateToValidationIssue.js.map +1 -0
  541. package/dist/editor/validation/validationFixAgent.d.ts +26 -0
  542. package/dist/editor/validation/validationFixAgent.js +124 -0
  543. package/dist/editor/validation/validationFixAgent.js.map +1 -0
  544. package/dist/editor/validation/validationRulerIssues.d.ts +17 -0
  545. package/dist/editor/validation/validationRulerIssues.js +44 -0
  546. package/dist/editor/validation/validationRulerIssues.js.map +1 -0
  547. package/dist/editor/validation/validationSeverity.d.ts +15 -0
  548. package/dist/editor/validation/validationSeverity.js +47 -0
  549. package/dist/editor/validation/validationSeverity.js.map +1 -0
  550. package/dist/lib/viewportClip.d.ts +18 -0
  551. package/dist/lib/viewportClip.js +22 -0
  552. package/dist/lib/viewportClip.js.map +1 -0
  553. package/dist/revision.d.ts +2 -2
  554. package/dist/revision.js +2 -2
  555. package/dist/task-board/components/AttentionPromptDialog.d.ts +13 -0
  556. package/dist/task-board/components/AttentionPromptDialog.js +45 -0
  557. package/dist/task-board/components/AttentionPromptDialog.js.map +1 -0
  558. package/dist/task-board/components/GoalFindingsTable.d.ts +43 -0
  559. package/dist/task-board/components/GoalFindingsTable.js +160 -0
  560. package/dist/task-board/components/GoalFindingsTable.js.map +1 -0
  561. package/dist/task-board/components/IssuePanel.d.ts +31 -0
  562. package/dist/task-board/components/IssuePanel.js +268 -0
  563. package/dist/task-board/components/IssuePanel.js.map +1 -0
  564. package/dist/task-board/components/ProjectProgressIndicator.d.ts +8 -0
  565. package/dist/task-board/components/ProjectProgressIndicator.js +17 -0
  566. package/dist/task-board/components/ProjectProgressIndicator.js.map +1 -0
  567. package/dist/task-board/components/SubgoalFindings.d.ts +40 -0
  568. package/dist/task-board/components/SubgoalFindings.js +88 -0
  569. package/dist/task-board/components/SubgoalFindings.js.map +1 -0
  570. package/dist/task-board/components/commentAuthor.d.ts +14 -0
  571. package/dist/task-board/components/commentAuthor.js +25 -0
  572. package/dist/task-board/components/commentAuthor.js.map +1 -0
  573. package/dist/task-board/services/issueService.d.ts +193 -0
  574. package/dist/task-board/services/issueService.js +97 -0
  575. package/dist/task-board/services/issueService.js.map +1 -0
  576. package/dist/task-board/taskBlockers.d.ts +10 -0
  577. package/dist/task-board/taskBlockers.js +66 -0
  578. package/dist/task-board/taskBlockers.js.map +1 -0
  579. package/dist/task-board/utils/projectDashboardModel.d.ts +68 -0
  580. package/dist/task-board/utils/projectDashboardModel.js +369 -0
  581. package/dist/task-board/utils/projectDashboardModel.js.map +1 -0
  582. package/dist/task-board/views/ProjectDashboardView.d.ts +28 -0
  583. package/dist/task-board/views/ProjectDashboardView.js +308 -0
  584. package/dist/task-board/views/ProjectDashboardView.js.map +1 -0
  585. package/dist/tour/TourInputBoundary.d.ts +6 -0
  586. package/dist/tour/TourInputBoundary.js +82 -0
  587. package/dist/tour/TourInputBoundary.js.map +1 -0
  588. package/dist/tour/sandbox-tour-copy.d.ts +8 -0
  589. package/dist/tour/sandbox-tour-copy.js +8 -0
  590. package/dist/tour/sandbox-tour-copy.js.map +1 -1
  591. package/dist/tour/sandbox-tour.d.ts +3 -0
  592. package/dist/tour/sandbox-tour.js +112 -6
  593. package/dist/tour/sandbox-tour.js.map +1 -1
  594. package/dist/tour/tour-utils.d.ts +6 -0
  595. package/dist/tour/tour-utils.js +10 -0
  596. package/dist/tour/tour-utils.js.map +1 -1
  597. package/package.json +1 -1
  598. package/dist/editor/page-editor-chrome/bridgeLinkValue.d.ts +0 -10
  599. package/dist/editor/page-editor-chrome/bridgeLinkValue.js +0 -55
  600. package/dist/editor/page-editor-chrome/bridgeLinkValue.js.map +0 -1
@@ -0,0 +1,117 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useEffect, useRef, useState } from "react";
3
+ import { createPortal } from "react-dom";
4
+ import { useEditContext } from "../client/editContext";
5
+ import { COMMENT_PICKER_CURSOR, COMMENT_PICKER_IGNORE_ATTRIBUTE, stopCommentTargetPicking, } from "./commentTargetPicker";
6
+ import { CommentTargetOutline } from "./CommentTargetOutline";
7
+ /** Form fields of the editor (item form, page side form) carry these. */
8
+ const FORM_FIELD_SELECTOR = "[data-field-id][data-itemid]";
9
+ const PICKING_ATTRIBUTE = "data-comment-target-picking";
10
+ function closestFormField(target) {
11
+ return target instanceof Element
12
+ ? target.closest(FORM_FIELD_SELECTOR)
13
+ : null;
14
+ }
15
+ function readFieldDescriptor(element) {
16
+ const fieldId = element.getAttribute("data-field-id");
17
+ const itemId = element.getAttribute("data-itemid");
18
+ if (!fieldId || !itemId)
19
+ return null;
20
+ const version = Number.parseInt(element.getAttribute("data-version") ?? "", 10);
21
+ return {
22
+ fieldId,
23
+ item: {
24
+ id: itemId,
25
+ language: element.getAttribute("data-language") ?? "",
26
+ version: Number.isFinite(version) ? version : 0,
27
+ },
28
+ };
29
+ }
30
+ /**
31
+ * The editor-document half of comment target picking: form fields become
32
+ * pickable, the picker cursor applies across the editor, Escape or a click on
33
+ * anything that is not a target leaves the mode. Mounted only while picking.
34
+ * (The canvas is covered by `CommentTargetPickerCanvasLayer`.)
35
+ */
36
+ export function CommentTargetPickerDomLayer() {
37
+ const editContext = useEditContext();
38
+ const [hovered, setHovered] = useState();
39
+ // The edit context changes identity with every editor state change; the
40
+ // listeners only need its latest `addComment`.
41
+ const addCommentRef = useRef(editContext?.addComment);
42
+ addCommentRef.current = editContext?.addComment;
43
+ useEffect(() => {
44
+ const root = document.documentElement;
45
+ root.setAttribute(PICKING_ATTRIBUTE, "");
46
+ const style = document.createElement("style");
47
+ style.textContent = `html[${PICKING_ATTRIBUTE}], html[${PICKING_ATTRIBUTE}] * { cursor: ${COMMENT_PICKER_CURSOR} !important; }`;
48
+ document.head.appendChild(style);
49
+ let hoveredElement = null;
50
+ const showOutline = (element) => {
51
+ hoveredElement = element;
52
+ if (!element) {
53
+ setHovered(undefined);
54
+ return;
55
+ }
56
+ const box = element.getBoundingClientRect();
57
+ setHovered({
58
+ rect: { x: box.left, y: box.top, width: box.width, height: box.height },
59
+ label: element.getAttribute("data-fieldname") || "Field",
60
+ });
61
+ };
62
+ const handleMove = (event) => {
63
+ const field = closestFormField(event.target);
64
+ if (field !== hoveredElement)
65
+ showOutline(field);
66
+ };
67
+ // The outline is fixed-positioned; keep it on its field while scrolling.
68
+ const handleScroll = () => {
69
+ if (hoveredElement)
70
+ showOutline(hoveredElement);
71
+ };
72
+ // The mouse-down is left alone so text can be selected in the field; a
73
+ // selection inside it becomes the comment's range. The click that ends
74
+ // the gesture picks: it must not reach the field's own handlers, and the
75
+ // field gives the focus back so the composer can take it.
76
+ const handleClick = (event) => {
77
+ const target = event.target instanceof Element ? event.target : null;
78
+ if (target?.closest(`[${COMMENT_PICKER_IGNORE_ATTRIBUTE}]`))
79
+ return;
80
+ const field = closestFormField(target);
81
+ const descriptor = field ? readFieldDescriptor(field) : null;
82
+ stopCommentTargetPicking();
83
+ if (!descriptor)
84
+ return; // a click elsewhere just leaves the mode
85
+ event.preventDefault();
86
+ event.stopPropagation();
87
+ const active = document.activeElement;
88
+ if (active instanceof HTMLElement && field?.contains(active)) {
89
+ active.blur();
90
+ }
91
+ addCommentRef.current?.({ field: descriptor });
92
+ };
93
+ const handleKeyDown = (event) => {
94
+ if (event.key !== "Escape")
95
+ return;
96
+ event.preventDefault();
97
+ event.stopPropagation();
98
+ stopCommentTargetPicking();
99
+ };
100
+ document.addEventListener("mousemove", handleMove, true);
101
+ document.addEventListener("scroll", handleScroll, true);
102
+ document.addEventListener("click", handleClick, true);
103
+ document.addEventListener("keydown", handleKeyDown, true);
104
+ return () => {
105
+ document.removeEventListener("mousemove", handleMove, true);
106
+ document.removeEventListener("scroll", handleScroll, true);
107
+ document.removeEventListener("click", handleClick, true);
108
+ document.removeEventListener("keydown", handleKeyDown, true);
109
+ root.removeAttribute(PICKING_ATTRIBUTE);
110
+ style.remove();
111
+ };
112
+ }, []);
113
+ if (!hovered || typeof document === "undefined")
114
+ return null;
115
+ return createPortal(_jsx(CommentTargetOutline, { rect: hovered.rect, label: hovered.label, position: "fixed", zIndex: 300 }), document.body);
116
+ }
117
+ //# sourceMappingURL=CommentTargetPickerDomLayer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CommentTargetPickerDomLayer.js","sourceRoot":"","sources":["../../../src/editor/reviews/CommentTargetPickerDomLayer.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import { Comment as CommentType } from "../../types";
2
+ export declare const COMMENT_THREAD_AGENT_LINK_LABEL = "Resolve with agent";
3
+ /**
4
+ * Put this class on the element whose hover reveals the link (the thread card
5
+ * or the popover body). Touch devices get the link permanently.
6
+ */
7
+ export declare const COMMENT_THREAD_HOVER_GROUP_CLASS = "group/comment-thread";
8
+ type CommentThreadAgentLinkProps = {
9
+ rootComment: CommentType;
10
+ /** Every comment of the thread; order does not matter. */
11
+ threadComments: readonly CommentType[];
12
+ resolvedAuthorNames?: Record<string, string>;
13
+ className?: string;
14
+ /**
15
+ * Shares a single line with other actions (margin balloon): never wraps;
16
+ * the label truncates before it would push the line apart.
17
+ */
18
+ compact?: boolean;
19
+ onStarted?: () => void;
20
+ };
21
+ /**
22
+ * Link rendered at the end of a comment conversation that starts an agent
23
+ * seeded with the complete thread. Renders nothing when agents are not
24
+ * available or the thread cannot be worked on (resolved, read-only, unsaved).
25
+ * Hidden until the surrounding thread is hovered or the link has focus.
26
+ */
27
+ export declare function CommentThreadAgentLink({ rootComment, threadComments, resolvedAuthorNames, className, compact, onStarted, }: CommentThreadAgentLinkProps): import("react").JSX.Element | null;
28
+ export {};
@@ -0,0 +1,37 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Sparkles } from "lucide-react";
3
+ import { useEditContext } from "../client/editContext";
4
+ import { LicenseFeatures, useFeature } from "../../licensing";
5
+ import { hasAgentsPanel } from "../validation/validationFixAgent";
6
+ import { openAiAgentForCommentThread } from "./commentAi";
7
+ import { cn } from "../../lib/utils";
8
+ export const COMMENT_THREAD_AGENT_LINK_LABEL = "Resolve with agent";
9
+ /**
10
+ * Put this class on the element whose hover reveals the link (the thread card
11
+ * or the popover body). Touch devices get the link permanently.
12
+ */
13
+ export const COMMENT_THREAD_HOVER_GROUP_CLASS = "group/comment-thread";
14
+ /**
15
+ * Link rendered at the end of a comment conversation that starts an agent
16
+ * seeded with the complete thread. Renders nothing when agents are not
17
+ * available or the thread cannot be worked on (resolved, read-only, unsaved).
18
+ * Hidden until the surrounding thread is hovered or the link has focus.
19
+ */
20
+ export function CommentThreadAgentLink({ rootComment, threadComments, resolvedAuthorNames, className, compact = false, onStarted, }) {
21
+ const editContext = useEditContext();
22
+ const canUseAi = useFeature(LicenseFeatures.AI);
23
+ if (!canUseAi ||
24
+ !hasAgentsPanel(editContext) ||
25
+ rootComment.isNew ||
26
+ rootComment.isResolved ||
27
+ editContext?.readonly) {
28
+ return null;
29
+ }
30
+ return (_jsx("div", { className: cn("flex", compact && "min-w-0", className), children: _jsxs("button", { type: "button", className: cn("text-neutral-grey-50 hover:text-neutral-grey-100 inline-flex items-start text-left text-xs leading-4 underline-offset-2 transition-opacity hover:underline focus-visible:opacity-100", compact ? "max-w-full min-w-0 gap-1" : "gap-1.5", !editContext?.isMobile &&
31
+ "opacity-0 group-hover/comment-thread:opacity-100"), title: compact ? COMMENT_THREAD_AGENT_LINK_LABEL : undefined, "data-testid": "comment-thread-start-agent", onClick: (event) => {
32
+ event.stopPropagation();
33
+ openAiAgentForCommentThread(rootComment, threadComments, editContext, resolvedAuthorNames);
34
+ onStarted?.();
35
+ }, children: [_jsx(Sparkles, { className: "mt-px h-3.5 w-3.5 shrink-0", strokeWidth: 1 }), compact ? (_jsx("span", { className: "truncate", children: COMMENT_THREAD_AGENT_LINK_LABEL })) : (COMMENT_THREAD_AGENT_LINK_LABEL)] }) }));
36
+ }
37
+ //# sourceMappingURL=CommentThreadAgentLink.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CommentThreadAgentLink.js","sourceRoot":"","sources":["../../../src/editor/reviews/CommentThreadAgentLink.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAExC,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAErC,MAAM,CAAC,MAAM,+BAA+B,GAAG,oBAAoB,CAAC;AAEpE;;;GAGG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,sBAAsB,CAAC;AAgBvE;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CAAC,EACrC,WAAW,EACX,cAAc,EACd,mBAAmB,EACnB,SAAS,EACT,OAAO,GAAG,KAAK,EACf,SAAS,GACmB;IAC5B,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,MAAM,QAAQ,GAAG,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;IAEhD,IACE,CAAC,QAAQ;QACT,CAAC,cAAc,CAAC,WAAW,CAAC;QAC5B,WAAW,CAAC,KAAK;QACjB,WAAW,CAAC,UAAU;QACtB,WAAW,EAAE,QAAQ,EACrB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CACL,cAAK,SAAS,EAAE,EAAE,CAAC,MAAM,EAAE,OAAO,IAAI,SAAS,EAAE,SAAS,CAAC,YACzD,kBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,EAAE,CACX,sLAAsL,EACtL,OAAO,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,SAAS,EAChD,CAAC,WAAW,EAAE,QAAQ;gBACpB,kDAAkD,CACrD,EACD,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,SAAS,iBAChD,4BAA4B,EACxC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;gBACjB,KAAK,CAAC,eAAe,EAAE,CAAC;gBACxB,2BAA2B,CACzB,WAAW,EACX,cAAc,EACd,WAAW,EACX,mBAAmB,CACpB,CAAC;gBACF,SAAS,EAAE,EAAE,CAAC;YAChB,CAAC,aAED,KAAC,QAAQ,IAAC,SAAS,EAAC,4BAA4B,EAAC,WAAW,EAAE,CAAC,GAAI,EAClE,OAAO,CAAC,CAAC,CAAC,CACT,eAAM,SAAS,EAAC,UAAU,YAAE,+BAA+B,GAAQ,CACpE,CAAC,CAAC,CAAC,CACF,+BAA+B,CAChC,IACM,GACL,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,34 @@
1
+ import { type Ref } from "react";
2
+ import type { FeedbackNavigation } from "./CommentQuote";
3
+ import type { CommentThread } from "./feedbackThreads";
4
+ import type { FeedbackItem } from "./feedbackOrdering";
5
+ export type CommentThreadCardProps = {
6
+ thread: CommentThread;
7
+ availableTags: {
8
+ label: string;
9
+ color: string;
10
+ }[];
11
+ getAuthorName: (item: FeedbackItem) => string;
12
+ resolvedAuthorNames: Record<string, string>;
13
+ selected: boolean;
14
+ navigation?: FeedbackNavigation;
15
+ className?: string;
16
+ /** Bounds the thread body (which then scrolls) so one long thread never
17
+ * exceeds the page beside it. */
18
+ bodyMaxHeight?: number;
19
+ /**
20
+ * Word-style margin balloon: flat frame without the context header, small
21
+ * type, replies collapsed and the reply composer opened on demand.
22
+ */
23
+ balloon?: boolean;
24
+ /** Name what the thread is about (a balloon that is not beside it). */
25
+ showContext?: boolean;
26
+ onHoverChange?: (hovered: boolean) => void;
27
+ cardRef?: Ref<HTMLDivElement>;
28
+ };
29
+ /**
30
+ * One comment thread: the root comment, its replies (collapsible), the agent
31
+ * link and the reply composer. Reply target, reply text and collapse state
32
+ * live in the thread's draft so the card can be re-homed without losing them.
33
+ */
34
+ export declare function CommentThreadCard({ thread, availableTags, getAuthorName, resolvedAuthorNames, selected, navigation, className, bodyMaxHeight, balloon, showContext, onHoverChange, cardRef, }: CommentThreadCardProps): import("react").JSX.Element;
@@ -0,0 +1,156 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useEffect, useRef, useState } from "react";
3
+ import { ChevronDown, ChevronRight, Reply } from "lucide-react";
4
+ import uuid from "react-uuid";
5
+ import { toast } from "sonner";
6
+ import { useEditContext, useFieldsEditContext } from "../client/editContext";
7
+ import { CloseButton } from "../../components/ui/close-button";
8
+ import { cn } from "../../lib/utils";
9
+ import { createOrUpdateComment } from "../services/reviewsService";
10
+ import { Comment as CommentComponent } from "./Comment";
11
+ import { CommentEditor, COMMENT_INPUT_PLACEHOLDER } from "./CommentEditor";
12
+ import { COMMENT_THREAD_HOVER_GROUP_CLASS, CommentThreadAgentLink, } from "./CommentThreadAgentLink";
13
+ import { FeedbackCardFrame, getCommentContextSegments } from "./FeedbackCard";
14
+ import { canReplyToComment } from "./feedbackCommentRules";
15
+ import { useFeedbackDraft } from "./feedbackDrafts";
16
+ import { isTextSelectionClick, selectFeedbackComment, } from "./feedbackSelection";
17
+ import { activateCommentsMode } from "./openCommentsFeedback";
18
+ function buildReplyFrom(base, text, quoteParent, context) {
19
+ return {
20
+ id: uuid(),
21
+ isNew: false,
22
+ parentCommentId: base.id,
23
+ quoteParentComment: quoteParent,
24
+ itemId: base.itemId,
25
+ itemName: base.itemName,
26
+ fieldId: base.fieldId,
27
+ fieldName: base.fieldName,
28
+ mainItemId: base.mainItemId,
29
+ language: base.language || context.language,
30
+ version: base.version || context.version,
31
+ position: 0,
32
+ rangeStart: base.rangeStart,
33
+ rangeEnd: base.rangeEnd,
34
+ author: context.author,
35
+ authorDisplayName: context.authorDisplayName,
36
+ created: new Date().toISOString(),
37
+ text,
38
+ tags: "",
39
+ fieldValue: base.fieldValue,
40
+ };
41
+ }
42
+ /**
43
+ * One comment thread: the root comment, its replies (collapsible), the agent
44
+ * link and the reply composer. Reply target, reply text and collapse state
45
+ * live in the thread's draft so the card can be re-homed without losing them.
46
+ */
47
+ export function CommentThreadCard({ thread, availableTags, getAuthorName, resolvedAuthorNames, selected, navigation = "dom", className, bodyMaxHeight, balloon = false, showContext = false, onHoverChange, cardRef, }) {
48
+ const editContext = useEditContext();
49
+ const fieldsContext = useFieldsEditContext();
50
+ const { root, replies } = thread;
51
+ const [draft, updateDraft, clearDraft] = useFeedbackDraft(thread.id);
52
+ const [isSavingReply, setIsSavingReply] = useState(false);
53
+ // Balloons keep replies folded until asked; the list shows them.
54
+ const isCollapsed = draft.collapsed ?? balloon;
55
+ const replyTarget = draft.replyTargetCommentId
56
+ ? [root, ...replies].find((comment) => comment.id === draft.replyTargetCommentId)
57
+ : undefined;
58
+ // Closing the composer discards its draft: the editor has already revoked
59
+ // its pasted images, which must not come back in the next composer.
60
+ const setReplyTarget = (target) => updateDraft(target
61
+ ? { replyTargetCommentId: target.id, collapsed: false }
62
+ : {
63
+ replyTargetCommentId: undefined,
64
+ replyText: undefined,
65
+ replyAttachments: undefined,
66
+ });
67
+ // A card can unmount under the pointer (deleted, resolved, re-homed by the
68
+ // margin) without a mouseleave; do not leave its hover behind.
69
+ const onHoverChangeRef = useRef(onHoverChange);
70
+ onHoverChangeRef.current = onHoverChange;
71
+ useEffect(() => () => onHoverChangeRef.current?.(false), []);
72
+ const contextSegments = getCommentContextSegments(root, editContext?.currentItemDescriptor?.name);
73
+ const cancelNewComment = (event) => {
74
+ event.stopPropagation();
75
+ if (!root.isNew)
76
+ return;
77
+ editContext?.setComments?.((comments) => comments.filter((comment) => comment.id !== root.id));
78
+ if (editContext?.selectedComment?.id === root.id) {
79
+ editContext.setSelectedComment(undefined);
80
+ }
81
+ // Every draft comment has a fresh id; nothing would ever reuse this entry.
82
+ clearDraft();
83
+ };
84
+ const handleReplySave = async (target, text) => {
85
+ if (!editContext?.currentItemDescriptor)
86
+ return;
87
+ activateCommentsMode(editContext, { reason: "comment-reply" });
88
+ const descriptor = editContext.currentItemDescriptor;
89
+ // A balloon opens its composer by targeting the root; that is a plain
90
+ // reply to the thread, not a quote of it.
91
+ const quotesTarget = replyTarget?.id === target.id && !(balloon && target.id === root.id);
92
+ const newReply = buildReplyFrom(target, text, quotesTarget, {
93
+ language: descriptor.language,
94
+ version: descriptor.version,
95
+ author: editContext.user?.name,
96
+ authorDisplayName: editContext.user?.fullName,
97
+ });
98
+ setIsSavingReply(true);
99
+ try {
100
+ const result = await createOrUpdateComment(newReply);
101
+ if (result.type === "error" || result.type === "unauthorized") {
102
+ console.error("Failed to save reply comment:", result);
103
+ toast.error(result.details || result.summary || "Failed to save reply comment");
104
+ return;
105
+ }
106
+ updateDraft({
107
+ replyTargetCommentId: undefined,
108
+ replyText: undefined,
109
+ replyAttachments: undefined,
110
+ });
111
+ await editContext.loadComments?.();
112
+ }
113
+ catch (error) {
114
+ console.error("Failed to save reply comment:", error);
115
+ toast.error(error instanceof Error ? error.message : "Failed to save reply comment");
116
+ }
117
+ finally {
118
+ setIsSavingReply(false);
119
+ }
120
+ };
121
+ const canReplyToRoot = !!editContext && canReplyToComment(root, root, editContext.readonly);
122
+ const renderReplyEditor = () => {
123
+ if (!editContext)
124
+ return null;
125
+ // The list always offers the composer; a balloon only after "Reply".
126
+ if (balloon && !replyTarget)
127
+ return null;
128
+ const target = replyTarget ?? root;
129
+ if (!canReplyToComment(target, root, editContext.readonly)) {
130
+ return null;
131
+ }
132
+ return (_jsxs("div", { className: balloon ? "mt-2 pl-7" : "mt-3 pt-3", onClick: (event) => event.stopPropagation(), children: [replyTarget && (!balloon || replyTarget.id !== root.id) && (_jsxs("div", { className: "text-neutral-grey-50 mb-2 flex items-center justify-between gap-2 text-xs", children: [_jsxs("span", { className: "truncate", children: ["Replying to ", getAuthorName(replyTarget)] }), _jsx("button", { type: "button", className: "badge-pad-sm text-neutral-grey-50 hover:bg-neutral-grey-5 shrink-0 rounded", onClick: () => setReplyTarget(undefined), children: "Cancel" })] })), _jsx(CommentEditor, { onSave: (text) => handleReplySave(target, text), onCancel: () => setReplyTarget(undefined), isSaving: isSavingReply, placeholder: balloon ? "Reply or @mention" : COMMENT_INPUT_PLACEHOLDER, submitLabel: "Reply", showTagSelector: false, showCancelButton: balloon, balloon: balloon, clearOnSave: true, compact: true, autoFocus: !!replyTarget, value: draft.replyText, onValueChange: (replyText) => updateDraft({ replyText }), attachments: draft.replyAttachments, onAttachmentsChange: (replyAttachments) => updateDraft({ replyAttachments }) }, target.id)] }));
133
+ };
134
+ const repliesLabel = `${replies.length} ${replies.length === 1 ? "reply" : "replies"}`;
135
+ const agentLink = (_jsx(CommentThreadAgentLink, { rootComment: root, threadComments: [root, ...replies], resolvedAuthorNames: resolvedAuthorNames, className: balloon ? "ml-auto" : "mt-1", compact: balloon }));
136
+ return (_jsx("div", { ref: cardRef, "data-feedback-thread-id": thread.id, onMouseEnter: onHoverChange ? () => onHoverChange(true) : undefined, onMouseLeave: onHoverChange ? () => onHoverChange(false) : undefined, children: _jsxs(FeedbackCardFrame, { variant: balloon ? "balloon" : "card", contextSegments: contextSegments, showBalloonContext: showContext, selected: selected, className: cn("cursor-pointer", COMMENT_THREAD_HOVER_GROUP_CLASS, className), bodyClassName: bodyMaxHeight ? "overflow-auto" : undefined, bodyStyle: bodyMaxHeight ? { maxHeight: bodyMaxHeight } : undefined, bodyScrollable: !!bodyMaxHeight, testId: "comment-thread", headerAction:
137
+ // The list's frame header holds the draft's close button; a balloon
138
+ // has no header, its input carries the cancel button instead.
139
+ root.isNew && !balloon ? (_jsx(CloseButton, { onClick: cancelNewComment, "data-testid": "add-comment-cancel", label: "Cancel" })) : undefined, onClick: (event) => {
140
+ // A mouse release that ends a text drag-selection also clicks; keep
141
+ // the selection instead of jumping.
142
+ if (isTextSelectionClick(event.currentTarget, event))
143
+ return;
144
+ void selectFeedbackComment(root, editContext, fieldsContext);
145
+ }, children: [_jsx(CommentComponent, { comment: root, availableTags: availableTags, rootCommentId: root.id, resolvedAuthorName: getAuthorName(root), variant: "inline", showContextHeader: false, showEditorCancelButton: !root.isNew, navigation: navigation, balloon: balloon, onReply: (target) => setReplyTarget(target) }), (replies.length > 0 || (balloon && canReplyToRoot && !root.isNew)) && (_jsxs("div", { className: cn("text-neutral-grey-50 flex items-center",
146
+ // One line, always: a wrapped (hover-only) agent link would
147
+ // reserve an empty line in every balloon.
148
+ balloon ? "mt-1 gap-2 pl-7 whitespace-nowrap" : "mb-3 gap-3"), children: [replies.length > 0 && (_jsxs("button", { type: "button", "data-testid": "comment-thread-replies-toggle", "aria-expanded": !isCollapsed, className: cn("hover:text-neutral-grey-100 flex items-center gap-1 text-left", !balloon && "text-neutral-grey-100 text-sm"), onClick: (event) => {
149
+ event.stopPropagation();
150
+ updateDraft({ collapsed: !isCollapsed });
151
+ }, children: [isCollapsed ? (_jsx(ChevronRight, { size: 12, strokeWidth: 1.5 })) : (_jsx(ChevronDown, { size: 12, strokeWidth: 1.5 })), repliesLabel] })), balloon && canReplyToRoot && !root.isNew && !replyTarget && (_jsxs("button", { type: "button", "data-testid": "comment-reply-button", className: "hover:text-neutral-grey-100 flex items-center gap-1", onClick: (event) => {
152
+ event.stopPropagation();
153
+ setReplyTarget(root);
154
+ }, children: [_jsx(Reply, { size: 12, strokeWidth: 1.5 }), "Reply"] })), balloon && agentLink] })), replies.length > 0 && !isCollapsed && (_jsx("div", { className: cn(balloon && "border-border-default mt-1.5 ml-2.5 border-l pl-3"), children: replies.map((reply) => (_jsx(CommentComponent, { comment: reply, availableTags: availableTags, rootCommentId: root.id, resolvedAuthorName: getAuthorName(reply), variant: "inline", showContextHeader: false, navigation: navigation, balloon: balloon, onReply: (target) => setReplyTarget(target) }, reply.id))) })), !balloon && agentLink, renderReplyEditor()] }) }));
155
+ }
156
+ //# sourceMappingURL=CommentThreadCard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CommentThreadCard.js","sourceRoot":"","sources":["../../../src/editor/reviews/CommentThreadCard.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { type Ref } from "react";
2
+ import type { FeedbackNavigation } from "./CommentQuote";
3
+ import type { FeedbackItem } from "./feedbackOrdering";
4
+ import type { SuggestionThread } from "./feedbackThreads";
5
+ export type SuggestionThreadCardProps = {
6
+ thread: SuggestionThread;
7
+ getAuthorName: (item: FeedbackItem) => string;
8
+ resolvedAuthorNames: Record<string, string>;
9
+ navigation?: FeedbackNavigation;
10
+ bodyMaxHeight?: number;
11
+ /** Word-style margin balloon; the comment thread is folded until asked. */
12
+ balloon?: boolean;
13
+ /** Name what the suggestion is about (a balloon that is not beside it). */
14
+ showContext?: boolean;
15
+ onHoverChange?: (hovered: boolean) => void;
16
+ cardRef?: Ref<HTMLDivElement>;
17
+ };
18
+ /** One suggested edit with its comment thread. */
19
+ export declare function SuggestionThreadCard({ thread, getAuthorName, resolvedAuthorNames, navigation, bodyMaxHeight, balloon, showContext, onHoverChange, cardRef, }: SuggestionThreadCardProps): import("react").JSX.Element;
@@ -0,0 +1,25 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useEffect, useRef } from "react";
3
+ import { ChevronDown, ChevronRight, Reply } from "lucide-react";
4
+ import { useEditContext } from "../client/editContext";
5
+ import { cn } from "../../lib/utils";
6
+ import { useFeedbackDraft } from "./feedbackDrafts";
7
+ import { SuggestedEditComponent } from "./SuggestedEdit";
8
+ import { SuggestionCommentThread } from "./SuggestionCommentThread";
9
+ /** One suggested edit with its comment thread. */
10
+ export function SuggestionThreadCard({ thread, getAuthorName, resolvedAuthorNames, navigation = "dom", bodyMaxHeight, balloon = false, showContext = false, onHoverChange, cardRef, }) {
11
+ const editContext = useEditContext();
12
+ const { suggestion, comments } = thread;
13
+ const [draft, updateDraft] = useFeedbackDraft(thread.id);
14
+ const canComment = !editContext?.readonly;
15
+ const showThread = !editContext?.readonly || comments.length > 0;
16
+ // Balloons fold the comment thread (and its composer) until asked.
17
+ const expanded = balloon ? draft.collapsed === false : true;
18
+ const commentsLabel = `${comments.length} ${comments.length === 1 ? "comment" : "comments"}`;
19
+ // See CommentThreadCard: an unmount under the pointer sends no mouseleave.
20
+ const onHoverChangeRef = useRef(onHoverChange);
21
+ onHoverChangeRef.current = onHoverChange;
22
+ useEffect(() => () => onHoverChangeRef.current?.(false), []);
23
+ return (_jsx("div", { ref: cardRef, "data-testid": "suggestion-thread", "data-feedback-thread-id": thread.id, "data-suggestion-id": suggestion.id, onMouseEnter: onHoverChange ? () => onHoverChange(true) : undefined, onMouseLeave: onHoverChange ? () => onHoverChange(false) : undefined, children: _jsxs(SuggestedEditComponent, { edit: suggestion, resolvedAuthorName: getAuthorName(suggestion), navigation: navigation, bodyMaxHeight: bodyMaxHeight, balloon: balloon, showContext: showContext, children: [balloon && showThread && (_jsxs("div", { className: "text-neutral-grey-50 mt-1.5 flex items-center gap-3 pl-7", onClick: (event) => event.stopPropagation(), children: [comments.length > 0 && (_jsxs("button", { type: "button", "data-testid": "suggestion-thread-comments-toggle", "aria-expanded": expanded, className: "hover:text-neutral-grey-100 flex items-center gap-1 text-left", onClick: () => updateDraft({ collapsed: expanded }), children: [expanded ? (_jsx(ChevronDown, { size: 12, strokeWidth: 1.5 })) : (_jsx(ChevronRight, { size: 12, strokeWidth: 1.5 })), commentsLabel] })), canComment && !expanded && (_jsxs("button", { type: "button", "data-testid": "suggestion-reply-button", className: "hover:text-neutral-grey-100 flex items-center gap-1", onClick: () => updateDraft({ collapsed: false }), children: [_jsx(Reply, { size: 12, strokeWidth: 1.5 }), "Reply"] }))] })), showThread && expanded && (_jsx("div", { className: cn(balloon && "mt-1.5 pl-7"), children: _jsx(SuggestionCommentThread, { suggestion: suggestion, comments: comments, resolvedAuthorNames: resolvedAuthorNames, compact: true, navigation: navigation, balloon: balloon }) }))] }) }));
24
+ }
25
+ //# sourceMappingURL=SuggestionThreadCard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SuggestionThreadCard.js","sourceRoot":"","sources":["../../../src/editor/reviews/SuggestionThreadCard.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import type { AddCommentOptions, EditContextType, SelectionRange } from "../client/editContext";
2
+ /**
3
+ * "Add comment" on a known target (a field's comment button, the formatting
4
+ * toolbar, the context menu): the composer opens as a draft card in the
5
+ * comment margin, beside the target, exactly as after picking it with the
6
+ * comment target picker. A text selection inside the target field becomes
7
+ * the comment's range.
8
+ *
9
+ * On mobile the comments panel below the canvas is that margin. Only where
10
+ * neither can show (fullscreen presentation) the composer still opens as a
11
+ * popover at `fallbackAnchor`.
12
+ */
13
+ export declare function addCommentOnTarget(editContext: EditContextType, target: AddCommentOptions, fallbackAnchor: {
14
+ element: Element | null | undefined;
15
+ range?: SelectionRange;
16
+ } | {
17
+ position: {
18
+ x: number;
19
+ y: number;
20
+ };
21
+ range?: SelectionRange;
22
+ }): void;
@@ -0,0 +1,32 @@
1
+ import { showCommentPopoverAt } from "./CommentPopover";
2
+ /**
3
+ * "Add comment" on a known target (a field's comment button, the formatting
4
+ * toolbar, the context menu): the composer opens as a draft card in the
5
+ * comment margin, beside the target, exactly as after picking it with the
6
+ * comment target picker. A text selection inside the target field becomes
7
+ * the comment's range.
8
+ *
9
+ * On mobile the comments panel below the canvas is that margin. Only where
10
+ * neither can show (fullscreen presentation) the composer still opens as a
11
+ * popover at `fallbackAnchor`.
12
+ */
13
+ export function addCommentOnTarget(editContext, target, fallbackAnchor) {
14
+ const marginAvailable = !editContext.fullscreen;
15
+ if (marginAvailable) {
16
+ editContext.addComment(target);
17
+ return;
18
+ }
19
+ const rect = "element" in fallbackAnchor
20
+ ? fallbackAnchor.element?.getBoundingClientRect()
21
+ : undefined;
22
+ const position = "position" in fallbackAnchor
23
+ ? fallbackAnchor.position
24
+ : rect
25
+ ? { x: rect.left, y: rect.bottom }
26
+ : { x: window.innerWidth / 2, y: window.innerHeight / 2 };
27
+ showCommentPopoverAt(position, editContext, {
28
+ field: target.field,
29
+ range: fallbackAnchor.range,
30
+ });
31
+ }
32
+ //# sourceMappingURL=addCommentOnTarget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addCommentOnTarget.js","sourceRoot":"","sources":["../../../src/editor/reviews/addCommentOnTarget.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAExD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,kBAAkB,CAChC,WAA4B,EAC5B,MAAyB,EACzB,cAEkE;IAElE,MAAM,eAAe,GAAG,CAAC,WAAW,CAAC,UAAU,CAAC;IAChD,IAAI,eAAe,EAAE,CAAC;QACpB,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC/B,OAAO;IACT,CAAC;IAED,MAAM,IAAI,GACR,SAAS,IAAI,cAAc;QACzB,CAAC,CAAC,cAAc,CAAC,OAAO,EAAE,qBAAqB,EAAE;QACjD,CAAC,CAAC,SAAS,CAAC;IAChB,MAAM,QAAQ,GACZ,UAAU,IAAI,cAAc;QAC1B,CAAC,CAAC,cAAc,CAAC,QAAQ;QACzB,CAAC,CAAC,IAAI;YACJ,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE;YAClC,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC;IAChE,oBAAoB,CAAC,QAAQ,EAAE,WAAW,EAAE;QAC1C,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,KAAK,EAAE,cAAc,CAAC,KAAK;KAC5B,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Word-style balloon layout for the comment margin.
3
+ *
4
+ * Every card wants to sit at the top of the text it is anchored to. Cards are
5
+ * placed top to bottom without overlapping; the selected ("pinned") card stays
6
+ * at its anchor and pushes its neighbours away in both directions; and the
7
+ * whole stack is kept inside `[minY, maxY]` (the column below the header and
8
+ * above the footer, in document coordinates), shifting cards above their
9
+ * anchor when the page end is near.
10
+ *
11
+ * Precedence: bounds > pinned card at its anchor > other cards at their
12
+ * anchors > no overlap. When the cards cannot fit at all the layout reports
13
+ * `overflow` and the caller switches to a scrolling presentation.
14
+ */
15
+ export type BalloonInput = {
16
+ id: string;
17
+ /** Document-space y of the anchored text; items must be sorted by it. */
18
+ anchorY: number;
19
+ /** Measured card height; 0 while unknown. */
20
+ height: number;
21
+ };
22
+ export type BalloonLayoutOptions = {
23
+ /** Vertical gap between cards. */
24
+ gap: number;
25
+ /** Top of the usable column. */
26
+ minY: number;
27
+ /** Bottom of the usable column. */
28
+ maxY: number;
29
+ /** Card kept at its anchor (the selected thread). */
30
+ pinnedId?: string | null;
31
+ };
32
+ export type BalloonPosition = {
33
+ id: string;
34
+ top: number;
35
+ };
36
+ export type BalloonLayout = {
37
+ positions: BalloonPosition[];
38
+ /** The cards do not fit between minY and maxY; positions are clamped. */
39
+ overflow: boolean;
40
+ };
41
+ export declare function layoutBalloons(items: readonly BalloonInput[], { gap, minY, maxY, pinnedId }: BalloonLayoutOptions): BalloonLayout;
42
+ /** Sort helper: by anchor, then creation time, then id for a stable order. */
43
+ export declare function compareBalloonAnchors(a: {
44
+ anchorY: number;
45
+ created: number;
46
+ id: string;
47
+ }, b: {
48
+ anchorY: number;
49
+ created: number;
50
+ id: string;
51
+ }): number;