dockview-core 7.0.4 → 8.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (374) hide show
  1. package/LICENCE.md +21 -0
  2. package/README.md +17 -86
  3. package/dist/cjs/api/component.api.d.ts +100 -9
  4. package/dist/cjs/api/dockviewGroupPanelApi.d.ts +45 -1
  5. package/dist/cjs/api/dockviewPanelApi.d.ts +21 -0
  6. package/dist/cjs/dismissableLayer.d.ts +57 -0
  7. package/dist/cjs/dnd/backend.d.ts +2 -2
  8. package/dist/cjs/dnd/dropTargetAnchorContainer.d.ts +12 -0
  9. package/dist/cjs/dnd/droptarget.d.ts +94 -0
  10. package/dist/cjs/dnd/ghost.d.ts +1 -0
  11. package/dist/cjs/dnd/pointer/longPress.d.ts +2 -2
  12. package/dist/cjs/dnd/pointer/pointerDragController.d.ts +5 -2
  13. package/dist/cjs/dnd/pointer/pointerDragSource.d.ts +1 -1
  14. package/dist/cjs/dnd/pointer/pointerDropTarget.d.ts +30 -1
  15. package/dist/cjs/dnd/pointer/pointerGhost.d.ts +1 -1
  16. package/dist/cjs/dockview/accessibilityMessages.d.ts +6 -0
  17. package/dist/cjs/dockview/advancedDnDService.d.ts +46 -0
  18. package/dist/cjs/dockview/components/panel/content.d.ts +1 -1
  19. package/dist/cjs/dockview/components/tab/defaultTab.d.ts +2 -0
  20. package/dist/cjs/dockview/components/tab/tab.d.ts +2 -0
  21. package/dist/cjs/dockview/components/titlebar/floatingTitleBar.d.ts +2 -2
  22. package/dist/cjs/dockview/components/titlebar/groupDragSource.d.ts +1 -1
  23. package/dist/cjs/dockview/components/titlebar/tabGroupChip.d.ts +1 -1
  24. package/dist/cjs/dockview/components/titlebar/tabGroupIndicator.d.ts +73 -2
  25. package/dist/cjs/dockview/components/titlebar/tabGroups.d.ts +1 -1
  26. package/dist/cjs/dockview/components/titlebar/tabReorderController.d.ts +295 -0
  27. package/dist/cjs/dockview/components/titlebar/tabs.d.ts +120 -50
  28. package/dist/cjs/dockview/components/titlebar/tabsContainer.d.ts +48 -0
  29. package/dist/cjs/dockview/dndCapabilities.d.ts +1 -1
  30. package/dist/cjs/dockview/dockviewComponent.d.ts +303 -19
  31. package/dist/cjs/dockview/dockviewGroupPanel.d.ts +5 -0
  32. package/dist/cjs/dockview/dockviewGroupPanelModel.d.ts +52 -2
  33. package/dist/cjs/dockview/dockviewPanel.d.ts +12 -0
  34. package/dist/cjs/dockview/dockviewShell.d.ts +48 -24
  35. package/dist/cjs/dockview/edgeGroupService.d.ts +20 -0
  36. package/dist/cjs/dockview/events.d.ts +6 -0
  37. package/dist/cjs/dockview/liveRegionService.d.ts +18 -5
  38. package/dist/cjs/dockview/moduleContracts.d.ts +480 -14
  39. package/dist/cjs/dockview/modules.d.ts +101 -22
  40. package/dist/cjs/dockview/options.d.ts +337 -30
  41. package/dist/cjs/dockview/optionsModules.d.ts +73 -0
  42. package/dist/cjs/dockview/popoutWindowService.d.ts +15 -10
  43. package/dist/cjs/dockview/rootDropTargetService.d.ts +11 -0
  44. package/dist/cjs/dockview/tabGroupAccent.d.ts +1 -1
  45. package/dist/cjs/dockview/tabGroupChipsService.d.ts +10 -0
  46. package/dist/cjs/dockview/theme.d.ts +2 -2
  47. package/dist/cjs/dockview/types.d.ts +3 -0
  48. package/dist/cjs/dom.d.ts +9 -1
  49. package/dist/cjs/gridview/baseComponentGridview.d.ts +2 -2
  50. package/dist/cjs/gridview/gridview.d.ts +2 -0
  51. package/dist/cjs/index.d.ts +35 -29
  52. package/dist/cjs/lifecycle.d.ts +1 -0
  53. package/dist/cjs/overlay/overlay.d.ts +4 -2
  54. package/dist/cjs/overlay/overlayRenderContainer.d.ts +8 -0
  55. package/dist/cjs/paneview/paneview.d.ts +2 -1
  56. package/dist/cjs/paneview/paneviewComponent.d.ts +3 -0
  57. package/dist/cjs/paneview/paneviewPanel.d.ts +5 -0
  58. package/dist/cjs/svg.d.ts +1 -0
  59. package/dist/cjs/types.d.ts +8 -0
  60. package/dist/dockview-core.js +18391 -19679
  61. package/dist/dockview-core.min.js +4138 -6
  62. package/dist/dockview-core.min.noStyle.js +6 -7
  63. package/dist/dockview-core.noStyle.js +18390 -19656
  64. package/dist/package/main.cjs.js +18002 -19268
  65. package/dist/package/main.cjs.min.js +6 -6
  66. package/dist/package/main.esm.min.mjs +6 -6
  67. package/dist/package/main.esm.mjs +17959 -19260
  68. package/package.json +81 -77
  69. package/dist/cjs/api/component.api.js +0 -1242
  70. package/dist/cjs/api/dockviewGroupPanelApi.js +0 -200
  71. package/dist/cjs/api/dockviewPanelApi.js +0 -172
  72. package/dist/cjs/api/entryPoints.js +0 -27
  73. package/dist/cjs/api/gridviewPanelApi.js +0 -45
  74. package/dist/cjs/api/panelApi.js +0 -133
  75. package/dist/cjs/api/paneviewPanelApi.js +0 -57
  76. package/dist/cjs/api/splitviewPanelApi.js +0 -47
  77. package/dist/cjs/array.js +0 -66
  78. package/dist/cjs/constants.js +0 -11
  79. package/dist/cjs/dnd/backend.js +0 -171
  80. package/dist/cjs/dnd/dataTransfer.js +0 -100
  81. package/dist/cjs/dnd/dnd.js +0 -74
  82. package/dist/cjs/dnd/dropOverlay.js +0 -197
  83. package/dist/cjs/dnd/dropTargetAnchorContainer.js +0 -104
  84. package/dist/cjs/dnd/droptarget.js +0 -362
  85. package/dist/cjs/dnd/ghost.js +0 -17
  86. package/dist/cjs/dnd/pointer/index.js +0 -13
  87. package/dist/cjs/dnd/pointer/longPress.js +0 -151
  88. package/dist/cjs/dnd/pointer/pointerDragController.js +0 -243
  89. package/dist/cjs/dnd/pointer/pointerDragSource.js +0 -197
  90. package/dist/cjs/dnd/pointer/pointerDropTarget.js +0 -198
  91. package/dist/cjs/dnd/pointer/pointerGhost.js +0 -44
  92. package/dist/cjs/dnd/pointer/types.js +0 -2
  93. package/dist/cjs/dockview/accessibilityMessages.js +0 -51
  94. package/dist/cjs/dockview/allModules.js +0 -25
  95. package/dist/cjs/dockview/components/panel/content.js +0 -213
  96. package/dist/cjs/dockview/components/popupService.js +0 -132
  97. package/dist/cjs/dockview/components/tab/defaultTab.js +0 -70
  98. package/dist/cjs/dockview/components/tab/tab.js +0 -281
  99. package/dist/cjs/dockview/components/titlebar/floatingTitleBar.js +0 -95
  100. package/dist/cjs/dockview/components/titlebar/groupDragSource.js +0 -218
  101. package/dist/cjs/dockview/components/titlebar/tabGroupChip.js +0 -104
  102. package/dist/cjs/dockview/components/titlebar/tabGroupIndicator.js +0 -477
  103. package/dist/cjs/dockview/components/titlebar/tabGroups.js +0 -854
  104. package/dist/cjs/dockview/components/titlebar/tabOverflowControl.js +0 -19
  105. package/dist/cjs/dockview/components/titlebar/tabs.js +0 -2016
  106. package/dist/cjs/dockview/components/titlebar/tabsContainer.js +0 -458
  107. package/dist/cjs/dockview/components/titlebar/voidContainer.js +0 -120
  108. package/dist/cjs/dockview/components/watermark/watermark.js +0 -40
  109. package/dist/cjs/dockview/deserializer.js +0 -39
  110. package/dist/cjs/dockview/dndCapabilities.js +0 -39
  111. package/dist/cjs/dockview/dockviewComponent.js +0 -3896
  112. package/dist/cjs/dockview/dockviewFloatingGroupPanel.js +0 -70
  113. package/dist/cjs/dockview/dockviewGroupPanel.js +0 -204
  114. package/dist/cjs/dockview/dockviewGroupPanelModel.js +0 -1514
  115. package/dist/cjs/dockview/dockviewPanel.js +0 -265
  116. package/dist/cjs/dockview/dockviewPanelModel.js +0 -105
  117. package/dist/cjs/dockview/dockviewShell.js +0 -744
  118. package/dist/cjs/dockview/edgeGroupService.js +0 -128
  119. package/dist/cjs/dockview/events.js +0 -67
  120. package/dist/cjs/dockview/floatingGroupService.js +0 -231
  121. package/dist/cjs/dockview/framework.js +0 -2
  122. package/dist/cjs/dockview/headerActionsService.js +0 -149
  123. package/dist/cjs/dockview/liveRegionService.js +0 -185
  124. package/dist/cjs/dockview/moduleContracts.js +0 -2
  125. package/dist/cjs/dockview/modules.js +0 -304
  126. package/dist/cjs/dockview/options.js +0 -103
  127. package/dist/cjs/dockview/popoutWindowService.js +0 -261
  128. package/dist/cjs/dockview/rootDropTargetService.js +0 -87
  129. package/dist/cjs/dockview/strictEventsSequencing.js +0 -63
  130. package/dist/cjs/dockview/tabGroup.js +0 -219
  131. package/dist/cjs/dockview/tabGroupAccent.js +0 -126
  132. package/dist/cjs/dockview/theme.js +0 -139
  133. package/dist/cjs/dockview/types.js +0 -2
  134. package/dist/cjs/dockview/validate.js +0 -76
  135. package/dist/cjs/dockview/watermarkService.js +0 -61
  136. package/dist/cjs/dom.js +0 -543
  137. package/dist/cjs/events.js +0 -296
  138. package/dist/cjs/framwork.js +0 -2
  139. package/dist/cjs/gridview/baseComponentGridview.js +0 -330
  140. package/dist/cjs/gridview/basePanelView.js +0 -162
  141. package/dist/cjs/gridview/branchNode.js +0 -372
  142. package/dist/cjs/gridview/gridview.js +0 -776
  143. package/dist/cjs/gridview/gridviewComponent.js +0 -363
  144. package/dist/cjs/gridview/gridviewPanel.js +0 -249
  145. package/dist/cjs/gridview/leafNode.js +0 -169
  146. package/dist/cjs/gridview/options.js +0 -17
  147. package/dist/cjs/gridview/types.js +0 -2
  148. package/dist/cjs/index.js +0 -105
  149. package/dist/cjs/lifecycle.js +0 -80
  150. package/dist/cjs/math.js +0 -38
  151. package/dist/cjs/overlay/overlay.js +0 -602
  152. package/dist/cjs/overlay/overlayRenderContainer.js +0 -309
  153. package/dist/cjs/panel/types.js +0 -2
  154. package/dist/cjs/paneview/defaultPaneviewHeader.js +0 -92
  155. package/dist/cjs/paneview/draggablePaneviewPanel.js +0 -141
  156. package/dist/cjs/paneview/options.js +0 -44
  157. package/dist/cjs/paneview/paneview.js +0 -203
  158. package/dist/cjs/paneview/paneviewComponent.js +0 -430
  159. package/dist/cjs/paneview/paneviewPanel.js +0 -275
  160. package/dist/cjs/popoutWindow.js +0 -244
  161. package/dist/cjs/resizable.js +0 -97
  162. package/dist/cjs/scrollbar.js +0 -169
  163. package/dist/cjs/splitview/options.js +0 -19
  164. package/dist/cjs/splitview/splitview.js +0 -999
  165. package/dist/cjs/splitview/splitviewComponent.js +0 -401
  166. package/dist/cjs/splitview/splitviewPanel.js +0 -179
  167. package/dist/cjs/splitview/viewItem.js +0 -119
  168. package/dist/cjs/svg.js +0 -43
  169. package/dist/cjs/types.js +0 -2
  170. package/dist/dockview-core.min.js.map +0 -1
  171. package/dist/dockview-core.min.noStyle.js.map +0 -1
  172. package/dist/esm/api/component.api.d.ts +0 -640
  173. package/dist/esm/api/component.api.js +0 -887
  174. package/dist/esm/api/dockviewGroupPanelApi.d.ts +0 -109
  175. package/dist/esm/api/dockviewGroupPanelApi.js +0 -155
  176. package/dist/esm/api/dockviewPanelApi.d.ts +0 -84
  177. package/dist/esm/api/dockviewPanelApi.js +0 -124
  178. package/dist/esm/api/entryPoints.d.ts +0 -9
  179. package/dist/esm/api/entryPoints.js +0 -21
  180. package/dist/esm/api/gridviewPanelApi.d.ts +0 -37
  181. package/dist/esm/api/gridviewPanelApi.js +0 -23
  182. package/dist/esm/api/panelApi.d.ts +0 -100
  183. package/dist/esm/api/panelApi.js +0 -87
  184. package/dist/esm/api/paneviewPanelApi.d.ts +0 -26
  185. package/dist/esm/api/paneviewPanelApi.js +0 -27
  186. package/dist/esm/api/splitviewPanelApi.d.ts +0 -32
  187. package/dist/esm/api/splitviewPanelApi.js +0 -25
  188. package/dist/esm/array.d.ts +0 -13
  189. package/dist/esm/array.js +0 -57
  190. package/dist/esm/constants.d.ts +0 -8
  191. package/dist/esm/constants.js +0 -8
  192. package/dist/esm/dnd/backend.d.ts +0 -70
  193. package/dist/esm/dnd/backend.js +0 -148
  194. package/dist/esm/dnd/dataTransfer.d.ts +0 -31
  195. package/dist/esm/dnd/dataTransfer.js +0 -67
  196. package/dist/esm/dnd/dnd.d.ts +0 -32
  197. package/dist/esm/dnd/dnd.js +0 -51
  198. package/dist/esm/dnd/dropOverlay.d.ts +0 -20
  199. package/dist/esm/dnd/dropOverlay.js +0 -192
  200. package/dist/esm/dnd/dropTargetAnchorContainer.d.ts +0 -16
  201. package/dist/esm/dnd/dropTargetAnchorContainer.js +0 -73
  202. package/dist/esm/dnd/droptarget.d.ts +0 -116
  203. package/dist/esm/dnd/droptarget.js +0 -316
  204. package/dist/esm/dnd/ghost.d.ts +0 -4
  205. package/dist/esm/dnd/ghost.js +0 -14
  206. package/dist/esm/dnd/pointer/index.d.ts +0 -11
  207. package/dist/esm/dnd/pointer/index.js +0 -5
  208. package/dist/esm/dnd/pointer/longPress.d.ts +0 -32
  209. package/dist/esm/dnd/pointer/longPress.js +0 -127
  210. package/dist/esm/dnd/pointer/pointerDragController.d.ts +0 -60
  211. package/dist/esm/dnd/pointer/pointerDragController.js +0 -193
  212. package/dist/esm/dnd/pointer/pointerDragSource.d.ts +0 -61
  213. package/dist/esm/dnd/pointer/pointerDragSource.js +0 -173
  214. package/dist/esm/dnd/pointer/pointerDropTarget.d.ts +0 -39
  215. package/dist/esm/dnd/pointer/pointerDropTarget.js +0 -168
  216. package/dist/esm/dnd/pointer/pointerGhost.d.ts +0 -30
  217. package/dist/esm/dnd/pointer/pointerGhost.js +0 -39
  218. package/dist/esm/dnd/pointer/types.d.ts +0 -16
  219. package/dist/esm/dnd/pointer/types.js +0 -1
  220. package/dist/esm/dockview/accessibilityMessages.d.ts +0 -32
  221. package/dist/esm/dockview/accessibilityMessages.js +0 -30
  222. package/dist/esm/dockview/allModules.d.ts +0 -8
  223. package/dist/esm/dockview/allModules.js +0 -22
  224. package/dist/esm/dockview/components/panel/content.d.ts +0 -54
  225. package/dist/esm/dockview/components/panel/content.js +0 -185
  226. package/dist/esm/dockview/components/popupService.d.ts +0 -21
  227. package/dist/esm/dockview/components/popupService.js +0 -108
  228. package/dist/esm/dockview/components/tab/defaultTab.d.ts +0 -12
  229. package/dist/esm/dockview/components/tab/defaultTab.js +0 -43
  230. package/dist/esm/dockview/components/tab/tab.d.ts +0 -44
  231. package/dist/esm/dockview/components/tab/tab.js +0 -242
  232. package/dist/esm/dockview/components/titlebar/floatingTitleBar.d.ts +0 -34
  233. package/dist/esm/dockview/components/titlebar/floatingTitleBar.js +0 -65
  234. package/dist/esm/dockview/components/titlebar/groupDragSource.d.ts +0 -51
  235. package/dist/esm/dockview/components/titlebar/groupDragSource.js +0 -178
  236. package/dist/esm/dockview/components/titlebar/tabGroupChip.d.ts +0 -37
  237. package/dist/esm/dockview/components/titlebar/tabGroupChip.js +0 -77
  238. package/dist/esm/dockview/components/titlebar/tabGroupIndicator.d.ts +0 -72
  239. package/dist/esm/dockview/components/titlebar/tabGroupIndicator.js +0 -360
  240. package/dist/esm/dockview/components/titlebar/tabGroups.d.ts +0 -107
  241. package/dist/esm/dockview/components/titlebar/tabGroups.js +0 -621
  242. package/dist/esm/dockview/components/titlebar/tabOverflowControl.d.ts +0 -8
  243. package/dist/esm/dockview/components/titlebar/tabOverflowControl.js +0 -16
  244. package/dist/esm/dockview/components/titlebar/tabs.d.ts +0 -167
  245. package/dist/esm/dockview/components/titlebar/tabs.js +0 -1653
  246. package/dist/esm/dockview/components/titlebar/tabsContainer.d.ts +0 -104
  247. package/dist/esm/dockview/components/titlebar/tabsContainer.js +0 -359
  248. package/dist/esm/dockview/components/titlebar/voidContainer.d.ts +0 -21
  249. package/dist/esm/dockview/components/titlebar/voidContainer.js +0 -92
  250. package/dist/esm/dockview/components/watermark/watermark.d.ts +0 -8
  251. package/dist/esm/dockview/components/watermark/watermark.js +0 -14
  252. package/dist/esm/dockview/deserializer.d.ts +0 -12
  253. package/dist/esm/dockview/deserializer.js +0 -34
  254. package/dist/esm/dockview/dndCapabilities.d.ts +0 -19
  255. package/dist/esm/dockview/dndCapabilities.js +0 -36
  256. package/dist/esm/dockview/dockviewComponent.d.ts +0 -626
  257. package/dist/esm/dockview/dockviewComponent.js +0 -3214
  258. package/dist/esm/dockview/dockviewFloatingGroupPanel.d.ts +0 -45
  259. package/dist/esm/dockview/dockviewFloatingGroupPanel.js +0 -44
  260. package/dist/esm/dockview/dockviewGroupPanel.d.ts +0 -35
  261. package/dist/esm/dockview/dockviewGroupPanel.js +0 -142
  262. package/dist/esm/dockview/dockviewGroupPanelModel.d.ts +0 -358
  263. package/dist/esm/dockview/dockviewGroupPanelModel.js +0 -1180
  264. package/dist/esm/dockview/dockviewPanel.d.ts +0 -69
  265. package/dist/esm/dockview/dockviewPanel.js +0 -178
  266. package/dist/esm/dockview/dockviewPanelModel.d.ts +0 -37
  267. package/dist/esm/dockview/dockviewPanelModel.js +0 -81
  268. package/dist/esm/dockview/dockviewShell.d.ts +0 -150
  269. package/dist/esm/dockview/dockviewShell.js +0 -678
  270. package/dist/esm/dockview/edgeGroupService.d.ts +0 -38
  271. package/dist/esm/dockview/edgeGroupService.js +0 -63
  272. package/dist/esm/dockview/events.d.ts +0 -38
  273. package/dist/esm/dockview/events.js +0 -34
  274. package/dist/esm/dockview/floatingGroupService.d.ts +0 -37
  275. package/dist/esm/dockview/floatingGroupService.js +0 -150
  276. package/dist/esm/dockview/framework.d.ts +0 -65
  277. package/dist/esm/dockview/framework.js +0 -1
  278. package/dist/esm/dockview/headerActionsService.d.ts +0 -32
  279. package/dist/esm/dockview/headerActionsService.js +0 -86
  280. package/dist/esm/dockview/liveRegionService.d.ts +0 -53
  281. package/dist/esm/dockview/liveRegionService.js +0 -159
  282. package/dist/esm/dockview/moduleContracts.d.ts +0 -119
  283. package/dist/esm/dockview/moduleContracts.js +0 -1
  284. package/dist/esm/dockview/modules.d.ts +0 -110
  285. package/dist/esm/dockview/modules.js +0 -170
  286. package/dist/esm/dockview/options.d.ts +0 -474
  287. package/dist/esm/dockview/options.js +0 -77
  288. package/dist/esm/dockview/popoutWindowService.d.ts +0 -95
  289. package/dist/esm/dockview/popoutWindowService.js +0 -175
  290. package/dist/esm/dockview/rootDropTargetService.d.ts +0 -35
  291. package/dist/esm/dockview/rootDropTargetService.js +0 -82
  292. package/dist/esm/dockview/strictEventsSequencing.d.ts +0 -7
  293. package/dist/esm/dockview/strictEventsSequencing.js +0 -41
  294. package/dist/esm/dockview/tabGroup.d.ts +0 -99
  295. package/dist/esm/dockview/tabGroup.js +0 -144
  296. package/dist/esm/dockview/tabGroupAccent.d.ts +0 -65
  297. package/dist/esm/dockview/tabGroupAccent.js +0 -114
  298. package/dist/esm/dockview/theme.d.ts +0 -86
  299. package/dist/esm/dockview/theme.js +0 -136
  300. package/dist/esm/dockview/types.d.ts +0 -53
  301. package/dist/esm/dockview/types.js +0 -1
  302. package/dist/esm/dockview/validate.d.ts +0 -0
  303. package/dist/esm/dockview/validate.js +0 -76
  304. package/dist/esm/dockview/watermarkService.d.ts +0 -30
  305. package/dist/esm/dockview/watermarkService.js +0 -56
  306. package/dist/esm/dom.d.ts +0 -60
  307. package/dist/esm/dom.js +0 -375
  308. package/dist/esm/events.d.ts +0 -79
  309. package/dist/esm/events.js +0 -219
  310. package/dist/esm/framwork.d.ts +0 -4
  311. package/dist/esm/framwork.js +0 -1
  312. package/dist/esm/gridview/baseComponentGridview.d.ts +0 -111
  313. package/dist/esm/gridview/baseComponentGridview.js +0 -237
  314. package/dist/esm/gridview/basePanelView.d.ts +0 -40
  315. package/dist/esm/gridview/basePanelView.js +0 -91
  316. package/dist/esm/gridview/branchNode.d.ts +0 -57
  317. package/dist/esm/gridview/branchNode.js +0 -257
  318. package/dist/esm/gridview/gridview.d.ts +0 -158
  319. package/dist/esm/gridview/gridview.js +0 -681
  320. package/dist/esm/gridview/gridviewComponent.d.ts +0 -88
  321. package/dist/esm/gridview/gridviewComponent.js +0 -265
  322. package/dist/esm/gridview/gridviewPanel.d.ts +0 -77
  323. package/dist/esm/gridview/gridviewPanel.js +0 -182
  324. package/dist/esm/gridview/leafNode.d.ts +0 -34
  325. package/dist/esm/gridview/leafNode.js +0 -102
  326. package/dist/esm/gridview/options.d.ts +0 -15
  327. package/dist/esm/gridview/options.js +0 -14
  328. package/dist/esm/gridview/types.d.ts +0 -3
  329. package/dist/esm/gridview/types.js +0 -1
  330. package/dist/esm/index.d.ts +0 -58
  331. package/dist/esm/index.js +0 -44
  332. package/dist/esm/lifecycle.d.ts +0 -25
  333. package/dist/esm/lifecycle.js +0 -56
  334. package/dist/esm/math.d.ts +0 -5
  335. package/dist/esm/math.js +0 -32
  336. package/dist/esm/overlay/overlay.d.ts +0 -91
  337. package/dist/esm/overlay/overlay.js +0 -520
  338. package/dist/esm/overlay/overlayRenderContainer.d.ts +0 -24
  339. package/dist/esm/overlay/overlayRenderContainer.js +0 -249
  340. package/dist/esm/panel/types.d.ts +0 -33
  341. package/dist/esm/panel/types.js +0 -1
  342. package/dist/esm/paneview/defaultPaneviewHeader.d.ts +0 -21
  343. package/dist/esm/paneview/defaultPaneviewHeader.js +0 -65
  344. package/dist/esm/paneview/draggablePaneviewPanel.d.ts +0 -38
  345. package/dist/esm/paneview/draggablePaneviewPanel.js +0 -107
  346. package/dist/esm/paneview/options.d.ts +0 -30
  347. package/dist/esm/paneview/options.js +0 -22
  348. package/dist/esm/paneview/paneview.d.ts +0 -41
  349. package/dist/esm/paneview/paneview.js +0 -148
  350. package/dist/esm/paneview/paneviewComponent.d.ts +0 -133
  351. package/dist/esm/paneview/paneviewComponent.js +0 -306
  352. package/dist/esm/paneview/paneviewPanel.d.ts +0 -98
  353. package/dist/esm/paneview/paneviewPanel.js +0 -192
  354. package/dist/esm/popoutWindow.d.ts +0 -38
  355. package/dist/esm/popoutWindow.js +0 -170
  356. package/dist/esm/resizable.d.ts +0 -12
  357. package/dist/esm/resizable.js +0 -66
  358. package/dist/esm/scrollbar.d.ts +0 -15
  359. package/dist/esm/scrollbar.js +0 -139
  360. package/dist/esm/splitview/options.d.ts +0 -21
  361. package/dist/esm/splitview/options.js +0 -16
  362. package/dist/esm/splitview/splitview.d.ts +0 -145
  363. package/dist/esm/splitview/splitview.js +0 -770
  364. package/dist/esm/splitview/splitviewComponent.d.ts +0 -101
  365. package/dist/esm/splitview/splitviewComponent.js +0 -267
  366. package/dist/esm/splitview/splitviewPanel.d.ts +0 -45
  367. package/dist/esm/splitview/splitviewPanel.js +0 -108
  368. package/dist/esm/splitview/viewItem.d.ts +0 -25
  369. package/dist/esm/splitview/viewItem.js +0 -74
  370. package/dist/esm/svg.d.ts +0 -3
  371. package/dist/esm/svg.js +0 -31
  372. package/dist/esm/types.d.ts +0 -31
  373. package/dist/esm/types.js +0 -1
  374. package/dist/styles/dockview.css +0 -3436
