@parhelia/core 0.1.12534 → 0.1.12555

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 (585) hide show
  1. package/dist/agents-view/AgentCard.d.ts +4 -6
  2. package/dist/agents-view/AgentCard.js +24 -143
  3. package/dist/agents-view/AgentCard.js.map +1 -1
  4. package/dist/agents-view/AgentsInbox.d.ts +1 -1
  5. package/dist/agents-view/AgentsInbox.js +92 -7
  6. package/dist/agents-view/AgentsInbox.js.map +1 -1
  7. package/dist/agents-view/AgentsTitlebar.js +2 -3
  8. package/dist/agents-view/AgentsTitlebar.js.map +1 -1
  9. package/dist/agents-view/AgentsView.d.ts +7 -6
  10. package/dist/agents-view/AgentsView.js +97 -186
  11. package/dist/agents-view/AgentsView.js.map +1 -1
  12. package/dist/agents-view/AgentsWorkspaceView.d.ts +6 -2
  13. package/dist/agents-view/AgentsWorkspaceView.js +113 -266
  14. package/dist/agents-view/AgentsWorkspaceView.js.map +1 -1
  15. package/dist/agents-view/ProfileAgentsGroup.d.ts +1 -2
  16. package/dist/agents-view/ProfileAgentsGroup.js +3 -4
  17. package/dist/agents-view/ProfileAgentsGroup.js.map +1 -1
  18. package/dist/components/ActionButton.d.ts +1 -1
  19. package/dist/components/ActionButton.js.map +1 -1
  20. package/dist/components/FilterInput.d.ts +1 -1
  21. package/dist/components/FilterInput.js +1 -1
  22. package/dist/components/FilterInput.js.map +1 -1
  23. package/dist/components/ui/LanguageSelector.js +4 -2
  24. package/dist/components/ui/LanguageSelector.js.map +1 -1
  25. package/dist/components/ui/PlaceholderInput.js +3 -3
  26. package/dist/components/ui/PlaceholderInput.js.map +1 -1
  27. package/dist/components/ui/PlaceholderInputTypes.js +1 -1
  28. package/dist/components/ui/PlaceholderInputTypes.js.map +1 -1
  29. package/dist/components/ui/alert-dialog.d.ts +1 -1
  30. package/dist/components/ui/alert-dialog.js +10 -6
  31. package/dist/components/ui/alert-dialog.js.map +1 -1
  32. package/dist/components/ui/button.d.ts +4 -4
  33. package/dist/components/ui/button.js +1 -4
  34. package/dist/components/ui/button.js.map +1 -1
  35. package/dist/components/ui/context-menu.d.ts +1 -1
  36. package/dist/components/ui/context-menu.js +4 -12
  37. package/dist/components/ui/context-menu.js.map +1 -1
  38. package/dist/components/ui/copy-button.d.ts +1 -2
  39. package/dist/components/ui/copy-button.js +2 -2
  40. package/dist/components/ui/copy-button.js.map +1 -1
  41. package/dist/components/ui/dialog.d.ts +1 -1
  42. package/dist/components/ui/dialog.js +126 -21
  43. package/dist/components/ui/dialog.js.map +1 -1
  44. package/dist/components/ui/input.d.ts +1 -1
  45. package/dist/components/ui/input.js +3 -5
  46. package/dist/components/ui/input.js.map +1 -1
  47. package/dist/components/ui/paste-button.d.ts +1 -2
  48. package/dist/components/ui/paste-button.js +2 -2
  49. package/dist/components/ui/paste-button.js.map +1 -1
  50. package/dist/components/ui/popover.js +9 -1
  51. package/dist/components/ui/popover.js.map +1 -1
  52. package/dist/components/ui/select.js +1 -1
  53. package/dist/components/ui/select.js.map +1 -1
  54. package/dist/components/ui/styled-dialog-title.js +1 -1
  55. package/dist/components/ui/styled-dialog-title.js.map +1 -1
  56. package/dist/components/ui/tabs.d.ts +1 -1
  57. package/dist/components/ui/tabs.js +11 -4
  58. package/dist/components/ui/tabs.js.map +1 -1
  59. package/dist/config/config.d.ts +2 -2
  60. package/dist/config/config.js +70 -215
  61. package/dist/config/config.js.map +1 -1
  62. package/dist/config/types/workspace.d.ts +0 -6
  63. package/dist/config/types.d.ts +12 -58
  64. package/dist/config/types.js.map +1 -1
  65. package/dist/editor/ComponentInfo.d.ts +4 -0
  66. package/dist/editor/ComponentInfo.js +41 -0
  67. package/dist/editor/ComponentInfo.js.map +1 -0
  68. package/dist/editor/ConfirmationDialog.js +4 -20
  69. package/dist/editor/ConfirmationDialog.js.map +1 -1
  70. package/dist/editor/ContentTree.d.ts +1 -2
  71. package/dist/editor/ContentTree.js +32 -93
  72. package/dist/editor/ContentTree.js.map +1 -1
  73. package/dist/editor/Editor.js +18 -72
  74. package/dist/editor/Editor.js.map +1 -1
  75. package/dist/editor/FieldHistory.js +36 -84
  76. package/dist/editor/FieldHistory.js.map +1 -1
  77. package/dist/editor/FieldListField.js +9 -21
  78. package/dist/editor/FieldListField.js.map +1 -1
  79. package/dist/editor/FieldListFieldWithFallbacks.js +2 -23
  80. package/dist/editor/FieldListFieldWithFallbacks.js.map +1 -1
  81. package/dist/editor/GlobalMenuBar.js +2 -29
  82. package/dist/editor/GlobalMenuBar.js.map +1 -1
  83. package/dist/editor/ItemInfo.js +1 -36
  84. package/dist/editor/ItemInfo.js.map +1 -1
  85. package/dist/editor/LinkEditorDialog.js +0 -3
  86. package/dist/editor/LinkEditorDialog.js.map +1 -1
  87. package/dist/editor/MainLayout.d.ts +2 -0
  88. package/dist/editor/MainLayout.js +5 -4
  89. package/dist/editor/MainLayout.js.map +1 -1
  90. package/dist/editor/MigrationsView.js +5 -29
  91. package/dist/editor/MigrationsView.js.map +1 -1
  92. package/dist/editor/MobileLayout.js +12 -37
  93. package/dist/editor/MobileLayout.js.map +1 -1
  94. package/dist/editor/PictureCropper.js +45 -54
  95. package/dist/editor/PictureCropper.js.map +1 -1
  96. package/dist/editor/PictureEditor.js +13 -12
  97. package/dist/editor/PictureEditor.js.map +1 -1
  98. package/dist/editor/QuickItemSwitcher.js +21 -21
  99. package/dist/editor/QuickItemSwitcher.js.map +1 -1
  100. package/dist/editor/SetupWizard.js +12 -52
  101. package/dist/editor/SetupWizard.js.map +1 -1
  102. package/dist/editor/Titlebar.js +2 -7
  103. package/dist/editor/Titlebar.js.map +1 -1
  104. package/dist/editor/ai/AgentCostDisplay.d.ts +0 -1
  105. package/dist/editor/ai/AgentCostDisplay.js +1 -1
  106. package/dist/editor/ai/AgentCostDisplay.js.map +1 -1
  107. package/dist/editor/ai/AgentDocumentList.js +14 -32
  108. package/dist/editor/ai/AgentDocumentList.js.map +1 -1
  109. package/dist/editor/ai/AgentGreeting.js +2 -3
  110. package/dist/editor/ai/AgentGreeting.js.map +1 -1
  111. package/dist/editor/ai/AgentProfileSelector.js +1 -2
  112. package/dist/editor/ai/AgentProfileSelector.js.map +1 -1
  113. package/dist/editor/ai/AgentStatusBadge.d.ts +5 -0
  114. package/dist/editor/ai/AgentStatusBadge.js +65 -67
  115. package/dist/editor/ai/AgentStatusBadge.js.map +1 -1
  116. package/dist/editor/ai/AgentTerminal.d.ts +2 -14
  117. package/dist/editor/ai/AgentTerminal.js +482 -2350
  118. package/dist/editor/ai/AgentTerminal.js.map +1 -1
  119. package/dist/editor/ai/AgentTerminalStatusBar.d.ts +3 -8
  120. package/dist/editor/ai/AgentTerminalStatusBar.js +56 -460
  121. package/dist/editor/ai/AgentTerminalStatusBar.js.map +1 -1
  122. package/dist/editor/ai/Agents.js +101 -91
  123. package/dist/editor/ai/Agents.js.map +1 -1
  124. package/dist/editor/ai/AiResponseMessage.d.ts +1 -10
  125. package/dist/editor/ai/AiResponseMessage.js +23 -238
  126. package/dist/editor/ai/AiResponseMessage.js.map +1 -1
  127. package/dist/editor/ai/ContextInfoBar.d.ts +3 -2
  128. package/dist/editor/ai/ContextInfoBar.js +7 -64
  129. package/dist/editor/ai/ContextInfoBar.js.map +1 -1
  130. package/dist/editor/ai/GuidanceOverlay.js +11 -17
  131. package/dist/editor/ai/GuidanceOverlay.js.map +1 -1
  132. package/dist/editor/ai/HelpTerminal.d.ts +5 -0
  133. package/dist/editor/ai/HelpTerminal.js +166 -0
  134. package/dist/editor/ai/HelpTerminal.js.map +1 -0
  135. package/dist/editor/ai/InlineAiDialog.d.ts +1 -1
  136. package/dist/editor/ai/InlineAiDialog.js +192 -514
  137. package/dist/editor/ai/InlineAiDialog.js.map +1 -1
  138. package/dist/editor/ai/InlineAiTrigger.js +12 -115
  139. package/dist/editor/ai/InlineAiTrigger.js.map +1 -1
  140. package/dist/editor/ai/MediaImage.js +8 -40
  141. package/dist/editor/ai/MediaImage.js.map +1 -1
  142. package/dist/editor/ai/SpawnedAgentsPanel.js +12 -10
  143. package/dist/editor/ai/SpawnedAgentsPanel.js.map +1 -1
  144. package/dist/editor/ai/ToolCallDisplay.d.ts +2 -22
  145. package/dist/editor/ai/ToolCallDisplay.js +147 -518
  146. package/dist/editor/ai/ToolCallDisplay.js.map +1 -1
  147. package/dist/editor/ai/dialogs/AgentDialogHandler.d.ts +8 -1
  148. package/dist/editor/ai/dialogs/AgentDialogHandler.js +42 -379
  149. package/dist/editor/ai/dialogs/AgentDialogHandler.js.map +1 -1
  150. package/dist/editor/ai/dialogs/QuestionnaireInline.d.ts +1 -5
  151. package/dist/editor/ai/dialogs/QuestionnaireInline.js +60 -628
  152. package/dist/editor/ai/dialogs/QuestionnaireInline.js.map +1 -1
  153. package/dist/editor/ai/dialogs/agentDialogTypes.d.ts +0 -115
  154. package/dist/editor/ai/dialogs/agentDialogTypes.js +0 -2
  155. package/dist/editor/ai/dialogs/agentDialogTypes.js.map +1 -1
  156. package/dist/editor/ai/types.d.ts +1 -3
  157. package/dist/editor/ai/useAgentStatus.d.ts +0 -1
  158. package/dist/editor/ai/useAgentStatus.js +96 -79
  159. package/dist/editor/ai/useAgentStatus.js.map +1 -1
  160. package/dist/editor/ai/useInlineAiPosition.js +5 -45
  161. package/dist/editor/ai/useInlineAiPosition.js.map +1 -1
  162. package/dist/editor/client/AboutDialog.js +2 -4
  163. package/dist/editor/client/AboutDialog.js.map +1 -1
  164. package/dist/editor/client/EditorShell.js +212 -581
  165. package/dist/editor/client/EditorShell.js.map +1 -1
  166. package/dist/editor/client/editContext.d.ts +19 -28
  167. package/dist/editor/client/editContext.js.map +1 -1
  168. package/dist/editor/client/helpers.js +0 -6
  169. package/dist/editor/client/helpers.js.map +1 -1
  170. package/dist/editor/client/hooks/useEditorUrlSync.js +2 -1
  171. package/dist/editor/client/hooks/useEditorUrlSync.js.map +1 -1
  172. package/dist/editor/client/hooks/useEditorWebSocket.d.ts +0 -10
  173. package/dist/editor/client/hooks/useEditorWebSocket.js +14 -209
  174. package/dist/editor/client/hooks/useEditorWebSocket.js.map +1 -1
  175. package/dist/editor/client/hooks/useQuota.d.ts +0 -8
  176. package/dist/editor/client/hooks/useQuota.js.map +1 -1
  177. package/dist/editor/client/hooks/useSocketMessageHandler.js +7 -68
  178. package/dist/editor/client/hooks/useSocketMessageHandler.js.map +1 -1
  179. package/dist/editor/client/itemsRepository.js +6 -10
  180. package/dist/editor/client/itemsRepository.js.map +1 -1
  181. package/dist/editor/client/navigation.d.ts +21 -0
  182. package/dist/editor/client/navigation.js +98 -0
  183. package/dist/editor/client/navigation.js.map +1 -0
  184. package/dist/editor/client/operations.d.ts +3 -6
  185. package/dist/editor/client/operations.js +30 -208
  186. package/dist/editor/client/operations.js.map +1 -1
  187. package/dist/editor/client/pageModelBuilder.js +31 -4
  188. package/dist/editor/client/pageModelBuilder.js.map +1 -1
  189. package/dist/editor/client/ui/EditorChrome.d.ts +6 -0
  190. package/dist/editor/client/ui/EditorChrome.js +72 -55
  191. package/dist/editor/client/ui/EditorChrome.js.map +1 -1
  192. package/dist/editor/client/ui/FullscreenControls.js +3 -5
  193. package/dist/editor/client/ui/FullscreenControls.js.map +1 -1
  194. package/dist/editor/commands/commands.d.ts +1 -11
  195. package/dist/editor/commands/commands.js +1 -12
  196. package/dist/editor/commands/commands.js.map +1 -1
  197. package/dist/editor/commands/componentCommands.js +55 -109
  198. package/dist/editor/commands/componentCommands.js.map +1 -1
  199. package/dist/editor/commands/customCommandConverter.d.ts +1 -8
  200. package/dist/editor/commands/customCommandConverter.js +5 -35
  201. package/dist/editor/commands/customCommandConverter.js.map +1 -1
  202. package/dist/editor/commands/handlers/agentHandler.js +1 -2
  203. package/dist/editor/commands/handlers/agentHandler.js.map +1 -1
  204. package/dist/editor/commands/handlers/uiActionHandlers.js +3 -4
  205. package/dist/editor/commands/handlers/uiActionHandlers.js.map +1 -1
  206. package/dist/editor/commands/itemCommands.d.ts +0 -3
  207. package/dist/editor/commands/itemCommands.js +10 -93
  208. package/dist/editor/commands/itemCommands.js.map +1 -1
  209. package/dist/editor/commands/undo.d.ts +15 -9
  210. package/dist/editor/commands/undo.js +0 -24
  211. package/dist/editor/commands/undo.js.map +1 -1
  212. package/dist/editor/context-menu/InsertMenu.js +39 -83
  213. package/dist/editor/context-menu/InsertMenu.js.map +1 -1
  214. package/dist/editor/field-types/MultiLineText.js +1 -1
  215. package/dist/editor/field-types/MultiLineText.js.map +1 -1
  216. package/dist/editor/field-types/RawEditor.js +1 -1
  217. package/dist/editor/field-types/ReactQuill.d.ts +125 -0
  218. package/dist/editor/field-types/ReactQuill.js +385 -0
  219. package/dist/editor/field-types/ReactQuill.js.map +1 -0
  220. package/dist/editor/field-types/RichTextEditor.js +2 -4
  221. package/dist/editor/field-types/RichTextEditor.js.map +1 -1
  222. package/dist/editor/field-types/RichTextEditorComponent.js +3 -37
  223. package/dist/editor/field-types/RichTextEditorComponent.js.map +1 -1
  224. package/dist/editor/field-types/SingleLineText.js +1 -1
  225. package/dist/editor/field-types/TreeListEditor.js +2 -3
  226. package/dist/editor/field-types/TreeListEditor.js.map +1 -1
  227. package/dist/editor/field-types/richtext/components/ReactSlate.css +5 -23
  228. package/dist/editor/field-types/richtext/components/ReactSlate.d.ts +0 -2
  229. package/dist/editor/field-types/richtext/components/ReactSlate.js +4 -28
  230. package/dist/editor/field-types/richtext/components/ReactSlate.js.map +1 -1
  231. package/dist/editor/field-types/richtext/components/ToolbarButton.js +2 -4
  232. package/dist/editor/field-types/richtext/components/ToolbarButton.js.map +1 -1
  233. package/dist/editor/field-types/richtext/contextMenuFactory.d.ts +0 -13
  234. package/dist/editor/field-types/richtext/contextMenuFactory.js +22 -177
  235. package/dist/editor/field-types/richtext/contextMenuFactory.js.map +1 -1
  236. package/dist/editor/field-types/richtext/types.d.ts +0 -2
  237. package/dist/editor/field-types/richtext/types.js.map +1 -1
  238. package/dist/editor/field-types/richtext/utils/plugins.js +0 -4
  239. package/dist/editor/field-types/richtext/utils/plugins.js.map +1 -1
  240. package/dist/editor/media-selector/MediaFolderBrowser.js +1 -1
  241. package/dist/editor/media-selector/MediaFolderBrowser.js.map +1 -1
  242. package/dist/editor/media-selector/MediaSelector.js +1 -7
  243. package/dist/editor/media-selector/MediaSelector.js.map +1 -1
  244. package/dist/editor/media-selector/TreeSelector.js +35 -40
  245. package/dist/editor/media-selector/TreeSelector.js.map +1 -1
  246. package/dist/editor/menubar/ActiveUsers.js +1 -1
  247. package/dist/editor/menubar/ActiveUsers.js.map +1 -1
  248. package/dist/editor/menubar/GenericToolbar.js +2 -4
  249. package/dist/editor/menubar/GenericToolbar.js.map +1 -1
  250. package/dist/editor/menubar/ItemLanguageVersion.js +2 -2
  251. package/dist/editor/menubar/ItemLanguageVersion.js.map +1 -1
  252. package/dist/editor/menubar/PageSelector.js +147 -26
  253. package/dist/editor/menubar/PageSelector.js.map +1 -1
  254. package/dist/editor/menubar/Separator.js +1 -1
  255. package/dist/editor/menubar/VersionSelector.js +4 -2
  256. package/dist/editor/menubar/VersionSelector.js.map +1 -1
  257. package/dist/editor/menubar/WorkflowButton.js +12 -39
  258. package/dist/editor/menubar/WorkflowButton.js.map +1 -1
  259. package/dist/editor/menubar/toolbar-sections/CustomCommandsToolbar.js +36 -7
  260. package/dist/editor/menubar/toolbar-sections/CustomCommandsToolbar.js.map +1 -1
  261. package/dist/editor/menubar/toolbar-sections/EditControls.js +3 -3
  262. package/dist/editor/menubar/toolbar-sections/EditControls.js.map +1 -1
  263. package/dist/editor/menubar/toolbar-sections/HelpButton.js +0 -1
  264. package/dist/editor/menubar/toolbar-sections/HelpButton.js.map +1 -1
  265. package/dist/editor/menubar/toolbar-sections/ManualBrowser.d.ts +10 -6
  266. package/dist/editor/menubar/toolbar-sections/ManualBrowser.js +219 -500
  267. package/dist/editor/menubar/toolbar-sections/ManualBrowser.js.map +1 -1
  268. package/dist/editor/menubar/toolbar-sections/UtilityControls.js +1 -10
  269. package/dist/editor/menubar/toolbar-sections/UtilityControls.js.map +1 -1
  270. package/dist/editor/page-editor-chrome/CommentHighlighting.js +1 -42
  271. package/dist/editor/page-editor-chrome/CommentHighlighting.js.map +1 -1
  272. package/dist/editor/page-editor-chrome/FrameMenu.js +1 -1
  273. package/dist/editor/page-editor-chrome/FrameMenu.js.map +1 -1
  274. package/dist/editor/page-editor-chrome/InlineEditor.js +48 -97
  275. package/dist/editor/page-editor-chrome/InlineEditor.js.map +1 -1
  276. package/dist/editor/page-editor-chrome/PlaceholderDropZone.js +17 -38
  277. package/dist/editor/page-editor-chrome/PlaceholderDropZone.js.map +1 -1
  278. package/dist/editor/page-editor-chrome/PlaceholderDropZones.js +11 -17
  279. package/dist/editor/page-editor-chrome/PlaceholderDropZones.js.map +1 -1
  280. package/dist/editor/page-editor-chrome/useInlineAICompletion.js +298 -283
  281. package/dist/editor/page-editor-chrome/useInlineAICompletion.js.map +1 -1
  282. package/dist/editor/page-viewer/EditorForm.js +11 -69
  283. package/dist/editor/page-viewer/EditorForm.js.map +1 -1
  284. package/dist/editor/page-viewer/MiniMap.d.ts +4 -2
  285. package/dist/editor/page-viewer/MiniMap.js +28 -91
  286. package/dist/editor/page-viewer/MiniMap.js.map +1 -1
  287. package/dist/editor/page-viewer/PageViewer.d.ts +1 -3
  288. package/dist/editor/page-viewer/PageViewer.js +19 -92
  289. package/dist/editor/page-viewer/PageViewer.js.map +1 -1
  290. package/dist/editor/page-viewer/PageViewerFrame.d.ts +1 -2
  291. package/dist/editor/page-viewer/PageViewerFrame.js +109 -292
  292. package/dist/editor/page-viewer/PageViewerFrame.js.map +1 -1
  293. package/dist/editor/page-viewer/RenderingParametersSection.js +3 -2
  294. package/dist/editor/page-viewer/RenderingParametersSection.js.map +1 -1
  295. package/dist/editor/page-viewer/pageModelSkeletonBuilder.js +49 -114
  296. package/dist/editor/page-viewer/pageModelSkeletonBuilder.js.map +1 -1
  297. package/dist/editor/page-viewer/pageViewContext.d.ts +0 -1
  298. package/dist/editor/page-viewer/pageViewContext.js +14 -51
  299. package/dist/editor/page-viewer/pageViewContext.js.map +1 -1
  300. package/dist/editor/pageModel.d.ts +1 -14
  301. package/dist/editor/reviews/Comment.js +11 -23
  302. package/dist/editor/reviews/Comment.js.map +1 -1
  303. package/dist/editor/reviews/CommentDisplayPopover.js +4 -4
  304. package/dist/editor/reviews/CommentDisplayPopover.js.map +1 -1
  305. package/dist/editor/reviews/CommentView.js +4 -19
  306. package/dist/editor/reviews/CommentView.js.map +1 -1
  307. package/dist/editor/reviews/Comments.js +72 -89
  308. package/dist/editor/reviews/Comments.js.map +1 -1
  309. package/dist/editor/reviews/CreateReviewDialog.js +177 -281
  310. package/dist/editor/reviews/CreateReviewDialog.js.map +1 -1
  311. package/dist/editor/reviews/DecisionsMatrix.js +25 -96
  312. package/dist/editor/reviews/DecisionsMatrix.js.map +1 -1
  313. package/dist/editor/reviews/DiffView.js +14 -7
  314. package/dist/editor/reviews/DiffView.js.map +1 -1
  315. package/dist/editor/reviews/EditReviewSettingsDialog.js +4 -6
  316. package/dist/editor/reviews/EditReviewSettingsDialog.js.map +1 -1
  317. package/dist/editor/reviews/MultiReviewManager.js +3 -25
  318. package/dist/editor/reviews/MultiReviewManager.js.map +1 -1
  319. package/dist/editor/reviews/PagesPanel.js +15 -31
  320. package/dist/editor/reviews/PagesPanel.js.map +1 -1
  321. package/dist/editor/reviews/PreviewInfo.js +4 -1
  322. package/dist/editor/reviews/PreviewInfo.js.map +1 -1
  323. package/dist/editor/reviews/ReviewCard.js +7 -13
  324. package/dist/editor/reviews/ReviewCard.js.map +1 -1
  325. package/dist/editor/reviews/ReviewDetail.js +2 -3
  326. package/dist/editor/reviews/ReviewDetail.js.map +1 -1
  327. package/dist/editor/reviews/ReviewsList.js +3 -7
  328. package/dist/editor/reviews/ReviewsList.js.map +1 -1
  329. package/dist/editor/reviews/SuggestedEdit.js +3 -34
  330. package/dist/editor/reviews/SuggestedEdit.js.map +1 -1
  331. package/dist/editor/reviews/SuggestionDisplayPopover.js +5 -31
  332. package/dist/editor/reviews/SuggestionDisplayPopover.js.map +1 -1
  333. package/dist/editor/reviews/commentAi.js +6 -21
  334. package/dist/editor/reviews/commentAi.js.map +1 -1
  335. package/dist/editor/reviews/reviewCommands.js +1 -4
  336. package/dist/editor/reviews/reviewCommands.js.map +1 -1
  337. package/dist/editor/reviews/useMultiReview.js +2 -2
  338. package/dist/editor/reviews/useMultiReview.js.map +1 -1
  339. package/dist/editor/reviews/useReviews.d.ts +2 -2
  340. package/dist/editor/reviews/useReviews.js +30 -12
  341. package/dist/editor/reviews/useReviews.js.map +1 -1
  342. package/dist/editor/services/agentService.d.ts +5 -229
  343. package/dist/editor/services/agentService.js +39 -292
  344. package/dist/editor/services/agentService.js.map +1 -1
  345. package/dist/editor/services/aiService.d.ts +1 -57
  346. package/dist/editor/services/aiService.js +6 -79
  347. package/dist/editor/services/aiService.js.map +1 -1
  348. package/dist/editor/services/contentService.d.ts +3 -6
  349. package/dist/editor/services/contentService.js +12 -13
  350. package/dist/editor/services/contentService.js.map +1 -1
  351. package/dist/editor/services/editService.d.ts +1 -50
  352. package/dist/editor/services/editService.js +2 -91
  353. package/dist/editor/services/editService.js.map +1 -1
  354. package/dist/editor/services/indexService.js +1 -1
  355. package/dist/editor/services/indexService.js.map +1 -1
  356. package/dist/editor/services/reviewsService.d.ts +6 -3
  357. package/dist/editor/services/reviewsService.js +11 -2
  358. package/dist/editor/services/reviewsService.js.map +1 -1
  359. package/dist/editor/services/serviceHelper.d.ts +1 -2
  360. package/dist/editor/services/serviceHelper.js +20 -112
  361. package/dist/editor/services/serviceHelper.js.map +1 -1
  362. package/dist/editor/services/systemService.d.ts +1 -2
  363. package/dist/editor/services/systemService.js +0 -3
  364. package/dist/editor/services/systemService.js.map +1 -1
  365. package/dist/editor/services-server/graphQL.d.ts +29 -0
  366. package/dist/editor/services-server/graphQL.js +53 -0
  367. package/dist/editor/services-server/graphQL.js.map +1 -0
  368. package/dist/editor/settings/About.js +3 -317
  369. package/dist/editor/settings/About.js.map +1 -1
  370. package/dist/editor/settings/AllAgentsPanel.d.ts +5 -0
  371. package/dist/editor/settings/AllAgentsPanel.js +139 -0
  372. package/dist/editor/settings/AllAgentsPanel.js.map +1 -0
  373. package/dist/editor/settings/LatestFeedback.d.ts +1 -0
  374. package/dist/editor/settings/LatestFeedback.js +136 -0
  375. package/dist/editor/settings/LatestFeedback.js.map +1 -0
  376. package/dist/editor/settings/QuotaInfo.js +4 -210
  377. package/dist/editor/settings/QuotaInfo.js.map +1 -1
  378. package/dist/editor/settings/SettingsView.js +21 -23
  379. package/dist/editor/settings/SettingsView.js.map +1 -1
  380. package/dist/editor/settings/Setup.d.ts +1 -0
  381. package/dist/editor/settings/Setup.js +211 -0
  382. package/dist/editor/settings/Setup.js.map +1 -0
  383. package/dist/editor/settings/Status.js +4 -5
  384. package/dist/editor/settings/Status.js.map +1 -1
  385. package/dist/editor/settings/index/useIndexStatus.js +22 -20
  386. package/dist/editor/settings/index/useIndexStatus.js.map +1 -1
  387. package/dist/editor/settings/panels/AgentsPanel.d.ts +4 -0
  388. package/dist/editor/settings/panels/AgentsPanel.js +121 -95
  389. package/dist/editor/settings/panels/AgentsPanel.js.map +1 -1
  390. package/dist/editor/settings/panels/DatabasePanel.d.ts +6 -0
  391. package/dist/editor/settings/panels/DatabasePanel.js +50 -0
  392. package/dist/editor/settings/panels/DatabasePanel.js.map +1 -0
  393. package/dist/editor/settings/panels/ModelsPanel.js +108 -329
  394. package/dist/editor/settings/panels/ModelsPanel.js.map +1 -1
  395. package/dist/editor/settings/panels/ProjectTemplatesPanel.js +1 -1
  396. package/dist/editor/settings/panels/ProjectTemplatesPanel.js.map +1 -1
  397. package/dist/editor/settings/panels/ProvidersPanel.d.ts +1 -1
  398. package/dist/editor/settings/panels/ProvidersPanel.js +59 -86
  399. package/dist/editor/settings/panels/ProvidersPanel.js.map +1 -1
  400. package/dist/editor/settings/panels/SearchConfigPanel.js +4 -4
  401. package/dist/editor/settings/panels/SearchConfigPanel.js.map +1 -1
  402. package/dist/editor/settings/panels/index.d.ts +2 -3
  403. package/dist/editor/settings/panels/index.js +2 -3
  404. package/dist/editor/settings/panels/index.js.map +1 -1
  405. package/dist/editor/settings/setup-steps/AiSetupStep/EmbeddingsModelSection.d.ts +2 -0
  406. package/dist/editor/settings/setup-steps/AiSetupStep/EmbeddingsModelSection.js +195 -0
  407. package/dist/editor/settings/setup-steps/AiSetupStep/EmbeddingsModelSection.js.map +1 -0
  408. package/dist/editor/settings/setup-steps/AiSetupStep/index.d.ts +2 -0
  409. package/dist/editor/settings/setup-steps/AiSetupStep/index.js +21 -0
  410. package/dist/editor/settings/setup-steps/AiSetupStep/index.js.map +1 -0
  411. package/dist/editor/settings/setup-steps/AiSetupStep/provider/ProviderSection.d.ts +1 -0
  412. package/dist/editor/settings/setup-steps/AiSetupStep/provider/ProviderSection.js +233 -0
  413. package/dist/editor/settings/setup-steps/AiSetupStep/provider/ProviderSection.js.map +1 -0
  414. package/dist/editor/settings/setup-steps/AiSetupStep/required-containers/RequiredContainersList.d.ts +15 -0
  415. package/dist/editor/settings/setup-steps/AiSetupStep/required-containers/RequiredContainersList.js +14 -0
  416. package/dist/editor/settings/setup-steps/AiSetupStep/required-containers/RequiredContainersList.js.map +1 -0
  417. package/dist/editor/settings/setup-steps/AiSetupStep/required-containers/RequiredContainersSection.d.ts +1 -0
  418. package/dist/editor/settings/setup-steps/AiSetupStep/required-containers/RequiredContainersSection.js +94 -0
  419. package/dist/editor/settings/setup-steps/AiSetupStep/required-containers/RequiredContainersSection.js.map +1 -0
  420. package/dist/editor/settings/setup-steps/AiSetupStep/types.d.ts +1 -0
  421. package/dist/editor/settings/setup-steps/AiSetupStep/types.js +2 -0
  422. package/dist/editor/settings/setup-steps/AiSetupStep/types.js.map +1 -0
  423. package/dist/editor/settings/setup-steps/AiSetupStep/utils.d.ts +5 -0
  424. package/dist/editor/settings/setup-steps/AiSetupStep/utils.js +44 -0
  425. package/dist/editor/settings/setup-steps/AiSetupStep/utils.js.map +1 -0
  426. package/dist/editor/settings/setup-steps/IndexSetupStep.d.ts +2 -0
  427. package/dist/editor/settings/setup-steps/IndexSetupStep.js +36 -0
  428. package/dist/editor/settings/setup-steps/IndexSetupStep.js.map +1 -0
  429. package/dist/editor/settings/setup-steps/SettingsSetupStep.d.ts +2 -0
  430. package/dist/editor/settings/setup-steps/SettingsSetupStep.js +111 -0
  431. package/dist/editor/settings/setup-steps/SettingsSetupStep.js.map +1 -0
  432. package/dist/editor/settings/setup-steps/SetupOverview.d.ts +14 -0
  433. package/dist/editor/settings/setup-steps/SetupOverview.js +38 -0
  434. package/dist/editor/settings/setup-steps/SetupOverview.js.map +1 -0
  435. package/dist/editor/settings/status/coreStatusChecks.js +19 -124
  436. package/dist/editor/settings/status/coreStatusChecks.js.map +1 -1
  437. package/dist/editor/settings/status/useStartupChecks.d.ts +1 -3
  438. package/dist/editor/settings/status/useStartupChecks.js +5 -9
  439. package/dist/editor/settings/status/useStartupChecks.js.map +1 -1
  440. package/dist/editor/setup-wizard/steps/CompleteStep.d.ts +1 -2
  441. package/dist/editor/setup-wizard/steps/CompleteStep.js +1 -2
  442. package/dist/editor/setup-wizard/steps/CompleteStep.js.map +1 -1
  443. package/dist/editor/sidebar/ComponentPalette.js +1 -2
  444. package/dist/editor/sidebar/ComponentPalette.js.map +1 -1
  445. package/dist/editor/sidebar/ComponentTree.d.ts +1 -8
  446. package/dist/editor/sidebar/ComponentTree.js +69 -216
  447. package/dist/editor/sidebar/ComponentTree.js.map +1 -1
  448. package/dist/editor/sidebar/Debug.d.ts +1 -0
  449. package/dist/editor/sidebar/Debug.js +70 -0
  450. package/dist/editor/sidebar/Debug.js.map +1 -0
  451. package/dist/editor/sidebar/EditHistory.js +46 -7
  452. package/dist/editor/sidebar/EditHistory.js.map +1 -1
  453. package/dist/editor/sidebar/Favorites.js +8 -4
  454. package/dist/editor/sidebar/Favorites.js.map +1 -1
  455. package/dist/editor/sidebar/GraphQL.d.ts +2 -0
  456. package/dist/editor/sidebar/GraphQL.js +234 -0
  457. package/dist/editor/sidebar/GraphQL.js.map +1 -0
  458. package/dist/editor/sidebar/LeftToolbar.d.ts +1 -0
  459. package/dist/editor/sidebar/LeftToolbar.js +12 -0
  460. package/dist/editor/sidebar/LeftToolbar.js.map +1 -0
  461. package/dist/editor/sidebar/MainContentTree.js +3 -4
  462. package/dist/editor/sidebar/MainContentTree.js.map +1 -1
  463. package/dist/editor/sidebar/NavigationPanelItem.js +1 -1
  464. package/dist/editor/sidebar/NavigationPanelItem.js.map +1 -1
  465. package/dist/editor/sidebar/NavigationSidebar.d.ts +4 -0
  466. package/dist/editor/sidebar/NavigationSidebar.js +254 -0
  467. package/dist/editor/sidebar/NavigationSidebar.js.map +1 -0
  468. package/dist/editor/sidebar/OperationItem.js +6 -20
  469. package/dist/editor/sidebar/OperationItem.js.map +1 -1
  470. package/dist/editor/sidebar/SidebarPanel.js +7 -30
  471. package/dist/editor/sidebar/SidebarPanel.js.map +1 -1
  472. package/dist/editor/sidebar/SidebarStack.js +0 -1
  473. package/dist/editor/sidebar/SidebarStack.js.map +1 -1
  474. package/dist/editor/sidebar/Validation.js +12 -22
  475. package/dist/editor/sidebar/Validation.js.map +1 -1
  476. package/dist/editor/sidebar/Workbox.js +3 -53
  477. package/dist/editor/sidebar/Workbox.js.map +1 -1
  478. package/dist/editor/sidebar/WorkspaceRail.d.ts +1 -0
  479. package/dist/editor/sidebar/WorkspaceRail.js +167 -56
  480. package/dist/editor/sidebar/WorkspaceRail.js.map +1 -1
  481. package/dist/editor/template-wizard/TemplateStructureInlineEditor.js +10 -3
  482. package/dist/editor/template-wizard/TemplateStructureInlineEditor.js.map +1 -1
  483. package/dist/editor/tree-indicators/GutterColumns.d.ts +1 -3
  484. package/dist/editor/tree-indicators/GutterColumns.js +5 -26
  485. package/dist/editor/tree-indicators/GutterColumns.js.map +1 -1
  486. package/dist/editor/tree-indicators/GutterContext.d.ts +0 -4
  487. package/dist/editor/tree-indicators/GutterContext.js +0 -23
  488. package/dist/editor/tree-indicators/GutterContext.js.map +1 -1
  489. package/dist/editor/tree-indicators/GutterSelector.d.ts +5 -0
  490. package/dist/editor/tree-indicators/GutterSelector.js +91 -0
  491. package/dist/editor/tree-indicators/GutterSelector.js.map +1 -0
  492. package/dist/editor/tree-indicators/index.d.ts +1 -0
  493. package/dist/editor/tree-indicators/index.js +1 -0
  494. package/dist/editor/tree-indicators/index.js.map +1 -1
  495. package/dist/editor/tree-indicators/types.d.ts +1 -12
  496. package/dist/editor/ui/CopyMoveTargetSelectorDialog.js +1 -1
  497. package/dist/editor/ui/CopyMoveTargetSelectorDialog.js.map +1 -1
  498. package/dist/editor/ui/Icons.js +1 -1
  499. package/dist/editor/ui/Icons.js.map +1 -1
  500. package/dist/editor/ui/ItemNameDialogNew.d.ts +0 -2
  501. package/dist/editor/ui/ItemNameDialogNew.js +17 -33
  502. package/dist/editor/ui/ItemNameDialogNew.js.map +1 -1
  503. package/dist/editor/ui/ItemSearch.js +11 -7
  504. package/dist/editor/ui/ItemSearch.js.map +1 -1
  505. package/dist/editor/ui/SimpleIconButton.js +1 -1
  506. package/dist/editor/ui/SimpleIconButton.js.map +1 -1
  507. package/dist/editor/ui/SimpleTabs.d.ts +0 -1
  508. package/dist/editor/ui/SimpleTabs.js +25 -45
  509. package/dist/editor/ui/SimpleTabs.js.map +1 -1
  510. package/dist/editor/ui/Splitter.d.ts +0 -1
  511. package/dist/editor/ui/Splitter.js +86 -102
  512. package/dist/editor/ui/Splitter.js.map +1 -1
  513. package/dist/editor/ui/TemplateSelectorDialog.js +4 -4
  514. package/dist/editor/ui/TemplateSelectorDialog.js.map +1 -1
  515. package/dist/editor/ui/TreeListSelector.d.ts +1 -6
  516. package/dist/editor/ui/TreeListSelector.js +2 -2
  517. package/dist/editor/ui/TreeListSelector.js.map +1 -1
  518. package/dist/editor/utils/keyboardNavigation.d.ts +20 -6
  519. package/dist/editor/utils/keyboardNavigation.js +139 -48
  520. package/dist/editor/utils/keyboardNavigation.js.map +1 -1
  521. package/dist/editor/utils.js +9 -19
  522. package/dist/editor/utils.js.map +1 -1
  523. package/dist/editor/views/CompareView.d.ts +1 -3
  524. package/dist/editor/views/CompareView.js +4 -6
  525. package/dist/editor/views/CompareView.js.map +1 -1
  526. package/dist/editor/views/EditView.js +1 -1
  527. package/dist/editor/views/EditView.js.map +1 -1
  528. package/dist/editor/views/EditorSlot.js +34 -27
  529. package/dist/editor/views/EditorSlot.js.map +1 -1
  530. package/dist/editor/views/ItemEditor.js +3 -7
  531. package/dist/editor/views/ItemEditor.js.map +1 -1
  532. package/dist/editor/views/MediaFolderEditView.js +1 -1
  533. package/dist/editor/views/MediaFolderEditView.js.map +1 -1
  534. package/dist/editor/views/ParheliaView.js +6 -5
  535. package/dist/editor/views/ParheliaView.js.map +1 -1
  536. package/dist/editor/views/SingleEditView.d.ts +1 -2
  537. package/dist/editor/views/SingleEditView.js +8 -10
  538. package/dist/editor/views/SingleEditView.js.map +1 -1
  539. package/dist/editor/views/editorSlotContext.js +6 -35
  540. package/dist/editor/views/editorSlotContext.js.map +1 -1
  541. package/dist/index.d.ts +2 -14
  542. package/dist/index.js +0 -10
  543. package/dist/index.js.map +1 -1
  544. package/dist/licensing/LicenseContext.d.ts +3 -1
  545. package/dist/licensing/LicenseContext.js +55 -38
  546. package/dist/licensing/LicenseContext.js.map +1 -1
  547. package/dist/revision.d.ts +2 -2
  548. package/dist/revision.js +2 -2
  549. package/dist/setup/services/setupWizardService.d.ts +13 -40
  550. package/dist/setup/services/setupWizardService.js +17 -32
  551. package/dist/setup/services/setupWizardService.js.map +1 -1
  552. package/dist/setup/wizard/steps/AddModelDialog.js +3 -12
  553. package/dist/setup/wizard/steps/AddModelDialog.js.map +1 -1
  554. package/dist/setup/wizard/steps/ImportModelDialog.js +22 -39
  555. package/dist/setup/wizard/steps/ImportModelDialog.js.map +1 -1
  556. package/dist/splash-screen/ModernSplashScreen.js +32 -110
  557. package/dist/splash-screen/ModernSplashScreen.js.map +1 -1
  558. package/dist/splash-screen/NewPage.js +50 -33
  559. package/dist/splash-screen/NewPage.js.map +1 -1
  560. package/dist/splash-screen/OpenPage.js +6 -2
  561. package/dist/splash-screen/OpenPage.js.map +1 -1
  562. package/dist/splash-screen/ParheliaAssistantChat.js +29 -12
  563. package/dist/splash-screen/ParheliaAssistantChat.js.map +1 -1
  564. package/dist/splash-screen/ParheliaLogo.js +37 -87
  565. package/dist/splash-screen/ParheliaLogo.js.map +1 -1
  566. package/dist/splash-screen/RecentPages.js +3 -3
  567. package/dist/splash-screen/RecentPages.js.map +1 -1
  568. package/dist/task-board/TaskBoardWorkspace.js +34 -6
  569. package/dist/task-board/TaskBoardWorkspace.js.map +1 -1
  570. package/dist/task-board/components/AssignAgentDialog.js +13 -1
  571. package/dist/task-board/components/AssignAgentDialog.js.map +1 -1
  572. package/dist/task-board/components/TaskAgentPanel.js +11 -1
  573. package/dist/task-board/components/TaskAgentPanel.js.map +1 -1
  574. package/dist/task-board/components/TaskAssigneePicker.js +14 -4
  575. package/dist/task-board/components/TaskAssigneePicker.js.map +1 -1
  576. package/dist/task-board/components/WizardCommunicationCenter.js +18 -9
  577. package/dist/task-board/components/WizardCommunicationCenter.js.map +1 -1
  578. package/dist/tour/Tour.d.ts +1 -2
  579. package/dist/tour/Tour.js +75 -256
  580. package/dist/tour/Tour.js.map +1 -1
  581. package/dist/tour/default-tour.js +96 -222
  582. package/dist/tour/default-tour.js.map +1 -1
  583. package/dist/types.d.ts +29 -63
  584. package/package.json +13 -17
  585. package/styles.css +10 -14
