@arbidocs/blocks 0.5.121 → 0.5.122

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 (185) hide show
  1. package/dist/{ClippingMediaViewer-B6WG7Q64.cjs → ClippingMediaViewer-IEIBT74X.cjs} +8 -8
  2. package/dist/{ClippingMediaViewer-B6WG7Q64.cjs.map → ClippingMediaViewer-IEIBT74X.cjs.map} +1 -1
  3. package/dist/{ClippingPdfViewer-6GCVTV3V.cjs → ClippingPdfViewer-OGYLMVCE.cjs} +5 -5
  4. package/dist/{ClippingPdfViewer-6GCVTV3V.cjs.map → ClippingPdfViewer-OGYLMVCE.cjs.map} +1 -1
  5. package/dist/{ConnectedCallDock-DC5V5OUJ.cjs → ConnectedCallDock-XJOYVVAH.cjs} +21 -21
  6. package/dist/{ConnectedCallDock-DC5V5OUJ.cjs.map → ConnectedCallDock-XJOYVVAH.cjs.map} +1 -1
  7. package/dist/{ConnectedCallRoom-FQLXWTFB.cjs → ConnectedCallRoom-CUDYAPQK.cjs} +14 -14
  8. package/dist/{ConnectedCallRoom-FQLXWTFB.cjs.map → ConnectedCallRoom-CUDYAPQK.cjs.map} +1 -1
  9. package/dist/{ConnectedNativeDocxComparison-4Q5S7VLD.cjs → ConnectedNativeDocxComparison-QKHCYD6W.cjs} +16 -16
  10. package/dist/{ConnectedNativeDocxComparison-4Q5S7VLD.cjs.map → ConnectedNativeDocxComparison-QKHCYD6W.cjs.map} +1 -1
  11. package/dist/ConnectedPresentation-AU25OW25.cjs +321 -0
  12. package/dist/ConnectedPresentation-AU25OW25.cjs.map +1 -0
  13. package/dist/{ConnectedProductionSetDialog-4EAY6KAZ.cjs → ConnectedProductionSetDialog-LHB4VQWC.cjs} +3 -3
  14. package/dist/{ConnectedProductionSetDialog-4EAY6KAZ.cjs.map → ConnectedProductionSetDialog-LHB4VQWC.cjs.map} +1 -1
  15. package/dist/{ConnectedSlidesTab-7QDE2CZD.cjs → ConnectedSlidesTab-I75LKKN7.cjs} +40 -38
  16. package/dist/ConnectedSlidesTab-I75LKKN7.cjs.map +1 -0
  17. package/dist/{ConnectedStreamedWordArtifact-FFOQJBOI.cjs → ConnectedStreamedWordArtifact-AG62232A.cjs} +16 -16
  18. package/dist/{ConnectedStreamedWordArtifact-FFOQJBOI.cjs.map → ConnectedStreamedWordArtifact-AG62232A.cjs.map} +1 -1
  19. package/dist/{DocumentReviewCard-SNWVEZ7S.cjs → DocumentReviewCard-M53XFLI2.cjs} +15 -15
  20. package/dist/{DocumentReviewCard-SNWVEZ7S.cjs.map → DocumentReviewCard-M53XFLI2.cjs.map} +1 -1
  21. package/dist/{FilesViewerDialog-IZI63FOV.cjs → FilesViewerDialog-4352KIOG.cjs} +50 -49
  22. package/dist/FilesViewerDialog-4352KIOG.cjs.map +1 -0
  23. package/dist/{WorkspaceTableView-TEIRB6VJ.cjs → WorkspaceTableView-3XYAV4BV.cjs} +8 -8
  24. package/dist/{WorkspaceTableView-TEIRB6VJ.cjs.map → WorkspaceTableView-3XYAV4BV.cjs.map} +1 -1
  25. package/dist/agents/index.cjs +297 -297
  26. package/dist/{ai-KBYNRNZ6.cjs → ai-IEIR7SC2.cjs} +25 -25
  27. package/dist/ai-IEIR7SC2.cjs.map +1 -0
  28. package/dist/calls/index.cjs +121 -121
  29. package/dist/chat/index.cjs +1 -1
  30. package/dist/{chunk-NLOETJCB.cjs → chunk-2F57IO7S.cjs} +12 -12
  31. package/dist/{chunk-NLOETJCB.cjs.map → chunk-2F57IO7S.cjs.map} +1 -1
  32. package/dist/chunk-2RLA6QO2.cjs +174 -0
  33. package/dist/chunk-2RLA6QO2.cjs.map +1 -0
  34. package/dist/{chunk-Q6DQGGP4.cjs → chunk-325GVZE6.cjs} +3 -3
  35. package/dist/{chunk-Q6DQGGP4.cjs.map → chunk-325GVZE6.cjs.map} +1 -1
  36. package/dist/{chunk-XTR26TNE.cjs → chunk-4TTX6ZNS.cjs} +20 -4
  37. package/dist/chunk-4TTX6ZNS.cjs.map +1 -0
  38. package/dist/{chunk-BVAT4EVC.cjs → chunk-5QERK4PK.cjs} +35 -35
  39. package/dist/{chunk-BVAT4EVC.cjs.map → chunk-5QERK4PK.cjs.map} +1 -1
  40. package/dist/{chunk-GX2EBMJW.cjs → chunk-6OK7ESTL.cjs} +7 -6
  41. package/dist/chunk-6OK7ESTL.cjs.map +1 -0
  42. package/dist/{chunk-C2OICDMI.cjs → chunk-7557LDAN.cjs} +10 -10
  43. package/dist/{chunk-C2OICDMI.cjs.map → chunk-7557LDAN.cjs.map} +1 -1
  44. package/dist/{chunk-474GPLCM.cjs → chunk-7L4X6QN2.cjs} +6 -6
  45. package/dist/{chunk-474GPLCM.cjs.map → chunk-7L4X6QN2.cjs.map} +1 -1
  46. package/dist/{chunk-52KGMAO5.cjs → chunk-7NLO7ASW.cjs} +15 -15
  47. package/dist/{chunk-52KGMAO5.cjs.map → chunk-7NLO7ASW.cjs.map} +1 -1
  48. package/dist/{chunk-H5OLHP2U.cjs → chunk-7OPOPYV6.cjs} +3 -3
  49. package/dist/{chunk-H5OLHP2U.cjs.map → chunk-7OPOPYV6.cjs.map} +1 -1
  50. package/dist/{chunk-W6B3RYTX.cjs → chunk-7PN3YENO.cjs} +4 -4
  51. package/dist/{chunk-W6B3RYTX.cjs.map → chunk-7PN3YENO.cjs.map} +1 -1
  52. package/dist/{chunk-734NPQNR.cjs → chunk-ADDQKZ5I.cjs} +4 -4
  53. package/dist/{chunk-734NPQNR.cjs.map → chunk-ADDQKZ5I.cjs.map} +1 -1
  54. package/dist/{chunk-JQLWKNJO.cjs → chunk-ALK3PUUB.cjs} +4 -4
  55. package/dist/{chunk-JQLWKNJO.cjs.map → chunk-ALK3PUUB.cjs.map} +1 -1
  56. package/dist/{chunk-4VZZWYEC.cjs → chunk-BQ5RIWWT.cjs} +3 -3
  57. package/dist/{chunk-4VZZWYEC.cjs.map → chunk-BQ5RIWWT.cjs.map} +1 -1
  58. package/dist/{chunk-ENGL7P3I.cjs → chunk-CQQQIZU4.cjs} +27 -27
  59. package/dist/{chunk-ENGL7P3I.cjs.map → chunk-CQQQIZU4.cjs.map} +1 -1
  60. package/dist/{chunk-3SCNXNHI.cjs → chunk-E3L5DB5F.cjs} +5 -5
  61. package/dist/{chunk-3SCNXNHI.cjs.map → chunk-E3L5DB5F.cjs.map} +1 -1
  62. package/dist/{chunk-VJ5ZLRBD.cjs → chunk-GFUOCGY6.cjs} +8 -3
  63. package/dist/chunk-GFUOCGY6.cjs.map +1 -0
  64. package/dist/{chunk-RYVZDFVO.cjs → chunk-JJZOL5MG.cjs} +3 -3
  65. package/dist/{chunk-RYVZDFVO.cjs.map → chunk-JJZOL5MG.cjs.map} +1 -1
  66. package/dist/{chunk-QFXILJMJ.cjs → chunk-K4763GD5.cjs} +17 -174
  67. package/dist/chunk-K4763GD5.cjs.map +1 -0
  68. package/dist/{chunk-EHP6OH5D.cjs → chunk-KA3F6TIH.cjs} +11 -11
  69. package/dist/{chunk-EHP6OH5D.cjs.map → chunk-KA3F6TIH.cjs.map} +1 -1
  70. package/dist/{chunk-UUENH4BJ.cjs → chunk-KXIRVKCJ.cjs} +3 -3
  71. package/dist/{chunk-UUENH4BJ.cjs.map → chunk-KXIRVKCJ.cjs.map} +1 -1
  72. package/dist/{chunk-4RBQ44RY.cjs → chunk-MLA2BJ2Y.cjs} +28 -28
  73. package/dist/{chunk-4RBQ44RY.cjs.map → chunk-MLA2BJ2Y.cjs.map} +1 -1
  74. package/dist/{chunk-DR2AH7JL.cjs → chunk-NG2EE7HR.cjs} +48 -48
  75. package/dist/{chunk-DR2AH7JL.cjs.map → chunk-NG2EE7HR.cjs.map} +1 -1
  76. package/dist/{chunk-4NPCDS2X.cjs → chunk-NY3YUCOW.cjs} +3 -3
  77. package/dist/{chunk-4NPCDS2X.cjs.map → chunk-NY3YUCOW.cjs.map} +1 -1
  78. package/dist/{chunk-JZEYHDWJ.cjs → chunk-OHHKBURG.cjs} +76 -76
  79. package/dist/chunk-OHHKBURG.cjs.map +1 -0
  80. package/dist/{chunk-AY6EZSZB.cjs → chunk-QG2U2JGX.cjs} +4 -4
  81. package/dist/{chunk-AY6EZSZB.cjs.map → chunk-QG2U2JGX.cjs.map} +1 -1
  82. package/dist/{chunk-5534FYXP.cjs → chunk-SDRYSLOX.cjs} +4 -4
  83. package/dist/{chunk-5534FYXP.cjs.map → chunk-SDRYSLOX.cjs.map} +1 -1
  84. package/dist/{chunk-2W5E62EY.cjs → chunk-SGYSDABK.cjs} +6 -6
  85. package/dist/{chunk-2W5E62EY.cjs.map → chunk-SGYSDABK.cjs.map} +1 -1
  86. package/dist/{chunk-EATIFPKP.cjs → chunk-T73BHNQX.cjs} +4 -4
  87. package/dist/{chunk-EATIFPKP.cjs.map → chunk-T73BHNQX.cjs.map} +1 -1
  88. package/dist/{chunk-4IOYQLKG.cjs → chunk-TP5PGWIO.cjs} +3 -3
  89. package/dist/{chunk-4IOYQLKG.cjs.map → chunk-TP5PGWIO.cjs.map} +1 -1
  90. package/dist/{chunk-GKVE5JGB.cjs → chunk-UFT22LAB.cjs} +3 -3
  91. package/dist/{chunk-GKVE5JGB.cjs.map → chunk-UFT22LAB.cjs.map} +1 -1
  92. package/dist/{chunk-Q3XJUXID.cjs → chunk-USNTRL22.cjs} +215 -199
  93. package/dist/chunk-USNTRL22.cjs.map +1 -0
  94. package/dist/{chunk-7VUJGHMY.cjs → chunk-UTJ223TI.cjs} +178 -82
  95. package/dist/chunk-UTJ223TI.cjs.map +1 -0
  96. package/dist/{chunk-FKFQCK3C.cjs → chunk-V6MW7B4B.cjs} +4 -4
  97. package/dist/{chunk-FKFQCK3C.cjs.map → chunk-V6MW7B4B.cjs.map} +1 -1
  98. package/dist/{chunk-2PZT3J34.cjs → chunk-VWBYE3XY.cjs} +6 -6
  99. package/dist/{chunk-2PZT3J34.cjs.map → chunk-VWBYE3XY.cjs.map} +1 -1
  100. package/dist/{chunk-GQXPNIRE.cjs → chunk-WAV762GP.cjs} +6 -6
  101. package/dist/{chunk-GQXPNIRE.cjs.map → chunk-WAV762GP.cjs.map} +1 -1
  102. package/dist/{chunk-5LTIZ44D.cjs → chunk-WFMWKPGY.cjs} +14 -7
  103. package/dist/chunk-WFMWKPGY.cjs.map +1 -0
  104. package/dist/{chunk-KP5AITQ4.cjs → chunk-WRLGLZIA.cjs} +7 -7
  105. package/dist/{chunk-KP5AITQ4.cjs.map → chunk-WRLGLZIA.cjs.map} +1 -1
  106. package/dist/{chunk-MZ2KZXNU.cjs → chunk-WXUU3COI.cjs} +3 -3
  107. package/dist/{chunk-MZ2KZXNU.cjs.map → chunk-WXUU3COI.cjs.map} +1 -1
  108. package/dist/{chunk-NAJN32MF.cjs → chunk-XF355M7O.cjs} +13 -13
  109. package/dist/{chunk-NAJN32MF.cjs.map → chunk-XF355M7O.cjs.map} +1 -1
  110. package/dist/{chunk-GPX5VC57.cjs → chunk-XGM4VVNV.cjs} +50 -50
  111. package/dist/{chunk-GPX5VC57.cjs.map → chunk-XGM4VVNV.cjs.map} +1 -1
  112. package/dist/connect/docx.cjs +19 -19
  113. package/dist/connect/index.cjs +996 -995
  114. package/dist/connect/index.cjs.map +1 -1
  115. package/dist/connect/viewer.cjs +38 -37
  116. package/dist/connection/conversation/ConnectedMessage.js +1 -1
  117. package/dist/connection/conversation/ConnectedMessage.js.map +2 -2
  118. package/dist/connection/presentation/ConnectedSlidesTab.js +5 -3
  119. package/dist/connection/presentation/ConnectedSlidesTab.js.map +2 -2
  120. package/dist/connection/presentation/PresentationPill.js +3 -8
  121. package/dist/connection/presentation/PresentationPill.js.map +2 -2
  122. package/dist/connection/presentation/requests.d.ts +5 -0
  123. package/dist/connection/presentation/requests.js +8 -1
  124. package/dist/connection/presentation/requests.js.map +2 -2
  125. package/dist/connection/viewer/ViewerPdfPane.js +4 -1
  126. package/dist/connection/viewer/ViewerPdfPane.js.map +2 -2
  127. package/dist/connection/viewer/documentPlace.d.ts +5 -4
  128. package/dist/connection/viewer/documentPlace.js +2 -2
  129. package/dist/connection/viewer/documentPlace.js.map +2 -2
  130. package/dist/connection/viewer/pdf/PdfClipOutlines.d.ts +11 -0
  131. package/dist/connection/viewer/pdf/PdfClipOutlines.js +42 -0
  132. package/dist/connection/viewer/pdf/PdfClipOutlines.js.map +7 -0
  133. package/dist/connection/viewer/pdf/clipOutlines.d.ts +17 -0
  134. package/dist/connection/viewer/pdf/clipOutlines.js +24 -0
  135. package/dist/connection/viewer/pdf/clipOutlines.js.map +7 -0
  136. package/dist/connection/viewer/pdf/passageHighlights.d.ts +2 -0
  137. package/dist/connection/viewer/pdf/passageHighlights.js +12 -1
  138. package/dist/connection/viewer/pdf/passageHighlights.js.map +2 -2
  139. package/dist/connection/viewer/pdf/usePdfClipOutlines.d.ts +7 -0
  140. package/dist/connection/viewer/pdf/usePdfClipOutlines.js +36 -0
  141. package/dist/connection/viewer/pdf/usePdfClipOutlines.js.map +7 -0
  142. package/dist/connection/viewer/pdf/usePdfPassageHighlights.js +11 -2
  143. package/dist/connection/viewer/pdf/usePdfPassageHighlights.js.map +2 -2
  144. package/dist/dashboards/index.cjs +1 -1
  145. package/dist/embed/index.cjs +39 -39
  146. package/dist/files/index.cjs +224 -224
  147. package/dist/index.cjs +1597 -1596
  148. package/dist/index.cjs.map +1 -1
  149. package/dist/presentation/PresentControls.d.ts +11 -0
  150. package/dist/presentation/PresentControls.js +117 -0
  151. package/dist/presentation/PresentControls.js.map +7 -0
  152. package/dist/presentation/PresenterView.js +36 -5
  153. package/dist/presentation/PresenterView.js.map +2 -2
  154. package/dist/presentation/SlidesEditor.js +17 -1
  155. package/dist/presentation/SlidesEditor.js.map +2 -2
  156. package/dist/presentation/panel-id.d.ts +12 -2
  157. package/dist/presentation/panel-id.js +6 -1
  158. package/dist/presentation/panel-id.js.map +2 -2
  159. package/dist/presentation/slide-layout.d.ts +5 -1
  160. package/dist/presentation/slide-layout.js +16 -0
  161. package/dist/presentation/slide-layout.js.map +2 -2
  162. package/dist/settings/index.cjs +146 -146
  163. package/dist/shell/PanelPortal.js +13 -4
  164. package/dist/shell/PanelPortal.js.map +2 -2
  165. package/dist/shell/index.cjs +92 -91
  166. package/dist/shell/panel-windows.js +1 -0
  167. package/dist/shell/panel-windows.js.map +2 -2
  168. package/dist/studio/index.cjs +28 -28
  169. package/dist/styles.css +1 -1
  170. package/dist/workflow-canvas/index.cjs +53 -53
  171. package/node_modules/@arbidocs/coedit/package.json +1 -1
  172. package/package.json +5 -5
  173. package/dist/ConnectedPresentation-4HLDZDWV.cjs +0 -183
  174. package/dist/ConnectedPresentation-4HLDZDWV.cjs.map +0 -1
  175. package/dist/ConnectedSlidesTab-7QDE2CZD.cjs.map +0 -1
  176. package/dist/FilesViewerDialog-IZI63FOV.cjs.map +0 -1
  177. package/dist/ai-KBYNRNZ6.cjs.map +0 -1
  178. package/dist/chunk-5LTIZ44D.cjs.map +0 -1
  179. package/dist/chunk-7VUJGHMY.cjs.map +0 -1
  180. package/dist/chunk-GX2EBMJW.cjs.map +0 -1
  181. package/dist/chunk-JZEYHDWJ.cjs.map +0 -1
  182. package/dist/chunk-Q3XJUXID.cjs.map +0 -1
  183. package/dist/chunk-QFXILJMJ.cjs.map +0 -1
  184. package/dist/chunk-VJ5ZLRBD.cjs.map +0 -1
  185. package/dist/chunk-XTR26TNE.cjs.map +0 -1
