dockview-core 3.2.0 → 4.0.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 (110) hide show
  1. package/dist/cjs/api/component.api.d.ts +0 -2
  2. package/dist/cjs/api/component.api.js +0 -10
  3. package/dist/cjs/dnd/abstractDragHandler.js +4 -2
  4. package/dist/cjs/dnd/dropTargetAnchorContainer.d.ts +16 -0
  5. package/dist/cjs/dnd/dropTargetAnchorContainer.js +105 -0
  6. package/dist/cjs/dnd/droptarget.d.ts +16 -0
  7. package/dist/cjs/dnd/droptarget.js +138 -14
  8. package/dist/cjs/dnd/ghost.d.ts +4 -1
  9. package/dist/cjs/dnd/ghost.js +3 -2
  10. package/dist/cjs/dnd/groupDragHandler.js +3 -1
  11. package/dist/cjs/dockview/components/panel/content.js +10 -13
  12. package/dist/cjs/dockview/components/popupService.d.ts +13 -0
  13. package/dist/cjs/dockview/components/popupService.js +76 -0
  14. package/dist/cjs/dockview/components/tab/tab.js +17 -7
  15. package/dist/cjs/dockview/components/titlebar/tabOverflowControl.d.ts +8 -0
  16. package/dist/cjs/dockview/components/titlebar/tabOverflowControl.js +20 -0
  17. package/dist/cjs/dockview/components/titlebar/tabs.d.ts +45 -0
  18. package/dist/cjs/dockview/components/titlebar/tabs.js +288 -0
  19. package/dist/cjs/dockview/components/titlebar/tabsContainer.d.ts +8 -9
  20. package/dist/cjs/dockview/components/titlebar/tabsContainer.js +108 -152
  21. package/dist/cjs/dockview/components/titlebar/voidContainer.js +2 -9
  22. package/dist/cjs/dockview/dockviewComponent.d.ts +10 -3
  23. package/dist/cjs/dockview/dockviewComponent.js +71 -30
  24. package/dist/cjs/dockview/dockviewGroupPanelModel.d.ts +4 -0
  25. package/dist/cjs/dockview/dockviewGroupPanelModel.js +31 -0
  26. package/dist/cjs/dockview/dockviewPanelModel.d.ts +5 -3
  27. package/dist/cjs/dockview/dockviewPanelModel.js +25 -4
  28. package/dist/cjs/dockview/framework.d.ts +4 -1
  29. package/dist/cjs/dockview/options.d.ts +8 -5
  30. package/dist/cjs/dockview/options.js +3 -1
  31. package/dist/cjs/dockview/theme.d.ts +31 -0
  32. package/dist/cjs/dockview/theme.js +42 -0
  33. package/dist/cjs/dockview/types.d.ts +5 -1
  34. package/dist/cjs/dom.d.ts +1 -0
  35. package/dist/cjs/dom.js +15 -1
  36. package/dist/cjs/gridview/baseComponentGridview.d.ts +3 -0
  37. package/dist/cjs/index.d.ts +1 -0
  38. package/dist/cjs/index.js +1 -0
  39. package/dist/cjs/paneview/paneviewComponent.js +1 -0
  40. package/dist/cjs/scrollbar.d.ts +12 -0
  41. package/dist/cjs/scrollbar.js +106 -0
  42. package/dist/cjs/splitview/splitview.js +1 -0
  43. package/dist/cjs/splitview/splitviewComponent.js +1 -0
  44. package/dist/dockview-core.amd.js +930 -293
  45. package/dist/dockview-core.amd.js.map +1 -1
  46. package/dist/dockview-core.amd.min.js +2 -2
  47. package/dist/dockview-core.amd.min.js.map +1 -1
  48. package/dist/dockview-core.amd.min.noStyle.js +2 -2
  49. package/dist/dockview-core.amd.min.noStyle.js.map +1 -1
  50. package/dist/dockview-core.amd.noStyle.js +929 -292
  51. package/dist/dockview-core.amd.noStyle.js.map +1 -1
  52. package/dist/dockview-core.cjs.js +930 -293
  53. package/dist/dockview-core.cjs.js.map +1 -1
  54. package/dist/dockview-core.esm.js +923 -294
  55. package/dist/dockview-core.esm.js.map +1 -1
  56. package/dist/dockview-core.esm.min.js +2 -2
  57. package/dist/dockview-core.esm.min.js.map +1 -1
  58. package/dist/dockview-core.js +930 -293
  59. package/dist/dockview-core.js.map +1 -1
  60. package/dist/dockview-core.min.js +2 -2
  61. package/dist/dockview-core.min.js.map +1 -1
  62. package/dist/dockview-core.min.noStyle.js +2 -2
  63. package/dist/dockview-core.min.noStyle.js.map +1 -1
  64. package/dist/dockview-core.noStyle.js +929 -292
  65. package/dist/dockview-core.noStyle.js.map +1 -1
  66. package/dist/esm/api/component.api.d.ts +0 -2
  67. package/dist/esm/api/component.api.js +0 -6
  68. package/dist/esm/dnd/abstractDragHandler.js +4 -2
  69. package/dist/esm/dnd/dropTargetAnchorContainer.d.ts +16 -0
  70. package/dist/esm/dnd/dropTargetAnchorContainer.js +74 -0
  71. package/dist/esm/dnd/droptarget.d.ts +16 -0
  72. package/dist/esm/dnd/droptarget.js +134 -14
  73. package/dist/esm/dnd/ghost.d.ts +4 -1
  74. package/dist/esm/dnd/ghost.js +3 -2
  75. package/dist/esm/dnd/groupDragHandler.js +3 -1
  76. package/dist/esm/dockview/components/panel/content.js +10 -13
  77. package/dist/esm/dockview/components/popupService.d.ts +13 -0
  78. package/dist/esm/dockview/components/popupService.js +53 -0
  79. package/dist/esm/dockview/components/tab/tab.js +15 -7
  80. package/dist/esm/dockview/components/titlebar/tabOverflowControl.d.ts +8 -0
  81. package/dist/esm/dockview/components/titlebar/tabOverflowControl.js +16 -0
  82. package/dist/esm/dockview/components/titlebar/tabs.d.ts +45 -0
  83. package/dist/esm/dockview/components/titlebar/tabs.js +183 -0
  84. package/dist/esm/dockview/components/titlebar/tabsContainer.d.ts +8 -9
  85. package/dist/esm/dockview/components/titlebar/tabsContainer.js +133 -162
  86. package/dist/esm/dockview/components/titlebar/voidContainer.js +2 -9
  87. package/dist/esm/dockview/dockviewComponent.d.ts +10 -3
  88. package/dist/esm/dockview/dockviewComponent.js +69 -24
  89. package/dist/esm/dockview/dockviewGroupPanelModel.d.ts +4 -0
  90. package/dist/esm/dockview/dockviewGroupPanelModel.js +27 -0
  91. package/dist/esm/dockview/dockviewPanelModel.d.ts +5 -3
  92. package/dist/esm/dockview/dockviewPanelModel.js +14 -4
  93. package/dist/esm/dockview/framework.d.ts +4 -1
  94. package/dist/esm/dockview/options.d.ts +8 -5
  95. package/dist/esm/dockview/options.js +3 -1
  96. package/dist/esm/dockview/theme.d.ts +31 -0
  97. package/dist/esm/dockview/theme.js +39 -0
  98. package/dist/esm/dockview/types.d.ts +5 -1
  99. package/dist/esm/dom.d.ts +1 -0
  100. package/dist/esm/dom.js +13 -0
  101. package/dist/esm/gridview/baseComponentGridview.d.ts +3 -0
  102. package/dist/esm/index.d.ts +1 -0
  103. package/dist/esm/index.js +1 -0
  104. package/dist/esm/paneview/paneviewComponent.js +1 -0
  105. package/dist/esm/scrollbar.d.ts +12 -0
  106. package/dist/esm/scrollbar.js +80 -0
  107. package/dist/esm/splitview/splitview.js +1 -0
  108. package/dist/esm/splitview/splitviewComponent.js +1 -0
  109. package/dist/styles/dockview.css +427 -69
  110. package/package.json +1 -1
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * dockview-core
3
- * @version 3.2.0
3
+ * @version 4.0.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 = ".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-active-sash-transition-duration: 0.1s;\n --dv-active-sash-transition-delay: 0.5s;\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-active-sash-transition-duration: 0.1s;\n --dv-active-sash-transition-delay: 0.5s;\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-active-sash-transition-duration: 0.1s;\n --dv-active-sash-transition-delay: 0.5s;\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-active-sash-transition-duration: 0.1s;\n --dv-active-sash-transition-delay: 0.5s;\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-active-sash-transition-duration: 0.1s;\n --dv-active-sash-transition-delay: 0.5s;\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-active-sash-transition-duration: 0.1s;\n --dv-active-sash-transition-delay: 0.5s;\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 .dv-vertical > .dv-sash-container > .dv-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 .dv-vertical > .dv-sash-container > .dv-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, .dv-split-view-container .dv-sash-container .dv-sash:not(.disabled):hover {\n background-color: var(--dv-active-sash-color, transparent);\n transition-property: background-color;\n transition-timing-function: ease-in-out;\n transition-duration: var(--dv-active-sash-transition-duration, 0.1s);\n transition-delay: var(--dv-active-sash-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}";
34
+ var css_248z = ".dv-scrollable {\n position: relative;\n overflow: hidden;\n}\n.dv-scrollable .dv-scrollbar-horizontal {\n position: absolute;\n bottom: 0px;\n left: 0px;\n height: 4px;\n border-radius: 2px;\n background-color: transparent;\n transition-property: background-color;\n transition-timing-function: ease-in-out;\n transition-duration: 1s;\n transition-delay: 0s;\n}\n.dv-scrollable:hover .dv-scrollbar-horizontal, .dv-scrollable.dv-scrollable-resizing .dv-scrollbar-horizontal, .dv-scrollable.dv-scrollable-scrolling .dv-scrollbar-horizontal {\n background-color: var(--dv-scrollbar-background-color, rgba(255, 255, 255, 0.25));\n}\n.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: transparent;\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-tab-font-size: inherit;\n --dv-border-radius: 0px;\n --dv-tab-margin: 0;\n --dv-sash-color: transparent;\n --dv-active-sash-color: transparent;\n --dv-active-sash-transition-duration: 0.1s;\n --dv-active-sash-transition-delay: 0.5s;\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.dockview-theme-dark .dv-drop-target-container .dv-drop-target-anchor.dv-drop-target-anchor-container-changed {\n opacity: 0;\n transition: none;\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: transparent;\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-tab-font-size: inherit;\n --dv-border-radius: 0px;\n --dv-tab-margin: 0;\n --dv-sash-color: transparent;\n --dv-active-sash-color: transparent;\n --dv-active-sash-transition-duration: 0.1s;\n --dv-active-sash-transition-delay: 0.5s;\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 --dv-scrollbar-background-color: rgba(0, 0, 0, 0.25);\n}\n.dockview-theme-light .dv-drop-target-container .dv-drop-target-anchor.dv-drop-target-anchor-container-changed {\n opacity: 0;\n transition: none;\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: transparent;\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-tab-font-size: inherit;\n --dv-border-radius: 0px;\n --dv-tab-margin: 0;\n --dv-sash-color: transparent;\n --dv-active-sash-color: transparent;\n --dv-active-sash-transition-duration: 0.1s;\n --dv-active-sash-transition-delay: 0.5s;\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-drop-target-container .dv-drop-target-anchor.dv-drop-target-anchor-container-changed {\n opacity: 0;\n transition: none;\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: transparent;\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-tab-font-size: inherit;\n --dv-border-radius: 0px;\n --dv-tab-margin: 0;\n --dv-sash-color: transparent;\n --dv-active-sash-color: transparent;\n --dv-active-sash-transition-duration: 0.1s;\n --dv-active-sash-transition-delay: 0.5s;\n --dv-color-abyss-dark: #000c18;\n --dv-color-abyss: #10192c;\n --dv-color-abyss-light: #1c1c2a;\n --dv-color-abyss-lighter: #2b2b4a;\n --dv-color-abyss-accent: rgb(91, 30, 207);\n --dv-color-abyss-primary-text: white;\n --dv-color-abyss-secondary-text: rgb(148, 151, 169);\n --dv-group-view-background-color: var(--dv-color-abyss-dark);\n --dv-tabs-and-actions-container-background-color: var(\n --dv-color-abyss-light\n );\n --dv-activegroup-visiblepanel-tab-background-color: var(\n --dv-color-abyss-dark\n );\n --dv-activegroup-hiddenpanel-tab-background-color: var(--dv-color-abyss);\n --dv-inactivegroup-visiblepanel-tab-background-color: var(\n --dv-color-abyss-dark\n );\n --dv-inactivegroup-hiddenpanel-tab-background-color: var(--dv-color-abyss);\n --dv-tab-divider-color: var(--dv-color-abyss-lighter);\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: var(--dv-color-abyss-lighter);\n --dv-paneview-header-border-color: var(--dv-color-abyss-lighter);\n --dv-paneview-active-outline-color: #596f99;\n}\n.dockview-theme-abyss .dv-drop-target-container .dv-drop-target-anchor.dv-drop-target-anchor-container-changed {\n opacity: 0;\n transition: none;\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: transparent;\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-tab-font-size: inherit;\n --dv-border-radius: 0px;\n --dv-tab-margin: 0;\n --dv-sash-color: transparent;\n --dv-active-sash-color: transparent;\n --dv-active-sash-transition-duration: 0.1s;\n --dv-active-sash-transition-delay: 0.5s;\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-drop-target-container .dv-drop-target-anchor.dv-drop-target-anchor-container-changed {\n opacity: 0;\n transition: none;\n}\n.dockview-theme-dracula .dv-groupview.dv-active-group > .dv-tabs-and-actions-container > .dv-scrollable > .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-scrollable > .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-scrollable > .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-scrollable > .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: transparent;\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-tab-font-size: inherit;\n --dv-border-radius: 0px;\n --dv-tab-margin: 0;\n --dv-sash-color: transparent;\n --dv-active-sash-color: transparent;\n --dv-active-sash-transition-duration: 0.1s;\n --dv-active-sash-transition-delay: 0.5s;\n padding: 10px;\n background-color: #ebeced;\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-sash-color: #cfd1d3;\n --dv-active-sash-color: #babbbb;\n}\n.dockview-theme-replit .dv-drop-target-container .dv-drop-target-anchor.dv-drop-target-anchor-container-changed {\n opacity: 0;\n transition: none;\n}\n.dockview-theme-replit .dv-resize-container:has(> .dv-groupview) {\n border-radius: 8px;\n}\n.dockview-theme-replit .dv-resize-container {\n border-radius: 10px !important;\n border: none;\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 .dv-vertical > .dv-sash-container > .dv-sash {\n background-color: transparent;\n}\n.dockview-theme-replit .dv-vertical > .dv-sash-container > .dv-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-sash-color);\n position: absolute;\n}\n.dockview-theme-replit .dv-vertical > .dv-sash-container > .dv-sash:not(.disabled):hover, .dockview-theme-replit .dv-vertical > .dv-sash-container > .dv-sash:not(.disabled):active {\n background-color: transparent;\n}\n.dockview-theme-replit .dv-vertical > .dv-sash-container > .dv-sash:not(.disabled):hover::after, .dockview-theme-replit .dv-vertical > .dv-sash-container > .dv-sash:not(.disabled):active::after {\n background-color: var(--dv-active-sash-color);\n}\n.dockview-theme-replit .dv-horizontal > .dv-sash-container > .dv-sash {\n background-color: transparent;\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-sash-color);\n position: absolute;\n}\n.dockview-theme-replit .dv-horizontal > .dv-sash-container > .dv-sash:not(.disabled):hover, .dockview-theme-replit .dv-horizontal > .dv-sash-container > .dv-sash:not(.disabled):active {\n background-color: transparent;\n}\n.dockview-theme-replit .dv-horizontal > .dv-sash-container > .dv-sash:not(.disabled):hover::after, .dockview-theme-replit .dv-horizontal > .dv-sash-container > .dv-sash:not(.disabled):active::after {\n background-color: var(--dv-active-sash-color);\n}\n\n.dockview-theme-abyss-spaced {\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: transparent;\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-tab-font-size: inherit;\n --dv-border-radius: 0px;\n --dv-tab-margin: 0;\n --dv-sash-color: transparent;\n --dv-active-sash-color: transparent;\n --dv-active-sash-transition-duration: 0.1s;\n --dv-active-sash-transition-delay: 0.5s;\n --dv-tab-font-size: 12px;\n --dv-border-radius: 20px;\n --dv-tab-margin: 0.5rem 0.25rem;\n --dv-tabs-and-actions-container-height: 44px;\n --dv-border-radius: 20px;\n --dv-color-abyss-dark: rgb(11, 6, 17);\n --dv-color-abyss: #16121f;\n --dv-color-abyss-light: #201d2b;\n --dv-color-abyss-lighter: #2a2837;\n --dv-color-abyss-accent: rgb(91, 30, 207);\n --dv-color-abyss-primary-text: white;\n --dv-color-abyss-secondary-text: rgb(148, 151, 169);\n --dv-drag-over-border: 2px solid var(--dv-color-abyss-accent);\n --dv-drag-over-background-color: \"\";\n --dv-group-view-background-color: var(--dv-color-abyss-dark);\n --dv-tabs-and-actions-container-background-color: var(--dv-color-abyss);\n --dv-activegroup-visiblepanel-tab-background-color: var(\n --dv-color-abyss-lighter\n );\n --dv-activegroup-hiddenpanel-tab-background-color: var(\n --dv-color-abyss-light\n );\n --dv-inactivegroup-visiblepanel-tab-background-color: var(\n --dv-color-abyss-lighter\n );\n --dv-inactivegroup-hiddenpanel-tab-background-color: var(\n --dv-color-abyss-light\n );\n --dv-tab-divider-color: transparent;\n --dv-activegroup-visiblepanel-tab-color: var(--dv-color-abyss-primary-text);\n --dv-activegroup-hiddenpanel-tab-color: var(\n --dv-color-abyss-secondary-text\n );\n --dv-inactivegroup-visiblepanel-tab-color: var(\n --dv-color-abyss-primary-text\n );\n --dv-inactivegroup-hiddenpanel-tab-color: var(\n --dv-color-abyss-secondary-text\n );\n --dv-separator-border: transparent;\n --dv-paneview-header-border-color: rgb(51, 51, 51);\n --dv-active-sash-color: var(--dv-color-abyss-accent);\n --dv-floating-box-shadow: 8px 8px 8px 0px rgba(0, 0, 0, 0.5);\n padding: 10px;\n background-color: var(--dv-color-abyss-dark);\n}\n.dockview-theme-abyss-spaced .dv-resize-container:has(> .dv-groupview) {\n border-radius: 8px;\n}\n.dockview-theme-abyss-spaced .dv-sash {\n border-radius: 4px;\n}\n.dockview-theme-abyss-spaced .dv-drop-target-anchor {\n border-radius: calc(var(--dv-border-radius) / 4);\n}\n.dockview-theme-abyss-spaced .dv-drop-target-anchor.dv-drop-target-content {\n border-radius: var(--dv-border-radius);\n}\n.dockview-theme-abyss-spaced .dv-resize-container {\n border-radius: var(--dv-border-radius) !important;\n border: none;\n}\n.dockview-theme-abyss-spaced .dv-tabs-overflow-container,\n.dockview-theme-abyss-spaced .dv-tabs-overflow-dropdown-default {\n border-radius: 8px;\n height: unset !important;\n}\n.dockview-theme-abyss-spaced .dv-tab {\n border-radius: 8px;\n}\n.dockview-theme-abyss-spaced .dv-tab .dv-svg {\n height: 8px;\n width: 8px;\n}\n.dockview-theme-abyss-spaced .dv-groupview {\n border-radius: var(--dv-border-radius);\n}\n.dockview-theme-abyss-spaced .dv-groupview .dv-tabs-and-actions-container {\n padding: 0px calc(var(--dv-border-radius) / 2);\n}\n.dockview-theme-abyss-spaced .dv-groupview .dv-content-container {\n background-color: var(--dv-tabs-and-actions-container-background-color);\n}\n.dockview-theme-abyss-spaced .dv-resize-container .dv-groupview {\n border: 2px solid var(--dv-color-abyss-dark);\n}\n\n.dockview-theme-light-spaced {\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: transparent;\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-tab-font-size: inherit;\n --dv-border-radius: 0px;\n --dv-tab-margin: 0;\n --dv-sash-color: transparent;\n --dv-active-sash-color: transparent;\n --dv-active-sash-transition-duration: 0.1s;\n --dv-active-sash-transition-delay: 0.5s;\n --dv-tab-font-size: 12px;\n --dv-border-radius: 20px;\n --dv-tab-margin: 0.5rem 0.25rem;\n --dv-tabs-and-actions-container-height: 44px;\n --dv-border-radius: 20px;\n --dv-drag-over-border: 2px solid rgb(91, 30, 207);\n --dv-drag-over-background-color: \"\";\n --dv-group-view-background-color: #f6f5f9;\n --dv-tabs-and-actions-container-background-color: white;\n --dv-activegroup-visiblepanel-tab-background-color: #ededf0;\n --dv-activegroup-hiddenpanel-tab-background-color: #f9f9fa;\n --dv-inactivegroup-visiblepanel-tab-background-color: #ededf0;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #f9f9fa;\n --dv-tab-divider-color: transparent;\n --dv-activegroup-visiblepanel-tab-color: rgb(104, 107, 130);\n --dv-activegroup-hiddenpanel-tab-color: rgb(148, 151, 169);\n --dv-inactivegroup-visiblepanel-tab-color: rgb(104, 107, 130);\n --dv-inactivegroup-hiddenpanel-tab-color: rgb(148, 151, 169);\n --dv-separator-border: transparent;\n --dv-paneview-header-border-color: rgb(51, 51, 51);\n --dv-active-sash-color: rgb(91, 30, 207);\n --dv-floating-box-shadow: 8px 8px 8px 0px rgba(0, 0, 0, 0.1);\n padding: 10px;\n background-color: #f6f5f9;\n --dv-scrollbar-background-color: rgba(0, 0, 0, 0.25);\n}\n.dockview-theme-light-spaced .dv-resize-container:has(> .dv-groupview) {\n border-radius: 8px;\n}\n.dockview-theme-light-spaced .dv-sash {\n border-radius: 4px;\n}\n.dockview-theme-light-spaced .dv-drop-target-anchor {\n border-radius: calc(var(--dv-border-radius) / 4);\n}\n.dockview-theme-light-spaced .dv-drop-target-anchor.dv-drop-target-content {\n border-radius: var(--dv-border-radius);\n}\n.dockview-theme-light-spaced .dv-resize-container {\n border-radius: var(--dv-border-radius) !important;\n border: none;\n}\n.dockview-theme-light-spaced .dv-tabs-overflow-container,\n.dockview-theme-light-spaced .dv-tabs-overflow-dropdown-default {\n border-radius: 8px;\n height: unset !important;\n}\n.dockview-theme-light-spaced .dv-tab {\n border-radius: 8px;\n}\n.dockview-theme-light-spaced .dv-tab .dv-svg {\n height: 8px;\n width: 8px;\n}\n.dockview-theme-light-spaced .dv-groupview {\n border-radius: var(--dv-border-radius);\n}\n.dockview-theme-light-spaced .dv-groupview .dv-tabs-and-actions-container {\n padding: 0px calc(var(--dv-border-radius) / 2);\n}\n.dockview-theme-light-spaced .dv-groupview .dv-content-container {\n background-color: var(--dv-tabs-and-actions-container-background-color);\n}\n.dockview-theme-light-spaced .dv-resize-container .dv-groupview {\n border: 2px solid rgba(255, 255, 255, 0.1);\n}\n.dv-drop-target-container {\n position: absolute;\n z-index: 9999;\n top: 0px;\n left: 0px;\n height: 100%;\n width: 100%;\n pointer-events: none;\n overflow: hidden;\n --dv-transition-duration: 300ms;\n}\n.dv-drop-target-container .dv-drop-target-anchor {\n position: relative;\n border: var(--dv-drag-over-border);\n transition: opacity var(--dv-transition-duration) ease-in, top var(--dv-transition-duration) ease-out, left var(--dv-transition-duration) ease-out, width var(--dv-transition-duration) ease-out, height var(--dv-transition-duration) ease-out;\n background-color: var(--dv-drag-over-background-color);\n opacity: 1;\n}\n.dv-drop-target {\n position: relative;\n --dv-transition-duration: 70ms;\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 border: var(--dv-drag-over-border);\n background-color: var(--dv-drag-over-background-color);\n transition: top var(--dv-transition-duration) ease-out, left var(--dv-transition-duration) ease-out, width var(--dv-transition-duration) ease-out, height var(--dv-transition-duration) ease-out, opacity var(--dv-transition-duration) 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-scrollable > .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-scrollable > .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-scrollable > .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-scrollable > .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 background-color: var(--dv-sash-color, transparent);\n}\n.dv-split-view-container .dv-sash-container .dv-sash:not(.disabled):active, .dv-split-view-container .dv-sash-container .dv-sash:not(.disabled):hover {\n background-color: var(--dv-active-sash-color, transparent);\n transition-property: background-color;\n transition-timing-function: ease-in-out;\n transition-duration: var(--dv-active-sash-transition-duration, 0.1s);\n transition-delay: var(--dv-active-sash-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 align-items: center;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n.dv-tab .dv-default-tab .dv-default-tab-content {\n flex-grow: 1;\n margin-right: 4px;\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-overflow-dropdown-default {\n height: 100%;\n color: var(--dv-activegroup-hiddenpanel-tab-color);\n margin: var(--dv-tab-margin);\n display: flex;\n align-items: center;\n flex-shrink: 0;\n padding: 0.25rem 0.5rem;\n cursor: pointer;\n}\n.dv-tabs-overflow-dropdown-default > span {\n padding-left: 0.25rem;\n}\n.dv-tabs-overflow-dropdown-default > svg {\n transform: rotate(90deg);\n}\n.dv-tabs-container {\n display: flex;\n height: 100%;\n overflow: hidden;\n scrollbar-width: thin;\n /* Track */\n /* Handle */\n}\n.dv-tabs-container.dv-horizontal .dv-tabs-container .dv-tab:last-child {\n margin-right: 0;\n}\n.dv-tabs-container.dv-horizontal .dv-tabs-container .dv-tab:not(:nth-last-child(1)) {\n margin-left: 0;\n}\n.dv-tabs-container.dv-horizontal .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-tabs-container::-webkit-scrollbar {\n height: 3px;\n}\n.dv-tabs-container::-webkit-scrollbar-track {\n background: transparent;\n}\n.dv-tabs-container::-webkit-scrollbar-thumb {\n background: var(--dv-tabs-container-scrollbar-color);\n}\n\n.dv-tab {\n -webkit-user-drag: element;\n outline: none;\n padding: 0.25rem 0.5rem;\n cursor: pointer;\n position: relative;\n box-sizing: border-box;\n font-size: var(--dv-tab-font-size);\n margin: var(--dv-tab-margin);\n}\n\n.dv-tabs-overflow-container {\n flex-direction: column;\n height: unset;\n border: 1px solid var(--dv-tab-divider-color);\n background-color: var(--dv-group-view-background-color);\n}\n.dv-tabs-overflow-container .dv-tab:not(:last-child) {\n border-bottom: 1px solid var(--dv-tab-divider-color);\n}\n.dv-tabs-overflow-container .dv-active-tab {\n background-color: var(--dv-activegroup-visiblepanel-tab-background-color);\n color: var(--dv-activegroup-visiblepanel-tab-color);\n}\n.dv-tabs-overflow-container .dv-inactive-tab {\n background-color: var(--dv-activegroup-hiddenpanel-tab-background-color);\n color: var(--dv-activegroup-hiddenpanel-tab-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-right-actions-container {\n display: flex;\n}\n.dv-watermark {\n display: flex;\n height: 100%;\n}";
35
35
  styleInject(css_248z);