@@ -4,13 +4,11 @@ import { MiniMap } from "./MiniMap";
4
4
  import { useEditContext, useEditContextRef, useFieldsEditContext, useFieldsEditContextRef, } from "../client/editContext";
5
5
  import { useDebouncedCallback, useThrottledCallback } from "use-debounce";
6
6
  import { PageEditorChrome } from "../page-editor-chrome/PageEditorChrome";
7
- import { useViewportChangeSignal } from "./pageViewContext";
8
7
  import morphdom from "morphdom";
9
8
  import uuid from "react-uuid";
10
9
  import { cn } from "../../lib/utils";
11
- import { findComponentRect, findFieldElement, findNearestEditableComponentId, findParentWithAttribute, getAbsolutePosition, getFieldDescriptorFromElement, findClosestFieldElement, extractItemIdFromItemUri, } from "../utils";
10
+ import { findComponentRect, findFieldElement, findNearestEditableComponentId, findParentWithAttribute, getAbsolutePosition, getFieldDescriptorFromElement, findClosestFieldElement, } from "../utils";
12
11
  import { extractDOMSelectionContext } from "../utils/selectionContext";
13
- import { cleanId } from "../utils/id-helper";
14
12
  import { getAllComponentInstances, getComponentById, } from "../componentTreeHelper";
