@deephaven/golden-layout 0.19.2-beta.10 → 0.19.2-beta.11

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
@@ -1,92 +1,104 @@
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
- import DragProxy from './DragProxy.js';
4
+ import { isComponent } from "../items/index.js";
5
+ import { DragListener } from "../utils/index.js";
6
+ import DragProxy from "./DragProxy.js";
7
+
4
8
  /**
5
9
  * Represents an individual tab within a Stack's header
6
10
  *
7
- * @param {lm.controls.Header} header
8
- * @param {lm.items.AbstractContentItem} contentItem
9
- *
10
- * @constructor
11
+ * @param header
12
+ * @param contentItem
11
13
  */
14
+ export default class Tab {
15
+ /**
16
+ * The tab's html template
17
+ */
18
+ constructor(header, contentItem) {
19
+ var _this$_layoutManager$;
12
20
 
13
- var Tab = function Tab(header, contentItem) {
14
- this.header = header;
15
- this.contentItem = contentItem;
16
- this.element = $(Tab._template);
17
- this.titleElement = this.element.find('.lm_title');
18
- this.closeElement = this.element.find('.lm_close_tab');
19
- this.closeElement[contentItem.config.isClosable ? 'show' : 'hide']();
20
- this.isActive = false;
21
- this.setTitle(contentItem.config.title);
22
- this.contentItem.on('titleChanged', this.setTitle, this);
23
- this._layoutManager = this.contentItem.layoutManager;
21
+ _defineProperty(this, "header", void 0);
24
22
 
25
- if (this._layoutManager.config.settings.reorderEnabled === true && contentItem.config.reorderEnabled === true) {
26
- this._dragListener = new utils.DragListener(this.element);
23
+ _defineProperty(this, "contentItem", void 0);
27
24
 
28
- this._dragListener.on('dragStart', this._onDragStart, this);
25
+ _defineProperty(this, "element", $(Tab._template));
29
26
 
30
- this.contentItem.on('destroy', this._dragListener.destroy, this._dragListener);
31
- }
27
+ _defineProperty(this, "titleElement", void 0);
32
28
 
33
- this._onTabClickFn = utils.fnBind(this._onTabClick, this);
34
- this._onCloseClickFn = utils.fnBind(this._onCloseClick, this);
35
- this._onTabContentFocusInFn = utils.fnBind(this._onTabContentFocusIn, this);
36
- this._onTabContentFocusOutFn = utils.fnBind(this._onTabContentFocusOut, this);
37
- this.element.on('click', this._onTabClickFn);
38
- this.element.on('auxclick', this._onTabClickFn);
39
-
40
- if (this.contentItem.config.isClosable) {
41
- this.closeElement.on('click', this._onCloseClickFn);
42
- this.closeElement.on('mousedown', this._onCloseMousedown);
43
- } else {
44
- this.closeElement.remove();
45
- }
29
+ _defineProperty(this, "closeElement", void 0);
46
30
 
47
- this.contentItem.tab = this;
48
- this.contentItem.emit('tab', this);
49
- this.contentItem.layoutManager.emit('tabCreated', this);
31
+ _defineProperty(this, "isActive", false);
50
32
 
51
- if (this.contentItem.isComponent) {
52
- // add focus class to tab when content
53
- this.contentItem.container._contentElement.on('focusin click', this._onTabContentFocusInFn).on('focusout', this._onTabContentFocusOutFn);
33
+ _defineProperty(this, "_layoutManager", void 0);
54
34
 
55
- this.contentItem.container.tab = this;
56
- this.contentItem.container.emit('tab', this);
57
- }
58
- };
59
- /**
60
- * The tab's html template
61
- *
62
- * @type {String}
63
- */
35
+ _defineProperty(this, "_dragListener", void 0);
36
+
37
+ this.header = header;
38
+ this.contentItem = contentItem;
39
+ this.titleElement = this.element.find('.lm_title');
40
+ this.closeElement = this.element.find('.lm_close_tab');
41
+ this.closeElement[contentItem.config.isClosable ? 'show' : 'hide']();
42
+ this.setTitle(contentItem.config.title);
43
+ this.contentItem.on('titleChanged', this.setTitle, this);
44
+ this._layoutManager = this.contentItem.layoutManager;
45
+
46
+ if ((_this$_layoutManager$ = this._layoutManager.config.settings) !== null && _this$_layoutManager$ !== void 0 && _this$_layoutManager$.reorderEnabled && contentItem.config.reorderEnabled) {
47
+ this._dragListener = new DragListener(this.element);
48
+
49
+ this._dragListener.on('dragStart', this._onDragStart, this);
50
+
51
+ this.contentItem.on('destroy', this._dragListener.destroy, this._dragListener);
52
+ }
53
+
54
+ this._onTabClick = this._onTabClick.bind(this);
55
+ this._onCloseClick = this._onCloseClick.bind(this);
56
+ this._onTabContentFocusIn = this._onTabContentFocusIn.bind(this);
57
+ this._onTabContentFocusOut = this._onTabContentFocusOut.bind(this);
58
+ this.element.on('click', this._onTabClick);
59
+ this.element.on('auxclick', this._onTabClick);
60
+
61
+ if (this.contentItem.config.isClosable) {
62
+ this.closeElement.on('click', this._onCloseClick);
63
+ this.closeElement.on('mousedown', this._onCloseMousedown);
64
+ } else {
65
+ this.closeElement.remove();
66
+ }
67
+
68
+ this.contentItem.tab = this;
69
+ this.contentItem.emit('tab', this);
70
+ this.contentItem.layoutManager.emit('tabCreated', this);
64
71
 
72
+ if (isComponent(this.contentItem)) {
73
+ // add focus class to tab when content
74
+ this.contentItem.container._contentElement.on('focusin click', this._onTabContentFocusIn).on('focusout', this._onTabContentFocusOut);
65
75
 
66
- Tab._template = ['<li class="lm_tab">', '<span class="lm_title_before"></span>', '<span class="lm_title"></span>', '<div class="lm_close_tab"></div>', '</li>'].join('');
67
- utils.copy(Tab.prototype, {
76
+ this.contentItem.container.tab = this;
77
+ this.contentItem.container.emit('tab', this);
78
+ }
79
+ }
68
80
  /**
69
81
  * Sets the tab's title to the provided string and sets
70
82
  * its title attribute to a pure text representation (without
71
83
  * html tags) of the same string.
72
- *
73
- * @public
74
- * @param {String} title can contain html
84
+ * @param title can contain html
75
85
  */
76
- setTitle: function setTitle(title) {
86
+
87
+
88
+ setTitle() {
89
+ var title = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
77
90
  // Disabling for illumon project, we want to manage our own tooltips
78
91
  // this.element.attr( 'title', lm.utils.stripTags( title ) );
79
92
  this.titleElement.html(title);
80
- },
81
-
93
+ }
82
94
  /**
83
95
  * Sets this tab's active state. To programmatically
84
96
  * switch tabs, use header.setActiveContentItem( item ) instead.
85
- *
86
- * @public
87
- * @param {Boolean} isActive
97
+ * @param isActive
88
98
  */
89
- setActive: function setActive(isActive) {
99
+
100
+
101
+ setActive(isActive) {
90
102
  if (isActive === this.isActive) {
91
103
  return;
92
104
  }
@@ -98,20 +110,21 @@ utils.copy(Tab.prototype, {
98
110
  } else {
99
111
  this.element.removeClass('lm_active');
100
112
  }
101
- },
102
-
113
+ }
103
114
  /**
104
115
  * Destroys the tab
105
116
  *
106
117
  * @private
107
118
  * @returns {void}
108
119
  */
109
- _$destroy: function _$destroy() {
110
- this.element.off('click', this._onTabClickFn);
111
- this.element.off('auxclick', this._onTabClickFn);
112
- this.closeElement.off('click', this._onCloseClickFn);
113
120
 
114
- if (this.contentItem.isComponent) {
121
+
122
+ _$destroy() {
123
+ this.element.off('click', this._onTabClick);
124
+ this.element.off('auxclick', this._onTabClick);
125
+ this.closeElement.off('click', this._onCloseClick);
126
+
127
+ if (isComponent(this.contentItem)) {
115
128
  this.contentItem.container._contentElement.off();
116
129
  }
117
130
 
@@ -120,29 +133,32 @@ utils.copy(Tab.prototype, {
120
133
 
121
134
  this._dragListener.off('dragStart', this._onDragStart);
122
135
 
123
- this._dragListener = null;
136
+ this._dragListener = undefined;
124
137
  }
125
138
 
126
139
  this.element.remove();
127
- },
128
-
140
+ }
129
141
  /**
130
142
  * Callback for the DragListener
131
143
  *
132
- * @param {Number} x The tabs absolute x position
133
- * @param {Number} y The tabs absolute y position
134
- *
135
- * @private
136
- * @returns {void}
144
+ * @param x The tabs absolute x position
145
+ * @param y The tabs absolute y position
137
146
  */
138
- _onDragStart: function _onDragStart(x, y) {
139
- if (this.contentItem.parent.isMaximised === true) {
147
+
148
+
149
+ _onDragStart(x, y) {
150
+ var _this$contentItem$par;
151
+
152
+ if ((_this$contentItem$par = this.contentItem.parent) !== null && _this$contentItem$par !== void 0 && _this$contentItem$par.isMaximised) {
140
153
  this.contentItem.parent.toggleMaximise();
141
154
  }
142
155
 
143
- new DragProxy(x, y, this._dragListener, this._layoutManager, this.contentItem, this.header.parent);
144
- },
156
+ if (!this._dragListener) {
157
+ return;
158
+ }
145
159
 
160
+ new DragProxy(x, y, this._dragListener, this._layoutManager, this.contentItem, this.header.parent);
161
+ }
146
162
  /**
147
163
  * Callback when the contentItem is focused in
148
164
  *
@@ -152,14 +168,11 @@ utils.copy(Tab.prototype, {
152
168
  * assume that the surrogate already propagated from triggering the native event and prevent that from happening
153
169
  * again here. This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the bubbling surrogate
154
170
  * propagates *after* the non-bubbling base), but that seems less bad than duplication."
155
- *
156
- * @param {jQuery DOM event} event
157
- *
158
- * @private
159
- * @returns {void}
160
171
  */
161
- _onTabContentFocusIn: function _onTabContentFocusIn() {
162
- if (!this.contentItem.container._contentElement[0].contains(document.activeElement)) {
172
+
173
+
174
+ _onTabContentFocusIn() {
175
+ if (isComponent(this.contentItem) && !this.contentItem.container._contentElement[0].contains(document.activeElement)) {
163
176
  // jquery 3.4.0 and later, jquery method optimizes out the focus from
164
177
  // happening in proper order. Can use HTMLElement.focus() to avoid.
165
178
  this.contentItem.container._contentElement[0].focus(); // [0] needed to use dom focus, not jquery method
@@ -167,8 +180,7 @@ utils.copy(Tab.prototype, {
167
180
  }
168
181
 
169
182
  this.element.addClass('lm_focusin');
170
- },
171
-
183
+ }
172
184
  /**
173
185
  * Callback when the contentItem is focused out
174
186
  *
@@ -177,29 +189,31 @@ utils.copy(Tab.prototype, {
177
189
  * @private
178
190
  * @returns {void}
179
191
  */
180
- _onTabContentFocusOut: function _onTabContentFocusOut() {
181
- if (!this.contentItem.container._contentElement[0].contains(document.activeElement)) {
192
+
193
+
194
+ _onTabContentFocusOut() {
195
+ if (isComponent(this.contentItem) && !this.contentItem.container._contentElement[0].contains(document.activeElement)) {
182
196
  this.element.removeClass('lm_focusin');
183
197
  }
184
- },
185
-
198
+ }
186
199
  /**
187
200
  * Callback when the tab is clicked
188
201
  *
189
- * @param {jQuery DOM event} event
190
- *
191
- * @private
192
- * @returns {void}
202
+ * @param event
193
203
  */
194
- _onTabClick: function _onTabClick(event) {
204
+
205
+
206
+ _onTabClick(event) {
195
207
  // left mouse button or tap
196
208
  if (!event || event.button === 0) {
209
+ var _this$element$get;
210
+
197
211
  var activeContentItem = this.header.parent.getActiveContentItem();
198
212
 
199
- if (this.contentItem !== activeContentItem) {
213
+ if (this.contentItem !== activeContentItem && isComponent(this.contentItem)) {
200
214
  this.header.parent.setActiveContentItem(this.contentItem);
201
215
  this.contentItem.container.emit('tabClicked');
202
- } else if (this.contentItem.isComponent && !this.contentItem.container._contentElement[0].contains(document.activeElement)) {
216
+ } else if (isComponent(this.contentItem) && !this.contentItem.container._contentElement[0].contains(document.activeElement)) {
203
217
  // if no focus inside put focus onto the container
204
218
  // so focusin always fires for tabclicks
205
219
  this.contentItem.container._contentElement.focus(); // still emit tab clicked event, so panels can also
@@ -213,7 +227,7 @@ utils.copy(Tab.prototype, {
213
227
  this.header._hideAdditionalTabsDropdown(); // makes sure clicked tabs scrollintoview (either those partially offscreen or in dropdown)
214
228
 
215
229
 
216
- this.element.get(0).scrollIntoView({
230
+ (_this$element$get = this.element.get(0)) === null || _this$element$get === void 0 ? void 0 : _this$element$get.scrollIntoView({
217
231
  inline: 'nearest' // behaviour smooth is not possible here, as when a tab becomes active it may attempt to take focus
218
232
  // which interupts any scroll behaviour from completeting
219
233
 
@@ -221,39 +235,37 @@ utils.copy(Tab.prototype, {
221
235
  } else if (event.button === 1 && this.contentItem.config.isClosable) {
222
236
  this._onCloseClick(event);
223
237
  }
224
- },
225
-
238
+ }
226
239
  /**
227
240
  * Callback when the tab's close button is
228
241
  * clicked
229
242
  *
230
- * @param {jQuery DOM event} event
231
- *
232
- * @private
233
- * @returns {void}
243
+ * @param event
234
244
  */
235
- _onCloseClick: function _onCloseClick(event) {
245
+
246
+
247
+ _onCloseClick(event) {
236
248
  event.stopPropagation();
237
249
 
238
- if (this.contentItem.isComponent) {
250
+ if (isComponent(this.contentItem)) {
239
251
  this.contentItem.container.close();
240
252
  } else {
241
253
  this.header.parent.removeChild(this.contentItem);
242
254
  }
243
- },
244
-
255
+ }
245
256
  /**
246
257
  * Callback to capture tab close button mousedown
247
258
  * to prevent tab from activating.
248
259
  *
249
- * @param (jQuery DOM event) event
250
- *
251
- * @private
252
- * @returns {void}
260
+ * @param event
253
261
  */
254
- _onCloseMousedown: function _onCloseMousedown(event) {
262
+
263
+
264
+ _onCloseMousedown(event) {
255
265
  event.stopPropagation();
256
266
  }
257
- });
258
- export default Tab;
267
+
268
+ }
269
+
270
+ _defineProperty(Tab, "_template", ['<li class="lm_tab">', '<span class="lm_title_before"></span>', '<span class="lm_title"></span>', '<div class="lm_close_tab"></div>', '</li>'].join(''));
259
271
  //# sourceMappingURL=Tab.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Tab.js","names":["$","utils","DragProxy","Tab","header","contentItem","element","_template","titleElement","find","closeElement","config","isClosable","isActive","setTitle","title","on","_layoutManager","layoutManager","settings","reorderEnabled","_dragListener","DragListener","_onDragStart","destroy","_onTabClickFn","fnBind","_onTabClick","_onCloseClickFn","_onCloseClick","_onTabContentFocusInFn","_onTabContentFocusIn","_onTabContentFocusOutFn","_onTabContentFocusOut","_onCloseMousedown","remove","tab","emit","isComponent","container","_contentElement","join","copy","prototype","html","setActive","addClass","removeClass","_$destroy","off","x","y","parent","isMaximised","toggleMaximise","contains","document","activeElement","focus","event","button","activeContentItem","getActiveContentItem","setActiveContentItem","_hideAdditionalTabsDropdown","get","scrollIntoView","inline","stopPropagation","close","removeChild"],"sources":["../../src/controls/Tab.js"],"sourcesContent":["import $ from 'jquery';\nimport utils from '../utils/index.js';\nimport DragProxy from './DragProxy.js';\n\n/**\n * Represents an individual tab within a Stack's header\n *\n * @param {lm.controls.Header} header\n * @param {lm.items.AbstractContentItem} contentItem\n *\n * @constructor\n */\nconst Tab = function (header, contentItem) {\n this.header = header;\n this.contentItem = contentItem;\n this.element = $(Tab._template);\n this.titleElement = this.element.find('.lm_title');\n this.closeElement = this.element.find('.lm_close_tab');\n this.closeElement[contentItem.config.isClosable ? 'show' : 'hide']();\n this.isActive = false;\n\n this.setTitle(contentItem.config.title);\n this.contentItem.on('titleChanged', this.setTitle, this);\n\n this._layoutManager = this.contentItem.layoutManager;\n\n if (\n this._layoutManager.config.settings.reorderEnabled === true &&\n contentItem.config.reorderEnabled === true\n ) {\n this._dragListener = new utils.DragListener(this.element);\n this._dragListener.on('dragStart', this._onDragStart, this);\n this.contentItem.on(\n 'destroy',\n this._dragListener.destroy,\n this._dragListener\n );\n }\n\n this._onTabClickFn = utils.fnBind(this._onTabClick, this);\n this._onCloseClickFn = utils.fnBind(this._onCloseClick, this);\n this._onTabContentFocusInFn = utils.fnBind(this._onTabContentFocusIn, this);\n this._onTabContentFocusOutFn = utils.fnBind(this._onTabContentFocusOut, this);\n\n this.element.on('click', this._onTabClickFn);\n this.element.on('auxclick', this._onTabClickFn);\n\n if (this.contentItem.config.isClosable) {\n this.closeElement.on('click', this._onCloseClickFn);\n this.closeElement.on('mousedown', this._onCloseMousedown);\n } else {\n this.closeElement.remove();\n }\n\n this.contentItem.tab = this;\n this.contentItem.emit('tab', this);\n this.contentItem.layoutManager.emit('tabCreated', this);\n\n if (this.contentItem.isComponent) {\n // add focus class to tab when content\n this.contentItem.container._contentElement\n .on('focusin click', this._onTabContentFocusInFn)\n .on('focusout', this._onTabContentFocusOutFn);\n\n this.contentItem.container.tab = this;\n this.contentItem.container.emit('tab', this);\n }\n};\n\n/**\n * The tab's html template\n *\n * @type {String}\n */\nTab._template = [\n '<li class=\"lm_tab\">',\n '<span class=\"lm_title_before\"></span>',\n '<span class=\"lm_title\"></span>',\n '<div class=\"lm_close_tab\"></div>',\n '</li>',\n].join('');\n\nutils.copy(Tab.prototype, {\n /**\n * Sets the tab's title to the provided string and sets\n * its title attribute to a pure text representation (without\n * html tags) of the same string.\n *\n * @public\n * @param {String} title can contain html\n */\n setTitle: function (title) {\n // Disabling for illumon project, we want to manage our own tooltips\n // this.element.attr( 'title', lm.utils.stripTags( title ) );\n this.titleElement.html(title);\n },\n\n /**\n * Sets this tab's active state. To programmatically\n * switch tabs, use header.setActiveContentItem( item ) instead.\n *\n * @public\n * @param {Boolean} isActive\n */\n setActive: function (isActive) {\n if (isActive === this.isActive) {\n return;\n }\n this.isActive = isActive;\n\n if (isActive) {\n this.element.addClass('lm_active');\n } else {\n this.element.removeClass('lm_active');\n }\n },\n\n /**\n * Destroys the tab\n *\n * @private\n * @returns {void}\n */\n _$destroy: function () {\n this.element.off('click', this._onTabClickFn);\n this.element.off('auxclick', this._onTabClickFn);\n this.closeElement.off('click', this._onCloseClickFn);\n if (this.contentItem.isComponent) {\n this.contentItem.container._contentElement.off();\n }\n if (this._dragListener) {\n this.contentItem.off(\n 'destroy',\n this._dragListener.destroy,\n this._dragListener\n );\n this._dragListener.off('dragStart', this._onDragStart);\n this._dragListener = null;\n }\n this.element.remove();\n },\n\n /**\n * Callback for the DragListener\n *\n * @param {Number} x The tabs absolute x position\n * @param {Number} y The tabs absolute y position\n *\n * @private\n * @returns {void}\n */\n _onDragStart: function (x, y) {\n if (this.contentItem.parent.isMaximised === true) {\n this.contentItem.parent.toggleMaximise();\n }\n\n new DragProxy(\n x,\n y,\n this._dragListener,\n this._layoutManager,\n this.contentItem,\n this.header.parent\n );\n },\n\n /**\n * Callback when the contentItem is focused in\n *\n * Why [0].focus():\n * https://github.com/jquery/jquery/commit/fe5f04de8fde9c69ed48283b99280aa6df3795c7\n * From jquery source: \"If this is an inner synthetic event for an event with a bubbling surrogate (focus or blur),\n * assume that the surrogate already propagated from triggering the native event and prevent that from happening\n * again here. This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the bubbling surrogate\n * propagates *after* the non-bubbling base), but that seems less bad than duplication.\"\n *\n * @param {jQuery DOM event} event\n *\n * @private\n * @returns {void}\n */\n _onTabContentFocusIn: function () {\n if (\n !this.contentItem.container._contentElement[0].contains(\n document.activeElement\n )\n ) {\n // jquery 3.4.0 and later, jquery method optimizes out the focus from\n // happening in proper order. Can use HTMLElement.focus() to avoid.\n this.contentItem.container._contentElement[0].focus(); // [0] needed to use dom focus, not jquery method\n }\n this.element.addClass('lm_focusin');\n },\n\n /**\n * Callback when the contentItem is focused out\n *\n * @param {jQuery DOM event} event\n *\n * @private\n * @returns {void}\n */\n _onTabContentFocusOut: function () {\n if (\n !this.contentItem.container._contentElement[0].contains(\n document.activeElement\n )\n ) {\n this.element.removeClass('lm_focusin');\n }\n },\n\n /**\n * Callback when the tab is clicked\n *\n * @param {jQuery DOM event} event\n *\n * @private\n * @returns {void}\n */\n _onTabClick: function (event) {\n // left mouse button or tap\n if (!event || event.button === 0) {\n var activeContentItem = this.header.parent.getActiveContentItem();\n if (this.contentItem !== activeContentItem) {\n this.header.parent.setActiveContentItem(this.contentItem);\n this.contentItem.container.emit('tabClicked');\n } else if (\n this.contentItem.isComponent &&\n !this.contentItem.container._contentElement[0].contains(\n document.activeElement\n )\n ) {\n // if no focus inside put focus onto the container\n // so focusin always fires for tabclicks\n this.contentItem.container._contentElement.focus();\n\n // still emit tab clicked event, so panels can also\n // do it's own focus handling if desired\n this.contentItem.container.emit('tabClicked');\n }\n\n // might have been called from the dropdown\n this.header._hideAdditionalTabsDropdown();\n\n // makes sure clicked tabs scrollintoview (either those partially offscreen or in dropdown)\n this.element.get(0).scrollIntoView({\n inline: 'nearest',\n // behaviour smooth is not possible here, as when a tab becomes active it may attempt to take focus\n // which interupts any scroll behaviour from completeting\n });\n\n // middle mouse button\n } else if (event.button === 1 && this.contentItem.config.isClosable) {\n this._onCloseClick(event);\n }\n },\n\n /**\n * Callback when the tab's close button is\n * clicked\n *\n * @param {jQuery DOM event} event\n *\n * @private\n * @returns {void}\n */\n _onCloseClick: function (event) {\n event.stopPropagation();\n if (this.contentItem.isComponent) {\n this.contentItem.container.close();\n } else {\n this.header.parent.removeChild(this.contentItem);\n }\n },\n\n /**\n * Callback to capture tab close button mousedown\n * to prevent tab from activating.\n *\n * @param (jQuery DOM event) event\n *\n * @private\n * @returns {void}\n */\n _onCloseMousedown: function (event) {\n event.stopPropagation();\n },\n});\n\nexport default Tab;\n"],"mappings":"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"}
1
+ {"version":3,"file":"Tab.js","names":["$","isComponent","DragListener","DragProxy","Tab","constructor","header","contentItem","_template","titleElement","element","find","closeElement","config","isClosable","setTitle","title","on","_layoutManager","layoutManager","settings","reorderEnabled","_dragListener","_onDragStart","destroy","_onTabClick","bind","_onCloseClick","_onTabContentFocusIn","_onTabContentFocusOut","_onCloseMousedown","remove","tab","emit","container","_contentElement","html","setActive","isActive","addClass","removeClass","_$destroy","off","undefined","x","y","parent","isMaximised","toggleMaximise","contains","document","activeElement","focus","event","button","activeContentItem","getActiveContentItem","setActiveContentItem","_hideAdditionalTabsDropdown","get","scrollIntoView","inline","stopPropagation","close","removeChild","join"],"sources":["../../src/controls/Tab.ts"],"sourcesContent":["import $ from 'jquery';\nimport type { AbstractContentItem } from '../items';\nimport { isComponent } from '../items';\nimport type LayoutManager from '../LayoutManager';\nimport { DragListener } from '../utils';\nimport DragProxy from './DragProxy';\nimport type Header from './Header';\n\n/**\n * Represents an individual tab within a Stack's header\n *\n * @param header\n * @param contentItem\n */\nexport default class Tab {\n /**\n * The tab's html template\n */\n private static _template = [\n '<li class=\"lm_tab\">',\n '<span class=\"lm_title_before\"></span>',\n '<span class=\"lm_title\"></span>',\n '<div class=\"lm_close_tab\"></div>',\n '</li>',\n ].join('');\n\n header: Header;\n contentItem: AbstractContentItem;\n element = $(Tab._template);\n titleElement: JQuery<HTMLElement>;\n closeElement: JQuery<HTMLElement>;\n isActive = false;\n\n private _layoutManager: LayoutManager;\n private _dragListener?: DragListener;\n\n constructor(header: Header, contentItem: AbstractContentItem) {\n this.header = header;\n this.contentItem = contentItem;\n this.titleElement = this.element.find('.lm_title');\n this.closeElement = this.element.find('.lm_close_tab');\n this.closeElement[contentItem.config.isClosable ? 'show' : 'hide']();\n\n this.setTitle(contentItem.config.title);\n this.contentItem.on('titleChanged', this.setTitle, this);\n\n this._layoutManager = this.contentItem.layoutManager;\n\n if (\n this._layoutManager.config.settings?.reorderEnabled &&\n contentItem.config.reorderEnabled\n ) {\n this._dragListener = new DragListener(this.element);\n this._dragListener.on('dragStart', this._onDragStart, this);\n this.contentItem.on(\n 'destroy',\n this._dragListener.destroy,\n this._dragListener\n );\n }\n\n this._onTabClick = this._onTabClick.bind(this);\n this._onCloseClick = this._onCloseClick.bind(this);\n this._onTabContentFocusIn = this._onTabContentFocusIn.bind(this);\n this._onTabContentFocusOut = this._onTabContentFocusOut.bind(this);\n\n this.element.on('click', this._onTabClick);\n this.element.on('auxclick', this._onTabClick);\n\n if (this.contentItem.config.isClosable) {\n this.closeElement.on('click', this._onCloseClick);\n this.closeElement.on('mousedown', this._onCloseMousedown);\n } else {\n this.closeElement.remove();\n }\n\n this.contentItem.tab = this;\n this.contentItem.emit('tab', this);\n this.contentItem.layoutManager.emit('tabCreated', this);\n\n if (isComponent(this.contentItem)) {\n // add focus class to tab when content\n this.contentItem.container._contentElement\n .on('focusin click', this._onTabContentFocusIn)\n .on('focusout', this._onTabContentFocusOut);\n\n this.contentItem.container.tab = this;\n this.contentItem.container.emit('tab', this);\n }\n }\n\n /**\n * Sets the tab's title to the provided string and sets\n * its title attribute to a pure text representation (without\n * html tags) of the same string.\n * @param title can contain html\n */\n setTitle(title = '') {\n // Disabling for illumon project, we want to manage our own tooltips\n // this.element.attr( 'title', lm.utils.stripTags( title ) );\n this.titleElement.html(title);\n }\n\n /**\n * Sets this tab's active state. To programmatically\n * switch tabs, use header.setActiveContentItem( item ) instead.\n * @param isActive\n */\n setActive(isActive: boolean) {\n if (isActive === this.isActive) {\n return;\n }\n this.isActive = isActive;\n\n if (isActive) {\n this.element.addClass('lm_active');\n } else {\n this.element.removeClass('lm_active');\n }\n }\n\n /**\n * Destroys the tab\n *\n * @private\n * @returns {void}\n */\n _$destroy() {\n this.element.off('click', this._onTabClick);\n this.element.off('auxclick', this._onTabClick);\n this.closeElement.off('click', this._onCloseClick);\n if (isComponent(this.contentItem)) {\n this.contentItem.container._contentElement.off();\n }\n if (this._dragListener) {\n this.contentItem.off(\n 'destroy',\n this._dragListener.destroy,\n this._dragListener\n );\n this._dragListener.off('dragStart', this._onDragStart);\n this._dragListener = undefined;\n }\n this.element.remove();\n }\n\n /**\n * Callback for the DragListener\n *\n * @param x The tabs absolute x position\n * @param y The tabs absolute y position\n */\n _onDragStart(x: number, y: number) {\n if (this.contentItem.parent?.isMaximised) {\n this.contentItem.parent.toggleMaximise();\n }\n\n if (!this._dragListener) {\n return;\n }\n\n new DragProxy(\n x,\n y,\n this._dragListener,\n this._layoutManager,\n this.contentItem,\n this.header.parent\n );\n }\n\n /**\n * Callback when the contentItem is focused in\n *\n * Why [0].focus():\n * https://github.com/jquery/jquery/commit/fe5f04de8fde9c69ed48283b99280aa6df3795c7\n * From jquery source: \"If this is an inner synthetic event for an event with a bubbling surrogate (focus or blur),\n * assume that the surrogate already propagated from triggering the native event and prevent that from happening\n * again here. This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the bubbling surrogate\n * propagates *after* the non-bubbling base), but that seems less bad than duplication.\"\n */\n _onTabContentFocusIn() {\n if (\n isComponent(this.contentItem) &&\n !this.contentItem.container._contentElement[0].contains(\n document.activeElement\n )\n ) {\n // jquery 3.4.0 and later, jquery method optimizes out the focus from\n // happening in proper order. Can use HTMLElement.focus() to avoid.\n this.contentItem.container._contentElement[0].focus(); // [0] needed to use dom focus, not jquery method\n }\n this.element.addClass('lm_focusin');\n }\n\n /**\n * Callback when the contentItem is focused out\n *\n * @param {jQuery DOM event} event\n *\n * @private\n * @returns {void}\n */\n _onTabContentFocusOut() {\n if (\n isComponent(this.contentItem) &&\n !this.contentItem.container._contentElement[0].contains(\n document.activeElement\n )\n ) {\n this.element.removeClass('lm_focusin');\n }\n }\n\n /**\n * Callback when the tab is clicked\n *\n * @param event\n */\n _onTabClick(event?: JQuery.TriggeredEvent) {\n // left mouse button or tap\n if (!event || event.button === 0) {\n var activeContentItem = this.header.parent.getActiveContentItem();\n if (\n this.contentItem !== activeContentItem &&\n isComponent(this.contentItem)\n ) {\n this.header.parent.setActiveContentItem(this.contentItem);\n this.contentItem.container.emit('tabClicked');\n } else if (\n isComponent(this.contentItem) &&\n !this.contentItem.container._contentElement[0].contains(\n document.activeElement\n )\n ) {\n // if no focus inside put focus onto the container\n // so focusin always fires for tabclicks\n this.contentItem.container._contentElement.focus();\n\n // still emit tab clicked event, so panels can also\n // do it's own focus handling if desired\n this.contentItem.container.emit('tabClicked');\n }\n\n // might have been called from the dropdown\n this.header._hideAdditionalTabsDropdown();\n\n // makes sure clicked tabs scrollintoview (either those partially offscreen or in dropdown)\n this.element.get(0)?.scrollIntoView({\n inline: 'nearest',\n // behaviour smooth is not possible here, as when a tab becomes active it may attempt to take focus\n // which interupts any scroll behaviour from completeting\n });\n\n // middle mouse button\n } else if (event.button === 1 && this.contentItem.config.isClosable) {\n this._onCloseClick(event);\n }\n }\n\n /**\n * Callback when the tab's close button is\n * clicked\n *\n * @param event\n */\n _onCloseClick(event: JQuery.TriggeredEvent) {\n event.stopPropagation();\n if (isComponent(this.contentItem)) {\n this.contentItem.container.close();\n } else {\n this.header.parent.removeChild(this.contentItem);\n }\n }\n\n /**\n * Callback to capture tab close button mousedown\n * to prevent tab from activating.\n *\n * @param event\n */\n _onCloseMousedown(event: Event) {\n event.stopPropagation();\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ export declare type TransitionDimensions = {
2
+ left?: number;
3
+ top?: number;
4
+ width?: number;
5
+ height?: number;
6
+ opacity?: number;
7
+ };
8
+ export default class TransitionIndicator {
9
+ private _element;
10
+ private _toElement;
11
+ private _fromDimensions;
12
+ private _totalAnimationDuration;
13
+ private _animationStartTime;
14
+ constructor();
15
+ destroy(): void;
16
+ transitionElements(fromElement: JQuery<HTMLElement>, toElement: JQuery<HTMLElement>): void;
17
+ _nextAnimationFrame(): void;
18
+ _measure(element: JQuery<HTMLElement>): {
19
+ left: number | undefined;
20
+ top: number | undefined;
21
+ width: number | undefined;
22
+ height: number | undefined;
23
+ };
24
+ }
25
+ //# sourceMappingURL=TransitionIndicator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TransitionIndicator.d.ts","sourceRoot":"","sources":["../../src/controls/TransitionIndicator.ts"],"names":[],"mappings":"AAGA,oBAAY,oBAAoB,GAAG;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,CAAC,OAAO,OAAO,mBAAmB;IACtC,OAAO,CAAC,QAAQ,CAAoD;IACpE,OAAO,CAAC,UAAU,CAAoC;IAEtD,OAAO,CAAC,eAAe,CAA4B;IACnD,OAAO,CAAC,uBAAuB,CAAO;IACtC,OAAO,CAAC,mBAAmB,CAAuB;;IAMlD,OAAO;IAIP,kBAAkB,CAChB,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,EAChC,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC;IAchC,mBAAmB;IAiCnB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,WAAW,CAAC;;;;;;CAUtC"}
@@ -1,38 +1,48 @@
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 TransitionIndicator = function TransitionIndicator() {
5
- this._element = $('<div class="lm_transition_indicator"></div>');
6
- $(document.body).append(this._element);
7
- this._toElement = null;
8
- this._fromDimensions = null;
9
- this._totalAnimationDuration = 200;
10
- this._animationStartTime = null;
11
- };
12
-
13
- utils.copy(TransitionIndicator.prototype, {
14
- destroy: function destroy() {
4
+ import { animFrame } from "../utils/index.js";
5
+ export default class TransitionIndicator {
6
+ constructor() {
7
+ _defineProperty(this, "_element", $('<div class="lm_transition_indicator"></div>'));
8
+
9
+ _defineProperty(this, "_toElement", null);
10
+
11
+ _defineProperty(this, "_fromDimensions", {});
12
+
13
+ _defineProperty(this, "_totalAnimationDuration", 200);
14
+
15
+ _defineProperty(this, "_animationStartTime", null);
16
+
17
+ $(document.body).append(this._element);
18
+ }
19
+
20
+ destroy() {
15
21
  this._element.remove();
16
- },
17
- transitionElements: function transitionElements(fromElement, toElement) {
22
+ }
23
+
24
+ transitionElements(fromElement, toElement) {
18
25
  /**
19
26
  * TODO - This is not quite as cool as expected. Review.
20
27
  */
21
- return;
22
- this._toElement = toElement;
23
- this._animationStartTime = utils.now();
24
- this._fromDimensions = this._measure(fromElement);
25
- this._fromDimensions.opacity = 0.8;
26
-
27
- this._element.show().css(this._fromDimensions);
28
-
29
- utils.animFrame(utils.fnBind(this._nextAnimationFrame, this));
30
- },
31
- _nextAnimationFrame: function _nextAnimationFrame() {
32
- var toDimensions = this._measure(this._toElement),
33
- animationProgress = (utils.now() - this._animationStartTime) / this._totalAnimationDuration,
34
- currentFrameStyles = {},
35
- cssProperty;
28
+ return; // this._toElement = toElement;
29
+ // this._animationStartTime = utils.now();
30
+ // this._fromDimensions = this._measure(fromElement);
31
+ // this._fromDimensions.opacity = 0.8;
32
+ // this._element.show().css(this._fromDimensions);
33
+ // utils.animFrame(utils.fnBind(this._nextAnimationFrame, this));
34
+ }
35
+
36
+ _nextAnimationFrame() {
37
+ if (!this._toElement || this._animationStartTime == null) {
38
+ return;
39
+ }
40
+
41
+ var toDimensions = this._measure(this._toElement);
42
+
43
+ var animationProgress = (Date.now() - this._animationStartTime) / this._totalAnimationDuration;
44
+
45
+ var currentFrameStyles = {};
36
46
 
37
47
  if (animationProgress >= 1) {
38
48
  this._element.hide();
@@ -41,24 +51,28 @@ utils.copy(TransitionIndicator.prototype, {
41
51
  }
42
52
 
43
53
  toDimensions.opacity = 0;
54
+ var keys = Object.keys(this._fromDimensions);
55
+
56
+ for (var cssProperty of keys) {
57
+ var _this$_fromDimensions, _toDimensions$cssProp, _this$_fromDimensions2;
44
58
 
45
- for (cssProperty in this._fromDimensions) {
46
- currentFrameStyles[cssProperty] = this._fromDimensions[cssProperty] + (toDimensions[cssProperty] - this._fromDimensions[cssProperty]) * animationProgress;
59
+ currentFrameStyles[cssProperty] = ((_this$_fromDimensions = this._fromDimensions[cssProperty]) !== null && _this$_fromDimensions !== void 0 ? _this$_fromDimensions : 0) + (((_toDimensions$cssProp = toDimensions[cssProperty]) !== null && _toDimensions$cssProp !== void 0 ? _toDimensions$cssProp : 0) - ((_this$_fromDimensions2 = this._fromDimensions[cssProperty]) !== null && _this$_fromDimensions2 !== void 0 ? _this$_fromDimensions2 : 0)) * animationProgress;
47
60
  }
48
61
 
49
62
  this._element.css(currentFrameStyles);
50
63
 
51
- utils.animFrame(utils.fnBind(this._nextAnimationFrame, this));
52
- },
53
- _measure: function _measure(element) {
64
+ animFrame(this._nextAnimationFrame.bind(this));
65
+ }
66
+
67
+ _measure(element) {
54
68
  var offset = element.offset();
55
69
  return {
56
- left: offset.left,
57
- top: offset.top,
70
+ left: offset === null || offset === void 0 ? void 0 : offset.left,
71
+ top: offset === null || offset === void 0 ? void 0 : offset.top,
58
72
  width: element.outerWidth(),
59
73
  height: element.outerHeight()
60
74
  };
61
75
  }
62
- });
63
- export default TransitionIndicator;
76
+
77
+ }
64
78
  //# sourceMappingURL=TransitionIndicator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TransitionIndicator.js","names":["$","utils","TransitionIndicator","_element","document","body","append","_toElement","_fromDimensions","_totalAnimationDuration","_animationStartTime","copy","prototype","destroy","remove","transitionElements","fromElement","toElement","now","_measure","opacity","show","css","animFrame","fnBind","_nextAnimationFrame","toDimensions","animationProgress","currentFrameStyles","cssProperty","hide","element","offset","left","top","width","outerWidth","height","outerHeight"],"sources":["../../src/controls/TransitionIndicator.js"],"sourcesContent":["import $ from 'jquery';\nimport utils from '../utils/index.js';\n\nconst TransitionIndicator = function () {\n this._element = $('<div class=\"lm_transition_indicator\"></div>');\n $(document.body).append(this._element);\n\n this._toElement = null;\n this._fromDimensions = null;\n this._totalAnimationDuration = 200;\n this._animationStartTime = null;\n};\n\nutils.copy(TransitionIndicator.prototype, {\n destroy: function () {\n this._element.remove();\n },\n\n transitionElements: function (fromElement, toElement) {\n /**\n * TODO - This is not quite as cool as expected. Review.\n */\n return;\n this._toElement = toElement;\n this._animationStartTime = utils.now();\n this._fromDimensions = this._measure(fromElement);\n this._fromDimensions.opacity = 0.8;\n this._element.show().css(this._fromDimensions);\n utils.animFrame(utils.fnBind(this._nextAnimationFrame, this));\n },\n\n _nextAnimationFrame: function () {\n var toDimensions = this._measure(this._toElement),\n animationProgress =\n (utils.now() - this._animationStartTime) / this._totalAnimationDuration,\n currentFrameStyles = {},\n cssProperty;\n\n if (animationProgress >= 1) {\n this._element.hide();\n return;\n }\n\n toDimensions.opacity = 0;\n\n for (cssProperty in this._fromDimensions) {\n currentFrameStyles[cssProperty] =\n this._fromDimensions[cssProperty] +\n (toDimensions[cssProperty] - this._fromDimensions[cssProperty]) *\n animationProgress;\n }\n\n this._element.css(currentFrameStyles);\n utils.animFrame(utils.fnBind(this._nextAnimationFrame, this));\n },\n\n _measure: function (element) {\n var offset = element.offset();\n\n return {\n left: offset.left,\n top: offset.top,\n width: element.outerWidth(),\n height: element.outerHeight(),\n };\n },\n});\n\nexport default TransitionIndicator;\n"],"mappings":"AAAA,OAAOA,CAAP,MAAc,QAAd;AACA,OAAOC,KAAP,MAAkB,mBAAlB;;AAEA,IAAMC,mBAAmB,GAAG,SAAtBA,mBAAsB,GAAY;EACtC,KAAKC,QAAL,GAAgBH,CAAC,CAAC,6CAAD,CAAjB;EACAA,CAAC,CAACI,QAAQ,CAACC,IAAV,CAAD,CAAiBC,MAAjB,CAAwB,KAAKH,QAA7B;EAEA,KAAKI,UAAL,GAAkB,IAAlB;EACA,KAAKC,eAAL,GAAuB,IAAvB;EACA,KAAKC,uBAAL,GAA+B,GAA/B;EACA,KAAKC,mBAAL,GAA2B,IAA3B;AACD,CARD;;AAUAT,KAAK,CAACU,IAAN,CAAWT,mBAAmB,CAACU,SAA/B,EAA0C;EACxCC,OAAO,EAAE,mBAAY;IACnB,KAAKV,QAAL,CAAcW,MAAd;EACD,CAHuC;EAKxCC,kBAAkB,EAAE,4BAAUC,WAAV,EAAuBC,SAAvB,EAAkC;IACpD;AACJ;AACA;IACI;IACA,KAAKV,UAAL,GAAkBU,SAAlB;IACA,KAAKP,mBAAL,GAA2BT,KAAK,CAACiB,GAAN,EAA3B;IACA,KAAKV,eAAL,GAAuB,KAAKW,QAAL,CAAcH,WAAd,CAAvB;IACA,KAAKR,eAAL,CAAqBY,OAArB,GAA+B,GAA/B;;IACA,KAAKjB,QAAL,CAAckB,IAAd,GAAqBC,GAArB,CAAyB,KAAKd,eAA9B;;IACAP,KAAK,CAACsB,SAAN,CAAgBtB,KAAK,CAACuB,MAAN,CAAa,KAAKC,mBAAlB,EAAuC,IAAvC,CAAhB;EACD,CAhBuC;EAkBxCA,mBAAmB,EAAE,+BAAY;IAC/B,IAAIC,YAAY,GAAG,KAAKP,QAAL,CAAc,KAAKZ,UAAnB,CAAnB;IAAA,IACEoB,iBAAiB,GACf,CAAC1B,KAAK,CAACiB,GAAN,KAAc,KAAKR,mBAApB,IAA2C,KAAKD,uBAFpD;IAAA,IAGEmB,kBAAkB,GAAG,EAHvB;IAAA,IAIEC,WAJF;;IAMA,IAAIF,iBAAiB,IAAI,CAAzB,EAA4B;MAC1B,KAAKxB,QAAL,CAAc2B,IAAd;;MACA;IACD;;IAEDJ,YAAY,CAACN,OAAb,GAAuB,CAAvB;;IAEA,KAAKS,WAAL,IAAoB,KAAKrB,eAAzB,EAA0C;MACxCoB,kBAAkB,CAACC,WAAD,CAAlB,GACE,KAAKrB,eAAL,CAAqBqB,WAArB,IACA,CAACH,YAAY,CAACG,WAAD,CAAZ,GAA4B,KAAKrB,eAAL,CAAqBqB,WAArB,CAA7B,IACEF,iBAHJ;IAID;;IAED,KAAKxB,QAAL,CAAcmB,GAAd,CAAkBM,kBAAlB;;IACA3B,KAAK,CAACsB,SAAN,CAAgBtB,KAAK,CAACuB,MAAN,CAAa,KAAKC,mBAAlB,EAAuC,IAAvC,CAAhB;EACD,CAzCuC;EA2CxCN,QAAQ,EAAE,kBAAUY,OAAV,EAAmB;IAC3B,IAAIC,MAAM,GAAGD,OAAO,CAACC,MAAR,EAAb;IAEA,OAAO;MACLC,IAAI,EAAED,MAAM,CAACC,IADR;MAELC,GAAG,EAAEF,MAAM,CAACE,GAFP;MAGLC,KAAK,EAAEJ,OAAO,CAACK,UAAR,EAHF;MAILC,MAAM,EAAEN,OAAO,CAACO,WAAR;IAJH,CAAP;EAMD;AApDuC,CAA1C;AAuDA,eAAepC,mBAAf"}
1
+ {"version":3,"file":"TransitionIndicator.js","names":["$","animFrame","TransitionIndicator","constructor","document","body","append","_element","destroy","remove","transitionElements","fromElement","toElement","_nextAnimationFrame","_toElement","_animationStartTime","toDimensions","_measure","animationProgress","Date","now","_totalAnimationDuration","currentFrameStyles","hide","opacity","keys","Object","_fromDimensions","cssProperty","css","bind","element","offset","left","top","width","outerWidth","height","outerHeight"],"sources":["../../src/controls/TransitionIndicator.ts"],"sourcesContent":["import $ from 'jquery';\nimport { animFrame } from '../utils';\n\nexport type TransitionDimensions = {\n left?: number;\n top?: number;\n width?: number;\n height?: number;\n opacity?: number;\n};\n\nexport default class TransitionIndicator {\n private _element = $('<div class=\"lm_transition_indicator\"></div>');\n private _toElement: JQuery<HTMLElement> | null = null;\n\n private _fromDimensions: TransitionDimensions = {};\n private _totalAnimationDuration = 200;\n private _animationStartTime: number | null = null;\n\n constructor() {\n $(document.body).append(this._element);\n }\n\n destroy() {\n this._element.remove();\n }\n\n transitionElements(\n fromElement: JQuery<HTMLElement>,\n toElement: JQuery<HTMLElement>\n ) {\n /**\n * TODO - This is not quite as cool as expected. Review.\n */\n return;\n // this._toElement = toElement;\n // this._animationStartTime = utils.now();\n // this._fromDimensions = this._measure(fromElement);\n // this._fromDimensions.opacity = 0.8;\n // this._element.show().css(this._fromDimensions);\n // utils.animFrame(utils.fnBind(this._nextAnimationFrame, this));\n }\n\n _nextAnimationFrame() {\n if (!this._toElement || this._animationStartTime == null) {\n return;\n }\n\n const toDimensions: TransitionDimensions = this._measure(this._toElement);\n const animationProgress =\n (Date.now() - this._animationStartTime) / this._totalAnimationDuration;\n const currentFrameStyles: TransitionDimensions = {};\n\n if (animationProgress >= 1) {\n this._element.hide();\n return;\n }\n\n toDimensions.opacity = 0;\n\n const keys = Object.keys(this._fromDimensions) as [\n keyof TransitionDimensions\n ];\n\n for (let cssProperty of keys) {\n currentFrameStyles[cssProperty] =\n (this._fromDimensions[cssProperty] ?? 0) +\n ((toDimensions[cssProperty] ?? 0) -\n (this._fromDimensions[cssProperty] ?? 0)) *\n animationProgress;\n }\n\n this._element.css(currentFrameStyles);\n animFrame(this._nextAnimationFrame.bind(this));\n }\n\n _measure(element: JQuery<HTMLElement>) {\n const offset = element.offset();\n\n return {\n left: offset?.left,\n top: offset?.top,\n width: element.outerWidth(),\n height: element.outerHeight(),\n };\n }\n}\n"],"mappings":";;AAAA,OAAOA,CAAP,MAAc,QAAd;SACSC,S;AAUT,eAAe,MAAMC,mBAAN,CAA0B;EAQvCC,WAAW,GAAG;IAAA,kCAPKH,CAAC,CAAC,6CAAD,CAON;;IAAA,oCANmC,IAMnC;;IAAA,yCAJkC,EAIlC;;IAAA,iDAHoB,GAGpB;;IAAA,6CAF+B,IAE/B;;IACZA,CAAC,CAACI,QAAQ,CAACC,IAAV,CAAD,CAAiBC,MAAjB,CAAwB,KAAKC,QAA7B;EACD;;EAEDC,OAAO,GAAG;IACR,KAAKD,QAAL,CAAcE,MAAd;EACD;;EAEDC,kBAAkB,CAChBC,WADgB,EAEhBC,SAFgB,EAGhB;IACA;AACJ;AACA;IACI,OAJA,CAKA;IACA;IACA;IACA;IACA;IACA;EACD;;EAEDC,mBAAmB,GAAG;IACpB,IAAI,CAAC,KAAKC,UAAN,IAAoB,KAAKC,mBAAL,IAA4B,IAApD,EAA0D;MACxD;IACD;;IAED,IAAMC,YAAkC,GAAG,KAAKC,QAAL,CAAc,KAAKH,UAAnB,CAA3C;;IACA,IAAMI,iBAAiB,GACrB,CAACC,IAAI,CAACC,GAAL,KAAa,KAAKL,mBAAnB,IAA0C,KAAKM,uBADjD;;IAEA,IAAMC,kBAAwC,GAAG,EAAjD;;IAEA,IAAIJ,iBAAiB,IAAI,CAAzB,EAA4B;MAC1B,KAAKX,QAAL,CAAcgB,IAAd;;MACA;IACD;;IAEDP,YAAY,CAACQ,OAAb,GAAuB,CAAvB;IAEA,IAAMC,IAAI,GAAGC,MAAM,CAACD,IAAP,CAAY,KAAKE,eAAjB,CAAb;;IAIA,KAAK,IAAIC,WAAT,IAAwBH,IAAxB,EAA8B;MAAA;;MAC5BH,kBAAkB,CAACM,WAAD,CAAlB,GACE,0BAAC,KAAKD,eAAL,CAAqBC,WAArB,CAAD,yEAAsC,CAAtC,IACA,CAAC,0BAACZ,YAAY,CAACY,WAAD,CAAb,yEAA8B,CAA9B,+BACE,KAAKD,eAAL,CAAqBC,WAArB,CADF,2EACuC,CADvC,CAAD,IAEEV,iBAJJ;IAKD;;IAED,KAAKX,QAAL,CAAcsB,GAAd,CAAkBP,kBAAlB;;IACArB,SAAS,CAAC,KAAKY,mBAAL,CAAyBiB,IAAzB,CAA8B,IAA9B,CAAD,CAAT;EACD;;EAEDb,QAAQ,CAACc,OAAD,EAA+B;IACrC,IAAMC,MAAM,GAAGD,OAAO,CAACC,MAAR,EAAf;IAEA,OAAO;MACLC,IAAI,EAAED,MAAF,aAAEA,MAAF,uBAAEA,MAAM,CAAEC,IADT;MAELC,GAAG,EAAEF,MAAF,aAAEA,MAAF,uBAAEA,MAAM,CAAEE,GAFR;MAGLC,KAAK,EAAEJ,OAAO,CAACK,UAAR,EAHF;MAILC,MAAM,EAAEN,OAAO,CAACO,WAAR;IAJH,CAAP;EAMD;;AA1EsC"}
@@ -0,0 +1,11 @@
1
+ export { default as BrowserPopout } from './BrowserPopout';
2
+ export { default as DragProxy } from './DragProxy';
3
+ export { default as DragSource } from './DragSource';
4
+ export { default as DragSourceFromEvent } from './DragSourceFromEvent';
5
+ export { default as DropTargetIndicator } from './DropTargetIndicator';
6
+ export { default as Header } from './Header';
7
+ export { default as HeaderButton } from './HeaderButton';
8
+ export { default as Splitter } from './Splitter';
9
+ export { default as Tab } from './Tab';
10
+ export { default as TransitionIndicator } from './TransitionIndicator';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/controls/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,uBAAuB,CAAC"}