@deephaven/golden-layout 0.19.2-beta.5 → 0.20.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 (144) hide show
  1. package/dist/LayoutManager.d.ts +313 -0
  2. package/dist/LayoutManager.d.ts.map +1 -0
  3. package/dist/LayoutManager.js +468 -450
  4. package/dist/LayoutManager.js.map +1 -1
  5. package/dist/base.d.ts +16 -0
  6. package/dist/base.d.ts.map +1 -0
  7. package/dist/base.js +6 -6
  8. package/dist/base.js.map +1 -1
  9. package/dist/config/Config.d.ts +146 -0
  10. package/dist/config/Config.d.ts.map +1 -0
  11. package/dist/config/{defaultConfig.js → Config.js} +6 -6
  12. package/dist/config/Config.js.map +1 -0
  13. package/dist/config/ItemConfig.d.ts +66 -0
  14. package/dist/config/ItemConfig.d.ts.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.d.ts +3 -0
  18. package/dist/config/index.d.ts.map +1 -0
  19. package/dist/config/index.js +2 -6
  20. package/dist/config/index.js.map +1 -1
  21. package/dist/container/ItemContainer.d.ts +91 -0
  22. package/dist/container/ItemContainer.d.ts.map +1 -0
  23. package/dist/container/ItemContainer.js +110 -85
  24. package/dist/container/ItemContainer.js.map +1 -1
  25. package/dist/container/index.d.ts +3 -0
  26. package/dist/container/index.d.ts.map +1 -0
  27. package/dist/container/index.js +2 -4
  28. package/dist/container/index.js.map +1 -1
  29. package/dist/controls/BrowserPopout.d.ts +83 -0
  30. package/dist/controls/BrowserPopout.d.ts.map +1 -0
  31. package/dist/controls/BrowserPopout.js +135 -101
  32. package/dist/controls/BrowserPopout.js.map +1 -1
  33. package/dist/controls/DragProxy.d.ts +67 -0
  34. package/dist/controls/DragProxy.d.ts.map +1 -0
  35. package/dist/controls/DragProxy.js +135 -110
  36. package/dist/controls/DragProxy.js.map +1 -1
  37. package/dist/controls/DragSource.d.ts +30 -0
  38. package/dist/controls/DragSource.d.ts.map +1 -0
  39. package/dist/controls/DragSource.js +37 -29
  40. package/dist/controls/DragSource.js.map +1 -1
  41. package/dist/controls/DragSourceFromEvent.d.ts +30 -0
  42. package/dist/controls/DragSourceFromEvent.d.ts.map +1 -0
  43. package/dist/controls/DragSourceFromEvent.js +49 -36
  44. package/dist/controls/DragSourceFromEvent.js.map +1 -1
  45. package/dist/controls/DropTargetIndicator.d.ts +14 -0
  46. package/dist/controls/DropTargetIndicator.d.ts.map +1 -0
  47. package/dist/controls/DropTargetIndicator.js +18 -14
  48. package/dist/controls/DropTargetIndicator.js.map +1 -1
  49. package/dist/controls/Header.d.ts +145 -0
  50. package/dist/controls/Header.d.ts.map +1 -0
  51. package/dist/controls/Header.js +414 -271
  52. package/dist/controls/Header.js.map +1 -1
  53. package/dist/controls/HeaderButton.d.ts +9 -0
  54. package/dist/controls/HeaderButton.d.ts.map +1 -0
  55. package/dist/controls/HeaderButton.js +19 -13
  56. package/dist/controls/HeaderButton.js.map +1 -1
  57. package/dist/controls/Splitter.d.ts +12 -0
  58. package/dist/controls/Splitter.d.ts.map +1 -0
  59. package/dist/controls/Splitter.js +36 -20
  60. package/dist/controls/Splitter.js.map +1 -1
  61. package/dist/controls/Tab.d.ts +91 -0
  62. package/dist/controls/Tab.d.ts.map +1 -0
  63. package/dist/controls/Tab.js +131 -119
  64. package/dist/controls/Tab.js.map +1 -1
  65. package/dist/controls/TransitionIndicator.d.ts +25 -0
  66. package/dist/controls/TransitionIndicator.d.ts.map +1 -0
  67. package/dist/controls/TransitionIndicator.js +53 -39
  68. package/dist/controls/TransitionIndicator.js.map +1 -1
  69. package/dist/controls/index.d.ts +11 -0
  70. package/dist/controls/index.d.ts.map +1 -0
  71. package/dist/controls/index.js +10 -22
  72. package/dist/controls/index.js.map +1 -1
  73. package/dist/errors/ConfigurationError.d.ts +6 -0
  74. package/dist/errors/ConfigurationError.d.ts.map +1 -0
  75. package/dist/errors/ConfigurationError.js +15 -8
  76. package/dist/errors/ConfigurationError.js.map +1 -1
  77. package/dist/errors/index.d.ts +2 -0
  78. package/dist/errors/index.d.ts.map +1 -0
  79. package/dist/errors/index.js +1 -4
  80. package/dist/errors/index.js.map +1 -1
  81. package/dist/index.d.ts +9 -0
  82. package/dist/index.d.ts.map +1 -0
  83. package/dist/index.js +7 -1
  84. package/dist/index.js.map +1 -1
  85. package/dist/items/AbstractContentItem.d.ts +233 -0
  86. package/dist/items/AbstractContentItem.d.ts.map +1 -0
  87. package/dist/items/AbstractContentItem.js +284 -242
  88. package/dist/items/AbstractContentItem.js.map +1 -1
  89. package/dist/items/Component.d.ts +30 -0
  90. package/dist/items/Component.d.ts.map +1 -0
  91. package/dist/items/Component.js +61 -42
  92. package/dist/items/Component.js.map +1 -1
  93. package/dist/items/Root.d.ts +18 -0
  94. package/dist/items/Root.d.ts.map +1 -0
  95. package/dist/items/Root.js +68 -38
  96. package/dist/items/Root.js.map +1 -1
  97. package/dist/items/RowOrColumn.d.ts +157 -0
  98. package/dist/items/RowOrColumn.d.ts.map +1 -0
  99. package/dist/items/RowOrColumn.js +219 -187
  100. package/dist/items/RowOrColumn.js.map +1 -1
  101. package/dist/items/Stack.d.ts +108 -0
  102. package/dist/items/Stack.d.ts.map +1 -0
  103. package/dist/items/Stack.js +218 -151
  104. package/dist/items/Stack.js.map +1 -1
  105. package/dist/items/index.d.ts +8 -0
  106. package/dist/items/index.d.ts.map +1 -0
  107. package/dist/items/index.js +7 -12
  108. package/dist/items/index.js.map +1 -1
  109. package/dist/utils/BubblingEvent.d.ts +8 -0
  110. package/dist/utils/BubblingEvent.d.ts.map +1 -0
  111. package/dist/utils/BubblingEvent.js +18 -9
  112. package/dist/utils/BubblingEvent.js.map +1 -1
  113. package/dist/utils/ConfigMinifier.d.ts +21 -0
  114. package/dist/utils/ConfigMinifier.d.ts.map +1 -0
  115. package/dist/utils/ConfigMinifier.js +121 -121
  116. package/dist/utils/ConfigMinifier.js.map +1 -1
  117. package/dist/utils/DragListener.d.ts +34 -0
  118. package/dist/utils/DragListener.d.ts.map +1 -0
  119. package/dist/utils/DragListener.js +103 -70
  120. package/dist/utils/DragListener.js.map +1 -1
  121. package/dist/utils/EventEmitter.d.ts +59 -0
  122. package/dist/utils/EventEmitter.d.ts.map +1 -0
  123. package/dist/utils/EventEmitter.js +64 -70
  124. package/dist/utils/EventEmitter.js.map +1 -1
  125. package/dist/utils/EventHub.d.ts +55 -0
  126. package/dist/utils/EventHub.d.ts.map +1 -0
  127. package/dist/utils/EventHub.js +83 -105
  128. package/dist/utils/EventHub.js.map +1 -1
  129. package/dist/utils/ReactComponentHandler.d.ts +54 -0
  130. package/dist/utils/ReactComponentHandler.d.ts.map +1 -0
  131. package/dist/utils/ReactComponentHandler.js +58 -56
  132. package/dist/utils/ReactComponentHandler.js.map +1 -1
  133. package/dist/utils/index.d.ts +8 -0
  134. package/dist/utils/index.d.ts.map +1 -0
  135. package/dist/utils/index.js +7 -21
  136. package/dist/utils/index.js.map +1 -1
  137. package/dist/utils/utils.d.ts +25 -0
  138. package/dist/utils/utils.d.ts.map +1 -0
  139. package/dist/utils/utils.js +21 -145
  140. package/dist/utils/utils.js.map +1 -1
  141. package/package.json +9 -5
  142. package/dist/config/ItemDefaultConfig.js +0 -8
  143. package/dist/config/ItemDefaultConfig.js.map +0 -1
  144. package/dist/config/defaultConfig.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ItemConfig.d.ts","sourceRoot":"","sources":["../../src/config/ItemConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAExD,oBAAY,cAAc,GACtB,UAAU,GACV,eAAe,GACf,oBAAoB,CAAC;AAEzB,MAAM,WAAW,UAAU;IACzB;;OAEG;IACH,IAAI,EACA,SAAS,GACT,MAAM,GACN,KAAK,GACL,QAAQ,GACR,OAAO,GACP,WAAW,GACX,iBAAiB,CAAC;IAEtB;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,UAAU,GAAG,cAAc,CAAC,EAAE,CAAC;IAE1C;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAEvB;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB,MAAM,CAAC,EAAE,iBAAiB,CAAC;CAC5B;AAED,MAAM,WAAW,eAAgB,SAAQ,UAAU;IACjD;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC;IAEtB;;;OAGG;IACH,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACzC;AAED,MAAM,WAAW,oBAAqB,SAAQ,UAAU;IACtD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,KAAK,CAAC,EAAE,GAAG,CAAC;CACb;AAED,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,cAAc,GACnB,IAAI,IAAI,eAAe,CAEzB;AAED,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,cAAc,GACnB,IAAI,IAAI,oBAAoB,CAE9B;AAED,eAAO,MAAM,iBAAiB,EAAE,UAM9B,CAAC"}
