@parhelia/core 0.1.12882 → 0.1.12884

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 (414) hide show
  1. package/dist/agents-view/AgentsSidebar.js +1 -1
  2. package/dist/agents-view/AgentsSidebar.js.map +1 -1
  3. package/dist/agents-view/AgentsTitlebar.d.ts +1 -1
  4. package/dist/agents-view/AgentsTitlebar.js +3 -6
  5. package/dist/agents-view/AgentsTitlebar.js.map +1 -1
  6. package/dist/agents-view/AgentsView.d.ts +2 -2
  7. package/dist/agents-view/AgentsView.js +2 -2
  8. package/dist/agents-view/AgentsView.js.map +1 -1
  9. package/dist/agents-view/AgentsWorkspaceView.js +1 -12
  10. package/dist/agents-view/AgentsWorkspaceView.js.map +1 -1
  11. package/dist/agents-view/CreateAgentView.d.ts +1 -1
  12. package/dist/agents-view/CreateAgentView.js +1 -1
  13. package/dist/agents-view/DateAgentsGroup.js +12 -1
  14. package/dist/agents-view/DateAgentsGroup.js.map +1 -1
  15. package/dist/agents-view/ProfileAgentsGroup.js +16 -4
  16. package/dist/agents-view/ProfileAgentsGroup.js.map +1 -1
  17. package/dist/components/ui/card.d.ts +3 -1
  18. package/dist/components/ui/card.js +2 -2
  19. package/dist/components/ui/card.js.map +1 -1
  20. package/dist/components/ui/checkbox.js +1 -1
  21. package/dist/components/ui/checkbox.js.map +1 -1
  22. package/dist/components/ui/context-menu.d.ts +2 -1
  23. package/dist/components/ui/context-menu.js +6 -3
  24. package/dist/components/ui/context-menu.js.map +1 -1
  25. package/dist/components/ui/input.js +2 -2
  26. package/dist/components/ui/input.js.map +1 -1
  27. package/dist/components/ui/select.js +1 -1
  28. package/dist/components/ui/select.js.map +1 -1
  29. package/dist/components/ui/textarea.js +2 -2
  30. package/dist/components/ui/textarea.js.map +1 -1
  31. package/dist/config/config.js +107 -12
  32. package/dist/config/config.js.map +1 -1
  33. package/dist/editor/ContextMenu.d.ts +1 -0
  34. package/dist/editor/ContextMenu.js +4 -4
  35. package/dist/editor/ContextMenu.js.map +1 -1
  36. package/dist/editor/FieldActionsOverlay.d.ts +0 -1
  37. package/dist/editor/FieldActionsOverlay.js +1 -45
  38. package/dist/editor/FieldActionsOverlay.js.map +1 -1
  39. package/dist/editor/FieldHistory.d.ts +2 -1
  40. package/dist/editor/FieldHistory.js +13 -12
  41. package/dist/editor/FieldHistory.js.map +1 -1
  42. package/dist/editor/FieldListField.d.ts +1 -1
  43. package/dist/editor/FieldListField.js +24 -36
  44. package/dist/editor/FieldListField.js.map +1 -1
  45. package/dist/editor/ImageEditor.d.ts +6 -1
  46. package/dist/editor/ImageEditor.js +19 -3
  47. package/dist/editor/ImageEditor.js.map +1 -1
  48. package/dist/editor/LinkEditorDialog.d.ts +9 -2
  49. package/dist/editor/LinkEditorDialog.js +174 -70
  50. package/dist/editor/LinkEditorDialog.js.map +1 -1
  51. package/dist/editor/MainLayout.js +49 -6
  52. package/dist/editor/MainLayout.js.map +1 -1
  53. package/dist/editor/MobileLayout.js +33 -1
  54. package/dist/editor/MobileLayout.js.map +1 -1
  55. package/dist/editor/PictureCropper.js +45 -28
  56. package/dist/editor/PictureCropper.js.map +1 -1
  57. package/dist/editor/PictureEditor.d.ts +2 -1
  58. package/dist/editor/PictureEditor.js +5 -14
  59. package/dist/editor/PictureEditor.js.map +1 -1
  60. package/dist/editor/ai/AgentProfileSelector.js +7 -7
  61. package/dist/editor/ai/AgentProfileSelector.js.map +1 -1
  62. package/dist/editor/ai/Agents.js +20 -6
  63. package/dist/editor/ai/Agents.js.map +1 -1
  64. package/dist/editor/ai/GuidanceOverlay.js +1 -11
  65. package/dist/editor/ai/GuidanceOverlay.js.map +1 -1
  66. package/dist/editor/ai/InlineAiDialog.d.ts +1 -0
  67. package/dist/editor/ai/InlineAiDialog.js +254 -202
  68. package/dist/editor/ai/InlineAiDialog.js.map +1 -1
  69. package/dist/editor/ai/InlineAiTextEditTooltip.d.ts +8 -0
  70. package/dist/editor/ai/InlineAiTextEditTooltip.js +10 -0
  71. package/dist/editor/ai/InlineAiTextEditTooltip.js.map +1 -0
  72. package/dist/editor/ai/InlineAiTrigger.js +158 -31
  73. package/dist/editor/ai/InlineAiTrigger.js.map +1 -1
  74. package/dist/editor/ai/dialogs/capturePageDom.js +66 -36
  75. package/dist/editor/ai/dialogs/capturePageDom.js.map +1 -1
  76. package/dist/editor/ai/dialogs/capturePageScreenshot.js +281 -162
  77. package/dist/editor/ai/dialogs/capturePageScreenshot.js.map +1 -1
  78. package/dist/editor/ai/inlineAiTextEditLabels.d.ts +2 -0
  79. package/dist/editor/ai/inlineAiTextEditLabels.js +8 -0
  80. package/dist/editor/ai/inlineAiTextEditLabels.js.map +1 -0
  81. package/dist/editor/ai/prepareInlineAiTextSelection.d.ts +5 -0
  82. package/dist/editor/ai/prepareInlineAiTextSelection.js +86 -0
  83. package/dist/editor/ai/prepareInlineAiTextSelection.js.map +1 -0
  84. package/dist/editor/ai/terminal/agentSessionState.d.ts +3 -0
  85. package/dist/editor/ai/terminal/agentSessionState.js +3 -1
  86. package/dist/editor/ai/terminal/agentSessionState.js.map +1 -1
  87. package/dist/editor/ai/terminal/agentStartRequest.d.ts +2 -1
  88. package/dist/editor/ai/terminal/agentStartRequest.js +2 -1
  89. package/dist/editor/ai/terminal/agentStartRequest.js.map +1 -1
  90. package/dist/editor/ai/terminal/components/AgentCostDisplay.js +1 -1
  91. package/dist/editor/ai/terminal/components/AgentCostDisplay.js.map +1 -1
  92. package/dist/editor/ai/terminal/components/AgentDocumentList.d.ts +7 -0
  93. package/dist/editor/ai/terminal/components/AgentDocumentList.js +55 -13
  94. package/dist/editor/ai/terminal/components/AgentDocumentList.js.map +1 -1
  95. package/dist/editor/ai/terminal/components/AgentEditHistoryButton.d.ts +5 -0
  96. package/dist/editor/ai/terminal/components/AgentEditHistoryButton.js +12 -0
  97. package/dist/editor/ai/terminal/components/AgentEditHistoryButton.js.map +1 -0
  98. package/dist/editor/ai/terminal/components/AgentFullPromptControls.d.ts +3 -1
  99. package/dist/editor/ai/terminal/components/AgentFullPromptControls.js +22 -14
  100. package/dist/editor/ai/terminal/components/AgentFullPromptControls.js.map +1 -1
  101. package/dist/editor/ai/terminal/components/AgentModeSelector.js +4 -4
  102. package/dist/editor/ai/terminal/components/AgentModeSelector.js.map +1 -1
  103. package/dist/editor/ai/terminal/components/AgentPromptActionButtons.js +4 -4
  104. package/dist/editor/ai/terminal/components/AgentPromptActionButtons.js.map +1 -1
  105. package/dist/editor/ai/terminal/components/AgentPromptComposer.js +1 -1
  106. package/dist/editor/ai/terminal/components/AgentPromptComposer.js.map +1 -1
  107. package/dist/editor/ai/terminal/components/AgentPromptInputArea.d.ts +2 -1
  108. package/dist/editor/ai/terminal/components/AgentPromptInputArea.js +8 -11
  109. package/dist/editor/ai/terminal/components/AgentPromptInputArea.js.map +1 -1
  110. package/dist/editor/ai/terminal/components/AgentPromptTrayPopovers.d.ts +1 -4
  111. package/dist/editor/ai/terminal/components/AgentPromptTrayPopovers.js +31 -14
  112. package/dist/editor/ai/terminal/components/AgentPromptTrayPopovers.js.map +1 -1
  113. package/dist/editor/ai/terminal/components/AgentSettingsPopover.js +1 -1
  114. package/dist/editor/ai/terminal/components/AgentSettingsPopover.js.map +1 -1
  115. package/dist/editor/ai/terminal/components/AgentTerminalFullLayout.d.ts +2 -1
  116. package/dist/editor/ai/terminal/components/AgentTerminalFullLayout.js +2 -4
  117. package/dist/editor/ai/terminal/components/AgentTerminalFullLayout.js.map +1 -1
  118. package/dist/editor/ai/terminal/components/AgentTerminalMessageGroups.js +1 -1
  119. package/dist/editor/ai/terminal/components/AgentTerminalMessageGroups.js.map +1 -1
  120. package/dist/editor/ai/terminal/components/AgentTerminalView.js +13 -2
  121. package/dist/editor/ai/terminal/components/AgentTerminalView.js.map +1 -1
  122. package/dist/editor/ai/terminal/components/AiResponseMessage.js +11 -9
  123. package/dist/editor/ai/terminal/components/AiResponseMessage.js.map +1 -1
  124. package/dist/editor/ai/terminal/components/ContextInfoBar.js +22 -2
  125. package/dist/editor/ai/terminal/components/ContextInfoBar.js.map +1 -1
  126. package/dist/editor/ai/terminal/components/QueuedPromptsPanel.js +37 -26
  127. package/dist/editor/ai/terminal/components/QueuedPromptsPanel.js.map +1 -1
  128. package/dist/editor/ai/terminal/components/ToolCallDisplay.js +3 -1
  129. package/dist/editor/ai/terminal/components/ToolCallDisplay.js.map +1 -1
  130. package/dist/editor/ai/terminal/components/UserMessage.d.ts +2 -1
  131. package/dist/editor/ai/terminal/components/UserMessage.js +144 -8
  132. package/dist/editor/ai/terminal/components/UserMessage.js.map +1 -1
  133. package/dist/editor/ai/terminal/useAgentPromptComposerHandlers.js +1 -1
  134. package/dist/editor/ai/terminal/useAgentPromptComposerHandlers.js.map +1 -1
  135. package/dist/editor/ai/terminal/useAgentSessionSync.d.ts +1 -0
  136. package/dist/editor/ai/terminal/useAgentSubmitHandlers.d.ts +3 -1
  137. package/dist/editor/ai/terminal/useAgentSubmitHandlers.js +9 -3
  138. package/dist/editor/ai/terminal/useAgentSubmitHandlers.js.map +1 -1
  139. package/dist/editor/ai/terminal/useAgentTerminalController.js +7 -0
  140. package/dist/editor/ai/terminal/useAgentTerminalController.js.map +1 -1
  141. package/dist/editor/ai/terminal/useAgentTerminalUiState.js +1 -1
  142. package/dist/editor/ai/terminal/useAgentTerminalUiState.js.map +1 -1
  143. package/dist/editor/ai/terminal/useAgentUserMessageSocketHandler.js +3 -1
  144. package/dist/editor/ai/terminal/useAgentUserMessageSocketHandler.js.map +1 -1
  145. package/dist/editor/ai/useActiveAgentConversation.d.ts +3 -0
  146. package/dist/editor/ai/useActiveAgentConversation.js +32 -0
  147. package/dist/editor/ai/useActiveAgentConversation.js.map +1 -0
  148. package/dist/editor/ai/useInlineAiPosition.d.ts +10 -2
  149. package/dist/editor/ai/useInlineAiPosition.js +32 -71
  150. package/dist/editor/ai/useInlineAiPosition.js.map +1 -1
  151. package/dist/editor/ai-image-editor/AiImageResultOverlay.js +30 -62
  152. package/dist/editor/ai-image-editor/AiImageResultOverlay.js.map +1 -1
  153. package/dist/editor/bridge/BridgeClient.d.ts +80 -0
  154. package/dist/editor/bridge/BridgeClient.js +417 -0
  155. package/dist/editor/bridge/BridgeClient.js.map +1 -0
  156. package/dist/editor/client/EditorShell.d.ts +5 -1
  157. package/dist/editor/client/EditorShell.js +295 -127
  158. package/dist/editor/client/EditorShell.js.map +1 -1
  159. package/dist/editor/client/editContext.d.ts +58 -5
  160. package/dist/editor/client/editContext.js.map +1 -1
  161. package/dist/editor/client/fieldModificationStore.d.ts +1 -0
  162. package/dist/editor/client/fieldModificationStore.js +7 -2
  163. package/dist/editor/client/fieldModificationStore.js.map +1 -1
  164. package/dist/editor/client/hooks/useSocketMessageHandler.js +14 -17
  165. package/dist/editor/client/hooks/useSocketMessageHandler.js.map +1 -1
  166. package/dist/editor/client/itemsRepository.d.ts +2 -0
  167. package/dist/editor/client/itemsRepository.js +18 -9
  168. package/dist/editor/client/itemsRepository.js.map +1 -1
  169. package/dist/editor/client/operations.d.ts +1 -1
  170. package/dist/editor/client/operations.js +67 -21
  171. package/dist/editor/client/operations.js.map +1 -1
  172. package/dist/editor/client/pageModelBuilder.js +24 -7
  173. package/dist/editor/client/pageModelBuilder.js.map +1 -1
  174. package/dist/editor/client/ui/EditorChrome.js +1 -1
  175. package/dist/editor/client/ui/EditorChrome.js.map +1 -1
  176. package/dist/editor/commands/componentCommands.d.ts +3 -1
  177. package/dist/editor/commands/componentCommands.js +8 -3
  178. package/dist/editor/commands/componentCommands.js.map +1 -1
  179. package/dist/editor/field-types/DateFieldEditor.js +1 -1
  180. package/dist/editor/field-types/DateFieldEditor.js.map +1 -1
  181. package/dist/editor/field-types/DateTimeFieldEditor.js +1 -1
  182. package/dist/editor/field-types/DateTimeFieldEditor.js.map +1 -1
  183. package/dist/editor/field-types/DropLinkEditor.js +1 -1
  184. package/dist/editor/field-types/DropLinkEditor.js.map +1 -1
  185. package/dist/editor/field-types/DropListEditor.js +1 -1
  186. package/dist/editor/field-types/DropListEditor.js.map +1 -1
  187. package/dist/editor/field-types/ImageFieldEditor.js +1 -1
  188. package/dist/editor/field-types/ImageFieldEditor.js.map +1 -1
  189. package/dist/editor/field-types/InternalLinkFieldEditor.js +1 -1
  190. package/dist/editor/field-types/InternalLinkFieldEditor.js.map +1 -1
  191. package/dist/editor/field-types/LinkFieldEditor.js +15 -3
  192. package/dist/editor/field-types/LinkFieldEditor.js.map +1 -1
  193. package/dist/editor/field-types/MultiLineText.js +11 -4
  194. package/dist/editor/field-types/MultiLineText.js.map +1 -1
  195. package/dist/editor/field-types/NameValueListEditor.js +1 -1
  196. package/dist/editor/field-types/NameValueListEditor.js.map +1 -1
  197. package/dist/editor/field-types/PictureFieldEditor.js +2 -2
  198. package/dist/editor/field-types/PictureFieldEditor.js.map +1 -1
  199. package/dist/editor/field-types/RawEditor.js +9 -2
  200. package/dist/editor/field-types/RawEditor.js.map +1 -1
  201. package/dist/editor/field-types/RichTextEditorComponent.js +170 -77
  202. package/dist/editor/field-types/RichTextEditorComponent.js.map +1 -1
  203. package/dist/editor/field-types/SingleLineText.js +10 -3
  204. package/dist/editor/field-types/SingleLineText.js.map +1 -1
  205. package/dist/editor/field-types/TreeListEditor.js +1 -1
  206. package/dist/editor/field-types/TreeListEditor.js.map +1 -1
  207. package/dist/editor/field-types/richtext/bridgeRichTextProfile.d.ts +21 -0
  208. package/dist/editor/field-types/richtext/bridgeRichTextProfile.js +96 -0
  209. package/dist/editor/field-types/richtext/bridgeRichTextProfile.js.map +1 -0
  210. package/dist/editor/field-types/richtext/components/ReactSlate.css +44 -6
  211. package/dist/editor/field-types/richtext/components/ReactSlate.js +191 -36
  212. package/dist/editor/field-types/richtext/components/ReactSlate.js.map +1 -1
  213. package/dist/editor/field-types/richtext/components/SimpleRichTextEditor.css +5 -2
  214. package/dist/editor/field-types/richtext/components/SimpleToolbar.js +5 -4
  215. package/dist/editor/field-types/richtext/components/SimpleToolbar.js.map +1 -1
  216. package/dist/editor/field-types/richtext/contextMenuFactory.d.ts +2 -15
  217. package/dist/editor/field-types/richtext/contextMenuFactory.js +4 -435
  218. package/dist/editor/field-types/richtext/contextMenuFactory.js.map +1 -1
  219. package/dist/editor/field-types/richtext/richTextToolbarIcons.d.ts +7 -0
  220. package/dist/editor/field-types/richtext/richTextToolbarIcons.js +49 -0
  221. package/dist/editor/field-types/richtext/richTextToolbarIcons.js.map +1 -0
  222. package/dist/editor/field-types/richtext/types.d.ts +2 -0
  223. package/dist/editor/field-types/richtext/types.js.map +1 -1
  224. package/dist/editor/field-types/richtext/utils/conversion.js +23 -2
  225. package/dist/editor/field-types/richtext/utils/conversion.js.map +1 -1
  226. package/dist/editor/field-types/useFormFieldCaretPresence.d.ts +13 -0
  227. package/dist/editor/field-types/useFormFieldCaretPresence.js +92 -0
  228. package/dist/editor/field-types/useFormFieldCaretPresence.js.map +1 -0
  229. package/dist/editor/fieldTypes.d.ts +2 -0
  230. package/dist/editor/media-selector/TreeSelector.js +15 -15
  231. package/dist/editor/media-selector/TreeSelector.js.map +1 -1
  232. package/dist/editor/menubar/PageSelector.js +8 -2
  233. package/dist/editor/menubar/PageSelector.js.map +1 -1
  234. package/dist/editor/menubar/VersionPreviewCard.js +4 -249
  235. package/dist/editor/menubar/VersionPreviewCard.js.map +1 -1
  236. package/dist/editor/menubar/toolbar-sections/EditControls.js +2 -2
  237. package/dist/editor/menubar/toolbar-sections/EditControls.js.map +1 -1
  238. package/dist/editor/menubar/toolbar-sections/ManualBrowser.js +338 -187
  239. package/dist/editor/menubar/toolbar-sections/ManualBrowser.js.map +1 -1
  240. package/dist/editor/menubar/toolbar-sections/UtilityControls.js +3 -1
  241. package/dist/editor/menubar/toolbar-sections/UtilityControls.js.map +1 -1
  242. package/dist/editor/menubar/toolbar-sections/ViewportControls.js +1 -1
  243. package/dist/editor/page-editor-chrome/BridgeInlineFormatOverlay.d.ts +8 -0
  244. package/dist/editor/page-editor-chrome/BridgeInlineFormatOverlay.js +407 -0
  245. package/dist/editor/page-editor-chrome/BridgeInlineFormatOverlay.js.map +1 -0
  246. package/dist/editor/page-editor-chrome/CommentHighlightings.d.ts +5 -2
  247. package/dist/editor/page-editor-chrome/CommentHighlightings.js +340 -215
  248. package/dist/editor/page-editor-chrome/CommentHighlightings.js.map +1 -1
  249. package/dist/editor/page-editor-chrome/FeedbackHighlightBadge.d.ts +5 -1
  250. package/dist/editor/page-editor-chrome/FeedbackHighlightBadge.js +11 -4
  251. package/dist/editor/page-editor-chrome/FeedbackHighlightBadge.js.map +1 -1
  252. package/dist/editor/page-editor-chrome/FieldActionIndicator.js +21 -13
  253. package/dist/editor/page-editor-chrome/FieldActionIndicator.js.map +1 -1
  254. package/dist/editor/page-editor-chrome/FieldEditedIndicator.js +23 -29
  255. package/dist/editor/page-editor-chrome/FieldEditedIndicator.js.map +1 -1
  256. package/dist/editor/page-editor-chrome/FrameMenu.js +110 -19
  257. package/dist/editor/page-editor-chrome/FrameMenu.js.map +1 -1
  258. package/dist/editor/page-editor-chrome/LockedFieldIndicator.d.ts +3 -2
  259. package/dist/editor/page-editor-chrome/LockedFieldIndicator.js +148 -45
  260. package/dist/editor/page-editor-chrome/LockedFieldIndicator.js.map +1 -1
  261. package/dist/editor/page-editor-chrome/PageEditorChrome.d.ts +2 -0
  262. package/dist/editor/page-editor-chrome/PageEditorChrome.js +25 -21
  263. package/dist/editor/page-editor-chrome/PageEditorChrome.js.map +1 -1
  264. package/dist/editor/page-editor-chrome/PictureEditorOverlay.js +163 -128
  265. package/dist/editor/page-editor-chrome/PictureEditorOverlay.js.map +1 -1
  266. package/dist/editor/page-editor-chrome/PlaceholderDropZone.d.ts +1 -1
  267. package/dist/editor/page-editor-chrome/PlaceholderDropZone.js +6 -3
  268. package/dist/editor/page-editor-chrome/PlaceholderDropZone.js.map +1 -1
  269. package/dist/editor/page-editor-chrome/PlaceholderDropZones.d.ts +1 -2
  270. package/dist/editor/page-editor-chrome/PlaceholderDropZones.js +83 -146
  271. package/dist/editor/page-editor-chrome/PlaceholderDropZones.js.map +1 -1
  272. package/dist/editor/page-editor-chrome/SuggestionHighlightings.d.ts +5 -2
  273. package/dist/editor/page-editor-chrome/SuggestionHighlightings.js +144 -63
  274. package/dist/editor/page-editor-chrome/SuggestionHighlightings.js.map +1 -1
  275. package/dist/editor/page-editor-chrome/VersionDiffHighlightings.d.ts +1 -2
  276. package/dist/editor/page-editor-chrome/VersionDiffHighlightings.js +101 -30
  277. package/dist/editor/page-editor-chrome/VersionDiffHighlightings.js.map +1 -1
  278. package/dist/editor/page-editor-chrome/bridgeInlineFormatToolbarLayout.d.ts +24 -0
  279. package/dist/editor/page-editor-chrome/bridgeInlineFormatToolbarLayout.js +89 -0
  280. package/dist/editor/page-editor-chrome/bridgeInlineFormatToolbarLayout.js.map +1 -0
  281. package/dist/editor/page-editor-chrome/overlay/IframeOverlayProvider.d.ts +10 -1
  282. package/dist/editor/page-editor-chrome/overlay/IframeOverlayProvider.js +105 -122
  283. package/dist/editor/page-editor-chrome/overlay/IframeOverlayProvider.js.map +1 -1
  284. package/dist/editor/page-editor-chrome/overlay/geometry.d.ts +11 -4
  285. package/dist/editor/page-editor-chrome/overlay/geometry.js +139 -36
  286. package/dist/editor/page-editor-chrome/overlay/geometry.js.map +1 -1
  287. package/dist/editor/page-editor-chrome/useBridgeInlineEditing.d.ts +26 -0
  288. package/dist/editor/page-editor-chrome/useBridgeInlineEditing.js +228 -0
  289. package/dist/editor/page-editor-chrome/useBridgeInlineEditing.js.map +1 -0
  290. package/dist/editor/page-viewer/EditorForm.js +17 -1
  291. package/dist/editor/page-viewer/EditorForm.js.map +1 -1
  292. package/dist/editor/page-viewer/MiniMap.d.ts +2 -2
  293. package/dist/editor/page-viewer/MiniMap.js +176 -364
  294. package/dist/editor/page-viewer/MiniMap.js.map +1 -1
  295. package/dist/editor/page-viewer/PageViewer.js +63 -17
  296. package/dist/editor/page-viewer/PageViewer.js.map +1 -1
  297. package/dist/editor/page-viewer/PageViewerFrame.d.ts +0 -5
  298. package/dist/editor/page-viewer/PageViewerFrame.js +1685 -1512
  299. package/dist/editor/page-viewer/PageViewerFrame.js.map +1 -1
  300. package/dist/editor/page-viewer/bridgeFieldPatch.d.ts +20 -0
  301. package/dist/editor/page-viewer/bridgeFieldPatch.js +33 -0
  302. package/dist/editor/page-viewer/bridgeFieldPatch.js.map +1 -0
  303. package/dist/editor/page-viewer/pageViewContext.d.ts +32 -0
  304. package/dist/editor/page-viewer/pageViewContext.js +37 -6
  305. package/dist/editor/page-viewer/pageViewContext.js.map +1 -1
  306. package/dist/editor/reviews/Comment.d.ts +2 -1
  307. package/dist/editor/reviews/Comment.js +10 -5
  308. package/dist/editor/reviews/Comment.js.map +1 -1
  309. package/dist/editor/reviews/CommentDisplayPopover.js +2 -1
  310. package/dist/editor/reviews/CommentDisplayPopover.js.map +1 -1
  311. package/dist/editor/reviews/CommentEditor.d.ts +1 -0
  312. package/dist/editor/reviews/CommentEditor.js +3 -2
  313. package/dist/editor/reviews/CommentEditor.js.map +1 -1
  314. package/dist/editor/reviews/CommentPopover.js +69 -10
  315. package/dist/editor/reviews/CommentPopover.js.map +1 -1
  316. package/dist/editor/reviews/CommentView.js +24 -4
  317. package/dist/editor/reviews/CommentView.js.map +1 -1
  318. package/dist/editor/reviews/Comments.d.ts +0 -2
  319. package/dist/editor/reviews/Comments.js +31 -31
  320. package/dist/editor/reviews/Comments.js.map +1 -1
  321. package/dist/editor/reviews/FeedbackCard.d.ts +4 -2
  322. package/dist/editor/reviews/FeedbackCard.js +8 -10
  323. package/dist/editor/reviews/FeedbackCard.js.map +1 -1
  324. package/dist/editor/reviews/SuggestedEdit.js +4 -6
  325. package/dist/editor/reviews/SuggestedEdit.js.map +1 -1
  326. package/dist/editor/reviews/SuggestionCommentThread.js +3 -3
  327. package/dist/editor/reviews/SuggestionCommentThread.js.map +1 -1
  328. package/dist/editor/reviews/SuggestionDisplayPopover.js +3 -2
  329. package/dist/editor/reviews/SuggestionDisplayPopover.js.map +1 -1
  330. package/dist/editor/reviews/commentAi.js +96 -27
  331. package/dist/editor/reviews/commentAi.js.map +1 -1
  332. package/dist/editor/reviews/commentTransientSelection.d.ts +23 -0
  333. package/dist/editor/reviews/commentTransientSelection.js +7 -0
  334. package/dist/editor/reviews/commentTransientSelection.js.map +1 -0
  335. package/dist/editor/reviews/feedbackOrdering.d.ts +5 -0
  336. package/dist/editor/reviews/feedbackOrdering.js +27 -0
  337. package/dist/editor/reviews/feedbackOrdering.js.map +1 -0
  338. package/dist/editor/reviews/feedbackSelection.js +32 -4
  339. package/dist/editor/reviews/feedbackSelection.js.map +1 -1
  340. package/dist/editor/reviews/suggestedEditState.d.ts +12 -0
  341. package/dist/editor/reviews/suggestedEditState.js +90 -0
  342. package/dist/editor/reviews/suggestedEditState.js.map +1 -0
  343. package/dist/editor/reviews/suggestionDisplayValue.d.ts +43 -0
  344. package/dist/editor/reviews/suggestionDisplayValue.js +93 -0
  345. package/dist/editor/reviews/suggestionDisplayValue.js.map +1 -0
  346. package/dist/editor/services/agentService.d.ts +15 -0
  347. package/dist/editor/services/agentService.js +11 -1
  348. package/dist/editor/services/agentService.js.map +1 -1
  349. package/dist/editor/services/reviewsService.d.ts +2 -2
  350. package/dist/editor/services/reviewsService.js.map +1 -1
  351. package/dist/editor/settings/SettingsView.js +2 -2
  352. package/dist/editor/settings/SettingsView.js.map +1 -1
  353. package/dist/editor/settings/panels/ProjectTemplatesPanel.js +1 -1
  354. package/dist/editor/settings/panels/ProjectTemplatesPanel.js.map +1 -1
  355. package/dist/editor/settings/panels/ProvidersPanel.js +2 -3
  356. package/dist/editor/settings/panels/ProvidersPanel.js.map +1 -1
  357. package/dist/editor/sidebar/MorePanelsButton.js +1 -1
  358. package/dist/editor/sidebar/MorePanelsButton.js.map +1 -1
  359. package/dist/editor/sidebar/Validation.js +4 -1
  360. package/dist/editor/sidebar/Validation.js.map +1 -1
  361. package/dist/editor/sidebar/Workbox.js +1 -1
  362. package/dist/editor/sidebar/Workbox.js.map +1 -1
  363. package/dist/editor/template-wizard/TemplateStructureInlineEditor.js +1 -1
  364. package/dist/editor/template-wizard/TemplateStructureInlineEditor.js.map +1 -1
  365. package/dist/editor/ui/IconSelectorDialog.js +1 -1
  366. package/dist/editor/ui/IconSelectorDialog.js.map +1 -1
  367. package/dist/editor/ui/SimpleIconButton.d.ts +2 -2
  368. package/dist/editor/ui/SimpleIconButton.js +7 -1
  369. package/dist/editor/ui/SimpleIconButton.js.map +1 -1
  370. package/dist/editor/ui/Splitter.d.ts +1 -0
  371. package/dist/editor/ui/Splitter.js +12 -2
  372. package/dist/editor/ui/Splitter.js.map +1 -1
  373. package/dist/editor/ui/animationSettle.d.ts +32 -0
  374. package/dist/editor/ui/animationSettle.js +85 -0
  375. package/dist/editor/ui/animationSettle.js.map +1 -0
  376. package/dist/editor/utils/expandSelectionAtCaret.d.ts +15 -0
  377. package/dist/editor/utils/expandSelectionAtCaret.js +183 -0
  378. package/dist/editor/utils/expandSelectionAtCaret.js.map +1 -0
  379. package/dist/editor/utils.d.ts +1 -17
  380. package/dist/editor/utils.js +0 -143
  381. package/dist/editor/utils.js.map +1 -1
  382. package/dist/editor/version-diff/versionDiffTargets.d.ts +3 -8
  383. package/dist/editor/version-diff/versionDiffTargets.js +37 -94
  384. package/dist/editor/version-diff/versionDiffTargets.js.map +1 -1
  385. package/dist/revision.d.ts +2 -2
  386. package/dist/revision.js +2 -2
  387. package/dist/splash-screen/ModernSplashScreen.js +11 -3
  388. package/dist/splash-screen/ModernSplashScreen.js.map +1 -1
  389. package/dist/splash-screen/NewPage.js +7 -5
  390. package/dist/splash-screen/NewPage.js.map +1 -1
  391. package/dist/splash-screen/OpenPage.js +5 -3
  392. package/dist/splash-screen/OpenPage.js.map +1 -1
  393. package/dist/splash-screen/RecentPages.js +3 -3
  394. package/dist/splash-screen/RecentPages.js.map +1 -1
  395. package/dist/task-board/components/TaskDetailPanel.js +2 -1
  396. package/dist/task-board/components/TaskDetailPanel.js.map +1 -1
  397. package/dist/task-board/views/DependencyGraphView.d.ts +42 -1
  398. package/dist/task-board/views/DependencyGraphView.js +94 -0
  399. package/dist/task-board/views/DependencyGraphView.js.map +1 -1
  400. package/dist/types.d.ts +1 -0
  401. package/package.json +2 -1
  402. package/styles.css +96 -0
  403. package/dist/editor/page-editor-chrome/InlineEditor.d.ts +0 -7
  404. package/dist/editor/page-editor-chrome/InlineEditor.js +0 -1719
  405. package/dist/editor/page-editor-chrome/InlineEditor.js.map +0 -1
  406. package/dist/editor/page-editor-chrome/overlay/iframeAccess.d.ts +0 -2
  407. package/dist/editor/page-editor-chrome/overlay/iframeAccess.js +0 -21
  408. package/dist/editor/page-editor-chrome/overlay/iframeAccess.js.map +0 -1
  409. package/dist/editor/page-editor-chrome/useInlineAICompletion.d.ts +0 -7
  410. package/dist/editor/page-editor-chrome/useInlineAICompletion.js +0 -758
  411. package/dist/editor/page-editor-chrome/useInlineAICompletion.js.map +0 -1
  412. package/dist/editor/page-viewer/pageModelSkeletonBuilder.d.ts +0 -3
  413. package/dist/editor/page-viewer/pageModelSkeletonBuilder.js +0 -796
  414. package/dist/editor/page-viewer/pageModelSkeletonBuilder.js.map +0 -1
