@deephaven/golden-layout 0.22.3-beta.18 → 0.22.3-beta.21

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 (60) hide show
  1. package/dist/LayoutManager.js +60 -260
  2. package/dist/LayoutManager.js.map +1 -1
  3. package/dist/base.js.map +1 -1
  4. package/dist/config/Config.js.map +1 -1
  5. package/dist/config/ItemConfig.js.map +1 -1
  6. package/dist/container/ItemContainer.js +14 -50
  7. package/dist/container/ItemContainer.js.map +1 -1
  8. package/dist/container/index.js.map +1 -1
  9. package/dist/controls/BrowserPopout.js +17 -63
  10. package/dist/controls/BrowserPopout.js.map +1 -1
  11. package/dist/controls/DragProxy.js +13 -73
  12. package/dist/controls/DragProxy.js.map +1 -1
  13. package/dist/controls/DragSource.js +3 -19
  14. package/dist/controls/DragSource.js.map +1 -1
  15. package/dist/controls/DragSourceFromEvent.js +5 -24
  16. package/dist/controls/DragSourceFromEvent.js.map +1 -1
  17. package/dist/controls/DropTargetIndicator.js +0 -7
  18. package/dist/controls/DropTargetIndicator.js.map +1 -1
  19. package/dist/controls/Header.js +89 -233
  20. package/dist/controls/Header.js.map +1 -1
  21. package/dist/controls/HeaderButton.js +0 -9
  22. package/dist/controls/HeaderButton.js.map +1 -1
  23. package/dist/controls/Splitter.js +0 -14
  24. package/dist/controls/Splitter.js.map +1 -1
  25. package/dist/controls/Tab.js +21 -62
  26. package/dist/controls/Tab.js.map +1 -1
  27. package/dist/controls/TransitionIndicator.js +2 -21
  28. package/dist/controls/TransitionIndicator.js.map +1 -1
  29. package/dist/controls/index.js.map +1 -1
  30. package/dist/errors/ConfigurationError.js +0 -5
  31. package/dist/errors/ConfigurationError.js.map +1 -1
  32. package/dist/errors/index.js.map +1 -1
  33. package/dist/index.js.map +1 -1
  34. package/dist/items/AbstractContentItem.js +37 -133
  35. package/dist/items/AbstractContentItem.js.map +1 -1
  36. package/dist/items/Component.js +2 -27
  37. package/dist/items/Component.js.map +1 -1
  38. package/dist/items/Root.js +1 -26
  39. package/dist/items/Root.js.map +1 -1
  40. package/dist/items/RowOrColumn.js +32 -128
  41. package/dist/items/RowOrColumn.js.map +1 -1
  42. package/dist/items/Stack.js +27 -115
  43. package/dist/items/Stack.js.map +1 -1
  44. package/dist/items/index.js.map +1 -1
  45. package/dist/utils/BubblingEvent.js +0 -6
  46. package/dist/utils/BubblingEvent.js.map +1 -1
  47. package/dist/utils/ConfigMinifier.js +13 -26
  48. package/dist/utils/ConfigMinifier.js.map +1 -1
  49. package/dist/utils/DragListener.js +8 -47
  50. package/dist/utils/DragListener.js.map +1 -1
  51. package/dist/utils/EventEmitter.js +5 -25
  52. package/dist/utils/EventEmitter.js.map +1 -1
  53. package/dist/utils/EventHub.js +8 -27
  54. package/dist/utils/EventHub.js.map +1 -1
  55. package/dist/utils/ReactComponentHandler.js +6 -35
  56. package/dist/utils/ReactComponentHandler.js.map +1 -1
  57. package/dist/utils/index.js.map +1 -1
  58. package/dist/utils/utils.js +5 -11
  59. package/dist/utils/utils.js.map +1 -1
  60. package/package.json +2 -2
@@ -1 +1 @@
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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"}
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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"}
@@ -1 +1 @@
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"}
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,aAAa;AAAA,SACxBD,OAAO,IAAIE,SAAS"}
@@ -1,8 +1,6 @@
1
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
-
3
2
  import $ from 'jquery';
4
3
  import { getUniqueId, minifyConfig, EventEmitter } from "../utils/index.js";
