@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,40 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { AlertCircle } from "lucide-react";
3
+ import { Alert, AlertDescription, AlertTitle } from "../../components/ui/alert";
4
+ import { getRenderingDisplayName, getUnapprovedRenderings, useRecordedPageRenderingIds, useRenderingPageState, } from "../page-viewer/renderingApproval";
5
+ function formatList(values) {
6
+ if (values.length <= 1)
7
+ return values[0] ?? "";
8
+ return `${values.slice(0, -1).join(", ")} and ${values[values.length - 1]}`;
9
+ }
10
+ /**
11
+ * Warns before publishing a page whose dynamic renderings or theme are not
12
+ * approved: published pages leave them out. It never blocks publishing, and
13
+ * it stays silent when the approval state cannot be loaded (for example on a
14
+ * CM without dynamic renderings). The page's renderings are the ones its
15
+ * canvas showed last; the CM adds the page tenant's theme.
16
+ */
17
+ export function DynamicRenderingsPublishWarning({ page, className, }) {
18
+ const renderingIds = useRecordedPageRenderingIds(page);
19
+ const { state } = useRenderingPageState({
20
+ page,
21
+ renderingIds,
22
+ enabled: !!page,
23
+ });
24
+ const unapproved = getUnapprovedRenderings(state?.renderings ?? []);
25
+ if (unapproved.length === 0)
26
+ return null;
27
+ const names = formatList(unapproved.map(getRenderingDisplayName));
28
+ const onlyTheme = unapproved.every((rendering) => rendering.kind === "theme");
29
+ const inSandbox = unapproved.some((rendering) => rendering.sandbox);
30
+ const single = unapproved.length === 1;
31
+ const consequence = onlyTheme
32
+ ? `The published page shows without ${names} until an administrator approves it and it is published.`
33
+ : `${names} will not show on the published page until an administrator approves ${single ? "it" : "them"} and ${single ? "it is" : "they are"} published.`;
34
+ return (_jsxs(Alert, { variant: "warning", className: className, "data-testid": "publish-dynamic-renderings-warning", children: [_jsx(AlertCircle, { strokeWidth: 1.5, className: "h-4 w-4" }), _jsx(AlertTitle, { className: "leading-snug", children: onlyTheme
35
+ ? "The theme is not approved."
36
+ : unapproved.length === 1
37
+ ? "A dynamic rendering on this page is not approved."
38
+ : `${unapproved.length} dynamic renderings on this page are not approved.` }), _jsxs(AlertDescription, { "data-testid": "publish-dynamic-renderings-warning-text", children: [consequence, " Publishing is still possible.", inSandbox && " Renderings in a sandbox cannot be approved."] })] }));
39
+ }
40
+ //# sourceMappingURL=DynamicRenderingsPublishWarning.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DynamicRenderingsPublishWarning.js","sourceRoot":"","sources":["../../../src/editor/ui/DynamicRenderingsPublishWarning.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAChF,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,2BAA2B,EAC3B,qBAAqB,GACtB,MAAM,kCAAkC,CAAC;AAG1C,SAAS,UAAU,CAAC,MAAyB;IAC3C,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC;QAAE,OAAO,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC/C,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;AAC9E,CAAC;AAOD;;;;;;GAMG;AACH,MAAM,UAAU,+BAA+B,CAAC,EAC9C,IAAI,EACJ,SAAS,GAC4B;IACrC,MAAM,YAAY,GAAG,2BAA2B,CAAC,IAAI,CAAC,CAAC;IACvD,MAAM,EAAE,KAAK,EAAE,GAAG,qBAAqB,CAAC;QACtC,IAAI;QACJ,YAAY;QACZ,OAAO,EAAE,CAAC,CAAC,IAAI;KAChB,CAAC,CAAC;IACH,MAAM,UAAU,GAAG,uBAAuB,CAAC,KAAK,EAAE,UAAU,IAAI,EAAE,CAAC,CAAC;IACpE,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAEzC,MAAM,KAAK,GAAG,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC,CAAC;IAClE,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;IAC9E,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACpE,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC;IACvC,MAAM,WAAW,GAAG,SAAS;QAC3B,CAAC,CAAC,oCAAoC,KAAK,0DAA0D;QACrG,CAAC,CAAC,GAAG,KAAK,wEACN,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAClB,QAAQ,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,aAAa,CAAC;IAEvD,OAAO,CACL,MAAC,KAAK,IACJ,OAAO,EAAC,SAAS,EACjB,SAAS,EAAE,SAAS,iBACR,oCAAoC,aAEhD,KAAC,WAAW,IAAC,WAAW,EAAE,GAAG,EAAE,SAAS,EAAC,SAAS,GAAG,EACrD,KAAC,UAAU,IAAC,SAAS,EAAC,cAAc,YACjC,SAAS;oBACR,CAAC,CAAC,4BAA4B;oBAC9B,CAAC,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC;wBACvB,CAAC,CAAC,mDAAmD;wBACrD,CAAC,CAAC,GAAG,UAAU,CAAC,MAAM,oDAAoD,GACnE,EACb,MAAC,gBAAgB,mBAAa,yCAAyC,aACpE,WAAW,oCACX,SAAS,IAAI,8CAA8C,IAC3C,IACb,CACT,CAAC;AACJ,CAAC"}
@@ -0,0 +1,15 @@
1
+ interface ParheliaMarkProps {
2
+ size?: number;
3
+ className?: string;
4
+ /** Class for the path itself, e.g. to animate its stroke or fill. */
5
+ pathClassName?: string;
6
+ title?: string;
7
+ }
8
+ /**
9
+ * The bare Parhelia swirl, without the rounded-square frame, filled with
10
+ * `currentColor`. Same geometry as the mark inside {@link ParheliaIconWhite}.
11
+ * The path carries `pathLength="1"`, so a stroke-dasharray of 1 covers the
12
+ * whole outline and stroke-dashoffset 1 → 0 draws it.
13
+ */
14
+ export declare function ParheliaMark({ size, className, pathClassName, title, }: ParheliaMarkProps): import("react").JSX.Element;
15
+ export {};
@@ -0,0 +1,12 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { cn } from "../../lib/utils";
3
+ /**
4
+ * The bare Parhelia swirl, without the rounded-square frame, filled with
5
+ * `currentColor`. Same geometry as the mark inside {@link ParheliaIconWhite}.
6
+ * The path carries `pathLength="1"`, so a stroke-dasharray of 1 covers the
7
+ * whole outline and stroke-dashoffset 1 → 0 draws it.
8
+ */
9
+ export function ParheliaMark({ size = 24, className = "", pathClassName, title, }) {
10
+ return (_jsx("svg", { width: size, height: size, viewBox: "26 12 106 122", fill: "none", xmlns: "http://www.w3.org/2000/svg", className: cn(className), role: title ? "img" : undefined, "aria-label": title, "aria-hidden": title ? undefined : true, children: _jsx("path", { d: "M36.1982 54.0662C76.1354 11.9006 112.19 16.4233 120.188 30.9227C128.184 45.4239 112.849 68.5587 85.9351 84.8276C84.091 85.909 80.1672 88.5236 78.0117 92.0964C75.8563 95.6694 75.2334 98.4808 76.141 102.027L86.4672 131.837L68.9513 106.639C63.733 99.899 57.0438 101.625 50.0238 103.553C47.1814 104.341 44.3508 105.193 41.511 106.027C41.3849 106.055 41.2686 106.1 40.9991 106.166L40.9883 106.148C42.311 104.785 43.5479 103.522 44.7747 102.241C46.2512 100.687 47.8345 99.2408 49.1769 97.572C53.28 92.413 56.7539 89.6049 54.5936 80.5091L49.104 60.8061L62.1773 76.7956C64.6158 79.3268 67.9892 80.0375 71.5604 80.0375C75.1316 80.0375 80.6409 76.7646 80.6409 76.7646C92.9675 69.3136 102.285 58.7658 107.417 50.4178C112.877 41.5379 112.24 36.4531 111.191 34.5493C110.141 32.6462 106.253 27.7135 96.1775 28.2236C86.7062 28.7034 77.7545 30.5001 62.1711 39.9195C46.5873 49.3392 33.5223 61.606 30.4356 64.0573H30.4325C30.4082 64.0418 28.3846 62.3158 36.1982 54.0662Z", fill: "currentColor", pathLength: 1, className: pathClassName }) }));
11
+ }
12
+ //# sourceMappingURL=ParheliaMark.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ParheliaMark.js","sourceRoot":"","sources":["../../../src/editor/ui/ParheliaMark.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAUrC;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,EAC3B,IAAI,GAAG,EAAE,EACT,SAAS,GAAG,EAAE,EACd,aAAa,EACb,KAAK,GACa;IAClB,OAAO,CACL,cACE,KAAK,EAAE,IAAI,EACX,MAAM,EAAE,IAAI,EACZ,OAAO,EAAC,eAAe,EACvB,IAAI,EAAC,MAAM,EACX,KAAK,EAAC,4BAA4B,EAClC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EACxB,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,gBACnB,KAAK,iBACJ,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,YAErC,eACE,CAAC,EAAC,07BAA07B,EAC57B,IAAI,EAAC,cAAc,EACnB,UAAU,EAAE,CAAC,EACb,SAAS,EAAE,aAAa,GACxB,GACE,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,18 @@
1
+ import type { FullItem } from "../pageModel";
2
+ export type RootItemPickerProps = {
3
+ /** The item currently chosen as the root; the trigger shows its name and path. */
4
+ selectedItem?: FullItem;
5
+ /** Called with the fully loaded item once the user picks one. */
6
+ onSelect: (item: FullItem) => void;
7
+ /** Trigger text while nothing is selected. */
8
+ placeholder?: string;
9
+ className?: string;
10
+ /** Test id of the trigger; the workbox e2e tests rely on the default. */
11
+ testId?: string;
12
+ };
13
+ /**
14
+ * The "pick a root item" control shared by the sidebars that aggregate a
15
+ * subtree (workbox, feedback): a trigger showing the selected item and a
16
+ * popover with a search box above the content tree.
17
+ */
18
+ export declare function RootItemPicker({ selectedItem, onSelect, placeholder, className, testId, }: RootItemPickerProps): import("react").JSX.Element;
@@ -0,0 +1,112 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useEffect, useRef, useState } from "react";
4
+ import { useDebouncedCallback } from "use-debounce";
5
+ import { toast } from "sonner";
6
+ import { Popover, PopoverContent, PopoverTrigger, } from "../../components/ui/popover";
7
+ import { SearchInput } from "../../components/SearchInput";
8
+ import { cn } from "../../lib/utils";
9
+ import { rootItemId as sitecoreRootItemId } from "../../config/config";
10
+ import { useEditContext } from "../client/editContext";
11
+ import { ScrollingContentTree } from "../ScrollingContentTree";
12
+ import { executeSearch } from "../services/searchService";
13
+ import { ItemList } from "./ItemList";
14
+ const guidPattern = /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/;
15
+ /**
16
+ * The "pick a root item" control shared by the sidebars that aggregate a
17
+ * subtree (workbox, feedback): a trigger showing the selected item and a
18
+ * popover with a search box above the content tree.
19
+ */
20
+ export function RootItemPicker({ selectedItem, onSelect, placeholder = "Select root item...", className, testId = "root-selector-button", }) {
21
+ const editContext = useEditContext();
22
+ const [open, setOpen] = useState(false);
23
+ const [query, setQuery] = useState("");
24
+ const [searchResults, setSearchResults] = useState([]);
25
+ const [loading, setLoading] = useState(false);
26
+ const [hoveredItem, setHoveredItem] = useState();
27
+ const inputRef = useRef(null);
28
+ const handleSearch = useDebouncedCallback(async (searchPrompt) => {
29
+ if (!editContext || !searchPrompt) {
30
+ setSearchResults([]);
31
+ setLoading(false);
32
+ return;
33
+ }
34
+ setLoading(true);
35
+ const currentQuery = searchPrompt;
36
+ if (guidPattern.test(searchPrompt)) {
37
+ const item = await editContext.itemsRepository.getItem({
38
+ id: searchPrompt,
39
+ language: "en",
40
+ version: 0,
41
+ });
42
+ if (query === currentQuery) {
43
+ setSearchResults(item
44
+ ? [
45
+ {
46
+ id: item.id,
47
+ name: item.name,
48
+ language: item.language || "en",
49
+ icon: item.icon,
50
+ path: item.path || item.name,
51
+ idPath: item.idPath,
52
+ },
53
+ ]
54
+ : []);
55
+ }
56
+ setLoading(false);
57
+ return;
58
+ }
59
+ const result = await executeSearch({
60
+ index: "master",
61
+ query: searchPrompt,
62
+ editContext,
63
+ maxResults: 5,
64
+ rootItemIds: [sitecoreRootItemId],
65
+ });
66
+ if (query === currentQuery) {
67
+ if (result.type == "success") {
68
+ setSearchResults(result.data);
69
+ }
70
+ else {
71
+ toast.error(result.response.statusText || "Error searching");
72
+ setSearchResults([]);
73
+ }
74
+ }
75
+ setLoading(false);
76
+ }, 600);
77
+ useEffect(() => {
78
+ if (query) {
79
+ setLoading(true);
80
+ handleSearch(query);
81
+ }
82
+ else {
83
+ setSearchResults([]);
84
+ setLoading(false);
85
+ }
86
+ }, [query]);
87
+ useEffect(() => {
88
+ if (inputRef.current && open) {
89
+ inputRef.current.focus();
90
+ }
91
+ }, [open]);
92
+ const pick = async (picked) => {
93
+ const selected = Array.isArray(picked) ? picked[0] : picked;
94
+ if (!selected)
95
+ return;
96
+ const descriptor = selected;
97
+ const item = await editContext?.itemsRepository.getItem({
98
+ id: descriptor.id,
99
+ language: descriptor.language,
100
+ version: descriptor.version || 0,
101
+ });
102
+ if (item) {
103
+ onSelect(item);
104
+ setOpen(false);
105
+ setQuery("");
106
+ setSearchResults([]);
107
+ }
108
+ };
109
+ const hasResults = searchResults.length > 0;
110
+ return (_jsxs(Popover, { open: open, onOpenChange: setOpen, children: [_jsx(PopoverTrigger, { asChild: true, children: _jsx("div", { className: cn("border-border-default badge-pad hover:bg-neutral-grey-5 cursor-pointer rounded border text-xs", className), "data-testid": testId, children: selectedItem ? (_jsxs("div", { className: "truncate", children: [_jsx("span", { className: "font-medium", children: selectedItem.name }), _jsx("span", { className: "text-neutral-grey-50 ml-1", children: selectedItem.path })] })) : (_jsx("span", { className: "text-neutral-grey-50", children: placeholder })) }) }), _jsx(PopoverContent, { className: "w-96 p-0", align: "start", children: _jsxs("div", { className: "flex h-[50vh] max-h-[400px] max-w-96 min-w-96 flex-col overflow-hidden", children: [_jsx("div", { className: "border-border-default border-b p-2", children: _jsx(SearchInput, { value: query, onChange: setQuery, ref: inputRef, placeholder: "Search content...", loading: loading, className: "w-full", spinnerStyle: { width: "18px", height: "18px" } }) }), _jsxs("div", { className: "flex flex-1 flex-col overflow-hidden", children: [hasResults && (_jsx("div", { className: "border-border-default max-h-[50%] shrink-0 overflow-auto border-b", children: _jsx("div", { className: "p-2", children: _jsx(ItemList, { items: searchResults, onItemHover: setHoveredItem, onItemClick: pick, maxItems: 20, className: "max-h-full overflow-auto" }) }) })), _jsx("div", { className: "relative min-h-0 flex-1", children: _jsx("div", { className: "absolute inset-0 overflow-auto", children: _jsx(ScrollingContentTree, { hideRootNodes: true, rootItemId: sitecoreRootItemId, selectedItemId: hoveredItem?.id ?? selectedItem?.id, onSelectionChange: pick }) }) })] })] }) })] }));
111
+ }
112
+ //# sourceMappingURL=RootItemPicker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RootItemPicker.js","sourceRoot":"","sources":["../../../src/editor/ui/RootItemPicker.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { EditOperation } from "../types";
2
+ export declare function canUndoOperation(operation: EditOperation): boolean;
@@ -0,0 +1,8 @@
1
+ export function canUndoOperation(operation) {
2
+ return (operation.canUndo === true &&
3
+ operation.undoSupported !== false &&
4
+ !operation.undone &&
5
+ operation.executionStatus !== "executing" &&
6
+ operation.executionStatus !== "pending");
7
+ }
8
+ //# sourceMappingURL=undoEligibility.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"undoEligibility.js","sourceRoot":"","sources":["../../src/editor/undoEligibility.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,gBAAgB,CAAC,SAAwB;IACvD,OAAO,CACL,SAAS,CAAC,OAAO,KAAK,IAAI;QAC1B,SAAS,CAAC,aAAa,KAAK,KAAK;QACjC,CAAC,SAAS,CAAC,MAAM;QACjB,SAAS,CAAC,eAAe,KAAK,WAAW;QACzC,SAAS,CAAC,eAAe,KAAK,SAAS,CACxC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Image files carried by a clipboard paste or a drag & drop. Shared by the
3
+ * comment composers and the media selector, which all accept Ctrl+V of an
4
+ * image (a screenshot, a copied picture) as an upload.
5
+ */
6
+ /** Extracts pasted or dropped image files from a DataTransfer, ignoring plain text. */
7
+ export declare function getImageFilesFromDataTransfer(data: DataTransfer | null | undefined): File[];
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Image files carried by a clipboard paste or a drag & drop. Shared by the
3
+ * comment composers and the media selector, which all accept Ctrl+V of an
4
+ * image (a screenshot, a copied picture) as an upload.
5
+ */
6
+ function extensionForType(type) {
7
+ const subtype = type.split("/")[1]?.toLowerCase() ?? "png";
8
+ return subtype === "jpeg" ? "jpg" : subtype;
9
+ }
10
+ /** Extracts pasted or dropped image files from a DataTransfer, ignoring plain text. */
11
+ export function getImageFilesFromDataTransfer(data) {
12
+ if (!data)
13
+ return [];
14
+ const files = [];
15
+ const items = data.items;
16
+ if (items && items.length > 0) {
17
+ for (let index = 0; index < items.length; index++) {
18
+ const item = items[index];
19
+ if (!item || item.kind !== "file" || !item.type.startsWith("image/")) {
20
+ continue;
21
+ }
22
+ const file = item.getAsFile();
23
+ if (file)
24
+ files.push(file);
25
+ }
26
+ }
27
+ else if (data.files && data.files.length > 0) {
28
+ for (let index = 0; index < data.files.length; index++) {
29
+ const file = data.files[index];
30
+ if (file && file.type.startsWith("image/"))
31
+ files.push(file);
32
+ }
33
+ }
34
+ return files.map((file) => {
35
+ // Clipboard images arrive as a generic "image.png"; give them a distinct name.
36
+ if (!file.name || /^image\.[a-z]+$/i.test(file.name)) {
37
+ const stamp = new Date().toISOString().replace(/[:.]/g, "-");
38
+ return new File([file], `pasted-image-${stamp}.${extensionForType(file.type)}`, { type: file.type });
39
+ }
40
+ return file;
41
+ });
42
+ }
43
+ //# sourceMappingURL=dataTransferImages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dataTransferImages.js","sourceRoot":"","sources":["../../../src/editor/utils/dataTransferImages.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,SAAS,gBAAgB,CAAC,IAAY;IACpC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,KAAK,CAAC;IAC3D,OAAO,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC;AAC9C,CAAC;AAED,uFAAuF;AACvF,MAAM,UAAU,6BAA6B,CAC3C,IAAqC;IAErC,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IACrB,MAAM,KAAK,GAAW,EAAE,CAAC;IAEzB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IACzB,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;YAClD,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;YAC1B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACrE,SAAS;YACX,CAAC;YACD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;YAC9B,IAAI,IAAI;gBAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;SAAM,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/C,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;YACvD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC/B,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACxB,+EAA+E;QAC/E,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACrD,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YAC7D,OAAO,IAAI,IAAI,CACb,CAAC,IAAI,CAAC,EACN,gBAAgB,KAAK,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EACtD,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CACpB,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1,4 +1,4 @@
1
- import { EditContextType } from "../client/editContext";
1
+ import { EditContextType, FieldsEditContextType } from "../client/editContext";
2
2
  export declare const VALIDATION_SLOT_TAG = "validation";
