@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,241 @@
1
+ import { useCallback, useEffect, useMemo, useRef, useState } from "react";
2
+ import { usePageViewState, } from "../../page-viewer/pageViewContext";
3
+ import { getSuggestedEditTextRangeKey, getSuggestionDisplayRanges, getSuggestionRangeData, } from "../../reviews/feedbackScrollTarget";
4
+ import { getSuggestedEditItemLanguage, getSuggestedEditItemVersion, getSuggestionFieldIdentityKey, } from "../../reviews/suggestionDisplayValue";
5
+ import { measureBridgeTextRangeRects } from "./geometry";
6
+ import { anchorMeasurementsEqual, } from "./feedbackAnchorMeasurements";
7
+ import { useBridgeTextRangeRequest, } from "./useBridgeTextRangeRequest";
8
+ import { useOverlayMeasurement } from "./useOverlayMeasurement";
9
+ export const SUGGESTION_BRIDGE_SOURCE = "suggestions";
10
+ /** Suggestions that still need a decision and therefore mark the canvas. */
11
+ export function getOpenSuggestions(suggestedEdits) {
12
+ return suggestedEdits.filter((suggestion) => suggestion.status !== "applied" && suggestion.status !== "rejected");
13
+ }
14
+ /**
15
+ * The single suggestion whose suggested text the canvas shows because its
16
+ * card is selected. A decided suggestion is never previewed (an applied one
17
+ * already is the field's text, a rejected one left the original), so
18
+ * selecting one leaves the field as it is and must not hide its open
19
+ * siblings on that field.
20
+ */
21
+ export function getPreviewedSuggestionId({ suggestions, selectedSuggestedEditId, previewsAllSuggestions, showSelectedSuggestionOnPage, }) {
22
+ if (previewsAllSuggestions || showSelectedSuggestionOnPage === false) {
23
+ return undefined;
24
+ }
25
+ const selectedIsDecided = suggestions.some((suggestion) => suggestion.id === selectedSuggestedEditId &&
26
+ (suggestion.status === "applied" || suggestion.status === "rejected"));
27
+ return selectedIsDecided ? undefined : selectedSuggestedEditId;
28
+ }
29
+ /**
30
+ * Resolves each suggestion to the text ranges it changes (diffing its old
31
+ * and new value against the field's current value) and measures those ranges
32
+ * on the canvas. Callers pass the open suggestions for highlighting, or every
33
+ * listed suggestion when the measurements also position margin cards.
34
+ *
35
+ * Must run inside an `IframeOverlayProvider`.
36
+ */
37
+ export function useSuggestionAnchorMeasurements(pageViewContext, editContext, suggestions, options = {}) {
38
+ const { request = true } = options;
39
+ const bridgeGeometry = usePageViewState(pageViewContext, (state) => state.bridgeGeometry);
40
+ const lastMeasurementsRef = useRef({});
41
+ const [rangeDataBySuggestionId, setRangeDataBySuggestionId] = useState({});
42
+ const [fieldValueByIdentity, setFieldValueByIdentity] = useState({});
43
+ const [fieldIdentityBySuggestionId, setFieldIdentityBySuggestionId] = useState({});
44
+ const previewsAllSuggestions = editContext?.mode === "suggestions";
45
+ const selectedSuggestedEditId = editContext?.selectedSuggestedEdit?.id;
46
+ // Outside suggestions mode the selected card previews its suggestion on the
47
+ // canvas exactly like suggestions mode does (while its "Show on page"
48
+ // toggle is on), so its ranges must target the suggested text rather than
49
+ // the original. With the toggle off the canvas keeps the original text and
50
+ // the ranges mark the text the suggestion removes.
51
+ const previewedSuggestionId = getPreviewedSuggestionId({
52
+ suggestions,
53
+ selectedSuggestedEditId,
54
+ previewsAllSuggestions,
55
+ showSelectedSuggestionOnPage: editContext?.showSelectedSuggestionOnPage,
56
+ });
57
+ // Decided suggestions are measured too (the comment margin anchors their
58
+ // cards) but never previewed: an applied one lives in the field as its new
59
+ // text, a rejected one left the original text in place.
60
+ const previewsSuggestedText = useCallback((suggestion) => {
61
+ if (suggestion.status === "applied")
62
+ return true;
63
+ if (suggestion.status === "rejected")
64
+ return false;
65
+ return previewsAllSuggestions || suggestion.id === previewedSuggestionId;
66
+ }, [previewsAllSuggestions, previewedSuggestionId]);
67
+ useEffect(() => {
68
+ if (!editContext) {
69
+ setRangeDataBySuggestionId({});
70
+ setFieldValueByIdentity({});
71
+ setFieldIdentityBySuggestionId({});
72
+ return;
73
+ }
74
+ let cancelled = false;
75
+ const resolveRanges = async () => {
76
+ const nextRangeData = {};
77
+ const nextFieldValues = {};
78
+ const nextFieldIdentities = {};
79
+ await Promise.all(suggestions.map(async (suggestion) => {
80
+ if (!suggestion.fieldId) {
81
+ nextRangeData[suggestion.id] = {
82
+ oldRanges: [],
83
+ newRanges: [],
84
+ oldAnchorOffsets: [],
85
+ newAnchorOffsets: [],
86
+ oldText: "",
87
+ newText: "",
88
+ };
89
+ return;
90
+ }
91
+ const language = getSuggestedEditItemLanguage(suggestion);
92
+ const version = getSuggestedEditItemVersion(suggestion) ?? 0;
93
+ const field = await editContext.itemsRepository.getField({
94
+ item: {
95
+ id: suggestion.itemId,
96
+ language,
97
+ version,
98
+ },
99
+ fieldId: suggestion.fieldId,
100
+ });
101
+ const resolvedItem = field?.descriptor?.item ?? {
102
+ id: suggestion.itemId,
103
+ language,
104
+ version,
105
+ };
106
+ const identityKey = getSuggestionFieldIdentityKey({
107
+ itemId: resolvedItem.id,
108
+ language: resolvedItem.language,
109
+ version: resolvedItem.version,
110
+ fieldId: suggestion.fieldId,
111
+ });
112
+ nextFieldIdentities[suggestion.id] = identityKey;
113
+ nextFieldValues[identityKey] = {
114
+ rawValue: field?.rawValue ?? "",
115
+ itemId: resolvedItem.id,
116
+ language: resolvedItem.language,
117
+ version: resolvedItem.version,
118
+ fieldId: suggestion.fieldId,
119
+ };
120
+ nextRangeData[suggestion.id] = getSuggestionRangeData(suggestion.oldValue ?? field?.rawValue ?? "", suggestion.newValue ?? "");
121
+ }));
122
+ if (!cancelled) {
123
+ setRangeDataBySuggestionId(nextRangeData);
124
+ setFieldValueByIdentity(nextFieldValues);
125
+ setFieldIdentityBySuggestionId(nextFieldIdentities);
126
+ }
127
+ };
128
+ resolveRanges();
129
+ return () => {
130
+ cancelled = true;
131
+ };
132
+ }, [editContext, suggestions]);
133
+ // While a single selected suggestion is previewed, the canvas shows its
134
+ // suggested text; other pending suggestions on that same field still hold
135
+ // ranges into the original text and would land at the wrong offsets.
136
+ const hiddenSuggestionIds = useMemo(() => {
137
+ const hidden = new Set();
138
+ if (!previewedSuggestionId)
139
+ return hidden;
140
+ const previewedIdentity = fieldIdentityBySuggestionId[previewedSuggestionId];
141
+ if (!previewedIdentity)
142
+ return hidden;
143
+ for (const suggestion of suggestions) {
144
+ if (suggestion.id !== previewedSuggestionId &&
145
+ fieldIdentityBySuggestionId[suggestion.id] === previewedIdentity) {
146
+ hidden.add(suggestion.id);
147
+ }
148
+ }
149
+ return hidden;
150
+ }, [fieldIdentityBySuggestionId, previewedSuggestionId, suggestions]);
151
+ const bridgeTextRanges = useMemo(() => suggestions.flatMap((suggestion) => {
152
+ if (!suggestion.fieldId)
153
+ return [];
154
+ if (hiddenSuggestionIds.has(suggestion.id))
155
+ return [];
156
+ const rangeData = rangeDataBySuggestionId[suggestion.id];
157
+ if (!rangeData)
158
+ return [];
159
+ const ranges = getSuggestionDisplayRanges(rangeData, previewsSuggestedText(suggestion) ? "new" : "old");
160
+ const fieldIdentity = fieldIdentityBySuggestionId[suggestion.id];
161
+ const resolvedField = fieldIdentity
162
+ ? fieldValueByIdentity[fieldIdentity]
163
+ : undefined;
164
+ return ranges.map(([start, end]) => ({
165
+ key: getSuggestedEditTextRangeKey(suggestion),
166
+ fieldId: suggestion.fieldId,
167
+ item: {
168
+ id: resolvedField?.itemId ?? suggestion.itemId,
169
+ language: resolvedField?.language ??
170
+ getSuggestedEditItemLanguage(suggestion),
171
+ version: resolvedField?.version ??
172
+ getSuggestedEditItemVersion(suggestion) ??
173
+ 0,
174
+ },
175
+ start,
176
+ end,
177
+ }));
178
+ }), [
179
+ fieldIdentityBySuggestionId,
180
+ fieldValueByIdentity,
181
+ hiddenSuggestionIds,
182
+ previewsSuggestedText,
183
+ rangeDataBySuggestionId,
184
+ suggestions,
185
+ ]);
186
+ useBridgeTextRangeRequest(pageViewContext, SUGGESTION_BRIDGE_SOURCE, bridgeTextRanges, request);
187
+ const measurements = useOverlayMeasurement((metrics, reasons) => {
188
+ if (!bridgeGeometry)
189
+ return {};
190
+ const canReusePreviousMeasurement = !reasons.has("viewport") &&
191
+ !reasons.has("layout") &&
192
+ !reasons.has("text");
193
+ const nextMeasurements = {};
194
+ for (const suggestion of suggestions) {
195
+ if (!suggestion.fieldId)
196
+ continue;
197
+ if (hiddenSuggestionIds.has(suggestion.id))
198
+ continue;
199
+ const rangeData = rangeDataBySuggestionId[suggestion.id];
200
+ if (!rangeData)
201
+ continue;
202
+ const ranges = getSuggestionDisplayRanges(rangeData, previewsSuggestedText(suggestion) ? "new" : "old");
203
+ if (ranges.length === 0)
204
+ continue;
205
+ const rects = measureBridgeTextRangeRects(bridgeGeometry, getSuggestedEditTextRangeKey(suggestion), metrics);
206
+ if (rects.length === 0) {
207
+ const previousMeasurement = lastMeasurementsRef.current[suggestion.id];
208
+ if (canReusePreviousMeasurement &&
209
+ previousMeasurement?.isTextRange &&
210
+ previousMeasurement.rects.length) {
211
+ nextMeasurements[suggestion.id] = previousMeasurement;
212
+ }
213
+ continue;
214
+ }
215
+ nextMeasurements[suggestion.id] = { rects, isTextRange: true };
216
+ }
217
+ return nextMeasurements;
218
+ }, [
219
+ bridgeGeometry,
220
+ hiddenSuggestionIds,
221
+ previewsSuggestedText,
222
+ suggestions,
223
+ rangeDataBySuggestionId,
224
+ ], {
225
+ initialValue: {},
226
+ equals: anchorMeasurementsEqual,
227
+ interests: ["viewport", "layout", "text", "adornment-data"],
228
+ });
229
+ useEffect(() => {
230
+ lastMeasurementsRef.current = measurements;
231
+ }, [measurements]);
232
+ return {
233
+ measurements,
234
+ hiddenSuggestionIds,
235
+ rangeDataBySuggestionId,
236
+ fieldValueByIdentity,
237
+ fieldIdentityBySuggestionId,
238
+ previewsSuggestedText,
239
+ };
240
+ }
241
+ //# sourceMappingURL=useSuggestionAnchorMeasurements.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSuggestionAnchorMeasurements.js","sourceRoot":"","sources":["../../../../src/editor/page-editor-chrome/overlay/useSuggestionAnchorMeasurements.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export declare const CANVAS_OVERVIEW_RULER_TEST_ID = "canvas-overview-ruler";
2
+ /**
3
+ * Paints the marks published by the canvas highlightings in one strip over
4
+ * the canvas's right edge (where the page's scrollbar is), the whole page
5
+ * scaled onto the strip's height. Shown whether or not the minimap is. Marks
6
+ * are buttons handing the click to their source; the strip between them lets
7
+ * the pointer through to the scrollbar.
8
+ */
9
+ export declare function CanvasOverviewRuler({ height }: {
10
+ height: number | string;
11
+ }): import("react").JSX.Element | null;
@@ -0,0 +1,65 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { cn } from "../../lib/utils";
3
+ import { layoutOverviewRuler, OVERVIEW_RULER_MARK_HEIGHT, OVERVIEW_RULER_WIDTH, useOverviewRulerSnapshot, useOverviewRulerStore, } from "./overviewRuler";
4
+ export const CANVAS_OVERVIEW_RULER_TEST_ID = "canvas-overview-ruler";
5
+ // Same colours as the minimap dots (comments, suggestions), the canvas
6
+ // highlights (agent changes), the spelling underline (faded, there are many)
7
+ // and the validation severity badges.
8
+ const toneClassNames = {
9
+ comment: "bg-highlight-100",
10
+ "comment-resolved": "bg-highlight-100/40",
11
+ suggestion: "bg-component-suggestions",
12
+ added: "bg-feedback-green",
13
+ removed: "bg-feedback-red",
14
+ spelling: "bg-feedback-red/50",
15
+ "validation-error": "bg-feedback-red",
16
+ "validation-warning": "bg-feedback-orange",
17
+ "validation-suggestion": "bg-feedback-blue",
18
+ };
19
+ const toneLabels = {
20
+ comment: ["Comment", "comments"],
21
+ "comment-resolved": ["Resolved comment", "resolved comments"],
22
+ suggestion: ["Suggestion", "suggestions"],
23
+ added: ["Agent change", "agent changes"],
24
+ removed: ["Text removed by the agent", "removals by the agent"],
25
+ spelling: ["Spelling mistake", "spelling mistakes"],
26
+ "validation-error": ["Validation error", "validation errors"],
27
+ "validation-warning": ["Validation warning", "validation warnings"],
28
+ "validation-suggestion": ["Validation suggestion", "validation suggestions"],
29
+ };
30
+ function getMarkLabel({ tone, mark }) {
31
+ const [one, many] = toneLabels[tone];
32
+ const count = mark.ids?.length ?? 0;
33
+ return count > 1 ? `${count} ${many}` : one;
34
+ }
35
+ /** The label, then what the mark is about (e.g. the validation messages). */
36
+ function getMarkTitleLines(placed) {
37
+ const details = placed.mark.details ?? [];
38
+ return [getMarkLabel(placed), ...details];
39
+ }
40
+ /**
41
+ * Paints the marks published by the canvas highlightings in one strip over
42
+ * the canvas's right edge (where the page's scrollbar is), the whole page
43
+ * scaled onto the strip's height. Shown whether or not the minimap is. Marks
44
+ * are buttons handing the click to their source; the strip between them lets
45
+ * the pointer through to the scrollbar.
46
+ */
47
+ export function CanvasOverviewRuler({ height }) {
48
+ const store = useOverviewRulerStore();
49
+ const snapshot = useOverviewRulerSnapshot();
50
+ const marks = layoutOverviewRuler(snapshot);
51
+ if (!store || !marks)
52
+ return null;
53
+ return (_jsx("div", { className: "pointer-events-none absolute top-0 right-0 z-20", "data-testid": CANVAS_OVERVIEW_RULER_TEST_ID, style: { width: OVERVIEW_RULER_WIDTH, height }, children: marks.map((placed, index) => {
54
+ const titleLines = getMarkTitleLines(placed);
55
+ return (_jsx("button", { type: "button", tabIndex: -1, "aria-label": titleLines.join(": "), title: titleLines.join("\n"), className: cn("pointer-events-auto absolute inset-x-0 cursor-pointer rounded-full p-0 transition-[filter,box-shadow]", "hover:shadow-[0_0_0_1px_white] hover:brightness-110", toneClassNames[placed.tone]), "data-testid": `${CANVAS_OVERVIEW_RULER_TEST_ID}-mark`, "data-tone": placed.tone, "data-source": placed.source, style: {
56
+ // A line at the very bottom stays inside the ruler.
57
+ top: `min(${placed.top * 100}%, calc(100% - ${OVERVIEW_RULER_MARK_HEIGHT}px))`,
58
+ height: OVERVIEW_RULER_MARK_HEIGHT,
59
+ }, onClick: (event) => {
60
+ event.stopPropagation();
61
+ store.activate(placed.source, placed.mark);
62
+ } }, index));
63
+ }) }));
64
+ }
65
+ //# sourceMappingURL=CanvasOverviewRuler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CanvasOverviewRuler.js","sourceRoot":"","sources":["../../../src/editor/page-viewer/CanvasOverviewRuler.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import type { RenderingState } from "../services/renderingsService";
2
+ type DynamicRenderingsBarProps = {
3
+ /** The page's dynamic renderings with their approval state. */
4
+ renderings?: readonly RenderingState[];
5
+ renderingsLoading?: boolean;
6
+ renderingsError?: string;
7
+ /** The user may open the review dialog (an administrator, or the sandbox's owner). */
8
+ canReview?: boolean;
9
+ /** The user may approve and revoke (an administrator, not a sandbox). */
10
+ canApprove?: boolean;
11
+ onReview?: (rendering: RenderingState) => void;
12
+ onRevoke?: (rendering: RenderingState) => void;
13
+ };
14
+ /**
15
+ * Sits above the preview canvas when the page has dynamic renderings. It
16
+ * lists them with their approval state (published pages show only approved
17
+ * ones) and says when client code does not run because it is not approved.
18
+ * Administrators, and on a sandbox page its owner, review a rendering's code
19
+ * and try its client code in the review dialog; administrators also approve
20
+ * and revoke. Nobody else gets a review.
21
+ */
22
+ export declare function DynamicRenderingsBar({ renderings, renderingsLoading, renderingsError, canReview, canApprove, onReview, onRevoke, }: DynamicRenderingsBarProps): import("react").JSX.Element;
23
+ export {};
@@ -0,0 +1,28 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { CodeXmlIcon, PaletteIcon } from "lucide-react";
3
+ import { Badge } from "../../components/ui/badge";
4
+ import { Button } from "../../components/ui/button";
5
+ import { Spinner } from "../ui/Spinner";
6
+ import { getClientCodeNotice, getRenderingApprovalStatus, getRenderingDisplayName, RENDERING_APPROVAL_BADGE_CLASSES, RENDERING_APPROVAL_DESCRIPTIONS, RENDERING_APPROVAL_LABELS, } from "./renderingApproval";
7
+ /**
8
+ * Sits above the preview canvas when the page has dynamic renderings. It
9
+ * lists them with their approval state (published pages show only approved
10
+ * ones) and says when client code does not run because it is not approved.
11
+ * Administrators, and on a sandbox page its owner, review a rendering's code
12
+ * and try its client code in the review dialog; administrators also approve
13
+ * and revoke. Nobody else gets a review.
14
+ */
15
+ export function DynamicRenderingsBar({ renderings = [], renderingsLoading = false, renderingsError, canReview = false, canApprove = false, onReview, onRevoke, }) {
16
+ const clientCodeNotice = getClientCodeNotice(renderings, canReview);
17
+ return (_jsxs("div", { role: "region", "aria-label": "Dynamic renderings", "data-testid": "dynamic-renderings-bar",
18
+ // pl-14 clears the editor form toggle that floats over the canvas's top-left corner (PageViewer).
19
+ className: "text-neutral-grey-100 bg-feedback-blue-light border-border-default flex max-h-24 w-full shrink-0 items-start gap-2 overflow-y-auto border-b py-1.5 pr-3 pl-14 text-xs", children: [_jsx(CodeXmlIcon, { className: "text-feedback-blue mt-0.5 h-4 w-4 shrink-0", strokeWidth: 1.5, "aria-hidden": "true" }), _jsxs("div", { className: "flex min-h-5 min-w-0 flex-1 flex-wrap items-center gap-x-3 gap-y-1", children: [_jsx("span", { className: "font-medium", children: "Dynamic renderings" }), renderings.map((rendering) => {
20
+ const approval = getRenderingApprovalStatus(rendering);
21
+ const name = getRenderingDisplayName(rendering);
22
+ const approvable = canApprove && !rendering.sandbox;
23
+ return (_jsxs("span", { className: "inline-flex max-w-full min-w-0 items-center gap-1.5", "data-testid": "preview-rendering", "data-rendering-id": rendering.id, "data-approval": approval, children: [rendering.kind === "theme" && (_jsx(PaletteIcon, { className: "text-neutral-grey-50 h-3.5 w-3.5 shrink-0", strokeWidth: 1.5, "aria-hidden": "true" })), _jsx("span", { className: "max-w-48 truncate", title: rendering.path || name, children: name }), _jsx(Badge, { size: "sm", variant: "secondary", className: RENDERING_APPROVAL_BADGE_CLASSES[approval], title: RENDERING_APPROVAL_DESCRIPTIONS[approval], children: RENDERING_APPROVAL_LABELS[approval] }), canReview && (_jsx(Button, { variant: "link", size: "xxs", className: "h-auto p-0 text-xs", onClick: () => onReview?.(rendering), "data-testid": "preview-rendering-review", children: approvable && !rendering.approved
24
+ ? "Review and approve"
25
+ : "Review" })), approvable && rendering.approved && (_jsx(Button, { variant: "link", size: "xxs", className: "h-auto p-0 text-xs", onClick: () => onRevoke?.(rendering), "data-testid": "preview-rendering-revoke", children: "Revoke" }))] }, rendering.id));
26
+ }), clientCodeNotice && (_jsx("span", { className: "text-neutral-grey-80", "data-testid": "preview-renderings-client-code-notice", children: clientCodeNotice })), renderingsLoading && renderings.length === 0 && (_jsx(Spinner, { size: "xs" })), renderingsError && (_jsxs("span", { className: "text-feedback-red truncate", title: renderingsError, "data-testid": "preview-renderings-error", children: ["Approval state unavailable: ", renderingsError] }))] })] }));
27
+ }
28
+ //# sourceMappingURL=DynamicRenderingsBar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DynamicRenderingsBar.js","sourceRoot":"","sources":["../../../src/editor/page-viewer/DynamicRenderingsBar.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import type { PageVersion } from "../services/renderingsService";
2
+ type DynamicRenderingsStripProps = {
3
+ page: PageVersion | undefined;
4
+ /** The page's dynamic renderings as read from the preview canvas. */
5
+ renderingIds: readonly string[];
6
+ /** The preview canvas URL, for trying client code in the review dialog. */
7
+ getCanvasUrl?: () => string | undefined;
8
+ };
9
+ /**
10
+ * The preview strip with its data: the approval state of the page's dynamic
11
+ * renderings (and theme) from the CM; the review dialog (code, and the page's
12
+ * client code in a sealed frame) for administrators and, on a sandbox page,
13
+ * its owner; approve and revoke for administrators. Everyone else sees client
14
+ * code run only once it is approved. The state is loaded again after every
15
+ * approval change.
16
+ */
17
+ export declare function DynamicRenderingsStrip({ page, renderingIds, getCanvasUrl, }: DynamicRenderingsStripProps): import("react").JSX.Element;
18
+ export {};
@@ -0,0 +1,29 @@
1
+ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState } from "react";
3
+ import { DynamicRenderingsBar } from "./DynamicRenderingsBar";
4
+ import { RenderingApprovalDialog, RevokeRenderingDialog, } from "./RenderingApprovalDialog";
5
+ import { sortRenderingsForPage, useRenderingPageState, } from "./renderingApproval";
6
+ /**
7
+ * The preview strip with its data: the approval state of the page's dynamic
8
+ * renderings (and theme) from the CM; the review dialog (code, and the page's
9
+ * client code in a sealed frame) for administrators and, on a sandbox page,
10
+ * its owner; approve and revoke for administrators. Everyone else sees client
11
+ * code run only once it is approved. The state is loaded again after every
12
+ * approval change.
13
+ */
14
+ export function DynamicRenderingsStrip({ page, renderingIds, getCanvasUrl, }) {
15
+ const pageState = useRenderingPageState({
16
+ page,
17
+ renderingIds,
18
+ enabled: renderingIds.length > 0,
19
+ });
20
+ const [reviewing, setReviewing] = useState();
21
+ const [revoking, setRevoking] = useState();
22
+ const canReview = !!pageState.state?.canReview;
23
+ const canApprove = !!pageState.state?.canApprove;
24
+ const renderings = pageState.state
25
+ ? sortRenderingsForPage(pageState.state.renderings, renderingIds)
26
+ : undefined;
27
+ return (_jsxs(_Fragment, { children: [_jsx(DynamicRenderingsBar, { renderings: renderings, renderingsLoading: pageState.loading, renderingsError: pageState.error, canReview: canReview, canApprove: canApprove, onReview: setReviewing, onRevoke: setRevoking }), reviewing && canReview && (_jsx(RenderingApprovalDialog, { rendering: reviewing, canApprove: canApprove, page: page, getCanvasUrl: getCanvasUrl, onClose: () => setReviewing(undefined), onChanged: pageState.refresh })), revoking && (_jsx(RevokeRenderingDialog, { rendering: revoking, onClose: () => setRevoking(undefined), onChanged: pageState.refresh }))] }));
28
+ }
29
+ //# sourceMappingURL=DynamicRenderingsStrip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DynamicRenderingsStrip.js","sourceRoot":"","sources":["../../../src/editor/page-viewer/DynamicRenderingsStrip.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAMjC,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EACL,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,qBAAqB,CAAC;AAU7B;;;;;;;GAOG;AACH,MAAM,UAAU,sBAAsB,CAAC,EACrC,IAAI,EACJ,YAAY,EACZ,YAAY,GACgB;IAC5B,MAAM,SAAS,GAAG,qBAAqB,CAAC;QACtC,IAAI;QACJ,YAAY;QACZ,OAAO,EAAE,YAAY,CAAC,MAAM,GAAG,CAAC;KACjC,CAAC,CAAC;IACH,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,EAAkB,CAAC;IAC7D,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,EAAkB,CAAC;IAC3D,MAAM,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC;IAC/C,MAAM,UAAU,GAAG,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,UAAU,CAAC;IACjD,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK;QAChC,CAAC,CAAC,qBAAqB,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,EAAE,YAAY,CAAC;QACjE,CAAC,CAAC,SAAS,CAAC;IAEd,OAAO,CACL,8BACE,KAAC,oBAAoB,IACnB,UAAU,EAAE,UAAU,EACtB,iBAAiB,EAAE,SAAS,CAAC,OAAO,EACpC,eAAe,EAAE,SAAS,CAAC,KAAK,EAChC,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,WAAW,GACrB,EACD,SAAS,IAAI,SAAS,IAAI,CACzB,KAAC,uBAAuB,IACtB,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,EACtC,SAAS,EAAE,SAAS,CAAC,OAAO,GAC5B,CACH,EACA,QAAQ,IAAI,CACX,KAAC,qBAAqB,IACpB,SAAS,EAAE,QAAQ,EACnB,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,EACrC,SAAS,EAAE,SAAS,CAAC,OAAO,GAC5B,CACH,IACA,CACJ,CAAC;AACJ,CAAC"}
@@ -0,0 +1,57 @@
1
+ import { type FeedbackMarginSize } from "./feedbackMarginLayout";
2
+ import { type PageViewContext } from "./pageViewContext";
3
+ export { FEEDBACK_MARGIN_MIN_WIDTH, FEEDBACK_MARGIN_RAIL_WIDTH, FEEDBACK_MARGIN_WIDTH, } from "./FeedbackMarginController";
4
+ export type FeedbackMarginProps = {
5
+ iframe: HTMLIFrameElement | null;
6
+ pageViewContext: PageViewContext;
7
+ /** Height of the canvas beside the column (fixed devices) or "100%". */
8
+ height: number | string;
9
+ /** What the pane leaves for the column (resolveFeedbackMarginSize). */
10
+ size: FeedbackMarginSize;
11
+ /** The widest the pane lets the user drag the column (getFeedbackMarginRoom). */
12
+ maxResizeWidth?: number;
13
+ invalidationKey: string;
14
+ deferredInvalidationMs: number;
15
+ };
16
+ /**
17
+ * Word-style comment margin beside the canvas: a column where every
18
+ * comment/suggestion card sits level with the text it is about. It carries no
19
+ * controls; adding, suggesting and filtering live in the toolbar.
20
+ *
21
+ * In a narrow pane the column narrows, then collapses into a rail of markers
22
+ * (the canvas keeps its width); the rail can be expanded into the full column
23
+ * floating over the canvas edge. Dragging the column's edge past its minimum
24
+ * collapses it into the same rail where the pane has room for it.
25
+ */
26
+ export declare function FeedbackMargin({ iframe, pageViewContext, height, size, maxResizeWidth, invalidationKey, deferredInvalidationMs, }: FeedbackMarginProps): import("react").JSX.Element;
27
+ export type FormFeedbackMarginProps = {
28
+ /** The element that scrolls the form and this column together. */
29
+ scroller: HTMLElement | null;
30
+ /** The form beside the column; anchors are its `[data-field-id]` fields. */
31
+ form: HTMLElement | null;
32
+ };
33
+ /**
34
+ * The same margin beside the item form (items without a canvas): it sits in
35
+ * the form's own scroll container, so the cards scroll natively with the
36
+ * fields they are anchored to.
37
+ */
38
+ export declare function FormFeedbackMargin({ scroller, form, }: FormFeedbackMarginProps): import("react").JSX.Element;
39
+ export declare function useElementWidth(element: HTMLElement | null): number;
40
+ export declare function useElementHeight(element: HTMLElement | null): number;
41
+ /**
42
+ * Suggestions mode changes what typing on the page does, so the margin says
43
+ * so where the suggestions appear. A notice card, not a header: the mode is
44
+ * switched from the toolbar.
45
+ */
46
+ export declare const SuggestingNotice: import("react").ForwardRefExoticComponent<{
47
+ className?: string;
48
+ onStopSuggesting: () => void;
49
+ } & import("react").RefAttributes<HTMLDivElement>>;
50
+ export declare function useRevealPinnedCard(listRef: React.RefObject<HTMLDivElement | null>, pinnedId: string | undefined, enabled: boolean): void;
51
+ /**
52
+ * What the footer holds depends on the surface. Beside the canvas it is
53
+ * feedback on things the page does not render. In a form it is feedback on
54
+ * fields the form does not show (hidden sections, fields of another item);
55
+ * feedback on the item as a whole sits at the top of the form instead.
56
+ */
57
+ export declare function getUnplacedLabel(count: number, layout: "overlay" | "flow"): string;