@@ -0,0 +1,14 @@
1
+ export function isGLComponentConfig(item) {
2
+ return item.componentName !== undefined;
3
+ }
4
+ export function isReactComponentConfig(item) {
5
+ return item.component !== undefined;
6
+ }
7
+ export var itemDefaultConfig = Object.freeze({
8
+ type: 'default',
9
+ isClosable: true,
10
+ isFocusOnShow: true,
11
+ reorderEnabled: true,
12
+ title: ''
13
+ });
14
+ //# sourceMappingURL=ItemConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ItemConfig.js","names":["isGLComponentConfig","item","componentName","undefined","isReactComponentConfig","component","itemDefaultConfig","Object","freeze","type","isClosable","isFocusOnShow","reorderEnabled","title"],"sources":["../../src/config/ItemConfig.ts"],"sourcesContent":["import type { StackHeaderConfig } from '../items/Stack';\n\nexport type ItemConfigType =\n | ItemConfig\n | ComponentConfig\n | ReactComponentConfig;\n\nexport interface ItemConfig {\n /**\n * The type of the item.\n */\n type:\n | 'default'\n | 'root'\n | 'row'\n | 'column'\n | 'stack'\n | 'component'\n | 'react-component';\n\n /**\n * An array of configurations for items that will be created as children of this item.\n */\n content?: (ItemConfig | ItemConfigType)[];\n\n /**\n * The width of this item, relative to the other children of its parent in percent\n */\n width?: number;\n\n minWidth?: number;\n\n /**\n * The height of this item, relative to the other children of its parent in percent\n */\n height?: number;\n\n minHeight?: number;\n\n /**\n * A String or an Array of Strings. Used to retrieve the item using item.getItemsById()\n */\n id?: string | string[];\n\n /**\n * Determines if the item is closable. If false, the x on the items tab will be hidden and container.close()\n * will return false\n * Default: true\n */\n isClosable?: boolean;\n\n /**\n * The title of the item as displayed on its tab and on popout windows\n * Default: componentName or ''\n */\n title?: string;\n\n isFocusOnShow?: boolean;\n\n reorderEnabled?: boolean;\n\n header?: StackHeaderConfig;\n}\n\nexport interface ComponentConfig extends ItemConfig {\n /**\n * The name of the component as specified in layout.registerComponent. Mandatory if type is 'component'.\n */\n componentName: string;\n\n /**\n * A serialisable object. Will be passed to the component constructor function and will be the value returned by\n * container.getState().\n */\n componentState: Record<string, unknown>;\n}\n\nexport interface ReactComponentConfig extends ItemConfig {\n componentName?: string;\n /**\n * The name of the component as specified in layout.registerComponent. Mandatory if type is 'react-component'\n */\n component: string;\n\n /**\n * Properties that will be passed to the component and accessible using this.props.\n */\n props?: any;\n}\n\nexport function isGLComponentConfig(\n item: ItemConfigType\n): item is ComponentConfig {\n return (item as ComponentConfig).componentName !== undefined;\n}\n\nexport function isReactComponentConfig(\n item: ItemConfigType\n): item is ReactComponentConfig {\n return (item as ReactComponentConfig).component !== undefined;\n}\n\nexport const itemDefaultConfig: ItemConfig = Object.freeze({\n type: 'default',\n isClosable: true,\n isFocusOnShow: true,\n reorderEnabled: true,\n title: '',\n});\n"],"mappings":"AA0FA,OAAO,SAASA,mBAAT,CACLC,IADK,EAEoB;EACzB,OAAQA,IAAD,CAA0BC,aAA1B,KAA4CC,SAAnD;AACD;AAED,OAAO,SAASC,sBAAT,CACLH,IADK,EAEyB;EAC9B,OAAQA,IAAD,CAA+BI,SAA/B,KAA6CF,SAApD;AACD;AAED,OAAO,IAAMG,iBAA6B,GAAGC,MAAM,CAACC,MAAP,CAAc;EACzDC,IAAI,EAAE,SADmD;EAEzDC,UAAU,EAAE,IAF6C;EAGzDC,aAAa,EAAE,IAH0C;EAIzDC,cAAc,EAAE,IAJyC;EAKzDC,KAAK,EAAE;AALkD,CAAd,CAAtC"}
@@ -0,0 +1,3 @@
1
+ export * from './Config';
2
+ export * from './ItemConfig';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC"}
@@ -1,7 +1,3 @@
1
- import defaultConfig from './defaultConfig.js';
2
- import itemDefaultConfig from './ItemDefaultConfig.js';
3
- export default {
4
- defaultConfig,
5
- itemDefaultConfig
6
- };
1
+ export * from "./Config.js";
2
+ export * from "./ItemConfig.js";
7
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["defaultConfig","itemDefaultConfig"],"sources":["../../src/config/index.js"],"sourcesContent":["import defaultConfig from './defaultConfig.js';\nimport itemDefaultConfig from './ItemDefaultConfig.js';\n\nexport default {\n defaultConfig,\n itemDefaultConfig,\n};\n"],"mappings":"AAAA,OAAOA,aAAP,MAA0B,oBAA1B;AACA,OAAOC,iBAAP,MAA8B,wBAA9B;AAEA,eAAe;EACbD,aADa;EAEbC;AAFa,CAAf"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/config/index.ts"],"sourcesContent":["export * from './Config';\nexport * from './ItemConfig';\n"],"mappings":""}
@@ -0,0 +1,91 @@
1
+ import { ReactComponentConfig, ComponentConfig } from '../config';
2
+ import type Tab from '../controls/Tab';
3
+ import type { Component } from '../items';
4
+ import type LayoutManager from '../LayoutManager';
5
+ import EventEmitter from '../utils/EventEmitter';
6
+ export default class ItemContainer<C extends ComponentConfig | ReactComponentConfig = ComponentConfig> extends EventEmitter {
7
+ width?: number;
8
+ height?: number;
9
+ title?: string;
10
+ parent: Component;
11
+ layoutManager: LayoutManager;
12
+ tab?: Tab;
13
+ _config: C & {
14
+ componentState: Record<string, unknown>;
15
+ };
16
+ isHidden: boolean;
17
+ _element: JQuery<HTMLElement>;
18
+ _contentElement: JQuery<HTMLElement>;
19
+ constructor(config: C, parent: Component, layoutManager: LayoutManager);
20
+ /**
21
+ * Get the inner DOM element the container's content
22
+ * is intended to live in
23
+ */
24
+ getElement(): JQuery<HTMLElement>;
25
+ /**
26
+ * Hide the container. Notifies the containers content first
27
+ * and then hides the DOM node. If the container is already hidden
28
+ * this should have no effect
29
+ */
30
+ hide(): void;
31
+ /**
32
+ * Shows a previously hidden container. Notifies the
33
+ * containers content first and then shows the DOM element.
34
+ * If the container is already visible this has no effect.
35
+ */
36
+ show(): void;
37
+ /**
38
+ * Set the size from within the container. Traverses up
39
+ * the item tree until it finds a row or column element
40
+ * and resizes its items accordingly.
41
+ *
42
+ * If this container isn't a descendant of a row or column
43
+ * it returns false
44
+ * @todo Rework!!!
45
+ * @param width The new width in pixel
46
+ * @param height The new height in pixel
47
+ *
48
+ * @returns resizeSuccesful
49
+ */
50
+ setSize(width: number, height: number): boolean;
51
+ /**
52
+ * Closes the container if it is closable. Can be called by
53
+ * both the component within at as well as the contentItem containing
54
+ * it. Emits a close event before the container itself is closed.
55
+ */
56
+ close(): void;
57
+ /**
58
+ * Returns the current state object
59
+ *
60
+ * @returns state
61
+ */
62
+ getState(): Record<string, unknown>;
63
+ /**
64
+ * Merges the provided state into the current one
65
+ *
66
+ * @param state
67
+ */
68
+ extendState(state: string): void;
69
+ /**
70
+ * Notifies the layout manager of a stateupdate
71
+ *
72
+ * @param state
73
+ */
74
+ setState(state: Record<string, unknown>): void;
75
+ /**
76
+ * Set's the components title
77
+ *
78
+ * @param title
79
+ */
80
+ setTitle(title: string): void;
81
+ /**
82
+ * Set's the containers size. Called by the container's component.
83
+ * To set the size programmatically from within the container please
84
+ * use the public setSize method
85
+ *
86
+ * @param width in px
87
+ * @param height in px
88
+ */
89
+ _$setSize(width?: number, height?: number): void;
90
+ }
91
+ //# sourceMappingURL=ItemContainer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ItemContainer.d.ts","sourceRoot":"","sources":["../../src/container/ItemContainer.ts"],"names":[],"mappings":"AACA,OAAO,EACL,oBAAoB,EAEpB,eAAe,EAChB,MAAM,WAAW,CAAC;AACnB,OAAO,KAAK,GAAG,MAAM,iBAAiB,CAAC;AACvC,OAAO,KAAK,EAAuB,SAAS,EAAE,MAAM,UAAU,CAAC;AAC/D,OAAO,KAAK,aAAa,MAAM,kBAAkB,CAAC;AAClD,OAAO,YAAY,MAAM,uBAAuB,CAAC;AAEjD,MAAM,CAAC,OAAO,OAAO,aAAa,CAChC,CAAC,SAAS,eAAe,GAAG,oBAAoB,GAAG,eAAe,CAClE,SAAQ,YAAY;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,MAAM,EAAE,SAAS,CAAC;IAElB,aAAa,EAAE,aAAa,CAAC;IAE7B,GAAG,CAAC,EAAE,GAAG,CAAC;IAGV,OAAO,EAAE,CAAC,GAAG;QAAE,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC;IAEzD,QAAQ,UAAS;IAEjB,QAAQ,sBAMN;IAEF,eAAe,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;gBAEzB,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,aAAa;IAYtE;;;OAGG;IACH,UAAU;IAIV;;;;OAIG;IACH,IAAI;IAMJ;;;;OAIG;IACH,IAAI;IAUJ;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IA6CrC;;;;OAIG;IACH,KAAK;IAOL;;;;OAIG;IACH,QAAQ;IAIR;;;;OAIG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM;IAIzB;;;;OAIG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAKvC;;;;OAIG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM;IAItB;;;;;;;OAOG;IACH,SAAS,CAAC,KAAK,SAAI,EAAE,MAAM,SAAI;CAahC"}
@@ -1,52 +1,69 @@
1
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2
+
1
3
  import $ from 'jquery';