5
-
6
4
  /**
7
5
  * Pops a content item out into a new browser window.
8
6
  * This is achieved by
@@ -22,39 +20,26 @@ import { getUniqueId, minifyConfig, EventEmitter } from "../utils/index.js";
22
20
  export default class BrowserPopout extends EventEmitter {
23
21
  constructor(config, dimensions, parentId, indexInParent, layoutManager) {
24
22
  super();
25
-
26
23
  _defineProperty(this, "isInitialised", false);
27
-
28
24
  _defineProperty(this, "_config", void 0);
29
-
30
25
  _defineProperty(this, "_dimensions", void 0);
31
-
32
26
  _defineProperty(this, "_parentId", void 0);
33
-
34
27
  _defineProperty(this, "_indexInParent", void 0);
35
-
36
28
  _defineProperty(this, "_layoutManager", void 0);
37
-
38
29
  _defineProperty(this, "_popoutWindow", null);
39
-
40
30
  _defineProperty(this, "_id", null);
41
-
42
31
  this._config = config;
43
32
  this._dimensions = dimensions;
44
33
  this._parentId = parentId;
45
34
  this._indexInParent = indexInParent;
46
35
  this._layoutManager = layoutManager;
47
-
48
36
  this._createWindow();
49
37
  }
50
-
51
38
  toConfig() {
52
39
  var _this$getGlInstance, _this$getGlInstance2, _ref, _this$_popoutWindow$s, _this$_popoutWindow, _this$_popoutWindow2, _ref2, _this$_popoutWindow$s2, _this$_popoutWindow3, _this$_popoutWindow4, _this$getGlInstance3;
53
-
54
40
  if (this.isInitialised === false) {
55
41
  throw new Error("Can't create config, layout not yet initialised");
56
42
  }
57
-
58
43
  return {
59
44
  dimensions: {
60
45
  width: (_this$getGlInstance = this.getGlInstance()) === null || _this$getGlInstance === void 0 ? void 0 : _this$getGlInstance.width,
@@ -67,46 +52,36 @@ export default class BrowserPopout extends EventEmitter {
67
52
  indexInParent: this._indexInParent
68
53
  };
69
54
  }
70
-
71
55
  getGlInstance() {
72
56
  var _this$_popoutWindow5;
73
-
74
57
  return (_this$_popoutWindow5 = this._popoutWindow) === null || _this$_popoutWindow5 === void 0 ? void 0 : _this$_popoutWindow5.__glInstance;
75
58
  }
76
-
77
59
  getWindow() {
78
60
  return this._popoutWindow;
79
61
  }
80
-
81
62
  close() {
82
63
  if (this.getGlInstance()) {
83
64
  var _this$getGlInstance4;
84
-
85
65
  (_this$getGlInstance4 = this.getGlInstance()) === null || _this$getGlInstance4 === void 0 ? void 0 : _this$getGlInstance4._$closeWindow();
86
66
  } else {
87
67
  try {
88
68
  var _this$getWindow;
89
-
90
69
  (_this$getWindow = this.getWindow()) === null || _this$getWindow === void 0 ? void 0 : _this$getWindow.close();
91
70
  } catch (e) {}
92
71
  }
93
72
  }
73
+
94
74
  /**
95
75
  * Returns the popped out item to its original position. If the original
96
76
  * parent isn't available anymore it falls back to the layout's topmost element
97
77
  */
98
-
99
-
100
78
  popIn() {
101
79
  var _parentItem;
102
-
103
80
  var index = this._indexInParent;
104
81
  var childConfig = null;
105
82
  var parentItem = null;
106
-
107
83
  if (this._parentId) {
108
84
  var _this$getGlInstance5;
109
-
110
85
  /*
111
86
  * The $.extend call seems a bit pointless, but it's crucial to
112
87
  * copy the config returned by this.getGlInstance().toConfig()
@@ -118,37 +93,32 @@ export default class BrowserPopout extends EventEmitter {
118
93
  */
119
94
  childConfig = $.extend(true, {}, (_this$getGlInstance5 = this.getGlInstance()) === null || _this$getGlInstance5 === void 0 ? void 0 : _this$getGlInstance5.toConfig()).content[0];
120
95
  parentItem = this._layoutManager.root.getItemsById(this._parentId)[0];
96
+
121
97
  /*
122
98
  * Fallback if parentItem is not available. Either add it to the topmost
123
99
  * item or make it the topmost item if the layout is empty
124
100
  */
125
-
126
101
  if (!parentItem) {
127
102
  var _this$_layoutManager$;
128
-
129
103
  if (((_this$_layoutManager$ = this._layoutManager.root.contentItems.length) !== null && _this$_layoutManager$ !== void 0 ? _this$_layoutManager$ : 0) > 0) {
130
104
  parentItem = this._layoutManager.root.contentItems[0];
131
105
  } else {
132
106
  parentItem = this._layoutManager.root;
133
107
  }
134
-
135
108
  index = 0;
136
109
  }
137
110
  }
138
-
139
111
  if (!childConfig) {
140
112
  return;
141
113
  }
142
-
143
114
  (_parentItem = parentItem) === null || _parentItem === void 0 ? void 0 : _parentItem.addChild(childConfig, this._indexInParent);
144
115
  this.close();
145
116
  }
