dockview-core 1.17.2 → 2.1.0

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 (132) hide show
  1. package/dist/cjs/api/component.api.d.ts +3 -3
  2. package/dist/cjs/api/dockviewGroupPanelApi.d.ts +10 -8
  3. package/dist/cjs/api/dockviewGroupPanelApi.js +1 -0
  4. package/dist/cjs/api/dockviewPanelApi.d.ts +6 -14
  5. package/dist/cjs/api/dockviewPanelApi.js +5 -3
  6. package/dist/cjs/dnd/abstractDragHandler.js +1 -1
  7. package/dist/cjs/dnd/dnd.d.ts +2 -2
  8. package/dist/cjs/dnd/droptarget.js +4 -4
  9. package/dist/cjs/dockview/components/panel/content.d.ts +2 -2
  10. package/dist/cjs/dockview/components/panel/content.js +3 -1
  11. package/dist/cjs/dockview/components/tab/defaultTab.d.ts +3 -3
  12. package/dist/cjs/dockview/components/tab/tab.js +4 -4
  13. package/dist/cjs/dockview/components/titlebar/tabsContainer.js +5 -9
  14. package/dist/cjs/dockview/components/titlebar/voidContainer.js +1 -2
  15. package/dist/cjs/dockview/components/watermark/watermark.d.ts +1 -4
  16. package/dist/cjs/dockview/components/watermark/watermark.js +2 -34
  17. package/dist/cjs/dockview/dockviewComponent.d.ts +33 -16
  18. package/dist/cjs/dockview/dockviewComponent.js +103 -38
  19. package/dist/cjs/dockview/dockviewGroupPanel.js +16 -12
  20. package/dist/cjs/dockview/dockviewGroupPanelModel.d.ts +4 -3
  21. package/dist/cjs/dockview/dockviewGroupPanelModel.js +10 -10
  22. package/dist/cjs/dockview/dockviewPanel.d.ts +4 -4
  23. package/dist/cjs/dockview/dockviewPanelModel.d.ts +1 -1
  24. package/dist/cjs/dockview/options.d.ts +12 -0
  25. package/dist/cjs/dockview/options.js +1 -0
  26. package/dist/cjs/dom.d.ts +11 -1
  27. package/dist/cjs/dom.js +19 -1
  28. package/dist/cjs/gridview/baseComponentGridview.d.ts +8 -3
  29. package/dist/cjs/gridview/baseComponentGridview.js +8 -8
  30. package/dist/cjs/gridview/basePanelView.d.ts +1 -1
  31. package/dist/cjs/gridview/branchNode.d.ts +1 -1
  32. package/dist/cjs/gridview/branchNode.js +1 -1
  33. package/dist/cjs/gridview/gridview.d.ts +9 -1
  34. package/dist/cjs/gridview/gridview.js +51 -7
  35. package/dist/cjs/gridview/gridviewPanel.d.ts +4 -0
  36. package/dist/cjs/gridview/gridviewPanel.js +60 -32
  37. package/dist/cjs/gridview/leafNode.d.ts +1 -1
  38. package/dist/cjs/index.d.ts +8 -9
  39. package/dist/cjs/index.js +14 -7
  40. package/dist/cjs/overlay/overlay.d.ts +6 -3
  41. package/dist/cjs/overlay/overlay.js +15 -0
  42. package/dist/cjs/paneview/defaultPaneviewHeader.d.ts +1 -1
  43. package/dist/cjs/paneview/defaultPaneviewHeader.js +5 -3
  44. package/dist/cjs/paneview/paneview.d.ts +3 -3
  45. package/dist/cjs/paneview/paneview.js +3 -3
  46. package/dist/cjs/paneview/paneviewComponent.d.ts +2 -2
  47. package/dist/cjs/paneview/paneviewPanel.d.ts +2 -2
  48. package/dist/cjs/paneview/paneviewPanel.js +3 -3
  49. package/dist/cjs/popoutWindow.js +23 -16
  50. package/dist/cjs/splitview/splitview.d.ts +6 -6
  51. package/dist/cjs/splitview/splitview.js +18 -17
  52. package/dist/cjs/splitview/splitviewComponent.d.ts +2 -2
  53. package/dist/cjs/splitview/viewItem.d.ts +1 -1
  54. package/dist/cjs/svg.js +1 -1
  55. package/dist/dockview-core.amd.js +346 -210
  56. package/dist/dockview-core.amd.js.map +1 -1
  57. package/dist/dockview-core.amd.min.js +2 -2
  58. package/dist/dockview-core.amd.min.js.map +1 -1
  59. package/dist/dockview-core.amd.min.noStyle.js +2 -2
  60. package/dist/dockview-core.amd.min.noStyle.js.map +1 -1
  61. package/dist/dockview-core.amd.noStyle.js +345 -209
  62. package/dist/dockview-core.amd.noStyle.js.map +1 -1
  63. package/dist/dockview-core.cjs.js +346 -210
  64. package/dist/dockview-core.cjs.js.map +1 -1
  65. package/dist/dockview-core.esm.js +347 -209
  66. package/dist/dockview-core.esm.js.map +1 -1
  67. package/dist/dockview-core.esm.min.js +2 -2
  68. package/dist/dockview-core.esm.min.js.map +1 -1
  69. package/dist/dockview-core.js +346 -210
  70. package/dist/dockview-core.js.map +1 -1
  71. package/dist/dockview-core.min.js +2 -2
  72. package/dist/dockview-core.min.js.map +1 -1
  73. package/dist/dockview-core.min.noStyle.js +2 -2
  74. package/dist/dockview-core.min.noStyle.js.map +1 -1
  75. package/dist/dockview-core.noStyle.js +345 -209
  76. package/dist/dockview-core.noStyle.js.map +1 -1
  77. package/dist/esm/api/component.api.d.ts +3 -3
  78. package/dist/esm/api/dockviewGroupPanelApi.d.ts +10 -8
  79. package/dist/esm/api/dockviewGroupPanelApi.js +1 -0
  80. package/dist/esm/api/dockviewPanelApi.d.ts +6 -14
  81. package/dist/esm/api/dockviewPanelApi.js +5 -3
  82. package/dist/esm/dnd/abstractDragHandler.js +1 -1
  83. package/dist/esm/dnd/dnd.d.ts +2 -2
  84. package/dist/esm/dnd/droptarget.js +4 -4
  85. package/dist/esm/dockview/components/panel/content.d.ts +2 -2
  86. package/dist/esm/dockview/components/panel/content.js +4 -2
  87. package/dist/esm/dockview/components/tab/defaultTab.d.ts +3 -3
  88. package/dist/esm/dockview/components/tab/tab.js +4 -4
  89. package/dist/esm/dockview/components/titlebar/tabsContainer.js +5 -9
  90. package/dist/esm/dockview/components/titlebar/voidContainer.js +1 -2
  91. package/dist/esm/dockview/components/watermark/watermark.d.ts +1 -4
  92. package/dist/esm/dockview/components/watermark/watermark.js +2 -34
  93. package/dist/esm/dockview/dockviewComponent.d.ts +33 -16
  94. package/dist/esm/dockview/dockviewComponent.js +102 -37
  95. package/dist/esm/dockview/dockviewGroupPanel.js +16 -12
  96. package/dist/esm/dockview/dockviewGroupPanelModel.d.ts +4 -3
  97. package/dist/esm/dockview/dockviewGroupPanelModel.js +10 -10
  98. package/dist/esm/dockview/dockviewPanel.d.ts +4 -4
  99. package/dist/esm/dockview/dockviewPanelModel.d.ts +1 -1
  100. package/dist/esm/dockview/options.d.ts +12 -0
  101. package/dist/esm/dockview/options.js +1 -0
  102. package/dist/esm/dom.d.ts +11 -1
  103. package/dist/esm/dom.js +14 -0
  104. package/dist/esm/gridview/baseComponentGridview.d.ts +8 -3
  105. package/dist/esm/gridview/baseComponentGridview.js +8 -4
  106. package/dist/esm/gridview/basePanelView.d.ts +1 -1
  107. package/dist/esm/gridview/branchNode.d.ts +1 -1
  108. package/dist/esm/gridview/branchNode.js +1 -1
  109. package/dist/esm/gridview/gridview.d.ts +9 -1
  110. package/dist/esm/gridview/gridview.js +51 -7
  111. package/dist/esm/gridview/gridviewPanel.d.ts +4 -0
  112. package/dist/esm/gridview/gridviewPanel.js +40 -12
  113. package/dist/esm/gridview/leafNode.d.ts +1 -1
  114. package/dist/esm/index.d.ts +8 -9
  115. package/dist/esm/index.js +5 -6
  116. package/dist/esm/overlay/overlay.d.ts +6 -3
  117. package/dist/esm/overlay/overlay.js +11 -0
  118. package/dist/esm/paneview/defaultPaneviewHeader.d.ts +1 -1
  119. package/dist/esm/paneview/defaultPaneviewHeader.js +5 -3
  120. package/dist/esm/paneview/paneview.d.ts +3 -3
  121. package/dist/esm/paneview/paneview.js +3 -3
  122. package/dist/esm/paneview/paneviewComponent.d.ts +2 -2
  123. package/dist/esm/paneview/paneviewPanel.d.ts +2 -2
  124. package/dist/esm/paneview/paneviewPanel.js +3 -3
  125. package/dist/esm/popoutWindow.js +24 -17
  126. package/dist/esm/splitview/splitview.d.ts +6 -6
  127. package/dist/esm/splitview/splitview.js +18 -17
  128. package/dist/esm/splitview/splitviewComponent.d.ts +2 -2
  129. package/dist/esm/splitview/viewItem.d.ts +1 -1
  130. package/dist/esm/svg.js +1 -1
  131. package/dist/styles/dockview.css +111 -151
  132. package/package.json +1 -1
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * dockview-core
3
- * @version 1.17.2
3
+ * @version 2.1.0
4
4
  * @link https://github.com/mathuo/dockview
5
5
  * @license MIT
6
6
  */
@@ -37,7 +37,7 @@
37
37
  }
38
38
  }
39
39
 
