@parhelia/core 0.3.12832 → 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 (472) 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.js +6 -0
  23. package/dist/editor/agent-changes/agentChangeTargets.js.map +1 -1
  24. package/dist/editor/agent-changes/agentChangeTextHighlight.d.ts +48 -4
  25. package/dist/editor/agent-changes/agentChangeTextHighlight.js +67 -9
  26. package/dist/editor/agent-changes/agentChangeTextHighlight.js.map +1 -1
  27. package/dist/editor/ai/AgentImagePreview.d.ts +13 -0
  28. package/dist/editor/ai/AgentImagePreview.js +41 -0
  29. package/dist/editor/ai/AgentImagePreview.js.map +1 -0
  30. package/dist/editor/ai/terminal/components/CreateItemToolCallContent.js +1 -1
  31. package/dist/editor/ai/terminal/components/CreateItemToolCallContent.js.map +1 -1
  32. package/dist/editor/ai/terminal/components/ResponseTurnDuration.js +1 -2
  33. package/dist/editor/ai/terminal/components/ResponseTurnDuration.js.map +1 -1
  34. package/dist/editor/ai/terminal/components/ToolCallDiagnosticsPanel.d.ts +6 -0
  35. package/dist/editor/ai/terminal/components/ToolCallDiagnosticsPanel.js +61 -0
  36. package/dist/editor/ai/terminal/components/ToolCallDiagnosticsPanel.js.map +1 -0
  37. package/dist/editor/ai/terminal/toolCallDiagnostics.d.ts +34 -0
  38. package/dist/editor/ai/terminal/toolCallDiagnostics.js +218 -0
  39. package/dist/editor/ai/terminal/toolCallDiagnostics.js.map +1 -0
  40. package/dist/editor/bridge/linkDownload.d.ts +3 -0
  41. package/dist/editor/bridge/linkDownload.js +52 -0
  42. package/dist/editor/bridge/linkDownload.js.map +1 -0
  43. package/dist/editor/client/clipboardStorage.d.ts +10 -0
  44. package/dist/editor/client/clipboardStorage.js +57 -0
  45. package/dist/editor/client/clipboardStorage.js.map +1 -0
  46. package/dist/editor/client/hooks/useRepositoryItemRefresh.d.ts +4 -0
  47. package/dist/editor/client/hooks/useRepositoryItemRefresh.js +62 -0
  48. package/dist/editor/client/hooks/useRepositoryItemRefresh.js.map +1 -0
  49. package/dist/editor/client/liveEditState.d.ts +16 -0
  50. package/dist/editor/client/liveEditState.js +25 -0
  51. package/dist/editor/client/liveEditState.js.map +1 -0
  52. package/dist/editor/client/liveSessionState.d.ts +6 -0
  53. package/dist/editor/client/liveSessionState.js +20 -0
  54. package/dist/editor/client/liveSessionState.js.map +1 -0
  55. package/dist/editor/client/valueStore.d.ts +22 -0
  56. package/dist/editor/client/valueStore.js +29 -0
  57. package/dist/editor/client/valueStore.js.map +1 -0
  58. package/dist/editor/commands/componentClipboardCommands.d.ts +35 -0
  59. package/dist/editor/commands/componentClipboardCommands.js +271 -0
  60. package/dist/editor/commands/componentClipboardCommands.js.map +1 -0
  61. package/dist/editor/commands/componentMenuGroups.d.ts +2 -0
  62. package/dist/editor/commands/componentMenuGroups.js +43 -0
  63. package/dist/editor/commands/componentMenuGroups.js.map +1 -0
  64. package/dist/editor/component-conversion/ComponentTypePickerDialog.d.ts +12 -0
  65. package/dist/editor/component-conversion/ComponentTypePickerDialog.js +40 -0
  66. package/dist/editor/component-conversion/ComponentTypePickerDialog.js.map +1 -0
  67. package/dist/editor/component-conversion/ConversionAiDebugButton.d.ts +17 -0
  68. package/dist/editor/component-conversion/ConversionAiDebugButton.js +80 -0
  69. package/dist/editor/component-conversion/ConversionAiDebugButton.js.map +1 -0
  70. package/dist/editor/component-conversion/ConvertComponentDialog.d.ts +28 -0
  71. package/dist/editor/component-conversion/ConvertComponentDialog.js +633 -0
  72. package/dist/editor/component-conversion/ConvertComponentDialog.js.map +1 -0
  73. package/dist/editor/component-conversion/conversionModel.d.ts +109 -0
  74. package/dist/editor/component-conversion/conversionModel.js +519 -0
  75. package/dist/editor/component-conversion/conversionModel.js.map +1 -0
  76. package/dist/editor/component-conversion/conversionService.d.ts +12 -0
  77. package/dist/editor/component-conversion/conversionService.js +16 -0
  78. package/dist/editor/component-conversion/conversionService.js.map +1 -0
  79. package/dist/editor/component-conversion/conversionTypes.d.ts +214 -0
  80. package/dist/editor/component-conversion/conversionTypes.js +2 -0
  81. package/dist/editor/component-conversion/conversionTypes.js.map +1 -0
  82. package/dist/editor/component-conversion/convertComponentsCommand.d.ts +25 -0
  83. package/dist/editor/component-conversion/convertComponentsCommand.js +196 -0
  84. package/dist/editor/component-conversion/convertComponentsCommand.js.map +1 -0
  85. package/dist/editor/field-types/FieldHistoryBoundary.js +28 -7
  86. package/dist/editor/field-types/FieldHistoryBoundary.js.map +1 -1
  87. package/dist/editor/field-types/fieldStyles.d.ts +21 -0
  88. package/dist/editor/field-types/fieldStyles.js +22 -0
  89. package/dist/editor/field-types/fieldStyles.js.map +1 -0
  90. package/dist/editor/field-types/richtext/utils/changeHighlight.d.ts +14 -0
  91. package/dist/editor/field-types/richtext/utils/changeHighlight.js +12 -1
  92. package/dist/editor/field-types/richtext/utils/changeHighlight.js.map +1 -1
  93. package/dist/editor/field-types/richtext/utils/spellCheckText.d.ts +31 -0
  94. package/dist/editor/field-types/richtext/utils/spellCheckText.js +82 -0
  95. package/dist/editor/field-types/richtext/utils/spellCheckText.js.map +1 -0
  96. package/dist/editor/field-types/useFocusedFieldInput.d.ts +13 -0
  97. package/dist/editor/field-types/useFocusedFieldInput.js +50 -0
  98. package/dist/editor/field-types/useFocusedFieldInput.js.map +1 -0
  99. package/dist/editor/field-types/useFormFieldSelectionRange.d.ts +43 -0
  100. package/dist/editor/field-types/useFormFieldSelectionRange.js +149 -0
  101. package/dist/editor/field-types/useFormFieldSelectionRange.js.map +1 -0
  102. package/dist/editor/find-replace/FindReplacePanel.d.ts +11 -0
  103. package/dist/editor/find-replace/FindReplacePanel.js +311 -0
  104. package/dist/editor/find-replace/FindReplacePanel.js.map +1 -0
  105. package/dist/editor/find-replace/findReplaceCommand.d.ts +8 -0
  106. package/dist/editor/find-replace/findReplaceCommand.js +25 -0
  107. package/dist/editor/find-replace/findReplaceCommand.js.map +1 -0
  108. package/dist/editor/find-replace/findReplaceMatches.d.ts +42 -0
  109. package/dist/editor/find-replace/findReplaceMatches.js +66 -0
  110. package/dist/editor/find-replace/findReplaceMatches.js.map +1 -0
  111. package/dist/editor/find-replace/findReplaceStore.d.ts +30 -0
  112. package/dist/editor/find-replace/findReplaceStore.js +61 -0
  113. package/dist/editor/find-replace/findReplaceStore.js.map +1 -0
  114. package/dist/editor/find-replace/findReplaceTargets.d.ts +51 -0
  115. package/dist/editor/find-replace/findReplaceTargets.js +110 -0
  116. package/dist/editor/find-replace/findReplaceTargets.js.map +1 -0
  117. package/dist/editor/find-replace/findReplaceText.d.ts +50 -0
  118. package/dist/editor/find-replace/findReplaceText.js +189 -0
  119. package/dist/editor/find-replace/findReplaceText.js.map +1 -0
  120. package/dist/editor/itemContextMenuGroups.js +10 -1
  121. package/dist/editor/itemContextMenuGroups.js.map +1 -1
  122. package/dist/editor/media-selector/MediaDetailsView.d.ts +14 -0
  123. package/dist/editor/media-selector/MediaDetailsView.js +152 -0
  124. package/dist/editor/media-selector/MediaDetailsView.js.map +1 -0
  125. package/dist/editor/media-selector/useMediaFolderDrag.d.ts +26 -0
  126. package/dist/editor/media-selector/useMediaFolderDrag.js +153 -0
  127. package/dist/editor/media-selector/useMediaFolderDrag.js.map +1 -0
  128. package/dist/editor/menubar/toolbar-sections/CommentsToggleControl.d.ts +11 -0
  129. package/dist/editor/menubar/toolbar-sections/CommentsToggleControl.js +65 -0
  130. package/dist/editor/menubar/toolbar-sections/CommentsToggleControl.js.map +1 -0
  131. package/dist/editor/menubar/toolbar-sections/FindReplaceControls.d.ts +6 -0
  132. package/dist/editor/menubar/toolbar-sections/FindReplaceControls.js +31 -0
  133. package/dist/editor/menubar/toolbar-sections/FindReplaceControls.js.map +1 -0
  134. package/dist/editor/menubar/toolbar-sections/SpellCheckToggleControl.d.ts +5 -0
  135. package/dist/editor/menubar/toolbar-sections/SpellCheckToggleControl.js +16 -0
  136. package/dist/editor/menubar/toolbar-sections/SpellCheckToggleControl.js.map +1 -0
  137. package/dist/editor/mobileBottomPanel.d.ts +40 -0
  138. package/dist/editor/mobileBottomPanel.js +63 -0
  139. package/dist/editor/mobileBottomPanel.js.map +1 -0
  140. package/dist/editor/page-editor-chrome/AgentChangeHighlightings.d.ts +3 -6
  141. package/dist/editor/page-editor-chrome/AgentChangeHighlightings.js +8 -6
  142. package/dist/editor/page-editor-chrome/AgentChangeHighlightings.js.map +1 -1
  143. package/dist/editor/page-editor-chrome/BridgePasteCleanupOverlay.d.ts +6 -0
  144. package/dist/editor/page-editor-chrome/BridgePasteCleanupOverlay.js +100 -0
  145. package/dist/editor/page-editor-chrome/BridgePasteCleanupOverlay.js.map +1 -0
  146. package/dist/editor/page-editor-chrome/CanvasOverviewRulerBinding.d.ts +9 -0
  147. package/dist/editor/page-editor-chrome/CanvasOverviewRulerBinding.js +32 -0
  148. package/dist/editor/page-editor-chrome/CanvasOverviewRulerBinding.js.map +1 -0
  149. package/dist/editor/page-editor-chrome/CommentTargetPickerCanvasLayer.d.ts +14 -0
  150. package/dist/editor/page-editor-chrome/CommentTargetPickerCanvasLayer.js +110 -0
  151. package/dist/editor/page-editor-chrome/CommentTargetPickerCanvasLayer.js.map +1 -0
  152. package/dist/editor/page-editor-chrome/ConversionIndicators.d.ts +8 -0
  153. package/dist/editor/page-editor-chrome/ConversionIndicators.js +75 -0
  154. package/dist/editor/page-editor-chrome/ConversionIndicators.js.map +1 -0
  155. package/dist/editor/page-editor-chrome/DiffHighlightOverlay.d.ts +9 -13
  156. package/dist/editor/page-editor-chrome/DiffHighlightOverlay.js +25 -20
  157. package/dist/editor/page-editor-chrome/DiffHighlightOverlay.js.map +1 -1
  158. package/dist/editor/page-editor-chrome/FeedbackLeaderCanvasSegment.d.ts +15 -0
  159. package/dist/editor/page-editor-chrome/FeedbackLeaderCanvasSegment.js +31 -0
  160. package/dist/editor/page-editor-chrome/FeedbackLeaderCanvasSegment.js.map +1 -0
  161. package/dist/editor/page-editor-chrome/FindReplaceHighlightings.d.ts +11 -0
  162. package/dist/editor/page-editor-chrome/FindReplaceHighlightings.js +120 -0
  163. package/dist/editor/page-editor-chrome/FindReplaceHighlightings.js.map +1 -0
  164. package/dist/editor/page-editor-chrome/SpellCheckHighlightings.d.ts +12 -0
  165. package/dist/editor/page-editor-chrome/SpellCheckHighlightings.js +197 -0
  166. package/dist/editor/page-editor-chrome/SpellCheckHighlightings.js.map +1 -0
  167. package/dist/editor/page-editor-chrome/ValidationRulerMarks.d.ts +11 -0
  168. package/dist/editor/page-editor-chrome/ValidationRulerMarks.js +56 -0
  169. package/dist/editor/page-editor-chrome/ValidationRulerMarks.js.map +1 -0
  170. package/dist/editor/page-editor-chrome/overlay/feedbackAnchorMeasurements.d.ts +44 -0
  171. package/dist/editor/page-editor-chrome/overlay/feedbackAnchorMeasurements.js +89 -0
  172. package/dist/editor/page-editor-chrome/overlay/feedbackAnchorMeasurements.js.map +1 -0
  173. package/dist/editor/page-editor-chrome/overlay/feedbackAnchorStore.d.ts +17 -0
  174. package/dist/editor/page-editor-chrome/overlay/feedbackAnchorStore.js +53 -0
  175. package/dist/editor/page-editor-chrome/overlay/feedbackAnchorStore.js.map +1 -0
  176. package/dist/editor/page-editor-chrome/overlay/useBridgeTextRangeRequest.d.ts +11 -0
  177. package/dist/editor/page-editor-chrome/overlay/useBridgeTextRangeRequest.js +84 -0
  178. package/dist/editor/page-editor-chrome/overlay/useBridgeTextRangeRequest.js.map +1 -0
  179. package/dist/editor/page-editor-chrome/overlay/useCommentAnchorMeasurements.d.ts +34 -0
  180. package/dist/editor/page-editor-chrome/overlay/useCommentAnchorMeasurements.js +229 -0
  181. package/dist/editor/page-editor-chrome/overlay/useCommentAnchorMeasurements.js.map +1 -0
  182. package/dist/editor/page-editor-chrome/overlay/useOverlayViewportRight.d.ts +9 -0
  183. package/dist/editor/page-editor-chrome/overlay/useOverlayViewportRight.js +34 -0
  184. package/dist/editor/page-editor-chrome/overlay/useOverlayViewportRight.js.map +1 -0
  185. package/dist/editor/page-editor-chrome/overlay/useSuggestionAnchorMeasurements.d.ts +49 -0
  186. package/dist/editor/page-editor-chrome/overlay/useSuggestionAnchorMeasurements.js +241 -0
  187. package/dist/editor/page-editor-chrome/overlay/useSuggestionAnchorMeasurements.js.map +1 -0
  188. package/dist/editor/page-viewer/CanvasOverviewRuler.d.ts +11 -0
  189. package/dist/editor/page-viewer/CanvasOverviewRuler.js +65 -0
  190. package/dist/editor/page-viewer/CanvasOverviewRuler.js.map +1 -0
  191. package/dist/editor/page-viewer/DynamicRenderingsBar.d.ts +23 -0
  192. package/dist/editor/page-viewer/DynamicRenderingsBar.js +28 -0
  193. package/dist/editor/page-viewer/DynamicRenderingsBar.js.map +1 -0
  194. package/dist/editor/page-viewer/DynamicRenderingsStrip.d.ts +18 -0
  195. package/dist/editor/page-viewer/DynamicRenderingsStrip.js +29 -0
  196. package/dist/editor/page-viewer/DynamicRenderingsStrip.js.map +1 -0
  197. package/dist/editor/page-viewer/FeedbackMargin.d.ts +57 -0
  198. package/dist/editor/page-viewer/FeedbackMargin.js +377 -0
  199. package/dist/editor/page-viewer/FeedbackMargin.js.map +1 -0
  200. package/dist/editor/page-viewer/FeedbackMarginController.d.ts +76 -0
  201. package/dist/editor/page-viewer/FeedbackMarginController.js +241 -0
  202. package/dist/editor/page-viewer/FeedbackMarginController.js.map +1 -0
  203. package/dist/editor/page-viewer/FeedbackMarginMarker.d.ts +16 -0
  204. package/dist/editor/page-viewer/FeedbackMarginMarker.js +24 -0
  205. package/dist/editor/page-viewer/FeedbackMarginMarker.js.map +1 -0
  206. package/dist/editor/page-viewer/FeedbackMarginResizeHandle.d.ts +23 -0
  207. package/dist/editor/page-viewer/FeedbackMarginResizeHandle.js +105 -0
  208. package/dist/editor/page-viewer/FeedbackMarginResizeHandle.js.map +1 -0
  209. package/dist/editor/page-viewer/InteractivePreviewBar.d.ts +24 -0
  210. package/dist/editor/page-viewer/InteractivePreviewBar.js +31 -0
  211. package/dist/editor/page-viewer/InteractivePreviewBar.js.map +1 -0
  212. package/dist/editor/page-viewer/MobileCommentsPanel.d.ts +16 -0
  213. package/dist/editor/page-viewer/MobileCommentsPanel.js +112 -0
  214. package/dist/editor/page-viewer/MobileCommentsPanel.js.map +1 -0
  215. package/dist/editor/page-viewer/RenderingAiCheck.d.ts +18 -0
  216. package/dist/editor/page-viewer/RenderingAiCheck.js +45 -0
  217. package/dist/editor/page-viewer/RenderingAiCheck.js.map +1 -0
  218. package/dist/editor/page-viewer/RenderingApprovalDialog.d.ts +32 -0
  219. package/dist/editor/page-viewer/RenderingApprovalDialog.js +191 -0
  220. package/dist/editor/page-viewer/RenderingApprovalDialog.js.map +1 -0
  221. package/dist/editor/page-viewer/SealedClientCodePreview.d.ts +17 -0
  222. package/dist/editor/page-viewer/SealedClientCodePreview.js +38 -0
  223. package/dist/editor/page-viewer/SealedClientCodePreview.js.map +1 -0
  224. package/dist/editor/page-viewer/canvasFrameNavigation.d.ts +18 -0
  225. package/dist/editor/page-viewer/canvasFrameNavigation.js +36 -0
  226. package/dist/editor/page-viewer/canvasFrameNavigation.js.map +1 -0
  227. package/dist/editor/page-viewer/canvasLoadSettling.d.ts +42 -0
  228. package/dist/editor/page-viewer/canvasLoadSettling.js +46 -0
  229. package/dist/editor/page-viewer/canvasLoadSettling.js.map +1 -0
  230. package/dist/editor/page-viewer/canvasScrollHandoff.d.ts +34 -0
  231. package/dist/editor/page-viewer/canvasScrollHandoff.js +55 -0
  232. package/dist/editor/page-viewer/canvasScrollHandoff.js.map +1 -0
  233. package/dist/editor/page-viewer/compareFrameWidth.d.ts +8 -0
  234. package/dist/editor/page-viewer/compareFrameWidth.js +25 -0
  235. package/dist/editor/page-viewer/compareFrameWidth.js.map +1 -0
  236. package/dist/editor/page-viewer/feedbackMarginLayout.d.ts +119 -0
  237. package/dist/editor/page-viewer/feedbackMarginLayout.js +155 -0
  238. package/dist/editor/page-viewer/feedbackMarginLayout.js.map +1 -0
  239. package/dist/editor/page-viewer/feedbackMarginSources.d.ts +36 -0
  240. package/dist/editor/page-viewer/feedbackMarginSources.js +196 -0
  241. package/dist/editor/page-viewer/feedbackMarginSources.js.map +1 -0
  242. package/dist/editor/page-viewer/feedbackMarginWidth.d.ts +43 -0
  243. package/dist/editor/page-viewer/feedbackMarginWidth.js +107 -0
  244. package/dist/editor/page-viewer/feedbackMarginWidth.js.map +1 -0
  245. package/dist/editor/page-viewer/interactivePreview.d.ts +168 -0
  246. package/dist/editor/page-viewer/interactivePreview.js +344 -0
  247. package/dist/editor/page-viewer/interactivePreview.js.map +1 -0
  248. package/dist/editor/page-viewer/minimapViewport.d.ts +2 -0
  249. package/dist/editor/page-viewer/minimapViewport.js +34 -0
  250. package/dist/editor/page-viewer/minimapViewport.js.map +1 -0
  251. package/dist/editor/page-viewer/openPageItems.d.ts +29 -0
  252. package/dist/editor/page-viewer/openPageItems.js +73 -0
  253. package/dist/editor/page-viewer/openPageItems.js.map +1 -0
  254. package/dist/editor/page-viewer/overviewRuler.d.ts +128 -0
  255. package/dist/editor/page-viewer/overviewRuler.js +226 -0
  256. package/dist/editor/page-viewer/overviewRuler.js.map +1 -0
  257. package/dist/editor/page-viewer/renderingApproval.d.ts +59 -0
  258. package/dist/editor/page-viewer/renderingApproval.js +186 -0
  259. package/dist/editor/page-viewer/renderingApproval.js.map +1 -0
  260. package/dist/editor/page-viewer/renderingChanges.d.ts +29 -0
  261. package/dist/editor/page-viewer/renderingChanges.js +40 -0
  262. package/dist/editor/page-viewer/renderingChanges.js.map +1 -0
  263. package/dist/editor/page-viewer/scrollIntoViewTextRanges.d.ts +23 -0
  264. package/dist/editor/page-viewer/scrollIntoViewTextRanges.js +26 -0
  265. package/dist/editor/page-viewer/scrollIntoViewTextRanges.js.map +1 -0
  266. package/dist/editor/page-viewer/useInteractivePreview.d.ts +77 -0
  267. package/dist/editor/page-viewer/useInteractivePreview.js +210 -0
  268. package/dist/editor/page-viewer/useInteractivePreview.js.map +1 -0
  269. package/dist/editor/reviews/CollapsibleText.d.ts +13 -0
  270. package/dist/editor/reviews/CollapsibleText.js +41 -0
  271. package/dist/editor/reviews/CollapsibleText.js.map +1 -0
  272. package/dist/editor/reviews/CommentImageAttachments.d.ts +12 -0
  273. package/dist/editor/reviews/CommentImageAttachments.js +19 -0
  274. package/dist/editor/reviews/CommentImageAttachments.js.map +1 -0
  275. package/dist/editor/reviews/CommentQuote.d.ts +13 -0
  276. package/dist/editor/reviews/CommentQuote.js +35 -0
  277. package/dist/editor/reviews/CommentQuote.js.map +1 -0
  278. package/dist/editor/reviews/CommentTargetOutline.d.ts +13 -0
  279. package/dist/editor/reviews/CommentTargetOutline.js +21 -0
  280. package/dist/editor/reviews/CommentTargetOutline.js.map +1 -0
  281. package/dist/editor/reviews/CommentTargetPickerDomLayer.d.ts +7 -0
  282. package/dist/editor/reviews/CommentTargetPickerDomLayer.js +117 -0
  283. package/dist/editor/reviews/CommentTargetPickerDomLayer.js.map +1 -0
  284. package/dist/editor/reviews/CommentThreadAgentLink.d.ts +28 -0
  285. package/dist/editor/reviews/CommentThreadAgentLink.js +37 -0
  286. package/dist/editor/reviews/CommentThreadAgentLink.js.map +1 -0
  287. package/dist/editor/reviews/CommentThreadCard.d.ts +34 -0
  288. package/dist/editor/reviews/CommentThreadCard.js +156 -0
  289. package/dist/editor/reviews/CommentThreadCard.js.map +1 -0
  290. package/dist/editor/reviews/SuggestionThreadCard.d.ts +19 -0
  291. package/dist/editor/reviews/SuggestionThreadCard.js +25 -0
  292. package/dist/editor/reviews/SuggestionThreadCard.js.map +1 -0
  293. package/dist/editor/reviews/addCommentOnTarget.d.ts +22 -0
  294. package/dist/editor/reviews/addCommentOnTarget.js +32 -0
  295. package/dist/editor/reviews/addCommentOnTarget.js.map +1 -0
  296. package/dist/editor/reviews/balloonLayout.d.ts +51 -0
  297. package/dist/editor/reviews/balloonLayout.js +101 -0
  298. package/dist/editor/reviews/balloonLayout.js.map +1 -0
  299. package/dist/editor/reviews/commentAgentAttachments.d.ts +5 -0
  300. package/dist/editor/reviews/commentAgentAttachments.js +51 -0
  301. package/dist/editor/reviews/commentAgentAttachments.js.map +1 -0
  302. package/dist/editor/reviews/commentImages.d.ts +48 -0
  303. package/dist/editor/reviews/commentImages.js +128 -0
  304. package/dist/editor/reviews/commentImages.js.map +1 -0
  305. package/dist/editor/reviews/commentTargetPicker.d.ts +114 -0
  306. package/dist/editor/reviews/commentTargetPicker.js +153 -0
  307. package/dist/editor/reviews/commentTargetPicker.js.map +1 -0
  308. package/dist/editor/reviews/feedbackBalloonDate.d.ts +8 -0
  309. package/dist/editor/reviews/feedbackBalloonDate.js +22 -0
  310. package/dist/editor/reviews/feedbackBalloonDate.js.map +1 -0
  311. package/dist/editor/reviews/feedbackDrafts.d.ts +49 -0
  312. package/dist/editor/reviews/feedbackDrafts.js +74 -0
  313. package/dist/editor/reviews/feedbackDrafts.js.map +1 -0
  314. package/dist/editor/reviews/feedbackHoverState.d.ts +18 -0
  315. package/dist/editor/reviews/feedbackHoverState.js +35 -0
  316. package/dist/editor/reviews/feedbackHoverState.js.map +1 -0
  317. package/dist/editor/reviews/feedbackPersonFilter.d.ts +3 -0
  318. package/dist/editor/reviews/feedbackPersonFilter.js +32 -0
  319. package/dist/editor/reviews/feedbackPersonFilter.js.map +1 -0
  320. package/dist/editor/reviews/feedbackThreadSelection.d.ts +10 -0
  321. package/dist/editor/reviews/feedbackThreadSelection.js +31 -0
  322. package/dist/editor/reviews/feedbackThreadSelection.js.map +1 -0
  323. package/dist/editor/reviews/feedbackThreads.d.ts +50 -0
  324. package/dist/editor/reviews/feedbackThreads.js +135 -0
  325. package/dist/editor/reviews/feedbackThreads.js.map +1 -0
  326. package/dist/editor/reviews/feedbackWheelForwarding.d.ts +34 -0
  327. package/dist/editor/reviews/feedbackWheelForwarding.js +108 -0
  328. package/dist/editor/reviews/feedbackWheelForwarding.js.map +1 -0
  329. package/dist/editor/reviews/reviewUrlScope.d.ts +23 -0
  330. package/dist/editor/reviews/reviewUrlScope.js +86 -0
  331. package/dist/editor/reviews/reviewUrlScope.js.map +1 -0
  332. package/dist/editor/reviews/scrollWithin.d.ts +29 -0
  333. package/dist/editor/reviews/scrollWithin.js +87 -0
  334. package/dist/editor/reviews/scrollWithin.js.map +1 -0
  335. package/dist/editor/reviews/subtreeFeedback.d.ts +57 -0
  336. package/dist/editor/reviews/subtreeFeedback.js +137 -0
  337. package/dist/editor/reviews/subtreeFeedback.js.map +1 -0
  338. package/dist/editor/reviews/useCommentImagePaste.d.ts +80 -0
  339. package/dist/editor/reviews/useCommentImagePaste.js +252 -0
  340. package/dist/editor/reviews/useCommentImagePaste.js.map +1 -0
  341. package/dist/editor/reviews/useFeedbackThreads.d.ts +35 -0
  342. package/dist/editor/reviews/useFeedbackThreads.js +137 -0
  343. package/dist/editor/reviews/useFeedbackThreads.js.map +1 -0
  344. package/dist/editor/reviews/useMeasuredHeights.d.ts +25 -0
  345. package/dist/editor/reviews/useMeasuredHeights.js +176 -0
  346. package/dist/editor/reviews/useMeasuredHeights.js.map +1 -0
  347. package/dist/editor/reviews/usePendingFeedbackFocus.d.ts +7 -0
  348. package/dist/editor/reviews/usePendingFeedbackFocus.js +42 -0
  349. package/dist/editor/reviews/usePendingFeedbackFocus.js.map +1 -0
  350. package/dist/editor/services/mcpAccessService.d.ts +93 -0
  351. package/dist/editor/services/mcpAccessService.js +41 -0
  352. package/dist/editor/services/mcpAccessService.js.map +1 -0
  353. package/dist/editor/services/previewTokenService.d.ts +14 -0
  354. package/dist/editor/services/previewTokenService.js +34 -0
  355. package/dist/editor/services/previewTokenService.js.map +1 -0
  356. package/dist/editor/services/renderingsService.d.ts +117 -0
  357. package/dist/editor/services/renderingsService.js +245 -0
  358. package/dist/editor/services/renderingsService.js.map +1 -0
  359. package/dist/editor/services/spellCheckService.d.ts +13 -0
  360. package/dist/editor/services/spellCheckService.js +33 -0
  361. package/dist/editor/services/spellCheckService.js.map +1 -0
  362. package/dist/editor/settings/panels/McpAccessPanel.d.ts +7 -0
  363. package/dist/editor/settings/panels/McpAccessPanel.js +95 -0
  364. package/dist/editor/settings/panels/McpAccessPanel.js.map +1 -0
  365. package/dist/editor/settings/panels/McpAccessSettingsView.d.ts +8 -0
  366. package/dist/editor/settings/panels/McpAccessSettingsView.js +221 -0
  367. package/dist/editor/settings/panels/McpAccessSettingsView.js.map +1 -0
  368. package/dist/editor/settings/panels/SpellCheckPanel.d.ts +8 -0
  369. package/dist/editor/settings/panels/SpellCheckPanel.js +253 -0
  370. package/dist/editor/settings/panels/SpellCheckPanel.js.map +1 -0
  371. package/dist/editor/sidebar/FeedbackSidebar.d.ts +7 -0
  372. package/dist/editor/sidebar/FeedbackSidebar.js +300 -0
  373. package/dist/editor/sidebar/FeedbackSidebar.js.map +1 -0
  374. package/dist/editor/sidebar/OperationDetailsContent.js +50 -0
  375. package/dist/editor/sidebar/OperationDetailsContent.js.map +1 -1
  376. package/dist/editor/sidebar/liveComponentThumbnails.d.ts +19 -6
  377. package/dist/editor/sidebar/liveComponentThumbnails.js +39 -18
  378. package/dist/editor/sidebar/liveComponentThumbnails.js.map +1 -1
  379. package/dist/editor/spellcheck/canvasSpellCheckContextMenu.d.ts +30 -0
  380. package/dist/editor/spellcheck/canvasSpellCheckContextMenu.js +69 -0
  381. package/dist/editor/spellcheck/canvasSpellCheckContextMenu.js.map +1 -0
  382. package/dist/editor/spellcheck/htmlSpellDocument.d.ts +60 -0
  383. package/dist/editor/spellcheck/htmlSpellDocument.js +181 -0
  384. package/dist/editor/spellcheck/htmlSpellDocument.js.map +1 -0
  385. package/dist/editor/spellcheck/htmlSpellTokenizer.d.ts +45 -0
  386. package/dist/editor/spellcheck/htmlSpellTokenizer.js +277 -0
  387. package/dist/editor/spellcheck/htmlSpellTokenizer.js.map +1 -0
  388. package/dist/editor/spellcheck/replacementGuard.d.ts +27 -0
  389. package/dist/editor/spellcheck/replacementGuard.js +29 -0
  390. package/dist/editor/spellcheck/replacementGuard.js.map +1 -0
  391. package/dist/editor/spellcheck/spellCheckCanvasStore.d.ts +17 -0
  392. package/dist/editor/spellcheck/spellCheckCanvasStore.js +37 -0
  393. package/dist/editor/spellcheck/spellCheckCanvasStore.js.map +1 -0
  394. package/dist/editor/spellcheck/spellCheckCanvasTargets.d.ts +71 -0
  395. package/dist/editor/spellcheck/spellCheckCanvasTargets.js +126 -0
  396. package/dist/editor/spellcheck/spellCheckCanvasTargets.js.map +1 -0
  397. package/dist/editor/spellcheck/spellCheckClient.d.ts +66 -0
  398. package/dist/editor/spellcheck/spellCheckClient.js +0 -0
  399. package/dist/editor/spellcheck/spellCheckClient.js.map +1 -0
  400. package/dist/editor/spellcheck/spellCheckContextMenu.d.ts +52 -0
  401. package/dist/editor/spellcheck/spellCheckContextMenu.js +120 -0
  402. package/dist/editor/spellcheck/spellCheckContextMenu.js.map +1 -0
  403. package/dist/editor/spellcheck/spellCheckReplace.d.ts +8 -0
  404. package/dist/editor/spellcheck/spellCheckReplace.js +20 -0
  405. package/dist/editor/spellcheck/spellCheckReplace.js.map +1 -0
  406. package/dist/editor/spellcheck/spellCheckStyles.d.ts +11 -0
  407. package/dist/editor/spellcheck/spellCheckStyles.js +12 -0
  408. package/dist/editor/spellcheck/spellCheckStyles.js.map +1 -0
  409. package/dist/editor/spellcheck/spellCheckTypes.d.ts +94 -0
  410. package/dist/editor/spellcheck/spellCheckTypes.js +2 -0
  411. package/dist/editor/spellcheck/spellCheckTypes.js.map +1 -0
  412. package/dist/editor/spellcheck/textMarkHitTest.d.ts +14 -0
  413. package/dist/editor/spellcheck/textMarkHitTest.js +39 -0
  414. package/dist/editor/spellcheck/textMarkHitTest.js.map +1 -0
  415. package/dist/editor/spellcheck/useSpellCheck.d.ts +16 -0
  416. package/dist/editor/spellcheck/useSpellCheck.js +57 -0
  417. package/dist/editor/spellcheck/useSpellCheck.js.map +1 -0
  418. package/dist/editor/ui/DynamicRenderingsPublishWarning.d.ts +14 -0
  419. package/dist/editor/ui/DynamicRenderingsPublishWarning.js +40 -0
  420. package/dist/editor/ui/DynamicRenderingsPublishWarning.js.map +1 -0
  421. package/dist/editor/ui/ParheliaMark.d.ts +15 -0
  422. package/dist/editor/ui/ParheliaMark.js +12 -0
  423. package/dist/editor/ui/ParheliaMark.js.map +1 -0
  424. package/dist/editor/ui/RootItemPicker.d.ts +18 -0
  425. package/dist/editor/ui/RootItemPicker.js +112 -0
  426. package/dist/editor/ui/RootItemPicker.js.map +1 -0
  427. package/dist/editor/undoEligibility.d.ts +2 -0
  428. package/dist/editor/undoEligibility.js +8 -0
  429. package/dist/editor/undoEligibility.js.map +1 -0
  430. package/dist/editor/utils/dataTransferImages.d.ts +7 -0
  431. package/dist/editor/utils/dataTransferImages.js +43 -0
  432. package/dist/editor/utils/dataTransferImages.js.map +1 -0
  433. package/dist/editor/validation/navigateToValidationIssue.d.ts +2 -2
  434. package/dist/editor/validation/navigateToValidationIssue.js +1 -1
  435. package/dist/editor/validation/navigateToValidationIssue.js.map +1 -1
  436. package/dist/editor/validation/validationRulerIssues.d.ts +17 -0
  437. package/dist/editor/validation/validationRulerIssues.js +44 -0
  438. package/dist/editor/validation/validationRulerIssues.js.map +1 -0
  439. package/dist/revision.d.ts +2 -2
  440. package/dist/revision.js +2 -2
  441. package/dist/task-board/components/AttentionPromptDialog.d.ts +13 -0
  442. package/dist/task-board/components/AttentionPromptDialog.js +45 -0
  443. package/dist/task-board/components/AttentionPromptDialog.js.map +1 -0
  444. package/dist/task-board/components/GoalFindingsTable.d.ts +43 -0
  445. package/dist/task-board/components/GoalFindingsTable.js +160 -0
  446. package/dist/task-board/components/GoalFindingsTable.js.map +1 -0
  447. package/dist/task-board/components/IssuePanel.d.ts +31 -0
  448. package/dist/task-board/components/IssuePanel.js +268 -0
  449. package/dist/task-board/components/IssuePanel.js.map +1 -0
  450. package/dist/task-board/components/SubgoalFindings.d.ts +40 -0
  451. package/dist/task-board/components/SubgoalFindings.js +88 -0
  452. package/dist/task-board/components/SubgoalFindings.js.map +1 -0
  453. package/dist/task-board/services/issueService.d.ts +193 -0
  454. package/dist/task-board/services/issueService.js +97 -0
  455. package/dist/task-board/services/issueService.js.map +1 -0
  456. package/dist/task-board/taskBlockers.d.ts +10 -0
  457. package/dist/task-board/taskBlockers.js +66 -0
  458. package/dist/task-board/taskBlockers.js.map +1 -0
  459. package/dist/task-board/utils/projectDashboardModel.js +14 -0
  460. package/dist/task-board/utils/projectDashboardModel.js.map +1 -1
  461. package/dist/task-board/views/ProjectDashboardView.js +5 -13
  462. package/dist/task-board/views/ProjectDashboardView.js.map +1 -1
  463. package/dist/tour/sandbox-tour-copy.d.ts +8 -0
  464. package/dist/tour/sandbox-tour-copy.js +8 -0
  465. package/dist/tour/sandbox-tour-copy.js.map +1 -1
  466. package/dist/tour/sandbox-tour.d.ts +3 -0
  467. package/dist/tour/sandbox-tour.js +107 -3
  468. package/dist/tour/sandbox-tour.js.map +1 -1
  469. package/package.json +1 -1
  470. package/dist/editor/page-editor-chrome/bridgeLinkValue.d.ts +0 -10
  471. package/dist/editor/page-editor-chrome/bridgeLinkValue.js +0 -55
  472. package/dist/editor/page-editor-chrome/bridgeLinkValue.js.map +0 -1