117
+
146
118
  /**
147
119
  * Creates the URL and window parameter
148
120
  * and opens a new window
149
121
  */
150
-
151
-
152
122
  _createWindow() {
153
123
  var url = this._createUrl();
154
124
  /**
@@ -156,13 +126,10 @@ export default class BrowserPopout extends EventEmitter {
156
126
  * same title. The actual title will be set by the new window's
157
127
  * GoldenLayout instance if it detects that it is in subWindowMode
158
128
  */
159
-
160
-
161
129
  var title = Math.floor(Math.random() * 1000000).toString(36);
162
130
  /**
163
131
  * The options as used in the window.open string
164
132
  */
165
-
166
133
  var options = this._serializeWindowOptions({
167
134
  width: this._dimensions.width,
168
135
  height: this._dimensions.height,
@@ -175,11 +142,10 @@ export default class BrowserPopout extends EventEmitter {
175
142
  resizable: 'yes',
176
143
  scrollbars: 'no',
177
144
  status: 'no'
178
- }); // I'm not entirely sure how __glInstance is mounted to the popout window
179
-
145
+ });
180
146
 
147
+ // I'm not entirely sure how __glInstance is mounted to the popout window
181
148
  this._popoutWindow = window.open(url, title, options);
182
-
183
149
  if (!this._popoutWindow) {
184
150
  if (this._layoutManager.config.settings.blockedPopoutsThrowError === true) {
185
151
  var error = new Error('Popout blocked');
@@ -189,25 +155,23 @@ export default class BrowserPopout extends EventEmitter {
189
155
  return;
190
156
  }
191
157
  }
192
-
193
158
  $(this._popoutWindow).on('load', this._positionWindow.bind(this)).on('unload beforeunload', this._onClose.bind(this));
159
+
194
160
  /**
195
161
  * Polling the childwindow to find out if GoldenLayout has been initialised
196
162
  * doesn't seem optimal, but the alternatives - adding a callback to the parent
197
163
  * window or raising an event on the window object - both would introduce knowledge
198
164
  * about the parent to the child window which we'd rather avoid
199
165
  */
200
-
201
166
  var checkReadyInterval = window.setInterval(() => {
202
167
  var _this$_popoutWindow6;
203
-
204
168
  if ((_this$_popoutWindow6 = this._popoutWindow) !== null && _this$_popoutWindow6 !== void 0 && _this$_popoutWindow6.__glInstance && this._popoutWindow.__glInstance.isInitialised) {
205
169
  this._onInitialised();
206
-
207
170
  window.clearInterval(checkReadyInterval);
208
171
  }
209
172
  }, 10);
210
173
  }
174
+
211
175
  /**
212
176
  * Serialises a map of key:values to a window options string
213
177
  *
@@ -215,80 +179,70 @@ export default class BrowserPopout extends EventEmitter {
215
179
  *
216
180
  * @returns serialised window options
217
181
  */
218
-
219
-
220
182
  _serializeWindowOptions(windowOptions) {
221
183
  var windowOptionsString = [],
222
- key;
223
-
184
+ key;
224
185
  for (key in windowOptions) {
225
186
  windowOptionsString.push(key + '=' + windowOptions[key]);
226
187
  }
227
-
228
188
  return windowOptionsString.join(',');
229
189
  }