36
36
 
37
37
  class TransferObject {
@@ -363,6 +363,20 @@ class MutableDisposable {
363
363
  }
364
364
  }
365
365
 
366
+ class OverflowObserver extends CompositeDisposable {
367
+ constructor(el) {
368
+ super();
369
+ this._onDidChange = new Emitter();
370
+ this.onDidChange = this._onDidChange.event;
371
+ this._value = null;
372
+ this.addDisposables(this._onDidChange, watchElementResize(el, (entry) => {
373
+ const hasScrollX = entry.target.scrollWidth > entry.target.clientWidth;
374
+ const hasScrollY = entry.target.scrollHeight > entry.target.clientHeight;
375
+ this._value = { hasScrollX, hasScrollY };
376
+ this._onDidChange.fire(this._value);
377
+ }));
378
+ }
379
+ }
366
380
  function watchElementResize(element, cb) {
367
381
  const observer = new ResizeObserver((entires) => {
368
382
  /**
@@ -601,6 +615,19 @@ class Classnames {
601
615
  }
602
616
  }
603
617
  }
618
+ function isChildEntirelyVisibleWithinParent(child, parent) {
619
+ //
620
+ const childPosition = getDomNodePagePosition(child);
621
+ const parentPosition = getDomNodePagePosition(parent);
622
+ if (childPosition.left < parentPosition.left) {
623
+ return false;
624
+ }
625
+ if (childPosition.left + childPosition.width >
626
+ parentPosition.left + parentPosition.width) {
627
+ return false;
628
+ }
629
+ return true;
630
+ }
604
631
 
605
632
  function tail(arr) {
606
633
  if (arr.length === 0) {
@@ -608,9 +635,6 @@ function tail(arr) {
608
635
  }
609
636
  return [arr.slice(0, arr.length - 1), arr[arr.length - 1]];
610
637
  }
611
- function last(arr) {
612
- return arr.length > 0 ? arr[arr.length - 1] : undefined;
613
- }
614
638
  function sequenceEquals(arr1, arr2) {
615
639
  if (arr1.length !== arr2.length) {
616
640
  return false;
@@ -876,6 +900,7 @@ class Splitview {
876
900
  }
877
901
  set margin(value) {
878
902
  this._margin = value;
903
+ toggleClass(this.element, 'dv-splitview-has-margin', value !== 0);
879
904
  }
880
905
  constructor(container, options) {
881
906
  var _a, _b;
@@ -3447,9 +3472,6 @@ class DockviewApi {
3447
3472
  get totalPanels() {
3448
3473
  return this.component.totalPanels;
3449
3474
  }
3450
- get gap() {
3451
- return this.component.gap;
3452
- }
3453
3475
  /**
3454
3476
  * Invoked when the active group changes. May be undefined if no group is active.
3455
3477
  */
@@ -3680,9 +3702,6 @@ class DockviewApi {
3680
3702
  addPopoutGroup(item, options) {
3681
3703
  return this.component.addPopoutGroup(item, options);
3682
3704
  }
3683
- setGap(gap) {
3684
- this.component.updateOptions({ gap });
3685
- }
3686
3705
  updateOptions(options) {
3687
3706
  this.component.updateOptions(options);
3688
3707
  }
@@ -3735,14 +3754,16 @@ class DragHandler extends CompositeDisposable {
3735
3754
  * For example: in react-dnd if dataTransfer.types is not set then the dragStart event will be cancelled
3736
3755
  * through .preventDefault(). Since this is applied globally to all drag events this would break dockviews
3737
3756
  * dnd logic. You can see the code at
3738
- * https://github.com/react-dnd/react-dnd/blob/main/packages/backend-html5/src/HTML5BackendImpl.ts#L542
3757
+ P * https://github.com/react-dnd/react-dnd/blob/main/packages/backend-html5/src/HTML5BackendImpl.ts#L542
3739
3758
  */
3740
3759
  event.dataTransfer.setData('text/plain', '');
3741
3760
  }
3742
3761
  }
3743
3762
  }), addDisposableListener(this.el, 'dragend', () => {
3744
3763
  this.pointerEventsDisposable.dispose();
3745
- this.dataDisposable.dispose();
3764
+ setTimeout(() => {
3765
+ this.dataDisposable.dispose(); // allow the data to be read by other handlers before disposing
3766
+ }, 0);
3746
3767
  }));