@@ -0,0 +1,53 @@
1
+ import { useCallback, useSyncExternalStore } from "react";
2
+ const EMPTY_SNAPSHOT = Object.freeze({
3
+ comments: {},
4
+ suggestions: {},
5
+ });
6
+ const entries = new WeakMap();
7
+ function getEntry(key) {
8
+ let entry = entries.get(key);
9
+ if (!entry) {
10
+ entry = { snapshot: EMPTY_SNAPSHOT, listeners: new Set() };
11
+ entries.set(key, entry);
12
+ }
13
+ return entry;
14
+ }
15
+ function publish(key, patch) {
16
+ if (!key)
17
+ return;
18
+ const entry = getEntry(key);
19
+ const next = { ...entry.snapshot, ...patch };
20
+ if (next.comments === entry.snapshot.comments &&
21
+ next.suggestions === entry.snapshot.suggestions) {
22
+ return;
23
+ }
24
+ entry.snapshot = next;
25
+ entry.listeners.forEach((listener) => listener());
26
+ }
27
+ export function publishCommentAnchors(key, comments) {
28
+ publish(key, { comments });
29
+ }
30
+ export function publishSuggestionAnchors(key, suggestions) {
31
+ publish(key, { suggestions });
32
+ }
33
+ export function getFeedbackAnchors(key) {
34
+ if (!key)
35
+ return EMPTY_SNAPSHOT;
36
+ return entries.get(key)?.snapshot ?? EMPTY_SNAPSHOT;
37
+ }
38
+ export function subscribeFeedbackAnchors(key, listener) {
39
+ if (!key)
40
+ return () => { };
41
+ const entry = getEntry(key);
42
+ entry.listeners.add(listener);
43
+ return () => {
44
+ entry.listeners.delete(listener);
45
+ };
46
+ }
47
+ /** The canvas anchors published for `key` (the page iframe element). */
48
+ export function useFeedbackAnchors(key) {
49
+ const subscribe = useCallback((listener) => subscribeFeedbackAnchors(key, listener), [key]);
50
+ const getSnapshot = useCallback(() => getFeedbackAnchors(key), [key]);
51
+ return useSyncExternalStore(subscribe, getSnapshot, getSnapshot);
52
+ }
53
+ //# sourceMappingURL=feedbackAnchorStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feedbackAnchorStore.js","sourceRoot":"","sources":["../../../../src/editor/page-editor-chrome/overlay/feedbackAnchorStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAmB1D,MAAM,cAAc,GAA2B,MAAM,CAAC,MAAM,CAAC;IAC3D,QAAQ,EAAE,EAAE;IACZ,WAAW,EAAE,EAAE;CAChB,CAAC,CAAC;AAEH,MAAM,OAAO,GAAG,IAAI,OAAO,EAAiB,CAAC;AAE7C,SAAS,QAAQ,CAAC,GAAW;IAC3B,IAAI,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,KAAK,GAAG,EAAE,QAAQ,EAAE,cAAc,EAAE,SAAS,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC;QAC3D,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC1B,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,OAAO,CACd,GAA8B,EAC9B,KAAsC;IAEtC,IAAI,CAAC,GAAG;QAAE,OAAO;IACjB,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC5B,MAAM,IAAI,GAAG,EAAE,GAAG,KAAK,CAAC,QAAQ,EAAE,GAAG,KAAK,EAAE,CAAC;IAC7C,IACE,IAAI,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ,CAAC,QAAQ;QACzC,IAAI,CAAC,WAAW,KAAK,KAAK,CAAC,QAAQ,CAAC,WAAW,EAC/C,CAAC;QACD,OAAO;IACT,CAAC;IACD,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;IACtB,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,GAA8B,EAC9B,QAA4B;IAE5B,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,GAA8B,EAC9B,WAA+B;IAE/B,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,GAA8B;IAC/D,IAAI,CAAC,GAAG;QAAE,OAAO,cAAc,CAAC;IAChC,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,QAAQ,IAAI,cAAc,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,GAA8B,EAC9B,QAAoB;IAEpB,IAAI,CAAC,GAAG;QAAE,OAAO,GAAG,EAAE,GAAE,CAAC,CAAC;IAC1B,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC5B,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC9B,OAAO,GAAG,EAAE;QACV,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACnC,CAAC,CAAC;AACJ,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,kBAAkB,CAAC,GAA8B;IAC/D,MAAM,SAAS,GAAG,WAAW,CAC3B,CAAC,QAAoB,EAAE,EAAE,CAAC,wBAAwB,CAAC,GAAG,EAAE,QAAQ,CAAC,EACjE,CAAC,GAAG,CAAC,CACN,CAAC;IACF,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACtE,OAAO,oBAAoB,CAAC,SAAS,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;AACnE,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { type BridgeGeometryQuery, type PageViewContext } from "../../page-viewer/pageViewContext";
2
+ export type BridgeTextRangeRequest = NonNullable<BridgeGeometryQuery["textRanges"]>[number];
3
+ export declare function getBridgeTextRangeSignature(textRanges: BridgeTextRangeRequest[]): string;
4
+ /**
5
+ * Keeps the canvas bridge's text-range geometry for one overlay feature
6
+ * (`source`) in sync with the ranges that feature currently needs. The bridge
7
+ * only answers with rects for ranges that were queried, so every consumer
8
+ * re-queries when its set changes, when the page re-rendered and the targets
9
+ * vanished, or when a previous query never produced any target.
10
+ */
11
+ export declare function useBridgeTextRangeRequest(pageViewContext: PageViewContext, source: string, textRanges: BridgeTextRangeRequest[], enabled?: boolean): void;
@@ -0,0 +1,84 @@
1
+ import { useEffect, useMemo, useRef } from "react";
2
+ import { usePageViewState, } from "../../page-viewer/pageViewContext";
3
+ import { hasAllExpectedBridgeTextRanges, hasAnyExpectedBridgeTextRange, } from "./feedbackAnchorMeasurements";
4
+ export function getBridgeTextRangeSignature(textRanges) {
5
+ return textRanges
6
+ .map((range) => [
7
+ range.key,
8
+ range.elementKey ?? "",
9
+ range.fieldId ?? "",
10
+ range.item?.id ?? "",
11
+ range.item?.language ?? "",
12
+ range.item?.version ?? "",
13
+ range.start,
14
+ range.end,
15
+ ].join(":"))
16
+ .join("|");
17
+ }
18
+ /**
19
+ * Keeps the canvas bridge's text-range geometry for one overlay feature
20
+ * (`source`) in sync with the ranges that feature currently needs. The bridge
21
+ * only answers with rects for ranges that were queried, so every consumer
22
+ * re-queries when its set changes, when the page re-rendered and the targets
23
+ * vanished, or when a previous query never produced any target.
24
+ */
25
+ export function useBridgeTextRangeRequest(pageViewContext, source, textRanges, enabled = true) {
26
+ // A readiness flip or a new geometry re-runs the effect: a comment that
27
+ // arrives during the bridge's reconnect (ready false for a few ms after a
28
+ // page load) is queried once the bridge is back.
29
+ const bridgeReady = usePageViewState(pageViewContext, (state) => state.bridgeReady);
30
+ const bridgeGeometry = usePageViewState(pageViewContext, (state) => state.bridgeGeometry);
31
+ const requestStateRef = useRef({
32
+ signature: "",
33
+ requestedSignature: "",
34
+ hasSeenAnyTarget: false,
35
+ });
36
+ const signature = useMemo(() => getBridgeTextRangeSignature(textRanges), [textRanges]);
37
+ useEffect(() => {
38
+ if (!enabled)
39
+ return;
40
+ const requestState = requestStateRef.current;
41
+ if (!bridgeReady || textRanges.length === 0) {
42
+ if (bridgeReady && requestState.signature !== "") {
43
+ // Drop our contribution from the shared union so the highlights clear
44
+ // instead of lingering as phantom geometry targets.
45
+ pageViewContext.requestBridgeGeometry?.({ source, textRanges: [] });
46
+ }
47
+ requestState.signature = "";
48
+ requestState.requestedSignature = "";
49
+ requestState.hasSeenAnyTarget = false;
50
+ return;
51
+ }
52
+ const signatureChanged = requestState.signature !== signature;
53
+ if (signatureChanged) {
54
+ requestState.signature = signature;
55
+ requestState.requestedSignature = "";
56
+ requestState.hasSeenAnyTarget = false;
57
+ }
58
+ const hasAnyTarget = hasAnyExpectedBridgeTextRange(bridgeGeometry, textRanges);
59
+ const hasAllTargets = hasAllExpectedBridgeTextRanges(bridgeGeometry, textRanges);
60
+ if (hasAnyTarget) {
61
+ requestState.hasSeenAnyTarget = true;
62
+ }
63
+ if (hasAllTargets && !signatureChanged) {
64
+ requestState.requestedSignature = "";
65
+ return;
66
+ }
67
+ const shouldRequest = signatureChanged ||
68
+ requestState.requestedSignature !== signature ||
69
+ (requestState.hasSeenAnyTarget && !hasAnyTarget);
70
+ if (!shouldRequest)
71
+ return;
72
+ requestState.requestedSignature = signature;
73
+ pageViewContext.requestBridgeGeometry?.({ source, textRanges });
74
+ }, [
75
+ enabled,
76
+ pageViewContext,
77
+ bridgeReady,
78
+ bridgeGeometry,
79
+ source,
80
+ textRanges,
81
+ signature,
82
+ ]);
83
+ }
84
+ //# sourceMappingURL=useBridgeTextRangeRequest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useBridgeTextRangeRequest.js","sourceRoot":"","sources":["../../../../src/editor/page-editor-chrome/overlay/useBridgeTextRangeRequest.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ import type { SelectionRange } from "../../client/editContext";
2
+ import type { Comment } from "../../../types";
3
+ import { type PageViewContext } from "../../page-viewer/pageViewContext";
4
+ import type { FieldDescriptor } from "../../pageModel";
5
+ import { OverlayRect } from "./geometry";
6
+ import { type AnchorMeasurements } from "./feedbackAnchorMeasurements";
7
+ export declare const COMMENT_BRIDGE_SOURCE = "comments";
8
+ export type CommentAnchorMeasurementsOptions = {
9
+ /**
10
+ * Whether this consumer asks the bridge for the text-range geometry. The
11
+ * canvas highlight layer does; secondary readers (margin, minimap) reuse the
12
+ * rects the canvas already requested.
13
+ */
14
+ request?: boolean;
15
+ };
16
+ export type CommentAnchorMeasurementsResult = {
17
+ measurements: AnchorMeasurements;
18
+ draftRects: OverlayRect[];
19
+ draftRange: SelectionRange | undefined;
20
+ };
21
+ /**
22
+ * Measures where each comment sits on the canvas: its anchored text range
23
+ * when the bridge resolved one, else the field, else the component, else the
24
+ * transient selection rect captured when the comment was drafted.
25
+ *
26
+ * Must run inside an `IframeOverlayProvider`.
27
+ */
28
+ export declare function useCommentAnchorMeasurements(pageViewContext: PageViewContext, comments: Comment[], options?: CommentAnchorMeasurementsOptions): CommentAnchorMeasurementsResult;
29
+ /**
30
+ * Geometry key for the comment's n-th candidate item: the comment's own key
31
+ * for its item, suffixed keys for the page / related-item fallbacks.
32
+ */
33
+ export declare function getCommentCandidateTextRangeKey(comment: Comment, candidateIndex: number): string;
34
+ export declare function getCommentFieldDescriptors(comment: Comment): FieldDescriptor[];
@@ -0,0 +1,229 @@
1
+ import { useEffect, useMemo, useRef, useState } from "react";
2
+ import { usePageViewState, } from "../../page-viewer/pageViewContext";
3
+ import { getComponentById } from "../../componentTreeHelper";
4
+ import { normalizeMarkerId } from "../../utils";
5
+ import { COMMENT_DRAFT_SELECTION_EVENT, COMMENT_TRANSIENT_SELECTION_RECT, } from "../../reviews/commentTransientSelection";
6
+ import { getCommentTextRange, getCommentTextRangeKey, getCommentTransientElementKey, } from "../../reviews/feedbackScrollTarget";
7
+ import { measureBridgeComponentRect, measureBridgeFieldRect, measureBridgeTextRangeRects, rectListEquals, toOverlayRect, } from "./geometry";
8
+ import { anchorMeasurementsEqual, dedupeOverlayRects, getFallbackTextRangeKey, } from "./feedbackAnchorMeasurements";
9
+ import { useBridgeTextRangeRequest, } from "./useBridgeTextRangeRequest";
10
+ import { useOverlayMeasurement } from "./useOverlayMeasurement";
11
+ export const COMMENT_BRIDGE_SOURCE = "comments";
12
+ const COMMENT_DRAFT_TEXT_RANGE_KEY = "comment-draft-selection";
13
+ /**
14
+ * Measures where each comment sits on the canvas: its anchored text range
15
+ * when the bridge resolved one, else the field, else the component, else the
16
+ * transient selection rect captured when the comment was drafted.
17
+ *
18
+ * Must run inside an `IframeOverlayProvider`.
19
+ */
20
+ export function useCommentAnchorMeasurements(pageViewContext, comments, options = {}) {
21
+ const { request = true } = options;
22
+ const lastMeasurementsRef = useRef({});
23
+ const [commentDraftRange, setCommentDraftRange] = useState();
24
+ const page = usePageViewState(pageViewContext, (state) => state.page);
25
+ const bridgeGeometry = usePageViewState(pageViewContext, (state) => state.bridgeGeometry);
26
+ const bridgeStructure = usePageViewState(pageViewContext, (state) => state.bridgeStructure);
27
+ const editorIframe = usePageViewState(pageViewContext, (state) => state.editorIframe);
28
+ useEffect(() => {
29
+ const handleDraftSelection = (event) => {
30
+ const detail = event
31
+ .detail;
32
+ setCommentDraftRange(detail?.range);
33
+ };
34
+ window.addEventListener(COMMENT_DRAFT_SELECTION_EVENT, handleDraftSelection);
35
+ return () => {
36
+ window.removeEventListener(COMMENT_DRAFT_SELECTION_EVENT, handleDraftSelection);
37
+ };
38
+ }, []);
39
+ const bridgeTextRanges = useMemo(() => {
40
+ const commentRanges = comments.flatMap((comment) => {
41
+ const range = getCommentTextRange(comment);
42
+ if (!comment.fieldId || !range)
43
+ return [];
44
+ // The comment's own item is the anchor; the page and related items are
45
+ // fallbacks for comments whose item is not rendered. They get their own
46
+ // keys so a fallback match cannot compete with the real one.
47
+ return getCommentFieldDescriptors(comment).map((descriptor, index) => ({
48
+ key: getCommentCandidateTextRangeKey(comment, index),
49
+ elementKey: getCommentTransientElementKey(comment),
50
+ fieldId: descriptor.fieldId,
51
+ item: descriptor.item,
52
+ start: range[0],
53
+ end: range[1],
54
+ }));
55
+ });
56
+ const draftRange = getDraftBridgeTextRange(commentDraftRange);
57
+ return draftRange ? [...commentRanges, draftRange] : commentRanges;
58
+ }, [comments, commentDraftRange]);
59
+ useBridgeTextRangeRequest(pageViewContext, COMMENT_BRIDGE_SOURCE, bridgeTextRanges, request);
60
+ const measurements = useOverlayMeasurement((metrics, reasons) => {
61
+ const canReusePreviousMeasurement = !reasons.has("viewport") &&
62
+ !reasons.has("layout") &&
63
+ !reasons.has("text");
64
+ const nextMeasurements = {};
65
+ for (const comment of comments) {
66
+ const textRange = getCommentTextRange(comment);
67
+ const fieldDescriptors = getCommentFieldDescriptors(comment);
68
+ const hasTextRange = !!comment.fieldId && !!textRange;
69
+ let textRangeRects = [];
70
+ if (hasTextRange) {
71
+ for (let index = 0; index < fieldDescriptors.length; index++) {
72
+ textRangeRects = dedupeOverlayRects(measureBridgeTextRangeRects(bridgeGeometry, getCommentCandidateTextRangeKey(comment, index), metrics));
73
+ if (textRangeRects.length > 0)
74
+ break;
75
+ }
76
+ }
77
+ const previousMeasurement = lastMeasurementsRef.current[comment.id];
78
+ const previousTextRangeRects = canReusePreviousMeasurement && previousMeasurement?.isTextRange
79
+ ? previousMeasurement.rects
80
+ : [];
81
+ let rects = [];
82
+ let isTextRange = false;
83
+ if (hasTextRange) {
84
+ rects = textRangeRects.length
85
+ ? textRangeRects
86
+ : previousTextRangeRects.length
87
+ ? previousTextRangeRects
88
+ : getTransientSelectionRects(comment, metrics, editorIframe);
89
+ isTextRange = rects.length > 0;
90
+ }
91
+ else {
92
+ const fallbackRect = fieldDescriptors
93
+ .map((descriptor) => measureBridgeFieldRect(bridgeGeometry, bridgeStructure, descriptor, metrics))
94
+ .find((rect) => !!rect) ??
95
+ measureBridgeCommentComponentRect(comment, page, bridgeGeometry, metrics);
96
+ rects = fallbackRect
97
+ ? [fallbackRect]
98
+ : canReusePreviousMeasurement && previousMeasurement?.rects.length
99
+ ? previousMeasurement.rects
100
+ : [];
101
+ isTextRange =
102
+ !fallbackRect &&
103
+ canReusePreviousMeasurement &&
104
+ previousMeasurement?.isTextRange === true;
105
+ }
106
+ if (rects.length > 0) {
107
+ nextMeasurements[comment.id] = { rects, isTextRange };
108
+ }
109
+ }
110
+ return nextMeasurements;
111
+ }, [bridgeGeometry, bridgeStructure, editorIframe, comments, page], {
112
+ initialValue: {},
113
+ equals: anchorMeasurementsEqual,
114
+ interests: ["viewport", "layout", "text", "adornment-data"],
115
+ });
116
+ const draftRects = useOverlayMeasurement((metrics) => {
117
+ if (!commentDraftRange)
118
+ return [];
119
+ const bridgeRects = dedupeOverlayRects(measureBridgeTextRangeRects(bridgeGeometry, COMMENT_DRAFT_TEXT_RANGE_KEY, metrics));
120
+ const fallbackRects = getSelectionRangeClientRects(commentDraftRange, metrics, editorIframe);
121
+ return bridgeRects.length ? bridgeRects : fallbackRects;
122
+ }, [commentDraftRange, bridgeGeometry, editorIframe], {
123
+ initialValue: [],
124
+ equals: rectListEquals,
125
+ interests: ["viewport", "layout", "text", "adornment-data"],
126
+ });
127
+ useEffect(() => {
128
+ lastMeasurementsRef.current = measurements;
129
+ }, [measurements]);
130
+ return { measurements, draftRects, draftRange: commentDraftRange };
131
+ }
132
+ function getDraftBridgeTextRange(range) {
133
+ const textRange = getSelectionTextRange(range);
134
+ if (!range?.fieldId || !range.itemId || !textRange)
135
+ return undefined;
136
+ return {
137
+ key: COMMENT_DRAFT_TEXT_RANGE_KEY,
138
+ elementKey: range.elementKey,
139
+ fieldId: range.fieldId,
140
+ item: {
141
+ id: range.itemId,
142
+ language: range.language || "",
143
+ version: typeof range.version === "number" ? range.version : undefined,
144
+ },
145
+ start: textRange[0],
146
+ end: textRange[1],
147
+ };
148
+ }
149
+ function getSelectionTextRange(range) {
150
+ if (!range?.text?.trim() ||
151
+ typeof range.startOffset !== "number" ||
152
+ typeof range.endOffset !== "number") {
153
+ return null;
154
+ }
155
+ const start = Math.max(0, Math.min(range.startOffset, range.endOffset));
156
+ const end = Math.max(start, range.startOffset, range.endOffset);
157
+ return end > start ? [start, end] : null;
158
+ }
159
+ /**
160
+ * Geometry key for the comment's n-th candidate item: the comment's own key
161
+ * for its item, suffixed keys for the page / related-item fallbacks.
162
+ */
163
+ export function getCommentCandidateTextRangeKey(comment, candidateIndex) {
164
+ return getFallbackTextRangeKey(getCommentTextRangeKey(comment), candidateIndex);
165
+ }
166
+ export function getCommentFieldDescriptors(comment) {
167
+ if (!comment.fieldId)
168
+ return [];
169
+ const items = getCommentCandidateItems(comment);
170
+ return items.map((item) => ({
171
+ fieldId: comment.fieldId,
172
+ item,
173
+ }));
174
+ }
175
+ function getCommentCandidateItems(comment) {
176
+ const candidates = [];
177
+ const addCandidate = (id) => {
178
+ if (!id)
179
+ return;
180
+ const normalizedId = normalizeMarkerId(id);
181
+ if (candidates.some((candidate) => normalizeMarkerId(candidate.id) === normalizedId)) {
182
+ return;
183
+ }
184
+ candidates.push({
185
+ id,
186
+ language: comment.language,
187
+ version: comment.version,
188
+ });
189
+ };
190
+ addCandidate(comment.itemId);
191
+ addCandidate(comment.mainItemId);
192
+ comment.relatedItems?.forEach((item) => addCandidate(item.itemId));
193
+ return candidates;
194
+ }
195
+ function measureBridgeCommentComponentRect(comment, page, bridgeGeometry, metrics) {
196
+ if (!page)
197
+ return null;
198
+ for (const item of getCommentCandidateItems(comment)) {
199
+ const component = getComponentById(item.id, page);
200
+ if (!component)
201
+ continue;
202
+ const measurement = measureBridgeComponentRect(bridgeGeometry, component, metrics);
203
+ if (measurement?.rect)
204
+ return measurement.rect;
205
+ }
206
+ return null;
207
+ }
208
+ function getTransientSelectionRects(comment, metrics, iframe) {
209
+ const rect = comment[COMMENT_TRANSIENT_SELECTION_RECT];
210
+ return rect ? viewportSelectionRectToOverlayRects(rect, metrics, iframe) : [];
211
+ }
212
+ function getSelectionRangeClientRects(range, metrics, iframe) {
213
+ const rect = range.clientRect;
214
+ return rect ? viewportSelectionRectToOverlayRects(rect, metrics, iframe) : [];
215
+ }
216
+ function viewportSelectionRectToOverlayRects(rect, metrics, iframe) {
217
+ if (!rect || rect.width <= 0 || rect.height <= 0)
218
+ return [];
219
+ const iframeRect = iframe?.getBoundingClientRect();
220
+ return [
221
+ toOverlayRect({
222
+ left: iframeRect ? rect.left - iframeRect.left : rect.left,
223
+ top: iframeRect ? rect.top - iframeRect.top : rect.top,
224
+ width: rect.width,
225
+ height: rect.height,
226
+ }, metrics),
227
+ ];
228
+ }
229
+ //# sourceMappingURL=useCommentAnchorMeasurements.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCommentAnchorMeasurements.js","sourceRoot":"","sources":["../../../../src/editor/page-editor-chrome/overlay/useCommentAnchorMeasurements.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { OverlayMetrics } from "./geometry";
2
+ /**
3
+ * Right edge of the visible canvas viewport in overlay (document) coordinates.
4
+ * Unlike `viewportWidth` alone this follows horizontal scrolling, so a line
5
+ * drawn to the viewport edge keeps reaching it after the page scrolled
6
+ * sideways. Updated on every scroll and measurement pass.
7
+ */
8
+ export declare function getOverlayViewportRight(metrics: OverlayMetrics): number;
9
+ export declare function useOverlayViewportRight(): number;
@@ -0,0 +1,34 @@
1
+ import { useEffect, useState } from "react";
2
+ import { useIframeOverlay } from "./IframeOverlayProvider";
3
+ /**
4
+ * Right edge of the visible canvas viewport in overlay (document) coordinates.
5
+ * Unlike `viewportWidth` alone this follows horizontal scrolling, so a line
6
+ * drawn to the viewport edge keeps reaching it after the page scrolled
7
+ * sideways. Updated on every scroll and measurement pass.
8
+ */
9
+ export function getOverlayViewportRight(metrics) {
10
+ return (metrics.scrollLeft * metrics.scrollScale * metrics.visualScale +
11
+ metrics.viewportWidth);
12
+ }
13
+ export function useOverlayViewportRight() {
14
+ const overlay = useIframeOverlay();
15
+ const [right, setRight] = useState(() => getOverlayViewportRight(overlay.getMetrics()));
16
+ useEffect(() => {
17
+ const update = (metrics) => {
18
+ const next = getOverlayViewportRight(metrics);
19
+ setRight((current) => (current === next ? current : next));
20
+ };
21
+ update(overlay.getMetrics());
22
+ const unsubscribeScroll = overlay.subscribeScroll(update);
23
+ const unsubscribeMeasurement = overlay.subscribeMeasurement(update, [
24
+ "viewport",
25
+ "layout",
26
+ ]);
27
+ return () => {
28
+ unsubscribeScroll();
29
+ unsubscribeMeasurement();
30
+ };
31
+ }, [overlay]);
32
+ return right;
33
+ }
34
+ //# sourceMappingURL=useOverlayViewportRight.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useOverlayViewportRight.js","sourceRoot":"","sources":["../../../../src/editor/page-editor-chrome/overlay/useOverlayViewportRight.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAE5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB,CAAC,OAAuB;IAC7D,OAAO,CACL,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW;QAC9D,OAAO,CAAC,aAAa,CACtB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,uBAAuB;IACrC,MAAM,OAAO,GAAG,gBAAgB,EAAE,CAAC;IACnC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,CACtC,uBAAuB,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAC9C,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,MAAM,GAAG,CAAC,OAAuB,EAAE,EAAE;YACzC,MAAM,IAAI,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;YAC9C,QAAQ,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7D,CAAC,CAAC;QACF,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;QAC7B,MAAM,iBAAiB,GAAG,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QAC1D,MAAM,sBAAsB,GAAG,OAAO,CAAC,oBAAoB,CAAC,MAAM,EAAE;YAClE,UAAU;YACV,QAAQ;SACT,CAAC,CAAC;QACH,OAAO,GAAG,EAAE;YACV,iBAAiB,EAAE,CAAC;YACpB,sBAAsB,EAAE,CAAC;QAC3B,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1,49 @@
1
+ import type { SuggestedEdit } from "../../../types";
2
+ import type { EditContextType } from "../../client/editContext";
3
+ import { type PageViewContext } from "../../page-viewer/pageViewContext";
4
+ import { type SuggestionRangeData } from "../../reviews/feedbackScrollTarget";
5
+ import { type AnchorMeasurements } from "./feedbackAnchorMeasurements";
6
+ export declare const SUGGESTION_BRIDGE_SOURCE = "suggestions";
7
+ export type SuggestionFieldValue = {
8
+ rawValue: string;
9
+ itemId: string;
10
+ language: string;
11
+ version: number;
12
+ fieldId: string;
13
+ };
14
+ export type SuggestionAnchorMeasurementsOptions = {
15
+ /** See `useCommentAnchorMeasurements`. */
16
+ request?: boolean;
17
+ };
18
+ export type SuggestionAnchorMeasurementsResult = {
19
+ measurements: AnchorMeasurements;
20
+ hiddenSuggestionIds: Set<string>;
21
+ rangeDataBySuggestionId: Record<string, SuggestionRangeData>;
22
+ fieldValueByIdentity: Record<string, SuggestionFieldValue>;
23
+ fieldIdentityBySuggestionId: Record<string, string>;
24
+ previewsSuggestedText: (suggestion: SuggestedEdit) => boolean;
25
+ };
26
+ /** Suggestions that still need a decision and therefore mark the canvas. */
27
+ export declare function getOpenSuggestions(suggestedEdits: SuggestedEdit[]): SuggestedEdit[];
28
+ /**
29
+ * The single suggestion whose suggested text the canvas shows because its
30
+ * card is selected. A decided suggestion is never previewed (an applied one
31
+ * already is the field's text, a rejected one left the original), so
32
+ * selecting one leaves the field as it is and must not hide its open
33
+ * siblings on that field.
34
+ */
35
+ export declare function getPreviewedSuggestionId({ suggestions, selectedSuggestedEditId, previewsAllSuggestions, showSelectedSuggestionOnPage, }: {
36
+ suggestions: readonly SuggestedEdit[];
37
+ selectedSuggestedEditId: string | undefined;
38
+ previewsAllSuggestions: boolean;
39
+ showSelectedSuggestionOnPage: boolean | undefined;
40
+ }): string | undefined;
41
+ /**
42
+ * Resolves each suggestion to the text ranges it changes (diffing its old
43
+ * and new value against the field's current value) and measures those ranges
44
+ * on the canvas. Callers pass the open suggestions for highlighting, or every
45
+ * listed suggestion when the measurements also position margin cards.
46
+ *
47
+ * Must run inside an `IframeOverlayProvider`.
48
+ */
49
+ export declare function useSuggestionAnchorMeasurements(pageViewContext: PageViewContext, editContext: EditContextType | undefined, suggestions: SuggestedEdit[], options?: SuggestionAnchorMeasurementsOptions): SuggestionAnchorMeasurementsResult;