190
+
230
191
  /**
231
192
  * Creates the URL for the new window, including the
232
193
  * config GET parameter
233
194
  *
234
195
  * @returns URL
235
196
  */
236
-
237
-
238
197
  _createUrl() {
239
198
  var config = {
240
199
  content: this._config
241
200
  };
242
201
  var storageKey = 'gl-window-config-' + getUniqueId();
243
202
  config = minifyConfig(config);
244
-
245
203
  try {
246
204
  localStorage.setItem(storageKey, JSON.stringify(config));
247
205
  } catch (e) {
248
206
  throw new Error('Error while writing to localStorage ' + e.toString());
249
207
  }
208
+ var urlParts = document.location.href.split('?');
250
209
 
251
- var urlParts = document.location.href.split('?'); // URL doesn't contain GET-parameters
252
-
210
+ // URL doesn't contain GET-parameters
253
211
  if (urlParts.length === 1) {
254
- return urlParts[0] + '?gl-window=' + storageKey; // URL contains GET-parameters
212
+ return urlParts[0] + '?gl-window=' + storageKey;
213
+
214
+ // URL contains GET-parameters
255
215
  } else {
256
216
  return document.location.href + '&gl-window=' + storageKey;
257
217
  }
258
218
  }
219
+
259
220
  /**
260
221
  * Move the newly created window roughly to
261
222
  * where the component used to be.
262
223
  */
263
-
264
-
265
224
  _positionWindow() {
266
225
  var _this$_popoutWindow7, _this$_popoutWindow8;
267
-
268
226
  (_this$_popoutWindow7 = this._popoutWindow) === null || _this$_popoutWindow7 === void 0 ? void 0 : _this$_popoutWindow7.moveTo(this._dimensions.left, this._dimensions.top);
269
227
  (_this$_popoutWindow8 = this._popoutWindow) === null || _this$_popoutWindow8 === void 0 ? void 0 : _this$_popoutWindow8.focus();
270
228
  }
229
+
271
230
  /**
272
231
  * Callback when the new window is opened and the GoldenLayout instance
273
232
  * within it is initialised
274
233
  */
275
-
276
-
277
234
  _onInitialised() {
278
235
  var _this$getGlInstance6;
279
-
280
236
  this.isInitialised = true;
281
237
  (_this$getGlInstance6 = this.getGlInstance()) === null || _this$getGlInstance6 === void 0 ? void 0 : _this$getGlInstance6.on('popIn', this.popIn, this);
282
238
  this.emit('initialised');
283
239
  }
240
+
284
241
  /**
285
242
  * Invoked 50ms after the window unload event
286
243
  */
287
-
288
-
289
244
  _onClose() {
290
245
  setTimeout(this.emit.bind(this, 'closed'), 50);
291
246
  }
292
-
293
247
  }