3
3
  export type ValidationIssueTarget = {
4
4
  itemId: string;
@@ -10,4 +10,4 @@ export type ValidationIssueTarget = {
10
10
  * Opens the item a validation issue belongs to and focuses the field.
11
11
  * Shared by the Validation sidebar rows and the issue popovers.
12
12
  */
13
- export declare function navigateToValidationIssue(editContext: EditContextType, target: ValidationIssueTarget, setFocusedField?: EditContextType["setFocusedField"] | undefined): Promise<void>;
13
+ export declare function navigateToValidationIssue(editContext: EditContextType, target: ValidationIssueTarget, setFocusedField: FieldsEditContextType["setFocusedField"] | undefined): Promise<void>;
@@ -5,7 +5,7 @@ export const VALIDATION_SLOT_TAG = "validation";
5
5
  * Opens the item a validation issue belongs to and focuses the field.
6
6
  * Shared by the Validation sidebar rows and the issue popovers.
7
7
  */
8
- export async function navigateToValidationIssue(editContext, target, setFocusedField = editContext.setFocusedField) {
8
+ export async function navigateToValidationIssue(editContext, target, setFocusedField) {
9
9
  const itemDescriptor = {
10
10
  id: target.itemId,
11
11
  language: target.language,
@@ -1 +1 @@
1
- {"version":3,"file":"navigateToValidationIssue.js","sourceRoot":"","sources":["../../../src/editor/validation/navigateToValidationIssue.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAErC,+EAA+E;AAC/E,MAAM,CAAC,MAAM,mBAAmB,GAAG,YAAY,CAAC;AAShD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,WAA4B,EAC5B,MAA6B,EAC7B,eAAe,GAAmD,WAAW,CAAC,eAAe;IAE7F,MAAM,cAAc,GAAG;QACrB,EAAE,EAAE,MAAM,CAAC,MAAM;QACjB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,OAAO,EAAE,MAAM,CAAC,OAAO;KACxB,CAAC;IAEF,MAAM,KAAK,GAAG,WAAW,CAAC,WAAW,IAAI,EAAE,CAAC;IAC5C,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CACzB,CAAC,IAAI,EAAE,EAAE,CACP,SAAS,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,IAAI,EAAE,CAAC,KAAK,SAAS,CAAC,cAAc,CAAC,EAAE,CAAC;QACzE,IAAI,CAAC,cAAc,EAAE,QAAQ,EAAE,WAAW,EAAE;YAC1C,cAAc,CAAC,QAAQ,EAAE,WAAW,EAAE;QACxC,IAAI,CAAC,cAAc,EAAE,OAAO,KAAK,cAAc,CAAC,OAAO,CAC1D,CAAC;IAEF,IAAI,QAAQ,EAAE,CAAC;QACb,WAAW,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC7C,CAAC;SAAM,CAAC;QACN,yEAAyE;QACzE,oEAAoE;QACpE,wEAAwE;QACxE,sEAAsE;QACtE,qBAAqB;QACrB,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAC/B,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,KAAK,mBAAmB,CAC3C,CAAC;QACF,MAAM,UAAU,GAAG,MAAM,WAAW,CAAC,QAAQ,CAC3C,cAAc,EACd,cAAc;YACZ,CAAC,CAAC,EAAE,YAAY,EAAE,cAAc,CAAC,MAAM,EAAE;YACzC,CAAC,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,UAAU,EAAE,mBAAmB,EAAE,CAC7D,CAAC;QACF,IAAI,CAAC,UAAU;YAAE,OAAO;IAC1B,CAAC;IAED,0EAA0E;IAC1E,gEAAgE;IAChE,oCAAoC;IACpC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IACtC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,MAAM,eAAe,EAAE,CACrB,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,EACjD,KAAK,CACN,CAAC;IACJ,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"navigateToValidationIssue.js","sourceRoot":"","sources":["../../../src/editor/validation/navigateToValidationIssue.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAErC,+EAA+E;AAC/E,MAAM,CAAC,MAAM,mBAAmB,GAAG,YAAY,CAAC;AAShD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,WAA4B,EAC5B,MAA6B,EAC7B,eAAqE;IAErE,MAAM,cAAc,GAAG;QACrB,EAAE,EAAE,MAAM,CAAC,MAAM;QACjB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,OAAO,EAAE,MAAM,CAAC,OAAO;KACxB,CAAC;IAEF,MAAM,KAAK,GAAG,WAAW,CAAC,WAAW,IAAI,EAAE,CAAC;IAC5C,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CACzB,CAAC,IAAI,EAAE,EAAE,CACP,SAAS,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,IAAI,EAAE,CAAC,KAAK,SAAS,CAAC,cAAc,CAAC,EAAE,CAAC;QACzE,IAAI,CAAC,cAAc,EAAE,QAAQ,EAAE,WAAW,EAAE;YAC1C,cAAc,CAAC,QAAQ,EAAE,WAAW,EAAE;QACxC,IAAI,CAAC,cAAc,EAAE,OAAO,KAAK,cAAc,CAAC,OAAO,CAC1D,CAAC;IAEF,IAAI,QAAQ,EAAE,CAAC;QACb,WAAW,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC7C,CAAC;SAAM,CAAC;QACN,yEAAyE;QACzE,oEAAoE;QACpE,wEAAwE;QACxE,sEAAsE;QACtE,qBAAqB;QACrB,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAC/B,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,KAAK,mBAAmB,CAC3C,CAAC;QACF,MAAM,UAAU,GAAG,MAAM,WAAW,CAAC,QAAQ,CAC3C,cAAc,EACd,cAAc;YACZ,CAAC,CAAC,EAAE,YAAY,EAAE,cAAc,CAAC,MAAM,EAAE;YACzC,CAAC,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,UAAU,EAAE,mBAAmB,EAAE,CAC7D,CAAC;QACF,IAAI,CAAC,UAAU;YAAE,OAAO;IAC1B,CAAC;IAED,0EAA0E;IAC1E,gEAAgE;IAChE,oCAAoC;IACpC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IACtC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,MAAM,eAAe,EAAE,CACrB,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,EACjD,KAAK,CACN,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { ValidationResult } from "../../types";
2
+ import type { FieldDescriptor } from "../pageModel";
3
+ import { type ValidationSeverity } from "./validationSeverity";
4
+ /** The validation issues of one field, as the canvas overview ruler marks them. */
5
+ export type ValidationRulerIssue = {
6
+ key: string;
7
+ field: FieldDescriptor;
8
+ severity: ValidationSeverity;
9
+ /** Distinct messages, worst first. */
10
+ messages: string[];
11
+ };
12
+ /**
13
+ * One entry per field with issues (results above "Valid"), carrying the worst
14
+ * severity and every distinct message. Issues without a field have no place
15
+ * on the canvas and are left to the Validation sidebar.
16
+ */
17
+ export declare function collectValidationRulerIssues(validationResults: readonly ValidationResult[] | undefined): ValidationRulerIssue[];
@@ -0,0 +1,44 @@
1
+ import { filterValidationIssues, getWorstValidationSeverity, } from "./validationSeverity";
2
+ /**
3
+ * One entry per field with issues (results above "Valid"), carrying the worst
4
+ * severity and every distinct message. Issues without a field have no place
5
+ * on the canvas and are left to the Validation sidebar.
6
+ */
7
+ export function collectValidationRulerIssues(validationResults) {
8
+ const byField = new Map();
9
+ for (const validation of validationResults ?? []) {
10
+ for (const result of filterValidationIssues(validation.results)) {
11
+ if (!result.fieldId)
12
+ continue;
13
+ const item = {
14
+ id: result.itemId || validation.item.id,
15
+ language: validation.item.language,
16
+ version: validation.item.version,
17
+ };
18
+ const key = [
19
+ item.id.toLowerCase(),
20
+ item.language,
21
+ item.version,
22
+ result.fieldId.toLowerCase(),
23
+ ].join("|");
24
+ const entry = byField.get(key) ?? {
25
+ field: { item, fieldId: result.fieldId },
26
+ results: [],
27
+ };
28
+ entry.results.push(result);
29
+ byField.set(key, entry);
30
+ }
31
+ }
32
+ return Array.from(byField, ([key, { field, results }]) => {
33
+ const worstFirst = filterValidationIssues(results);
34
+ return {
35
+ key,
36
+ field,
37
+ severity: getWorstValidationSeverity(worstFirst),
38
+ messages: Array.from(new Set(worstFirst
39
+ .map((result) => result.message?.trim())
40
+ .filter((message) => !!message))),
41
+ };
42
+ });
43
+ }
44
+ //# sourceMappingURL=validationRulerIssues.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validationRulerIssues.js","sourceRoot":"","sources":["../../../src/editor/validation/validationRulerIssues.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,sBAAsB,EACtB,0BAA0B,GAE3B,MAAM,sBAAsB,CAAC;AAW9B;;;;GAIG;AACH,MAAM,UAAU,4BAA4B,CAC1C,iBAA0D;IAE1D,MAAM,OAAO,GAAG,IAAI,GAAG,EAGpB,CAAC;IAEJ,KAAK,MAAM,UAAU,IAAI,iBAAiB,IAAI,EAAE,EAAE,CAAC;QACjD,KAAK,MAAM,MAAM,IAAI,sBAAsB,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAChE,IAAI,CAAC,MAAM,CAAC,OAAO;gBAAE,SAAS;YAC9B,MAAM,IAAI,GAAG;gBACX,EAAE,EAAE,MAAM,CAAC,MAAM,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE;gBACvC,QAAQ,EAAE,UAAU,CAAC,IAAI,CAAC,QAAQ;gBAClC,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC,OAAO;aACjC,CAAC;YACF,MAAM,GAAG,GAAG;gBACV,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE;gBACrB,IAAI,CAAC,QAAQ;gBACb,IAAI,CAAC,OAAO;gBACZ,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE;aAC7B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACZ,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI;gBAChC,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE;gBACxC,OAAO,EAAE,EAA6B;aACvC,CAAC;YACF,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE;QACvD,MAAM,UAAU,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;QACnD,OAAO;YACL,GAAG;YACH,KAAK;YACL,QAAQ,EAAE,0BAA0B,CAAC,UAAU,CAAE;YACjD,QAAQ,EAAE,KAAK,CAAC,IAAI,CAClB,IAAI,GAAG,CACL,UAAU;iBACP,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC;iBACvC,MAAM,CAAC,CAAC,OAAO,EAAqB,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CACrD,CACF;SACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1,2 +1,2 @@
1
- export declare const version = "0.3.12832";
2
- export declare const buildDate = "2026-09-14 17:21:22";
1
+ export declare const version = "0.3.12833";
2
+ export declare const buildDate = "2026-10-06 15:19:23";
package/dist/revision.js CHANGED
@@ -1,3 +1,3 @@
1
- export const version = "0.3.12832";
2
- export const buildDate = "2026-09-14 17:21:22";
1
+ export const version = "0.3.12833";
2
+ export const buildDate = "2026-10-06 15:19:23";
3
3
  //# sourceMappingURL=revision.js.map
@@ -0,0 +1,13 @@
1
+ import type { TaskItem } from "../types";
2
+ /**
3
+ * Semi-modal prompt shown on the dashboard when tasks newly need the user
4
+ * (tool approval, questions, review, errors). It does not block the page:
5
+ * `modal={false}` keeps the rest of the board clickable and scrollable, and
6
+ * focus is left where it is when the user is typing somewhere else.
7
+ */
8
+ export declare function AttentionPromptDialog({ tasks, onReview, onDismiss, }: {
9
+ /** Tasks to prompt for. An empty list closes the dialog. */
10
+ tasks: TaskItem[];
11
+ onReview: (taskId: string) => void;
12
+ onDismiss: () => void;
13
+ }): import("react").JSX.Element;
@@ -0,0 +1,45 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useMemo } from "react";
3
+ import { AlertCircle, HelpCircle } from "lucide-react";
4
+ import { Button } from "../../components/ui/button";
5
+ import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, } from "../../components/ui/dialog";
6
+ import { cn } from "../../lib/utils";
7
+ import { describeAttention, isFailedTask, } from "../utils/projectDashboardModel";
8
+ function isEditableElement(element) {
9
+ if (!element)
10
+ return false;
11
+ const tag = element.tagName;
12
+ if (tag === "INPUT" || tag === "TEXTAREA" || tag === "SELECT")
13
+ return true;
14
+ return element.isContentEditable === true;
15
+ }
16
+ /**
17
+ * Semi-modal prompt shown on the dashboard when tasks newly need the user
18
+ * (tool approval, questions, review, errors). It does not block the page:
19
+ * `modal={false}` keeps the rest of the board clickable and scrollable, and
20
+ * focus is left where it is when the user is typing somewhere else.
21
+ */
22
+ export function AttentionPromptDialog({ tasks, onReview, onDismiss, }) {
23
+ const entries = useMemo(() => tasks.map((task) => ({ task, ...describeAttention(task) })), [tasks]);
24
+ const open = entries.length > 0;
25
+ const description = entries.length === 1
26
+ ? "An agent needs you before it can continue."
27
+ : `${entries.length} agents need you before they can continue.`;
28
+ return (_jsx(Dialog, { open: open, modal: false, onOpenChange: (nextOpen) => {
29
+ if (!nextOpen)
30
+ onDismiss();
31
+ }, children: _jsxs(DialogContent, { "data-testid": "taskboard-attention-prompt", className: "max-w-md shadow-2xl", onOpenAutoFocus: (event) => {
32
+ // Never pull focus out of a field the user is typing in.
33
+ if (isEditableElement(document.activeElement)) {
34
+ event.preventDefault();
35
+ }
36
+ }, children: [_jsxs(DialogHeader, { children: [_jsx(DialogTitle, { children: "Waiting for you" }), _jsx(DialogDescription, { children: description })] }), _jsx("div", { className: "flex flex-col px-8 py-4", children: entries.map(({ task, description: reason, action }) => {
37
+ const asksQuestion = task.executionState === "Questions" ||
38
+ task.executionState === "WaitingForInput";
39
+ const Icon = asksQuestion ? HelpCircle : AlertCircle;
40
+ return (_jsxs("div", { "data-testid": `taskboard-attention-prompt-task-${task.taskId}`, className: "border-border-default/70 grid grid-cols-[auto_minmax(0,1fr)_auto] items-center gap-3 border-t py-3 first:border-t-0", children: [_jsx(Icon, { strokeWidth: 1.5, "aria-hidden": "true", className: cn("size-4 shrink-0", isFailedTask(task)
41
+ ? "text-feedback-red"
42
+ : "text-feedback-orange") }), _jsxs("span", { className: "min-w-0", children: [_jsxs("span", { className: "text-neutral-grey-100 block truncate text-sm font-medium", children: [task.taskKey?.trim() ? (_jsx("span", { className: "text-neutral-grey-50 mr-1.5 text-[10px] font-medium tracking-widest", children: task.taskKey.trim() })) : null, task.title] }), _jsx("span", { className: "text-neutral-grey-50 block truncate text-xs", children: reason })] }), _jsx(Button, { type: "button", size: "sm", "data-testid": `taskboard-attention-prompt-review-${task.taskId}`, onClick: () => onReview(task.taskId), children: action })] }, task.taskId));
43
+ }) }), _jsx(DialogFooter, { children: _jsx(Button, { type: "button", variant: "outline", "data-testid": "taskboard-attention-prompt-later", onClick: onDismiss, children: "Later" }) })] }) }));
44
+ }
45
+ //# sourceMappingURL=AttentionPromptDialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AttentionPromptDialog.js","sourceRoot":"","sources":["../../../src/task-board/components/AttentionPromptDialog.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ import type { Subgoal } from "../types";
2
+ import { type GoalRecommendation, type GoalSeverity } from "./GoalDataView";
3
+ /** One recommendation of one subgoal, flattened for a cross-page table. */
4
+ export type GoalFinding = {
5
+ key: string;
6
+ subgoalId: string;
7
+ /** The page the finding belongs to: the subgoal's item path, else its title. */
8
+ page: string | null;
9
+ /** The subgoal's own item, opened from the page column. */
10
+ pageItemId: string | null;
11
+ /** The item the recommendation points at (often a component), else the page. */
12
+ itemId: string | null;
13
+ language: string | null;
14
+ severity: GoalSeverity | null;
15
+ text: string;
16
+ recommendation: GoalRecommendation;
17
+ };
18
+ /**
19
+ * Flattens the `recommendations` of every subgoal into findings, ordered by
20
+ * severity, then page, then the order the subgoal listed them in. Subgoals
21
+ * whose data carries no recommendations contribute nothing, so goal templates
22
+ * that never write them simply get no table.
23
+ */
24
+ export declare function collectGoalFindings(subgoals: Subgoal[]): GoalFinding[];
25
+ /** RFC 4180 CSV with a header row; one line per finding. */
26
+ export declare function findingsToCsv(findings: GoalFinding[]): string;
27
+ /**
28
+ * Every finding of the given subgoals as one flat, sortable table with a
29
+ * severity filter and a CSV export. Callers pass the subgoals that survive
30
+ * their own page-level filters, so a check or text filter narrows this too.
31
+ */
32
+ export declare function GoalFindingsTable({ subgoals, query, exportName, onOpenItem, onCreateTaskFromRecommendation, }: {
33
+ subgoals: Subgoal[];
34
+ /** Whitespace-separated terms; every term must occur in the page or text. */
35
+ query?: string;
36
+ /** Base name for the CSV download, e.g. the goal title. */
37
+ exportName: string;
38
+ onOpenItem?: (ref: {
39
+ itemId: string;
40
+ language?: string | null;
41
+ }) => void;
42
+ onCreateTaskFromRecommendation?: (recommendation: GoalRecommendation) => void;
43
+ }): import("react").JSX.Element;