@genesis-community/golden-layout 2.6.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 (226) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +24 -0
  3. package/dist/cjs/index.js +40 -0
  4. package/dist/cjs/index.js.map +1 -0
  5. package/dist/cjs/ts/config/config.js +870 -0
  6. package/dist/cjs/ts/config/config.js.map +1 -0
  7. package/dist/cjs/ts/config/resolved-config.js +477 -0
  8. package/dist/cjs/ts/config/resolved-config.js.map +1 -0
  9. package/dist/cjs/ts/container/component-container.js +412 -0
  10. package/dist/cjs/ts/container/component-container.js.map +1 -0
  11. package/dist/cjs/ts/controls/browser-popout.js +298 -0
  12. package/dist/cjs/ts/controls/browser-popout.js.map +1 -0
  13. package/dist/cjs/ts/controls/drag-proxy.js +221 -0
  14. package/dist/cjs/ts/controls/drag-proxy.js.map +1 -0
  15. package/dist/cjs/ts/controls/drag-source.js +149 -0
  16. package/dist/cjs/ts/controls/drag-source.js.map +1 -0
  17. package/dist/cjs/ts/controls/drop-target-indicator.js +31 -0
  18. package/dist/cjs/ts/controls/drop-target-indicator.js.map +1 -0
  19. package/dist/cjs/ts/controls/header-button.js +34 -0
  20. package/dist/cjs/ts/controls/header-button.js.map +1 -0
  21. package/dist/cjs/ts/controls/header.js +366 -0
  22. package/dist/cjs/ts/controls/header.js.map +1 -0
  23. package/dist/cjs/ts/controls/splitter.js +42 -0
  24. package/dist/cjs/ts/controls/splitter.js.map +1 -0
  25. package/dist/cjs/ts/controls/tab.js +262 -0
  26. package/dist/cjs/ts/controls/tab.js.map +1 -0
  27. package/dist/cjs/ts/controls/tabs-container.js +236 -0
  28. package/dist/cjs/ts/controls/tabs-container.js.map +1 -0
  29. package/dist/cjs/ts/controls/transition-indicator.js +64 -0
  30. package/dist/cjs/ts/controls/transition-indicator.js.map +1 -0
  31. package/dist/cjs/ts/errors/external-error.js +46 -0
  32. package/dist/cjs/ts/errors/external-error.js.map +1 -0
  33. package/dist/cjs/ts/errors/internal-error.js +38 -0
  34. package/dist/cjs/ts/errors/internal-error.js.map +1 -0
  35. package/dist/cjs/ts/golden-layout.js +299 -0
  36. package/dist/cjs/ts/golden-layout.js.map +1 -0
  37. package/dist/cjs/ts/items/component-item.js +190 -0
  38. package/dist/cjs/ts/items/component-item.js.map +1 -0
  39. package/dist/cjs/ts/items/component-parentable-item.js +18 -0
  40. package/dist/cjs/ts/items/component-parentable-item.js.map +1 -0
  41. package/dist/cjs/ts/items/content-item.js +414 -0
  42. package/dist/cjs/ts/items/content-item.js.map +1 -0
  43. package/dist/cjs/ts/items/ground-item.js +352 -0
  44. package/dist/cjs/ts/items/ground-item.js.map +1 -0
  45. package/dist/cjs/ts/items/row-or-column.js +609 -0
  46. package/dist/cjs/ts/items/row-or-column.js.map +1 -0
  47. package/dist/cjs/ts/items/stack.js +841 -0
  48. package/dist/cjs/ts/items/stack.js.map +1 -0
  49. package/dist/cjs/ts/layout-manager.js +1618 -0
  50. package/dist/cjs/ts/layout-manager.js.map +1 -0
  51. package/dist/cjs/ts/utils/config-minifier.js +218 -0
  52. package/dist/cjs/ts/utils/config-minifier.js.map +1 -0
  53. package/dist/cjs/ts/utils/dom-constants.js +3 -0
  54. package/dist/cjs/ts/utils/dom-constants.js.map +1 -0
  55. package/dist/cjs/ts/utils/drag-listener.js +132 -0
  56. package/dist/cjs/ts/utils/drag-listener.js.map +1 -0
  57. package/dist/cjs/ts/utils/event-emitter.js +201 -0
  58. package/dist/cjs/ts/utils/event-emitter.js.map +1 -0
  59. package/dist/cjs/ts/utils/event-hub.js +135 -0
  60. package/dist/cjs/ts/utils/event-hub.js.map +1 -0
  61. package/dist/cjs/ts/utils/i18n-strings.js +74 -0
  62. package/dist/cjs/ts/utils/i18n-strings.js.map +1 -0
  63. package/dist/cjs/ts/utils/jquery-legacy.js +15 -0
  64. package/dist/cjs/ts/utils/jquery-legacy.js.map +1 -0
  65. package/dist/cjs/ts/utils/style-constants.js +11 -0
  66. package/dist/cjs/ts/utils/style-constants.js.map +1 -0
  67. package/dist/cjs/ts/utils/types.js +94 -0
  68. package/dist/cjs/ts/utils/types.js.map +1 -0
  69. package/dist/cjs/ts/utils/utils.js +211 -0
  70. package/dist/cjs/ts/utils/utils.js.map +1 -0
  71. package/dist/cjs/ts/virtual-layout.js +247 -0
  72. package/dist/cjs/ts/virtual-layout.js.map +1 -0
  73. package/dist/css/goldenlayout-base.css +319 -0
  74. package/dist/css/themes/goldenlayout-borderless-dark-theme.css +136 -0
  75. package/dist/css/themes/goldenlayout-dark-theme.css +139 -0
  76. package/dist/css/themes/goldenlayout-light-theme.css +129 -0
  77. package/dist/css/themes/goldenlayout-soda-theme.css +126 -0
  78. package/dist/css/themes/goldenlayout-translucent-theme.css +152 -0
  79. package/dist/esm/index.js +21 -0
  80. package/dist/esm/index.js.map +1 -0
  81. package/dist/esm/ts/config/config.js +864 -0
  82. package/dist/esm/ts/config/config.js.map +1 -0
  83. package/dist/esm/ts/config/resolved-config.js +474 -0
  84. package/dist/esm/ts/config/resolved-config.js.map +1 -0
  85. package/dist/esm/ts/container/component-container.js +408 -0
  86. package/dist/esm/ts/container/component-container.js.map +1 -0
  87. package/dist/esm/ts/controls/browser-popout.js +294 -0
  88. package/dist/esm/ts/controls/browser-popout.js.map +1 -0
  89. package/dist/esm/ts/controls/drag-proxy.js +217 -0
  90. package/dist/esm/ts/controls/drag-proxy.js.map +1 -0
  91. package/dist/esm/ts/controls/drag-source.js +145 -0
  92. package/dist/esm/ts/controls/drag-source.js.map +1 -0
  93. package/dist/esm/ts/controls/drop-target-indicator.js +27 -0
  94. package/dist/esm/ts/controls/drop-target-indicator.js.map +1 -0
  95. package/dist/esm/ts/controls/header-button.js +30 -0
  96. package/dist/esm/ts/controls/header-button.js.map +1 -0
  97. package/dist/esm/ts/controls/header.js +362 -0
  98. package/dist/esm/ts/controls/header.js.map +1 -0
  99. package/dist/esm/ts/controls/splitter.js +38 -0
  100. package/dist/esm/ts/controls/splitter.js.map +1 -0
  101. package/dist/esm/ts/controls/tab.js +258 -0
  102. package/dist/esm/ts/controls/tab.js.map +1 -0
  103. package/dist/esm/ts/controls/tabs-container.js +232 -0
  104. package/dist/esm/ts/controls/tabs-container.js.map +1 -0
  105. package/dist/esm/ts/controls/transition-indicator.js +60 -0
  106. package/dist/esm/ts/controls/transition-indicator.js.map +1 -0
  107. package/dist/esm/ts/errors/external-error.js +38 -0
  108. package/dist/esm/ts/errors/external-error.js.map +1 -0
  109. package/dist/esm/ts/errors/internal-error.js +31 -0
  110. package/dist/esm/ts/errors/internal-error.js.map +1 -0
  111. package/dist/esm/ts/golden-layout.js +295 -0
  112. package/dist/esm/ts/golden-layout.js.map +1 -0
  113. package/dist/esm/ts/items/component-item.js +186 -0
  114. package/dist/esm/ts/items/component-item.js.map +1 -0
  115. package/dist/esm/ts/items/component-parentable-item.js +14 -0
  116. package/dist/esm/ts/items/component-parentable-item.js.map +1 -0
  117. package/dist/esm/ts/items/content-item.js +410 -0
  118. package/dist/esm/ts/items/content-item.js.map +1 -0
  119. package/dist/esm/ts/items/ground-item.js +348 -0
  120. package/dist/esm/ts/items/ground-item.js.map +1 -0
  121. package/dist/esm/ts/items/row-or-column.js +605 -0
  122. package/dist/esm/ts/items/row-or-column.js.map +1 -0
  123. package/dist/esm/ts/items/stack.js +837 -0
  124. package/dist/esm/ts/items/stack.js.map +1 -0
  125. package/dist/esm/ts/layout-manager.js +1614 -0
  126. package/dist/esm/ts/layout-manager.js.map +1 -0
  127. package/dist/esm/ts/utils/config-minifier.js +215 -0
  128. package/dist/esm/ts/utils/config-minifier.js.map +1 -0
  129. package/dist/esm/ts/utils/dom-constants.js +2 -0
  130. package/dist/esm/ts/utils/dom-constants.js.map +1 -0
  131. package/dist/esm/ts/utils/drag-listener.js +128 -0
  132. package/dist/esm/ts/utils/drag-listener.js.map +1 -0
  133. package/dist/esm/ts/utils/event-emitter.js +197 -0
  134. package/dist/esm/ts/utils/event-emitter.js.map +1 -0
  135. package/dist/esm/ts/utils/event-hub.js +131 -0
  136. package/dist/esm/ts/utils/event-hub.js.map +1 -0
  137. package/dist/esm/ts/utils/i18n-strings.js +71 -0
  138. package/dist/esm/ts/utils/i18n-strings.js.map +1 -0
  139. package/dist/esm/ts/utils/jquery-legacy.js +11 -0
  140. package/dist/esm/ts/utils/jquery-legacy.js.map +1 -0
  141. package/dist/esm/ts/utils/style-constants.js +8 -0
  142. package/dist/esm/ts/utils/style-constants.js.map +1 -0
  143. package/dist/esm/ts/utils/types.js +91 -0
  144. package/dist/esm/ts/utils/types.js.map +1 -0
  145. package/dist/esm/ts/utils/utils.js +191 -0
  146. package/dist/esm/ts/utils/utils.js.map +1 -0
  147. package/dist/esm/ts/virtual-layout.js +243 -0
  148. package/dist/esm/ts/virtual-layout.js.map +1 -0
  149. package/dist/img/lm_close_black.png +0 -0
  150. package/dist/img/lm_close_tab_white.png +0 -0
  151. package/dist/img/lm_close_white.png +0 -0
  152. package/dist/img/lm_maximise_black.png +0 -0
  153. package/dist/img/lm_maximise_white.png +0 -0
  154. package/dist/img/lm_minimize_black.png +0 -0
  155. package/dist/img/lm_minimize_white.png +0 -0
  156. package/dist/img/lm_popin_black.png +0 -0
  157. package/dist/img/lm_popin_white.png +0 -0
  158. package/dist/img/lm_popout_black.png +0 -0
  159. package/dist/img/lm_popout_white.png +0 -0
  160. package/dist/less/goldenlayout-base.less +422 -0
  161. package/dist/less/themes/goldenlayout-borderless-dark-theme.less +230 -0
  162. package/dist/less/themes/goldenlayout-dark-theme.less +233 -0
  163. package/dist/less/themes/goldenlayout-light-theme.less +223 -0
  164. package/dist/less/themes/goldenlayout-soda-theme.less +211 -0
  165. package/dist/less/themes/goldenlayout-translucent-theme.less +237 -0
  166. package/dist/scss/goldenlayout-base.scss +422 -0
  167. package/dist/scss/themes/_goldenlayout-var-theme.scss +232 -0
  168. package/dist/types/golden-layout-untrimmed.d.ts +3428 -0
  169. package/dist/types/index.d.ts +2246 -0
  170. package/dist/types/tsdoc-metadata.json +11 -0
  171. package/package.json +107 -0
  172. package/src/TOOLCHAIN.md +54 -0
  173. package/src/img/lm_close_black.png +0 -0
  174. package/src/img/lm_close_tab_white.png +0 -0
  175. package/src/img/lm_close_white.png +0 -0
  176. package/src/img/lm_maximise_black.png +0 -0
  177. package/src/img/lm_maximise_white.png +0 -0
  178. package/src/img/lm_minimize_black.png +0 -0
  179. package/src/img/lm_minimize_white.png +0 -0
  180. package/src/img/lm_popin_black.png +0 -0
  181. package/src/img/lm_popin_white.png +0 -0
  182. package/src/img/lm_popout_black.png +0 -0
  183. package/src/img/lm_popout_white.png +0 -0
  184. package/src/index.ts +21 -0
  185. package/src/less/goldenlayout-base.less +422 -0
  186. package/src/less/themes/goldenlayout-borderless-dark-theme.less +230 -0
  187. package/src/less/themes/goldenlayout-dark-theme.less +233 -0
  188. package/src/less/themes/goldenlayout-light-theme.less +223 -0
  189. package/src/less/themes/goldenlayout-soda-theme.less +211 -0
  190. package/src/less/themes/goldenlayout-translucent-theme.less +237 -0
  191. package/src/scss/goldenlayout-base.scss +422 -0
  192. package/src/scss/themes/_goldenlayout-var-theme.scss +232 -0
  193. package/src/ts/config/config.ts +1283 -0
  194. package/src/ts/config/resolved-config.ts +621 -0
  195. package/src/ts/container/component-container.ts +500 -0
  196. package/src/ts/controls/browser-popout.ts +325 -0
  197. package/src/ts/controls/drag-proxy.ts +259 -0
  198. package/src/ts/controls/drag-source.ts +167 -0
  199. package/src/ts/controls/drop-target-indicator.ts +35 -0
  200. package/src/ts/controls/header-button.ts +39 -0
  201. package/src/ts/controls/header.ts +483 -0
  202. package/src/ts/controls/splitter.ts +50 -0
  203. package/src/ts/controls/tab.ts +293 -0
  204. package/src/ts/controls/tabs-container.ts +281 -0
  205. package/src/ts/controls/transition-indicator.ts +78 -0
  206. package/src/ts/errors/external-error.ts +39 -0
  207. package/src/ts/errors/internal-error.ts +34 -0
  208. package/src/ts/golden-layout.ts +365 -0
  209. package/src/ts/items/component-item.ts +252 -0
  210. package/src/ts/items/component-parentable-item.ts +16 -0
  211. package/src/ts/items/content-item.ts +513 -0
  212. package/src/ts/items/ground-item.ts +404 -0
  213. package/src/ts/items/row-or-column.ts +707 -0
  214. package/src/ts/items/stack.ts +975 -0
  215. package/src/ts/layout-manager.ts +1862 -0
  216. package/src/ts/utils/config-minifier.ts +235 -0
  217. package/src/ts/utils/dom-constants.ts +44 -0
  218. package/src/ts/utils/drag-listener.ts +178 -0
  219. package/src/ts/utils/event-emitter.ts +275 -0
  220. package/src/ts/utils/event-hub.ts +163 -0
  221. package/src/ts/utils/i18n-strings.ts +96 -0
  222. package/src/ts/utils/jquery-legacy.ts +12 -0
  223. package/src/ts/utils/style-constants.ts +6 -0
  224. package/src/ts/utils/types.ts +145 -0
  225. package/src/ts/utils/utils.ts +206 -0
  226. package/src/ts/virtual-layout.ts +328 -0