40
- var css_248z = ".dockview-svg {\n display: inline-block;\n fill: currentcolor;\n line-height: 1;\n stroke: currentcolor;\n stroke-width: 0;\n}\n.dockview-theme-dark {\n --dv-background-color: black;\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, 0.5);\n --dv-overlay-z-index: 999;\n --dv-group-view-background-color: #1e1e1e;\n --dv-tabs-and-actions-container-background-color: #252526;\n --dv-activegroup-visiblepanel-tab-background-color: #1e1e1e;\n --dv-activegroup-hiddenpanel-tab-background-color: #2d2d2d;\n --dv-inactivegroup-visiblepanel-tab-background-color: #1e1e1e;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #2d2d2d;\n --dv-tab-divider-color: #1e1e1e;\n --dv-activegroup-visiblepanel-tab-color: white;\n --dv-activegroup-hiddenpanel-tab-color: #969696;\n --dv-inactivegroup-visiblepanel-tab-color: #8f8f8f;\n --dv-inactivegroup-hiddenpanel-tab-color: #626262;\n --dv-separator-border: rgb(68, 68, 68);\n --dv-paneview-header-border-color: rgba(204, 204, 204, 0.2);\n}\n\n.dockview-theme-light {\n --dv-background-color: black;\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, 0.5);\n --dv-overlay-z-index: 999;\n --dv-group-view-background-color: white;\n --dv-tabs-and-actions-container-background-color: #f3f3f3;\n --dv-activegroup-visiblepanel-tab-background-color: white;\n --dv-activegroup-hiddenpanel-tab-background-color: #ececec;\n --dv-inactivegroup-visiblepanel-tab-background-color: white;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #ececec;\n --dv-tab-divider-color: white;\n --dv-activegroup-visiblepanel-tab-color: rgb(51, 51, 51);\n --dv-activegroup-hiddenpanel-tab-color: rgba(51, 51, 51, 0.7);\n --dv-inactivegroup-visiblepanel-tab-color: rgba(51, 51, 51, 0.7);\n --dv-inactivegroup-hiddenpanel-tab-color: rgba(51, 51, 51, 0.35);\n --dv-separator-border: rgba(128, 128, 128, 0.35);\n --dv-paneview-header-border-color: rgb(51, 51, 51);\n}\n\n.dockview-theme-vs {\n --dv-background-color: black;\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, 0.5);\n --dv-overlay-z-index: 999;\n --dv-group-view-background-color: #1e1e1e;\n --dv-tabs-and-actions-container-background-color: #252526;\n --dv-activegroup-visiblepanel-tab-background-color: #1e1e1e;\n --dv-activegroup-hiddenpanel-tab-background-color: #2d2d2d;\n --dv-inactivegroup-visiblepanel-tab-background-color: #1e1e1e;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #2d2d2d;\n --dv-tab-divider-color: #1e1e1e;\n --dv-activegroup-visiblepanel-tab-color: white;\n --dv-activegroup-hiddenpanel-tab-color: #969696;\n --dv-inactivegroup-visiblepanel-tab-color: #8f8f8f;\n --dv-inactivegroup-hiddenpanel-tab-color: #626262;\n --dv-separator-border: rgb(68, 68, 68);\n --dv-paneview-header-border-color: rgba(204, 204, 204, 0.2);\n --dv-tabs-and-actions-container-background-color: #2d2d30;\n --dv-tabs-and-actions-container-height: 20px;\n --dv-tabs-and-actions-container-font-size: 11px;\n --dv-activegroup-visiblepanel-tab-background-color: #007acc;\n --dv-inactivegroup-visiblepanel-tab-background-color: #3f3f46;\n --dv-activegroup-visiblepanel-tab-color: white;\n --dv-activegroup-hiddenpanel-tab-color: white;\n --dv-inactivegroup-visiblepanel-tab-color: white;\n --dv-inactivegroup-hiddenpanel-tab-color: white;\n}\n.dockview-theme-vs .groupview.active-group > .tabs-and-actions-container {\n box-sizing: content-box;\n border-bottom: 2px solid var(--dv-activegroup-visiblepanel-tab-background-color);\n}\n.dockview-theme-vs .groupview.active-group > .tabs-and-actions-container .tab.active-tab {\n border-top: 2px solid var(--dv-activegroup-visiblepanel-tab-background-color);\n}\n.dockview-theme-vs .groupview.active-group > .tabs-and-actions-container .tab.inactive-tab {\n border-top: 2px solid var(--dv-activegroup-hiddenpanel-tab-background-color);\n}\n.dockview-theme-vs .groupview.inactive-group > .tabs-and-actions-container {\n box-sizing: content-box;\n border-bottom: 2px solid var(--dv-inactivegroup-visiblepanel-tab-background-color);\n}\n.dockview-theme-vs .groupview.inactive-group > .tabs-and-actions-container .tab.active-tab {\n border-top: 2px solid var(--dv-inactivegroup-visiblepanel-tab-background-color);\n}\n.dockview-theme-vs .groupview.inactive-group > .tabs-and-actions-container .tab.inactive-tab {\n border-top: 2px solid var(--dv-inactivegroup-hiddenpanel-tab-background-color);\n}\n\n.dockview-theme-abyss {\n --dv-background-color: black;\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, 0.5);\n --dv-overlay-z-index: 999;\n --dv-group-view-background-color: #000c18;\n --dv-tabs-and-actions-container-background-color: #1c1c2a;\n --dv-activegroup-visiblepanel-tab-background-color: #000c18;\n --dv-activegroup-hiddenpanel-tab-background-color: #10192c;\n --dv-inactivegroup-visiblepanel-tab-background-color: #000c18;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #10192c;\n --dv-tab-divider-color: #2b2b4a;\n --dv-activegroup-visiblepanel-tab-color: white;\n --dv-activegroup-hiddenpanel-tab-color: rgba(255, 255, 255, 0.5);\n --dv-inactivegroup-visiblepanel-tab-color: rgba(255, 255, 255, 0.5);\n --dv-inactivegroup-hiddenpanel-tab-color: rgba(255, 255, 255, 0.25);\n --dv-separator-border: #2b2b4a;\n --dv-paneview-header-border-color: #2b2b4a;\n --dv-paneview-active-outline-color: #596f99;\n}\n\n.dockview-theme-dracula {\n --dv-background-color: black;\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, 0.5);\n --dv-overlay-z-index: 999;\n --dv-group-view-background-color: #282a36;\n --dv-tabs-and-actions-container-background-color: #191a21;\n --dv-activegroup-visiblepanel-tab-background-color: #282a36;\n --dv-activegroup-hiddenpanel-tab-background-color: #21222c;\n --dv-inactivegroup-visiblepanel-tab-background-color: #282a36;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #21222c;\n --dv-tab-divider-color: #191a21;\n --dv-activegroup-visiblepanel-tab-color: rgb(248, 248, 242);\n --dv-activegroup-hiddenpanel-tab-color: rgb(98, 114, 164);\n --dv-inactivegroup-visiblepanel-tab-color: rgba(248, 248, 242, 0.5);\n --dv-inactivegroup-hiddenpanel-tab-color: rgba(98, 114, 164, 0.5);\n --dv-separator-border: #bd93f9;\n --dv-paneview-header-border-color: #bd93f9;\n --dv-paneview-active-outline-color: #6272a4;\n}\n.dockview-theme-dracula .groupview.active-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab {\n position: relative;\n}\n.dockview-theme-dracula .groupview.active-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab::after {\n position: absolute;\n left: 0px;\n top: 0px;\n content: \"\";\n width: 100%;\n height: 1px;\n background-color: #94527e;\n z-index: 999;\n}\n.dockview-theme-dracula .groupview.inactive-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab {\n position: relative;\n}\n.dockview-theme-dracula .groupview.inactive-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab::after {\n position: absolute;\n left: 0px;\n bottom: 0px;\n content: \"\";\n width: 100%;\n height: 1px;\n background-color: #5e3d5a;\n z-index: 999;\n}\n\n.dockview-theme-replit {\n --dv-background-color: black;\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, 0.5);\n --dv-overlay-z-index: 999;\n --dv-group-view-background-color: #ebeced;\n --dv-tabs-and-actions-container-background-color: #fcfcfc;\n --dv-activegroup-visiblepanel-tab-background-color: #f0f1f2;\n --dv-activegroup-hiddenpanel-tab-background-color: #fcfcfc;\n --dv-inactivegroup-visiblepanel-tab-background-color: #f0f1f2;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #fcfcfc;\n --dv-tab-divider-color: transparent;\n --dv-activegroup-visiblepanel-tab-color: rgb(51, 51, 51);\n --dv-activegroup-hiddenpanel-tab-color: rgb(51, 51, 51);\n --dv-inactivegroup-visiblepanel-tab-color: rgb(51, 51, 51);\n --dv-inactivegroup-hiddenpanel-tab-color: rgb(51, 51, 51);\n --dv-separator-border: transparent;\n --dv-paneview-header-border-color: rgb(51, 51, 51);\n --dv-background-color: #ebeced;\n --dv-separator-handle-background-color: #cfd1d3;\n --dv-separator-handle-hover-background-color: #babbbb;\n}\n.dockview-theme-replit .dv-resize-container:has(> .groupview) {\n border-radius: 8px;\n}\n.dockview-theme-replit .groupview {\n overflow: hidden;\n border-radius: 10px;\n}\n.dockview-theme-replit .groupview .tabs-and-actions-container {\n border-bottom: 1px solid rgba(128, 128, 128, 0.35);\n}\n.dockview-theme-replit .groupview .tabs-and-actions-container .tab {\n margin: 4px;\n border-radius: 8px;\n}\n.dockview-theme-replit .groupview .tabs-and-actions-container .tab .dockview-svg {\n height: 8px;\n width: 8px;\n}\n.dockview-theme-replit .groupview .tabs-and-actions-container .tab:hover {\n background-color: #e4e5e6 !important;\n}\n.dockview-theme-replit .groupview .content-container {\n background-color: #fcfcfc;\n}\n.dockview-theme-replit .groupview.active-group {\n border: 1px solid rgba(128, 128, 128, 0.35);\n}\n.dockview-theme-replit .groupview.inactive-group {\n border: 1px solid transparent;\n}\n.dockview-theme-replit .vertical > .sash-container > .sash:not(.disabled)::after {\n content: \"\";\n height: 4px;\n width: 40px;\n border-radius: 2px;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n background-color: var(--dv-separator-handle-background-color);\n position: absolute;\n}\n.dockview-theme-replit .vertical > .sash-container > .sash:not(.disabled):hover::after {\n background-color: var(--dv-separator-handle-hover-background-color);\n}\n.dockview-theme-replit .horizontal > .sash-container > .sash:not(.disabled)::after {\n content: \"\";\n height: 40px;\n width: 4px;\n border-radius: 2px;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n background-color: var(--dv-separator-handle-background-color);\n position: absolute;\n}\n.dockview-theme-replit .horizontal > .sash-container > .sash:not(.disabled):hover::after {\n background-color: var(--dv-separator-handle-hover-background-color);\n}\n.drop-target {\n position: relative;\n}\n.drop-target > .drop-target-dropzone {\n position: absolute;\n left: 0px;\n top: 0px;\n height: 100%;\n width: 100%;\n z-index: 1000;\n pointer-events: none;\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection {\n position: relative;\n box-sizing: border-box;\n height: 100%;\n width: 100%;\n background-color: var(--dv-drag-over-background-color);\n transition: top 70ms ease-out, left 70ms ease-out, width 70ms ease-out, height 70ms ease-out, opacity 0.15s ease-out;\n will-change: transform;\n pointer-events: none;\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection.dv-drop-target-top.dv-drop-target-small-vertical {\n border-top: 1px solid var(--dv-drag-over-border-color);\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection.dv-drop-target-bottom.dv-drop-target-small-vertical {\n border-bottom: 1px solid var(--dv-drag-over-border-color);\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection.dv-drop-target-left.dv-drop-target-small-horizontal {\n border-left: 1px solid var(--dv-drag-over-border-color);\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection.dv-drop-target-right.dv-drop-target-small-horizontal {\n border-right: 1px solid var(--dv-drag-over-border-color);\n}\n.dv-dockview {\n position: relative;\n background-color: var(--dv-group-view-background-color);\n}\n.dv-dockview .dv-watermark-container {\n position: absolute;\n top: 0px;\n left: 0px;\n height: 100%;\n width: 100%;\n z-index: 1;\n}\n.dv-dockview .dv-overlay-render-container {\n position: relative;\n}\n\n.groupview.active-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab {\n background-color: var(--dv-activegroup-visiblepanel-tab-background-color);\n color: var(--dv-activegroup-visiblepanel-tab-color);\n}\n.groupview.active-group > .tabs-and-actions-container > .tabs-container > .tab.inactive-tab {\n background-color: var(--dv-activegroup-hiddenpanel-tab-background-color);\n color: var(--dv-activegroup-hiddenpanel-tab-color);\n}\n.groupview.inactive-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab {\n background-color: var(--dv-inactivegroup-visiblepanel-tab-background-color);\n color: var(--dv-inactivegroup-visiblepanel-tab-color);\n}\n.groupview.inactive-group > .tabs-and-actions-container > .tabs-container > .tab.inactive-tab {\n background-color: var(--dv-inactivegroup-hiddenpanel-tab-background-color);\n color: var(--dv-inactivegroup-hiddenpanel-tab-color);\n}\n\n/**\n * when a tab is dragged we lose the above stylings because they are conditional on parent elements\n * therefore we also set some stylings for the dragging event\n **/\n.tab.dv-tab-dragging {\n background-color: var(--dv-activegroup-visiblepanel-tab-background-color);\n color: var(--dv-activegroup-visiblepanel-tab-color);\n}\n.groupview {\n display: flex;\n flex-direction: column;\n height: 100%;\n background-color: var(--dv-group-view-background-color);\n overflow: hidden;\n}\n.groupview:focus {\n outline: none;\n}\n.groupview.empty > .tabs-and-actions-container {\n display: none;\n}\n.groupview > .content-container {\n flex-grow: 1;\n min-height: 0;\n outline: none;\n}\n.dv-root-wrapper {\n height: 100%;\n width: 100%;\n}\n.grid-view,\n.branch-node {\n height: 100%;\n width: 100%;\n}\n.dv-debug .dv-resize-container .dv-resize-handle-top {\n background-color: red;\n}\n.dv-debug .dv-resize-container .dv-resize-handle-bottom {\n background-color: green;\n}\n.dv-debug .dv-resize-container .dv-resize-handle-left {\n background-color: yellow;\n}\n.dv-debug .dv-resize-container .dv-resize-handle-right {\n background-color: blue;\n}\n.dv-debug .dv-resize-container .dv-resize-handle-topleft,\n.dv-debug .dv-resize-container .dv-resize-handle-topright,\n.dv-debug .dv-resize-container .dv-resize-handle-bottomleft,\n.dv-debug .dv-resize-container .dv-resize-handle-bottomright {\n background-color: cyan;\n}\n\n.dv-resize-container {\n --dv-overlay-z-index: var(--dv-overlay-z-index, 999);\n position: absolute;\n z-index: calc(var(--dv-overlay-z-index) - 2);\n border: 1px solid var(--dv-tab-divider-color);\n box-shadow: var(--dv-floating-box-shadow);\n}\n.dv-resize-container.dv-resize-container-dragging {\n opacity: 0.5;\n}\n.dv-resize-container .dv-resize-handle-top {\n height: 4px;\n width: calc(100% - 8px);\n left: 4px;\n top: -2px;\n z-index: var(--dv-overlay-z-index);\n position: absolute;\n cursor: ns-resize;\n}\n.dv-resize-container .dv-resize-handle-bottom {\n height: 4px;\n width: calc(100% - 8px);\n left: 4px;\n bottom: -2px;\n z-index: var(--dv-overlay-z-index);\n position: absolute;\n cursor: ns-resize;\n}\n.dv-resize-container .dv-resize-handle-left {\n height: calc(100% - 8px);\n width: 4px;\n left: -2px;\n top: 4px;\n z-index: var(--dv-overlay-z-index);\n position: absolute;\n cursor: ew-resize;\n}\n.dv-resize-container .dv-resize-handle-right {\n height: calc(100% - 8px);\n width: 4px;\n right: -2px;\n top: 4px;\n z-index: var(--dv-overlay-z-index);\n position: absolute;\n cursor: ew-resize;\n}\n.dv-resize-container .dv-resize-handle-topleft {\n height: 4px;\n width: 4px;\n top: -2px;\n left: -2px;\n z-index: var(--dv-overlay-z-index);\n position: absolute;\n cursor: nw-resize;\n}\n.dv-resize-container .dv-resize-handle-topright {\n height: 4px;\n width: 4px;\n right: -2px;\n top: -2px;\n z-index: var(--dv-overlay-z-index);\n position: absolute;\n cursor: ne-resize;\n}\n.dv-resize-container .dv-resize-handle-bottomleft {\n height: 4px;\n width: 4px;\n left: -2px;\n bottom: -2px;\n z-index: var(--dv-overlay-z-index);\n position: absolute;\n cursor: sw-resize;\n}\n.dv-resize-container .dv-resize-handle-bottomright {\n height: 4px;\n width: 4px;\n right: -2px;\n bottom: -2px;\n z-index: var(--dv-overlay-z-index);\n position: absolute;\n cursor: se-resize;\n}\n.dv-render-overlay {\n --dv-overlay-z-index: var(--dv-overlay-z-index, 999);\n position: absolute;\n z-index: 1;\n height: 100%;\n}\n.dv-render-overlay.dv-render-overlay-float {\n z-index: calc(var(--dv-overlay-z-index) - 1);\n}\n\n.dv-debug .dv-render-overlay {\n outline: 1px solid red;\n outline-offset: -1;\n}\n.pane-container {\n height: 100%;\n width: 100%;\n}\n.pane-container.animated .view {\n transition-duration: 0.15s;\n transition-timing-function: ease-out;\n}\n.pane-container .view {\n overflow: hidden;\n display: flex;\n flex-direction: column;\n padding: 0px !important;\n}\n.pane-container .view:not(:first-child)::before {\n background-color: transparent !important;\n}\n.pane-container .view:not(:first-child) .pane > .pane-header {\n border-top: 1px solid var(--dv-paneview-header-border-color);\n}\n.pane-container .view .default-header {\n background-color: var(--dv-group-view-background-color);\n color: var(--dv-activegroup-visiblepanel-tab-color);\n display: flex;\n padding: 0px 8px;\n cursor: pointer;\n}\n.pane-container .view .default-header .dockview-pane-header-icon {\n display: flex;\n justify-content: center;\n align-items: center;\n}\n.pane-container .view .default-header > span {\n padding-left: 8px;\n flex-grow: 1;\n}\n.pane-container:first-of-type > .pane > .pane-header {\n border-top: none !important;\n}\n.pane-container .pane {\n display: flex;\n flex-direction: column;\n overflow: hidden;\n height: 100%;\n}\n.pane-container .pane .pane-header {\n box-sizing: border-box;\n user-select: none;\n position: relative;\n outline: none;\n}\n.pane-container .pane .pane-header.pane-draggable {\n cursor: pointer;\n}\n.pane-container .pane .pane-header:focus:before, .pane-container .pane .pane-header:focus-within:before {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: 5;\n content: \"\";\n pointer-events: none;\n outline: 1px solid;\n outline-width: -1px;\n outline-style: solid;\n outline-offset: -1px;\n outline-color: var(--dv-paneview-active-outline-color);\n}\n.pane-container .pane .pane-body {\n overflow-y: auto;\n overflow-x: hidden;\n flex-grow: 1;\n position: relative;\n outline: none;\n}\n.pane-container .pane .pane-body:focus:before, .pane-container .pane .pane-body:focus-within:before {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: 5;\n content: \"\";\n pointer-events: none;\n outline: 1px solid;\n outline-width: -1px;\n outline-style: solid;\n outline-offset: -1px;\n outline-color: var(--dv-paneview-active-outline-color);\n}\n.dv-debug .split-view-container .sash-container .sash.enabled {\n background-color: black;\n}\n.dv-debug .split-view-container .sash-container .sash.disabled {\n background-color: orange;\n}\n.dv-debug .split-view-container .sash-container .sash.maximum {\n background-color: green;\n}\n.dv-debug .split-view-container .sash-container .sash.minimum {\n background-color: red;\n}\n\n.split-view-container {\n position: relative;\n overflow: hidden;\n height: 100%;\n width: 100%;\n}\n.split-view-container.dv-splitview-disabled > .sash-container > .sash {\n pointer-events: none;\n}\n.split-view-container.animation .view,\n.split-view-container.animation .sash {\n transition-duration: 0.15s;\n transition-timing-function: ease-out;\n}\n.split-view-container.horizontal {\n height: 100%;\n}\n.split-view-container.horizontal > .sash-container > .sash {\n height: 100%;\n width: 4px;\n}\n.split-view-container.horizontal > .sash-container > .sash.enabled {\n cursor: ew-resize;\n}\n.split-view-container.horizontal > .sash-container > .sash.disabled {\n cursor: default;\n}\n.split-view-container.horizontal > .sash-container > .sash.maximum {\n cursor: w-resize;\n}\n.split-view-container.horizontal > .sash-container > .sash.minimum {\n cursor: e-resize;\n}\n.split-view-container.horizontal > .view-container > .view:not(:first-child)::before {\n height: 100%;\n width: 1px;\n}\n.split-view-container.vertical {\n width: 100%;\n}\n.split-view-container.vertical > .sash-container > .sash {\n width: 100%;\n height: 4px;\n}\n.split-view-container.vertical > .sash-container > .sash.enabled {\n cursor: ns-resize;\n}\n.split-view-container.vertical > .sash-container > .sash.disabled {\n cursor: default;\n}\n.split-view-container.vertical > .sash-container > .sash.maximum {\n cursor: n-resize;\n}\n.split-view-container.vertical > .sash-container > .sash.minimum {\n cursor: s-resize;\n}\n.split-view-container.vertical > .view-container > .view {\n width: 100%;\n}\n.split-view-container.vertical > .view-container > .view:not(:first-child)::before {\n height: 1px;\n width: 100%;\n}\n.split-view-container .sash-container {\n height: 100%;\n width: 100%;\n position: absolute;\n}\n.split-view-container .sash-container .sash {\n position: absolute;\n z-index: 99;\n outline: none;\n user-select: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n touch-action: none;\n}\n.split-view-container .sash-container .sash:not(.disabled):active {\n transition: background-color 0.1s ease-in-out;\n background-color: var(--dv-active-sash-color, transparent);\n}\n.split-view-container .sash-container .sash:not(.disabled):hover {\n background-color: var(--dv-active-sash-color, transparent);\n transition: background-color 0.1s ease-in-out;\n transition-delay: 0.5s;\n}\n.split-view-container .view-container {\n position: relative;\n height: 100%;\n width: 100%;\n background-color: var(--dv-background-color);\n}\n.split-view-container .view-container .view {\n height: 100%;\n box-sizing: border-box;\n overflow: auto;\n position: absolute;\n}\n.split-view-container.separator-border .view:not(:first-child)::before {\n content: \" \";\n position: absolute;\n top: 0;\n left: 0;\n z-index: 5;\n pointer-events: none;\n background-color: var(--dv-separator-border);\n}\n.dv-dragged {\n transform: translate3d(0px, 0px, 0px); /* forces tab to be drawn on a separate layer (see https://github.com/microsoft/vscode/issues/18733) */\n}\n\n.tab {\n flex-shrink: 0;\n}\n.tab:focus-within, .tab:focus {\n position: relative;\n}\n.tab:focus-within::after, .tab:focus::after {\n position: absolute;\n content: \"\";\n height: 100%;\n width: 100%;\n top: 0px;\n left: 0px;\n pointer-events: none;\n outline: 1px solid var(--dv-tab-divider-color) !important;\n outline-offset: -1px;\n z-index: 5;\n}\n.tab.dv-tab-dragging .dv-default-tab-action {\n background-color: var(--dv-activegroup-visiblepanel-tab-color);\n}\n.tab.active-tab .dv-default-tab .dv-default-tab-action {\n visibility: visible;\n}\n.tab.inactive-tab .dv-default-tab .dv-default-tab-action {\n visibility: hidden;\n}\n.tab.inactive-tab .dv-default-tab:hover .dv-default-tab-action {\n visibility: visible;\n}\n.tab .dv-default-tab {\n position: relative;\n height: 100%;\n display: flex;\n min-width: 80px;\n align-items: center;\n padding: 0px 8px;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n.tab .dv-default-tab .dv-default-tab-content {\n padding: 0px 8px;\n flex-grow: 1;\n}\n.tab .dv-default-tab .dv-default-tab-action {\n padding: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n}\n.tab .dv-default-tab .dv-default-tab-action:hover {\n border-radius: 2px;\n background-color: var(--dv-icon-hover-background-color);\n}\n.tabs-and-actions-container {\n display: flex;\n background-color: var(--dv-tabs-and-actions-container-background-color);\n flex-shrink: 0;\n box-sizing: border-box;\n height: var(--dv-tabs-and-actions-container-height);\n font-size: var(--dv-tabs-and-actions-container-font-size);\n}\n.tabs-and-actions-container.hidden {\n display: none;\n}\n.tabs-and-actions-container.dv-single-tab.dv-full-width-single-tab .tabs-container {\n flex-grow: 1;\n}\n.tabs-and-actions-container.dv-single-tab.dv-full-width-single-tab .tabs-container .tab {\n flex-grow: 1;\n}\n.tabs-and-actions-container.dv-single-tab.dv-full-width-single-tab .void-container {\n flex-grow: 0;\n}\n.tabs-and-actions-container .void-container {\n display: flex;\n flex-grow: 1;\n cursor: grab;\n}\n.tabs-and-actions-container .tabs-container {\n display: flex;\n overflow-x: overlay;\n overflow-y: hidden;\n scrollbar-width: thin;\n /* Track */\n /* Handle */\n}\n.tabs-and-actions-container .tabs-container::-webkit-scrollbar {\n height: 3px;\n}\n.tabs-and-actions-container .tabs-container::-webkit-scrollbar-track {\n background: transparent;\n}\n.tabs-and-actions-container .tabs-container::-webkit-scrollbar-thumb {\n background: var(--dv-tabs-container-scrollbar-color);\n}\n.tabs-and-actions-container .tabs-container .tab {\n -webkit-user-drag: element;\n outline: none;\n min-width: 75px;\n cursor: pointer;\n position: relative;\n box-sizing: border-box;\n}\n.tabs-and-actions-container .tabs-container .tab:not(:first-child)::before {\n content: \" \";\n position: absolute;\n top: 0;\n left: 0;\n z-index: 5;\n pointer-events: none;\n background-color: var(--dv-tab-divider-color);\n width: 1px;\n height: 100%;\n}\n.watermark {\n display: flex;\n width: 100%;\n}\n.watermark.has-actions .watermark-title .actions-container {\n display: none;\n}\n.watermark .watermark-title {\n height: 35px;\n width: 100%;\n display: flex;\n}\n.watermark .watermark-content {\n flex-grow: 1;\n}\n.watermark .actions-container {\n display: flex;\n align-items: center;\n padding: 0px 8px;\n}\n.watermark .actions-container .close-action {\n padding: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n cursor: pointer;\n color: var(--dv-activegroup-hiddenpanel-tab-color);\n}\n.watermark .actions-container .close-action:hover {\n border-radius: 2px;\n background-color: var(--dv-icon-hover-background-color);\n}";
40
+ var css_248z = ".dv-svg {\n display: inline-block;\n fill: currentcolor;\n line-height: 1;\n stroke: currentcolor;\n stroke-width: 0;\n}\n.dockview-theme-dark {\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, 0.5);\n --dv-overlay-z-index: 999;\n --dv-group-view-background-color: #1e1e1e;\n --dv-tabs-and-actions-container-background-color: #252526;\n --dv-activegroup-visiblepanel-tab-background-color: #1e1e1e;\n --dv-activegroup-hiddenpanel-tab-background-color: #2d2d2d;\n --dv-inactivegroup-visiblepanel-tab-background-color: #1e1e1e;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #2d2d2d;\n --dv-tab-divider-color: #1e1e1e;\n --dv-activegroup-visiblepanel-tab-color: white;\n --dv-activegroup-hiddenpanel-tab-color: #969696;\n --dv-inactivegroup-visiblepanel-tab-color: #8f8f8f;\n --dv-inactivegroup-hiddenpanel-tab-color: #626262;\n --dv-separator-border: rgb(68, 68, 68);\n --dv-paneview-header-border-color: rgba(204, 204, 204, 0.2);\n}\n\n.dockview-theme-light {\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, 0.5);\n --dv-overlay-z-index: 999;\n --dv-group-view-background-color: white;\n --dv-tabs-and-actions-container-background-color: #f3f3f3;\n --dv-activegroup-visiblepanel-tab-background-color: white;\n --dv-activegroup-hiddenpanel-tab-background-color: #ececec;\n --dv-inactivegroup-visiblepanel-tab-background-color: white;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #ececec;\n --dv-tab-divider-color: white;\n --dv-activegroup-visiblepanel-tab-color: rgb(51, 51, 51);\n --dv-activegroup-hiddenpanel-tab-color: rgba(51, 51, 51, 0.7);\n --dv-inactivegroup-visiblepanel-tab-color: rgba(51, 51, 51, 0.7);\n --dv-inactivegroup-hiddenpanel-tab-color: rgba(51, 51, 51, 0.35);\n --dv-separator-border: rgba(128, 128, 128, 0.35);\n --dv-paneview-header-border-color: rgb(51, 51, 51);\n}\n\n.dockview-theme-vs {\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, 0.5);\n --dv-overlay-z-index: 999;\n --dv-group-view-background-color: #1e1e1e;\n --dv-tabs-and-actions-container-background-color: #252526;\n --dv-activegroup-visiblepanel-tab-background-color: #1e1e1e;\n --dv-activegroup-hiddenpanel-tab-background-color: #2d2d2d;\n --dv-inactivegroup-visiblepanel-tab-background-color: #1e1e1e;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #2d2d2d;\n --dv-tab-divider-color: #1e1e1e;\n --dv-activegroup-visiblepanel-tab-color: white;\n --dv-activegroup-hiddenpanel-tab-color: #969696;\n --dv-inactivegroup-visiblepanel-tab-color: #8f8f8f;\n --dv-inactivegroup-hiddenpanel-tab-color: #626262;\n --dv-separator-border: rgb(68, 68, 68);\n --dv-paneview-header-border-color: rgba(204, 204, 204, 0.2);\n --dv-tabs-and-actions-container-background-color: #2d2d30;\n --dv-tabs-and-actions-container-height: 20px;\n --dv-tabs-and-actions-container-font-size: 11px;\n --dv-activegroup-visiblepanel-tab-background-color: #007acc;\n --dv-inactivegroup-visiblepanel-tab-background-color: #3f3f46;\n --dv-activegroup-visiblepanel-tab-color: white;\n --dv-activegroup-hiddenpanel-tab-color: white;\n --dv-inactivegroup-visiblepanel-tab-color: white;\n --dv-inactivegroup-hiddenpanel-tab-color: white;\n}\n.dockview-theme-vs .dv-groupview.dv-active-group > .dv-tabs-and-actions-container {\n box-sizing: content-box;\n border-bottom: 2px solid var(--dv-activegroup-visiblepanel-tab-background-color);\n}\n.dockview-theme-vs .dv-groupview.dv-active-group > .dv-tabs-and-actions-container .dv-tab.dv-active-tab {\n border-top: 2px solid var(--dv-activegroup-visiblepanel-tab-background-color);\n}\n.dockview-theme-vs .dv-groupview.dv-active-group > .dv-tabs-and-actions-container .dv-tab.dv-inactive-tab {\n border-top: 2px solid var(--dv-activegroup-hiddenpanel-tab-background-color);\n}\n.dockview-theme-vs .dv-groupview.dv-inactive-group > .dv-tabs-and-actions-container {\n box-sizing: content-box;\n border-bottom: 2px solid var(--dv-inactivegroup-visiblepanel-tab-background-color);\n}\n.dockview-theme-vs .dv-groupview.dv-inactive-group > .dv-tabs-and-actions-container .dv-tab.dv-active-tab {\n border-top: 2px solid var(--dv-inactivegroup-visiblepanel-tab-background-color);\n}\n.dockview-theme-vs .dv-groupview.dv-inactive-group > .dv-tabs-and-actions-container .dv-tab.dv-inactive-tab {\n border-top: 2px solid var(--dv-inactivegroup-hiddenpanel-tab-background-color);\n}\n\n.dockview-theme-abyss {\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, 0.5);\n --dv-overlay-z-index: 999;\n --dv-group-view-background-color: #000c18;\n --dv-tabs-and-actions-container-background-color: #1c1c2a;\n --dv-activegroup-visiblepanel-tab-background-color: #000c18;\n --dv-activegroup-hiddenpanel-tab-background-color: #10192c;\n --dv-inactivegroup-visiblepanel-tab-background-color: #000c18;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #10192c;\n --dv-tab-divider-color: #2b2b4a;\n --dv-activegroup-visiblepanel-tab-color: white;\n --dv-activegroup-hiddenpanel-tab-color: rgba(255, 255, 255, 0.5);\n --dv-inactivegroup-visiblepanel-tab-color: rgba(255, 255, 255, 0.5);\n --dv-inactivegroup-hiddenpanel-tab-color: rgba(255, 255, 255, 0.25);\n --dv-separator-border: #2b2b4a;\n --dv-paneview-header-border-color: #2b2b4a;\n --dv-paneview-active-outline-color: #596f99;\n}\n\n.dockview-theme-dracula {\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, 0.5);\n --dv-overlay-z-index: 999;\n --dv-group-view-background-color: #282a36;\n --dv-tabs-and-actions-container-background-color: #191a21;\n --dv-activegroup-visiblepanel-tab-background-color: #282a36;\n --dv-activegroup-hiddenpanel-tab-background-color: #21222c;\n --dv-inactivegroup-visiblepanel-tab-background-color: #282a36;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #21222c;\n --dv-tab-divider-color: #191a21;\n --dv-activegroup-visiblepanel-tab-color: rgb(248, 248, 242);\n --dv-activegroup-hiddenpanel-tab-color: rgb(98, 114, 164);\n --dv-inactivegroup-visiblepanel-tab-color: rgba(248, 248, 242, 0.5);\n --dv-inactivegroup-hiddenpanel-tab-color: rgba(98, 114, 164, 0.5);\n --dv-separator-border: #bd93f9;\n --dv-paneview-header-border-color: #bd93f9;\n --dv-paneview-active-outline-color: #6272a4;\n}\n.dockview-theme-dracula .dv-groupview.dv-active-group > .dv-tabs-and-actions-container > .dv-tabs-container > .dv-tab.dv-active-tab {\n position: relative;\n}\n.dockview-theme-dracula .dv-groupview.dv-active-group > .dv-tabs-and-actions-container > .dv-tabs-container > .dv-tab.dv-active-tab::after {\n position: absolute;\n left: 0px;\n top: 0px;\n content: \"\";\n width: 100%;\n height: 1px;\n background-color: #94527e;\n z-index: 999;\n}\n.dockview-theme-dracula .dv-groupview.dv-inactive-group > .dv-tabs-and-actions-container > .dv-tabs-container > .dv-tab.dv-active-tab {\n position: relative;\n}\n.dockview-theme-dracula .dv-groupview.dv-inactive-group > .dv-tabs-and-actions-container > .dv-tabs-container > .dv-tab.dv-active-tab::after {\n position: absolute;\n left: 0px;\n bottom: 0px;\n content: \"\";\n width: 100%;\n height: 1px;\n background-color: #5e3d5a;\n z-index: 999;\n}\n\n.dockview-theme-replit {\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, 0.5);\n --dv-overlay-z-index: 999;\n --dv-group-view-background-color: #ebeced;\n --dv-tabs-and-actions-container-background-color: #fcfcfc;\n --dv-activegroup-visiblepanel-tab-background-color: #f0f1f2;\n --dv-activegroup-hiddenpanel-tab-background-color: #fcfcfc;\n --dv-inactivegroup-visiblepanel-tab-background-color: #f0f1f2;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #fcfcfc;\n --dv-tab-divider-color: transparent;\n --dv-activegroup-visiblepanel-tab-color: rgb(51, 51, 51);\n --dv-activegroup-hiddenpanel-tab-color: rgb(51, 51, 51);\n --dv-inactivegroup-visiblepanel-tab-color: rgb(51, 51, 51);\n --dv-inactivegroup-hiddenpanel-tab-color: rgb(51, 51, 51);\n --dv-separator-border: transparent;\n --dv-paneview-header-border-color: rgb(51, 51, 51);\n --dv-separator-handle-background-color: #cfd1d3;\n --dv-separator-handle-hover-background-color: #babbbb;\n}\n.dockview-theme-replit .dv-resize-container:has(> .dv-groupview) {\n border-radius: 8px;\n}\n.dockview-theme-replit .dv-groupview {\n overflow: hidden;\n border-radius: 10px;\n}\n.dockview-theme-replit .dv-groupview .dv-tabs-and-actions-container {\n border-bottom: 1px solid rgba(128, 128, 128, 0.35);\n}\n.dockview-theme-replit .dv-groupview .dv-tabs-and-actions-container .dv-tab {\n margin: 4px;\n border-radius: 8px;\n}\n.dockview-theme-replit .dv-groupview .dv-tabs-and-actions-container .dv-tab .dv-svg {\n height: 8px;\n width: 8px;\n}\n.dockview-theme-replit .dv-groupview .dv-tabs-and-actions-container .dv-tab:hover {\n background-color: #e4e5e6 !important;\n}\n.dockview-theme-replit .dv-groupview .dv-content-container {\n background-color: #fcfcfc;\n}\n.dockview-theme-replit .dv-groupview.dv-active-group {\n border: 1px solid rgba(128, 128, 128, 0.35);\n}\n.dockview-theme-replit .dv-groupview.dv-inactive-group {\n border: 1px solid transparent;\n}\n.dockview-theme-replit .vertical > .sash-container > .sash:not(.disabled)::after {\n content: \"\";\n height: 4px;\n width: 40px;\n border-radius: 2px;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n background-color: var(--dv-separator-handle-background-color);\n position: absolute;\n}\n.dockview-theme-replit .vertical > .sash-container > .sash:not(.disabled):hover::after {\n background-color: var(--dv-separator-handle-hover-background-color);\n}\n.dockview-theme-replit .dv-horizontal > .dv-sash-container > .dv-sash:not(.disabled)::after {\n content: \"\";\n height: 40px;\n width: 4px;\n border-radius: 2px;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n background-color: var(--dv-separator-handle-background-color);\n position: absolute;\n}\n.dockview-theme-replit .dv-horizontal > .dv-sash-container > .dv-sash:not(.disabled):hover::after {\n background-color: var(--dv-separator-handle-hover-background-color);\n}\n.dv-drop-target {\n position: relative;\n}\n.dv-drop-target > .dv-drop-target-dropzone {\n position: absolute;\n left: 0px;\n top: 0px;\n height: 100%;\n width: 100%;\n z-index: 1000;\n pointer-events: none;\n}\n.dv-drop-target > .dv-drop-target-dropzone > .dv-drop-target-selection {\n position: relative;\n box-sizing: border-box;\n height: 100%;\n width: 100%;\n background-color: var(--dv-drag-over-background-color);\n transition: top 70ms ease-out, left 70ms ease-out, width 70ms ease-out, height 70ms ease-out, opacity 0.15s ease-out;\n will-change: transform;\n pointer-events: none;\n}\n.dv-drop-target > .dv-drop-target-dropzone > .dv-drop-target-selection.dv-drop-target-top.dv-drop-target-small-vertical {\n border-top: 1px solid var(--dv-drag-over-border-color);\n}\n.dv-drop-target > .dv-drop-target-dropzone > .dv-drop-target-selection.dv-drop-target-bottom.dv-drop-target-small-vertical {\n border-bottom: 1px solid var(--dv-drag-over-border-color);\n}\n.dv-drop-target > .dv-drop-target-dropzone > .dv-drop-target-selection.dv-drop-target-left.dv-drop-target-small-horizontal {\n border-left: 1px solid var(--dv-drag-over-border-color);\n}\n.dv-drop-target > .dv-drop-target-dropzone > .dv-drop-target-selection.dv-drop-target-right.dv-drop-target-small-horizontal {\n border-right: 1px solid var(--dv-drag-over-border-color);\n}\n.dv-dockview {\n position: relative;\n background-color: var(--dv-group-view-background-color);\n}\n.dv-dockview .dv-watermark-container {\n position: absolute;\n top: 0px;\n left: 0px;\n height: 100%;\n width: 100%;\n z-index: 1;\n}\n.dv-dockview .dv-overlay-render-container {\n position: relative;\n}\n\n.dv-groupview.dv-active-group > .dv-tabs-and-actions-container > .dv-tabs-container > .dv-tab.dv-active-tab {\n background-color: var(--dv-activegroup-visiblepanel-tab-background-color);\n color: var(--dv-activegroup-visiblepanel-tab-color);\n}\n.dv-groupview.dv-active-group > .dv-tabs-and-actions-container > .dv-tabs-container > .dv-tab.dv-inactive-tab {\n background-color: var(--dv-activegroup-hiddenpanel-tab-background-color);\n color: var(--dv-activegroup-hiddenpanel-tab-color);\n}\n.dv-groupview.dv-inactive-group > .dv-tabs-and-actions-container > .dv-tabs-container > .dv-tab.dv-active-tab {\n background-color: var(--dv-inactivegroup-visiblepanel-tab-background-color);\n color: var(--dv-inactivegroup-visiblepanel-tab-color);\n}\n.dv-groupview.dv-inactive-group > .dv-tabs-and-actions-container > .dv-tabs-container > .dv-tab.dv-inactive-tab {\n background-color: var(--dv-inactivegroup-hiddenpanel-tab-background-color);\n color: var(--dv-inactivegroup-hiddenpanel-tab-color);\n}\n\n/**\n * when a tab is dragged we lose the above stylings because they are conditional on parent elements\n * therefore we also set some stylings for the dragging event\n **/\n.dv-tab.dv-tab-dragging {\n background-color: var(--dv-activegroup-visiblepanel-tab-background-color);\n color: var(--dv-activegroup-visiblepanel-tab-color);\n}\n.dv-groupview {\n display: flex;\n flex-direction: column;\n height: 100%;\n background-color: var(--dv-group-view-background-color);\n overflow: hidden;\n}\n.dv-groupview:focus {\n outline: none;\n}\n.dv-groupview > .dv-content-container {\n flex-grow: 1;\n min-height: 0;\n outline: none;\n}\n.dv-root-wrapper {\n height: 100%;\n width: 100%;\n}\n.dv-grid-view,\n.dv-branch-node {\n height: 100%;\n width: 100%;\n}\n.dv-debug .dv-resize-container .dv-resize-handle-top {\n background-color: red;\n}\n.dv-debug .dv-resize-container .dv-resize-handle-bottom {\n background-color: green;\n}\n.dv-debug .dv-resize-container .dv-resize-handle-left {\n background-color: yellow;\n}\n.dv-debug .dv-resize-container .dv-resize-handle-right {\n background-color: blue;\n}\n.dv-debug .dv-resize-container .dv-resize-handle-topleft,\n.dv-debug .dv-resize-container .dv-resize-handle-topright,\n.dv-debug .dv-resize-container .dv-resize-handle-bottomleft,\n.dv-debug .dv-resize-container .dv-resize-handle-bottomright {\n background-color: cyan;\n}\n\n.dv-resize-container {\n --dv-overlay-z-index: var(--dv-overlay-z-index, 999);\n position: absolute;\n z-index: calc(var(--dv-overlay-z-index) - 2);\n border: 1px solid var(--dv-tab-divider-color);\n box-shadow: var(--dv-floating-box-shadow);\n}\n.dv-resize-container.dv-hidden {\n display: none;\n}\n.dv-resize-container.dv-resize-container-dragging {\n opacity: 0.5;\n}\n.dv-resize-container .dv-resize-handle-top {\n height: 4px;\n width: calc(100% - 8px);\n left: 4px;\n top: -2px;\n z-index: var(--dv-overlay-z-index);\n position: absolute;\n cursor: ns-resize;\n}\n.dv-resize-container .dv-resize-handle-bottom {\n height: 4px;\n width: calc(100% - 8px);\n left: 4px;\n bottom: -2px;\n z-index: var(--dv-overlay-z-index);\n position: absolute;\n cursor: ns-resize;\n}\n.dv-resize-container .dv-resize-handle-left {\n height: calc(100% - 8px);\n width: 4px;\n left: -2px;\n top: 4px;\n z-index: var(--dv-overlay-z-index);\n position: absolute;\n cursor: ew-resize;\n}\n.dv-resize-container .dv-resize-handle-right {\n height: calc(100% - 8px);\n width: 4px;\n right: -2px;\n top: 4px;\n z-index: var(--dv-overlay-z-index);\n position: absolute;\n cursor: ew-resize;\n}\n.dv-resize-container .dv-resize-handle-topleft {\n height: 4px;\n width: 4px;\n top: -2px;\n left: -2px;\n z-index: var(--dv-overlay-z-index);\n position: absolute;\n cursor: nw-resize;\n}\n.dv-resize-container .dv-resize-handle-topright {\n height: 4px;\n width: 4px;\n right: -2px;\n top: -2px;\n z-index: var(--dv-overlay-z-index);\n position: absolute;\n cursor: ne-resize;\n}\n.dv-resize-container .dv-resize-handle-bottomleft {\n height: 4px;\n width: 4px;\n left: -2px;\n bottom: -2px;\n z-index: var(--dv-overlay-z-index);\n position: absolute;\n cursor: sw-resize;\n}\n.dv-resize-container .dv-resize-handle-bottomright {\n height: 4px;\n width: 4px;\n right: -2px;\n bottom: -2px;\n z-index: var(--dv-overlay-z-index);\n position: absolute;\n cursor: se-resize;\n}\n.dv-render-overlay {\n --dv-overlay-z-index: var(--dv-overlay-z-index, 999);\n position: absolute;\n z-index: 1;\n height: 100%;\n}\n.dv-render-overlay.dv-render-overlay-float {\n z-index: calc(var(--dv-overlay-z-index) - 1);\n}\n\n.dv-debug .dv-render-overlay {\n outline: 1px solid red;\n outline-offset: -1;\n}\n.dv-pane-container {\n height: 100%;\n width: 100%;\n}\n.dv-pane-container.dv-animated .dv-view {\n transition-duration: 0.15s;\n transition-timing-function: ease-out;\n}\n.dv-pane-container .dv-view {\n overflow: hidden;\n display: flex;\n flex-direction: column;\n padding: 0px !important;\n}\n.dv-pane-container .dv-view:not(:first-child)::before {\n background-color: transparent !important;\n}\n.dv-pane-container .dv-view:not(:first-child) .dv-pane > .dv-pane-header {\n border-top: 1px solid var(--dv-paneview-header-border-color);\n}\n.dv-pane-container .dv-view .dv-default-header {\n background-color: var(--dv-group-view-background-color);\n color: var(--dv-activegroup-visiblepanel-tab-color);\n display: flex;\n padding: 0px 8px;\n cursor: pointer;\n}\n.dv-pane-container .dv-view .dv-default-header .dv-pane-header-icon {\n display: flex;\n justify-content: center;\n align-items: center;\n}\n.dv-pane-container .dv-view .dv-default-header > span {\n padding-left: 8px;\n flex-grow: 1;\n}\n.dv-pane-container:first-of-type > .dv-pane > .dv-pane-header {\n border-top: none !important;\n}\n.dv-pane-container .dv-pane {\n display: flex;\n flex-direction: column;\n overflow: hidden;\n height: 100%;\n}\n.dv-pane-container .dv-pane .dv-pane-header {\n box-sizing: border-box;\n user-select: none;\n position: relative;\n outline: none;\n}\n.dv-pane-container .dv-pane .dv-pane-header.dv-pane-draggable {\n cursor: pointer;\n}\n.dv-pane-container .dv-pane .dv-pane-header:focus:before, .dv-pane-container .dv-pane .dv-pane-header:focus-within:before {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: 5;\n content: \"\";\n pointer-events: none;\n outline: 1px solid;\n outline-width: -1px;\n outline-style: solid;\n outline-offset: -1px;\n outline-color: var(--dv-paneview-active-outline-color);\n}\n.dv-pane-container .dv-pane .dv-pane-body {\n overflow-y: auto;\n overflow-x: hidden;\n flex-grow: 1;\n position: relative;\n outline: none;\n}\n.dv-pane-container .dv-pane .dv-pane-body:focus:before, .dv-pane-container .dv-pane .dv-pane-body:focus-within:before {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: 5;\n content: \"\";\n pointer-events: none;\n outline: 1px solid;\n outline-width: -1px;\n outline-style: solid;\n outline-offset: -1px;\n outline-color: var(--dv-paneview-active-outline-color);\n}\n.dv-debug .dv-split-view-container .dv-sash-container .dv-sash.dv-enabled {\n background-color: black;\n}\n.dv-debug .dv-split-view-container .dv-sash-container .dv-sash.dv-disabled {\n background-color: orange;\n}\n.dv-debug .dv-split-view-container .dv-sash-container .dv-sash.dv-maximum {\n background-color: green;\n}\n.dv-debug .dv-split-view-container .dv-sash-container .dv-sash.dv-minimum {\n background-color: red;\n}\n\n.dv-split-view-container {\n position: relative;\n overflow: hidden;\n height: 100%;\n width: 100%;\n}\n.dv-split-view-container.dv-splitview-disabled > .dv-sash-container > .dv-sash {\n pointer-events: none;\n}\n.dv-split-view-container.dv-animation .dv-view,\n.dv-split-view-container.dv-animation .dv-sash {\n transition-duration: 0.15s;\n transition-timing-function: ease-out;\n}\n.dv-split-view-container.dv-horizontal {\n height: 100%;\n}\n.dv-split-view-container.dv-horizontal > .dv-sash-container > .dv-sash {\n height: 100%;\n width: 4px;\n}\n.dv-split-view-container.dv-horizontal > .dv-sash-container > .dv-sash.dv-enabled {\n cursor: ew-resize;\n}\n.dv-split-view-container.dv-horizontal > .dv-sash-container > .dv-sash.dv-disabled {\n cursor: default;\n}\n.dv-split-view-container.dv-horizontal > .dv-sash-container > .dv-sash.dv-maximum {\n cursor: w-resize;\n}\n.dv-split-view-container.dv-horizontal > .dv-sash-container > .dv-sash.dv-minimum {\n cursor: e-resize;\n}\n.dv-split-view-container.dv-horizontal > .dv-view-container > .dv-view:not(:first-child)::before {\n height: 100%;\n width: 1px;\n}\n.dv-split-view-container.dv-vertical {\n width: 100%;\n}\n.dv-split-view-container.dv-vertical > .dv-sash-container > .dv-sash {\n width: 100%;\n height: 4px;\n}\n.dv-split-view-container.dv-vertical > .dv-sash-container > .dv-sash.dv-enabled {\n cursor: ns-resize;\n}\n.dv-split-view-container.dv-vertical > .dv-sash-container > .dv-sash.dv-disabled {\n cursor: default;\n}\n.dv-split-view-container.dv-vertical > .dv-sash-container > .dv-sash.dv-maximum {\n cursor: n-resize;\n}\n.dv-split-view-container.dv-vertical > .dv-sash-container > .dv-sash.dv-minimum {\n cursor: s-resize;\n}\n.dv-split-view-container.dv-vertical > .dv-view-container > .dv-view {\n width: 100%;\n}\n.dv-split-view-container.dv-vertical > .dv-view-container > .dv-view:not(:first-child)::before {\n height: 1px;\n width: 100%;\n}\n.dv-split-view-container .dv-sash-container {\n height: 100%;\n width: 100%;\n position: absolute;\n}\n.dv-split-view-container .dv-sash-container .dv-sash {\n position: absolute;\n z-index: 99;\n outline: none;\n user-select: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n touch-action: none;\n}\n.dv-split-view-container .dv-sash-container .dv-sash:not(.disabled):active {\n transition: background-color 0.1s ease-in-out;\n background-color: var(--dv-active-sash-color, transparent);\n}\n.dv-split-view-container .dv-sash-container .dv-sash:not(.disabled):hover {\n background-color: var(--dv-active-sash-color, transparent);\n transition: background-color 0.1s ease-in-out;\n transition-delay: 0.5s;\n}\n.dv-split-view-container .dv-view-container {\n position: relative;\n height: 100%;\n width: 100%;\n}\n.dv-split-view-container .dv-view-container .dv-view {\n height: 100%;\n box-sizing: border-box;\n overflow: auto;\n position: absolute;\n}\n.dv-split-view-container.dv-separator-border .dv-view:not(:first-child)::before {\n content: \" \";\n position: absolute;\n top: 0;\n left: 0;\n z-index: 5;\n pointer-events: none;\n background-color: var(--dv-separator-border);\n}\n.dv-dragged {\n transform: translate3d(0px, 0px, 0px); /* forces tab to be drawn on a separate layer (see https://github.com/microsoft/vscode/issues/18733) */\n}\n\n.dv-tab {\n flex-shrink: 0;\n}\n.dv-tab:focus-within, .dv-tab:focus {\n position: relative;\n}\n.dv-tab:focus-within::after, .dv-tab:focus::after {\n position: absolute;\n content: \"\";\n height: 100%;\n width: 100%;\n top: 0px;\n left: 0px;\n pointer-events: none;\n outline: 1px solid var(--dv-tab-divider-color) !important;\n outline-offset: -1px;\n z-index: 5;\n}\n.dv-tab.dv-tab-dragging .dv-default-tab-action {\n background-color: var(--dv-activegroup-visiblepanel-tab-color);\n}\n.dv-tab.dv-active-tab .dv-default-tab .dv-default-tab-action {\n visibility: visible;\n}\n.dv-tab.dv-inactive-tab .dv-default-tab .dv-default-tab-action {\n visibility: hidden;\n}\n.dv-tab.dv-inactive-tab .dv-default-tab:hover .dv-default-tab-action {\n visibility: visible;\n}\n.dv-tab .dv-default-tab {\n position: relative;\n height: 100%;\n display: flex;\n min-width: 80px;\n align-items: center;\n padding: 0px 8px;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n.dv-tab .dv-default-tab .dv-default-tab-content {\n padding: 0px 8px;\n flex-grow: 1;\n}\n.dv-tab .dv-default-tab .dv-default-tab-action {\n padding: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n}\n.dv-tab .dv-default-tab .dv-default-tab-action:hover {\n border-radius: 2px;\n background-color: var(--dv-icon-hover-background-color);\n}\n.dv-tabs-and-actions-container {\n display: flex;\n background-color: var(--dv-tabs-and-actions-container-background-color);\n flex-shrink: 0;\n box-sizing: border-box;\n height: var(--dv-tabs-and-actions-container-height);\n font-size: var(--dv-tabs-and-actions-container-font-size);\n}\n.dv-tabs-and-actions-container.dv-single-tab.dv-full-width-single-tab .dv-tabs-container {\n flex-grow: 1;\n}\n.dv-tabs-and-actions-container.dv-single-tab.dv-full-width-single-tab .dv-tabs-container .dv-tab {\n flex-grow: 1;\n}\n.dv-tabs-and-actions-container.dv-single-tab.dv-full-width-single-tab .dv-void-container {\n flex-grow: 0;\n}\n.dv-tabs-and-actions-container .dv-void-container {\n display: flex;\n flex-grow: 1;\n cursor: grab;\n}\n.dv-tabs-and-actions-container .dv-tabs-container {\n display: flex;\n overflow-x: overlay;\n overflow-y: hidden;\n scrollbar-width: thin;\n /* Track */\n /* Handle */\n}\n.dv-tabs-and-actions-container .dv-tabs-container::-webkit-scrollbar {\n height: 3px;\n}\n.dv-tabs-and-actions-container .dv-tabs-container::-webkit-scrollbar-track {\n background: transparent;\n}\n.dv-tabs-and-actions-container .dv-tabs-container::-webkit-scrollbar-thumb {\n background: var(--dv-tabs-container-scrollbar-color);\n}\n.dv-tabs-and-actions-container .dv-tabs-container .dv-tab {\n -webkit-user-drag: element;\n outline: none;\n min-width: 75px;\n cursor: pointer;\n position: relative;\n box-sizing: border-box;\n}\n.dv-tabs-and-actions-container .dv-tabs-container .dv-tab:not(:first-child)::before {\n content: \" \";\n position: absolute;\n top: 0;\n left: 0;\n z-index: 5;\n pointer-events: none;\n background-color: var(--dv-tab-divider-color);\n width: 1px;\n height: 100%;\n}\n.dv-watermark {\n display: flex;\n height: 100%;\n}";
41
41
  styleInject(css_248z);