3747
3768
  }
3748
3769
  }
@@ -3852,6 +3873,12 @@ const DEFAULT_SIZE = {
3852
3873
  const SMALL_WIDTH_BOUNDARY = 100;
3853
3874
  const SMALL_HEIGHT_BOUNDARY = 100;
3854
3875
  class Droptarget extends CompositeDisposable {
3876
+ get disabled() {
3877
+ return this._disabled;
3878
+ }
3879
+ set disabled(value) {
3880
+ this._disabled = value;
3881
+ }
3855
3882
  get state() {
3856
3883
  return this._state;
3857
3884
  }
@@ -3863,23 +3890,34 @@ class Droptarget extends CompositeDisposable {
3863
3890
  this.onDrop = this._onDrop.event;
3864
3891
  this._onWillShowOverlay = new Emitter();
3865
3892
  this.onWillShowOverlay = this._onWillShowOverlay.event;
3893
+ this._disabled = false;
3866
3894
  // use a set to take advantage of #<set>.has
3867
3895
  this._acceptedTargetZonesSet = new Set(this.options.acceptedTargetZones);
3868
3896
  this.dnd = new DragAndDropObserver(this.element, {
3869
- onDragEnter: () => undefined,
3897
+ onDragEnter: () => {
3898
+ var _a, _b, _c;
3899
+ (_c = (_b = (_a = this.options).getOverrideTarget) === null || _b === void 0 ? void 0 : _b.call(_a)) === null || _c === void 0 ? void 0 : _c.getElements();
3900
+ },
3870
3901
  onDragOver: (e) => {
3902
+ var _a, _b, _c, _d, _e, _f, _g;
3903
+ Droptarget.ACTUAL_TARGET = this;
3904
+ const overrideTraget = (_b = (_a = this.options).getOverrideTarget) === null || _b === void 0 ? void 0 : _b.call(_a);
3871
3905
  if (this._acceptedTargetZonesSet.size === 0) {
3906
+ if (overrideTraget) {
3907
+ return;
3908
+ }
3872
3909
  this.removeDropTarget();
3873
3910
  return;
3874
3911
  }
3875
- const width = this.element.clientWidth;
3876
- const height = this.element.clientHeight;
3912
+ const target = (_e = (_d = (_c = this.options).getOverlayOutline) === null || _d === void 0 ? void 0 : _d.call(_c)) !== null && _e !== void 0 ? _e : this.element;
3913
+ const width = target.offsetWidth;
3914
+ const height = target.offsetHeight;
3877
3915
  if (width === 0 || height === 0) {
3878
3916
  return; // avoid div!0
3879
3917
  }
3880
3918
  const rect = e.currentTarget.getBoundingClientRect();
3881
- const x = e.clientX - rect.left;
3882
- const y = e.clientY - rect.top;
3919
+ const x = ((_f = e.clientX) !== null && _f !== void 0 ? _f : 0) - rect.left;
3920
+ const y = ((_g = e.clientY) !== null && _g !== void 0 ? _g : 0) - rect.top;
3883
3921
  const quadrant = this.calculateQuadrant(this._acceptedTargetZonesSet, x, y, width, height);
3884
3922
  /**
3885
3923
  * If the event has already been used by another DropTarget instance
@@ -3892,6 +3930,9 @@ class Droptarget extends CompositeDisposable {
3892
3930
  return;
3893
3931
  }
3894
3932
  if (!this.options.canDisplayOverlay(e, quadrant)) {
3933
+ if (overrideTraget) {
3934
+ return;
3935
+ }
3895
3936
  this.removeDropTarget();
3896
3937
  return;
3897
3938
  }
@@ -3909,29 +3950,57 @@ class Droptarget extends CompositeDisposable {
3909
3950
  return;
3910
3951
  }
3911
3952
  this.markAsUsed(e);
3912
- if (!this.targetElement) {
3953
+ if (overrideTraget) ;
3954
+ else if (!this.targetElement) {
3913
3955
  this.targetElement = document.createElement('div');
3914
3956
  this.targetElement.className = 'dv-drop-target-dropzone';
3915
3957
  this.overlayElement = document.createElement('div');
3916
3958
  this.overlayElement.className = 'dv-drop-target-selection';
3917
3959
  this._state = 'center';
3918
3960
  this.targetElement.appendChild(this.overlayElement);
3919
- this.element.classList.add('dv-drop-target');
3920
- this.element.append(this.targetElement);
3961
+ target.classList.add('dv-drop-target');
3962
+ target.append(this.targetElement);
3963
+ // this.overlayElement.style.opacity = '0';
3964
+ // requestAnimationFrame(() => {
3965
+ // if (this.overlayElement) {
3966
+ // this.overlayElement.style.opacity = '';
3967
+ // }
3968
+ // });
3921
3969
  }
3922
3970
  this.toggleClasses(quadrant, width, height);
3923
3971
  this._state = quadrant;
3924
3972
  },
3925
3973
  onDragLeave: () => {
3974
+ var _a, _b;
3975
+ const target = (_b = (_a = this.options).getOverrideTarget) === null || _b === void 0 ? void 0 : _b.call(_a);
3976
+ if (target) {
3977
+ return;
3978
+ }
3926
3979
  this.removeDropTarget();
3927
3980
  },
3928
- onDragEnd: () => {
3981
+ onDragEnd: (e) => {
3982
+ var _a, _b;
3983
+ const target = (_b = (_a = this.options).getOverrideTarget) === null || _b === void 0 ? void 0 : _b.call(_a);
3984
+ if (target && Droptarget.ACTUAL_TARGET === this) {
3985
+ if (this._state) {
3986
+ // only stop the propagation of the event if we are dealing with it
3987
+ // which is only when the target has state
3988
+ e.stopPropagation();
3989
+ this._onDrop.fire({
3990
+ position: this._state,
3991
+ nativeEvent: e,
3992
+ });
3993
+ }
3994
+ }
3929
3995
  this.removeDropTarget();
3996
+ target === null || target === void 0 ? void 0 : target.clear();
3930
3997
  },
3931
3998
  onDrop: (e) => {
3999
+ var _a, _b, _c;
3932
4000
  e.preventDefault();
3933
4001
  const state = this._state;
3934
4002
  this.removeDropTarget();
4003
+ (_c = (_b = (_a = this.options).getOverrideTarget) === null || _b === void 0 ? void 0 : _b.call(_a)) === null || _c === void 0 ? void 0 : _c.clear();
3935
4004
  if (state) {
3936
4005
  // only stop the propagation of the event if we are dealing with it
3937
4006
  // which is only when the target has state
@@ -3966,8 +4035,9 @@ class Droptarget extends CompositeDisposable {
3966
4035
  return typeof value === 'boolean' && value;
3967
4036
  }
3968
4037
  toggleClasses(quadrant, width, height) {
3969
- var _a, _b;
3970
- if (!this.overlayElement) {
4038
+ var _a, _b, _c, _d, _e, _f, _g;
4039
+ const target = (_b = (_a = this.options).getOverrideTarget) === null || _b === void 0 ? void 0 : _b.call(_a);
4040
+ if (!target && !this.overlayElement) {
3971
4041
  return;
3972
4042
  }
3973
4043
  const isSmallX = width < SMALL_WIDTH_BOUNDARY;
@@ -3981,7 +4051,7 @@ class Droptarget extends CompositeDisposable {
3981
4051
  const topClass = !isSmallY && isTop;
3982
4052
  const bottomClass = !isSmallY && isBottom;
3983
4053
  let size = 1;
3984
- const sizeOptions = (_b = (_a = this.options.overlayModel) === null || _a === void 0 ? void 0 : _a.size) !== null && _b !== void 0 ? _b : DEFAULT_SIZE;
4054
+ const sizeOptions = (_d = (_c = this.options.overlayModel) === null || _c === void 0 ? void 0 : _c.size) !== null && _d !== void 0 ? _d : DEFAULT_SIZE;
3985
4055
  if (sizeOptions.type === 'percentage') {
3986
4056
  size = clamp(sizeOptions.value, 0, 100) / 100;
3987
4057
  }
@@ -3993,6 +4063,74 @@ class Droptarget extends CompositeDisposable {
3993
4063
  size = clamp(0, sizeOptions.value, height) / height;
3994
4064
  }
3995
4065
  }
4066
+ if (target) {
4067
+ const outlineEl = (_g = (_f = (_e = this.options).getOverlayOutline) === null || _f === void 0 ? void 0 : _f.call(_e)) !== null && _g !== void 0 ? _g : this.element;
4068
+ const elBox = outlineEl.getBoundingClientRect();
4069
+ const ta = target.getElements(undefined, outlineEl);
4070
+ const el = ta.root;
4071
+ const overlay = ta.overlay;
4072
+ const bigbox = el.getBoundingClientRect();
4073
+ const rootTop = elBox.top - bigbox.top;
4074
+ const rootLeft = elBox.left - bigbox.left;
4075
+ const box = {
4076
+ top: rootTop,
4077
+ left: rootLeft,
4078
+ width: width,
4079
+ height: height,
4080
+ };
4081
+ if (rightClass) {
4082
+ box.left = rootLeft + width * (1 - size);
4083
+ box.width = width * size;
4084
+ }
4085
+ else if (leftClass) {
4086
+ box.width = width * size;
4087
+ }
4088
+ else if (topClass) {
4089
+ box.height = height * size;
4090
+ }
4091
+ else if (bottomClass) {
4092
+ box.top = rootTop + height * (1 - size);
4093
+ box.height = height * size;
4094
+ }
4095
+ if (isSmallX && isLeft) {
4096
+ box.width = 4;
4097
+ }
4098
+ if (isSmallX && isRight) {
4099
+ box.left = rootLeft + width - 4;
4100
+ box.width = 4;
4101
+ }
4102
+ const topPx = `${Math.round(box.top)}px`;
4103
+ const leftPx = `${Math.round(box.left)}px`;
4104
+ const widthPx = `${Math.round(box.width)}px`;
4105
+ const heightPx = `${Math.round(box.height)}px`;
4106
+ if (overlay.style.top === topPx &&
4107
+ overlay.style.left === leftPx &&
4108
+ overlay.style.width === widthPx &&
4109
+ overlay.style.height === heightPx) {
4110
+ return;
4111
+ }
4112
+ overlay.style.top = topPx;
4113
+ overlay.style.left = leftPx;
4114
+ overlay.style.width = widthPx;
4115
+ overlay.style.height = heightPx;
4116
+ overlay.style.visibility = 'visible';
4117
+ overlay.className = `dv-drop-target-anchor${this.options.className ? ` ${this.options.className}` : ''}`;
4118
+ toggleClass(overlay, 'dv-drop-target-left', isLeft);
4119
+ toggleClass(overlay, 'dv-drop-target-right', isRight);
4120
+ toggleClass(overlay, 'dv-drop-target-top', isTop);
4121
+ toggleClass(overlay, 'dv-drop-target-bottom', isBottom);
4122
+ toggleClass(overlay, 'dv-drop-target-center', quadrant === 'center');
4123
+ if (ta.changed) {
4124
+ toggleClass(overlay, 'dv-drop-target-anchor-container-changed', true);
4125
+ setTimeout(() => {
4126
+ toggleClass(overlay, 'dv-drop-target-anchor-container-changed', false);
4127
+ }, 10);
4128
+ }
4129
+ return;
4130
+ }
4131
+ if (!this.overlayElement) {
4132
+ return;
4133
+ }
3996
4134
  const box = { top: '0px', left: '0px', width: '100%', height: '100%' };
3997
4135
  /**
3998
4136
  * You can also achieve the overlay placement using the transform CSS property
@@ -4049,12 +4187,13 @@ class Droptarget extends CompositeDisposable {
4049
4187
  return calculateQuadrantAsPixels(overlayType, x, y, width, height, activationSizeOptions.value);
4050
4188
  }
4051
4189
  removeDropTarget() {
4190
+ var _a;
4052
4191
  if (this.targetElement) {
4053
4192
  this._state = undefined;
4054
- this.element.removeChild(this.targetElement);
4193
+ (_a = this.targetElement.parentElement) === null || _a === void 0 ? void 0 : _a.classList.remove('dv-drop-target');
4194
+ this.targetElement.remove();
4055
4195
  this.targetElement = undefined;
4056
4196
  this.overlayElement = undefined;
4057
- this.element.classList.remove('dv-drop-target');
4058
4197
  }
4059
4198
  }
4060
4199
  }
@@ -4639,7 +4778,15 @@ class ContentContainer extends CompositeDisposable {
4639
4778
  this._element.className = 'dv-content-container';
4640
4779
  this._element.tabIndex = -1;
4641
4780
  this.addDisposables(this._onDidFocus, this._onDidBlur);
4781
+ const target = group.dropTargetContainer;
4642
4782
  this.dropTarget = new Droptarget(this.element, {
4783
+ getOverlayOutline: () => {
4784
+ var _a;
4785
+ return ((_a = accessor.options.theme) === null || _a === void 0 ? void 0 : _a.dndPanelOverlay) === 'group'
4786
+ ? this.element.parentElement
4787
+ : null;
4788
+ },
4789
+ className: 'dv-drop-target-content',
4643
4790
  acceptedTargetZones: ['top', 'bottom', 'left', 'right', 'center'],
4644
4791
  canDisplayOverlay: (event, position) => {
4645
4792
  if (this.group.locked === 'no-drop-target' ||
@@ -4653,22 +4800,11 @@ class ContentContainer extends CompositeDisposable {
4653
4800
  return false;
4654
4801
  }
4655
4802
  if (data && data.viewId === this.accessor.id) {
4656
- if (data.groupId === this.group.id) {
4657
- if (position === 'center') {
4658
- // don't allow to drop on self for center position
4659
- return false;
4660
- }
4661
- if (data.panelId === null) {
4662
- // don't allow group move to drop anywhere on self
4663
- return false;
4664
- }
4665
- }
4666
- const groupHasOnePanelAndIsActiveDragElement = this.group.panels.length === 1 &&
4667
- data.groupId === this.group.id;
4668
- return !groupHasOnePanelAndIsActiveDragElement;
4803
+ return true;
4669
4804
  }
4670
4805
  return this.group.canDisplayOverlay(event, position, 'content');
4671
4806
  },
4807
+ getOverrideTarget: target ? () => target.model : undefined,
4672
4808
  });
4673
4809
  this.addDisposables(this.dropTarget);
4674
4810
  }
@@ -4743,6 +4879,18 @@ class ContentContainer extends CompositeDisposable {
4743
4879
  }
4744
4880
  }
4745
4881
 
4882
+ function addGhostImage(dataTransfer, ghostElement, options) {
4883
+ var _a, _b;
4884
+ // class dockview provides to force ghost image to be drawn on a different layer and prevent weird rendering issues
4885
+ addClasses(ghostElement, 'dv-dragged');
4886
+ document.body.appendChild(ghostElement);
4887
+ dataTransfer.setDragImage(ghostElement, (_a = options === null || options === void 0 ? void 0 : options.x) !== null && _a !== void 0 ? _a : 0, (_b = options === null || options === void 0 ? void 0 : options.y) !== null && _b !== void 0 ? _b : 0);
4888
+ setTimeout(() => {
4889
+ removeClasses(ghostElement, 'dv-dragged');
4890
+ ghostElement.remove();
4891
+ }, 0);
4892
+ }
4893
+
4746
4894
  class TabDragHandler extends DragHandler {
4747
4895
  constructor(element, accessor, group, panel) {
4748
4896
  super(element);
@@ -4783,25 +4931,32 @@ class Tab extends CompositeDisposable {
4783
4931
  toggleClass(this.element, 'dv-inactive-tab', true);
4784
4932
  const dragHandler = new TabDragHandler(this._element, this.accessor, this.group, this.panel);
4785
4933
  this.dropTarget = new Droptarget(this._element, {
4786
- acceptedTargetZones: ['center'],
4934
+ acceptedTargetZones: ['left', 'right'],
4935
+ overlayModel: { activationSize: { value: 50, type: 'percentage' } },
4787
4936
  canDisplayOverlay: (event, position) => {
4788
4937
  if (this.group.locked) {
4789
4938
  return false;
4790
4939
  }
4791
4940
  const data = getPanelData();
4792
4941
  if (data && this.accessor.id === data.viewId) {
4793
- if (data.panelId === null &&
4794
- data.groupId === this.group.id) {
4795
- // don't allow group move to drop on self
4796
- return false;
4797
- }
4798
- return this.panel.id !== data.panelId;
4942
+ return true;
4799
4943
  }
4800
4944
  return this.group.model.canDisplayOverlay(event, position, 'tab');
4801
4945
  },
4946
+ getOverrideTarget: () => { var _a; return (_a = group.model.dropTargetContainer) === null || _a === void 0 ? void 0 : _a.model; },
4802
4947
  });
4803
4948
  this.onWillShowOverlay = this.dropTarget.onWillShowOverlay;
4804
4949
  this.addDisposables(this._onPointDown, this._onDropped, this._onDragStart, dragHandler.onDragStart((event) => {
4950
+ if (event.dataTransfer) {
4951
+ const style = getComputedStyle(this.element);
4952
+ const newNode = this.element.cloneNode(true);
4953
+ Array.from(style).forEach((key) => newNode.style.setProperty(key, style.getPropertyValue(key), style.getPropertyPriority(key)));
4954
+ newNode.style.position = 'absolute';
4955
+ addGhostImage(event.dataTransfer, newNode, {
4956
+ y: -10,
4957
+ x: 30,
4958
+ });
4959
+ }
4805
4960
  this._onDragStart.fire(event);
4806
4961
  }), dragHandler, addDisposableListener(this._element, 'pointerdown', (event) => {
4807
4962
  this._onPointDown.fire(event);
@@ -4825,17 +4980,6 @@ class Tab extends CompositeDisposable {
4825
4980
  }
4826
4981
  }
4827
4982
 
4828
- function addGhostImage(dataTransfer, ghostElement) {
4829
- // class dockview provides to force ghost image to be drawn on a different layer and prevent weird rendering issues
4830
- addClasses(ghostElement, 'dv-dragged');
4831
- document.body.appendChild(ghostElement);
4832
- dataTransfer.setDragImage(ghostElement, 0, 0);
4833
- setTimeout(() => {
4834
- removeClasses(ghostElement, 'dv-dragged');
4835
- ghostElement.remove();
4836
- }, 0);
4837
- }
4838
-
4839
4983
  class GroupDragHandler extends DragHandler {
4840
4984
  constructor(element, accessor, group) {
4841
4985
  super(element);
@@ -4875,8 +5019,10 @@ class GroupDragHandler extends DragHandler {
4875
5019
  ghostElement.style.lineHeight = '20px';
4876
5020
  ghostElement.style.borderRadius = '12px';
4877
5021
  ghostElement.style.position = 'absolute';
5022
+ ghostElement.style.pointerEvents = 'none';
5023
+ ghostElement.style.top = '-9999px';
4878
5024
  ghostElement.textContent = `Multiple Panels (${this.group.size})`;
4879
- addGhostImage(dataTransfer, ghostElement);
5025
+ addGhostImage(dataTransfer, ghostElement, { y: -10, x: 30 });
4880
5026
  }
4881
5027
  return {
4882
5028
  dispose: () => {
@@ -4908,19 +5054,13 @@ class VoidContainer extends CompositeDisposable {
4908
5054
  this.dropTraget = new Droptarget(this._element, {
4909
5055
  acceptedTargetZones: ['center'],
4910
5056
  canDisplayOverlay: (event, position) => {
4911
- var _a;
4912
5057
  const data = getPanelData();
4913
5058
  if (data && this.accessor.id === data.viewId) {
4914
- if (data.panelId === null &&
4915
- data.groupId === this.group.id) {
4916
- // don't allow group move to drop on self
4917
- return false;
4918
- }
4919
- // don't show the overlay if the tab being dragged is the last panel of this group
4920
- return ((_a = last(this.group.panels)) === null || _a === void 0 ? void 0 : _a.id) !== data.panelId;
5059
+ return true;
4921
5060
  }
4922
5061
  return group.model.canDisplayOverlay(event, position, 'header_space');
4923
5062
  },
5063
+ getOverrideTarget: () => { var _a; return (_a = group.model.dropTargetContainer) === null || _a === void 0 ? void 0 : _a.model; },
4924
5064
  });
4925
5065
  this.onWillShowOverlay = this.dropTraget.onWillShowOverlay;
4926
5066
  this.addDisposables(handler, handler.onDragStart((event) => {
@@ -4931,88 +5071,338 @@ class VoidContainer extends CompositeDisposable {
4931
5071
  }
4932
5072
  }
4933
5073
 
4934
- class TabsContainer extends CompositeDisposable {
4935
- get panels() {
4936
- return this.tabs.map((_) => _.value.panel.id);
4937
- }
4938
- get size() {
4939
- return this.tabs.length;
4940
- }
4941
- get hidden() {
4942
- return this._hidden;
5074
+ class Scrollbar extends CompositeDisposable {
5075
+ get element() {
5076
+ return this._element;
4943
5077
  }
4944
- set hidden(value) {
4945
- this._hidden = value;
4946
- this.element.style.display = value ? 'none' : '';
5078
+ constructor(scrollableElement) {
5079
+ super();
5080
+ this.scrollableElement = scrollableElement;
5081
+ this._scrollLeft = 0;
5082
+ this._element = document.createElement('div');
5083
+ this._element.className = 'dv-scrollable';
5084
+ this._horizontalScrollbar = document.createElement('div');
5085
+ this._horizontalScrollbar.className = 'dv-scrollbar-horizontal';
5086
+ this.element.appendChild(scrollableElement);
5087
+ this.element.appendChild(this._horizontalScrollbar);
5088
+ this.addDisposables(addDisposableListener(this.element, 'wheel', (event) => {
5089
+ this._scrollLeft += event.deltaY * Scrollbar.MouseWheelSpeed;
5090
+ this.calculateScrollbarStyles();
5091
+ }), addDisposableListener(this._horizontalScrollbar, 'pointerdown', (event) => {
5092
+ event.preventDefault();
5093
+ toggleClass(this.element, 'dv-scrollable-scrolling', true);
5094
+ const originalClientX = event.clientX;
5095
+ const originalScrollLeft = this._scrollLeft;
5096
+ const onPointerMove = (event) => {
5097
+ const deltaX = event.clientX - originalClientX;
5098
+ const { clientWidth } = this.element;
5099
+ const { scrollWidth } = this.scrollableElement;
5100
+ const p = clientWidth / scrollWidth;
5101
+ this._scrollLeft = originalScrollLeft + deltaX / p;
5102
+ this.calculateScrollbarStyles();
5103
+ };
5104
+ const onEnd = () => {
5105
+ toggleClass(this.element, 'dv-scrollable-scrolling', false);
5106
+ document.removeEventListener('pointermove', onPointerMove);
5107
+ document.removeEventListener('pointerup', onEnd);
5108
+ document.removeEventListener('pointercancel', onEnd);
5109
+ };
5110
+ document.addEventListener('pointermove', onPointerMove);
5111
+ document.addEventListener('pointerup', onEnd);
5112
+ document.addEventListener('pointercancel', onEnd);
5113
+ }), addDisposableListener(this.element, 'scroll', () => {
5114
+ this.calculateScrollbarStyles();
5115
+ }), addDisposableListener(this.scrollableElement, 'scroll', () => {
5116
+ this._scrollLeft = this.scrollableElement.scrollLeft;
5117
+ this.calculateScrollbarStyles();
5118
+ }), watchElementResize(this.element, () => {
5119
+ toggleClass(this.element, 'dv-scrollable-resizing', true);
5120
+ if (this._animationTimer) {
5121
+ clearTimeout(this._animationTimer);
5122
+ }
5123
+ this._animationTimer = setTimeout(() => {
5124
+ clearTimeout(this._animationTimer);
5125
+ toggleClass(this.element, 'dv-scrollable-resizing', false);
5126
+ }, 500);
5127
+ this.calculateScrollbarStyles();
5128
+ }));
4947
5129
  }
4948
- show() {
4949
- if (!this.hidden) {
4950
- this.element.style.display = '';
5130
+ calculateScrollbarStyles() {
5131
+ const { clientWidth } = this.element;
5132
+ const { scrollWidth } = this.scrollableElement;
5133
+ const hasScrollbar = scrollWidth > clientWidth;
5134
+ if (hasScrollbar) {
5135
+ const px = clientWidth * (clientWidth / scrollWidth);
5136
+ this._horizontalScrollbar.style.width = `${px}px`;
5137
+ this._scrollLeft = clamp(this._scrollLeft, 0, this.scrollableElement.scrollWidth - clientWidth);
5138
+ this.scrollableElement.scrollLeft = this._scrollLeft;
5139
+ const percentageComplete = this._scrollLeft / (scrollWidth - clientWidth);
5140
+ this._horizontalScrollbar.style.left = `${(clientWidth - px) * percentageComplete}px`;
5141
+ }
5142
+ else {
5143
+ this._horizontalScrollbar.style.width = `0px`;
5144
+ this._horizontalScrollbar.style.left = `0px`;
5145
+ this._scrollLeft = 0;
4951
5146
  }
4952
5147
  }
4953
- hide() {
4954
- this._element.style.display = 'none';
5148
+ }
5149
+ Scrollbar.MouseWheelSpeed = 1;
5150
+
5151
+ class Tabs extends CompositeDisposable {
5152
+ get showTabsOverflowControl() {
5153
+ return this._showTabsOverflowControl;
4955
5154
  }
4956
- setRightActionsElement(element) {
4957
- if (this.rightActions === element) {
5155
+ set showTabsOverflowControl(value) {
5156
+ if (this._showTabsOverflowControl == value) {
4958
5157
  return;
4959
5158
  }
4960
- if (this.rightActions) {
4961
- this.rightActions.remove();
4962
- this.rightActions = undefined;
4963
- }
4964
- if (element) {
4965
- this.rightActionsContainer.appendChild(element);
4966
- this.rightActions = element;
5159
+ this._showTabsOverflowControl = value;
5160
+ if (value) {
5161
+ const observer = new OverflowObserver(this._tabsList);
5162
+ this._observerDisposable.value = new CompositeDisposable(observer, observer.onDidChange((event) => {
5163
+ const hasOverflow = event.hasScrollX || event.hasScrollY;
5164
+ this.toggleDropdown({ reset: !hasOverflow });
5165
+ }), addDisposableListener(this._tabsList, 'scroll', () => {
5166
+ this.toggleDropdown({ reset: false });
5167
+ }));
4967
5168
  }
4968
5169
  }
4969
- setLeftActionsElement(element) {
4970
- if (this.leftActions === element) {
4971
- return;
4972
- }
4973
- if (this.leftActions) {
4974
- this.leftActions.remove();
4975
- this.leftActions = undefined;
4976
- }
4977
- if (element) {
4978
- this.leftActionsContainer.appendChild(element);
4979
- this.leftActions = element;
5170
+ get element() {
5171
+ return this._element;
5172
+ }
5173
+ get panels() {
5174
+ return this._tabs.map((_) => _.value.panel.id);
5175
+ }
5176
+ get size() {
5177
+ return this._tabs.length;
5178
+ }
5179
+ get tabs() {
5180
+ return this._tabs.map((_) => _.value);
5181
+ }
5182
+ constructor(group, accessor, options) {
5183
+ super();
5184
+ this.group = group;
5185
+ this.accessor = accessor;
5186
+ this._observerDisposable = new MutableDisposable();
5187
+ this._tabs = [];
5188
+ this.selectedIndex = -1;
5189
+ this._showTabsOverflowControl = false;
5190
+ this._onTabDragStart = new Emitter();
5191
+ this.onTabDragStart = this._onTabDragStart.event;
5192
+ this._onDrop = new Emitter();
5193
+ this.onDrop = this._onDrop.event;
5194
+ this._onWillShowOverlay = new Emitter();
5195
+ this.onWillShowOverlay = this._onWillShowOverlay.event;
5196
+ this._onOverflowTabsChange = new Emitter();
5197
+ this.onOverflowTabsChange = this._onOverflowTabsChange.event;
5198
+ this._tabsList = document.createElement('div');
5199
+ this._tabsList.className = 'dv-tabs-container dv-horizontal';
5200
+ this.showTabsOverflowControl = options.showTabsOverflowControl;
5201
+ const scrollbar = new Scrollbar(this._tabsList);
5202
+ this._element = scrollbar.element;
5203
+ this.addDisposables(this._onOverflowTabsChange, this._observerDisposable, scrollbar, this._onWillShowOverlay, this._onDrop, this._onTabDragStart, addDisposableListener(this.element, 'pointerdown', (event) => {
5204
+ if (event.defaultPrevented) {
5205
+ return;
5206
+ }
5207
+ const isLeftClick = event.button === 0;
5208
+ if (isLeftClick) {
5209
+ this.accessor.doSetGroupActive(this.group);
5210
+ }
5211
+ }), Disposable.from(() => {
5212
+ for (const { value, disposable } of this._tabs) {
5213
+ disposable.dispose();
5214
+ value.dispose();
5215
+ }
5216
+ this._tabs = [];
5217
+ }));
5218
+ }
5219
+ indexOf(id) {
5220
+ return this._tabs.findIndex((tab) => tab.value.panel.id === id);
5221
+ }
5222
+ isActive(tab) {
5223
+ return (this.selectedIndex > -1 &&
5224
+ this._tabs[this.selectedIndex].value === tab);
5225
+ }
5226
+ setActivePanel(panel) {
5227
+ let runningWidth = 0;
5228
+ for (const tab of this._tabs) {
5229
+ const isActivePanel = panel.id === tab.value.panel.id;
5230
+ tab.value.setActive(isActivePanel);
5231
+ if (isActivePanel) {
5232
+ const element = tab.value.element;
5233
+ const parentElement = element.parentElement;
5234
+ if (runningWidth < parentElement.scrollLeft ||
5235
+ runningWidth + element.clientWidth >
5236
+ parentElement.scrollLeft + parentElement.clientWidth) {
5237
+ parentElement.scrollLeft = runningWidth;
5238
+ }
5239
+ }
5240
+ runningWidth += tab.value.element.clientWidth;
4980
5241
  }
4981
5242
  }
4982
- setPrefixActionsElement(element) {
4983
- if (this.preActions === element) {
5243
+ openPanel(panel, index = this._tabs.length) {
5244
+ if (this._tabs.find((tab) => tab.value.panel.id === panel.id)) {
4984
5245
  return;
4985
5246
  }
4986
- if (this.preActions) {
4987
- this.preActions.remove();
4988
- this.preActions = undefined;
5247
+ const tab = new Tab(panel, this.accessor, this.group);
5248
+ tab.setContent(panel.view.tab);
5249
+ const disposable = new CompositeDisposable(tab.onDragStart((event) => {
5250
+ this._onTabDragStart.fire({ nativeEvent: event, panel });
5251
+ }), tab.onPointerDown((event) => {
5252
+ if (event.defaultPrevented) {
5253
+ return;
5254
+ }
5255
+ const isFloatingGroupsEnabled = !this.accessor.options.disableFloatingGroups;
5256
+ const isFloatingWithOnePanel = this.group.api.location.type === 'floating' &&
5257
+ this.size === 1;
5258
+ if (isFloatingGroupsEnabled &&
5259
+ !isFloatingWithOnePanel &&
5260
+ event.shiftKey) {
5261
+ event.preventDefault();
5262
+ const panel = this.accessor.getGroupPanel(tab.panel.id);
5263
+ const { top, left } = tab.element.getBoundingClientRect();
5264
+ const { top: rootTop, left: rootLeft } = this.accessor.element.getBoundingClientRect();
5265
+ this.accessor.addFloatingGroup(panel, {
5266
+ x: left - rootLeft,
5267
+ y: top - rootTop,
5268
+ inDragMode: true,
5269
+ });
5270
+ return;
5271
+ }
5272
+ switch (event.button) {
5273
+ case 0: // left click or touch
5274
+ if (this.group.activePanel !== panel) {
5275
+ this.group.model.openPanel(panel);
5276
+ }
5277
+ break;
5278
+ }
5279
+ }), tab.onDrop((event) => {
5280
+ this._onDrop.fire({
5281
+ event: event.nativeEvent,
5282
+ index: this._tabs.findIndex((x) => x.value === tab),
5283
+ });
5284
+ }), tab.onWillShowOverlay((event) => {
5285
+ this._onWillShowOverlay.fire(new WillShowOverlayLocationEvent(event, {
5286
+ kind: 'tab',
5287
+ panel: this.group.activePanel,
5288
+ api: this.accessor.api,
5289
+ group: this.group,
5290
+ getData: getPanelData,
5291
+ }));
5292
+ }));
5293
+ const value = { value: tab, disposable };
5294
+ this.addTab(value, index);
5295
+ }
5296
+ delete(id) {
5297
+ const index = this.indexOf(id);
5298
+ const tabToRemove = this._tabs.splice(index, 1)[0];
5299
+ const { value, disposable } = tabToRemove;
5300
+ disposable.dispose();
5301
+ value.dispose();
5302
+ value.element.remove();
5303
+ }
5304
+ addTab(tab, index = this._tabs.length) {
5305
+ if (index < 0 || index > this._tabs.length) {
5306
+ throw new Error('invalid location');
4989
5307
  }
4990
- if (element) {
4991
- this.preActionsContainer.appendChild(element);
4992
- this.preActions = element;
5308
+ this._tabsList.insertBefore(tab.value.element, this._tabsList.children[index]);
5309
+ this._tabs = [
5310
+ ...this._tabs.slice(0, index),
5311
+ tab,
5312
+ ...this._tabs.slice(index),
5313
+ ];
5314
+ if (this.selectedIndex < 0) {
5315
+ this.selectedIndex = index;
4993
5316
  }
4994
5317
  }
4995
- get element() {
4996
- return this._element;
5318
+ toggleDropdown(options) {
5319
+ const tabs = options.reset
5320
+ ? []
5321
+ : this._tabs
5322
+ .filter((tab) => !isChildEntirelyVisibleWithinParent(tab.value.element, this._tabsList))
5323
+ .map((x) => x.value.panel.id);
5324
+ this._onOverflowTabsChange.fire({ tabs, reset: options.reset });
4997
5325
  }
4998
- isActive(tab) {
4999
- return (this.selectedIndex > -1 &&
5000
- this.tabs[this.selectedIndex].value === tab);
5326
+ }
5327
+
5328
+ const createSvgElementFromPath = (params) => {
5329
+ const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
5330
+ svg.setAttributeNS(null, 'height', params.height);
5331
+ svg.setAttributeNS(null, 'width', params.width);
5332
+ svg.setAttributeNS(null, 'viewBox', params.viewbox);
5333
+ svg.setAttributeNS(null, 'aria-hidden', 'false');
5334
+ svg.setAttributeNS(null, 'focusable', 'false');
5335
+ svg.classList.add('dv-svg');
5336
+ const path = document.createElementNS('http://www.w3.org/2000/svg', 'path');
5337
+ path.setAttributeNS(null, 'd', params.path);
5338
+ svg.appendChild(path);
5339
+ return svg;
5340
+ };
5341
+ const createCloseButton = () => createSvgElementFromPath({
5342
+ width: '11',
5343
+ height: '11',
5344
+ viewbox: '0 0 28 28',
5345
+ path: 'M2.1 27.3L0 25.2L11.55 13.65L0 2.1L2.1 0L13.65 11.55L25.2 0L27.3 2.1L15.75 13.65L27.3 25.2L25.2 27.3L13.65 15.75L2.1 27.3Z',
5346
+ });
5347
+ const createExpandMoreButton = () => createSvgElementFromPath({
5348
+ width: '11',
5349
+ height: '11',
5350
+ viewbox: '0 0 24 15',
5351
+ path: 'M12 14.15L0 2.15L2.15 0L12 9.9L21.85 0.0499992L24 2.2L12 14.15Z',
5352
+ });
5353
+ const createChevronRightButton = () => createSvgElementFromPath({
5354
+ width: '11',
5355
+ height: '11',
5356
+ viewbox: '0 0 15 25',
5357
+ path: 'M2.15 24.1L0 21.95L9.9 12.05L0 2.15L2.15 0L14.2 12.05L2.15 24.1Z',
5358
+ });
5359
+
5360
+ function createDropdownElementHandle() {
5361
+ const el = document.createElement('div');
5362
+ el.className = 'dv-tabs-overflow-dropdown-default';
5363
+ const text = document.createElement('span');
5364
+ text.textContent = ``;
5365
+ const icon = createChevronRightButton();
5366
+ el.appendChild(icon);
5367
+ el.appendChild(text);
5368
+ return {
5369
+ element: el,
5370
+ update: (params) => {
5371
+ text.textContent = `${params.tabs}`;
5372
+ },
5373
+ };
5374
+ }
5375
+
5376
+ class TabsContainer extends CompositeDisposable {
5377
+ get onTabDragStart() {
5378
+ return this.tabs.onTabDragStart;
5001
5379
  }
5002
- indexOf(id) {
5003
- return this.tabs.findIndex((tab) => tab.value.panel.id === id);
5380
+ get panels() {
5381
+ return this.tabs.panels;
5382
+ }
5383
+ get size() {
5384
+ return this.tabs.size;
5385
+ }
5386
+ get hidden() {
5387
+ return this._hidden;
5388
+ }
5389
+ set hidden(value) {
5390
+ this._hidden = value;
5391
+ this.element.style.display = value ? 'none' : '';
5392
+ }
5393
+ get element() {
5394
+ return this._element;
5004
5395
  }
5005
5396
  constructor(accessor, group) {
5006
5397
  super();
5007
5398
  this.accessor = accessor;
5008
5399
  this.group = group;
5009
- this.tabs = [];
5010
- this.selectedIndex = -1;
5011
5400
  this._hidden = false;
5401
+ this.dropdownPart = null;
5402
+ this._overflowTabs = [];
5403
+ this._dropdownDisposable = new MutableDisposable();
5012
5404
  this._onDrop = new Emitter();
5013
5405
  this.onDrop = this._onDrop.event;
5014
- this._onTabDragStart = new Emitter();
5015
- this.onTabDragStart = this._onTabDragStart.event;
5016
5406
  this._onGroupDragStart = new Emitter();
5017
5407
  this.onGroupDragStart = this._onGroupDragStart.event;
5018
5408
  this._onWillShowOverlay = new Emitter();
@@ -5026,15 +5416,21 @@ class TabsContainer extends CompositeDisposable {
5026
5416
  this.leftActionsContainer.className = 'dv-left-actions-container';
5027
5417
  this.preActionsContainer = document.createElement('div');
5028
5418
  this.preActionsContainer.className = 'dv-pre-actions-container';
5029
- this.tabContainer = document.createElement('div');
5030
- this.tabContainer.className = 'dv-tabs-container';
5419
+ this.tabs = new Tabs(group, accessor, {
5420
+ showTabsOverflowControl: !accessor.options.disableTabsOverflowList,
5421
+ });
5031
5422
  this.voidContainer = new VoidContainer(this.accessor, this.group);
5032
5423
  this._element.appendChild(this.preActionsContainer);
5033
- this._element.appendChild(this.tabContainer);
5424
+ this._element.appendChild(this.tabs.element);
5034
5425
  this._element.appendChild(this.leftActionsContainer);
5035
5426
  this._element.appendChild(this.voidContainer.element);
5036
5427
  this._element.appendChild(this.rightActionsContainer);
5037
- this.addDisposables(this._onWillShowOverlay, this._onDrop, this._onTabDragStart, this._onGroupDragStart, this.voidContainer, this.voidContainer.onDragStart((event) => {
5428
+ this.addDisposables(accessor.onDidOptionsChange(() => {
5429
+ this.tabs.showTabsOverflowControl =
5430
+ !accessor.options.disableTabsOverflowList;
5431
+ }), this.tabs.onOverflowTabsChange((event) => {
5432
+ this.toggleDropdown(event);
5433
+ }), this.tabs, this._onWillShowOverlay, this._onDrop, this._onGroupDragStart, this.voidContainer, this.voidContainer.onDragStart((event) => {
5038
5434
  this._onGroupDragStart.fire({
5039
5435
  nativeEvent: event,
5040
5436
  group: this.group,
@@ -5042,7 +5438,7 @@ class TabsContainer extends CompositeDisposable {
5042
5438
  }), this.voidContainer.onDrop((event) => {
5043
5439
  this._onDrop.fire({
5044
5440
  event: event.nativeEvent,
5045
- index: this.tabs.length,
5441
+ index: this.tabs.size,
5046
5442
  });
5047
5443
  }), this.voidContainer.onWillShowOverlay((event) => {
5048
5444
  this._onWillShowOverlay.fire(new WillShowOverlayLocationEvent(event, {
@@ -5052,133 +5448,149 @@ class TabsContainer extends CompositeDisposable {
5052
5448
  group: this.group,
5053
5449
  getData: getPanelData,
5054
5450
  }));
5055
- }), addDisposableListener(this.voidContainer.element, 'pointerdown', (event) => {
5056
- const isFloatingGroupsEnabled = !this.accessor.options.disableFloatingGroups;
5057
- if (isFloatingGroupsEnabled &&
5058
- event.shiftKey &&
5059
- this.group.api.location.type !== 'floating') {
5060
- event.preventDefault();
5061
- const { top, left } = this.element.getBoundingClientRect();
5062
- const { top: rootTop, left: rootLeft } = this.accessor.element.getBoundingClientRect();
5063
- this.accessor.addFloatingGroup(this.group, {
5064
- x: left - rootLeft + 20,
5065
- y: top - rootTop + 20,
5066
- inDragMode: true,
5067
- });
5068
- }
5069
- }), addDisposableListener(this.tabContainer, 'pointerdown', (event) => {
5070
- if (event.defaultPrevented) {
5071
- return;
5072
- }
5073
- const isLeftClick = event.button === 0;
5074
- if (isLeftClick) {
5075
- this.accessor.doSetGroupActive(this.group);
5076
- }
5077
- }));
5078
- }
5079
- setActive(_isGroupActive) {
5080
- // noop
5081
- }
5082
- delete(id) {
5083
- const index = this.tabs.findIndex((tab) => tab.value.panel.id === id);
5084
- const tabToRemove = this.tabs.splice(index, 1)[0];
5085
- if (!tabToRemove) {
5086
- throw new Error(`dockview: Tab not found`);
5087
- }
5088
- const { value, disposable } = tabToRemove;
5089
- disposable.dispose();
5090
- value.dispose();
5091
- value.element.remove();
5092
- this.updateClassnames();
5093
- }
5094
- setActivePanel(panel) {
5095
- this.tabs.forEach((tab) => {
5096
- const isActivePanel = panel.id === tab.value.panel.id;
5097
- tab.value.setActive(isActivePanel);
5098
- });
5099
- }
5100
- openPanel(panel, index = this.tabs.length) {
5101
- if (this.tabs.find((tab) => tab.value.panel.id === panel.id)) {
5102
- return;
5103
- }
5104
- const tab = new Tab(panel, this.accessor, this.group);
5105
- tab.setContent(panel.view.tab);
5106
- const disposable = new CompositeDisposable(tab.onDragStart((event) => {
5107
- this._onTabDragStart.fire({ nativeEvent: event, panel });
5108
- }), tab.onPointerDown((event) => {
5451
+ }), addDisposableListener(this.voidContainer.element, 'pointerdown', (event) => {
5109
5452
  if (event.defaultPrevented) {
5110
5453
  return;
5111
5454
  }
5112
5455
  const isFloatingGroupsEnabled = !this.accessor.options.disableFloatingGroups;
5113
- const isFloatingWithOnePanel = this.group.api.location.type === 'floating' &&
5114
- this.size === 1;
5115
5456
  if (isFloatingGroupsEnabled &&
5116
- !isFloatingWithOnePanel &&
5117
- event.shiftKey) {
5457
+ event.shiftKey &&
5458
+ this.group.api.location.type !== 'floating') {
5118
5459
  event.preventDefault();
5119
- const panel = this.accessor.getGroupPanel(tab.panel.id);
5120
- const { top, left } = tab.element.getBoundingClientRect();
5460
+ const { top, left } = this.element.getBoundingClientRect();
5121
5461
  const { top: rootTop, left: rootLeft } = this.accessor.element.getBoundingClientRect();
5122
- this.accessor.addFloatingGroup(panel, {
5123
- x: left - rootLeft,
5124
- y: top - rootTop,
5462
+ this.accessor.addFloatingGroup(this.group, {
5463
+ x: left - rootLeft + 20,
5464
+ y: top - rootTop + 20,
5125
5465
  inDragMode: true,
5126
5466
  });
5127
- return;
5128
- }
5129
- switch (event.button) {
5130
- case 0: // left click or touch
5131
- if (this.group.activePanel !== panel) {
5132
- this.group.model.openPanel(panel);
5133
- }
5134
- break;
5135
5467
  }
5136
- }), tab.onDrop((event) => {
5137
- this._onDrop.fire({
5138
- event: event.nativeEvent,
5139
- index: this.tabs.findIndex((x) => x.value === tab),
5140
- });
5141
- }), tab.onWillShowOverlay((event) => {
5142
- this._onWillShowOverlay.fire(new WillShowOverlayLocationEvent(event, {
5143
- kind: 'tab',
5144
- panel: this.group.activePanel,
5145
- api: this.accessor.api,
5146
- group: this.group,
5147
- getData: getPanelData,
5148
- }));
5149
5468
  }));
5150
- const value = { value: tab, disposable };
5151
- this.addTab(value, index);
5152
5469
  }
5153
- closePanel(panel) {
5154
- this.delete(panel.id);
5470
+ show() {
5471
+ if (!this.hidden) {
5472
+ this.element.style.display = '';
5473
+ }
5155
5474
  }
5156
- dispose() {
5157
- super.dispose();
5158
- for (const { value, disposable } of this.tabs) {
5159
- disposable.dispose();
5160
- value.dispose();
5475
+ hide() {
5476
+ this._element.style.display = 'none';
5477
+ }
5478
+ setRightActionsElement(element) {
5479
+ if (this.rightActions === element) {
5480
+ return;
5481
+ }
5482
+ if (this.rightActions) {
5483
+ this.rightActions.remove();
5484
+ this.rightActions = undefined;
5485
+ }
5486
+ if (element) {
5487
+ this.rightActionsContainer.appendChild(element);
5488
+ this.rightActions = element;
5161
5489
  }
5162
- this.tabs = [];
5163
5490
  }
5164
- addTab(tab, index = this.tabs.length) {
5165
- if (index < 0 || index > this.tabs.length) {
5166
- throw new Error('invalid location');
5491
+ setLeftActionsElement(element) {
5492
+ if (this.leftActions === element) {
5493
+ return;
5167
5494
  }
5168
- this.tabContainer.insertBefore(tab.value.element, this.tabContainer.children[index]);
5169
- this.tabs = [
5170
- ...this.tabs.slice(0, index),
5171
- tab,
5172
- ...this.tabs.slice(index),
5173
- ];
5174
- if (this.selectedIndex < 0) {
5175
- this.selectedIndex = index;
5495
+ if (this.leftActions) {
5496
+ this.leftActions.remove();
5497
+ this.leftActions = undefined;
5498
+ }
5499
+ if (element) {
5500
+ this.leftActionsContainer.appendChild(element);
5501
+ this.leftActions = element;
5502
+ }
5503
+ }
5504
+ setPrefixActionsElement(element) {
5505
+ if (this.preActions === element) {
5506
+ return;
5507
+ }
5508
+ if (this.preActions) {
5509
+ this.preActions.remove();
5510
+ this.preActions = undefined;
5511
+ }
5512
+ if (element) {
5513
+ this.preActionsContainer.appendChild(element);
5514
+ this.preActions = element;
5176
5515
  }
5516
+ }
5517
+ isActive(tab) {
5518
+ return this.tabs.isActive(tab);
5519
+ }
5520
+ indexOf(id) {
5521
+ return this.tabs.indexOf(id);
5522
+ }
5523
+ setActive(_isGroupActive) {
5524
+ // noop
5525
+ }
5526
+ delete(id) {
5527
+ this.tabs.delete(id);
5528
+ this.updateClassnames();
5529
+ }
5530
+ setActivePanel(panel) {
5531
+ this.tabs.setActivePanel(panel);
5532
+ }
5533
+ openPanel(panel, index = this.tabs.size) {
5534
+ this.tabs.openPanel(panel, index);
5177
5535
  this.updateClassnames();
5178
5536
  }
5537
+ closePanel(panel) {
5538
+ this.delete(panel.id);
5539
+ }
5179
5540
  updateClassnames() {
5180
5541
  toggleClass(this._element, 'dv-single-tab', this.size === 1);
5181
5542
  }
5543
+ toggleDropdown(options) {
5544
+ const tabs = options.reset ? [] : options.tabs;
5545
+ this._overflowTabs = tabs;
5546
+ if (this._overflowTabs.length > 0 && this.dropdownPart) {
5547
+ this.dropdownPart.update({ tabs: tabs.length });
5548
+ return;
5549
+ }
5550
+ if (this._overflowTabs.length === 0) {
5551
+ this._dropdownDisposable.dispose();
5552
+ return;
5553
+ }
5554
+ const root = document.createElement('div');
5555
+ root.className = 'dv-tabs-overflow-dropdown-root';
5556
+ const part = createDropdownElementHandle();
5557
+ part.update({ tabs: tabs.length });
5558
+ this.dropdownPart = part;
5559
+ root.appendChild(part.element);
5560
+ this.rightActionsContainer.prepend(root);
5561
+ this._dropdownDisposable.value = new CompositeDisposable(Disposable.from(() => {
5562
+ var _a, _b;
5563
+ root.remove();
5564
+ (_b = (_a = this.dropdownPart) === null || _a === void 0 ? void 0 : _a.dispose) === null || _b === void 0 ? void 0 : _b.call(_a);
5565
+ this.dropdownPart = null;
5566
+ }), addDisposableListener(root, 'pointerdown', (event) => {
5567
+ event.preventDefault();
5568
+ }, { capture: true }), addDisposableListener(root, 'click', (event) => {
5569
+ const el = document.createElement('div');
5570
+ el.style.overflow = 'auto';
5571
+ el.className = 'dv-tabs-overflow-container';
5572
+ for (const tab of this.tabs.tabs.filter((tab) => this._overflowTabs.includes(tab.panel.id))) {
5573
+ const panelObject = this.group.panels.find((panel) => panel === tab.panel);
5574
+ const tabComponent = panelObject.view.createTabRenderer('headerOverflow');
5575
+ const child = tabComponent.element;
5576
+ const wrapper = document.createElement('div');
5577
+ toggleClass(wrapper, 'dv-tab', true);
5578
+ toggleClass(wrapper, 'dv-active-tab', panelObject.api.isActive);
5579
+ toggleClass(wrapper, 'dv-inactive-tab', !panelObject.api.isActive);
5580
+ wrapper.addEventListener('mousedown', () => {
5581
+ this.accessor.popupService.close();
5582
+ tab.element.scrollIntoView();
5583
+ tab.panel.api.setActive();
5584
+ });
5585
+ wrapper.appendChild(child);
5586
+ el.appendChild(wrapper);
5587
+ }
5588
+ this.accessor.popupService.openPopover(el, {
5589
+ x: event.clientX,
5590
+ y: event.clientY,
5591
+ });
5592
+ }));
5593
+ }
5182
5594
  }
5183
5595
 
5184
5596
  class DockviewUnhandledDragOverEvent extends AcceptableEvent {
@@ -5208,9 +5620,11 @@ const PROPERTY_KEYS_DOCKVIEW = (() => {
5208
5620
  rootOverlayModel: undefined,
5209
5621
  locked: undefined,
5210
5622
  disableDnd: undefined,
5211
- gap: undefined,
5212
5623
  className: undefined,
5213
5624
  noPanelsOverlay: undefined,
5625
+ dndEdges: undefined,
5626
+ theme: undefined,
5627
+ disableTabsOverflowList: undefined,
5214
5628
  };
5215
5629
  return Object.keys(properties);
5216
5630
  })();
@@ -5389,6 +5803,7 @@ class DockviewGroupPanelModel extends CompositeDisposable {
5389
5803
  this._location = { type: 'grid' };
5390
5804
  this.mostRecentlyUsed = [];
5391
5805
  this._overwriteRenderContainer = null;
5806
+ this._overwriteDropTargetContainer = null;
5392
5807
  this._onDidChange = new Emitter();
5393
5808
  this.onDidChange = this._onDidChange.event;
5394
5809
  this._width = 0;
@@ -5466,6 +5881,13 @@ class DockviewGroupPanelModel extends CompositeDisposable {
5466
5881
  var _a;
5467
5882
  return ((_a = this._overwriteRenderContainer) !== null && _a !== void 0 ? _a : this.accessor.overlayRenderContainer);
5468
5883
  }
5884
+ set dropTargetContainer(value) {
5885
+ this._overwriteDropTargetContainer = value;
5886
+ }
5887
+ get dropTargetContainer() {
5888
+ var _a;
5889
+ return ((_a = this._overwriteDropTargetContainer) !== null && _a !== void 0 ? _a : this.accessor.rootDropTargetContainer);
5890
+ }
5469
5891
  initialize() {
5470
5892
  if (this.options.panels) {
5471
5893
  this.options.panels.forEach((panel) => {
@@ -5814,6 +6236,25 @@ class DockviewGroupPanelModel extends CompositeDisposable {
5814
6236
  }
5815
6237
  const data = getPanelData();
5816
6238
  if (data && data.viewId === this.accessor.id) {
6239
+ if (type === 'content') {
6240
+ if (data.groupId === this.id) {
6241
+ // don't allow to drop on self for center position
6242
+ if (position === 'center') {
6243
+ return;
6244
+ }
6245
+ if (data.panelId === null) {
6246
+ // don't allow group move to drop anywhere on self
6247
+ return;
6248
+ }
6249
+ }
6250
+ }
6251
+ if (type === 'header') {
6252
+ if (data.groupId === this.id) {
6253
+ if (data.panelId === null) {
6254
+ return;
6255
+ }
6256
+ }
6257
+ }
5817
6258
  if (data.panelId === null) {
5818
6259
  // this is a group move dnd event
5819
6260
  const { groupId } = data;
@@ -6242,6 +6683,46 @@ class DockviewGroupPanel extends GridviewPanel {
6242
6683
  }
6243
6684
  }
6244
6685
 
6686
+ const themeDark = {
6687
+ name: 'dark',
6688
+ className: 'dockview-theme-dark',
6689
+ };
6690
+ const themeLight = {
6691
+ name: 'light',
6692
+ className: 'dockview-theme-light',
6693
+ };
6694
+ const themeVisualStudio = {
6695
+ name: 'visualStudio',
6696
+ className: 'dockview-theme-vs',
6697
+ };
6698
+ const themeAbyss = {
6699
+ name: 'abyss',
6700
+ className: 'dockview-theme-abyss',
6701
+ };
6702
+ const themeDracula = {
6703
+ name: 'dracula',
6704
+ className: 'dockview-theme-dracula',
6705
+ };
6706
+ const themeReplit = {
6707
+ name: 'replit',
6708
+ className: 'dockview-theme-replit',
6709
+ gap: 10,
6710
+ };
6711
+ const themeAbyssSpaced = {
6712
+ name: 'abyssSpaced',
6713
+ className: 'dockview-theme-abyss-spaced',
6714
+ gap: 10,
6715
+ dndOverlayMounting: 'absolute',
6716
+ dndPanelOverlay: 'group',
6717
+ };
6718
+ const themeLightSpaced = {
6719
+ name: 'lightSpaced',
6720
+ className: 'dockview-theme-light-spaced',
6721
+ gap: 10,
6722
+ dndOverlayMounting: 'absolute',
6723
+ dndPanelOverlay: 'group',
6724
+ };
6725
+
6245
6726
  class DockviewPanelApiImpl extends GridviewPanelApiImpl {
6246
6727
  get location() {
6247
6728
  return this.group.api.location;
@@ -6516,38 +6997,6 @@ class DockviewPanel extends CompositeDisposable {
6516
6997
  }
6517
6998
  }
6518
6999
 
6519
- const createSvgElementFromPath = (params) => {
6520
- const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
6521
- svg.setAttributeNS(null, 'height', params.height);
6522
- svg.setAttributeNS(null, 'width', params.width);
6523
- svg.setAttributeNS(null, 'viewBox', params.viewbox);
6524
- svg.setAttributeNS(null, 'aria-hidden', 'false');
6525
- svg.setAttributeNS(null, 'focusable', 'false');
6526
- svg.classList.add('dv-svg');
6527
- const path = document.createElementNS('http://www.w3.org/2000/svg', 'path');
6528
- path.setAttributeNS(null, 'd', params.path);
6529
- svg.appendChild(path);
6530
- return svg;
6531
- };
6532
- const createCloseButton = () => createSvgElementFromPath({
6533
- width: '11',
6534
- height: '11',
6535
- viewbox: '0 0 28 28',
6536
- path: 'M2.1 27.3L0 25.2L11.55 13.65L0 2.1L2.1 0L13.65 11.55L25.2 0L27.3 2.1L15.75 13.65L27.3 25.2L25.2 27.3L13.65 15.75L2.1 27.3Z',
6537
- });
6538
- const createExpandMoreButton = () => createSvgElementFromPath({
6539
- width: '11',
6540
- height: '11',
6541
- viewbox: '0 0 24 15',
6542
- path: 'M12 14.15L0 2.15L2.15 0L12 9.9L21.85 0.0499992L24 2.2L12 14.15Z',
6543
- });
6544
- const createChevronRightButton = () => createSvgElementFromPath({
6545
- width: '11',
6546
- height: '11',
6547
- viewbox: '0 0 15 25',
6548
- path: 'M2.15 24.1L0 21.95L9.9 12.05L0 2.15L2.15 0L14.2 12.05L2.15 24.1Z',
6549
- });
6550
-
6551
7000
  class DefaultTab extends CompositeDisposable {
6552
7001
  get element() {
6553
7002
  return this._element;
@@ -6604,12 +7053,21 @@ class DockviewPanelModel {
6604
7053
  this._content = this.createContentComponent(this.id, contentComponent);
6605
7054
  this._tab = this.createTabComponent(this.id, tabComponent);
6606
7055
  }
7056
+ createTabRenderer(tabLocation) {
7057
+ var _a;
7058
+ const cmp = this.createTabComponent(this.id, this.tabComponent);
7059
+ if (this._params) {
7060
+ cmp.init(Object.assign(Object.assign({}, this._params), { tabLocation }));
7061
+ }
7062
+ if (this._updateEvent) {
7063
+ (_a = cmp.update) === null || _a === void 0 ? void 0 : _a.call(cmp, this._updateEvent);
7064
+ }
7065
+ return cmp;
7066
+ }
6607
7067
  init(params) {
7068
+ this._params = params;
6608
7069
  this.content.init(params);
6609
- this.tab.init(params);
6610
- }
6611
- updateParentGroup(_group, _isPanelVisible) {
6612
- // noop
7070
+ this.tab.init(Object.assign(Object.assign({}, params), { tabLocation: 'header' }));
6613
7071
  }
6614
7072
  layout(width, height) {
6615
7073
  var _a, _b;
@@ -6617,6 +7075,7 @@ class DockviewPanelModel {
6617
7075
  }
6618
7076
  update(event) {
6619
7077
  var _a, _b, _c, _d;
7078
+ this._updateEvent = event;
6620
7079
  (_b = (_a = this.content).update) === null || _b === void 0 ? void 0 : _b.call(_a, event);
6621
7080
  (_d = (_c = this.tab).update) === null || _d === void 0 ? void 0 : _d.call(_c, event);
6622
7081
  }
@@ -7477,6 +7936,132 @@ class StrictEventsSequencing extends CompositeDisposable {
7477
7936
  }
7478
7937
  }
7479
7938
 
7939
+ class PopupService extends CompositeDisposable {
7940
+ constructor(root) {
7941
+ super();
7942
+ this.root = root;
7943
+ this._active = null;
7944
+ this._activeDisposable = new MutableDisposable();
7945
+ this._element = document.createElement('div');
7946
+ this._element.className = 'dv-popover-anchor';
7947
+ this._element.style.position = 'relative';
7948
+ this.root.prepend(this._element);
7949
+ this.addDisposables(Disposable.from(() => {
7950
+ this.close();
7951
+ }), this._activeDisposable);
7952
+ }
7953
+ openPopover(element, position) {
7954
+ this.close();
7955
+ const wrapper = document.createElement('div');
7956
+ wrapper.style.position = 'absolute';
7957
+ wrapper.style.zIndex = '99';
7958
+ wrapper.appendChild(element);
7959
+ const anchorBox = this._element.getBoundingClientRect();
7960
+ const offsetX = anchorBox.left;
7961
+ const offsetY = anchorBox.top;
7962
+ wrapper.style.top = `${position.y - offsetY}px`;
7963
+ wrapper.style.left = `${position.x - offsetX}px`;
7964
+ this._element.appendChild(wrapper);
7965
+ this._active = wrapper;
7966
+ this._activeDisposable.value = new CompositeDisposable(addDisposableWindowListener(window, 'pointerdown', (event) => {
7967
+ var _a;
7968
+ const target = event.target;
7969
+ if (!(target instanceof HTMLElement)) {
7970
+ return;
7971
+ }
7972
+ let el = target;
7973
+ while (el && el !== wrapper) {
7974
+ el = (_a = el === null || el === void 0 ? void 0 : el.parentElement) !== null && _a !== void 0 ? _a : null;
7975
+ }
7976
+ if (el) {
7977
+ return; // clicked within popover
7978
+ }
7979
+ this.close();
7980
+ }));
7981
+ }
7982
+ close() {
7983
+ if (this._active) {
7984
+ this._active.remove();
7985
+ this._activeDisposable.dispose();
7986
+ this._active = null;
7987
+ }
7988
+ }
7989
+ }
7990
+
7991
+ class DropTargetAnchorContainer extends CompositeDisposable {
7992
+ get disabled() {
7993
+ return this._disabled;
7994
+ }
7995
+ set disabled(value) {
7996
+ var _a;
7997
+ if (this.disabled === value) {
7998
+ return;
7999
+ }
8000
+ this._disabled = value;
8001
+ if (value) {
8002
+ (_a = this.model) === null || _a === void 0 ? void 0 : _a.clear();
8003
+ }
8004
+ }
8005
+ get model() {
8006
+ if (this.disabled) {
8007
+ return undefined;
8008
+ }
8009
+ return {
8010
+ clear: () => {
8011
+ var _a;
8012
+ if (this._model) {
8013
+ (_a = this._model.root.parentElement) === null || _a === void 0 ? void 0 : _a.removeChild(this._model.root);
8014
+ }
8015
+ this._model = undefined;
8016
+ },
8017
+ exists: () => {
8018
+ return !!this._model;
8019
+ },
8020
+ getElements: (event, outline) => {
8021
+ const changed = this._outline !== outline;
8022
+ this._outline = outline;
8023
+ if (this._model) {
8024
+ this._model.changed = changed;
8025
+ return this._model;
8026
+ }
8027
+ const container = this.createContainer();
8028
+ const anchor = this.createAnchor();
8029
+ this._model = { root: container, overlay: anchor, changed };
8030
+ container.appendChild(anchor);
8031
+ this.element.appendChild(container);
8032
+ if ((event === null || event === void 0 ? void 0 : event.target) instanceof HTMLElement) {
8033
+ const targetBox = event.target.getBoundingClientRect();
8034
+ const box = this.element.getBoundingClientRect();
8035
+ anchor.style.left = `${targetBox.left - box.left}px`;
8036
+ anchor.style.top = `${targetBox.top - box.top}px`;
8037
+ }
8038
+ return this._model;
8039
+ },
8040
+ };
8041
+ }
8042
+ constructor(element, options) {
8043
+ super();
8044
+ this.element = element;
8045
+ this._disabled = false;
8046
+ this._disabled = options.disabled;
8047
+ this.addDisposables(Disposable.from(() => {
8048
+ var _a;
8049
+ (_a = this.model) === null || _a === void 0 ? void 0 : _a.clear();
8050
+ }));
8051
+ }
8052
+ createContainer() {
8053
+ const el = document.createElement('div');
8054
+ el.className = 'dv-drop-target-container';
8055
+ return el;
8056
+ }
8057
+ createAnchor() {
8058
+ const el = document.createElement('div');
8059
+ el.className = 'dv-drop-target-anchor';
8060
+ el.style.visibility = 'hidden';
8061
+ return el;
8062
+ }
8063
+ }
8064
+
7480
8065
  const DEFAULT_ROOT_OVERLAY_MODEL = {
7481
8066
  activationSize: { type: 'pixels', value: 10 },
7482
8067
  size: { type: 'pixels', value: 20 },
@@ -7522,14 +8107,11 @@ class DockviewComponent extends BaseGrid {
7522
8107
  get api() {
7523
8108
  return this._api;
7524
8109
  }
7525
- get gap() {
7526
- return this.gridview.margin;
7527
- }
7528
8110
  get floatingGroups() {
7529
8111
  return this._floatingGroups;
7530
8112
  }
7531
8113
  constructor(container, options) {
7532
- var _a;
8114
+ var _a, _b, _c;
7533
8115
  super(container, {
7534
8116
  proportionalLayout: true,
7535
8117
  orientation: Orientation.HORIZONTAL,
@@ -7538,12 +8120,12 @@ class DockviewComponent extends BaseGrid {
7538
8120
  : undefined,
7539
8121
  disableAutoResizing: options.disableAutoResizing,
7540
8122
  locked: options.locked,
7541
- margin: options.gap,
8123
+ margin: (_b = (_a = options.theme) === null || _a === void 0 ? void 0 : _a.gap) !== null && _b !== void 0 ? _b : 0,
7542
8124
  className: options.className,
7543
8125
  });
7544
8126
  this.nextGroupId = sequentialNumberGenerator();
7545
8127
  this._deserializer = new DefaultDockviewDeserialzier(this);
7546
- this.watermark = null;
8128
+ this._watermark = null;
7547
8129
  this._onWillDragPanel = new Emitter();
7548
8130
  this.onWillDragPanel = this._onWillDragPanel.event;
7549
8131
  this._onWillDragGroup = new Emitter();
@@ -7574,16 +8156,22 @@ class DockviewComponent extends BaseGrid {
7574
8156
  this.onDidRemoveGroup = this._onDidRemoveGroup.event;
7575
8157
  this._onDidAddGroup = new Emitter();
7576
8158
  this.onDidAddGroup = this._onDidAddGroup.event;
8159
+ this._onDidOptionsChange = new Emitter();
8160
+ this.onDidOptionsChange = this._onDidOptionsChange.event;
7577
8161
  this._onDidActiveGroupChange = new Emitter();
7578
8162
  this.onDidActiveGroupChange = this._onDidActiveGroupChange.event;
7579
8163
  this._moving = false;
8164
+ this.popupService = new PopupService(this.element);
8165
+ this.updateDropTargetModel(options);
8166
+ this._themeClassnames = new Classnames(this.element);
8167
+ this.rootDropTargetContainer = new DropTargetAnchorContainer(this.element, { disabled: true });
7580
8168
  this.overlayRenderContainer = new OverlayRenderContainer(this.gridview.element, this);
7581
8169
  toggleClass(this.gridview.element, 'dv-dockview', true);
7582
8170
  toggleClass(this.element, 'dv-debug', !!options.debug);
7583
8171
  if (options.debug) {
7584
8172
  this.addDisposables(new StrictEventsSequencing(this));
7585
8173
  }
7586
- this.addDisposables(this.overlayRenderContainer, this._onWillDragPanel, this._onWillDragGroup, this._onWillShowOverlay, this._onDidActivePanelChange, this._onDidAddPanel, this._onDidRemovePanel, this._onDidLayoutFromJSON, this._onDidDrop, this._onWillDrop, this._onDidMovePanel, this._onDidAddGroup, this._onDidRemoveGroup, this._onDidActiveGroupChange, this._onUnhandledDragOverEvent, this._onDidMaximizedGroupChange, this.onDidViewVisibilityChangeMicroTaskQueue(() => {
8174
+ this.addDisposables(this.rootDropTargetContainer, this.overlayRenderContainer, this._onWillDragPanel, this._onWillDragGroup, this._onWillShowOverlay, this._onDidActivePanelChange, this._onDidAddPanel, this._onDidRemovePanel, this._onDidLayoutFromJSON, this._onDidDrop, this._onWillDrop, this._onDidMovePanel, this._onDidAddGroup, this._onDidRemoveGroup, this._onDidActiveGroupChange, this._onUnhandledDragOverEvent, this._onDidMaximizedGroupChange, this._onDidOptionsChange, this.onDidViewVisibilityChangeMicroTaskQueue(() => {
7587
8175
  this.updateWatermark();
7588
8176
  }), this.onDidAdd((event) => {
7589
8177
  if (!this._moving) {
@@ -7617,7 +8205,9 @@ class DockviewComponent extends BaseGrid {
7617
8205
  }
7618
8206
  }));
7619
8207
  this._options = options;
8208
+ this.updateTheme();
7620
8209
  this._rootDropTarget = new Droptarget(this.element, {
8210
+ className: 'dv-drop-target-edge',
7621
8211
  canDisplayOverlay: (event, position) => {
7622
8212
  const data = getPanelData();
7623
8213
  if (data) {
@@ -7644,7 +8234,8 @@ class DockviewComponent extends BaseGrid {
7644
8234
  return firedEvent.isAccepted;
7645
8235
  },
7646
8236
  acceptedTargetZones: ['top', 'bottom', 'left', 'right', 'center'],
7647
- overlayModel: (_a = this.options.rootOverlayModel) !== null && _a !== void 0 ? _a : DEFAULT_ROOT_OVERLAY_MODEL,
8237
+ overlayModel: (_c = this.options.rootOverlayModel) !== null && _c !== void 0 ? _c : DEFAULT_ROOT_OVERLAY_MODEL,
8238
+ getOverrideTarget: () => { var _a; return (_a = this.rootDropTargetContainer) === null || _a === void 0 ? void 0 : _a.model; },
7648
8239
  });
7649
8240
  this.addDisposables(this._rootDropTarget, this._rootDropTarget.onWillShowOverlay((event) => {
7650
8241
  if (this.gridview.length > 0 && event.position === 'center') {
@@ -7822,6 +8413,10 @@ class DockviewComponent extends BaseGrid {
7822
8413
  popoutContainer.style.overflow = 'hidden';
7823
8414
  popoutContainer.appendChild(gready);
7824
8415
  popoutContainer.appendChild(group.element);
8416
+ const anchor = document.createElement('div');
8417
+ const dropTargetContainer = new DropTargetAnchorContainer(anchor, { disabled: this.rootDropTargetContainer.disabled });
8418
+ popoutContainer.appendChild(anchor);
8419
+ group.model.dropTargetContainer = dropTargetContainer;
7825
8420
  group.model.location = {
7826
8421
  type: 'popout',
7827
8422
  getWindow: () => _window.window,
@@ -7888,6 +8483,8 @@ class DockviewComponent extends BaseGrid {
7888
8483
  else if (this.getPanel(group.id)) {
7889
8484
  group.model.renderContainer =
7890
8485
  this.overlayRenderContainer;
8486
+ group.model.dropTargetContainer =
8487
+ this.rootDropTargetContainer;
7891
8488
  returnedGroup = group;
7892
8489
  const alreadyRemoved = !this._popoutGroups.find((p) => p.popoutGroup === group);
7893
8490
  if (alreadyRemoved) {
@@ -8108,7 +8705,7 @@ class DockviewComponent extends BaseGrid {
8108
8705
  }
8109
8706
  }
8110
8707
  updateOptions(options) {
8111
- var _a, _b, _c, _d;
8708
+ var _a, _b;
8112
8709
  super.updateOptions(options);
8113
8710
  if ('floatingGroupBounds' in options) {
8114
8711
  for (const group of this._floatingGroups) {
@@ -8132,13 +8729,11 @@ class DockviewComponent extends BaseGrid {
8132
8729
  group.overlay.setBounds();
8133
8730
  }
8134
8731
  }
8135
- if ('rootOverlayModel' in options) {
8136
- this._rootDropTarget.setOverlayModel((_c = options.rootOverlayModel) !== null && _c !== void 0 ? _c : DEFAULT_ROOT_OVERLAY_MODEL);
8137
- }
8138
- if ('gap' in options) {
8139
- this.gridview.margin = (_d = options.gap) !== null && _d !== void 0 ? _d : 0;
8140
- }
8732
+ this.updateDropTargetModel(options);
8141
8733
  this._options = Object.assign(Object.assign({}, this.options), options);
8734
+ if ('theme' in options) {
8735
+ this.updateTheme();
8736
+ }
8142
8737
  this.layout(this.gridview.width, this.gridview.height, true);
8143
8738
  }
8144
8739
  layout(width, height, forceResize) {
@@ -8556,22 +9151,22 @@ class DockviewComponent extends BaseGrid {
8556
9151
  updateWatermark() {
8557
9152
  var _a, _b;
8558
9153
  if (this.groups.filter((x) => x.api.location.type === 'grid' && x.api.isVisible).length === 0) {
8559
- if (!this.watermark) {
8560
- this.watermark = this.createWatermarkComponent();
8561
- this.watermark.init({
9154
+ if (!this._watermark) {
9155
+ this._watermark = this.createWatermarkComponent();
9156
+ this._watermark.init({
8562
9157
  containerApi: new DockviewApi(this),
8563
9158
  });
8564
9159
  const watermarkContainer = document.createElement('div');
8565
9160
  watermarkContainer.className = 'dv-watermark-container';
8566
9161
  addTestId(watermarkContainer, 'watermark-component');
8567
- watermarkContainer.appendChild(this.watermark.element);
9162
+ watermarkContainer.appendChild(this._watermark.element);
8568
9163
  this.gridview.element.appendChild(watermarkContainer);
8569
9164
  }
8570
9165
  }
8571
- else if (this.watermark) {
8572
- this.watermark.element.parentElement.remove();
8573
- (_b = (_a = this.watermark).dispose) === null || _b === void 0 ? void 0 : _b.call(_a);
8574
- this.watermark = null;
9166
+ else if (this._watermark) {
9167
+ this._watermark.element.parentElement.remove();
9168
+ (_b = (_a = this._watermark).dispose) === null || _b === void 0 ? void 0 : _b.call(_a);
9169
+ this._watermark = null;
8575
9170
  }
8576
9171
  }
8577
9172
  addGroup(options) {
@@ -9057,6 +9652,38 @@ class DockviewComponent extends BaseGrid {
9057
9652
  ? rootOrientation
9058
9653
  : orthogonal(rootOrientation);
9059
9654
  }
9655
+ updateDropTargetModel(options) {
9656
+ if ('dndEdges' in options) {
9657
+ this._rootDropTarget.disabled =
9658
+ typeof options.dndEdges === 'boolean' &&
9659
+ options.dndEdges === false;
9660
+ if (typeof options.dndEdges === 'object' &&
9661
+ options.dndEdges !== null) {
9662
+ this._rootDropTarget.setOverlayModel(options.dndEdges);
9663
+ }
9664
+ else {
9665
+ this._rootDropTarget.setOverlayModel(DEFAULT_ROOT_OVERLAY_MODEL);
9666
+ }
9667
+ }
9668
+ if ('rootOverlayModel' in options) {
9669
+ this.updateDropTargetModel({ dndEdges: options.dndEdges });
9670
+ }
9671
+ }
9672
+ updateTheme() {
9673
+ var _a, _b;
9674
+ const theme = (_a = this._options.theme) !== null && _a !== void 0 ? _a : themeAbyss;
9675
+ this._themeClassnames.setClassNames(theme.className);
9676
+ this.gridview.margin = (_b = theme.gap) !== null && _b !== void 0 ? _b : 0;
9677
+ switch (theme.dndOverlayMounting) {
9678
+ case 'absolute':
9679
+ this.rootDropTargetContainer.disabled = false;
9680
+ break;
9681
+ case 'relative':
9682
+ default:
9683
+ this.rootDropTargetContainer.disabled = true;
9684
+ break;
9685
+ }
9686
+ }
9060
9687
  }
9061
9688
 
9062
9689
  class GridviewComponent extends BaseGrid {
@@ -9580,6 +10207,7 @@ class SplitviewComponent extends Resizable {
9580
10207
  for (const view of views) {
9581
10208
  view.dispose();
9582
10209
  }
10210
+ this.element.remove();
9583
10211
  super.dispose();
9584
10212
  }
9585
10213
  }
@@ -9920,6 +10548,7 @@ class PaneviewComponent extends Resizable {
9920
10548
  value.dispose();
9921
10549
  }
9922
10550
  this._viewDisposables.clear();
10551
+ this.element.remove();
9923
10552
  this.paneview.dispose();
9924
10553
  }
9925
10554
  }
@@ -10046,5 +10675,5 @@ function createPaneview(element, options) {
10046
10675
  return new PaneviewApi(component);
10047
10676
  }
10048
10677
 
10049
- 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_DOCKVIEW, PROPERTY_KEYS_GRIDVIEW, PROPERTY_KEYS_PANEVIEW, PROPERTY_KEYS_SPLITVIEW, PaneFramework, PaneTransfer, PanelTransfer, Paneview, PaneviewApi, PaneviewComponent, PaneviewPanel, PaneviewUnhandledDragOverEvent, 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 };
10678
+ 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_DOCKVIEW, PROPERTY_KEYS_GRIDVIEW, PROPERTY_KEYS_PANEVIEW, PROPERTY_KEYS_SPLITVIEW, PaneFramework, PaneTransfer, PanelTransfer, Paneview, PaneviewApi, PaneviewComponent, PaneviewPanel, PaneviewUnhandledDragOverEvent, 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, themeAbyss, themeAbyssSpaced, themeDark, themeDracula, themeLight, themeLightSpaced, themeReplit, themeVisualStudio, toTarget };
10050
10679
  //# sourceMappingURL=dockview-core.esm.js.map