@parhelia/core 0.4.12800 → 0.4.12825

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 (620) hide show
  1. package/dist/agents-view/AgentsWorkspaceView.d.ts +2 -0
  2. package/dist/agents-view/AgentsWorkspaceView.js +12 -3
  3. package/dist/agents-view/AgentsWorkspaceView.js.map +1 -1
  4. package/dist/components/WorkspaceHomeView.d.ts +14 -3
  5. package/dist/components/WorkspaceHomeView.js +7 -4
  6. package/dist/components/WorkspaceHomeView.js.map +1 -1
  7. package/dist/components/ui/dialog.d.ts +7 -1
  8. package/dist/components/ui/dialog.js +6 -3
  9. package/dist/components/ui/dialog.js.map +1 -1
  10. package/dist/components/ui/popover.d.ts +8 -0
  11. package/dist/components/ui/popover.js +40 -6
  12. package/dist/components/ui/popover.js.map +1 -1
  13. package/dist/components/ui/tooltip.d.ts +2 -2
  14. package/dist/components/ui/tooltip.js +9 -4
  15. package/dist/components/ui/tooltip.js.map +1 -1
  16. package/dist/config/config.js +5 -2
  17. package/dist/config/config.js.map +1 -1
  18. package/dist/editor/ConfirmationDialog.d.ts +1 -0
  19. package/dist/editor/ConfirmationDialog.js +9 -2
  20. package/dist/editor/ConfirmationDialog.js.map +1 -1
  21. package/dist/editor/ContentTree.d.ts +9 -1
  22. package/dist/editor/ContentTree.js +50 -23
  23. package/dist/editor/ContentTree.js.map +1 -1
  24. package/dist/editor/FieldList.js +41 -4
  25. package/dist/editor/FieldList.js.map +1 -1
  26. package/dist/editor/FieldListField.js +156 -123
  27. package/dist/editor/FieldListField.js.map +1 -1
  28. package/dist/editor/LinkEditorDialog.d.ts +3 -0
  29. package/dist/editor/LinkEditorDialog.js +9 -4
  30. package/dist/editor/LinkEditorDialog.js.map +1 -1
  31. package/dist/editor/MainLayout.js +9 -2
  32. package/dist/editor/MainLayout.js.map +1 -1
  33. package/dist/editor/SetupWizard.js +1 -1
  34. package/dist/editor/SetupWizard.js.map +1 -1
  35. package/dist/editor/UsedBy.d.ts +2 -0
  36. package/dist/editor/UsedBy.js +50 -10
  37. package/dist/editor/UsedBy.js.map +1 -1
  38. package/dist/editor/agent-changes/agentChangeTargets.d.ts +58 -0
  39. package/dist/editor/agent-changes/agentChangeTargets.js +174 -0
  40. package/dist/editor/agent-changes/agentChangeTargets.js.map +1 -0
  41. package/dist/editor/agent-changes/agentChangeTextHighlight.d.ts +57 -0
  42. package/dist/editor/agent-changes/agentChangeTextHighlight.js +109 -0
  43. package/dist/editor/agent-changes/agentChangeTextHighlight.js.map +1 -0
  44. package/dist/editor/ai/AgentImagePreview.d.ts +13 -0
  45. package/dist/editor/ai/AgentImagePreview.js +41 -0
  46. package/dist/editor/ai/AgentImagePreview.js.map +1 -0
  47. package/dist/editor/ai/AgentStatusBadge.js +11 -9
  48. package/dist/editor/ai/AgentStatusBadge.js.map +1 -1
  49. package/dist/editor/ai/Agents.js +2 -2
  50. package/dist/editor/ai/Agents.js.map +1 -1
  51. package/dist/editor/ai/ContentInspectorPopover.d.ts +2 -1
  52. package/dist/editor/ai/ContentInspectorPopover.js +3 -3
  53. package/dist/editor/ai/ContentInspectorPopover.js.map +1 -1
  54. package/dist/editor/ai/MediaImage.js +2 -1
  55. package/dist/editor/ai/MediaImage.js.map +1 -1
  56. package/dist/editor/ai/activityRowNavigation.d.ts +28 -0
  57. package/dist/editor/ai/activityRowNavigation.js +53 -0
  58. package/dist/editor/ai/activityRowNavigation.js.map +1 -0
  59. package/dist/editor/ai/agentDiagnostics.d.ts +1 -1
  60. package/dist/editor/ai/agentDiagnostics.js +8 -0
  61. package/dist/editor/ai/agentDiagnostics.js.map +1 -1
  62. package/dist/editor/ai/agentMessageGrouping.d.ts +1 -1
  63. package/dist/editor/ai/agentMessageGrouping.js +2 -13
  64. package/dist/editor/ai/agentMessageGrouping.js.map +1 -1
  65. package/dist/editor/ai/agentMessageHelpers.js +21 -1
  66. package/dist/editor/ai/agentMessageHelpers.js.map +1 -1
  67. package/dist/editor/ai/terminal/agentSessionSelectors.js +0 -4
  68. package/dist/editor/ai/terminal/agentSessionSelectors.js.map +1 -1
  69. package/dist/editor/ai/terminal/agentSessionSnapshot.d.ts +15 -0
  70. package/dist/editor/ai/terminal/agentSessionSnapshot.js +103 -3
  71. package/dist/editor/ai/terminal/agentSessionSnapshot.js.map +1 -1
  72. package/dist/editor/ai/terminal/agentSessionState.d.ts +0 -2
  73. package/dist/editor/ai/terminal/agentSessionState.js +13 -13
  74. package/dist/editor/ai/terminal/agentSessionState.js.map +1 -1
  75. package/dist/editor/ai/terminal/agentTurnTiming.d.ts +2 -0
  76. package/dist/editor/ai/terminal/agentTurnTiming.js +26 -1
  77. package/dist/editor/ai/terminal/agentTurnTiming.js.map +1 -1
  78. package/dist/editor/ai/terminal/components/AgentActivityOverviewPanel.d.ts +3 -1
  79. package/dist/editor/ai/terminal/components/AgentActivityOverviewPanel.js +53 -11
  80. package/dist/editor/ai/terminal/components/AgentActivityOverviewPanel.js.map +1 -1
  81. package/dist/editor/ai/terminal/components/AgentBanners.d.ts +2 -1
  82. package/dist/editor/ai/terminal/components/AgentBanners.js +3 -2
  83. package/dist/editor/ai/terminal/components/AgentBanners.js.map +1 -1
  84. package/dist/editor/ai/terminal/components/AgentCostDisplay.js +6 -5
  85. package/dist/editor/ai/terminal/components/AgentCostDisplay.js.map +1 -1
  86. package/dist/editor/ai/terminal/components/AgentDocumentList.js +20 -10
  87. package/dist/editor/ai/terminal/components/AgentDocumentList.js.map +1 -1
  88. package/dist/editor/ai/terminal/components/AgentGreeting.js +1 -1
  89. package/dist/editor/ai/terminal/components/AgentGreeting.js.map +1 -1
  90. package/dist/editor/ai/terminal/components/AgentMemoryPanel.d.ts +2 -1
  91. package/dist/editor/ai/terminal/components/AgentMemoryPanel.js +12 -9
  92. package/dist/editor/ai/terminal/components/AgentMemoryPanel.js.map +1 -1
  93. package/dist/editor/ai/terminal/components/AgentMemorySettingsSection.d.ts +9 -0
  94. package/dist/editor/ai/terminal/components/AgentMemorySettingsSection.js +75 -0
  95. package/dist/editor/ai/terminal/components/AgentMemorySettingsSection.js.map +1 -0
  96. package/dist/editor/ai/terminal/components/AgentPromptTrayPopovers.d.ts +1 -1
  97. package/dist/editor/ai/terminal/components/AgentPromptTrayPopovers.js +4 -72
  98. package/dist/editor/ai/terminal/components/AgentPromptTrayPopovers.js.map +1 -1
  99. package/dist/editor/ai/terminal/components/AgentRunStatusBanners.d.ts +2 -1
  100. package/dist/editor/ai/terminal/components/AgentRunStatusBanners.js +2 -2
  101. package/dist/editor/ai/terminal/components/AgentRunStatusBanners.js.map +1 -1
  102. package/dist/editor/ai/terminal/components/AgentSettingsContent.js +2 -1
  103. package/dist/editor/ai/terminal/components/AgentSettingsContent.js.map +1 -1
  104. package/dist/editor/ai/terminal/components/AgentSettingsSections.d.ts +1 -0
  105. package/dist/editor/ai/terminal/components/AgentSettingsSections.js +1 -1
  106. package/dist/editor/ai/terminal/components/AgentSettingsSections.js.map +1 -1
  107. package/dist/editor/ai/terminal/components/AgentSkillSettingsSection.js +2 -2
  108. package/dist/editor/ai/terminal/components/AgentSkillSettingsSection.js.map +1 -1
  109. package/dist/editor/ai/terminal/components/AgentSummaryAssistantResponse.d.ts +2 -1
  110. package/dist/editor/ai/terminal/components/AgentSummaryAssistantResponse.js +2 -2
  111. package/dist/editor/ai/terminal/components/AgentSummaryAssistantResponse.js.map +1 -1
  112. package/dist/editor/ai/terminal/components/AgentTerminalFullUpperContent.d.ts +2 -1
  113. package/dist/editor/ai/terminal/components/AgentTerminalFullUpperContent.js +9 -3
  114. package/dist/editor/ai/terminal/components/AgentTerminalFullUpperContent.js.map +1 -1
  115. package/dist/editor/ai/terminal/components/AgentTerminalMessageGroups.d.ts +2 -1
  116. package/dist/editor/ai/terminal/components/AgentTerminalMessageGroups.js +2 -6
  117. package/dist/editor/ai/terminal/components/AgentTerminalMessageGroups.js.map +1 -1
  118. package/dist/editor/ai/terminal/components/AgentTerminalSummaryLayout.d.ts +2 -1
  119. package/dist/editor/ai/terminal/components/AgentTerminalSummaryLayout.js +8 -2
  120. package/dist/editor/ai/terminal/components/AgentTerminalSummaryLayout.js.map +1 -1
  121. package/dist/editor/ai/terminal/components/AgentTerminalView.js +1 -1
  122. package/dist/editor/ai/terminal/components/AgentTerminalView.js.map +1 -1
  123. package/dist/editor/ai/terminal/components/AgentThinkingIndicator.d.ts +6 -1
  124. package/dist/editor/ai/terminal/components/AgentThinkingIndicator.js +5 -3
  125. package/dist/editor/ai/terminal/components/AgentThinkingIndicator.js.map +1 -1
  126. package/dist/editor/ai/terminal/components/AiResponseMessage.d.ts +2 -1
  127. package/dist/editor/ai/terminal/components/AiResponseMessage.js +20 -16
  128. package/dist/editor/ai/terminal/components/AiResponseMessage.js.map +1 -1
  129. package/dist/editor/ai/terminal/components/ContextInfoBar.js +2 -2
  130. package/dist/editor/ai/terminal/components/ContextInfoBar.js.map +1 -1
  131. package/dist/editor/ai/terminal/components/CreateItemToolCallContent.d.ts +3 -0
  132. package/dist/editor/ai/terminal/components/CreateItemToolCallContent.js +47 -0
  133. package/dist/editor/ai/terminal/components/CreateItemToolCallContent.js.map +1 -0
  134. package/dist/editor/ai/terminal/components/ResponseTurnDuration.js +15 -4
  135. package/dist/editor/ai/terminal/components/ResponseTurnDuration.js.map +1 -1
  136. package/dist/editor/ai/terminal/components/ToolCallDisplay.d.ts +2 -1
  137. package/dist/editor/ai/terminal/components/ToolCallDisplay.js +22 -54
  138. package/dist/editor/ai/terminal/components/ToolCallDisplay.js.map +1 -1
  139. package/dist/editor/ai/terminal/components/UserMessage.d.ts +6 -0
  140. package/dist/editor/ai/terminal/components/UserMessage.js +17 -4
  141. package/dist/editor/ai/terminal/components/UserMessage.js.map +1 -1
  142. package/dist/editor/ai/terminal/components/agentThinkingStyles.d.ts +5 -0
  143. package/dist/editor/ai/terminal/components/agentThinkingStyles.js +5 -0
  144. package/dist/editor/ai/terminal/components/agentThinkingStyles.js.map +1 -1
  145. package/dist/editor/ai/terminal/components/toolCallContentRenderers.d.ts +2 -0
  146. package/dist/editor/ai/terminal/components/toolCallContentRenderers.js +6 -0
  147. package/dist/editor/ai/terminal/components/toolCallContentRenderers.js.map +1 -1
  148. package/dist/editor/ai/terminal/components/toolCallResultJson.d.ts +1 -0
  149. package/dist/editor/ai/terminal/components/toolCallResultJson.js +46 -0
  150. package/dist/editor/ai/terminal/components/toolCallResultJson.js.map +1 -0
  151. package/dist/editor/ai/terminal/types.d.ts +2 -0
  152. package/dist/editor/ai/terminal/useAgentDraftInitializer.d.ts +2 -0
  153. package/dist/editor/ai/terminal/useAgentDraftInitializer.js +51 -14
  154. package/dist/editor/ai/terminal/useAgentDraftInitializer.js.map +1 -1
  155. package/dist/editor/ai/terminal/useAgentEditorContext.js +13 -3
  156. package/dist/editor/ai/terminal/useAgentEditorContext.js.map +1 -1
  157. package/dist/editor/ai/terminal/useAgentLoadPipeline.d.ts +2 -0
  158. package/dist/editor/ai/terminal/useAgentLoadPipeline.js +3 -1
  159. package/dist/editor/ai/terminal/useAgentLoadPipeline.js.map +1 -1
  160. package/dist/editor/ai/terminal/useAgentOperationHistoryLoader.js +5 -1
  161. package/dist/editor/ai/terminal/useAgentOperationHistoryLoader.js.map +1 -1
  162. package/dist/editor/ai/terminal/useAgentOperationSocketHandler.js +33 -1
  163. package/dist/editor/ai/terminal/useAgentOperationSocketHandler.js.map +1 -1
  164. package/dist/editor/ai/terminal/useAgentProviderWait.d.ts +18 -0
  165. package/dist/editor/ai/terminal/useAgentProviderWait.js +23 -0
  166. package/dist/editor/ai/terminal/useAgentProviderWait.js.map +1 -0
  167. package/dist/editor/ai/terminal/useAgentRunCompletionSocketHandler.d.ts +1 -1
  168. package/dist/editor/ai/terminal/useAgentRunCompletionSocketHandler.js +3 -3
  169. package/dist/editor/ai/terminal/useAgentRunCompletionSocketHandler.js.map +1 -1
  170. package/dist/editor/ai/terminal/useAgentRunDeltaRouter.d.ts +2 -2
  171. package/dist/editor/ai/terminal/useAgentRunDeltaRouter.js +5 -5
  172. package/dist/editor/ai/terminal/useAgentRunDeltaRouter.js.map +1 -1
  173. package/dist/editor/ai/terminal/useAgentRunDeltaSocketHandler.js +14 -10
  174. package/dist/editor/ai/terminal/useAgentRunDeltaSocketHandler.js.map +1 -1
  175. package/dist/editor/ai/terminal/useAgentRunMessagePipeline.d.ts +6 -7
  176. package/dist/editor/ai/terminal/useAgentRunMessagePipeline.js +5 -5
  177. package/dist/editor/ai/terminal/useAgentRunMessagePipeline.js.map +1 -1
  178. package/dist/editor/ai/terminal/useAgentRunStatusSocketHandler.d.ts +1 -1
  179. package/dist/editor/ai/terminal/useAgentRunStatusSocketHandler.js +23 -16
  180. package/dist/editor/ai/terminal/useAgentRunStatusSocketHandler.js.map +1 -1
  181. package/dist/editor/ai/terminal/useAgentServerReconciler.js +11 -0
  182. package/dist/editor/ai/terminal/useAgentServerReconciler.js.map +1 -1
  183. package/dist/editor/ai/terminal/useAgentSession.d.ts +0 -2
  184. package/dist/editor/ai/terminal/useAgentSession.js +8 -15
  185. package/dist/editor/ai/terminal/useAgentSession.js.map +1 -1
  186. package/dist/editor/ai/terminal/useAgentSessionFacade.d.ts +1 -0
  187. package/dist/editor/ai/terminal/useAgentSessionFacade.js +2 -0
  188. package/dist/editor/ai/terminal/useAgentSessionFacade.js.map +1 -1
  189. package/dist/editor/ai/terminal/useAgentSettleCompletedRun.d.ts +1 -1
  190. package/dist/editor/ai/terminal/useAgentSettleCompletedRun.js +3 -3
  191. package/dist/editor/ai/terminal/useAgentSettleCompletedRun.js.map +1 -1
  192. package/dist/editor/ai/terminal/useAgentStreamPipeline.d.ts +2 -2
  193. package/dist/editor/ai/terminal/useAgentStreamPipeline.js +5 -5
  194. package/dist/editor/ai/terminal/useAgentStreamPipeline.js.map +1 -1
  195. package/dist/editor/ai/terminal/useAgentSubmitContextBuilder.d.ts +0 -1
  196. package/dist/editor/ai/terminal/useAgentSubmitContextBuilder.js +3 -12
  197. package/dist/editor/ai/terminal/useAgentSubmitContextBuilder.js.map +1 -1
  198. package/dist/editor/ai/terminal/useAgentSubmitHandlers.d.ts +1 -0
  199. package/dist/editor/ai/terminal/useAgentSubmitHandlers.js +24 -7
  200. package/dist/editor/ai/terminal/useAgentSubmitHandlers.js.map +1 -1
  201. package/dist/editor/ai/terminal/useAgentSubmitResponseHandler.js +6 -1
  202. package/dist/editor/ai/terminal/useAgentSubmitResponseHandler.js.map +1 -1
  203. package/dist/editor/ai/terminal/useAgentTerminalController.js +13 -10
  204. package/dist/editor/ai/terminal/useAgentTerminalController.js.map +1 -1
  205. package/dist/editor/ai/terminal/useAgentTerminalViewProps.d.ts +1 -1
  206. package/dist/editor/ai/terminal/useAgentTerminalViewProps.js.map +1 -1
  207. package/dist/editor/ai-image-editor/AiImageEditorDialog.js +1 -1
  208. package/dist/editor/ai-image-editor/AiImageEditorDialog.js.map +1 -1
  209. package/dist/editor/bridge/bridgeKeys.d.ts +5 -0
  210. package/dist/editor/bridge/bridgeKeys.js +8 -0
  211. package/dist/editor/bridge/bridgeKeys.js.map +1 -0
  212. package/dist/editor/bridge/linkDownload.d.ts +3 -0
  213. package/dist/editor/bridge/linkDownload.js +52 -0
  214. package/dist/editor/bridge/linkDownload.js.map +1 -0
  215. package/dist/editor/bridge/protocol.d.ts +39 -0
  216. package/dist/editor/bridge/protocol.js +3 -1
  217. package/dist/editor/bridge/protocol.js.map +1 -1
  218. package/dist/editor/client/EditorShell.js +34 -24
  219. package/dist/editor/client/EditorShell.js.map +1 -1
  220. package/dist/editor/client/OperationDialogContent.d.ts +10 -3
  221. package/dist/editor/client/OperationDialogContent.js +27 -4
  222. package/dist/editor/client/OperationDialogContent.js.map +1 -1
  223. package/dist/editor/client/agentLoadItemPolicy.d.ts +22 -0
  224. package/dist/editor/client/agentLoadItemPolicy.js +60 -0
  225. package/dist/editor/client/agentLoadItemPolicy.js.map +1 -0
  226. package/dist/editor/client/editContext.d.ts +16 -0
  227. package/dist/editor/client/editContext.js.map +1 -1
  228. package/dist/editor/client/hooks/useSocketMessageHandler.d.ts +5 -0
  229. package/dist/editor/client/hooks/useSocketMessageHandler.js +56 -14
  230. package/dist/editor/client/hooks/useSocketMessageHandler.js.map +1 -1
  231. package/dist/editor/client/itemsRepository.js +26 -7
  232. package/dist/editor/client/itemsRepository.js.map +1 -1
  233. package/dist/editor/client/localUserEditActivity.d.ts +3 -0
  234. package/dist/editor/client/localUserEditActivity.js +12 -0
  235. package/dist/editor/client/localUserEditActivity.js.map +1 -0
  236. package/dist/editor/client/operations.js +60 -15
  237. package/dist/editor/client/operations.js.map +1 -1
  238. package/dist/editor/commands/commands.d.ts +6 -0
  239. package/dist/editor/commands/commands.js.map +1 -1
  240. package/dist/editor/commands/undo.js +8 -2
  241. package/dist/editor/commands/undo.js.map +1 -1
  242. package/dist/editor/componentVisualMode.d.ts +14 -0
  243. package/dist/editor/componentVisualMode.js +43 -0
  244. package/dist/editor/componentVisualMode.js.map +1 -0
  245. package/dist/editor/field-types/ImageFieldEditor.js +1 -1
  246. package/dist/editor/field-types/ImageFieldEditor.js.map +1 -1
  247. package/dist/editor/field-types/MultiLineText.js +29 -46
  248. package/dist/editor/field-types/MultiLineText.js.map +1 -1
  249. package/dist/editor/field-types/PictureFieldEditor.js +1 -1
  250. package/dist/editor/field-types/PictureFieldEditor.js.map +1 -1
  251. package/dist/editor/field-types/RichTextEditorComponent.js +19 -3
  252. package/dist/editor/field-types/RichTextEditorComponent.js.map +1 -1
  253. package/dist/editor/field-types/SingleLineText.js +28 -79
  254. package/dist/editor/field-types/SingleLineText.js.map +1 -1
  255. package/dist/editor/field-types/richtext/components/ReactSlate.js +67 -10
  256. package/dist/editor/field-types/richtext/components/ReactSlate.js.map +1 -1
  257. package/dist/editor/field-types/richtext/components/SimpleToolbarButton.js +4 -1
  258. package/dist/editor/field-types/richtext/components/SimpleToolbarButton.js.map +1 -1
  259. package/dist/editor/field-types/richtext/components/ToolbarButton.js +4 -1
  260. package/dist/editor/field-types/richtext/components/ToolbarButton.js.map +1 -1
  261. package/dist/editor/field-types/richtext/types.d.ts +7 -0
  262. package/dist/editor/field-types/richtext/types.js.map +1 -1
  263. package/dist/editor/field-types/richtext/utils/changeHighlight.d.ts +18 -0
  264. package/dist/editor/field-types/richtext/utils/changeHighlight.js +57 -0
  265. package/dist/editor/field-types/richtext/utils/changeHighlight.js.map +1 -0
  266. package/dist/editor/field-types/useFormFieldCaretPresence.d.ts +11 -0
  267. package/dist/editor/field-types/useFormFieldCaretPresence.js +33 -16
  268. package/dist/editor/field-types/useFormFieldCaretPresence.js.map +1 -1
  269. package/dist/editor/field-types/useFormFieldSelectionRange.d.ts +36 -0
  270. package/dist/editor/field-types/useFormFieldSelectionRange.js +123 -0
  271. package/dist/editor/field-types/useFormFieldSelectionRange.js.map +1 -0
  272. package/dist/editor/field-types/useTextCompletion.js +13 -3
  273. package/dist/editor/field-types/useTextCompletion.js.map +1 -1
  274. package/dist/editor/find-replace/FindReplacePanel.d.ts +11 -0
  275. package/dist/editor/find-replace/FindReplacePanel.js +311 -0
  276. package/dist/editor/find-replace/FindReplacePanel.js.map +1 -0
  277. package/dist/editor/find-replace/findReplaceCommand.d.ts +8 -0
  278. package/dist/editor/find-replace/findReplaceCommand.js +25 -0
  279. package/dist/editor/find-replace/findReplaceCommand.js.map +1 -0
  280. package/dist/editor/find-replace/findReplaceMatches.d.ts +42 -0
  281. package/dist/editor/find-replace/findReplaceMatches.js +66 -0
  282. package/dist/editor/find-replace/findReplaceMatches.js.map +1 -0
  283. package/dist/editor/find-replace/findReplaceStore.d.ts +30 -0
  284. package/dist/editor/find-replace/findReplaceStore.js +61 -0
  285. package/dist/editor/find-replace/findReplaceStore.js.map +1 -0
  286. package/dist/editor/find-replace/findReplaceTargets.d.ts +49 -0
  287. package/dist/editor/find-replace/findReplaceTargets.js +110 -0
  288. package/dist/editor/find-replace/findReplaceTargets.js.map +1 -0
  289. package/dist/editor/find-replace/findReplaceText.d.ts +50 -0
  290. package/dist/editor/find-replace/findReplaceText.js +189 -0
  291. package/dist/editor/find-replace/findReplaceText.js.map +1 -0
  292. package/dist/editor/media-selector/AiImageSearchPrompt.d.ts +2 -1
  293. package/dist/editor/media-selector/AiImageSearchPrompt.js +2 -2
  294. package/dist/editor/media-selector/AiImageSearchPrompt.js.map +1 -1
  295. package/dist/editor/media-selector/Thumbnails.d.ts +2 -1
  296. package/dist/editor/media-selector/Thumbnails.js +2 -2
  297. package/dist/editor/media-selector/Thumbnails.js.map +1 -1
  298. package/dist/editor/media-selector/TreeSelector.js +142 -42
  299. package/dist/editor/media-selector/TreeSelector.js.map +1 -1
  300. package/dist/editor/media-selector/UploadZone.d.ts +6 -1
  301. package/dist/editor/media-selector/UploadZone.js +10 -7
  302. package/dist/editor/media-selector/UploadZone.js.map +1 -1
  303. package/dist/editor/media-selector/mediaFileType.d.ts +2 -0
  304. package/dist/editor/media-selector/mediaFileType.js +37 -0
  305. package/dist/editor/media-selector/mediaFileType.js.map +1 -1
  306. package/dist/editor/menubar/ActiveUsers.js +1 -1
  307. package/dist/editor/menubar/ActiveUsers.js.map +1 -1
  308. package/dist/editor/menubar/GenericToolbar.d.ts +2 -1
  309. package/dist/editor/menubar/GenericToolbar.js +2 -2
  310. package/dist/editor/menubar/GenericToolbar.js.map +1 -1
  311. package/dist/editor/menubar/ToolbarFactory.js +10 -2
  312. package/dist/editor/menubar/ToolbarFactory.js.map +1 -1
  313. package/dist/editor/menubar/VersionSelector.js +2 -2
  314. package/dist/editor/menubar/VersionSelector.js.map +1 -1
  315. package/dist/editor/menubar/toolbar-sections/DeviceSwitchToolbar.js +10 -3
  316. package/dist/editor/menubar/toolbar-sections/DeviceSwitchToolbar.js.map +1 -1
  317. package/dist/editor/menubar/toolbar-sections/FindReplaceControls.d.ts +6 -0
  318. package/dist/editor/menubar/toolbar-sections/FindReplaceControls.js +31 -0
  319. package/dist/editor/menubar/toolbar-sections/FindReplaceControls.js.map +1 -0
  320. package/dist/editor/menubar/toolbar-sections/ViewportControls.js +6 -1
  321. package/dist/editor/menubar/toolbar-sections/ViewportControls.js.map +1 -1
  322. package/dist/editor/menubar/toolbar-sections/index.d.ts +1 -0
  323. package/dist/editor/menubar/toolbar-sections/index.js +1 -0
  324. package/dist/editor/menubar/toolbar-sections/index.js.map +1 -1
  325. package/dist/editor/notifications/WatchButton.js +11 -4
  326. package/dist/editor/notifications/WatchButton.js.map +1 -1
  327. package/dist/editor/page-editor-chrome/AgentChangeHighlightings.d.ts +20 -0
  328. package/dist/editor/page-editor-chrome/AgentChangeHighlightings.js +31 -0
  329. package/dist/editor/page-editor-chrome/AgentChangeHighlightings.js.map +1 -0
  330. package/dist/editor/page-editor-chrome/BridgeInlineFormatOverlay.js +2 -2
  331. package/dist/editor/page-editor-chrome/BridgeInlineFormatOverlay.js.map +1 -1
  332. package/dist/editor/page-editor-chrome/DiffHighlightOverlay.d.ts +33 -0
  333. package/dist/editor/page-editor-chrome/DiffHighlightOverlay.js +290 -0
  334. package/dist/editor/page-editor-chrome/DiffHighlightOverlay.js.map +1 -0
  335. package/dist/editor/page-editor-chrome/FieldActionIndicator.js +8 -4
  336. package/dist/editor/page-editor-chrome/FieldActionIndicator.js.map +1 -1
  337. package/dist/editor/page-editor-chrome/FindReplaceHighlightings.d.ts +11 -0
  338. package/dist/editor/page-editor-chrome/FindReplaceHighlightings.js +117 -0
  339. package/dist/editor/page-editor-chrome/FindReplaceHighlightings.js.map +1 -0
  340. package/dist/editor/page-editor-chrome/InlineFieldHistoryButton.js +27 -10
  341. package/dist/editor/page-editor-chrome/InlineFieldHistoryButton.js.map +1 -1
  342. package/dist/editor/page-editor-chrome/InsertComponentMenu.d.ts +6 -1
  343. package/dist/editor/page-editor-chrome/InsertComponentMenu.js +53 -6
  344. package/dist/editor/page-editor-chrome/InsertComponentMenu.js.map +1 -1
  345. package/dist/editor/page-editor-chrome/PageEditorChrome.js +3 -1
  346. package/dist/editor/page-editor-chrome/PageEditorChrome.js.map +1 -1
  347. package/dist/editor/page-editor-chrome/PlaceholderDropZone.js +14 -2
  348. package/dist/editor/page-editor-chrome/PlaceholderDropZone.js.map +1 -1
  349. package/dist/editor/page-editor-chrome/SuggestionHighlightings.js +67 -14
  350. package/dist/editor/page-editor-chrome/SuggestionHighlightings.js.map +1 -1
  351. package/dist/editor/page-editor-chrome/VersionDiffHighlightings.d.ts +1 -1
  352. package/dist/editor/page-editor-chrome/VersionDiffHighlightings.js +6 -271
  353. package/dist/editor/page-editor-chrome/VersionDiffHighlightings.js.map +1 -1
  354. package/dist/editor/page-editor-chrome/diffRulerSegments.d.ts +18 -0
  355. package/dist/editor/page-editor-chrome/diffRulerSegments.js +37 -0
  356. package/dist/editor/page-editor-chrome/diffRulerSegments.js.map +1 -0
  357. package/dist/editor/page-editor-chrome/overlay/IframeOverlayProvider.js +15 -2
  358. package/dist/editor/page-editor-chrome/overlay/IframeOverlayProvider.js.map +1 -1
  359. package/dist/editor/page-editor-chrome/useBridgeInlineEditing.d.ts +2 -0
  360. package/dist/editor/page-editor-chrome/useBridgeInlineEditing.js +58 -5
  361. package/dist/editor/page-editor-chrome/useBridgeInlineEditing.js.map +1 -1
  362. package/dist/editor/page-viewer/DeviceToolbar.js +53 -10
  363. package/dist/editor/page-viewer/DeviceToolbar.js.map +1 -1
  364. package/dist/editor/page-viewer/MiniMap.d.ts +6 -2
  365. package/dist/editor/page-viewer/MiniMap.js +152 -36
  366. package/dist/editor/page-viewer/MiniMap.js.map +1 -1
  367. package/dist/editor/page-viewer/PageViewerFrame.js +225 -32
  368. package/dist/editor/page-viewer/PageViewerFrame.js.map +1 -1
  369. package/dist/editor/page-viewer/bridgeFieldPatch.js +1 -0
  370. package/dist/editor/page-viewer/bridgeFieldPatch.js.map +1 -1
  371. package/dist/editor/page-viewer/bridgeKeyboardShortcuts.d.ts +6 -0
  372. package/dist/editor/page-viewer/bridgeKeyboardShortcuts.js +19 -1
  373. package/dist/editor/page-viewer/bridgeKeyboardShortcuts.js.map +1 -1
  374. package/dist/editor/page-viewer/compareFrameWidth.d.ts +8 -0
  375. package/dist/editor/page-viewer/compareFrameWidth.js +25 -0
  376. package/dist/editor/page-viewer/compareFrameWidth.js.map +1 -0
  377. package/dist/editor/page-viewer/minimapViewport.d.ts +2 -0
  378. package/dist/editor/page-viewer/minimapViewport.js +31 -0
  379. package/dist/editor/page-viewer/minimapViewport.js.map +1 -0
  380. package/dist/editor/page-viewer/pageViewContext.d.ts +2 -1
  381. package/dist/editor/page-viewer/pageViewContext.js +10 -4
  382. package/dist/editor/page-viewer/pageViewContext.js.map +1 -1
  383. package/dist/editor/pageModel.d.ts +2 -0
  384. package/dist/editor/reviews/Comment.js +13 -12
  385. package/dist/editor/reviews/Comment.js.map +1 -1
  386. package/dist/editor/reviews/CommentDisplayPopover.js +25 -29
  387. package/dist/editor/reviews/CommentDisplayPopover.js.map +1 -1
  388. package/dist/editor/reviews/CommentEditor.js +58 -19
  389. package/dist/editor/reviews/CommentEditor.js.map +1 -1
  390. package/dist/editor/reviews/CommentImageAttachments.d.ts +12 -0
  391. package/dist/editor/reviews/CommentImageAttachments.js +19 -0
  392. package/dist/editor/reviews/CommentImageAttachments.js.map +1 -0
  393. package/dist/editor/reviews/CommentQuote.d.ts +4 -0
  394. package/dist/editor/reviews/CommentQuote.js +30 -0
  395. package/dist/editor/reviews/CommentQuote.js.map +1 -0
  396. package/dist/editor/reviews/CommentThreadAgentLink.d.ts +23 -0
  397. package/dist/editor/reviews/CommentThreadAgentLink.js +37 -0
  398. package/dist/editor/reviews/CommentThreadAgentLink.js.map +1 -0
  399. package/dist/editor/reviews/CommentView.d.ts +2 -3
  400. package/dist/editor/reviews/CommentView.js +17 -14
  401. package/dist/editor/reviews/CommentView.js.map +1 -1
  402. package/dist/editor/reviews/Comments.js +14 -5
  403. package/dist/editor/reviews/Comments.js.map +1 -1
  404. package/dist/editor/reviews/MentionText.d.ts +5 -1
  405. package/dist/editor/reviews/MentionText.js +23 -0
  406. package/dist/editor/reviews/MentionText.js.map +1 -1
  407. package/dist/editor/reviews/ReviewCard.js +14 -8
  408. package/dist/editor/reviews/ReviewCard.js.map +1 -1
  409. package/dist/editor/reviews/ReviewersPanel.js +7 -2
  410. package/dist/editor/reviews/ReviewersPanel.js.map +1 -1
  411. package/dist/editor/reviews/SuggestedEdit.js +75 -15
  412. package/dist/editor/reviews/SuggestedEdit.js.map +1 -1
  413. package/dist/editor/reviews/SuggestionCommentThread.js +5 -4
  414. package/dist/editor/reviews/SuggestionCommentThread.js.map +1 -1
  415. package/dist/editor/reviews/SuggestionDisplayPopover.d.ts +3 -1
  416. package/dist/editor/reviews/SuggestionDisplayPopover.js +7 -2
  417. package/dist/editor/reviews/SuggestionDisplayPopover.js.map +1 -1
  418. package/dist/editor/reviews/commentAgentAttachments.d.ts +5 -0
  419. package/dist/editor/reviews/commentAgentAttachments.js +51 -0
  420. package/dist/editor/reviews/commentAgentAttachments.js.map +1 -0
  421. package/dist/editor/reviews/commentAi.d.ts +29 -3
  422. package/dist/editor/reviews/commentAi.js +122 -34
  423. package/dist/editor/reviews/commentAi.js.map +1 -1
  424. package/dist/editor/reviews/commentImages.d.ts +49 -0
  425. package/dist/editor/reviews/commentImages.js +164 -0
  426. package/dist/editor/reviews/commentImages.js.map +1 -0
  427. package/dist/editor/reviews/feedbackAvatar.js +11 -5
  428. package/dist/editor/reviews/feedbackAvatar.js.map +1 -1
  429. package/dist/editor/reviews/feedbackCommentRules.d.ts +1 -1
  430. package/dist/editor/reviews/feedbackCommentRules.js +3 -9
  431. package/dist/editor/reviews/feedbackCommentRules.js.map +1 -1
  432. package/dist/editor/reviews/feedbackSelection.d.ts +13 -0
  433. package/dist/editor/reviews/feedbackSelection.js +37 -0
  434. package/dist/editor/reviews/feedbackSelection.js.map +1 -1
  435. package/dist/editor/reviews/suggestionDisplayValue.d.ts +24 -2
  436. package/dist/editor/reviews/suggestionDisplayValue.js +28 -4
  437. package/dist/editor/reviews/suggestionDisplayValue.js.map +1 -1
  438. package/dist/editor/reviews/useCommentImagePaste.d.ts +72 -0
  439. package/dist/editor/reviews/useCommentImagePaste.js +188 -0
  440. package/dist/editor/reviews/useCommentImagePaste.js.map +1 -0
  441. package/dist/editor/services/agentErrorMessage.js +5 -1
  442. package/dist/editor/services/agentErrorMessage.js.map +1 -1
  443. package/dist/editor/services/agentService.d.ts +12 -0
  444. package/dist/editor/services/agentService.js.map +1 -1
  445. package/dist/editor/services/agentStatus.d.ts +1 -0
  446. package/dist/editor/services/agentStatus.js +14 -0
  447. package/dist/editor/services/agentStatus.js.map +1 -1
  448. package/dist/editor/services/contentService.d.ts +2 -0
  449. package/dist/editor/services/contentService.js.map +1 -1
  450. package/dist/editor/services/editService.d.ts +17 -2
  451. package/dist/editor/services/editService.js +7 -2
  452. package/dist/editor/services/editService.js.map +1 -1
  453. package/dist/editor/services/searchService.d.ts +2 -1
  454. package/dist/editor/services/searchService.js +2 -1
  455. package/dist/editor/services/searchService.js.map +1 -1
  456. package/dist/editor/services/userResolution.js +6 -5
  457. package/dist/editor/services/userResolution.js.map +1 -1
  458. package/dist/editor/settings/index/RecentBatchesList.js +2 -1
  459. package/dist/editor/settings/index/RecentBatchesList.js.map +1 -1
  460. package/dist/editor/sidebar/ComponentPalette.js +12 -4
  461. package/dist/editor/sidebar/ComponentPalette.js.map +1 -1
  462. package/dist/editor/sidebar/ComponentTree.js +41 -22
  463. package/dist/editor/sidebar/ComponentTree.js.map +1 -1
  464. package/dist/editor/sidebar/EditHistory.js +2 -2
  465. package/dist/editor/sidebar/EditHistory.js.map +1 -1
  466. package/dist/editor/sidebar/MainContentTree.js +1 -1
  467. package/dist/editor/sidebar/MainContentTree.js.map +1 -1
  468. package/dist/editor/sidebar/MorePanelsButton.js +2 -2
  469. package/dist/editor/sidebar/MorePanelsButton.js.map +1 -1
  470. package/dist/editor/sidebar/NavigationPanelMenuItem.js +2 -2
  471. package/dist/editor/sidebar/NavigationPanelMenuItem.js.map +1 -1
  472. package/dist/editor/sidebar/OperationItem.js +2 -1
  473. package/dist/editor/sidebar/OperationItem.js.map +1 -1
  474. package/dist/editor/sidebar/Validation.js +38 -44
  475. package/dist/editor/sidebar/Validation.js.map +1 -1
  476. package/dist/editor/sidebar/liveComponentThumbnails.d.ts +66 -0
  477. package/dist/editor/sidebar/liveComponentThumbnails.js +220 -0
  478. package/dist/editor/sidebar/liveComponentThumbnails.js.map +1 -0
  479. package/dist/editor/ui/ItemCollectionEditor.d.ts +17 -1
  480. package/dist/editor/ui/ItemCollectionEditor.js +17 -5
  481. package/dist/editor/ui/ItemCollectionEditor.js.map +1 -1
  482. package/dist/editor/ui/ItemList.d.ts +5 -0
  483. package/dist/editor/ui/ItemList.js +10 -2
  484. package/dist/editor/ui/ItemList.js.map +1 -1
  485. package/dist/editor/ui/ItemSearch.d.ts +7 -0
  486. package/dist/editor/ui/ItemSearch.js +14 -6
  487. package/dist/editor/ui/ItemSearch.js.map +1 -1
  488. package/dist/editor/ui/ParheliaMark.d.ts +15 -0
  489. package/dist/editor/ui/ParheliaMark.js +12 -0
  490. package/dist/editor/ui/ParheliaMark.js.map +1 -0
  491. package/dist/editor/ui/PublishDialog.js +3 -2
  492. package/dist/editor/ui/PublishDialog.js.map +1 -1
  493. package/dist/editor/ui/SimpleTabs.js +58 -3
  494. package/dist/editor/ui/SimpleTabs.js.map +1 -1
  495. package/dist/editor/ui/Splitter.d.ts +15 -0
  496. package/dist/editor/ui/Splitter.js +77 -100
  497. package/dist/editor/ui/Splitter.js.map +1 -1
  498. package/dist/editor/ui/TreeListSelector.d.ts +15 -1
  499. package/dist/editor/ui/TreeListSelector.js +2 -2
  500. package/dist/editor/ui/TreeListSelector.js.map +1 -1
  501. package/dist/editor/ui/WorkboxItemsTable.d.ts +6 -1
  502. package/dist/editor/ui/WorkboxItemsTable.js +44 -48
  503. package/dist/editor/ui/WorkboxItemsTable.js.map +1 -1
  504. package/dist/editor/ui/publishReadiness.d.ts +13 -0
  505. package/dist/editor/ui/publishReadiness.js +56 -0
  506. package/dist/editor/ui/publishReadiness.js.map +1 -1
  507. package/dist/editor/undoEligibility.d.ts +2 -0
  508. package/dist/editor/undoEligibility.js +8 -0
  509. package/dist/editor/undoEligibility.js.map +1 -0
  510. package/dist/editor/utils/keyboardNavigation.js +16 -0
  511. package/dist/editor/utils/keyboardNavigation.js.map +1 -1
  512. package/dist/editor/validation/ValidationIssuesPopover.d.ts +39 -0
  513. package/dist/editor/validation/ValidationIssuesPopover.js +51 -0
  514. package/dist/editor/validation/ValidationIssuesPopover.js.map +1 -0
  515. package/dist/editor/validation/navigateToValidationIssue.d.ts +13 -0
  516. package/dist/editor/validation/navigateToValidationIssue.js +43 -0
  517. package/dist/editor/validation/navigateToValidationIssue.js.map +1 -0
  518. package/dist/editor/validation/validationFixAgent.d.ts +26 -0
  519. package/dist/editor/validation/validationFixAgent.js +124 -0
  520. package/dist/editor/validation/validationFixAgent.js.map +1 -0
  521. package/dist/editor/validation/validationSeverity.d.ts +15 -0
  522. package/dist/editor/validation/validationSeverity.js +47 -0
  523. package/dist/editor/validation/validationSeverity.js.map +1 -0
  524. package/dist/editor/version-diff/versionDiffGeometryKeys.d.ts +10 -4
  525. package/dist/editor/version-diff/versionDiffGeometryKeys.js +21 -7
  526. package/dist/editor/version-diff/versionDiffGeometryKeys.js.map +1 -1
  527. package/dist/editor/version-diff/versionDiffTargets.d.ts +6 -1
  528. package/dist/editor/version-diff/versionDiffTargets.js +5 -5
  529. package/dist/editor/version-diff/versionDiffTargets.js.map +1 -1
  530. package/dist/editor/views/editorSlotContext.d.ts +4 -0
  531. package/dist/editor/views/editorSlotContext.js +37 -1
  532. package/dist/editor/views/editorSlotContext.js.map +1 -1
  533. package/dist/index.d.ts +1 -0
  534. package/dist/index.js +1 -0
  535. package/dist/index.js.map +1 -1
  536. package/dist/lib/utils.d.ts +5 -0
  537. package/dist/lib/utils.js +7 -0
  538. package/dist/lib/utils.js.map +1 -1
  539. package/dist/revision.d.ts +2 -2
  540. package/dist/revision.js +2 -2
  541. package/dist/splash-screen/ModernSplashScreen.js +10 -8
  542. package/dist/splash-screen/ModernSplashScreen.js.map +1 -1
  543. package/dist/splash-screen/RecentPages.js +35 -20
  544. package/dist/splash-screen/RecentPages.js.map +1 -1
  545. package/dist/task-board/TaskBoardWorkspace.js +243 -81
  546. package/dist/task-board/TaskBoardWorkspace.js.map +1 -1
  547. package/dist/task-board/components/AttentionPromptDialog.d.ts +13 -0
  548. package/dist/task-board/components/AttentionPromptDialog.js +45 -0
  549. package/dist/task-board/components/AttentionPromptDialog.js.map +1 -0
  550. package/dist/task-board/components/CommentsList.js +11 -11
  551. package/dist/task-board/components/CommentsList.js.map +1 -1
  552. package/dist/task-board/components/GoalDataView.d.ts +53 -1
  553. package/dist/task-board/components/GoalDataView.js +164 -55
  554. package/dist/task-board/components/GoalDataView.js.map +1 -1
  555. package/dist/task-board/components/GoalFindingsTable.d.ts +43 -0
  556. package/dist/task-board/components/GoalFindingsTable.js +160 -0
  557. package/dist/task-board/components/GoalFindingsTable.js.map +1 -0
  558. package/dist/task-board/components/GoalsMatrix.js +33 -6
  559. package/dist/task-board/components/GoalsMatrix.js.map +1 -1
  560. package/dist/task-board/components/IssuePanel.d.ts +31 -0
  561. package/dist/task-board/components/IssuePanel.js +268 -0
  562. package/dist/task-board/components/IssuePanel.js.map +1 -0
  563. package/dist/task-board/components/ProjectDashboard.d.ts +2 -18
  564. package/dist/task-board/components/ProjectDashboard.js +2 -206
  565. package/dist/task-board/components/ProjectDashboard.js.map +1 -1
  566. package/dist/task-board/components/ProjectGoalsPanel.js +173 -15
  567. package/dist/task-board/components/ProjectGoalsPanel.js.map +1 -1
  568. package/dist/task-board/components/ProjectProgressIndicator.d.ts +8 -0
  569. package/dist/task-board/components/ProjectProgressIndicator.js +17 -0
  570. package/dist/task-board/components/ProjectProgressIndicator.js.map +1 -0
  571. package/dist/task-board/components/SubgoalFindings.d.ts +40 -0
  572. package/dist/task-board/components/SubgoalFindings.js +88 -0
  573. package/dist/task-board/components/SubgoalFindings.js.map +1 -0
  574. package/dist/task-board/components/TaskAgentPanel.d.ts +2 -0
  575. package/dist/task-board/components/TaskAgentPanel.js +5 -4
  576. package/dist/task-board/components/TaskAgentPanel.js.map +1 -1
  577. package/dist/task-board/components/TaskBoardHomeView.d.ts +11 -0
  578. package/dist/task-board/components/TaskBoardHomeView.js +40 -2
  579. package/dist/task-board/components/TaskBoardHomeView.js.map +1 -1
  580. package/dist/task-board/components/TaskBoardProjectListSidebar.js +2 -11
  581. package/dist/task-board/components/TaskBoardProjectListSidebar.js.map +1 -1
  582. package/dist/task-board/components/TaskDetailPanel.js +58 -23
  583. package/dist/task-board/components/TaskDetailPanel.js.map +1 -1
  584. package/dist/task-board/components/WizardCommunicationCenter.d.ts +2 -0
  585. package/dist/task-board/components/WizardCommunicationCenter.js +5 -3
  586. package/dist/task-board/components/WizardCommunicationCenter.js.map +1 -1
  587. package/dist/task-board/components/WizardCommunicationShared.js +2 -1
  588. package/dist/task-board/components/WizardCommunicationShared.js.map +1 -1
  589. package/dist/task-board/components/WizardTask.d.ts +2 -0
  590. package/dist/task-board/components/WizardTask.js +2 -2
  591. package/dist/task-board/components/WizardTask.js.map +1 -1
  592. package/dist/task-board/components/WizardTaskDetailsPanel.d.ts +4 -0
  593. package/dist/task-board/components/WizardTaskDetailsPanel.js +16 -3
  594. package/dist/task-board/components/WizardTaskDetailsPanel.js.map +1 -1
  595. package/dist/task-board/components/commentAuthor.d.ts +14 -0
  596. package/dist/task-board/components/commentAuthor.js +25 -0
  597. package/dist/task-board/components/commentAuthor.js.map +1 -0
  598. package/dist/task-board/services/issueService.d.ts +193 -0
  599. package/dist/task-board/services/issueService.js +97 -0
  600. package/dist/task-board/services/issueService.js.map +1 -0
  601. package/dist/task-board/taskBoardNavStore.d.ts +6 -0
  602. package/dist/task-board/taskBoardNavStore.js +36 -1
  603. package/dist/task-board/taskBoardNavStore.js.map +1 -1
  604. package/dist/task-board/types.d.ts +28 -0
  605. package/dist/task-board/utils/projectDashboardModel.d.ts +68 -0
  606. package/dist/task-board/utils/projectDashboardModel.js +363 -0
  607. package/dist/task-board/utils/projectDashboardModel.js.map +1 -0
  608. package/dist/task-board/views/DependencyGraphView.d.ts +7 -1
  609. package/dist/task-board/views/DependencyGraphView.js +58 -19
  610. package/dist/task-board/views/DependencyGraphView.js.map +1 -1
  611. package/dist/task-board/views/ProjectDashboardView.d.ts +28 -0
  612. package/dist/task-board/views/ProjectDashboardView.js +316 -0
  613. package/dist/task-board/views/ProjectDashboardView.js.map +1 -0
  614. package/dist/tour/Tour.js +21 -2
  615. package/dist/tour/Tour.js.map +1 -1
  616. package/dist/types.d.ts +11 -0
  617. package/images/Parhelia-Onboarding-Beach.jpg +0 -0
  618. package/package.json +1 -1
  619. package/styles.css +57 -3
  620. package/images/Parhelia-Onboarding-BG.jpg +0 -0
