dockview 1.4.1 → 1.5.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 (156) hide show
  1. package/README.md +4 -195
  2. package/dist/cjs/api/component.api.d.ts +8 -3
  3. package/dist/cjs/api/component.api.js +16 -4
  4. package/dist/cjs/api/component.api.js.map +1 -1
  5. package/dist/cjs/dnd/droptarget.d.ts +1 -2
  6. package/dist/cjs/dockview/components/tab/defaultTab.d.ts +1 -0
  7. package/dist/cjs/dockview/components/tab/defaultTab.js +6 -3
  8. package/dist/cjs/dockview/components/tab/defaultTab.js.map +1 -1
  9. package/dist/cjs/dockview/components/watermark/watermark.js +3 -1
  10. package/dist/cjs/dockview/components/watermark/watermark.js.map +1 -1
  11. package/dist/cjs/dockview/defaultGroupPanelView.d.ts +1 -5
  12. package/dist/cjs/dockview/defaultGroupPanelView.js +5 -20
  13. package/dist/cjs/dockview/defaultGroupPanelView.js.map +1 -1
  14. package/dist/cjs/dockview/deserializer.d.ts +0 -12
  15. package/dist/cjs/dockview/deserializer.js +0 -52
  16. package/dist/cjs/dockview/deserializer.js.map +1 -1
  17. package/dist/cjs/dockview/dockviewComponent.d.ts +6 -8
  18. package/dist/cjs/dockview/dockviewComponent.js +84 -58
  19. package/dist/cjs/dockview/dockviewComponent.js.map +1 -1
  20. package/dist/cjs/dockview/options.d.ts +11 -1
  21. package/dist/cjs/gridview/baseComponentGridview.d.ts +4 -2
  22. package/dist/cjs/gridview/baseComponentGridview.js +1 -1
  23. package/dist/cjs/gridview/baseComponentGridview.js.map +1 -1
  24. package/dist/cjs/gridview/gridviewComponent.d.ts +1 -0
  25. package/dist/cjs/gridview/gridviewComponent.js +26 -18
  26. package/dist/cjs/gridview/gridviewComponent.js.map +1 -1
  27. package/dist/cjs/groupview/groupview.d.ts +20 -18
  28. package/dist/cjs/groupview/groupview.js +44 -41
  29. package/dist/cjs/groupview/groupview.js.map +1 -1
  30. package/dist/cjs/groupview/groupviewPanel.d.ts +2 -2
  31. package/dist/cjs/groupview/groupviewPanel.js.map +1 -1
  32. package/dist/cjs/groupview/tab.d.ts +1 -0
  33. package/dist/cjs/groupview/tab.js +3 -1
  34. package/dist/cjs/groupview/tab.js.map +1 -1
  35. package/dist/cjs/groupview/titlebar/tabsContainer.d.ts +3 -5
  36. package/dist/cjs/groupview/titlebar/tabsContainer.js +3 -5
  37. package/dist/cjs/groupview/titlebar/tabsContainer.js.map +1 -1
  38. package/dist/cjs/groupview/types.d.ts +0 -4
  39. package/dist/cjs/index.d.ts +2 -0
  40. package/dist/cjs/index.js +1 -0
  41. package/dist/cjs/index.js.map +1 -1
  42. package/dist/cjs/paneview/defaultPaneviewHeader.d.ts +3 -0
  43. package/dist/cjs/paneview/defaultPaneviewHeader.js +32 -6
  44. package/dist/cjs/paneview/defaultPaneviewHeader.js.map +1 -1
  45. package/dist/cjs/paneview/draggablePaneviewPanel.d.ts +3 -1
  46. package/dist/cjs/paneview/draggablePaneviewPanel.js +24 -9
  47. package/dist/cjs/paneview/draggablePaneviewPanel.js.map +1 -1
  48. package/dist/cjs/paneview/options.d.ts +2 -0
  49. package/dist/cjs/paneview/paneviewComponent.d.ts +14 -1
  50. package/dist/cjs/paneview/paneviewComponent.js +32 -17
  51. package/dist/cjs/paneview/paneviewComponent.js.map +1 -1
  52. package/dist/cjs/react/deserializer.js +13 -5
  53. package/dist/cjs/react/deserializer.js.map +1 -1
  54. package/dist/cjs/react/dockview/defaultTab.d.ts +4 -0
  55. package/dist/cjs/react/dockview/defaultTab.js +73 -0
  56. package/dist/cjs/react/dockview/defaultTab.js.map +1 -0
  57. package/dist/cjs/react/dockview/dockview.d.ts +5 -3
  58. package/dist/cjs/react/dockview/dockview.js +45 -3
  59. package/dist/cjs/react/dockview/dockview.js.map +1 -1
  60. package/dist/cjs/react/dockview/groupControlsRenderer.d.ts +43 -0
  61. package/dist/cjs/react/dockview/groupControlsRenderer.js +87 -0
  62. package/dist/cjs/react/dockview/groupControlsRenderer.js.map +1 -0
  63. package/dist/cjs/react/dockview/reactContentPart.d.ts +1 -16
  64. package/dist/cjs/react/dockview/reactContentPart.js +2 -18
  65. package/dist/cjs/react/dockview/reactContentPart.js.map +1 -1
  66. package/dist/cjs/react/dockview/reactHeaderPart.d.ts +2 -0
  67. package/dist/cjs/react/dockview/reactHeaderPart.js +4 -0
  68. package/dist/cjs/react/dockview/reactHeaderPart.js.map +1 -1
  69. package/dist/cjs/react/index.d.ts +2 -2
  70. package/dist/cjs/react/index.js +1 -2
  71. package/dist/cjs/react/index.js.map +1 -1
  72. package/dist/cjs/react/paneview/paneview.d.ts +2 -0
  73. package/dist/cjs/react/paneview/paneview.js +9 -0
  74. package/dist/cjs/react/paneview/paneview.js.map +1 -1
  75. package/dist/cjs/react/react.d.ts +1 -0
  76. package/dist/cjs/react/react.js +12 -2
  77. package/dist/cjs/react/react.js.map +1 -1
  78. package/dist/cjs/react/svg.d.ts +3 -0
  79. package/dist/cjs/react/svg.js +36 -0
  80. package/dist/cjs/react/svg.js.map +1 -0
  81. package/dist/cjs/splitview/splitviewComponent.d.ts +2 -0
  82. package/dist/cjs/splitview/splitviewComponent.js +20 -17
  83. package/dist/cjs/splitview/splitviewComponent.js.map +1 -1
  84. package/dist/cjs/svg.d.ts +3 -0
  85. package/dist/cjs/svg.js +44 -0
  86. package/dist/cjs/svg.js.map +1 -0
  87. package/dist/dockview.amd.js +454 -204
  88. package/dist/dockview.amd.min.js +2 -2
  89. package/dist/dockview.amd.min.noStyle.js +2 -2
  90. package/dist/dockview.amd.noStyle.js +453 -203
  91. package/dist/dockview.cjs.js +454 -204
  92. package/dist/dockview.esm.js +449 -198
  93. package/dist/dockview.esm.min.js +2 -2
  94. package/dist/dockview.js +454 -204
  95. package/dist/dockview.min.js +2 -2
  96. package/dist/dockview.min.noStyle.js +2 -2
  97. package/dist/dockview.noStyle.js +453 -203
  98. package/dist/esm/api/component.api.d.ts +8 -3
  99. package/dist/esm/api/component.api.js +16 -4
  100. package/dist/esm/dnd/droptarget.d.ts +1 -2
  101. package/dist/esm/dockview/components/tab/defaultTab.d.ts +1 -0
  102. package/dist/esm/dockview/components/tab/defaultTab.js +5 -2
  103. package/dist/esm/dockview/components/watermark/watermark.js +3 -1
  104. package/dist/esm/dockview/defaultGroupPanelView.d.ts +1 -5
  105. package/dist/esm/dockview/defaultGroupPanelView.js +5 -16
  106. package/dist/esm/dockview/deserializer.d.ts +0 -12
  107. package/dist/esm/dockview/deserializer.js +1 -27
  108. package/dist/esm/dockview/dockviewComponent.d.ts +6 -8
  109. package/dist/esm/dockview/dockviewComponent.js +56 -41
  110. package/dist/esm/dockview/options.d.ts +11 -1
  111. package/dist/esm/gridview/baseComponentGridview.d.ts +4 -2
  112. package/dist/esm/gridview/baseComponentGridview.js +1 -1
  113. package/dist/esm/gridview/gridviewComponent.d.ts +1 -0
  114. package/dist/esm/gridview/gridviewComponent.js +15 -7
  115. package/dist/esm/groupview/groupview.d.ts +20 -18
  116. package/dist/esm/groupview/groupview.js +42 -40
  117. package/dist/esm/groupview/groupviewPanel.d.ts +2 -2
  118. package/dist/esm/groupview/tab.d.ts +1 -0
  119. package/dist/esm/groupview/tab.js +3 -1
  120. package/dist/esm/groupview/titlebar/tabsContainer.d.ts +3 -5
  121. package/dist/esm/groupview/titlebar/tabsContainer.js +3 -5
  122. package/dist/esm/groupview/types.d.ts +0 -4
  123. package/dist/esm/index.d.ts +2 -0
  124. package/dist/esm/index.js +1 -0
  125. package/dist/esm/paneview/defaultPaneviewHeader.d.ts +3 -0
  126. package/dist/esm/paneview/defaultPaneviewHeader.js +32 -6
  127. package/dist/esm/paneview/draggablePaneviewPanel.d.ts +3 -1
  128. package/dist/esm/paneview/draggablePaneviewPanel.js +24 -9
  129. package/dist/esm/paneview/options.d.ts +2 -0
  130. package/dist/esm/paneview/paneviewComponent.d.ts +14 -1
  131. package/dist/esm/paneview/paneviewComponent.js +17 -6
  132. package/dist/esm/react/deserializer.js +13 -5
  133. package/dist/esm/react/dockview/defaultTab.d.ts +4 -0
  134. package/dist/esm/react/dockview/defaultTab.js +34 -0
  135. package/dist/esm/react/dockview/dockview.d.ts +5 -3
  136. package/dist/esm/react/dockview/dockview.js +30 -1
  137. package/dist/esm/react/dockview/groupControlsRenderer.d.ts +43 -0
  138. package/dist/esm/react/dockview/groupControlsRenderer.js +68 -0
  139. package/dist/esm/react/dockview/reactContentPart.d.ts +1 -16
  140. package/dist/esm/react/dockview/reactContentPart.js +2 -14
  141. package/dist/esm/react/dockview/reactHeaderPart.d.ts +2 -0
  142. package/dist/esm/react/dockview/reactHeaderPart.js +4 -0
  143. package/dist/esm/react/index.d.ts +2 -2
  144. package/dist/esm/react/index.js +1 -2
  145. package/dist/esm/react/paneview/paneview.d.ts +2 -0
  146. package/dist/esm/react/paneview/paneview.js +9 -0
  147. package/dist/esm/react/react.d.ts +1 -0
  148. package/dist/esm/react/react.js +12 -2
  149. package/dist/esm/react/svg.d.ts +3 -0
  150. package/dist/esm/react/svg.js +7 -0
  151. package/dist/esm/splitview/splitviewComponent.d.ts +2 -0
  152. package/dist/esm/splitview/splitviewComponent.js +9 -6
  153. package/dist/esm/svg.d.ts +3 -0
  154. package/dist/esm/svg.js +31 -0
  155. package/dist/styles/dockview.css +158 -40
  156. package/package.json +2 -2
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * dockview
3
- * @version 1.4.1
3
+ * @version 1.5.0
4
4
  * @link https://github.com/mathuo/dockview
5
5
  * @license MIT
6
6
  */
@@ -54,7 +54,7 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
54
54
  }
55
55
  }
56
56
 
