@deephaven/golden-layout 0.43.0 → 0.44.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 (79) hide show
  1. package/css/goldenlayout-base.css +1 -1
  2. package/css/goldenlayout-base.css.map +1 -1
  3. package/css/goldenlayout-dark-theme.css +1 -1
  4. package/css/goldenlayout-dark-theme.css.map +1 -1
  5. package/dist/GoldenLayout.module.css +1 -0
  6. package/dist/GoldenLayout.module.css.map +1 -0
  7. package/dist/GoldenLayoutThemeExport.js +6 -0
  8. package/dist/GoldenLayoutThemeExport.js.map +1 -0
  9. package/dist/LayoutManager.js +1001 -0
  10. package/dist/LayoutManager.js.map +1 -0
  11. package/dist/base.js +16 -0
  12. package/dist/base.js.map +1 -0
  13. package/dist/config/Config.js +42 -0
  14. package/dist/config/Config.js.map +1 -0
  15. package/dist/config/ItemConfig.js +14 -0
  16. package/dist/config/ItemConfig.js.map +1 -0
  17. package/dist/config/index.js +3 -0
  18. package/dist/config/index.js.map +1 -0
  19. package/dist/container/ItemContainer.js +199 -0
  20. package/dist/container/ItemContainer.js.map +1 -0
  21. package/dist/container/index.js +3 -0
  22. package/dist/container/index.js.map +1 -0
  23. package/dist/controls/BrowserPopout.js +250 -0
  24. package/dist/controls/BrowserPopout.js.map +1 -0
  25. package/dist/controls/DragProxy.js +204 -0
  26. package/dist/controls/DragProxy.js.map +1 -0
  27. package/dist/controls/DragSource.js +52 -0
  28. package/dist/controls/DragSource.js.map +1 -0
  29. package/dist/controls/DragSourceFromEvent.js +71 -0
  30. package/dist/controls/DragSourceFromEvent.js.map +1 -0
  31. package/dist/controls/DropTargetIndicator.js +27 -0
  32. package/dist/controls/DropTargetIndicator.js.map +1 -0
  33. package/dist/controls/Header.js +736 -0
  34. package/dist/controls/Header.js.map +1 -0
  35. package/dist/controls/HeaderButton.js +22 -0
  36. package/dist/controls/HeaderButton.js.map +1 -0
  37. package/dist/controls/Splitter.js +49 -0
  38. package/dist/controls/Splitter.js.map +1 -0
  39. package/dist/controls/Tab.js +225 -0
  40. package/dist/controls/Tab.js.map +1 -0
  41. package/dist/controls/index.js +10 -0
  42. package/dist/controls/index.js.map +1 -0
  43. package/dist/declaration.d.js +2 -0
  44. package/dist/declaration.d.js.map +1 -0
  45. package/dist/errors/ConfigurationError.js +14 -0
  46. package/dist/errors/ConfigurationError.js.map +1 -0
  47. package/dist/errors/index.js +2 -0
  48. package/dist/errors/index.js.map +1 -0
  49. package/dist/index.js +11 -0
  50. package/dist/index.js.map +1 -0
  51. package/dist/items/AbstractContentItem.js +565 -0
  52. package/dist/items/AbstractContentItem.js.map +1 -0
  53. package/dist/items/Component.js +80 -0
  54. package/dist/items/Component.js.map +1 -0
  55. package/dist/items/Root.js +100 -0
  56. package/dist/items/Root.js.map +1 -0
  57. package/dist/items/RowOrColumn.js +488 -0
  58. package/dist/items/RowOrColumn.js.map +1 -0
  59. package/dist/items/Stack.js +479 -0
  60. package/dist/items/Stack.js.map +1 -0
  61. package/dist/items/index.js +8 -0
  62. package/dist/items/index.js.map +1 -0
  63. package/dist/utils/BubblingEvent.js +17 -0
  64. package/dist/utils/BubblingEvent.js.map +1 -0
  65. package/dist/utils/ConfigMinifier.js +147 -0
  66. package/dist/utils/ConfigMinifier.js.map +1 -0
  67. package/dist/utils/DragListener.js +125 -0
  68. package/dist/utils/DragListener.js.map +1 -0
  69. package/dist/utils/EventEmitter.js +117 -0
  70. package/dist/utils/EventEmitter.js.map +1 -0
  71. package/dist/utils/EventHub.js +108 -0
  72. package/dist/utils/EventHub.js.map +1 -0
  73. package/dist/utils/ReactComponentHandler.js +136 -0
  74. package/dist/utils/ReactComponentHandler.js.map +1 -0
  75. package/dist/utils/index.js +8 -0
  76. package/dist/utils/index.js.map +1 -0
  77. package/dist/utils/utils.js +65 -0
  78. package/dist/utils/utils.js.map +1 -0
  79. package/package.json +3 -3
