@datagrok-libraries/dock-spawn-dg 0.0.1

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 (222) hide show
  1. package/.eslintrc.json +47 -0
  2. package/CHANGELOG.md +355 -0
  3. package/LICENSE +21 -0
  4. package/README.md +11 -0
  5. package/css/dock-manager-context-menu.css +19 -0
  6. package/css/dock-manager-style.css +190 -0
  7. package/css/dock-manager.css +411 -0
  8. package/images/close.svg +6 -0
  9. package/images/dock_bottom.png +0 -0
  10. package/images/dock_bottom_sel.png +0 -0
  11. package/images/dock_fill.png +0 -0
  12. package/images/dock_fill_sel.png +0 -0
  13. package/images/dock_left.png +0 -0
  14. package/images/dock_left_sel.png +0 -0
  15. package/images/dock_right.png +0 -0
  16. package/images/dock_right_sel.png +0 -0
  17. package/images/dock_top.png +0 -0
  18. package/images/dock_top_sel.png +0 -0
  19. package/index.ts +32 -0
  20. package/lib/BrowserDialogHelper.d.ts +8 -0
  21. package/lib/BrowserDialogHelper.d.ts.map +1 -0
  22. package/lib/BrowserDialogHelper.js +60 -0
  23. package/lib/ContainerType.d.ts +7 -0
  24. package/lib/ContainerType.d.ts.map +1 -0
  25. package/lib/ContainerType.js +7 -0
  26. package/lib/Dialog.d.ts +51 -0
  27. package/lib/Dialog.d.ts.map +1 -0
  28. package/lib/Dialog.js +209 -0
  29. package/lib/DockConfig.d.ts +9 -0
  30. package/lib/DockConfig.d.ts.map +1 -0
  31. package/lib/DockConfig.js +14 -0
  32. package/lib/DockGraphDeserializer.d.ts +19 -0
  33. package/lib/DockGraphDeserializer.d.ts.map +1 -0
  34. package/lib/DockGraphDeserializer.js +114 -0
  35. package/lib/DockGraphSerializer.d.ts +14 -0
  36. package/lib/DockGraphSerializer.d.ts.map +1 -0
  37. package/lib/DockGraphSerializer.js +40 -0
  38. package/lib/DockLayoutEngine.d.ts +36 -0
  39. package/lib/DockLayoutEngine.d.ts.map +1 -0
  40. package/lib/DockLayoutEngine.js +323 -0
  41. package/lib/DockManager.d.ts +155 -0
  42. package/lib/DockManager.d.ts.map +1 -0
  43. package/lib/DockManager.js +752 -0
  44. package/lib/DockManagerContext.d.ts +10 -0
  45. package/lib/DockManagerContext.d.ts.map +1 -0
  46. package/lib/DockManagerContext.js +12 -0
  47. package/lib/DockModel.d.ts +9 -0
  48. package/lib/DockModel.d.ts.map +1 -0
  49. package/lib/DockModel.js +8 -0
  50. package/lib/DockNode.d.ts +16 -0
  51. package/lib/DockNode.d.ts.map +1 -0
  52. package/lib/DockNode.js +64 -0
  53. package/lib/DockWheel.d.ts +41 -0
  54. package/lib/DockWheel.d.ts.map +1 -0
  55. package/lib/DockWheel.js +208 -0
  56. package/lib/DockWheelItem.d.ts +16 -0
  57. package/lib/DockWheelItem.d.ts.map +1 -0
  58. package/lib/DockWheelItem.js +34 -0
  59. package/lib/DocumentManagerContainer.d.ts +16 -0
  60. package/lib/DocumentManagerContainer.d.ts.map +1 -0
  61. package/lib/DocumentManagerContainer.js +28 -0
  62. package/lib/DocumentTabPage.d.ts +11 -0
  63. package/lib/DocumentTabPage.d.ts.map +1 -0
  64. package/lib/DocumentTabPage.js +26 -0
  65. package/lib/DraggableContainer.d.ts +51 -0
  66. package/lib/DraggableContainer.d.ts.map +1 -0
  67. package/lib/DraggableContainer.js +145 -0
  68. package/lib/EventHandler.d.ts +8 -0
  69. package/lib/EventHandler.d.ts.map +1 -0
  70. package/lib/EventHandler.js +14 -0
  71. package/lib/FillDockContainer.d.ts +34 -0
  72. package/lib/FillDockContainer.d.ts.map +1 -0
  73. package/lib/FillDockContainer.js +80 -0
  74. package/lib/HorizontalDockContainer.d.ts +7 -0
  75. package/lib/HorizontalDockContainer.d.ts.map +1 -0
  76. package/lib/HorizontalDockContainer.js +9 -0
  77. package/lib/PanelContainer.d.ts +114 -0
  78. package/lib/PanelContainer.d.ts.map +1 -0
  79. package/lib/PanelContainer.js +517 -0
  80. package/lib/Point.d.ts +6 -0
  81. package/lib/Point.d.ts.map +1 -0
  82. package/lib/Point.js +8 -0
  83. package/lib/ResizableContainer.d.ts +56 -0
  84. package/lib/ResizableContainer.d.ts.map +1 -0
  85. package/lib/ResizableContainer.js +254 -0
  86. package/lib/ResizeHandle.d.ts +16 -0
  87. package/lib/ResizeHandle.d.ts.map +1 -0
  88. package/lib/ResizeHandle.js +58 -0
  89. package/lib/SplitterBar.d.ts +33 -0
  90. package/lib/SplitterBar.d.ts.map +1 -0
  91. package/lib/SplitterBar.js +137 -0
  92. package/lib/SplitterDockContainer.d.ts +36 -0
  93. package/lib/SplitterDockContainer.d.ts.map +1 -0
  94. package/lib/SplitterDockContainer.js +75 -0
  95. package/lib/SplitterPanel.d.ts +27 -0
  96. package/lib/SplitterPanel.d.ts.map +1 -0
  97. package/lib/SplitterPanel.js +195 -0
  98. package/lib/TabHandle.d.ts +56 -0
  99. package/lib/TabHandle.d.ts.map +1 -0
  100. package/lib/TabHandle.js +292 -0
  101. package/lib/TabHost.d.ts +47 -0
  102. package/lib/TabHost.d.ts.map +1 -0
  103. package/lib/TabHost.js +238 -0
  104. package/lib/TabPage.d.ts +20 -0
  105. package/lib/TabPage.d.ts.map +1 -0
  106. package/lib/TabPage.js +81 -0
  107. package/lib/UndockInitiator.d.ts +32 -0
  108. package/lib/UndockInitiator.d.ts.map +1 -0
  109. package/lib/UndockInitiator.js +152 -0
  110. package/lib/Utils.d.ts +15 -0
  111. package/lib/Utils.d.ts.map +1 -0
  112. package/lib/Utils.js +69 -0
  113. package/lib/VerticalDockContainer.d.ts +7 -0
  114. package/lib/VerticalDockContainer.d.ts.map +1 -0
  115. package/lib/VerticalDockContainer.js +9 -0
  116. package/lib/enums/PanelType.d.ts +5 -0
  117. package/lib/enums/PanelType.d.ts.map +1 -0
  118. package/lib/enums/PanelType.js +5 -0
  119. package/lib/enums/TabHostDirection.d.ts +7 -0
  120. package/lib/enums/TabHostDirection.d.ts.map +1 -0
  121. package/lib/enums/TabHostDirection.js +7 -0
  122. package/lib/enums/WheelTypes.d.ts +12 -0
  123. package/lib/enums/WheelTypes.d.ts.map +1 -0
  124. package/lib/enums/WheelTypes.js +14 -0
  125. package/lib/i18n/Defaults.d.ts +12 -0
  126. package/lib/i18n/Defaults.d.ts.map +1 -0
  127. package/lib/i18n/Defaults.js +9 -0
  128. package/lib/i18n/Localizer.d.ts +7 -0
  129. package/lib/i18n/Localizer.d.ts.map +1 -0
  130. package/lib/i18n/Localizer.js +16 -0
  131. package/lib/index.d.ts +33 -0
  132. package/lib/index.d.ts.map +1 -0
  133. package/lib/index.js +32 -0
  134. package/lib/interfaces/IDockContainer.d.ts +26 -0
  135. package/lib/interfaces/IDockContainer.d.ts.map +1 -0
  136. package/lib/interfaces/IDockContainer.js +1 -0
  137. package/lib/interfaces/IDockContainerWithSize.d.ts +6 -0
  138. package/lib/interfaces/IDockContainerWithSize.d.ts.map +1 -0
  139. package/lib/interfaces/IDockContainerWithSize.js +1 -0
  140. package/lib/interfaces/ILayoutEventListener.d.ts +27 -0
  141. package/lib/interfaces/ILayoutEventListener.d.ts.map +1 -0
  142. package/lib/interfaces/ILayoutEventListener.js +1 -0
  143. package/lib/interfaces/IMouseOrTouchEvent.d.ts +7 -0
  144. package/lib/interfaces/IMouseOrTouchEvent.d.ts.map +1 -0
  145. package/lib/interfaces/IMouseOrTouchEvent.js +1 -0
  146. package/lib/interfaces/INodeInfo.d.ts +8 -0
  147. package/lib/interfaces/INodeInfo.d.ts.map +1 -0
  148. package/lib/interfaces/INodeInfo.js +1 -0
  149. package/lib/interfaces/IPanelInfo.d.ts +10 -0
  150. package/lib/interfaces/IPanelInfo.d.ts.map +1 -0
  151. package/lib/interfaces/IPanelInfo.js +1 -0
  152. package/lib/interfaces/IRectangle.d.ts +7 -0
  153. package/lib/interfaces/IRectangle.d.ts.map +1 -0
  154. package/lib/interfaces/IRectangle.js +1 -0
  155. package/lib/interfaces/ISize.d.ts +5 -0
  156. package/lib/interfaces/ISize.d.ts.map +1 -0
  157. package/lib/interfaces/ISize.js +1 -0
  158. package/lib/interfaces/IState.d.ts +12 -0
  159. package/lib/interfaces/IState.d.ts.map +1 -0
  160. package/lib/interfaces/IState.js +1 -0
  161. package/lib/interfaces/IThickness.d.ts +7 -0
  162. package/lib/interfaces/IThickness.d.ts.map +1 -0
  163. package/lib/interfaces/IThickness.js +1 -0
  164. package/lib/webcomponent/DockSpawnTsWebcomponent.d.ts +35 -0
  165. package/lib/webcomponent/DockSpawnTsWebcomponent.d.ts.map +1 -0
  166. package/lib/webcomponent/DockSpawnTsWebcomponent.js +209 -0
  167. package/lib/webcomponent/styles.d.ts +5 -0
  168. package/lib/webcomponent/styles.d.ts.map +1 -0
  169. package/lib/webcomponent/styles.js +537 -0
  170. package/package.json +36 -0
  171. package/src/BrowserDialogHelper.ts +76 -0
  172. package/src/ContainerType.ts +6 -0
  173. package/src/Dialog.ts +253 -0
  174. package/src/DockConfig.ts +15 -0
  175. package/src/DockGraphDeserializer.ts +129 -0
  176. package/src/DockGraphSerializer.ts +53 -0
  177. package/src/DockLayoutEngine.ts +370 -0
  178. package/src/DockManager.ts +880 -0
  179. package/src/DockManagerContext.ts +16 -0
  180. package/src/DockModel.ts +12 -0
  181. package/src/DockNode.ts +81 -0
  182. package/src/DockWheel.ts +215 -0
  183. package/src/DockWheelItem.ts +41 -0
  184. package/src/DocumentManagerContainer.ts +39 -0
  185. package/src/DocumentTabPage.ts +35 -0
  186. package/src/DraggableContainer.ts +177 -0
  187. package/src/EventHandler.ts +17 -0
  188. package/src/FillDockContainer.ts +98 -0
  189. package/src/HorizontalDockContainer.ts +13 -0
  190. package/src/PanelContainer.ts +596 -0
  191. package/src/Point.ts +10 -0
  192. package/src/ResizableContainer.ts +293 -0
  193. package/src/ResizeHandle.ts +59 -0
  194. package/src/SplitterBar.ts +157 -0
  195. package/src/SplitterDockContainer.ts +95 -0
  196. package/src/SplitterPanel.ts +228 -0
  197. package/src/TabHandle.ts +347 -0
  198. package/src/TabHost.ts +267 -0
  199. package/src/TabPage.ts +98 -0
  200. package/src/UndockInitiator.ts +181 -0
  201. package/src/Utils.ts +85 -0
  202. package/src/VerticalDockContainer.ts +13 -0
  203. package/src/enums/PanelType.ts +4 -0
  204. package/src/enums/TabHostDirection.ts +6 -0
  205. package/src/enums/WheelTypes.ts +14 -0
  206. package/src/i18n/Defaults.ts +20 -0
  207. package/src/i18n/Localizer.ts +23 -0
  208. package/src/index.ts +32 -0
  209. package/src/interfaces/IDockContainer.ts +27 -0
  210. package/src/interfaces/IDockContainerWithSize.ts +6 -0
  211. package/src/interfaces/ILayoutEventListener.ts +28 -0
  212. package/src/interfaces/IMouseOrTouchEvent.ts +6 -0
  213. package/src/interfaces/INodeInfo.ts +8 -0
  214. package/src/interfaces/IPanelInfo.ts +10 -0
  215. package/src/interfaces/IRectangle.ts +6 -0
  216. package/src/interfaces/ISize.ts +4 -0
  217. package/src/interfaces/IState.ts +12 -0
  218. package/src/interfaces/IThickness.ts +6 -0
  219. package/src/webcomponent/DockSpawnTsWebcomponent.ts +248 -0
  220. package/src/webcomponent/styles.ts +544 -0
  221. package/tsconfig.json +74 -0
  222. package/tsconfig.tsbuildinfo +1 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../src/webcomponent/styles.ts"],"names":[],"mappings":"AAmBA,eAAO,MAAM,OAAO,eAMnB,CAAA;AAED,eAAO,MAAM,KAAK,eAGZ,CAAC;AAEP,eAAO,MAAM,MAAM,eAgKlB,CAAC;AAEF,eAAO,MAAM,MAAM,eA6VjB,CAAC"}