57
- var css_248z = ".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-tab-close-icon: url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24\" viewBox=\"0 0 24 24\" width=\"24\"><path d=\"M0 0h24v24H0z\" fill=\"none\"/><path d=\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"/></svg>');\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-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-tab-close-icon: url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24\" viewBox=\"0 0 24 24\" width=\"24\"><path d=\"M0 0h24v24H0z\" fill=\"none\"/><path d=\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"/></svg>');\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-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-tab-close-icon: url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24\" viewBox=\"0 0 24 24\" width=\"24\"><path d=\"M0 0h24v24H0z\" fill=\"none\"/><path d=\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"/></svg>');\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-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-activegroup-visiblepanel-tab-background-color: dodgerblue;\n --dv-tabs-and-actions-container-height: 18px;\n --dv-tabs-and-actions-container-font-size: 11px;\n}\n.dockview-theme-vs .groupview.active-group > .tabs-and-actions-container {\n border-bottom: 2px solid var(--dv-activegroup-visiblepanel-tab-background-color);\n}\n.dockview-theme-vs .groupview.inactive-group > .tabs-and-actions-container {\n border-bottom: 2px solid var(--dv-inactivegroup-visiblepanel-tab-background-color);\n}\n.actions-bar {\n text-align: right;\n width: 28px;\n display: flex;\n align-items: center;\n flex-shrink: 0;\n}\n.actions-bar .actions-container {\n display: flex;\n padding: 0px;\n margin: 0px;\n justify-content: flex-end;\n}\n.actions-bar .actions-container a:active {\n -webkit-mask-size: 100% 100% !important;\n mask-size: 100% 100% !important;\n}\n.actions-bar .actions-container .close-action {\n background-color: white;\n height: 16px;\n width: 16px;\n display: block;\n -webkit-mask: var(--dv-tab-close-icon) 50% 50%/90% 90% no-repeat;\n mask: var(--dv-tab-close-icon) 50% 50%/90% 90% no-repeat;\n margin-right: \"0.5em\";\n cursor: pointer;\n}\n.drop-target {\n position: relative;\n}\n.drop-target > .drop-target-dropzone {\n position: absolute;\n left: 0px;\n top: 0px;\n height: 100%;\n width: 100%;\n z-index: 10000;\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection {\n position: relative;\n box-sizing: border-box;\n height: 100%;\n width: 100%;\n background-color: var(--dv-drag-over-background-color);\n transition: top 70ms ease-out, left 70ms ease-out, width 70ms ease-out, height 70ms ease-out, opacity 0.15s ease-out;\n will-change: transform;\n pointer-events: none;\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection.left {\n transform: translateX(-25%) scaleX(0.5);\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection.right {\n transform: translateX(25%) scaleX(0.5);\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection.top {\n transform: translateY(-25%) scaleY(0.5);\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection.bottom {\n transform: translateY(25%) scaleY(0.5);\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection.small-top {\n border-top: 1px solid var(--dv-drag-over-border-color);\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection.small-bottom {\n border-bottom: 1px solid var(--dv-drag-over-border-color);\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection.small-left {\n border-left: 1px solid var(--dv-drag-over-border-color);\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection.small-right {\n border-right: 1px solid var(--dv-drag-over-border-color);\n}\n.custom-dragging {\n height: 24px;\n line-height: 24px;\n font-size: 11px;\n width: 100px;\n background-color: dodgerblue;\n color: ghostwhite;\n border-radius: 11px;\n position: absolute;\n padding-left: 10px;\n}\n\n.groupview.active-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab {\n background-color: var(--dv-activegroup-visiblepanel-tab-background-color);\n color: var(--dv-activegroup-visiblepanel-tab-color);\n}\n.groupview.active-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab .tab-action {\n background-color: var(--dv-activegroup-visiblepanel-tab-color);\n}\n.groupview.active-group > .tabs-and-actions-container > .tabs-container > .tab.inactive-tab {\n background-color: var(--dv-activegroup-hiddenpanel-tab-background-color);\n color: var(--dv-activegroup-hiddenpanel-tab-color);\n}\n.groupview.active-group > .tabs-and-actions-container > .tabs-container > .tab.inactive-tab .tab-action {\n background-color: var(--dv-activegroup-hiddenpanel-tab-color);\n}\n.groupview.inactive-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab {\n background-color: var(--dv-inactivegroup-visiblepanel-tab-background-color);\n color: var(--dv-inactivegroup-visiblepanel-tab-color);\n}\n.groupview.inactive-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab .tab-action {\n background-color: var(--dv-inactivegroup-visiblepanel-tab-color);\n}\n.groupview.inactive-group > .tabs-and-actions-container > .tabs-container > .tab.inactive-tab {\n background-color: var(--dv-inactivegroup-hiddenpanel-tab-background-color);\n color: var(--dv-inactivegroup-hiddenpanel-tab-color);\n}\n.groupview.inactive-group > .tabs-and-actions-container > .tabs-container > .tab.inactive-tab .tab-action {\n background-color: var(--dv-inactivegroup-hiddenpanel-tab-color);\n}\n\n/**\n * when a tab is dragged we lose the above stylings because they are conditional on parent elements\n * therefore we also set some stylings for the dragging event\n **/\n.tab.dragging {\n background-color: var(--dv-activegroup-visiblepanel-tab-background-color);\n color: var(--dv-activegroup-visiblepanel-tab-color);\n}\n.grid-view,\n.branch-node {\n height: 100%;\n width: 100%;\n}\n.groupview {\n display: flex;\n flex-direction: column;\n height: 100%;\n background-color: var(--dv-group-view-background-color);\n overflow: hidden;\n}\n.groupview:focus {\n outline: none;\n}\n.groupview.empty > .tabs-and-actions-container {\n display: none;\n}\n.groupview > .content-container {\n flex-grow: 1;\n overflow: hidden;\n outline: none;\n}\n.pane-container {\n height: 100%;\n width: 100%;\n}\n.pane-container.animated .view {\n transition-duration: 0.15s;\n transition-timing-function: ease-out;\n}\n.pane-container .view {\n overflow: hidden;\n display: flex;\n flex-direction: column;\n padding: 0px !important;\n}\n.pane-container .view:not(:first-child)::before {\n background-color: transparent !important;\n}\n.pane-container .view:not(:first-child) .pane > .pane-header {\n border-top: 1px solid var(--dv-paneview-header-border-color);\n}\n.pane-container .view .default-header {\n background-color: var(--dv-group-view-background-color);\n color: var(--dv-activegroup-visiblepanel-tab-color);\n display: flex;\n padding: 0px 8px;\n}\n.pane-container .view .default-header > span {\n flex-grow: 1;\n}\n.pane-container:first-of-type > .pane > .pane-header {\n border-top: none !important;\n}\n.pane-container .pane {\n display: flex;\n flex-direction: column;\n overflow: hidden;\n height: 100%;\n}\n.pane-container .pane .pane-header {\n box-sizing: border-box;\n user-select: none;\n position: relative;\n outline: none;\n}\n.pane-container .pane .pane-header.pane-draggable {\n cursor: pointer;\n}\n.pane-container .pane .pane-header:focus:before, .pane-container .pane .pane-header:focus-within:before {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: 5;\n content: \"\";\n pointer-events: none;\n outline: 1px solid;\n outline-width: -1px;\n outline-style: solid;\n outline-offset: -1px;\n outline-color: var(--dv-paneview-active-outline-color);\n}\n.pane-container .pane .pane-body {\n overflow-y: auto;\n overflow-x: hidden;\n flex-grow: 1;\n position: relative;\n outline: none;\n}\n.pane-container .pane .pane-body:focus:before, .pane-container .pane .pane-body:focus-within:before {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: 5;\n content: \"\";\n pointer-events: none;\n outline: 1px solid;\n outline-width: -1px;\n outline-style: solid;\n outline-offset: -1px;\n outline-color: var(--dv-paneview-active-outline-color);\n}\n.tabs-and-actions-container {\n display: flex;\n background-color: var(--dv-tabs-and-actions-container-background-color);\n flex-shrink: 0;\n box-sizing: border-box;\n height: var(--dv-tabs-and-actions-container-height);\n font-size: var(--dv-tabs-and-actions-container-font-size);\n}\n.tabs-and-actions-container.hidden {\n display: none;\n}\n.tabs-and-actions-container .void-container {\n display: flex;\n flex-grow: 1;\n}\n.tabs-and-actions-container .tabs-container {\n display: flex;\n overflow-x: overlay;\n overflow-y: hidden;\n scrollbar-width: thin;\n /* Track */\n /* Handle */\n}\n.tabs-and-actions-container .tabs-container::-webkit-scrollbar {\n height: 3px;\n}\n.tabs-and-actions-container .tabs-container::-webkit-scrollbar-track {\n background: transparent;\n}\n.tabs-and-actions-container .tabs-container::-webkit-scrollbar-thumb {\n background: var(--dv-tabs-container-scrollbar-color);\n}\n.tabs-and-actions-container .tabs-container .tab {\n -webkit-user-drag: element;\n outline: none;\n min-width: 75px;\n cursor: pointer;\n position: relative;\n box-sizing: border-box;\n}\n.tabs-and-actions-container .tabs-container .tab:not(:first-child)::before {\n content: \" \";\n position: absolute;\n top: 0;\n left: 0;\n z-index: 5;\n pointer-events: none;\n background-color: var(--dv-tab-divider-color);\n width: 1px;\n height: 100%;\n}\n.dockview-react-part {\n height: 100%;\n width: 100%;\n}\n.split-view-container {\n position: relative;\n overflow: hidden;\n height: 100%;\n width: 100%;\n}\n.split-view-container.animation .view,\n.split-view-container.animation .sash {\n transition-duration: 0.15s;\n transition-timing-function: ease-out;\n}\n.split-view-container.horizontal {\n height: 100%;\n}\n.split-view-container.horizontal > .sash-container > .sash {\n height: 100%;\n width: 4px;\n}\n.split-view-container.horizontal > .sash-container > .sash.enabled {\n cursor: ew-resize;\n}\n.split-view-container.horizontal > .sash-container > .sash.disabled {\n cursor: default;\n}\n.split-view-container.horizontal > .sash-container > .sash.maximum {\n cursor: w-resize;\n}\n.split-view-container.horizontal > .sash-container > .sash.minimum {\n cursor: e-resize;\n}\n.split-view-container.horizontal > .view-container > .view:not(:first-child)::before {\n height: 100%;\n width: 1px;\n}\n.split-view-container.vertical {\n width: 100%;\n}\n.split-view-container.vertical > .sash-container > .sash {\n width: 100%;\n height: 4px;\n}\n.split-view-container.vertical > .sash-container > .sash.enabled {\n cursor: ns-resize;\n}\n.split-view-container.vertical > .sash-container > .sash.disabled {\n cursor: default;\n}\n.split-view-container.vertical > .sash-container > .sash.maximum {\n cursor: n-resize;\n}\n.split-view-container.vertical > .sash-container > .sash.minimum {\n cursor: s-resize;\n}\n.split-view-container.vertical > .view-container > .view {\n width: 100%;\n}\n.split-view-container.vertical > .view-container > .view:not(:first-child)::before {\n height: 1px;\n width: 100%;\n}\n.split-view-container .sash-container {\n height: 100%;\n width: 100%;\n position: absolute;\n}\n.split-view-container .sash-container .sash {\n position: absolute;\n z-index: 99;\n outline: none;\n}\n.split-view-container .sash-container .sash:active {\n transition: background-color 0.1s ease-in-out;\n background-color: var(--dv-active-sash-color, transparent);\n}\n.split-view-container .sash-container .sash:hover {\n background-color: var(--dv-active-sash-color, transparent);\n transition: background-color 0.1s ease-in-out;\n transition-delay: 0.5s;\n}\n.split-view-container .view-container {\n position: relative;\n height: 100%;\n width: 100%;\n}\n.split-view-container .view-container .view {\n height: 100%;\n box-sizing: border-box;\n overflow: auto;\n position: absolute;\n}\n.split-view-container.separator-border .view:not(:first-child)::before {\n content: \" \";\n position: absolute;\n top: 0;\n left: 0;\n z-index: 5;\n pointer-events: none;\n background-color: var(--dv-separator-border);\n}\n.dragged {\n transform: translate3d(0px, 0px, 0px);\n /* forces tab to be drawn on a separate layer (see https://github.com/microsoft/vscode/issues/18733) */\n}\n\n.tab {\n flex-shrink: 0;\n}\n.tab.dragging .tab-action {\n background-color: var(--dv-activegroup-visiblepanel-tab-color);\n}\n.tab.active-tab > .default-tab .tab-action {\n visibility: visible;\n}\n.tab.inactive-tab > .default-tab .tab-action {\n visibility: hidden;\n}\n.tab.inactive-tab > .default-tab:hover .tab-action {\n visibility: visible;\n}\n.tab .default-tab {\n position: relative;\n height: 100%;\n display: flex;\n min-width: 80px;\n align-items: center;\n padding-left: 10px;\n white-space: nowrap;\n text-overflow: elipsis;\n}\n.tab .default-tab .tab-content {\n flex-grow: 1;\n}\n.tab .default-tab .action-container {\n text-align: right;\n width: 28px;\n display: flex;\n}\n.tab .default-tab .action-container .tab-list {\n display: flex;\n padding: 0px;\n margin: 0px;\n justify-content: flex-end;\n}\n.tab .default-tab .action-container .tab-list a:active:hover {\n -webkit-mask-size: 100% 100% !important;\n mask-size: 100% 100% !important;\n}\n.tab .default-tab .action-container .tab-list .tab-action {\n height: 16px;\n width: 16px;\n display: block;\n -webkit-mask: var(--dv-tab-close-icon) 50% 50%/90% 90% no-repeat;\n mask: var(--dv-tab-close-icon) 50% 50%/90% 90% no-repeat;\n margin-right: \"0.5em\";\n}\n.tab .default-tab .action-container .tab-list .tab-action.disable-close {\n display: none;\n}\n.watermark {\n display: flex;\n width: 100%;\n}\n.watermark.has-actions .watermark-title .actions-bar {\n display: none;\n}\n.watermark .watermark-title {\n height: 35px;\n width: 100%;\n display: flex;\n}\n.watermark .watermark-content {\n flex-grow: 1;\n}";
57
+ var css_248z = ".dockview-svg {\n display: inline-block;\n fill: currentcolor;\n line-height: 1;\n stroke: currentcolor;\n stroke-width: 0;\n}\n.dockview-theme-dark {\n --dv-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-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-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-group-view-background-color: #1e1e1e;\n --dv-tabs-and-actions-container-background-color: #252526;\n --dv-activegroup-visiblepanel-tab-background-color: #1e1e1e;\n --dv-activegroup-hiddenpanel-tab-background-color: #2d2d2d;\n --dv-inactivegroup-visiblepanel-tab-background-color: #1e1e1e;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #2d2d2d;\n --dv-tab-divider-color: #1e1e1e;\n --dv-activegroup-visiblepanel-tab-color: white;\n --dv-activegroup-hiddenpanel-tab-color: #969696;\n --dv-inactivegroup-visiblepanel-tab-color: #8f8f8f;\n --dv-inactivegroup-hiddenpanel-tab-color: #626262;\n --dv-separator-border: rgb(68, 68, 68);\n --dv-paneview-header-border-color: rgba(204, 204, 204, 0.2);\n --dv-tabs-and-actions-container-background-color: #2d2d30;\n --dv-tabs-and-actions-container-height: 20px;\n --dv-tabs-and-actions-container-font-size: 11px;\n --dv-activegroup-visiblepanel-tab-background-color: #007acc;\n --dv-inactivegroup-visiblepanel-tab-background-color: #3f3f46;\n --dv-activegroup-visiblepanel-tab-color: white;\n --dv-activegroup-hiddenpanel-tab-color: white;\n --dv-inactivegroup-visiblepanel-tab-color: white;\n --dv-inactivegroup-hiddenpanel-tab-color: white;\n}\n.dockview-theme-vs .groupview.active-group > .tabs-and-actions-container {\n box-sizing: content-box;\n border-bottom: 2px solid var(--dv-activegroup-visiblepanel-tab-background-color);\n}\n.dockview-theme-vs .groupview.active-group > .tabs-and-actions-container .tab.active-tab {\n border-top: 2px solid var(--dv-activegroup-visiblepanel-tab-background-color);\n}\n.dockview-theme-vs .groupview.active-group > .tabs-and-actions-container .tab.inactive-tab {\n border-top: 2px solid var(--dv-activegroup-hiddenpanel-tab-background-color);\n}\n.dockview-theme-vs .groupview.inactive-group > .tabs-and-actions-container {\n box-sizing: content-box;\n border-bottom: 2px solid var(--dv-inactivegroup-visiblepanel-tab-background-color);\n}\n.dockview-theme-vs .groupview.inactive-group > .tabs-and-actions-container .tab.active-tab {\n border-top: 2px solid var(--dv-inactivegroup-visiblepanel-tab-background-color);\n}\n.dockview-theme-vs .groupview.inactive-group > .tabs-and-actions-container .tab.inactive-tab {\n border-top: 2px solid var(--dv-inactivegroup-hiddenpanel-tab-background-color);\n}\n\n.dockview-theme-abyss {\n --dv-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-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-group-view-background-color: #282a36;\n --dv-tabs-and-actions-container-background-color: #191a21;\n --dv-activegroup-visiblepanel-tab-background-color: #282a36;\n --dv-activegroup-hiddenpanel-tab-background-color: #21222c;\n --dv-inactivegroup-visiblepanel-tab-background-color: #282a36;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #21222c;\n --dv-tab-divider-color: #191a21;\n --dv-activegroup-visiblepanel-tab-color: rgb(248, 248, 242);\n --dv-activegroup-hiddenpanel-tab-color: rgb(98, 114, 164);\n --dv-inactivegroup-visiblepanel-tab-color: rgba(248, 248, 242, 0.5);\n --dv-inactivegroup-hiddenpanel-tab-color: rgba(98, 114, 164, 0.5);\n --dv-separator-border: #bd93f9;\n --dv-paneview-header-border-color: #bd93f9;\n --dv-paneview-active-outline-color: #6272a4;\n}\n.dockview-theme-dracula .groupview.active-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab {\n position: relative;\n}\n.dockview-theme-dracula .groupview.active-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab::after {\n position: absolute;\n left: 0px;\n top: 0px;\n content: \"\";\n width: 100%;\n height: 1px;\n background-color: #94527e;\n z-index: 999;\n}\n.dockview-theme-dracula .groupview.inactive-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab {\n position: relative;\n}\n.dockview-theme-dracula .groupview.inactive-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab::after {\n position: absolute;\n left: 0px;\n bottom: 0px;\n content: \"\";\n width: 100%;\n height: 1px;\n background-color: #5e3d5a;\n z-index: 999;\n}\n.actions-bar {\n text-align: right;\n width: 28px;\n display: flex;\n align-items: center;\n flex-shrink: 0;\n}\n.actions-bar .actions-container {\n display: flex;\n padding: 0px;\n margin: 0px;\n justify-content: flex-end;\n}\n.actions-bar .actions-container .close-action {\n padding: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n cursor: pointer;\n color: var(--dv-activegroup-hiddenpanel-tab-color);\n}\n.actions-bar .actions-container .close-action:hover {\n border-radius: 2px;\n background-color: var(--dv-icon-hover-background-color);\n}\n.drop-target {\n position: relative;\n}\n.drop-target > .drop-target-dropzone {\n position: absolute;\n left: 0px;\n top: 0px;\n height: 100%;\n width: 100%;\n z-index: 10000;\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection {\n position: relative;\n box-sizing: border-box;\n height: 100%;\n width: 100%;\n background-color: var(--dv-drag-over-background-color);\n transition: top 70ms ease-out, left 70ms ease-out, width 70ms ease-out, height 70ms ease-out, opacity 0.15s ease-out;\n will-change: transform;\n pointer-events: none;\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection.left {\n transform: translateX(-25%) scaleX(0.5);\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection.right {\n transform: translateX(25%) scaleX(0.5);\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection.top {\n transform: translateY(-25%) scaleY(0.5);\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection.bottom {\n transform: translateY(25%) scaleY(0.5);\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection.small-top {\n border-top: 1px solid var(--dv-drag-over-border-color);\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection.small-bottom {\n border-bottom: 1px solid var(--dv-drag-over-border-color);\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection.small-left {\n border-left: 1px solid var(--dv-drag-over-border-color);\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection.small-right {\n border-right: 1px solid var(--dv-drag-over-border-color);\n}\n.custom-dragging {\n height: 24px;\n line-height: 24px;\n font-size: 11px;\n width: 100px;\n background-color: dodgerblue;\n color: ghostwhite;\n border-radius: 11px;\n position: absolute;\n padding-left: 10px;\n}\n\n.groupview.active-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab {\n background-color: var(--dv-activegroup-visiblepanel-tab-background-color);\n color: var(--dv-activegroup-visiblepanel-tab-color);\n}\n.groupview.active-group > .tabs-and-actions-container > .tabs-container > .tab.inactive-tab {\n background-color: var(--dv-activegroup-hiddenpanel-tab-background-color);\n color: var(--dv-activegroup-hiddenpanel-tab-color);\n}\n.groupview.inactive-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab {\n background-color: var(--dv-inactivegroup-visiblepanel-tab-background-color);\n color: var(--dv-inactivegroup-visiblepanel-tab-color);\n}\n.groupview.inactive-group > .tabs-and-actions-container > .tabs-container > .tab.inactive-tab {\n background-color: var(--dv-inactivegroup-hiddenpanel-tab-background-color);\n color: var(--dv-inactivegroup-hiddenpanel-tab-color);\n}\n\n/**\n * when a tab is dragged we lose the above stylings because they are conditional on parent elements\n * therefore we also set some stylings for the dragging event\n **/\n.tab.dragging {\n background-color: var(--dv-activegroup-visiblepanel-tab-background-color);\n color: var(--dv-activegroup-visiblepanel-tab-color);\n}\n.grid-view,\n.branch-node {\n height: 100%;\n width: 100%;\n}\n.groupview {\n display: flex;\n flex-direction: column;\n height: 100%;\n background-color: var(--dv-group-view-background-color);\n overflow: hidden;\n}\n.groupview:focus {\n outline: none;\n}\n.groupview.empty > .tabs-and-actions-container {\n display: none;\n}\n.groupview > .content-container {\n flex-grow: 1;\n overflow: hidden;\n outline: none;\n}\n.pane-container {\n height: 100%;\n width: 100%;\n}\n.pane-container.animated .view {\n transition-duration: 0.15s;\n transition-timing-function: ease-out;\n}\n.pane-container .view {\n overflow: hidden;\n display: flex;\n flex-direction: column;\n padding: 0px !important;\n}\n.pane-container .view:not(:first-child)::before {\n background-color: transparent !important;\n}\n.pane-container .view:not(:first-child) .pane > .pane-header {\n border-top: 1px solid var(--dv-paneview-header-border-color);\n}\n.pane-container .view .default-header {\n background-color: var(--dv-group-view-background-color);\n color: var(--dv-activegroup-visiblepanel-tab-color);\n display: flex;\n padding: 0px 8px;\n cursor: pointer;\n}\n.pane-container .view .default-header .dockview-pane-header-icon {\n display: flex;\n justify-content: center;\n align-items: center;\n}\n.pane-container .view .default-header > span {\n padding-left: 8px;\n flex-grow: 1;\n}\n.pane-container:first-of-type > .pane > .pane-header {\n border-top: none !important;\n}\n.pane-container .pane {\n display: flex;\n flex-direction: column;\n overflow: hidden;\n height: 100%;\n}\n.pane-container .pane .pane-header {\n box-sizing: border-box;\n user-select: none;\n position: relative;\n outline: none;\n}\n.pane-container .pane .pane-header.pane-draggable {\n cursor: pointer;\n}\n.pane-container .pane .pane-header:focus:before, .pane-container .pane .pane-header:focus-within:before {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: 5;\n content: \"\";\n pointer-events: none;\n outline: 1px solid;\n outline-width: -1px;\n outline-style: solid;\n outline-offset: -1px;\n outline-color: var(--dv-paneview-active-outline-color);\n}\n.pane-container .pane .pane-body {\n overflow-y: auto;\n overflow-x: hidden;\n flex-grow: 1;\n position: relative;\n outline: none;\n}\n.pane-container .pane .pane-body:focus:before, .pane-container .pane .pane-body:focus-within:before {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: 5;\n content: \"\";\n pointer-events: none;\n outline: 1px solid;\n outline-width: -1px;\n outline-style: solid;\n outline-offset: -1px;\n outline-color: var(--dv-paneview-active-outline-color);\n}\n.tabs-and-actions-container {\n display: flex;\n background-color: var(--dv-tabs-and-actions-container-background-color);\n flex-shrink: 0;\n box-sizing: border-box;\n height: var(--dv-tabs-and-actions-container-height);\n font-size: var(--dv-tabs-and-actions-container-font-size);\n}\n.tabs-and-actions-container.hidden {\n display: none;\n}\n.tabs-and-actions-container .void-container {\n display: flex;\n flex-grow: 1;\n}\n.tabs-and-actions-container .tabs-container {\n display: flex;\n overflow-x: overlay;\n overflow-y: hidden;\n scrollbar-width: thin;\n /* Track */\n /* Handle */\n}\n.tabs-and-actions-container .tabs-container::-webkit-scrollbar {\n height: 3px;\n}\n.tabs-and-actions-container .tabs-container::-webkit-scrollbar-track {\n background: transparent;\n}\n.tabs-and-actions-container .tabs-container::-webkit-scrollbar-thumb {\n background: var(--dv-tabs-container-scrollbar-color);\n}\n.tabs-and-actions-container .tabs-container .tab {\n -webkit-user-drag: element;\n outline: none;\n min-width: 75px;\n cursor: pointer;\n position: relative;\n box-sizing: border-box;\n}\n.tabs-and-actions-container .tabs-container .tab:not(:first-child)::before {\n content: \" \";\n position: absolute;\n top: 0;\n left: 0;\n z-index: 5;\n pointer-events: none;\n background-color: var(--dv-tab-divider-color);\n width: 1px;\n height: 100%;\n}\n.tab .dockview-react-tab {\n display: flex;\n padding: 0px 8px;\n align-items: center;\n height: 100%;\n}\n.tab .dockview-react-tab .dockview-react-tab-title {\n padding: 0px 8px;\n flex-grow: 1;\n}\n.tab .dockview-react-tab .dockview-react-tab-action {\n padding: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n}\n.tab .dockview-react-tab .dockview-react-tab-action:hover {\n border-radius: 2px;\n background-color: var(--dv-icon-hover-background-color);\n}\n.tab.inactive-tab:not(:hover) .dockview-react-tab-action {\n visibility: hidden;\n}\n.dockview-react-part {\n height: 100%;\n width: 100%;\n}\n.split-view-container {\n position: relative;\n overflow: hidden;\n height: 100%;\n width: 100%;\n}\n.split-view-container.animation .view,\n.split-view-container.animation .sash {\n transition-duration: 0.15s;\n transition-timing-function: ease-out;\n}\n.split-view-container.horizontal {\n height: 100%;\n}\n.split-view-container.horizontal > .sash-container > .sash {\n height: 100%;\n width: 4px;\n}\n.split-view-container.horizontal > .sash-container > .sash.enabled {\n cursor: ew-resize;\n}\n.split-view-container.horizontal > .sash-container > .sash.disabled {\n cursor: default;\n}\n.split-view-container.horizontal > .sash-container > .sash.maximum {\n cursor: w-resize;\n}\n.split-view-container.horizontal > .sash-container > .sash.minimum {\n cursor: e-resize;\n}\n.split-view-container.horizontal > .view-container > .view:not(:first-child)::before {\n height: 100%;\n width: 1px;\n}\n.split-view-container.vertical {\n width: 100%;\n}\n.split-view-container.vertical > .sash-container > .sash {\n width: 100%;\n height: 4px;\n}\n.split-view-container.vertical > .sash-container > .sash.enabled {\n cursor: ns-resize;\n}\n.split-view-container.vertical > .sash-container > .sash.disabled {\n cursor: default;\n}\n.split-view-container.vertical > .sash-container > .sash.maximum {\n cursor: n-resize;\n}\n.split-view-container.vertical > .sash-container > .sash.minimum {\n cursor: s-resize;\n}\n.split-view-container.vertical > .view-container > .view {\n width: 100%;\n}\n.split-view-container.vertical > .view-container > .view:not(:first-child)::before {\n height: 1px;\n width: 100%;\n}\n.split-view-container .sash-container {\n height: 100%;\n width: 100%;\n position: absolute;\n}\n.split-view-container .sash-container .sash {\n position: absolute;\n z-index: 99;\n outline: none;\n}\n.split-view-container .sash-container .sash:active {\n transition: background-color 0.1s ease-in-out;\n background-color: var(--dv-active-sash-color, transparent);\n}\n.split-view-container .sash-container .sash:hover {\n background-color: var(--dv-active-sash-color, transparent);\n transition: background-color 0.1s ease-in-out;\n transition-delay: 0.5s;\n}\n.split-view-container .view-container {\n position: relative;\n height: 100%;\n width: 100%;\n}\n.split-view-container .view-container .view {\n height: 100%;\n box-sizing: border-box;\n overflow: auto;\n position: absolute;\n}\n.split-view-container.separator-border .view:not(:first-child)::before {\n content: \" \";\n position: absolute;\n top: 0;\n left: 0;\n z-index: 5;\n pointer-events: none;\n background-color: var(--dv-separator-border);\n}\n.dragged {\n transform: translate3d(0px, 0px, 0px);\n /* forces tab to be drawn on a separate layer (see https://github.com/microsoft/vscode/issues/18733) */\n}\n\n.tab {\n flex-shrink: 0;\n}\n.tab.dragging .tab-action {\n background-color: var(--dv-activegroup-visiblepanel-tab-color);\n}\n.tab.active-tab > .default-tab .tab-action {\n visibility: visible;\n}\n.tab.inactive-tab > .default-tab .tab-action {\n visibility: hidden;\n}\n.tab.inactive-tab > .default-tab:hover .tab-action {\n visibility: visible;\n}\n.tab .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: elipsis;\n}\n.tab .default-tab .tab-content {\n padding: 0px 8px;\n flex-grow: 1;\n}\n.tab .default-tab .action-container {\n text-align: right;\n display: flex;\n}\n.tab .default-tab .action-container .tab-list {\n display: flex;\n padding: 0px;\n margin: 0px;\n justify-content: flex-end;\n}\n.tab .default-tab .action-container .tab-list .tab-action {\n padding: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n}\n.tab .default-tab .action-container .tab-list .tab-action:hover {\n border-radius: 2px;\n background-color: var(--dv-icon-hover-background-color);\n}\n.tab .default-tab .action-container .tab-list .tab-action.disable-close {\n display: none;\n}\n.watermark {\n display: flex;\n width: 100%;\n}\n.watermark.has-actions .watermark-title .actions-bar {\n display: none;\n}\n.watermark .watermark-title {\n height: 35px;\n width: 100%;\n display: flex;\n}\n.watermark .watermark-content {\n flex-grow: 1;\n}";
58
58
  styleInject(css_248z);