@@ -1,770 +0,0 @@
1
- /*---------------------------------------------------------------------------------------------
2
- * Accreditation: This file is largly based upon the MIT licenced VSCode sourcecode found at:
3
- * https://github.com/microsoft/vscode/tree/main/src/vs/base/browser/ui/splitview
4
- *--------------------------------------------------------------------------------------------*/
5
- import { removeClasses, addClasses, toggleClass, disableIframePointEvents, } from '../dom';
6
- import { Emitter } from '../events';
7
- import { pushToStart, pushToEnd, firstIndex } from '../array';
8
- import { range, clamp } from '../math';
9
- import { ViewItem } from './viewItem';
10
- export var Orientation;
11
- (function (Orientation) {
12
- Orientation["HORIZONTAL"] = "HORIZONTAL";
13
- Orientation["VERTICAL"] = "VERTICAL";
14
- })(Orientation || (Orientation = {}));
15
- export var SashState;
16
- (function (SashState) {
17
- SashState[SashState["MAXIMUM"] = 0] = "MAXIMUM";
18
- SashState[SashState["MINIMUM"] = 1] = "MINIMUM";
19
- SashState[SashState["DISABLED"] = 2] = "DISABLED";
20
- SashState[SashState["ENABLED"] = 3] = "ENABLED";
21
- })(SashState || (SashState = {}));
22
- export var LayoutPriority;
23
- (function (LayoutPriority) {
24
- LayoutPriority["Low"] = "low";
25
- LayoutPriority["High"] = "high";
26
- LayoutPriority["Normal"] = "normal";
27
- })(LayoutPriority || (LayoutPriority = {}));
28
- export var Sizing;
29
- (function (Sizing) {
30
- Sizing.Distribute = { type: 'distribute' };
31
- function Split(index) {
32
- return { type: 'split', index };
33
- }
34
- Sizing.Split = Split;
35
- function Invisible(cachedVisibleSize) {
36
- return { type: 'invisible', cachedVisibleSize };
37
- }
38
- Sizing.Invisible = Invisible;
39
- })(Sizing || (Sizing = {}));
40
- export class Splitview {
41
- get contentSize() {
42
- return this._contentSize;
43
- }
44
- get size() {
45
- return this._size;
46
- }
47
- set size(value) {
48
- this._size = value;
49
- }
50
- get orthogonalSize() {
51
- return this._orthogonalSize;
52
- }
53
- set orthogonalSize(value) {
54
- this._orthogonalSize = value;
55
- }
56
- get length() {
57
- return this.viewItems.length;
58
- }
59
- get proportions() {
60
- return this._proportions ? [...this._proportions] : undefined;
61
- }
62
- get orientation() {
63
- return this._orientation;
64
- }
65
- set orientation(value) {
66
- this._orientation = value;
67
- const tmp = this.size;
68
- this.size = this.orthogonalSize;
69
- this.orthogonalSize = tmp;
70
- removeClasses(this.element, 'dv-horizontal', 'dv-vertical');
71
- this.element.classList.add(this.orientation == Orientation.HORIZONTAL
72
- ? 'dv-horizontal'
73
- : 'dv-vertical');
74
- }
75
- get minimumSize() {
76
- return this.viewItems.reduce((r, item) => r + item.minimumSize, 0);
77
- }
78
- get maximumSize() {
79
- return this.length === 0
80
- ? Number.POSITIVE_INFINITY
81
- : this.viewItems.reduce((r, item) => r + item.maximumSize, 0);
82
- }
83
- get startSnappingEnabled() {
84
- return this._startSnappingEnabled;
85
- }
86
- set startSnappingEnabled(startSnappingEnabled) {
87
- if (this._startSnappingEnabled === startSnappingEnabled) {
88
- return;
89
- }
90
- this._startSnappingEnabled = startSnappingEnabled;
91
- this.updateSashEnablement();
92
- }
93
- get endSnappingEnabled() {
94
- return this._endSnappingEnabled;
95
- }
96
- set endSnappingEnabled(endSnappingEnabled) {
97
- if (this._endSnappingEnabled === endSnappingEnabled) {
98
- return;
99
- }
100
- this._endSnappingEnabled = endSnappingEnabled;
101
- this.updateSashEnablement();
102
- }
103
- get disabled() {
104
- return this._disabled;
105
- }
106
- set disabled(value) {
107
- this._disabled = value;
108
- toggleClass(this.element, 'dv-splitview-disabled', value);
109
- }
110
- get margin() {
111
- return this._margin;
112
- }
113
- set margin(value) {
114
- this._margin = value;
115
- toggleClass(this.element, 'dv-splitview-has-margin', value !== 0);
116
- }
117
- constructor(container, options) {
118
- var _a, _b;
119
- this.container = container;
120
- this.viewItems = [];
121
- this.sashes = [];
122
- this._size = 0;
123
- this._orthogonalSize = 0;
124
- this._contentSize = 0;
125
- this._proportions = undefined;
126
- this._startSnappingEnabled = true;
127
- this._endSnappingEnabled = true;
128
- this._disabled = false;
129
- this._margin = 0;
130
- this._onDidSashEnd = new Emitter();
131
- this.onDidSashEnd = this._onDidSashEnd.event;
132
- this._onDidAddView = new Emitter();
133
- this.onDidAddView = this._onDidAddView.event;
134
- this._onDidRemoveView = new Emitter();
135
- this.onDidRemoveView = this._onDidRemoveView.event;
136
- this.resize = (index, delta, sizes = this.viewItems.map((x) => x.size), lowPriorityIndexes, highPriorityIndexes, overloadMinDelta = Number.NEGATIVE_INFINITY, overloadMaxDelta = Number.POSITIVE_INFINITY, snapBefore, snapAfter) => {
137
- if (index < 0 || index > this.viewItems.length) {
138
- return 0;
139
- }
140
- const upIndexes = range(index, -1);
141
- const downIndexes = range(index + 1, this.viewItems.length);
142
- //
143
- if (highPriorityIndexes) {
144
- for (const i of highPriorityIndexes) {
145
- pushToStart(upIndexes, i);
146
- pushToStart(downIndexes, i);
147
- }
148
- }
149
- if (lowPriorityIndexes) {
150
- for (const i of lowPriorityIndexes) {
151
- pushToEnd(upIndexes, i);
152
- pushToEnd(downIndexes, i);
153
- }
154
- }
155
- //
156
- const upItems = upIndexes.map((i) => this.viewItems[i]);
157
- const upSizes = upIndexes.map((i) => sizes[i]);
158
- //
159
- const downItems = downIndexes.map((i) => this.viewItems[i]);
160
- const downSizes = downIndexes.map((i) => sizes[i]);
161
- //
162
- const minDeltaUp = upIndexes.reduce((_, i) => _ + this.viewItems[i].minimumSize - sizes[i], 0);
163
- const maxDeltaUp = upIndexes.reduce((_, i) => _ + this.viewItems[i].maximumSize - sizes[i], 0);
164
- //
165
- const maxDeltaDown = downIndexes.length === 0
166
- ? Number.POSITIVE_INFINITY
167
- : downIndexes.reduce((_, i) => _ + sizes[i] - this.viewItems[i].minimumSize, 0);
168
- const minDeltaDown = downIndexes.length === 0
169
- ? Number.NEGATIVE_INFINITY
170
- : downIndexes.reduce((_, i) => _ + sizes[i] - this.viewItems[i].maximumSize, 0);
171
- //
172
- const minDelta = Math.max(minDeltaUp, minDeltaDown);
173
- const maxDelta = Math.min(maxDeltaDown, maxDeltaUp);
174
- //
175
- let snapped = false;
176
- if (snapBefore) {
177
- const snapView = this.viewItems[snapBefore.index];
178
- const visible = delta >= snapBefore.limitDelta;
179
- snapped = visible !== snapView.visible;
180
- snapView.setVisible(visible, snapBefore.size);
181
- }
182
- if (!snapped && snapAfter) {
183
- const snapView = this.viewItems[snapAfter.index];
184
- const visible = delta < snapAfter.limitDelta;
185
- snapped = visible !== snapView.visible;
186
- snapView.setVisible(visible, snapAfter.size);
187
- }
188
- if (snapped) {
189
- return this.resize(index, delta, sizes, lowPriorityIndexes, highPriorityIndexes, overloadMinDelta, overloadMaxDelta);
190
- }
191
- //
192
- const tentativeDelta = clamp(delta, minDelta, maxDelta);
193
- let actualDelta = 0;
194
- //
195
- let deltaUp = tentativeDelta;
196
- for (let i = 0; i < upItems.length; i++) {
197
- const item = upItems[i];
198
- const size = clamp(upSizes[i] + deltaUp, item.minimumSize, item.maximumSize);
199
- const viewDelta = size - upSizes[i];
200
- actualDelta += viewDelta;
201
- deltaUp -= viewDelta;
202
- item.size = size;
203
- }
204
- //
205
- let deltaDown = actualDelta;
206
- for (let i = 0; i < downItems.length; i++) {
207
- const item = downItems[i];
208
- const size = clamp(downSizes[i] - deltaDown, item.minimumSize, item.maximumSize);
209
- const viewDelta = size - downSizes[i];
210
- deltaDown += viewDelta;
211
- item.size = size;
212
- }
213
- //
214
- return delta;
215
- };
216
- this._orientation = (_a = options.orientation) !== null && _a !== void 0 ? _a : Orientation.VERTICAL;
217
- this.element = this.createContainer();
218
- this.margin = (_b = options.margin) !== null && _b !== void 0 ? _b : 0;
219
- this.proportionalLayout =
220
- options.proportionalLayout === undefined
221
- ? true
222
- : !!options.proportionalLayout;
223
- this.viewContainer = this.createViewContainer();
224
- this.sashContainer = this.createSashContainer();
225
- this.element.appendChild(this.sashContainer);
226
- this.element.appendChild(this.viewContainer);
227
- this.container.appendChild(this.element);
228
- this.style(options.styles);
229
- // We have an existing set of view, add them now
230
- if (options.descriptor) {
231
- this._size = options.descriptor.size;
232
- options.descriptor.views.forEach((viewDescriptor, index) => {
233
- const sizing = viewDescriptor.visible === undefined ||
234
- viewDescriptor.visible
235
- ? viewDescriptor.size
236
- : {
237
- type: 'invisible',
238
- cachedVisibleSize: viewDescriptor.size,
239
- };
240
- const view = viewDescriptor.view;
241
- this.addView(view, sizing, index, true
242
- // true skip layout
243
- );
244
- });
245
- // Initialize content size and proportions for first layout
246
- this._contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);
247
- this.saveProportions();
248
- }
249
- }
250
- style(styles) {
251
- if ((styles === null || styles === void 0 ? void 0 : styles.separatorBorder) === 'transparent') {
252
- removeClasses(this.element, 'dv-separator-border');
253
- this.element.style.removeProperty('--dv-separator-border');
254
- }
255
- else {
256
- addClasses(this.element, 'dv-separator-border');
257
- if (styles === null || styles === void 0 ? void 0 : styles.separatorBorder) {
258
- this.element.style.setProperty('--dv-separator-border', styles.separatorBorder);
259
- }
260
- }
261
- }
262
- isViewVisible(index) {
263
- if (index < 0 || index >= this.viewItems.length) {
264
- throw new Error('Index out of bounds');
265
- }
266
- const viewItem = this.viewItems[index];
267
- return viewItem.visible;
268
- }
269
- setViewVisible(index, visible) {
270
- if (index < 0 || index >= this.viewItems.length) {
271
- throw new Error('Index out of bounds');
272
- }
273
- const viewItem = this.viewItems[index];
274
- viewItem.setVisible(visible, viewItem.size);
275
- this.distributeEmptySpace(index);
276
- this.layoutViews();
277
- this.saveProportions();
278
- }
279
- getViewSize(index) {
280
- if (index < 0 || index >= this.viewItems.length) {
281
- return -1;
282
- }
283
- return this.viewItems[index].size;
284
- }
285
- resizeView(index, size) {
286
- if (index < 0 || index >= this.viewItems.length) {
287
- return;
288
- }
289
- const indexes = range(this.viewItems.length).filter((i) => i !== index);
290
- const lowPriorityIndexes = [
291
- ...indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.Low),
292
- index,
293
- ];
294
- const highPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.High);
295
- const item = this.viewItems[index];
296
- size = Math.round(size);
297
- size = clamp(size, item.minimumSize, Math.min(item.maximumSize, this._size));
298
- item.size = size;
299
- this.relayout(lowPriorityIndexes, highPriorityIndexes);
300
- }
301
- getViews() {
302
- return this.viewItems.map((x) => x.view);
303
- }
304
- onDidChange(item, size) {
305
- const index = this.viewItems.indexOf(item);
306
- if (index < 0 || index >= this.viewItems.length) {
307
- return;
308
- }
309
- size = typeof size === 'number' ? size : item.size;
310
- size = clamp(size, item.minimumSize, item.maximumSize);
311
- item.size = size;
312
- const indexes = range(this.viewItems.length).filter((i) => i !== index);
313
- const lowPriorityIndexes = [
314
- ...indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.Low),
315
- index,
316
- ];
317
- const highPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.High);
318
- /**
319
- * add this view we are changing to the low-index list since we have determined the size
320
- * here and don't want it changed
321
- */
322
- this.relayout([...lowPriorityIndexes, index], highPriorityIndexes);
323
- }
324
- addView(view, size = { type: 'distribute' }, index = this.viewItems.length, skipLayout) {
325
- const container = document.createElement('div');
326
- container.className = 'dv-view';
327
- container.appendChild(view.element);
328
- let viewSize;
329
- if (typeof size === 'number') {
330
- viewSize = size;
331
- }
332
- else if (size.type === 'split') {
333
- viewSize = this.getViewSize(size.index) / 2;
334
- }
335
- else if (size.type === 'invisible') {
336
- viewSize = { cachedVisibleSize: size.cachedVisibleSize };
337
- }
338
- else {
339
- viewSize = view.minimumSize;
340
- }
341
- const disposable = view.onDidChange((newSize) => this.onDidChange(viewItem, newSize.size));
342
- const viewItem = new ViewItem(container, view, viewSize, {
343
- dispose: () => {
344
- disposable.dispose();
345
- container.remove();
346
- },
347
- });
348
- if (index === this.viewItems.length) {
349
- this.viewContainer.appendChild(container);
350
- }
351
- else {
352
- this.viewContainer.insertBefore(container, this.viewContainer.children.item(index));
353
- }
354
- this.viewItems.splice(index, 0, viewItem);
355
- if (this.viewItems.length > 1) {
356
- //add sash
357
- const sash = document.createElement('div');
358
- sash.className = 'dv-sash';
359
- const onPointerStart = (event) => {
360
- for (const item of this.viewItems) {
361
- item.enabled = false;
362
- }
363
- const iframes = disableIframePointEvents();
364
- const start = this._orientation === Orientation.HORIZONTAL
365
- ? event.clientX
366
- : event.clientY;
367
- const sashIndex = firstIndex(this.sashes, (s) => s.container === sash);
368
- //
369
- const sizes = this.viewItems.map((x) => x.size);
370
- //
371
- let snapBefore;
372
- let snapAfter;
373
- const upIndexes = range(sashIndex, -1);
374
- const downIndexes = range(sashIndex + 1, this.viewItems.length);
375
- const minDeltaUp = upIndexes.reduce((r, i) => r + (this.viewItems[i].minimumSize - sizes[i]), 0);
376
- const maxDeltaUp = upIndexes.reduce((r, i) => r + (this.viewItems[i].viewMaximumSize - sizes[i]), 0);
377
- const maxDeltaDown = downIndexes.length === 0
378
- ? Number.POSITIVE_INFINITY
379
- : downIndexes.reduce((r, i) => r +
380
- (sizes[i] - this.viewItems[i].minimumSize), 0);
381
- const minDeltaDown = downIndexes.length === 0
382
- ? Number.NEGATIVE_INFINITY
383
- : downIndexes.reduce((r, i) => r +
384
- (sizes[i] -
385
- this.viewItems[i].viewMaximumSize), 0);
386
- const minDelta = Math.max(minDeltaUp, minDeltaDown);
387
- const maxDelta = Math.min(maxDeltaDown, maxDeltaUp);
388
- const snapBeforeIndex = this.findFirstSnapIndex(upIndexes);
389
- const snapAfterIndex = this.findFirstSnapIndex(downIndexes);
390
- if (typeof snapBeforeIndex === 'number') {
391
- const snappedViewItem = this.viewItems[snapBeforeIndex];
392
- const halfSize = Math.floor(snappedViewItem.viewMinimumSize / 2);
393
- snapBefore = {
394
- index: snapBeforeIndex,
395
- limitDelta: snappedViewItem.visible
396
- ? minDelta - halfSize
397
- : minDelta + halfSize,
398
- size: snappedViewItem.size,
399
- };
400
- }
401
- if (typeof snapAfterIndex === 'number') {
402
- const snappedViewItem = this.viewItems[snapAfterIndex];
403
- const halfSize = Math.floor(snappedViewItem.viewMinimumSize / 2);
404
- snapAfter = {
405
- index: snapAfterIndex,
406
- limitDelta: snappedViewItem.visible
407
- ? maxDelta + halfSize
408
- : maxDelta - halfSize,
409
- size: snappedViewItem.size,
410
- };
411
- }
412
- const onPointerMove = (event) => {
413
- const current = this._orientation === Orientation.HORIZONTAL
414
- ? event.clientX
415
- : event.clientY;
416
- const delta = current - start;
417
- this.resize(sashIndex, delta, sizes, undefined, undefined, minDelta, maxDelta, snapBefore, snapAfter);
418
- this.distributeEmptySpace();
419
- this.layoutViews();
420
- };
421
- const doc = sash.ownerDocument;
422
- const end = () => {
423
- for (const item of this.viewItems) {
424
- item.enabled = true;
425
- }
426
- iframes.release();
427
- this.saveProportions();
428
- doc.removeEventListener('pointermove', onPointerMove);
429
- doc.removeEventListener('pointerup', end);
430
- doc.removeEventListener('pointercancel', end);
431
- doc.removeEventListener('contextmenu', end);
432
- this._onDidSashEnd.fire(undefined);
433
- };
434
- doc.addEventListener('pointermove', onPointerMove);
435
- doc.addEventListener('pointerup', end);
436
- doc.addEventListener('pointercancel', end);
437
- doc.addEventListener('contextmenu', end);
438
- };
439
- sash.addEventListener('pointerdown', onPointerStart);
440
- const sashItem = {
441
- container: sash,
442
- disposable: () => {
443
- sash.removeEventListener('pointerdown', onPointerStart);
444
- sash.remove();
445
- },
446
- };
447
- this.sashContainer.appendChild(sash);
448
- this.sashes.push(sashItem);
449
- }
450
- if (!skipLayout) {
451
- this.relayout([index]);
452
- }
453
- if (!skipLayout &&
454
- typeof size !== 'number' &&
455
- size.type === 'distribute') {
456
- this.distributeViewSizes();
457
- }
458
- this._onDidAddView.fire(view);
459
- }
460
- distributeViewSizes() {
461
- const flexibleViewItems = [];
462
- let flexibleSize = 0;
463
- for (const item of this.viewItems) {
464
- if (item.maximumSize - item.minimumSize > 0) {
465
- flexibleViewItems.push(item);
466
- flexibleSize += item.size;
467
- }
468
- }
469
- const size = Math.floor(flexibleSize / flexibleViewItems.length);
470
- for (const item of flexibleViewItems) {
471
- item.size = clamp(size, item.minimumSize, item.maximumSize);
472
- }
473
- const indexes = range(this.viewItems.length);
474
- const lowPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.Low);
475
- const highPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.High);
476
- this.relayout(lowPriorityIndexes, highPriorityIndexes);
477
- }
478
- removeView(index, sizing, skipLayout = false) {
479
- // Remove view
480
- const viewItem = this.viewItems.splice(index, 1)[0];
481
- viewItem.dispose();
482
- // Remove sash
483
- if (this.viewItems.length >= 1) {
484
- const sashIndex = Math.max(index - 1, 0);
485
- const sashItem = this.sashes.splice(sashIndex, 1)[0];
486
- sashItem.disposable();
487
- }
488
- if (!skipLayout) {
489
- this.relayout();
490
- }
491
- if ((sizing === null || sizing === void 0 ? void 0 : sizing.type) === 'distribute') {
492
- this.distributeViewSizes();
493
- }
494
- this._onDidRemoveView.fire(viewItem.view);
495
- return viewItem.view;
496
- }
497
- getViewCachedVisibleSize(index) {
498
- if (index < 0 || index >= this.viewItems.length) {
499
- throw new Error('Index out of bounds');
500
- }
501
- const viewItem = this.viewItems[index];
502
- return viewItem.cachedVisibleSize;
503
- }
504
- moveView(from, to) {
505
- const cachedVisibleSize = this.getViewCachedVisibleSize(from);
506
- const sizing = cachedVisibleSize === undefined
507
- ? this.getViewSize(from)
508
- : Sizing.Invisible(cachedVisibleSize);
509
- const view = this.removeView(from, undefined, true);
510
- this.addView(view, sizing, to);
511
- }
512
- layout(size, orthogonalSize) {
513
- const previousSize = Math.max(this.size, this._contentSize);
514
- this.size = size;
515
- this.orthogonalSize = orthogonalSize;
516
- if (this.proportions) {
517
- let total = 0;
518
- for (let i = 0; i < this.viewItems.length; i++) {
519
- const item = this.viewItems[i];
520
- const proportion = this.proportions[i];
521
- if (typeof proportion === 'number') {
522
- total += proportion;
523
- }
524
- else {
525
- size -= item.size;
526
- }
527
- }
528
- for (let i = 0; i < this.viewItems.length; i++) {
529
- const item = this.viewItems[i];
530
- const proportion = this.proportions[i];
531
- if (typeof proportion === 'number' && total > 0) {
532
- item.size = clamp(Math.round((proportion * size) / total), item.minimumSize, item.maximumSize);
533
- }
534
- }
535
- }
536
- else {
537
- const indexes = range(this.viewItems.length);
538
- const lowPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.Low);
539
- const highPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.High);
540
- this.resize(this.viewItems.length - 1, size - previousSize, undefined, lowPriorityIndexes, highPriorityIndexes);
541
- }
542
- this.distributeEmptySpace();
543
- this.layoutViews();
544
- }
545
- relayout(lowPriorityIndexes, highPriorityIndexes) {
546
- const contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);
547
- this.resize(this.viewItems.length - 1, this._size - contentSize, undefined, lowPriorityIndexes, highPriorityIndexes);
548
- this.distributeEmptySpace();
549
- this.layoutViews();
550
- this.saveProportions();
551
- }
552
- distributeEmptySpace(lowPriorityIndex) {
553
- const contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);
554
- let emptyDelta = this.size - contentSize;
555
- const indexes = range(this.viewItems.length - 1, -1);
556
- const lowPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.Low);
557
- const highPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.High);
558
- for (const index of highPriorityIndexes) {
559
- pushToStart(indexes, index);
560
- }
561
- for (const index of lowPriorityIndexes) {
562
- pushToEnd(indexes, index);
563
- }
564
- if (typeof lowPriorityIndex === 'number') {
565
- pushToEnd(indexes, lowPriorityIndex);
566
- }
567
- for (let i = 0; emptyDelta !== 0 && i < indexes.length; i++) {
568
- const item = this.viewItems[indexes[i]];
569
- const size = clamp(item.size + emptyDelta, item.minimumSize, item.maximumSize);
570
- const viewDelta = size - item.size;
571
- emptyDelta -= viewDelta;
572
- item.size = size;
573
- }
574
- }
575
- saveProportions() {
576
- if (this.proportionalLayout && this._contentSize > 0) {
577
- this._proportions = this.viewItems.map((i) => i.visible ? i.size / this._contentSize : undefined);
578
- }
579
- }
580
- /**
581
- * Margin explain:
582
- *
583
- * For `n` views in a splitview there will be `n-1` margins `m`.
584
- *
585
- * To fit the margins each view must reduce in size by `(m * (n - 1)) / n`.
586
- *
587
- * For each view `i` the offet must be adjusted by `m * i/(n - 1)`.
588
- */
589
- layoutViews() {
590
- this._contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);
591
- this.updateSashEnablement();
592
- if (this.viewItems.length === 0) {
593
- return;
594
- }
595
- const visibleViewItems = this.viewItems.filter((i) => i.visible);
596
- const sashCount = Math.max(0, visibleViewItems.length - 1);
597
- const marginReducedSize = (this.margin * sashCount) / Math.max(1, visibleViewItems.length);
598
- let totalLeftOffset = 0;
599
- const viewLeftOffsets = [];
600
- const sashWidth = 4; // hardcoded in css
601
- const runningVisiblePanelCount = this.viewItems.reduce((arr, viewItem, i) => {
602
- const flag = viewItem.visible ? 1 : 0;
603
- if (i === 0) {
604
- arr.push(flag);
605
- }
606
- else {
607
- arr.push(arr[i - 1] + flag);
608
- }
609
- return arr;
610
- }, []);
611
- // calculate both view and cash positions
612
- this.viewItems.forEach((view, i) => {
613
- totalLeftOffset += this.viewItems[i].size;
614
- viewLeftOffsets.push(totalLeftOffset);
615
- const size = view.visible ? view.size - marginReducedSize : 0;
616
- const visiblePanelsBeforeThisView = Math.max(0, runningVisiblePanelCount[i] - 1);
617
- const offset = i === 0 || visiblePanelsBeforeThisView === 0
618
- ? 0
619
- : viewLeftOffsets[i - 1] +
620
- (visiblePanelsBeforeThisView / sashCount) *
621
- marginReducedSize;
622
- if (i < this.viewItems.length - 1) {
623
- // calculate sash position
624
- const newSize = view.visible
625
- ? offset + size - sashWidth / 2 + this.margin / 2
626
- : offset;
627
- if (this._orientation === Orientation.HORIZONTAL) {
628
- this.sashes[i].container.style.left = `${newSize}px`;
629
- this.sashes[i].container.style.top = `0px`;
630
- }
631
- if (this._orientation === Orientation.VERTICAL) {
632
- this.sashes[i].container.style.left = `0px`;
633
- this.sashes[i].container.style.top = `${newSize}px`;
634
- }
635
- }
636
- // calculate view position
637
- if (this._orientation === Orientation.HORIZONTAL) {
638
- view.container.style.width = `${size}px`;
639
- view.container.style.left = `${offset}px`;
640
- view.container.style.top = '';
641
- view.container.style.height = '';
642
- }
643
- if (this._orientation === Orientation.VERTICAL) {
644
- view.container.style.height = `${size}px`;
645
- view.container.style.top = `${offset}px`;
646
- view.container.style.width = '';
647
- view.container.style.left = '';
648
- }
649
- view.view.layout(view.size - marginReducedSize, this._orthogonalSize);
650
- });
651
- }
652
- findFirstSnapIndex(indexes) {
653
- // visible views first
654
- for (const index of indexes) {
655
- const viewItem = this.viewItems[index];
656
- if (!viewItem.visible) {
657
- continue;
658
- }
659
- if (viewItem.snap) {
660
- return index;
661
- }
662
- }
663
- // then, hidden views
664
- for (const index of indexes) {
665
- const viewItem = this.viewItems[index];
666
- if (viewItem.visible &&
667
- viewItem.maximumSize - viewItem.minimumSize > 0) {
668
- return undefined;
669
- }
670
- if (!viewItem.visible && viewItem.snap) {
671
- return index;
672
- }
673
- }
674
- return undefined;
675
- }
676
- updateSashEnablement() {
677
- let previous = false;
678
- const collapsesDown = this.viewItems.map((i) => (previous = i.size - i.minimumSize > 0 || previous));
679
- previous = false;
680
- const expandsDown = this.viewItems.map((i) => (previous = i.maximumSize - i.size > 0 || previous));
681
- const reverseViews = [...this.viewItems].reverse();
682
- previous = false;
683
- const collapsesUp = reverseViews
684
- .map((i) => (previous = i.size - i.minimumSize > 0 || previous))
685
- .reverse();
686
- previous = false;
687
- const expandsUp = reverseViews
688
- .map((i) => (previous = i.maximumSize - i.size > 0 || previous))
689
- .reverse();
690
- let position = 0;
691
- for (let index = 0; index < this.sashes.length; index++) {
692
- const sash = this.sashes[index];
693
- const viewItem = this.viewItems[index];
694
- position += viewItem.size;
695
- const min = !(collapsesDown[index] && expandsUp[index + 1]);
696
- const max = !(expandsDown[index] && collapsesUp[index + 1]);
697
- if (min && max) {
698
- const upIndexes = range(index, -1);
699
- const downIndexes = range(index + 1, this.viewItems.length);
700
- const snapBeforeIndex = this.findFirstSnapIndex(upIndexes);
701
- const snapAfterIndex = this.findFirstSnapIndex(downIndexes);
702
- const snappedBefore = typeof snapBeforeIndex === 'number' &&
703
- !this.viewItems[snapBeforeIndex].visible;
704
- const snappedAfter = typeof snapAfterIndex === 'number' &&
705
- !this.viewItems[snapAfterIndex].visible;
706
- if (snappedBefore &&
707
- collapsesUp[index] &&
708
- (position > 0 || this.startSnappingEnabled)) {
709
- this.updateSash(sash, SashState.MINIMUM);
710
- }
711
- else if (snappedAfter &&
712
- collapsesDown[index] &&
713
- (position < this._contentSize || this.endSnappingEnabled)) {
714
- this.updateSash(sash, SashState.MAXIMUM);
715
- }
716
- else {
717
- this.updateSash(sash, SashState.DISABLED);
718
- }
719
- }
720
- else if (min && !max) {
721
- this.updateSash(sash, SashState.MINIMUM);
722
- }
723
- else if (!min && max) {
724
- this.updateSash(sash, SashState.MAXIMUM);
725
- }
726
- else {
727
- this.updateSash(sash, SashState.ENABLED);
728
- }
729
- }
730
- }
731
- updateSash(sash, state) {
732
- toggleClass(sash.container, 'dv-disabled', state === SashState.DISABLED);
733
- toggleClass(sash.container, 'dv-enabled', state === SashState.ENABLED);
734
- toggleClass(sash.container, 'dv-maximum', state === SashState.MAXIMUM);
735
- toggleClass(sash.container, 'dv-minimum', state === SashState.MINIMUM);
736
- }
737
- createViewContainer() {
738
- const element = document.createElement('div');
739
- element.className = 'dv-view-container';
740
- return element;
741
- }
742
- createSashContainer() {
743
- const element = document.createElement('div');
744
- element.className = 'dv-sash-container';
745
- return element;
746
- }
747
- createContainer() {
748
- const element = document.createElement('div');
749
- const orientationClassname = this._orientation === Orientation.HORIZONTAL
750
- ? 'dv-horizontal'
751
- : 'dv-vertical';
752
- element.className = `dv-split-view-container ${orientationClassname}`;
753
- return element;
754
- }
755
- dispose() {
756
- this._onDidSashEnd.dispose();
757
- this._onDidAddView.dispose();
758
- this._onDidRemoveView.dispose();
759
- for (let i = 0; i < this.element.children.length; i++) {
760
- if (this.element.children.item(i) === this.element) {
761
- this.element.remove();
762
- break;
763
- }
764
- }
765
- for (const viewItem of this.viewItems) {
766
- viewItem.dispose();
767
- }
768
- this.element.remove();
769
- }
770
- }