15
13
  import { buildComponentContextMenuItems } from "../ContextMenu";
16
14
  import { loadFieldButtons } from "../services/editService";
@@ -22,10 +20,9 @@ import { Spinner } from "../ui/Spinner";
22
20
  import { DeviceToolbar } from "./DeviceToolbar";
23
21
  import { buildPageModelSkeleton } from "./pageModelSkeletonBuilder";
24
22
  const EDITOR_CSS_STYLE_ID = "parhelia-editor-css";
25
- export function PageViewerFrame({ compareView, pageViewContext, className, slotCloseButton, }) {
23
+ export function PageViewerFrame({ compareView, pageViewContext, className, }) {
26
24
  const editContext = useEditContext();
27
25
  const fieldsContext = useFieldsEditContext();
28
- useViewportChangeSignal();
29
26
  const pathname = usePathname();
30
27
  const pageViewContextRef = useRef(undefined);
31
28
  if (!editContext || !pageViewContext)
@@ -38,7 +35,6 @@ export function PageViewerFrame({ compareView, pageViewContext, className, slotC
38
35
  const iframeRef = useRef(null);
39
36
  const currentLoadRef = useRef(null);
40
37
  const rebindIframeInteractionsRef = useRef(null);
41
- const prevModeRef = useRef(editContext.mode);
42
38
  const [showSpinner, setShowSpinner] = useState(false);
43
39
  const [scroll, setScroll] = useState(0);
44
40
  const [showMiniMap, setShowMiniMap] = useState(false);
@@ -108,11 +104,6 @@ export function PageViewerFrame({ compareView, pageViewContext, className, slotC
108
104
  leading: true,
109
105
  trailing: true,
110
106
  });
111
- const requestPageModelBuild = (doc) => {
112
- if (!doc)
113
- return;
114
- buildPageModelThrottled(doc, editContextRef, pageViewContextRef);
115
- };
116
107
  const [iframeSrc, setIframeSrc] = useState();
117
108
  const editorCssGuardRef = useRef({ doc: null, observer: null, editMode: true });
118
109
  const ensureEditorCssGuard = (doc, editMode) => {
@@ -179,16 +170,11 @@ export function PageViewerFrame({ compareView, pageViewContext, className, slotC
179
170
  editorCssGuardRef.current.doc = null;
180
171
  };
181
172
  }, []);
182
- // If the editor mode flips (edit/preview), re-apply CSS and disable inline editing in the iframe.
173
+ // If the editor mode flips (edit/preview), re-apply CSS in the current iframe doc.
183
174
  useEffect(() => {
184
175
  const doc = iframeRef.current?.contentDocument;
185
- const isPreview = editContext.mode === "preview";
186
176
  if (doc)
187
- ensureEditorCssGuard(doc, !isPreview);
188
- if (isPreview) {
189
- editContextRef.current?.setSelectedRange(undefined);
190
- fieldsContextRef.current?.setInlineEditingFieldElement(undefined);
191
- }
177
+ ensureEditorCssGuard(doc, editContext.mode !== "preview");
192
178
  }, [editContext.mode]);
193
179
  useEffect(() => {
194
180
  if (!pageItemDescriptor ||
@@ -198,12 +184,6 @@ export function PageViewerFrame({ compareView, pageViewContext, className, slotC
198
184
  const urlPath = editContext.mode === "preview"
199
185
  ? pageViewContext.previewUrl
200
186
  : pageViewContext.editUrl;
201
- const prevMode = prevModeRef.current;
202
- prevModeRef.current = editContext.mode;
203
- const modeOnlyChange = prevMode !== editContext.mode &&
204
- prevMode !== "preview" &&
205
- editContext.mode !== "preview";
206
- const savedScrollY = iframeRef.current?.contentWindow?.scrollY ?? 0;
207
187
  const renderUrl = new URL(urlPath, window.location.origin);
208
188
  const editRev = uuid();
209
189
  renderUrl.searchParams.set("edit_rev", editRev);
@@ -224,10 +204,6 @@ export function PageViewerFrame({ compareView, pageViewContext, className, slotC
224
204
  const runIntegrationRefresh = (refreshFn, message) => {
225
205
  console.log(message);
226
206
  refreshFn(renderUrl.toString());
227
- const doc = iframeRef.current?.contentDocument;
228
- if (doc) {
229
- requestPageModelBuild(doc);
230
- }
231
207
  // The integration refresh path may replace/normalize <head> during hydration,
232
208
  // which can remove our injected style. Re-ensure a few times post-refresh.
233
209
  const ensureLater = (delay) => {
@@ -242,21 +218,6 @@ export function PageViewerFrame({ compareView, pageViewContext, className, slotC
242
218
  ensureLater(100);
243
219
  ensureLater(500);
244
220
  ensureLater(1200);
245
- if (modeOnlyChange && savedScrollY > 0) {
246
- const restoreScroll = (delay) => {
247
- setTimeout(() => {
248
- const win = iframeRef.current?.contentWindow;
249
- if (win && win.scrollY === 0) {
250
- win.scrollTo(0, savedScrollY);
251
- }
252
- }, delay);
253
- };
254
- restoreScroll(50);
255
- restoreScroll(200);
256
- restoreScroll(500);
257
- restoreScroll(1000);
258
- restoreScroll(2000);
259
- }
260
221
  };
261
222
  const runFallbackRefresh = () => {
262
223
  setShowSpinner(true);
@@ -414,7 +375,7 @@ export function PageViewerFrame({ compareView, pageViewContext, className, slotC
414
375
  injectSXAScripts(iframeRef.current);
415
376
  }, 1000);
416
377
  try {
417
- requestPageModelBuild(doc);
378
+ buildPageModelThrottled(doc, editContextRef, pageViewContextRef);
418
379
  }
419
380
  catch (buildErr) { }
420
381
  }
@@ -470,110 +431,95 @@ export function PageViewerFrame({ compareView, pageViewContext, className, slotC
470
431
  }, []);
471
432
  const selecionChangeHandler = useDebouncedCallback(() => {
472
433
  const sel = iframeRef.current?.contentDocument?.getSelection();
473
- const isInlineAiUiFocused = () => {
474
- const activeEl = document.activeElement;
475
- return !!(activeEl?.closest(".agent-inline-dialog") ||
476
- activeEl?.closest(".agent-inline-trigger") ||
477
- activeEl?.closest('[role="dialog"]'));
478
- };
479
- if (!sel || sel.rangeCount === 0) {
480
- if (!isInlineAiUiFocused()) {
481
- editContextRef.current?.setSelectedRange(undefined);
482
- }
483
- return;
484
- }
485
- // Preserve the last non-collapsed selection while the inline AI UI takes focus.
486
- // This avoids losing context when users click the trigger or dialog.
487
- if (sel.isCollapsed && isInlineAiUiFocused()) {
488
- return;
489
- }
490
- // Find the field element containing the selection/caret
491
- const fieldElement = findClosestFieldElement(sel.anchorNode);
492
- if (!fieldElement) {
493
- if (!isInlineAiUiFocused()) {
494
- editContextRef.current?.setSelectedRange(undefined);
495
- }
496
- return;
497
- }
498
- const fieldId = fieldElement.getAttribute("data-fieldid");
499
- if (!fieldId)
500
- return;
501
- const range = sel.getRangeAt(0);
502
- // Guard: if layout components are hidden, do not set focus for fields of layout components
503
- if (editContextRef.current?.showLayoutComponents === false &&
504
- pageViewContextRef.current?.page) {
505
- const ownerId = fieldElement.getAttribute("data-itemid") || "";
506
- const owner = getComponentById(ownerId, pageViewContextRef.current.page);
507
- if (owner?.layoutId)
434
+ if (sel && sel.rangeCount > 0) {
435
+ // Only process selections that have text.
436
+ // Collapsed selections (carets) should not overwrite a previous AI selection context.
437
+ if (sel.isCollapsed)
508
438
  return;
509
- }
510
- // Compute the global offsets relative to the field element.
511
- const globalStartOffset = getGlobalTextOffset(fieldElement, range.startContainer, range.startOffset);
512
- const globalEndOffset = getGlobalTextOffset(fieldElement, range.endContainer, range.endOffset);
513
- const selectedText = range.toString();
514
- // Extract plain text context from the DOM
515
- const { contextBefore, contextAfter } = extractDOMSelectionContext(fieldElement, globalStartOffset, globalEndOffset);
516
- // Clone the range for the replaceText callback (ranges can become invalid after DOM changes)
517
- const rangeClone = range.cloneRange();
518
- const itemId = fieldElement.getAttribute("data-itemid") || "";
519
- const language = fieldElement.getAttribute("data-language") || "";
520
- const versionStr = fieldElement.getAttribute("data-version");
521
- const version = versionStr ? parseInt(versionStr, 10) : 0;
522
- editContextRef.current?.setSelectedRange({
523
- itemId,
524
- fieldId: fieldId,
525
- language,
526
- version,
527
- startOffset: globalStartOffset,
528
- endOffset: globalEndOffset,
529
- text: selectedText,
530
- contextBefore,
531
- contextAfter,
532
- // Create a callback that uses DOM Range API to replace text in contenteditable
533
- replaceText: (newText) => {
534
- try {
535
- // Delete the selected content (no-op for collapsed ranges)
536
- rangeClone.deleteContents();
537
- // Insert the new text - use the correct document from the range containers
538
- const doc = rangeClone.startContainer.ownerDocument || document;
539
- const textNode = doc.createTextNode(newText);
540
- rangeClone.insertNode(textNode);
541
- // Collapse the range to the end of the inserted text
542
- rangeClone.setStartAfter(textNode);
543
- rangeClone.collapse(true);
544
- // Update the selection
545
- const iframeSel = iframeRef.current?.contentDocument?.getSelection();
546
- if (iframeSel) {
547
- iframeSel.removeAllRanges();
548
- iframeSel.addRange(rangeClone);
439
+ // Find the field element containing the selection
440
+ const fieldElement = findClosestFieldElement(sel.anchorNode);
441
+ if (!fieldElement)
442
+ return;
443
+ const fieldId = fieldElement.getAttribute("data-fieldid");
444
+ if (!fieldId)
445
+ return;
446
+ const range = sel.getRangeAt(0);
447
+ // Guard: if layout components are hidden, do not set focus for fields of layout components
448
+ if (editContextRef.current?.showLayoutComponents === false &&
449
+ pageViewContextRef.current?.page) {
450
+ const ownerId = fieldElement.getAttribute("data-itemid") || "";
451
+ const owner = getComponentById(ownerId, pageViewContextRef.current.page);
452
+ if (owner?.layoutId)
453
+ return;
454
+ }
455
+ // Compute the global offsets relative to the field element.
456
+ const globalStartOffset = getGlobalTextOffset(fieldElement, range.startContainer, range.startOffset);
457
+ const globalEndOffset = getGlobalTextOffset(fieldElement, range.endContainer, range.endOffset);
458
+ const selectedText = range.toString();
459
+ // Extract plain text context from the DOM
460
+ const { contextBefore, contextAfter } = extractDOMSelectionContext(fieldElement, globalStartOffset, globalEndOffset);
461
+ // Clone the range for the replaceText callback (ranges can become invalid after DOM changes)
462
+ const rangeClone = range.cloneRange();
463
+ const itemId = fieldElement.getAttribute("data-itemid") || "";
464
+ const language = fieldElement.getAttribute("data-language") || "";
465
+ const versionStr = fieldElement.getAttribute("data-version");
466
+ const version = versionStr ? parseInt(versionStr, 10) : 0;
467
+ editContextRef.current?.setSelectedRange({
468
+ itemId,
469
+ fieldId: fieldId,
470
+ language,
471
+ version,
472
+ startOffset: globalStartOffset,
473
+ endOffset: globalEndOffset,
474
+ text: selectedText,
475
+ contextBefore,
476
+ contextAfter,
477
+ // Create a callback that uses DOM Range API to replace text in contenteditable
478
+ replaceText: (newText) => {
479
+ try {
480
+ // Delete the selected content
481
+ rangeClone.deleteContents();
482
+ // Insert the new text - use the correct document from the range containers
483
+ const doc = rangeClone.startContainer.ownerDocument || document;
484
+ const textNode = doc.createTextNode(newText);
485
+ rangeClone.insertNode(textNode);
486
+ // Collapse the range to the end of the inserted text
487
+ rangeClone.setStartAfter(textNode);
488
+ rangeClone.collapse(true);
489
+ // Update the selection
490
+ const iframeSel = iframeRef.current?.contentDocument?.getSelection();
491
+ if (iframeSel) {
492
+ iframeSel.removeAllRanges();
493
+ iframeSel.addRange(rangeClone);
494
+ }
495
+ // Explicitly save the field value since the MutationObserver may not be active
496
+ // when text is selected without entering inline edit mode
497
+ const isRichText = fieldElement?.getAttribute("data-is-richtext") === "true";
498
+ const valueToSave = isRichText
499
+ ? fieldElement?.innerHTML
500
+ : fieldElement?.innerText;
501
+ if (fieldId &&
502
+ itemId &&
503
+ language &&
504
+ version &&
505
+ editContextRef.current) {
506
+ editContextRef.current.operations.editField({
507
+ field: {
508
+ fieldId,
509
+ fieldName: fieldElement?.getAttribute("data-fieldname") || undefined,
510
+ item: { id: itemId, language, version },
511
+ },
512
+ refresh: "none",
513
+ value: valueToSave,
514
+ });
515
+ }
549
516
  }
550
- // Explicitly save the field value since the MutationObserver may not be active
551
- // when text is selected without entering inline edit mode
552
- const isRichText = fieldElement?.getAttribute("data-is-richtext") === "true";
553
- const valueToSave = isRichText
554
- ? fieldElement?.innerHTML
555
- : fieldElement?.innerText;
556
- if (fieldId &&
557
- itemId &&
558
- language &&
559
- version &&
560
- editContextRef.current) {
561
- editContextRef.current.operations.editField({
562
- field: {
563
- fieldId,
564
- fieldName: fieldElement?.getAttribute("data-fieldname") || undefined,
565
- item: { id: itemId, language, version },
566
- },
567
- refresh: "none",
568
- value: valueToSave,
569
- });
517
+ catch (error) {
518
+ console.error("[PageViewerFrame] Failed to replace text:", error);
570
519
  }
571
- }
572
- catch (error) {
573
- console.error("[PageViewerFrame] Failed to replace text:", error);
574
- }
575
- },
576
- });
520
+ },
521
+ });
522
+ }
577
523
  }, 300);
578
524
  useEffect(() => {
579
525
  const iframe = iframeRef.current;
@@ -761,16 +707,12 @@ export function PageViewerFrame({ compareView, pageViewContext, className, slotC
761
707
  const isDialog = activeEl?.closest(".agent-inline-dialog") ||
762
708
  activeEl?.closest('[role="dialog"]');
763
709
  const isTrigger = activeEl?.closest(".agent-inline-trigger");
764
- // If focus moved to dialog/trigger (e.g. inline AI), don't force a blur boundary yet.
765
- if (!isDialog && !isTrigger) {
766
- // Always mark a field blur operation boundary so consecutive edits do not
767
- // collapse into a single undo step when a selection range is still present.
710
+ // If focus moved to dialog or trigger, OR if we still have a selection, don't clear.
711
+ if (!isDialog &&
712
+ !isTrigger &&
713
+ !editContextRef.current?.selectedRange) {
714
+ fieldsContextRef.current?.setInlineEditingFieldElement(undefined);
768
715
  editContextRef.current?.operations.onFieldBlur?.();
769
- // Keep selection-related state intact, but clear inline editing element
770
- // when there is no active selectedRange.
771
- if (!editContextRef.current?.selectedRange) {
772
- fieldsContextRef.current?.setInlineEditingFieldElement(undefined);
773
- }
774
716
  }
775
717
  }, 100);
776
718
  }
@@ -826,7 +768,7 @@ export function PageViewerFrame({ compareView, pageViewContext, className, slotC
826
768
  "getAttribute" in x.target &&
827
769
  x.target.getAttribute("data-fieldid") &&
828
770
  x.target.getAttribute("data-itemid")))) {
829
- requestPageModelBuild(iframeDocument);
771
+ buildPageModelThrottled(iframeDocument, editContextRef, pageViewContextRef);
830
772
  }
831
773
  });
832
774
  mutationObserver.observe(iframeDocument, {
@@ -835,126 +777,19 @@ export function PageViewerFrame({ compareView, pageViewContext, className, slotC
835
777
  characterData: false, // observe text changes
836
778
  //attributes: true, // observe attribute changes (like style or class)
837
779
  });
838
- requestPageModelBuild(iframeDocument);
839
- };
840
- const parsePositiveInt = (value) => {
841
- if (!value)
842
- return undefined;
843
- const parsed = parseInt(value, 10);
844
- return Number.isFinite(parsed) ? parsed : undefined;
845
- };
846
- const resolveLinkedItemDescriptor = (anchor, clickedElement) => {
847
- const href = anchor.getAttribute("href") || anchor.href;
848
- let hrefUrl;
849
- try {
850
- hrefUrl = new URL(anchor.href, iframe.contentWindow?.location?.href || window.location.href);
851
- }
852
- catch {
853
- return undefined;
854
- }
855
- const attributeContainer = clickedElement?.closest("[data-itemid],[data-language],[data-version],[sc_item],[sc_itemid],[sc_lang]") || anchor;
856
- // Parse Sitecore RTE format first: ~/link.aspx?_id=GUID&_z=z (target item, not the containing component)
857
- let itemIdRaw;
858
- if (href.includes("~/link.aspx?_id=") ||
859
- href.includes("link.aspx?_id=")) {
860
- const idFromUrl = hrefUrl.searchParams.get("_id");
861
- if (idFromUrl) {
862
- // Convert compact GUID (AD973E51E8454BD2B333859375FBBA24) to standard format with dashes
863
- itemIdRaw = idFromUrl
864
- .replace(/^(\w{8})(\w{4})(\w{4})(\w{4})(\w{12})$/i, "$1-$2-$3-$4-$5")
865
- .toLowerCase();
866
- }
867
- }
868
- if (!itemIdRaw) {
869
- itemIdRaw =
870
- hrefUrl.searchParams.get("sc_itemid") ??
871
- hrefUrl.searchParams.get("itemid") ??
872
- anchor.getAttribute("data-itemid") ??
873
- anchor.getAttribute("sc_itemid") ??
874
- attributeContainer?.getAttribute("data-itemid") ??
875
- attributeContainer?.getAttribute("sc_itemid") ??
876
- (anchor.getAttribute("sc_item")
877
- ? extractItemIdFromItemUri(anchor.getAttribute("sc_item"))
878
- : undefined) ??
879
- (attributeContainer?.getAttribute("sc_item")
880
- ? extractItemIdFromItemUri(attributeContainer.getAttribute("sc_item"))
881
- : undefined);
882
- }
883
- const itemId = cleanId(itemIdRaw);
884
- if (!itemId)
885
- return undefined;
886
- const language = hrefUrl.searchParams.get("sc_lang") ??
887
- hrefUrl.searchParams.get("lang") ??
888
- hrefUrl.searchParams.get("language") ??
889
- anchor.getAttribute("data-language") ??
890
- anchor.getAttribute("sc_lang") ??
891
- attributeContainer?.getAttribute("data-language") ??
892
- attributeContainer?.getAttribute("sc_lang") ??
893
- editContextRef.current?.currentItemDescriptor?.language ??
894
- editContextRef.current?.item?.language;
895
- if (!language)
896
- return undefined;
897
- const version = parsePositiveInt(hrefUrl.searchParams.get("sc_version")) ??
898
- parsePositiveInt(hrefUrl.searchParams.get("version")) ??
899
- parsePositiveInt(anchor.getAttribute("data-version")) ??
900
- parsePositiveInt(attributeContainer?.getAttribute("data-version")) ??
901
- editContextRef.current?.currentItemDescriptor?.version ??
902
- editContextRef.current?.item?.version ??
903
- 0;
904
- return {
905
- id: itemId,
906
- language,
907
- version,
908
- };
780
+ buildPageModelThrottled(iframeDocument, editContextRef, pageViewContextRef);
909
781
  };
910
782
  const handleIframeClick = async (event) => {
911
783
  const target = event.target;
912
- if (!target)
913
- return;
914
- const anchor = target.tagName.toLowerCase() === "a"
915
- ? target
916
- : target.closest("a");
917
- if (!anchor)
918
- return;
919
- const href = anchor.getAttribute("href") || anchor.href;
920
- if (!href || href.startsWith("#") || href.startsWith("javascript:")) {
921
- return;
922
- }
923
- const mode = editContextRef.current?.mode;
924
- const isPreviewOrSuggestions = mode === "preview" || mode === "suggestions";
925
- if (isPreviewOrSuggestions) {
926
- let hrefUrl;
927
- try {
928
- hrefUrl = new URL(anchor.href, iframe.contentWindow?.location?.href || window.location.href);
929
- }
930
- catch {
931
- return;
932
- }
933
- const iframeOrigin = iframe.contentWindow?.location?.origin;
934
- const isInternalLink = hrefUrl.origin === window.location.origin ||
935
- (iframeOrigin ? hrefUrl.origin === iframeOrigin : false);
936
- if (!isInternalLink) {
784
+ // Check if the click target is a link (anchor tag)
785
+ const anchor = target.tagName.toLowerCase() === "a" ? target : target.closest("a");
786
+ if (anchor) {
787
+ const href = anchor.href;
788
+ // Block only navigation links, allow anchor links and javascript links
789
+ if (href && !href.startsWith("#") && !href.startsWith("javascript:")) {
937
790
  event.preventDefault();
938
- event.stopPropagation();
939
- window.open(hrefUrl.toString(), "_blank", "noopener,noreferrer");
940
- return;
941
- }
942
- if (isInternalLink) {
943
- const linkedItem = resolveLinkedItemDescriptor(anchor, target);
944
- if (linkedItem) {
945
- event.preventDefault();
946
- event.stopPropagation();
947
- await editContextRef.current?.loadItem(linkedItem, {
948
- openInNewSlot: event.altKey,
949
- });
950
- return;
951
- }
952
791
  }
953
- // If this link cannot be resolved to an item, allow browser behavior.
954
- return;
955
792
  }
956
- // In edit mode, keep navigation inside iframe disabled.
957
- event.preventDefault();
958
793
  };
959
794
  const handleContextMenu = async (event) => {
960
795
  if (editContextRef.current?.isRefreshing && showSpinner)
@@ -1147,7 +982,9 @@ export function PageViewerFrame({ compareView, pageViewContext, className, slotC
1147
982
  const deviceHeight = pageViewContext.device === "desktop" || !pageViewContext.deviceHeight
1148
983
  ? "100%"
1149
984
  : pageViewContext.deviceHeight || 640;
1150
- return (_jsxs("div", { className: cn("relative flex h-full w-full flex-col items-center select-none", className, editContext.showAgentsPanel && !editContext.currentWizardId && "pr-0"), children: [!pageViewContext.fullscreen && (_jsx(EditorWarnings, { item: pageViewContext.page?.item })), slotCloseButton && (_jsx("div", { className: "absolute top-3 right-3 z-50", children: slotCloseButton })), pageViewContext.device !== "desktop" && (_jsx(DeviceToolbar, { pageViewContext: pageViewContext, configuration: editContext.configuration })), _jsxs("div", { className: "relative flex flex-1 select-none", "data-testid": "page-viewer-viewport", style: {
985
+ return (_jsxs("div", { className: cn("relative flex h-full w-full flex-col items-center select-none", className, (editContext.showComponentNavigator ||
986
+ (editContext.showAgentsPanel && !editContext.currentWizardId)) &&
987
+ "pr-0"), children: [!pageViewContext.fullscreen && (_jsx(EditorWarnings, { item: pageViewContext.page?.item })), pageViewContext.device !== "desktop" && (_jsx(DeviceToolbar, { pageViewContext: pageViewContext, configuration: editContext.configuration })), _jsxs("div", { className: "relative flex flex-1 select-none", "data-testid": "page-viewer-viewport", style: {
1151
988
  width: pageViewContext.device === "desktop" ||
1152
989
  pageViewContext.device === "Responsive"
1153
990
  ? "100%"
@@ -1163,32 +1000,15 @@ export function PageViewerFrame({ compareView, pageViewContext, className, slotC
1163
1000
  setTimeout(() => {
1164
1001
  injectSXAScripts(iframeRef.current);
1165
1002
  }, 1000);
1166
- requestPageModelBuild(doc);
1003
+ buildPageModelThrottled(doc, editContextRef, pageViewContextRef);
1167
1004
  }
1168
1005
  } }), iframeRef.current && (_jsx(PageEditorChrome, { iframe: iframeRef.current, compareView: compareView, pageViewContext: pageViewContext })), pageViewContext.deviceHeight && pageViewContext.device && (_jsx("div", { className: "bg-gray-4 relative z-40 h-full w-full" }))] }), !pageViewContext.fullscreen &&
1169
1006
  showMiniMap &&
1170
1007
  editContext.showMinimap &&
1171
- !editContext.isMobile &&
1172
- editContext.parheliaSettings?.showMinimap !== false && (_jsx(MiniMap, { scroll: scroll, mainViewIframeRef: iframeRef, pageViewContext: pageViewContext, deviceHeight: pageViewContext.device === "Desktop"
1008
+ editContext.parheliaSettings?.showMinimap !== false && (_jsx(MiniMap, { compareView: compareView, scroll: scroll, mainViewIframeRef: iframeRef, pageViewContext: pageViewContext, deviceHeight: pageViewContext.device === "Desktop"
1173
1009
  ? undefined
1174
1010
  : pageViewContext.deviceHeight })), showSpinner && (_jsxs(_Fragment, { children: [_jsx("div", { className: "bg-gray-4/50 absolute top-0 left-0 h-full w-full" }), _jsx("div", { className: "absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 transform", children: _jsx(Spinner, {}) })] }))] }), _jsx(FieldActionsOverlay, { ref: fieldActionsOverlay, generatorButtons: contextMenuFieldButtons, onActionClick: handleActionClick, onParameterizedActionExecute: handleParameterizedActionExecute, currentOverlay: editContext?.currentOverlay, fieldId: contextMenuField?.fieldId || "", setCurrentOverlay: editContext?.setCurrentOverlay || (() => { }), preSelectedAction: preSelectedAction, iframe: iframeRef.current })] }));
1175
1011
  }
1176
- /**
1177
- * In preview mode, disable editing in the iframe: set contentEditable=false on all
1178
- * editable elements and blur the active element so the caret is removed and typing does nothing.
1179
- */
1180
- function disableEditingInIframeDocument(doc) {
1181
- if (!doc || !doc.body)
1182
- return;
1183
- const editable = doc.querySelectorAll("[contenteditable='true'], [contenteditable='']");
1184
- editable.forEach((el) => {
1185
- el.contentEditable = "false";
1186
- });
1187
- const active = doc.activeElement;
1188
- if (active?.isContentEditable) {
1189
- active.blur();
1190
- }
1191
- }
1192
1012
  function injectEditorCSS(iframeDocument, editMode) {
1193
1013
  if (!iframeDocument)
1194
1014
  return;
@@ -1225,9 +1045,6 @@ function injectEditorCSS(iframeDocument, editMode) {
1225
1045
  if (iframeDocument && iframeDocument.head) {
1226
1046
  iframeDocument.head.appendChild(style);
1227
1047
  }
1228
- if (!editMode) {
1229
- disableEditingInIframeDocument(iframeDocument);
1230
- }
1231
1048
  }
1232
1049
  function resolveComponentIdForTarget(rawId, target, page) {
1233
1050
  const direct = getComponentById(rawId, page);