dockview 1.4.3 → 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 (122) hide show
  1. package/README.md +1 -1
  2. package/dist/cjs/dockview/components/tab/defaultTab.d.ts +1 -0
  3. package/dist/cjs/dockview/components/tab/defaultTab.js +6 -3
  4. package/dist/cjs/dockview/components/tab/defaultTab.js.map +1 -1
  5. package/dist/cjs/dockview/components/watermark/watermark.js +3 -1
  6. package/dist/cjs/dockview/components/watermark/watermark.js.map +1 -1
  7. package/dist/cjs/dockview/defaultGroupPanelView.d.ts +1 -5
  8. package/dist/cjs/dockview/defaultGroupPanelView.js +5 -20
  9. package/dist/cjs/dockview/defaultGroupPanelView.js.map +1 -1
  10. package/dist/cjs/dockview/dockviewComponent.d.ts +1 -1
  11. package/dist/cjs/dockview/dockviewComponent.js +7 -18
  12. package/dist/cjs/dockview/dockviewComponent.js.map +1 -1
  13. package/dist/cjs/dockview/options.d.ts +5 -0
  14. package/dist/cjs/groupview/groupview.d.ts +16 -15
  15. package/dist/cjs/groupview/groupview.js +24 -33
  16. package/dist/cjs/groupview/groupview.js.map +1 -1
  17. package/dist/cjs/groupview/tab.d.ts +1 -0
  18. package/dist/cjs/groupview/tab.js +2 -1
  19. package/dist/cjs/groupview/tab.js.map +1 -1
  20. package/dist/cjs/groupview/titlebar/tabsContainer.js +1 -1
  21. package/dist/cjs/groupview/titlebar/tabsContainer.js.map +1 -1
  22. package/dist/cjs/groupview/types.d.ts +0 -4
  23. package/dist/cjs/index.d.ts +1 -0
  24. package/dist/cjs/index.js.map +1 -1
  25. package/dist/cjs/paneview/defaultPaneviewHeader.d.ts +3 -0
  26. package/dist/cjs/paneview/defaultPaneviewHeader.js +29 -5
  27. package/dist/cjs/paneview/defaultPaneviewHeader.js.map +1 -1
  28. package/dist/cjs/paneview/draggablePaneviewPanel.d.ts +3 -1
  29. package/dist/cjs/paneview/draggablePaneviewPanel.js +24 -9
  30. package/dist/cjs/paneview/draggablePaneviewPanel.js.map +1 -1
  31. package/dist/cjs/paneview/options.d.ts +2 -0
  32. package/dist/cjs/paneview/paneviewComponent.d.ts +12 -1
  33. package/dist/cjs/paneview/paneviewComponent.js +13 -1
  34. package/dist/cjs/paneview/paneviewComponent.js.map +1 -1
  35. package/dist/cjs/react/deserializer.js +13 -5
  36. package/dist/cjs/react/deserializer.js.map +1 -1
  37. package/dist/cjs/react/dockview/defaultTab.d.ts +4 -0
  38. package/dist/cjs/react/dockview/defaultTab.js +73 -0
  39. package/dist/cjs/react/dockview/defaultTab.js.map +1 -0
  40. package/dist/cjs/react/dockview/dockview.d.ts +3 -0
  41. package/dist/cjs/react/dockview/dockview.js +45 -3
  42. package/dist/cjs/react/dockview/dockview.js.map +1 -1
  43. package/dist/cjs/react/dockview/groupControlsRenderer.d.ts +43 -0
  44. package/dist/cjs/react/dockview/groupControlsRenderer.js +87 -0
  45. package/dist/cjs/react/dockview/groupControlsRenderer.js.map +1 -0
  46. package/dist/cjs/react/dockview/reactContentPart.d.ts +1 -16
  47. package/dist/cjs/react/dockview/reactContentPart.js +2 -18
  48. package/dist/cjs/react/dockview/reactContentPart.js.map +1 -1
  49. package/dist/cjs/react/dockview/reactHeaderPart.d.ts +2 -0
  50. package/dist/cjs/react/dockview/reactHeaderPart.js +4 -0
  51. package/dist/cjs/react/dockview/reactHeaderPart.js.map +1 -1
  52. package/dist/cjs/react/index.d.ts +2 -2
  53. package/dist/cjs/react/index.js +1 -2
  54. package/dist/cjs/react/index.js.map +1 -1
  55. package/dist/cjs/react/paneview/paneview.d.ts +2 -0
  56. package/dist/cjs/react/paneview/paneview.js +9 -0
  57. package/dist/cjs/react/paneview/paneview.js.map +1 -1
  58. package/dist/cjs/react/react.d.ts +1 -0
  59. package/dist/cjs/react/react.js +12 -2
  60. package/dist/cjs/react/react.js.map +1 -1
  61. package/dist/cjs/react/svg.d.ts +3 -0
  62. package/dist/cjs/react/svg.js +36 -0
  63. package/dist/cjs/react/svg.js.map +1 -0
  64. package/dist/cjs/svg.d.ts +3 -0
  65. package/dist/cjs/svg.js +44 -0
  66. package/dist/cjs/svg.js.map +1 -0
  67. package/dist/dockview.amd.js +327 -113
  68. package/dist/dockview.amd.min.js +2 -2
  69. package/dist/dockview.amd.min.noStyle.js +2 -2
  70. package/dist/dockview.amd.noStyle.js +326 -112
  71. package/dist/dockview.cjs.js +327 -113
  72. package/dist/dockview.esm.js +327 -112
  73. package/dist/dockview.esm.min.js +2 -2
  74. package/dist/dockview.js +327 -113
  75. package/dist/dockview.min.js +2 -2
  76. package/dist/dockview.min.noStyle.js +2 -2
  77. package/dist/dockview.noStyle.js +326 -112
  78. package/dist/esm/dockview/components/tab/defaultTab.d.ts +1 -0
  79. package/dist/esm/dockview/components/tab/defaultTab.js +5 -2
  80. package/dist/esm/dockview/components/watermark/watermark.js +3 -1
  81. package/dist/esm/dockview/defaultGroupPanelView.d.ts +1 -5
  82. package/dist/esm/dockview/defaultGroupPanelView.js +5 -16
  83. package/dist/esm/dockview/dockviewComponent.d.ts +1 -1
  84. package/dist/esm/dockview/dockviewComponent.js +7 -18
  85. package/dist/esm/dockview/options.d.ts +5 -0
  86. package/dist/esm/groupview/groupview.d.ts +16 -15
  87. package/dist/esm/groupview/groupview.js +23 -32
  88. package/dist/esm/groupview/tab.d.ts +1 -0
  89. package/dist/esm/groupview/tab.js +2 -1
  90. package/dist/esm/groupview/titlebar/tabsContainer.js +1 -1
  91. package/dist/esm/groupview/types.d.ts +0 -4
  92. package/dist/esm/index.d.ts +1 -0
  93. package/dist/esm/paneview/defaultPaneviewHeader.d.ts +3 -0
  94. package/dist/esm/paneview/defaultPaneviewHeader.js +29 -5
  95. package/dist/esm/paneview/draggablePaneviewPanel.d.ts +3 -1
  96. package/dist/esm/paneview/draggablePaneviewPanel.js +24 -9
  97. package/dist/esm/paneview/options.d.ts +2 -0
  98. package/dist/esm/paneview/paneviewComponent.d.ts +12 -1
  99. package/dist/esm/paneview/paneviewComponent.js +9 -1
  100. package/dist/esm/react/deserializer.js +13 -5
  101. package/dist/esm/react/dockview/defaultTab.d.ts +4 -0
  102. package/dist/esm/react/dockview/defaultTab.js +34 -0
  103. package/dist/esm/react/dockview/dockview.d.ts +3 -0
  104. package/dist/esm/react/dockview/dockview.js +30 -1
  105. package/dist/esm/react/dockview/groupControlsRenderer.d.ts +43 -0
  106. package/dist/esm/react/dockview/groupControlsRenderer.js +68 -0
  107. package/dist/esm/react/dockview/reactContentPart.d.ts +1 -16
  108. package/dist/esm/react/dockview/reactContentPart.js +2 -14
  109. package/dist/esm/react/dockview/reactHeaderPart.d.ts +2 -0
  110. package/dist/esm/react/dockview/reactHeaderPart.js +4 -0
  111. package/dist/esm/react/index.d.ts +2 -2
  112. package/dist/esm/react/index.js +1 -2
  113. package/dist/esm/react/paneview/paneview.d.ts +2 -0
  114. package/dist/esm/react/paneview/paneview.js +9 -0
  115. package/dist/esm/react/react.d.ts +1 -0
  116. package/dist/esm/react/react.js +12 -2
  117. package/dist/esm/react/svg.d.ts +3 -0
  118. package/dist/esm/react/svg.js +7 -0
  119. package/dist/esm/svg.d.ts +3 -0
  120. package/dist/esm/svg.js +31 -0
  121. package/dist/styles/dockview.css +155 -42
  122. package/package.json +2 -2