@@ -151,12 +151,21 @@ function PanelPortal({
151
151
  }
152
152
  }
153
153
  }, [isOpen, mode, panelId, popoutTitle, onPopupClosed, windowManager]);
154
+ const pendingClose = useRef(null);
154
155
  useEffect(() => {
156
+ if (pendingClose.current) {
157
+ clearTimeout(pendingClose.current);
158
+ pendingClose.current = null;
159
+ }
155
160
  return () => {
156
- if (popupWindowIdRef.current) {
157
- windowManager.closeWindow(popupWindowIdRef.current);
158
- popupWindowIdRef.current = null;
159
- }
161
+ const windowId = popupWindowIdRef.current;
162
+ if (!windowId) return;
163
+ popupWindowIdRef.current = null;
164
+ pendingClose.current = setTimeout(() => {
165
+ pendingClose.current = null;
166
+ if (popupWindowIdRef.current === windowId) return;
167
+ windowManager.closeWindow(windowId);
168
+ }, 0);
160
169
  };
161
170
  }, [windowManager]);
162
171
  if (!isOpen && !isExiting) return null;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/shell/PanelPortal.tsx"],
4
- "sourcesContent": ["/**\n * PanelPortal Component\n *\n * Thin portal layer that renders children into the right target based on panel mode:\n * - docked: portal to #dock-zone element\n * - overlay: portal to <body> as a slide-out sheet over a backdrop\n * - popout: portal to a separate browser window\n * - main: portal to #main-zone element\n *\n * Manages popup window lifecycle for popout mode.\n * Content-agnostic \u2014 just handles where things render.\n */\n\nimport { useCallback, useEffect, useRef, useState } from 'react'\nimport { createPortal } from 'react-dom'\nimport { DEFAULT_OVERLAY_ZONE_ID } from './Shell'\nimport { usePanelHostSupport } from './panel-host'\nimport { PortalContainerProvider } from '@arbidocs/react/ui'\nimport type { FloatingPanelMode as PanelMode } from '../settings/FloatingPanel'\n\n// Overlay sheet sizing \u2014 defaults match the docked width (DEFAULT_DOCK_PX) so a\n// panel is the same size whether pinned or floating, and stays draggable here.\nconst OVERLAY_DEFAULT_PX = 544\nconst OVERLAY_MIN_PX = 360\n\nexport interface PanelPortalProps {\n panelId: string\n mode: PanelMode\n isOpen: boolean\n /** True while the overlay is animating out before unmounting. */\n isExiting?: boolean\n /** Called when popup window is closed externally (user closes the window) */\n onPopupClosed?: () => void\n /** Dismisses the panel \u2014 used by the overlay backdrop. */\n onClose?: () => void\n /** Window title for popout mode */\n popoutTitle?: string\n /** Initial overlay width in px (defaults to OVERLAY_DEFAULT_PX). */\n defaultWidth?: number\n children: React.ReactNode\n}\n\n/**\n * Overlay sheet \u2014 a slide-out panel over the still-visible page, resizable by\n * dragging its left edge. Slides in on mount and out (via isExiting) before\n * unmounting, mirroring the left sidebar's animation.\n */\nfunction OverlaySheet({\n panelId,\n isExiting,\n onClose,\n defaultWidth,\n scoped,\n children,\n}: {\n panelId: string\n isExiting?: boolean\n onClose?: () => void\n defaultWidth?: number\n /** Rendered inside the layout's overlay zone (below the topbar) rather than\n * over the whole viewport. */\n scoped?: boolean\n children: React.ReactNode\n}) {\n const [width, setWidth] = useState(defaultWidth ?? OVERLAY_DEFAULT_PX)\n const [isResizing, setIsResizing] = useState(false)\n // Live cursor position while dragging. The panel keeps its committed `width`\n // during the drag \u2014 only this thin preview line moves \u2014 so the heavy panel\n // content never reflows mid-drag (matching DockZone's split-screen handle).\n // The width is committed once on mouse-up.\n const [dragWidth, setDragWidth] = useState<number | null>(null)\n const dragWidthRef = useRef<number | null>(null)\n // Once the slide-in has played we drop the entry class, so later re-renders\n // don't restart the animation.\n const [hasEntered, setHasEntered] = useState(false)\n\n const handleResizeStart = useCallback((e: React.MouseEvent) => {\n e.preventDefault()\n setHasEntered(true)\n setIsResizing(true)\n setDragWidth(null)\n dragWidthRef.current = null\n }, [])\n\n useEffect(() => {\n if (!isResizing) return\n const handleMouseMove = (e: MouseEvent) => {\n // Anchored to the right edge \u2014 width grows as the cursor moves left.\n const max = window.innerWidth * 0.92\n const next = Math.min(Math.max(window.innerWidth - e.clientX, OVERLAY_MIN_PX), max)\n dragWidthRef.current = next\n setDragWidth(next)\n }\n const handleMouseUp = () => {\n if (dragWidthRef.current !== null) setWidth(dragWidthRef.current)\n setIsResizing(false)\n setDragWidth(null)\n dragWidthRef.current = null\n }\n document.addEventListener('mousemove', handleMouseMove)\n document.addEventListener('mouseup', handleMouseUp)\n document.body.style.cursor = 'col-resize'\n document.body.style.userSelect = 'none'\n return () => {\n document.removeEventListener('mousemove', handleMouseMove)\n document.removeEventListener('mouseup', handleMouseUp)\n document.body.style.cursor = ''\n document.body.style.userSelect = ''\n }\n }, [isResizing])\n\n return (\n // Scoped: absolute within the layout's overlay zone (below the topbar).\n // Unscoped fallback: fixed over the whole viewport, as before.\n <div\n className={scoped ? 'absolute inset-0 z-40' : 'fixed inset-0 z-50'}\n data-testid={`${panelId}-overlay`}\n >\n {/* In dark mode a 40% black veil crushes the light page text behind the sheet to\n mid-grey, so the veil is lighter there and the page stays readable underneath. */}\n <div\n className={`absolute inset-0 bg-black/40 dark:bg-black/20 duration-200 ${\n // fill-mode-forwards holds the exit end-state \u2014 without it the\n // element snaps back fully visible for the frames between the\n // animation finishing and React unmounting it (a flicker).\n isExiting ? 'animate-out fade-out fill-mode-forwards' : 'animate-in fade-in'\n }`}\n onClick={onClose}\n aria-hidden=\"true\"\n data-testid={`${panelId}-overlay-backdrop`}\n />\n <div\n style={{ width }}\n onAnimationEnd={() => !isExiting && setHasEntered(true)}\n className={`absolute right-0 top-0 bottom-0 flex max-w-[92vw] flex-col border-l max-sm:!w-full max-sm:!max-w-full max-sm:border-l-0 border-border bg-muted shadow-2xl duration-200 ${\n isExiting\n ? 'animate-out slide-out-to-right fill-mode-forwards'\n : // Suppress the slide transform once entered so it doesn't replay.\n hasEntered\n ? ''\n : 'animate-in slide-in-from-right'\n }`}\n >\n {/* Drag handle on the left edge to resize the sheet. */}\n <div\n className=\"absolute left-0 top-0 bottom-0 z-10 w-1.5 -translate-x-1/2 cursor-col-resize hover:bg-primary/40\"\n onMouseDown={handleResizeStart}\n data-testid={`${panelId}-overlay-resize-handle`}\n />\n {children}\n </div>\n\n {/* Preview line \u2014 tracks the cursor during the drag; the panel resizes\n to this position only on release. */}\n {isResizing && dragWidth !== null && (\n <div\n className=\"absolute top-0 bottom-0 z-[60] w-0.5 bg-primary pointer-events-none\"\n style={{ right: dragWidth }}\n />\n )}\n {/* Transparent capture layer so the drag isn't interrupted by elements\n (iframes, the grid) swallowing pointer events. */}\n {isResizing && <div className=\"absolute inset-0 z-[55] cursor-col-resize\" />}\n </div>\n )\n}\n\nexport function PanelPortal({\n panelId,\n mode,\n isOpen,\n isExiting,\n onPopupClosed,\n onClose,\n popoutTitle,\n defaultWidth,\n children,\n}: PanelPortalProps) {\n const { windows: windowManager } = usePanelHostSupport()\n const [popupRoot, setPopupRoot] = useState<HTMLElement | null>(null)\n const popupWindowIdRef = useRef<string | null>(null)\n\n // Open popup window when switching to popout mode\n useEffect(() => {\n if (!isOpen || mode !== 'popout') {\n // Close popup if we're leaving popout mode (intentional mode switch, not user closing)\n if (popupWindowIdRef.current) {\n // Clear the onClose callback before closing so it doesn't trigger onPopupClosed\n windowManager.clearOnClose(popupWindowIdRef.current)\n windowManager.closeWindow(popupWindowIdRef.current)\n popupWindowIdRef.current = null\n setPopupRoot(null)\n }\n return\n }\n\n // Already have a popup open\n if (popupWindowIdRef.current) return\n\n const windowId = windowManager.createPopupWindow(\n `panel-${panelId}`,\n () => {\n popupWindowIdRef.current = null\n setPopupRoot(null)\n onPopupClosed?.()\n },\n popoutTitle || panelId\n )\n\n if (windowId) {\n const rootElement = windowManager.getRootElement(windowId)\n if (rootElement) {\n popupWindowIdRef.current = windowId\n setPopupRoot(rootElement)\n windowManager.getWindow(windowId)?.focus()\n }\n }\n }, [isOpen, mode, panelId, popoutTitle, onPopupClosed, windowManager])\n\n // Clean up on unmount. The ref is cleared too: a remount (React's StrictMode replays mount\n // effects) of a panel that mounts already popped out must open a new window, not keep\n // pointing at the closed one.\n useEffect(() => {\n return () => {\n if (popupWindowIdRef.current) {\n windowManager.closeWindow(popupWindowIdRef.current)\n popupWindowIdRef.current = null\n }\n }\n }, [windowManager])\n\n if (!isOpen && !isExiting) return null\n\n // Popout: render into popup window. Its dialogs and menus open there too, not in the window\n // behind it (where the Sign dialog used to open, out of sight).\n if (mode === 'popout' && popupRoot) {\n return createPortal(\n <PortalContainerProvider container={popupRoot}>{children}</PortalContainerProvider>,\n popupRoot\n )\n }\n\n // Overlay: a slide-out sheet over the still-visible page. Rendered into the\n // layout's #app-overlay-zone \u2014 the content region BELOW the app topbar \u2014 so\n // the bar stays visible and interactive above every overlay. Falls back to\n // <body> (viewport-covering) when no zone is mounted (e.g. embedded shells).\n if (mode === 'overlay') {\n const overlayZone = document.getElementById(DEFAULT_OVERLAY_ZONE_ID)\n return createPortal(\n <OverlaySheet\n panelId={panelId}\n isExiting={isExiting}\n onClose={onClose}\n defaultWidth={defaultWidth}\n scoped={overlayZone !== null}\n >\n {children}\n </OverlaySheet>,\n overlayZone ?? document.body\n )\n }\n\n // Main: render into main content zone\n if (mode === 'main') {\n const mainZone = document.getElementById('main-zone')\n if (mainZone) {\n return createPortal(children, mainZone)\n }\n }\n\n // Docked: render into dock zone\n const dockZone = document.getElementById('dock-zone')\n if (dockZone) {\n return createPortal(children, dockZone)\n }\n\n // No target zone mounted yet \u2014 render nothing\n return null\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/**\n * PanelPortal Component\n *\n * Thin portal layer that renders children into the right target based on panel mode:\n * - docked: portal to #dock-zone element\n * - overlay: portal to <body> as a slide-out sheet over a backdrop\n * - popout: portal to a separate browser window\n * - main: portal to #main-zone element\n *\n * Manages popup window lifecycle for popout mode.\n * Content-agnostic \u2014 just handles where things render.\n */\n\nimport { useCallback, useEffect, useRef, useState } from 'react'\nimport { createPortal } from 'react-dom'\nimport { DEFAULT_OVERLAY_ZONE_ID } from './Shell'\nimport { usePanelHostSupport } from './panel-host'\nimport { PortalContainerProvider } from '@arbidocs/react/ui'\nimport type { FloatingPanelMode as PanelMode } from '../settings/FloatingPanel'\n\n// Overlay sheet sizing \u2014 defaults match the docked width (DEFAULT_DOCK_PX) so a\n// panel is the same size whether pinned or floating, and stays draggable here.\nconst OVERLAY_DEFAULT_PX = 544\nconst OVERLAY_MIN_PX = 360\n\nexport interface PanelPortalProps {\n panelId: string\n mode: PanelMode\n isOpen: boolean\n /** True while the overlay is animating out before unmounting. */\n isExiting?: boolean\n /** Called when popup window is closed externally (user closes the window) */\n onPopupClosed?: () => void\n /** Dismisses the panel \u2014 used by the overlay backdrop. */\n onClose?: () => void\n /** Window title for popout mode */\n popoutTitle?: string\n /** Initial overlay width in px (defaults to OVERLAY_DEFAULT_PX). */\n defaultWidth?: number\n children: React.ReactNode\n}\n\n/**\n * Overlay sheet \u2014 a slide-out panel over the still-visible page, resizable by\n * dragging its left edge. Slides in on mount and out (via isExiting) before\n * unmounting, mirroring the left sidebar's animation.\n */\nfunction OverlaySheet({\n panelId,\n isExiting,\n onClose,\n defaultWidth,\n scoped,\n children,\n}: {\n panelId: string\n isExiting?: boolean\n onClose?: () => void\n defaultWidth?: number\n /** Rendered inside the layout's overlay zone (below the topbar) rather than\n * over the whole viewport. */\n scoped?: boolean\n children: React.ReactNode\n}) {\n const [width, setWidth] = useState(defaultWidth ?? OVERLAY_DEFAULT_PX)\n const [isResizing, setIsResizing] = useState(false)\n // Live cursor position while dragging. The panel keeps its committed `width`\n // during the drag \u2014 only this thin preview line moves \u2014 so the heavy panel\n // content never reflows mid-drag (matching DockZone's split-screen handle).\n // The width is committed once on mouse-up.\n const [dragWidth, setDragWidth] = useState<number | null>(null)\n const dragWidthRef = useRef<number | null>(null)\n // Once the slide-in has played we drop the entry class, so later re-renders\n // don't restart the animation.\n const [hasEntered, setHasEntered] = useState(false)\n\n const handleResizeStart = useCallback((e: React.MouseEvent) => {\n e.preventDefault()\n setHasEntered(true)\n setIsResizing(true)\n setDragWidth(null)\n dragWidthRef.current = null\n }, [])\n\n useEffect(() => {\n if (!isResizing) return\n const handleMouseMove = (e: MouseEvent) => {\n // Anchored to the right edge \u2014 width grows as the cursor moves left.\n const max = window.innerWidth * 0.92\n const next = Math.min(Math.max(window.innerWidth - e.clientX, OVERLAY_MIN_PX), max)\n dragWidthRef.current = next\n setDragWidth(next)\n }\n const handleMouseUp = () => {\n if (dragWidthRef.current !== null) setWidth(dragWidthRef.current)\n setIsResizing(false)\n setDragWidth(null)\n dragWidthRef.current = null\n }\n document.addEventListener('mousemove', handleMouseMove)\n document.addEventListener('mouseup', handleMouseUp)\n document.body.style.cursor = 'col-resize'\n document.body.style.userSelect = 'none'\n return () => {\n document.removeEventListener('mousemove', handleMouseMove)\n document.removeEventListener('mouseup', handleMouseUp)\n document.body.style.cursor = ''\n document.body.style.userSelect = ''\n }\n }, [isResizing])\n\n return (\n // Scoped: absolute within the layout's overlay zone (below the topbar).\n // Unscoped fallback: fixed over the whole viewport, as before.\n <div\n className={scoped ? 'absolute inset-0 z-40' : 'fixed inset-0 z-50'}\n data-testid={`${panelId}-overlay`}\n >\n {/* In dark mode a 40% black veil crushes the light page text behind the sheet to\n mid-grey, so the veil is lighter there and the page stays readable underneath. */}\n <div\n className={`absolute inset-0 bg-black/40 dark:bg-black/20 duration-200 ${\n // fill-mode-forwards holds the exit end-state \u2014 without it the\n // element snaps back fully visible for the frames between the\n // animation finishing and React unmounting it (a flicker).\n isExiting ? 'animate-out fade-out fill-mode-forwards' : 'animate-in fade-in'\n }`}\n onClick={onClose}\n aria-hidden=\"true\"\n data-testid={`${panelId}-overlay-backdrop`}\n />\n <div\n style={{ width }}\n onAnimationEnd={() => !isExiting && setHasEntered(true)}\n className={`absolute right-0 top-0 bottom-0 flex max-w-[92vw] flex-col border-l max-sm:!w-full max-sm:!max-w-full max-sm:border-l-0 border-border bg-muted shadow-2xl duration-200 ${\n isExiting\n ? 'animate-out slide-out-to-right fill-mode-forwards'\n : // Suppress the slide transform once entered so it doesn't replay.\n hasEntered\n ? ''\n : 'animate-in slide-in-from-right'\n }`}\n >\n {/* Drag handle on the left edge to resize the sheet. */}\n <div\n className=\"absolute left-0 top-0 bottom-0 z-10 w-1.5 -translate-x-1/2 cursor-col-resize hover:bg-primary/40\"\n onMouseDown={handleResizeStart}\n data-testid={`${panelId}-overlay-resize-handle`}\n />\n {children}\n </div>\n\n {/* Preview line \u2014 tracks the cursor during the drag; the panel resizes\n to this position only on release. */}\n {isResizing && dragWidth !== null && (\n <div\n className=\"absolute top-0 bottom-0 z-[60] w-0.5 bg-primary pointer-events-none\"\n style={{ right: dragWidth }}\n />\n )}\n {/* Transparent capture layer so the drag isn't interrupted by elements\n (iframes, the grid) swallowing pointer events. */}\n {isResizing && <div className=\"absolute inset-0 z-[55] cursor-col-resize\" />}\n </div>\n )\n}\n\nexport function PanelPortal({\n panelId,\n mode,\n isOpen,\n isExiting,\n onPopupClosed,\n onClose,\n popoutTitle,\n defaultWidth,\n children,\n}: PanelPortalProps) {\n const { windows: windowManager } = usePanelHostSupport()\n const [popupRoot, setPopupRoot] = useState<HTMLElement | null>(null)\n const popupWindowIdRef = useRef<string | null>(null)\n\n // Open popup window when switching to popout mode\n useEffect(() => {\n if (!isOpen || mode !== 'popout') {\n // Close popup if we're leaving popout mode (intentional mode switch, not user closing)\n if (popupWindowIdRef.current) {\n // Clear the onClose callback before closing so it doesn't trigger onPopupClosed\n windowManager.clearOnClose(popupWindowIdRef.current)\n windowManager.closeWindow(popupWindowIdRef.current)\n popupWindowIdRef.current = null\n setPopupRoot(null)\n }\n return\n }\n\n // Already have a popup open\n if (popupWindowIdRef.current) return\n\n const windowId = windowManager.createPopupWindow(\n `panel-${panelId}`,\n () => {\n popupWindowIdRef.current = null\n setPopupRoot(null)\n onPopupClosed?.()\n },\n popoutTitle || panelId\n )\n\n if (windowId) {\n const rootElement = windowManager.getRootElement(windowId)\n if (rootElement) {\n popupWindowIdRef.current = windowId\n setPopupRoot(rootElement)\n windowManager.getWindow(windowId)?.focus()\n }\n }\n }, [isOpen, mode, panelId, popoutTitle, onPopupClosed, windowManager])\n\n // Close the window on unmount, a moment later: a remount straight after (React's StrictMode\n // replays mount effects) keeps it instead. Closing it and opening another would need a second\n // click's permission to open a window, and the browser would block the new one as a pop-up.\n const pendingClose = useRef<ReturnType<typeof setTimeout> | null>(null)\n useEffect(() => {\n if (pendingClose.current) {\n clearTimeout(pendingClose.current)\n pendingClose.current = null\n }\n return () => {\n const windowId = popupWindowIdRef.current\n if (!windowId) return\n popupWindowIdRef.current = null\n pendingClose.current = setTimeout(() => {\n pendingClose.current = null\n // Taken up again by the remount (the open effect reuses a window that is still open).\n if (popupWindowIdRef.current === windowId) return\n windowManager.closeWindow(windowId)\n }, 0)\n }\n }, [windowManager])\n\n if (!isOpen && !isExiting) return null\n\n // Popout: render into popup window. Its dialogs and menus open there too, not in the window\n // behind it (where the Sign dialog used to open, out of sight).\n if (mode === 'popout' && popupRoot) {\n return createPortal(\n <PortalContainerProvider container={popupRoot}>{children}</PortalContainerProvider>,\n popupRoot\n )\n }\n\n // Overlay: a slide-out sheet over the still-visible page. Rendered into the\n // layout's #app-overlay-zone \u2014 the content region BELOW the app topbar \u2014 so\n // the bar stays visible and interactive above every overlay. Falls back to\n // <body> (viewport-covering) when no zone is mounted (e.g. embedded shells).\n if (mode === 'overlay') {\n const overlayZone = document.getElementById(DEFAULT_OVERLAY_ZONE_ID)\n return createPortal(\n <OverlaySheet\n panelId={panelId}\n isExiting={isExiting}\n onClose={onClose}\n defaultWidth={defaultWidth}\n scoped={overlayZone !== null}\n >\n {children}\n </OverlaySheet>,\n overlayZone ?? document.body\n )\n }\n\n // Main: render into main content zone\n if (mode === 'main') {\n const mainZone = document.getElementById('main-zone')\n if (mainZone) {\n return createPortal(children, mainZone)\n }\n }\n\n // Docked: render into dock zone\n const dockZone = document.getElementById('dock-zone')\n if (dockZone) {\n return createPortal(children, dockZone)\n }\n\n // No target zone mounted yet \u2014 render nothing\n return null\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -3,23 +3,24 @@
3
3
 
4
4
  var chunkVCEX7COE_cjs = require('../chunk-VCEX7COE.cjs');
5
5
  require('../chunk-34HQO4ZQ.cjs');
6
+ var chunkKA3F6TIH_cjs = require('../chunk-KA3F6TIH.cjs');
7
+ var chunkK4763GD5_cjs = require('../chunk-K4763GD5.cjs');
8
+ var chunk2RLA6QO2_cjs = require('../chunk-2RLA6QO2.cjs');
9
+ var chunkNY3YUCOW_cjs = require('../chunk-NY3YUCOW.cjs');
10
+ var chunk325GVZE6_cjs = require('../chunk-325GVZE6.cjs');
11
+ require('../chunk-AHDJXIUB.cjs');
12
+ var chunk6UZC4XVV_cjs = require('../chunk-6UZC4XVV.cjs');
13
+ require('../chunk-JV5TVUOU.cjs');
14
+ var chunkKKYNTWDU_cjs = require('../chunk-KKYNTWDU.cjs');
15
+ require('../chunk-3YZKDCWY.cjs');
16
+ var chunkSJSGSHIT_cjs = require('../chunk-SJSGSHIT.cjs');
6
17
  var chunkCT3SLXB7_cjs = require('../chunk-CT3SLXB7.cjs');
7
- var chunkEHP6OH5D_cjs = require('../chunk-EHP6OH5D.cjs');
8
- var chunkQFXILJMJ_cjs = require('../chunk-QFXILJMJ.cjs');
9
- var chunk4NPCDS2X_cjs = require('../chunk-4NPCDS2X.cjs');
10
- var chunkQ6DQGGP4_cjs = require('../chunk-Q6DQGGP4.cjs');
11
18
  var chunkDEXUL3T6_cjs = require('../chunk-DEXUL3T6.cjs');
12
19
  var chunkAFQTQC7A_cjs = require('../chunk-AFQTQC7A.cjs');
13
20
  var chunkXJEXFEWG_cjs = require('../chunk-XJEXFEWG.cjs');
14
21
  var chunkYZSQ7F5K_cjs = require('../chunk-YZSQ7F5K.cjs');
15
22
  var chunkKQF7POTG_cjs = require('../chunk-KQF7POTG.cjs');
16
23
  var chunkFX3K6LNZ_cjs = require('../chunk-FX3K6LNZ.cjs');
17
- require('../chunk-AHDJXIUB.cjs');
18
- var chunk6UZC4XVV_cjs = require('../chunk-6UZC4XVV.cjs');
19
- require('../chunk-JV5TVUOU.cjs');
20
- var chunkKKYNTWDU_cjs = require('../chunk-KKYNTWDU.cjs');
21
- require('../chunk-3YZKDCWY.cjs');
22
- var chunkSJSGSHIT_cjs = require('../chunk-SJSGSHIT.cjs');
23
24
  require('../chunk-PPCATBOY.cjs');
24
25
  require('../chunk-TKHCIHE2.cjs');
25
26
  require('../chunk-JDFBEGQO.cjs');
@@ -80,193 +81,221 @@ Object.defineProperty(exports, "useInstallPrompt", {
80
81
  enumerable: true,
81
82
  get: function () { return chunkVCEX7COE_cjs.useInstallPrompt; }
82
83
  });
83
- Object.defineProperty(exports, "DEFAULT_DOCK_WIDTH", {
84
- enumerable: true,
85
- get: function () { return chunkCT3SLXB7_cjs.DEFAULT_DOCK_WIDTH; }
86
- });
87
- Object.defineProperty(exports, "Toaster", {
88
- enumerable: true,
89
- get: function () { return chunkCT3SLXB7_cjs.Toaster; }
90
- });
91
84
  Object.defineProperty(exports, "ActionCluster", {
92
85
  enumerable: true,
93
- get: function () { return chunkEHP6OH5D_cjs.ActionCluster; }
86
+ get: function () { return chunkKA3F6TIH_cjs.ActionCluster; }
94
87
  });
95
88
  Object.defineProperty(exports, "AskField", {
96
89
  enumerable: true,
97
- get: function () { return chunkEHP6OH5D_cjs.AskField; }
90
+ get: function () { return chunkKA3F6TIH_cjs.AskField; }
98
91
  });
99
92
  Object.defineProperty(exports, "AskRow", {
100
93
  enumerable: true,
101
- get: function () { return chunkEHP6OH5D_cjs.AskRow; }
94
+ get: function () { return chunkKA3F6TIH_cjs.AskRow; }
102
95
  });
103
96
  Object.defineProperty(exports, "AskTrigger", {
104
97
  enumerable: true,
105
- get: function () { return chunkEHP6OH5D_cjs.AskTrigger; }
98
+ get: function () { return chunkKA3F6TIH_cjs.AskTrigger; }
106
99
  });
107
100
  Object.defineProperty(exports, "DEFAULT_ASK_FIELD_LABELS", {
108
101
  enumerable: true,
109
- get: function () { return chunkEHP6OH5D_cjs.DEFAULT_ASK_FIELD_LABELS; }
102
+ get: function () { return chunkKA3F6TIH_cjs.DEFAULT_ASK_FIELD_LABELS; }
110
103
  });
111
104
  Object.defineProperty(exports, "DEFAULT_OFFLINE_PILL_LABELS", {
112
105
  enumerable: true,
113
- get: function () { return chunkEHP6OH5D_cjs.DEFAULT_OFFLINE_PILL_LABELS; }
106
+ get: function () { return chunkKA3F6TIH_cjs.DEFAULT_OFFLINE_PILL_LABELS; }
114
107
  });
115
108
  Object.defineProperty(exports, "DEFAULT_REMOTE_CONTROL_PILL_LABELS", {
116
109
  enumerable: true,
117
- get: function () { return chunkEHP6OH5D_cjs.DEFAULT_REMOTE_CONTROL_PILL_LABELS; }
110
+ get: function () { return chunkKA3F6TIH_cjs.DEFAULT_REMOTE_CONTROL_PILL_LABELS; }
118
111
  });
119
112
  Object.defineProperty(exports, "DEFAULT_TIP_CARD_LABELS", {
120
113
  enumerable: true,
121
- get: function () { return chunkEHP6OH5D_cjs.DEFAULT_TIP_CARD_LABELS; }
114
+ get: function () { return chunkKA3F6TIH_cjs.DEFAULT_TIP_CARD_LABELS; }
122
115
  });
123
116
  Object.defineProperty(exports, "DockZone", {
124
117
  enumerable: true,
125
- get: function () { return chunkEHP6OH5D_cjs.DockZone; }
118
+ get: function () { return chunkKA3F6TIH_cjs.DockZone; }
126
119
  });
127
120
  Object.defineProperty(exports, "OfflinePill", {
128
121
  enumerable: true,
129
- get: function () { return chunkEHP6OH5D_cjs.OfflinePill; }
122
+ get: function () { return chunkKA3F6TIH_cjs.OfflinePill; }
130
123
  });
131
124
  Object.defineProperty(exports, "RemoteControlPill", {
132
125
  enumerable: true,
133
- get: function () { return chunkEHP6OH5D_cjs.RemoteControlPill; }
126
+ get: function () { return chunkKA3F6TIH_cjs.RemoteControlPill; }
134
127
  });
135
128
  Object.defineProperty(exports, "ShellSidebar", {
136
129
  enumerable: true,
137
- get: function () { return chunkEHP6OH5D_cjs.ShellSidebar; }
130
+ get: function () { return chunkKA3F6TIH_cjs.ShellSidebar; }
138
131
  });
139
132
  Object.defineProperty(exports, "SidebarRowAction", {
140
133
  enumerable: true,
141
- get: function () { return chunkEHP6OH5D_cjs.SidebarRowAction; }
134
+ get: function () { return chunkKA3F6TIH_cjs.SidebarRowAction; }
142
135
  });
143
136
  Object.defineProperty(exports, "StatusBadge", {
144
137
  enumerable: true,
145
- get: function () { return chunkEHP6OH5D_cjs.StatusBadge; }
138
+ get: function () { return chunkKA3F6TIH_cjs.StatusBadge; }
146
139
  });
147
140
  Object.defineProperty(exports, "StatusRow", {
148
141
  enumerable: true,
149
- get: function () { return chunkEHP6OH5D_cjs.StatusRow; }
142
+ get: function () { return chunkKA3F6TIH_cjs.StatusRow; }
150
143
  });
151
144
  Object.defineProperty(exports, "TipCard", {
152
145
  enumerable: true,
153
- get: function () { return chunkEHP6OH5D_cjs.TipCard; }
146
+ get: function () { return chunkKA3F6TIH_cjs.TipCard; }
154
147
  });
155
148
  Object.defineProperty(exports, "resolveSidebarLayout", {
156
149
  enumerable: true,
157
- get: function () { return chunkEHP6OH5D_cjs.resolveSidebarLayout; }
150
+ get: function () { return chunkKA3F6TIH_cjs.resolveSidebarLayout; }
158
151
  });
159
152
  Object.defineProperty(exports, "useCloseOnEscape", {
160
153
  enumerable: true,
161
- get: function () { return chunkEHP6OH5D_cjs.useCloseOnEscape; }
154
+ get: function () { return chunkKA3F6TIH_cjs.useCloseOnEscape; }
162
155
  });
163
156
  Object.defineProperty(exports, "useSidebarController", {
164
157
  enumerable: true,
165
- get: function () { return chunkEHP6OH5D_cjs.useSidebarController; }
158
+ get: function () { return chunkKA3F6TIH_cjs.useSidebarController; }
166
159
  });
167
160
  Object.defineProperty(exports, "useSidebarSettle", {
168
161
  enumerable: true,
169
- get: function () { return chunkEHP6OH5D_cjs.useSidebarSettle; }
162
+ get: function () { return chunkKA3F6TIH_cjs.useSidebarSettle; }
170
163
  });
171
164
  Object.defineProperty(exports, "PanelModeSwitcher", {
172
165
  enumerable: true,
173
- get: function () { return chunkQFXILJMJ_cjs.PanelModeSwitcher; }
166
+ get: function () { return chunkK4763GD5_cjs.PanelModeSwitcher; }
174
167
  });
175
168
  Object.defineProperty(exports, "PanelPortal", {
176
169
  enumerable: true,
177
- get: function () { return chunkQFXILJMJ_cjs.PanelPortal; }
170
+ get: function () { return chunkK4763GD5_cjs.PanelPortal; }
178
171
  });
179
172
  Object.defineProperty(exports, "createPanelWindowManager", {
180
173
  enumerable: true,
181
- get: function () { return chunkQFXILJMJ_cjs.createPanelWindowManager; }
174
+ get: function () { return chunk2RLA6QO2_cjs.createPanelWindowManager; }
182
175
  });
183
176
  Object.defineProperty(exports, "usePanelHostSupport", {
184
177
  enumerable: true,
185
- get: function () { return chunkQFXILJMJ_cjs.usePanelHostSupport; }
178
+ get: function () { return chunk2RLA6QO2_cjs.usePanelHostSupport; }
186
179
  });
187
180
  Object.defineProperty(exports, "DEFAULT_MOBILE_BARS_LABELS", {
188
181
  enumerable: true,
189
- get: function () { return chunk4NPCDS2X_cjs.DEFAULT_MOBILE_BARS_LABELS; }
182
+ get: function () { return chunkNY3YUCOW_cjs.DEFAULT_MOBILE_BARS_LABELS; }
190
183
  });
191
184
  Object.defineProperty(exports, "DEFAULT_WORKSPACE_KIND_LABELS", {
192
185
  enumerable: true,
193
- get: function () { return chunk4NPCDS2X_cjs.DEFAULT_WORKSPACE_KIND_LABELS; }
186
+ get: function () { return chunkNY3YUCOW_cjs.DEFAULT_WORKSPACE_KIND_LABELS; }
194
187
  });
195
188
  Object.defineProperty(exports, "DEFAULT_WORKSPACE_SWITCHER_LABELS", {
196
189
  enumerable: true,
197
- get: function () { return chunk4NPCDS2X_cjs.DEFAULT_WORKSPACE_SWITCHER_LABELS; }
190
+ get: function () { return chunkNY3YUCOW_cjs.DEFAULT_WORKSPACE_SWITCHER_LABELS; }
198
191
  });
199
192
  Object.defineProperty(exports, "MobileAppBar", {
200
193
  enumerable: true,
201
- get: function () { return chunk4NPCDS2X_cjs.MobileAppBar; }
194
+ get: function () { return chunkNY3YUCOW_cjs.MobileAppBar; }
202
195
  });
203
196
  Object.defineProperty(exports, "MobileTabBar", {
204
197
  enumerable: true,
205
- get: function () { return chunk4NPCDS2X_cjs.MobileTabBar; }
198
+ get: function () { return chunkNY3YUCOW_cjs.MobileTabBar; }
206
199
  });
207
200
  Object.defineProperty(exports, "WorkspaceIdentity", {
208
201
  enumerable: true,
209
- get: function () { return chunk4NPCDS2X_cjs.WorkspaceIdentity; }
202
+ get: function () { return chunkNY3YUCOW_cjs.WorkspaceIdentity; }
210
203
  });
211
204
  Object.defineProperty(exports, "WorkspaceSwitcher", {
212
205
  enumerable: true,
213
- get: function () { return chunk4NPCDS2X_cjs.WorkspaceSwitcher; }
206
+ get: function () { return chunkNY3YUCOW_cjs.WorkspaceSwitcher; }
214
207
  });
215
208
  Object.defineProperty(exports, "hasUnsavedInput", {
216
209
  enumerable: true,
217
- get: function () { return chunk4NPCDS2X_cjs.hasUnsavedInput; }
210
+ get: function () { return chunkNY3YUCOW_cjs.hasUnsavedInput; }
218
211
  });
219
212
  Object.defineProperty(exports, "installReloadPolicy", {
220
213
  enumerable: true,
221
- get: function () { return chunk4NPCDS2X_cjs.installReloadPolicy; }
214
+ get: function () { return chunkNY3YUCOW_cjs.installReloadPolicy; }
222
215
  });
223
216
  Object.defineProperty(exports, "markBuildStale", {
224
217
  enumerable: true,
225
- get: function () { return chunk4NPCDS2X_cjs.markBuildStale; }
218
+ get: function () { return chunkNY3YUCOW_cjs.markBuildStale; }
226
219
  });
227
220
  Object.defineProperty(exports, "prefetchChunk", {
228
221
  enumerable: true,
229
- get: function () { return chunk4NPCDS2X_cjs.prefetchChunk; }
222
+ get: function () { return chunkNY3YUCOW_cjs.prefetchChunk; }
230
223
  });
231
224
  Object.defineProperty(exports, "requestReload", {
232
225
  enumerable: true,
233
- get: function () { return chunk4NPCDS2X_cjs.requestReload; }
226
+ get: function () { return chunkNY3YUCOW_cjs.requestReload; }
234
227
  });
235
228
  Object.defineProperty(exports, "workspaceKindColor", {
236
229
  enumerable: true,
237
- get: function () { return chunk4NPCDS2X_cjs.workspaceKindColor; }
230
+ get: function () { return chunkNY3YUCOW_cjs.workspaceKindColor; }
238
231
  });
239
232
  Object.defineProperty(exports, "workspaceKindMeta", {
240
233
  enumerable: true,
241
- get: function () { return chunk4NPCDS2X_cjs.workspaceKindMeta; }
234
+ get: function () { return chunkNY3YUCOW_cjs.workspaceKindMeta; }
242
235
  });
243
236
  Object.defineProperty(exports, "DEFAULT_SIDEBAR_LABELS", {
244
237
  enumerable: true,
245
- get: function () { return chunkQ6DQGGP4_cjs.DEFAULT_SIDEBAR_LABELS; }
238
+ get: function () { return chunk325GVZE6_cjs.DEFAULT_SIDEBAR_LABELS; }
246
239
  });
247
240
  Object.defineProperty(exports, "SHELL_START_INSET_VAR", {
248
241
  enumerable: true,
249
- get: function () { return chunkQ6DQGGP4_cjs.SHELL_START_INSET_VAR; }
242
+ get: function () { return chunk325GVZE6_cjs.SHELL_START_INSET_VAR; }
250
243
  });
251
244
  Object.defineProperty(exports, "Sidebar", {
252
245
  enumerable: true,
253
- get: function () { return chunkQ6DQGGP4_cjs.Sidebar; }
246
+ get: function () { return chunk325GVZE6_cjs.Sidebar; }
254
247
  });
255
248
  Object.defineProperty(exports, "SidebarBadgeRow", {
256
249
  enumerable: true,
257
- get: function () { return chunkQ6DQGGP4_cjs.SidebarBadgeRow; }
250
+ get: function () { return chunk325GVZE6_cjs.SidebarBadgeRow; }
258
251
  });
259
252
  Object.defineProperty(exports, "SidebarRowHoverContext", {
260
253
  enumerable: true,
261
- get: function () { return chunkQ6DQGGP4_cjs.SidebarRowHoverContext; }
254
+ get: function () { return chunk325GVZE6_cjs.SidebarRowHoverContext; }
262
255
  });
263
256
  Object.defineProperty(exports, "useShellStartInset", {
264
257
  enumerable: true,
265
- get: function () { return chunkQ6DQGGP4_cjs.useShellStartInset; }
258
+ get: function () { return chunk325GVZE6_cjs.useShellStartInset; }
266
259
  });
267
260
  Object.defineProperty(exports, "useSidebarContext", {
268
261
  enumerable: true,
269
- get: function () { return chunkQ6DQGGP4_cjs.useSidebarContext; }
262
+ get: function () { return chunk325GVZE6_cjs.useSidebarContext; }
263
+ });
264
+ Object.defineProperty(exports, "DEFAULT_FILTER_FIELDS", {
265
+ enumerable: true,
266
+ get: function () { return chunk6UZC4XVV_cjs.DEFAULT_FILTER_FIELDS; }
267
+ });
268
+ Object.defineProperty(exports, "DEFAULT_FILTER_INPUT_LABELS", {
269
+ enumerable: true,
270
+ get: function () { return chunk6UZC4XVV_cjs.DEFAULT_FILTER_INPUT_LABELS; }
271
+ });
272
+ Object.defineProperty(exports, "FilterInput", {
273
+ enumerable: true,
274
+ get: function () { return chunk6UZC4XVV_cjs.FilterInput; }
275
+ });
276
+ Object.defineProperty(exports, "getInstallInstructions", {
277
+ enumerable: true,
278
+ get: function () { return chunkKKYNTWDU_cjs.getInstallInstructions; }
279
+ });
280
+ Object.defineProperty(exports, "isIosDevice", {
281
+ enumerable: true,
282
+ get: function () { return chunkKKYNTWDU_cjs.isIosDevice; }
283
+ });
284
+ Object.defineProperty(exports, "DEFAULT_TAB_HEADER_LABELS", {
285
+ enumerable: true,
286
+ get: function () { return chunkSJSGSHIT_cjs.DEFAULT_TAB_HEADER_LABELS; }
287
+ });
288
+ Object.defineProperty(exports, "TabHeader", {
289
+ enumerable: true,
290
+ get: function () { return chunkSJSGSHIT_cjs.TabHeader; }
291
+ });
292
+ Object.defineProperty(exports, "DEFAULT_DOCK_WIDTH", {
293
+ enumerable: true,
294
+ get: function () { return chunkCT3SLXB7_cjs.DEFAULT_DOCK_WIDTH; }
295
+ });
296
+ Object.defineProperty(exports, "Toaster", {
297
+ enumerable: true,
298
+ get: function () { return chunkCT3SLXB7_cjs.Toaster; }
270
299
  });
271
300
  Object.defineProperty(exports, "STATUS_ROW_BASE_CLASS", {
272
301
  enumerable: true,
@@ -328,33 +357,5 @@ Object.defineProperty(exports, "useMediaQuery", {
328
357
  enumerable: true,
329
358
  get: function () { return chunkFX3K6LNZ_cjs.useMediaQuery; }
330
359
  });
331
- Object.defineProperty(exports, "DEFAULT_FILTER_FIELDS", {
332
- enumerable: true,
333
- get: function () { return chunk6UZC4XVV_cjs.DEFAULT_FILTER_FIELDS; }
334
- });
335
- Object.defineProperty(exports, "DEFAULT_FILTER_INPUT_LABELS", {
336
- enumerable: true,
337
- get: function () { return chunk6UZC4XVV_cjs.DEFAULT_FILTER_INPUT_LABELS; }
338
- });
339
- Object.defineProperty(exports, "FilterInput", {
340
- enumerable: true,
341
- get: function () { return chunk6UZC4XVV_cjs.FilterInput; }
342
- });
343
- Object.defineProperty(exports, "getInstallInstructions", {
344
- enumerable: true,
345
- get: function () { return chunkKKYNTWDU_cjs.getInstallInstructions; }
346
- });
347
- Object.defineProperty(exports, "isIosDevice", {
348
- enumerable: true,
349
- get: function () { return chunkKKYNTWDU_cjs.isIosDevice; }
350
- });
351
- Object.defineProperty(exports, "DEFAULT_TAB_HEADER_LABELS", {
352
- enumerable: true,
353
- get: function () { return chunkSJSGSHIT_cjs.DEFAULT_TAB_HEADER_LABELS; }
354
- });
355
- Object.defineProperty(exports, "TabHeader", {
356
- enumerable: true,
357
- get: function () { return chunkSJSGSHIT_cjs.TabHeader; }
358
- });
359
360
  //# sourceMappingURL=index.cjs.map
360
361
  //# sourceMappingURL=index.cjs.map
@@ -12,6 +12,7 @@ class PanelWindowManager {
12
12
  if (this.windows.has(windowId)) {
13
13
  const existing = this.windows.get(windowId);
14
14
  if (existing && !existing.window.closed) {
15
+ if (onClose) existing.onClose = onClose;
15
16
  existing.window.focus();
16
17
  return windowId;
17
18
  } else {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/shell/panel-windows.ts"],
4
- "sourcesContent": ["/**\n * Window Manager for Pop-out Panels\n *\n * Handles creating, managing, and communicating with popup windows\n */\n\ninterface PopupWindow {\n id: string\n window: Window\n panelId: string\n rootElement: HTMLElement | null\n onClose?: () => void\n}\n\n/** Window lifecycle port; hosts may share or replace the browser implementation. */\nexport interface PanelWindows {\n createPopupWindow(panelId: string, onClose?: () => void, title?: string): string | null\n getWindow(windowId: string): Window | null\n getRootElement(windowId: string): HTMLElement | null\n focusPanelWindow(panelId: string): boolean\n clearOnClose(windowId: string): void\n closeWindow(windowId: string): void\n closeAllWindows(): void\n}\n\nclass PanelWindowManager implements PanelWindows {\n constructor(private readonly defaultTitle = 'Panel') {}\n private windows = new Map<string, PopupWindow>()\n /** Counts the windows opened, for their browser names. */\n private opened = 0\n\n createPopupWindow(panelId: string, onClose?: () => void, title?: string): string | null {\n const windowId = `panel-window-${panelId}`\n\n // Check if window already exists\n if (this.windows.has(windowId)) {\n const existing = this.windows.get(windowId)\n if (existing && !existing.window.closed) {\n existing.window.focus()\n return windowId\n } else {\n // Clean up closed window\n this.windows.delete(windowId)\n }\n }\n\n // Position popup in the right half of the screen\n const currentWidth = window.outerWidth\n const currentHeight = window.outerHeight\n const currentLeft = window.screenX ?? window.screenLeft ?? 0\n const currentTop = window.screenY ?? window.screenTop ?? 0\n\n // Calculate popup position (right half)\n const halfWidth = Math.floor(currentWidth / 2)\n const popupWidth = halfWidth\n const popupHeight = currentHeight\n const left = currentLeft + halfWidth\n const top = currentTop\n\n const popup = window.open(\n '',\n // A browser window name of its own: one closed a moment ago (a panel remounted, as React's\n // StrictMode does) may still be closing, and reusing its name would hand back that window.\n `${windowId}-${++this.opened}`,\n `width=${popupWidth},height=${popupHeight},left=${left},top=${top},scrollbars=yes,resizable=yes,menubar=no,toolbar=no,location=no,status=no`\n )\n\n if (!popup) {\n console.error('Failed to create popup window - popup blocked?')\n return null\n }\n\n // Set up the popup window HTML with proper CSS links\n const mainDocument = document\n const stylesheets = Array.from(\n mainDocument.head.querySelectorAll('link[rel=\"stylesheet\"], style')\n )\n .map((el) => el.outerHTML)\n .join('\\n')\n\n popup.document.write(`\n <!DOCTYPE html>\n <html lang=\"en\">\n <head>\n <meta charset=\"UTF-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n <title></title>\n <!-- about:blank has no base, so copied @font-face / asset URLs (e.g.\n /assets/font.woff2) would resolve against nothing and render as\n tofu squares. Anchor relative URLs to the app origin. -->\n <base href=\"${window.location.origin}/\">\n ${stylesheets}\n <style>\n body {\n margin: 0;\n padding: 0;\n font-family: system-ui, -apple-system, sans-serif;\n }\n #panel-root {\n width: 100%;\n height: 100vh;\n overflow: hidden;\n }\n * {\n box-sizing: border-box;\n }\n </style>\n </head>\n <body>\n <div id=\"panel-root\"></div>\n </body>\n </html>\n `)\n popup.document.close()\n // A host title is text, even when it contains HTML delimiters.\n popup.document.title = title || this.defaultTitle\n\n // Belt-and-suspenders: re-register the parent's already-loaded web fonts in\n // the popup's FontFaceSet, so glyphs render even if a copied @font-face\n // doesn't re-fetch. Best-effort \u2014 engines that reject a cross-document add\n // just fall back to the <base>-anchored @font-face rules above.\n try {\n mainDocument.fonts.forEach((font) => {\n try {\n popup.document.fonts.add(font)\n } catch {\n /* ignore per-font failures */\n }\n })\n } catch {\n /* FontFaceSet unavailable \u2014 ignore */\n }\n\n // Get root element after DOM is ready\n const rootElement = popup.document.getElementById('panel-root')\n\n // Store window reference\n const popupWindow: PopupWindow = {\n id: windowId,\n window: popup,\n panelId,\n rootElement,\n onClose,\n }\n this.windows.set(windowId, popupWindow)\n\n // Handle window close \u2014 read onClose from the map entry so clearOnClose() works\n const closeCheckInterval = setInterval(() => {\n if (popup.closed) {\n clearInterval(closeCheckInterval)\n const entry = this.windows.get(windowId)\n // The panel may have a newer window by now (closed and reopened): leave that one be.\n if (entry?.window !== popup) return\n this.windows.delete(windowId)\n entry.onClose?.()\n }\n }, 200)\n\n return windowId\n }\n\n getWindow(windowId: string): Window | null {\n const popup = this.windows.get(windowId)\n return popup && !popup.window.closed ? popup.window : null\n }\n\n getRootElement(windowId: string): HTMLElement | null {\n const popup = this.windows.get(windowId)\n return popup && !popup.window.closed ? popup.rootElement : null\n }\n\n /** Focus the popup window for a given panel ID. Returns true if focused. */\n focusPanelWindow(panelId: string): boolean {\n const windowId = `panel-window-panel-${panelId}`\n const popup = this.windows.get(windowId)\n if (popup && !popup.window.closed) {\n popup.window.focus()\n return true\n }\n return false\n }\n\n /** Remove the onClose callback so it won't fire when the window is closed programmatically. */\n clearOnClose(windowId: string): void {\n const popup = this.windows.get(windowId)\n if (popup) {\n popup.onClose = undefined\n }\n }\n\n closeWindow(windowId: string): void {\n const popup = this.windows.get(windowId)\n if (popup && !popup.window.closed) {\n popup.window.close()\n }\n this.windows.delete(windowId)\n }\n\n closeAllWindows(): void {\n for (const [, popup] of this.windows) {\n if (!popup.window.closed) {\n popup.window.close()\n }\n }\n this.windows.clear()\n }\n}\n\n/** A window registry shared by the host's panel controls and portal layer. */\nexport function createPanelWindowManager(options: { defaultTitle?: string } = {}) {\n return new PanelWindowManager(options.defaultTitle)\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/**\n * Window Manager for Pop-out Panels\n *\n * Handles creating, managing, and communicating with popup windows\n */\n\ninterface PopupWindow {\n id: string\n window: Window\n panelId: string\n rootElement: HTMLElement | null\n onClose?: () => void\n}\n\n/** Window lifecycle port; hosts may share or replace the browser implementation. */\nexport interface PanelWindows {\n createPopupWindow(panelId: string, onClose?: () => void, title?: string): string | null\n getWindow(windowId: string): Window | null\n getRootElement(windowId: string): HTMLElement | null\n focusPanelWindow(panelId: string): boolean\n clearOnClose(windowId: string): void\n closeWindow(windowId: string): void\n closeAllWindows(): void\n}\n\nclass PanelWindowManager implements PanelWindows {\n constructor(private readonly defaultTitle = 'Panel') {}\n private windows = new Map<string, PopupWindow>()\n /** Counts the windows opened, for their browser names. */\n private opened = 0\n\n createPopupWindow(panelId: string, onClose?: () => void, title?: string): string | null {\n const windowId = `panel-window-${panelId}`\n\n // Check if window already exists\n if (this.windows.has(windowId)) {\n const existing = this.windows.get(windowId)\n if (existing && !existing.window.closed) {\n // Opened ahead in a click (so the browser lets it open); the panel adopts it.\n if (onClose) existing.onClose = onClose\n existing.window.focus()\n return windowId\n } else {\n // Clean up closed window\n this.windows.delete(windowId)\n }\n }\n\n // Position popup in the right half of the screen\n const currentWidth = window.outerWidth\n const currentHeight = window.outerHeight\n const currentLeft = window.screenX ?? window.screenLeft ?? 0\n const currentTop = window.screenY ?? window.screenTop ?? 0\n\n // Calculate popup position (right half)\n const halfWidth = Math.floor(currentWidth / 2)\n const popupWidth = halfWidth\n const popupHeight = currentHeight\n const left = currentLeft + halfWidth\n const top = currentTop\n\n const popup = window.open(\n '',\n // A browser window name of its own: one closed a moment ago (a panel remounted, as React's\n // StrictMode does) may still be closing, and reusing its name would hand back that window.\n `${windowId}-${++this.opened}`,\n `width=${popupWidth},height=${popupHeight},left=${left},top=${top},scrollbars=yes,resizable=yes,menubar=no,toolbar=no,location=no,status=no`\n )\n\n if (!popup) {\n console.error('Failed to create popup window - popup blocked?')\n return null\n }\n\n // Set up the popup window HTML with proper CSS links\n const mainDocument = document\n const stylesheets = Array.from(\n mainDocument.head.querySelectorAll('link[rel=\"stylesheet\"], style')\n )\n .map((el) => el.outerHTML)\n .join('\\n')\n\n popup.document.write(`\n <!DOCTYPE html>\n <html lang=\"en\">\n <head>\n <meta charset=\"UTF-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n <title></title>\n <!-- about:blank has no base, so copied @font-face / asset URLs (e.g.\n /assets/font.woff2) would resolve against nothing and render as\n tofu squares. Anchor relative URLs to the app origin. -->\n <base href=\"${window.location.origin}/\">\n ${stylesheets}\n <style>\n body {\n margin: 0;\n padding: 0;\n font-family: system-ui, -apple-system, sans-serif;\n }\n #panel-root {\n width: 100%;\n height: 100vh;\n overflow: hidden;\n }\n * {\n box-sizing: border-box;\n }\n </style>\n </head>\n <body>\n <div id=\"panel-root\"></div>\n </body>\n </html>\n `)\n popup.document.close()\n // A host title is text, even when it contains HTML delimiters.\n popup.document.title = title || this.defaultTitle\n\n // Belt-and-suspenders: re-register the parent's already-loaded web fonts in\n // the popup's FontFaceSet, so glyphs render even if a copied @font-face\n // doesn't re-fetch. Best-effort \u2014 engines that reject a cross-document add\n // just fall back to the <base>-anchored @font-face rules above.\n try {\n mainDocument.fonts.forEach((font) => {\n try {\n popup.document.fonts.add(font)\n } catch {\n /* ignore per-font failures */\n }\n })\n } catch {\n /* FontFaceSet unavailable \u2014 ignore */\n }\n\n // Get root element after DOM is ready\n const rootElement = popup.document.getElementById('panel-root')\n\n // Store window reference\n const popupWindow: PopupWindow = {\n id: windowId,\n window: popup,\n panelId,\n rootElement,\n onClose,\n }\n this.windows.set(windowId, popupWindow)\n\n // Handle window close \u2014 read onClose from the map entry so clearOnClose() works\n const closeCheckInterval = setInterval(() => {\n if (popup.closed) {\n clearInterval(closeCheckInterval)\n const entry = this.windows.get(windowId)\n // The panel may have a newer window by now (closed and reopened): leave that one be.\n if (entry?.window !== popup) return\n this.windows.delete(windowId)\n entry.onClose?.()\n }\n }, 200)\n\n return windowId\n }\n\n getWindow(windowId: string): Window | null {\n const popup = this.windows.get(windowId)\n return popup && !popup.window.closed ? popup.window : null\n }\n\n getRootElement(windowId: string): HTMLElement | null {\n const popup = this.windows.get(windowId)\n return popup && !popup.window.closed ? popup.rootElement : null\n }\n\n /** Focus the popup window for a given panel ID. Returns true if focused. */\n focusPanelWindow(panelId: string): boolean {\n const windowId = `panel-window-panel-${panelId}`\n const popup = this.windows.get(windowId)\n if (popup && !popup.window.closed) {\n popup.window.focus()\n return true\n }\n return false\n }\n\n /** Remove the onClose callback so it won't fire when the window is closed programmatically. */\n clearOnClose(windowId: string): void {\n const popup = this.windows.get(windowId)\n if (popup) {\n popup.onClose = undefined\n }\n }\n\n closeWindow(windowId: string): void {\n const popup = this.windows.get(windowId)\n if (popup && !popup.window.closed) {\n popup.window.close()\n }\n this.windows.delete(windowId)\n }\n\n closeAllWindows(): void {\n for (const [, popup] of this.windows) {\n if (!popup.window.closed) {\n popup.window.close()\n }\n }\n this.windows.clear()\n }\n}\n\n/** A window registry shared by the host's panel controls and portal layer. */\nexport function createPanelWindowManager(options: { defaultTitle?: string } = {}) {\n return new PanelWindowManager(options.defaultTitle)\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -1,34 +1,24 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
- var chunk474GPLCM_cjs = require('../chunk-474GPLCM.cjs');
5
- require('../chunk-NAJN32MF.cjs');
6
- require('../chunk-NLOETJCB.cjs');
7
- require('../chunk-GKVE5JGB.cjs');
8
- require('../chunk-GQXPNIRE.cjs');
4
+ var chunk7L4X6QN2_cjs = require('../chunk-7L4X6QN2.cjs');
5
+ require('../chunk-XF355M7O.cjs');
6
+ require('../chunk-2F57IO7S.cjs');
7
+ require('../chunk-UFT22LAB.cjs');
8
+ require('../chunk-WAV762GP.cjs');
9
9
  var chunk4EK7TAP7_cjs = require('../chunk-4EK7TAP7.cjs');
10
10
  var chunkUZHWXKS6_cjs = require('../chunk-UZHWXKS6.cjs');
11
11
  var chunkPBPO54KZ_cjs = require('../chunk-PBPO54KZ.cjs');
12
12
  var chunkVRK3IQAP_cjs = require('../chunk-VRK3IQAP.cjs');
13
13
  var chunkANWJG4A4_cjs = require('../chunk-ANWJG4A4.cjs');
14
14
  var chunkICZSVCDT_cjs = require('../chunk-ICZSVCDT.cjs');
15
- var chunk2W5E62EY_cjs = require('../chunk-2W5E62EY.cjs');
15
+ var chunkSGYSDABK_cjs = require('../chunk-SGYSDABK.cjs');
16
16
  var chunkNEGFHF3V_cjs = require('../chunk-NEGFHF3V.cjs');
17
17
  require('../chunk-ADMNU2CR.cjs');
18
18
  var chunkPCB2BPN3_cjs = require('../chunk-PCB2BPN3.cjs');
19
- require('../chunk-KNGZZC4O.cjs');
20
- require('../chunk-IDCD5TEZ.cjs');
21
- require('../chunk-M2FOXGJU.cjs');
22
- require('../chunk-5F4DCIHS.cjs');
23
19
  var chunk34HQO4ZQ_cjs = require('../chunk-34HQO4ZQ.cjs');
24
- require('../chunk-Q6DQGGP4.cjs');
20
+ require('../chunk-325GVZE6.cjs');
25
21
  require('../chunk-NWNVWO6L.cjs');
26
- require('../chunk-AFQTQC7A.cjs');
27
- require('../chunk-XJEXFEWG.cjs');
28
- require('../chunk-YZSQ7F5K.cjs');
29
- require('../chunk-MCXS6X37.cjs');
30
- require('../chunk-KQF7POTG.cjs');
31
- require('../chunk-75BNMCUX.cjs');
32
22
  var chunkULPTSXXO_cjs = require('../chunk-ULPTSXXO.cjs');
33
23
  var chunkZU2B2RZK_cjs = require('../chunk-ZU2B2RZK.cjs');
34
24
  var chunkNSD37OF5_cjs = require('../chunk-NSD37OF5.cjs');
@@ -36,23 +26,33 @@ require('../chunk-OEJQFPWO.cjs');
36
26
  require('../chunk-I4IS6ST6.cjs');
37
27
  require('../chunk-7JLJH5CW.cjs');
38
28
  require('../chunk-EVZH6Z5O.cjs');
39
- require('../chunk-IN6ILI5A.cjs');
40
- require('../chunk-HSLPFBK2.cjs');
41
29
  require('../chunk-II2OEXHW.cjs');
42
- require('../chunk-MZ2KZXNU.cjs');
30
+ require('../chunk-WXUU3COI.cjs');
43
31
  require('../chunk-AHDJXIUB.cjs');
44
32
  require('../chunk-YVCOQHCE.cjs');
45
- require('../chunk-QGVOT7E4.cjs');
46
- require('../chunk-QRAQZTJE.cjs');
47
- require('../chunk-UDSHVNU3.cjs');
48
33
  require('../chunk-JV5TVUOU.cjs');
49
- var chunkIPSHAMO2_cjs = require('../chunk-IPSHAMO2.cjs');
50
34
  require('../chunk-VZOOGA47.cjs');
51
35
  require('../chunk-HQDR43JC.cjs');
52
36
  var chunkJR2YSBD5_cjs = require('../chunk-JR2YSBD5.cjs');
53
37
  require('../chunk-3YZKDCWY.cjs');
54
- require('../chunk-PPCATBOY.cjs');
55
38
  var chunkZW6FPIFC_cjs = require('../chunk-ZW6FPIFC.cjs');
39
+ require('../chunk-KNGZZC4O.cjs');
40
+ require('../chunk-IDCD5TEZ.cjs');
41
+ require('../chunk-M2FOXGJU.cjs');
42
+ require('../chunk-5F4DCIHS.cjs');
43
+ require('../chunk-AFQTQC7A.cjs');
44
+ require('../chunk-XJEXFEWG.cjs');
45
+ require('../chunk-YZSQ7F5K.cjs');
46
+ require('../chunk-MCXS6X37.cjs');
47
+ require('../chunk-KQF7POTG.cjs');
48
+ require('../chunk-75BNMCUX.cjs');
49
+ require('../chunk-IN6ILI5A.cjs');
50
+ require('../chunk-HSLPFBK2.cjs');
51
+ require('../chunk-QGVOT7E4.cjs');
52
+ require('../chunk-QRAQZTJE.cjs');
53
+ require('../chunk-UDSHVNU3.cjs');
54
+ var chunkIPSHAMO2_cjs = require('../chunk-IPSHAMO2.cjs');
55
+ require('../chunk-PPCATBOY.cjs');
56
56
  var chunkTKHCIHE2_cjs = require('../chunk-TKHCIHE2.cjs');
57
57
  require('../chunk-JDFBEGQO.cjs');
58
58
  require('../chunk-ULWRNGGE.cjs');
@@ -619,7 +619,7 @@ function StudioEditor({
619
619
  className: "w-80 shrink-0 border-l border-border",
620
620
  "data-testid": `${testIdPrefix}-theme-drawer`,
621
621
  children: /* @__PURE__ */ jsxRuntime.jsx(
622
- chunk2W5E62EY_cjs.ThemeEditor,
622
+ chunkSGYSDABK_cjs.ThemeEditor,
623
623
  {
624
624
  bundle: themeBundle,
625
625
  variant: "drawer",
@@ -992,7 +992,7 @@ function latestImageDocId(artifacts) {
992
992
  return null;
993
993
  }
994
994
  function useImageGen() {
995
- const task = chunk474GPLCM_cjs.useConnectedAiTask();
995
+ const task = chunk7L4X6QN2_cjs.useConnectedAiTask();
996
996
  const { run } = task;
997
997
  const generate = react.useCallback(
998
998
  async (prompt, referenceDocIds = []) => {
@@ -3391,7 +3391,7 @@ function VerticalBuilder({
3391
3391
  ] })
3392
3392
  ] }),
3393
3393
  /* @__PURE__ */ jsxRuntime.jsx(ui.TabsContent, { value: "theme", children: /* @__PURE__ */ jsxRuntime.jsx(
3394
- chunk2W5E62EY_cjs.ThemeEditor,
3394
+ chunkSGYSDABK_cjs.ThemeEditor,
3395
3395
  {
3396
3396
  bundle: themeBundle,
3397
3397
  variant: "panel",