@parhelia/core 0.3.12831 → 0.3.12833

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (600) hide show
  1. package/dist/components/emoji/EmojiPicker.d.ts +18 -0
  2. package/dist/components/emoji/EmojiPicker.js +102 -0
  3. package/dist/components/emoji/EmojiPicker.js.map +1 -0
  4. package/dist/components/emoji/EmojiText.d.ts +19 -0
  5. package/dist/components/emoji/EmojiText.js +30 -0
  6. package/dist/components/emoji/EmojiText.js.map +1 -0
  7. package/dist/components/emoji/emojiData.generated.d.ts +2 -0
  8. package/dist/components/emoji/emojiData.generated.js +1878 -0
  9. package/dist/components/emoji/emojiData.generated.js.map +1 -0
  10. package/dist/components/emoji/emojiIndex.d.ts +46 -0
  11. package/dist/components/emoji/emojiIndex.js +173 -0
  12. package/dist/components/emoji/emojiIndex.js.map +1 -0
  13. package/dist/components/emoji/emoticons.d.ts +21 -0
  14. package/dist/components/emoji/emoticons.js +167 -0
  15. package/dist/components/emoji/emoticons.js.map +1 -0
  16. package/dist/components/emoji/textareaInsert.d.ts +19 -0
  17. package/dist/components/emoji/textareaInsert.js +29 -0
  18. package/dist/components/emoji/textareaInsert.js.map +1 -0
  19. package/dist/components/emoji/twemoji.d.ts +30 -0
  20. package/dist/components/emoji/twemoji.js +84 -0
  21. package/dist/components/emoji/twemoji.js.map +1 -0
  22. package/dist/editor/agent-changes/agentChangeTargets.d.ts +58 -0
  23. package/dist/editor/agent-changes/agentChangeTargets.js +180 -0
  24. package/dist/editor/agent-changes/agentChangeTargets.js.map +1 -0
  25. package/dist/editor/agent-changes/agentChangeTextHighlight.d.ts +101 -0
  26. package/dist/editor/agent-changes/agentChangeTextHighlight.js +167 -0
  27. package/dist/editor/agent-changes/agentChangeTextHighlight.js.map +1 -0
  28. package/dist/editor/ai/AgentImagePreview.d.ts +13 -0
  29. package/dist/editor/ai/AgentImagePreview.js +41 -0
  30. package/dist/editor/ai/AgentImagePreview.js.map +1 -0
  31. package/dist/editor/ai/activityRowNavigation.d.ts +28 -0
  32. package/dist/editor/ai/activityRowNavigation.js +53 -0
  33. package/dist/editor/ai/activityRowNavigation.js.map +1 -0
  34. package/dist/editor/ai/terminal/activeReasoningModel.d.ts +9 -0
  35. package/dist/editor/ai/terminal/activeReasoningModel.js +20 -0
  36. package/dist/editor/ai/terminal/activeReasoningModel.js.map +1 -0
  37. package/dist/editor/ai/terminal/agentDurations.d.ts +27 -0
  38. package/dist/editor/ai/terminal/agentDurations.js +89 -0
  39. package/dist/editor/ai/terminal/agentDurations.js.map +1 -0
  40. package/dist/editor/ai/terminal/agentTurnTiming.d.ts +35 -0
  41. package/dist/editor/ai/terminal/agentTurnTiming.js +128 -0
  42. package/dist/editor/ai/terminal/agentTurnTiming.js.map +1 -0
  43. package/dist/editor/ai/terminal/components/AgentMemorySettingsSection.d.ts +9 -0
  44. package/dist/editor/ai/terminal/components/AgentMemorySettingsSection.js +75 -0
  45. package/dist/editor/ai/terminal/components/AgentMemorySettingsSection.js.map +1 -0
  46. package/dist/editor/ai/terminal/components/AgentProfileRecovery.d.ts +10 -0
  47. package/dist/editor/ai/terminal/components/AgentProfileRecovery.js +12 -0
  48. package/dist/editor/ai/terminal/components/AgentProfileRecovery.js.map +1 -0
  49. package/dist/editor/ai/terminal/components/CreateItemToolCallContent.d.ts +3 -0
  50. package/dist/editor/ai/terminal/components/CreateItemToolCallContent.js +47 -0
  51. package/dist/editor/ai/terminal/components/CreateItemToolCallContent.js.map +1 -0
  52. package/dist/editor/ai/terminal/components/ResponseTurnDuration.d.ts +15 -0
  53. package/dist/editor/ai/terminal/components/ResponseTurnDuration.js +62 -0
  54. package/dist/editor/ai/terminal/components/ResponseTurnDuration.js.map +1 -0
  55. package/dist/editor/ai/terminal/components/ToolCallDiagnosticsPanel.d.ts +6 -0
  56. package/dist/editor/ai/terminal/components/ToolCallDiagnosticsPanel.js +61 -0
  57. package/dist/editor/ai/terminal/components/ToolCallDiagnosticsPanel.js.map +1 -0
  58. package/dist/editor/ai/terminal/components/toolCallResultJson.d.ts +1 -0
  59. package/dist/editor/ai/terminal/components/toolCallResultJson.js +46 -0
  60. package/dist/editor/ai/terminal/components/toolCallResultJson.js.map +1 -0
  61. package/dist/editor/ai/terminal/reasoningEffortLevels.d.ts +8 -0
  62. package/dist/editor/ai/terminal/reasoningEffortLevels.js +54 -0
  63. package/dist/editor/ai/terminal/reasoningEffortLevels.js.map +1 -0
  64. package/dist/editor/ai/terminal/requestUsage.d.ts +3 -0
  65. package/dist/editor/ai/terminal/requestUsage.js +22 -0
  66. package/dist/editor/ai/terminal/requestUsage.js.map +1 -0
  67. package/dist/editor/ai/terminal/toolCallDiagnostics.d.ts +34 -0
  68. package/dist/editor/ai/terminal/toolCallDiagnostics.js +218 -0
  69. package/dist/editor/ai/terminal/toolCallDiagnostics.js.map +1 -0
  70. package/dist/editor/ai/terminal/useAgentProviderWait.d.ts +18 -0
  71. package/dist/editor/ai/terminal/useAgentProviderWait.js +23 -0
  72. package/dist/editor/ai/terminal/useAgentProviderWait.js.map +1 -0
  73. package/dist/editor/ai/terminal/useAgentReasoningEffortState.d.ts +5 -0
  74. package/dist/editor/ai/terminal/useAgentReasoningEffortState.js +10 -0
  75. package/dist/editor/ai/terminal/useAgentReasoningEffortState.js.map +1 -0
  76. package/dist/editor/bridge/bridgeKeys.d.ts +5 -0
  77. package/dist/editor/bridge/bridgeKeys.js +8 -0
  78. package/dist/editor/bridge/bridgeKeys.js.map +1 -0
  79. package/dist/editor/bridge/linkDownload.d.ts +3 -0
  80. package/dist/editor/bridge/linkDownload.js +52 -0
  81. package/dist/editor/bridge/linkDownload.js.map +1 -0
  82. package/dist/editor/client/SessionsDialog.d.ts +2 -0
  83. package/dist/editor/client/SessionsDialog.js +27 -0
  84. package/dist/editor/client/SessionsDialog.js.map +1 -0
  85. package/dist/editor/client/agentLoadItemPolicy.d.ts +22 -0
  86. package/dist/editor/client/agentLoadItemPolicy.js +60 -0
  87. package/dist/editor/client/agentLoadItemPolicy.js.map +1 -0
  88. package/dist/editor/client/clipboardStorage.d.ts +10 -0
  89. package/dist/editor/client/clipboardStorage.js +57 -0
  90. package/dist/editor/client/clipboardStorage.js.map +1 -0
  91. package/dist/editor/client/hooks/useRepositoryItemRefresh.d.ts +4 -0
  92. package/dist/editor/client/hooks/useRepositoryItemRefresh.js +62 -0
  93. package/dist/editor/client/hooks/useRepositoryItemRefresh.js.map +1 -0
  94. package/dist/editor/client/liveEditState.d.ts +16 -0
  95. package/dist/editor/client/liveEditState.js +25 -0
  96. package/dist/editor/client/liveEditState.js.map +1 -0
  97. package/dist/editor/client/liveSessionState.d.ts +6 -0
  98. package/dist/editor/client/liveSessionState.js +20 -0
  99. package/dist/editor/client/liveSessionState.js.map +1 -0
  100. package/dist/editor/client/localUserEditActivity.d.ts +3 -0
  101. package/dist/editor/client/localUserEditActivity.js +12 -0
  102. package/dist/editor/client/localUserEditActivity.js.map +1 -0
  103. package/dist/editor/client/valueStore.d.ts +22 -0
  104. package/dist/editor/client/valueStore.js +29 -0
  105. package/dist/editor/client/valueStore.js.map +1 -0
  106. package/dist/editor/commands/componentClipboardCommands.d.ts +35 -0
  107. package/dist/editor/commands/componentClipboardCommands.js +271 -0
  108. package/dist/editor/commands/componentClipboardCommands.js.map +1 -0
  109. package/dist/editor/commands/componentMenuGroups.d.ts +2 -0
  110. package/dist/editor/commands/componentMenuGroups.js +43 -0
  111. package/dist/editor/commands/componentMenuGroups.js.map +1 -0
  112. package/dist/editor/commands/mediaCommands.d.ts +5 -0
  113. package/dist/editor/commands/mediaCommands.js +59 -0
  114. package/dist/editor/commands/mediaCommands.js.map +1 -0
  115. package/dist/editor/component-conversion/ComponentTypePickerDialog.d.ts +12 -0
  116. package/dist/editor/component-conversion/ComponentTypePickerDialog.js +40 -0
  117. package/dist/editor/component-conversion/ComponentTypePickerDialog.js.map +1 -0
  118. package/dist/editor/component-conversion/ConversionAiDebugButton.d.ts +17 -0
  119. package/dist/editor/component-conversion/ConversionAiDebugButton.js +80 -0
  120. package/dist/editor/component-conversion/ConversionAiDebugButton.js.map +1 -0
  121. package/dist/editor/component-conversion/ConvertComponentDialog.d.ts +28 -0
  122. package/dist/editor/component-conversion/ConvertComponentDialog.js +633 -0
  123. package/dist/editor/component-conversion/ConvertComponentDialog.js.map +1 -0
  124. package/dist/editor/component-conversion/conversionModel.d.ts +109 -0
  125. package/dist/editor/component-conversion/conversionModel.js +519 -0
  126. package/dist/editor/component-conversion/conversionModel.js.map +1 -0
  127. package/dist/editor/component-conversion/conversionService.d.ts +12 -0
  128. package/dist/editor/component-conversion/conversionService.js +16 -0
  129. package/dist/editor/component-conversion/conversionService.js.map +1 -0
  130. package/dist/editor/component-conversion/conversionTypes.d.ts +214 -0
  131. package/dist/editor/component-conversion/conversionTypes.js +2 -0
  132. package/dist/editor/component-conversion/conversionTypes.js.map +1 -0
  133. package/dist/editor/component-conversion/convertComponentsCommand.d.ts +25 -0
  134. package/dist/editor/component-conversion/convertComponentsCommand.js +196 -0
  135. package/dist/editor/component-conversion/convertComponentsCommand.js.map +1 -0
  136. package/dist/editor/componentVisualMode.d.ts +14 -0
  137. package/dist/editor/componentVisualMode.js +43 -0
  138. package/dist/editor/componentVisualMode.js.map +1 -0
  139. package/dist/editor/field-types/FieldHistoryBoundary.d.ts +7 -0
  140. package/dist/editor/field-types/FieldHistoryBoundary.js +40 -0
  141. package/dist/editor/field-types/FieldHistoryBoundary.js.map +1 -0
  142. package/dist/editor/field-types/fieldStyles.d.ts +21 -0
  143. package/dist/editor/field-types/fieldStyles.js +22 -0
  144. package/dist/editor/field-types/fieldStyles.js.map +1 -0
  145. package/dist/editor/field-types/richtext/utils/changeHighlight.d.ts +32 -0
  146. package/dist/editor/field-types/richtext/utils/changeHighlight.js +68 -0
  147. package/dist/editor/field-types/richtext/utils/changeHighlight.js.map +1 -0
  148. package/dist/editor/field-types/richtext/utils/spellCheckText.d.ts +31 -0
  149. package/dist/editor/field-types/richtext/utils/spellCheckText.js +82 -0
  150. package/dist/editor/field-types/richtext/utils/spellCheckText.js.map +1 -0
  151. package/dist/editor/field-types/useFocusedFieldInput.d.ts +13 -0
  152. package/dist/editor/field-types/useFocusedFieldInput.js +50 -0
  153. package/dist/editor/field-types/useFocusedFieldInput.js.map +1 -0
  154. package/dist/editor/field-types/useFormFieldSelectionRange.d.ts +43 -0
  155. package/dist/editor/field-types/useFormFieldSelectionRange.js +149 -0
  156. package/dist/editor/field-types/useFormFieldSelectionRange.js.map +1 -0
  157. package/dist/editor/find-replace/FindReplacePanel.d.ts +11 -0
  158. package/dist/editor/find-replace/FindReplacePanel.js +311 -0
  159. package/dist/editor/find-replace/FindReplacePanel.js.map +1 -0
  160. package/dist/editor/find-replace/findReplaceCommand.d.ts +8 -0
  161. package/dist/editor/find-replace/findReplaceCommand.js +25 -0
  162. package/dist/editor/find-replace/findReplaceCommand.js.map +1 -0
  163. package/dist/editor/find-replace/findReplaceMatches.d.ts +42 -0
  164. package/dist/editor/find-replace/findReplaceMatches.js +66 -0
  165. package/dist/editor/find-replace/findReplaceMatches.js.map +1 -0
  166. package/dist/editor/find-replace/findReplaceStore.d.ts +30 -0
  167. package/dist/editor/find-replace/findReplaceStore.js +61 -0
  168. package/dist/editor/find-replace/findReplaceStore.js.map +1 -0
  169. package/dist/editor/find-replace/findReplaceTargets.d.ts +51 -0
  170. package/dist/editor/find-replace/findReplaceTargets.js +110 -0
  171. package/dist/editor/find-replace/findReplaceTargets.js.map +1 -0
  172. package/dist/editor/find-replace/findReplaceText.d.ts +50 -0
  173. package/dist/editor/find-replace/findReplaceText.js +189 -0
  174. package/dist/editor/find-replace/findReplaceText.js.map +1 -0
  175. package/dist/editor/itemContextMenuGroups.d.ts +16 -0
  176. package/dist/editor/itemContextMenuGroups.js +57 -0
  177. package/dist/editor/itemContextMenuGroups.js.map +1 -0
  178. package/dist/editor/media-selector/MediaDetailsView.d.ts +14 -0
  179. package/dist/editor/media-selector/MediaDetailsView.js +152 -0
  180. package/dist/editor/media-selector/MediaDetailsView.js.map +1 -0
  181. package/dist/editor/media-selector/UploadMediaFileDialog.d.ts +5 -0
  182. package/dist/editor/media-selector/UploadMediaFileDialog.js +14 -0
  183. package/dist/editor/media-selector/UploadMediaFileDialog.js.map +1 -0
  184. package/dist/editor/media-selector/useMediaFolderDrag.d.ts +26 -0
  185. package/dist/editor/media-selector/useMediaFolderDrag.js +153 -0
  186. package/dist/editor/media-selector/useMediaFolderDrag.js.map +1 -0
  187. package/dist/editor/menubar/OpenPublishedPageButton.d.ts +1 -0
  188. package/dist/editor/menubar/OpenPublishedPageButton.js +22 -0
  189. package/dist/editor/menubar/OpenPublishedPageButton.js.map +1 -0
  190. package/dist/editor/menubar/toolbar-sections/CommentsToggleControl.d.ts +11 -0
  191. package/dist/editor/menubar/toolbar-sections/CommentsToggleControl.js +65 -0
  192. package/dist/editor/menubar/toolbar-sections/CommentsToggleControl.js.map +1 -0
  193. package/dist/editor/menubar/toolbar-sections/FindReplaceControls.d.ts +6 -0
  194. package/dist/editor/menubar/toolbar-sections/FindReplaceControls.js +31 -0
  195. package/dist/editor/menubar/toolbar-sections/FindReplaceControls.js.map +1 -0
  196. package/dist/editor/menubar/toolbar-sections/SpellCheckToggleControl.d.ts +5 -0
  197. package/dist/editor/menubar/toolbar-sections/SpellCheckToggleControl.js +16 -0
  198. package/dist/editor/menubar/toolbar-sections/SpellCheckToggleControl.js.map +1 -0
  199. package/dist/editor/mobileBottomPanel.d.ts +40 -0
  200. package/dist/editor/mobileBottomPanel.js +63 -0
  201. package/dist/editor/mobileBottomPanel.js.map +1 -0
  202. package/dist/editor/page-editor-chrome/AgentChangeHighlightings.d.ts +17 -0
  203. package/dist/editor/page-editor-chrome/AgentChangeHighlightings.js +33 -0
  204. package/dist/editor/page-editor-chrome/AgentChangeHighlightings.js.map +1 -0
  205. package/dist/editor/page-editor-chrome/BridgePasteCleanupOverlay.d.ts +6 -0
  206. package/dist/editor/page-editor-chrome/BridgePasteCleanupOverlay.js +100 -0
  207. package/dist/editor/page-editor-chrome/BridgePasteCleanupOverlay.js.map +1 -0
  208. package/dist/editor/page-editor-chrome/CanvasOverviewRulerBinding.d.ts +9 -0
  209. package/dist/editor/page-editor-chrome/CanvasOverviewRulerBinding.js +32 -0
  210. package/dist/editor/page-editor-chrome/CanvasOverviewRulerBinding.js.map +1 -0
  211. package/dist/editor/page-editor-chrome/CommentTargetPickerCanvasLayer.d.ts +14 -0
  212. package/dist/editor/page-editor-chrome/CommentTargetPickerCanvasLayer.js +110 -0
  213. package/dist/editor/page-editor-chrome/CommentTargetPickerCanvasLayer.js.map +1 -0
  214. package/dist/editor/page-editor-chrome/ConversionIndicators.d.ts +8 -0
  215. package/dist/editor/page-editor-chrome/ConversionIndicators.js +75 -0
  216. package/dist/editor/page-editor-chrome/ConversionIndicators.js.map +1 -0
  217. package/dist/editor/page-editor-chrome/DiffHighlightOverlay.d.ts +29 -0
  218. package/dist/editor/page-editor-chrome/DiffHighlightOverlay.js +295 -0
  219. package/dist/editor/page-editor-chrome/DiffHighlightOverlay.js.map +1 -0
  220. package/dist/editor/page-editor-chrome/FeedbackLeaderCanvasSegment.d.ts +15 -0
  221. package/dist/editor/page-editor-chrome/FeedbackLeaderCanvasSegment.js +31 -0
  222. package/dist/editor/page-editor-chrome/FeedbackLeaderCanvasSegment.js.map +1 -0
  223. package/dist/editor/page-editor-chrome/FindReplaceHighlightings.d.ts +11 -0
  224. package/dist/editor/page-editor-chrome/FindReplaceHighlightings.js +120 -0
  225. package/dist/editor/page-editor-chrome/FindReplaceHighlightings.js.map +1 -0
  226. package/dist/editor/page-editor-chrome/SpellCheckHighlightings.d.ts +12 -0
  227. package/dist/editor/page-editor-chrome/SpellCheckHighlightings.js +197 -0
  228. package/dist/editor/page-editor-chrome/SpellCheckHighlightings.js.map +1 -0
  229. package/dist/editor/page-editor-chrome/ValidationRulerMarks.d.ts +11 -0
  230. package/dist/editor/page-editor-chrome/ValidationRulerMarks.js +56 -0
  231. package/dist/editor/page-editor-chrome/ValidationRulerMarks.js.map +1 -0
  232. package/dist/editor/page-editor-chrome/diffRulerSegments.d.ts +18 -0
  233. package/dist/editor/page-editor-chrome/diffRulerSegments.js +37 -0
  234. package/dist/editor/page-editor-chrome/diffRulerSegments.js.map +1 -0
  235. package/dist/editor/page-editor-chrome/overlay/feedbackAnchorMeasurements.d.ts +44 -0
  236. package/dist/editor/page-editor-chrome/overlay/feedbackAnchorMeasurements.js +89 -0
  237. package/dist/editor/page-editor-chrome/overlay/feedbackAnchorMeasurements.js.map +1 -0
  238. package/dist/editor/page-editor-chrome/overlay/feedbackAnchorStore.d.ts +17 -0
  239. package/dist/editor/page-editor-chrome/overlay/feedbackAnchorStore.js +53 -0
  240. package/dist/editor/page-editor-chrome/overlay/feedbackAnchorStore.js.map +1 -0
  241. package/dist/editor/page-editor-chrome/overlay/useBridgeTextRangeRequest.d.ts +11 -0
  242. package/dist/editor/page-editor-chrome/overlay/useBridgeTextRangeRequest.js +84 -0
  243. package/dist/editor/page-editor-chrome/overlay/useBridgeTextRangeRequest.js.map +1 -0
  244. package/dist/editor/page-editor-chrome/overlay/useCommentAnchorMeasurements.d.ts +34 -0
  245. package/dist/editor/page-editor-chrome/overlay/useCommentAnchorMeasurements.js +229 -0
  246. package/dist/editor/page-editor-chrome/overlay/useCommentAnchorMeasurements.js.map +1 -0
  247. package/dist/editor/page-editor-chrome/overlay/useOverlayViewportRight.d.ts +9 -0
  248. package/dist/editor/page-editor-chrome/overlay/useOverlayViewportRight.js +34 -0
  249. package/dist/editor/page-editor-chrome/overlay/useOverlayViewportRight.js.map +1 -0
  250. package/dist/editor/page-editor-chrome/overlay/useSuggestionAnchorMeasurements.d.ts +49 -0
  251. package/dist/editor/page-editor-chrome/overlay/useSuggestionAnchorMeasurements.js +241 -0
  252. package/dist/editor/page-editor-chrome/overlay/useSuggestionAnchorMeasurements.js.map +1 -0
  253. package/dist/editor/page-viewer/CanvasOverviewRuler.d.ts +11 -0
  254. package/dist/editor/page-viewer/CanvasOverviewRuler.js +65 -0
  255. package/dist/editor/page-viewer/CanvasOverviewRuler.js.map +1 -0
  256. package/dist/editor/page-viewer/DynamicRenderingsBar.d.ts +23 -0
  257. package/dist/editor/page-viewer/DynamicRenderingsBar.js +28 -0
  258. package/dist/editor/page-viewer/DynamicRenderingsBar.js.map +1 -0
  259. package/dist/editor/page-viewer/DynamicRenderingsStrip.d.ts +18 -0
  260. package/dist/editor/page-viewer/DynamicRenderingsStrip.js +29 -0
  261. package/dist/editor/page-viewer/DynamicRenderingsStrip.js.map +1 -0
  262. package/dist/editor/page-viewer/FeedbackMargin.d.ts +57 -0
  263. package/dist/editor/page-viewer/FeedbackMargin.js +377 -0
  264. package/dist/editor/page-viewer/FeedbackMargin.js.map +1 -0
  265. package/dist/editor/page-viewer/FeedbackMarginController.d.ts +76 -0
  266. package/dist/editor/page-viewer/FeedbackMarginController.js +241 -0
  267. package/dist/editor/page-viewer/FeedbackMarginController.js.map +1 -0
  268. package/dist/editor/page-viewer/FeedbackMarginMarker.d.ts +16 -0
  269. package/dist/editor/page-viewer/FeedbackMarginMarker.js +24 -0
  270. package/dist/editor/page-viewer/FeedbackMarginMarker.js.map +1 -0
  271. package/dist/editor/page-viewer/FeedbackMarginResizeHandle.d.ts +23 -0
  272. package/dist/editor/page-viewer/FeedbackMarginResizeHandle.js +105 -0
  273. package/dist/editor/page-viewer/FeedbackMarginResizeHandle.js.map +1 -0
  274. package/dist/editor/page-viewer/InteractivePreviewBar.d.ts +24 -0
  275. package/dist/editor/page-viewer/InteractivePreviewBar.js +31 -0
  276. package/dist/editor/page-viewer/InteractivePreviewBar.js.map +1 -0
  277. package/dist/editor/page-viewer/MobileCommentsPanel.d.ts +16 -0
  278. package/dist/editor/page-viewer/MobileCommentsPanel.js +112 -0
  279. package/dist/editor/page-viewer/MobileCommentsPanel.js.map +1 -0
  280. package/dist/editor/page-viewer/PreviewModeNotice.d.ts +7 -0
  281. package/dist/editor/page-viewer/PreviewModeNotice.js +19 -0
  282. package/dist/editor/page-viewer/PreviewModeNotice.js.map +1 -0
  283. package/dist/editor/page-viewer/RenderingAiCheck.d.ts +18 -0
  284. package/dist/editor/page-viewer/RenderingAiCheck.js +45 -0
  285. package/dist/editor/page-viewer/RenderingAiCheck.js.map +1 -0
  286. package/dist/editor/page-viewer/RenderingApprovalDialog.d.ts +32 -0
  287. package/dist/editor/page-viewer/RenderingApprovalDialog.js +191 -0
  288. package/dist/editor/page-viewer/RenderingApprovalDialog.js.map +1 -0
  289. package/dist/editor/page-viewer/SealedClientCodePreview.d.ts +17 -0
  290. package/dist/editor/page-viewer/SealedClientCodePreview.js +38 -0
  291. package/dist/editor/page-viewer/SealedClientCodePreview.js.map +1 -0
  292. package/dist/editor/page-viewer/canvasFrameNavigation.d.ts +18 -0
  293. package/dist/editor/page-viewer/canvasFrameNavigation.js +36 -0
  294. package/dist/editor/page-viewer/canvasFrameNavigation.js.map +1 -0
  295. package/dist/editor/page-viewer/canvasLoadSettling.d.ts +42 -0
  296. package/dist/editor/page-viewer/canvasLoadSettling.js +46 -0
  297. package/dist/editor/page-viewer/canvasLoadSettling.js.map +1 -0
  298. package/dist/editor/page-viewer/canvasScrollHandoff.d.ts +34 -0
  299. package/dist/editor/page-viewer/canvasScrollHandoff.js +55 -0
  300. package/dist/editor/page-viewer/canvasScrollHandoff.js.map +1 -0
  301. package/dist/editor/page-viewer/compareFrameWidth.d.ts +8 -0
  302. package/dist/editor/page-viewer/compareFrameWidth.js +25 -0
  303. package/dist/editor/page-viewer/compareFrameWidth.js.map +1 -0
  304. package/dist/editor/page-viewer/feedbackMarginLayout.d.ts +119 -0
  305. package/dist/editor/page-viewer/feedbackMarginLayout.js +155 -0
  306. package/dist/editor/page-viewer/feedbackMarginLayout.js.map +1 -0
  307. package/dist/editor/page-viewer/feedbackMarginSources.d.ts +36 -0
  308. package/dist/editor/page-viewer/feedbackMarginSources.js +196 -0
  309. package/dist/editor/page-viewer/feedbackMarginSources.js.map +1 -0
  310. package/dist/editor/page-viewer/feedbackMarginWidth.d.ts +43 -0
  311. package/dist/editor/page-viewer/feedbackMarginWidth.js +107 -0
  312. package/dist/editor/page-viewer/feedbackMarginWidth.js.map +1 -0
  313. package/dist/editor/page-viewer/interactivePreview.d.ts +168 -0
  314. package/dist/editor/page-viewer/interactivePreview.js +344 -0
  315. package/dist/editor/page-viewer/interactivePreview.js.map +1 -0
  316. package/dist/editor/page-viewer/minimapViewport.d.ts +2 -0
  317. package/dist/editor/page-viewer/minimapViewport.js +34 -0
  318. package/dist/editor/page-viewer/minimapViewport.js.map +1 -0
  319. package/dist/editor/page-viewer/openPageItems.d.ts +29 -0
  320. package/dist/editor/page-viewer/openPageItems.js +73 -0
  321. package/dist/editor/page-viewer/openPageItems.js.map +1 -0
  322. package/dist/editor/page-viewer/overviewRuler.d.ts +128 -0
  323. package/dist/editor/page-viewer/overviewRuler.js +226 -0
  324. package/dist/editor/page-viewer/overviewRuler.js.map +1 -0
  325. package/dist/editor/page-viewer/previewEditAttempt.d.ts +31 -0
  326. package/dist/editor/page-viewer/previewEditAttempt.js +68 -0
  327. package/dist/editor/page-viewer/previewEditAttempt.js.map +1 -0
  328. package/dist/editor/page-viewer/renderingApproval.d.ts +59 -0
  329. package/dist/editor/page-viewer/renderingApproval.js +186 -0
  330. package/dist/editor/page-viewer/renderingApproval.js.map +1 -0
  331. package/dist/editor/page-viewer/renderingChanges.d.ts +29 -0
  332. package/dist/editor/page-viewer/renderingChanges.js +40 -0
  333. package/dist/editor/page-viewer/renderingChanges.js.map +1 -0
  334. package/dist/editor/page-viewer/scrollIntoViewTextRanges.d.ts +23 -0
  335. package/dist/editor/page-viewer/scrollIntoViewTextRanges.js +26 -0
  336. package/dist/editor/page-viewer/scrollIntoViewTextRanges.js.map +1 -0
  337. package/dist/editor/page-viewer/useInteractivePreview.d.ts +77 -0
  338. package/dist/editor/page-viewer/useInteractivePreview.js +210 -0
  339. package/dist/editor/page-viewer/useInteractivePreview.js.map +1 -0
  340. package/dist/editor/reviews/CollapsibleText.d.ts +13 -0
  341. package/dist/editor/reviews/CollapsibleText.js +41 -0
  342. package/dist/editor/reviews/CollapsibleText.js.map +1 -0
  343. package/dist/editor/reviews/CommentImageAttachments.d.ts +12 -0
  344. package/dist/editor/reviews/CommentImageAttachments.js +19 -0
  345. package/dist/editor/reviews/CommentImageAttachments.js.map +1 -0
  346. package/dist/editor/reviews/CommentQuote.d.ts +13 -0
  347. package/dist/editor/reviews/CommentQuote.js +35 -0
  348. package/dist/editor/reviews/CommentQuote.js.map +1 -0
  349. package/dist/editor/reviews/CommentTargetOutline.d.ts +13 -0
  350. package/dist/editor/reviews/CommentTargetOutline.js +21 -0
  351. package/dist/editor/reviews/CommentTargetOutline.js.map +1 -0
  352. package/dist/editor/reviews/CommentTargetPickerDomLayer.d.ts +7 -0
  353. package/dist/editor/reviews/CommentTargetPickerDomLayer.js +117 -0
  354. package/dist/editor/reviews/CommentTargetPickerDomLayer.js.map +1 -0
  355. package/dist/editor/reviews/CommentThreadAgentLink.d.ts +28 -0
  356. package/dist/editor/reviews/CommentThreadAgentLink.js +37 -0
  357. package/dist/editor/reviews/CommentThreadAgentLink.js.map +1 -0
  358. package/dist/editor/reviews/CommentThreadCard.d.ts +34 -0
  359. package/dist/editor/reviews/CommentThreadCard.js +156 -0
  360. package/dist/editor/reviews/CommentThreadCard.js.map +1 -0
  361. package/dist/editor/reviews/SuggestionThreadCard.d.ts +19 -0
  362. package/dist/editor/reviews/SuggestionThreadCard.js +25 -0
  363. package/dist/editor/reviews/SuggestionThreadCard.js.map +1 -0
  364. package/dist/editor/reviews/addCommentOnTarget.d.ts +22 -0
  365. package/dist/editor/reviews/addCommentOnTarget.js +32 -0
  366. package/dist/editor/reviews/addCommentOnTarget.js.map +1 -0
  367. package/dist/editor/reviews/balloonLayout.d.ts +51 -0
  368. package/dist/editor/reviews/balloonLayout.js +101 -0
  369. package/dist/editor/reviews/balloonLayout.js.map +1 -0
  370. package/dist/editor/reviews/commentAgentAttachments.d.ts +5 -0
  371. package/dist/editor/reviews/commentAgentAttachments.js +51 -0
  372. package/dist/editor/reviews/commentAgentAttachments.js.map +1 -0
  373. package/dist/editor/reviews/commentImages.d.ts +48 -0
  374. package/dist/editor/reviews/commentImages.js +128 -0
  375. package/dist/editor/reviews/commentImages.js.map +1 -0
  376. package/dist/editor/reviews/commentTargetPicker.d.ts +114 -0
  377. package/dist/editor/reviews/commentTargetPicker.js +153 -0
  378. package/dist/editor/reviews/commentTargetPicker.js.map +1 -0
  379. package/dist/editor/reviews/feedbackBalloonDate.d.ts +8 -0
  380. package/dist/editor/reviews/feedbackBalloonDate.js +22 -0
  381. package/dist/editor/reviews/feedbackBalloonDate.js.map +1 -0
  382. package/dist/editor/reviews/feedbackDrafts.d.ts +49 -0
  383. package/dist/editor/reviews/feedbackDrafts.js +74 -0
  384. package/dist/editor/reviews/feedbackDrafts.js.map +1 -0
  385. package/dist/editor/reviews/feedbackHoverState.d.ts +18 -0
  386. package/dist/editor/reviews/feedbackHoverState.js +35 -0
  387. package/dist/editor/reviews/feedbackHoverState.js.map +1 -0
  388. package/dist/editor/reviews/feedbackPersonFilter.d.ts +3 -0
  389. package/dist/editor/reviews/feedbackPersonFilter.js +32 -0
  390. package/dist/editor/reviews/feedbackPersonFilter.js.map +1 -0
  391. package/dist/editor/reviews/feedbackThreadSelection.d.ts +10 -0
  392. package/dist/editor/reviews/feedbackThreadSelection.js +31 -0
  393. package/dist/editor/reviews/feedbackThreadSelection.js.map +1 -0
  394. package/dist/editor/reviews/feedbackThreads.d.ts +50 -0
  395. package/dist/editor/reviews/feedbackThreads.js +135 -0
  396. package/dist/editor/reviews/feedbackThreads.js.map +1 -0
  397. package/dist/editor/reviews/feedbackWheelForwarding.d.ts +34 -0
  398. package/dist/editor/reviews/feedbackWheelForwarding.js +108 -0
  399. package/dist/editor/reviews/feedbackWheelForwarding.js.map +1 -0
  400. package/dist/editor/reviews/reviewUrlScope.d.ts +23 -0
  401. package/dist/editor/reviews/reviewUrlScope.js +86 -0
  402. package/dist/editor/reviews/reviewUrlScope.js.map +1 -0
  403. package/dist/editor/reviews/scrollWithin.d.ts +29 -0
  404. package/dist/editor/reviews/scrollWithin.js +87 -0
  405. package/dist/editor/reviews/scrollWithin.js.map +1 -0
  406. package/dist/editor/reviews/subtreeFeedback.d.ts +57 -0
  407. package/dist/editor/reviews/subtreeFeedback.js +137 -0
  408. package/dist/editor/reviews/subtreeFeedback.js.map +1 -0
  409. package/dist/editor/reviews/useCommentImagePaste.d.ts +80 -0
  410. package/dist/editor/reviews/useCommentImagePaste.js +252 -0
  411. package/dist/editor/reviews/useCommentImagePaste.js.map +1 -0
  412. package/dist/editor/reviews/useFeedbackThreads.d.ts +35 -0
  413. package/dist/editor/reviews/useFeedbackThreads.js +137 -0
  414. package/dist/editor/reviews/useFeedbackThreads.js.map +1 -0
  415. package/dist/editor/reviews/useMeasuredHeights.d.ts +25 -0
  416. package/dist/editor/reviews/useMeasuredHeights.js +176 -0
  417. package/dist/editor/reviews/useMeasuredHeights.js.map +1 -0
  418. package/dist/editor/reviews/usePendingFeedbackFocus.d.ts +7 -0
  419. package/dist/editor/reviews/usePendingFeedbackFocus.js +42 -0
  420. package/dist/editor/reviews/usePendingFeedbackFocus.js.map +1 -0
  421. package/dist/editor/services/mcpAccessService.d.ts +93 -0
  422. package/dist/editor/services/mcpAccessService.js +41 -0
  423. package/dist/editor/services/mcpAccessService.js.map +1 -0
  424. package/dist/editor/services/migrationService.d.ts +31 -0
  425. package/dist/editor/services/migrationService.js +22 -0
  426. package/dist/editor/services/migrationService.js.map +1 -0
  427. package/dist/editor/services/previewTokenService.d.ts +14 -0
  428. package/dist/editor/services/previewTokenService.js +34 -0
  429. package/dist/editor/services/previewTokenService.js.map +1 -0
  430. package/dist/editor/services/publicSiteService.d.ts +40 -0
  431. package/dist/editor/services/publicSiteService.js +5 -0
  432. package/dist/editor/services/publicSiteService.js.map +1 -0
  433. package/dist/editor/services/renderingsService.d.ts +117 -0
  434. package/dist/editor/services/renderingsService.js +245 -0
  435. package/dist/editor/services/renderingsService.js.map +1 -0
  436. package/dist/editor/services/spellCheckService.d.ts +13 -0
  437. package/dist/editor/services/spellCheckService.js +33 -0
  438. package/dist/editor/services/spellCheckService.js.map +1 -0
  439. package/dist/editor/settings/MigrationJournalCard.d.ts +12 -0
  440. package/dist/editor/settings/MigrationJournalCard.js +114 -0
  441. package/dist/editor/settings/MigrationJournalCard.js.map +1 -0
  442. package/dist/editor/settings/panels/McpAccessPanel.d.ts +7 -0
  443. package/dist/editor/settings/panels/McpAccessPanel.js +95 -0
  444. package/dist/editor/settings/panels/McpAccessPanel.js.map +1 -0
  445. package/dist/editor/settings/panels/McpAccessSettingsView.d.ts +8 -0
  446. package/dist/editor/settings/panels/McpAccessSettingsView.js +221 -0
  447. package/dist/editor/settings/panels/McpAccessSettingsView.js.map +1 -0
  448. package/dist/editor/settings/panels/PublicSiteEntryDialog.d.ts +8 -0
  449. package/dist/editor/settings/panels/PublicSiteEntryDialog.js +113 -0
  450. package/dist/editor/settings/panels/PublicSiteEntryDialog.js.map +1 -0
  451. package/dist/editor/settings/panels/PublicSitesPanel.d.ts +1 -0
  452. package/dist/editor/settings/panels/PublicSitesPanel.js +153 -0
  453. package/dist/editor/settings/panels/PublicSitesPanel.js.map +1 -0
  454. package/dist/editor/settings/panels/SpellCheckPanel.d.ts +8 -0
  455. package/dist/editor/settings/panels/SpellCheckPanel.js +253 -0
  456. package/dist/editor/settings/panels/SpellCheckPanel.js.map +1 -0
  457. package/dist/editor/settings/panels/publicSiteHelpers.d.ts +6 -0
  458. package/dist/editor/settings/panels/publicSiteHelpers.js +30 -0
  459. package/dist/editor/settings/panels/publicSiteHelpers.js.map +1 -0
  460. package/dist/editor/sidebar/FeedbackSidebar.d.ts +7 -0
  461. package/dist/editor/sidebar/FeedbackSidebar.js +300 -0
  462. package/dist/editor/sidebar/FeedbackSidebar.js.map +1 -0
  463. package/dist/editor/sidebar/OperationDetailsContent.d.ts +14 -0
  464. package/dist/editor/sidebar/OperationDetailsContent.js +571 -0
  465. package/dist/editor/sidebar/OperationDetailsContent.js.map +1 -0
  466. package/dist/editor/sidebar/liveComponentThumbnails.d.ts +66 -0
  467. package/dist/editor/sidebar/liveComponentThumbnails.js +225 -0
  468. package/dist/editor/sidebar/liveComponentThumbnails.js.map +1 -0
  469. package/dist/editor/spellcheck/canvasSpellCheckContextMenu.d.ts +30 -0
  470. package/dist/editor/spellcheck/canvasSpellCheckContextMenu.js +69 -0
  471. package/dist/editor/spellcheck/canvasSpellCheckContextMenu.js.map +1 -0
  472. package/dist/editor/spellcheck/htmlSpellDocument.d.ts +60 -0
  473. package/dist/editor/spellcheck/htmlSpellDocument.js +181 -0
  474. package/dist/editor/spellcheck/htmlSpellDocument.js.map +1 -0
  475. package/dist/editor/spellcheck/htmlSpellTokenizer.d.ts +45 -0
  476. package/dist/editor/spellcheck/htmlSpellTokenizer.js +277 -0
  477. package/dist/editor/spellcheck/htmlSpellTokenizer.js.map +1 -0
  478. package/dist/editor/spellcheck/replacementGuard.d.ts +27 -0
  479. package/dist/editor/spellcheck/replacementGuard.js +29 -0
  480. package/dist/editor/spellcheck/replacementGuard.js.map +1 -0
  481. package/dist/editor/spellcheck/spellCheckCanvasStore.d.ts +17 -0
  482. package/dist/editor/spellcheck/spellCheckCanvasStore.js +37 -0
  483. package/dist/editor/spellcheck/spellCheckCanvasStore.js.map +1 -0
  484. package/dist/editor/spellcheck/spellCheckCanvasTargets.d.ts +71 -0
  485. package/dist/editor/spellcheck/spellCheckCanvasTargets.js +126 -0
  486. package/dist/editor/spellcheck/spellCheckCanvasTargets.js.map +1 -0
  487. package/dist/editor/spellcheck/spellCheckClient.d.ts +66 -0
  488. package/dist/editor/spellcheck/spellCheckClient.js +0 -0
  489. package/dist/editor/spellcheck/spellCheckClient.js.map +1 -0
  490. package/dist/editor/spellcheck/spellCheckContextMenu.d.ts +52 -0
  491. package/dist/editor/spellcheck/spellCheckContextMenu.js +120 -0
  492. package/dist/editor/spellcheck/spellCheckContextMenu.js.map +1 -0
  493. package/dist/editor/spellcheck/spellCheckReplace.d.ts +8 -0
  494. package/dist/editor/spellcheck/spellCheckReplace.js +20 -0
  495. package/dist/editor/spellcheck/spellCheckReplace.js.map +1 -0
  496. package/dist/editor/spellcheck/spellCheckStyles.d.ts +11 -0
  497. package/dist/editor/spellcheck/spellCheckStyles.js +12 -0
  498. package/dist/editor/spellcheck/spellCheckStyles.js.map +1 -0
  499. package/dist/editor/spellcheck/spellCheckTypes.d.ts +94 -0
  500. package/dist/editor/spellcheck/spellCheckTypes.js +2 -0
  501. package/dist/editor/spellcheck/spellCheckTypes.js.map +1 -0
  502. package/dist/editor/spellcheck/textMarkHitTest.d.ts +14 -0
  503. package/dist/editor/spellcheck/textMarkHitTest.js +39 -0
  504. package/dist/editor/spellcheck/textMarkHitTest.js.map +1 -0
  505. package/dist/editor/spellcheck/useSpellCheck.d.ts +16 -0
  506. package/dist/editor/spellcheck/useSpellCheck.js +57 -0
  507. package/dist/editor/spellcheck/useSpellCheck.js.map +1 -0
  508. package/dist/editor/ui/DynamicRenderingsPublishWarning.d.ts +14 -0
  509. package/dist/editor/ui/DynamicRenderingsPublishWarning.js +40 -0
  510. package/dist/editor/ui/DynamicRenderingsPublishWarning.js.map +1 -0
  511. package/dist/editor/ui/ParheliaMark.d.ts +15 -0
  512. package/dist/editor/ui/ParheliaMark.js +12 -0
  513. package/dist/editor/ui/ParheliaMark.js.map +1 -0
  514. package/dist/editor/ui/PublishReadinessSummary.d.ts +12 -0
  515. package/dist/editor/ui/PublishReadinessSummary.js +34 -0
  516. package/dist/editor/ui/PublishReadinessSummary.js.map +1 -0
  517. package/dist/editor/ui/RootItemPicker.d.ts +18 -0
  518. package/dist/editor/ui/RootItemPicker.js +112 -0
  519. package/dist/editor/ui/RootItemPicker.js.map +1 -0
  520. package/dist/editor/ui/publishReadiness.d.ts +98 -0
  521. package/dist/editor/ui/publishReadiness.js +307 -0
  522. package/dist/editor/ui/publishReadiness.js.map +1 -0
  523. package/dist/editor/ui/usePublishingItem.d.ts +8 -0
  524. package/dist/editor/ui/usePublishingItem.js +47 -0
  525. package/dist/editor/ui/usePublishingItem.js.map +1 -0
  526. package/dist/editor/undoEligibility.d.ts +2 -0
  527. package/dist/editor/undoEligibility.js +8 -0
  528. package/dist/editor/undoEligibility.js.map +1 -0
  529. package/dist/editor/utils/dataTransferImages.d.ts +7 -0
  530. package/dist/editor/utils/dataTransferImages.js +43 -0
  531. package/dist/editor/utils/dataTransferImages.js.map +1 -0
  532. package/dist/editor/utils/linkDisplay.d.ts +12 -0
  533. package/dist/editor/utils/linkDisplay.js +23 -0
  534. package/dist/editor/utils/linkDisplay.js.map +1 -0
  535. package/dist/editor/validation/ValidationIssuesPopover.d.ts +39 -0
  536. package/dist/editor/validation/ValidationIssuesPopover.js +51 -0
  537. package/dist/editor/validation/ValidationIssuesPopover.js.map +1 -0
  538. package/dist/editor/validation/navigateToValidationIssue.d.ts +13 -0
  539. package/dist/editor/validation/navigateToValidationIssue.js +43 -0
  540. package/dist/editor/validation/navigateToValidationIssue.js.map +1 -0
  541. package/dist/editor/validation/validationFixAgent.d.ts +26 -0
  542. package/dist/editor/validation/validationFixAgent.js +124 -0
  543. package/dist/editor/validation/validationFixAgent.js.map +1 -0
  544. package/dist/editor/validation/validationRulerIssues.d.ts +17 -0
  545. package/dist/editor/validation/validationRulerIssues.js +44 -0
  546. package/dist/editor/validation/validationRulerIssues.js.map +1 -0
  547. package/dist/editor/validation/validationSeverity.d.ts +15 -0
  548. package/dist/editor/validation/validationSeverity.js +47 -0
  549. package/dist/editor/validation/validationSeverity.js.map +1 -0
  550. package/dist/lib/viewportClip.d.ts +18 -0
  551. package/dist/lib/viewportClip.js +22 -0
  552. package/dist/lib/viewportClip.js.map +1 -0
  553. package/dist/revision.d.ts +2 -2
  554. package/dist/revision.js +2 -2
  555. package/dist/task-board/components/AttentionPromptDialog.d.ts +13 -0
  556. package/dist/task-board/components/AttentionPromptDialog.js +45 -0
  557. package/dist/task-board/components/AttentionPromptDialog.js.map +1 -0
  558. package/dist/task-board/components/GoalFindingsTable.d.ts +43 -0
  559. package/dist/task-board/components/GoalFindingsTable.js +160 -0
  560. package/dist/task-board/components/GoalFindingsTable.js.map +1 -0
  561. package/dist/task-board/components/IssuePanel.d.ts +31 -0
  562. package/dist/task-board/components/IssuePanel.js +268 -0
  563. package/dist/task-board/components/IssuePanel.js.map +1 -0
  564. package/dist/task-board/components/ProjectProgressIndicator.d.ts +8 -0
  565. package/dist/task-board/components/ProjectProgressIndicator.js +17 -0
  566. package/dist/task-board/components/ProjectProgressIndicator.js.map +1 -0
  567. package/dist/task-board/components/SubgoalFindings.d.ts +40 -0
  568. package/dist/task-board/components/SubgoalFindings.js +88 -0
  569. package/dist/task-board/components/SubgoalFindings.js.map +1 -0
  570. package/dist/task-board/components/commentAuthor.d.ts +14 -0
  571. package/dist/task-board/components/commentAuthor.js +25 -0
  572. package/dist/task-board/components/commentAuthor.js.map +1 -0
  573. package/dist/task-board/services/issueService.d.ts +193 -0
  574. package/dist/task-board/services/issueService.js +97 -0
  575. package/dist/task-board/services/issueService.js.map +1 -0
  576. package/dist/task-board/taskBlockers.d.ts +10 -0
  577. package/dist/task-board/taskBlockers.js +66 -0
  578. package/dist/task-board/taskBlockers.js.map +1 -0
  579. package/dist/task-board/utils/projectDashboardModel.d.ts +68 -0
  580. package/dist/task-board/utils/projectDashboardModel.js +369 -0
  581. package/dist/task-board/utils/projectDashboardModel.js.map +1 -0
  582. package/dist/task-board/views/ProjectDashboardView.d.ts +28 -0
  583. package/dist/task-board/views/ProjectDashboardView.js +308 -0
  584. package/dist/task-board/views/ProjectDashboardView.js.map +1 -0
  585. package/dist/tour/TourInputBoundary.d.ts +6 -0
  586. package/dist/tour/TourInputBoundary.js +82 -0
  587. package/dist/tour/TourInputBoundary.js.map +1 -0
  588. package/dist/tour/sandbox-tour-copy.d.ts +8 -0
  589. package/dist/tour/sandbox-tour-copy.js +8 -0
  590. package/dist/tour/sandbox-tour-copy.js.map +1 -1
  591. package/dist/tour/sandbox-tour.d.ts +3 -0
  592. package/dist/tour/sandbox-tour.js +112 -6
  593. package/dist/tour/sandbox-tour.js.map +1 -1
  594. package/dist/tour/tour-utils.d.ts +6 -0
  595. package/dist/tour/tour-utils.js +10 -0
  596. package/dist/tour/tour-utils.js.map +1 -1
  597. package/package.json +1 -1
  598. package/dist/editor/page-editor-chrome/bridgeLinkValue.d.ts +0 -10
  599. package/dist/editor/page-editor-chrome/bridgeLinkValue.js +0 -55
  600. package/dist/editor/page-editor-chrome/bridgeLinkValue.js.map +0 -1
