@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,145 @@
1
+ import { ComponentItemConfig as ConfigComponentItemConfig } from '../config/config'; // remove alias in version 3
2
+ import { ResolvedRowOrColumnItemConfig } from "../config/resolved-config";
3
+ import { UnexpectedNullError } from '../errors/internal-error';
4
+ import { ComponentItem } from '../items/component-item';
5
+ import { GroundItem } from '../items/ground-item';
6
+ import { DragListener } from '../utils/drag-listener';
7
+ import { DragProxy } from './drag-proxy';
8
+ /**
9
+ * Allows for any DOM item to create a component on drag
10
+ * start to be dragged into the Layout
11
+ * @public
12
+ */
13
+ export class DragSource {
14
+ /** @internal */
15
+ constructor(
16
+ /** @internal */
17
+ _layoutManager,
18
+ /** @internal */
19
+ _element,
20
+ /** @internal */
21
+ _extraAllowableChildTargets,
22
+ /** @internal @deprecated replace with componentItemConfigOrFtn in version 3 */
23
+ _componentTypeOrFtn,
24
+ /** @internal @deprecated remove in version 3 */
25
+ _componentState,
26
+ /** @internal @deprecated remove in version 3 */
27
+ _title,
28
+ /** @internal @deprecated remove in version 3 */
29
+ _id) {
30
+ this._layoutManager = _layoutManager;
31
+ this._element = _element;
32
+ this._extraAllowableChildTargets = _extraAllowableChildTargets;
33
+ this._componentTypeOrFtn = _componentTypeOrFtn;
34
+ this._componentState = _componentState;
35
+ this._title = _title;
36
+ this._id = _id;
37
+ this._dragListener = null;
38
+ this._dummyGroundContainer = document.createElement('div');
39
+ const dummyRootItemConfig = ResolvedRowOrColumnItemConfig.createDefault('row');
40
+ this._dummyGroundContentItem = new GroundItem(this._layoutManager, dummyRootItemConfig, this._dummyGroundContainer);
41
+ this.createDragListener();
42
+ }
43
+ /**
44
+ * Disposes of the drag listeners so the drag source is not usable any more.
45
+ * @internal
46
+ */
47
+ destroy() {
48
+ this.removeDragListener();
49
+ }
50
+ /**
51
+ * Called initially and after every drag
52
+ * @internal
53
+ */
54
+ createDragListener() {
55
+ this.removeDragListener();
56
+ this._dragListener = new DragListener(this._element, this._extraAllowableChildTargets);
57
+ this._dragListener.on('dragStart', (x, y) => this.onDragStart(x, y));
58
+ this._dragListener.on('dragStop', () => this.onDragStop());
59
+ }
60
+ /**
61
+ * Callback for the DragListener's dragStart event
62
+ *
63
+ * @param x - The x position of the mouse on dragStart
64
+ * @param y - The x position of the mouse on dragStart
65
+ * @internal
66
+ */
67
+ onDragStart(x, y) {
68
+ var _a;
69
+ const type = 'component';
70
+ let dragSourceItemConfig;
71
+ if (typeof this._componentTypeOrFtn === "function") {
72
+ const ftnDragSourceItemConfig = this._componentTypeOrFtn();
73
+ // If the componentType property exists, then it is already a ComponentItemConfig so nothing to do
74
+ if (DragSource.isDragSourceComponentItemConfig(ftnDragSourceItemConfig)) {
75
+ dragSourceItemConfig = {
76
+ type,
77
+ componentState: ftnDragSourceItemConfig.state,
78
+ componentType: ftnDragSourceItemConfig.type,
79
+ title: (_a = ftnDragSourceItemConfig.title) !== null && _a !== void 0 ? _a : this._title,
80
+ };
81
+ }
82
+ else {
83
+ dragSourceItemConfig = ftnDragSourceItemConfig;
84
+ }
85
+ }
86
+ else {
87
+ dragSourceItemConfig = {
88
+ type,
89
+ componentState: this._componentState,
90
+ componentType: this._componentTypeOrFtn,
91
+ title: this._title,
92
+ id: this._id,
93
+ };
94
+ }
95
+ // Create a dummy ContentItem only for drag purposes
96
+ // All ContentItems (except for GroundItem) need a parent. When dragging, the parent is not used.
97
+ // Instead of allowing null parents (as Javascript version did), use a temporary dummy GroundItem parent and add ContentItem to that
98
+ // If this does not work, need to create alternative GroundItem class
99
+ const resolvedItemConfig = ConfigComponentItemConfig.resolve(dragSourceItemConfig, false);
100
+ const componentItem = new ComponentItem(this._layoutManager, resolvedItemConfig, this._dummyGroundContentItem);
101
+ this._dummyGroundContentItem.contentItems.push(componentItem);
102
+ if (this._dragListener === null) {
103
+ throw new UnexpectedNullError('DSODSD66746');
104
+ }
105
+ else {
106
+ const dragProxy = new DragProxy(x, y, this._dragListener, this._layoutManager, componentItem, this._dummyGroundContentItem);
107
+ const transitionIndicator = this._layoutManager.transitionIndicator;
108
+ if (transitionIndicator === null) {
109
+ throw new UnexpectedNullError('DSODST66746');
110
+ }
111
+ else {
112
+ transitionIndicator.transitionElements(this._element, dragProxy.element);
113
+ }
114
+ }
115
+ }
116
+ /** @internal */
117
+ onDragStop() {
118
+ // if (this._dummyGroundContentItem === undefined) {
119
+ // throw new UnexpectedUndefinedError('DSODSDRU08116');
120
+ // } else {
121
+ // this._dummyGroundContentItem._$destroy
122
+ // this._dummyGroundContentItem = undefined;
123
+ // }
124
+ this.createDragListener();
125
+ }
126
+ /**
127
+ * Called after every drag and when the drag source is being disposed of.
128
+ * @internal
129
+ */
130
+ removeDragListener() {
131
+ if (this._dragListener !== null) {
132
+ this._dragListener.destroy();
133
+ this._dragListener = null;
134
+ }
135
+ }
136
+ }
137
+ /** @public */
138
+ (function (DragSource) {
139
+ /** @deprecated remove in version 3 */
140
+ function isDragSourceComponentItemConfig(config) {
141
+ return !("componentType" in config);
142
+ }
143
+ DragSource.isDragSourceComponentItemConfig = isDragSourceComponentItemConfig;
144
+ })(DragSource || (DragSource = {}));
145
+ //# sourceMappingURL=drag-source.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drag-source.js","sourceRoot":"","sources":["../../../../src/ts/controls/drag-source.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import { numberToPixels, setElementDisplayVisibility } from '../utils/utils';
2
+ /** @internal */
3
+ export class DropTargetIndicator {
4
+ constructor() {
5
+ // Maybe use container instead of Document Body?
6
+ this._element = document.createElement('div');
7
+ this._element.classList.add("lm_dropTargetIndicator" /* DomConstants.ClassName.DropTargetIndicator */);
8
+ const innerElement = document.createElement('div');
9
+ innerElement.classList.add("lm_inner" /* DomConstants.ClassName.Inner */);
10
+ this._element.appendChild(innerElement);
11
+ document.body.appendChild(this._element);
12
+ }
13
+ destroy() {
14
+ this._element.remove();
15
+ }
16
+ highlightArea(area, margin) {
17
+ this._element.style.left = numberToPixels(area.x1 + margin);
18
+ this._element.style.top = numberToPixels(area.y1 + margin);
19
+ this._element.style.width = numberToPixels(area.x2 - area.x1 - margin);
20
+ this._element.style.height = numberToPixels(area.y2 - area.y1 - margin);
21
+ this._element.style.display = 'block';
22
+ }
23
+ hide() {
24
+ setElementDisplayVisibility(this._element, false);
25
+ }
26
+ }
27
+ //# sourceMappingURL=drop-target-indicator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drop-target-indicator.js","sourceRoot":"","sources":["../../../../src/ts/controls/drop-target-indicator.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAC;AAE7E,gBAAgB;AAChB,MAAM,OAAO,mBAAmB;IAG5B;QACI,gDAAgD;QAChD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC9C,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,2EAA4C,CAAC;QACxE,MAAM,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACnD,YAAY,CAAC,SAAS,CAAC,GAAG,+CAA8B,CAAC;QACzD,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;QAExC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO;QACH,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;IAC3B,CAAC;IAED,aAAa,CAAC,IAAoB,EAAE,MAAc;QAC9C,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC;QAC5D,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,GAAG,cAAc,CAAC,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC;QAC3D,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC;QACvE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC;QACxE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;IAC1C,CAAC;IAED,IAAI;QACA,2BAA2B,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACtD,CAAC;CACJ"}
@@ -0,0 +1,30 @@
1
+ /** @internal */
2
+ export class HeaderButton {
3
+ constructor(_header, label, cssClass, _pushEvent) {
4
+ this._header = _header;
5
+ this._pushEvent = _pushEvent;
6
+ this._clickEventListener = (ev) => this.onClick(ev);
7
+ this._touchStartEventListener = (ev) => this.onTouchStart(ev);
8
+ this._element = document.createElement('div');
9
+ this._element.classList.add(cssClass);
10
+ this._element.title = label;
11
+ this._header.on('destroy', () => this.destroy());
12
+ this._element.addEventListener('click', this._clickEventListener, { passive: true });
13
+ this._element.addEventListener('touchstart', this._touchStartEventListener, { passive: true });
14
+ this._header.controlsContainerElement.appendChild(this._element);
15
+ }
16
+ get element() { return this._element; }
17
+ destroy() {
18
+ var _a;
19
+ this._element.removeEventListener('click', this._clickEventListener);
20
+ this._element.removeEventListener('touchstart', this._touchStartEventListener);
21
+ (_a = this._element.parentNode) === null || _a === void 0 ? void 0 : _a.removeChild(this._element);
22
+ }
23
+ onClick(ev) {
24
+ this._pushEvent(ev);
25
+ }
26
+ onTouchStart(ev) {
27
+ this._pushEvent(ev);
28
+ }
29
+ }
30
+ //# sourceMappingURL=header-button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"header-button.js","sourceRoot":"","sources":["../../../../src/ts/controls/header-button.ts"],"names":[],"mappings":"AAEA,gBAAgB;AAChB,MAAM,OAAO,YAAY;IAOrB,YAAoB,OAAe,EAAE,KAAa,EAAE,QAAgB,EAAU,UAAkC;QAA5F,YAAO,GAAP,OAAO,CAAQ;QAA2C,eAAU,GAAV,UAAU,CAAwB;QALxG,wBAAmB,GAAG,CAAC,EAAc,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC3D,6BAAwB,GAAG,CAAC,EAAc,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QAKzE,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC9C,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACtC,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QACjD,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,mBAAmB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACrF,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,wBAAwB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/F,IAAI,CAAC,OAAO,CAAC,wBAAwB,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrE,CAAC;IAVD,IAAI,OAAO,KAAkB,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAYpD,OAAO;;QACH,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACrE,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,YAAY,EAAE,IAAI,CAAC,wBAAwB,CAAC,CAAC;QAC/E,MAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,0CAAE,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACzD,CAAC;IAEO,OAAO,CAAC,EAAc;QAC1B,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IACxB,CAAC;IAEO,YAAY,CAAC,EAAc;QAC/B,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IACxB,CAAC;CACJ"}
@@ -0,0 +1,362 @@
1
+ import { UnexpectedUndefinedError } from '../errors/internal-error';
2
+ import { EventEmitter } from '../utils/event-emitter';
3
+ import { Side } from '../utils/types';
4
+ import { numberToPixels, setElementDisplayVisibility } from '../utils/utils';
5
+ import { HeaderButton } from './header-button';
6
+ import { TabsContainer } from './tabs-container';
7
+ /**
8
+ * This class represents a header above a Stack ContentItem.
9
+ * @public
10
+ */
11
+ export class Header extends EventEmitter {
12
+ /** @internal */
13
+ constructor(
14
+ /** @internal */
15
+ _layoutManager,
16
+ /** @internal */
17
+ _parent, settings,
18
+ /** @internal */
19
+ _configClosable,
20
+ /** @internal */
21
+ _getActiveComponentItemEvent, closeEvent,
22
+ /** @internal */
23
+ _popoutEvent,
24
+ /** @internal */
25
+ _maximiseToggleEvent,
26
+ /** @internal */
27
+ _clickEvent,
28
+ /** @internal */
29
+ _touchStartEvent,
30
+ /** @internal */
31
+ _componentRemoveEvent,
32
+ /** @internal */
33
+ _componentFocusEvent,
34
+ /** @internal */
35
+ _componentDragStartEvent) {
36
+ super();
37
+ this._layoutManager = _layoutManager;
38
+ this._parent = _parent;
39
+ this._configClosable = _configClosable;
40
+ this._getActiveComponentItemEvent = _getActiveComponentItemEvent;
41
+ this._popoutEvent = _popoutEvent;
42
+ this._maximiseToggleEvent = _maximiseToggleEvent;
43
+ this._clickEvent = _clickEvent;
44
+ this._touchStartEvent = _touchStartEvent;
45
+ this._componentRemoveEvent = _componentRemoveEvent;
46
+ this._componentFocusEvent = _componentFocusEvent;
47
+ this._componentDragStartEvent = _componentDragStartEvent;
48
+ /** @internal */
49
+ this._clickListener = (ev) => this.onClick(ev);
50
+ /** @internal */
51
+ this._touchStartListener = (ev) => this.onTouchStart(ev);
52
+ /** @internal */
53
+ this._rowColumnClosable = true;
54
+ /** @internal */
55
+ this._closeButton = null;
56
+ /** @internal */
57
+ this._popoutButton = null;
58
+ this._tabsContainer = new TabsContainer(this._layoutManager, (item) => this.handleTabInitiatedComponentRemoveEvent(item), (item) => this.handleTabInitiatedComponentFocusEvent(item), (x, y, dragListener, item) => this.handleTabInitiatedDragStartEvent(x, y, dragListener, item), () => this.processTabDropdownActiveChanged());
59
+ this._show = settings.show;
60
+ this._popoutEnabled = settings.popoutEnabled;
61
+ this._popoutLabel = settings.popoutLabel;
62
+ this._maximiseEnabled = settings.maximiseEnabled;
63
+ this._maximiseLabel = settings.maximiseLabel;
64
+ this._minimiseEnabled = settings.minimiseEnabled;
65
+ this._minimiseLabel = settings.minimiseLabel;
66
+ this._closeEnabled = settings.closeEnabled;
67
+ this._closeLabel = settings.closeLabel;
68
+ this._tabDropdownEnabled = settings.tabDropdownEnabled;
69
+ this._tabDropdownLabel = settings.tabDropdownLabel;
70
+ this.setSide(settings.side);
71
+ this._canRemoveComponent = this._configClosable;
72
+ this._element = document.createElement('section');
73
+ this._element.classList.add("lm_header" /* DomConstants.ClassName.Header */);
74
+ this._controlsContainerElement = document.createElement('section');
75
+ this._controlsContainerElement.classList.add("lm_controls" /* DomConstants.ClassName.Controls */);
76
+ this._element.appendChild(this._tabsContainer.element);
77
+ this._element.appendChild(this._controlsContainerElement);
78
+ this._element.appendChild(this._tabsContainer.dropdownElement);
79
+ this._element.addEventListener('click', this._clickListener, { passive: true });
80
+ this._element.addEventListener('touchstart', this._touchStartListener, { passive: true });
81
+ this._documentMouseUpListener = () => this._tabsContainer.hideAdditionalTabsDropdown();
82
+ globalThis.document.addEventListener('mouseup', this._documentMouseUpListener, { passive: true });
83
+ this._tabControlOffset = this._layoutManager.layoutConfig.settings.tabControlOffset;
84
+ if (this._tabDropdownEnabled) {
85
+ this._tabDropdownButton = new HeaderButton(this, this._tabDropdownLabel, "lm_tabdropdown" /* DomConstants.ClassName.TabDropdown */, () => this._tabsContainer.showAdditionalTabsDropdown());
86
+ }
87
+ if (this._popoutEnabled) {
88
+ this._popoutButton = new HeaderButton(this, this._popoutLabel, "lm_popout" /* DomConstants.ClassName.Popout */, () => this.handleButtonPopoutEvent());
89
+ }
90
+ /**
91
+ * Maximise control - set the component to the full size of the layout
92
+ */
93
+ if (this._maximiseEnabled) {
94
+ this._maximiseButton = new HeaderButton(this, this._maximiseLabel, "lm_maximise" /* DomConstants.ClassName.Maximise */, (ev) => this.handleButtonMaximiseToggleEvent(ev));
95
+ }
96
+ /**
97
+ * Close button
98
+ */
99
+ if (this._configClosable) {
100
+ this._closeButton = new HeaderButton(this, this._closeLabel, "lm_close" /* DomConstants.ClassName.Close */, () => closeEvent());
101
+ }
102
+ this.processTabDropdownActiveChanged();
103
+ }
104
+ // /** @internal */
105
+ // private _activeComponentItem: ComponentItem | null = null; // only used to identify active tab
106
+ get show() { return this._show; }
107
+ get side() { return this._side; }
108
+ get leftRightSided() { return this._leftRightSided; }
109
+ get layoutManager() { return this._layoutManager; }
110
+ get parent() { return this._parent; }
111
+ get tabs() { return this._tabsContainer.tabs; }
112
+ get lastVisibleTabIndex() { return this._tabsContainer.lastVisibleTabIndex; }
113
+ get element() { return this._element; }
114
+ get tabsContainerElement() { return this._tabsContainer.element; }
115
+ get controlsContainerElement() { return this._controlsContainerElement; }
116
+ /**
117
+ * Destroys the entire header
118
+ * @internal
119
+ */
120
+ destroy() {
121
+ this.emit('destroy');
122
+ this._popoutEvent = undefined;
123
+ this._maximiseToggleEvent = undefined;
124
+ this._clickEvent = undefined;
125
+ this._touchStartEvent = undefined;
126
+ this._componentRemoveEvent = undefined;
127
+ this._componentFocusEvent = undefined;
128
+ this._componentDragStartEvent = undefined;
129
+ this._tabsContainer.destroy();
130
+ globalThis.document.removeEventListener('mouseup', this._documentMouseUpListener);
131
+ this._element.remove();
132
+ }
133
+ /**
134
+ * Creates a new tab and associates it with a contentItem
135
+ * @param index - The position of the tab
136
+ * @internal
137
+ */
138
+ createTab(componentItem, index) {
139
+ this._tabsContainer.createTab(componentItem, index);
140
+ }
141
+ /**
142
+ * Finds a tab based on the contentItem its associated with and removes it.
143
+ * Cannot remove tab if it has the active ComponentItem
144
+ * @internal
145
+ */
146
+ removeTab(componentItem) {
147
+ this._tabsContainer.removeTab(componentItem);
148
+ }
149
+ /** @internal */
150
+ processActiveComponentChanged(newActiveComponentItem) {
151
+ this._tabsContainer.processActiveComponentChanged(newActiveComponentItem);
152
+ this.updateTabSizes();
153
+ }
154
+ /** @internal */
155
+ setSide(value) {
156
+ this._side = value;
157
+ this._leftRightSided = [Side.right, Side.left].includes(this._side);
158
+ }
159
+ /**
160
+ * Programmatically set closability.
161
+ * @param value - Whether to enable/disable closability.
162
+ * @returns Whether the action was successful
163
+ * @internal
164
+ */
165
+ setRowColumnClosable(value) {
166
+ this._rowColumnClosable = value;
167
+ this.updateClosability();
168
+ }
169
+ /**
170
+ * Updates the header's closability. If a stack/header is able
171
+ * to close, but has a non closable component added to it, the stack is no
172
+ * longer closable until all components are closable.
173
+ * @internal
174
+ */
175
+ updateClosability() {
176
+ let isClosable;
177
+ if (!this._configClosable) {
178
+ isClosable = false;
179
+ }
180
+ else {
181
+ if (!this._rowColumnClosable) {
182
+ isClosable = false;
183
+ }
184
+ else {
185
+ isClosable = true;
186
+ const len = this.tabs.length;
187
+ for (let i = 0; i < len; i++) {
188
+ const tab = this._tabsContainer.tabs[i];
189
+ const item = tab.componentItem;
190
+ if (!item.isClosable) {
191
+ isClosable = false;
192
+ break;
193
+ }
194
+ }
195
+ }
196
+ }
197
+ if (this._closeButton !== null) {
198
+ setElementDisplayVisibility(this._closeButton.element, isClosable);
199
+ }
200
+ if (this._popoutButton !== null) {
201
+ setElementDisplayVisibility(this._popoutButton.element, isClosable);
202
+ }
203
+ this._canRemoveComponent = isClosable || this._tabsContainer.tabCount > 1;
204
+ }
205
+ /** @internal */
206
+ applyFocusedValue(value) {
207
+ if (value) {
208
+ this._element.classList.add("lm_focused" /* DomConstants.ClassName.Focused */);
209
+ }
210
+ else {
211
+ this._element.classList.remove("lm_focused" /* DomConstants.ClassName.Focused */);
212
+ }
213
+ }
214
+ /** @internal */
215
+ processMaximised() {
216
+ if (this._maximiseButton === undefined) {
217
+ throw new UnexpectedUndefinedError('HPMAX16997');
218
+ }
219
+ else {
220
+ this._maximiseButton.element.setAttribute('title', this._minimiseLabel);
221
+ }
222
+ }
223
+ /** @internal */
224
+ processMinimised() {
225
+ if (this._maximiseButton === undefined) {
226
+ throw new UnexpectedUndefinedError('HPMIN16997');
227
+ }
228
+ else {
229
+ this._maximiseButton.element.setAttribute('title', this._maximiseLabel);
230
+ }
231
+ }
232
+ /**
233
+ * Pushes the tabs to the tab dropdown if the available space is not sufficient
234
+ * @internal
235
+ */
236
+ updateTabSizes() {
237
+ if (this._tabsContainer.tabCount > 0) {
238
+ const headerHeight = this._show ? this._layoutManager.layoutConfig.dimensions.headerHeight : 0;
239
+ if (this._leftRightSided) {
240
+ this._element.style.height = '';
241
+ this._element.style.width = numberToPixels(headerHeight);
242
+ }
243
+ else {
244
+ this._element.style.width = '';
245
+ this._element.style.height = numberToPixels(headerHeight);
246
+ }
247
+ let availableWidth;
248
+ if (this._leftRightSided) {
249
+ availableWidth = this._element.offsetHeight - this._controlsContainerElement.offsetHeight - this._tabControlOffset;
250
+ }
251
+ else {
252
+ availableWidth = this._element.offsetWidth - this._controlsContainerElement.offsetWidth - this._tabControlOffset;
253
+ }
254
+ this._tabsContainer.updateTabSizes(availableWidth, this._getActiveComponentItemEvent());
255
+ }
256
+ }
257
+ /** @internal */
258
+ handleTabInitiatedComponentRemoveEvent(componentItem) {
259
+ if (this._canRemoveComponent) {
260
+ if (this._componentRemoveEvent === undefined) {
261
+ throw new UnexpectedUndefinedError('HHTCE22294');
262
+ }
263
+ else {
264
+ this._componentRemoveEvent(componentItem);
265
+ }
266
+ }
267
+ }
268
+ /** @internal */
269
+ handleTabInitiatedComponentFocusEvent(componentItem) {
270
+ if (this._componentFocusEvent === undefined) {
271
+ throw new UnexpectedUndefinedError('HHTAE22294');
272
+ }
273
+ else {
274
+ this._componentFocusEvent(componentItem);
275
+ }
276
+ }
277
+ /** @internal */
278
+ handleTabInitiatedDragStartEvent(x, y, dragListener, componentItem) {
279
+ if (!this._canRemoveComponent) {
280
+ dragListener.cancelDrag();
281
+ }
282
+ else {
283
+ if (this._componentDragStartEvent === undefined) {
284
+ throw new UnexpectedUndefinedError('HHTDSE22294');
285
+ }
286
+ else {
287
+ this._componentDragStartEvent(x, y, dragListener, componentItem);
288
+ }
289
+ }
290
+ }
291
+ /** @internal */
292
+ processTabDropdownActiveChanged() {
293
+ if (this._tabDropdownButton !== undefined) {
294
+ setElementDisplayVisibility(this._tabDropdownButton.element, this._tabsContainer.dropdownActive);
295
+ }
296
+ }
297
+ /** @internal */
298
+ handleButtonPopoutEvent() {
299
+ if (this._layoutManager.layoutConfig.settings.popoutWholeStack) {
300
+ if (this._popoutEvent === undefined) {
301
+ throw new UnexpectedUndefinedError('HHBPOE17834');
302
+ }
303
+ else {
304
+ this._popoutEvent();
305
+ }
306
+ }
307
+ else {
308
+ const activeComponentItem = this._getActiveComponentItemEvent();
309
+ if (activeComponentItem) {
310
+ activeComponentItem.popout();
311
+ }
312
+ // else: if the stack is empty there won't be an active item (and nothing to popout)
313
+ }
314
+ }
315
+ /** @internal */
316
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
317
+ handleButtonMaximiseToggleEvent(ev) {
318
+ if (this._maximiseToggleEvent === undefined) {
319
+ throw new UnexpectedUndefinedError('HHBMTE16834');
320
+ }
321
+ else {
322
+ this._maximiseToggleEvent();
323
+ }
324
+ }
325
+ /**
326
+ * Invoked when the header's background is clicked (not it's tabs or controls)
327
+ * @internal
328
+ */
329
+ onClick(event) {
330
+ if (event.target === this._element) {
331
+ this.notifyClick(event);
332
+ }
333
+ }
334
+ /**
335
+ * Invoked when the header's background is touched (not it's tabs or controls)
336
+ * @internal
337
+ */
338
+ onTouchStart(event) {
339
+ if (event.target === this._element) {
340
+ this.notifyTouchStart(event);
341
+ }
342
+ }
343
+ /** @internal */
344
+ notifyClick(ev) {
345
+ if (this._clickEvent === undefined) {
346
+ throw new UnexpectedUndefinedError('HNHC46834');
347
+ }
348
+ else {
349
+ this._clickEvent(ev);
350
+ }
351
+ }
352
+ /** @internal */
353
+ notifyTouchStart(ev) {
354
+ if (this._touchStartEvent === undefined) {
355
+ throw new UnexpectedUndefinedError('HNHTS46834');
356
+ }
357
+ else {
358
+ this._touchStartEvent(ev);
359
+ }
360
+ }
361
+ }
362
+ //# sourceMappingURL=header.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"header.js","sourceRoot":"","sources":["../../../../src/ts/controls/header.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import { DragListener } from '../utils/drag-listener';
2
+ import { numberToPixels } from '../utils/utils';
3
+ /** @internal */
4
+ export class Splitter {
5
+ constructor(_isVertical, _size, grabSize) {
6
+ this._isVertical = _isVertical;
7
+ this._size = _size;
8
+ this._grabSize = grabSize < this._size ? this._size : grabSize;
9
+ this._element = document.createElement('div');
10
+ this._element.classList.add("lm_splitter" /* DomConstants.ClassName.Splitter */);
11
+ const dragHandleElement = document.createElement('div');
12
+ dragHandleElement.classList.add("lm_drag_handle" /* DomConstants.ClassName.DragHandle */);
13
+ const handleExcessSize = this._grabSize - this._size;
14
+ const handleExcessPos = handleExcessSize / 2;
15
+ if (this._isVertical) {
16
+ dragHandleElement.style.top = numberToPixels(-handleExcessPos);
17
+ dragHandleElement.style.height = numberToPixels(this._size + handleExcessSize);
18
+ this._element.classList.add("lm_vertical" /* DomConstants.ClassName.Vertical */);
19
+ this._element.style.height = numberToPixels(this._size);
20
+ }
21
+ else {
22
+ dragHandleElement.style.left = numberToPixels(-handleExcessPos);
23
+ dragHandleElement.style.width = numberToPixels(this._size + handleExcessSize);
24
+ this._element.classList.add("lm_horizontal" /* DomConstants.ClassName.Horizontal */);
25
+ this._element.style.width = numberToPixels(this._size);
26
+ }
27
+ this._element.appendChild(dragHandleElement);
28
+ this._dragListener = new DragListener(this._element, [dragHandleElement]);
29
+ }
30
+ get element() { return this._element; }
31
+ destroy() {
32
+ this._element.remove();
33
+ }
34
+ on(eventName, callback) {
35
+ this._dragListener.on(eventName, callback);
36
+ }
37
+ }
38
+ //# sourceMappingURL=splitter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"splitter.js","sourceRoot":"","sources":["../../../../src/ts/controls/splitter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD,gBAAgB;AAChB,MAAM,OAAO,QAAQ;IAQjB,YAAoB,WAAoB,EAAU,KAAa,EAAE,QAAgB;QAA7D,gBAAW,GAAX,WAAW,CAAS;QAAU,UAAK,GAAL,KAAK,CAAQ;QAC3D,IAAI,CAAC,SAAS,GAAG,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC;QAE/D,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC9C,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,qDAAiC,CAAC;QAC7D,MAAM,iBAAiB,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACxD,iBAAiB,CAAC,SAAS,CAAC,GAAG,0DAAmC,CAAC;QAEnE,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC;QACrD,MAAM,eAAe,GAAG,gBAAgB,GAAG,CAAC,CAAC;QAE7C,IAAI,IAAI,CAAC,WAAW,EAAE;YAClB,iBAAiB,CAAC,KAAK,CAAC,GAAG,GAAG,cAAc,CAAC,CAAC,eAAe,CAAC,CAAC;YAC/D,iBAAiB,CAAC,KAAK,CAAC,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,GAAG,gBAAgB,CAAC,CAAC;YAC/E,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,qDAAiC,CAAC;YAC7D,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC3D;aAAM;YACH,iBAAiB,CAAC,KAAK,CAAC,IAAI,GAAG,cAAc,CAAC,CAAC,eAAe,CAAC,CAAC;YAChE,iBAAiB,CAAC,KAAK,CAAC,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,GAAG,gBAAgB,CAAC,CAAC;YAC9E,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,yDAAmC,CAAC;YAC/D,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC1D;QAED,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;QAE7C,IAAI,CAAC,aAAa,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAC9E,CAAC;IA5BD,IAAI,OAAO,KAAqB,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IA8BvD,OAAO;QACH,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;IAC3B,CAAC;IAED,EAAE,CAA8C,SAAY,EAAE,QAAkC;QAC5F,IAAI,CAAC,aAAa,CAAC,EAAE,CAAI,SAAS,EAAE,QAAQ,CAAC,CAAC;IAClD,CAAC;CACJ"}