294
248
  //# sourceMappingURL=BrowserPopout.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BrowserPopout.js","names":["$","getUniqueId","minifyConfig","EventEmitter","BrowserPopout","constructor","config","dimensions","parentId","indexInParent","layoutManager","_config","_dimensions","_parentId","_indexInParent","_layoutManager","_createWindow","toConfig","isInitialised","Error","width","getGlInstance","height","left","_popoutWindow","screenX","screenLeft","top","screenY","screenTop","content","__glInstance","getWindow","close","_$closeWindow","e","popIn","index","childConfig","parentItem","extend","root","getItemsById","contentItems","length","addChild","url","_createUrl","title","Math","floor","random","toString","options","_serializeWindowOptions","innerWidth","innerHeight","menubar","toolbar","location","personalbar","resizable","scrollbars","status","window","open","settings","blockedPopoutsThrowError","error","type","on","_positionWindow","bind","_onClose","checkReadyInterval","setInterval","_onInitialised","clearInterval","windowOptions","windowOptionsString","key","push","join","storageKey","localStorage","setItem","JSON","stringify","urlParts","document","href","split","moveTo","focus","emit","setTimeout"],"sources":["../../src/controls/BrowserPopout.ts"],"sourcesContent":["import $ from 'jquery';\nimport type { Config, PopoutConfig, ItemConfigType } from '../config';\nimport type Root from '../items/Root';\nimport type LayoutManager from '../LayoutManager';\nimport { getUniqueId, minifyConfig, EventEmitter } from '../utils';\nimport { AbstractContentItem } from '..';\n\ntype BrowserDimensions = {\n width: number;\n height: number;\n top: number;\n left: number;\n};\n\n/**\n * Pops a content item out into a new browser window.\n * This is achieved by\n *\n * - Creating a new configuration with the content item as root element\n * - Serializing and minifying the configuration\n * - Opening the current window's URL with the configuration as a GET parameter\n * - GoldenLayout when opened in the new window will look for the GET parameter\n * and use it instead of the provided configuration\n *\n * @param config GoldenLayout item config\n * @param dimensions A map with width, height, top and left\n * @param parentId The id of the element the item will be appended to on popIn\n * @param indexInParent The position of this element within its parent\n * @param layoutManager\n */\nexport default class BrowserPopout extends EventEmitter {\n isInitialised = false;\n\n private _config: ItemConfigType[];\n private _dimensions: BrowserDimensions;\n private _parentId: string;\n private _indexInParent: number;\n private _layoutManager: LayoutManager;\n private _popoutWindow:\n | (Window & { __glInstance: LayoutManager })\n | null = null;\n private _id = null;\n\n constructor(\n config: ItemConfigType[],\n dimensions: BrowserDimensions,\n parentId: string,\n indexInParent: number,\n layoutManager: LayoutManager\n ) {\n super();\n\n this._config = config;\n this._dimensions = dimensions;\n this._parentId = parentId;\n this._indexInParent = indexInParent;\n this._layoutManager = layoutManager;\n this._createWindow();\n }\n\n toConfig() {\n if (this.isInitialised === false) {\n throw new Error(\"Can't create config, layout not yet initialised\");\n }\n return ({\n dimensions: {\n width: this.getGlInstance()?.width,\n height: this.getGlInstance()?.height,\n left:\n this._popoutWindow?.screenX ?? this._popoutWindow?.screenLeft ?? 0,\n top: this._popoutWindow?.screenY ?? this._popoutWindow?.screenTop ?? 0,\n },\n content: this.getGlInstance()?.toConfig().content,\n parentId: this._parentId,\n indexInParent: this._indexInParent,\n } as unknown) as PopoutConfig;\n }\n\n getGlInstance() {\n return this._popoutWindow?.__glInstance;\n }\n\n getWindow() {\n return this._popoutWindow;\n }\n\n close() {\n if (this.getGlInstance()) {\n this.getGlInstance()?._$closeWindow();\n } else {\n try {\n this.getWindow()?.close();\n } catch (e) {}\n }\n }\n\n /**\n * Returns the popped out item to its original position. If the original\n * parent isn't available anymore it falls back to the layout's topmost element\n */\n popIn() {\n let index = this._indexInParent;\n let childConfig: ItemConfigType | null = null;\n let parentItem: AbstractContentItem | null = null;\n\n if (this._parentId) {\n /*\n * The $.extend call seems a bit pointless, but it's crucial to\n * copy the config returned by this.getGlInstance().toConfig()\n * onto a new object. Internet Explorer keeps the references\n * to objects on the child window, resulting in the following error\n * once the child window is closed:\n *\n * The callee (server [not server application]) is not available and disappeared\n */\n childConfig = $.extend(true, {}, this.getGlInstance()?.toConfig())\n .content[0];\n parentItem = this._layoutManager.root.getItemsById(\n this._parentId\n )[0] as Root;\n\n /*\n * Fallback if parentItem is not available. Either add it to the topmost\n * item or make it the topmost item if the layout is empty\n */\n if (!parentItem) {\n if ((this._layoutManager.root.contentItems.length ?? 0) > 0) {\n parentItem = this._layoutManager.root.contentItems[0];\n } else {\n parentItem = this._layoutManager.root;\n }\n index = 0;\n }\n }\n\n if (!childConfig) {\n return;\n }\n\n parentItem?.addChild(childConfig, this._indexInParent);\n this.close();\n }\n\n /**\n * Creates the URL and window parameter\n * and opens a new window\n */\n _createWindow() {\n const url = this._createUrl();\n /**\n * Bogus title to prevent re-usage of existing window with the\n * same title. The actual title will be set by the new window's\n * GoldenLayout instance if it detects that it is in subWindowMode\n */\n const title = Math.floor(Math.random() * 1000000).toString(36);\n /**\n * The options as used in the window.open string\n */\n const options = this._serializeWindowOptions({\n width: this._dimensions.width,\n height: this._dimensions.height,\n innerWidth: this._dimensions.width,\n innerHeight: this._dimensions.height,\n menubar: 'no',\n toolbar: 'no',\n location: 'no',\n personalbar: 'no',\n resizable: 'yes',\n scrollbars: 'no',\n status: 'no',\n });\n\n // I'm not entirely sure how __glInstance is mounted to the popout window\n this._popoutWindow = window.open(url, title, options) as Window & {\n __glInstance: LayoutManager;\n };\n\n if (!this._popoutWindow) {\n if (\n this._layoutManager.config.settings.blockedPopoutsThrowError === true\n ) {\n const error = new Error('Popout blocked') as Error & { type: string };\n error.type = 'popoutBlocked';\n throw error;\n } else {\n return;\n }\n }\n\n $(this._popoutWindow)\n .on('load', this._positionWindow.bind(this))\n .on('unload beforeunload', this._onClose.bind(this));\n\n /**\n * Polling the childwindow to find out if GoldenLayout has been initialised\n * doesn't seem optimal, but the alternatives - adding a callback to the parent\n * window or raising an event on the window object - both would introduce knowledge\n * about the parent to the child window which we'd rather avoid\n */\n let checkReadyInterval = window.setInterval(() => {\n if (\n this._popoutWindow?.__glInstance &&\n this._popoutWindow.__glInstance.isInitialised\n ) {\n this._onInitialised();\n window.clearInterval(checkReadyInterval);\n }\n }, 10);\n }\n\n /**\n * Serialises a map of key:values to a window options string\n *\n * @param windowOptions\n *\n * @returns serialised window options\n */\n _serializeWindowOptions(windowOptions: Record<string, unknown>) {\n var windowOptionsString = [],\n key;\n\n for (key in windowOptions) {\n windowOptionsString.push(key + '=' + windowOptions[key]);\n }\n\n return windowOptionsString.join(',');\n }\n\n /**\n * Creates the URL for the new window, including the\n * config GET parameter\n *\n * @returns URL\n */\n _createUrl() {\n var config: Partial<Config> = { content: this._config };\n const storageKey = 'gl-window-config-' + getUniqueId();\n\n config = minifyConfig(config);\n\n try {\n localStorage.setItem(storageKey, JSON.stringify(config));\n } catch (e: any) {\n throw new Error('Error while writing to localStorage ' + e.toString());\n }\n\n const urlParts = document.location.href.split('?');\n\n // URL doesn't contain GET-parameters\n if (urlParts.length === 1) {\n return urlParts[0] + '?gl-window=' + storageKey;\n\n // URL contains GET-parameters\n } else {\n return document.location.href + '&gl-window=' + storageKey;\n }\n }\n\n /**\n * Move the newly created window roughly to\n * where the component used to be.\n */\n _positionWindow() {\n this._popoutWindow?.moveTo(this._dimensions.left, this._dimensions.top);\n this._popoutWindow?.focus();\n }\n\n /**\n * Callback when the new window is opened and the GoldenLayout instance\n * within it is initialised\n */\n _onInitialised() {\n this.isInitialised = true;\n this.getGlInstance()?.on('popIn', this.popIn, this);\n this.emit('initialised');\n }\n\n /**\n * Invoked 50ms after the window unload event\n */\n _onClose() {\n setTimeout(this.emit.bind(this, 'closed'), 50);\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"BrowserPopout.js","names":["$","getUniqueId","minifyConfig","EventEmitter","BrowserPopout","constructor","config","dimensions","parentId","indexInParent","layoutManager","_config","_dimensions","_parentId","_indexInParent","_layoutManager","_createWindow","toConfig","isInitialised","Error","width","getGlInstance","height","left","_popoutWindow","screenX","screenLeft","top","screenY","screenTop","content","__glInstance","getWindow","close","_$closeWindow","e","popIn","index","childConfig","parentItem","extend","root","getItemsById","contentItems","length","addChild","url","_createUrl","title","Math","floor","random","toString","options","_serializeWindowOptions","innerWidth","innerHeight","menubar","toolbar","location","personalbar","resizable","scrollbars","status","window","open","settings","blockedPopoutsThrowError","error","type","on","_positionWindow","bind","_onClose","checkReadyInterval","setInterval","_onInitialised","clearInterval","windowOptions","windowOptionsString","key","push","join","storageKey","localStorage","setItem","JSON","stringify","urlParts","document","href","split","moveTo","focus","emit","setTimeout"],"sources":["../../src/controls/BrowserPopout.ts"],"sourcesContent":["import $ from 'jquery';\nimport type { Config, PopoutConfig, ItemConfigType } from '../config';\nimport type Root from '../items/Root';\nimport type LayoutManager from '../LayoutManager';\nimport { getUniqueId, minifyConfig, EventEmitter } from '../utils';\nimport { AbstractContentItem } from '..';\n\ntype BrowserDimensions = {\n width: number;\n height: number;\n top: number;\n left: number;\n};\n\n/**\n * Pops a content item out into a new browser window.\n * This is achieved by\n *\n * - Creating a new configuration with the content item as root element\n * - Serializing and minifying the configuration\n * - Opening the current window's URL with the configuration as a GET parameter\n * - GoldenLayout when opened in the new window will look for the GET parameter\n * and use it instead of the provided configuration\n *\n * @param config GoldenLayout item config\n * @param dimensions A map with width, height, top and left\n * @param parentId The id of the element the item will be appended to on popIn\n * @param indexInParent The position of this element within its parent\n * @param layoutManager\n */\nexport default class BrowserPopout extends EventEmitter {\n isInitialised = false;\n\n private _config: ItemConfigType[];\n private _dimensions: BrowserDimensions;\n private _parentId: string;\n private _indexInParent: number;\n private _layoutManager: LayoutManager;\n private _popoutWindow:\n | (Window & { __glInstance: LayoutManager })\n | null = null;\n private _id = null;\n\n constructor(\n config: ItemConfigType[],\n dimensions: BrowserDimensions,\n parentId: string,\n indexInParent: number,\n layoutManager: LayoutManager\n ) {\n super();\n\n this._config = config;\n this._dimensions = dimensions;\n this._parentId = parentId;\n this._indexInParent = indexInParent;\n this._layoutManager = layoutManager;\n this._createWindow();\n }\n\n toConfig() {\n if (this.isInitialised === false) {\n throw new Error(\"Can't create config, layout not yet initialised\");\n }\n return ({\n dimensions: {\n width: this.getGlInstance()?.width,\n height: this.getGlInstance()?.height,\n left:\n this._popoutWindow?.screenX ?? this._popoutWindow?.screenLeft ?? 0,\n top: this._popoutWindow?.screenY ?? this._popoutWindow?.screenTop ?? 0,\n },\n content: this.getGlInstance()?.toConfig().content,\n parentId: this._parentId,\n indexInParent: this._indexInParent,\n } as unknown) as PopoutConfig;\n }\n\n getGlInstance() {\n return this._popoutWindow?.__glInstance;\n }\n\n getWindow() {\n return this._popoutWindow;\n }\n\n close() {\n if (this.getGlInstance()) {\n this.getGlInstance()?._$closeWindow();\n } else {\n try {\n this.getWindow()?.close();\n } catch (e) {}\n }\n }\n\n /**\n * Returns the popped out item to its original position. If the original\n * parent isn't available anymore it falls back to the layout's topmost element\n */\n popIn() {\n let index = this._indexInParent;\n let childConfig: ItemConfigType | null = null;\n let parentItem: AbstractContentItem | null = null;\n\n if (this._parentId) {\n /*\n * The $.extend call seems a bit pointless, but it's crucial to\n * copy the config returned by this.getGlInstance().toConfig()\n * onto a new object. Internet Explorer keeps the references\n * to objects on the child window, resulting in the following error\n * once the child window is closed:\n *\n * The callee (server [not server application]) is not available and disappeared\n */\n childConfig = $.extend(true, {}, this.getGlInstance()?.toConfig())\n .content[0];\n parentItem = this._layoutManager.root.getItemsById(\n this._parentId\n )[0] as Root;\n\n /*\n * Fallback if parentItem is not available. Either add it to the topmost\n * item or make it the topmost item if the layout is empty\n */\n if (!parentItem) {\n if ((this._layoutManager.root.contentItems.length ?? 0) > 0) {\n parentItem = this._layoutManager.root.contentItems[0];\n } else {\n parentItem = this._layoutManager.root;\n }\n index = 0;\n }\n }\n\n if (!childConfig) {\n return;\n }\n\n parentItem?.addChild(childConfig, this._indexInParent);\n this.close();\n }\n\n /**\n * Creates the URL and window parameter\n * and opens a new window\n */\n _createWindow() {\n const url = this._createUrl();\n /**\n * Bogus title to prevent re-usage of existing window with the\n * same title. The actual title will be set by the new window's\n * GoldenLayout instance if it detects that it is in subWindowMode\n */\n const title = Math.floor(Math.random() * 1000000).toString(36);\n /**\n * The options as used in the window.open string\n */\n const options = this._serializeWindowOptions({\n width: this._dimensions.width,\n height: this._dimensions.height,\n innerWidth: this._dimensions.width,\n innerHeight: this._dimensions.height,\n menubar: 'no',\n toolbar: 'no',\n location: 'no',\n personalbar: 'no',\n resizable: 'yes',\n scrollbars: 'no',\n status: 'no',\n });\n\n // I'm not entirely sure how __glInstance is mounted to the popout window\n this._popoutWindow = window.open(url, title, options) as Window & {\n __glInstance: LayoutManager;\n };\n\n if (!this._popoutWindow) {\n if (\n this._layoutManager.config.settings.blockedPopoutsThrowError === true\n ) {\n const error = new Error('Popout blocked') as Error & { type: string };\n error.type = 'popoutBlocked';\n throw error;\n } else {\n return;\n }\n }\n\n $(this._popoutWindow)\n .on('load', this._positionWindow.bind(this))\n .on('unload beforeunload', this._onClose.bind(this));\n\n /**\n * Polling the childwindow to find out if GoldenLayout has been initialised\n * doesn't seem optimal, but the alternatives - adding a callback to the parent\n * window or raising an event on the window object - both would introduce knowledge\n * about the parent to the child window which we'd rather avoid\n */\n let checkReadyInterval = window.setInterval(() => {\n if (\n this._popoutWindow?.__glInstance &&\n this._popoutWindow.__glInstance.isInitialised\n ) {\n this._onInitialised();\n window.clearInterval(checkReadyInterval);\n }\n }, 10);\n }\n\n /**\n * Serialises a map of key:values to a window options string\n *\n * @param windowOptions\n *\n * @returns serialised window options\n */\n _serializeWindowOptions(windowOptions: Record<string, unknown>) {\n var windowOptionsString = [],\n key;\n\n for (key in windowOptions) {\n windowOptionsString.push(key + '=' + windowOptions[key]);\n }\n\n return windowOptionsString.join(',');\n }\n\n /**\n * Creates the URL for the new window, including the\n * config GET parameter\n *\n * @returns URL\n */\n _createUrl() {\n var config: Partial<Config> = { content: this._config };\n const storageKey = 'gl-window-config-' + getUniqueId();\n\n config = minifyConfig(config);\n\n try {\n localStorage.setItem(storageKey, JSON.stringify(config));\n } catch (e: any) {\n throw new Error('Error while writing to localStorage ' + e.toString());\n }\n\n const urlParts = document.location.href.split('?');\n\n // URL doesn't contain GET-parameters\n if (urlParts.length === 1) {\n return urlParts[0] + '?gl-window=' + storageKey;\n\n // URL contains GET-parameters\n } else {\n return document.location.href + '&gl-window=' + storageKey;\n }\n }\n\n /**\n * Move the newly created window roughly to\n * where the component used to be.\n */\n _positionWindow() {\n this._popoutWindow?.moveTo(this._dimensions.left, this._dimensions.top);\n this._popoutWindow?.focus();\n }\n\n /**\n * Callback when the new window is opened and the GoldenLayout instance\n * within it is initialised\n */\n _onInitialised() {\n this.isInitialised = true;\n this.getGlInstance()?.on('popIn', this.popIn, this);\n this.emit('initialised');\n }\n\n /**\n * Invoked 50ms after the window unload event\n */\n _onClose() {\n setTimeout(this.emit.bind(this, 'closed'), 50);\n }\n}\n"],"mappings":"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"}