59
59
 
60
60
  class TransferObject {
@@ -2324,6 +2324,9 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
2324
2324
  toJSON() {
2325
2325
  return this.component.toJSON();
2326
2326
  }
2327
+ clear() {
2328
+ this.component.clear();
2329
+ }
2327
2330
  }
2328
2331
  class PaneviewApi {
2329
2332
  constructor(component) {
@@ -2391,6 +2394,9 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
2391
2394
  toJSON() {
2392
2395
  return this.component.toJSON();
2393
2396
  }
2397
+ clear() {
2398
+ this.component.clear();
2399
+ }
2394
2400
  }
2395
2401
  class GridviewApi {
2396
2402
  constructor(component) {
@@ -2417,13 +2423,13 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
2417
2423
  get onDidLayoutChange() {
2418
2424
  return this.component.onDidLayoutChange;
2419
2425
  }
2420
- get onDidAddGroup() {
2426
+ get onDidAddPanel() {
2421
2427
  return this.component.onDidAddGroup;
2422
2428
  }
2423
- get onDidRemoveGroup() {
2429
+ get onDidRemovePanel() {
2424
2430
  return this.component.onDidRemoveGroup;
2425
2431
  }
2426
- get onDidActiveGroupChange() {
2432
+ get onDidActivePanelChange() {
2427
2433
  return this.component.onDidActiveGroupChange;
2428
2434
  }
2429
2435
  get onDidLayoutFromJSON() {
@@ -2462,6 +2468,9 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
2462
2468
  toJSON() {
2463
2469
  return this.component.toJSON();
2464
2470
  }
2471
+ clear() {
2472
+ this.component.clear();
2473
+ }
2465
2474
  }
2466
2475
  class DockviewApi {
2467
2476
  constructor(component) {
@@ -2510,7 +2519,7 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
2510
2519
  return this.component.onDidRemovePanel;
2511
2520
  }
2512
2521
  get onDidLayoutFromJSON() {
2513
- return this.component.onDidLayoutfromJSON;
2522
+ return this.component.onDidLayoutFromJSON;
2514
2523
  }
2515
2524
  get onDidLayoutChange() {
2516
2525
  return this.component.onDidLayoutChange;
@@ -2572,6 +2581,9 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
2572
2581
  toJSON() {
2573
2582
  return this.component.toJSON();
2574
2583
  }
2584
+ clear() {
2585
+ this.component.clear();
2586
+ }
2575
2587
  }
2576
2588
 
2577
2589
  class ContentContainer extends CompositeDisposable {
@@ -2645,12 +2657,12 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
2645
2657
  }
2646
2658
  }
2647
2659
 
2648
- var DockviewDropTargets;
2660
+ exports.DockviewDropTargets = void 0;
2649
2661
  (function (DockviewDropTargets) {
2650
2662
  DockviewDropTargets[DockviewDropTargets["Tab"] = 0] = "Tab";
2651
2663
  DockviewDropTargets[DockviewDropTargets["Panel"] = 1] = "Panel";
2652
2664
  DockviewDropTargets[DockviewDropTargets["TabContainer"] = 2] = "TabContainer";
2653
- })(DockviewDropTargets || (DockviewDropTargets = {}));
2665
+ })(exports.DockviewDropTargets || (exports.DockviewDropTargets = {}));
2654
2666
 
2655
2667
  class DragHandler extends CompositeDisposable {
2656
2668
  constructor(el) {
@@ -2696,6 +2708,7 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
2696
2708
  constructor(panelId, accessor, group) {
2697
2709
  super();
2698
2710
  this.panelId = panelId;
2711
+ this.accessor = accessor;
2699
2712
  this.group = group;
2700
2713
  this._onChanged = new Emitter();
2701
2714
  this.onChanged = this._onChanged.event;
@@ -2706,6 +2719,7 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
2706
2719
  this._element.className = 'tab';
2707
2720
  this._element.tabIndex = 0;
2708
2721
  this._element.draggable = true;
2722
+ toggleClass(this.element, 'inactive-tab', true);
2709
2723
  this.addDisposables(new (class Handler extends DragHandler {
2710
2724
  constructor() {
2711
2725
  super(...arguments);
@@ -2745,10 +2759,10 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
2745
2759
  validOverlays: 'none',
2746
2760
  canDisplayOverlay: (event) => {
2747
2761
  const data = getPanelData();
2748
- if (data) {
2762
+ if (data && this.accessor.id === data.viewId) {
2749
2763
  return this.panelId !== data.panelId;
2750
2764
  }
2751
- return this.group.model.canDisplayOverlay(event, DockviewDropTargets.Tab);
2765
+ return this.group.model.canDisplayOverlay(event, exports.DockviewDropTargets.Tab);
2752
2766
  },
2753
2767
  });
2754
2768
  this.addDisposables(this.droptarget.onDrop((event) => {
@@ -2782,7 +2796,6 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
2782
2796
  this.group = group;
2783
2797
  this.tabs = [];
2784
2798
  this.selectedIndex = -1;
2785
- this.active = false;
2786
2799
  this._hidden = false;
2787
2800
  this._onDrop = new Emitter();
2788
2801
  this.onDrop = this._onDrop.event;
@@ -2804,11 +2817,11 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
2804
2817
  canDisplayOverlay: (event) => {
2805
2818
  var _a;
2806
2819
  const data = getPanelData();
2807
- if (data) {
2820
+ if (data && this.accessor.id === data.viewId) {
2808
2821
  // don't show the overlay if the tab being dragged is the last panel of this group
2809
2822
  return ((_a = last(this.tabs)) === null || _a === void 0 ? void 0 : _a.value.panelId) !== data.panelId;
2810
2823
  }
2811
- return group.model.canDisplayOverlay(event, DockviewDropTargets.Panel);
2824
+ return group.model.canDisplayOverlay(event, exports.DockviewDropTargets.Panel);
2812
2825
  },
2813
2826
  });
2814
2827
  this.addDisposables(this.voidDropTarget.onDrop((event) => {
@@ -2886,8 +2899,8 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
2886
2899
  indexOf(id) {
2887
2900
  return this.tabs.findIndex((tab) => tab.value.panelId === id);
2888
2901
  }
2889
- setActive(isGroupActive) {
2890
- this.active = isGroupActive;
2902
+ setActive(_isGroupActive) {
2903
+ // noop
2891
2904
  }
2892
2905
  addTab(tab, index = this.tabs.length) {
2893
2906
  if (index < 0 || index > this.tabs.length) {
@@ -2948,7 +2961,6 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
2948
2961
  }));
2949
2962
  const value = { value: tabToAdd, disposable };
2950
2963
  this.addTab(value, index);
2951
- this.activePanel = panel;
2952
2964
  }
2953
2965
  closePanel(panel) {
2954
2966
  this.delete(panel.id);
@@ -2962,12 +2974,6 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
2962
2974
  }
2963
2975
  }
2964
2976
 
2965
- exports.GroupChangeKind2 = void 0;
2966
- (function (GroupChangeKind2) {
2967
- GroupChangeKind2["ADD_PANEL"] = "ADD_PANEL";
2968
- GroupChangeKind2["REMOVE_PANEL"] = "REMOVE_PANEL";
2969
- GroupChangeKind2["PANEL_ACTIVE"] = "PANEL_ACTIVE";
2970
- })(exports.GroupChangeKind2 || (exports.GroupChangeKind2 = {}));
2971
2977
  class Groupview extends CompositeDisposable {
2972
2978
  constructor(container, accessor, id, options, parent) {
2973
2979
  super();
@@ -2986,12 +2992,15 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
2986
2992
  this._panels = [];
2987
2993
  this._onMove = new Emitter();
2988
2994
  this.onMove = this._onMove.event;
2989
- this._onDidGroupChange = new Emitter();
2990
- this.onDidGroupChange = this._onDidGroupChange.event;
2991
2995
  this._onDidDrop = new Emitter();
2992
2996
  this.onDidDrop = this._onDidDrop.event;
2997
+ this._onDidAddPanel = new Emitter();
2998
+ this.onDidAddPanel = this._onDidAddPanel.event;
2999
+ this._onDidRemovePanel = new Emitter();
3000
+ this.onDidRemovePanel = this._onDidRemovePanel.event;
3001
+ this._onDidActivePanelChange = new Emitter();
3002
+ this.onDidActivePanelChange = this._onDidActivePanelChange.event;
2993
3003
  this.container.classList.add('groupview');
2994
- this.addDisposables(this._onMove, this._onDidGroupChange, this._onDidChange, this._onDidDrop);
2995
3004
  this.tabsContainer = new TabsContainer(this.accessor, this.parent, {
2996
3005
  tabHeight: options.tabHeight,
2997
3006
  });
@@ -3003,17 +3012,17 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
3003
3012
  return false;
3004
3013
  }
3005
3014
  const data = getPanelData();
3006
- if (data) {
3015
+ if (data && data.viewId === this.accessor.id) {
3007
3016
  const groupHasOnePanelAndIsActiveDragElement = this._panels.length === 1 && data.groupId === this.id;
3008
3017
  return !groupHasOnePanelAndIsActiveDragElement;
3009
3018
  }
3010
- return this.canDisplayOverlay(event, DockviewDropTargets.Panel);
3019
+ return this.canDisplayOverlay(event, exports.DockviewDropTargets.Panel);
3011
3020
  },
3012
3021
  });
3013
3022
  container.append(this.tabsContainer.element, this.contentContainer.element);
3014
3023
  this.header.hidden = !!options.hideHeader;
3015
3024
  this.locked = !!options.locked;
3016
- this.addDisposables(this._onMove, this._onDidGroupChange, this.tabsContainer.onDrop((event) => {
3025
+ this.addDisposables(this._onMove, this._onDidChange, this._onDidDrop, this._onDidAddPanel, this._onDidRemovePanel, this._onDidActivePanelChange, this.tabsContainer.onDrop((event) => {
3017
3026
  this.handleDropEvent(event.event, exports.Position.Center, event.index);
3018
3027
  }), this.contentContainer.onDidFocus(() => {
3019
3028
  this.accessor.doSetGroupActive(this.parent, true);
@@ -3085,6 +3094,15 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
3085
3094
  // correctly initialized
3086
3095
  this.setActive(this.isActive, true, true);
3087
3096
  this.updateContainer();
3097
+ if (this.accessor.options.createGroupControlElement) {
3098
+ this._control = this.accessor.options.createGroupControlElement(this.parent);
3099
+ this.addDisposables(this._control);
3100
+ this._control.init({
3101
+ containerApi: new DockviewApi(this.accessor),
3102
+ api: this.parent.api,
3103
+ });
3104
+ this.tabsContainer.setActionElement(this._control.element);
3105
+ }
3088
3106
  }
3089
3107
  indexOf(panel) {
3090
3108
  return this.tabsContainer.indexOf(panel.id);
@@ -3165,16 +3183,21 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
3165
3183
  options.index > this.panels.length) {
3166
3184
  options.index = this.panels.length;
3167
3185
  }
3168
- const skipSetActive = !!options.skipSetActive;
3186
+ const skipSetPanelActive = !!options.skipSetPanelActive;
3187
+ const skipSetGroupActive = !!options.skipSetGroupActive;
3169
3188
  // ensure the group is updated before we fire any events
3170
3189
  panel.updateParentGroup(this.parent, true);
3171
- if (!skipSetActive && this._activePanel === panel) {
3172
- this.accessor.doSetGroupActive(this.parent);
3190
+ if (this._activePanel === panel) {
3191
+ if (!skipSetGroupActive) {
3192
+ this.accessor.doSetGroupActive(this.parent);
3193
+ }
3173
3194
  return;
3174
3195
  }
3175
- this.doAddPanel(panel, options.index);
3176
- if (!skipSetActive) {
3196
+ this.doAddPanel(panel, options.index, skipSetPanelActive);
3197
+ if (!skipSetPanelActive) {
3177
3198
  this.doSetActivePanel(panel);
3199
+ }
3200
+ if (!skipSetGroupActive) {
3178
3201
  this.accessor.doSetGroupActive(this.parent, !!options.skipFocus);
3179
3202
  }
3180
3203
  this.updateContainer();
@@ -3210,14 +3233,8 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
3210
3233
  isPanelActive(panel) {
3211
3234
  return this._activePanel === panel;
3212
3235
  }
3213
- updateActions() {
3214
- var _a, _b;
3215
- if (this.isActive && ((_b = (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.view) === null || _b === void 0 ? void 0 : _b.actions)) {
3216
- this.tabsContainer.setActionElement(this._activePanel.view.actions.element);
3217
- }
3218
- else {
3219
- this.tabsContainer.setActionElement(undefined);
3220
- }
3236
+ updateActions(element) {
3237
+ this.tabsContainer.setActionElement(element);
3221
3238
  }
3222
3239
  setActive(isGroupActive, skipFocus = false, force = false) {
3223
3240
  var _a, _b;
@@ -3273,16 +3290,15 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
3273
3290
  if (this.mostRecentlyUsed.includes(panel)) {
3274
3291
  this.mostRecentlyUsed.splice(this.mostRecentlyUsed.indexOf(panel), 1);
3275
3292
  }
3276
- this._onDidGroupChange.fire({
3277
- kind: exports.GroupChangeKind2.REMOVE_PANEL,
3278
- panel,
3279
- });
3293
+ this._onDidRemovePanel.fire({ panel });
3280
3294
  }
3281
- doAddPanel(panel, index = this.panels.length) {
3295
+ doAddPanel(panel, index = this.panels.length, skipSetActive = false) {
3282
3296
  const existingPanel = this._panels.indexOf(panel);
3283
3297
  const hasExistingPanel = existingPanel > -1;
3284
3298
  this.tabsContainer.openPanel(panel, index);
3285
- this.contentContainer.openPanel(panel);
3299
+ if (!skipSetActive) {
3300
+ this.contentContainer.openPanel(panel);
3301
+ }
3286
3302
  this.tabsContainer.show();
3287
3303
  this.contentContainer.show();
3288
3304
  if (hasExistingPanel) {
@@ -3291,10 +3307,7 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
3291
3307
  }
3292
3308
  this.updateMru(panel);
3293
3309
  this.panels.splice(index, 0, panel);
3294
- this._onDidGroupChange.fire({
3295
- kind: exports.GroupChangeKind2.ADD_PANEL,
3296
- panel,
3297
- });
3310
+ this._onDidAddPanel.fire({ panel });
3298
3311
  }
3299
3312
  doSetActivePanel(panel) {
3300
3313
  this._activePanel = panel;
@@ -3302,10 +3315,7 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
3302
3315
  this.tabsContainer.setActivePanel(panel);
3303
3316
  panel.layout(this._width, this._height);
3304
3317
  this.updateMru(panel);
3305
- this._onDidGroupChange.fire({
3306
- kind: exports.GroupChangeKind2.PANEL_ACTIVE,
3307
- panel,
3308
- });
3318
+ this._onDidActivePanelChange.fire({ panel });
3309
3319
  }
3310
3320
  }
3311
3321
  updateMru(panel) {
@@ -3315,7 +3325,6 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
3315
3325
  this.mostRecentlyUsed = [panel, ...this.mostRecentlyUsed];
3316
3326
  }
3317
3327
  updateContainer() {
3318
- this.updateActions();
3319
3328
  toggleClass(this.container, 'empty', this.isEmpty);
3320
3329
  this.panels.forEach((panel) => panel.updateParentGroup(this.parent, this.isActive));
3321
3330
  if (this.isEmpty && !this.watermark) {
@@ -3348,7 +3357,12 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
3348
3357
  canDisplayOverlay(event, target) {
3349
3358
  // custom overlay handler
3350
3359
  if (this.accessor.options.showDndOverlay) {
3351
- return this.accessor.options.showDndOverlay(event, target);
3360
+ return this.accessor.options.showDndOverlay({
3361
+ nativeEvent: event,
3362
+ target,
3363
+ group: this.accessor.getPanel(this.id),
3364
+ getData: getPanelData,
3365
+ });
3352
3366
  }
3353
3367
  return false;
3354
3368
  }
@@ -3396,7 +3410,7 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
3396
3410
  }
3397
3411
  }
3398
3412
 
3399
- const nextLayoutId = sequentialNumberGenerator();
3413
+ const nextLayoutId$1 = sequentialNumberGenerator();
3400
3414
  function toTarget(direction) {
3401
3415
  switch (direction) {
3402
3416
  case 'left':
@@ -3416,7 +3430,7 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
3416
3430
  constructor(_element, options) {
3417
3431
  super();
3418
3432
  this._element = _element;
3419
- this._id = nextLayoutId.next();
3433
+ this._id = nextLayoutId$1.next();
3420
3434
  this._groups = new Map();
3421
3435
  this._onDidLayoutChange = new Emitter();
3422
3436
  this.onDidLayoutChange = this._onDidLayoutChange.event;
@@ -3431,7 +3445,7 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
3431
3445
  this.element.appendChild(this.gridview.element);
3432
3446
  this.layout(0, 0, true); // set some elements height/widths
3433
3447
  this.addDisposables(this.gridview.onDidChange(() => {
3434
- this._onDidLayoutChange.fire();
3448
+ this._bufferOnDidLayoutChange.fire();
3435
3449
  }));
3436
3450
  this.addDisposables(exports.Event.any(this.onDidAddGroup, this.onDidRemoveGroup, this.onDidActiveGroupChange)(() => {
3437
3451
  this._bufferOnDidLayoutChange.fire();
@@ -3876,6 +3890,38 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
3876
3890
  }
3877
3891
  }
3878
3892
 
3893
+ const createSvgElementFromPath = (params) => {
3894
+ const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
3895
+ svg.setAttributeNS(null, 'height', params.height);
3896
+ svg.setAttributeNS(null, 'width', params.width);
3897
+ svg.setAttributeNS(null, 'viewBox', params.viewbox);
3898
+ svg.setAttributeNS(null, 'aria-hidden', 'false');
3899
+ svg.setAttributeNS(null, 'focusable', 'false');
3900
+ svg.classList.add('dockview-svg');
3901
+ const path = document.createElementNS('http://www.w3.org/2000/svg', 'path');
3902
+ path.setAttributeNS(null, 'd', params.path);
3903
+ svg.appendChild(path);
3904
+ return svg;
3905
+ };
3906
+ const createCloseButton = () => createSvgElementFromPath({
3907
+ width: '11',
3908
+ height: '11',
3909
+ viewbox: '0 0 28 28',
3910
+ 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',
3911
+ });
3912
+ const createExpandMoreButton = () => createSvgElementFromPath({
3913
+ width: '11',
3914
+ height: '11',
3915
+ viewbox: '0 0 24 15',
3916
+ path: 'M12 14.15L0 2.15L2.15 0L12 9.9L21.85 0.0499992L24 2.2L12 14.15Z',
3917
+ });
3918
+ const createChevronRightButton = () => createSvgElementFromPath({
3919
+ width: '11',
3920
+ height: '11',
3921
+ viewbox: '0 0 15 25',
3922
+ path: 'M2.15 24.1L0 21.95L9.9 12.05L0 2.15L2.15 0L14.2 12.05L2.15 24.1Z',
3923
+ });
3924
+
3879
3925
  class Watermark extends CompositeDisposable {
3880
3926
  constructor() {
3881
3927
  super();
@@ -3892,8 +3938,9 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
3892
3938
  const actions = new ActionContainer();
3893
3939
  title.appendChild(emptySpace);
3894
3940
  title.appendChild(actions.element);
3895
- const closeAnchor = document.createElement('a');
3941
+ const closeAnchor = document.createElement('div');
3896
3942
  closeAnchor.className = 'close-action';
3943
+ closeAnchor.appendChild(createCloseButton());
3897
3944
  actions.add(closeAnchor);
3898
3945
  this.addDisposables(addDisposableListener(closeAnchor, 'click', (ev) => {
3899
3946
  var _a;
@@ -3941,34 +3988,6 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
3941
3988
  }
3942
3989
  }
3943
3990
 
3944
- class DefaultDeserializer {
3945
- constructor(layout, panelDeserializer) {
3946
- this.layout = layout;
3947
- this.panelDeserializer = panelDeserializer;
3948
- }
3949
- fromJSON(node) {
3950
- const data = node.data;
3951
- const children = data.views;
3952
- const active = data.activeView;
3953
- const group = this.layout.createGroup({
3954
- id: data.id,
3955
- locked: !!data.locked,
3956
- hideHeader: !!data.hideHeader,
3957
- });
3958
- for (const child of children) {
3959
- const panel = this.panelDeserializer.createPanel(child, group);
3960
- const isActive = typeof active === 'string' && active === panel.id;
3961
- group.model.openPanel(panel, {
3962
- skipSetActive: !isActive,
3963
- });
3964
- }
3965
- if (!group.activePanel && group.panels.length > 0) {
3966
- group.model.openPanel(group.panels[group.panels.length - 1]);
3967
- }
3968
- return group;
3969
- }
3970
- }
3971
-
3972
3991
  function createComponent(id, componentName, components = {}, frameworkComponents = {}, createFrameworkComponent, fallback) {
3973
3992
  const Component = typeof componentName === 'string'
3974
3993
  ? components[componentName]
@@ -3994,6 +4013,7 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
3994
4013
  return new Component(id, componentName);
3995
4014
  }
3996
4015
 
4016
+ const DEFAULT_TAB_IDENTIFIER = '__default__tab__';
3997
4017
  class DefaultTab extends CompositeDisposable {
3998
4018
  constructor() {
3999
4019
  super();
@@ -4013,8 +4033,9 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
4013
4033
  this._list = document.createElement('ul');
4014
4034
  this._list.className = 'tab-list';
4015
4035
  //
4016
- this.action = document.createElement('a');
4036
+ this.action = document.createElement('div');
4017
4037
  this.action.className = 'tab-action';
4038
+ this.action.appendChild(createCloseButton());
4018
4039
  //
4019
4040
  this._element.appendChild(this._content);
4020
4041
  this._element.appendChild(this._actionContainer);
@@ -4030,7 +4051,7 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
4030
4051
  return this._element;
4031
4052
  }
4032
4053
  get id() {
4033
- return '__DEFAULT_TAB__';
4054
+ return DEFAULT_TAB_IDENTIFIER;
4034
4055
  }
4035
4056
  update(event) {
4036
4057
  this.params = Object.assign(Object.assign({}, this.params), event.params);
@@ -4347,16 +4368,6 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
4347
4368
  var _a;
4348
4369
  this._content = renderers.content;
4349
4370
  this._tab = (_a = renderers.tab) !== null && _a !== void 0 ? _a : new DefaultTab();
4350
- this._actions =
4351
- renderers.actions ||
4352
- (this.content.actions
4353
- ? {
4354
- element: this.content.actions,
4355
- dispose: () => {
4356
- //
4357
- },
4358
- }
4359
- : undefined);
4360
4371
  }
4361
4372
  get content() {
4362
4373
  return this._content;
@@ -4364,9 +4375,6 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
4364
4375
  get tab() {
4365
4376
  return this._tab;
4366
4377
  }
4367
- get actions() {
4368
- return this._actions;
4369
- }
4370
4378
  init(params) {
4371
4379
  this.content.init(Object.assign(Object.assign({}, params), { tab: this.tab }));
4372
4380
  this.tab.init(params);
@@ -4384,16 +4392,18 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
4384
4392
  this.tab.update(event);
4385
4393
  }
4386
4394
  toJSON() {
4395
+ let tab = this.tab instanceof DefaultTab ? undefined : this.tab.toJSON();
4396
+ if (tab && Object.keys(tab).length === 0) {
4397
+ tab = undefined;
4398
+ }
4387
4399
  return {
4388
4400
  content: this.content.toJSON(),
4389
- tab: this.tab instanceof DefaultTab ? undefined : this.tab.toJSON(),
4401
+ tab,
4390
4402
  };
4391
4403
  }
4392
4404
  dispose() {
4393
- var _a;
4394
4405
  this.content.dispose();
4395
4406
  this.tab.dispose();
4396
- (_a = this.actions) === null || _a === void 0 ? void 0 : _a.dispose();
4397
4407
  }
4398
4408
  }
4399
4409
 
@@ -4405,9 +4415,6 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
4405
4415
  orientation: options.orientation || exports.Orientation.HORIZONTAL,
4406
4416
  styles: options.styles,
4407
4417
  });
4408
- // events
4409
- this._onTabInteractionEvent = new Emitter();
4410
- this.onTabInteractionEvent = this._onTabInteractionEvent.event;
4411
4418
  this._onTabContextMenu = new Emitter();
4412
4419
  this.onTabContextMenu = this._onTabContextMenu.event;
4413
4420
  this._onDidDrop = new Emitter();
@@ -4416,11 +4423,11 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
4416
4423
  this.onDidRemovePanel = this._onDidRemovePanel.event;
4417
4424
  this._onDidAddPanel = new Emitter();
4418
4425
  this.onDidAddPanel = this._onDidAddPanel.event;
4419
- this._onDidLayoutfromJSON = new Emitter();
4420
- this.onDidLayoutfromJSON = this._onDidLayoutfromJSON.event;
4426
+ this._onDidLayoutFromJSON = new Emitter();
4427
+ this.onDidLayoutFromJSON = this._onDidLayoutFromJSON.event;
4421
4428
  this._onDidActivePanelChange = new Emitter();
4422
4429
  this.onDidActivePanelChange = this._onDidActivePanelChange.event;
4423
- this.addDisposables(this._onTabInteractionEvent, this._onTabContextMenu, this._onDidDrop, exports.Event.any(this.onDidAddPanel, this.onDidRemovePanel, this.onDidActivePanelChange)(() => {
4430
+ this.addDisposables(this._onTabContextMenu, this._onDidDrop, exports.Event.any(this.onDidAddPanel, this.onDidRemovePanel, this.onDidActivePanelChange)(() => {
4424
4431
  this._bufferOnDidLayoutChange.fire();
4425
4432
  }));
4426
4433
  this._options = options;
@@ -4475,7 +4482,7 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
4475
4482
  }
4476
4483
  updateOptions(options) {
4477
4484
  const hasOrientationChanged = typeof options.orientation === 'string' &&
4478
- this.options.orientation !== options.orientation;
4485
+ this.gridview.orientation !== options.orientation;
4479
4486
  this._options = Object.assign(Object.assign({}, this.options), options);
4480
4487
  if (hasOrientationChanged) {
4481
4488
  this.gridview.orientation = options.orientation;
@@ -4553,12 +4560,7 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
4553
4560
  };
4554
4561
  }
4555
4562
  fromJSON(data) {
4556
- const groups = Array.from(this._groups.values()).map((_) => _.value);
4557
- for (const group of groups) {
4558
- // remove the group will automatically remove the panels
4559
- this.removeGroup(group, true);
4560
- }
4561
- this.gridview.clear();
4563
+ this.clear();
4562
4564
  if (!this.deserializer) {
4563
4565
  throw new Error('invalid deserializer');
4564
4566
  }
@@ -4569,12 +4571,31 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
4569
4571
  if (!this.deserializer) {
4570
4572
  throw new Error('no deserializer provided');
4571
4573
  }
4572
- this.gridview.deserialize(grid, new DefaultDeserializer(this, {
4573
- createPanel: (id, group) => {
4574
- const panelData = panels[id];
4575
- return this.deserializer.fromJSON(panelData, group);
4576
- },
4577
- }));
4574
+ this.gridview.deserialize(grid, {
4575
+ fromJSON: (node) => {
4576
+ const { id, locked, hideHeader, views, activeView } = node.data;
4577
+ const group = this.createGroup({
4578
+ id,
4579
+ locked: !!locked,
4580
+ hideHeader: !!hideHeader,
4581
+ });
4582
+ this._onDidAddGroup.fire(group);
4583
+ for (const child of views) {
4584
+ const panel = this.deserializer.fromJSON(panels[child], group);
4585
+ const isActive = typeof activeView === 'string' && activeView === panel.id;
4586
+ group.model.openPanel(panel, {
4587
+ skipSetPanelActive: !isActive,
4588
+ skipSetGroupActive: true
4589
+ });
4590
+ }
4591
+ if (!group.activePanel && group.panels.length > 0) {
4592
+ group.model.openPanel(group.panels[group.panels.length - 1], {
4593
+ skipSetGroupActive: true
4594
+ });
4595
+ }
4596
+ return group;
4597
+ }
4598
+ });
4578
4599
  if (typeof activeGroup === 'string') {
4579
4600
  const panel = this.getPanel(activeGroup);
4580
4601
  if (panel) {
@@ -4582,7 +4603,23 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
4582
4603
  }
4583
4604
  }
4584
4605
  this.gridview.layout(this.width, this.height);
4585
- this._onDidLayoutfromJSON.fire();
4606
+ this._onDidLayoutFromJSON.fire();
4607
+ }
4608
+ clear() {
4609
+ const groups = Array.from(this._groups.values()).map((_) => _.value);
4610
+ const hasActiveGroup = !!this.activeGroup;
4611
+ const hasActivePanel = !!this.activePanel;
4612
+ for (const group of groups) {
4613
+ // remove the group will automatically remove the panels
4614
+ this.removeGroup(group, true);
4615
+ }
4616
+ if (hasActiveGroup) {
4617
+ this.doSetGroupActive(undefined);
4618
+ }
4619
+ if (hasActivePanel) {
4620
+ this._onDidActivePanelChange.fire(undefined);
4621
+ }
4622
+ this.gridview.clear();
4586
4623
  }
4587
4624
  closeAllGroups() {
4588
4625
  for (const entry of this._groups.entries()) {
@@ -4780,23 +4817,13 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
4780
4817
  const { groupId, itemId, target, index } = event;
4781
4818
  this.moveGroupOrPanel(view, groupId, itemId, target, index);
4782
4819
  }), view.model.onDidDrop((event) => {
4783
- this._onDidDrop.fire(Object.assign(Object.assign({}, event), { api: this._api }));
4784
- }), view.model.onDidGroupChange((event) => {
4785
- switch (event.kind) {
4786
- case exports.GroupChangeKind2.ADD_PANEL:
4787
- if (event.panel) {
4788
- this._onDidAddPanel.fire(event.panel);
4789
- }
4790
- break;
4791
- case exports.GroupChangeKind2.REMOVE_PANEL:
4792
- if (event.panel) {
4793
- this._onDidRemovePanel.fire(event.panel);
4794
- }
4795
- break;
4796
- case exports.GroupChangeKind2.PANEL_ACTIVE:
4797
- this._onDidActivePanelChange.fire(event.panel);
4798
- break;
4799
- }
4820
+ this._onDidDrop.fire(Object.assign(Object.assign({}, event), { api: this._api, group: view }));
4821
+ }), view.model.onDidAddPanel((event) => {
4822
+ this._onDidAddPanel.fire(event.panel);
4823
+ }), view.model.onDidRemovePanel((event) => {
4824
+ this._onDidRemovePanel.fire(event.panel);
4825
+ }), view.model.onDidActivePanelChange((event) => {
4826
+ this._onDidActivePanelChange.fire(event.panel);
4800
4827
  }));
4801
4828
  this._groups.set(view.id, { value: view, disposable });
4802
4829
  }
@@ -4811,7 +4838,7 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
4811
4838
  createPanel(options, group) {
4812
4839
  const view = new DefaultGroupPanelView({
4813
4840
  content: this.createContentComponent(options.id, options.component),
4814
- tab: this.createTabComponent(options.id, options.tabComponent),
4841
+ tab: this.createTabComponent(options.id, options.tabComponent || this.options.defaultTabComponent),
4815
4842
  });
4816
4843
  const panel = new DockviewGroupPanel(options.id, this, this._api, group);
4817
4844
  panel.init({
@@ -4844,7 +4871,7 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
4844
4871
  this._onDidActivePanelChange.dispose();
4845
4872
  this._onDidAddPanel.dispose();
4846
4873
  this._onDidRemovePanel.dispose();
4847
- this._onDidLayoutfromJSON.dispose();
4874
+ this._onDidLayoutFromJSON.dispose();
4848
4875
  }
4849
4876
  }
4850
4877
 
@@ -4882,7 +4909,7 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
4882
4909
  }
4883
4910
  updateOptions(options) {
4884
4911
  const hasOrientationChanged = typeof options.orientation === 'string' &&
4885
- this.options.orientation !== options.orientation;
4912
+ this.gridview.orientation !== options.orientation;
4886
4913
  this._options = Object.assign(Object.assign({}, this.options), options);
4887
4914
  if (hasOrientationChanged) {
4888
4915
  this.gridview.orientation = options.orientation;
@@ -4918,13 +4945,8 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
4918
4945
  (_a = this.activeGroup) === null || _a === void 0 ? void 0 : _a.focus();
4919
4946
  }
4920
4947
  fromJSON(serializedGridview) {
4948
+ this.clear();
4921
4949
  const { grid, activePanel } = serializedGridview;
4922
- const groups = Array.from(this._groups.values()); // reassign since group panels will mutate
4923
- for (const group of groups) {
4924
- group.disposable.dispose();
4925
- this.doRemoveGroup(group.value, { skipActive: true });
4926
- }
4927
- this.gridview.clear();
4928
4950
  const queue = [];
4929
4951
  this.gridview.deserialize(grid, {
4930
4952
  fromJSON: (node) => {
@@ -4946,6 +4968,7 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
4946
4968
  accessor: this,
4947
4969
  isVisible: node.visible,
4948
4970
  }));
4971
+ this._onDidAddGroup.fire(view);
4949
4972
  this.registerPanel(view);
4950
4973
  return view;
4951
4974
  },
@@ -4960,6 +4983,18 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
4960
4983
  }
4961
4984
  this._onDidLayoutfromJSON.fire();
4962
4985
  }
4986
+ clear() {
4987
+ const hasActiveGroup = this.activeGroup;
4988
+ const groups = Array.from(this._groups.values()); // reassign since group panels will mutate
4989
+ for (const group of groups) {
4990
+ group.disposable.dispose();
4991
+ this.doRemoveGroup(group.value, { skipActive: true });
4992
+ }
4993
+ if (hasActiveGroup) {
4994
+ this.doSetGroupActive(undefined);
4995
+ }
4996
+ this.gridview.clear();
4997
+ }
4963
4998
  movePanel(panel, options) {
4964
4999
  var _a;
4965
5000
  let relativeLocation;
@@ -5250,13 +5285,8 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
5250
5285
  };
5251
5286
  }
5252
5287
  fromJSON(serializedSplitview) {
5288
+ this.clear();
5253
5289
  const { views, orientation, size, activeView } = serializedSplitview;
5254
- for (const [_, value] of this._panels.entries()) {
5255
- value.disposable.dispose();
5256
- value.value.dispose();
5257
- }
5258
- this._panels.clear();
5259
- this.splitview.dispose();
5260
5290
  const queue = [];
5261
5291
  this.splitview = new Splitview(this.element, {
5262
5292
  orientation,
@@ -5304,6 +5334,14 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
5304
5334
  }
5305
5335
  this._onDidLayoutfromJSON.fire();
5306
5336
  }
5337
+ clear() {
5338
+ for (const [_, value] of this._panels.entries()) {
5339
+ value.disposable.dispose();
5340
+ value.value.dispose();
5341
+ }
5342
+ this._panels.clear();
5343
+ this.splitview.dispose();
5344
+ }
5307
5345
  dispose() {
5308
5346
  for (const [_, value] of this._panels.entries()) {
5309
5347
  value.disposable.dispose();
@@ -5553,8 +5591,9 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
5553
5591
  }
5554
5592
 
5555
5593
  class DraggablePaneviewPanel extends PaneviewPanel {
5556
- constructor(id, component, headerComponent, orientation, isExpanded, disableDnd) {
5594
+ constructor(accessor, id, component, headerComponent, orientation, isExpanded, disableDnd) {
5557
5595
  super(id, component, headerComponent, orientation, isExpanded, true);
5596
+ this.accessor = accessor;
5558
5597
  this._onDidDrop = new Emitter();
5559
5598
  this.onDidDrop = this._onDidDrop.event;
5560
5599
  if (!disableDnd) {
@@ -5566,10 +5605,11 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
5566
5605
  return;
5567
5606
  }
5568
5607
  const id = this.id;
5608
+ const accessorId = this.accessor.id;
5569
5609
  this.header.draggable = true;
5570
5610
  this.handler = new (class PaneDragHandler extends DragHandler {
5571
5611
  getData() {
5572
- LocalSelectionTransfer.getInstance().setData([new PaneTransfer('paneview', id)], PaneTransfer.prototype);
5612
+ LocalSelectionTransfer.getInstance().setData([new PaneTransfer(accessorId, id)], PaneTransfer.prototype);
5573
5613
  return {
5574
5614
  dispose: () => {
5575
5615
  LocalSelectionTransfer.getInstance().clearData(PaneTransfer.prototype);
@@ -5579,12 +5619,22 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
5579
5619
  })(this.header);
5580
5620
  this.target = new Droptarget(this.element, {
5581
5621
  validOverlays: 'vertical',
5582
- canDisplayOverlay: () => {
5622
+ canDisplayOverlay: (event) => {
5583
5623
  const data = getPaneData();
5584
- if (!data) {
5585
- return true;
5624
+ if (data) {
5625
+ if (data.paneId !== this.id &&
5626
+ data.viewId === this.accessor.id) {
5627
+ return true;
5628
+ }
5586
5629
  }
5587
- return data.paneId !== this.id;
5630
+ if (this.accessor.options.showDndOverlay) {
5631
+ return this.accessor.options.showDndOverlay({
5632
+ nativeEvent: event,
5633
+ getData: getPaneData,
5634
+ panel: this,
5635
+ });
5636
+ }
5637
+ return false;
5588
5638
  },
5589
5639
  });
5590
5640
  this.addDisposables(this._onDidDrop, this.handler, this.target, this.target.onDrop((event) => {
@@ -5593,8 +5643,10 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
5593
5643
  }
5594
5644
  onDrop(event) {
5595
5645
  const data = getPaneData();
5596
- if (!data) {
5597
- this._onDidDrop.fire(Object.assign(Object.assign({}, event), { panel: this, getData: () => getPaneData() }));
5646
+ if (!data || data.viewId !== this.accessor.id) {
5647
+ // if there is no local drag event for this panel
5648
+ // or if the drag event was creating by another Paneview instance
5649
+ this._onDidDrop.fire(Object.assign(Object.assign({}, event), { panel: this, getData: getPaneData }));
5598
5650
  return;
5599
5651
  }
5600
5652
  const containerApi = this._params
@@ -5602,7 +5654,8 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
5602
5654
  const panelId = data.paneId;
5603
5655
  const existingPanel = containerApi.getPanel(panelId);
5604
5656
  if (!existingPanel) {
5605
- this._onDidDrop.fire(Object.assign(Object.assign({}, event), { panel: this, getData: () => getPaneData() }));
5657
+ // if the panel doesn't exist
5658
+ this._onDidDrop.fire(Object.assign(Object.assign({}, event), { panel: this, getData: getPaneData }));
5606
5659
  return;
5607
5660
  }
5608
5661
  const allPanels = containerApi.panels;
@@ -5626,15 +5679,18 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
5626
5679
  class DefaultHeader extends CompositeDisposable {
5627
5680
  constructor() {
5628
5681
  super();
5682
+ this._expandedIcon = createExpandMoreButton();
5683
+ this._collapsedIcon = createChevronRightButton();
5629
5684
  this.disposable = new MutableDisposable();
5630
5685
  this.apiRef = { api: null };
5631
5686
  this._element = document.createElement('div');
5632
5687
  this.element.className = 'default-header';
5633
5688
  this._content = document.createElement('span');
5634
- this._expander = document.createElement('a');
5635
- this.element.appendChild(this._content);
5689
+ this._expander = document.createElement('div');
5690
+ this._expander.className = 'dockview-pane-header-icon';
5636
5691
  this.element.appendChild(this._expander);
5637
- this.addDisposables(addDisposableListener(this._expander, 'click', () => {
5692
+ this.element.appendChild(this._content);
5693
+ this.addDisposables(addDisposableListener(this._element, 'click', () => {
5638
5694
  var _a;
5639
5695
  (_a = this.apiRef.api) === null || _a === void 0 ? void 0 : _a.setExpanded(!this.apiRef.api.isExpanded);
5640
5696
  }));
@@ -5645,11 +5701,32 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
5645
5701
  init(params) {
5646
5702
  this.apiRef.api = params.api;
5647
5703
  this._content.textContent = params.title;
5648
- this._expander.textContent = params.api.isExpanded ? '<' : '>';
5649
- this.disposable.value = params.api.onDidExpansionChange((e) => {
5650
- this._expander.textContent = e.isExpanded ? '<' : '>';
5704
+ this.updateIcon();
5705
+ this.disposable.value = params.api.onDidExpansionChange(() => {
5706
+ this.updateIcon();
5651
5707
  });
5652
5708
  }
5709
+ updateIcon() {
5710
+ var _a;
5711
+ const isExpanded = !!((_a = this.apiRef.api) === null || _a === void 0 ? void 0 : _a.isExpanded);
5712
+ toggleClass(this._expander, 'collapsed', !isExpanded);
5713
+ if (isExpanded) {
5714
+ if (this._expander.contains(this._collapsedIcon)) {
5715
+ this._collapsedIcon.remove();
5716
+ }
5717
+ if (!this._expander.contains(this._expandedIcon)) {
5718
+ this._expander.appendChild(this._expandedIcon);
5719
+ }
5720
+ }
5721
+ else {
5722
+ if (this._expander.contains(this._expandedIcon)) {
5723
+ this._expandedIcon.remove();
5724
+ }
5725
+ if (!this._expander.contains(this._collapsedIcon)) {
5726
+ this._expander.appendChild(this._collapsedIcon);
5727
+ }
5728
+ }
5729
+ }
5653
5730
  update(_params) {
5654
5731
  //
5655
5732
  }
@@ -5659,9 +5736,10 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
5659
5736
  }
5660
5737
  }
5661
5738
 
5739
+ const nextLayoutId = sequentialNumberGenerator();
5662
5740
  class PaneFramework extends DraggablePaneviewPanel {
5663
5741
  constructor(options) {
5664
- super(options.id, options.component, options.headerComponent, options.orientation, options.isExpanded, options.disableDnd);
5742
+ super(options.accessor, options.id, options.component, options.headerComponent, options.orientation, options.isExpanded, options.disableDnd);
5665
5743
  this.options = options;
5666
5744
  }
5667
5745
  getBodyComponent() {
@@ -5675,6 +5753,7 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
5675
5753
  constructor(element, options) {
5676
5754
  super();
5677
5755
  this.element = element;
5756
+ this._id = nextLayoutId.next();
5678
5757
  this._disposable = new MutableDisposable();
5679
5758
  this._viewDisposables = new Map();
5680
5759
  this._onDidLayoutfromJSON = new Emitter();
@@ -5701,6 +5780,9 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
5701
5780
  });
5702
5781
  this.addDisposables(this._disposable);
5703
5782
  }
5783
+ get id() {
5784
+ return this._id;
5785
+ }
5704
5786
  get panels() {
5705
5787
  return this.paneview.getPanes();
5706
5788
  }
@@ -5765,6 +5847,7 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
5765
5847
  orientation: exports.Orientation.VERTICAL,
5766
5848
  isExpanded: !!options.isExpanded,
5767
5849
  disableDnd: !!this.options.disableDnd,
5850
+ accessor: this,
5768
5851
  });
5769
5852
  this.doAddPanel(view);
5770
5853
  const size = typeof options.size === 'number' ? options.size : exports.Sizing.Distribute;
@@ -5823,13 +5906,9 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
5823
5906
  };
5824
5907
  }
5825
5908
  fromJSON(serializedPaneview) {
5909
+ this.clear();
5826
5910
  const { views, size } = serializedPaneview;
5827
5911
  const queue = [];
5828
- for (const [_, value] of this._viewDisposables.entries()) {
5829
- value.dispose();
5830
- }
5831
- this._viewDisposables.clear();
5832
- this.paneview.dispose();
5833
5912
  this.paneview = new Paneview(this.element, {
5834
5913
  orientation: exports.Orientation.VERTICAL,
5835
5914
  descriptor: {
@@ -5863,6 +5942,7 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
5863
5942
  orientation: exports.Orientation.VERTICAL,
5864
5943
  isExpanded: !!view.expanded,
5865
5944
  disableDnd: !!this.options.disableDnd,
5945
+ accessor: this,
5866
5946
  });
5867
5947
  this.doAddPanel(panel);
5868
5948
  queue.push(() => {
@@ -5888,6 +5968,13 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
5888
5968
  queue.forEach((f) => f());
5889
5969
  this._onDidLayoutfromJSON.fire();
5890
5970
  }
5971
+ clear() {
5972
+ for (const [_, value] of this._viewDisposables.entries()) {
5973
+ value.dispose();
5974
+ }
5975
+ this._viewDisposables.clear();
5976
+ this.paneview.dispose();
5977
+ }
5891
5978
  doAddPanel(panel) {
5892
5979
  const disposable = panel.onDidDrop((event) => {
5893
5980
  this._onDidDrop.fire(event);
@@ -6055,15 +6142,21 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
6055
6142
  this.component = component;
6056
6143
  this.parameters = parameters;
6057
6144
  this.context = context;
6145
+ this._initialProps = {};
6058
6146
  this.disposed = false;
6059
6147
  this.createPortal();
6060
6148
  }
6061
6149
  update(props) {
6062
- var _a;
6063
6150
  if (this.disposed) {
6064
6151
  throw new Error('invalid operation: resource is already disposed');
6065
6152
  }
6066
- (_a = this.componentInstance) === null || _a === void 0 ? void 0 : _a.update(props);
6153
+ if (!this.componentInstance) {
6154
+ // if the component is yet to be mounted store the props
6155
+ this._initialProps = Object.assign(Object.assign({}, this._initialProps), props);
6156
+ }
6157
+ else {
6158
+ this.componentInstance.update(props);
6159
+ }
6067
6160
  }
6068
6161
  createPortal() {
6069
6162
  if (this.disposed) {
@@ -6083,6 +6176,10 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
6083
6176
  componentProps: this.parameters,
6084
6177
  ref: (element) => {
6085
6178
  this.componentInstance = element;
6179
+ if (Object.keys(this._initialProps).length > 0) {
6180
+ this.componentInstance.update(this._initialProps);
6181
+ this._initialProps = {}; // don't keep a reference to the users object once no longer required
6182
+ }
6086
6183
  },
6087
6184
  });
6088
6185
  const node = this.context
@@ -6139,30 +6236,19 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
6139
6236
  this.onDidBlur = this._onDidBlur.event;
6140
6237
  this._element = document.createElement('div');
6141
6238
  this._element.className = 'dockview-react-part';
6142
- this._actionsElement = document.createElement('div');
6143
- this._actionsElement.className = 'dockview-react-part';
6144
6239
  }
6145
6240
  get element() {
6146
6241
  return this._element;
6147
6242
  }
6148
- get actions() {
6149
- return this._actionsElement;
6150
- }
6151
6243
  focus() {
6152
6244
  // TODO
6153
6245
  }
6154
6246
  init(parameters) {
6155
- const context = {
6156
- api: parameters.api,
6157
- containerApi: parameters.containerApi,
6158
- actionsPortalElement: this._actionsElement,
6159
- tabPortalElement: parameters.tab,
6160
- };
6161
6247
  this.part = new ReactPart(this.element, this.reactPortalStore, this.component, {
6162
6248
  params: parameters.params,
6163
6249
  api: parameters.api,
6164
6250
  containerApi: parameters.containerApi,
6165
- }, context);
6251
+ });
6166
6252
  }
6167
6253
  toJSON() {
6168
6254
  return {
@@ -6180,11 +6266,10 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
6180
6266
  // noop
6181
6267
  }
6182
6268
  dispose() {
6183
- var _a, _b;
6269
+ var _a;
6184
6270
  this._onDidFocus.dispose();
6185
6271
  this._onDidBlur.dispose();
6186
6272
  (_a = this.part) === null || _a === void 0 ? void 0 : _a.dispose();
6187
- (_b = this.actionsPart) === null || _b === void 0 ? void 0 : _b.dispose();
6188
6273
  }
6189
6274
  }
6190
6275
 
@@ -6214,6 +6299,9 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
6214
6299
  (_a = this.part) === null || _a === void 0 ? void 0 : _a.update(event.params);
6215
6300
  }
6216
6301
  toJSON() {
6302
+ if (this.id === DEFAULT_TAB_IDENTIFIER) {
6303
+ return {};
6304
+ }
6217
6305
  return {
6218
6306
  id: this.id,
6219
6307
  };
@@ -6235,17 +6323,25 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
6235
6323
  this.layout = layout;
6236
6324
  }
6237
6325
  fromJSON(panelData, group) {
6238
- var _a, _b, _c;
6326
+ var _a, _b, _c, _d;
6239
6327
  const panelId = panelData.id;
6240
6328
  const params = panelData.params;
6241
6329
  const title = panelData.title;
6242
6330
  const suppressClosable = panelData.suppressClosable;
6243
6331
  const viewData = panelData.view;
6332
+ let tab;
6333
+ if ((_a = viewData.tab) === null || _a === void 0 ? void 0 : _a.id) {
6334
+ tab = createComponent(viewData.tab.id, viewData.tab.id, this.layout.options.tabComponents, this.layout.options.frameworkTabComponents, (_b = this.layout.options.frameworkComponentFactory) === null || _b === void 0 ? void 0 : _b.tab, () => new DefaultTab());
6335
+ }
6336
+ else if (this.layout.options.defaultTabComponent) {
6337
+ tab = createComponent(this.layout.options.defaultTabComponent, this.layout.options.defaultTabComponent, this.layout.options.tabComponents, this.layout.options.frameworkTabComponents, (_c = this.layout.options.frameworkComponentFactory) === null || _c === void 0 ? void 0 : _c.tab, () => new DefaultTab());
6338
+ }
6339
+ else {
6340
+ tab = new DefaultTab();
6341
+ }
6244
6342
  const view = new DefaultGroupPanelView({
6245
- content: createComponent(viewData.content.id, viewData.content.id, this.layout.options.components, this.layout.options.frameworkComponents, (_a = this.layout.options.frameworkComponentFactory) === null || _a === void 0 ? void 0 : _a.content),
6246
- tab: ((_b = viewData.tab) === null || _b === void 0 ? void 0 : _b.id)
6247
- ? createComponent(viewData.tab.id, viewData.tab.id, this.layout.options.tabComponents, this.layout.options.frameworkTabComponents, (_c = this.layout.options.frameworkComponentFactory) === null || _c === void 0 ? void 0 : _c.tab)
6248
- : new DefaultTab(),
6343
+ content: createComponent(viewData.content.id, viewData.content.id, this.layout.options.components, this.layout.options.frameworkComponents, (_d = this.layout.options.frameworkComponentFactory) === null || _d === void 0 ? void 0 : _d.content),
6344
+ tab,
6249
6345
  });
6250
6346
  const panel = new DockviewGroupPanel(panelId, this.layout, new DockviewApi(this.layout), group);
6251
6347
  panel.init({
@@ -6313,6 +6409,80 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
6313
6409
  }
6314
6410
  }
6315
6411
 
6412
+ class ReactGroupControlsRendererPart {
6413
+ constructor(component, reactPortalStore, _group) {
6414
+ this.component = component;
6415
+ this.reactPortalStore = reactPortalStore;
6416
+ this._group = _group;
6417
+ this.mutableDisposable = new MutableDisposable();
6418
+ this._element = document.createElement('div');
6419
+ this._element.className = 'dockview-react-part';
6420
+ }
6421
+ get element() {
6422
+ return this._element;
6423
+ }
6424
+ get part() {
6425
+ return this._part;
6426
+ }
6427
+ get group() {
6428
+ return this._group;
6429
+ }
6430
+ focus() {
6431
+ // TODO
6432
+ }
6433
+ init(parameters) {
6434
+ this.mutableDisposable.value = new CompositeDisposable(this._group.model.onDidAddPanel(() => {
6435
+ this.updatePanels();
6436
+ }), this._group.model.onDidRemovePanel(() => {
6437
+ this.updatePanels();
6438
+ }), this._group.model.onDidActivePanelChange(() => {
6439
+ this.updateActivePanel();
6440
+ }), parameters.api.onDidActiveChange(() => {
6441
+ this.updateGroupActive();
6442
+ }));
6443
+ this._part = new ReactPart(this.element, this.reactPortalStore, this.component, {
6444
+ api: parameters.api,
6445
+ containerApi: parameters.containerApi,
6446
+ panels: this._group.model.panels,
6447
+ activePanel: this._group.model.activePanel,
6448
+ isGroupActive: this._group.api.isActive,
6449
+ });
6450
+ }
6451
+ update(event) {
6452
+ var _a;
6453
+ (_a = this._part) === null || _a === void 0 ? void 0 : _a.update(event.params);
6454
+ }
6455
+ dispose() {
6456
+ var _a;
6457
+ this.mutableDisposable.dispose();
6458
+ (_a = this._part) === null || _a === void 0 ? void 0 : _a.dispose();
6459
+ }
6460
+ updatePanels() {
6461
+ this.update({ params: { panels: this._group.model.panels } });
6462
+ }
6463
+ updateActivePanel() {
6464
+ this.update({
6465
+ params: {
6466
+ activePanel: this._group.model.activePanel,
6467
+ },
6468
+ });
6469
+ }
6470
+ updateGroupActive() {
6471
+ this.update({
6472
+ params: {
6473
+ isGroupActive: this._group.api.isActive,
6474
+ },
6475
+ });
6476
+ }
6477
+ }
6478
+
6479
+ function createGroupControlElement(component, store) {
6480
+ return component
6481
+ ? (groupPanel) => {
6482
+ return new ReactGroupControlsRendererPart(component, store, groupPanel);
6483
+ }
6484
+ : undefined;
6485
+ }
6316
6486
  const DockviewReact = React__namespace.forwardRef((props, ref) => {
6317
6487
  const domRef = React__namespace.useRef(null);
6318
6488
  const dockviewRef = React__namespace.useRef();
@@ -6362,12 +6532,15 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
6362
6532
  const dockview = new DockviewComponent(element, {
6363
6533
  frameworkComponentFactory: factory,
6364
6534
  frameworkComponents: props.components,
6365
- frameworkTabComponents: props.tabComponents,
6535
+ frameworkTabComponents: Object.assign(Object.assign({}, (props.tabComponents || {})), { [DEFAULT_TAB_IDENTIFIER]: props.defaultTabComponent }),
6366
6536
  tabHeight: props.tabHeight,
6367
6537
  watermarkFrameworkComponent: props.watermarkComponent,
6538
+ defaultTabComponent: DEFAULT_TAB_IDENTIFIER,
6368
6539
  styles: props.hideBorders
6369
6540
  ? { separatorBorder: 'transparent' }
6370
6541
  : undefined,
6542
+ showDndOverlay: props.showDndOverlay,
6543
+ createGroupControlElement: createGroupControlElement(props.groupControlComponent, { addPortal }),
6371
6544
  });
6372
6545
  (_a = domRef.current) === null || _a === void 0 ? void 0 : _a.appendChild(dockview.element);
6373
6546
  dockview.deserializer = new ReactPanelDeserialzier(dockview);
@@ -6444,10 +6617,79 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
6444
6617
  disposable.dispose();
6445
6618
  };
6446
6619
  }, [props.onTabContextMenu]);
6620
+ React__namespace.useEffect(() => {
6621
+ if (!dockviewRef.current) {
6622
+ return;
6623
+ }
6624
+ dockviewRef.current.updateOptions({
6625
+ defaultTabComponent: DEFAULT_TAB_IDENTIFIER,
6626
+ frameworkTabComponents: Object.assign(Object.assign({}, (props.tabComponents || {})), { [DEFAULT_TAB_IDENTIFIER]: props.defaultTabComponent }),
6627
+ });
6628
+ }, [props.defaultTabComponent]);
6629
+ React__namespace.useEffect(() => {
6630
+ if (!dockviewRef.current) {
6631
+ return;
6632
+ }
6633
+ dockviewRef.current.updateOptions({
6634
+ createGroupControlElement: createGroupControlElement(props.groupControlComponent, { addPortal }),
6635
+ });
6636
+ }, [props.groupControlComponent]);
6447
6637
  return (React__namespace.createElement("div", { className: props.className, style: { height: '100%', width: '100%' }, ref: domRef }, portals));
6448
6638
  });
6449
6639
  DockviewReact.displayName = 'DockviewComponent';
6450
6640
 
6641
+ /******************************************************************************
6642
+ Copyright (c) Microsoft Corporation.
6643
+
6644
+ Permission to use, copy, modify, and/or distribute this software for any
6645
+ purpose with or without fee is hereby granted.
6646
+
6647
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
6648
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
6649
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
6650
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
6651
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
6652
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
6653
+ PERFORMANCE OF THIS SOFTWARE.
6654
+ ***************************************************************************** */
6655
+
6656
+ function __rest(s, e) {
6657
+ var t = {};
6658
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
6659
+ t[p] = s[p];
6660
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
6661
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
6662
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
6663
+ t[p[i]] = s[p[i]];
6664
+ }
6665
+ return t;
6666
+ }
6667
+
6668
+ const CloseButton = () => (React__namespace.createElement("svg", { height: "11", width: "11", viewBox: "0 0 28 28", "aria-hidden": 'false', focusable: false, className: "dockview-svg" },
6669
+ React__namespace.createElement("path", { d: "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" })));
6670
+
6671
+ const DockviewDefaultTab = (_a) => {
6672
+ var { api, containerApi: _containerApi, params: _params } = _a, rest = __rest(_a, ["api", "containerApi", "params"]);
6673
+ const onClose = React__namespace.useCallback((event) => {
6674
+ event.stopPropagation();
6675
+ api.close();
6676
+ }, [api]);
6677
+ const onClick = React__namespace.useCallback((event) => {
6678
+ api.setActive();
6679
+ if (rest.onClick) {
6680
+ rest.onClick(event);
6681
+ }
6682
+ }, [api, rest.onClick]);
6683
+ const iconClassname = React__namespace.useMemo(() => {
6684
+ const cn = ['dockview-react-tab-action'];
6685
+ return cn.join(',');
6686
+ }, [api.suppressClosable]);
6687
+ return (React__namespace.createElement("div", Object.assign({}, rest, { onClick: onClick, className: "dockview-react-tab" }),
6688
+ React__namespace.createElement("span", { className: "dockview-react-tab-title" }, api.title),
6689
+ React__namespace.createElement("div", { className: iconClassname, onClick: onClose },
6690
+ React__namespace.createElement(CloseButton, null))));
6691
+ };
6692
+
6451
6693
  class ReactPanelView extends SplitviewPanel {
6452
6694
  constructor(id, component, reactComponent, reactPortalStore) {
6453
6695
  super(id, component);
@@ -6677,6 +6919,7 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
6677
6919
  createComponent,
6678
6920
  },
6679
6921
  },
6922
+ showDndOverlay: props.showDndOverlay,
6680
6923
  });
6681
6924
  const api = new PaneviewApi(paneview);
6682
6925
  const { clientWidth, clientHeight } = domRef.current;
@@ -6721,6 +6964,14 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
6721
6964
  disposable.dispose();
6722
6965
  };
6723
6966
  }, [props.onDidDrop]);
6967
+ React__namespace.useEffect(() => {
6968
+ if (!paneviewRef.current) {
6969
+ return;
6970
+ }
6971
+ paneviewRef.current.updateOptions({
6972
+ showDndOverlay: props.showDndOverlay,
6973
+ });
6974
+ }, [props.showDndOverlay]);
6724
6975
  return (React__namespace.createElement("div", { className: props.className, style: { height: '100%', width: '100%' }, ref: domRef }, portals));
6725
6976
  });
6726
6977
  PaneviewReact.displayName = 'PaneviewComponent';
@@ -6729,6 +6980,7 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
6729
6980
  exports.ContentContainer = ContentContainer;
6730
6981
  exports.DockviewApi = DockviewApi;
6731
6982
  exports.DockviewComponent = DockviewComponent;
6983
+ exports.DockviewDefaultTab = DockviewDefaultTab;
6732
6984
  exports.DockviewReact = DockviewReact;
6733
6985
  exports.Gridview = Gridview;
6734
6986
  exports.GridviewApi = GridviewApi;
@@ -6745,8 +6997,6 @@ define(['exports', 'react', 'react-dom'], (function (exports, React, ReactDOM) {
6745
6997
  exports.PaneviewComponent = PaneviewComponent;
6746
6998
  exports.PaneviewPanel = PaneviewPanel;
6747
6999
  exports.PaneviewReact = PaneviewReact;
6748
- exports.ReactPanelContentPart = ReactPanelContentPart;
6749
- exports.ReactPanelHeaderPart = ReactPanelHeaderPart;
6750
7000
  exports.ReactPart = ReactPart;
6751
7001
  exports.ReactPartContext = ReactPartContext;
6752
7002
  exports.Splitview = Splitview;