@@ -0,0 +1,25 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Replace } from "lucide-react";
3
+ import { findReplaceStore } from "./findReplaceStore";
4
+ /**
5
+ * Ctrl+H opens the "Find and replace" popover in the toolbar (see
6
+ * menubar/toolbar-sections/FindReplaceControls). The binding is allowed
7
+ * while typing because that is where the shortcut is usually pressed, and it
8
+ * must cancel the browser's own Ctrl+H (history).
9
+ */
10
+ export const findReplaceCommand = {
11
+ id: "findReplace",
12
+ label: "Find and replace",
13
+ icon: _jsx(Replace, { strokeWidth: 1 }),
14
+ keyBinding: { key: "h", ctrlOrMeta: true },
15
+ allowWhileTyping: true,
16
+ disabled: (context) => context.editContext.mode !== "edit" ||
17
+ (!context.editContext.page &&
18
+ !context.editContext.item &&
19
+ !context.editContext.currentItemDescriptor),
20
+ execute: async (context) => {
21
+ const selectedText = context.editContext.selectedRange?.text?.trim();
22
+ findReplaceStore.open(selectedText && !selectedText.includes("\n") ? selectedText : undefined);
23
+ },
24
+ };
25
+ //# sourceMappingURL=findReplaceCommand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"findReplaceCommand.js","sourceRoot":"","sources":["../../../src/editor/find-replace/findReplaceCommand.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAOvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAiC;IAC9D,EAAE,EAAE,aAAa;IACjB,KAAK,EAAE,kBAAkB;IACzB,IAAI,EAAE,KAAC,OAAO,IAAC,WAAW,EAAE,CAAC,GAAI;IACjC,UAAU,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE;IAC1C,gBAAgB,EAAE,IAAI;IACtB,QAAQ,EAAE,CAAC,OAAoC,EAAE,EAAE,CACjD,OAAO,CAAC,WAAW,CAAC,IAAI,KAAK,MAAM;QACnC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI;YACxB,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI;YACzB,CAAC,OAAO,CAAC,WAAW,CAAC,qBAAqB,CAAC;IAC/C,OAAO,EAAE,KAAK,EAAE,OAAoC,EAAE,EAAE;QACtD,MAAM,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACrE,gBAAgB,CAAC,IAAI,CACnB,YAAY,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CACxE,CAAC;IACJ,CAAC;CACF,CAAC"}
@@ -0,0 +1,42 @@
1
+ import type { FieldDescriptor, ItemDescriptor } from "../pageModel";
2
+ import type { FindReplaceFieldTarget } from "./findReplaceTargets";
3
+ /**
4
+ * Entry in the bridge geometry union. The editing host keeps the latest text
5
+ * ranges per source, so this name must stay unique among overlay features.
6
+ */
7
+ export declare const FIND_REPLACE_BRIDGE_SOURCE = "find-replace";
8
+ export declare function getFindReplaceTextRangeKey(targetKey: string, matchIndex: number): string;
9
+ /** One occurrence of the search text, addressed in rendered-text offsets. */
10
+ export type FindReplaceMatch = {
11
+ /** Bridge text-range key; unique per match. */
12
+ key: string;
13
+ /** `fieldKey(field)`: groups matches by field. */
14
+ targetKey: string;
15
+ field: FieldDescriptor;
16
+ item: ItemDescriptor;
17
+ /** Component that renders the field on the canvas, when known. */
18
+ componentId?: string;
19
+ /** Index of this match within its field (0-based). */
20
+ occurrence: number;
21
+ /** Offsets into the rendered plain text of the field (tags stripped). */
22
+ start: number;
23
+ end: number;
24
+ };
25
+ /**
26
+ * Turns an HTML value into the plain text the canvas renders, which is the
27
+ * offset space the bridge measures text ranges in (`element.textContent`).
28
+ * Falls back to a tag strip where DOMParser is unavailable (tests).
29
+ */
30
+ export declare function toRenderedText(value: string, fieldType: string | undefined): string;
31
+ /**
32
+ * Lists every match of `find` inside the planned targets, in target order,
33
+ * as rendered-text ranges the canvas overlay can highlight and scroll to.
34
+ */
35
+ export declare function collectFindReplaceMatches(targets: FindReplaceFieldTarget[], find: RegExp | undefined): FindReplaceMatch[];
36
+ export declare function toBridgeTextRange(match: FindReplaceMatch): {
37
+ key: string;
38
+ fieldId: string;
39
+ item: ItemDescriptor;
40
+ start: number;
41
+ end: number;
42
+ };
@@ -0,0 +1,66 @@
1
+ import { fieldKey } from "../version-diff/versionDiffTargets";
2
+ import { isHtmlFieldType } from "./findReplaceText";
3
+ /**
4
+ * Entry in the bridge geometry union. The editing host keeps the latest text
5
+ * ranges per source, so this name must stay unique among overlay features.
6
+ */
7
+ export const FIND_REPLACE_BRIDGE_SOURCE = "find-replace";
8
+ export function getFindReplaceTextRangeKey(targetKey, matchIndex) {
9
+ return `find-replace:${targetKey}:m${matchIndex}`;
10
+ }
11
+ /**
12
+ * Turns an HTML value into the plain text the canvas renders, which is the
13
+ * offset space the bridge measures text ranges in (`element.textContent`).
14
+ * Falls back to a tag strip where DOMParser is unavailable (tests).
15
+ */
16
+ export function toRenderedText(value, fieldType) {
17
+ if (!isHtmlFieldType(fieldType) || !value.includes("<"))
18
+ return value;
19
+ if (typeof DOMParser === "undefined")
20
+ return value.replace(/<[^>]*>/g, "");
21
+ return (new DOMParser().parseFromString(value, "text/html").body.textContent ?? "");
22
+ }
23
+ /**
24
+ * Lists every match of `find` inside the planned targets, in target order,
25
+ * as rendered-text ranges the canvas overlay can highlight and scroll to.
26
+ */
27
+ export function collectFindReplaceMatches(targets, find) {
28
+ if (!find)
29
+ return [];
30
+ const matches = [];
31
+ targets.forEach((target) => {
32
+ const text = toRenderedText(target.value, target.field.type);
33
+ const targetKey = fieldKey(target.field.descriptor);
34
+ find.lastIndex = 0;
35
+ let occurrence = 0;
36
+ for (const match of text.matchAll(find)) {
37
+ const start = match.index ?? 0;
38
+ const end = start + match[0].length;
39
+ if (end <= start)
40
+ continue;
41
+ matches.push({
42
+ key: getFindReplaceTextRangeKey(targetKey, occurrence),
43
+ targetKey,
44
+ field: target.field.descriptor,
45
+ item: target.field.descriptor.item,
46
+ componentId: target.source.componentId,
47
+ occurrence,
48
+ start,
49
+ end,
50
+ });
51
+ occurrence += 1;
52
+ }
53
+ find.lastIndex = 0;
54
+ });
55
+ return matches;
56
+ }
57
+ export function toBridgeTextRange(match) {
58
+ return {
59
+ key: match.key,
60
+ fieldId: match.field.fieldId,
61
+ item: match.item,
62
+ start: match.start,
63
+ end: match.end,
64
+ };
65
+ }
66
+ //# sourceMappingURL=findReplaceMatches.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"findReplaceMatches.js","sourceRoot":"","sources":["../../../src/editor/find-replace/findReplaceMatches.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD;;;GAGG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,cAAc,CAAC;AAEzD,MAAM,UAAU,0BAA0B,CACxC,SAAiB,EACjB,UAAkB;IAElB,OAAO,gBAAgB,SAAS,KAAK,UAAU,EAAE,CAAC;AACpD,CAAC;AAmBD;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,KAAa,EAAE,SAA6B;IACzE,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IACtE,IAAI,OAAO,SAAS,KAAK,WAAW;QAAE,OAAO,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAC3E,OAAO,CACL,IAAI,SAAS,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAC3E,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,yBAAyB,CACvC,OAAiC,EACjC,IAAwB;IAExB,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IACrB,MAAM,OAAO,GAAuB,EAAE,CAAC;IACvC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;QACzB,MAAM,IAAI,GAAG,cAAc,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC7D,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACpD,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QACnB,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACxC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;YAC/B,MAAM,GAAG,GAAG,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;YACpC,IAAI,GAAG,IAAI,KAAK;gBAAE,SAAS;YAC3B,OAAO,CAAC,IAAI,CAAC;gBACX,GAAG,EAAE,0BAA0B,CAAC,SAAS,EAAE,UAAU,CAAC;gBACtD,SAAS;gBACT,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,UAAU;gBAC9B,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI;gBAClC,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,WAAW;gBACtC,UAAU;gBACV,KAAK;gBACL,GAAG;aACJ,CAAC,CAAC;YACH,UAAU,IAAI,CAAC,CAAC;QAClB,CAAC;QACD,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;IACrB,CAAC,CAAC,CAAC;IACH,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAuB;IACvD,OAAO;QACL,GAAG,EAAE,KAAK,CAAC,GAAG;QACd,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO;QAC5B,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,GAAG,EAAE,KAAK,CAAC,GAAG;KACf,CAAC;AACJ,CAAC"}
@@ -0,0 +1,30 @@
1
+ import type { FindReplaceMatch } from "./findReplaceMatches";
2
+ /** What the canvas overlay paints: every match, and which one is current. */
3
+ export type FindReplaceHighlighting = {
4
+ matches: FindReplaceMatch[];
5
+ activeIndex: number;
6
+ };
7
+ export type FindReplaceState = {
8
+ open: boolean;
9
+ /**
10
+ * Search text to seed the panel with; bumped `openRequest` tells the panel a
11
+ * fresh open happened (so Ctrl+H re-focuses the search box even when the
12
+ * panel was already open).
13
+ */
14
+ initialFind: string;
15
+ openRequest: number;
16
+ highlighting: FindReplaceHighlighting | null;
17
+ };
18
+ type Listener = () => void;
19
+ export declare const findReplaceStore: {
20
+ getState: () => FindReplaceState;
21
+ subscribe: (listener: Listener) => () => void;
22
+ open: (initialFind?: string) => void;
23
+ close: () => void;
24
+ toggle: (initialFind?: string) => void;
25
+ setHighlighting: (highlighting: FindReplaceHighlighting | null) => void;
26
+ /** Test seam: reset to the initial state. */
27
+ reset: () => void;
28
+ };
29
+ export declare function useFindReplaceState(): FindReplaceState;
30
+ export {};
@@ -0,0 +1,61 @@
1
+ import { useSyncExternalStore } from "react";
2
+ /**
3
+ * Tiny external store shared by the toolbar button (which owns the popover),
4
+ * the Ctrl+H command and the canvas highlight overlay. They sit far apart in
5
+ * the tree, and none of this state belongs in the persisted edit context.
6
+ */
7
+ function createFindReplaceStore() {
8
+ let state = {
9
+ open: false,
10
+ initialFind: "",
11
+ openRequest: 0,
12
+ highlighting: null,
13
+ };
14
+ const listeners = new Set();
15
+ const setState = (patch) => {
16
+ state = { ...state, ...patch };
17
+ listeners.forEach((listener) => listener());
18
+ };
19
+ return {
20
+ getState: () => state,
21
+ subscribe: (listener) => {
22
+ listeners.add(listener);
23
+ return () => {
24
+ listeners.delete(listener);
25
+ };
26
+ },
27
+ open: (initialFind) => setState({
28
+ open: true,
29
+ initialFind: initialFind ?? state.initialFind,
30
+ openRequest: state.openRequest + 1,
31
+ }),
32
+ close: () => setState({ open: false, highlighting: null }),
33
+ toggle: (initialFind) => {
34
+ if (state.open)
35
+ setState({ open: false, highlighting: null });
36
+ else
37
+ setState({
38
+ open: true,
39
+ initialFind: initialFind ?? state.initialFind,
40
+ openRequest: state.openRequest + 1,
41
+ });
42
+ },
43
+ setHighlighting: (highlighting) => {
44
+ if (highlighting === state.highlighting)
45
+ return;
46
+ setState({ highlighting });
47
+ },
48
+ /** Test seam: reset to the initial state. */
49
+ reset: () => setState({
50
+ open: false,
51
+ initialFind: "",
52
+ openRequest: 0,
53
+ highlighting: null,
54
+ }),
55
+ };
56
+ }
57
+ export const findReplaceStore = createFindReplaceStore();
58
+ export function useFindReplaceState() {
59
+ return useSyncExternalStore(findReplaceStore.subscribe, findReplaceStore.getState, findReplaceStore.getState);
60
+ }
61
+ //# sourceMappingURL=findReplaceStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"findReplaceStore.js","sourceRoot":"","sources":["../../../src/editor/find-replace/findReplaceStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAwB7C;;;;GAIG;AACH,SAAS,sBAAsB;IAC7B,IAAI,KAAK,GAAqB;QAC5B,IAAI,EAAE,KAAK;QACX,WAAW,EAAE,EAAE;QACf,WAAW,EAAE,CAAC;QACd,YAAY,EAAE,IAAI;KACnB,CAAC;IACF,MAAM,SAAS,GAAG,IAAI,GAAG,EAAY,CAAC;IAEtC,MAAM,QAAQ,GAAG,CAAC,KAAgC,EAAE,EAAE;QACpD,KAAK,GAAG,EAAE,GAAG,KAAK,EAAE,GAAG,KAAK,EAAE,CAAC;QAC/B,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC9C,CAAC,CAAC;IAEF,OAAO;QACL,QAAQ,EAAE,GAAG,EAAE,CAAC,KAAK;QACrB,SAAS,EAAE,CAAC,QAAkB,EAAE,EAAE;YAChC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACxB,OAAO,GAAG,EAAE;gBACV,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC7B,CAAC,CAAC;QACJ,CAAC;QACD,IAAI,EAAE,CAAC,WAAoB,EAAE,EAAE,CAC7B,QAAQ,CAAC;YACP,IAAI,EAAE,IAAI;YACV,WAAW,EAAE,WAAW,IAAI,KAAK,CAAC,WAAW;YAC7C,WAAW,EAAE,KAAK,CAAC,WAAW,GAAG,CAAC;SACnC,CAAC;QACJ,KAAK,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;QAC1D,MAAM,EAAE,CAAC,WAAoB,EAAE,EAAE;YAC/B,IAAI,KAAK,CAAC,IAAI;gBAAE,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;;gBAE5D,QAAQ,CAAC;oBACP,IAAI,EAAE,IAAI;oBACV,WAAW,EAAE,WAAW,IAAI,KAAK,CAAC,WAAW;oBAC7C,WAAW,EAAE,KAAK,CAAC,WAAW,GAAG,CAAC;iBACnC,CAAC,CAAC;QACP,CAAC;QACD,eAAe,EAAE,CAAC,YAA4C,EAAE,EAAE;YAChE,IAAI,YAAY,KAAK,KAAK,CAAC,YAAY;gBAAE,OAAO;YAChD,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC;QAC7B,CAAC;QACD,6CAA6C;QAC7C,KAAK,EAAE,GAAG,EAAE,CACV,QAAQ,CAAC;YACP,IAAI,EAAE,KAAK;YACX,WAAW,EAAE,EAAE;YACf,WAAW,EAAE,CAAC;YACd,YAAY,EAAE,IAAI;SACnB,CAAC;KACL,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,sBAAsB,EAAE,CAAC;AAEzD,MAAM,UAAU,mBAAmB;IACjC,OAAO,oBAAoB,CACzB,gBAAgB,CAAC,SAAS,EAC1B,gBAAgB,CAAC,QAAQ,EACzB,gBAAgB,CAAC,QAAQ,CAC1B,CAAC;AACJ,CAAC"}
@@ -0,0 +1,49 @@
1
+ import type { Field, FullItem, ItemDescriptor, Page } from "../pageModel";
2
+ export type FindReplaceScope = "page" | "item";
3
+ /** An item whose text fields the dialog searches, with where it came from. */
4
+ export type FindReplaceItemSource = {
5
+ descriptor: ItemDescriptor;
6
+ /** True for the item that is being edited (the page itself in page mode). */
7
+ isMainItem: boolean;
8
+ /** Name of the canvas component the item belongs to, when it is a component's content. */
9
+ componentName?: string;
10
+ /** Id of that canvas component (scroll fallback when a text range cannot be measured). */
11
+ componentId?: string;
12
+ /** Content of a shared component: replacing it changes every page that renders it. */
13
+ isShared?: boolean;
14
+ };
15
+ export type FindReplaceFieldTarget = {
16
+ item: FullItem;
17
+ field: Field;
18
+ source: FindReplaceItemSource;
19
+ /** The current text (HTML for rich text) the replacement runs on. */
20
+ value: string;
21
+ count: number;
22
+ snippet: string;
23
+ };
24
+ export type FindReplacePlan = {
25
+ targets: FindReplaceFieldTarget[];
26
+ totalMatches: number;
27
+ /** Fields with a match whose value is inherited (fallback / standard value); never rewritten. */
28
+ skippedInherited: number;
29
+ /** Fields with a match the current user may not write. */
30
+ skippedReadOnly: number;
31
+ };
32
+ /**
33
+ * Lists the items the dialog searches. In page scope that is the page item
34
+ * plus every item rendered by a component on it (datasources and embedded
35
+ * content parts); in item scope only the item being edited. The main item
36
+ * always comes first and every item appears once.
37
+ */
38
+ export declare function collectFindReplaceItemSources(args: {
39
+ page?: Page;
40
+ item?: FullItem;
41
+ currentItemDescriptor?: ItemDescriptor;
42
+ scope: FindReplaceScope;
43
+ }): FindReplaceItemSource[];
44
+ /**
45
+ * Computes which fields the replacement would touch. Inherited values
46
+ * (language fallback, standard values) and read-only fields are counted but
47
+ * excluded, so "Replace all" only rewrites values the item actually owns.
48
+ */
49
+ export declare function planFindReplace(items: FullItem[], sources: FindReplaceItemSource[], find: RegExp | undefined): FindReplacePlan;
@@ -0,0 +1,110 @@
1
+ import { buildMatchSnippet, countMatchesInFieldValue, isFindReplaceTextFieldType, } from "./findReplaceText";
2
+ function descriptorKey(descriptor) {
3
+ return `${descriptor.id.replace(/[{}]/g, "").toLowerCase()}|${(descriptor.language ?? "").toLowerCase()}|${descriptor.version ?? 0}`;
4
+ }
5
+ function collectComponentSources(component, add, inheritedShared) {
6
+ const isShared = inheritedShared || !!component.isShared;
7
+ if (component.datasourceItem) {
8
+ add({
9
+ descriptor: component.datasourceItem,
10
+ isMainItem: false,
11
+ componentName: component.name,
12
+ componentId: component.id,
13
+ isShared,
14
+ });
15
+ }
16
+ component.items?.forEach((item) => add({
17
+ descriptor: item,
18
+ isMainItem: false,
19
+ componentName: component.name,
20
+ componentId: component.id,
21
+ isShared,
22
+ }));
23
+ component.placeholders?.forEach((placeholder) => placeholder.components?.forEach((child) => collectComponentSources(child, add, isShared)));
24
+ }
25
+ /**
26
+ * Lists the items the dialog searches. In page scope that is the page item
27
+ * plus every item rendered by a component on it (datasources and embedded
28
+ * content parts); in item scope only the item being edited. The main item
29
+ * always comes first and every item appears once.
30
+ */
31
+ export function collectFindReplaceItemSources(args) {
32
+ const { page, item, currentItemDescriptor, scope } = args;
33
+ const mainDescriptor = page?.item?.descriptor ?? item?.descriptor ?? currentItemDescriptor;
34
+ const sources = [];
35
+ const seen = new Set();
36
+ const add = (source) => {
37
+ if (!source.descriptor?.id)
38
+ return;
39
+ const key = descriptorKey(source.descriptor);
40
+ if (seen.has(key))
41
+ return;
42
+ seen.add(key);
43
+ sources.push(source);
44
+ };
45
+ if (mainDescriptor)
46
+ add({ descriptor: mainDescriptor, isMainItem: true });
47
+ if (scope === "page" && page?.rootComponent) {
48
+ collectComponentSources(page.rootComponent, add, false);
49
+ }
50
+ return sources;
51
+ }
52
+ function getSearchableValue(field) {
53
+ if (typeof field.value === "string")
54
+ return field.value;
55
+ if (typeof field.rawValue === "string")
56
+ return field.rawValue;
57
+ return undefined;
58
+ }
59
+ /**
60
+ * Computes which fields the replacement would touch. Inherited values
61
+ * (language fallback, standard values) and read-only fields are counted but
62
+ * excluded, so "Replace all" only rewrites values the item actually owns.
63
+ */
64
+ export function planFindReplace(items, sources, find) {
65
+ const plan = {
66
+ targets: [],
67
+ totalMatches: 0,
68
+ skippedInherited: 0,
69
+ skippedReadOnly: 0,
70
+ };
71
+ if (!find)
72
+ return plan;
73
+ const itemsByKey = new Map(items.map((item) => [descriptorKey(item.descriptor ?? item), item]));
74
+ sources.forEach((source) => {
75
+ const item = itemsByKey.get(descriptorKey(source.descriptor));
76
+ if (!item)
77
+ return;
78
+ const fields = [...item.fields].sort((a, b) => (a.sectionSortOrder ?? 0) - (b.sectionSortOrder ?? 0) ||
79
+ (a.sortOrder ?? 0) - (b.sortOrder ?? 0));
80
+ fields.forEach((field) => {
81
+ if (!isFindReplaceTextFieldType(field.type))
82
+ return;
83
+ const value = getSearchableValue(field);
84
+ if (!value)
85
+ return;
86
+ const count = countMatchesInFieldValue(value, field.type, find);
87
+ if (count === 0)
88
+ return;
89
+ if (field.isFallback || field.isStandardValue) {
90
+ plan.skippedInherited += count;
91
+ return;
92
+ }
93
+ if (field.canWrite === false || item.canWriteItem === false) {
94
+ plan.skippedReadOnly += count;
95
+ return;
96
+ }
97
+ plan.targets.push({
98
+ item,
99
+ field,
100
+ source,
101
+ value,
102
+ count,
103
+ snippet: buildMatchSnippet(value, field.type, find),
104
+ });
105
+ plan.totalMatches += count;
106
+ });
107
+ });
108
+ return plan;
109
+ }
110
+ //# sourceMappingURL=findReplaceTargets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"findReplaceTargets.js","sourceRoot":"","sources":["../../../src/editor/find-replace/findReplaceTargets.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Pure text helpers for the "Find and replace" dialog. Everything in here is
3
+ * free of React and of the edit context so it can be unit tested directly.
4
+ */
5
+ export type FindReplaceOptions = {
6
+ matchCase: boolean;
7
+ wholeWord: boolean;
8
+ };
9
+ /** Field types whose value is a text string the dialog may search and rewrite. */
10
+ export declare function isFindReplaceTextFieldType(type: string | undefined): boolean;
11
+ /** True for rich text: the value is HTML, so only text between tags is searched. */
12
+ export declare function isHtmlFieldType(type: string | undefined): boolean;
13
+ /**
14
+ * Builds the global search expression for a literal search string. Returns
15
+ * undefined for an empty search string so callers never match "everything".
16
+ */
17
+ export declare function buildFindRegExp(find: string, options: FindReplaceOptions): RegExp | undefined;
18
+ export declare function countMatches(text: string, find: RegExp): number;
19
+ /**
20
+ * Replaces every match in plain text, or only the match with the given
21
+ * 0-based occurrence index. The replacement is literal: `$` in the
22
+ * replacement string is not interpreted as a back-reference.
23
+ */
24
+ export declare function replaceInText(text: string, find: RegExp, replacement: string, onlyOccurrence?: number): {
25
+ value: string;
26
+ count: number;
27
+ };
28
+ /**
29
+ * Strips tags and decodes entities so an HTML value can be searched (for
30
+ * counting) and shown as a plain snippet.
31
+ */
32
+ export declare function htmlToSearchableText(html: string): string;
33
+ /**
34
+ * Replaces matches in the text nodes of an HTML string. Tags and attributes
35
+ * are left alone. Text segments that contain no match keep their original
36
+ * entity spelling; changed segments are re-encoded so `&`, `<` and `>` in the
37
+ * replacement never break the markup. Matches that span a tag boundary (for
38
+ * example "Hello <b>world</b>") are not found.
39
+ */
40
+ export declare function replaceInHtml(html: string, find: RegExp, replacement: string, onlyOccurrence?: number): {
41
+ value: string;
42
+ count: number;
43
+ };
44
+ export declare function countMatchesInFieldValue(value: string, fieldType: string | undefined, find: RegExp): number;
45
+ export declare function replaceInFieldValue(value: string, fieldType: string | undefined, find: RegExp, replacement: string, onlyOccurrence?: number): {
46
+ value: string;
47
+ count: number;
48
+ };
49
+ /** Short, single-line excerpt around the first match for the preview list. */
50
+ export declare function buildMatchSnippet(value: string, fieldType: string | undefined, find: RegExp, contextLength?: number): string;
@@ -0,0 +1,189 @@
1
+ /**
2
+ * Pure text helpers for the "Find and replace" dialog. Everything in here is
3
+ * free of React and of the edit context so it can be unit tested directly.
4
+ */
5
+ const FIND_REPLACE_TEXT_FIELD_TYPES = new Set([
6
+ "single-line text",
7
+ "multi-line text",
8
+ "memo",
9
+ "rich text",
10
+ ]);
11
+ /** Field types whose value is a text string the dialog may search and rewrite. */
12
+ export function isFindReplaceTextFieldType(type) {
13
+ return FIND_REPLACE_TEXT_FIELD_TYPES.has((type ?? "").trim().toLowerCase());
14
+ }
15
+ /** True for rich text: the value is HTML, so only text between tags is searched. */
16
+ export function isHtmlFieldType(type) {
17
+ return (type ?? "").trim().toLowerCase() === "rich text";
18
+ }
19
+ function escapeRegExp(text) {
20
+ return text.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
21
+ }
22
+ /**
23
+ * Builds the global search expression for a literal search string. Returns
24
+ * undefined for an empty search string so callers never match "everything".
25
+ */
26
+ export function buildFindRegExp(find, options) {
27
+ if (!find)
28
+ return undefined;
29
+ const escaped = escapeRegExp(find);
30
+ const source = options.wholeWord
31
+ ? `(?<![\\p{L}\\p{N}_])${escaped}(?![\\p{L}\\p{N}_])`
32
+ : escaped;
33
+ return new RegExp(source, options.matchCase ? "gu" : "giu");
34
+ }
35
+ export function countMatches(text, find) {
36
+ if (!text)
37
+ return 0;
38
+ find.lastIndex = 0;
39
+ const matches = text.match(find);
40
+ find.lastIndex = 0;
41
+ return matches ? matches.length : 0;
42
+ }
43
+ /**
44
+ * Replaces every match in plain text, or only the match with the given
45
+ * 0-based occurrence index. The replacement is literal: `$` in the
46
+ * replacement string is not interpreted as a back-reference.
47
+ */
48
+ export function replaceInText(text, find, replacement, onlyOccurrence) {
49
+ if (!text)
50
+ return { value: text, count: 0 };
51
+ let count = 0;
52
+ let seen = 0;
53
+ find.lastIndex = 0;
54
+ const value = text.replace(find, (matched) => {
55
+ const index = seen;
56
+ seen += 1;
57
+ if (onlyOccurrence !== undefined && index !== onlyOccurrence) {
58
+ return matched;
59
+ }
60
+ count += 1;
61
+ return replacement;
62
+ });
63
+ find.lastIndex = 0;
64
+ return { value, count };
65
+ }
66
+ const NBSP = String.fromCharCode(0xa0);
67
+ const NAMED_ENTITIES = {
68
+ amp: "&",
69
+ lt: "<",
70
+ gt: ">",
71
+ quot: '"',
72
+ apos: "'",
73
+ nbsp: NBSP,
74
+ };
75
+ function decodeEntities(text) {
76
+ return text.replace(/&(#x[0-9a-f]+|#[0-9]+|[a-z]+);/gi, (entity, body) => {
77
+ const lower = body.toLowerCase();
78
+ if (lower.startsWith("#x")) {
79
+ const code = parseInt(lower.slice(2), 16);
80
+ return Number.isFinite(code) ? String.fromCodePoint(code) : entity;
81
+ }
82
+ if (lower.startsWith("#")) {
83
+ const code = parseInt(lower.slice(1), 10);
84
+ return Number.isFinite(code) ? String.fromCodePoint(code) : entity;
85
+ }
86
+ return NAMED_ENTITIES[lower] ?? entity;
87
+ });
88
+ }
89
+ function encodeEntities(text) {
90
+ return text
91
+ .replace(/&/g, "&amp;")
92
+ .replace(/</g, "&lt;")
93
+ .replace(/>/g, "&gt;")
94
+ .replace(new RegExp(NBSP, "g"), "&nbsp;");
95
+ }
96
+ /**
97
+ * Splits HTML into alternating tag and text segments. Tags (including
98
+ * comments, doctype and processing instructions) are returned untouched so
99
+ * attributes, URLs and class names are never searched.
100
+ */
101
+ function splitHtml(html) {
102
+ const segments = [];
103
+ const tagPattern = /<!--[\s\S]*?-->|<[^>]*>/g;
104
+ let last = 0;
105
+ for (const match of html.matchAll(tagPattern)) {
106
+ const start = match.index ?? 0;
107
+ if (start > last)
108
+ segments.push({ tag: false, text: html.slice(last, start) });
109
+ segments.push({ tag: true, text: match[0] });
110
+ last = start + match[0].length;
111
+ }
112
+ if (last < html.length)
113
+ segments.push({ tag: false, text: html.slice(last) });
114
+ return segments;
115
+ }
116
+ /**
117
+ * Strips tags and decodes entities so an HTML value can be searched (for
118
+ * counting) and shown as a plain snippet.
119
+ */
120
+ export function htmlToSearchableText(html) {
121
+ return splitHtml(html)
122
+ .filter((segment) => !segment.tag)
123
+ .map((segment) => decodeEntities(segment.text))
124
+ .join("");
125
+ }
126
+ /**
127
+ * Replaces matches in the text nodes of an HTML string. Tags and attributes
128
+ * are left alone. Text segments that contain no match keep their original
129
+ * entity spelling; changed segments are re-encoded so `&`, `<` and `>` in the
130
+ * replacement never break the markup. Matches that span a tag boundary (for
131
+ * example "Hello <b>world</b>") are not found.
132
+ */
133
+ export function replaceInHtml(html, find, replacement, onlyOccurrence) {
134
+ if (!html)
135
+ return { value: html, count: 0 };
136
+ let count = 0;
137
+ // Occurrences are numbered across the whole value, so a single-match
138
+ // replacement addresses the same match the overlay highlights.
139
+ let seenBefore = 0;
140
+ const value = splitHtml(html)
141
+ .map((segment) => {
142
+ if (segment.tag)
143
+ return segment.text;
144
+ const decoded = decodeEntities(segment.text);
145
+ const inSegment = countMatches(decoded, find);
146
+ if (inSegment === 0)
147
+ return segment.text;
148
+ const localOccurrence = onlyOccurrence === undefined ? undefined : onlyOccurrence - seenBefore;
149
+ seenBefore += inSegment;
150
+ if (localOccurrence !== undefined &&
151
+ (localOccurrence < 0 || localOccurrence >= inSegment)) {
152
+ return segment.text;
153
+ }
154
+ const result = replaceInText(decoded, find, replacement, localOccurrence);
155
+ if (result.count === 0)
156
+ return segment.text;
157
+ count += result.count;
158
+ return encodeEntities(result.value);
159
+ })
160
+ .join("");
161
+ return { value, count };
162
+ }
163
+ export function countMatchesInFieldValue(value, fieldType, find) {
164
+ if (!isHtmlFieldType(fieldType))
165
+ return countMatches(value, find);
166
+ return replaceInHtml(value, find, "").count;
167
+ }
168
+ export function replaceInFieldValue(value, fieldType, find, replacement, onlyOccurrence) {
169
+ return isHtmlFieldType(fieldType)
170
+ ? replaceInHtml(value, find, replacement, onlyOccurrence)
171
+ : replaceInText(value, find, replacement, onlyOccurrence);
172
+ }
173
+ /** Short, single-line excerpt around the first match for the preview list. */
174
+ export function buildMatchSnippet(value, fieldType, find, contextLength = 32) {
175
+ const text = (isHtmlFieldType(fieldType) ? htmlToSearchableText(value) : value)
176
+ .replace(/\s+/g, " ")
177
+ .trim();
178
+ find.lastIndex = 0;
179
+ const match = find.exec(text);
180
+ find.lastIndex = 0;
181
+ if (!match)
182
+ return text.slice(0, contextLength * 2);
183
+ const start = Math.max(0, match.index - contextLength);
184
+ const end = Math.min(text.length, match.index + match[0].length + contextLength);
185
+ return ((start > 0 ? "…" : "") +
186
+ text.slice(start, end) +
187
+ (end < text.length ? "…" : ""));
188
+ }
189
+ //# sourceMappingURL=findReplaceText.js.map