42
42
 
43
43
  class TransferObject {
@@ -358,31 +358,6 @@
358
358
  }
359
359
  }
360
360
 
361
- function createComponent(id, componentName, components = {}, frameworkComponents = {}, createFrameworkComponent, fallback) {
362
- const Component = typeof componentName === 'string'
363
- ? components[componentName]
364
- : undefined;
365
- const FrameworkComponent = typeof componentName === 'string'
366
- ? frameworkComponents[componentName]
367
- : undefined;
368
- if (Component && FrameworkComponent) {
369
- throw new Error(`Cannot create '${id}'. component '${componentName}' registered as both a component and frameworkComponent`);
370
- }
371
- if (FrameworkComponent) {
372
- if (!createFrameworkComponent) {
373
- throw new Error(`Cannot create '${id}' for framework component '${componentName}'. you must register a frameworkPanelWrapper to use framework components`);
374
- }
375
- return createFrameworkComponent.createComponent(id, componentName, FrameworkComponent);
376
- }
377
- if (!Component) {
378
- if (fallback) {
379
- return fallback();
380
- }
381
- throw new Error(`Cannot create '${id}', no component '${componentName}' provided`);
382
- }
383
- return new Component(id, componentName);
384
- }
385
-
386
361
  function watchElementResize(element, cb) {
387
362
  const observer = new ResizeObserver((entires) => {
388
363
  /**
@@ -851,10 +826,10 @@
851
826
  const tmp = this.size;
852
827
  this.size = this.orthogonalSize;
853
828
  this.orthogonalSize = tmp;
854
- removeClasses(this.element, 'horizontal', 'vertical');
829
+ removeClasses(this.element, 'dv-horizontal', 'dv-vertical');
855
830
  this.element.classList.add(this.orientation == exports.Orientation.HORIZONTAL
856
- ? 'horizontal'
857
- : 'vertical');
831
+ ? 'dv-horizontal'
832
+ : 'dv-vertical');
858
833
  }
859
834
  get minimumSize() {
860
835
  return this.viewItems.reduce((r, item) => r + item.minimumSize, 0);
@@ -1032,11 +1007,11 @@
1032
1007
  }
1033
1008
  style(styles) {
1034
1009
  if ((styles === null || styles === void 0 ? void 0 : styles.separatorBorder) === 'transparent') {
1035
- removeClasses(this.element, 'separator-border');
1010
+ removeClasses(this.element, 'dv-separator-border');
1036
1011
  this.element.style.removeProperty('--dv-separator-border');
1037
1012
  }
1038
1013
  else {
1039
- addClasses(this.element, 'separator-border');
1014
+ addClasses(this.element, 'dv-separator-border');
1040
1015
  if (styles === null || styles === void 0 ? void 0 : styles.separatorBorder) {
1041
1016
  this.element.style.setProperty('--dv-separator-border', styles.separatorBorder);
1042
1017
  }
@@ -1106,7 +1081,7 @@
1106
1081
  }
1107
1082
  addView(view, size = { type: 'distribute' }, index = this.viewItems.length, skipLayout) {
1108
1083
  const container = document.createElement('div');
1109
- container.className = 'view';
1084
+ container.className = 'dv-view';
1110
1085
  container.appendChild(view.element);
1111
1086
  let viewSize;
1112
1087
  if (typeof size === 'number') {
@@ -1138,7 +1113,7 @@
1138
1113
  if (this.viewItems.length > 1) {
1139
1114
  //add sash
1140
1115
  const sash = document.createElement('div');
1141
- sash.className = 'sash';
1116
+ sash.className = 'dv-sash';
1142
1117
  const onPointerStart = (event) => {
1143
1118
  for (const item of this.viewItems) {
1144
1119
  item.enabled = false;
@@ -1397,7 +1372,8 @@
1397
1372
  const offset = i === 0 || visiblePanelsBeforeThisView === 0
1398
1373
  ? 0
1399
1374
  : viewLeftOffsets[i - 1] +
1400
- (visiblePanelsBeforeThisView / sashCount) * marginReducedSize;
1375
+ (visiblePanelsBeforeThisView / sashCount) *
1376
+ marginReducedSize;
1401
1377
  if (i < this.viewItems.length - 1) {
1402
1378
  // calculate sash position
1403
1379
  const newSize = view.visible
@@ -1508,27 +1484,27 @@
1508
1484
  }
1509
1485
  }
1510
1486
  updateSash(sash, state) {
1511
- toggleClass(sash.container, 'disabled', state === exports.SashState.DISABLED);
1512
- toggleClass(sash.container, 'enabled', state === exports.SashState.ENABLED);
1513
- toggleClass(sash.container, 'maximum', state === exports.SashState.MAXIMUM);
1514
- toggleClass(sash.container, 'minimum', state === exports.SashState.MINIMUM);
1487
+ toggleClass(sash.container, 'dv-disabled', state === exports.SashState.DISABLED);
1488
+ toggleClass(sash.container, 'dv-enabled', state === exports.SashState.ENABLED);
1489
+ toggleClass(sash.container, 'dv-maximum', state === exports.SashState.MAXIMUM);
1490
+ toggleClass(sash.container, 'dv-minimum', state === exports.SashState.MINIMUM);
1515
1491
  }
1516
1492
  createViewContainer() {
1517
1493
  const element = document.createElement('div');
1518
- element.className = 'view-container';
1494
+ element.className = 'dv-view-container';
1519
1495
  return element;
1520
1496
  }
1521
1497
  createSashContainer() {
1522
1498
  const element = document.createElement('div');
1523
- element.className = 'sash-container';
1499
+ element.className = 'dv-sash-container';
1524
1500
  return element;
1525
1501
  }
1526
1502
  createContainer() {
1527
1503
  const element = document.createElement('div');
1528
1504
  const orientationClassname = this._orientation === exports.Orientation.HORIZONTAL
1529
- ? 'horizontal'
1530
- : 'vertical';
1531
- element.className = `split-view-container ${orientationClassname}`;
1505
+ ? 'dv-horizontal'
1506
+ : 'dv-vertical';
1507
+ element.className = `dv-split-view-container ${orientationClassname}`;
1532
1508
  return element;
1533
1509
  }
1534
1510
  dispose() {
@@ -1579,7 +1555,7 @@
1579
1555
  this.onDidChange = this._onDidChange.event;
1580
1556
  this._orientation = (_a = options.orientation) !== null && _a !== void 0 ? _a : exports.Orientation.VERTICAL;
1581
1557
  this.element = document.createElement('div');
1582
- this.element.className = 'pane-container';
1558
+ this.element.className = 'dv-pane-container';
1583
1559
  container.appendChild(this.element);
1584
1560
  this.splitview = new Splitview(this.element, {
1585
1561
  orientation: this._orientation,
@@ -1671,10 +1647,10 @@
1671
1647
  clearTimeout(this.animationTimer);
1672
1648
  this.animationTimer = undefined;
1673
1649
  }
1674
- addClasses(this.element, 'animated');
1650
+ addClasses(this.element, 'dv-animated');
1675
1651
  this.animationTimer = setTimeout(() => {
1676
1652
  this.animationTimer = undefined;
1677
- removeClasses(this.element, 'animated');
1653
+ removeClasses(this.element, 'dv-animated');
1678
1654
  }, 200);
1679
1655
  }
1680
1656
  dispose() {
@@ -1899,7 +1875,7 @@
1899
1875
  this._orthogonalSize = orthogonalSize;
1900
1876
  this._size = size;
1901
1877
  this.element = document.createElement('div');
1902
- this.element.className = 'branch-node';
1878
+ this.element.className = 'dv-branch-node';
1903
1879
  if (!childDescriptors) {
1904
1880
  this.splitview = new Splitview(this.element, {
1905
1881
  orientation: this.orientation,
@@ -2110,7 +2086,7 @@
2110
2086
  if (!parentElement) {
2111
2087
  throw new Error('Invalid grid element');
2112
2088
  }
2113
- if (/\bgrid-view\b/.test(parentElement.className)) {
2089
+ if (/\bdv-grid-view\b/.test(parentElement.className)) {
2114
2090
  return [];
2115
2091
  }
2116
2092
  const index = indexInParent(parentElement);
@@ -2247,6 +2223,7 @@
2247
2223
  if (this.hasMaximizedView()) {
2248
2224
  this.exitMaximizedView();
2249
2225
  }
2226
+ serializeBranchNode(this.getView(), this.orientation);
2250
2227
  const hiddenOnMaximize = [];
2251
2228
  function hideAllViewsBut(parent, exclude) {
2252
2229
  for (let i = 0; i < parent.children.length; i++) {
@@ -2268,7 +2245,10 @@
2268
2245
  }
2269
2246
  hideAllViewsBut(this.root, node);
2270
2247
  this._maximizedNode = { leaf: node, hiddenOnMaximize };
2271
- this._onDidMaximizedNodeChange.fire();
2248
+ this._onDidMaximizedNodeChange.fire({
2249
+ view: node.view,
2250
+ isMaximized: true,
2251
+ });
2272
2252
  }
2273
2253
  exitMaximizedView() {
2274
2254
  if (!this._maximizedNode) {
@@ -2289,24 +2269,51 @@
2289
2269
  }
2290
2270
  }
2291
2271
  showViewsInReverseOrder(this.root);
2272
+ const tmp = this._maximizedNode.leaf;
2292
2273
  this._maximizedNode = undefined;
2293
- this._onDidMaximizedNodeChange.fire();
2274
+ this._onDidMaximizedNodeChange.fire({
2275
+ view: tmp.view,
2276
+ isMaximized: false,
2277
+ });
2294
2278
  }
2295
2279
  serialize() {
2280
+ const maximizedView = this.maximizedView();
2281
+ let maxmizedViewLocation;
2282
+ if (maximizedView) {
2283
+ /**
2284
+ * The minimum information we can get away with in order to serialize a maxmized view is it's location within the grid
2285
+ * which is represented as a branch of indices
2286
+ */
2287
+ maxmizedViewLocation = getGridLocation(maximizedView.element);
2288
+ }
2296
2289
  if (this.hasMaximizedView()) {
2297
2290
  /**
2298
- * do not persist maximized view state
2299
- * firstly exit any maximized views to ensure the correct dimensions are persisted
2291
+ * the saved layout cannot be in its maxmized state otherwise all of the underlying
2292
+ * view dimensions will be wrong
2293
+ *
2294
+ * To counteract this we temporaily remove the maximized view to compute the serialized output
2295
+ * of the grid before adding back the maxmized view as to not alter the layout from the users
2296
+ * perspective when `.toJSON()` is called
2300
2297
  */
2301
2298
  this.exitMaximizedView();
2302
2299
  }
2303
2300
  const root = serializeBranchNode(this.getView(), this.orientation);
2304
- return {
2301
+ const resullt = {
2305
2302
  root,
2306
2303
  width: this.width,
2307
2304
  height: this.height,
2308
2305
  orientation: this.orientation,
2309
2306
  };
2307
+ if (maxmizedViewLocation) {
2308
+ resullt.maximizedNode = {
2309
+ location: maxmizedViewLocation,
2310
+ };
2311
+ }
2312
+ if (maximizedView) {
2313
+ // replace any maximzied view that was removed for serialization purposes
2314
+ this.maximizeView(maximizedView);
2315
+ }
2316
+ return resullt;
2310
2317
  }
2311
2318
  dispose() {
2312
2319
  this.disposable.dispose();
@@ -2325,6 +2332,19 @@
2325
2332
  const orientation = json.orientation;
2326
2333
  const height = orientation === exports.Orientation.VERTICAL ? json.height : json.width;
2327
2334
  this._deserialize(json.root, orientation, deserializer, height);
2335
+ /**
2336
+ * The deserialied layout must be positioned through this.layout(...)
2337
+ * before any maximizedNode can be positioned
2338
+ */
2339
+ this.layout(json.width, json.height);
2340
+ if (json.maximizedNode) {
2341
+ const location = json.maximizedNode.location;
2342
+ const [_, node] = this.getNode(location);
2343
+ if (!(node instanceof LeafNode)) {
2344
+ return;
2345
+ }
2346
+ this.maximizeView(node.view);
2347
+ }
2328
2348
  }
2329
2349
  _deserialize(root, orientation, deserializer, orthogonalSize) {
2330
2350
  this.root = this._deserializeNode(root, orientation, deserializer, orthogonalSize);
@@ -2458,7 +2478,7 @@
2458
2478
  this._onDidMaximizedNodeChange = new Emitter();
2459
2479
  this.onDidMaximizedNodeChange = this._onDidMaximizedNodeChange.event;
2460
2480
  this.element = document.createElement('div');
2461
- this.element.className = 'grid-view';
2481
+ this.element.className = 'dv-grid-view';
2462
2482
  this._locked = locked !== null && locked !== void 0 ? locked : false;
2463
2483
  this._margin = margin !== null && margin !== void 0 ? margin : 0;
2464
2484
  this.root = new BranchNode(orientation, proportionalLayout, styles, 0, 0, this.locked, this.margin);
@@ -2749,6 +2769,8 @@
2749
2769
  this.onDidRemove = this._onDidRemove.event;
2750
2770
  this._onDidAdd = new Emitter();
2751
2771
  this.onDidAdd = this._onDidAdd.event;
2772
+ this._onDidMaximizedChange = new Emitter();
2773
+ this.onDidMaximizedChange = this._onDidMaximizedChange.event;
2752
2774
  this._onDidActiveChange = new Emitter();
2753
2775
  this.onDidActiveChange = this._onDidActiveChange.event;
2754
2776
  this._bufferOnDidLayoutChange = new AsapEvent();
@@ -2764,7 +2786,12 @@
2764
2786
  this.gridview.locked = !!options.locked;
2765
2787
  this.element.appendChild(this.gridview.element);
2766
2788
  this.layout(0, 0, true); // set some elements height/widths
2767
- this.addDisposables(this.gridview.onDidViewVisibilityChange(() => this._onDidViewVisibilityChangeMicroTaskQueue.fire()), this.onDidViewVisibilityChangeMicroTaskQueue(() => {
2789
+ this.addDisposables(this.gridview.onDidMaximizedNodeChange((event) => {
2790
+ this._onDidMaximizedChange.fire({
2791
+ panel: event.view,
2792
+ isMaximized: event.isMaximized,
2793
+ });
2794
+ }), this.gridview.onDidViewVisibilityChange(() => this._onDidViewVisibilityChangeMicroTaskQueue.fire()), this.onDidViewVisibilityChangeMicroTaskQueue(() => {
2768
2795
  this.layout(this.width, this.height, true);
2769
2796
  }), exports.DockviewDisposable.from(() => {
2770
2797
  var _a;
@@ -2814,9 +2841,6 @@
2814
2841
  hasMaximizedGroup() {
2815
2842
  return this.gridview.hasMaximizedView();
2816
2843
  }
2817
- get onDidMaximizedGroupChange() {
2818
- return this.gridview.onDidMaximizedNodeChange;
2819
- }
2820
2844
  doAddGroup(group, location = [0], size) {
2821
2845
  this.gridview.addView(group, size !== null && size !== void 0 ? size : exports.Sizing.Distribute, location);
2822
2846
  this._onDidAdd.fire(group);
@@ -3680,7 +3704,7 @@
3680
3704
  * dnd logic. You can see the code at
3681
3705
  * https://github.com/react-dnd/react-dnd/blob/main/packages/backend-html5/src/HTML5BackendImpl.ts#L542
3682
3706
  */
3683
- event.dataTransfer.setData('text/plain', '__dockview_internal_drag_event__');
3707
+ event.dataTransfer.setData('text/plain', '');
3684
3708
  }
3685
3709
  }
3686
3710
  }), addDisposableListener(this.el, 'dragend', () => {
@@ -3854,12 +3878,12 @@
3854
3878
  this.markAsUsed(e);
3855
3879
  if (!this.targetElement) {
3856
3880
  this.targetElement = document.createElement('div');
3857
- this.targetElement.className = 'drop-target-dropzone';
3881
+ this.targetElement.className = 'dv-drop-target-dropzone';
3858
3882
  this.overlayElement = document.createElement('div');
3859
- this.overlayElement.className = 'drop-target-selection';
3883
+ this.overlayElement.className = 'dv-drop-target-selection';
3860
3884
  this._state = 'center';
3861
3885
  this.targetElement.appendChild(this.overlayElement);
3862
- this.element.classList.add('drop-target');
3886
+ this.element.classList.add('dv-drop-target');
3863
3887
  this.element.append(this.targetElement);
3864
3888
  }
3865
3889
  this.toggleClasses(quadrant, width, height);
@@ -3997,7 +4021,7 @@
3997
4021
  this.element.removeChild(this.targetElement);
3998
4022
  this.targetElement = undefined;
3999
4023
  this.overlayElement = undefined;
4000
- this.element.classList.remove('drop-target');
4024
+ this.element.classList.remove('dv-drop-target');
4001
4025
  }
4002
4026
  }
4003
4027
  }
@@ -4334,7 +4358,7 @@
4334
4358
  this._headerVisible = isHeaderVisible;
4335
4359
  this._onDidChangeExpansionState.fire(this.isExpanded()); // initialize value
4336
4360
  this._orientation = orientation;
4337
- this.element.classList.add('pane');
4361
+ this.element.classList.add('dv-pane');
4338
4362
  this.addDisposables(this.api.onWillVisibilityChange((event) => {
4339
4363
  const { isVisible } = event;
4340
4364
  const { accessor } = this._params;
@@ -4431,14 +4455,14 @@
4431
4455
  renderOnce() {
4432
4456
  this.header = document.createElement('div');
4433
4457
  this.header.tabIndex = 0;
4434
- this.header.className = 'pane-header';
4458
+ this.header.className = 'dv-pane-header';
4435
4459
  this.header.style.height = `${this.headerSize}px`;
4436
4460
  this.header.style.lineHeight = `${this.headerSize}px`;
4437
4461
  this.header.style.minHeight = `${this.headerSize}px`;
4438
4462
  this.header.style.maxHeight = `${this.headerSize}px`;
4439
4463
  this.element.appendChild(this.header);
4440
4464
  this.body = document.createElement('div');
4441
- this.body.className = 'pane-body';
4465
+ this.body.className = 'dv-pane-body';
4442
4466
  this.element.appendChild(this.body);
4443
4467
  }
4444
4468
  // TODO slightly hacky by-pass of the component to create a body and header component
@@ -4559,7 +4583,7 @@
4559
4583
  this._onDidBlur = new Emitter();
4560
4584
  this.onDidBlur = this._onDidBlur.event;
4561
4585
  this._element = document.createElement('div');
4562
- this._element.className = 'content-container';
4586
+ this._element.className = 'dv-content-container';
4563
4587
  this._element.tabIndex = -1;
4564
4588
  this.addDisposables(this._onDidFocus, this._onDidBlur);
4565
4589
  this.dropTarget = new Droptarget(this.element, {
@@ -4632,6 +4656,8 @@
4632
4656
  referenceContainer: this,
4633
4657
  });
4634
4658
  break;
4659
+ default:
4660
+ throw new Error(`dockview: invalid renderer type '${panel.api.renderer}'`);
4635
4661
  }
4636
4662
  if (doRender) {
4637
4663
  const focusTracker = trackFocus(container);
@@ -4698,10 +4724,10 @@
4698
4724
  this._onDragStart = new Emitter();
4699
4725
  this.onDragStart = this._onDragStart.event;
4700
4726
  this._element = document.createElement('div');
4701
- this._element.className = 'tab';
4727
+ this._element.className = 'dv-tab';
4702
4728
  this._element.tabIndex = 0;
4703
4729
  this._element.draggable = true;
4704
- toggleClass(this.element, 'inactive-tab', true);
4730
+ toggleClass(this.element, 'dv-inactive-tab', true);
4705
4731
  const dragHandler = new TabDragHandler(this._element, this.accessor, this.group, this.panel);
4706
4732
  this.dropTarget = new Droptarget(this._element, {
4707
4733
  acceptedTargetZones: ['center'],
@@ -4734,8 +4760,8 @@
4734
4760
  }), this.dropTarget);
4735
4761
  }
4736
4762
  setActive(isActive) {
4737
- toggleClass(this.element, 'active-tab', isActive);
4738
- toggleClass(this.element, 'inactive-tab', !isActive);
4763
+ toggleClass(this.element, 'dv-active-tab', isActive);
4764
+ toggleClass(this.element, 'dv-inactive-tab', !isActive);
4739
4765
  }
4740
4766
  setContent(part) {
4741
4767
  if (this.content) {
@@ -4823,8 +4849,7 @@
4823
4849
  this._onDragStart = new Emitter();
4824
4850
  this.onDragStart = this._onDragStart.event;
4825
4851
  this._element = document.createElement('div');
4826
- this._element.className = 'void-container';
4827
- this._element.tabIndex = 0;
4852
+ this._element.className = 'dv-void-container';
4828
4853
  this._element.draggable = true;
4829
4854
  this.addDisposables(this._onDrop, this._onDragStart, addDisposableListener(this._element, 'pointerdown', () => {
4830
4855
  this.accessor.doSetGroupActive(this.group);
@@ -4943,16 +4968,16 @@
4943
4968
  this._onWillShowOverlay = new Emitter();
4944
4969
  this.onWillShowOverlay = this._onWillShowOverlay.event;
4945
4970
  this._element = document.createElement('div');
4946
- this._element.className = 'tabs-and-actions-container';
4971
+ this._element.className = 'dv-tabs-and-actions-container';
4947
4972
  toggleClass(this._element, 'dv-full-width-single-tab', this.accessor.options.singleTabMode === 'fullwidth');
4948
4973
  this.rightActionsContainer = document.createElement('div');
4949
- this.rightActionsContainer.className = 'right-actions-container';
4974
+ this.rightActionsContainer.className = 'dv-right-actions-container';
4950
4975
  this.leftActionsContainer = document.createElement('div');
4951
- this.leftActionsContainer.className = 'left-actions-container';
4976
+ this.leftActionsContainer.className = 'dv-left-actions-container';
4952
4977
  this.preActionsContainer = document.createElement('div');
4953
- this.preActionsContainer.className = 'pre-actions-container';
4978
+ this.preActionsContainer.className = 'dv-pre-actions-container';
4954
4979
  this.tabContainer = document.createElement('div');
4955
- this.tabContainer.className = 'tabs-container';
4980
+ this.tabContainer.className = 'dv-tabs-container';
4956
4981
  this.voidContainer = new VoidContainer(this.accessor, this.group);
4957
4982
  this._element.appendChild(this.preActionsContainer);
4958
4983
  this._element.appendChild(this.tabContainer);
@@ -5041,14 +5066,10 @@
5041
5066
  });
5042
5067
  }
5043
5068
  openPanel(panel, index = this.tabs.length) {
5044
- var _a;
5045
5069
  if (this.tabs.find((tab) => tab.value.panel.id === panel.id)) {
5046
5070
  return;
5047
5071
  }
5048
5072
  const tab = new Tab(panel, this.accessor, this.group);
5049
- if (!((_a = panel.view) === null || _a === void 0 ? void 0 : _a.tab)) {
5050
- throw new Error('invalid header component');
5051
- }
5052
5073
  tab.setContent(panel.view.tab);
5053
5074
  const disposable = new CompositeDisposable(tab.onDragStart((event) => {
5054
5075
  this._onTabDragStart.fire({ nativeEvent: event, panel });
@@ -5142,6 +5163,7 @@
5142
5163
  disableDnd: undefined,
5143
5164
  gap: undefined,
5144
5165
  className: undefined,
5166
+ noPanelsOverlay: undefined,
5145
5167
  };
5146
5168
  return Object.keys(properties);
5147
5169
  })();
@@ -5238,7 +5260,7 @@
5238
5260
  }
5239
5261
  class DockviewGroupPanelModel extends CompositeDisposable {
5240
5262
  get element() {
5241
- throw new Error('not supported');
5263
+ throw new Error('dockview: not supported');
5242
5264
  }
5243
5265
  get activePanel() {
5244
5266
  return this._activePanel;
@@ -5248,7 +5270,7 @@
5248
5270
  }
5249
5271
  set locked(value) {
5250
5272
  this._locked = value;
5251
- toggleClass(this.container, 'locked-groupview', value === 'no-drop-target' || value);
5273
+ toggleClass(this.container, 'dv-locked-groupview', value === 'no-drop-target' || value);
5252
5274
  }
5253
5275
  get isActive() {
5254
5276
  return this._isGroupActive;
@@ -5319,6 +5341,7 @@
5319
5341
  this._locked = false;
5320
5342
  this._location = { type: 'grid' };
5321
5343
  this.mostRecentlyUsed = [];
5344
+ this._overwriteRenderContainer = null;
5322
5345
  this._onDidChange = new Emitter();
5323
5346
  this.onDidChange = this._onDidChange.event;
5324
5347
  this._width = 0;
@@ -5349,8 +5372,7 @@
5349
5372
  this.onDidActivePanelChange = this._onDidActivePanelChange.event;
5350
5373
  this._onUnhandledDragOverEvent = new Emitter();
5351
5374
  this.onUnhandledDragOverEvent = this._onUnhandledDragOverEvent.event;
5352
- this._overwriteRenderContainer = null;
5353
- toggleClass(this.container, 'groupview', true);
5375
+ toggleClass(this.container, 'dv-groupview', true);
5354
5376
  this._api = new DockviewApi(this.accessor);
5355
5377
  this.tabsContainer = new TabsContainer(this.accessor, this.groupPanel);
5356
5378
  this.contentContainer = new ContentContainer(this.accessor, this);
@@ -5582,7 +5604,10 @@
5582
5604
  this.doClose(panel);
5583
5605
  }
5584
5606
  doClose(panel) {
5585
- this.accessor.removePanel(panel);
5607
+ const isLast = this.panels.length === 1 && this.accessor.groups.length === 1;
5608
+ this.accessor.removePanel(panel, isLast && this.accessor.options.noPanelsOverlay === 'emptyGroup'
5609
+ ? { removeEmptyGroup: false }
5610
+ : undefined);
5586
5611
  }
5587
5612
  isPanelActive(panel) {
5588
5613
  return this._activePanel === panel;
@@ -5595,8 +5620,8 @@
5595
5620
  return;
5596
5621
  }
5597
5622
  this._isGroupActive = isGroupActive;
5598
- toggleClass(this.container, 'active-group', isGroupActive);
5599
- toggleClass(this.container, 'inactive-group', !isGroupActive);
5623
+ toggleClass(this.container, 'dv-active-group', isGroupActive);
5624
+ toggleClass(this.container, 'dv-inactive-group', !isGroupActive);
5600
5625
  this.tabsContainer.setActive(this.isActive);
5601
5626
  if (!this._activePanel && this.panels.length > 0) {
5602
5627
  this.doSetActivePanel(this.panels[0]);
@@ -5688,7 +5713,6 @@
5688
5713
  }
5689
5714
  updateContainer() {
5690
5715
  var _a, _b;
5691
- toggleClass(this.container, 'empty', this.isEmpty);
5692
5716
  this.panels.forEach((panel) => panel.runEvents());
5693
5717
  if (this.isEmpty && !this.watermark) {
5694
5718
  const watermark = this.accessor.createWatermarkComponent();
@@ -5702,14 +5726,12 @@
5702
5726
  this.accessor.doSetGroupActive(this.groupPanel);
5703
5727
  }
5704
5728
  });
5705
- this.tabsContainer.hide();
5706
5729
  this.contentContainer.element.appendChild(this.watermark.element);
5707
5730
  }
5708
5731
  if (!this.isEmpty && this.watermark) {
5709
5732
  this.watermark.element.remove();
5710
5733
  (_b = (_a = this.watermark).dispose) === null || _b === void 0 ? void 0 : _b.call(_a);
5711
5734
  this.watermark = undefined;
5712
- this.tabsContainer.show();
5713
5735
  }
5714
5736
  }
5715
5737
  canDisplayOverlay(event, position, target) {
@@ -5829,6 +5851,34 @@
5829
5851
  return this._snap;
5830
5852
  }
5831
5853
  get minimumWidth() {
5854
+ /**
5855
+ * defer to protected function to allow subclasses to override easily.
5856
+ * see https://github.com/microsoft/TypeScript/issues/338
5857
+ */
5858
+ return this.__minimumWidth();
5859
+ }
5860
+ get minimumHeight() {
5861
+ /**
5862
+ * defer to protected function to allow subclasses to override easily.
5863
+ * see https://github.com/microsoft/TypeScript/issues/338
5864
+ */
5865
+ return this.__minimumHeight();
5866
+ }
5867
+ get maximumHeight() {
5868
+ /**
5869
+ * defer to protected function to allow subclasses to override easily.
5870
+ * see https://github.com/microsoft/TypeScript/issues/338
5871
+ */
5872
+ return this.__maximumHeight();
5873
+ }
5874
+ get maximumWidth() {
5875
+ /**
5876
+ * defer to protected function to allow subclasses to override easily.
5877
+ * see https://github.com/microsoft/TypeScript/issues/338
5878
+ */
5879
+ return this.__maximumWidth();
5880
+ }
5881
+ __minimumWidth() {
5832
5882
  const width = typeof this._minimumWidth === 'function'
5833
5883
  ? this._minimumWidth()
5834
5884
  : this._minimumWidth;
@@ -5838,7 +5888,17 @@
5838
5888
  }
5839
5889
  return width;
5840
5890
  }
5841
- get minimumHeight() {
5891
+ __maximumWidth() {
5892
+ const width = typeof this._maximumWidth === 'function'
5893
+ ? this._maximumWidth()
5894
+ : this._maximumWidth;
5895
+ if (width !== this._evaluatedMaximumWidth) {
5896
+ this._evaluatedMaximumWidth = width;
5897
+ this.updateConstraints();
5898
+ }
5899
+ return width;
5900
+ }
5901
+ __minimumHeight() {
5842
5902
  const height = typeof this._minimumHeight === 'function'
5843
5903
  ? this._minimumHeight()
5844
5904
  : this._minimumHeight;
@@ -5848,7 +5908,7 @@
5848
5908
  }
5849
5909
  return height;
5850
5910
  }
5851
- get maximumHeight() {
5911
+ __maximumHeight() {
5852
5912
  const height = typeof this._maximumHeight === 'function'
5853
5913
  ? this._maximumHeight()
5854
5914
  : this._maximumHeight;
@@ -5858,16 +5918,6 @@
5858
5918
  }
5859
5919
  return height;
5860
5920
  }
5861
- get maximumWidth() {
5862
- const width = typeof this._maximumWidth === 'function'
5863
- ? this._maximumWidth()
5864
- : this._maximumWidth;
5865
- if (width !== this._evaluatedMaximumWidth) {
5866
- this._evaluatedMaximumWidth = width;
5867
- this.updateConstraints();
5868
- }
5869
- return width;
5870
- }
5871
5921
  get isActive() {
5872
5922
  return this.api.isActive;
5873
5923
  }
@@ -6018,6 +6068,7 @@
6018
6068
  position: options.group
6019
6069
  ? (_c = options.position) !== null && _c !== void 0 ? _c : 'center'
6020
6070
  : 'center',
6071
+ index: options.index,
6021
6072
  },
6022
6073
  });
6023
6074
  }
@@ -6069,30 +6120,34 @@
6069
6120
  get minimumWidth() {
6070
6121
  var _a;
6071
6122
  const activePanelMinimumWidth = (_a = this.activePanel) === null || _a === void 0 ? void 0 : _a.minimumWidth;
6072
- return typeof activePanelMinimumWidth === 'number'
6073
- ? activePanelMinimumWidth
6074
- : MINIMUM_DOCKVIEW_GROUP_PANEL_WIDTH;
6123
+ if (typeof activePanelMinimumWidth === 'number') {
6124
+ return activePanelMinimumWidth;
6125
+ }
6126
+ return super.__minimumWidth();
6075
6127
  }
6076
6128
  get minimumHeight() {
6077
6129
  var _a;
6078
6130
  const activePanelMinimumHeight = (_a = this.activePanel) === null || _a === void 0 ? void 0 : _a.minimumHeight;
6079
- return typeof activePanelMinimumHeight === 'number'
6080
- ? activePanelMinimumHeight
6081
- : MINIMUM_DOCKVIEW_GROUP_PANEL_HEIGHT;
6131
+ if (typeof activePanelMinimumHeight === 'number') {
6132
+ return activePanelMinimumHeight;
6133
+ }
6134
+ return super.__minimumHeight();
6082
6135
  }
6083
6136
  get maximumWidth() {
6084
6137
  var _a;
6085
6138
  const activePanelMaximumWidth = (_a = this.activePanel) === null || _a === void 0 ? void 0 : _a.maximumWidth;
6086
- return typeof activePanelMaximumWidth === 'number'
6087
- ? activePanelMaximumWidth
6088
- : Number.MAX_SAFE_INTEGER;
6139
+ if (typeof activePanelMaximumWidth === 'number') {
6140
+ return activePanelMaximumWidth;
6141
+ }
6142
+ return super.__maximumWidth();
6089
6143
  }
6090
6144
  get maximumHeight() {
6091
6145
  var _a;
6092
6146
  const activePanelMaximumHeight = (_a = this.activePanel) === null || _a === void 0 ? void 0 : _a.maximumHeight;
6093
- return typeof activePanelMaximumHeight === 'number'
6094
- ? activePanelMaximumHeight
6095
- : Number.MAX_SAFE_INTEGER;
6147
+ if (typeof activePanelMaximumHeight === 'number') {
6148
+ return activePanelMaximumHeight;
6149
+ }
6150
+ return super.__maximumHeight();
6096
6151
  }
6097
6152
  get panels() {
6098
6153
  return this._model.panels;
@@ -6206,12 +6261,14 @@
6206
6261
  return this.group.api.getWindow();
6207
6262
  }
6208
6263
  moveTo(options) {
6209
- var _a;
6264
+ var _a, _b;
6210
6265
  this.accessor.moveGroupOrPanel({
6211
6266
  from: { groupId: this._group.id, panelId: this.panel.id },
6212
6267
  to: {
6213
- group: options.group,
6214
- position: (_a = options.position) !== null && _a !== void 0 ? _a : 'center',
6268
+ group: (_a = options.group) !== null && _a !== void 0 ? _a : this._group,
6269
+ position: options.group
6270
+ ? (_b = options.position) !== null && _b !== void 0 ? _b : 'center'
6271
+ : 'center',
6215
6272
  index: options.index,
6216
6273
  },
6217
6274
  });
@@ -6430,7 +6487,7 @@
6430
6487
  svg.setAttributeNS(null, 'viewBox', params.viewbox);
6431
6488
  svg.setAttributeNS(null, 'aria-hidden', 'false');
6432
6489
  svg.setAttributeNS(null, 'focusable', 'false');
6433
- svg.classList.add('dockview-svg');
6490
+ svg.classList.add('dv-svg');
6434
6491
  const path = document.createElementNS('http://www.w3.org/2000/svg', 'path');
6435
6492
  path.setAttributeNS(null, 'd', params.path);
6436
6493
  svg.appendChild(path);
@@ -6601,39 +6658,10 @@
6601
6658
  constructor() {
6602
6659
  super();
6603
6660
  this._element = document.createElement('div');
6604
- this._element.className = 'watermark';
6605
- const title = document.createElement('div');
6606
- title.className = 'watermark-title';
6607
- const emptySpace = document.createElement('span');
6608
- emptySpace.style.flexGrow = '1';
6609
- const content = document.createElement('div');
6610
- content.className = 'watermark-content';
6611
- this._element.appendChild(title);
6612
- this._element.appendChild(content);
6613
- const actionsContainer = document.createElement('div');
6614
- actionsContainer.className = 'actions-container';
6615
- const closeAnchor = document.createElement('div');
6616
- closeAnchor.className = 'close-action';
6617
- closeAnchor.appendChild(createCloseButton());
6618
- actionsContainer.appendChild(closeAnchor);
6619
- title.appendChild(emptySpace);
6620
- title.appendChild(actionsContainer);
6621
- this.addDisposables(addDisposableListener(closeAnchor, 'click', (event) => {
6622
- var _a;
6623
- event.preventDefault();
6624
- if (this._group) {
6625
- (_a = this._api) === null || _a === void 0 ? void 0 : _a.removeGroup(this._group);
6626
- }
6627
- }));
6661
+ this._element.className = 'dv-watermark';
6628
6662
  }
6629
6663
  init(_params) {
6630
- this._api = _params.containerApi;
6631
- this._group = _params.group;
6632
- this.render();
6633
- }
6634
- render() {
6635
- const isOneGroup = !!(this._api && this._api.size <= 1);
6636
- toggleClass(this.element, 'has-actions', isOneGroup);
6664
+ // noop
6637
6665
  }
6638
6666
  }
6639
6667
 
@@ -6670,6 +6698,9 @@
6670
6698
  get element() {
6671
6699
  return this._element;
6672
6700
  }
6701
+ get isVisible() {
6702
+ return this._isVisible;
6703
+ }
6673
6704
  constructor(options) {
6674
6705
  super();
6675
6706
  this.options = options;
@@ -6680,6 +6711,7 @@
6680
6711
  this.onDidChangeEnd = this._onDidChangeEnd.event;
6681
6712
  this.addDisposables(this._onDidChange, this._onDidChangeEnd);
6682
6713
  this._element.className = 'dv-resize-container';
6714
+ this._isVisible = true;
6683
6715
  this.setupResize('top');
6684
6716
  this.setupResize('bottom');
6685
6717
  this.setupResize('left');
@@ -6694,6 +6726,13 @@
6694
6726
  this.setBounds(Object.assign(Object.assign(Object.assign(Object.assign({ height: this.options.height, width: this.options.width }, ('top' in this.options && { top: this.options.top })), ('bottom' in this.options && { bottom: this.options.bottom })), ('left' in this.options && { left: this.options.left })), ('right' in this.options && { right: this.options.right })));
6695
6727
  arialLevelTracker.push(this._element);
6696
6728
  }
6729
+ setVisible(isVisible) {
6730
+ if (isVisible === this.isVisible) {
6731
+ return;
6732
+ }
6733
+ this._isVisible = isVisible;
6734
+ toggleClass(this.element, 'dv-hidden', !this.isVisible);
6735
+ }
6697
6736
  bringToFront() {
6698
6737
  arialLevelTracker.push(this._element);
6699
6738
  }
@@ -7267,7 +7306,6 @@
7267
7306
  window: this._window.value,
7268
7307
  });