@@ -0,0 +1,537 @@
1
+ function toParString(strings, values) {
2
+ if (strings.length === 1)
3
+ return strings.raw[0];
4
+ else {
5
+ let r = '';
6
+ for (let i = 0; i < strings.length; i++)
7
+ r += strings[i] + (values[i] ?? '');
8
+ return r;
9
+ }
10
+ }
11
+ const css = function (strings, ...values) {
12
+ const cssStyleSheet = new CSSStyleSheet();
13
+ cssStyleSheet.replaceSync(toParString(strings, values));
14
+ return cssStyleSheet;
15
+ };
16
+ export const faStyle = css `
17
+ .fa,.fab,.fad,.fal,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical,.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\f26e"}@font-face{font-family:"Font Awesome 5 Pro";font-style:normal;font-weight:300;font-display:block;src:url(/font/font-awesome/webfonts/fa-light-300.eot);src:url(/font/font-awesome/webfonts/fa-light-300.eot?#iefix) format("embedded-opentype"),url(/font/font-awesome/webfonts/fa-light-300.woff2) format("woff2"),url(/font/font-awesome/webfonts/fa-light-300.woff) format("woff"),url(/font/font-awesome/webfonts/fa-light-300.ttf) format("truetype"),url(/font/font-awesome/webfonts/fa-light-300.svg#fontawesome) format("svg")}.fal{font-weight:300}@font-face{font-family:"Font Awesome 5 Pro";font-style:normal;font-weight:400;font-display:block;src:url(/font/font-awesome/webfonts/fa-regular-400.eot);src:url(/font/font-awesome/webfonts/fa-regular-400.eot?#iefix) format("embedded-opentype"),url(/font/font-awesome/webfonts/fa-regular-400.woff2) format("woff2"),url(/font/font-awesome/webfonts/fa-regular-400.woff) format("woff"),url(/font/font-awesome/webfonts/fa-regular-400.ttf) format("truetype"),url(/font/font-awesome/webfonts/fa-regular-400.svg#fontawesome) format("svg")}.fal,.far{font-family:"Font Awesome 5 Pro"}.far{font-weight:400}@font-face{font-family:"Font Awesome 5 Pro";font-style:normal;font-weight:900;font-display:block;src:url(/font/font-awesome/webfonts/fa-solid-900.eot);src:url(/font/font-awesome/webfonts/fa-solid-900.eot?#iefix) format("embedded-opentype"),url(/font/font-awesome/webfonts/fa-solid-900.woff2) format("woff2"),url(/font/font-awesome/webfonts/fa-solid-900.woff) format("woff"),url(/font/font-awesome/webfonts/fa-solid-900.ttf) format("truetype"),url(/font/font-awesome/webfonts/fa-solid-900.svg#fontawesome) format("svg")}.fa,.fas{font-family:"Font Awesome 5 Pro";font-weight:900}
18
+ .fa-sign-in-alt:after{content:"\f2f6"}
19
+ .fa-sign-out-alt:before{content:"\f2f5"}
20
+ .fa-folder-tree:before{content:"\f802"}
21
+ .fa-history:before{content:"\f1da"}
22
+ `;
23
+ export const style = css `
24
+ :host {
25
+ display: block;
26
+ }`;
27
+ export const style1 = css `
28
+ /************* Panel with title bar ************/
29
+ .panel-base {
30
+ }
31
+ .panel-titlebar {
32
+ flex-shrink: 0;
33
+ background-color: #ffffff;
34
+ color: #9497a0;
35
+ height: 24px;
36
+ width: 100%;
37
+ overflow: hidden;
38
+ padding: 0 2px;
39
+ display: flex;
40
+ align-items: center;
41
+ box-sizing: border-box;
42
+ }
43
+ .panel-titlebar:hover {
44
+ background-color: #f2f2f5;
45
+ color: #9497a0;
46
+ }
47
+ .panel-titlebar-text {
48
+ color: #9497a0;
49
+ text-wrap-mode: nowrap;
50
+ }
51
+ .dockspan-tab-handle:only-child .dockspan-tab-handle-text {
52
+ color: #9497a0;
53
+ }
54
+ .dockspan-tab-handle:only-child {
55
+ border-right: none;
56
+ }
57
+ .dockspan-tab-handle:only-child .dockspan-tab-handle-text {
58
+ margin-left: 2px;
59
+ font-weight: normal;
60
+ }
61
+ .panel-titlebar-button-close {
62
+ color:#aaa;
63
+ }
64
+ .panel-titlebar-button-close:hover {
65
+ color:red;
66
+ }
67
+ .panel-content {
68
+ /*background-color: #FFF;*/
69
+ overflow: auto;
70
+ }
71
+ .panel-content * {
72
+ }
73
+ .panel-element-content-container {
74
+ background-color: white;
75
+ z-index: 1;
76
+ }
77
+ /***************** Floating dialog box ****************/
78
+ .dialog-floating {
79
+ box-shadow: 5px 5px 20px #000;
80
+ pointer-events: none;
81
+ }
82
+ /************ Dragging decorator ************/
83
+ .draggable-dragging-active {
84
+ opacity: 0.95;
85
+ }
86
+ /************ Resize decorator ************/
87
+ .resize-handle {
88
+ pointer-events: auto;
89
+ }
90
+ .resize-handle-corner {
91
+ pointer-events: auto;
92
+ }
93
+ .resize-handle-e { }
94
+ .resize-handle-w { }
95
+ .resize-handle-s { }
96
+ .resize-handle-n { }
97
+ .resize-handle-ne { }
98
+ .resize-handle-nw { }
99
+ .resize-handle-se { }
100
+ .resize-handle-sw { }
101
+ /******************* Dock Manager ********************/
102
+ .dock-container {
103
+ background-color: #888;
104
+ }
105
+ .dock-container-fill {
106
+ }
107
+ /******************* Document Manager ********************/
108
+ .document-manager {
109
+ background-color: #666;
110
+ }
111
+ /**************************** Splitter *********************************/
112
+ .splitbar-horizontal {
113
+ background-color: #f2f2f5;
114
+ box-sizing: content-box;
115
+ height: 1px;
116
+ display: flex;
117
+ padding: 0 2px;
118
+ margin: 0 -2px;
119
+ background-clip: content-box;
120
+ width: 100% !important;
121
+ float: left;
122
+ z-index: 50;
123
+ cursor: ns-resize;
124
+ flex-shrink: 0;
125
+ max-height: 1px;
126
+ }
127
+ .splitbar-horizontal:hover {
128
+ background-color: #50A9C5;
129
+ }
130
+ .splitbar-vertical {
131
+ background-color: #f2f2f5;
132
+ box-sizing: content-box;
133
+ width: 1px;
134
+ display: flex;
135
+ padding: 0 2px;
136
+ margin: 0 -2px;
137
+ background-clip: content-box;
138
+ height: 100% !important;
139
+ float: left;
140
+ z-index: 50;
141
+ cursor: ew-resize;
142
+ flex-shrink: 0;
143
+ max-width: 1px;
144
+ }
145
+ .splitbar-vertical:hover {
146
+ background-color: #50A9C5;
147
+ }
148
+ .splitbar-horizontal-ghoust{
149
+ background-color: #ffcc00;
150
+ }
151
+ .splitbar-vertical-ghoust {
152
+ background-color: #ffcc00;
153
+ }
154
+ /*************************** Tab Host ********************************/
155
+ .dockspan-tab-content {
156
+ background-color: #fff;
157
+ }
158
+ .dockspan-tab-content > * {
159
+ background-color: #fff;
160
+ }
161
+ /*.tab-content * {
162
+ margin: 0px;
163
+ }*/
164
+ .dockspan-tab-handle {
165
+ background-color: #ffffff;
166
+ }
167
+ .dockspan-tab-handle:hover {
168
+ background-color: #f2f2f5;
169
+ color: #9497a0;
170
+ }
171
+ .dockspan-tab-handle-text {
172
+ }
173
+ .dockspan-tab-handle-close-button {
174
+ }
175
+ .dockspan-tab-handle-close-button:hover {
176
+ color: red;
177
+ }
178
+ .dockspan-tab-handle-list-container {
179
+ background-color: #ffffff;
180
+ }
181
+ .dockspan-tab-handle-content-seperator {
182
+ background-color: #333;
183
+ }
184
+ .dockspan-tab-handle-content-seperator-active {
185
+ background-color: #008749;
186
+ }
187
+ `;
188
+ export const style2 = css `/************* Panel with title bar ************/
189
+ .panel-base {
190
+ pointer-events: none;
191
+ }
192
+ .panel-base:focus {
193
+ outline: 0;
194
+ }
195
+ .panel-titlebar, .dockspan-tab-handle:only-child{
196
+ width: 100%;
197
+ overflow: hidden;
198
+ height: 25px;
199
+ pointer-events: auto;
200
+ z-index: 1;
201
+ position: relative;
202
+ }
203
+ .panel-titlebar-icon {
204
+ height: 16px;
205
+ margin-right: 3px;
206
+ }
207
+ .panel-titlebar-button-close {
208
+ visibility: hidden;
209
+ margin-left: auto;
210
+ margin-right: 3px;
211
+ color: #9497a0;
212
+ display: flex;
213
+ justify-content: center;
214
+ align-items: center;
215
+ }
216
+ .dockspan-tab-handle:only-child::after .dockspan-tab-handle-close-button {
217
+ visibility: hidden;
218
+ margin-left: auto;
219
+ margin-right: 3px;
220
+ color: #9497a0;
221
+ display: flex;
222
+ justify-content: center;
223
+ align-items: center;
224
+ }
225
+ .panel-titlebar:hover .panel-titlebar-button-close {
226
+ visibility: visible;
227
+ }
228
+ .dockspan-tab-handle:hover:only-child::after .dockspan-tab-handle-close-button {
229
+ visibility: visible;
230
+ }
231
+ .panel-titlebar-button-close::after {
232
+ float: right;
233
+ cursor: pointer;
234
+ content: "\e900";
235
+ font-weight: normal;
236
+ font-size: 18px;
237
+ font-family: "icomoon";
238
+ display: flex;
239
+ height: 100%;
240
+ align-items: center;
241
+ }
242
+ .dockspan-tab-handle:only-child .dockspan-tab-handle-close-button::after {
243
+ float: right;
244
+ cursor: pointer;
245
+ content: "\e900";
246
+ font-weight: normal;
247
+ font-size: 18px;
248
+ font-family: "icomoon";
249
+ display: flex;
250
+ height: 100%;
251
+ align-items: center;
252
+ }
253
+ .panel-titlebar-button-close:hover {
254
+ color: black;
255
+ }
256
+ .panel-content {
257
+ width: 100%;
258
+ overflow: hidden;
259
+ }
260
+ .panel-content * {
261
+ /* margin: 0px; */
262
+ }
263
+ .panel-content-wrapper {
264
+ width: 100%;
265
+ height: 100%;
266
+ position: relative;
267
+ }
268
+ .panel-grayout {
269
+ position: absolute;
270
+ top: 0;
271
+ left: 0;
272
+ width: 100%;
273
+ height: 100%;
274
+ background: rgb(0 0 0 / 50%);
275
+ z-index: 10;
276
+ pointer-events: all;
277
+ }
278
+ .panel-has-changes {
279
+ font-style: italic;
280
+ }
281
+ .panel-has-changes::before {
282
+ content: '* ';
283
+ }
284
+ /***************** Floating dialog box ****************/
285
+ .dialog-floating {
286
+ position: absolute;
287
+ }
288
+ .dialog-floating:focus {
289
+ outline: 0;
290
+ }
291
+ /************ Resize decorator ************/
292
+ .resize-handle {
293
+ position: absolute;
294
+ width: 6px;
295
+ height: 6px;
296
+ z-index: 10;
297
+ }
298
+ .resize-handle-corner {
299
+ position: absolute;
300
+ width: 12px;
301
+ height: 12px;
302
+ z-index: 10;
303
+ }
304
+ .resize-handle-e {
305
+ cursor: e-resize;
306
+ }
307
+ .resize-handle-w {
308
+ cursor: w-resize;
309
+ }
310
+ .resize-handle-s {
311
+ cursor: s-resize;
312
+ }
313
+ .resize-handle-n {
314
+ cursor: n-resize;
315
+ }
316
+ .resize-handle-ne {
317
+ cursor: ne-resize;
318
+ }
319
+ .resize-handle-nw {
320
+ cursor: nw-resize;
321
+ }
322
+ .resize-handle-se {
323
+ cursor: se-resize;
324
+ }
325
+ .resize-handle-sw {
326
+ cursor: sw-resize;
327
+ }
328
+ /******************* Dock Manager ********************/
329
+ .dock-container {
330
+ position: relative;
331
+ }
332
+ .dock-container-fill {}
333
+ /******************* Document Manager ********************/
334
+ .document-manager {}
335
+ /******************* Dock Wheel ********************/
336
+ .dock-wheel-base {
337
+ position: absolute;
338
+ }
339
+ .dock-wheel-item {
340
+ position: absolute;
341
+ width: 32px;
342
+ height: 32px;
343
+ }
344
+ .dock-wheel-fill {
345
+ margin-left: -16px;
346
+ margin-top: -16px;
347
+ }
348
+ .dock-wheel-left {
349
+ margin-left: -48px;
350
+ margin-top: -16px;
351
+ }
352
+ .dock-wheel-right {
353
+ margin-left: 16px;
354
+ margin-top: -16px;
355
+ }
356
+ .dock-wheel-top {
357
+ margin-left: -16px;
358
+ margin-top: -48px;
359
+ }
360
+ .dock-wheel-down {
361
+ margin-left: -16px;
362
+ margin-top: 16px;
363
+ }
364
+ .dock-wheel-panel-preview {
365
+ position: absolute;
366
+ background-color: rgba(128, 128, 255, 0.5);
367
+ }
368
+ .dock-wheel-fill-icon {
369
+ background: url(../images/dock_fill.png) 0 0;
370
+ }
371
+ .dock-wheel-left-icon {
372
+ background: url(../images/dock_left.png) 0 0;
373
+ }
374
+ .dock-wheel-right-icon {
375
+ background: url(../images/dock_right.png) 0 0;
376
+ }
377
+ .dock-wheel-top-icon {
378
+ background: url(../images/dock_top.png) 0 0;
379
+ }
380
+ .dock-wheel-down-icon {
381
+ background: url(../images/dock_bottom.png) 0 0;
382
+ }
383
+ .dock-wheel-fill-icon-hover {
384
+ background: url(../images/dock_fill_sel.png) 0 0;
385
+ }
386
+ .dock-wheel-left-icon-hover {
387
+ background: url(../images/dock_left_sel.png) 0 0;
388
+ }
389
+ .dock-wheel-right-icon-hover {
390
+ background: url(../images/dock_right_sel.png) 0 0;
391
+ }
392
+ .dock-wheel-top-icon-hover {
393
+ background: url(../images/dock_top_sel.png) 0 0;
394
+ }
395
+ .dock-wheel-down-icon-hover {
396
+ background: url(../images/dock_bottom_sel.png) 0 0;
397
+ }
398
+ /**************************** Splitter *********************************/
399
+ .splitter-container-horizontal {
400
+ float: left;
401
+ position: relative;
402
+ pointer-events: none;
403
+ }
404
+ .splitter-container-vertical {
405
+ position: relative;
406
+ pointer-events: none;
407
+ }
408
+ .splitbar-horizontal {
409
+ width: 100%;
410
+ height: 5px;
411
+ cursor: n-resize;
412
+ position: relative;
413
+ pointer-events: auto;
414
+ }
415
+ .splitbar-vertical {
416
+ width: 5px;
417
+ height: 100%;
418
+ float: left;
419
+ cursor: e-resize;
420
+ position: relative;
421
+ pointer-events: auto;
422
+ }
423
+ .splitbar-horizontal-ghoust {
424
+ width: 100%;
425
+ height: 5px;
426
+ cursor: n-resize;
427
+ position: absolute;
428
+ }
429
+ .splitbar-vertical-ghoust {
430
+ width: 5px;
431
+ height: 100%;
432
+ position: absolute;
433
+ cursor: e-resize;
434
+ }
435
+ /*************************** Tab Host ********************************/
436
+ .dockspan-tab-host {
437
+ display: inline-block;
438
+ position: absolute;
439
+ background-color: #fff;
440
+ left: 0px;
441
+ }
442
+ .dockspan-tab-content {
443
+ position: relative;
444
+ }
445
+ .dockspan-tab-content:focus {
446
+ outline: 0;
447
+ }
448
+ .dockspan-tab-content * {}
449
+ .dockspan-tab-handle {
450
+ position: relative;
451
+ height: 22px;
452
+ float: left;
453
+ overflow: hidden;
454
+ cursor: pointer;
455
+ padding-right: 16px;
456
+ border-right: 1px solid var(--grey-2)
457
+ }
458
+ .dockspan-tab-handle:hover .dockspan-tab-handle-close-button {
459
+ cursor: pointer;
460
+ visibility: visible;
461
+ }
462
+ .dockspan-tab-handle-selected .dockspan-tab-handle-text {
463
+ font-weight: bold;
464
+ color: var(--grey-6)
465
+ }
466
+ .dockspan-tab-handle-text {
467
+ margin-top: 3px;
468
+ margin-left: 6px;
469
+ margin-right: 6px;
470
+ white-space: nowrap;
471
+ overflow: hidden;
472
+ float: left;
473
+ text-overflow: ellipsis;
474
+ width: calc(100% - 3px);
475
+ display: block;
476
+ color: #9497a0
477
+ }
478
+ .dockspan-tab-handle-text > span {
479
+ vertical-align: top;
480
+ }
481
+ .dockspan-tab-handle-close-button {
482
+ visibility: hidden;
483
+ }
484
+ .dockspan-tab-handle-close-button::after {
485
+ float: right;
486
+ position: absolute;
487
+ right: 5px;
488
+ content: "\e900";
489
+ font-weight: normal;
490
+ font-family: "icomoon";
491
+ cursor: pointer;
492
+ display: flex;
493
+ height: 100%;
494
+ align-items: center;
495
+ }
496
+ .dockspan-tab-handle-list-container {
497
+ height: 22px;
498
+ overflow: hidden;
499
+ display: none;
500
+ pointer-events: auto;
501
+ }
502
+ .dockspan-tab-handle-list-container-visible {
503
+ display: flex;
504
+ }
505
+ .dockspan-tab-handle-content-seperator {
506
+ height: 4px;
507
+ display: none;
508
+ }
509
+ .dockspan-tab-handle-content-seperator-visible {
510
+ display: none;
511
+ }
512
+ .dockspan-tab-handle-content-seperator-selected {}
513
+ .dockspab-tab-handle-context-menu {
514
+ position: absolute;
515
+ z-index: 10000000;
516
+ background-color: white;
517
+ border: white;
518
+ border: black solid 2px;
519
+ padding: 5px;
520
+ }
521
+ .dockspab-tab-handle-context-menu>div {
522
+ cursor: pointer;
523
+ padding: 2px;
524
+ }
525
+ .dockspab-tab-handle-context-menu>div:hover {
526
+ background-color: gray;
527
+ cursor: pointer;
528
+ padding: 2px;
529
+ }
530
+ /*************************** Text Selection **************************/
531
+ .disable-selection {
532
+ user-select: none;
533
+ -moz-user-select: none;
534
+ -webkit-user-select: none;
535
+ -ms-user-select: none;
536
+ cursor: default;
537
+ }`;
package/package.json ADDED
@@ -0,0 +1,36 @@
1
+ {
2
+ "name": "@datagrok-libraries/dock-spawn-dg",
3
+ "version": "0.0.1",
4
+ "description": "A TypeScript Version of dock-spawn with changes for Datagrok",
5
+ "license": "MIT",
6
+ "author": {
7
+ "name": "Aufar Zakiev",
8
+ "email": "aufar.zakiev@softwarecountry.com"
9
+ },
10
+ "scripts": {
11
+ "build": "tsc",
12
+ "clean": "tsc --build --clean",
13
+ "lint": "eslint . --ext .ts",
14
+ "lint-fix": "eslint . --ext .ts --fix"
15
+ },
16
+ "dependencies": {
17
+ "rxjs": "^6.6.7"
18
+ },
19
+ "devDependencies": {
20
+ "@types/wu": "latest",
21
+ "@typescript-eslint/eslint-plugin": "latest",
22
+ "@typescript-eslint/parser": "latest",
23
+ "eslint": "latest",
24
+ "eslint-config-google": "latest",
25
+ "ts-loader": "latest",
26
+ "typescript": "latest",
27
+ "webpack": "latest",
28
+ "webpack-cli": "latest",
29
+ "@types/node": "latest"
30
+ },
31
+ "repository": {
32
+ "type": "git",
33
+ "url": "git@github.com:datagrok-ai/public.git",
34
+ "directory": "libraries/dock-spawn-dg"
35
+ }
36
+ }
@@ -0,0 +1,76 @@
1
+ export function moveElementToNewBrowserWindow(element: HTMLElement, params: {
2
+ title?: string,
3
+ closeCallback?: () => void,
4
+ newWindowClosedCallback?: () => void,
5
+ focused: (e: FocusEvent) => void,
6
+ blured: (e: FocusEvent) => void,
7
+ }) {
8
+ const rect = element.getBoundingClientRect();
9
+ const newWindowBounds = {x: rect.x + 24, y: rect.y + 60, width: rect.width, height: rect.height};
10
+ const win = window.open('about:blank', undefined, `popup=yes,left=${newWindowBounds.x},top=${newWindowBounds.y},width=${newWindowBounds.width},height=${newWindowBounds.height}`);
11
+ win.onfocus = (e) => params.focused(e);
12
+ win.onblur = (e) => params.blured(e);
13
+ const styles = [...document.head.querySelectorAll('link')].map((x) => x.cloneNode());
14
+ for (const s of styles)
15
+ win.document.head.appendChild(win.document.adoptNode(s));
16
+
17
+ const st = win.document.createElement('style');
18
+ st.innerText = `
19
+ html {
20
+ overflow: hidden;
21
+ position: fixed;
22
+ width: 100%;
23
+ height: 100%;
24
+ }
25
+ body {
26
+ height: 100%;
27
+ width: 100%;
28
+ margin: 0;
29
+ }
30
+ `;
31
+ win.document.head.appendChild(st);
32
+ const titleEl = win.document.createElement('title');
33
+ titleEl.innerText = params.title;
34
+ win.document.head.appendChild(titleEl);
35
+
36
+ win.onunload = () => params.newWindowClosedCallback();
37
+
38
+ const cache = new Map<CSSStyleSheet, CSSStyleSheet>();
39
+ const listSs = new Map<Element, CSSStyleSheet[]>();
40
+ function backupSs(el: Element) {
41
+ if (el.shadowRoot) {
42
+ if (el.shadowRoot.adoptedStyleSheets.length > 0)
43
+ listSs.set(el, [...el.shadowRoot.adoptedStyleSheets.map((x) => cloneStyleSheet(win, x, cache))]);
44
+
45
+ for (const e of el.shadowRoot.querySelectorAll('*'))
46
+ backupSs(e);
47
+ }
48
+ }
49
+ backupSs(element);
50
+ for (const e of element.querySelectorAll('*'))
51
+ backupSs(e);
52
+
53
+
54
+ win.document.body.appendChild(win.document.adoptNode(element));
55
+ for (const e of listSs)
56
+ e[0].shadowRoot.adoptedStyleSheets = e[1];
57
+
58
+
59
+ params.closeCallback();
60
+ }
61
+
62
+ function cloneStyleSheet(window: Window, stylesheet: CSSStyleSheet, cache: Map<CSSStyleSheet, CSSStyleSheet>) {
63
+ const existingCopy = cache.get(stylesheet);
64
+ if (existingCopy)
65
+ return existingCopy;
66
+ let payload = '';
67
+ const rules = stylesheet.cssRules;
68
+ for (let i = 0; i < rules.length; i++)
69
+ payload += rules[i].cssText + '\n';
70
+
71
+ //@ts-ignore
72
+ const newStylesheet = new window.CSSStyleSheet();
73
+ cache.set(stylesheet, newStylesheet);
74
+ newStylesheet.replaceSync(payload);
75
+ return newStylesheet;
76
+ }
@@ -0,0 +1,6 @@
1
+ export enum ContainerType {
2
+ horizontal = 'horizontal',
3
+ vertical = 'vertical',
4
+ fill = 'fill',
5
+ panel = 'panel'
6
+ }