@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,410 @@
1
+ import { AssertError, UnexpectedNullError } from '../errors/internal-error';
2
+ import { EventEmitter } from '../utils/event-emitter';
3
+ import { getUniqueId, setElementDisplayVisibility } from '../utils/utils';
4
+ /**
5
+ * This is the baseclass that all content items inherit from.
6
+ * Most methods provide a subset of what the sub-classes do.
7
+ *
8
+ * It also provides a number of functions for tree traversal
9
+ * @public
10
+ */
11
+ export class ContentItem extends EventEmitter {
12
+ /** @internal */
13
+ constructor(layoutManager, config,
14
+ /** @internal */
15
+ _parent,
16
+ /** @internal */
17
+ _element) {
18
+ super();
19
+ this.layoutManager = layoutManager;
20
+ this._parent = _parent;
21
+ this._element = _element;
22
+ /** @internal */
23
+ this._popInParentIds = [];
24
+ this._type = config.type;
25
+ this._id = config.id;
26
+ this._isInitialised = false;
27
+ this.isGround = false;
28
+ this.isRow = false;
29
+ this.isColumn = false;
30
+ this.isStack = false;
31
+ this.isComponent = false;
32
+ this.size = config.size;
33
+ this.sizeUnit = config.sizeUnit;
34
+ this.minSize = config.minSize;
35
+ this.minSizeUnit = config.minSizeUnit;
36
+ this._isClosable = config.isClosable;
37
+ this._pendingEventPropagations = {};
38
+ this._throttledEvents = ['stateChanged'];
39
+ this._contentItems = this.createContentItems(config.content);
40
+ }
41
+ get type() { return this._type; }
42
+ get id() { return this._id; }
43
+ set id(value) { this._id = value; }
44
+ /** @internal */
45
+ get popInParentIds() { return this._popInParentIds; }
46
+ get parent() { return this._parent; }
47
+ get contentItems() { return this._contentItems; }
48
+ get isClosable() { return this._isClosable; }
49
+ get element() { return this._element; }
50
+ get isInitialised() { return this._isInitialised; }
51
+ static isStack(item) {
52
+ return item.isStack;
53
+ }
54
+ static isComponentItem(item) {
55
+ return item.isComponent;
56
+ }
57
+ static isComponentParentableItem(item) {
58
+ return item.isStack || item.isGround;
59
+ }
60
+ /**
61
+ * Removes a child node (and its children) from the tree
62
+ * @param contentItem - The child item to remove
63
+ * @param keepChild - Whether to destroy the removed item
64
+ */
65
+ removeChild(contentItem, keepChild = false) {
66
+ /*
67
+ * Get the position of the item that's to be removed within all content items this node contains
68
+ */
69
+ const index = this._contentItems.indexOf(contentItem);
70
+ /*
71
+ * Make sure the content item to be removed is actually a child of this item
72
+ */
73
+ if (index === -1) {
74
+ throw new Error('Can\'t remove child item. Unknown content item');
75
+ }
76
+ /**
77
+ * Call destroy on the content item.
78
+ * All children are destroyed as well
79
+ */
80
+ if (!keepChild) {
81
+ this._contentItems[index].destroy();
82
+ }
83
+ /**
84
+ * Remove the content item from this nodes array of children
85
+ */
86
+ this._contentItems.splice(index, 1);
87
+ /**
88
+ * If this node still contains other content items, adjust their size
89
+ */
90
+ if (this._contentItems.length > 0) {
91
+ this.updateSize(false);
92
+ }
93
+ else {
94
+ /**
95
+ * If this was the last content item, remove this node as well
96
+ */
97
+ if (!this.isGround && this._isClosable === true) {
98
+ if (this._parent === null) {
99
+ throw new UnexpectedNullError('CIUC00874');
100
+ }
101
+ else {
102
+ this._parent.removeChild(this);
103
+ }
104
+ }
105
+ }
106
+ }
107
+ /**
108
+ * Sets up the tree structure for the newly added child
109
+ * The responsibility for the actual DOM manipulations lies
110
+ * with the concrete item
111
+ *
112
+ * @param contentItem -
113
+ * @param index - If omitted item will be appended
114
+ * @param suspendResize - Used by descendent implementations
115
+ */
116
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
117
+ addChild(contentItem, index, suspendResize) {
118
+ index !== null && index !== void 0 ? index : (index = this._contentItems.length);
119
+ this._contentItems.splice(index, 0, contentItem);
120
+ contentItem.setParent(this);
121
+ if (this._isInitialised === true && contentItem._isInitialised === false) {
122
+ contentItem.init();
123
+ }
124
+ return index;
125
+ }
126
+ /**
127
+ * Replaces oldChild with newChild
128
+ * @param oldChild -
129
+ * @param newChild -
130
+ * @internal
131
+ */
132
+ replaceChild(oldChild, newChild, destroyOldChild = false) {
133
+ // Do not try to replace ComponentItem - will not work
134
+ const index = this._contentItems.indexOf(oldChild);
135
+ const parentNode = oldChild._element.parentNode;
136
+ if (index === -1) {
137
+ throw new AssertError('CIRCI23232', 'Can\'t replace child. oldChild is not child of this');
138
+ }
139
+ if (parentNode === null) {
140
+ throw new UnexpectedNullError('CIRCP23232');
141
+ }
142
+ else {
143
+ parentNode.replaceChild(newChild._element, oldChild._element);
144
+ /*
145
+ * Optionally destroy the old content item
146
+ */
147
+ if (destroyOldChild === true) {
148
+ oldChild._parent = null;
149
+ oldChild.destroy(); // will now also destroy all children of oldChild
150
+ }
151
+ /*
152
+ * Wire the new contentItem into the tree
153
+ */
154
+ this._contentItems[index] = newChild;
155
+ newChild.setParent(this);
156
+ // newChild inherits the sizes from the old child:
157
+ newChild.size = oldChild.size;
158
+ newChild.sizeUnit = oldChild.sizeUnit;
159
+ newChild.minSize = oldChild.minSize;
160
+ newChild.minSizeUnit = oldChild.minSizeUnit;
161
+ //TODO This doesn't update the config... refactor to leave item nodes untouched after creation
162
+ if (newChild._parent === null) {
163
+ throw new UnexpectedNullError('CIRCNC45699');
164
+ }
165
+ else {
166
+ if (newChild._parent._isInitialised === true && newChild._isInitialised === false) {
167
+ newChild.init();
168
+ }
169
+ this.updateSize(false);
170
+ }
171
+ }
172
+ }
173
+ /**
174
+ * Convenience method.
175
+ * Shorthand for this.parent.removeChild( this )
176
+ */
177
+ remove() {
178
+ if (this._parent === null) {
179
+ throw new UnexpectedNullError('CIR11110');
180
+ }
181
+ else {
182
+ this._parent.removeChild(this);
183
+ }
184
+ }
185
+ /**
186
+ * Removes the component from the layout and creates a new
187
+ * browser window with the component and its children inside
188
+ */
189
+ popout() {
190
+ const parentId = getUniqueId();
191
+ const browserPopout = this.layoutManager.createPopoutFromContentItem(this, undefined, parentId, undefined);
192
+ this.emitBaseBubblingEvent('stateChanged');
193
+ return browserPopout;
194
+ }
195
+ /** @internal */
196
+ calculateConfigContent() {
197
+ const contentItems = this._contentItems;
198
+ const count = contentItems.length;
199
+ const result = new Array(count);
200
+ for (let i = 0; i < count; i++) {
201
+ const item = contentItems[i];
202
+ result[i] = item.toConfig();
203
+ }
204
+ return result;
205
+ }
206
+ /** @internal */
207
+ highlightDropZone(x, y, area) {
208
+ const dropTargetIndicator = this.layoutManager.dropTargetIndicator;
209
+ if (dropTargetIndicator === null) {
210
+ throw new UnexpectedNullError('ACIHDZ5593');
211
+ }
212
+ else {
213
+ dropTargetIndicator.highlightArea(area, 1);
214
+ }
215
+ }
216
+ /** @internal */
217
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
218
+ onDrop(contentItem, area) {
219
+ this.addChild(contentItem);
220
+ }
221
+ /** @internal */
222
+ show() {
223
+ this.layoutManager.beginSizeInvalidation();
224
+ try {
225
+ // Not sure why showAllActiveContentItems() was called. GoldenLayout seems to work fine without it. Left commented code
226
+ // in source in case a reason for it becomes apparent.
227
+ // this.layoutManager.showAllActiveContentItems();
228
+ setElementDisplayVisibility(this._element, true);
229
+ // this.layoutManager.updateSizeFromContainer();
230
+ for (let i = 0; i < this._contentItems.length; i++) {
231
+ this._contentItems[i].show();
232
+ }
233
+ }
234
+ finally {
235
+ this.layoutManager.endSizeInvalidation();
236
+ }
237
+ }
238
+ /**
239
+ * Destroys this item ands its children
240
+ * @internal
241
+ */
242
+ destroy() {
243
+ for (let i = 0; i < this._contentItems.length; i++) {
244
+ this._contentItems[i].destroy();
245
+ }
246
+ this._contentItems = [];
247
+ this.emitBaseBubblingEvent('beforeItemDestroyed');
248
+ this._element.remove();
249
+ this.emitBaseBubblingEvent('itemDestroyed');
250
+ }
251
+ /**
252
+ * Returns the area the component currently occupies
253
+ * @internal
254
+ */
255
+ getElementArea(element) {
256
+ element = element !== null && element !== void 0 ? element : this._element;
257
+ const rect = element.getBoundingClientRect();
258
+ const top = rect.top + document.body.scrollTop;
259
+ const left = rect.left + document.body.scrollLeft;
260
+ const width = rect.width;
261
+ const height = rect.height;
262
+ return {
263
+ x1: left,
264
+ y1: top,
265
+ x2: left + width,
266
+ y2: top + height,
267
+ surface: width * height,
268
+ contentItem: this
269
+ };
270
+ }
271
+ /**
272
+ * The tree of content items is created in two steps: First all content items are instantiated,
273
+ * then init is called recursively from top to bottem. This is the basic init function,
274
+ * it can be used, extended or overwritten by the content items
275
+ *
276
+ * Its behaviour depends on the content item
277
+ * @internal
278
+ */
279
+ init() {
280
+ this._isInitialised = true;
281
+ this.emitBaseBubblingEvent('itemCreated');
282
+ this.emitUnknownBubblingEvent(this.type + 'Created');
283
+ }
284
+ /** @internal */
285
+ setParent(parent) {
286
+ this._parent = parent;
287
+ }
288
+ /** @internal */
289
+ addPopInParentId(id) {
290
+ if (!this.popInParentIds.includes(id)) {
291
+ this.popInParentIds.push(id);
292
+ }
293
+ }
294
+ /** @internal */
295
+ initContentItems() {
296
+ for (let i = 0; i < this._contentItems.length; i++) {
297
+ this._contentItems[i].init();
298
+ }
299
+ }
300
+ /** @internal */
301
+ hide() {
302
+ this.layoutManager.beginSizeInvalidation();
303
+ try {
304
+ setElementDisplayVisibility(this._element, false);
305
+ // this.layoutManager.updateSizeFromContainer();
306
+ }
307
+ finally {
308
+ this.layoutManager.endSizeInvalidation();
309
+ }
310
+ }
311
+ /** @internal */
312
+ updateContentItemsSize(force) {
313
+ for (let i = 0; i < this._contentItems.length; i++) {
314
+ this._contentItems[i].updateSize(force);
315
+ }
316
+ }
317
+ /**
318
+ * creates all content items for this node at initialisation time
319
+ * PLEASE NOTE, please see addChild for adding contentItems at runtime
320
+ * @internal
321
+ */
322
+ createContentItems(content) {
323
+ const count = content.length;
324
+ const result = new Array(count);
325
+ for (let i = 0; i < content.length; i++) {
326
+ result[i] = this.layoutManager.createContentItem(content[i], this);
327
+ }
328
+ return result;
329
+ }
330
+ /**
331
+ * Called for every event on the item tree. Decides whether the event is a bubbling
332
+ * event and propagates it to its parent
333
+ *
334
+ * @param name - The name of the event
335
+ * @param event -
336
+ * @internal
337
+ */
338
+ propagateEvent(name, args) {
339
+ if (args.length === 1) {
340
+ const event = args[0];
341
+ if (event instanceof EventEmitter.BubblingEvent &&
342
+ event.isPropagationStopped === false &&
343
+ this._isInitialised === true) {
344
+ /**
345
+ * In some cases (e.g. if an element is created from a DragSource) it
346
+ * doesn't have a parent and is not a child of GroundItem. If that's the case
347
+ * propagate the bubbling event from the top level of the substree directly
348
+ * to the layoutManager
349
+ */
350
+ if (this.isGround === false && this._parent) {
351
+ this._parent.emitUnknown(name, event);
352
+ }
353
+ else {
354
+ this.scheduleEventPropagationToLayoutManager(name, event);
355
+ }
356
+ }
357
+ }
358
+ }
359
+ tryBubbleEvent(name, args) {
360
+ if (args.length === 1) {
361
+ const event = args[0];
362
+ if (event instanceof EventEmitter.BubblingEvent &&
363
+ event.isPropagationStopped === false &&
364
+ this._isInitialised === true) {
365
+ /**
366
+ * In some cases (e.g. if an element is created from a DragSource) it
367
+ * doesn't have a parent and is not a child of GroundItem. If that's the case
368
+ * propagate the bubbling event from the top level of the substree directly
369
+ * to the layoutManager
370
+ */
371
+ if (this.isGround === false && this._parent) {
372
+ this._parent.emitUnknown(name, event);
373
+ }
374
+ else {
375
+ this.scheduleEventPropagationToLayoutManager(name, event);
376
+ }
377
+ }
378
+ }
379
+ }
380
+ /**
381
+ * All raw events bubble up to the Ground element. Some events that
382
+ * are propagated to - and emitted by - the layoutManager however are
383
+ * only string-based, batched and sanitized to make them more usable
384
+ *
385
+ * @param name - The name of the event
386
+ * @internal
387
+ */
388
+ scheduleEventPropagationToLayoutManager(name, event) {
389
+ if (this._throttledEvents.indexOf(name) === -1) {
390
+ this.layoutManager.emitUnknown(name, event);
391
+ }
392
+ else {
393
+ if (this._pendingEventPropagations[name] !== true) {
394
+ this._pendingEventPropagations[name] = true;
395
+ globalThis.requestAnimationFrame(() => this.propagateEventToLayoutManager(name, event));
396
+ }
397
+ }
398
+ }
399
+ /**
400
+ * Callback for events scheduled by _scheduleEventPropagationToLayoutManager
401
+ *
402
+ * @param name - The name of the event
403
+ * @internal
404
+ */
405
+ propagateEventToLayoutManager(name, event) {
406
+ this._pendingEventPropagations[name] = false;
407
+ this.layoutManager.emitUnknown(name, event);
408
+ }
409
+ }
410
+ //# 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":"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"}