@@ -1,18 +1,22 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useCallback, useState } from "react";
2
+ import { useCallback, useEffect, useState } from "react";
3
3
  import { useEditContext, useEditContextRef } from "./client/editContext";
4
4
  import { ImageEditButton } from "./ImageEditButton";
5
5
  import { Zap, Image as ImageIcon, Sparkles } from "lucide-react";
6
6
  import { AiImageEditorDialog } from "./ai-image-editor";
7
7
  import { LicenseFeatures, useFeature } from "../licensing";
8
- export function ImageEditor({ field, style, }) {
8
+ export function ImageEditor({ field, style, forwardScrollevents, isPageEditor, onContextMenu, onDialogOpenChange, onForwardWheel, }) {
9
9
  const editContext = useEditContext();
10
10
  const editContextRef = useEditContextRef();
11
11
  const canUseAi = useFeature(LicenseFeatures.AI);
12
12
  //const dialogContext = useDialog();
13
13
  // AI Image Editor state
14
14
  const [showAiImageEditor, setShowAiImageEditor] = useState(false);
15
+ const [isMenuOpen, setIsMenuOpen] = useState(false);
15
16
  const [aiEditOriginalRawValue, setAiEditOriginalRawValue] = useState(null);
17
+ useEffect(() => {
18
+ onDialogOpenChange?.(showAiImageEditor || isMenuOpen);
19
+ }, [showAiImageEditor, isMenuOpen, onDialogOpenChange]);
16
20
  if (!field || !editContext)
17
21
  return null;
18
22
  const imageSelected = useCallback(async (imageId) => {
@@ -113,7 +117,19 @@ export function ImageEditor({ field, style, }) {
113
117
  },
114
118
  })) || []),