7269
7308
  this._window.disposable.dispose();
7270
- this._window.value.close();
7271
7309
  this._window = null;
7272
7310
  this._onDidClose.fire();
7273
7311
  }
@@ -7299,7 +7337,9 @@
7299
7337
  }
7300
7338
  const disposable = new CompositeDisposable();
7301
7339
  this._window = { value: externalWindow, disposable };
7302
- disposable.addDisposables(addDisposableWindowListener(window, 'beforeunload', () => {
7340
+ disposable.addDisposables(exports.DockviewDisposable.from(() => {
7341
+ externalWindow.close();
7342
+ }), addDisposableWindowListener(window, 'beforeunload', () => {
7303
7343
  /**
7304
7344
  * before the main window closes we should close this popup too
7305
7345
  * to be good citizens
@@ -7316,7 +7356,7 @@
7316
7356
  id: this.target,
7317
7357
  window: externalWindow,
7318
7358
  });
7319
- return new Promise((resolve) => {
7359
+ return new Promise((resolve, reject) => {
7320
7360
  externalWindow.addEventListener('unload', (e) => {
7321
7361
  // if page fails to load before unloading
7322
7362
  // this.close();
@@ -7325,21 +7365,27 @@
7325
7365
  /**
7326
7366
  * @see https://developer.mozilla.org/en-US/docs/Web/API/Window/load_event
7327
7367
  */
7328
- const externalDocument = externalWindow.document;
7329
- externalDocument.title = document.title;
7330
- externalDocument.body.appendChild(container);
7331
- addStyles(externalDocument, window.document.styleSheets);
7332
- /**
7333
- * beforeunload must be registered after load for reasons I could not determine
7334
- * otherwise the beforeunload event will not fire when the window is closed
7335
- */
7336
- addDisposableWindowListener(externalWindow, 'beforeunload', () => {
7368
+ try {
7369
+ const externalDocument = externalWindow.document;
7370
+ externalDocument.title = document.title;
7371
+ externalDocument.body.appendChild(container);
7372
+ addStyles(externalDocument, window.document.styleSheets);
7337
7373
  /**
7338
- * @see https://developer.mozilla.org/en-US/docs/Web/API/Window/beforeunload_event
7374
+ * beforeunload must be registered after load for reasons I could not determine
7375
+ * otherwise the beforeunload event will not fire when the window is closed
7339
7376
  */
7340
- this.close();
7341
- });
7342
- resolve(container);
7377
+ addDisposableWindowListener(externalWindow, 'beforeunload', () => {
7378
+ /**
7379
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/Window/beforeunload_event
7380
+ */
7381
+ this.close();
7382
+ });
7383
+ resolve(container);
7384
+ }
7385
+ catch (err) {
7386
+ // only except this is the DOM isn't setup. e.g. in a in correctly configured test
7387
+ reject(err);
7388
+ }
7343
7389
  });
7344
7390
  });
7345
7391
  });
