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
  */
@@ -31,7 +31,7 @@ function styleInject(css, ref) {
31
31
  }
32
32
  }
33
33
 
34
- 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}";
34
+ 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}";
35
35
  styleInject(css_248z);
36
36
 
37
37
  class TransferObject {
@@ -352,31 +352,6 @@ class MutableDisposable {
352
352
  }
353
353
  }
354
354
 
355
- function createComponent(id, componentName, components = {}, frameworkComponents = {}, createFrameworkComponent, fallback) {
356
- const Component = typeof componentName === 'string'
357
- ? components[componentName]
358
- : undefined;
359
- const FrameworkComponent = typeof componentName === 'string'
360
- ? frameworkComponents[componentName]
361
- : undefined;
362
- if (Component && FrameworkComponent) {
363
- throw new Error(`Cannot create '${id}'. component '${componentName}' registered as both a component and frameworkComponent`);
364
- }
365
- if (FrameworkComponent) {
366
- if (!createFrameworkComponent) {
367
- throw new Error(`Cannot create '${id}' for framework component '${componentName}'. you must register a frameworkPanelWrapper to use framework components`);
368
- }
369
- return createFrameworkComponent.createComponent(id, componentName, FrameworkComponent);
370
- }
371
- if (!Component) {
372
- if (fallback) {
373
- return fallback();
374
- }
375
- throw new Error(`Cannot create '${id}', no component '${componentName}' provided`);
376
- }
377
- return new Component(id, componentName);
378
- }
379
-
380
355
  function watchElementResize(element, cb) {
381
356
  const observer = new ResizeObserver((entires) => {
382
357
  /**
@@ -845,10 +820,10 @@ class Splitview {
845
820
  const tmp = this.size;
846
821
  this.size = this.orthogonalSize;
847
822
  this.orthogonalSize = tmp;
848
- removeClasses(this.element, 'horizontal', 'vertical');
823
+ removeClasses(this.element, 'dv-horizontal', 'dv-vertical');
849
824
  this.element.classList.add(this.orientation == Orientation.HORIZONTAL
850
- ? 'horizontal'
851
- : 'vertical');
825
+ ? 'dv-horizontal'
826
+ : 'dv-vertical');
852
827
  }
853
828
  get minimumSize() {
854
829
  return this.viewItems.reduce((r, item) => r + item.minimumSize, 0);
@@ -1026,11 +1001,11 @@ class Splitview {
1026
1001
  }
1027
1002
  style(styles) {
1028
1003
  if ((styles === null || styles === void 0 ? void 0 : styles.separatorBorder) === 'transparent') {
1029
- removeClasses(this.element, 'separator-border');
1004
+ removeClasses(this.element, 'dv-separator-border');
1030
1005
  this.element.style.removeProperty('--dv-separator-border');
1031
1006
  }
1032
1007
  else {
1033
- addClasses(this.element, 'separator-border');
1008
+ addClasses(this.element, 'dv-separator-border');
1034
1009
  if (styles === null || styles === void 0 ? void 0 : styles.separatorBorder) {
1035
1010
  this.element.style.setProperty('--dv-separator-border', styles.separatorBorder);
1036
1011
  }
@@ -1100,7 +1075,7 @@ class Splitview {
1100
1075
  }
1101
1076
  addView(view, size = { type: 'distribute' }, index = this.viewItems.length, skipLayout) {
1102
1077
  const container = document.createElement('div');
1103
- container.className = 'view';
1078
+ container.className = 'dv-view';
1104
1079
  container.appendChild(view.element);
1105
1080
  let viewSize;
1106
1081
  if (typeof size === 'number') {
@@ -1132,7 +1107,7 @@ class Splitview {
1132
1107
  if (this.viewItems.length > 1) {
1133
1108
  //add sash
1134
1109
  const sash = document.createElement('div');
1135
- sash.className = 'sash';
1110
+ sash.className = 'dv-sash';
1136
1111
  const onPointerStart = (event) => {
1137
1112
  for (const item of this.viewItems) {
1138
1113
  item.enabled = false;
@@ -1391,7 +1366,8 @@ class Splitview {
1391
1366
  const offset = i === 0 || visiblePanelsBeforeThisView === 0
1392
1367
  ? 0
1393
1368
  : viewLeftOffsets[i - 1] +
1394
- (visiblePanelsBeforeThisView / sashCount) * marginReducedSize;
1369
+ (visiblePanelsBeforeThisView / sashCount) *
1370
+ marginReducedSize;
1395
1371
  if (i < this.viewItems.length - 1) {
1396
1372
  // calculate sash position
1397
1373
  const newSize = view.visible
@@ -1502,27 +1478,27 @@ class Splitview {
1502
1478
  }
1503
1479
  }
1504
1480
  updateSash(sash, state) {
1505
- toggleClass(sash.container, 'disabled', state === SashState.DISABLED);
1506
- toggleClass(sash.container, 'enabled', state === SashState.ENABLED);
1507
- toggleClass(sash.container, 'maximum', state === SashState.MAXIMUM);
1508
- toggleClass(sash.container, 'minimum', state === SashState.MINIMUM);
1481
+ toggleClass(sash.container, 'dv-disabled', state === SashState.DISABLED);
1482
+ toggleClass(sash.container, 'dv-enabled', state === SashState.ENABLED);
1483
+ toggleClass(sash.container, 'dv-maximum', state === SashState.MAXIMUM);
1484
+ toggleClass(sash.container, 'dv-minimum', state === SashState.MINIMUM);
1509
1485
  }
1510
1486
  createViewContainer() {
1511
1487
  const element = document.createElement('div');
1512
- element.className = 'view-container';
1488
+ element.className = 'dv-view-container';
1513
1489
  return element;
1514
1490
  }
1515
1491
  createSashContainer() {
1516
1492
  const element = document.createElement('div');
1517
- element.className = 'sash-container';
1493
+ element.className = 'dv-sash-container';
1518
1494
  return element;
1519
1495
  }
1520
1496
  createContainer() {
1521
1497
  const element = document.createElement('div');
1522
1498
  const orientationClassname = this._orientation === Orientation.HORIZONTAL
1523
- ? 'horizontal'
1524
- : 'vertical';
1525
- element.className = `split-view-container ${orientationClassname}`;
1499
+ ? 'dv-horizontal'
1500
+ : 'dv-vertical';
1501
+ element.className = `dv-split-view-container ${orientationClassname}`;
1526
1502
  return element;
1527
1503
  }
1528
1504
  dispose() {
@@ -1573,7 +1549,7 @@ class Paneview extends CompositeDisposable {
1573
1549
  this.onDidChange = this._onDidChange.event;
1574
1550
  this._orientation = (_a = options.orientation) !== null && _a !== void 0 ? _a : Orientation.VERTICAL;
1575
1551
  this.element = document.createElement('div');
1576
- this.element.className = 'pane-container';
1552
+ this.element.className = 'dv-pane-container';
1577
1553
  container.appendChild(this.element);
1578
1554
  this.splitview = new Splitview(this.element, {
1579
1555
  orientation: this._orientation,
@@ -1665,10 +1641,10 @@ class Paneview extends CompositeDisposable {
1665
1641
  clearTimeout(this.animationTimer);
1666
1642
  this.animationTimer = undefined;
1667
1643
  }
1668
- addClasses(this.element, 'animated');
1644
+ addClasses(this.element, 'dv-animated');
1669
1645
  this.animationTimer = setTimeout(() => {
1670
1646
  this.animationTimer = undefined;
1671
- removeClasses(this.element, 'animated');
1647
+ removeClasses(this.element, 'dv-animated');
1672
1648
  }, 200);
1673
1649
  }
1674
1650
  dispose() {
@@ -1893,7 +1869,7 @@ class BranchNode extends CompositeDisposable {
1893
1869
  this._orthogonalSize = orthogonalSize;
1894
1870
  this._size = size;
1895
1871
  this.element = document.createElement('div');
1896
- this.element.className = 'branch-node';
1872
+ this.element.className = 'dv-branch-node';
1897
1873
  if (!childDescriptors) {
1898
1874
  this.splitview = new Splitview(this.element, {
1899
1875
  orientation: this.orientation,
@@ -2104,7 +2080,7 @@ function getGridLocation(element) {
2104
2080
  if (!parentElement) {
2105
2081
  throw new Error('Invalid grid element');
2106
2082
  }
2107
- if (/\bgrid-view\b/.test(parentElement.className)) {
2083
+ if (/\bdv-grid-view\b/.test(parentElement.className)) {
2108
2084
  return [];
2109
2085
  }
2110
2086
  const index = indexInParent(parentElement);
@@ -2241,6 +2217,7 @@ class Gridview {
2241
2217
  if (this.hasMaximizedView()) {
2242
2218
  this.exitMaximizedView();
2243
2219
  }
2220
+ serializeBranchNode(this.getView(), this.orientation);
2244
2221
  const hiddenOnMaximize = [];
2245
2222
  function hideAllViewsBut(parent, exclude) {
2246
2223
  for (let i = 0; i < parent.children.length; i++) {
@@ -2262,7 +2239,10 @@ class Gridview {
2262
2239
  }
2263
2240
  hideAllViewsBut(this.root, node);
2264
2241
  this._maximizedNode = { leaf: node, hiddenOnMaximize };
2265
- this._onDidMaximizedNodeChange.fire();
2242
+ this._onDidMaximizedNodeChange.fire({
2243
+ view: node.view,
2244
+ isMaximized: true,
2245
+ });
2266
2246
  }
2267
2247
  exitMaximizedView() {
2268
2248
  if (!this._maximizedNode) {
@@ -2283,24 +2263,51 @@ class Gridview {
2283
2263
  }
2284
2264
  }
2285
2265
  showViewsInReverseOrder(this.root);
2266
+ const tmp = this._maximizedNode.leaf;
2286
2267
  this._maximizedNode = undefined;
2287
- this._onDidMaximizedNodeChange.fire();
2268
+ this._onDidMaximizedNodeChange.fire({
2269
+ view: tmp.view,
2270
+ isMaximized: false,
2271
+ });
2288
2272
  }
2289
2273
  serialize() {
2274
+ const maximizedView = this.maximizedView();
2275
+ let maxmizedViewLocation;
2276
+ if (maximizedView) {
2277
+ /**
2278
+ * The minimum information we can get away with in order to serialize a maxmized view is it's location within the grid
2279
+ * which is represented as a branch of indices
2280
+ */
2281
+ maxmizedViewLocation = getGridLocation(maximizedView.element);
2282
+ }
2290
2283
  if (this.hasMaximizedView()) {
2291
2284
  /**
2292
- * do not persist maximized view state
2293
- * firstly exit any maximized views to ensure the correct dimensions are persisted
2285
+ * the saved layout cannot be in its maxmized state otherwise all of the underlying
2286
+ * view dimensions will be wrong
2287
+ *
2288
+ * To counteract this we temporaily remove the maximized view to compute the serialized output
2289
+ * of the grid before adding back the maxmized view as to not alter the layout from the users
2290
+ * perspective when `.toJSON()` is called
2294
2291
  */
2295
2292
  this.exitMaximizedView();
2296
2293
  }
2297
2294
  const root = serializeBranchNode(this.getView(), this.orientation);
2298
- return {
2295
+ const resullt = {
2299
2296
  root,
2300
2297
  width: this.width,
2301
2298
  height: this.height,
2302
2299
  orientation: this.orientation,
2303
2300
  };
2301
+ if (maxmizedViewLocation) {
2302
+ resullt.maximizedNode = {
2303
+ location: maxmizedViewLocation,
2304
+ };
2305
+ }
2306
+ if (maximizedView) {
2307
+ // replace any maximzied view that was removed for serialization purposes
2308
+ this.maximizeView(maximizedView);
2309
+ }
2310
+ return resullt;
2304
2311
  }
2305
2312
  dispose() {
2306
2313
  this.disposable.dispose();
@@ -2319,6 +2326,19 @@ class Gridview {
2319
2326
  const orientation = json.orientation;
2320
2327
  const height = orientation === Orientation.VERTICAL ? json.height : json.width;
2321
2328
  this._deserialize(json.root, orientation, deserializer, height);
2329
+ /**
2330
+ * The deserialied layout must be positioned through this.layout(...)
2331
+ * before any maximizedNode can be positioned
2332
+ */
2333
+ this.layout(json.width, json.height);
2334
+ if (json.maximizedNode) {
2335
+ const location = json.maximizedNode.location;
2336
+ const [_, node] = this.getNode(location);
2337
+ if (!(node instanceof LeafNode)) {
2338
+ return;
2339
+ }
2340
+ this.maximizeView(node.view);
2341
+ }
2322
2342
  }
2323
2343
  _deserialize(root, orientation, deserializer, orthogonalSize) {
2324
2344
  this.root = this._deserializeNode(root, orientation, deserializer, orthogonalSize);
@@ -2452,7 +2472,7 @@ class Gridview {
2452
2472
  this._onDidMaximizedNodeChange = new Emitter();
2453
2473
  this.onDidMaximizedNodeChange = this._onDidMaximizedNodeChange.event;
2454
2474
  this.element = document.createElement('div');
2455
- this.element.className = 'grid-view';
2475
+ this.element.className = 'dv-grid-view';
2456
2476
  this._locked = locked !== null && locked !== void 0 ? locked : false;
2457
2477
  this._margin = margin !== null && margin !== void 0 ? margin : 0;
2458
2478
  this.root = new BranchNode(orientation, proportionalLayout, styles, 0, 0, this.locked, this.margin);
@@ -2743,6 +2763,8 @@ class BaseGrid extends Resizable {
2743
2763
  this.onDidRemove = this._onDidRemove.event;
2744
2764
  this._onDidAdd = new Emitter();
2745
2765
  this.onDidAdd = this._onDidAdd.event;
2766
+ this._onDidMaximizedChange = new Emitter();
2767
+ this.onDidMaximizedChange = this._onDidMaximizedChange.event;
2746
2768
  this._onDidActiveChange = new Emitter();
2747
2769
  this.onDidActiveChange = this._onDidActiveChange.event;
2748
2770
  this._bufferOnDidLayoutChange = new AsapEvent();
@@ -2758,7 +2780,12 @@ class BaseGrid extends Resizable {
2758
2780
  this.gridview.locked = !!options.locked;
2759
2781
  this.element.appendChild(this.gridview.element);
2760
2782
  this.layout(0, 0, true); // set some elements height/widths
2761
- this.addDisposables(this.gridview.onDidViewVisibilityChange(() => this._onDidViewVisibilityChangeMicroTaskQueue.fire()), this.onDidViewVisibilityChangeMicroTaskQueue(() => {
2783
+ this.addDisposables(this.gridview.onDidMaximizedNodeChange((event) => {
2784
+ this._onDidMaximizedChange.fire({
2785
+ panel: event.view,
2786
+ isMaximized: event.isMaximized,
2787
+ });
2788
+ }), this.gridview.onDidViewVisibilityChange(() => this._onDidViewVisibilityChangeMicroTaskQueue.fire()), this.onDidViewVisibilityChangeMicroTaskQueue(() => {
2762
2789
  this.layout(this.width, this.height, true);
2763
2790
  }), Disposable.from(() => {
2764
2791
  var _a;
@@ -2808,9 +2835,6 @@ class BaseGrid extends Resizable {
2808
2835
  hasMaximizedGroup() {
2809
2836
  return this.gridview.hasMaximizedView();
2810
2837
  }
2811
- get onDidMaximizedGroupChange() {
2812
- return this.gridview.onDidMaximizedNodeChange;
2813
- }
2814
2838
  doAddGroup(group, location = [0], size) {
2815
2839
  this.gridview.addView(group, size !== null && size !== void 0 ? size : Sizing.Distribute, location);
2816
2840
  this._onDidAdd.fire(group);
@@ -3674,7 +3698,7 @@ class DragHandler extends CompositeDisposable {
3674
3698
  * dnd logic. You can see the code at
3675
3699
  * https://github.com/react-dnd/react-dnd/blob/main/packages/backend-html5/src/HTML5BackendImpl.ts#L542
3676
3700
  */
3677
- event.dataTransfer.setData('text/plain', '__dockview_internal_drag_event__');
3701
+ event.dataTransfer.setData('text/plain', '');
3678
3702
  }
3679
3703
  }
3680
3704
  }), addDisposableListener(this.el, 'dragend', () => {
@@ -3848,12 +3872,12 @@ class Droptarget extends CompositeDisposable {
3848
3872
  this.markAsUsed(e);
3849
3873
  if (!this.targetElement) {
3850
3874
  this.targetElement = document.createElement('div');
3851
- this.targetElement.className = 'drop-target-dropzone';
3875
+ this.targetElement.className = 'dv-drop-target-dropzone';
3852
3876
  this.overlayElement = document.createElement('div');
3853
- this.overlayElement.className = 'drop-target-selection';
3877
+ this.overlayElement.className = 'dv-drop-target-selection';
3854
3878
  this._state = 'center';
3855
3879
  this.targetElement.appendChild(this.overlayElement);
3856
- this.element.classList.add('drop-target');
3880
+ this.element.classList.add('dv-drop-target');
3857
3881
  this.element.append(this.targetElement);
3858
3882
  }
3859
3883
  this.toggleClasses(quadrant, width, height);
@@ -3991,7 +4015,7 @@ class Droptarget extends CompositeDisposable {
3991
4015
  this.element.removeChild(this.targetElement);
3992
4016
  this.targetElement = undefined;
3993
4017
  this.overlayElement = undefined;
3994
- this.element.classList.remove('drop-target');
4018
+ this.element.classList.remove('dv-drop-target');
3995
4019
  }
3996
4020
  }
3997
4021
  }
@@ -4328,7 +4352,7 @@ class PaneviewPanel extends BasePanelView {
4328
4352
  this._headerVisible = isHeaderVisible;
4329
4353
  this._onDidChangeExpansionState.fire(this.isExpanded()); // initialize value
4330
4354
  this._orientation = orientation;
4331
- this.element.classList.add('pane');
4355
+ this.element.classList.add('dv-pane');
4332
4356
  this.addDisposables(this.api.onWillVisibilityChange((event) => {
4333
4357
  const { isVisible } = event;
4334
4358
  const { accessor } = this._params;
@@ -4425,14 +4449,14 @@ class PaneviewPanel extends BasePanelView {
4425
4449
  renderOnce() {
4426
4450
  this.header = document.createElement('div');
4427
4451
  this.header.tabIndex = 0;
4428
- this.header.className = 'pane-header';
4452
+ this.header.className = 'dv-pane-header';
4429
4453
  this.header.style.height = `${this.headerSize}px`;
4430
4454
  this.header.style.lineHeight = `${this.headerSize}px`;
4431
4455
  this.header.style.minHeight = `${this.headerSize}px`;
4432
4456
  this.header.style.maxHeight = `${this.headerSize}px`;
4433
4457
  this.element.appendChild(this.header);
4434
4458
  this.body = document.createElement('div');
4435
- this.body.className = 'pane-body';
4459
+ this.body.className = 'dv-pane-body';
4436
4460
  this.element.appendChild(this.body);
4437
4461
  }
4438
4462
  // TODO slightly hacky by-pass of the component to create a body and header component
@@ -4553,7 +4577,7 @@ class ContentContainer extends CompositeDisposable {
4553
4577
  this._onDidBlur = new Emitter();
4554
4578
  this.onDidBlur = this._onDidBlur.event;
4555
4579
  this._element = document.createElement('div');
4556
- this._element.className = 'content-container';
4580
+ this._element.className = 'dv-content-container';
4557
4581
  this._element.tabIndex = -1;
4558
4582
  this.addDisposables(this._onDidFocus, this._onDidBlur);
4559
4583
  this.dropTarget = new Droptarget(this.element, {
@@ -4626,6 +4650,8 @@ class ContentContainer extends CompositeDisposable {
4626
4650
  referenceContainer: this,
4627
4651
  });
4628
4652
  break;
4653
+ default:
4654
+ throw new Error(`dockview: invalid renderer type '${panel.api.renderer}'`);
4629
4655
  }
4630
4656
  if (doRender) {
4631
4657
  const focusTracker = trackFocus(container);
@@ -4692,10 +4718,10 @@ class Tab extends CompositeDisposable {
4692
4718
  this._onDragStart = new Emitter();
4693
4719
  this.onDragStart = this._onDragStart.event;
4694
4720
  this._element = document.createElement('div');
4695
- this._element.className = 'tab';
4721
+ this._element.className = 'dv-tab';
4696
4722
  this._element.tabIndex = 0;
4697
4723
  this._element.draggable = true;
4698
- toggleClass(this.element, 'inactive-tab', true);
4724
+ toggleClass(this.element, 'dv-inactive-tab', true);
4699
4725
  const dragHandler = new TabDragHandler(this._element, this.accessor, this.group, this.panel);
4700
4726
  this.dropTarget = new Droptarget(this._element, {
4701
4727
  acceptedTargetZones: ['center'],
@@ -4728,8 +4754,8 @@ class Tab extends CompositeDisposable {
4728
4754
  }), this.dropTarget);
4729
4755
  }
4730
4756
  setActive(isActive) {
4731
- toggleClass(this.element, 'active-tab', isActive);
4732
- toggleClass(this.element, 'inactive-tab', !isActive);
4757
+ toggleClass(this.element, 'dv-active-tab', isActive);
4758
+ toggleClass(this.element, 'dv-inactive-tab', !isActive);
4733
4759
  }
4734
4760
  setContent(part) {
4735
4761
  if (this.content) {
@@ -4817,8 +4843,7 @@ class VoidContainer extends CompositeDisposable {
4817
4843
  this._onDragStart = new Emitter();
4818
4844
  this.onDragStart = this._onDragStart.event;
4819
4845
  this._element = document.createElement('div');
4820
- this._element.className = 'void-container';
4821
- this._element.tabIndex = 0;
4846
+ this._element.className = 'dv-void-container';
4822
4847
  this._element.draggable = true;
4823
4848
  this.addDisposables(this._onDrop, this._onDragStart, addDisposableListener(this._element, 'pointerdown', () => {
4824
4849
  this.accessor.doSetGroupActive(this.group);
@@ -4937,16 +4962,16 @@ class TabsContainer extends CompositeDisposable {
4937
4962
  this._onWillShowOverlay = new Emitter();
4938
4963
  this.onWillShowOverlay = this._onWillShowOverlay.event;
4939
4964
  this._element = document.createElement('div');
4940
- this._element.className = 'tabs-and-actions-container';
4965
+ this._element.className = 'dv-tabs-and-actions-container';
4941
4966
  toggleClass(this._element, 'dv-full-width-single-tab', this.accessor.options.singleTabMode === 'fullwidth');
4942
4967
  this.rightActionsContainer = document.createElement('div');
4943
- this.rightActionsContainer.className = 'right-actions-container';
4968
+ this.rightActionsContainer.className = 'dv-right-actions-container';
4944
4969
  this.leftActionsContainer = document.createElement('div');
4945
- this.leftActionsContainer.className = 'left-actions-container';
4970
+ this.leftActionsContainer.className = 'dv-left-actions-container';
4946
4971
  this.preActionsContainer = document.createElement('div');
4947
- this.preActionsContainer.className = 'pre-actions-container';
4972
+ this.preActionsContainer.className = 'dv-pre-actions-container';
4948
4973
  this.tabContainer = document.createElement('div');
4949
- this.tabContainer.className = 'tabs-container';
4974
+ this.tabContainer.className = 'dv-tabs-container';
4950
4975
  this.voidContainer = new VoidContainer(this.accessor, this.group);
4951
4976
  this._element.appendChild(this.preActionsContainer);
4952
4977
  this._element.appendChild(this.tabContainer);
@@ -5035,14 +5060,10 @@ class TabsContainer extends CompositeDisposable {
5035
5060
  });
5036
5061
  }
5037
5062
  openPanel(panel, index = this.tabs.length) {
5038
- var _a;
5039
5063
  if (this.tabs.find((tab) => tab.value.panel.id === panel.id)) {
5040
5064
  return;
5041
5065
  }
5042
5066
  const tab = new Tab(panel, this.accessor, this.group);
5043
- if (!((_a = panel.view) === null || _a === void 0 ? void 0 : _a.tab)) {
5044
- throw new Error('invalid header component');
5045
- }
5046
5067
  tab.setContent(panel.view.tab);
5047
5068
  const disposable = new CompositeDisposable(tab.onDragStart((event) => {
5048
5069
  this._onTabDragStart.fire({ nativeEvent: event, panel });
@@ -5136,6 +5157,7 @@ const PROPERTY_KEYS = (() => {
5136
5157
  disableDnd: undefined,
5137
5158
  gap: undefined,
5138
5159
  className: undefined,
5160
+ noPanelsOverlay: undefined,
5139
5161
  };
5140
5162
  return Object.keys(properties);
5141
5163
  })();
@@ -5232,7 +5254,7 @@ class WillShowOverlayLocationEvent {
5232
5254
  }
5233
5255
  class DockviewGroupPanelModel extends CompositeDisposable {
5234
5256
  get element() {
5235
- throw new Error('not supported');
5257
+ throw new Error('dockview: not supported');
5236
5258
  }
5237
5259
  get activePanel() {
5238
5260
  return this._activePanel;
@@ -5242,7 +5264,7 @@ class DockviewGroupPanelModel extends CompositeDisposable {
5242
5264
  }
5243
5265
  set locked(value) {
5244
5266
  this._locked = value;
5245
- toggleClass(this.container, 'locked-groupview', value === 'no-drop-target' || value);
5267
+ toggleClass(this.container, 'dv-locked-groupview', value === 'no-drop-target' || value);
5246
5268
  }
5247
5269
  get isActive() {
5248
5270
  return this._isGroupActive;
@@ -5313,6 +5335,7 @@ class DockviewGroupPanelModel extends CompositeDisposable {
5313
5335
  this._locked = false;
5314
5336
  this._location = { type: 'grid' };
5315
5337
  this.mostRecentlyUsed = [];
5338
+ this._overwriteRenderContainer = null;
5316
5339
  this._onDidChange = new Emitter();
5317
5340
  this.onDidChange = this._onDidChange.event;
5318
5341
  this._width = 0;
@@ -5343,8 +5366,7 @@ class DockviewGroupPanelModel extends CompositeDisposable {
5343
5366
  this.onDidActivePanelChange = this._onDidActivePanelChange.event;
5344
5367
  this._onUnhandledDragOverEvent = new Emitter();
5345
5368
  this.onUnhandledDragOverEvent = this._onUnhandledDragOverEvent.event;
5346
- this._overwriteRenderContainer = null;
5347
- toggleClass(this.container, 'groupview', true);
5369
+ toggleClass(this.container, 'dv-groupview', true);
5348
5370
  this._api = new DockviewApi(this.accessor);
5349
5371
  this.tabsContainer = new TabsContainer(this.accessor, this.groupPanel);
5350
5372
  this.contentContainer = new ContentContainer(this.accessor, this);
@@ -5576,7 +5598,10 @@ class DockviewGroupPanelModel extends CompositeDisposable {
5576
5598
  this.doClose(panel);
5577
5599
  }
5578
5600
  doClose(panel) {
5579
- this.accessor.removePanel(panel);
5601
+ const isLast = this.panels.length === 1 && this.accessor.groups.length === 1;
5602
+ this.accessor.removePanel(panel, isLast && this.accessor.options.noPanelsOverlay === 'emptyGroup'
5603
+ ? { removeEmptyGroup: false }
5604
+ : undefined);
5580
5605
  }
5581
5606
  isPanelActive(panel) {
5582
5607
  return this._activePanel === panel;
@@ -5589,8 +5614,8 @@ class DockviewGroupPanelModel extends CompositeDisposable {
5589
5614
  return;
5590
5615
  }
5591
5616
  this._isGroupActive = isGroupActive;
5592
- toggleClass(this.container, 'active-group', isGroupActive);
5593
- toggleClass(this.container, 'inactive-group', !isGroupActive);
5617
+ toggleClass(this.container, 'dv-active-group', isGroupActive);
5618
+ toggleClass(this.container, 'dv-inactive-group', !isGroupActive);
5594
5619
  this.tabsContainer.setActive(this.isActive);
5595
5620
  if (!this._activePanel && this.panels.length > 0) {
5596
5621
  this.doSetActivePanel(this.panels[0]);
@@ -5682,7 +5707,6 @@ class DockviewGroupPanelModel extends CompositeDisposable {
5682
5707
  }
5683
5708
  updateContainer() {
5684
5709
  var _a, _b;
5685
- toggleClass(this.container, 'empty', this.isEmpty);
5686
5710
  this.panels.forEach((panel) => panel.runEvents());
5687
5711
  if (this.isEmpty && !this.watermark) {
5688
5712
  const watermark = this.accessor.createWatermarkComponent();
@@ -5696,14 +5720,12 @@ class DockviewGroupPanelModel extends CompositeDisposable {
5696
5720
  this.accessor.doSetGroupActive(this.groupPanel);
5697
5721
  }
5698
5722
  });
5699
- this.tabsContainer.hide();
5700
5723
  this.contentContainer.element.appendChild(this.watermark.element);
5701
5724
  }
5702
5725
  if (!this.isEmpty && this.watermark) {
5703
5726
  this.watermark.element.remove();
5704
5727
  (_b = (_a = this.watermark).dispose) === null || _b === void 0 ? void 0 : _b.call(_a);
5705
5728
  this.watermark = undefined;
5706
- this.tabsContainer.show();
5707
5729
  }
5708
5730
  }
5709
5731
  canDisplayOverlay(event, position, target) {
@@ -5823,6 +5845,34 @@ class GridviewPanel extends BasePanelView {
5823
5845
  return this._snap;
5824
5846
  }
5825
5847
  get minimumWidth() {
5848
+ /**
5849
+ * defer to protected function to allow subclasses to override easily.
5850
+ * see https://github.com/microsoft/TypeScript/issues/338
5851
+ */
5852
+ return this.__minimumWidth();
5853
+ }
5854
+ get minimumHeight() {
5855
+ /**
5856
+ * defer to protected function to allow subclasses to override easily.
5857
+ * see https://github.com/microsoft/TypeScript/issues/338
5858
+ */
5859
+ return this.__minimumHeight();
5860
+ }
5861
+ get maximumHeight() {
5862
+ /**
5863
+ * defer to protected function to allow subclasses to override easily.
5864
+ * see https://github.com/microsoft/TypeScript/issues/338
5865
+ */
5866
+ return this.__maximumHeight();
5867
+ }
5868
+ get maximumWidth() {
5869
+ /**
5870
+ * defer to protected function to allow subclasses to override easily.
5871
+ * see https://github.com/microsoft/TypeScript/issues/338
5872
+ */
5873
+ return this.__maximumWidth();
5874
+ }
5875
+ __minimumWidth() {
5826
5876
  const width = typeof this._minimumWidth === 'function'
5827
5877
  ? this._minimumWidth()
5828
5878
  : this._minimumWidth;
@@ -5832,7 +5882,17 @@ class GridviewPanel extends BasePanelView {
5832
5882
  }
5833
5883
  return width;
5834
5884
  }
5835
- get minimumHeight() {
5885
+ __maximumWidth() {
5886
+ const width = typeof this._maximumWidth === 'function'
5887
+ ? this._maximumWidth()
5888
+ : this._maximumWidth;
5889
+ if (width !== this._evaluatedMaximumWidth) {
5890
+ this._evaluatedMaximumWidth = width;
5891
+ this.updateConstraints();
5892
+ }
5893
+ return width;
5894
+ }
5895
+ __minimumHeight() {
5836
5896
  const height = typeof this._minimumHeight === 'function'
5837
5897
  ? this._minimumHeight()
5838
5898
  : this._minimumHeight;
@@ -5842,7 +5902,7 @@ class GridviewPanel extends BasePanelView {
5842
5902
  }
5843
5903
  return height;
5844
5904
  }
5845
- get maximumHeight() {
5905
+ __maximumHeight() {
5846
5906
  const height = typeof this._maximumHeight === 'function'
5847
5907
  ? this._maximumHeight()
5848
5908
  : this._maximumHeight;
@@ -5852,16 +5912,6 @@ class GridviewPanel extends BasePanelView {
5852
5912
  }
5853
5913
  return height;
5854
5914
  }
5855
- get maximumWidth() {
5856
- const width = typeof this._maximumWidth === 'function'
5857
- ? this._maximumWidth()
5858
- : this._maximumWidth;
5859
- if (width !== this._evaluatedMaximumWidth) {
5860
- this._evaluatedMaximumWidth = width;
5861
- this.updateConstraints();
5862
- }
5863
- return width;
5864
- }
5865
5915
  get isActive() {
5866
5916
  return this.api.isActive;
5867
5917
  }
@@ -6012,6 +6062,7 @@ class DockviewGroupPanelApiImpl extends GridviewPanelApiImpl {
6012
6062
  position: options.group
6013
6063
  ? (_c = options.position) !== null && _c !== void 0 ? _c : 'center'
6014
6064
  : 'center',
6065
+ index: options.index,
6015
6066
  },
6016
6067
  });
6017
6068
  }
@@ -6063,30 +6114,34 @@ class DockviewGroupPanel extends GridviewPanel {
6063
6114
  get minimumWidth() {
6064
6115
  var _a;
6065
6116
  const activePanelMinimumWidth = (_a = this.activePanel) === null || _a === void 0 ? void 0 : _a.minimumWidth;
6066
- return typeof activePanelMinimumWidth === 'number'
6067
- ? activePanelMinimumWidth
6068
- : MINIMUM_DOCKVIEW_GROUP_PANEL_WIDTH;
6117
+ if (typeof activePanelMinimumWidth === 'number') {
6118
+ return activePanelMinimumWidth;
6119
+ }
6120
+ return super.__minimumWidth();
6069
6121
  }
6070
6122
  get minimumHeight() {
6071
6123
  var _a;
6072
6124
  const activePanelMinimumHeight = (_a = this.activePanel) === null || _a === void 0 ? void 0 : _a.minimumHeight;
6073
- return typeof activePanelMinimumHeight === 'number'
6074
- ? activePanelMinimumHeight
6075
- : MINIMUM_DOCKVIEW_GROUP_PANEL_HEIGHT;
6125
+ if (typeof activePanelMinimumHeight === 'number') {
6126
+ return activePanelMinimumHeight;
6127
+ }
6128
+ return super.__minimumHeight();
6076
6129
  }
6077
6130
  get maximumWidth() {
6078
6131
  var _a;
6079
6132
  const activePanelMaximumWidth = (_a = this.activePanel) === null || _a === void 0 ? void 0 : _a.maximumWidth;
6080
- return typeof activePanelMaximumWidth === 'number'
6081
- ? activePanelMaximumWidth
6082
- : Number.MAX_SAFE_INTEGER;
6133
+ if (typeof activePanelMaximumWidth === 'number') {
6134
+ return activePanelMaximumWidth;
6135
+ }
6136
+ return super.__maximumWidth();
6083
6137
  }
6084
6138
  get maximumHeight() {
6085
6139
  var _a;
6086
6140
  const activePanelMaximumHeight = (_a = this.activePanel) === null || _a === void 0 ? void 0 : _a.maximumHeight;
6087
- return typeof activePanelMaximumHeight === 'number'
6088
- ? activePanelMaximumHeight
6089
- : Number.MAX_SAFE_INTEGER;
6141
+ if (typeof activePanelMaximumHeight === 'number') {
6142
+ return activePanelMaximumHeight;
6143
+ }
6144
+ return super.__maximumHeight();
6090
6145
  }
6091
6146
  get panels() {
6092
6147
  return this._model.panels;
@@ -6200,12 +6255,14 @@ class DockviewPanelApiImpl extends GridviewPanelApiImpl {
6200
6255
  return this.group.api.getWindow();
6201
6256
  }
6202
6257
  moveTo(options) {
6203
- var _a;
6258
+ var _a, _b;
6204
6259
  this.accessor.moveGroupOrPanel({
6205
6260
  from: { groupId: this._group.id, panelId: this.panel.id },
6206
6261
  to: {
6207
- group: options.group,
6208
- position: (_a = options.position) !== null && _a !== void 0 ? _a : 'center',
6262
+ group: (_a = options.group) !== null && _a !== void 0 ? _a : this._group,
6263
+ position: options.group
6264
+ ? (_b = options.position) !== null && _b !== void 0 ? _b : 'center'
6265
+ : 'center',
6209
6266
  index: options.index,
6210
6267
  },
6211
6268
  });
@@ -6424,7 +6481,7 @@ const createSvgElementFromPath = (params) => {
6424
6481
  svg.setAttributeNS(null, 'viewBox', params.viewbox);
6425
6482
  svg.setAttributeNS(null, 'aria-hidden', 'false');
6426
6483
  svg.setAttributeNS(null, 'focusable', 'false');
6427
- svg.classList.add('dockview-svg');
6484
+ svg.classList.add('dv-svg');
6428
6485
  const path = document.createElementNS('http://www.w3.org/2000/svg', 'path');
6429
6486
  path.setAttributeNS(null, 'd', params.path);
6430
6487
  svg.appendChild(path);
@@ -6595,39 +6652,10 @@ class Watermark extends CompositeDisposable {
6595
6652
  constructor() {
6596
6653
  super();
6597
6654
  this._element = document.createElement('div');
6598
- this._element.className = 'watermark';
6599
- const title = document.createElement('div');
6600
- title.className = 'watermark-title';
6601
- const emptySpace = document.createElement('span');
6602
- emptySpace.style.flexGrow = '1';
6603
- const content = document.createElement('div');
6604
- content.className = 'watermark-content';
6605
- this._element.appendChild(title);
6606
- this._element.appendChild(content);
6607
- const actionsContainer = document.createElement('div');
6608
- actionsContainer.className = 'actions-container';
6609
- const closeAnchor = document.createElement('div');
6610
- closeAnchor.className = 'close-action';
6611
- closeAnchor.appendChild(createCloseButton());
6612
- actionsContainer.appendChild(closeAnchor);
6613
- title.appendChild(emptySpace);
6614
- title.appendChild(actionsContainer);
6615
- this.addDisposables(addDisposableListener(closeAnchor, 'click', (event) => {
6616
- var _a;
6617
- event.preventDefault();
6618
- if (this._group) {
6619
- (_a = this._api) === null || _a === void 0 ? void 0 : _a.removeGroup(this._group);
6620
- }
6621
- }));
6655
+ this._element.className = 'dv-watermark';
6622
6656
  }
6623
6657
  init(_params) {
6624
- this._api = _params.containerApi;
6625
- this._group = _params.group;
6626
- this.render();
6627
- }
6628
- render() {
6629
- const isOneGroup = !!(this._api && this._api.size <= 1);
6630
- toggleClass(this.element, 'has-actions', isOneGroup);
6658
+ // noop
6631
6659
  }
6632
6660
  }
6633
6661
 
@@ -6664,6 +6692,9 @@ class Overlay extends CompositeDisposable {
6664
6692
  get element() {
6665
6693
  return this._element;
6666
6694
  }
6695
+ get isVisible() {
6696
+ return this._isVisible;
6697
+ }
6667
6698
  constructor(options) {
6668
6699
  super();
6669
6700
  this.options = options;
@@ -6674,6 +6705,7 @@ class Overlay extends CompositeDisposable {
6674
6705
  this.onDidChangeEnd = this._onDidChangeEnd.event;
6675
6706
  this.addDisposables(this._onDidChange, this._onDidChangeEnd);
6676
6707
  this._element.className = 'dv-resize-container';
6708
+ this._isVisible = true;
6677
6709
  this.setupResize('top');
6678
6710
  this.setupResize('bottom');
6679
6711
  this.setupResize('left');
@@ -6688,6 +6720,13 @@ class Overlay extends CompositeDisposable {
6688
6720
  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 })));
6689
6721
  arialLevelTracker.push(this._element);
6690
6722
  }
6723
+ setVisible(isVisible) {
6724
+ if (isVisible === this.isVisible) {
6725
+ return;
6726
+ }
6727
+ this._isVisible = isVisible;
6728
+ toggleClass(this.element, 'dv-hidden', !this.isVisible);
6729
+ }
6691
6730
  bringToFront() {
6692
6731
  arialLevelTracker.push(this._element);
6693
6732
  }
@@ -7261,7 +7300,6 @@ class PopoutWindow extends CompositeDisposable {
7261
7300
  window: this._window.value,
7262
7301
  });
7263
7302
  this._window.disposable.dispose();
7264
- this._window.value.close();
7265
7303
  this._window = null;
7266
7304
  this._onDidClose.fire();
7267
7305
  }
@@ -7293,7 +7331,9 @@ class PopoutWindow extends CompositeDisposable {
7293
7331
  }
7294
7332
  const disposable = new CompositeDisposable();
7295
7333
  this._window = { value: externalWindow, disposable };
7296
- disposable.addDisposables(addDisposableWindowListener(window, 'beforeunload', () => {
7334
+ disposable.addDisposables(Disposable.from(() => {
7335
+ externalWindow.close();
7336
+ }), addDisposableWindowListener(window, 'beforeunload', () => {
7297
7337
  /**
7298
7338
  * before the main window closes we should close this popup too
7299
7339
  * to be good citizens
@@ -7310,7 +7350,7 @@ class PopoutWindow extends CompositeDisposable {
7310
7350
  id: this.target,
7311
7351
  window: externalWindow,
7312
7352
  });
7313
- return new Promise((resolve) => {
7353
+ return new Promise((resolve, reject) => {
7314
7354
  externalWindow.addEventListener('unload', (e) => {
7315
7355
  // if page fails to load before unloading
7316
7356
  // this.close();
@@ -7319,21 +7359,27 @@ class PopoutWindow extends CompositeDisposable {
7319
7359
  /**
7320
7360
  * @see https://developer.mozilla.org/en-US/docs/Web/API/Window/load_event
7321
7361
  */
7322
- const externalDocument = externalWindow.document;
7323
- externalDocument.title = document.title;
7324
- externalDocument.body.appendChild(container);
7325
- addStyles(externalDocument, window.document.styleSheets);
7326
- /**
7327
- * beforeunload must be registered after load for reasons I could not determine
7328
- * otherwise the beforeunload event will not fire when the window is closed
7329
- */
7330
- addDisposableWindowListener(externalWindow, 'beforeunload', () => {
7362
+ try {
7363
+ const externalDocument = externalWindow.document;
7364
+ externalDocument.title = document.title;
7365
+ externalDocument.body.appendChild(container);
7366
+ addStyles(externalDocument, window.document.styleSheets);
7331
7367
  /**
7332
- * @see https://developer.mozilla.org/en-US/docs/Web/API/Window/beforeunload_event
7368
+ * beforeunload must be registered after load for reasons I could not determine
7369
+ * otherwise the beforeunload event will not fire when the window is closed
7333
7370
  */
7334
- this.close();
7335
- });
7336
- resolve(container);
7371
+ addDisposableWindowListener(externalWindow, 'beforeunload', () => {
7372
+ /**
7373
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/Window/beforeunload_event
7374
+ */
7375
+ this.close();
7376
+ });
7377
+ resolve(container);
7378
+ }
7379
+ catch (err) {
7380
+ // only except this is the DOM isn't setup. e.g. in a in correctly configured test
7381
+ reject(err);
7382
+ }
7337
7383
  });
7338
7384
  });
7339
7385
  });
@@ -7440,6 +7486,8 @@ class DockviewComponent extends BaseGrid {
7440
7486
  this.onDidActivePanelChange = this._onDidActivePanelChange.event;
7441
7487
  this._onDidMovePanel = new Emitter();
7442
7488
  this.onDidMovePanel = this._onDidMovePanel.event;
7489
+ this._onDidMaximizedGroupChange = new Emitter();
7490
+ this.onDidMaximizedGroupChange = this._onDidMaximizedGroupChange.event;
7443
7491
  this._floatingGroups = [];
7444
7492
  this._popoutGroups = [];
7445
7493
  this._onDidRemoveGroup = new Emitter();
@@ -7466,6 +7514,11 @@ class DockviewComponent extends BaseGrid {
7466
7514
  if (!this._moving) {
7467
7515
  this._onDidActiveGroupChange.fire(event);
7468
7516
  }
7517
+ }), this.onDidMaximizedChange((event) => {
7518
+ this._onDidMaximizedGroupChange.fire({
7519
+ group: event.panel,
7520
+ isMaximized: event.isMaximized,
7521
+ });
7469
7522
  }), Event.any(this.onDidAdd, this.onDidRemove)(() => {
7470
7523
  this.updateWatermark();
7471
7524
  }), Event.any(this.onDidAddPanel, this.onDidRemovePanel, this.onDidAddGroup, this.onDidRemove, this.onDidMovePanel, this.onDidActivePanelChange)(() => {
@@ -7564,8 +7617,28 @@ class DockviewComponent extends BaseGrid {
7564
7617
  this._api = new DockviewApi(this);
7565
7618
  this.updateWatermark();
7566
7619
  }
7620
+ setVisible(panel, visible) {
7621
+ switch (panel.api.location.type) {
7622
+ case 'grid':
7623
+ super.setVisible(panel, visible);
7624
+ break;
7625
+ case 'floating': {
7626
+ const item = this.floatingGroups.find((floatingGroup) => floatingGroup.group === panel);
7627
+ if (item) {
7628
+ item.overlay.setVisible(visible);
7629
+ panel.api._onDidVisibilityChange.fire({
7630
+ isVisible: visible,
7631
+ });
7632
+ }
7633
+ break;
7634
+ }
7635
+ case 'popout':
7636
+ console.warn('dockview: You cannot hide a group that is in a popout window');
7637
+ break;
7638
+ }
7639
+ }
7567
7640
  addPopoutGroup(itemToPopout, options) {
7568
- var _a, _b, _c;
7641
+ var _a, _b, _c, _d, _e;
7569
7642
  if (itemToPopout instanceof DockviewPanel &&
7570
7643
  itemToPopout.group.size === 1) {
7571
7644
  return this.addPopoutGroup(itemToPopout.group, options);
@@ -7586,12 +7659,9 @@ class DockviewComponent extends BaseGrid {
7586
7659
  }
7587
7660
  const box = getBox();
7588
7661
  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();
7589
- if (itemToPopout.api.location.type === 'grid') {
7590
- itemToPopout.api.setVisible(false);
7591
- }
7592
7662
  const _window = new PopoutWindow(`${this.id}-${groupId}`, // unique id
7593
7663
  theme !== null && theme !== void 0 ? theme : '', {
7594
- url: (_c = options === null || options === void 0 ? void 0 : options.popoutUrl) !== null && _c !== void 0 ? _c : '/popout.html',
7664
+ 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',
7595
7665
  left: window.screenX + box.left,
7596
7666
  top: window.screenY + box.top,
7597
7667
  width: box.width,
@@ -7605,13 +7675,12 @@ class DockviewComponent extends BaseGrid {
7605
7675
  return _window
7606
7676
  .open()
7607
7677
  .then((popoutContainer) => {
7608
- var _a;
7609
7678
  if (_window.isDisposed) {
7610
- return;
7679
+ return false;
7611
7680
  }
7612
7681
  if (popoutContainer === null) {
7613
7682
  popoutWindowDisposable.dispose();
7614
- return;
7683
+ return false;
7615
7684
  }
7616
7685
  const gready = document.createElement('div');
7617
7686
  gready.className = 'dv-overlay-render-container';
@@ -7620,30 +7689,45 @@ class DockviewComponent extends BaseGrid {
7620
7689
  ? itemToPopout.group
7621
7690
  : itemToPopout;
7622
7691
  const referenceLocation = itemToPopout.api.location.type;
7623
- const group = (_a = options === null || options === void 0 ? void 0 : options.overridePopoutGroup) !== null && _a !== void 0 ? _a : this.createGroup({ id: groupId });
7624
- group.model.renderContainer = overlayRenderContainer;
7625
- if (!(options === null || options === void 0 ? void 0 : options.overridePopoutGroup)) {
7626
- this._onDidAddGroup.fire(group);
7692
+ /**
7693
+ * The group that is being added doesn't already exist within the DOM, the most likely occurance
7694
+ * of this case is when being called from the `fromJSON(...)` method
7695
+ */
7696
+ const isGroupAddedToDom = referenceGroup.element.parentElement !== null;
7697
+ let group;
7698
+ if (!isGroupAddedToDom) {
7699
+ group = referenceGroup;
7627
7700
  }
7628
- if (itemToPopout instanceof DockviewPanel) {
7629
- this.movingLock(() => {
7630
- const panel = referenceGroup.model.removePanel(itemToPopout);
7631
- group.model.openPanel(panel);
7632
- });
7701
+ else if (options === null || options === void 0 ? void 0 : options.overridePopoutGroup) {
7702
+ group = options.overridePopoutGroup;
7633
7703
  }
7634
7704
  else {
7635
- this.movingLock(() => moveGroupWithoutDestroying({
7636
- from: referenceGroup,
7637
- to: group,
7638
- }));
7639
- switch (referenceLocation) {
7640
- case 'grid':
7641
- referenceGroup.api.setVisible(false);
7642
- break;
7643
- case 'floating':
7644
- case 'popout':
7645
- this.removeGroup(referenceGroup);
7646
- break;
7705
+ group = this.createGroup({ id: groupId });
7706
+ this._onDidAddGroup.fire(group);
7707
+ }
7708
+ group.model.renderContainer = overlayRenderContainer;
7709
+ group.layout(_window.window.innerWidth, _window.window.innerHeight);
7710
+ if (!(options === null || options === void 0 ? void 0 : options.overridePopoutGroup) && isGroupAddedToDom) {
7711
+ if (itemToPopout instanceof DockviewPanel) {
7712
+ this.movingLock(() => {
7713
+ const panel = referenceGroup.model.removePanel(itemToPopout);
7714
+ group.model.openPanel(panel);
7715
+ });
7716
+ }
7717
+ else {
7718
+ this.movingLock(() => moveGroupWithoutDestroying({
7719
+ from: referenceGroup,
7720
+ to: group,
7721
+ }));
7722
+ switch (referenceLocation) {
7723
+ case 'grid':
7724
+ referenceGroup.api.setVisible(false);
7725
+ break;
7726
+ case 'floating':
7727
+ case 'popout':
7728
+ this.removeGroup(referenceGroup);
7729
+ break;
7730
+ }
7647
7731
  }
7648
7732
  }
7649
7733
  popoutContainer.classList.add('dv-dockview');
@@ -7653,7 +7737,12 @@ class DockviewComponent extends BaseGrid {
7653
7737
  group.model.location = {
7654
7738
  type: 'popout',
7655
7739
  getWindow: () => _window.window,
7740
+ popoutUrl: options === null || options === void 0 ? void 0 : options.popoutUrl,
7656
7741
  };
7742
+ if (isGroupAddedToDom &&
7743
+ itemToPopout.api.location.type === 'grid') {
7744
+ itemToPopout.api.setVisible(false);
7745
+ }
7657
7746
  this.doSetGroupAndPanelActive(group);
7658
7747
  popoutWindowDisposable.addDisposables(group.api.onDidActiveChange((event) => {
7659
7748
  var _a;
@@ -7665,10 +7754,13 @@ class DockviewComponent extends BaseGrid {
7665
7754
  (_a = _window.window) === null || _a === void 0 ? void 0 : _a.focus();
7666
7755
  }));
7667
7756
  let returnedGroup;
7757
+ const isValidReferenceGroup = isGroupAddedToDom &&
7758
+ referenceGroup &&
7759
+ this.getPanel(referenceGroup.id);
7668
7760
  const value = {
7669
7761
  window: _window,
7670
7762
  popoutGroup: group,
7671
- referenceGroup: this.getPanel(referenceGroup.id)
7763
+ referenceGroup: isValidReferenceGroup
7672
7764
  ? referenceGroup.id
7673
7765
  : undefined,
7674
7766
  disposable: {
@@ -7685,9 +7777,10 @@ class DockviewComponent extends BaseGrid {
7685
7777
  * window dimensions
7686
7778
  */
7687
7779
  addDisposableWindowListener(_window.window, 'resize', () => {
7688
- group.layout(window.innerWidth, window.innerHeight);
7780
+ group.layout(_window.window.innerWidth, _window.window.innerHeight);
7689
7781
  }), overlayRenderContainer, Disposable.from(() => {
7690
- if (this.getPanel(referenceGroup.id)) {
7782
+ if (isGroupAddedToDom &&
7783
+ this.getPanel(referenceGroup.id)) {
7691
7784
  this.movingLock(() => moveGroupWithoutDestroying({
7692
7785
  from: group,
7693
7786
  to: referenceGroup,
@@ -7702,21 +7795,27 @@ class DockviewComponent extends BaseGrid {
7702
7795
  }
7703
7796
  }
7704
7797
  else if (this.getPanel(group.id)) {
7705
- const removedGroup = this.doRemoveGroup(group, {
7798
+ this.doRemoveGroup(group, {
7706
7799
  skipDispose: true,
7707
7800
  skipActive: true,
7801
+ skipPopoutReturn: true,
7708
7802
  });
7803
+ const removedGroup = group;
7709
7804
  removedGroup.model.renderContainer =
7710
7805
  this.overlayRenderContainer;
7711
7806
  removedGroup.model.location = { type: 'grid' };
7712
7807
  returnedGroup = removedGroup;
7808
+ this.doAddGroup(removedGroup, [0]);
7809
+ this.doSetGroupAndPanelActive(removedGroup);
7713
7810
  }
7714
7811
  }));
7715
7812
  this._popoutGroups.push(value);
7716
7813
  this.updateWatermark();
7814
+ return true;
7717
7815
  })
7718
7816
  .catch((err) => {
7719
7817
  console.error('dockview: failed to create popout window', err);
7818
+ return false;
7720
7819
  });
7721
7820
  }
7722
7821
  addFloatingGroup(item, options) {
@@ -7820,7 +7919,7 @@ class DockviewComponent extends BaseGrid {
7820
7919
  : (_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'
7821
7920
  ? undefined
7822
7921
  : (_e = (_d = this.options.floatingGroupBounds) === null || _d === void 0 ? void 0 : _d.minimumHeightWithinViewport) !== null && _e !== void 0 ? _e : DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE }));
7823
- const el = group.element.querySelector('.void-container');
7922
+ const el = group.element.querySelector('.dv-void-container');
7824
7923
  if (!el) {
7825
7924
  throw new Error('failed to find drag handle');
7826
7925
  }
@@ -8012,6 +8111,9 @@ class DockviewComponent extends BaseGrid {
8012
8111
  data: group.popoutGroup.toJSON(),
8013
8112
  gridReferenceGroup: group.referenceGroup,
8014
8113
  position: group.window.dimensions(),
8114
+ url: group.popoutGroup.api.location.type === 'popout'
8115
+ ? group.popoutGroup.api.location.popoutUrl
8116
+ : undefined,
8015
8117
  };
8016
8118
  });
8017
8119
  const result = {
@@ -8098,16 +8200,16 @@ class DockviewComponent extends BaseGrid {
8098
8200
  }
8099
8201
  const serializedPopoutGroups = (_b = data.popoutGroups) !== null && _b !== void 0 ? _b : [];
8100
8202
  for (const serializedPopoutGroup of serializedPopoutGroups) {
8101
- const { data, position, gridReferenceGroup } = serializedPopoutGroup;
8203
+ const { data, position, gridReferenceGroup, url } = serializedPopoutGroup;
8102
8204
  const group = createGroupFromSerializedState(data);
8103
8205
  this.addPopoutGroup((_c = (gridReferenceGroup
8104
8206
  ? this.getPanel(gridReferenceGroup)
8105
8207
  : undefined)) !== null && _c !== void 0 ? _c : group, {
8106
- skipRemoveGroup: true,
8107
8208
  position: position !== null && position !== void 0 ? position : undefined,
8108
8209
  overridePopoutGroup: gridReferenceGroup
8109
8210
  ? group
8110
8211
  : undefined,
8212
+ popoutUrl: url,
8111
8213
  });
8112
8214
  }
8113
8215
  for (const floatingGroup of this._floatingGroups) {
@@ -8121,6 +8223,7 @@ class DockviewComponent extends BaseGrid {
8121
8223
  }
8122
8224
  }
8123
8225
  catch (err) {
8226
+ console.error('dockview: failed to deserialize layout. Reverting changes', err);
8124
8227
  /**
8125
8228
  * Takes all the successfully created groups and remove all of their panels.
8126
8229
  */
@@ -8188,11 +8291,13 @@ class DockviewComponent extends BaseGrid {
8188
8291
  width: options.initialWidth,
8189
8292
  height: options.initialHeight,
8190
8293
  };
8294
+ let index;
8191
8295
  if (options.position) {
8192
8296
  if (isPanelOptionsWithPanel(options.position)) {
8193
8297
  const referencePanel = typeof options.position.referencePanel === 'string'
8194
8298
  ? this.getGroupPanel(options.position.referencePanel)
8195
8299
  : options.position.referencePanel;
8300
+ index = options.position.index;
8196
8301
  if (!referencePanel) {
8197
8302
  throw new Error(`referencePanel '${options.position.referencePanel}' does not exist`);
8198
8303
  }
@@ -8203,6 +8308,7 @@ class DockviewComponent extends BaseGrid {
8203
8308
  typeof options.position.referenceGroup === 'string'
8204
8309
  ? (_a = this._groups.get(options.position.referenceGroup)) === null || _a === void 0 ? void 0 : _a.value
8205
8310
  : options.position.referenceGroup;
8311
+ index = options.position.index;
8206
8312
  if (!referenceGroup) {
8207
8313
  throw new Error(`referenceGroup '${options.position.referenceGroup}' does not exist`);
8208
8314
  }
@@ -8213,6 +8319,7 @@ class DockviewComponent extends BaseGrid {
8213
8319
  group.model.openPanel(panel, {
8214
8320
  skipSetActive: options.inactive,
8215
8321
  skipSetGroupActive: options.inactive,
8322
+ index,
8216
8323
  });
8217
8324
  if (!options.inactive) {
8218
8325
  this.doSetGroupAndPanelActive(group);
@@ -8242,6 +8349,7 @@ class DockviewComponent extends BaseGrid {
8242
8349
  group.model.openPanel(panel, {
8243
8350
  skipSetActive: options.inactive,
8244
8351
  skipSetGroupActive: options.inactive,
8352
+ index,
8245
8353
  });
8246
8354
  }
8247
8355
  else if (referenceGroup.api.location.type === 'floating' ||
@@ -8250,6 +8358,7 @@ class DockviewComponent extends BaseGrid {
8250
8358
  referenceGroup.model.openPanel(panel, {
8251
8359
  skipSetActive: options.inactive,
8252
8360
  skipSetGroupActive: options.inactive,
8361
+ index,
8253
8362
  });
8254
8363
  referenceGroup.api.setSize({
8255
8364
  width: initial === null || initial === void 0 ? void 0 : initial.width,
@@ -8270,6 +8379,7 @@ class DockviewComponent extends BaseGrid {
8270
8379
  group.model.openPanel(panel, {
8271
8380
  skipSetActive: options.inactive,
8272
8381
  skipSetGroupActive: options.inactive,
8382
+ index,
8273
8383
  });
8274
8384
  if (!options.inactive) {
8275
8385
  this.doSetGroupAndPanelActive(group);
@@ -8288,6 +8398,7 @@ class DockviewComponent extends BaseGrid {
8288
8398
  group.model.openPanel(panel, {
8289
8399
  skipSetActive: options.inactive,
8290
8400
  skipSetGroupActive: options.inactive,
8401
+ index,
8291
8402
  });
8292
8403
  }
8293
8404
  else {
@@ -8298,6 +8409,7 @@ class DockviewComponent extends BaseGrid {
8298
8409
  group.model.openPanel(panel, {
8299
8410
  skipSetActive: options.inactive,
8300
8411
  skipSetGroupActive: options.inactive,
8412
+ index,
8301
8413
  });
8302
8414
  if (!options.inactive) {
8303
8415
  this.doSetGroupAndPanelActive(group);
@@ -8307,7 +8419,6 @@ class DockviewComponent extends BaseGrid {
8307
8419
  }
8308
8420
  removePanel(panel, options = {
8309
8421
  removeEmptyGroup: true,
8310
- skipDispose: false,
8311
8422
  }) {
8312
8423
  const group = panel.group;
8313
8424
  if (!group) {
@@ -8838,6 +8949,31 @@ class DockviewComponent extends BaseGrid {
8838
8949
  }
8839
8950
  }
8840
8951
 
8952
+ function createComponent(id, componentName, components = {}, frameworkComponents = {}, createFrameworkComponent, fallback) {
8953
+ const Component = typeof componentName === 'string'
8954
+ ? components[componentName]
8955
+ : undefined;
8956
+ const FrameworkComponent = typeof componentName === 'string'
8957
+ ? frameworkComponents[componentName]
8958
+ : undefined;
8959
+ if (Component && FrameworkComponent) {
8960
+ throw new Error(`Cannot create '${id}'. component '${componentName}' registered as both a component and frameworkComponent`);
8961
+ }
8962
+ if (FrameworkComponent) {
8963
+ if (!createFrameworkComponent) {
8964
+ throw new Error(`Cannot create '${id}' for framework component '${componentName}'. you must register a frameworkPanelWrapper to use framework components`);
8965
+ }
8966
+ return createFrameworkComponent.createComponent(id, componentName, FrameworkComponent);
8967
+ }
8968
+ if (!Component) {
8969
+ if (fallback) {
8970
+ return fallback();
8971
+ }
8972
+ throw new Error(`Cannot create '${id}', no component '${componentName}' provided`);
8973
+ }
8974
+ return new Component(id, componentName);
8975
+ }
8976
+
8841
8977
  class GridviewComponent extends BaseGrid {
8842
8978
  get orientation() {
8843
8979
  return this.gridview.orientation;
@@ -9386,12 +9522,14 @@ class DefaultHeader extends CompositeDisposable {
9386
9522
  this._expandedIcon = createExpandMoreButton();
9387
9523
  this._collapsedIcon = createChevronRightButton();
9388
9524
  this.disposable = new MutableDisposable();
9389
- this.apiRef = { api: null };
9525
+ this.apiRef = {
9526
+ api: null,
9527
+ };
9390
9528
  this._element = document.createElement('div');
9391
- this.element.className = 'default-header';
9529
+ this.element.className = 'dv-default-header';
9392
9530
  this._content = document.createElement('span');
9393
9531
  this._expander = document.createElement('div');
9394
- this._expander.className = 'dockview-pane-header-icon';
9532
+ this._expander.className = 'dv-pane-header-icon';
9395
9533
  this.element.appendChild(this._expander);
9396
9534
  this.element.appendChild(this._content);
9397
9535
  this.addDisposables(addDisposableListener(this._element, 'click', () => {
@@ -9842,5 +9980,5 @@ function createPaneview(element, options) {
9842
9980
  return new PaneviewApi(component);
9843
9981
  }
9844
9982
 
9845
- export { BaseGrid, ContentContainer, DefaultDockviewDeserialzier, DefaultTab, DockviewApi, DockviewComponent, CompositeDisposable as DockviewCompositeDisposable, DockviewDidDropEvent, Disposable as DockviewDisposable, Emitter as DockviewEmitter, Event as DockviewEvent, DockviewGroupPanel, DockviewGroupPanelModel, MutableDisposable as DockviewMutableDisposable, DockviewPanel, DockviewUnhandledDragOverEvent, DockviewWillDropEvent, DraggablePaneviewPanel, Gridview, GridviewApi, GridviewComponent, GridviewPanel, LayoutPriority, LocalSelectionTransfer, Orientation, PROPERTY_KEYS, PaneFramework, PaneTransfer, PanelTransfer, Paneview, PaneviewApi, PaneviewComponent, PaneviewPanel, SashState, Sizing, Splitview, SplitviewApi, SplitviewComponent, SplitviewPanel, Tab, WillShowOverlayLocationEvent, createComponent, createDockview, createGridview, createPaneview, createSplitview, directionToPosition, getDirectionOrientation, getGridLocation, getLocationOrientation, getPaneData, getPanelData, getRelativeLocation, indexInParent, isGridBranchNode, isGroupOptionsWithGroup, isGroupOptionsWithPanel, isPanelOptionsWithGroup, isPanelOptionsWithPanel, orthogonal, positionToDirection, toTarget };
9983
+ export { BaseGrid, ContentContainer, DefaultDockviewDeserialzier, DefaultTab, DockviewApi, DockviewComponent, CompositeDisposable as DockviewCompositeDisposable, DockviewDidDropEvent, Disposable as DockviewDisposable, Emitter as DockviewEmitter, Event as DockviewEvent, DockviewGroupPanel, DockviewGroupPanelModel, MutableDisposable as DockviewMutableDisposable, DockviewPanel, DockviewUnhandledDragOverEvent, DockviewWillDropEvent, DraggablePaneviewPanel, Gridview, GridviewApi, GridviewComponent, GridviewPanel, LayoutPriority, Orientation, PROPERTY_KEYS, PaneFramework, PaneTransfer, PanelTransfer, Paneview, PaneviewApi, PaneviewComponent, PaneviewPanel, SashState, Sizing, Splitview, SplitviewApi, SplitviewComponent, SplitviewPanel, Tab, WillShowOverlayLocationEvent, createDockview, createGridview, createPaneview, createSplitview, directionToPosition, getDirectionOrientation, getGridLocation, getLocationOrientation, getPaneData, getPanelData, getRelativeLocation, indexInParent, isGridBranchNode, isGroupOptionsWithGroup, isGroupOptionsWithPanel, isPanelOptionsWithGroup, isPanelOptionsWithPanel, orthogonal, positionToDirection, toTarget };
9846
9984
  //# sourceMappingURL=dockview-core.esm.js.map