115
119
  ];
116
- return (_jsxs("div", { className: "absolute inset-0 flex items-center justify-center", style: style, "data-testid": "select-media", children: [getImageSrc() && (_jsx("img", { src: getImageSrc(), alt: getImageAlt(), className: "max-h-full max-w-full object-contain" })), _jsx(ImageEditButton, { actions: menuActions, compact: false, buttonText: "Edit", testId: "select-media-button" }), canUseAi && showAiImageEditor && (_jsx(AiImageEditorDialog, { open: showAiImageEditor, onClose: () => {
120
+ return (_jsxs("div", { className: "absolute inset-0 flex items-center justify-center", style: style, "data-testid": "select-media", onMouseDown: (e) => {
121
+ if (!isPageEditor)
122
+ return;
123
+ const itemId = field.descriptor.item?.id;
124
+ if (itemId) {
125
+ editContext?.select([itemId]);
126
+ }
127
+ e.stopPropagation();
128
+ }, onContextMenu: onContextMenu, onWheel: (e) => {
129
+ if (!forwardScrollevents)
130
+ return;
131
+ onForwardWheel?.(e);
132
+ }, children: [getImageSrc() && (_jsx("img", { src: getImageSrc(), alt: getImageAlt(), className: "max-h-full max-w-full object-contain" })), _jsx(ImageEditButton, { actions: menuActions, compact: false, buttonText: "Edit", testId: "select-media-button", onOpenChange: setIsMenuOpen }), canUseAi && showAiImageEditor && (_jsx(AiImageEditorDialog, { open: showAiImageEditor, onClose: () => {
117
133
  setShowAiImageEditor(false);
118
134
  setAiEditOriginalRawValue(null);
119
135
  }, onComplete: handleAiEditComplete, fieldDescriptor: field.descriptor, originalRawValue: aiEditOriginalRawValue || "", currentImageSrc: getImageSrc() || undefined }))] }));
@@ -1 +1 @@
1
- {"version":3,"file":"ImageEditor.js","sourceRoot":"","sources":["../../src/editor/ImageEditor.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ImageEditor.js","sourceRoot":"","sources":["../../src/editor/ImageEditor.tsx"],"names":[],"mappings":"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"}
@@ -9,10 +9,17 @@ export type Link = {
9
9
  targetItemName?: string;
10
10
  originalHref?: string;
11
11
  text?: string;
12
+ title?: string;
13
+ nofollow?: boolean;
12
14
  };
13
- export declare function LinkEditorDialog({ linkValue, onCancel, onOk, showText, }: {
15
+ export type LinkDialogPosition = {
16
+ x: number;
17
+ y: number;
18
+ };
19
+ export declare function LinkEditorDialog({ linkValue, onCancel, onOk, showText, position, }: {
14
20
  linkValue: Link;
15
21
  onOk: (link: Link) => void;
16
22
  onCancel: () => void;
17
23
  showText?: boolean;
18
- }): import("react/jsx-runtime").JSX.Element | null;
24
+ position?: LinkDialogPosition;
25
+ }): import("react").ReactPortal | null;
@@ -1,32 +1,62 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import { useEffect, useRef, useState } from "react";
3
- import { Dialog, DialogContent } from "../components/ui/dialog";
4
- import { StyledDialogTitle } from "../components/ui/styled-dialog-title";
3
+ import { createPortal } from "react-dom";
5
4
  import { Input } from "../components/ui/input";
6
5
  import { Button } from "../components/ui/button";
7
- import { Select } from "../components/ui/select";
6
+ import { Switch } from "../components/ui/switch";
7
+ import { CloseButton } from "../components/ui/close-button";
8
8
  import ItemSearch from "./ui/ItemSearch";
9
9
  import { ScrollingContentTree } from "./ScrollingContentTree";
10
10
  import { useEditContext } from "./client/editContext";
11
11
  import { normalizeUrl } from "./utils/urlUtils";
12
12
  import DialogButtons from "./ui/DialogButtons";
13
- import { Link2 } from "lucide-react";
13
+ import { Globe2, Link2, Mail, Phone } from "lucide-react";
14
+ import { cn } from "../lib/utils";
14
15
  function normalizeItemId(id) {
15
16
  if (!id)
16
17
  return undefined;
17
18
  return id.toLowerCase().replace(/[{}]/g, "");
18
19
  }
19
- export function LinkEditorDialog({ linkValue, onCancel, onOk, showText, }) {
20
- const [url, setUrl] = useState();
20
+ function getInitialLinkType(link) {
21
+ if (link.type === "internal")
22
+ return "internal";
23
+ if (link.type === "email" || link.url?.startsWith("mailto:"))
24
+ return "email";
25
+ if (link.type === "phone" || link.url?.startsWith("tel:"))
26
+ return "phone";
27
+ return "external";
28
+ }
29
+ function stripLinkScheme(value, scheme) {
30
+ if (!value)
31
+ return "";
32
+ const prefix = `${scheme}:`;
33
+ return value.startsWith(prefix) ? value.slice(prefix.length) : value;
34
+ }
35
+ function formatSpecialLinkUrl(type, value) {
36
+ const trimmed = value.trim();
37
+ if (!trimmed)
38
+ return "";
39
+ if (type === "email") {
40
+ return trimmed.startsWith("mailto:") ? trimmed : `mailto:${trimmed}`;
41
+ }
42
+ return trimmed.startsWith("tel:") ? trimmed : `tel:${trimmed}`;
43
+ }
44
+ export function LinkEditorDialog({ linkValue, onCancel, onOk, showText, position, }) {
45
+ const [url, setUrl] = useState("");
46
+ const [emailAddress, setEmailAddress] = useState("");
47
+ const [phoneNumber, setPhoneNumber] = useState("");
21
48
  const [targetWindow, setTargetWindow] = useState();
22
49
  const [customTarget, setCustomTarget] = useState();
23
50
  const [queryString, setQueryString] = useState();
24
51
  const [text, setText] = useState();
25
- const [activeTabIndex, setActiveTabIndex] = useState(0);
52
+ const [title, setTitle] = useState("");
53
+ const [nofollow, setNofollow] = useState(false);
54
+ const [activeLinkType, setActiveLinkType] = useState("internal");
26
55
  const [selectedItemId, setSelectedItemId] = useState("");
27
56
  const [hoveredItemId, setHoveredItemId] = useState();
28
57
  const editContext = useEditContext();
29
58
  const lastInitKeyRef = useRef(null);
59
+ const popoverRef = useRef(null);
30
60
  useEffect(() => {
31
61
  const initKey = [
32
62
  linkValue.type,
@@ -35,40 +65,63 @@ export function LinkEditorDialog({ linkValue, onCancel, onOk, showText, }) {
35
65
  linkValue.target ?? "",
36
66
  linkValue.queryString ?? "",
37
67
  linkValue.text ?? "",
68
+ linkValue.title ?? "",
69
+ linkValue.nofollow ? "nofollow" : "",
38
70
  linkValue.originalHref ?? "",
39
71
  ].join("|");
40
72
  if (lastInitKeyRef.current === initKey)
41
73
  return;
42
74
  lastInitKeyRef.current = initKey;
43
- setUrl(linkValue.url);
75
+ const initialLinkType = getInitialLinkType(linkValue);
76
+ setUrl(linkValue.url ?? "");
77
+ setEmailAddress(stripLinkScheme(linkValue.url, "mailto"));
78
+ setPhoneNumber(stripLinkScheme(linkValue.url, "tel"));
44
79
  setTargetWindow(linkValue.target ?? "");
45
- if (linkValue.type == "external")
46
- setActiveTabIndex(1);
47
- else
48
- setActiveTabIndex(0);
49
- if (linkValue.target && linkValue.target != "_blank") {
80
+ setCustomTarget(undefined);
81
+ setActiveLinkType(initialLinkType);
82
+ if (linkValue.target &&
83
+ linkValue.target != "_blank" &&
84
+ linkValue.target != "_self") {
50
85
  setTargetWindow("custom");
51
86
  setCustomTarget(linkValue.target);
52
87
  }
53
- if (linkValue.itemId)
54
- setSelectedItemId(linkValue.itemId);
55
- if (linkValue.queryString)
56
- setQueryString(linkValue.queryString);
57
- if (linkValue.text)
58
- setText(linkValue.text);
88
+ setSelectedItemId(linkValue.itemId ?? "");
89
+ setQueryString(linkValue.queryString);
90
+ setText(linkValue.text);
91
+ setTitle(linkValue.title ?? "");
92
+ setNofollow(!!linkValue.nofollow);
59
93
  }, [linkValue]);
60
- const targetWindows = [
61
- { name: "Active browser", code: "" },
62
- { name: "New browser", code: "_blank" },
63
- { name: "Custom", code: "custom" },
64
- ];
65
- const targetWindowOptions = targetWindows.map((x) => ({
66
- value: x.code,
67
- label: x.name,
68
- }));
94
+ useEffect(() => {
95
+ // Trigger a resize event to recalculate layouts when dialog opens
96
+ window.dispatchEvent(new Event("resize"));
97
+ }, []);
98
+ useEffect(() => {
99
+ const handlePointerDown = (event) => {
100
+ const target = event.target;
101
+ if (target instanceof Node &&
102
+ popoverRef.current &&
103
+ !popoverRef.current.contains(target)) {
104
+ onCancel();
105
+ }
106
+ };
107
+ const handleKeyDown = (event) => {
108
+ if (event.key === "Escape") {
109
+ event.preventDefault();
110
+ onCancel();
111
+ }
112
+ };
113
+ document.addEventListener("pointerdown", handlePointerDown, true);
114
+ document.addEventListener("keydown", handleKeyDown, true);
115
+ return () => {
116
+ document.removeEventListener("pointerdown", handlePointerDown, true);
117
+ document.removeEventListener("keydown", handleKeyDown, true);
118
+ };
119
+ }, [onCancel]);
69
120
  function getTargetWindow() {
70
121
  if (targetWindow == "custom")
71
122
  return customTarget;
123
+ if (targetWindow === "_self")
124
+ return "";
72
125
  return targetWindow;
73
126
  }
74
127
  if (!editContext)
@@ -77,54 +130,105 @@ export function LinkEditorDialog({ linkValue, onCancel, onOk, showText, }) {
77
130
  const currentItemExpansionId = normalizeItemId(editContext.currentItemDescriptor?.id);
78
131
  const expandedItemId = selectedExpansionId || currentItemExpansionId;
79
132
  const linkTypeOptions = [
80
- { value: "internal", label: "Internal" },
81
- { value: "external", label: "External" },
133
+ { value: "internal", label: "Internal", icon: Link2 },
134
+ { value: "external", label: "External", icon: Globe2 },
135
+ { value: "email", label: "E-Mail", icon: Mail },
136
+ { value: "phone", label: "Phone", icon: Phone },
82
137
  ];
83
- const internalContent = (_jsxs("div", { className: "flex h-full flex-col overflow-hidden", "data-testid": "internal-tab", children: [_jsx("div", { className: "border-border-default bg-neutral-grey-5/30 border-b p-2", children: _jsx(ItemSearch, { resultClassName: "badge-pad", itemSelected: (item) => {
138
+ // Tab targets and nofollow only apply to page/url links, not mailto:/tel:.
139
+ const supportsTargetOptions = activeLinkType === "internal" || activeLinkType === "external";
140
+ const showTextExtras = showText && (_jsxs("div", { className: "grid grid-cols-2 gap-2", children: [_jsx(Input, { value: text || "", onChange: (e) => setText(e.target.value), className: "h-9 bg-white text-xs", placeholder: "Link description", "aria-label": "Link description", "data-testid": "link-description" }), _jsx(Input, { value: queryString || "", onChange: (e) => setQueryString(e.target.value), className: "h-9 bg-white text-xs", placeholder: "Query string", "aria-label": "Query string", "data-testid": "link-query-string" })] }));
141
+ const linkOptionsContent = (_jsxs("div", { className: "flex flex-col gap-3", children: [_jsx(Input, { value: title, onChange: (e) => setTitle(e.target.value), className: "h-9 bg-white text-xs", placeholder: "Link title", "aria-label": "Link title", "data-testid": "link-title" }), supportsTargetOptions && (_jsxs(_Fragment, { children: [_jsxs("div", { className: "flex items-center justify-between gap-3", children: [_jsx("span", { className: "text-neutral-grey-100 text-xs font-semibold", children: "Open in new Tab" }), _jsx(Switch, { checked: targetWindow === "_blank", onCheckedChange: (checked) =>
142
+ // Toggling off restores a pre-existing custom frame target
143
+ // instead of discarding it.
144
+ setTargetWindow(checked ? "_blank" : customTarget ? "custom" : ""), "aria-label": "Open in new Tab", "data-testid": "link-open-new-tab" })] }), _jsxs("div", { className: "flex items-start justify-between gap-3", children: [_jsxs("div", { className: "flex min-w-0 flex-col", children: [_jsx("span", { className: "text-neutral-grey-100 text-xs font-semibold", children: "Make link no follow" }), _jsx("span", { className: "text-neutral-grey-50 text-xs", children: "Searchengines will ignore a nofollow link." })] }), _jsx(Switch, { checked: nofollow, onCheckedChange: setNofollow, "aria-label": "Make link no follow", "data-testid": "link-nofollow", className: "mt-0.5" })] })] }))] }));
145
+ const internalContent = (_jsxs("div", { className: "flex h-full flex-col overflow-hidden", "data-testid": "internal-tab", children: [_jsx("div", { className: "shrink-0 bg-white px-3 pb-2 [&_[data-slot=input]]:h-9 [&_[data-slot=input]]:text-xs", children: _jsx(ItemSearch, { resultClassName: "badge-pad", placeholder: "Find page", itemSelected: (item) => {
84
146
  setSelectedItemId(item.id);
85
147
  }, setHoveredItem: (item) => ((item) => {
86
148
  if (!item)
87
149
  return;
88
150
  setHoveredItemId(item.id);
89
- })(item) }) }), _jsx("div", { className: "relative min-h-0 flex-1", children: _jsx("div", { className: "absolute inset-0 overflow-auto p-1", children: _jsx(ScrollingContentTree, { selectedItemId: hoveredItemId || selectedItemId, expandedItemId: expandedItemId, onSelectionChange: (selection) => {
151
+ })(item) }) }), _jsx("div", { className: "relative min-h-0 flex-1", children: _jsx("div", { className: "absolute inset-0 overflow-auto px-2 py-1", children: _jsx(ScrollingContentTree, { selectedItemId: hoveredItemId || selectedItemId, expandedItemId: expandedItemId, onSelectionChange: (selection) => {
90
152
  setSelectedItemId(selection[0]?.id || "");
91
153
  } }) }) })] }));
92
- const externalContent = (_jsxs("div", { className: "flex flex-col gap-2 p-3", "data-testid": "external-tab", children: [_jsx("label", { className: "block text-xs", htmlFor: "link-url-external", children: "External Url" }), _jsx(Input, { id: "link-url-external", value: url || "", onChange: (e) => {
93
- setUrl(e.target.value);
94
- }, onBlur: (e) => {
95
- const normalizedUrl = normalizeUrl(e.target.value.trim());
96
- setUrl(normalizedUrl);
97
- }, className: "w-full text-sm", "data-testid": "link-url-external" })] }));
98
- useEffect(() => {
99
- // Trigger a resize event to recalculate layouts when dialog opens
100
- window.dispatchEvent(new Event("resize"));
101
- }, []);
102
- return (_jsx(Dialog, { open: true, onOpenChange: (open) => {
103
- if (!open)
104
- onCancel();
105
- }, "data-testid": "link-editor-dialog", children: _jsxs(DialogContent, { className: "flex flex-col overflow-hidden border-none p-0 shadow-2xl", style: {
106
- width: "80vw",
107
- maxWidth: "900px",
108
- height: "70vh",
109
- maxHeight: "750px",
110
- }, children: [_jsx(StyledDialogTitle, { icon: _jsx(Link2, { strokeWidth: 1 }), title: "Select link target" }), _jsxs("div", { className: "flex min-h-0 flex-1 flex-col overflow-hidden", children: [_jsx("div", { className: "flex min-h-0 flex-1 flex-col overflow-y-auto px-6 pb-4", children: _jsxs("div", { className: "flex min-h-0 flex-1 flex-col gap-6 pt-6", children: [linkValue && (_jsx("div", { className: "flex items-center gap-8", children: linkTypeOptions.map((option) => (_jsxs("label", { className: "flex cursor-pointer items-center gap-2.5", children: [_jsx("input", { type: "radio", name: "link-type", value: option.value, checked: activeTabIndex ===
111
- (option.value === "internal" ? 0 : 1), onClick: () => {
112
- setActiveTabIndex(option.value === "internal" ? 0 : 1);
113
- }, onChange: () => { }, className: "accent-primary h-4 w-4 cursor-pointer", "data-testid": `link-type-${option.value}` }), _jsx("span", { className: "text-neutral-grey-100 text-sm font-medium", children: option.label })] }, option.value))) })), _jsxs("div", { className: "flex min-h-0 flex-1 flex-col gap-4", children: [_jsx("div", { className: `overflow-hidden bg-white ${activeTabIndex === 0
114
- ? "min-h-[320px] flex-1"
115
- : "border-border-default min-h-[110px] rounded-xl border shadow-sm"}`, children: activeTabIndex === 0 ? internalContent : externalContent }), _jsxs("div", { className: "grid grid-cols-2 gap-6", children: [_jsxs("div", { className: "flex flex-col gap-4", children: [showText && (_jsxs("div", { className: "flex flex-col gap-2", children: [_jsx("label", { className: "text-neutral-grey-100 text-sm font-semibold", children: "Link description" }), _jsx(Input, { value: text || "", onChange: (e) => setText(e.target.value), className: "bg-white", placeholder: "Enter link text..." })] })), _jsxs("div", { className: "flex flex-col gap-2", children: [_jsx("label", { className: "text-neutral-grey-100 text-sm font-semibold", children: "Query String" }), _jsx(Input, { value: queryString || "", onChange: (e) => setQueryString(e.target.value), className: "bg-white", placeholder: "e.g. ?id=123" })] })] }), _jsxs("div", { className: "flex flex-col gap-4", children: [_jsxs("div", { className: "flex flex-col gap-2", children: [_jsx("label", { className: "text-neutral-grey-100 text-sm font-semibold", children: "Window" }), _jsx(Select, { value: targetWindow, onValueChange: (v) => setTargetWindow(v), options: targetWindowOptions, placeholder: "Select window", className: "bg-white" })] }), targetWindow === "custom" && (_jsxs("div", { className: "flex flex-col gap-2", children: [_jsx("label", { className: "text-neutral-grey-100 text-sm font-semibold", children: "Custom Window Name" }), _jsx(Input, { value: customTarget || "", onChange: (e) => {
116
- setCustomTarget(e.target.value);
117
- }, placeholder: "Enter window name", className: "bg-white" })] }))] })] })] })] }) }), _jsxs(DialogButtons, { hideBorder: true, className: "bg-neutral-grey-5/50", children: [_jsx(Button, { variant: "ghost", onClick: onCancel, "data-testid": "dialog-cancel", children: "Cancel" }), _jsx(Button, { onClick: () => {
118
- const isExternal = activeTabIndex === 1;
119
- onOk({
120
- url: isExternal ? normalizeUrl(url || "") : url,
121
- target: getTargetWindow(),
122
- customTarget: customTarget,
123
- itemId: selectedItemId,
124
- queryString: queryString,
125
- text: text,
126
- type: isExternal ? "external" : "internal",
127
- });
128
- }, "data-testid": "dialog-ok", className: "min-w-[100px]", children: "Ok" })] })] })] }) }));
154
+ const renderFieldContent = () => {
155
+ if (activeLinkType === "internal")
156
+ return internalContent;
157
+ const field = activeLinkType === "external"
158
+ ? {
159
+ id: "link-url-external",
160
+ label: "External URL",
161
+ placeholder: "Add url",
162
+ value: url,
163
+ testId: "link-url-external",
164
+ onChange: setUrl,
165
+ onBlur: (value) => setUrl(normalizeUrl(value.trim())),
166
+ }
167
+ : activeLinkType === "email"
168
+ ? {
169
+ id: "link-url-email",
170
+ label: "E-Mail address",
171
+ placeholder: "name@example.com",
172
+ value: emailAddress,
173
+ testId: "link-url-email",
174
+ onChange: setEmailAddress,
175
+ onBlur: (value) => setEmailAddress(value.trim()),
176
+ }
177
+ : {
178
+ id: "link-url-phone",
179
+ label: "Phone number",
180
+ placeholder: "+1 555 0100",
181
+ value: phoneNumber,
182
+ testId: "link-url-phone",
183
+ onChange: setPhoneNumber,
184
+ onBlur: (value) => setPhoneNumber(value.trim()),
185
+ };
186
+ return (_jsxs("div", { className: "flex h-full flex-col gap-3 p-3 pt-0", "data-testid": `${activeLinkType}-tab`, children: [_jsx(Input, { id: field.id, value: field.value, onChange: (e) => field.onChange(e.target.value), onBlur: (e) => {
187
+ field.onBlur(e.target.value);
188
+ }, className: "h-9 w-full bg-white text-xs", placeholder: field.placeholder, "aria-label": field.label, "data-testid": field.testId }), showTextExtras, linkOptionsContent] }));
189
+ };
190
+ if (typeof document === "undefined") {
191
+ return null;
192
+ }
193
+ const viewportWidth = typeof window === "undefined" ? 1024 : window.innerWidth;
194
+ const viewportHeight = typeof window === "undefined" ? 768 : window.innerHeight;
195
+ const popoverLeft = position
196
+ ? position.x
197
+ : Math.max(16, viewportWidth / 2 - 243);
198
+ const popoverTop = position
199
+ ? position.y
200
+ : Math.max(16, viewportHeight / 2 - 296);
201
+ const content = (_jsxs("div", { ref: popoverRef, role: "dialog", "aria-modal": "false", "aria-label": "Link settings", "data-slot": "dialog-content", "data-testid": "link-editor-dialog", className: "border-border-default animate-in fade-in-0 zoom-in-95 fixed z-[1100] flex flex-col overflow-hidden rounded-[8px] border bg-white p-0 shadow-2xl duration-200 ease-out", style: {
202
+ left: popoverLeft,
203
+ top: popoverTop,
204
+ width: "486px",
205
+ maxWidth: "calc(100vw - 32px)",
206
+ height: activeLinkType === "internal" ? "592px" : "auto",
207
+ maxHeight: "calc(100vh - 48px)",
208
+ }, onMouseDown: (event) => event.stopPropagation(), onClick: (event) => event.stopPropagation(), children: [_jsxs("div", { className: "flex h-12 shrink-0 items-center gap-2 px-4 pt-2", children: [_jsx("div", { className: "text-neutral-grey-100 min-w-0 flex-1 text-sm font-semibold tracking-normal", children: "Link settings" }), _jsx(CloseButton, { onClick: onCancel, showTooltip: false })] }), _jsxs("div", { className: "flex min-h-0 flex-1 flex-col overflow-hidden", children: [_jsx("div", { className: "bg-white p-3", children: _jsx("div", { className: "bg-neutral-grey-5 grid grid-cols-4 gap-1 rounded-[6px] p-1", children: linkTypeOptions.map((option) => {
209
+ const Icon = option.icon;
210
+ const active = activeLinkType === option.value;
211
+ return (_jsxs("button", { type: "button", className: cn("text-neutral-grey-100 flex h-9 min-w-0 items-center justify-center gap-2 rounded-[5px] px-2 text-xs font-semibold transition-colors hover:bg-white/70", active && "bg-white shadow-sm"), "aria-pressed": active, onClick: () => setActiveLinkType(option.value), "data-testid": `link-type-${option.value}`, children: [_jsx(Icon, { className: "h-3.5 w-3.5", strokeWidth: 1.5 }), _jsx("span", { className: "truncate", children: option.label })] }, option.value));
212
+ }) }) }), _jsx("div", { className: "min-h-0 flex-1 overflow-hidden", children: renderFieldContent() }), activeLinkType === "internal" && (_jsxs("div", { className: "border-border-default flex shrink-0 flex-col gap-3 border-t p-3", children: [showTextExtras, linkOptionsContent] })), _jsxs(DialogButtons, { hideBorder: activeLinkType !== "internal", className: "shrink-0 bg-white px-4 py-3", children: [_jsx(Button, { variant: "ghost", size: "sm", onClick: onCancel, "data-testid": "dialog-cancel", className: "h-9 px-3", children: "Cancel" }), _jsx(Button, { onClick: () => {
213
+ const resolvedUrl = activeLinkType === "email"
214
+ ? formatSpecialLinkUrl("email", emailAddress)
215
+ : activeLinkType === "phone"
216
+ ? formatSpecialLinkUrl("phone", phoneNumber)
217
+ : activeLinkType === "external"
218
+ ? normalizeUrl(url || "")
219
+ : url;
220
+ onOk({
221
+ url: resolvedUrl,
222
+ target: supportsTargetOptions ? getTargetWindow() : "",
223
+ customTarget: supportsTargetOptions ? customTarget : undefined,
224
+ itemId: selectedItemId,
225
+ queryString: queryString,
226
+ text: text,
227
+ title: title.trim() || undefined,
228
+ nofollow: supportsTargetOptions && nofollow ? true : undefined,
229
+ type: activeLinkType,
230
+ });
231
+ }, "data-testid": "dialog-ok", size: "sm", className: "h-9 min-w-[64px] px-4", children: "Save" })] })] })] }));
232
+ return createPortal(content, document.body);
129
233
  }
130
234
  //# sourceMappingURL=LinkEditorDialog.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LinkEditorDialog.js","sourceRoot":"","sources":["../../src/editor/LinkEditorDialog.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LinkEditorDialog.js","sourceRoot":"","sources":["../../src/editor/LinkEditorDialog.tsx"],"names":[],"mappings":"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"}
@@ -8,7 +8,16 @@ import { GlobalMenuBar } from "./GlobalMenuBar";
8
8
  import { ArrowLeftToLine, ArrowRightToLine, Layers } from "lucide-react";
9
9
  import { MobileLayout } from "./MobileLayout";
10
10
  import { WorkspaceRail } from "./sidebar/WorkspaceRail";
11
- const SIDEBAR_COLLAPSE_ANIMATION_MS = 220;
11
+ // Fallback only: closed sidebar stacks are normally unmounted when their
12
+ // collapse transition ends (event-driven, see handlePanelTransitionEnd). This
13
+ // guardrail ensures cleanup even if a transitionend is ever missed.
14
+ const SIDEBAR_COLLAPSE_SAFETY_MS = 400;
15
+ const AGENTS_PANEL_SURFACE_KEY = "agents-panel";
16
+ function getSidebarStackPanelName(stackIds) {
17
+ return stackIds.length === 1
18
+ ? `sidebar-${stackIds[0]}`
19
+ : `sidebarStack-${stackIds.join("-")}`;
20
+ }
12
21
  function hasSidebarDragData(e) {
13
22
  return (e.dataTransfer.types.includes("text/alpaca-sidebar") ||
14
23
  e.dataTransfer.types.includes("text/alpaca-sidebar-icon"));
@@ -144,18 +153,49 @@ function DesktopMainLayout({ editContext, ...props }) {
144
153
  return next;
145
154
  });
146
155
  });
156
+ // Primary unmount of closed stacks is event-driven (handlePanelTransitionEnd).
157
+ // This timeout is only a guardrail in case a transitionend never arrives.
158
+ const hasClosedStacks = renderedLeftSidebarStacksRef.current.some((stack) => !openStackKeys.has(getSidebarStackKey(stack)));
159
+ if (!hasClosedStacks) {
160
+ return;
161
+ }
147
162
  const timeout = window.setTimeout(() => {
148
163
  setRenderedLeftSidebarStacks((prev) => {
149
164
  const filtered = prev.filter((stack) => openStackKeys.has(getSidebarStackKey(stack)));
150
165
  renderedLeftSidebarStacksRef.current = filtered;
151
166
  return filtered;
152
167
  });
153
- }, SIDEBAR_COLLAPSE_ANIMATION_MS);
168
+ }, SIDEBAR_COLLAPSE_SAFETY_MS);
154
169
  return () => {
155
170
  window.clearTimeout(timeout);
156
171
  };
157
172
  }, [leftSidebarStackKeySignature, leftSidebarStacks]);
158
173
  const openLeftSidebarStackKeys = useMemo(() => new Set(leftSidebarStacks.map(getSidebarStackKey)), [leftSidebarStacks]);
174
+ const openLeftSidebarStackKeysRef = React.useRef(openLeftSidebarStackKeys);
175
+ openLeftSidebarStackKeysRef.current = openLeftSidebarStackKeys;
176
+ // Map each splitter panel name to the settle surface key(s) it represents so
177
+ // the transitionend handler can notify the registry without re-parsing names.
178
+ const panelSurfaceKeysRef = React.useRef(new Map());
179
+ const handlePanelTransitionEnd = useCallback((panelName) => {
180
+ panelSurfaceKeysRef.current
181
+ .get(panelName)
182
+ ?.forEach((key) => editContext.notifySurfaceSettled?.(key));
183
+ // Event-driven unmount: once a closed sidebar stack finishes collapsing,
184
+ // drop it from the rendered set (replaces the old fixed-delay removal).
185
+ if (panelName.startsWith("sidebar")) {
186
+ setRenderedLeftSidebarStacks((prev) => {
187
+ const next = prev.filter((stack) => {
188
+ if (getSidebarStackPanelName(stack) !== panelName)
189
+ return true;
190
+ return openLeftSidebarStackKeysRef.current.has(getSidebarStackKey(stack));
191
+ });
192
+ if (next.length === prev.length)
193
+ return prev;
194
+ renderedLeftSidebarStacksRef.current = next;
195
+ return next;
196
+ });
197
+ }
198
+ }, [editContext]);
159
199
  // Drag and drop handlers for reordering pinned sidebars
160
200
  const handleDragOver = useCallback((e) => {
161
201
  e.preventDefault();
@@ -216,6 +256,7 @@ function DesktopMainLayout({ editContext, ...props }) {
216
256
  newOpen.splice(insertIndex, 0, sourceSidebarId);
217
257
  editContext.reorderOpenSidebars(newOpen);
218
258
  }, [editContext]);
259
+ const panelSurfaceKeys = new Map();
219
260
  // Render each sidebar stack as its own splitter panel (one column per stack).
220
261
  renderedLeftSidebarStacks.forEach((stackIds) => {
221
262
  const firstId = stackIds[0];
@@ -223,10 +264,10 @@ function DesktopMainLayout({ editContext, ...props }) {
223
264
  return;
224
265
  const firstResolved = editContext.getResolvedSidebar(firstId);
225
266
  const stackKey = getSidebarStackKey(stackIds);
267
+ const panelName = getSidebarStackPanelName(stackIds);
268
+ panelSurfaceKeys.set(panelName, stackIds.map((id) => `sidebar:${id}`));
226
269
  panels.push({
227
- name: stackIds.length === 1
228
- ? `sidebar-${firstId}`
229
- : `sidebarStack-${stackIds.join("-")}`,
270
+ name: panelName,
230
271
  defaultSize: firstResolved?.defaultWidth ?? 350,
231
272
  collapsed: !openLeftSidebarStackKeys.has(stackKey) ||
232
273
  openingLeftSidebarStackKeys.has(stackKey),
@@ -249,6 +290,7 @@ function DesktopMainLayout({ editContext, ...props }) {
249
290
  });
250
291
  }
251
292
  if (props.farRightSidebar) {
293
+ panelSurfaceKeys.set("farRightSidebar", [AGENTS_PANEL_SURFACE_KEY]);
252
294
  panels.push({
253
295
  name: "farRightSidebar",
254
296
  defaultSize: 600,
@@ -267,6 +309,7 @@ function DesktopMainLayout({ editContext, ...props }) {
267
309
  collapsible: false,
268
310
  });
269
311
  }
312
+ panelSurfaceKeysRef.current = panelSurfaceKeys;
270
313
  let className = props.className;
271
314
  if (!editContext?.configuration.editor.embedded) {
272
315
  className = cn("absolute inset-0", props.className);
@@ -284,6 +327,6 @@ function DesktopMainLayout({ editContext, ...props }) {
284
327
  const showSidebarIcons = showWorkspaceRail && workspace.supportsSidebars && hasAvailableSidebars;
285
328
  return (_jsx("div", { className: cn("flex h-full w-full flex-col font-normal select-none", className), children: _jsxs("div", { className: "flex flex-1 overflow-hidden", children: [showWorkspaceRail && (_jsx(WorkspaceRail, { showSidebarIcons: showSidebarIcons })), _jsxs("div", { className: "flex flex-1 flex-col overflow-hidden", children: [workspace.menuBar !== undefined
286
329
  ? workspace.menuBar
287
- : showMenuBar && _jsx(GlobalMenuBar, {}), workspace?.toolbarFactory && (_jsx("div", { className: "w-full shrink-0", children: workspace.toolbarFactory(editContext) })), _jsx("div", { className: "bg-neutral-grey-5 flex-1 overflow-hidden", children: _jsx(Splitter, { splitterClassName: "bg-transparent -mr-1.5 md:w-[6px]", localStorageKey: "editor.panelSizes", expandLabel: _jsxs("div", { className: "flex items-center justify-center", children: [_jsx(Layers, { size: 14 }), _jsxs("div", { className: "mt-3", children: [props.rightSidebarTitle, " "] })] }), panels: panels }) })] })] }) }));
330
+ : showMenuBar && _jsx(GlobalMenuBar, {}), workspace?.toolbarFactory && (_jsx("div", { className: "w-full shrink-0", children: workspace.toolbarFactory(editContext) })), _jsx("div", { className: "bg-neutral-grey-5 flex-1 overflow-hidden", children: _jsx(Splitter, { splitterClassName: "bg-transparent -mr-1.5 md:w-[6px]", localStorageKey: "editor.panelSizes", expandLabel: _jsxs("div", { className: "flex items-center justify-center", children: [_jsx(Layers, { size: 14 }), _jsxs("div", { className: "mt-3", children: [props.rightSidebarTitle, " "] })] }), panels: panels, onPanelTransitionEnd: handlePanelTransitionEnd }) })] })] }) }));
288
331
  }
289
332
  //# sourceMappingURL=MainLayout.js.map