@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,414 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ContentItem = void 0;
4
+ const internal_error_1 = require("../errors/internal-error");
5
+ const event_emitter_1 = require("../utils/event-emitter");
6
+ const utils_1 = require("../utils/utils");
7
+ /**
8
+ * This is the baseclass that all content items inherit from.
9
+ * Most methods provide a subset of what the sub-classes do.
10
+ *
11
+ * It also provides a number of functions for tree traversal
12
+ * @public
13
+ */
14
+ class ContentItem extends event_emitter_1.EventEmitter {
15
+ /** @internal */
16
+ constructor(layoutManager, config,
17
+ /** @internal */
18
+ _parent,
19
+ /** @internal */
20
+ _element) {
21
+ super();
22
+ this.layoutManager = layoutManager;
23
+ this._parent = _parent;
24
+ this._element = _element;
25
+ /** @internal */
26
+ this._popInParentIds = [];
27
+ this._type = config.type;
28
+ this._id = config.id;
29
+ this._isInitialised = false;
30
+ this.isGround = false;
31
+ this.isRow = false;
32
+ this.isColumn = false;
33
+ this.isStack = false;
34
+ this.isComponent = false;
35
+ this.size = config.size;
36
+ this.sizeUnit = config.sizeUnit;
37
+ this.minSize = config.minSize;
38
+ this.minSizeUnit = config.minSizeUnit;
39
+ this._isClosable = config.isClosable;
40
+ this._pendingEventPropagations = {};
41
+ this._throttledEvents = ['stateChanged'];
42
+ this._contentItems = this.createContentItems(config.content);
43
+ }
44
+ get type() { return this._type; }
45
+ get id() { return this._id; }
46
+ set id(value) { this._id = value; }
47
+ /** @internal */
48
+ get popInParentIds() { return this._popInParentIds; }
49
+ get parent() { return this._parent; }
50
+ get contentItems() { return this._contentItems; }
51
+ get isClosable() { return this._isClosable; }
52
+ get element() { return this._element; }
53
+ get isInitialised() { return this._isInitialised; }
54
+ static isStack(item) {
55
+ return item.isStack;
56
+ }
57
+ static isComponentItem(item) {
58
+ return item.isComponent;
59
+ }
60
+ static isComponentParentableItem(item) {
61
+ return item.isStack || item.isGround;
62
+ }
63
+ /**
64
+ * Removes a child node (and its children) from the tree
65
+ * @param contentItem - The child item to remove
66
+ * @param keepChild - Whether to destroy the removed item
67
+ */
68
+ removeChild(contentItem, keepChild = false) {
69
+ /*
70
+ * Get the position of the item that's to be removed within all content items this node contains
71
+ */
72
+ const index = this._contentItems.indexOf(contentItem);
73
+ /*
74
+ * Make sure the content item to be removed is actually a child of this item
75
+ */
76
+ if (index === -1) {
77
+ throw new Error('Can\'t remove child item. Unknown content item');
78
+ }
79
+ /**
80
+ * Call destroy on the content item.
81
+ * All children are destroyed as well
82
+ */
83
+ if (!keepChild) {
84
+ this._contentItems[index].destroy();
85
+ }
86
+ /**
87
+ * Remove the content item from this nodes array of children
88
+ */
89
+ this._contentItems.splice(index, 1);
90
+ /**
91
+ * If this node still contains other content items, adjust their size
92
+ */
93
+ if (this._contentItems.length > 0) {
94
+ this.updateSize(false);
95
+ }
96
+ else {
97
+ /**
98
+ * If this was the last content item, remove this node as well
99
+ */
100
+ if (!this.isGround && this._isClosable === true) {
101
+ if (this._parent === null) {
102
+ throw new internal_error_1.UnexpectedNullError('CIUC00874');
103
+ }
104
+ else {
105
+ this._parent.removeChild(this);
106
+ }
107
+ }
108
+ }
109
+ }
110
+ /**
111
+ * Sets up the tree structure for the newly added child
112
+ * The responsibility for the actual DOM manipulations lies
113
+ * with the concrete item
114
+ *
115
+ * @param contentItem -
116
+ * @param index - If omitted item will be appended
117
+ * @param suspendResize - Used by descendent implementations
118
+ */
119
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
120
+ addChild(contentItem, index, suspendResize) {
121
+ index !== null && index !== void 0 ? index : (index = this._contentItems.length);
122
+ this._contentItems.splice(index, 0, contentItem);
123
+ contentItem.setParent(this);
124
+ if (this._isInitialised === true && contentItem._isInitialised === false) {
125
+ contentItem.init();
126
+ }
127
+ return index;
128
+ }
129
+ /**
130
+ * Replaces oldChild with newChild
131
+ * @param oldChild -
132
+ * @param newChild -
133
+ * @internal
134
+ */
135
+ replaceChild(oldChild, newChild, destroyOldChild = false) {
136
+ // Do not try to replace ComponentItem - will not work
137
+ const index = this._contentItems.indexOf(oldChild);
138
+ const parentNode = oldChild._element.parentNode;
139
+ if (index === -1) {
140
+ throw new internal_error_1.AssertError('CIRCI23232', 'Can\'t replace child. oldChild is not child of this');
141
+ }
142
+ if (parentNode === null) {
143
+ throw new internal_error_1.UnexpectedNullError('CIRCP23232');
144
+ }
145
+ else {
146
+ parentNode.replaceChild(newChild._element, oldChild._element);
147
+ /*
148
+ * Optionally destroy the old content item
149
+ */
150
+ if (destroyOldChild === true) {
151
+ oldChild._parent = null;
152
+ oldChild.destroy(); // will now also destroy all children of oldChild
153
+ }
154
+ /*
155
+ * Wire the new contentItem into the tree
156
+ */
157
+ this._contentItems[index] = newChild;
158
+ newChild.setParent(this);
159
+ // newChild inherits the sizes from the old child:
160
+ newChild.size = oldChild.size;
161
+ newChild.sizeUnit = oldChild.sizeUnit;
162
+ newChild.minSize = oldChild.minSize;
163
+ newChild.minSizeUnit = oldChild.minSizeUnit;
164
+ //TODO This doesn't update the config... refactor to leave item nodes untouched after creation
165
+ if (newChild._parent === null) {
166
+ throw new internal_error_1.UnexpectedNullError('CIRCNC45699');
167
+ }
168
+ else {
169
+ if (newChild._parent._isInitialised === true && newChild._isInitialised === false) {
170
+ newChild.init();
171
+ }
172
+ this.updateSize(false);
173
+ }
174
+ }
175
+ }
176
+ /**
177
+ * Convenience method.
178
+ * Shorthand for this.parent.removeChild( this )
179
+ */
180
+ remove() {
181
+ if (this._parent === null) {
182
+ throw new internal_error_1.UnexpectedNullError('CIR11110');
183
+ }
184
+ else {
185
+ this._parent.removeChild(this);
186
+ }
187
+ }
188
+ /**
189
+ * Removes the component from the layout and creates a new
190
+ * browser window with the component and its children inside
191
+ */
192
+ popout() {
193
+ const parentId = (0, utils_1.getUniqueId)();
194
+ const browserPopout = this.layoutManager.createPopoutFromContentItem(this, undefined, parentId, undefined);
195
+ this.emitBaseBubblingEvent('stateChanged');
196
+ return browserPopout;
197
+ }
198
+ /** @internal */
199
+ calculateConfigContent() {
200
+ const contentItems = this._contentItems;
201
+ const count = contentItems.length;
202
+ const result = new Array(count);
203
+ for (let i = 0; i < count; i++) {
204
+ const item = contentItems[i];
205
+ result[i] = item.toConfig();
206
+ }
207
+ return result;
208
+ }
209
+ /** @internal */
210
+ highlightDropZone(x, y, area) {
211
+ const dropTargetIndicator = this.layoutManager.dropTargetIndicator;
212
+ if (dropTargetIndicator === null) {
213
+ throw new internal_error_1.UnexpectedNullError('ACIHDZ5593');
214
+ }
215
+ else {
216
+ dropTargetIndicator.highlightArea(area, 1);
217
+ }
218
+ }
219
+ /** @internal */
220
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
221
+ onDrop(contentItem, area) {
222
+ this.addChild(contentItem);
223
+ }
224
+ /** @internal */
225
+ show() {
226
+ this.layoutManager.beginSizeInvalidation();
227
+ try {
228
+ // Not sure why showAllActiveContentItems() was called. GoldenLayout seems to work fine without it. Left commented code
229
+ // in source in case a reason for it becomes apparent.
230
+ // this.layoutManager.showAllActiveContentItems();
231
+ (0, utils_1.setElementDisplayVisibility)(this._element, true);
232
+ // this.layoutManager.updateSizeFromContainer();
233
+ for (let i = 0; i < this._contentItems.length; i++) {
234
+ this._contentItems[i].show();
235
+ }
236
+ }
237
+ finally {
238
+ this.layoutManager.endSizeInvalidation();
239
+ }
240
+ }
241
+ /**
242
+ * Destroys this item ands its children
243
+ * @internal
244
+ */
245
+ destroy() {
246
+ for (let i = 0; i < this._contentItems.length; i++) {
247
+ this._contentItems[i].destroy();
248
+ }
249
+ this._contentItems = [];
250
+ this.emitBaseBubblingEvent('beforeItemDestroyed');
251
+ this._element.remove();
252
+ this.emitBaseBubblingEvent('itemDestroyed');
253
+ }
254
+ /**
255
+ * Returns the area the component currently occupies
256
+ * @internal
257
+ */
258
+ getElementArea(element) {
259
+ element = element !== null && element !== void 0 ? element : this._element;
260
+ const rect = element.getBoundingClientRect();
261
+ const top = rect.top + document.body.scrollTop;
262
+ const left = rect.left + document.body.scrollLeft;
263
+ const width = rect.width;
264
+ const height = rect.height;
265
+ return {
266
+ x1: left,
267
+ y1: top,
268
+ x2: left + width,
269
+ y2: top + height,
270
+ surface: width * height,
271
+ contentItem: this
272
+ };
273
+ }
274
+ /**
275
+ * The tree of content items is created in two steps: First all content items are instantiated,
276
+ * then init is called recursively from top to bottem. This is the basic init function,
277
+ * it can be used, extended or overwritten by the content items
278
+ *
279
+ * Its behaviour depends on the content item
280
+ * @internal
281
+ */
282
+ init() {
283
+ this._isInitialised = true;
284
+ this.emitBaseBubblingEvent('itemCreated');
285
+ this.emitUnknownBubblingEvent(this.type + 'Created');
286
+ }
287
+ /** @internal */
288
+ setParent(parent) {
289
+ this._parent = parent;
290
+ }
291
+ /** @internal */
292
+ addPopInParentId(id) {
293
+ if (!this.popInParentIds.includes(id)) {
294
+ this.popInParentIds.push(id);
295
+ }
296
+ }
297
+ /** @internal */
298
+ initContentItems() {
299
+ for (let i = 0; i < this._contentItems.length; i++) {
300
+ this._contentItems[i].init();
301
+ }
302
+ }
303
+ /** @internal */
304
+ hide() {
305
+ this.layoutManager.beginSizeInvalidation();
306
+ try {
307
+ (0, utils_1.setElementDisplayVisibility)(this._element, false);
308
+ // this.layoutManager.updateSizeFromContainer();
309
+ }
310
+ finally {
311
+ this.layoutManager.endSizeInvalidation();
312
+ }
313
+ }
314
+ /** @internal */
315
+ updateContentItemsSize(force) {
316
+ for (let i = 0; i < this._contentItems.length; i++) {
317
+ this._contentItems[i].updateSize(force);
318
+ }
319
+ }
320
+ /**
321
+ * creates all content items for this node at initialisation time
322
+ * PLEASE NOTE, please see addChild for adding contentItems at runtime
323
+ * @internal
324
+ */
325
+ createContentItems(content) {
326
+ const count = content.length;
327
+ const result = new Array(count);
328
+ for (let i = 0; i < content.length; i++) {
329
+ result[i] = this.layoutManager.createContentItem(content[i], this);
330
+ }
331
+ return result;
332
+ }
333
+ /**
334
+ * Called for every event on the item tree. Decides whether the event is a bubbling
335
+ * event and propagates it to its parent
336
+ *
337
+ * @param name - The name of the event
338
+ * @param event -
339
+ * @internal
340
+ */
341
+ propagateEvent(name, args) {
342
+ if (args.length === 1) {
343
+ const event = args[0];
344
+ if (event instanceof event_emitter_1.EventEmitter.BubblingEvent &&
345
+ event.isPropagationStopped === false &&
346
+ this._isInitialised === true) {
347
+ /**
348
+ * In some cases (e.g. if an element is created from a DragSource) it
349
+ * doesn't have a parent and is not a child of GroundItem. If that's the case
350
+ * propagate the bubbling event from the top level of the substree directly
351
+ * to the layoutManager
352
+ */
353
+ if (this.isGround === false && this._parent) {
354
+ this._parent.emitUnknown(name, event);
355
+ }
356
+ else {
357
+ this.scheduleEventPropagationToLayoutManager(name, event);
358
+ }
359
+ }
360
+ }
361
+ }
362
+ tryBubbleEvent(name, args) {
363
+ if (args.length === 1) {
364
+ const event = args[0];
365
+ if (event instanceof event_emitter_1.EventEmitter.BubblingEvent &&
366
+ event.isPropagationStopped === false &&
367
+ this._isInitialised === true) {
368
+ /**
369
+ * In some cases (e.g. if an element is created from a DragSource) it
370
+ * doesn't have a parent and is not a child of GroundItem. If that's the case
371
+ * propagate the bubbling event from the top level of the substree directly
372
+ * to the layoutManager
373
+ */
374
+ if (this.isGround === false && this._parent) {
375
+ this._parent.emitUnknown(name, event);
376
+ }
377
+ else {
378
+ this.scheduleEventPropagationToLayoutManager(name, event);
379
+ }
380
+ }
381
+ }
382
+ }
383
+ /**
384
+ * All raw events bubble up to the Ground element. Some events that
385
+ * are propagated to - and emitted by - the layoutManager however are
386
+ * only string-based, batched and sanitized to make them more usable
387
+ *
388
+ * @param name - The name of the event
389
+ * @internal
390
+ */
391
+ scheduleEventPropagationToLayoutManager(name, event) {
392
+ if (this._throttledEvents.indexOf(name) === -1) {
393
+ this.layoutManager.emitUnknown(name, event);
394
+ }
395
+ else {
396
+ if (this._pendingEventPropagations[name] !== true) {
397
+ this._pendingEventPropagations[name] = true;
398
+ globalThis.requestAnimationFrame(() => this.propagateEventToLayoutManager(name, event));
399
+ }
400
+ }
401
+ }
402
+ /**
403
+ * Callback for events scheduled by _scheduleEventPropagationToLayoutManager
404
+ *
405
+ * @param name - The name of the event
406
+ * @internal
407
+ */
408
+ propagateEventToLayoutManager(name, event) {
409
+ this._pendingEventPropagations[name] = false;
410
+ this.layoutManager.emitUnknown(name, event);
411
+ }
412
+ }
413
+ exports.ContentItem = ContentItem;
414
+ //# sourceMappingURL=content-item.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content-item.js","sourceRoot":"","sources":["../../../../src/ts/items/content-item.ts"],"names":[],"mappings":";;;AAEA,6DAA2E;AAE3E,0DAAqD;AAErD,0CAAyE;AAKzE;;;;;;GAMG;AAEH,MAAsB,WAAY,SAAQ,4BAAY;IAwDlD,gBAAgB;IAChB,YAA4B,aAA4B,EACpD,MAA0B;IAC1B,gBAAgB;IACR,OAA2B;IACnC,gBAAgB;IACC,QAAqB;QAEtC,KAAK,EAAE,CAAC;QAPgB,kBAAa,GAAb,aAAa,CAAe;QAG5C,YAAO,GAAP,OAAO,CAAoB;QAElB,aAAQ,GAAR,QAAQ,CAAa;QAzD1C,gBAAgB;QACR,oBAAe,GAAa,EAAE,CAAC;QA4DnC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,EAAE,CAAC;QAErB,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QAEzB,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACxB,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAChC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAC9B,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;QAEtC,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;QAErC,IAAI,CAAC,yBAAyB,GAAG,EAAE,CAAC;QACpC,IAAI,CAAC,gBAAgB,GAAG,CAAC,cAAc,CAAC,CAAC;QAEzC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACjE,CAAC;IAtDD,IAAI,IAAI,KAAe,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3C,IAAI,EAAE,KAAa,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACrC,IAAI,EAAE,CAAC,KAAa,IAAI,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC;IAC3C,gBAAgB;IAChB,IAAI,cAAc,KAAe,OAAO,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;IAC/D,IAAI,MAAM,KAAyB,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IACzD,IAAI,YAAY,KAAoB,OAAO,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;IAChE,IAAI,UAAU,KAAc,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IACtD,IAAI,OAAO,KAAkB,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IACpD,IAAI,aAAa,KAAc,OAAO,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;IAE5D,MAAM,CAAC,OAAO,CAAC,IAAiB;QAC5B,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IAED,MAAM,CAAC,eAAe,CAAC,IAAiB;QACpC,OAAO,IAAI,CAAC,WAAW,CAAC;IAC5B,CAAC;IAED,MAAM,CAAC,yBAAyB,CAAC,IAAiB;QAC9C,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC;IACzC,CAAC;IA6CD;;;;OAIG;IACH,WAAW,CAAC,WAAwB,EAAE,SAAS,GAAG,KAAK;QACnD;;WAEG;QACH,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAEtD;;WAEG;QACH,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;YACd,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;SACrE;QAED;;;WAGH;QACG,IAAI,CAAC,SAAS,EAAE;YACrB,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;SAC9B;QAED;;WAEG;QACH,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAEpC;;WAEG;QACH,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;YAC/B,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;SAC1B;aAAM;YACH;;eAEG;YACH,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,EAAE;gBAC7C,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,EAAE;oBACvB,MAAM,IAAI,oCAAmB,CAAC,WAAW,CAAC,CAAC;iBAC9C;qBAAM;oBACH,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;iBAClC;aACJ;SACJ;IACL,CAAC;IAED;;;;;;;;OAQG;IACH,6DAA6D;IAC7D,QAAQ,CAAC,WAAwB,EAAE,KAAqB,EAAE,aAAuB;QAC7E,KAAK,aAAL,KAAK,cAAL,KAAK,IAAL,KAAK,GAAK,IAAI,CAAC,aAAa,CAAC,MAAM,EAAC;QAEpC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC;QACjD,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAE5B,IAAI,IAAI,CAAC,cAAc,KAAK,IAAI,IAAI,WAAW,CAAC,cAAc,KAAK,KAAK,EAAE;YACtE,WAAW,CAAC,IAAI,EAAE,CAAC;SACtB;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;IAED;;;;;OAKG;IACH,YAAY,CAAC,QAAqB,EAAE,QAAqB,EAAE,eAAe,GAAG,KAAK;QAC9E,sDAAsD;QACtD,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACnD,MAAM,UAAU,GAAG,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC;QAEhD,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;YACd,MAAM,IAAI,4BAAW,CAAC,YAAY,EAAE,qDAAqD,CAAC,CAAC;SAC9F;QAED,IAAI,UAAU,KAAK,IAAI,EAAE;YACrB,MAAM,IAAI,oCAAmB,CAAC,YAAY,CAAC,CAAC;SAC/C;aAAM;YACH,UAAU,CAAC,YAAY,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAE9D;;cAEE;YACF,IAAI,eAAe,KAAK,IAAI,EAAE;gBAC1B,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC;gBACxB,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,iDAAiD;aACxE;YAED;;cAEE;YACF,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC;YACrC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACzB,kDAAkD;YAClD,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;YAC9B,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;YACtC,QAAQ,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;YACpC,QAAQ,CAAC,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC;YAE5C,8FAA8F;YAC9F,IAAI,QAAQ,CAAC,OAAO,KAAK,IAAI,EAAE;gBAC3B,MAAM,IAAI,oCAAmB,CAAC,aAAa,CAAC,CAAC;aAChD;iBAAM;gBACH,IAAI,QAAQ,CAAC,OAAO,CAAC,cAAc,KAAK,IAAI,IAAI,QAAQ,CAAC,cAAc,KAAK,KAAK,EAAE;oBAC/E,QAAQ,CAAC,IAAI,EAAE,CAAC;iBACnB;gBAED,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;aAC1B;SACJ;IACL,CAAC;IAED;;;OAGG;IACH,MAAM;QACF,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,EAAE;YACvB,MAAM,IAAI,oCAAmB,CAAC,UAAU,CAAC,CAAC;SAC7C;aAAM;YACH,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;SAClC;IACL,CAAC;IAED;;;OAGG;IACH,MAAM;QACF,MAAM,QAAQ,GAAG,IAAA,mBAAW,GAAE,CAAC;QAC/B,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,2BAA2B,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;QAC3G,IAAI,CAAC,qBAAqB,CAAC,cAAc,CAAC,CAAC;QAC3C,OAAO,aAAa,CAAC;IACzB,CAAC;IAID,gBAAgB;IAChB,sBAAsB;QAClB,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC;QACxC,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC;QAClC,MAAM,MAAM,GAAG,IAAI,KAAK,CAAqB,KAAK,CAAC,CAAC;QACpD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;YAC5B,MAAM,IAAI,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;YAC7B,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;SAC/B;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,gBAAgB;IAChB,iBAAiB,CAAC,CAAS,EAAE,CAAS,EAAE,IAAoB;QACxD,MAAM,mBAAmB,GAAG,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC;QACnE,IAAI,mBAAmB,KAAK,IAAI,EAAE;YAC9B,MAAM,IAAI,oCAAmB,CAAC,YAAY,CAAC,CAAC;SAC/C;aAAM;YACH,mBAAmB,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;SAC9C;IACL,CAAC;IAED,gBAAgB;IAChB,6DAA6D;IAC7D,MAAM,CAAC,WAAwB,EAAE,IAAsB;QACnD,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC/B,CAAC;IAED,gBAAgB;IAChB,IAAI;QACA,IAAI,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC;QAC3C,IAAI;YACA,wHAAwH;YACxH,sDAAsD;YACtD,kDAAkD;YAClD,IAAA,mCAA2B,EAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YACjD,gDAAgD;YAEhD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAChD,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;aAChC;SACJ;gBAAS;YACN,IAAI,CAAC,aAAa,CAAC,mBAAmB,EAAE,CAAC;SAC5C;IACL,CAAC;IAED;;;OAGG;IACH,OAAO;QACH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAChD,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;SACnC;QACD,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;QAExB,IAAI,CAAC,qBAAqB,CAAC,qBAAqB,CAAC,CAAC;QAClD,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QACvB,IAAI,CAAC,qBAAqB,CAAC,eAAe,CAAC,CAAC;IAChD,CAAC;IAED;;;OAGG;IACH,cAAc,CAAC,OAAqB;QAChC,OAAO,GAAG,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,IAAI,CAAC,QAAQ,CAAC;QAEnC,MAAM,IAAI,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;QAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC;QAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC;QAElD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAE3B,OAAO;YACH,EAAE,EAAE,IAAI;YACR,EAAE,EAAE,GAAG;YACP,EAAE,EAAE,IAAI,GAAG,KAAK;YAChB,EAAE,EAAE,GAAG,GAAG,MAAM;YAChB,OAAO,EAAE,KAAK,GAAG,MAAM;YACvB,WAAW,EAAE,IAAI;SACpB,CAAC;IACN,CAAC;IAED;;;;;;;OAOG;IACH,IAAI;QACA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,qBAAqB,CAAC,aAAa,CAAC,CAAC;QAC1C,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,CAAC;IACzD,CAAC;IAED,gBAAgB;IACN,SAAS,CAAC,MAAmB;QACnC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IAC1B,CAAC;IAED,gBAAgB;IAChB,gBAAgB,CAAC,EAAU;QACvB,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;YACnC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SAChC;IACL,CAAC;IAED,gBAAgB;IACN,gBAAgB;QACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAChD,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SAChC;IACL,CAAC;IAED,gBAAgB;IACN,IAAI;QACV,IAAI,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC;QAC3C,IAAI;YACA,IAAA,mCAA2B,EAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YAClD,gDAAgD;SACnD;gBAAS;YACN,IAAI,CAAC,aAAa,CAAC,mBAAmB,EAAE,CAAC;SAC5C;IACL,CAAC;IAED,gBAAgB;IACN,sBAAsB,CAAC,KAAc;QAC3C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAChD,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;SAC3C;IACL,CAAC;IAED;;;;OAIG;IACK,kBAAkB,CAAC,OAAsC;QAC7D,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,MAAM,MAAM,GAAG,IAAI,KAAK,CAAc,KAAK,CAAC,CAAC;QAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACrC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;SACtE;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IAED;;;;;;;OAOG;IACK,cAAc,CAAC,IAAY,EAAE,IAAe;QAChD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;YACnB,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACtB,IAAI,KAAK,YAAY,4BAAY,CAAC,aAAa;gBAC3C,KAAK,CAAC,oBAAoB,KAAK,KAAK;gBACpC,IAAI,CAAC,cAAc,KAAK,IAAI,EAAE;gBAE9B;;;;;mBAKG;gBACH,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE;oBACzC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;iBACzC;qBAAM;oBACH,IAAI,CAAC,uCAAuC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;iBAC7D;aACJ;SACJ;IACL,CAAC;IAEQ,cAAc,CAAC,IAAY,EAAE,IAAe;QACjD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;YACnB,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACtB,IAAI,KAAK,YAAY,4BAAY,CAAC,aAAa;gBAC3C,KAAK,CAAC,oBAAoB,KAAK,KAAK;gBACpC,IAAI,CAAC,cAAc,KAAK,IAAI,EAC9B;gBACE;;;;;mBAKG;gBACH,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE;oBACzC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;iBACzC;qBAAM;oBACH,IAAI,CAAC,uCAAuC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;iBAC7D;aACJ;SACJ;IACL,CAAC;IAED;;;;;;;OAOG;IACK,uCAAuC,CAAC,IAAY,EAAE,KAAiC;QAC3F,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;YAC5C,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;SAC/C;aAAM;YACH,IAAI,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;gBAC/C,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;gBAC5C,UAAU,CAAC,qBAAqB,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,6BAA6B,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;aAC3F;SACJ;IAEL,CAAC;IAED;;;;;OAKG;IACK,6BAA6B,CAAC,IAAY,EAAE,KAAiC;QACjF,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;QAC7C,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAChD,CAAC;CACJ;AAjeD,kCAieC"}