2
- import utils from '../utils/index.js';
3
-
4
- var ItemContainer = function ItemContainer(config, parent, layoutManager) {
5
- utils.EventEmitter.call(this);
6
- this.width = null;
7
- this.height = null;
8
- this.title = config.componentName;
9
- this.parent = parent;
10
- this.layoutManager = layoutManager;
11
- this.isHidden = false;
12
- this._config = config;
13
- this._element = $(['<div class="lm_item_container">', '<div class="lm_content" tabindex="-1"></div>', '</div>'].join(''));
14
- this._contentElement = this._element.find('.lm_content');
15
- };
16
-
17
- utils.copy(ItemContainer.prototype, {
4
+ import { isGLComponentConfig } from "../config/index.js";
5
+ import EventEmitter from "../utils/EventEmitter.js";
6
+ export default class ItemContainer extends EventEmitter {
7
+ // This type is to make TS happy and allow ReactComponentConfig passed to container generic
8
+ constructor(config, parent, layoutManager) {
9
+ super();
10
+
11
+ _defineProperty(this, "width", void 0);
12
+
13
+ _defineProperty(this, "height", void 0);
14
+
15
+ _defineProperty(this, "title", void 0);
16
+
17
+ _defineProperty(this, "parent", void 0);
18
+
19
+ _defineProperty(this, "layoutManager", void 0);
20
+
21
+ _defineProperty(this, "tab", void 0);
22
+
23
+ _defineProperty(this, "_config", void 0);
24
+
25
+ _defineProperty(this, "isHidden", false);
26
+
27
+ _defineProperty(this, "_element", $(['<div class="lm_item_container">', '<div class="lm_content" tabindex="-1"></div>', '</div>'].join('')));
28
+
29
+ _defineProperty(this, "_contentElement", void 0);
30
+
31
+ this.title = isGLComponentConfig(config) ? config.componentName : '';
32
+ this.parent = parent;
33
+ this.layoutManager = layoutManager;
34
+ this._config = config;
35
+ this._contentElement = this._element.find('.lm_content');
36
+ }
18
37
  /**
19
38
  * Get the inner DOM element the container's content
20
39
  * is intended to live in
21
- *
22
- * @returns {DOM element}
23
40
  */
24
- getElement: function getElement() {
25
- return this._contentElement;
26
- },
27
41
 
42
+
43
+ getElement() {
44
+ return this._contentElement;
45
+ }
28
46
  /**
29
47
  * Hide the container. Notifies the containers content first
30
48
  * and then hides the DOM node. If the container is already hidden
31
49
  * this should have no effect
32
- *
33
- * @returns {void}
34
50
  */
35
- hide: function hide() {
51
+
52
+
53
+ hide() {
36
54
  this.emit('hide');
37
55
  this.isHidden = true;
38
56
 
39
57
  this._element.hide();
40
- },
41
-
58
+ }
42
59
  /**
43
60
  * Shows a previously hidden container. Notifies the
44
61
  * containers content first and then shows the DOM element.
45
62
  * If the container is already visible this has no effect.
46
- *
47
- * @returns {void}
48
63
  */
49
- show: function show() {
64
+
65
+
66
+ show() {
50
67
  this.emit('show');
51
68
  this.isHidden = false;
52
69
 
@@ -56,8 +73,7 @@ utils.copy(ItemContainer.prototype, {
56
73
  if (this.height != 0 || this.width != 0) {
57
74
  this.emit('shown');
58
75
  }
59
- },
60
-
76
+ }
61
77
  /**
62
78
  * Set the size from within the container. Traverses up
63
79
  * the item tree until it finds a row or column element
@@ -66,115 +82,124 @@ utils.copy(ItemContainer.prototype, {
66
82
  * If this container isn't a descendant of a row or column
67
83
  * it returns false
68
84
  * @todo Rework!!!
69
- * @param {Number} width The new width in pixel
70
- * @param {Number} height The new height in pixel
85
+ * @param width The new width in pixel
86
+ * @param height The new height in pixel
71
87
  *
72
- * @returns {Boolean} resizeSuccesful
88
+ * @returns resizeSuccesful
73
89
  */
74
- setSize: function setSize(width, height) {
75
- var rowOrColumn = this.parent,
76
- rowOrColumnChild = this,
77
- totalPixel,
78
- percentage,
79
- direction,
80
- newSize,
81
- delta,
82
- i;
83
-
84
- while (!rowOrColumn.isColumn && !rowOrColumn.isRow) {
90
+
91
+
92
+ setSize(width, height) {
93
+ var _this$direction, _rowOrColumnChild$con, _rowOrColumnChild$con2;
94
+
95
+ var rowOrColumn = this.parent;
96
+ var rowOrColumnChild = null;
97
+
98
+ while (rowOrColumn && !rowOrColumn.isColumn && !rowOrColumn.isRow) {
99
+ var _rowOrColumn;
100
+
85
101
  rowOrColumnChild = rowOrColumn;
86
102
  rowOrColumn = rowOrColumn.parent;
87
103
  /**
88
104
  * No row or column has been found
89
105
  */
90
106
 
91
- if (rowOrColumn.isRoot) {
107
+ if ((_rowOrColumn = rowOrColumn) !== null && _rowOrColumn !== void 0 && _rowOrColumn.isRoot) {
92
108
  return false;
93
109
  }
94
110
  }
95
111
 
96
- direction = rowOrColumn.isColumn ? 'height' : 'width';
97
- newSize = direction === 'height' ? height : width;
98
- totalPixel = this[direction] * (1 / (rowOrColumnChild.config[direction] / 100));
99
- percentage = newSize / totalPixel * 100;
100
- delta = (rowOrColumnChild.config[direction] - percentage) / (rowOrColumn.contentItems.length - 1);
112
+ if (!rowOrColumn || !rowOrColumnChild) {
113
+ return false;
114
+ }
115
+
116
+ var direction = rowOrColumn.isColumn ? 'height' : 'width';
117
+ var newSize = direction === 'height' ? height : width;
118
+ var totalPixel = ((_this$direction = this[direction]) !== null && _this$direction !== void 0 ? _this$direction : 0) * (1 / (((_rowOrColumnChild$con = rowOrColumnChild.config[direction]) !== null && _rowOrColumnChild$con !== void 0 ? _rowOrColumnChild$con : 0) / 100));
119
+ var percentage = newSize / totalPixel * 100;
120
+ var delta = (((_rowOrColumnChild$con2 = rowOrColumnChild.config[direction]) !== null && _rowOrColumnChild$con2 !== void 0 ? _rowOrColumnChild$con2 : 0) - percentage) / (rowOrColumn.contentItems.length - 1);
101
121
 
102
- for (i = 0; i < rowOrColumn.contentItems.length; i++) {
122
+ for (var i = 0; i < rowOrColumn.contentItems.length; i++) {
103
123
  if (rowOrColumn.contentItems[i] === rowOrColumnChild) {
104
124
  rowOrColumn.contentItems[i].config[direction] = percentage;
105
125
  } else {
106
- rowOrColumn.contentItems[i].config[direction] += delta;
126
+ var _rowOrColumn$contentI;
127
+
128
+ rowOrColumn.contentItems[i].config[direction] = ((_rowOrColumn$contentI = rowOrColumn.contentItems[i].config[direction]) !== null && _rowOrColumn$contentI !== void 0 ? _rowOrColumn$contentI : 0) + delta;
107
129
  }
108
130
  }
109
131
 
110
132
  rowOrColumn.callDownwards('setSize');
111
133
  return true;
112
- },
113
-
134
+ }
114
135
  /**
115
136
  * Closes the container if it is closable. Can be called by
116
137
  * both the component within at as well as the contentItem containing
117
138
  * it. Emits a close event before the container itself is closed.
118
- *
119
- * @returns {void}
120
139
  */
121
- close: function close() {
140
+
141
+
142
+ close() {
122
143
  if (this._config.isClosable) {
123
144
  this.emit('close');
124
145
  this.parent.close();
125
146
  }
126
- },
127
-
147
+ }
128
148
  /**
129
149
  * Returns the current state object
130
150
  *
131
- * @returns {Object} state
151
+ * @returns state
132
152
  */
133
- getState: function getState() {
134
- return this._config.componentState;
135
- },
136
153
 
154
+
155
+ getState() {
156
+ return this._config.componentState;
157
+ }
137
158
  /**
138
159
  * Merges the provided state into the current one
139
160
  *
140
- * @param {Object} state
141
- *
142
- * @returns {void}
161
+ * @param state
143
162
  */
144
- extendState: function extendState(state) {
145
- this.setState($.extend(true, this.getState(), state));
146
- },
147
163
 
164
+
165
+ extendState(state) {
166
+ this.setState($.extend(true, this.getState(), state));
167
+ }
148
168
  /**
149
169
  * Notifies the layout manager of a stateupdate
150
170
  *
151
- * @param {serialisable} state
171
+ * @param state
152
172
  */
153
- setState: function setState(state) {
173
+
174
+
175
+ setState(state) {
154
176
  this._config.componentState = state;
155
177
  this.parent.emitBubblingEvent('stateChanged');
156
- },
157
-
178
+ }
158
179
  /**
159
180
  * Set's the components title
160
181
  *
161
- * @param {String} title
182
+ * @param title
162
183
  */
163
- setTitle: function setTitle(title) {
164
- this.parent.setTitle(title);
165
- },
166
184
 
185
+
186
+ setTitle(title) {
187
+ this.parent.setTitle(title);
188
+ }
167
189
  /**
168
190
  * Set's the containers size. Called by the container's component.
169
191
  * To set the size programmatically from within the container please
170
192
  * use the public setSize method
171
193
  *
172
- * @param {[Int]} width in px
173
- * @param {[Int]} height in px
174
- *
175
- * @returns {void}
194
+ * @param width in px
195
+ * @param height in px
176
196
  */
177
- _$setSize: function _$setSize(width, height) {
197
+
198
+
199
+ _$setSize() {
200
+ var width = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
201
+ var height = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
202
+
178
203
  if (width !== this.width || height !== this.height) {
179
204
  this.width = width;
180
205
  this.height = height;
@@ -187,6 +212,6 @@ utils.copy(ItemContainer.prototype, {
187
212
  this.emit('resize');
188
213
  }
189
214
  }
190
- });
191
- export default ItemContainer;
215
+
216
+ }
192
217
  //# sourceMappingURL=ItemContainer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ItemContainer.js","names":["$","utils","ItemContainer","config","parent","layoutManager","EventEmitter","call","width","height","title","componentName","isHidden","_config","_element","join","_contentElement","find","copy","prototype","getElement","hide","emit","show","setSize","rowOrColumn","rowOrColumnChild","totalPixel","percentage","direction","newSize","delta","i","isColumn","isRow","isRoot","contentItems","length","callDownwards","close","isClosable","getState","componentState","extendState","state","setState","extend","emitBubblingEvent","setTitle","_$setSize","cl","hdelta","offsetWidth","clientWidth","vdelta","offsetHeight","clientHeight"],"sources":["../../src/container/ItemContainer.js"],"sourcesContent":["import $ from 'jquery';\nimport utils from '../utils/index.js';\n\nconst ItemContainer = function (config, parent, layoutManager) {\n utils.EventEmitter.call(this);\n\n this.width = null;\n this.height = null;\n this.title = config.componentName;\n this.parent = parent;\n this.layoutManager = layoutManager;\n this.isHidden = false;\n\n this._config = config;\n this._element = $(\n [\n '<div class=\"lm_item_container\">',\n '<div class=\"lm_content\" tabindex=\"-1\"></div>',\n '</div>',\n ].join('')\n );\n\n this._contentElement = this._element.find('.lm_content');\n};\n\nutils.copy(ItemContainer.prototype, {\n /**\n * Get the inner DOM element the container's content\n * is intended to live in\n *\n * @returns {DOM element}\n */\n getElement: function () {\n return this._contentElement;\n },\n\n /**\n * Hide the container. Notifies the containers content first\n * and then hides the DOM node. If the container is already hidden\n * this should have no effect\n *\n * @returns {void}\n */\n hide: function () {\n this.emit('hide');\n this.isHidden = true;\n this._element.hide();\n },\n\n /**\n * Shows a previously hidden container. Notifies the\n * containers content first and then shows the DOM element.\n * If the container is already visible this has no effect.\n *\n * @returns {void}\n */\n show: function () {\n this.emit('show');\n this.isHidden = false;\n this._element.show();\n // call shown only if the container has a valid size\n if (this.height != 0 || this.width != 0) {\n this.emit('shown');\n }\n },\n\n /**\n * Set the size from within the container. Traverses up\n * the item tree until it finds a row or column element\n * and resizes its items accordingly.\n *\n * If this container isn't a descendant of a row or column\n * it returns false\n * @todo Rework!!!\n * @param {Number} width The new width in pixel\n * @param {Number} height The new height in pixel\n *\n * @returns {Boolean} resizeSuccesful\n */\n setSize: function (width, height) {\n var rowOrColumn = this.parent,\n rowOrColumnChild = this,\n totalPixel,\n percentage,\n direction,\n newSize,\n delta,\n i;\n\n while (!rowOrColumn.isColumn && !rowOrColumn.isRow) {\n rowOrColumnChild = rowOrColumn;\n rowOrColumn = rowOrColumn.parent;\n\n /**\n * No row or column has been found\n */\n if (rowOrColumn.isRoot) {\n return false;\n }\n }\n\n direction = rowOrColumn.isColumn ? 'height' : 'width';\n newSize = direction === 'height' ? height : width;\n\n totalPixel =\n this[direction] * (1 / (rowOrColumnChild.config[direction] / 100));\n percentage = (newSize / totalPixel) * 100;\n delta =\n (rowOrColumnChild.config[direction] - percentage) /\n (rowOrColumn.contentItems.length - 1);\n\n for (i = 0; i < rowOrColumn.contentItems.length; i++) {\n if (rowOrColumn.contentItems[i] === rowOrColumnChild) {\n rowOrColumn.contentItems[i].config[direction] = percentage;\n } else {\n rowOrColumn.contentItems[i].config[direction] += delta;\n }\n }\n\n rowOrColumn.callDownwards('setSize');\n\n return true;\n },\n\n /**\n * Closes the container if it is closable. Can be called by\n * both the component within at as well as the contentItem containing\n * it. Emits a close event before the container itself is closed.\n *\n * @returns {void}\n */\n close: function () {\n if (this._config.isClosable) {\n this.emit('close');\n this.parent.close();\n }\n },\n\n /**\n * Returns the current state object\n *\n * @returns {Object} state\n */\n getState: function () {\n return this._config.componentState;\n },\n\n /**\n * Merges the provided state into the current one\n *\n * @param {Object} state\n *\n * @returns {void}\n */\n extendState: function (state) {\n this.setState($.extend(true, this.getState(), state));\n },\n\n /**\n * Notifies the layout manager of a stateupdate\n *\n * @param {serialisable} state\n */\n setState: function (state) {\n this._config.componentState = state;\n this.parent.emitBubblingEvent('stateChanged');\n },\n\n /**\n * Set's the components title\n *\n * @param {String} title\n */\n setTitle: function (title) {\n this.parent.setTitle(title);\n },\n\n /**\n * Set's the containers size. Called by the container's component.\n * To set the size programmatically from within the container please\n * use the public setSize method\n *\n * @param {[Int]} width in px\n * @param {[Int]} height in px\n *\n * @returns {void}\n */\n _$setSize: function (width, height) {\n if (width !== this.width || height !== this.height) {\n this.width = width;\n this.height = height;\n var cl = this._contentElement[0];\n var hdelta = cl.offsetWidth - cl.clientWidth;\n var vdelta = cl.offsetHeight - cl.clientHeight;\n this._contentElement\n .width(this.width - hdelta)\n .height(this.height - vdelta);\n this.emit('resize');\n }\n },\n});\n\nexport default ItemContainer;\n"],"mappings":"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"}
1
+ {"version":3,"file":"ItemContainer.js","names":["$","isGLComponentConfig","EventEmitter","ItemContainer","constructor","config","parent","layoutManager","join","title","componentName","_config","_contentElement","_element","find","getElement","hide","emit","isHidden","show","height","width","setSize","rowOrColumn","rowOrColumnChild","isColumn","isRow","isRoot","direction","newSize","totalPixel","percentage","delta","contentItems","length","i","callDownwards","close","isClosable","getState","componentState","extendState","state","setState","extend","emitBubblingEvent","setTitle","_$setSize","cl","hdelta","offsetWidth","clientWidth","vdelta","offsetHeight","clientHeight"],"sources":["../../src/container/ItemContainer.ts"],"sourcesContent":["import $ from 'jquery';\nimport {\n ReactComponentConfig,\n isGLComponentConfig,\n ComponentConfig,\n} from '../config';\nimport type Tab from '../controls/Tab';\nimport type { AbstractContentItem, Component } from '../items';\nimport type LayoutManager from '../LayoutManager';\nimport EventEmitter from '../utils/EventEmitter';\n\nexport default class ItemContainer<\n C extends ComponentConfig | ReactComponentConfig = ComponentConfig\n> extends EventEmitter {\n width?: number;\n height?: number;\n\n title?: string;\n\n parent: Component;\n\n layoutManager: LayoutManager;\n\n tab?: Tab;\n\n // This type is to make TS happy and allow ReactComponentConfig passed to container generic\n _config: C & { componentState: Record<string, unknown> };\n\n isHidden = false;\n\n _element = $(\n [\n '<div class=\"lm_item_container\">',\n '<div class=\"lm_content\" tabindex=\"-1\"></div>',\n '</div>',\n ].join('')\n );\n\n _contentElement: JQuery<HTMLElement>;\n\n constructor(config: C, parent: Component, layoutManager: LayoutManager) {\n super();\n\n this.title = isGLComponentConfig(config) ? config.componentName : '';\n this.parent = parent;\n this.layoutManager = layoutManager;\n\n this._config = config as C & { componentState: Record<string, unknown> };\n\n this._contentElement = this._element.find('.lm_content');\n }\n\n /**\n * Get the inner DOM element the container's content\n * is intended to live in\n */\n getElement() {\n return this._contentElement;\n }\n\n /**\n * Hide the container. Notifies the containers content first\n * and then hides the DOM node. If the container is already hidden\n * this should have no effect\n */\n hide() {\n this.emit('hide');\n this.isHidden = true;\n this._element.hide();\n }\n\n /**\n * Shows a previously hidden container. Notifies the\n * containers content first and then shows the DOM element.\n * If the container is already visible this has no effect.\n */\n show() {\n this.emit('show');\n this.isHidden = false;\n this._element.show();\n // call shown only if the container has a valid size\n if (this.height != 0 || this.width != 0) {\n this.emit('shown');\n }\n }\n\n /**\n * Set the size from within the container. Traverses up\n * the item tree until it finds a row or column element\n * and resizes its items accordingly.\n *\n * If this container isn't a descendant of a row or column\n * it returns false\n * @todo Rework!!!\n * @param width The new width in pixel\n * @param height The new height in pixel\n *\n * @returns resizeSuccesful\n */\n setSize(width: number, height: number) {\n let rowOrColumn: AbstractContentItem | null = this.parent;\n let rowOrColumnChild: AbstractContentItem | null = null;\n\n while (rowOrColumn && !rowOrColumn.isColumn && !rowOrColumn.isRow) {\n rowOrColumnChild = rowOrColumn;\n rowOrColumn = rowOrColumn.parent;\n\n /**\n * No row or column has been found\n */\n if (rowOrColumn?.isRoot) {\n return false;\n }\n }\n\n if (!rowOrColumn || !rowOrColumnChild) {\n return false;\n }\n\n const direction = rowOrColumn.isColumn ? 'height' : 'width';\n const newSize = direction === 'height' ? height : width;\n\n const totalPixel =\n (this[direction] ?? 0) *\n (1 / ((rowOrColumnChild.config[direction] ?? 0) / 100));\n const percentage = (newSize / totalPixel) * 100;\n const delta =\n ((rowOrColumnChild.config[direction] ?? 0) - percentage) /\n (rowOrColumn.contentItems.length - 1);\n\n for (let i = 0; i < rowOrColumn.contentItems.length; i++) {\n if (rowOrColumn.contentItems[i] === rowOrColumnChild) {\n rowOrColumn.contentItems[i].config[direction] = percentage;\n } else {\n rowOrColumn.contentItems[i].config[direction] =\n (rowOrColumn.contentItems[i].config[direction] ?? 0) + delta;\n }\n }\n\n rowOrColumn.callDownwards('setSize');\n\n return true;\n }\n\n /**\n * Closes the container if it is closable. Can be called by\n * both the component within at as well as the contentItem containing\n * it. Emits a close event before the container itself is closed.\n */\n close() {\n if (this._config.isClosable) {\n this.emit('close');\n this.parent.close();\n }\n }\n\n /**\n * Returns the current state object\n *\n * @returns state\n */\n getState() {\n return this._config.componentState;\n }\n\n /**\n * Merges the provided state into the current one\n *\n * @param state\n */\n extendState(state: string) {\n this.setState($.extend(true, this.getState(), state));\n }\n\n /**\n * Notifies the layout manager of a stateupdate\n *\n * @param state\n */\n setState(state: Record<string, unknown>) {\n this._config.componentState = state;\n this.parent.emitBubblingEvent('stateChanged');\n }\n\n /**\n * Set's the components title\n *\n * @param title\n */\n setTitle(title: string) {\n this.parent.setTitle(title);\n }\n\n /**\n * Set's the containers size. Called by the container's component.\n * To set the size programmatically from within the container please\n * use the public setSize method\n *\n * @param width in px\n * @param height in px\n */\n _$setSize(width = 0, height = 0) {\n if (width !== this.width || height !== this.height) {\n this.width = width;\n this.height = height;\n var cl = this._contentElement[0];\n var hdelta = cl.offsetWidth - cl.clientWidth;\n var vdelta = cl.offsetHeight - cl.clientHeight;\n this._contentElement\n .width(this.width - hdelta)\n .height(this.height - vdelta);\n this.emit('resize');\n }\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { default as ItemContainer } from './ItemContainer';
2
+ export { default as Container } from './ItemContainer';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/container/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,iBAAiB,CAAC"}
@@ -1,5 +1,3 @@
1
- import ItemContainer from './ItemContainer.js';
2
- export default {
3
- ItemContainer
4
- };
1
+ export { default as ItemContainer } from "./ItemContainer.js";
2
+ export { default as Container } from "./ItemContainer.js";
5
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["ItemContainer"],"sources":["../../src/container/index.js"],"sourcesContent":["import ItemContainer from './ItemContainer.js';\n\nexport default {\n ItemContainer,\n};\n"],"mappings":"AAAA,OAAOA,aAAP,MAA0B,oBAA1B;AAEA,eAAe;EACbA;AADa,CAAf"}
1
+ {"version":3,"file":"index.js","names":["default","ItemContainer","Container"],"sources":["../../src/container/index.ts"],"sourcesContent":["export { default as ItemContainer } from './ItemContainer';\nexport { default as Container } from './ItemContainer';\n"],"mappings":"SAASA,OAAO,IAAIC,a;SACXD,OAAO,IAAIE,S"}
@@ -0,0 +1,83 @@
1
+ import type { PopoutConfig, ItemConfigType } from '../config';
2
+ import type LayoutManager from '../LayoutManager';
3
+ import { EventEmitter } from '../utils';
4
+ declare type BrowserDimensions = {
5
+ width: number;
6
+ height: number;
7
+ top: number;
8
+ left: number;
9
+ };
10
+ /**
11
+ * Pops a content item out into a new browser window.
12
+ * This is achieved by
13
+ *
14
+ * - Creating a new configuration with the content item as root element
15
+ * - Serializing and minifying the configuration
16
+ * - Opening the current window's URL with the configuration as a GET parameter
17
+ * - GoldenLayout when opened in the new window will look for the GET parameter
18
+ * and use it instead of the provided configuration
19
+ *
20
+ * @param config GoldenLayout item config
21
+ * @param dimensions A map with width, height, top and left
22
+ * @param parentId The id of the element the item will be appended to on popIn
23
+ * @param indexInParent The position of this element within its parent
24
+ * @param layoutManager
25
+ */
26
+ export default class BrowserPopout extends EventEmitter {
27
+ isInitialised: boolean;
28
+ private _config;
29
+ private _dimensions;
30
+ private _parentId;
31
+ private _indexInParent;
32
+ private _layoutManager;
33
+ private _popoutWindow;
34
+ private _id;
35
+ constructor(config: ItemConfigType[], dimensions: BrowserDimensions, parentId: string, indexInParent: number, layoutManager: LayoutManager);
36
+ toConfig(): PopoutConfig;
37
+ getGlInstance(): LayoutManager | undefined;
38
+ getWindow(): (Window & {
39
+ __glInstance: LayoutManager;
40
+ }) | null;
41
+ close(): void;
42
+ /**
43
+ * Returns the popped out item to its original position. If the original
44
+ * parent isn't available anymore it falls back to the layout's topmost element
45
+ */
46
+ popIn(): void;
47
+ /**
48
+ * Creates the URL and window parameter
49
+ * and opens a new window
50
+ */
51
+ _createWindow(): void;
52
+ /**
53
+ * Serialises a map of key:values to a window options string
54
+ *
55
+ * @param windowOptions
56
+ *
57
+ * @returns serialised window options
58
+ */
59
+ _serializeWindowOptions(windowOptions: Record<string, unknown>): string;
60
+ /**
61
+ * Creates the URL for the new window, including the
62
+ * config GET parameter
63
+ *
64
+ * @returns URL
65
+ */
66
+ _createUrl(): string;
67
+ /**
68
+ * Move the newly created window roughly to
69
+ * where the component used to be.
70
+ */
71
+ _positionWindow(): void;
72
+ /**
73
+ * Callback when the new window is opened and the GoldenLayout instance
74
+ * within it is initialised
75
+ */
76
+ _onInitialised(): void;
77
+ /**
78
+ * Invoked 50ms after the window unload event
79
+ */
80
+ _onClose(): void;
81
+ }
82
+ export {};
83
+ //# sourceMappingURL=BrowserPopout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BrowserPopout.d.ts","sourceRoot":"","sources":["../../src/controls/BrowserPopout.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAU,YAAY,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAEtE,OAAO,KAAK,aAAa,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAA6B,YAAY,EAAE,MAAM,UAAU,CAAC;AAGnE,aAAK,iBAAiB,GAAG;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,YAAY;IACrD,aAAa,UAAS;IAEtB,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,cAAc,CAAgB;IACtC,OAAO,CAAC,aAAa,CAEL;IAChB,OAAO,CAAC,GAAG,CAAQ;gBAGjB,MAAM,EAAE,cAAc,EAAE,EACxB,UAAU,EAAE,iBAAiB,EAC7B,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,aAAa;IAY9B,QAAQ;IAkBR,aAAa;IAIb,SAAS;;;IAIT,KAAK;IAUL;;;OAGG;IACH,KAAK;IA2CL;;;OAGG;IACH,aAAa;IA+Db;;;;;;OAMG;IACH,uBAAuB,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAW9D;;;;;OAKG;IACH,UAAU;IAwBV;;;OAGG;IACH,eAAe;IAKf;;;OAGG;IACH,cAAc;IAMd;;OAEG;IACH,QAAQ;CAGT"}