@@ -0,0 +1,80 @@
1
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
3
+ function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
4
+ import $ from 'jquery';
5
+ import AbstractContentItem from "./AbstractContentItem.js";
6
+ import { ConfigurationError } from "../errors/index.js";
7
+ import ItemContainer from "../container/ItemContainer.js";
8
+ /**
9
+ * @param layoutManager
10
+ * @param config
11
+ * @param parent
12
+ */
13
+ export default class Component extends AbstractContentItem {
14
+ constructor(layoutManager, config, parent) {
15
+ super(layoutManager, config, parent, $());
16
+ _defineProperty(this, "config", void 0);
17
+ _defineProperty(this, "componentName", void 0);
18
+ _defineProperty(this, "container", void 0);
19
+ _defineProperty(this, "parent", void 0);
20
+ _defineProperty(this, "instance", void 0);
21
+ this.config = config;
22
+ this.parent = parent;
23
+ var ComponentConstructor = layoutManager.getComponent(this.config.componentName) || layoutManager.getFallbackComponent(),
24
+ componentConfig = $.extend(true, {}, this.config.componentState || {});
25
+ if (ComponentConstructor == null) {
26
+ throw new ConfigurationError('Unknown component "' + this.config.componentName + '"');
27
+ }
28
+ componentConfig.componentName = this.config.componentName;
29
+ this.componentName = this.config.componentName;
30
+ if (this.config.title === '') {
31
+ this.config.title = this.config.componentName;
32
+ }
33
+ this.isComponent = true;
34
+ this.container = new ItemContainer(this.config, this, layoutManager);
35
+ this.instance = new ComponentConstructor(this.container, componentConfig);
36
+ this.element = this.container._element;
37
+ }
38
+ close() {
39
+ this.parent.removeChild(this);
40
+ }
41
+ setSize() {
42
+ if (this.element.is(':visible')) {
43
+ // Do not update size of hidden components to prevent unwanted reflows
44
+ this.container._$setSize(this.element.width(), this.element.height());
45
+ }
46
+ }
47
+ _$init() {
48
+ AbstractContentItem.prototype._$init.call(this);
49
+ this.container.emit('open');
50
+ }
51
+ _$hide() {
52
+ this.container.hide();
53
+ AbstractContentItem.prototype._$hide.call(this);
54
+ }
55
+ _$show() {
56
+ this.container.show();
57
+ if (this.container._config.isFocusOnShow) {
58
+ // focus the shown container element on show
59
+ // preventScroll isn't supported in safari, but also doesn't matter for illumon when 100% window
60
+ this.container._contentElement[0].focus({
61
+ preventScroll: true
62
+ });
63
+ }
64
+ AbstractContentItem.prototype._$show.call(this);
65
+ }
66
+ _$destroy() {
67
+ this.container.emit('destroy', this);
68
+ AbstractContentItem.prototype._$destroy.call(this);
69
+ }
70
+
71
+ /**
72
+ * Dragging onto a component directly is not an option
73
+ *
74
+ * @returns null
75
+ */
76
+ _$getArea() {
77
+ return null;
78
+ }
79
+ }
80
+ //# sourceMappingURL=Component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Component.js","names":["$","AbstractContentItem","ConfigurationError","ItemContainer","Component","constructor","layoutManager","config","parent","ComponentConstructor","getComponent","componentName","getFallbackComponent","componentConfig","extend","componentState","title","isComponent","container","instance","element","_element","close","removeChild","setSize","is","_$setSize","width","height","_$init","prototype","call","emit","_$hide","hide","_$show","show","_config","isFocusOnShow","_contentElement","focus","preventScroll","_$destroy","_$getArea"],"sources":["../../src/items/Component.ts"],"sourcesContent":["import $ from 'jquery';\nimport AbstractContentItem from './AbstractContentItem';\nimport { ConfigurationError } from '../errors';\nimport type LayoutManager from '../LayoutManager';\nimport type { ComponentConfig } from '../config/ItemConfig';\nimport ItemContainer from '../container/ItemContainer';\nimport type { ComponentConstructor } from '../LayoutManager';\n\n/**\n * @param layoutManager\n * @param config\n * @param parent\n */\nexport default class Component extends AbstractContentItem {\n config: ComponentConfig;\n\n componentName: string;\n\n container: ItemContainer;\n\n parent: AbstractContentItem;\n\n instance: unknown;\n\n constructor(\n layoutManager: LayoutManager,\n config: ComponentConfig,\n parent: AbstractContentItem\n ) {\n super(layoutManager, config, parent, $());\n this.config = config;\n this.parent = parent;\n\n const ComponentConstructor =\n (layoutManager.getComponent(\n this.config.componentName\n ) as ComponentConstructor) || layoutManager.getFallbackComponent(),\n componentConfig = $.extend(true, {}, this.config.componentState || {});\n\n if (ComponentConstructor == null) {\n throw new ConfigurationError(\n 'Unknown component \"' + this.config.componentName + '\"'\n );\n }\n componentConfig.componentName = this.config.componentName;\n this.componentName = this.config.componentName;\n\n if (this.config.title === '') {\n this.config.title = this.config.componentName;\n }\n\n this.isComponent = true;\n this.container = new ItemContainer(this.config, this, layoutManager);\n this.instance = new ComponentConstructor(this.container, componentConfig);\n this.element = this.container._element;\n }\n\n close() {\n this.parent.removeChild(this);\n }\n\n setSize() {\n if (this.element.is(':visible')) {\n // Do not update size of hidden components to prevent unwanted reflows\n this.container._$setSize(this.element.width(), this.element.height());\n }\n }\n\n _$init() {\n AbstractContentItem.prototype._$init.call(this);\n this.container.emit('open');\n }\n\n _$hide() {\n this.container.hide();\n AbstractContentItem.prototype._$hide.call(this);\n }\n\n _$show() {\n this.container.show();\n if (this.container._config.isFocusOnShow) {\n // focus the shown container element on show\n // preventScroll isn't supported in safari, but also doesn't matter for illumon when 100% window\n this.container._contentElement[0].focus({ preventScroll: true });\n }\n AbstractContentItem.prototype._$show.call(this);\n }\n\n _$destroy() {\n this.container.emit('destroy', this);\n AbstractContentItem.prototype._$destroy.call(this);\n }\n\n /**\n * Dragging onto a component directly is not an option\n *\n * @returns null\n */\n _$getArea() {\n return null;\n }\n}\n"],"mappings":";;;AAAA,OAAOA,CAAC,MAAM,QAAQ;AAAC,OAChBC,mBAAmB;AAAA,SACjBC,kBAAkB;AAAA,OAGpBC,aAAa;AAGpB;AACA;AACA;AACA;AACA;AACA,eAAe,MAAMC,SAAS,SAASH,mBAAmB,CAAC;EAWzDI,WAAW,CACTC,aAA4B,EAC5BC,MAAuB,EACvBC,MAA2B,EAC3B;IACA,KAAK,CAACF,aAAa,EAAEC,MAAM,EAAEC,MAAM,EAAER,CAAC,EAAE,CAAC;IAAC;IAAA;IAAA;IAAA;IAAA;IAC1C,IAAI,CAACO,MAAM,GAAGA,MAAM;IACpB,IAAI,CAACC,MAAM,GAAGA,MAAM;IAEpB,IAAMC,oBAAoB,GACrBH,aAAa,CAACI,YAAY,CACzB,IAAI,CAACH,MAAM,CAACI,aAAa,CAC1B,IAA6BL,aAAa,CAACM,oBAAoB,EAAE;MACpEC,eAAe,GAAGb,CAAC,CAACc,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,CAACP,MAAM,CAACQ,cAAc,IAAI,CAAC,CAAC,CAAC;IAExE,IAAIN,oBAAoB,IAAI,IAAI,EAAE;MAChC,MAAM,IAAIP,kBAAkB,CAC1B,qBAAqB,GAAG,IAAI,CAACK,MAAM,CAACI,aAAa,GAAG,GAAG,CACxD;IACH;IACAE,eAAe,CAACF,aAAa,GAAG,IAAI,CAACJ,MAAM,CAACI,aAAa;IACzD,IAAI,CAACA,aAAa,GAAG,IAAI,CAACJ,MAAM,CAACI,aAAa;IAE9C,IAAI,IAAI,CAACJ,MAAM,CAACS,KAAK,KAAK,EAAE,EAAE;MAC5B,IAAI,CAACT,MAAM,CAACS,KAAK,GAAG,IAAI,CAACT,MAAM,CAACI,aAAa;IAC/C;IAEA,IAAI,CAACM,WAAW,GAAG,IAAI;IACvB,IAAI,CAACC,SAAS,GAAG,IAAIf,aAAa,CAAC,IAAI,CAACI,MAAM,EAAE,IAAI,EAAED,aAAa,CAAC;IACpE,IAAI,CAACa,QAAQ,GAAG,IAAIV,oBAAoB,CAAC,IAAI,CAACS,SAAS,EAAEL,eAAe,CAAC;IACzE,IAAI,CAACO,OAAO,GAAG,IAAI,CAACF,SAAS,CAACG,QAAQ;EACxC;EAEAC,KAAK,GAAG;IACN,IAAI,CAACd,MAAM,CAACe,WAAW,CAAC,IAAI,CAAC;EAC/B;EAEAC,OAAO,GAAG;IACR,IAAI,IAAI,CAACJ,OAAO,CAACK,EAAE,CAAC,UAAU,CAAC,EAAE;MAC/B;MACA,IAAI,CAACP,SAAS,CAACQ,SAAS,CAAC,IAAI,CAACN,OAAO,CAACO,KAAK,EAAE,EAAE,IAAI,CAACP,OAAO,CAACQ,MAAM,EAAE,CAAC;IACvE;EACF;EAEAC,MAAM,GAAG;IACP5B,mBAAmB,CAAC6B,SAAS,CAACD,MAAM,CAACE,IAAI,CAAC,IAAI,CAAC;IAC/C,IAAI,CAACb,SAAS,CAACc,IAAI,CAAC,MAAM,CAAC;EAC7B;EAEAC,MAAM,GAAG;IACP,IAAI,CAACf,SAAS,CAACgB,IAAI,EAAE;IACrBjC,mBAAmB,CAAC6B,SAAS,CAACG,MAAM,CAACF,IAAI,CAAC,IAAI,CAAC;EACjD;EAEAI,MAAM,GAAG;IACP,IAAI,CAACjB,SAAS,CAACkB,IAAI,EAAE;IACrB,IAAI,IAAI,CAAClB,SAAS,CAACmB,OAAO,CAACC,aAAa,EAAE;MACxC;MACA;MACA,IAAI,CAACpB,SAAS,CAACqB,eAAe,CAAC,CAAC,CAAC,CAACC,KAAK,CAAC;QAAEC,aAAa,EAAE;MAAK,CAAC,CAAC;IAClE;IACAxC,mBAAmB,CAAC6B,SAAS,CAACK,MAAM,CAACJ,IAAI,CAAC,IAAI,CAAC;EACjD;EAEAW,SAAS,GAAG;IACV,IAAI,CAACxB,SAAS,CAACc,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC;IACpC/B,mBAAmB,CAAC6B,SAAS,CAACY,SAAS,CAACX,IAAI,CAAC,IAAI,CAAC;EACpD;;EAEA;AACF;AACA;AACA;AACA;EACEY,SAAS,GAAG;IACV,OAAO,IAAI;EACb;AACF"}
@@ -0,0 +1,100 @@
1
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
3
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
4
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
5
+ function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
6
+ import $ from 'jquery';
7
+ import AbstractContentItem, { isComponent } from "./AbstractContentItem.js";
8
+ import RowOrColumn from "./RowOrColumn.js";
9
+ export default class Root extends AbstractContentItem {
10
+ constructor(layoutManager, config, containerElement) {
11
+ super(layoutManager, _objectSpread(_objectSpread({}, config), {}, {
12
+ type: 'root'
13
+ }), null, $('<div class="lm_goldenlayout lm_item lm_root"></div>'));
14
+ _defineProperty(this, "childElementContainer", void 0);
15
+ _defineProperty(this, "_containerElement", void 0);
16
+ this.isRoot = true;
17
+ this.type = 'root';
18
+ this.childElementContainer = this.element;
19
+ this._containerElement = containerElement;
20
+ this._containerElement.append(this.element);
21
+ }
22
+ addChild(contentItem, index) {
23
+ if (this.contentItems.length > 0) {
24
+ throw new Error('Root node can only have a single child');
25
+ }
26
+ contentItem = this.layoutManager._$normalizeContentItem(contentItem, this);
27
+ this.childElementContainer.append(contentItem.element);
28
+ super.addChild(contentItem, index);
29
+ this.callDownwards('setSize');
30
+ this.emitBubblingEvent('stateChanged');
31
+ }
32
+ setSize(width, height) {
33
+ var _this$_containerEleme, _this$_containerEleme2;
34
+ width = typeof width === 'undefined' ? (_this$_containerEleme = this._containerElement.width()) !== null && _this$_containerEleme !== void 0 ? _this$_containerEleme : 0 : width;
35
+ height = typeof height === 'undefined' ? (_this$_containerEleme2 = this._containerElement.height()) !== null && _this$_containerEleme2 !== void 0 ? _this$_containerEleme2 : 0 : height;
36
+ this.element.width(width);
37
+ this.element.height(height);
38
+
39
+ /*
40
+ * Root can be empty
41
+ */
42
+ if (this.contentItems[0]) {
43
+ this.contentItems[0].element.width(width);
44
+ this.contentItems[0].element.height(height);
45
+ }
46
+ }
47
+ _$getArea() {
48
+ var area = super._$getArea();
49
+ if (area == null) {
50
+ throw new Error('Unable to get root area');
51
+ }
52
+ return area;
53
+ }
54
+ _$highlightDropZone(x, y, area) {
55
+ this.layoutManager.tabDropPlaceholder.remove();
56
+ super._$highlightDropZone(x, y, area);
57
+ }
58
+ _$onDrop(contentItem, area) {
59
+ var stack;
60
+ if (isComponent(contentItem)) {
61
+ stack = this.layoutManager.createContentItem({
62
+ type: 'stack',
63
+ header: contentItem.config.header || {}
64
+ }, this);
65
+ stack._$init();
66
+ stack.addChild(contentItem);
67
+ contentItem = stack;
68
+ }
69
+ if (!this.contentItems.length) {
70
+ this.addChild(contentItem);
71
+ } else {
72
+ var {
73
+ side
74
+ } = area;
75
+ var type = side === 'left' || side === 'right' ? 'row' : 'column'; // Should new root be a row or column
76
+ var dimension = side === 'left' || side === 'right' ? 'width' : 'height';
77
+ var insertBefore = side === 'left' || side === 'top';
78
+ var column = this.contentItems[0];
79
+ if (!(column instanceof RowOrColumn) || column.type != type) {
80
+ var rowOrColumn = this.layoutManager.createContentItem({
81
+ type: type
82
+ }, this);
83
+ this.replaceChild(column, rowOrColumn);
84
+ rowOrColumn.addChild(contentItem, insertBefore ? 0 : undefined, true);
85
+ rowOrColumn.addChild(column, insertBefore ? undefined : 0, true);
86
+ column.config[dimension] = 50;
87
+ contentItem.config[dimension] = 50;
88
+ rowOrColumn.callDownwards('setSize');
89
+ } else {
90
+ var _sibling$config$dimen;
91
+ var sibling = column.contentItems[insertBefore ? 0 : column.contentItems.length - 1];
92
+ column.addChild(contentItem, insertBefore ? 0 : undefined, true);
93
+ sibling.config[dimension] = ((_sibling$config$dimen = sibling.config[dimension]) !== null && _sibling$config$dimen !== void 0 ? _sibling$config$dimen : 0) * 0.5;
94
+ contentItem.config[dimension] = sibling.config[dimension];
95
+ column.callDownwards('setSize');
96
+ }
97
+ }
98
+ }
99
+ }
100
+ //# sourceMappingURL=Root.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Root.js","names":["$","AbstractContentItem","isComponent","RowOrColumn","Root","constructor","layoutManager","config","containerElement","type","isRoot","childElementContainer","element","_containerElement","append","addChild","contentItem","index","contentItems","length","Error","_$normalizeContentItem","callDownwards","emitBubblingEvent","setSize","width","height","_$getArea","area","_$highlightDropZone","x","y","tabDropPlaceholder","remove","_$onDrop","stack","createContentItem","header","_$init","side","dimension","insertBefore","column","rowOrColumn","replaceChild","undefined","sibling"],"sources":["../../src/items/Root.ts"],"sourcesContent":["import $ from 'jquery';\nimport type { ComponentConfig, ItemConfigType, ItemConfig } from '../config';\nimport LayoutManager from '../LayoutManager';\nimport AbstractContentItem, {\n isComponent,\n ItemArea,\n} from './AbstractContentItem';\nimport RowOrColumn from './RowOrColumn';\n\nexport default class Root extends AbstractContentItem {\n childElementContainer: JQuery<HTMLElement>;\n\n private _containerElement: JQuery<HTMLElement>;\n\n constructor(\n layoutManager: LayoutManager,\n config: ComponentConfig | { content: ItemConfigType[] },\n containerElement: JQuery<HTMLElement>\n ) {\n super(\n layoutManager,\n { ...config, type: 'root' },\n null,\n $('<div class=\"lm_goldenlayout lm_item lm_root\"></div>')\n );\n this.isRoot = true;\n this.type = 'root';\n this.childElementContainer = this.element;\n this._containerElement = containerElement;\n this._containerElement.append(this.element);\n }\n\n addChild(\n contentItem:\n | AbstractContentItem\n | ItemConfigType\n | { type: ItemConfig['type'] },\n index?: number\n ) {\n if (this.contentItems.length > 0) {\n throw new Error('Root node can only have a single child');\n }\n\n contentItem = this.layoutManager._$normalizeContentItem(contentItem, this);\n this.childElementContainer.append(contentItem.element);\n super.addChild(contentItem, index);\n\n this.callDownwards('setSize');\n this.emitBubblingEvent('stateChanged');\n }\n\n setSize(width?: number, height?: number) {\n width =\n typeof width === 'undefined'\n ? this._containerElement.width() ?? 0\n : width;\n height =\n typeof height === 'undefined'\n ? this._containerElement.height() ?? 0\n : height;\n\n this.element.width(width);\n this.element.height(height);\n\n /*\n * Root can be empty\n */\n if (this.contentItems[0]) {\n this.contentItems[0].element.width(width);\n this.contentItems[0].element.height(height);\n }\n }\n\n _$getArea() {\n const area = super._$getArea();\n if (area == null) {\n throw new Error('Unable to get root area');\n }\n return area;\n }\n\n _$highlightDropZone(x: number, y: number, area: ItemArea) {\n this.layoutManager.tabDropPlaceholder.remove();\n super._$highlightDropZone(x, y, area);\n }\n\n _$onDrop(contentItem: AbstractContentItem, area: ItemArea) {\n var stack;\n\n if (isComponent(contentItem)) {\n stack = this.layoutManager.createContentItem(\n {\n type: 'stack',\n header: contentItem.config.header || {},\n },\n this\n );\n stack._$init();\n stack.addChild(contentItem);\n contentItem = stack;\n }\n\n if (!this.contentItems.length) {\n this.addChild(contentItem);\n } else {\n const { side } = area;\n const type = side === 'left' || side === 'right' ? 'row' : 'column'; // Should new root be a row or column\n const dimension =\n side === 'left' || side === 'right' ? 'width' : 'height';\n const insertBefore = side === 'left' || side === 'top';\n const column = this.contentItems[0];\n if (!(column instanceof RowOrColumn) || column.type != type) {\n const rowOrColumn = this.layoutManager.createContentItem(\n { type: type },\n this\n ) as RowOrColumn;\n this.replaceChild(column, rowOrColumn);\n rowOrColumn.addChild(contentItem, insertBefore ? 0 : undefined, true);\n rowOrColumn.addChild(column, insertBefore ? undefined : 0, true);\n column.config[dimension] = 50;\n contentItem.config[dimension] = 50;\n rowOrColumn.callDownwards('setSize');\n } else {\n const sibling =\n column.contentItems[\n insertBefore ? 0 : column.contentItems.length - 1\n ];\n column.addChild(contentItem, insertBefore ? 0 : undefined, true);\n sibling.config[dimension] = (sibling.config[dimension] ?? 0) * 0.5;\n contentItem.config[dimension] = sibling.config[dimension];\n column.callDownwards('setSize');\n }\n }\n }\n}\n"],"mappings":"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"}