@@ -0,0 +1,66 @@
1
+ import { type CSSProperties } from "react";
2
+ import type { PageSnapshotResultEventPayload } from "../bridge/protocol";
3
+ import { type PageViewContext } from "../page-viewer/pageViewContext";
4
+ export type ThumbnailRect = {
5
+ x: number;
6
+ y: number;
7
+ width: number;
8
+ height: number;
9
+ };
10
+ /**
11
+ * One raster of the whole page plus the component boxes inside it. Rows crop
12
+ * their own thumbnail out of the shared image with CSS background positioning,
13
+ * so a page with thirty components costs one capture and zero canvases here.
14
+ */
15
+ export type LiveComponentThumbnailSheet = {
16
+ imageUrl: string;
17
+ /** CSS pixel size of the captured page; rects share this space. */
18
+ width: number;
19
+ height: number;
20
+ rects: Map<string, ThumbnailRect>;
21
+ };
22
+ /** Quiet time after the last host DOM mutation before the page is recaptured. */
23
+ export declare const LIVE_THUMBNAIL_DEBOUNCE_MS = 1200;
24
+ /** Delay for the first capture after thumbnails are switched on. */
25
+ export declare const LIVE_THUMBNAIL_INITIAL_DELAY_MS = 300;
26
+ export declare const LIVE_THUMBNAIL_BOX: {
27
+ width: number;
28
+ height: number;
29
+ };
30
+ /** Allow long pages while the host limits total pixels and sizes for each crop. */
31
+ export declare const LIVE_THUMBNAIL_MAX_DIMENSION = 16384;
32
+ export declare function buildThumbnailSheet(payload: PageSnapshotResultEventPayload, imageUrl: string): LiveComponentThumbnailSheet;
33
+ export declare function findThumbnailRect(sheet: LiveComponentThumbnailSheet, componentId: string | null | undefined): ThumbnailRect | null;
34
+ /**
35
+ * CSS that shows exactly one component's crop of the sheet inside a box of the
36
+ * given size. Always fits the entire component, including tall modules in a
37
+ * narrow viewport. Clip the shared page image to the component's bounds so
38
+ * neighboring components cannot show through the unused space.
39
+ */
40
+ export declare function getThumbnailBackgroundStyle(sheet: LiveComponentThumbnailSheet, rect: ThumbnailRect, box: {
41
+ width: number;
42
+ height: number;
43
+ }): CSSProperties;
44
+ /**
45
+ * Turns the host's data URL into an object URL so thirty rows reference one
46
+ * short blob URL instead of each inlining a megabyte of base64 into their
47
+ * style attribute. Falls back to the data URL where object URLs are missing.
48
+ */
49
+ export declare function toThumbnailImageUrl(dataUrl: string): string;
50
+ export type LiveComponentThumbnails = {
51
+ /** Null until the first capture lands, or when the bridge is unavailable. */
52
+ sheet: LiveComponentThumbnailSheet | null;
53
+ /**
54
+ * True while thumbnails are on and the first sheet is still on its way
55
+ * (bridge warming up or capture pending). False once a sheet exists, when
56
+ * the context cannot capture at all, or after the first capture failed.
57
+ */
58
+ loading: boolean;
59
+ };
60
+ /**
61
+ * Keeps a fresh page sheet while `enabled`: captures shortly after switching
62
+ * on, then again a little after every burst of host DOM mutations (typing,
63
+ * inserts, reorders, refreshes). Only one capture runs at a time; changes that
64
+ * arrive mid-capture queue exactly one follow-up.
65
+ */
66
+ export declare function useLiveComponentThumbnails(pageViewContext: PageViewContext | undefined, enabled: boolean): LiveComponentThumbnails;
@@ -0,0 +1,225 @@
1
+ import { useEffect, useRef, useState } from "react";
2
+ import { normalizeBridgeKey } from "../bridge/bridgeKeys";
3
+ import { usePageViewState, } from "../page-viewer/pageViewContext";
4
+ /** Quiet time after the last host DOM mutation before the page is recaptured. */
5
+ export const LIVE_THUMBNAIL_DEBOUNCE_MS = 1200;
6
+ /** Delay for the first capture after thumbnails are switched on. */
7
+ export const LIVE_THUMBNAIL_INITIAL_DELAY_MS = 300;
8
+ export const LIVE_THUMBNAIL_BOX = { width: 56, height: 36 };
9
+ /** Allow long pages while the host limits total pixels and sizes for each crop. */
10
+ export const LIVE_THUMBNAIL_MAX_DIMENSION = 16_384;
11
+ export function buildThumbnailSheet(payload, imageUrl) {
12
+ const rects = new Map();
13
+ for (const component of payload.components ?? []) {
14
+ const id = normalizeBridgeKey(component.componentId || component.key);
15
+ if (!id || rects.has(id))
16
+ continue;
17
+ if (component.width <= 0 || component.height <= 0)
18
+ continue;
19
+ rects.set(id, {
20
+ x: component.x,
21
+ y: component.y,
22
+ width: component.width,
23
+ height: component.height,
24
+ });
25
+ }
26
+ return {
27
+ imageUrl,
28
+ width: Math.max(1, payload.width ?? 1),
29
+ height: Math.max(1, payload.height ?? 1),
30
+ rects,
31
+ };
32
+ }
33
+ export function findThumbnailRect(sheet, componentId) {
34
+ return sheet.rects.get(normalizeBridgeKey(componentId)) ?? null;
35
+ }
36
+ /**
37
+ * CSS that shows exactly one component's crop of the sheet inside a box of the
38
+ * given size. Always fits the entire component, including tall modules in a
39
+ * narrow viewport. Clip the shared page image to the component's bounds so
40
+ * neighboring components cannot show through the unused space.
41
+ */
42
+ export function getThumbnailBackgroundStyle(sheet, rect, box) {
43
+ const scale = Math.min(box.width / rect.width, box.height / rect.height, 1);
44
+ const insetX = Math.max(0, (box.width - rect.width * scale) / 2);
45
+ const insetY = Math.max(0, (box.height - rect.height * scale) / 2);
46
+ const offsetX = insetX - rect.x * scale;
47
+ const offsetY = insetY - rect.y * scale;
48
+ return {
49
+ backgroundImage: `url("${sheet.imageUrl}")`,
50
+ backgroundRepeat: "no-repeat",
51
+ backgroundSize: `${round(sheet.width * scale)}px ${round(sheet.height * scale)}px`,
52
+ backgroundPosition: `${round(offsetX)}px ${round(offsetY)}px`,
53
+ clipPath: `inset(${round(insetY)}px ${round(insetX)}px)`,
54
+ };
55
+ }
56
+ function round(value) {
57
+ return Math.round(value * 100) / 100;
58
+ }
59
+ /**
60
+ * Turns the host's data URL into an object URL so thirty rows reference one
61
+ * short blob URL instead of each inlining a megabyte of base64 into their
62
+ * style attribute. Falls back to the data URL where object URLs are missing.
63
+ */
64
+ export function toThumbnailImageUrl(dataUrl) {
65
+ if (typeof URL === "undefined" ||
66
+ typeof URL.createObjectURL !== "function" ||
67
+ typeof Blob === "undefined") {
68
+ return dataUrl;
69
+ }
70
+ try {
71
+ const comma = dataUrl.indexOf(",");
72
+ const header = dataUrl.slice(0, comma);
73
+ const body = dataUrl.slice(comma + 1);
74
+ const mimeMatch = /^data:([^;,]+)/.exec(header);
75
+ const mime = mimeMatch?.[1] ?? "image/png";
76
+ if (!/;base64$/i.test(header)) {
77
+ return dataUrl;
78
+ }
79
+ const binary = atob(body);
80
+ const bytes = new Uint8Array(binary.length);
81
+ for (let i = 0; i < binary.length; i++) {
82
+ bytes[i] = binary.charCodeAt(i);
83
+ }
84
+ return URL.createObjectURL(new Blob([bytes], { type: mime }));
85
+ }
86
+ catch {
87
+ return dataUrl;
88
+ }
89
+ }
90
+ function revokeThumbnailImageUrl(url) {
91
+ if (!url || !url.startsWith("blob:"))
92
+ return;
93
+ try {
94
+ URL.revokeObjectURL(url);
95
+ }
96
+ catch {
97
+ // Already revoked or unsupported - nothing to release.
98
+ }
99
+ }
100
+ /**
101
+ * Keeps a fresh page sheet while `enabled`: captures shortly after switching
102
+ * on, then again a little after every burst of host DOM mutations (typing,
103
+ * inserts, reorders, refreshes). Only one capture runs at a time; changes that
104
+ * arrive mid-capture queue exactly one follow-up.
105
+ */
106
+ export function useLiveComponentThumbnails(pageViewContext, enabled) {
107
+ const [sheet, setSheet] = useState(null);
108
+ const [initialCaptureFailed, setInitialCaptureFailed] = useState(false);
109
+ const sheetRef = useRef(null);
110
+ const timerRef = useRef(null);
111
+ const inFlightRef = useRef(false);
112
+ const dirtyRef = useRef(false);
113
+ const disposedRef = useRef(false);
114
+ const bridgeReady = !!usePageViewState(pageViewContext, (state) => state.bridgeReady);
115
+ const canvasAttached = !!usePageViewState(pageViewContext, (state) => state.canvasAttached);
116
+ const bridgeStructure = usePageViewState(pageViewContext, (state) => state.bridgeStructure);
117
+ const active = enabled && bridgeReady && canvasAttached;
118
+ useEffect(() => {
119
+ disposedRef.current = false;
120
+ return () => {
121
+ disposedRef.current = true;
122
+ if (timerRef.current !== null) {
123
+ window.clearTimeout(timerRef.current);
124
+ timerRef.current = null;
125
+ }
126
+ revokeThumbnailImageUrl(sheetRef.current?.imageUrl);
127
+ sheetRef.current = null;
128
+ };
129
+ }, []);
130
+ useEffect(() => {
131
+ if (!active) {
132
+ setInitialCaptureFailed(false);
133
+ if (timerRef.current !== null) {
134
+ window.clearTimeout(timerRef.current);
135
+ timerRef.current = null;
136
+ }
137
+ dirtyRef.current = false;
138
+ if (sheetRef.current) {
139
+ revokeThumbnailImageUrl(sheetRef.current.imageUrl);
140
+ sheetRef.current = null;
141
+ setSheet(null);
142
+ }
143
+ return;
144
+ }
145
+ const capture = async () => {
146
+ timerRef.current = null;
147
+ const request = pageViewContext?.requestBridgePageSnapshot;
148
+ if (!request || !pageViewContext?.getState().bridgeReady)
149
+ return;
150
+ if (inFlightRef.current) {
151
+ dirtyRef.current = true;
152
+ return;
153
+ }
154
+ inFlightRef.current = true;
155
+ dirtyRef.current = false;
156
+ try {
157
+ const payload = await request({
158
+ maxDimension: LIVE_THUMBNAIL_MAX_DIMENSION,
159
+ thumbnailSize: {
160
+ width: LIVE_THUMBNAIL_BOX.width * 2,
161
+ height: LIVE_THUMBNAIL_BOX.height * 2,
162
+ },
163
+ });
164
+ if (disposedRef.current)
165
+ return;
166
+ if (payload.dataUrl && !payload.error) {
167
+ const next = buildThumbnailSheet(payload, toThumbnailImageUrl(payload.dataUrl));
168
+ revokeThumbnailImageUrl(sheetRef.current?.imageUrl);
169
+ sheetRef.current = next;
170
+ setSheet(next);
171
+ setInitialCaptureFailed(false);
172
+ }
173
+ else if (!sheetRef.current) {
174
+ setInitialCaptureFailed(true);
175
+ }
176
+ }
177
+ catch {
178
+ // Keep the previous sheet; the next DOM change retries.
179
+ if (!disposedRef.current && !sheetRef.current) {
180
+ setInitialCaptureFailed(true);
181
+ }
182
+ }
183
+ finally {
184
+ inFlightRef.current = false;
185
+ if (dirtyRef.current && !disposedRef.current) {
186
+ schedule(LIVE_THUMBNAIL_DEBOUNCE_MS);
187
+ }
188
+ }
189
+ };
190
+ const schedule = (delay) => {
191
+ if (timerRef.current !== null) {
192
+ window.clearTimeout(timerRef.current);
193
+ }
194
+ timerRef.current = window.setTimeout(() => {
195
+ void capture();
196
+ }, delay);
197
+ };
198
+ // Every new DOM snapshot of the host is a mutation burst to settle.
199
+ let lastDom = pageViewContext?.getState().bridgeDom;
200
+ const unsubscribe = pageViewContext?.subscribe(() => {
201
+ const dom = pageViewContext.getState().bridgeDom;
202
+ if (dom === lastDom)
203
+ return;
204
+ lastDom = dom;
205
+ schedule(LIVE_THUMBNAIL_DEBOUNCE_MS);
206
+ });
207
+ schedule(sheetRef.current
208
+ ? LIVE_THUMBNAIL_DEBOUNCE_MS
209
+ : LIVE_THUMBNAIL_INITIAL_DELAY_MS);
210
+ return () => {
211
+ unsubscribe?.();
212
+ if (timerRef.current !== null) {
213
+ window.clearTimeout(timerRef.current);
214
+ timerRef.current = null;
215
+ }
216
+ };
217
+ // A new structure means components were added, removed or reordered; the
218
+ // effect re-runs and schedules a debounced recapture.
219
+ }, [active, pageViewContext, bridgeStructure]);
220
+ // A not-yet-ready bridge still counts as loading: the page is warming up and
221
+ // the capture follows. A context that cannot capture at all never loads.
222
+ const loading = enabled && canvasAttached && !sheet && !initialCaptureFailed;
223
+ return { sheet, loading };
224
+ }
225
+ //# sourceMappingURL=liveComponentThumbnails.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"liveComponentThumbnails.js","sourceRoot":"","sources":["../../../src/editor/sidebar/liveComponentThumbnails.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import type { MenuItem } from "../../config/types";
2
+ import type { BridgeGeometrySnapshot } from "../bridge/protocol";
3
+ import type { FieldDescriptor } from "../pageModel";
4
+ import { type SpellCheckClient } from "./spellCheckClient";
5
+ export declare const SPANS_FORMATTING_MESSAGE = "This word spans formatting; edit it in the side panel.";
6
+ /** The slice of the edit context the canvas menu needs. */
7
+ export type CanvasSpellCheckEditor = {
8
+ operations: {
9
+ editField(args: {
10
+ field: FieldDescriptor;
11
+ value: string;
12
+ refresh: "none" | "immediate";
13
+ saveMode: "immediate";
14
+ }): Promise<unknown>;
15
+ };
16
+ };
17
+ /**
18
+ * The spell-check section of the canvas context menu: suggestions for the
19
+ * misspelling under the right-clicked point, or nothing when the point is not
20
+ * over one. Replacement goes through the same field write the find-and-replace
21
+ * dialog uses, after the guard proved the field value is still the checked one.
22
+ */
23
+ export declare function buildCanvasSpellCheckMenuItems(args: {
24
+ editor: CanvasSpellCheckEditor;
25
+ geometry: BridgeGeometrySnapshot | undefined;
26
+ clientX: number | undefined;
27
+ clientY: number | undefined;
28
+ enabled?: boolean;
29
+ client?: SpellCheckClient;
30
+ }): Promise<MenuItem[]>;
@@ -0,0 +1,69 @@
1
+ import { toast } from "sonner";
2
+ import { captureReplacement, STALE_REPLACEMENT_MESSAGE, verifyReplacement, } from "./replacementGuard";
3
+ import { spellCheckClient } from "./spellCheckClient";
4
+ import { spellCheckCanvasStore } from "./spellCheckCanvasStore";
5
+ import { findSpellCheckTargetAtPoint } from "./spellCheckCanvasTargets";
6
+ import { addWordToDictionary, buildSpellCheckMenuItems, SPELLCHECK_MENU_ID_PREFIX, } from "./spellCheckContextMenu";
7
+ import { replaceRenderedRange } from "./spellCheckReplace";
8
+ export const SPANS_FORMATTING_MESSAGE = "This word spans formatting; edit it in the side panel.";
9
+ /**
10
+ * The spell-check section of the canvas context menu: suggestions for the
11
+ * misspelling under the right-clicked point, or nothing when the point is not
12
+ * over one. Replacement goes through the same field write the find-and-replace
13
+ * dialog uses, after the guard proved the field value is still the checked one.
14
+ */
15
+ export async function buildCanvasSpellCheckMenuItems(args) {
16
+ if (args.enabled === false)
17
+ return [];
18
+ const key = findSpellCheckTargetAtPoint(args.geometry, args.clientX, args.clientY);
19
+ if (!key)
20
+ return [];
21
+ const match = spellCheckCanvasStore.getMatch(key);
22
+ if (!match)
23
+ return [];
24
+ const client = args.client ?? spellCheckClient;
25
+ const capture = captureReplacement(match.checkedText, {
26
+ start: match.start,
27
+ end: match.end,
28
+ word: match.word,
29
+ });
30
+ const items = await buildSpellCheckMenuItems({
31
+ language: match.language,
32
+ word: match.word,
33
+ onReplace: async (replacement) => {
34
+ const latest = spellCheckCanvasStore.getTarget(match.targetKey);
35
+ const verdict = verifyReplacement(capture, latest?.text ?? "");
36
+ if (!latest || !verdict.ok || latest.value !== match.value) {
37
+ toast.info(STALE_REPLACEMENT_MESSAGE);
38
+ client.invalidateLanguage(match.language);
39
+ return;
40
+ }
41
+ const next = replaceRenderedRange(latest.value, match.fieldType, capture.start, capture.end, capture.word, replacement);
42
+ if (next === undefined) {
43
+ toast.error(SPANS_FORMATTING_MESSAGE);
44
+ return;
45
+ }
46
+ await args.editor.operations.editField({
47
+ field: match.field,
48
+ value: next,
49
+ refresh: "immediate",
50
+ saveMode: "immediate",
51
+ });
52
+ },
53
+ onIgnore: () => client.ignoreWord(match.language, match.word),
54
+ onAddToDictionary: async () => {
55
+ await addWordToDictionary(match.language, match.word, client);
56
+ },
57
+ });
58
+ if (items.length === 0)
59
+ return [];
60
+ return [
61
+ {
62
+ id: `${SPELLCHECK_MENU_ID_PREFIX}heading`,
63
+ label: `Spelling: ${match.word}`,
64
+ disabled: true,
65
+ },
66
+ ...items,
67
+ ];
68
+ }
69
+ //# sourceMappingURL=canvasSpellCheckContextMenu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canvasSpellCheckContextMenu.js","sourceRoot":"","sources":["../../../src/editor/spellcheck/canvasSpellCheckContextMenu.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ import { type HtmlToken } from "./htmlSpellTokenizer";
2
+ /**
3
+ * One parsed representation of a stored HTML value that serves both spell
4
+ * text extraction and replacement.
5
+ *
6
+ * - `text` is the spell-check text: every text token decoded with the full
7
+ * HTML5 entity table and its line breaks normalized (`\r\n` and `\r` become
8
+ * `\n`, as the browser's input preprocessing does), plus a `"\n"` separator
9
+ * whenever a block-level element is entered or left and for `<br>` / `<hr>`.
10
+ * Raw-text content (`script`, `style`, `textarea`, `title`) is part of the
11
+ * browser's `textContent`, so it is kept at full length but masked with
12
+ * spaces: nothing inside is ever checked and every later offset stays put.
13
+ * - Removing the separators yields exactly `element.textContent` of the
14
+ * rendered value, which is the offset space the canvas bridge measures.
15
+ * - Every segment remembers its source range and a decoded→source mapping, so
16
+ * a replacement rebuilds the value from untouched source slices and only
17
+ * re-encodes the replaced word.
18
+ */
19
+ export type HtmlSpellSegment = {
20
+ kind: "text" | "masked";
21
+ sourceStart: number;
22
+ sourceEnd: number;
23
+ /** Decoded, newline-normalized text (spaces for masked segments). */
24
+ decoded: string;
25
+ spellStart: number;
26
+ spellEnd: number;
27
+ /**
28
+ * Decoded runs with their source ranges, for mapping decoded offsets back
29
+ * to source offsets. Absent when the mapping could not be verified against
30
+ * the authoritative decode; such a segment is checked but never edited.
31
+ */
32
+ runs?: DecodedRun[];
33
+ };
34
+ export type DecodedRun = {
35
+ decStart: number;
36
+ decEnd: number;
37
+ srcStart: number;
38
+ srcEnd: number;
39
+ };
40
+ export type HtmlSpellDocument = {
41
+ source: string;
42
+ text: string;
43
+ separators: number[];
44
+ segments: HtmlSpellSegment[];
45
+ tokens: HtmlToken[];
46
+ };
47
+ export declare function parseHtmlSpellDocument(source: string): HtmlSpellDocument;
48
+ /**
49
+ * Converts a spell-text offset to the matching `element.textContent` offset by
50
+ * discounting the separators inserted before it.
51
+ */
52
+ export declare function toTextContentOffset(offset: number, separators: number[]): number;
53
+ /**
54
+ * Replaces `[start, end)` of the spell text, which must lie inside one text
55
+ * segment and equal `word`, and returns the new source value. Everything
56
+ * outside the replaced word is copied from the source byte for byte; the
57
+ * replacement itself is entity-encoded. Returns undefined when the range spans
58
+ * a tag boundary, does not match `word`, or falls inside an entity.
59
+ */
60
+ export declare function replaceInDocument(document: HtmlSpellDocument, start: number, end: number, word: string, replacement: string): string | undefined;
@@ -0,0 +1,181 @@
1
+ import { decode, encode } from "html-entities";
2
+ import { tokenizeHtml } from "./htmlSpellTokenizer";
3
+ const ENTITY_PATTERN = /&(?:#[xX][0-9a-fA-F]+;?|#[0-9]+;?|[a-zA-Z][a-zA-Z0-9]*;?)/g;
4
+ function decodeText(raw) {
5
+ return decode(raw, { level: "html5", scope: "body" });
6
+ }
7
+ /** `\r\n` and lone `\r` become `\n`, matching the HTML input stream preprocessing. */
8
+ function normalizeNewlines(text) {
9
+ return text.replace(/\r\n?/g, "\n");
10
+ }
11
+ /**
12
+ * Decodes `raw` run by run (plain characters, entities, CRLF) and records the
13
+ * source range of every run. Returns undefined when the run-wise decode does
14
+ * not reproduce the authoritative decode, so callers never map offsets
15
+ * through an inconsistent table.
16
+ */
17
+ function buildRuns(raw, decoded) {
18
+ const runs = [];
19
+ let out = "";
20
+ let src = 0;
21
+ let plainStart = -1;
22
+ const closePlain = (end) => {
23
+ if (plainStart < 0)
24
+ return;
25
+ runs.push({
26
+ decStart: out.length,
27
+ decEnd: out.length + (end - plainStart),
28
+ srcStart: plainStart,
29
+ srcEnd: end,
30
+ });
31
+ out += raw.slice(plainStart, end);
32
+ plainStart = -1;
33
+ };
34
+ while (src < raw.length) {
35
+ const code = raw.charCodeAt(src);
36
+ if (code === 13 /* \r */) {
37
+ closePlain(src);
38
+ const end = raw.charCodeAt(src + 1) === 10 ? src + 2 : src + 1;
39
+ runs.push({ decStart: out.length, decEnd: out.length + 1, srcStart: src, srcEnd: end });
40
+ out += "\n";
41
+ src = end;
42
+ continue;
43
+ }
44
+ if (code === 38 /* & */) {
45
+ ENTITY_PATTERN.lastIndex = src;
46
+ const match = ENTITY_PATTERN.exec(raw);
47
+ if (match && match.index === src) {
48
+ const entityText = decodeText(match[0]);
49
+ if (entityText !== match[0]) {
50
+ closePlain(src);
51
+ runs.push({
52
+ decStart: out.length,
53
+ decEnd: out.length + entityText.length,
54
+ srcStart: src,
55
+ srcEnd: src + match[0].length,
56
+ });
57
+ out += entityText;
58
+ src += match[0].length;
59
+ continue;
60
+ }
61
+ }
62
+ }
63
+ if (plainStart < 0)
64
+ plainStart = src;
65
+ src++;
66
+ }
67
+ closePlain(raw.length);
68
+ return out === decoded ? runs : undefined;
69
+ }
70
+ export function parseHtmlSpellDocument(source) {
71
+ const tokens = tokenizeHtml(source);
72
+ const segments = [];
73
+ const separators = [];
74
+ let text = "";
75
+ const separator = () => {
76
+ separators.push(text.length);
77
+ text += "\n";
78
+ };
79
+ for (const token of tokens) {
80
+ if (token.kind === "text") {
81
+ const raw = source.slice(token.start, token.end);
82
+ const decoded = normalizeNewlines(decodeText(raw));
83
+ const runs = buildRuns(raw, decoded);
84
+ segments.push({
85
+ kind: "text",
86
+ sourceStart: token.start,
87
+ sourceEnd: token.end,
88
+ decoded,
89
+ spellStart: text.length,
90
+ spellEnd: text.length + decoded.length,
91
+ runs,
92
+ });
93
+ text += decoded;
94
+ continue;
95
+ }
96
+ if (token.kind === "rawText") {
97
+ const raw = source.slice(token.start, token.end);
98
+ const content = normalizeNewlines(token.decodesEntities ? decodeText(raw) : raw);
99
+ const masked = " ".repeat(content.length);
100
+ segments.push({
101
+ kind: "masked",
102
+ sourceStart: token.start,
103
+ sourceEnd: token.end,
104
+ decoded: masked,
105
+ spellStart: text.length,
106
+ spellEnd: text.length + masked.length,
107
+ });
108
+ text += masked;
109
+ continue;
110
+ }
111
+ if (token.kind === "startTag") {
112
+ if (token.isBlock)
113
+ separator();
114
+ continue;
115
+ }
116
+ if (token.kind === "endTag") {
117
+ if (token.isBlock && !token.isVoid)
118
+ separator();
119
+ }
120
+ }
121
+ return { source, text, separators, segments, tokens };
122
+ }
123
+ /**
124
+ * Converts a spell-text offset to the matching `element.textContent` offset by
125
+ * discounting the separators inserted before it.
126
+ */
127
+ export function toTextContentOffset(offset, separators) {
128
+ let count = 0;
129
+ for (const separator of separators) {
130
+ if (separator < offset)
131
+ count++;
132
+ else
133
+ break;
134
+ }
135
+ return offset - count;
136
+ }
137
+ /** Source offset of a decoded offset inside a segment, or undefined inside a multi-character decode. */
138
+ function toSourceOffset(segment, decodedOffset) {
139
+ const runs = segment.runs;
140
+ if (!runs)
141
+ return undefined;
142
+ if (decodedOffset === segment.decoded.length)
143
+ return segment.sourceEnd;
144
+ // Run offsets are relative to the segment's raw text.
145
+ const base = segment.sourceStart;
146
+ for (const run of runs) {
147
+ if (decodedOffset < run.decStart || decodedOffset >= run.decEnd)
148
+ continue;
149
+ if (decodedOffset === run.decStart)
150
+ return base + run.srcStart;
151
+ const oneToOne = run.decEnd - run.decStart === run.srcEnd - run.srcStart;
152
+ return oneToOne ? base + run.srcStart + (decodedOffset - run.decStart) : undefined;
153
+ }
154
+ return decodedOffset === 0 ? segment.sourceStart : undefined;
155
+ }
156
+ /**
157
+ * Replaces `[start, end)` of the spell text, which must lie inside one text
158
+ * segment and equal `word`, and returns the new source value. Everything
159
+ * outside the replaced word is copied from the source byte for byte; the
160
+ * replacement itself is entity-encoded. Returns undefined when the range spans
161
+ * a tag boundary, does not match `word`, or falls inside an entity.
162
+ */
163
+ export function replaceInDocument(document, start, end, word, replacement) {
164
+ if (end <= start)
165
+ return undefined;
166
+ const segment = document.segments.find((candidate) => candidate.kind === "text" && candidate.spellStart <= start && end <= candidate.spellEnd);
167
+ if (!segment)
168
+ return undefined;
169
+ const localStart = start - segment.spellStart;
170
+ const localEnd = end - segment.spellStart;
171
+ if (segment.decoded.slice(localStart, localEnd) !== word)
172
+ return undefined;
173
+ const sourceStart = toSourceOffset(segment, localStart);
174
+ const sourceEnd = toSourceOffset(segment, localEnd);
175
+ if (sourceStart === undefined || sourceEnd === undefined)
176
+ return undefined;
177
+ return (document.source.slice(0, sourceStart) +
178
+ encode(replacement, { mode: "specialChars" }) +
179
+ document.source.slice(sourceEnd));
180
+ }
181
+ //# sourceMappingURL=htmlSpellDocument.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"htmlSpellDocument.js","sourceRoot":"","sources":["../../../src/editor/spellcheck/htmlSpellDocument.ts"],"names":[],"mappings":"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"}