@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,247 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.VirtualLayout = void 0;
4
+ const config_1 = require("./config/config");
5
+ const resolved_config_1 = require("./config/resolved-config");
6
+ const external_error_1 = require("./errors/external-error");
7
+ const internal_error_1 = require("./errors/internal-error");
8
+ const layout_manager_1 = require("./layout-manager");
9
+ const i18n_strings_1 = require("./utils/i18n-strings");
10
+ /** @public */
11
+ class VirtualLayout extends layout_manager_1.LayoutManager {
12
+ /** @internal */
13
+ constructor(configOrOptionalContainer, containerOrBindComponentEventHandler, unbindComponentEventHandler, skipInit) {
14
+ super(VirtualLayout.createLayoutManagerConstructorParameters(configOrOptionalContainer, containerOrBindComponentEventHandler));
15
+ /** @internal @deprecated use while constructor is not determinate */
16
+ this._bindComponentEventHanlderPassedInConstructor = false; // remove when constructor is determinate
17
+ /** @internal @deprecated use while constructor is not determinate */
18
+ this._creationTimeoutPassed = false; // remove when constructor is determinate
19
+ if (containerOrBindComponentEventHandler !== undefined) {
20
+ if (typeof containerOrBindComponentEventHandler === 'function') {
21
+ this.bindComponentEvent = containerOrBindComponentEventHandler;
22
+ this._bindComponentEventHanlderPassedInConstructor = true;
23
+ if (unbindComponentEventHandler !== undefined) {
24
+ this.unbindComponentEvent = unbindComponentEventHandler;
25
+ }
26
+ }
27
+ }
28
+ if (!this._bindComponentEventHanlderPassedInConstructor) {
29
+ // backward compatibility
30
+ if (this.isSubWindow) {
31
+ // document.body.style.visibility = 'hidden';
32
+ // Set up layoutConfig since constructor is not determinate and may exit early. Other functions may need
33
+ // this.layoutConfig. this.layoutConfig is again calculated in the same way when init() completes.
34
+ // Remove this when constructor is determinate.
35
+ if (this._constructorOrSubWindowLayoutConfig === undefined) {
36
+ throw new internal_error_1.UnexpectedUndefinedError('VLC98823');
37
+ }
38
+ else {
39
+ const resolvedLayoutConfig = config_1.LayoutConfig.resolve(this._constructorOrSubWindowLayoutConfig);
40
+ // remove root from layoutConfig
41
+ this.layoutConfig = Object.assign(Object.assign({}, resolvedLayoutConfig), { root: undefined });
42
+ }
43
+ }
44
+ }
45
+ if (skipInit !== true) {
46
+ if (!this.deprecatedConstructor) {
47
+ this.init();
48
+ }
49
+ }
50
+ }
51
+ destroy() {
52
+ this.bindComponentEvent = undefined;
53
+ this.unbindComponentEvent = undefined;
54
+ super.destroy();
55
+ }
56
+ /**
57
+ * Creates the actual layout. Must be called after all initial components
58
+ * are registered. Recurses through the configuration and sets up
59
+ * the item tree.
60
+ *
61
+ * If called before the document is ready it adds itself as a listener
62
+ * to the document.ready event
63
+ * @deprecated LayoutConfig should not be loaded in {@link (LayoutManager:class)} constructor, but rather in a
64
+ * {@link (LayoutManager:class).loadLayout} call. If LayoutConfig is not specified in {@link (LayoutManager:class)} constructor,
65
+ * then init() will be automatically called internally and should not be called externally.
66
+ */
67
+ init() {
68
+ /**
69
+ * If the document isn't ready yet, wait for it.
70
+ */
71
+ if (!this._bindComponentEventHanlderPassedInConstructor && (document.readyState === 'loading' || document.body === null)) {
72
+ document.addEventListener('DOMContentLoaded', () => this.init(), { passive: true });
73
+ return;
74
+ }
75
+ /**
76
+ * If this is a subwindow, wait a few milliseconds for the original
77
+ * page's js calls to be executed, then replace the bodies content
78
+ * with GoldenLayout
79
+ */
80
+ if (!this._bindComponentEventHanlderPassedInConstructor && this.isSubWindow === true && !this._creationTimeoutPassed) {
81
+ setTimeout(() => this.init(), 7);
82
+ this._creationTimeoutPassed = true;
83
+ return;
84
+ }
85
+ if (this.isSubWindow === true) {
86
+ if (!this._bindComponentEventHanlderPassedInConstructor) {
87
+ this.clearHtmlAndAdjustStylesForSubWindow();
88
+ }
89
+ // Expose this instance on the window object to allow the opening window to interact with it
90
+ window.__glInstance = this;
91
+ }
92
+ super.init();
93
+ }
94
+ /**
95
+ * Clears existing HTML and adjusts style to make window suitable to be a popout sub window
96
+ * Curently is automatically called when window is a subWindow and bindComponentEvent is not passed in the constructor
97
+ * If bindComponentEvent is not passed in the constructor, the application must either call this function explicitly or
98
+ * (preferably) make the window suitable as a subwindow.
99
+ * In the future, it is planned that this function is NOT automatically called in any circumstances. Applications will
100
+ * need to determine whether a window is a Golden Layout popout window and either call this function explicitly or
101
+ * hide HTML not relevant to the popout.
102
+ * See apitest for an example of how HTML is hidden when popout windows are displayed
103
+ */
104
+ clearHtmlAndAdjustStylesForSubWindow() {
105
+ const headElement = document.head;
106
+ const appendNodeLists = new Array(4);
107
+ appendNodeLists[0] = document.querySelectorAll('body link');
108
+ appendNodeLists[1] = document.querySelectorAll('body style');
109
+ appendNodeLists[2] = document.querySelectorAll('template');
110
+ appendNodeLists[3] = document.querySelectorAll('.gl_keep');
111
+ for (let listIdx = 0; listIdx < appendNodeLists.length; listIdx++) {
112
+ const appendNodeList = appendNodeLists[listIdx];
113
+ for (let nodeIdx = 0; nodeIdx < appendNodeList.length; nodeIdx++) {
114
+ const node = appendNodeList[nodeIdx];
115
+ headElement.appendChild(node);
116
+ }
117
+ }
118
+ const bodyElement = document.body;
119
+ bodyElement.innerHTML = '';
120
+ bodyElement.style.visibility = 'visible';
121
+ this.checkAddDefaultPopinButton();
122
+ /*
123
+ * This seems a bit pointless, but actually causes a reflow/re-evaluation getting around
124
+ * slickgrid's "Cannot find stylesheet." bug in chrome
125
+ */
126
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
127
+ const x = document.body.offsetHeight;
128
+ }
129
+ /**
130
+ * Will add button if not popinOnClose specified in settings
131
+ * @returns true if added otherwise false
132
+ */
133
+ checkAddDefaultPopinButton() {
134
+ if (this.layoutConfig.settings.popInOnClose) {
135
+ return false;
136
+ }
137
+ else {
138
+ const popInButtonElement = document.createElement('div');
139
+ popInButtonElement.classList.add("lm_popin" /* DomConstants.ClassName.Popin */);
140
+ popInButtonElement.setAttribute('title', this.layoutConfig.header.dock);
141
+ const iconElement = document.createElement('div');
142
+ iconElement.classList.add("lm_icon" /* DomConstants.ClassName.Icon */);
143
+ const bgElement = document.createElement('div');
144
+ bgElement.classList.add("lm_bg" /* DomConstants.ClassName.Bg */);
145
+ popInButtonElement.appendChild(iconElement);
146
+ popInButtonElement.appendChild(bgElement);
147
+ popInButtonElement.addEventListener('click', () => this.emit('popIn'));
148
+ document.body.appendChild(popInButtonElement);
149
+ return true;
150
+ }
151
+ }
152
+ /** @internal */
153
+ bindComponent(container, itemConfig) {
154
+ if (this.bindComponentEvent !== undefined) {
155
+ const bindableComponent = this.bindComponentEvent(container, itemConfig);
156
+ return bindableComponent;
157
+ }
158
+ else {
159
+ if (this.getComponentEvent !== undefined) {
160
+ return {
161
+ virtual: false,
162
+ component: this.getComponentEvent(container, itemConfig),
163
+ };
164
+ }
165
+ else {
166
+ // There is no component registered for this type, and we don't have a getComponentEvent defined.
167
+ // This might happen when the user pops out a dialog and the component types are not registered upfront.
168
+ const text = i18n_strings_1.i18nStrings[2 /* I18nStringId.ComponentTypeNotRegisteredAndBindComponentEventHandlerNotAssigned */];
169
+ const message = `${text}: ${JSON.stringify(itemConfig)}`;
170
+ throw new external_error_1.BindError(message);
171
+ }
172
+ }
173
+ }
174
+ /** @internal */
175
+ unbindComponent(container, virtual, component) {
176
+ if (this.unbindComponentEvent !== undefined) {
177
+ this.unbindComponentEvent(container);
178
+ }
179
+ else {
180
+ if (!virtual && this.releaseComponentEvent !== undefined) {
181
+ if (component === undefined) {
182
+ throw new internal_error_1.UnexpectedUndefinedError('VCUCRCU333998');
183
+ }
184
+ else {
185
+ this.releaseComponentEvent(container, component);
186
+ }
187
+ }
188
+ }
189
+ }
190
+ }
191
+ exports.VirtualLayout = VirtualLayout;
192
+ /** @public */
193
+ (function (VirtualLayout) {
194
+ /** @internal
195
+ * Veriable to hold the state whether we already checked if we are running in a sub window.
196
+ * Fixes popout and creation of nested golden-layouts.
197
+ */
198
+ let subWindowChecked = false;
199
+ /** @internal */
200
+ function createLayoutManagerConstructorParameters(configOrOptionalContainer, containerOrBindComponentEventHandler) {
201
+ const windowConfigKey = subWindowChecked ? null : new URL(document.location.href).searchParams.get('gl-window');
202
+ subWindowChecked = true;
203
+ const isSubWindow = windowConfigKey !== null;
204
+ let containerElement;
205
+ let config;
206
+ if (windowConfigKey !== null) {
207
+ const windowConfigStr = localStorage.getItem(windowConfigKey);
208
+ if (windowConfigStr === null) {
209
+ throw new Error('Null gl-window Config');
210
+ }
211
+ localStorage.removeItem(windowConfigKey);
212
+ const minifiedWindowConfig = JSON.parse(windowConfigStr);
213
+ const resolvedConfig = resolved_config_1.ResolvedLayoutConfig.unminifyConfig(minifiedWindowConfig);
214
+ config = config_1.LayoutConfig.fromResolved(resolvedConfig);
215
+ if (configOrOptionalContainer instanceof HTMLElement) {
216
+ containerElement = configOrOptionalContainer;
217
+ }
218
+ }
219
+ else {
220
+ if (configOrOptionalContainer === undefined) {
221
+ config = undefined;
222
+ }
223
+ else {
224
+ if (configOrOptionalContainer instanceof HTMLElement) {
225
+ config = undefined;
226
+ containerElement = configOrOptionalContainer;
227
+ }
228
+ else {
229
+ // backwards compatibility
230
+ config = configOrOptionalContainer;
231
+ }
232
+ }
233
+ if (containerElement === undefined) {
234
+ if (containerOrBindComponentEventHandler instanceof HTMLElement) {
235
+ containerElement = containerOrBindComponentEventHandler;
236
+ }
237
+ }
238
+ }
239
+ return {
240
+ constructorOrSubWindowLayoutConfig: config,
241
+ isSubWindow,
242
+ containerElement,
243
+ };
244
+ }
245
+ VirtualLayout.createLayoutManagerConstructorParameters = createLayoutManagerConstructorParameters;
246
+ })(VirtualLayout = exports.VirtualLayout || (exports.VirtualLayout = {}));
247
+ //# sourceMappingURL=virtual-layout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"virtual-layout.js","sourceRoot":"","sources":["../../../src/ts/virtual-layout.ts"],"names":[],"mappings":";;;AAAA,4CAA+C;AAC/C,8DAAyH;AAEzH,4DAAoD;AACpD,4DAAmE;AACnE,qDAAiD;AAEjD,uDAAiE;AAEjE,cAAc;AACd,MAAa,aAAc,SAAQ,8BAAa;IAyC5C,gBAAgB;IAChB,YAAY,yBAAiE,EACzE,oCAA4F,EAC5F,2BAAuE,EACvE,QAAe;QAEf,KAAK,CAAC,aAAa,CAAC,wCAAwC,CAAC,yBAAyB,EAAE,oCAAoC,CAAC,CAAC,CAAC;QAhCnI,qEAAqE;QAC7D,kDAA6C,GAAG,KAAK,CAAC,CAAC,yCAAyC;QACxG,sEAAsE;QAC9D,2BAAsB,GAAG,KAAK,CAAC,CAAC,yCAAyC;QA+B7E,IAAI,oCAAoC,KAAK,SAAS,EAAE;YACpD,IAAI,OAAO,oCAAoC,KAAK,UAAU,EAAE;gBAC5D,IAAI,CAAC,kBAAkB,GAAG,oCAAoC,CAAC;gBAC/D,IAAI,CAAC,6CAA6C,GAAG,IAAI,CAAC;gBAE1D,IAAI,2BAA2B,KAAK,SAAS,EAAE;oBAC3C,IAAI,CAAC,oBAAoB,GAAG,2BAA2B,CAAC;iBAC3D;aACJ;SACJ;QAED,IAAI,CAAC,IAAI,CAAC,6CAA6C,EAAE;YACrD,yBAAyB;YAEzB,IAAI,IAAI,CAAC,WAAW,EAAE;gBAClB,6CAA6C;gBAC7C,wGAAwG;gBACxG,kGAAkG;gBAClG,+CAA+C;gBAC/C,IAAI,IAAI,CAAC,mCAAmC,KAAK,SAAS,EAAE;oBACxD,MAAM,IAAI,yCAAwB,CAAC,UAAU,CAAC,CAAC;iBAClD;qBAAM;oBACH,MAAM,oBAAoB,GAAG,qBAAY,CAAC,OAAO,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;oBAC5F,gCAAgC;oBAChC,IAAI,CAAC,YAAY,mCACV,oBAAoB,KACvB,IAAI,EAAE,SAAS,GAClB,CAAA;iBACJ;aACJ;SACJ;QAED,IAAI,QAAQ,KAAK,IAAI,EAAE;YACnB,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE;gBAC7B,IAAI,CAAC,IAAI,EAAE,CAAC;aACf;SACJ;IACL,CAAC;IAEQ,OAAO;QACZ,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAC;QACpC,IAAI,CAAC,oBAAoB,GAAG,SAAS,CAAC;QAEtC,KAAK,CAAC,OAAO,EAAE,CAAC;IACpB,CAAC;IAGD;;;;;;;;;;OAUG;IACM,IAAI;QAET;;WAEG;QACH,IAAI,CAAC,IAAI,CAAC,6CAA6C,IAAI,CAAC,QAAQ,CAAC,UAAU,KAAK,SAAS,IAAI,QAAQ,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE;YACtH,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YACpF,OAAO;SACV;QAED;;;;WAIG;QACH,IAAI,CAAC,IAAI,CAAC,6CAA6C,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE;YAClH,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;YACjC,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;YACnC,OAAO;SACV;QAED,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,EAAE;YAC3B,IAAI,CAAC,IAAI,CAAC,6CAA6C,EAAE;gBACrD,IAAI,CAAC,oCAAoC,EAAE,CAAC;aAC/C;YAED,4FAA4F;YAC5F,MAAM,CAAC,YAAY,GAAG,IAAI,CAAC;SAC9B;QAED,KAAK,CAAC,IAAI,EAAE,CAAC;IACjB,CAAC;IAED;;;;;;;;;OASG;IACH,oCAAoC;QAChC,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC;QAElC,MAAM,eAAe,GAAG,IAAI,KAAK,CAAsB,CAAC,CAAC,CAAC;QAC1D,eAAe,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;QAC5D,eAAe,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;QAC7D,eAAe,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;QAC3D,eAAe,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;QAE3D,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE;YAC/D,MAAM,cAAc,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;YAChD,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE;gBAC9D,MAAM,IAAI,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;gBACrC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;aACjC;SACJ;QAED,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC;QAClC,WAAW,CAAC,SAAS,GAAG,EAAE,CAAC;QAC3B,WAAW,CAAC,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC;QACzC,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAElC;;;UAGE;QACF,6DAA6D;QAC7D,MAAM,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC;IACzC,CAAC;IACD;;;OAGG;IACH,0BAA0B;QACtB,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,YAAY,EAAE;YACzC,OAAO,KAAK,CAAC;SAChB;aAAM;YACH,MAAM,kBAAkB,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YACzD,kBAAkB,CAAC,SAAS,CAAC,GAAG,+CAA8B,CAAC;YAC/D,kBAAkB,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACxE,MAAM,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAClD,WAAW,CAAC,SAAS,CAAC,GAAG,6CAA6B,CAAC;YACvD,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAChD,SAAS,CAAC,SAAS,CAAC,GAAG,yCAA2B,CAAC;YACnD,kBAAkB,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;YAC5C,kBAAkB,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAC1C,kBAAkB,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;YACvE,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC;YAC9C,OAAO,IAAI,CAAC;SACf;IACL,CAAC;IAED,gBAAgB;IACP,aAAa,CAAC,SAA6B,EAAE,UAAuC;QACzF,IAAI,IAAI,CAAC,kBAAkB,KAAK,SAAS,EAAE;YACvC,MAAM,iBAAiB,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;YACzE,OAAO,iBAAiB,CAAC;SAC5B;aAAM;YACH,IAAI,IAAI,CAAC,iBAAiB,KAAK,SAAS,EAAE;gBACtC,OAAO;oBACH,OAAO,EAAE,KAAK;oBACd,SAAS,EAAE,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,UAAU,CAAC;iBAC3D,CAAA;aACJ;iBAAM;gBACH,iGAAiG;gBACjG,wGAAwG;gBACxG,MAAM,IAAI,GAAG,0BAAW,wFAAgF,CAAC;gBACzG,MAAM,OAAO,GAAG,GAAG,IAAI,KAAK,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAA;gBACxD,MAAM,IAAI,0BAAS,CAAC,OAAO,CAAC,CAAC;aAChC;SACJ;IACL,CAAC;IAED,gBAAgB;IACP,eAAe,CAAC,SAA6B,EAAE,OAAgB,EAAE,SAAmD;QACzH,IAAI,IAAI,CAAC,oBAAoB,KAAK,SAAS,EAAE;YACzC,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;SACxC;aAAM;YACH,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,qBAAqB,KAAK,SAAS,EAAE;gBACtD,IAAI,SAAS,KAAK,SAAS,EAAE;oBACzB,MAAM,IAAI,yCAAwB,CAAC,eAAe,CAAC,CAAC;iBACvD;qBAAM;oBACH,IAAI,CAAC,qBAAqB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;iBACpD;aACJ;SACJ;IACL,CAAC;CACJ;AA7OD,sCA6OC;AAED,cAAc;AACd,WAAiB,aAAa;IAqB1B;;;OAGG;IACH,IAAI,gBAAgB,GAAG,KAAK,CAAC;IAE7B,gBAAgB;IAChB,SAAgB,wCAAwC,CAAC,yBAAiE,EACtH,oCAA6F;QAG7F,MAAM,eAAe,GAAG,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAChH,gBAAgB,GAAG,IAAI,CAAC;QACxB,MAAM,WAAW,GAAG,eAAe,KAAK,IAAI,CAAC;QAE7C,IAAI,gBAAyC,CAAC;QAC9C,IAAI,MAAgC,CAAC;QACrC,IAAI,eAAe,KAAK,IAAI,EAAE;YAC1B,MAAM,eAAe,GAAG,YAAY,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;YAC9D,IAAI,eAAe,KAAK,IAAI,EAAE;gBAC1B,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;aAC5C;YACD,YAAY,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;YACzC,MAAM,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAA+B,CAAC;YACvF,MAAM,cAAc,GAAG,sCAAoB,CAAC,cAAc,CAAC,oBAAoB,CAAC,CAAC;YACjF,MAAM,GAAG,qBAAY,CAAC,YAAY,CAAC,cAAc,CAAC,CAAA;YAElD,IAAI,yBAAyB,YAAY,WAAW,EAAE;gBAClD,gBAAgB,GAAG,yBAAyB,CAAC;aAChD;SACJ;aAAM;YACH,IAAI,yBAAyB,KAAK,SAAS,EAAE;gBACzC,MAAM,GAAG,SAAS,CAAC;aACtB;iBAAM;gBACH,IAAI,yBAAyB,YAAY,WAAW,EAAE;oBAClD,MAAM,GAAG,SAAS,CAAC;oBACnB,gBAAgB,GAAG,yBAAyB,CAAC;iBAChD;qBAAM;oBACH,0BAA0B;oBAC1B,MAAM,GAAG,yBAAyB,CAAC;iBACtC;aACJ;YAED,IAAI,gBAAgB,KAAK,SAAS,EAAE;gBAChC,IAAI,oCAAoC,YAAY,WAAW,EAAE;oBAC7D,gBAAgB,GAAG,oCAAoC,CAAC;iBAC3D;aACJ;SACJ;QAED,OAAO;YACH,kCAAkC,EAAE,MAAM;YAC1C,WAAW;YACX,gBAAgB;SACnB,CAAC;IACN,CAAC;IAhDe,sDAAwC,2CAgDvD,CAAA;AACL,CAAC,EA7EgB,aAAa,GAAb,qBAAa,KAAb,qBAAa,QA6E7B"}
@@ -0,0 +1,319 @@
1
+ .lm_root {
2
+ position: relative;
3
+ }
4
+ .lm_row > .lm_item {
5
+ float: left;
6
+ }
7
+ .lm_content {
8
+ overflow: hidden;
9
+ position: relative;
10
+ }
11
+ .lm_dragging,
12
+ .lm_dragging * {
13
+ cursor: move !important;
14
+ -webkit-user-select: none;
15
+ user-select: none;
16
+ }
17
+ .lm_maximised {
18
+ position: absolute;
19
+ top: 0;
20
+ left: 0;
21
+ z-index: 40;
22
+ }
23
+ .lm_maximise_placeholder {
24
+ display: none;
25
+ }
26
+ .lm_splitter {
27
+ position: relative;
28
+ z-index: 2;
29
+ touch-action: none;
30
+ }
31
+ .lm_splitter.lm_vertical .lm_drag_handle {
32
+ width: 100%;
33
+ position: absolute;
34
+ cursor: ns-resize;
35
+ touch-action: none;
36
+ -webkit-user-select: none;
37
+ user-select: none;
38
+ }
39
+ .lm_splitter.lm_horizontal {
40
+ float: left;
41
+ height: 100%;
42
+ }
43
+ .lm_splitter.lm_horizontal .lm_drag_handle {
44
+ height: 100%;
45
+ position: absolute;
46
+ cursor: ew-resize;
47
+ touch-action: none;
48
+ -webkit-user-select: none;
49
+ user-select: none;
50
+ }
51
+ .lm_header {
52
+ overflow: visible;
53
+ position: relative;
54
+ z-index: 1;
55
+ -webkit-user-select: none;
56
+ user-select: none;
57
+ }
58
+ .lm_header [class^=lm_] {
59
+ box-sizing: content-box !important;
60
+ }
61
+ .lm_header .lm_controls {
62
+ position: absolute;
63
+ right: 3px;
64
+ display: flex;
65
+ }
66
+ .lm_header .lm_controls > * {
67
+ cursor: pointer;
68
+ float: left;
69
+ width: 18px;
70
+ height: 18px;
71
+ text-align: center;
72
+ }
73
+ .lm_header .lm_tabs {
74
+ position: absolute;
75
+ display: flex;
76
+ }
77
+ .lm_header .lm_tab {
78
+ cursor: pointer;
79
+ float: left;
80
+ height: 14px;
81
+ margin-top: 1px;
82
+ padding: 0px 10px 5px;
83
+ padding-right: 25px;
84
+ position: relative;
85
+ touch-action: none;
86
+ }
87
+ .lm_header .lm_tab i {
88
+ width: 2px;
89
+ height: 19px;
90
+ position: absolute;
91
+ }
92
+ .lm_header .lm_tab i.lm_left {
93
+ top: 0;
94
+ left: -2px;
95
+ }
96
+ .lm_header .lm_tab i.lm_right {
97
+ top: 0;
98
+ right: -2px;
99
+ }
100
+ .lm_header .lm_tab .lm_title {
101
+ display: inline-block;
102
+ overflow: hidden;
103
+ text-overflow: ellipsis;
104
+ }
105
+ .lm_header .lm_tab .lm_close_tab {
106
+ width: 14px;
107
+ height: 14px;
108
+ position: absolute;
109
+ top: 0;
110
+ right: 0;
111
+ text-align: center;
112
+ }
113
+ .lm_stack {
114
+ position: relative;
115
+ }
116
+ .lm_stack > .lm_items {
117
+ overflow: hidden;
118
+ }
119
+ .lm_stack.lm_left > .lm_items {
120
+ position: absolute;
121
+ left: 20px;
122
+ top: 0;
123
+ }
124
+ .lm_stack.lm_right > .lm_items {
125
+ position: absolute;
126
+ right: 20px;
127
+ top: 0;
128
+ }
129
+ .lm_stack.lm_right > .lm_header {
130
+ position: absolute;
131
+ right: 0;
132
+ top: 0;
133
+ }
134
+ .lm_stack.lm_bottom > .lm_items {
135
+ position: absolute;
136
+ bottom: 20px;
137
+ }
138
+ .lm_stack.lm_bottom > .lm_header {
139
+ position: absolute;
140
+ bottom: 0;
141
+ }
142
+ .lm_left.lm_stack .lm_header,
143
+ .lm_right.lm_stack .lm_header {
144
+ height: 100%;
145
+ }
146
+ .lm_left.lm_dragProxy .lm_header,
147
+ .lm_right.lm_dragProxy .lm_header,
148
+ .lm_left.lm_dragProxy .lm_items,
149
+ .lm_right.lm_dragProxy .lm_items {
150
+ float: left;
151
+ }
152
+ .lm_left.lm_dragProxy .lm_header,
153
+ .lm_right.lm_dragProxy .lm_header,
154
+ .lm_left.lm_stack .lm_header,
155
+ .lm_right.lm_stack .lm_header {
156
+ width: 20px;
157
+ vertical-align: top;
158
+ }
159
+ .lm_left.lm_dragProxy .lm_header .lm_tabs,
160
+ .lm_right.lm_dragProxy .lm_header .lm_tabs,
161
+ .lm_left.lm_stack .lm_header .lm_tabs,
162
+ .lm_right.lm_stack .lm_header .lm_tabs {
163
+ transform-origin: left top;
164
+ top: 0;
165
+ width: 1000px;
166
+ /*hack*/
167
+ }
168
+ .lm_left.lm_dragProxy .lm_header .lm_controls,
169
+ .lm_right.lm_dragProxy .lm_header .lm_controls,
170
+ .lm_left.lm_stack .lm_header .lm_controls,
171
+ .lm_right.lm_stack .lm_header .lm_controls {
172
+ bottom: 0;
173
+ flex-flow: column;
174
+ }
175
+ .lm_dragProxy.lm_left .lm_header .lm_tabs,
176
+ .lm_stack.lm_left .lm_header .lm_tabs {
177
+ transform: rotate(-90deg) scaleX(-1);
178
+ left: 0;
179
+ }
180
+ .lm_dragProxy.lm_left .lm_header .lm_tabs .lm_tab,
181
+ .lm_stack.lm_left .lm_header .lm_tabs .lm_tab {
182
+ transform: scaleX(-1);
183
+ margin-top: 1px;
184
+ }
185
+ .lm_dragProxy.lm_left .lm_header .lm_tabdropdown_list,
186
+ .lm_stack.lm_left .lm_header .lm_tabdropdown_list {
187
+ top: initial;
188
+ right: initial;
189
+ left: 20px;
190
+ }
191
+ .lm_dragProxy.lm_right .lm_content {
192
+ float: left;
193
+ }
194
+ .lm_dragProxy.lm_right .lm_header .lm_tabs,
195
+ .lm_stack.lm_right .lm_header .lm_tabs {
196
+ transform: rotate(90deg) scaleX(1);
197
+ left: 100%;
198
+ margin-left: 0;
199
+ }
200
+ .lm_dragProxy.lm_right .lm_header .lm_controls,
201
+ .lm_stack.lm_right .lm_header .lm_controls {
202
+ left: 3px;
203
+ }
204
+ .lm_dragProxy.lm_right .lm_header .lm_tabdropdown_list,
205
+ .lm_stack.lm_right .lm_header .lm_tabdropdown_list {
206
+ top: initial;
207
+ right: 20px;
208
+ }
209
+ .lm_dragProxy.lm_bottom .lm_header,
210
+ .lm_stack.lm_bottom .lm_header {
211
+ width: 100%;
212
+ }
213
+ .lm_dragProxy.lm_bottom .lm_header .lm_tab,
214
+ .lm_stack.lm_bottom .lm_header .lm_tab {
215
+ margin-top: 0;
216
+ border-top: none;
217
+ }
218
+ .lm_dragProxy.lm_bottom .lm_header .lm_controls,
219
+ .lm_stack.lm_bottom .lm_header .lm_controls {
220
+ top: 3px;
221
+ }
222
+ .lm_dragProxy.lm_bottom .lm_header .lm_tabdropdown_list,
223
+ .lm_stack.lm_bottom .lm_header .lm_tabdropdown_list {
224
+ top: initial;
225
+ bottom: 20px;
226
+ }
227
+ .lm_drop_tab_placeholder {
228
+ float: left;
229
+ width: 100px;
230
+ visibility: hidden;
231
+ }
232
+ .lm_header .lm_controls .lm_tabdropdown:before {
233
+ content: '';
234
+ width: 0;
235
+ height: 0;
236
+ vertical-align: middle;
237
+ display: inline-block;
238
+ border-top: 5px dashed;
239
+ border-right: 5px solid transparent;
240
+ border-left: 5px solid transparent;
241
+ color: white;
242
+ }
243
+ .lm_header .lm_tabdropdown_list {
244
+ position: absolute;
245
+ top: 20px;
246
+ right: 0;
247
+ z-index: 5;
248
+ overflow: hidden;
249
+ }
250
+ .lm_header .lm_tabdropdown_list .lm_tab {
251
+ clear: both;
252
+ padding-right: 10px;
253
+ margin: 0;
254
+ }
255
+ .lm_header .lm_tabdropdown_list .lm_tab .lm_title {
256
+ width: 100px;
257
+ }
258
+ .lm_header .lm_tabdropdown_list .lm_close_tab {
259
+ display: none !important;
260
+ }
261
+ /***********************************
262
+ * Drag Proxy
263
+ ***********************************/
264
+ .lm_dragProxy {
265
+ position: absolute;
266
+ top: 0;
267
+ left: 0;
268
+ z-index: 30;
269
+ }
270
+ .lm_dragProxy .lm_header {
271
+ background: transparent;
272
+ }
273
+ .lm_dragProxy .lm_content {
274
+ border-top: none;
275
+ overflow: hidden;
276
+ }
277
+ .lm_dropTargetIndicator {
278
+ display: none;
279
+ position: absolute;
280
+ z-index: 35;
281
+ transition: all 200ms ease;
282
+ }
283
+ .lm_dropTargetIndicator .lm_inner {
284
+ width: 100%;
285
+ height: 100%;
286
+ position: relative;
287
+ top: 0;
288
+ left: 0;
289
+ }
290
+ .lm_transition_indicator {
291
+ display: none;
292
+ width: 20px;
293
+ height: 20px;
294
+ position: absolute;
295
+ top: 0;
296
+ left: 0;
297
+ z-index: 20;
298
+ }
299
+ .lm_popin {
300
+ width: 20px;
301
+ height: 20px;
302
+ position: absolute;
303
+ bottom: 0;
304
+ right: 0;
305
+ z-index: 9999;
306
+ }
307
+ .lm_popin > * {
308
+ width: 100%;
309
+ height: 100%;
310
+ position: absolute;
311
+ top: 0;
312
+ left: 0;
313
+ }
314
+ .lm_popin > .lm_bg {
315
+ z-index: 10;
316
+ }
317
+ .lm_popin > .lm_icon {
318
+ z-index: 20;
319
+ }