dockview-core 7.0.4 → 8.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (380) 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/dataTransfer.d.ts +1 -0
  9. package/dist/cjs/dnd/dropTargetAnchorContainer.d.ts +12 -0
  10. package/dist/cjs/dnd/droptarget.d.ts +94 -0
  11. package/dist/cjs/dnd/ghost.d.ts +1 -0
  12. package/dist/cjs/dnd/pointer/longPress.d.ts +2 -2
  13. package/dist/cjs/dnd/pointer/pointerDragController.d.ts +5 -2
  14. package/dist/cjs/dnd/pointer/pointerDragSource.d.ts +1 -1
  15. package/dist/cjs/dnd/pointer/pointerDropTarget.d.ts +30 -1
  16. package/dist/cjs/dnd/pointer/pointerGhost.d.ts +1 -1
  17. package/dist/cjs/dockview/accessibilityMessages.d.ts +6 -0
  18. package/dist/cjs/dockview/advancedDnDService.d.ts +31 -0
  19. package/dist/cjs/dockview/components/panel/content.d.ts +1 -1
  20. package/dist/cjs/dockview/components/tab/defaultTab.d.ts +2 -0
  21. package/dist/cjs/dockview/components/tab/tab.d.ts +2 -0
  22. package/dist/cjs/dockview/components/titlebar/floatingTitleBar.d.ts +2 -2
  23. package/dist/cjs/dockview/components/titlebar/groupDragSource.d.ts +1 -1
  24. package/dist/cjs/dockview/components/titlebar/tabGroupChip.d.ts +1 -1
  25. package/dist/cjs/dockview/components/titlebar/tabGroupIndicator.d.ts +73 -2
  26. package/dist/cjs/dockview/components/titlebar/tabGroups.d.ts +1 -1
  27. package/dist/cjs/dockview/components/titlebar/tabReorderController.d.ts +295 -0
  28. package/dist/cjs/dockview/components/titlebar/tabs.d.ts +120 -50
  29. package/dist/cjs/dockview/components/titlebar/tabsContainer.d.ts +48 -0
  30. package/dist/cjs/dockview/dndCapabilities.d.ts +1 -1
  31. package/dist/cjs/dockview/dockviewComponent.d.ts +307 -19
  32. package/dist/cjs/dockview/dockviewGroupPanel.d.ts +5 -0
  33. package/dist/cjs/dockview/dockviewGroupPanelModel.d.ts +76 -2
  34. package/dist/cjs/dockview/dockviewPanel.d.ts +12 -0
  35. package/dist/cjs/dockview/dockviewShell.d.ts +48 -24
  36. package/dist/cjs/dockview/edgeGroupService.d.ts +20 -0
  37. package/dist/cjs/dockview/events.d.ts +6 -0
  38. package/dist/cjs/dockview/liveRegionService.d.ts +18 -5
  39. package/dist/cjs/dockview/moduleContracts.d.ts +485 -14
  40. package/dist/cjs/dockview/modules.d.ts +101 -22
  41. package/dist/cjs/dockview/options.d.ts +336 -30
  42. package/dist/cjs/dockview/optionsModules.d.ts +73 -0
  43. package/dist/cjs/dockview/popoutWindowService.d.ts +15 -10
  44. package/dist/cjs/dockview/rootDropTargetService.d.ts +11 -0
  45. package/dist/cjs/dockview/tabGroup.d.ts +3 -0
  46. package/dist/cjs/dockview/tabGroupAccent.d.ts +1 -1
  47. package/dist/cjs/dockview/tabGroupChipsService.d.ts +10 -0
  48. package/dist/cjs/dockview/theme.d.ts +2 -2
  49. package/dist/cjs/dockview/types.d.ts +3 -0
  50. package/dist/cjs/dom.d.ts +9 -1
  51. package/dist/cjs/events.d.ts +1 -1
  52. package/dist/cjs/gridview/baseComponentGridview.d.ts +2 -2
  53. package/dist/cjs/gridview/branchNode.d.ts +16 -0
  54. package/dist/cjs/gridview/gridview.d.ts +2 -0
  55. package/dist/cjs/index.d.ts +35 -29
  56. package/dist/cjs/lifecycle.d.ts +1 -0
  57. package/dist/cjs/overlay/overlay.d.ts +4 -2
  58. package/dist/cjs/overlay/overlayRenderContainer.d.ts +8 -0
  59. package/dist/cjs/paneview/paneview.d.ts +2 -1
  60. package/dist/cjs/paneview/paneviewComponent.d.ts +3 -0
  61. package/dist/cjs/paneview/paneviewPanel.d.ts +5 -0
  62. package/dist/cjs/scrollbar.d.ts +10 -0
  63. package/dist/cjs/splitview/viewItem.d.ts +10 -0
  64. package/dist/cjs/svg.d.ts +1 -0
  65. package/dist/cjs/types.d.ts +8 -0
  66. package/dist/dockview-core.js +18513 -19679
  67. package/dist/dockview-core.min.js +4138 -6
  68. package/dist/dockview-core.min.noStyle.js +6 -7
  69. package/dist/dockview-core.noStyle.js +18512 -19656
  70. package/dist/package/main.cjs.js +18123 -19267
  71. package/dist/package/main.cjs.min.js +6 -6
  72. package/dist/package/main.esm.min.mjs +6 -6
  73. package/dist/package/main.esm.mjs +18081 -19260
  74. package/package.json +81 -77
  75. package/dist/cjs/api/component.api.js +0 -1242
  76. package/dist/cjs/api/dockviewGroupPanelApi.js +0 -200
  77. package/dist/cjs/api/dockviewPanelApi.js +0 -172
  78. package/dist/cjs/api/entryPoints.js +0 -27
  79. package/dist/cjs/api/gridviewPanelApi.js +0 -45
  80. package/dist/cjs/api/panelApi.js +0 -133
  81. package/dist/cjs/api/paneviewPanelApi.js +0 -57
  82. package/dist/cjs/api/splitviewPanelApi.js +0 -47
  83. package/dist/cjs/array.js +0 -66
  84. package/dist/cjs/constants.js +0 -11
  85. package/dist/cjs/dnd/backend.js +0 -171
  86. package/dist/cjs/dnd/dataTransfer.js +0 -100
  87. package/dist/cjs/dnd/dnd.js +0 -74
  88. package/dist/cjs/dnd/dropOverlay.js +0 -197
  89. package/dist/cjs/dnd/dropTargetAnchorContainer.js +0 -104
  90. package/dist/cjs/dnd/droptarget.js +0 -362
  91. package/dist/cjs/dnd/ghost.js +0 -17
  92. package/dist/cjs/dnd/pointer/index.js +0 -13
  93. package/dist/cjs/dnd/pointer/longPress.js +0 -151
  94. package/dist/cjs/dnd/pointer/pointerDragController.js +0 -243
  95. package/dist/cjs/dnd/pointer/pointerDragSource.js +0 -197
  96. package/dist/cjs/dnd/pointer/pointerDropTarget.js +0 -198
  97. package/dist/cjs/dnd/pointer/pointerGhost.js +0 -44
  98. package/dist/cjs/dnd/pointer/types.js +0 -2
  99. package/dist/cjs/dockview/accessibilityMessages.js +0 -51
  100. package/dist/cjs/dockview/allModules.js +0 -25
  101. package/dist/cjs/dockview/components/panel/content.js +0 -213
  102. package/dist/cjs/dockview/components/popupService.js +0 -132
  103. package/dist/cjs/dockview/components/tab/defaultTab.js +0 -70
  104. package/dist/cjs/dockview/components/tab/tab.js +0 -281
  105. package/dist/cjs/dockview/components/titlebar/floatingTitleBar.js +0 -95
  106. package/dist/cjs/dockview/components/titlebar/groupDragSource.js +0 -218
  107. package/dist/cjs/dockview/components/titlebar/tabGroupChip.js +0 -104
  108. package/dist/cjs/dockview/components/titlebar/tabGroupIndicator.js +0 -477
  109. package/dist/cjs/dockview/components/titlebar/tabGroups.js +0 -854
  110. package/dist/cjs/dockview/components/titlebar/tabOverflowControl.js +0 -19
  111. package/dist/cjs/dockview/components/titlebar/tabs.js +0 -2016
  112. package/dist/cjs/dockview/components/titlebar/tabsContainer.js +0 -458
  113. package/dist/cjs/dockview/components/titlebar/voidContainer.js +0 -120
  114. package/dist/cjs/dockview/components/watermark/watermark.js +0 -40
  115. package/dist/cjs/dockview/deserializer.js +0 -39
  116. package/dist/cjs/dockview/dndCapabilities.js +0 -39
  117. package/dist/cjs/dockview/dockviewComponent.js +0 -3896
  118. package/dist/cjs/dockview/dockviewFloatingGroupPanel.js +0 -70
  119. package/dist/cjs/dockview/dockviewGroupPanel.js +0 -204
  120. package/dist/cjs/dockview/dockviewGroupPanelModel.js +0 -1514
  121. package/dist/cjs/dockview/dockviewPanel.js +0 -265
  122. package/dist/cjs/dockview/dockviewPanelModel.js +0 -105
  123. package/dist/cjs/dockview/dockviewShell.js +0 -744
  124. package/dist/cjs/dockview/edgeGroupService.js +0 -128
  125. package/dist/cjs/dockview/events.js +0 -67
  126. package/dist/cjs/dockview/floatingGroupService.js +0 -231
  127. package/dist/cjs/dockview/framework.js +0 -2
  128. package/dist/cjs/dockview/headerActionsService.js +0 -149
  129. package/dist/cjs/dockview/liveRegionService.js +0 -185
  130. package/dist/cjs/dockview/moduleContracts.js +0 -2
  131. package/dist/cjs/dockview/modules.js +0 -304
  132. package/dist/cjs/dockview/options.js +0 -103
  133. package/dist/cjs/dockview/popoutWindowService.js +0 -261
  134. package/dist/cjs/dockview/rootDropTargetService.js +0 -87
  135. package/dist/cjs/dockview/strictEventsSequencing.js +0 -63
  136. package/dist/cjs/dockview/tabGroup.js +0 -219
  137. package/dist/cjs/dockview/tabGroupAccent.js +0 -126
  138. package/dist/cjs/dockview/theme.js +0 -139
  139. package/dist/cjs/dockview/types.js +0 -2
  140. package/dist/cjs/dockview/validate.js +0 -76
  141. package/dist/cjs/dockview/watermarkService.js +0 -61
  142. package/dist/cjs/dom.js +0 -543
  143. package/dist/cjs/events.js +0 -296
  144. package/dist/cjs/framwork.js +0 -2
  145. package/dist/cjs/gridview/baseComponentGridview.js +0 -330
  146. package/dist/cjs/gridview/basePanelView.js +0 -162
  147. package/dist/cjs/gridview/branchNode.js +0 -372
  148. package/dist/cjs/gridview/gridview.js +0 -776
  149. package/dist/cjs/gridview/gridviewComponent.js +0 -363
  150. package/dist/cjs/gridview/gridviewPanel.js +0 -249
  151. package/dist/cjs/gridview/leafNode.js +0 -169
  152. package/dist/cjs/gridview/options.js +0 -17
  153. package/dist/cjs/gridview/types.js +0 -2
  154. package/dist/cjs/index.js +0 -105
  155. package/dist/cjs/lifecycle.js +0 -80
  156. package/dist/cjs/math.js +0 -38
  157. package/dist/cjs/overlay/overlay.js +0 -602
  158. package/dist/cjs/overlay/overlayRenderContainer.js +0 -309
  159. package/dist/cjs/panel/types.js +0 -2
  160. package/dist/cjs/paneview/defaultPaneviewHeader.js +0 -92
  161. package/dist/cjs/paneview/draggablePaneviewPanel.js +0 -141
  162. package/dist/cjs/paneview/options.js +0 -44
  163. package/dist/cjs/paneview/paneview.js +0 -203
  164. package/dist/cjs/paneview/paneviewComponent.js +0 -430
  165. package/dist/cjs/paneview/paneviewPanel.js +0 -275
  166. package/dist/cjs/popoutWindow.js +0 -244
  167. package/dist/cjs/resizable.js +0 -97
  168. package/dist/cjs/scrollbar.js +0 -169
  169. package/dist/cjs/splitview/options.js +0 -19
  170. package/dist/cjs/splitview/splitview.js +0 -999
  171. package/dist/cjs/splitview/splitviewComponent.js +0 -401
  172. package/dist/cjs/splitview/splitviewPanel.js +0 -179
  173. package/dist/cjs/splitview/viewItem.js +0 -119
  174. package/dist/cjs/svg.js +0 -43
  175. package/dist/cjs/types.js +0 -2
  176. package/dist/dockview-core.min.js.map +0 -1
  177. package/dist/dockview-core.min.noStyle.js.map +0 -1
  178. package/dist/esm/api/component.api.d.ts +0 -640
  179. package/dist/esm/api/component.api.js +0 -887
  180. package/dist/esm/api/dockviewGroupPanelApi.d.ts +0 -109
  181. package/dist/esm/api/dockviewGroupPanelApi.js +0 -155
  182. package/dist/esm/api/dockviewPanelApi.d.ts +0 -84
  183. package/dist/esm/api/dockviewPanelApi.js +0 -124
  184. package/dist/esm/api/entryPoints.d.ts +0 -9
  185. package/dist/esm/api/entryPoints.js +0 -21
  186. package/dist/esm/api/gridviewPanelApi.d.ts +0 -37
  187. package/dist/esm/api/gridviewPanelApi.js +0 -23
  188. package/dist/esm/api/panelApi.d.ts +0 -100
  189. package/dist/esm/api/panelApi.js +0 -87
  190. package/dist/esm/api/paneviewPanelApi.d.ts +0 -26
  191. package/dist/esm/api/paneviewPanelApi.js +0 -27
  192. package/dist/esm/api/splitviewPanelApi.d.ts +0 -32
  193. package/dist/esm/api/splitviewPanelApi.js +0 -25
  194. package/dist/esm/array.d.ts +0 -13
  195. package/dist/esm/array.js +0 -57
  196. package/dist/esm/constants.d.ts +0 -8
  197. package/dist/esm/constants.js +0 -8
  198. package/dist/esm/dnd/backend.d.ts +0 -70
  199. package/dist/esm/dnd/backend.js +0 -148
  200. package/dist/esm/dnd/dataTransfer.d.ts +0 -31
  201. package/dist/esm/dnd/dataTransfer.js +0 -67
  202. package/dist/esm/dnd/dnd.d.ts +0 -32
  203. package/dist/esm/dnd/dnd.js +0 -51
  204. package/dist/esm/dnd/dropOverlay.d.ts +0 -20
  205. package/dist/esm/dnd/dropOverlay.js +0 -192
  206. package/dist/esm/dnd/dropTargetAnchorContainer.d.ts +0 -16
  207. package/dist/esm/dnd/dropTargetAnchorContainer.js +0 -73
  208. package/dist/esm/dnd/droptarget.d.ts +0 -116
  209. package/dist/esm/dnd/droptarget.js +0 -316
  210. package/dist/esm/dnd/ghost.d.ts +0 -4
  211. package/dist/esm/dnd/ghost.js +0 -14
  212. package/dist/esm/dnd/pointer/index.d.ts +0 -11
  213. package/dist/esm/dnd/pointer/index.js +0 -5
  214. package/dist/esm/dnd/pointer/longPress.d.ts +0 -32
  215. package/dist/esm/dnd/pointer/longPress.js +0 -127
  216. package/dist/esm/dnd/pointer/pointerDragController.d.ts +0 -60
  217. package/dist/esm/dnd/pointer/pointerDragController.js +0 -193
  218. package/dist/esm/dnd/pointer/pointerDragSource.d.ts +0 -61
  219. package/dist/esm/dnd/pointer/pointerDragSource.js +0 -173
  220. package/dist/esm/dnd/pointer/pointerDropTarget.d.ts +0 -39
  221. package/dist/esm/dnd/pointer/pointerDropTarget.js +0 -168
  222. package/dist/esm/dnd/pointer/pointerGhost.d.ts +0 -30
  223. package/dist/esm/dnd/pointer/pointerGhost.js +0 -39
  224. package/dist/esm/dnd/pointer/types.d.ts +0 -16
  225. package/dist/esm/dnd/pointer/types.js +0 -1
  226. package/dist/esm/dockview/accessibilityMessages.d.ts +0 -32
  227. package/dist/esm/dockview/accessibilityMessages.js +0 -30
  228. package/dist/esm/dockview/allModules.d.ts +0 -8
  229. package/dist/esm/dockview/allModules.js +0 -22
  230. package/dist/esm/dockview/components/panel/content.d.ts +0 -54
  231. package/dist/esm/dockview/components/panel/content.js +0 -185
  232. package/dist/esm/dockview/components/popupService.d.ts +0 -21
  233. package/dist/esm/dockview/components/popupService.js +0 -108
  234. package/dist/esm/dockview/components/tab/defaultTab.d.ts +0 -12
  235. package/dist/esm/dockview/components/tab/defaultTab.js +0 -43
  236. package/dist/esm/dockview/components/tab/tab.d.ts +0 -44
  237. package/dist/esm/dockview/components/tab/tab.js +0 -242
  238. package/dist/esm/dockview/components/titlebar/floatingTitleBar.d.ts +0 -34
  239. package/dist/esm/dockview/components/titlebar/floatingTitleBar.js +0 -65
  240. package/dist/esm/dockview/components/titlebar/groupDragSource.d.ts +0 -51
  241. package/dist/esm/dockview/components/titlebar/groupDragSource.js +0 -178
  242. package/dist/esm/dockview/components/titlebar/tabGroupChip.d.ts +0 -37
  243. package/dist/esm/dockview/components/titlebar/tabGroupChip.js +0 -77
  244. package/dist/esm/dockview/components/titlebar/tabGroupIndicator.d.ts +0 -72
  245. package/dist/esm/dockview/components/titlebar/tabGroupIndicator.js +0 -360
  246. package/dist/esm/dockview/components/titlebar/tabGroups.d.ts +0 -107
  247. package/dist/esm/dockview/components/titlebar/tabGroups.js +0 -621
  248. package/dist/esm/dockview/components/titlebar/tabOverflowControl.d.ts +0 -8
  249. package/dist/esm/dockview/components/titlebar/tabOverflowControl.js +0 -16
  250. package/dist/esm/dockview/components/titlebar/tabs.d.ts +0 -167
  251. package/dist/esm/dockview/components/titlebar/tabs.js +0 -1653
  252. package/dist/esm/dockview/components/titlebar/tabsContainer.d.ts +0 -104
  253. package/dist/esm/dockview/components/titlebar/tabsContainer.js +0 -359
  254. package/dist/esm/dockview/components/titlebar/voidContainer.d.ts +0 -21
  255. package/dist/esm/dockview/components/titlebar/voidContainer.js +0 -92
  256. package/dist/esm/dockview/components/watermark/watermark.d.ts +0 -8
  257. package/dist/esm/dockview/components/watermark/watermark.js +0 -14
  258. package/dist/esm/dockview/deserializer.d.ts +0 -12
  259. package/dist/esm/dockview/deserializer.js +0 -34
  260. package/dist/esm/dockview/dndCapabilities.d.ts +0 -19
  261. package/dist/esm/dockview/dndCapabilities.js +0 -36
  262. package/dist/esm/dockview/dockviewComponent.d.ts +0 -626
  263. package/dist/esm/dockview/dockviewComponent.js +0 -3214
  264. package/dist/esm/dockview/dockviewFloatingGroupPanel.d.ts +0 -45
  265. package/dist/esm/dockview/dockviewFloatingGroupPanel.js +0 -44
  266. package/dist/esm/dockview/dockviewGroupPanel.d.ts +0 -35
  267. package/dist/esm/dockview/dockviewGroupPanel.js +0 -142
  268. package/dist/esm/dockview/dockviewGroupPanelModel.d.ts +0 -358
  269. package/dist/esm/dockview/dockviewGroupPanelModel.js +0 -1180
  270. package/dist/esm/dockview/dockviewPanel.d.ts +0 -69
  271. package/dist/esm/dockview/dockviewPanel.js +0 -178
  272. package/dist/esm/dockview/dockviewPanelModel.d.ts +0 -37
  273. package/dist/esm/dockview/dockviewPanelModel.js +0 -81
  274. package/dist/esm/dockview/dockviewShell.d.ts +0 -150
  275. package/dist/esm/dockview/dockviewShell.js +0 -678
  276. package/dist/esm/dockview/edgeGroupService.d.ts +0 -38
  277. package/dist/esm/dockview/edgeGroupService.js +0 -63
  278. package/dist/esm/dockview/events.d.ts +0 -38
  279. package/dist/esm/dockview/events.js +0 -34
  280. package/dist/esm/dockview/floatingGroupService.d.ts +0 -37
  281. package/dist/esm/dockview/floatingGroupService.js +0 -150
  282. package/dist/esm/dockview/framework.d.ts +0 -65
  283. package/dist/esm/dockview/framework.js +0 -1
  284. package/dist/esm/dockview/headerActionsService.d.ts +0 -32
  285. package/dist/esm/dockview/headerActionsService.js +0 -86
  286. package/dist/esm/dockview/liveRegionService.d.ts +0 -53
  287. package/dist/esm/dockview/liveRegionService.js +0 -159
  288. package/dist/esm/dockview/moduleContracts.d.ts +0 -119
  289. package/dist/esm/dockview/moduleContracts.js +0 -1
  290. package/dist/esm/dockview/modules.d.ts +0 -110
  291. package/dist/esm/dockview/modules.js +0 -170
  292. package/dist/esm/dockview/options.d.ts +0 -474
  293. package/dist/esm/dockview/options.js +0 -77
  294. package/dist/esm/dockview/popoutWindowService.d.ts +0 -95
  295. package/dist/esm/dockview/popoutWindowService.js +0 -175
  296. package/dist/esm/dockview/rootDropTargetService.d.ts +0 -35
  297. package/dist/esm/dockview/rootDropTargetService.js +0 -82
  298. package/dist/esm/dockview/strictEventsSequencing.d.ts +0 -7
  299. package/dist/esm/dockview/strictEventsSequencing.js +0 -41
  300. package/dist/esm/dockview/tabGroup.d.ts +0 -99
  301. package/dist/esm/dockview/tabGroup.js +0 -144
  302. package/dist/esm/dockview/tabGroupAccent.d.ts +0 -65
  303. package/dist/esm/dockview/tabGroupAccent.js +0 -114
  304. package/dist/esm/dockview/theme.d.ts +0 -86
  305. package/dist/esm/dockview/theme.js +0 -136
  306. package/dist/esm/dockview/types.d.ts +0 -53
  307. package/dist/esm/dockview/types.js +0 -1
  308. package/dist/esm/dockview/validate.d.ts +0 -0
  309. package/dist/esm/dockview/validate.js +0 -76
  310. package/dist/esm/dockview/watermarkService.d.ts +0 -30
  311. package/dist/esm/dockview/watermarkService.js +0 -56
  312. package/dist/esm/dom.d.ts +0 -60
  313. package/dist/esm/dom.js +0 -375
  314. package/dist/esm/events.d.ts +0 -79
  315. package/dist/esm/events.js +0 -219
  316. package/dist/esm/framwork.d.ts +0 -4
  317. package/dist/esm/framwork.js +0 -1
  318. package/dist/esm/gridview/baseComponentGridview.d.ts +0 -111
  319. package/dist/esm/gridview/baseComponentGridview.js +0 -237
  320. package/dist/esm/gridview/basePanelView.d.ts +0 -40
  321. package/dist/esm/gridview/basePanelView.js +0 -91
  322. package/dist/esm/gridview/branchNode.d.ts +0 -57
  323. package/dist/esm/gridview/branchNode.js +0 -257
  324. package/dist/esm/gridview/gridview.d.ts +0 -158
  325. package/dist/esm/gridview/gridview.js +0 -681
  326. package/dist/esm/gridview/gridviewComponent.d.ts +0 -88
  327. package/dist/esm/gridview/gridviewComponent.js +0 -265
  328. package/dist/esm/gridview/gridviewPanel.d.ts +0 -77
  329. package/dist/esm/gridview/gridviewPanel.js +0 -182
  330. package/dist/esm/gridview/leafNode.d.ts +0 -34
  331. package/dist/esm/gridview/leafNode.js +0 -102
  332. package/dist/esm/gridview/options.d.ts +0 -15
  333. package/dist/esm/gridview/options.js +0 -14
  334. package/dist/esm/gridview/types.d.ts +0 -3
  335. package/dist/esm/gridview/types.js +0 -1
  336. package/dist/esm/index.d.ts +0 -58
  337. package/dist/esm/index.js +0 -44
  338. package/dist/esm/lifecycle.d.ts +0 -25
  339. package/dist/esm/lifecycle.js +0 -56
  340. package/dist/esm/math.d.ts +0 -5
  341. package/dist/esm/math.js +0 -32
  342. package/dist/esm/overlay/overlay.d.ts +0 -91
  343. package/dist/esm/overlay/overlay.js +0 -520
  344. package/dist/esm/overlay/overlayRenderContainer.d.ts +0 -24
  345. package/dist/esm/overlay/overlayRenderContainer.js +0 -249
  346. package/dist/esm/panel/types.d.ts +0 -33
  347. package/dist/esm/panel/types.js +0 -1
  348. package/dist/esm/paneview/defaultPaneviewHeader.d.ts +0 -21
  349. package/dist/esm/paneview/defaultPaneviewHeader.js +0 -65
  350. package/dist/esm/paneview/draggablePaneviewPanel.d.ts +0 -38
  351. package/dist/esm/paneview/draggablePaneviewPanel.js +0 -107
  352. package/dist/esm/paneview/options.d.ts +0 -30
  353. package/dist/esm/paneview/options.js +0 -22
  354. package/dist/esm/paneview/paneview.d.ts +0 -41
  355. package/dist/esm/paneview/paneview.js +0 -148
  356. package/dist/esm/paneview/paneviewComponent.d.ts +0 -133
  357. package/dist/esm/paneview/paneviewComponent.js +0 -306
  358. package/dist/esm/paneview/paneviewPanel.d.ts +0 -98
  359. package/dist/esm/paneview/paneviewPanel.js +0 -192
  360. package/dist/esm/popoutWindow.d.ts +0 -38
  361. package/dist/esm/popoutWindow.js +0 -170
  362. package/dist/esm/resizable.d.ts +0 -12
  363. package/dist/esm/resizable.js +0 -66
  364. package/dist/esm/scrollbar.d.ts +0 -15
  365. package/dist/esm/scrollbar.js +0 -139
  366. package/dist/esm/splitview/options.d.ts +0 -21
  367. package/dist/esm/splitview/options.js +0 -16
  368. package/dist/esm/splitview/splitview.d.ts +0 -145
  369. package/dist/esm/splitview/splitview.js +0 -770
  370. package/dist/esm/splitview/splitviewComponent.d.ts +0 -101
  371. package/dist/esm/splitview/splitviewComponent.js +0 -267
  372. package/dist/esm/splitview/splitviewPanel.d.ts +0 -45
  373. package/dist/esm/splitview/splitviewPanel.js +0 -108
  374. package/dist/esm/splitview/viewItem.d.ts +0 -25
  375. package/dist/esm/splitview/viewItem.js +0 -74
  376. package/dist/esm/svg.d.ts +0 -3
  377. package/dist/esm/svg.js +0 -31
  378. package/dist/esm/types.d.ts +0 -31
  379. package/dist/esm/types.js +0 -1
  380. 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
- }