@@ -0,0 +1,294 @@
1
+ import { ResolvedLayoutConfig } from '../config/resolved-config';
2
+ import { PopoutBlockedError } from '../errors/external-error';
3
+ import { UnexpectedNullError, UnexpectedUndefinedError } from '../errors/internal-error';
4
+ import { EventEmitter } from '../utils/event-emitter';
5
+ import { deepExtend, getErrorMessage, getUniqueId } from '../utils/utils';
6
+ /**
7
+ * Pops a content item out into a new browser window.
8
+ * This is achieved by
9
+ *
10
+ * - Creating a new configuration with the content item as root element
11
+ * - Serializing and minifying the configuration
12
+ * - Opening the current window's URL with the configuration as a GET parameter
13
+ * - GoldenLayout when opened in the new window will look for the GET parameter
14
+ * and use it instead of the provided configuration
15
+ * @public
16
+ */
17
+ export class BrowserPopout extends EventEmitter {
18
+ /**
19
+ * @param _config - GoldenLayout item config
20
+ * @param _initialWindowSize - A map with width, height, top and left
21
+ * @internal
22
+ */
23
+ constructor(
24
+ /** @internal */
25
+ _config,
26
+ /** @internal */
27
+ _initialWindowSize,
28
+ /** @internal */
29
+ _layoutManager) {
30
+ super();
31
+ this._config = _config;
32
+ this._initialWindowSize = _initialWindowSize;
33
+ this._layoutManager = _layoutManager;
34
+ this._isInitialised = false;
35
+ this._popoutWindow = null;
36
+ this.createWindow();
37
+ }
38
+ toConfig() {
39
+ var _a, _b;
40
+ if (this._isInitialised === false) {
41
+ throw new Error('Can\'t create config, layout not yet initialised');
42
+ }
43
+ const glInstance = this.getGlInstance();
44
+ const glInstanceConfig = glInstance.saveLayout();
45
+ let left;
46
+ let top;
47
+ if (this._popoutWindow === null) {
48
+ left = null;
49
+ top = null;
50
+ }
51
+ else {
52
+ left = (_a = this._popoutWindow.screenX) !== null && _a !== void 0 ? _a : this._popoutWindow.screenLeft;
53
+ top = (_b = this._popoutWindow.screenY) !== null && _b !== void 0 ? _b : this._popoutWindow.screenTop;
54
+ }
55
+ const window = {
56
+ width: this.getGlInstance().width,
57
+ height: this.getGlInstance().height,
58
+ left,
59
+ top,
60
+ };
61
+ const config = {
62
+ root: glInstanceConfig.root,
63
+ openPopouts: glInstanceConfig.openPopouts,
64
+ settings: glInstanceConfig.settings,
65
+ dimensions: glInstanceConfig.dimensions,
66
+ header: glInstanceConfig.header,
67
+ window,
68
+ parentId: this._config.parentId,
69
+ indexInParent: this._config.indexInParent,
70
+ resolved: true,
71
+ };
72
+ return config;
73
+ }
74
+ getGlInstance() {
75
+ if (this._popoutWindow === null) {
76
+ throw new UnexpectedNullError('BPGGI24693');
77
+ }
78
+ return this._popoutWindow.__glInstance;
79
+ }
80
+ /**
81
+ * Retrieves the native BrowserWindow backing this popout.
82
+ * Might throw an UnexpectedNullError exception when the window is not initialized yet.
83
+ * @public
84
+ */
85
+ getWindow() {
86
+ if (this._popoutWindow === null) {
87
+ throw new UnexpectedNullError('BPGW087215');
88
+ }
89
+ return this._popoutWindow;
90
+ }
91
+ close() {
92
+ if (this.getGlInstance()) {
93
+ this.getGlInstance().closeWindow();
94
+ }
95
+ else {
96
+ try {
97
+ this.getWindow().close();
98
+ }
99
+ catch (e) {
100
+ //
101
+ }
102
+ }
103
+ }
104
+ /**
105
+ * Returns the popped out item to its original position. If the original
106
+ * parent isn't available anymore it falls back to the layout's topmost element
107
+ */
108
+ popIn() {
109
+ let parentItem;
110
+ let index = this._config.indexInParent;
111
+ if (!this._config.parentId) {
112
+ return;
113
+ }
114
+ /*
115
+ * The deepExtend call seems a bit pointless, but it's crucial to
116
+ * copy the config returned by this.getGlInstance().toConfig()
117
+ * onto a new object. Internet Explorer keeps the references
118
+ * to objects on the child window, resulting in the following error
119
+ * once the child window is closed:
120
+ *
121
+ * The callee (server [not server application]) is not available and disappeared
122
+ */
123
+ const glInstanceLayoutConfig = this.getGlInstance().saveLayout();
124
+ const copiedGlInstanceLayoutConfig = deepExtend({}, glInstanceLayoutConfig);
125
+ const copiedRoot = copiedGlInstanceLayoutConfig.root;
126
+ if (copiedRoot === undefined) {
127
+ throw new UnexpectedUndefinedError('BPPIR19998');
128
+ }
129
+ const groundItem = this._layoutManager.groundItem;
130
+ if (groundItem === undefined) {
131
+ throw new UnexpectedUndefinedError('BPPIG34972');
132
+ }
133
+ parentItem = groundItem.getItemsByPopInParentId(this._config.parentId)[0];
134
+ /*
135
+ * Fallback if parentItem is not available. Either add it to the topmost
136
+ * item or make it the topmost item if the layout is empty
137
+ */
138
+ if (!parentItem) {
139
+ if (groundItem.contentItems.length > 0) {
140
+ parentItem = groundItem.contentItems[0];
141
+ }
142
+ else {
143
+ parentItem = groundItem;
144
+ }
145
+ index = 0;
146
+ }
147
+ const newContentItem = this._layoutManager.createAndInitContentItem(copiedRoot, parentItem);
148
+ parentItem.addChild(newContentItem, index);
149
+ if (this._layoutManager.layoutConfig.settings.popInOnClose) {
150
+ this._onClose();
151
+ }
152
+ else {
153
+ this.close();
154
+ }
155
+ }
156
+ /**
157
+ * Creates the URL and window parameter
158
+ * and opens a new window
159
+ * @internal
160
+ */
161
+ createWindow() {
162
+ const url = this.createUrl();
163
+ /**
164
+ * Bogus title to prevent re-usage of existing window with the
165
+ * same title. The actual title will be set by the new window's
166
+ * GoldenLayout instance if it detects that it is in subWindowMode
167
+ */
168
+ const target = Math.floor(Math.random() * 1000000).toString(36);
169
+ /**
170
+ * The options as used in the window.open string
171
+ */
172
+ const features = this.serializeWindowFeatures({
173
+ width: this._initialWindowSize.width,
174
+ height: this._initialWindowSize.height,
175
+ innerWidth: this._initialWindowSize.width,
176
+ innerHeight: this._initialWindowSize.height,
177
+ menubar: 'no',
178
+ toolbar: 'no',
179
+ location: 'no',
180
+ personalbar: 'no',
181
+ resizable: 'yes',
182
+ scrollbars: 'no',
183
+ status: 'no'
184
+ });
185
+ this._popoutWindow = globalThis.open(url, target, features);
186
+ if (!this._popoutWindow) {
187
+ if (this._layoutManager.layoutConfig.settings.blockedPopoutsThrowError === true) {
188
+ const error = new PopoutBlockedError('Popout blocked');
189
+ throw error;
190
+ }
191
+ else {
192
+ return;
193
+ }
194
+ }
195
+ this._popoutWindow.addEventListener('load', () => this.positionWindow(), { passive: true });
196
+ this._popoutWindow.addEventListener('beforeunload', () => {
197
+ if (this._layoutManager.layoutConfig.settings.popInOnClose) {
198
+ this.popIn();
199
+ }
200
+ else {
201
+ this._onClose();
202
+ }
203
+ }, { passive: true });
204
+ /**
205
+ * Polling the childwindow to find out if GoldenLayout has been initialised
206
+ * doesn't seem optimal, but the alternatives - adding a callback to the parent
207
+ * window or raising an event on the window object - both would introduce knowledge
208
+ * about the parent to the child window which we'd rather avoid
209
+ */
210
+ this._checkReadyInterval = setInterval(() => this.checkReady(), 10);
211
+ }
212
+ /** @internal */
213
+ checkReady() {
214
+ if (this._popoutWindow === null) {
215
+ throw new UnexpectedNullError('BPCR01844');
216
+ }
217
+ else {
218
+ if (this._popoutWindow.__glInstance && this._popoutWindow.__glInstance.isInitialised) {
219
+ this.onInitialised();
220
+ if (this._checkReadyInterval !== undefined) {
221
+ clearInterval(this._checkReadyInterval);
222
+ this._checkReadyInterval = undefined;
223
+ }
224
+ }
225
+ }
226
+ }
227
+ /**
228
+ * Serialises a map of key:values to a window options string
229
+ *
230
+ * @param windowOptions -
231
+ *
232
+ * @returns serialised window options
233
+ * @internal
234
+ */
235
+ serializeWindowFeatures(windowOptions) {
236
+ const windowOptionsString = [];
237
+ for (const key in windowOptions) {
238
+ windowOptionsString.push(key + '=' + windowOptions[key].toString());
239
+ }
240
+ return windowOptionsString.join(',');
241
+ }
242
+ /**
243
+ * Creates the URL for the new window, including the
244
+ * config GET parameter
245
+ *
246
+ * @returns URL
247
+ * @internal
248
+ */
249
+ createUrl() {
250
+ const storageKey = 'gl-window-config-' + getUniqueId();
251
+ const config = ResolvedLayoutConfig.minifyConfig(this._config);
252
+ try {
253
+ localStorage.setItem(storageKey, JSON.stringify(config));
254
+ }
255
+ catch (e) {
256
+ throw new Error('Error while writing to localStorage ' + getErrorMessage(e));
257
+ }
258
+ const url = new URL(location.href);
259
+ url.searchParams.set('gl-window', storageKey);
260
+ return url.toString();
261
+ }
262
+ /**
263
+ * Move the newly created window roughly to
264
+ * where the component used to be.
265
+ * @internal
266
+ */
267
+ positionWindow() {
268
+ if (this._popoutWindow === null) {
269
+ throw new Error('BrowserPopout.positionWindow: null popoutWindow');
270
+ }
271
+ else {
272
+ this._popoutWindow.moveTo(this._initialWindowSize.left, this._initialWindowSize.top);
273
+ this._popoutWindow.focus();
274
+ }
275
+ }
276
+ /**
277
+ * Callback when the new window is opened and the GoldenLayout instance
278
+ * within it is initialised
279
+ * @internal
280
+ */
281
+ onInitialised() {
282
+ this._isInitialised = true;
283
+ this.getGlInstance().on('popIn', () => this.popIn());
284
+ this.emit('initialised');
285
+ }
286
+ /**
287
+ * Invoked 50ms after the window unload event
288
+ * @internal
289
+ */
290
+ _onClose() {
291
+ setTimeout(() => this.emit('closed'), 50);
292
+ }
293
+ }
294
+ //# sourceMappingURL=browser-popout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-popout.js","sourceRoot":"","sources":["../../../../src/ts/controls/browser-popout.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,217 @@
1
+ import { UnexpectedNullError, UnexpectedUndefinedError } from '../errors/internal-error';
2
+ import { Stack } from '../items/stack';
3
+ import { EventEmitter } from '../utils/event-emitter';
4
+ import { Side } from '../utils/types';
5
+ import { numberToPixels } from '../utils/utils';
6
+ /**
7
+ * This class creates a temporary container
8
+ * for the component whilst it is being dragged
9
+ * and handles drag events
10
+ * @internal
11
+ */
12
+ export class DragProxy extends EventEmitter {
13
+ /**
14
+ * @param x - The initial x position
15
+ * @param y - The initial y position
16
+ * @internal
17
+ */
18
+ constructor(x, y, _dragListener, _layoutManager, _componentItem, _originalParent) {
19
+ super();
20
+ this._dragListener = _dragListener;
21
+ this._layoutManager = _layoutManager;
22
+ this._componentItem = _componentItem;
23
+ this._originalParent = _originalParent;
24
+ this._area = null;
25
+ this._lastValidArea = null;
26
+ this._dragListener.on('drag', (offsetX, offsetY, event) => this.onDrag(offsetX, offsetY, event));
27
+ this._dragListener.on('dragStop', () => this.onDrop());
28
+ this.createDragProxyElements(x, y);
29
+ if (this._componentItem.parent === null) {
30
+ // Note that _contentItem will have dummy GroundItem as parent if initiated by a external drag source
31
+ throw new UnexpectedNullError('DPC10097');
32
+ }
33
+ this._componentItemFocused = this._componentItem.focused;
34
+ if (this._componentItemFocused) {
35
+ this._componentItem.blur();
36
+ }
37
+ this._componentItem.parent.removeChild(this._componentItem, true);
38
+ this.setDimensions();
39
+ document.body.appendChild(this._element);
40
+ this.determineMinMaxXY();
41
+ this._layoutManager.calculateItemAreas();
42
+ this.setDropPosition(x, y);
43
+ }
44
+ get element() { return this._element; }
45
+ /** Create Stack-like structure to contain the dragged component */
46
+ createDragProxyElements(initialX, initialY) {
47
+ this._element = document.createElement('div');
48
+ this._element.classList.add("lm_dragProxy" /* DomConstants.ClassName.DragProxy */);
49
+ const headerElement = document.createElement('div');
50
+ headerElement.classList.add("lm_header" /* DomConstants.ClassName.Header */);
51
+ const tabsElement = document.createElement('div');
52
+ tabsElement.classList.add("lm_tabs" /* DomConstants.ClassName.Tabs */);
53
+ const tabElement = document.createElement('div');
54
+ tabElement.classList.add("lm_tab" /* DomConstants.ClassName.Tab */);
55
+ const titleElement = document.createElement('span');
56
+ titleElement.classList.add("lm_title" /* DomConstants.ClassName.Title */);
57
+ tabElement.appendChild(titleElement);
58
+ tabsElement.appendChild(tabElement);
59
+ headerElement.appendChild(tabsElement);
60
+ this._proxyContainerElement = document.createElement('div');
61
+ this._proxyContainerElement.classList.add("lm_content" /* DomConstants.ClassName.Content */);
62
+ this._element.appendChild(headerElement);
63
+ this._element.appendChild(this._proxyContainerElement);
64
+ if (this._originalParent instanceof Stack && this._originalParent.headerShow) {
65
+ this._sided = this._originalParent.headerLeftRightSided;
66
+ this._element.classList.add('lm_' + this._originalParent.headerSide);
67
+ if ([Side.right, Side.bottom].indexOf(this._originalParent.headerSide) >= 0) {
68
+ this._proxyContainerElement.insertAdjacentElement('afterend', headerElement);
69
+ }
70
+ }
71
+ this._element.style.left = numberToPixels(initialX);
72
+ this._element.style.top = numberToPixels(initialY);
73
+ tabElement.setAttribute('title', this._componentItem.title);
74
+ titleElement.insertAdjacentText('afterbegin', this._componentItem.title);
75
+ this._proxyContainerElement.appendChild(this._componentItem.element);
76
+ }
77
+ determineMinMaxXY() {
78
+ const groundItem = this._layoutManager.groundItem;
79
+ if (groundItem === undefined) {
80
+ throw new UnexpectedUndefinedError('DPDMMXY73109');
81
+ }
82
+ else {
83
+ const groundElement = groundItem.element;
84
+ const rect = groundElement.getBoundingClientRect();
85
+ this._minX = rect.left + document.body.scrollLeft;
86
+ this._minY = rect.top + document.body.scrollTop;
87
+ this._maxX = this._minX + rect.width;
88
+ this._maxY = this._minY + rect.height;
89
+ }
90
+ }
91
+ /**
92
+ * Callback on every mouseMove event during a drag. Determines if the drag is
93
+ * still within the valid drag area and calls the layoutManager to highlight the
94
+ * current drop area
95
+ *
96
+ * @param offsetX - The difference from the original x position in px
97
+ * @param offsetY - The difference from the original y position in px
98
+ * @param event -
99
+ * @internal
100
+ */
101
+ onDrag(offsetX, offsetY, event) {
102
+ const x = event.pageX;
103
+ const y = event.pageY;
104
+ this.setDropPosition(x, y);
105
+ this._componentItem.drag();
106
+ }
107
+ /**
108
+ * Sets the target position, highlighting the appropriate area
109
+ *
110
+ * @param x - The x position in px
111
+ * @param y - The y position in px
112
+ *
113
+ * @internal
114
+ */
115
+ setDropPosition(x, y) {
116
+ if (this._layoutManager.layoutConfig.settings.constrainDragToContainer) {
117
+ if (x <= this._minX) {
118
+ x = Math.ceil(this._minX);
119
+ }
120
+ else if (x >= this._maxX) {
121
+ x = Math.floor(this._maxX);
122
+ }
123
+ if (y <= this._minY) {
124
+ y = Math.ceil(this._minY);
125
+ }
126
+ else if (y >= this._maxY) {
127
+ y = Math.floor(this._maxY);
128
+ }
129
+ }
130
+ this._element.style.left = numberToPixels(x);
131
+ this._element.style.top = numberToPixels(y);
132
+ this._area = this._layoutManager.getArea(x, y);
133
+ if (this._area !== null) {
134
+ this._lastValidArea = this._area;
135
+ this._area.contentItem.highlightDropZone(x, y, this._area);
136
+ }
137
+ }
138
+ /**
139
+ * Callback when the drag has finished. Determines the drop area
140
+ * and adds the child to it
141
+ * @internal
142
+ */
143
+ onDrop() {
144
+ const dropTargetIndicator = this._layoutManager.dropTargetIndicator;
145
+ if (dropTargetIndicator === null) {
146
+ throw new UnexpectedNullError('DPOD30011');
147
+ }
148
+ else {
149
+ dropTargetIndicator.hide();
150
+ }
151
+ this._componentItem.exitDragMode();
152
+ /*
153
+ * Valid drop area found
154
+ */
155
+ let droppedComponentItem;
156
+ if (this._area !== null) {
157
+ droppedComponentItem = this._componentItem;
158
+ this._area.contentItem.onDrop(droppedComponentItem, this._area);
159
+ /**
160
+ * No valid drop area available at present, but one has been found before.
161
+ * Use it
162
+ */
163
+ }
164
+ else if (this._lastValidArea !== null) {
165
+ droppedComponentItem = this._componentItem;
166
+ const newParentContentItem = this._lastValidArea.contentItem;
167
+ newParentContentItem.onDrop(droppedComponentItem, this._lastValidArea);
168
+ /**
169
+ * No valid drop area found during the duration of the drag. Return
170
+ * content item to its original position if a original parent is provided.
171
+ * (Which is not the case if the drag had been initiated by createDragSource)
172
+ */
173
+ }
174
+ else if (this._originalParent) {
175
+ droppedComponentItem = this._componentItem;
176
+ this._originalParent.addChild(droppedComponentItem);
177
+ /**
178
+ * The drag didn't ultimately end up with adding the content item to
179
+ * any container. In order to ensure clean up happens, destroy the
180
+ * content item.
181
+ */
182
+ }
183
+ else {
184
+ this._componentItem.destroy(); // contentItem children are now destroyed as well
185
+ }
186
+ this._element.remove();
187
+ this._layoutManager.emit('itemDropped', this._componentItem);
188
+ if (this._componentItemFocused && droppedComponentItem !== undefined) {
189
+ droppedComponentItem.focus();
190
+ }
191
+ }
192
+ /**
193
+ * Updates the Drag Proxy's dimensions
194
+ * @internal
195
+ */
196
+ setDimensions() {
197
+ const dimensions = this._layoutManager.layoutConfig.dimensions;
198
+ if (dimensions === undefined) {
199
+ throw new Error('DragProxy.setDimensions: dimensions undefined');
200
+ }
201
+ let width = dimensions.dragProxyWidth;
202
+ let height = dimensions.dragProxyHeight;
203
+ if (width === undefined || height === undefined) {
204
+ throw new Error('DragProxy.setDimensions: width and/or height undefined');
205
+ }
206
+ const headerHeight = this._layoutManager.layoutConfig.header.show === false ? 0 : dimensions.headerHeight;
207
+ this._element.style.width = numberToPixels(width);
208
+ this._element.style.height = numberToPixels(height);
209
+ width -= (this._sided ? headerHeight : 0);
210
+ height -= (!this._sided ? headerHeight : 0);
211
+ this._proxyContainerElement.style.width = numberToPixels(width);
212
+ this._proxyContainerElement.style.height = numberToPixels(height);
213
+ this._componentItem.enterDragMode(width, height);
214
+ this._componentItem.show();
215
+ }
216
+ }
217
+ //# sourceMappingURL=drag-proxy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drag-proxy.js","sourceRoot":"","sources":["../../../../src/ts/controls/drag-proxy.ts"],"names":[],"mappings":"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"}