@@ -7446,6 +7492,8 @@
7446
7492
  this.onDidActivePanelChange = this._onDidActivePanelChange.event;
7447
7493
  this._onDidMovePanel = new Emitter();
7448
7494
  this.onDidMovePanel = this._onDidMovePanel.event;
7495
+ this._onDidMaximizedGroupChange = new Emitter();
7496
+ this.onDidMaximizedGroupChange = this._onDidMaximizedGroupChange.event;
7449
7497
  this._floatingGroups = [];
7450
7498
  this._popoutGroups = [];
7451
7499
  this._onDidRemoveGroup = new Emitter();
@@ -7472,6 +7520,11 @@
7472
7520
  if (!this._moving) {
7473
7521
  this._onDidActiveGroupChange.fire(event);
7474
7522
  }
7523
+ }), this.onDidMaximizedChange((event) => {
7524
+ this._onDidMaximizedGroupChange.fire({
7525
+ group: event.panel,
7526
+ isMaximized: event.isMaximized,
7527
+ });
7475
7528
  }), exports.DockviewEvent.any(this.onDidAdd, this.onDidRemove)(() => {
7476
7529
  this.updateWatermark();
7477
7530
  }), exports.DockviewEvent.any(this.onDidAddPanel, this.onDidRemovePanel, this.onDidAddGroup, this.onDidRemove, this.onDidMovePanel, this.onDidActivePanelChange)(() => {
@@ -7570,8 +7623,28 @@
7570
7623
  this._api = new DockviewApi(this);
7571
7624
  this.updateWatermark();
7572
7625
  }
7626
+ setVisible(panel, visible) {
7627
+ switch (panel.api.location.type) {
7628
+ case 'grid':
7629
+ super.setVisible(panel, visible);
7630
+ break;
7631
+ case 'floating': {
7632
+ const item = this.floatingGroups.find((floatingGroup) => floatingGroup.group === panel);
7633
+ if (item) {
7634
+ item.overlay.setVisible(visible);
7635
+ panel.api._onDidVisibilityChange.fire({
7636
+ isVisible: visible,
7637
+ });
7638
+ }
7639
+ break;
7640
+ }
7641
+ case 'popout':
7642
+ console.warn('dockview: You cannot hide a group that is in a popout window');
7643
+ break;
7644
+ }
7645
+ }
7573
7646
  addPopoutGroup(itemToPopout, options) {
7574
- var _a, _b, _c;
7647
+ var _a, _b, _c, _d, _e;
7575
7648
  if (itemToPopout instanceof DockviewPanel &&
7576
7649
  itemToPopout.group.size === 1) {
7577
7650
  return this.addPopoutGroup(itemToPopout.group, options);
@@ -7592,12 +7665,9 @@
7592
7665
  }
7593
7666
  const box = getBox();
7594
7667
  const groupId = (_b = (_a = options === null || options === void 0 ? void 0 : options.overridePopoutGroup) === null || _a === void 0 ? void 0 : _a.id) !== null && _b !== void 0 ? _b : this.getNextGroupId();
7595
- if (itemToPopout.api.location.type === 'grid') {
7596
- itemToPopout.api.setVisible(false);
7597
- }
7598
7668
  const _window = new PopoutWindow(`${this.id}-${groupId}`, // unique id
7599
7669
  theme !== null && theme !== void 0 ? theme : '', {
7600
- url: (_c = options === null || options === void 0 ? void 0 : options.popoutUrl) !== null && _c !== void 0 ? _c : '/popout.html',
7670
+ url: (_e = (_c = options === null || options === void 0 ? void 0 : options.popoutUrl) !== null && _c !== void 0 ? _c : (_d = this.options) === null || _d === void 0 ? void 0 : _d.popoutUrl) !== null && _e !== void 0 ? _e : '/popout.html',
7601
7671
  left: window.screenX + box.left,
7602
7672
  top: window.screenY + box.top,
7603
7673
  width: box.width,
@@ -7611,13 +7681,12 @@
7611
7681
  return _window
7612
7682
  .open()
7613
7683
  .then((popoutContainer) => {
7614
- var _a;
7615
7684
  if (_window.isDisposed) {
7616
- return;
7685
+ return false;
7617
7686
  }
7618
7687
  if (popoutContainer === null) {
7619
7688
  popoutWindowDisposable.dispose();
7620
- return;
7689
+ return false;
7621
7690
  }
7622
7691
  const gready = document.createElement('div');
7623
7692
  gready.className = 'dv-overlay-render-container';
@@ -7626,30 +7695,45 @@
7626
7695
  ? itemToPopout.group
7627
7696
  : itemToPopout;
7628
7697
  const referenceLocation = itemToPopout.api.location.type;
7629
- const group = (_a = options === null || options === void 0 ? void 0 : options.overridePopoutGroup) !== null && _a !== void 0 ? _a : this.createGroup({ id: groupId });
7630
- group.model.renderContainer = overlayRenderContainer;
7631
- if (!(options === null || options === void 0 ? void 0 : options.overridePopoutGroup)) {
7632
- this._onDidAddGroup.fire(group);
7698
+ /**
7699
+ * The group that is being added doesn't already exist within the DOM, the most likely occurance
7700
+ * of this case is when being called from the `fromJSON(...)` method
7701
+ */
7702
+ const isGroupAddedToDom = referenceGroup.element.parentElement !== null;
7703
+ let group;
7704
+ if (!isGroupAddedToDom) {
7705
+ group = referenceGroup;
7633
7706
  }
7634
- if (itemToPopout instanceof DockviewPanel) {
7635
- this.movingLock(() => {
7636
- const panel = referenceGroup.model.removePanel(itemToPopout);
7637
- group.model.openPanel(panel);
7638
- });
7707
+ else if (options === null || options === void 0 ? void 0 : options.overridePopoutGroup) {
7708
+ group = options.overridePopoutGroup;
7639
7709
  }
7640
7710
  else {
7641
- this.movingLock(() => moveGroupWithoutDestroying({
7642
- from: referenceGroup,
7643
- to: group,
7644
- }));
7645
- switch (referenceLocation) {
7646
- case 'grid':
7647
- referenceGroup.api.setVisible(false);
7648
- break;
7649
- case 'floating':
7650
- case 'popout':
7651
- this.removeGroup(referenceGroup);
7652
- break;
7711
+ group = this.createGroup({ id: groupId });
7712
+ this._onDidAddGroup.fire(group);
7713
+ }
7714
+ group.model.renderContainer = overlayRenderContainer;
7715
+ group.layout(_window.window.innerWidth, _window.window.innerHeight);
7716
+ if (!(options === null || options === void 0 ? void 0 : options.overridePopoutGroup) && isGroupAddedToDom) {
7717
+ if (itemToPopout instanceof DockviewPanel) {
7718
+ this.movingLock(() => {
7719
+ const panel = referenceGroup.model.removePanel(itemToPopout);
7720
+ group.model.openPanel(panel);
7721
+ });
7722
+ }
7723
+ else {
7724
+ this.movingLock(() => moveGroupWithoutDestroying({
7725
+ from: referenceGroup,
7726
+ to: group,
7727
+ }));
7728
+ switch (referenceLocation) {
7729
+ case 'grid':
7730
+ referenceGroup.api.setVisible(false);
7731
+ break;
7732
+ case 'floating':
7733
+ case 'popout':
7734
+ this.removeGroup(referenceGroup);
7735
+ break;
7736
+ }
7653
7737
  }
7654
7738
  }
7655
7739
  popoutContainer.classList.add('dv-dockview');
@@ -7659,7 +7743,12 @@
7659
7743
  group.model.location = {
7660
7744
  type: 'popout',
7661
7745
  getWindow: () => _window.window,
7746
+ popoutUrl: options === null || options === void 0 ? void 0 : options.popoutUrl,
7662
7747
  };
7748
+ if (isGroupAddedToDom &&
7749
+ itemToPopout.api.location.type === 'grid') {
7750
+ itemToPopout.api.setVisible(false);
7751
+ }
7663
7752
  this.doSetGroupAndPanelActive(group);
7664
7753
  popoutWindowDisposable.addDisposables(group.api.onDidActiveChange((event) => {
7665
7754
  var _a;
@@ -7671,10 +7760,13 @@
7671
7760
  (_a = _window.window) === null || _a === void 0 ? void 0 : _a.focus();
7672
7761
  }));
7673
7762
  let returnedGroup;
7763
+ const isValidReferenceGroup = isGroupAddedToDom &&
7764
+ referenceGroup &&
7765
+ this.getPanel(referenceGroup.id);
7674
7766
  const value = {
7675
7767
  window: _window,
7676
7768
  popoutGroup: group,
7677
- referenceGroup: this.getPanel(referenceGroup.id)
7769
+ referenceGroup: isValidReferenceGroup
7678
7770
  ? referenceGroup.id
7679
7771
  : undefined,
7680
7772
  disposable: {
@@ -7691,9 +7783,10 @@
7691
7783
  * window dimensions
7692
7784
  */
7693
7785
  addDisposableWindowListener(_window.window, 'resize', () => {
7694
- group.layout(window.innerWidth, window.innerHeight);
7786
+ group.layout(_window.window.innerWidth, _window.window.innerHeight);
7695
7787
  }), overlayRenderContainer, exports.DockviewDisposable.from(() => {
7696
- if (this.getPanel(referenceGroup.id)) {
7788
+ if (isGroupAddedToDom &&
7789
+ this.getPanel(referenceGroup.id)) {
7697
7790
  this.movingLock(() => moveGroupWithoutDestroying({
7698
7791
  from: group,
7699
7792
  to: referenceGroup,
@@ -7708,21 +7801,27 @@
7708
7801
  }
7709
7802
  }
7710
7803
  else if (this.getPanel(group.id)) {
7711
- const removedGroup = this.doRemoveGroup(group, {
7804
+ this.doRemoveGroup(group, {
7712
7805
  skipDispose: true,
7713
7806
  skipActive: true,
7807
+ skipPopoutReturn: true,
7714
7808
  });
7809
+ const removedGroup = group;
7715
7810
  removedGroup.model.renderContainer =
7716
7811
  this.overlayRenderContainer;
7717
7812
  removedGroup.model.location = { type: 'grid' };
7718
7813
  returnedGroup = removedGroup;
7814
+ this.doAddGroup(removedGroup, [0]);
7815
+ this.doSetGroupAndPanelActive(removedGroup);
7719
7816
  }
7720
7817
  }));
7721
7818
  this._popoutGroups.push(value);
7722
7819
  this.updateWatermark();
7820
+ return true;
7723
7821
  })
7724
7822
  .catch((err) => {
7725
7823
  console.error('dockview: failed to create popout window', err);
7824
+ return false;
7726
7825
  });
7727
7826
  }
7728
7827
  addFloatingGroup(item, options) {
@@ -7826,7 +7925,7 @@
7826
7925
  : (_c = (_b = this.options.floatingGroupBounds) === null || _b === void 0 ? void 0 : _b.minimumWidthWithinViewport) !== null && _c !== void 0 ? _c : DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE, minimumInViewportHeight: this.options.floatingGroupBounds === 'boundedWithinViewport'
7827
7926
  ? undefined
7828
7927
  : (_e = (_d = this.options.floatingGroupBounds) === null || _d === void 0 ? void 0 : _d.minimumHeightWithinViewport) !== null && _e !== void 0 ? _e : DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE }));
7829
- const el = group.element.querySelector('.void-container');
7928
+ const el = group.element.querySelector('.dv-void-container');
7830
7929
  if (!el) {
7831
7930
  throw new Error('failed to find drag handle');
7832
7931
  }
@@ -8018,6 +8117,9 @@
8018
8117
  data: group.popoutGroup.toJSON(),
8019
8118
  gridReferenceGroup: group.referenceGroup,
8020
8119
  position: group.window.dimensions(),
8120
+ url: group.popoutGroup.api.location.type === 'popout'
8121
+ ? group.popoutGroup.api.location.popoutUrl
8122
+ : undefined,
8021
8123
  };
8022
8124
  });
8023
8125
  const result = {
@@ -8104,16 +8206,16 @@
8104
8206
  }
8105
8207
  const serializedPopoutGroups = (_b = data.popoutGroups) !== null && _b !== void 0 ? _b : [];
8106
8208
  for (const serializedPopoutGroup of serializedPopoutGroups) {
8107
- const { data, position, gridReferenceGroup } = serializedPopoutGroup;
8209
+ const { data, position, gridReferenceGroup, url } = serializedPopoutGroup;
8108
8210
  const group = createGroupFromSerializedState(data);
8109
8211
  this.addPopoutGroup((_c = (gridReferenceGroup
8110
8212
  ? this.getPanel(gridReferenceGroup)
8111
8213
  : undefined)) !== null && _c !== void 0 ? _c : group, {
8112
- skipRemoveGroup: true,
8113
8214
  position: position !== null && position !== void 0 ? position : undefined,
8114
8215
  overridePopoutGroup: gridReferenceGroup
8115
8216
  ? group
8116
8217
  : undefined,
8218
+ popoutUrl: url,
8117
8219
  });
8118
8220
  }
8119
8221
  for (const floatingGroup of this._floatingGroups) {
@@ -8127,6 +8229,7 @@
8127
8229
  }
8128
8230
  }
8129
8231
  catch (err) {
8232
+ console.error('dockview: failed to deserialize layout. Reverting changes', err);
8130
8233
  /**
8131
8234
  * Takes all the successfully created groups and remove all of their panels.
8132
8235
  */
@@ -8194,11 +8297,13 @@
8194
8297
  width: options.initialWidth,
8195
8298
  height: options.initialHeight,
8196
8299
  };
8300
+ let index;
8197
8301
  if (options.position) {
8198
8302
  if (isPanelOptionsWithPanel(options.position)) {
8199
8303
  const referencePanel = typeof options.position.referencePanel === 'string'
8200
8304
  ? this.getGroupPanel(options.position.referencePanel)
8201
8305
  : options.position.referencePanel;
8306
+ index = options.position.index;
8202
8307
  if (!referencePanel) {
8203
8308
  throw new Error(`referencePanel '${options.position.referencePanel}' does not exist`);
8204
8309
  }
@@ -8209,6 +8314,7 @@
8209
8314
  typeof options.position.referenceGroup === 'string'
8210
8315
  ? (_a = this._groups.get(options.position.referenceGroup)) === null || _a === void 0 ? void 0 : _a.value
8211
8316
  : options.position.referenceGroup;
8317
+ index = options.position.index;
8212
8318
  if (!referenceGroup) {
8213
8319
  throw new Error(`referenceGroup '${options.position.referenceGroup}' does not exist`);
8214
8320
  }
@@ -8219,6 +8325,7 @@
8219
8325
  group.model.openPanel(panel, {
8220
8326
  skipSetActive: options.inactive,
8221
8327
  skipSetGroupActive: options.inactive,
8328
+ index,
8222
8329
  });
8223
8330
  if (!options.inactive) {
8224
8331
  this.doSetGroupAndPanelActive(group);
@@ -8248,6 +8355,7 @@
8248
8355
  group.model.openPanel(panel, {
8249
8356
  skipSetActive: options.inactive,
8250
8357
  skipSetGroupActive: options.inactive,
8358
+ index,
8251
8359
  });
8252
8360
  }
8253
8361
  else if (referenceGroup.api.location.type === 'floating' ||
@@ -8256,6 +8364,7 @@
8256
8364
  referenceGroup.model.openPanel(panel, {
8257
8365
  skipSetActive: options.inactive,
8258
8366
  skipSetGroupActive: options.inactive,
8367
+ index,
8259
8368
  });
8260
8369
  referenceGroup.api.setSize({
8261
8370
  width: initial === null || initial === void 0 ? void 0 : initial.width,
@@ -8276,6 +8385,7 @@
8276
8385
  group.model.openPanel(panel, {
8277
8386
  skipSetActive: options.inactive,
8278
8387
  skipSetGroupActive: options.inactive,
8388
+ index,
8279
8389
  });
8280
8390
  if (!options.inactive) {
8281
8391
  this.doSetGroupAndPanelActive(group);
@@ -8294,6 +8404,7 @@
8294
8404
  group.model.openPanel(panel, {
8295
8405
  skipSetActive: options.inactive,
8296
8406
  skipSetGroupActive: options.inactive,
8407
+ index,
8297
8408
  });
8298
8409
  }
8299
8410
  else {
@@ -8304,6 +8415,7 @@
8304
8415
  group.model.openPanel(panel, {
8305
8416
  skipSetActive: options.inactive,
8306
8417
  skipSetGroupActive: options.inactive,
8418
+ index,
8307
8419
  });
8308
8420
  if (!options.inactive) {
8309
8421
  this.doSetGroupAndPanelActive(group);
@@ -8313,7 +8425,6 @@
8313
8425
  }
8314
8426
  removePanel(panel, options = {
8315
8427
  removeEmptyGroup: true,
8316
- skipDispose: false,
8317
8428
  }) {
8318
8429
  const group = panel.group;
8319
8430
  if (!group) {
@@ -8844,6 +8955,31 @@
8844
8955
  }
8845
8956
  }
8846
8957
 
8958
+ function createComponent(id, componentName, components = {}, frameworkComponents = {}, createFrameworkComponent, fallback) {
8959
+ const Component = typeof componentName === 'string'
8960
+ ? components[componentName]
8961
+ : undefined;
8962
+ const FrameworkComponent = typeof componentName === 'string'
8963
+ ? frameworkComponents[componentName]
8964
+ : undefined;
8965
+ if (Component && FrameworkComponent) {
8966
+ throw new Error(`Cannot create '${id}'. component '${componentName}' registered as both a component and frameworkComponent`);
8967
+ }
8968
+ if (FrameworkComponent) {
8969
+ if (!createFrameworkComponent) {
8970
+ throw new Error(`Cannot create '${id}' for framework component '${componentName}'. you must register a frameworkPanelWrapper to use framework components`);
8971
+ }
8972
+ return createFrameworkComponent.createComponent(id, componentName, FrameworkComponent);
8973
+ }
8974
+ if (!Component) {
8975
+ if (fallback) {
8976
+ return fallback();
8977
+ }
8978
+ throw new Error(`Cannot create '${id}', no component '${componentName}' provided`);
8979
+ }
8980
+ return new Component(id, componentName);
8981
+ }
8982
+
8847
8983
  class GridviewComponent extends BaseGrid {
8848
8984
  get orientation() {
8849
8985
  return this.gridview.orientation;
@@ -9392,12 +9528,14 @@
9392
9528
  this._expandedIcon = createExpandMoreButton();
9393
9529
  this._collapsedIcon = createChevronRightButton();
9394
9530
  this.disposable = new MutableDisposable();
9395
- this.apiRef = { api: null };
9531
+ this.apiRef = {
9532
+ api: null,
9533
+ };
9396
9534
  this._element = document.createElement('div');
9397
- this.element.className = 'default-header';
9535
+ this.element.className = 'dv-default-header';
9398
9536
  this._content = document.createElement('span');
9399
9537
  this._expander = document.createElement('div');
9400
- this._expander.className = 'dockview-pane-header-icon';
9538
+ this._expander.className = 'dv-pane-header-icon';
9401
9539
  this.element.appendChild(this._expander);
9402
9540
  this.element.appendChild(this._content);
9403
9541
  this.addDisposables(addDisposableListener(this._element, 'click', () => {
@@ -9868,7 +10006,6 @@
9868
10006
  exports.GridviewApi = GridviewApi;
9869
10007
  exports.GridviewComponent = GridviewComponent;
9870
10008
  exports.GridviewPanel = GridviewPanel;
9871
- exports.LocalSelectionTransfer = LocalSelectionTransfer;
9872
10009
  exports.PROPERTY_KEYS = PROPERTY_KEYS;
9873
10010
  exports.PaneFramework = PaneFramework;
9874
10011
  exports.PaneTransfer = PaneTransfer;
@@ -9883,7 +10020,6 @@
9883
10020
  exports.SplitviewPanel = SplitviewPanel;
9884
10021
  exports.Tab = Tab;
9885
10022
  exports.WillShowOverlayLocationEvent = WillShowOverlayLocationEvent;
9886
- exports.createComponent = createComponent;
9887
10023
  exports.createDockview = createDockview;
9888
10024
  exports.createGridview = createGridview;
9889
10025
  exports.createPaneview = createPaneview;