package/dist/dockview.js CHANGED
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * dockview
3
- * @version 1.4.3
3
+ * @version 1.5.0
4
4
  * @link https://github.com/mathuo/dockview
5
5
  * @license MIT
6
6
  */
@@ -58,7 +58,7 @@
58
58
  }
59
59
  }
60
60
 
61
- 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 cursor: pointer;\n}\n.pane-container .view .default-header .collapsed {\n transform: rotate(-90deg);\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.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}";
61
+ 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}";
62
62
  styleInject(css_248z);
63
63
 
64
64
  class TransferObject {
@@ -2712,6 +2712,7 @@
2712
2712
  constructor(panelId, accessor, group) {
2713
2713
  super();
2714
2714
  this.panelId = panelId;
2715
+ this.accessor = accessor;
2715
2716
  this.group = group;
2716
2717
  this._onChanged = new Emitter();
2717
2718
  this.onChanged = this._onChanged.event;
@@ -2762,7 +2763,7 @@
2762
2763
  validOverlays: 'none',
2763
2764
  canDisplayOverlay: (event) => {
2764
2765
  const data = getPanelData();
2765
- if (data) {
2766
+ if (data && this.accessor.id === data.viewId) {
2766
2767
  return this.panelId !== data.panelId;
2767
2768
  }
2768
2769
  return this.group.model.canDisplayOverlay(event, exports.DockviewDropTargets.Tab);
@@ -2820,7 +2821,7 @@
2820
2821
  canDisplayOverlay: (event) => {
2821
2822
  var _a;
2822
2823
  const data = getPanelData();
2823
- if (data) {
2824
+ if (data && this.accessor.id === data.viewId) {
2824
2825
  // don't show the overlay if the tab being dragged is the last panel of this group
2825
2826
  return ((_a = last(this.tabs)) === null || _a === void 0 ? void 0 : _a.value.panelId) !== data.panelId;
2826
2827
  }
@@ -2977,12 +2978,6 @@
2977
2978
  }
2978
2979
  }
2979
2980
 
2980
- exports.GroupChangeKind2 = void 0;
2981
- (function (GroupChangeKind2) {
2982
- GroupChangeKind2["ADD_PANEL"] = "ADD_PANEL";
2983
- GroupChangeKind2["REMOVE_PANEL"] = "REMOVE_PANEL";
2984
- GroupChangeKind2["PANEL_ACTIVE"] = "PANEL_ACTIVE";
2985
- })(exports.GroupChangeKind2 || (exports.GroupChangeKind2 = {}));
2986
2981
  class Groupview extends CompositeDisposable {
2987
2982
  constructor(container, accessor, id, options, parent) {
2988
2983
  super();
@@ -3001,12 +2996,15 @@
3001
2996
  this._panels = [];
3002
2997
  this._onMove = new Emitter();
3003
2998
  this.onMove = this._onMove.event;
3004
- this._onDidGroupChange = new Emitter();
3005
- this.onDidGroupChange = this._onDidGroupChange.event;
3006
2999
  this._onDidDrop = new Emitter();
3007
3000
  this.onDidDrop = this._onDidDrop.event;
3001
+ this._onDidAddPanel = new Emitter();
3002
+ this.onDidAddPanel = this._onDidAddPanel.event;
3003
+ this._onDidRemovePanel = new Emitter();
3004
+ this.onDidRemovePanel = this._onDidRemovePanel.event;
3005
+ this._onDidActivePanelChange = new Emitter();
3006
+ this.onDidActivePanelChange = this._onDidActivePanelChange.event;
3008
3007
  this.container.classList.add('groupview');
3009
- this.addDisposables(this._onMove, this._onDidGroupChange, this._onDidChange, this._onDidDrop);
3010
3008
  this.tabsContainer = new TabsContainer(this.accessor, this.parent, {
3011
3009
  tabHeight: options.tabHeight,
3012
3010
  });
@@ -3018,7 +3016,7 @@
3018
3016
  return false;
3019
3017
  }
3020
3018
  const data = getPanelData();
3021
- if (data) {
3019
+ if (data && data.viewId === this.accessor.id) {
3022
3020
  const groupHasOnePanelAndIsActiveDragElement = this._panels.length === 1 && data.groupId === this.id;
3023
3021
  return !groupHasOnePanelAndIsActiveDragElement;
3024
3022
  }
@@ -3028,7 +3026,7 @@
3028
3026
  container.append(this.tabsContainer.element, this.contentContainer.element);
3029
3027
  this.header.hidden = !!options.hideHeader;
3030
3028
  this.locked = !!options.locked;
3031
- this.addDisposables(this._onMove, this._onDidGroupChange, this.tabsContainer.onDrop((event) => {
3029
+ this.addDisposables(this._onMove, this._onDidChange, this._onDidDrop, this._onDidAddPanel, this._onDidRemovePanel, this._onDidActivePanelChange, this.tabsContainer.onDrop((event) => {
3032
3030
  this.handleDropEvent(event.event, exports.Position.Center, event.index);
3033
3031
  }), this.contentContainer.onDidFocus(() => {
3034
3032
  this.accessor.doSetGroupActive(this.parent, true);
@@ -3100,6 +3098,15 @@
3100
3098
  // correctly initialized
3101
3099
  this.setActive(this.isActive, true, true);
3102
3100
  this.updateContainer();
3101
+ if (this.accessor.options.createGroupControlElement) {
3102
+ this._control = this.accessor.options.createGroupControlElement(this.parent);
3103
+ this.addDisposables(this._control);
3104
+ this._control.init({
3105
+ containerApi: new DockviewApi(this.accessor),
3106
+ api: this.parent.api,
3107
+ });
3108
+ this.tabsContainer.setActionElement(this._control.element);
3109
+ }
3103
3110
  }
3104
3111
  indexOf(panel) {
3105
3112
  return this.tabsContainer.indexOf(panel.id);
@@ -3230,14 +3237,8 @@
3230
3237
  isPanelActive(panel) {
3231
3238
  return this._activePanel === panel;
3232
3239
  }
3233
- updateActions() {
3234
- var _a, _b;
3235
- if (this.isActive && ((_b = (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.view) === null || _b === void 0 ? void 0 : _b.actions)) {
3236
- this.tabsContainer.setActionElement(this._activePanel.view.actions.element);
3237
- }
3238
- else {
3239
- this.tabsContainer.setActionElement(undefined);
3240
- }
3240
+ updateActions(element) {
3241
+ this.tabsContainer.setActionElement(element);
3241
3242
  }
3242
3243
  setActive(isGroupActive, skipFocus = false, force = false) {
3243
3244
  var _a, _b;
@@ -3293,10 +3294,7 @@
3293
3294
  if (this.mostRecentlyUsed.includes(panel)) {
3294
3295
  this.mostRecentlyUsed.splice(this.mostRecentlyUsed.indexOf(panel), 1);
3295
3296
  }
3296
- this._onDidGroupChange.fire({
3297
- kind: exports.GroupChangeKind2.REMOVE_PANEL,
3298
- panel,
3299
- });
3297
+ this._onDidRemovePanel.fire({ panel });
3300
3298
  }
3301
3299
  doAddPanel(panel, index = this.panels.length, skipSetActive = false) {
3302
3300
  const existingPanel = this._panels.indexOf(panel);
@@ -3313,10 +3311,7 @@
3313
3311
  }
3314
3312
  this.updateMru(panel);
3315
3313
  this.panels.splice(index, 0, panel);
3316
- this._onDidGroupChange.fire({
3317
- kind: exports.GroupChangeKind2.ADD_PANEL,
3318
- panel,
3319
- });
3314
+ this._onDidAddPanel.fire({ panel });
3320
3315
  }
3321
3316
  doSetActivePanel(panel) {
3322
3317
  this._activePanel = panel;
@@ -3324,10 +3319,7 @@
3324
3319
  this.tabsContainer.setActivePanel(panel);
3325
3320
  panel.layout(this._width, this._height);
3326
3321
  this.updateMru(panel);
3327
- this._onDidGroupChange.fire({
3328
- kind: exports.GroupChangeKind2.PANEL_ACTIVE,
3329
- panel,
3330
- });
3322
+ this._onDidActivePanelChange.fire({ panel });
3331
3323
  }
3332
3324
  }
3333
3325
  updateMru(panel) {
@@ -3337,7 +3329,6 @@
3337
3329
  this.mostRecentlyUsed = [panel, ...this.mostRecentlyUsed];
3338
3330
  }
3339
3331
  updateContainer() {
3340
- this.updateActions();
3341
3332
  toggleClass(this.container, 'empty', this.isEmpty);
3342
3333
  this.panels.forEach((panel) => panel.updateParentGroup(this.parent, this.isActive));
3343
3334
  if (this.isEmpty && !this.watermark) {
@@ -3374,6 +3365,7 @@
3374
3365
  nativeEvent: event,
3375
3366
  target,
3376
3367
  group: this.accessor.getPanel(this.id),
3368
+ getData: getPanelData,
3377
3369
  });
3378
3370
  }
3379
3371
  return false;
@@ -3422,7 +3414,7 @@
3422
3414
  }
3423
3415
  }
3424
3416
 
3425
- const nextLayoutId = sequentialNumberGenerator();
3417
+ const nextLayoutId$1 = sequentialNumberGenerator();
3426
3418
  function toTarget(direction) {
3427
3419
  switch (direction) {
3428
3420
  case 'left':
@@ -3442,7 +3434,7 @@
3442
3434
  constructor(_element, options) {
3443
3435
  super();
3444
3436
  this._element = _element;
3445
- this._id = nextLayoutId.next();
3437
+ this._id = nextLayoutId$1.next();
3446
3438
  this._groups = new Map();
3447
3439
  this._onDidLayoutChange = new Emitter();
3448
3440
  this.onDidLayoutChange = this._onDidLayoutChange.event;
@@ -3902,6 +3894,38 @@
3902
3894
  }
3903
3895
  }
3904
3896
 
3897
+ const createSvgElementFromPath = (params) => {
3898
+ const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
3899
+ svg.setAttributeNS(null, 'height', params.height);
3900
+ svg.setAttributeNS(null, 'width', params.width);
3901
+ svg.setAttributeNS(null, 'viewBox', params.viewbox);
3902
+ svg.setAttributeNS(null, 'aria-hidden', 'false');
3903
+ svg.setAttributeNS(null, 'focusable', 'false');
3904
+ svg.classList.add('dockview-svg');
3905
+ const path = document.createElementNS('http://www.w3.org/2000/svg', 'path');
3906
+ path.setAttributeNS(null, 'd', params.path);
3907
+ svg.appendChild(path);
3908
+ return svg;
3909
+ };
3910
+ const createCloseButton = () => createSvgElementFromPath({
3911
+ width: '11',
3912
+ height: '11',
3913
+ viewbox: '0 0 28 28',
3914
+ 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',
3915
+ });
3916
+ const createExpandMoreButton = () => createSvgElementFromPath({
3917
+ width: '11',
3918
+ height: '11',
3919
+ viewbox: '0 0 24 15',
3920
+ path: 'M12 14.15L0 2.15L2.15 0L12 9.9L21.85 0.0499992L24 2.2L12 14.15Z',
3921
+ });
3922
+ const createChevronRightButton = () => createSvgElementFromPath({
3923
+ width: '11',
3924
+ height: '11',
3925
+ viewbox: '0 0 15 25',
3926
+ path: 'M2.15 24.1L0 21.95L9.9 12.05L0 2.15L2.15 0L14.2 12.05L2.15 24.1Z',
3927
+ });
3928
+
3905
3929
  class Watermark extends CompositeDisposable {
3906
3930
  constructor() {
3907
3931
  super();
@@ -3918,8 +3942,9 @@
3918
3942
  const actions = new ActionContainer();
3919
3943
  title.appendChild(emptySpace);
3920
3944
  title.appendChild(actions.element);
3921
- const closeAnchor = document.createElement('a');
3945
+ const closeAnchor = document.createElement('div');
3922
3946
  closeAnchor.className = 'close-action';
3947
+ closeAnchor.appendChild(createCloseButton());
3923
3948
  actions.add(closeAnchor);
3924
3949
  this.addDisposables(addDisposableListener(closeAnchor, 'click', (ev) => {
3925
3950
  var _a;
@@ -3992,6 +4017,7 @@
3992
4017
  return new Component(id, componentName);
3993
4018
  }
3994
4019
 
4020
+ const DEFAULT_TAB_IDENTIFIER = '__default__tab__';
3995
4021
  class DefaultTab extends CompositeDisposable {
3996
4022
  constructor() {
3997
4023
  super();
@@ -4011,8 +4037,9 @@
4011
4037
  this._list = document.createElement('ul');
4012
4038
  this._list.className = 'tab-list';
4013
4039
  //
4014
- this.action = document.createElement('a');
4040
+ this.action = document.createElement('div');
4015
4041
  this.action.className = 'tab-action';
4042
+ this.action.appendChild(createCloseButton());
4016
4043
  //
4017
4044
  this._element.appendChild(this._content);
4018
4045
  this._element.appendChild(this._actionContainer);
@@ -4028,7 +4055,7 @@
4028
4055
  return this._element;
4029
4056
  }
4030
4057
  get id() {
4031
- return '__DEFAULT_TAB__';
4058
+ return DEFAULT_TAB_IDENTIFIER;
4032
4059
  }
4033
4060
  update(event) {
4034
4061
  this.params = Object.assign(Object.assign({}, this.params), event.params);
@@ -4345,16 +4372,6 @@
4345
4372
  var _a;
4346
4373
  this._content = renderers.content;
4347
4374
  this._tab = (_a = renderers.tab) !== null && _a !== void 0 ? _a : new DefaultTab();
4348
- this._actions =
4349
- renderers.actions ||
4350
- (this.content.actions
4351
- ? {
4352
- element: this.content.actions,
4353
- dispose: () => {
4354
- //
4355
- },
4356
- }
4357
- : undefined);
4358
4375
  }
4359
4376
  get content() {
4360
4377
  return this._content;
@@ -4362,9 +4379,6 @@
4362
4379
  get tab() {
4363
4380
  return this._tab;
4364
4381
  }
4365
- get actions() {
4366
- return this._actions;
4367
- }
4368
4382
  init(params) {
4369
4383
  this.content.init(Object.assign(Object.assign({}, params), { tab: this.tab }));
4370
4384
  this.tab.init(params);
@@ -4382,16 +4396,18 @@
4382
4396
  this.tab.update(event);
4383
4397
  }
4384
4398
  toJSON() {
4399
+ let tab = this.tab instanceof DefaultTab ? undefined : this.tab.toJSON();
4400
+ if (tab && Object.keys(tab).length === 0) {
4401
+ tab = undefined;
4402
+ }
4385
4403
  return {
4386
4404
  content: this.content.toJSON(),
4387
- tab: this.tab instanceof DefaultTab ? undefined : this.tab.toJSON(),
4405
+ tab,
4388
4406
  };
4389
4407
  }
4390
4408
  dispose() {
4391
- var _a;
4392
4409
  this.content.dispose();
4393
4410
  this.tab.dispose();
4394
- (_a = this.actions) === null || _a === void 0 ? void 0 : _a.dispose();
4395
4411
  }
4396
4412
  }
4397
4413
 
@@ -4806,22 +4822,12 @@
4806
4822
  this.moveGroupOrPanel(view, groupId, itemId, target, index);
4807
4823
  }), view.model.onDidDrop((event) => {
4808
4824
  this._onDidDrop.fire(Object.assign(Object.assign({}, event), { api: this._api, group: view }));
4809
- }), view.model.onDidGroupChange((event) => {
4810
- switch (event.kind) {
4811
- case exports.GroupChangeKind2.ADD_PANEL:
4812
- if (event.panel) {
4813
- this._onDidAddPanel.fire(event.panel);
4814
- }
4815
- break;
4816
- case exports.GroupChangeKind2.REMOVE_PANEL:
4817
- if (event.panel) {
4818
- this._onDidRemovePanel.fire(event.panel);
4819
- }
4820
- break;
4821
- case exports.GroupChangeKind2.PANEL_ACTIVE:
4822
- this._onDidActivePanelChange.fire(event.panel);
4823
- break;
4824
- }
4825
+ }), view.model.onDidAddPanel((event) => {
4826
+ this._onDidAddPanel.fire(event.panel);
4827
+ }), view.model.onDidRemovePanel((event) => {
4828
+ this._onDidRemovePanel.fire(event.panel);
4829
+ }), view.model.onDidActivePanelChange((event) => {
4830
+ this._onDidActivePanelChange.fire(event.panel);
4825
4831
  }));
4826
4832
  this._groups.set(view.id, { value: view, disposable });
4827
4833
  }
@@ -4836,7 +4842,7 @@
4836
4842
  createPanel(options, group) {
4837
4843
  const view = new DefaultGroupPanelView({
4838
4844
  content: this.createContentComponent(options.id, options.component),
4839
- tab: this.createTabComponent(options.id, options.tabComponent),
4845
+ tab: this.createTabComponent(options.id, options.tabComponent || this.options.defaultTabComponent),
4840
4846
  });
4841
4847
  const panel = new DockviewGroupPanel(options.id, this, this._api, group);
4842
4848
  panel.init({
@@ -5589,8 +5595,9 @@
5589
5595
  }
5590
5596
 
5591
5597
  class DraggablePaneviewPanel extends PaneviewPanel {
5592
- constructor(id, component, headerComponent, orientation, isExpanded, disableDnd) {
5598
+ constructor(accessor, id, component, headerComponent, orientation, isExpanded, disableDnd) {
5593
5599
  super(id, component, headerComponent, orientation, isExpanded, true);
5600
+ this.accessor = accessor;
5594
5601
  this._onDidDrop = new Emitter();
5595
5602
  this.onDidDrop = this._onDidDrop.event;
5596
5603
  if (!disableDnd) {
@@ -5602,10 +5609,11 @@
5602
5609
  return;
5603
5610
  }
5604
5611
  const id = this.id;
5612
+ const accessorId = this.accessor.id;
5605
5613
  this.header.draggable = true;
5606
5614
  this.handler = new (class PaneDragHandler extends DragHandler {
5607
5615
  getData() {
5608
- LocalSelectionTransfer.getInstance().setData([new PaneTransfer('paneview', id)], PaneTransfer.prototype);
5616
+ LocalSelectionTransfer.getInstance().setData([new PaneTransfer(accessorId, id)], PaneTransfer.prototype);
5609
5617
  return {
5610
5618
  dispose: () => {
5611
5619
  LocalSelectionTransfer.getInstance().clearData(PaneTransfer.prototype);
@@ -5615,12 +5623,22 @@
5615
5623
  })(this.header);
5616
5624
  this.target = new Droptarget(this.element, {
5617
5625
  validOverlays: 'vertical',
5618
- canDisplayOverlay: () => {
5626
+ canDisplayOverlay: (event) => {
5619
5627
  const data = getPaneData();
5620
- if (!data) {
5621
- return true;
5628
+ if (data) {
5629
+ if (data.paneId !== this.id &&
5630
+ data.viewId === this.accessor.id) {
5631
+ return true;
5632
+ }
5633
+ }
5634
+ if (this.accessor.options.showDndOverlay) {
5635
+ return this.accessor.options.showDndOverlay({
5636
+ nativeEvent: event,
5637
+ getData: getPaneData,
5638
+ panel: this,
5639
+ });
5622
5640
  }
5623
- return data.paneId !== this.id;
5641
+ return false;
5624
5642
  },
5625
5643
  });
5626
5644
  this.addDisposables(this._onDidDrop, this.handler, this.target, this.target.onDrop((event) => {
@@ -5629,8 +5647,10 @@
5629
5647
  }
5630
5648
  onDrop(event) {
5631
5649
  const data = getPaneData();
5632
- if (!data) {
5633
- this._onDidDrop.fire(Object.assign(Object.assign({}, event), { panel: this, getData: () => getPaneData() }));
5650
+ if (!data || data.viewId !== this.accessor.id) {
5651
+ // if there is no local drag event for this panel
5652
+ // or if the drag event was creating by another Paneview instance
5653
+ this._onDidDrop.fire(Object.assign(Object.assign({}, event), { panel: this, getData: getPaneData }));
5634
5654
  return;
5635
5655
  }
5636
5656
  const containerApi = this._params
@@ -5638,7 +5658,8 @@
5638
5658
  const panelId = data.paneId;
5639
5659
  const existingPanel = containerApi.getPanel(panelId);
5640
5660
  if (!existingPanel) {
5641
- this._onDidDrop.fire(Object.assign(Object.assign({}, event), { panel: this, getData: () => getPaneData() }));
5661
+ // if the panel doesn't exist
5662
+ this._onDidDrop.fire(Object.assign(Object.assign({}, event), { panel: this, getData: getPaneData }));
5642
5663
  return;
5643
5664
  }
5644
5665
  const allPanels = containerApi.panels;
@@ -5662,12 +5683,15 @@
5662
5683
  class DefaultHeader extends CompositeDisposable {
5663
5684
  constructor() {
5664
5685
  super();
5686
+ this._expandedIcon = createExpandMoreButton();
5687
+ this._collapsedIcon = createChevronRightButton();
5665
5688
  this.disposable = new MutableDisposable();
5666
5689
  this.apiRef = { api: null };
5667
5690
  this._element = document.createElement('div');
5668
5691
  this.element.className = 'default-header';
5669
5692
  this._content = document.createElement('span');
5670
- this._expander = document.createElement('a');
5693
+ this._expander = document.createElement('div');
5694
+ this._expander.className = 'dockview-pane-header-icon';
5671
5695
  this.element.appendChild(this._expander);
5672
5696
  this.element.appendChild(this._content);
5673
5697
  this.addDisposables(addDisposableListener(this._element, 'click', () => {
@@ -5681,12 +5705,32 @@
5681
5705
  init(params) {
5682
5706
  this.apiRef.api = params.api;
5683
5707
  this._content.textContent = params.title;
5684
- this._expander.textContent = '▼';
5685
- toggleClass(this._expander, 'collapsed', !params.api.isExpanded);
5686
- this.disposable.value = params.api.onDidExpansionChange((e) => {
5687
- toggleClass(this._expander, 'collapsed', !e.isExpanded);
5708
+ this.updateIcon();
5709
+ this.disposable.value = params.api.onDidExpansionChange(() => {
5710
+ this.updateIcon();
5688
5711
  });
5689
5712
  }
5713
+ updateIcon() {
5714
+ var _a;
5715
+ const isExpanded = !!((_a = this.apiRef.api) === null || _a === void 0 ? void 0 : _a.isExpanded);
5716
+ toggleClass(this._expander, 'collapsed', !isExpanded);
5717
+ if (isExpanded) {
5718
+ if (this._expander.contains(this._collapsedIcon)) {
5719
+ this._collapsedIcon.remove();
5720
+ }
5721
+ if (!this._expander.contains(this._expandedIcon)) {
5722
+ this._expander.appendChild(this._expandedIcon);
5723
+ }
5724
+ }
5725
+ else {
5726
+ if (this._expander.contains(this._expandedIcon)) {
5727
+ this._expandedIcon.remove();
5728
+ }
5729
+ if (!this._expander.contains(this._collapsedIcon)) {
5730
+ this._expander.appendChild(this._collapsedIcon);
5731
+ }
5732
+ }
5733
+ }
5690
5734
  update(_params) {
5691
5735
  //
5692
5736
  }
@@ -5696,9 +5740,10 @@
5696
5740
  }
5697
5741
  }
5698
5742
 
5743
+ const nextLayoutId = sequentialNumberGenerator();
5699
5744
  class PaneFramework extends DraggablePaneviewPanel {
5700
5745
  constructor(options) {
5701
- super(options.id, options.component, options.headerComponent, options.orientation, options.isExpanded, options.disableDnd);
5746
+ super(options.accessor, options.id, options.component, options.headerComponent, options.orientation, options.isExpanded, options.disableDnd);
5702
5747
  this.options = options;
5703
5748
  }
5704
5749
  getBodyComponent() {
@@ -5712,6 +5757,7 @@
5712
5757
  constructor(element, options) {
5713
5758
  super();
5714
5759
  this.element = element;
5760
+ this._id = nextLayoutId.next();
5715
5761
  this._disposable = new MutableDisposable();
5716
5762
  this._viewDisposables = new Map();
5717
5763
  this._onDidLayoutfromJSON = new Emitter();
@@ -5738,6 +5784,9 @@
5738
5784
  });
5739
5785
  this.addDisposables(this._disposable);
5740
5786
  }
5787
+ get id() {
5788
+ return this._id;
5789
+ }
5741
5790
  get panels() {
5742
5791
  return this.paneview.getPanes();
5743
5792
  }
@@ -5802,6 +5851,7 @@
5802
5851
  orientation: exports.Orientation.VERTICAL,
5803
5852
  isExpanded: !!options.isExpanded,
5804
5853
  disableDnd: !!this.options.disableDnd,
5854
+ accessor: this,
5805
5855
  });
5806
5856
  this.doAddPanel(view);
5807
5857
  const size = typeof options.size === 'number' ? options.size : exports.Sizing.Distribute;
@@ -5896,6 +5946,7 @@
5896
5946
  orientation: exports.Orientation.VERTICAL,
5897
5947
  isExpanded: !!view.expanded,
5898
5948
  disableDnd: !!this.options.disableDnd,
5949
+ accessor: this,
5899
5950
  });
5900
5951
  this.doAddPanel(panel);
5901
5952
  queue.push(() => {
@@ -6095,15 +6146,21 @@
6095
6146
  this.component = component;
6096
6147
  this.parameters = parameters;
6097
6148
  this.context = context;
6149
+ this._initialProps = {};
6098
6150
  this.disposed = false;
6099
6151
  this.createPortal();
6100
6152
  }
6101
6153
  update(props) {
6102
- var _a;
6103
6154
  if (this.disposed) {
6104
6155
  throw new Error('invalid operation: resource is already disposed');
6105
6156
  }
6106
- (_a = this.componentInstance) === null || _a === void 0 ? void 0 : _a.update(props);
6157
+ if (!this.componentInstance) {
6158
+ // if the component is yet to be mounted store the props
6159
+ this._initialProps = Object.assign(Object.assign({}, this._initialProps), props);
6160
+ }
6161
+ else {
6162
+ this.componentInstance.update(props);
6163
+ }
6107
6164
  }
6108
6165
  createPortal() {
6109
6166
  if (this.disposed) {
@@ -6123,6 +6180,10 @@
6123
6180
  componentProps: this.parameters,
6124
6181
  ref: (element) => {
6125
6182
  this.componentInstance = element;
6183
+ if (Object.keys(this._initialProps).length > 0) {
6184
+ this.componentInstance.update(this._initialProps);
6185
+ this._initialProps = {}; // don't keep a reference to the users object once no longer required
6186
+ }
6126
6187
  },
6127
6188
  });
6128
6189
  const node = this.context
@@ -6179,30 +6240,19 @@
6179
6240
  this.onDidBlur = this._onDidBlur.event;
6180
6241
  this._element = document.createElement('div');
6181
6242
  this._element.className = 'dockview-react-part';
6182
- this._actionsElement = document.createElement('div');
6183
- this._actionsElement.className = 'dockview-react-part';
6184
6243
  }
6185
6244
  get element() {
6186
6245
  return this._element;
6187
6246
  }
6188
- get actions() {
6189
- return this._actionsElement;
6190
- }
6191
6247
  focus() {
6192
6248
  // TODO
6193
6249
  }
6194
6250
  init(parameters) {
6195
- const context = {
6196
- api: parameters.api,
6197
- containerApi: parameters.containerApi,
6198
- actionsPortalElement: this._actionsElement,
6199
- tabPortalElement: parameters.tab,
6200
- };
6201
6251
  this.part = new ReactPart(this.element, this.reactPortalStore, this.component, {
6202
6252
  params: parameters.params,
6203
6253
  api: parameters.api,
6204
6254
  containerApi: parameters.containerApi,
6205
- }, context);
6255
+ });
6206
6256
  }
6207
6257
  toJSON() {
6208
6258
  return {
@@ -6220,11 +6270,10 @@
6220
6270
  // noop
6221
6271
  }
6222
6272
  dispose() {
6223
- var _a, _b;
6273
+ var _a;
6224
6274
  this._onDidFocus.dispose();
6225
6275
  this._onDidBlur.dispose();
6226
6276
  (_a = this.part) === null || _a === void 0 ? void 0 : _a.dispose();
6227
- (_b = this.actionsPart) === null || _b === void 0 ? void 0 : _b.dispose();
6228
6277
  }
6229
6278
  }
6230
6279
 
@@ -6254,6 +6303,9 @@
6254
6303
  (_a = this.part) === null || _a === void 0 ? void 0 : _a.update(event.params);
6255
6304
  }
6256
6305
  toJSON() {
6306
+ if (this.id === DEFAULT_TAB_IDENTIFIER) {
6307
+ return {};
6308
+ }
6257
6309
  return {
6258
6310
  id: this.id,
6259
6311
  };
@@ -6275,17 +6327,25 @@
6275
6327
  this.layout = layout;
6276
6328
  }
6277
6329
  fromJSON(panelData, group) {
6278
- var _a, _b, _c;
6330
+ var _a, _b, _c, _d;
6279
6331
  const panelId = panelData.id;
6280
6332
  const params = panelData.params;
6281
6333
  const title = panelData.title;
6282
6334
  const suppressClosable = panelData.suppressClosable;
6283
6335
  const viewData = panelData.view;
6336
+ let tab;
6337
+ if ((_a = viewData.tab) === null || _a === void 0 ? void 0 : _a.id) {
6338
+ 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());
6339
+ }
6340
+ else if (this.layout.options.defaultTabComponent) {
6341
+ 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());
6342
+ }
6343
+ else {
6344
+ tab = new DefaultTab();
6345
+ }
6284
6346
  const view = new DefaultGroupPanelView({
6285
- 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),
6286
- tab: ((_b = viewData.tab) === null || _b === void 0 ? void 0 : _b.id)
6287
- ? 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)
6288
- : new DefaultTab(),
6347
+ 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),
6348
+ tab,
6289
6349
  });
6290
6350
  const panel = new DockviewGroupPanel(panelId, this.layout, new DockviewApi(this.layout), group);
6291
6351
  panel.init({
@@ -6353,6 +6413,80 @@
6353
6413
  }
6354
6414
  }
6355
6415
 
6416
+ class ReactGroupControlsRendererPart {
6417
+ constructor(component, reactPortalStore, _group) {
6418
+ this.component = component;
6419
+ this.reactPortalStore = reactPortalStore;
6420
+ this._group = _group;
6421
+ this.mutableDisposable = new MutableDisposable();
6422
+ this._element = document.createElement('div');
6423
+ this._element.className = 'dockview-react-part';
6424
+ }
6425
+ get element() {
6426
+ return this._element;
6427
+ }
6428
+ get part() {
6429
+ return this._part;
6430
+ }
6431
+ get group() {
6432
+ return this._group;
6433
+ }
6434
+ focus() {
6435
+ // TODO
6436
+ }
6437
+ init(parameters) {
6438
+ this.mutableDisposable.value = new CompositeDisposable(this._group.model.onDidAddPanel(() => {
6439
+ this.updatePanels();
6440
+ }), this._group.model.onDidRemovePanel(() => {
6441
+ this.updatePanels();
6442
+ }), this._group.model.onDidActivePanelChange(() => {
6443
+ this.updateActivePanel();
6444
+ }), parameters.api.onDidActiveChange(() => {
6445
+ this.updateGroupActive();
6446
+ }));
6447
+ this._part = new ReactPart(this.element, this.reactPortalStore, this.component, {
6448
+ api: parameters.api,
6449
+ containerApi: parameters.containerApi,
6450
+ panels: this._group.model.panels,
6451
+ activePanel: this._group.model.activePanel,
6452
+ isGroupActive: this._group.api.isActive,
6453
+ });
6454
+ }
6455
+ update(event) {
6456
+ var _a;
6457
+ (_a = this._part) === null || _a === void 0 ? void 0 : _a.update(event.params);
6458
+ }
6459
+ dispose() {
6460
+ var _a;
6461
+ this.mutableDisposable.dispose();
6462
+ (_a = this._part) === null || _a === void 0 ? void 0 : _a.dispose();
6463
+ }
6464
+ updatePanels() {
6465
+ this.update({ params: { panels: this._group.model.panels } });
6466
+ }
6467
+ updateActivePanel() {
6468
+ this.update({
6469
+ params: {
6470
+ activePanel: this._group.model.activePanel,
6471
+ },
6472
+ });
6473
+ }
6474
+ updateGroupActive() {
6475
+ this.update({
6476
+ params: {
6477
+ isGroupActive: this._group.api.isActive,
6478
+ },
6479
+ });
6480
+ }
6481
+ }
6482
+
6483
+ function createGroupControlElement(component, store) {
6484
+ return component
6485
+ ? (groupPanel) => {
6486
+ return new ReactGroupControlsRendererPart(component, store, groupPanel);
6487
+ }
6488
+ : undefined;
6489
+ }
6356
6490
  const DockviewReact = React__namespace.forwardRef((props, ref) => {
6357
6491
  const domRef = React__namespace.useRef(null);
6358
6492
  const dockviewRef = React__namespace.useRef();
@@ -6402,12 +6536,15 @@
6402
6536
  const dockview = new DockviewComponent(element, {
6403
6537
  frameworkComponentFactory: factory,
6404
6538
  frameworkComponents: props.components,
6405
- frameworkTabComponents: props.tabComponents,
6539
+ frameworkTabComponents: Object.assign(Object.assign({}, (props.tabComponents || {})), { [DEFAULT_TAB_IDENTIFIER]: props.defaultTabComponent }),
6406
6540
  tabHeight: props.tabHeight,
6407
6541
  watermarkFrameworkComponent: props.watermarkComponent,
6542
+ defaultTabComponent: DEFAULT_TAB_IDENTIFIER,
6408
6543
  styles: props.hideBorders
6409
6544
  ? { separatorBorder: 'transparent' }
6410
6545
  : undefined,
6546
+ showDndOverlay: props.showDndOverlay,
6547
+ createGroupControlElement: createGroupControlElement(props.groupControlComponent, { addPortal }),
6411
6548
  });
6412
6549
  (_a = domRef.current) === null || _a === void 0 ? void 0 : _a.appendChild(dockview.element);
6413
6550
  dockview.deserializer = new ReactPanelDeserialzier(dockview);
@@ -6484,10 +6621,79 @@
6484
6621
  disposable.dispose();
6485
6622
  };
6486
6623
  }, [props.onTabContextMenu]);
6624
+ React__namespace.useEffect(() => {
6625
+ if (!dockviewRef.current) {
6626
+ return;
6627
+ }
6628
+ dockviewRef.current.updateOptions({
6629
+ defaultTabComponent: DEFAULT_TAB_IDENTIFIER,
6630
+ frameworkTabComponents: Object.assign(Object.assign({}, (props.tabComponents || {})), { [DEFAULT_TAB_IDENTIFIER]: props.defaultTabComponent }),
6631
+ });
6632
+ }, [props.defaultTabComponent]);
6633
+ React__namespace.useEffect(() => {
6634
+ if (!dockviewRef.current) {
6635
+ return;
6636
+ }
6637
+ dockviewRef.current.updateOptions({
6638
+ createGroupControlElement: createGroupControlElement(props.groupControlComponent, { addPortal }),
6639
+ });
6640
+ }, [props.groupControlComponent]);
6487
6641
  return (React__namespace.createElement("div", { className: props.className, style: { height: '100%', width: '100%' }, ref: domRef }, portals));
6488
6642
  });
6489
6643
  DockviewReact.displayName = 'DockviewComponent';
6490
6644
 
6645
+ /******************************************************************************
6646
+ Copyright (c) Microsoft Corporation.
6647
+
6648
+ Permission to use, copy, modify, and/or distribute this software for any
6649
+ purpose with or without fee is hereby granted.
6650
+
6651
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
6652
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
6653
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
6654
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
6655
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
6656
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
6657
+ PERFORMANCE OF THIS SOFTWARE.
6658
+ ***************************************************************************** */
6659
+
6660
+ function __rest(s, e) {
6661
+ var t = {};
6662
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
6663
+ t[p] = s[p];
6664
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
6665
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
6666
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
6667
+ t[p[i]] = s[p[i]];
6668
+ }
6669
+ return t;
6670
+ }
6671
+
6672
+ const CloseButton = () => (React__namespace.createElement("svg", { height: "11", width: "11", viewBox: "0 0 28 28", "aria-hidden": 'false', focusable: false, className: "dockview-svg" },
6673
+ 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" })));
6674
+
6675
+ const DockviewDefaultTab = (_a) => {
6676
+ var { api, containerApi: _containerApi, params: _params } = _a, rest = __rest(_a, ["api", "containerApi", "params"]);
6677
+ const onClose = React__namespace.useCallback((event) => {
6678
+ event.stopPropagation();
6679
+ api.close();
6680
+ }, [api]);
6681
+ const onClick = React__namespace.useCallback((event) => {
6682
+ api.setActive();
6683
+ if (rest.onClick) {
6684
+ rest.onClick(event);
6685
+ }
6686
+ }, [api, rest.onClick]);
6687
+ const iconClassname = React__namespace.useMemo(() => {
6688
+ const cn = ['dockview-react-tab-action'];
6689
+ return cn.join(',');
6690
+ }, [api.suppressClosable]);
6691
+ return (React__namespace.createElement("div", Object.assign({}, rest, { onClick: onClick, className: "dockview-react-tab" }),
6692
+ React__namespace.createElement("span", { className: "dockview-react-tab-title" }, api.title),
6693
+ React__namespace.createElement("div", { className: iconClassname, onClick: onClose },
6694
+ React__namespace.createElement(CloseButton, null))));
6695
+ };
6696
+
6491
6697
  class ReactPanelView extends SplitviewPanel {
6492
6698
  constructor(id, component, reactComponent, reactPortalStore) {
6493
6699
  super(id, component);
@@ -6717,6 +6923,7 @@
6717
6923
  createComponent,
6718
6924
  },
6719
6925
  },
6926
+ showDndOverlay: props.showDndOverlay,
6720
6927
  });
6721
6928
  const api = new PaneviewApi(paneview);
6722
6929
  const { clientWidth, clientHeight } = domRef.current;
@@ -6761,6 +6968,14 @@
6761
6968
  disposable.dispose();
6762
6969
  };
6763
6970
  }, [props.onDidDrop]);
6971
+ React__namespace.useEffect(() => {
6972
+ if (!paneviewRef.current) {
6973
+ return;
6974
+ }
6975
+ paneviewRef.current.updateOptions({
6976
+ showDndOverlay: props.showDndOverlay,
6977
+ });
6978
+ }, [props.showDndOverlay]);
6764
6979
  return (React__namespace.createElement("div", { className: props.className, style: { height: '100%', width: '100%' }, ref: domRef }, portals));
6765
6980
  });
6766
6981
  PaneviewReact.displayName = 'PaneviewComponent';
@@ -6769,6 +6984,7 @@
6769
6984
  exports.ContentContainer = ContentContainer;
6770
6985
  exports.DockviewApi = DockviewApi;
6771
6986
  exports.DockviewComponent = DockviewComponent;
6987
+ exports.DockviewDefaultTab = DockviewDefaultTab;
6772
6988
  exports.DockviewReact = DockviewReact;
6773
6989
  exports.Gridview = Gridview;
6774
6990
  exports.GridviewApi = GridviewApi;
@@ -6785,8 +7001,6 @@
6785
7001
  exports.PaneviewComponent = PaneviewComponent;
6786
7002
  exports.PaneviewPanel = PaneviewPanel;
6787
7003
  exports.PaneviewReact = PaneviewReact;
6788
- exports.ReactPanelContentPart = ReactPanelContentPart;
6789
- exports.ReactPanelHeaderPart = ReactPanelHeaderPart;
6790
7004
  exports.ReactPart = ReactPart;
6791
7005
  exports.ReactPartContext = ReactPartContext;
6792
7006
  exports.Splitview = Splitview;