@genesis-community/golden-layout 2.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +24 -0
- package/dist/cjs/index.js +40 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/ts/config/config.js +870 -0
- package/dist/cjs/ts/config/config.js.map +1 -0
- package/dist/cjs/ts/config/resolved-config.js +477 -0
- package/dist/cjs/ts/config/resolved-config.js.map +1 -0
- package/dist/cjs/ts/container/component-container.js +412 -0
- package/dist/cjs/ts/container/component-container.js.map +1 -0
- package/dist/cjs/ts/controls/browser-popout.js +298 -0
- package/dist/cjs/ts/controls/browser-popout.js.map +1 -0
- package/dist/cjs/ts/controls/drag-proxy.js +221 -0
- package/dist/cjs/ts/controls/drag-proxy.js.map +1 -0
- package/dist/cjs/ts/controls/drag-source.js +149 -0
- package/dist/cjs/ts/controls/drag-source.js.map +1 -0
- package/dist/cjs/ts/controls/drop-target-indicator.js +31 -0
- package/dist/cjs/ts/controls/drop-target-indicator.js.map +1 -0
- package/dist/cjs/ts/controls/header-button.js +34 -0
- package/dist/cjs/ts/controls/header-button.js.map +1 -0
- package/dist/cjs/ts/controls/header.js +366 -0
- package/dist/cjs/ts/controls/header.js.map +1 -0
- package/dist/cjs/ts/controls/splitter.js +42 -0
- package/dist/cjs/ts/controls/splitter.js.map +1 -0
- package/dist/cjs/ts/controls/tab.js +262 -0
- package/dist/cjs/ts/controls/tab.js.map +1 -0
- package/dist/cjs/ts/controls/tabs-container.js +236 -0
- package/dist/cjs/ts/controls/tabs-container.js.map +1 -0
- package/dist/cjs/ts/controls/transition-indicator.js +64 -0
- package/dist/cjs/ts/controls/transition-indicator.js.map +1 -0
- package/dist/cjs/ts/errors/external-error.js +46 -0
- package/dist/cjs/ts/errors/external-error.js.map +1 -0
- package/dist/cjs/ts/errors/internal-error.js +38 -0
- package/dist/cjs/ts/errors/internal-error.js.map +1 -0
- package/dist/cjs/ts/golden-layout.js +299 -0
- package/dist/cjs/ts/golden-layout.js.map +1 -0
- package/dist/cjs/ts/items/component-item.js +190 -0
- package/dist/cjs/ts/items/component-item.js.map +1 -0
- package/dist/cjs/ts/items/component-parentable-item.js +18 -0
- package/dist/cjs/ts/items/component-parentable-item.js.map +1 -0
- package/dist/cjs/ts/items/content-item.js +414 -0
- package/dist/cjs/ts/items/content-item.js.map +1 -0
- package/dist/cjs/ts/items/ground-item.js +352 -0
- package/dist/cjs/ts/items/ground-item.js.map +1 -0
- package/dist/cjs/ts/items/row-or-column.js +609 -0
- package/dist/cjs/ts/items/row-or-column.js.map +1 -0
- package/dist/cjs/ts/items/stack.js +841 -0
- package/dist/cjs/ts/items/stack.js.map +1 -0
- package/dist/cjs/ts/layout-manager.js +1618 -0
- package/dist/cjs/ts/layout-manager.js.map +1 -0
- package/dist/cjs/ts/utils/config-minifier.js +218 -0
- package/dist/cjs/ts/utils/config-minifier.js.map +1 -0
- package/dist/cjs/ts/utils/dom-constants.js +3 -0
- package/dist/cjs/ts/utils/dom-constants.js.map +1 -0
- package/dist/cjs/ts/utils/drag-listener.js +132 -0
- package/dist/cjs/ts/utils/drag-listener.js.map +1 -0
- package/dist/cjs/ts/utils/event-emitter.js +201 -0
- package/dist/cjs/ts/utils/event-emitter.js.map +1 -0
- package/dist/cjs/ts/utils/event-hub.js +135 -0
- package/dist/cjs/ts/utils/event-hub.js.map +1 -0
- package/dist/cjs/ts/utils/i18n-strings.js +74 -0
- package/dist/cjs/ts/utils/i18n-strings.js.map +1 -0
- package/dist/cjs/ts/utils/jquery-legacy.js +15 -0
- package/dist/cjs/ts/utils/jquery-legacy.js.map +1 -0
- package/dist/cjs/ts/utils/style-constants.js +11 -0
- package/dist/cjs/ts/utils/style-constants.js.map +1 -0
- package/dist/cjs/ts/utils/types.js +94 -0
- package/dist/cjs/ts/utils/types.js.map +1 -0
- package/dist/cjs/ts/utils/utils.js +211 -0
- package/dist/cjs/ts/utils/utils.js.map +1 -0
- package/dist/cjs/ts/virtual-layout.js +247 -0
- package/dist/cjs/ts/virtual-layout.js.map +1 -0
- package/dist/css/goldenlayout-base.css +319 -0
- package/dist/css/themes/goldenlayout-borderless-dark-theme.css +136 -0
- package/dist/css/themes/goldenlayout-dark-theme.css +139 -0
- package/dist/css/themes/goldenlayout-light-theme.css +129 -0
- package/dist/css/themes/goldenlayout-soda-theme.css +126 -0
- package/dist/css/themes/goldenlayout-translucent-theme.css +152 -0
- package/dist/esm/index.js +21 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/ts/config/config.js +864 -0
- package/dist/esm/ts/config/config.js.map +1 -0
- package/dist/esm/ts/config/resolved-config.js +474 -0
- package/dist/esm/ts/config/resolved-config.js.map +1 -0
- package/dist/esm/ts/container/component-container.js +408 -0
- package/dist/esm/ts/container/component-container.js.map +1 -0
- package/dist/esm/ts/controls/browser-popout.js +294 -0
- package/dist/esm/ts/controls/browser-popout.js.map +1 -0
- package/dist/esm/ts/controls/drag-proxy.js +217 -0
- package/dist/esm/ts/controls/drag-proxy.js.map +1 -0
- package/dist/esm/ts/controls/drag-source.js +145 -0
- package/dist/esm/ts/controls/drag-source.js.map +1 -0
- package/dist/esm/ts/controls/drop-target-indicator.js +27 -0
- package/dist/esm/ts/controls/drop-target-indicator.js.map +1 -0
- package/dist/esm/ts/controls/header-button.js +30 -0
- package/dist/esm/ts/controls/header-button.js.map +1 -0
- package/dist/esm/ts/controls/header.js +362 -0
- package/dist/esm/ts/controls/header.js.map +1 -0
- package/dist/esm/ts/controls/splitter.js +38 -0
- package/dist/esm/ts/controls/splitter.js.map +1 -0
- package/dist/esm/ts/controls/tab.js +258 -0
- package/dist/esm/ts/controls/tab.js.map +1 -0
- package/dist/esm/ts/controls/tabs-container.js +232 -0
- package/dist/esm/ts/controls/tabs-container.js.map +1 -0
- package/dist/esm/ts/controls/transition-indicator.js +60 -0
- package/dist/esm/ts/controls/transition-indicator.js.map +1 -0
- package/dist/esm/ts/errors/external-error.js +38 -0
- package/dist/esm/ts/errors/external-error.js.map +1 -0
- package/dist/esm/ts/errors/internal-error.js +31 -0
- package/dist/esm/ts/errors/internal-error.js.map +1 -0
- package/dist/esm/ts/golden-layout.js +295 -0
- package/dist/esm/ts/golden-layout.js.map +1 -0
- package/dist/esm/ts/items/component-item.js +186 -0
- package/dist/esm/ts/items/component-item.js.map +1 -0
- package/dist/esm/ts/items/component-parentable-item.js +14 -0
- package/dist/esm/ts/items/component-parentable-item.js.map +1 -0
- package/dist/esm/ts/items/content-item.js +410 -0
- package/dist/esm/ts/items/content-item.js.map +1 -0
- package/dist/esm/ts/items/ground-item.js +348 -0
- package/dist/esm/ts/items/ground-item.js.map +1 -0
- package/dist/esm/ts/items/row-or-column.js +605 -0
- package/dist/esm/ts/items/row-or-column.js.map +1 -0
- package/dist/esm/ts/items/stack.js +837 -0
- package/dist/esm/ts/items/stack.js.map +1 -0
- package/dist/esm/ts/layout-manager.js +1614 -0
- package/dist/esm/ts/layout-manager.js.map +1 -0
- package/dist/esm/ts/utils/config-minifier.js +215 -0
- package/dist/esm/ts/utils/config-minifier.js.map +1 -0
- package/dist/esm/ts/utils/dom-constants.js +2 -0
- package/dist/esm/ts/utils/dom-constants.js.map +1 -0
- package/dist/esm/ts/utils/drag-listener.js +128 -0
- package/dist/esm/ts/utils/drag-listener.js.map +1 -0
- package/dist/esm/ts/utils/event-emitter.js +197 -0
- package/dist/esm/ts/utils/event-emitter.js.map +1 -0
- package/dist/esm/ts/utils/event-hub.js +131 -0
- package/dist/esm/ts/utils/event-hub.js.map +1 -0
- package/dist/esm/ts/utils/i18n-strings.js +71 -0
- package/dist/esm/ts/utils/i18n-strings.js.map +1 -0
- package/dist/esm/ts/utils/jquery-legacy.js +11 -0
- package/dist/esm/ts/utils/jquery-legacy.js.map +1 -0
- package/dist/esm/ts/utils/style-constants.js +8 -0
- package/dist/esm/ts/utils/style-constants.js.map +1 -0
- package/dist/esm/ts/utils/types.js +91 -0
- package/dist/esm/ts/utils/types.js.map +1 -0
- package/dist/esm/ts/utils/utils.js +191 -0
- package/dist/esm/ts/utils/utils.js.map +1 -0
- package/dist/esm/ts/virtual-layout.js +243 -0
- package/dist/esm/ts/virtual-layout.js.map +1 -0
- package/dist/img/lm_close_black.png +0 -0
- package/dist/img/lm_close_tab_white.png +0 -0
- package/dist/img/lm_close_white.png +0 -0
- package/dist/img/lm_maximise_black.png +0 -0
- package/dist/img/lm_maximise_white.png +0 -0
- package/dist/img/lm_minimize_black.png +0 -0
- package/dist/img/lm_minimize_white.png +0 -0
- package/dist/img/lm_popin_black.png +0 -0
- package/dist/img/lm_popin_white.png +0 -0
- package/dist/img/lm_popout_black.png +0 -0
- package/dist/img/lm_popout_white.png +0 -0
- package/dist/less/goldenlayout-base.less +422 -0
- package/dist/less/themes/goldenlayout-borderless-dark-theme.less +230 -0
- package/dist/less/themes/goldenlayout-dark-theme.less +233 -0
- package/dist/less/themes/goldenlayout-light-theme.less +223 -0
- package/dist/less/themes/goldenlayout-soda-theme.less +211 -0
- package/dist/less/themes/goldenlayout-translucent-theme.less +237 -0
- package/dist/scss/goldenlayout-base.scss +422 -0
- package/dist/scss/themes/_goldenlayout-var-theme.scss +232 -0
- package/dist/types/golden-layout-untrimmed.d.ts +3428 -0
- package/dist/types/index.d.ts +2246 -0
- package/dist/types/tsdoc-metadata.json +11 -0
- package/package.json +107 -0
- package/src/TOOLCHAIN.md +54 -0
- package/src/img/lm_close_black.png +0 -0
- package/src/img/lm_close_tab_white.png +0 -0
- package/src/img/lm_close_white.png +0 -0
- package/src/img/lm_maximise_black.png +0 -0
- package/src/img/lm_maximise_white.png +0 -0
- package/src/img/lm_minimize_black.png +0 -0
- package/src/img/lm_minimize_white.png +0 -0
- package/src/img/lm_popin_black.png +0 -0
- package/src/img/lm_popin_white.png +0 -0
- package/src/img/lm_popout_black.png +0 -0
- package/src/img/lm_popout_white.png +0 -0
- package/src/index.ts +21 -0
- package/src/less/goldenlayout-base.less +422 -0
- package/src/less/themes/goldenlayout-borderless-dark-theme.less +230 -0
- package/src/less/themes/goldenlayout-dark-theme.less +233 -0
- package/src/less/themes/goldenlayout-light-theme.less +223 -0
- package/src/less/themes/goldenlayout-soda-theme.less +211 -0
- package/src/less/themes/goldenlayout-translucent-theme.less +237 -0
- package/src/scss/goldenlayout-base.scss +422 -0
- package/src/scss/themes/_goldenlayout-var-theme.scss +232 -0
- package/src/ts/config/config.ts +1283 -0
- package/src/ts/config/resolved-config.ts +621 -0
- package/src/ts/container/component-container.ts +500 -0
- package/src/ts/controls/browser-popout.ts +325 -0
- package/src/ts/controls/drag-proxy.ts +259 -0
- package/src/ts/controls/drag-source.ts +167 -0
- package/src/ts/controls/drop-target-indicator.ts +35 -0
- package/src/ts/controls/header-button.ts +39 -0
- package/src/ts/controls/header.ts +483 -0
- package/src/ts/controls/splitter.ts +50 -0
- package/src/ts/controls/tab.ts +293 -0
- package/src/ts/controls/tabs-container.ts +281 -0
- package/src/ts/controls/transition-indicator.ts +78 -0
- package/src/ts/errors/external-error.ts +39 -0
- package/src/ts/errors/internal-error.ts +34 -0
- package/src/ts/golden-layout.ts +365 -0
- package/src/ts/items/component-item.ts +252 -0
- package/src/ts/items/component-parentable-item.ts +16 -0
- package/src/ts/items/content-item.ts +513 -0
- package/src/ts/items/ground-item.ts +404 -0
- package/src/ts/items/row-or-column.ts +707 -0
- package/src/ts/items/stack.ts +975 -0
- package/src/ts/layout-manager.ts +1862 -0
- package/src/ts/utils/config-minifier.ts +235 -0
- package/src/ts/utils/dom-constants.ts +44 -0
- package/src/ts/utils/drag-listener.ts +178 -0
- package/src/ts/utils/event-emitter.ts +275 -0
- package/src/ts/utils/event-hub.ts +163 -0
- package/src/ts/utils/i18n-strings.ts +96 -0
- package/src/ts/utils/jquery-legacy.ts +12 -0
- package/src/ts/utils/style-constants.ts +6 -0
- package/src/ts/utils/types.ts +145 -0
- package/src/ts/utils/utils.ts +206 -0
- package/src/ts/virtual-layout.ts +328 -0
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
import { UnexpectedUndefinedError } from '../errors/internal-error';
|
|
2
|
+
import { DragListener } from '../utils/drag-listener';
|
|
3
|
+
/**
|
|
4
|
+
* Represents an individual tab within a Stack's header
|
|
5
|
+
* @public
|
|
6
|
+
*/
|
|
7
|
+
export class Tab {
|
|
8
|
+
/** @internal */
|
|
9
|
+
constructor(
|
|
10
|
+
/** @internal */
|
|
11
|
+
_layoutManager,
|
|
12
|
+
/** @internal */
|
|
13
|
+
_componentItem,
|
|
14
|
+
/** @internal */
|
|
15
|
+
_closeEvent,
|
|
16
|
+
/** @internal */
|
|
17
|
+
_focusEvent,
|
|
18
|
+
/** @internal */
|
|
19
|
+
_dragStartEvent) {
|
|
20
|
+
var _a;
|
|
21
|
+
this._layoutManager = _layoutManager;
|
|
22
|
+
this._componentItem = _componentItem;
|
|
23
|
+
this._closeEvent = _closeEvent;
|
|
24
|
+
this._focusEvent = _focusEvent;
|
|
25
|
+
this._dragStartEvent = _dragStartEvent;
|
|
26
|
+
/** @internal */
|
|
27
|
+
this._isActive = false;
|
|
28
|
+
/** @internal */
|
|
29
|
+
this._tabClickListener = (ev) => this.onTabClickDown(ev);
|
|
30
|
+
/** @internal */
|
|
31
|
+
this._tabTouchStartListener = (ev) => this.onTabTouchStart(ev);
|
|
32
|
+
/** @internal */
|
|
33
|
+
this._closeClickListener = () => this.onCloseClick();
|
|
34
|
+
/** @internal */
|
|
35
|
+
this._closeTouchStartListener = () => this.onCloseTouchStart();
|
|
36
|
+
// /** @internal */
|
|
37
|
+
// private readonly _closeMouseDownListener = () => this.onCloseMousedown();
|
|
38
|
+
/** @internal */
|
|
39
|
+
this._dragStartListener = (x, y) => this.onDragStart(x, y);
|
|
40
|
+
/** @internal */
|
|
41
|
+
this._contentItemDestroyListener = () => this.onContentItemDestroy();
|
|
42
|
+
/** @internal */
|
|
43
|
+
this._tabTitleChangedListener = (title) => this.setTitle(title);
|
|
44
|
+
this._element = document.createElement('div');
|
|
45
|
+
this._element.classList.add("lm_tab" /* DomConstants.ClassName.Tab */);
|
|
46
|
+
this._titleElement = document.createElement('span');
|
|
47
|
+
this._titleElement.classList.add("lm_title" /* DomConstants.ClassName.Title */);
|
|
48
|
+
this._closeElement = document.createElement('div');
|
|
49
|
+
this._closeElement.classList.add("lm_close_tab" /* DomConstants.ClassName.CloseTab */);
|
|
50
|
+
this._element.appendChild(this._titleElement);
|
|
51
|
+
this._element.appendChild(this._closeElement);
|
|
52
|
+
if (_componentItem.isClosable) {
|
|
53
|
+
this._closeElement.style.display = '';
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
this._closeElement.style.display = 'none';
|
|
57
|
+
}
|
|
58
|
+
this.setTitle(_componentItem.title);
|
|
59
|
+
this._componentItem.on('titleChanged', this._tabTitleChangedListener);
|
|
60
|
+
const reorderEnabled = (_a = _componentItem.reorderEnabled) !== null && _a !== void 0 ? _a : this._layoutManager.layoutConfig.settings.reorderEnabled;
|
|
61
|
+
if (reorderEnabled) {
|
|
62
|
+
this.enableReorder();
|
|
63
|
+
}
|
|
64
|
+
this._element.addEventListener('click', this._tabClickListener, { passive: true });
|
|
65
|
+
this._element.addEventListener('touchstart', this._tabTouchStartListener, { passive: true });
|
|
66
|
+
if (this._componentItem.isClosable) {
|
|
67
|
+
this._closeElement.addEventListener('click', this._closeClickListener, { passive: true });
|
|
68
|
+
this._closeElement.addEventListener('touchstart', this._closeTouchStartListener, { passive: true });
|
|
69
|
+
// this._closeElement.addEventListener('mousedown', this._closeMouseDownListener, { passive: true });
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
this._closeElement.remove();
|
|
73
|
+
this._closeElement = undefined;
|
|
74
|
+
}
|
|
75
|
+
this._componentItem.setTab(this);
|
|
76
|
+
this._layoutManager.emit('tabCreated', this);
|
|
77
|
+
}
|
|
78
|
+
get isActive() { return this._isActive; }
|
|
79
|
+
// get header(): Header { return this._header; }
|
|
80
|
+
get componentItem() { return this._componentItem; }
|
|
81
|
+
/** @deprecated use {@link (Tab:class).componentItem} */
|
|
82
|
+
get contentItem() { return this._componentItem; }
|
|
83
|
+
get element() { return this._element; }
|
|
84
|
+
get titleElement() { return this._titleElement; }
|
|
85
|
+
get closeElement() { return this._closeElement; }
|
|
86
|
+
get reorderEnabled() { return this._dragListener !== undefined; }
|
|
87
|
+
set reorderEnabled(value) {
|
|
88
|
+
if (value !== this.reorderEnabled) {
|
|
89
|
+
if (value) {
|
|
90
|
+
this.enableReorder();
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
this.disableReorder();
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Sets the tab's title to the provided string and sets
|
|
99
|
+
* its title attribute to a pure text representation (without
|
|
100
|
+
* html tags) of the same string.
|
|
101
|
+
*/
|
|
102
|
+
setTitle(title) {
|
|
103
|
+
this._titleElement.innerText = title;
|
|
104
|
+
this._element.title = title;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Sets this tab's active state. To programmatically
|
|
108
|
+
* switch tabs, use Stack.setActiveComponentItem( item ) instead.
|
|
109
|
+
*/
|
|
110
|
+
setActive(isActive) {
|
|
111
|
+
if (isActive === this._isActive) {
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
this._isActive = isActive;
|
|
115
|
+
if (isActive) {
|
|
116
|
+
this._element.classList.add("lm_active" /* DomConstants.ClassName.Active */);
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
this._element.classList.remove("lm_active" /* DomConstants.ClassName.Active */);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Destroys the tab
|
|
124
|
+
* @internal
|
|
125
|
+
*/
|
|
126
|
+
destroy() {
|
|
127
|
+
var _a, _b;
|
|
128
|
+
this._closeEvent = undefined;
|
|
129
|
+
this._focusEvent = undefined;
|
|
130
|
+
this._dragStartEvent = undefined;
|
|
131
|
+
this._element.removeEventListener('click', this._tabClickListener);
|
|
132
|
+
this._element.removeEventListener('touchstart', this._tabTouchStartListener);
|
|
133
|
+
(_a = this._closeElement) === null || _a === void 0 ? void 0 : _a.removeEventListener('click', this._closeClickListener);
|
|
134
|
+
(_b = this._closeElement) === null || _b === void 0 ? void 0 : _b.removeEventListener('touchstart', this._closeTouchStartListener);
|
|
135
|
+
// this._closeElement?.removeEventListener('mousedown', this._closeMouseDownListener);
|
|
136
|
+
this._componentItem.off('titleChanged', this._tabTitleChangedListener);
|
|
137
|
+
if (this.reorderEnabled) {
|
|
138
|
+
this.disableReorder();
|
|
139
|
+
}
|
|
140
|
+
this._element.remove();
|
|
141
|
+
}
|
|
142
|
+
/** @internal */
|
|
143
|
+
setBlurred() {
|
|
144
|
+
this._element.classList.remove("lm_focused" /* DomConstants.ClassName.Focused */);
|
|
145
|
+
this._titleElement.classList.remove("lm_focused" /* DomConstants.ClassName.Focused */);
|
|
146
|
+
}
|
|
147
|
+
/** @internal */
|
|
148
|
+
setFocused() {
|
|
149
|
+
this._element.classList.add("lm_focused" /* DomConstants.ClassName.Focused */);
|
|
150
|
+
this._titleElement.classList.add("lm_focused" /* DomConstants.ClassName.Focused */);
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Callback for the DragListener
|
|
154
|
+
* @param x - The tabs absolute x position
|
|
155
|
+
* @param y - The tabs absolute y position
|
|
156
|
+
* @internal
|
|
157
|
+
*/
|
|
158
|
+
onDragStart(x, y) {
|
|
159
|
+
if (this._dragListener === undefined) {
|
|
160
|
+
throw new UnexpectedUndefinedError('TODSDLU10093');
|
|
161
|
+
}
|
|
162
|
+
else {
|
|
163
|
+
if (this._dragStartEvent === undefined) {
|
|
164
|
+
throw new UnexpectedUndefinedError('TODS23309');
|
|
165
|
+
}
|
|
166
|
+
else {
|
|
167
|
+
this._dragStartEvent(x, y, this._dragListener, this.componentItem);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
/** @internal */
|
|
172
|
+
onContentItemDestroy() {
|
|
173
|
+
if (this._dragListener !== undefined) {
|
|
174
|
+
this._dragListener.destroy();
|
|
175
|
+
this._dragListener = undefined;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Callback when the tab is clicked
|
|
180
|
+
* @internal
|
|
181
|
+
*/
|
|
182
|
+
onTabClickDown(event) {
|
|
183
|
+
const target = event.target;
|
|
184
|
+
if (target === this._element || target === this._titleElement) {
|
|
185
|
+
// left mouse button
|
|
186
|
+
if (event.button === 0) {
|
|
187
|
+
// event.stopPropagation();
|
|
188
|
+
this.notifyFocus();
|
|
189
|
+
// middle mouse button
|
|
190
|
+
}
|
|
191
|
+
else if (event.button === 1 && this._componentItem.isClosable) {
|
|
192
|
+
// event.stopPropagation();
|
|
193
|
+
this.notifyClose();
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
/** @internal */
|
|
198
|
+
onTabTouchStart(event) {
|
|
199
|
+
if (event.target === this._element) {
|
|
200
|
+
this.notifyFocus();
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Callback when the tab's close button is clicked
|
|
205
|
+
* @internal
|
|
206
|
+
*/
|
|
207
|
+
onCloseClick() {
|
|
208
|
+
this.notifyClose();
|
|
209
|
+
}
|
|
210
|
+
/** @internal */
|
|
211
|
+
onCloseTouchStart() {
|
|
212
|
+
this.notifyClose();
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Callback to capture tab close button mousedown
|
|
216
|
+
* to prevent tab from activating.
|
|
217
|
+
* @internal
|
|
218
|
+
*/
|
|
219
|
+
// private onCloseMousedown(): void {
|
|
220
|
+
// // event.stopPropagation();
|
|
221
|
+
// }
|
|
222
|
+
/** @internal */
|
|
223
|
+
notifyClose() {
|
|
224
|
+
if (this._closeEvent === undefined) {
|
|
225
|
+
throw new UnexpectedUndefinedError('TNC15007');
|
|
226
|
+
}
|
|
227
|
+
else {
|
|
228
|
+
this._closeEvent(this._componentItem);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
/** @internal */
|
|
232
|
+
notifyFocus() {
|
|
233
|
+
if (this._focusEvent === undefined) {
|
|
234
|
+
throw new UnexpectedUndefinedError('TNA15007');
|
|
235
|
+
}
|
|
236
|
+
else {
|
|
237
|
+
this._focusEvent(this._componentItem);
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
/** @internal */
|
|
241
|
+
enableReorder() {
|
|
242
|
+
this._dragListener = new DragListener(this._element, [this._titleElement]);
|
|
243
|
+
this._dragListener.on('dragStart', this._dragStartListener);
|
|
244
|
+
this._componentItem.on('destroy', this._contentItemDestroyListener);
|
|
245
|
+
}
|
|
246
|
+
/** @internal */
|
|
247
|
+
disableReorder() {
|
|
248
|
+
if (this._dragListener === undefined) {
|
|
249
|
+
throw new UnexpectedUndefinedError('TDR87745');
|
|
250
|
+
}
|
|
251
|
+
else {
|
|
252
|
+
this._componentItem.off('destroy', this._contentItemDestroyListener);
|
|
253
|
+
this._dragListener.off('dragStart', this._dragStartListener);
|
|
254
|
+
this._dragListener = undefined;
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
//# sourceMappingURL=tab.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tab.js","sourceRoot":"","sources":["../../../../src/ts/controls/tab.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
import { AssertError } from '../errors/internal-error';
|
|
2
|
+
import { numberToPixels, pixelsToNumber } from '../utils/utils';
|
|
3
|
+
import { Tab } from './tab';
|
|
4
|
+
/** @internal */
|
|
5
|
+
export class TabsContainer {
|
|
6
|
+
constructor(_layoutManager, _componentRemoveEvent, _componentFocusEvent, _componentDragStartEvent, _dropdownActiveChangedEvent) {
|
|
7
|
+
this._layoutManager = _layoutManager;
|
|
8
|
+
this._componentRemoveEvent = _componentRemoveEvent;
|
|
9
|
+
this._componentFocusEvent = _componentFocusEvent;
|
|
10
|
+
this._componentDragStartEvent = _componentDragStartEvent;
|
|
11
|
+
this._dropdownActiveChangedEvent = _dropdownActiveChangedEvent;
|
|
12
|
+
// There is one tab per ComponentItem in stack. However they may not be ordered the same
|
|
13
|
+
this._tabs = [];
|
|
14
|
+
this._lastVisibleTabIndex = -1;
|
|
15
|
+
this._dropdownActive = false;
|
|
16
|
+
this._element = document.createElement('section');
|
|
17
|
+
this._element.classList.add("lm_tabs" /* DomConstants.ClassName.Tabs */);
|
|
18
|
+
this._dropdownElement = document.createElement('section');
|
|
19
|
+
this._dropdownElement.classList.add("lm_tabdropdown_list" /* DomConstants.ClassName.TabDropdownList */);
|
|
20
|
+
this._dropdownElement.style.display = 'none';
|
|
21
|
+
}
|
|
22
|
+
get tabs() { return this._tabs; }
|
|
23
|
+
get tabCount() { return this._tabs.length; }
|
|
24
|
+
get lastVisibleTabIndex() { return this._lastVisibleTabIndex; }
|
|
25
|
+
get element() { return this._element; }
|
|
26
|
+
get dropdownElement() { return this._dropdownElement; }
|
|
27
|
+
get dropdownActive() { return this._dropdownActive; }
|
|
28
|
+
destroy() {
|
|
29
|
+
for (let i = 0; i < this._tabs.length; i++) {
|
|
30
|
+
this._tabs[i].destroy();
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Creates a new tab and associates it with a contentItem
|
|
35
|
+
* @param index - The position of the tab
|
|
36
|
+
*/
|
|
37
|
+
createTab(componentItem, index) {
|
|
38
|
+
//If there's already a tab relating to the
|
|
39
|
+
//content item, don't do anything
|
|
40
|
+
for (let i = 0; i < this._tabs.length; i++) {
|
|
41
|
+
if (this._tabs[i].componentItem === componentItem) {
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
const tab = new Tab(this._layoutManager, componentItem, (item) => this.handleTabCloseEvent(item), (item) => this.handleTabFocusEvent(item), (x, y, dragListener, item) => this.handleTabDragStartEvent(x, y, dragListener, item));
|
|
46
|
+
if (index === undefined) {
|
|
47
|
+
index = this._tabs.length;
|
|
48
|
+
}
|
|
49
|
+
this._tabs.splice(index, 0, tab);
|
|
50
|
+
if (index < this._element.childNodes.length) {
|
|
51
|
+
this._element.insertBefore(tab.element, this._element.childNodes[index]);
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
this._element.appendChild(tab.element);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
removeTab(componentItem) {
|
|
58
|
+
// componentItem cannot be ActiveComponentItem
|
|
59
|
+
for (let i = 0; i < this._tabs.length; i++) {
|
|
60
|
+
if (this._tabs[i].componentItem === componentItem) {
|
|
61
|
+
const tab = this._tabs[i];
|
|
62
|
+
tab.destroy();
|
|
63
|
+
this._tabs.splice(i, 1);
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
throw new Error('contentItem is not controlled by this header');
|
|
68
|
+
}
|
|
69
|
+
processActiveComponentChanged(newActiveComponentItem) {
|
|
70
|
+
let activeIndex = -1;
|
|
71
|
+
for (let i = 0; i < this._tabs.length; i++) {
|
|
72
|
+
const isActive = this._tabs[i].componentItem === newActiveComponentItem;
|
|
73
|
+
this._tabs[i].setActive(isActive);
|
|
74
|
+
if (isActive) {
|
|
75
|
+
activeIndex = i;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
if (activeIndex < 0) {
|
|
79
|
+
throw new AssertError('HSACI56632');
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
if (this._layoutManager.layoutConfig.settings.reorderOnTabMenuClick) {
|
|
83
|
+
/**
|
|
84
|
+
* If the tab selected was in the dropdown, move everything down one to make way for this one to be the first.
|
|
85
|
+
* This will make sure the most used tabs stay visible.
|
|
86
|
+
*/
|
|
87
|
+
if (this._lastVisibleTabIndex !== -1 && activeIndex > this._lastVisibleTabIndex) {
|
|
88
|
+
const activeTab = this._tabs[activeIndex];
|
|
89
|
+
for (let j = activeIndex; j > 0; j--) {
|
|
90
|
+
this._tabs[j] = this._tabs[j - 1];
|
|
91
|
+
}
|
|
92
|
+
this._tabs[0] = activeTab;
|
|
93
|
+
// updateTabSizes will always be called after this and it will reposition tab elements
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Pushes the tabs to the tab dropdown if the available space is not sufficient
|
|
100
|
+
*/
|
|
101
|
+
updateTabSizes(availableWidth, activeComponentItem) {
|
|
102
|
+
let dropDownActive = false;
|
|
103
|
+
const success = this.tryUpdateTabSizes(dropDownActive, availableWidth, activeComponentItem);
|
|
104
|
+
if (!success) {
|
|
105
|
+
dropDownActive = true;
|
|
106
|
+
// this will always succeed
|
|
107
|
+
this.tryUpdateTabSizes(dropDownActive, availableWidth, activeComponentItem);
|
|
108
|
+
}
|
|
109
|
+
if (dropDownActive !== this._dropdownActive) {
|
|
110
|
+
this._dropdownActive = dropDownActive;
|
|
111
|
+
this._dropdownActiveChangedEvent();
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
tryUpdateTabSizes(dropdownActive, availableWidth, activeComponentItem) {
|
|
115
|
+
if (this._tabs.length > 0) {
|
|
116
|
+
if (activeComponentItem === undefined) {
|
|
117
|
+
throw new Error('non-empty tabs must have active component item');
|
|
118
|
+
}
|
|
119
|
+
let cumulativeTabWidth = 0;
|
|
120
|
+
let tabOverlapAllowanceExceeded = false;
|
|
121
|
+
const tabOverlapAllowance = this._layoutManager.layoutConfig.settings.tabOverlapAllowance;
|
|
122
|
+
const activeIndex = this._tabs.indexOf(activeComponentItem.tab);
|
|
123
|
+
const activeTab = this._tabs[activeIndex];
|
|
124
|
+
this._lastVisibleTabIndex = -1;
|
|
125
|
+
for (let i = 0; i < this._tabs.length; i++) {
|
|
126
|
+
const tabElement = this._tabs[i].element;
|
|
127
|
+
//Put the tab in the tabContainer so its true width can be checked
|
|
128
|
+
if (tabElement.parentElement !== this._element) {
|
|
129
|
+
this._element.appendChild(tabElement);
|
|
130
|
+
}
|
|
131
|
+
const tabMarginRightPixels = getComputedStyle(activeTab.element).marginRight;
|
|
132
|
+
const tabMarginRight = pixelsToNumber(tabMarginRightPixels);
|
|
133
|
+
const tabWidth = tabElement.offsetWidth + tabMarginRight;
|
|
134
|
+
cumulativeTabWidth += tabWidth;
|
|
135
|
+
//Include the active tab's width if it isn't already
|
|
136
|
+
//This is to ensure there is room to show the active tab
|
|
137
|
+
let visibleTabWidth = 0;
|
|
138
|
+
if (activeIndex <= i) {
|
|
139
|
+
visibleTabWidth = cumulativeTabWidth;
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
const activeTabMarginRightPixels = getComputedStyle(activeTab.element).marginRight;
|
|
143
|
+
const activeTabMarginRight = pixelsToNumber(activeTabMarginRightPixels);
|
|
144
|
+
visibleTabWidth = cumulativeTabWidth + activeTab.element.offsetWidth + activeTabMarginRight;
|
|
145
|
+
}
|
|
146
|
+
// If the tabs won't fit, check the overlap allowance.
|
|
147
|
+
if (visibleTabWidth > availableWidth) {
|
|
148
|
+
//Once allowance is exceeded, all remaining tabs go to menu.
|
|
149
|
+
if (!tabOverlapAllowanceExceeded) {
|
|
150
|
+
//No overlap for first tab or active tab
|
|
151
|
+
//Overlap spreads among non-active, non-first tabs
|
|
152
|
+
let overlap;
|
|
153
|
+
if (activeIndex > 0 && activeIndex <= i) {
|
|
154
|
+
overlap = (visibleTabWidth - availableWidth) / (i - 1);
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
overlap = (visibleTabWidth - availableWidth) / i;
|
|
158
|
+
}
|
|
159
|
+
//Check overlap against allowance.
|
|
160
|
+
if (overlap < tabOverlapAllowance) {
|
|
161
|
+
for (let j = 0; j <= i; j++) {
|
|
162
|
+
const marginLeft = (j !== activeIndex && j !== 0) ? '-' + numberToPixels(overlap) : '';
|
|
163
|
+
this._tabs[j].element.style.zIndex = numberToPixels(i - j);
|
|
164
|
+
this._tabs[j].element.style.marginLeft = marginLeft;
|
|
165
|
+
}
|
|
166
|
+
this._lastVisibleTabIndex = i;
|
|
167
|
+
if (tabElement.parentElement !== this._element) {
|
|
168
|
+
this._element.appendChild(tabElement);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
else {
|
|
172
|
+
tabOverlapAllowanceExceeded = true;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
else if (i === activeIndex) {
|
|
176
|
+
//Active tab should show even if allowance exceeded. (We left room.)
|
|
177
|
+
tabElement.style.zIndex = 'auto';
|
|
178
|
+
tabElement.style.marginLeft = '';
|
|
179
|
+
if (tabElement.parentElement !== this._element) {
|
|
180
|
+
this._element.appendChild(tabElement);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
if (tabOverlapAllowanceExceeded && i !== activeIndex) {
|
|
184
|
+
if (dropdownActive) {
|
|
185
|
+
//Tab menu already shown, so we just add to it.
|
|
186
|
+
tabElement.style.zIndex = 'auto';
|
|
187
|
+
tabElement.style.marginLeft = '';
|
|
188
|
+
if (tabElement.parentElement !== this._dropdownElement) {
|
|
189
|
+
this._dropdownElement.appendChild(tabElement);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
else {
|
|
193
|
+
//We now know the tab menu must be shown, so we have to recalculate everything.
|
|
194
|
+
return false;
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
else {
|
|
199
|
+
this._lastVisibleTabIndex = i;
|
|
200
|
+
tabElement.style.zIndex = 'auto';
|
|
201
|
+
tabElement.style.marginLeft = '';
|
|
202
|
+
if (tabElement.parentElement !== this._element) {
|
|
203
|
+
this._element.appendChild(tabElement);
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
return true;
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Shows drop down for additional tabs when there are too many to display.
|
|
212
|
+
*/
|
|
213
|
+
showAdditionalTabsDropdown() {
|
|
214
|
+
this._dropdownElement.style.display = '';
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Hides drop down for additional tabs when there are too many to display.
|
|
218
|
+
*/
|
|
219
|
+
hideAdditionalTabsDropdown() {
|
|
220
|
+
this._dropdownElement.style.display = 'none';
|
|
221
|
+
}
|
|
222
|
+
handleTabCloseEvent(componentItem) {
|
|
223
|
+
this._componentRemoveEvent(componentItem);
|
|
224
|
+
}
|
|
225
|
+
handleTabFocusEvent(componentItem) {
|
|
226
|
+
this._componentFocusEvent(componentItem);
|
|
227
|
+
}
|
|
228
|
+
handleTabDragStartEvent(x, y, dragListener, componentItem) {
|
|
229
|
+
this._componentDragStartEvent(x, y, dragListener, componentItem);
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
//# sourceMappingURL=tabs-container.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tabs-container.js","sourceRoot":"","sources":["../../../../src/ts/controls/tabs-container.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/** @internal @deprecated To be removed */
|
|
2
|
+
export class TransitionIndicator {
|
|
3
|
+
constructor() {
|
|
4
|
+
this._element = document.createElement('div');
|
|
5
|
+
this._element.classList.add("lm_transition_indicator" /* DomConstants.ClassName.TransitionIndicator */);
|
|
6
|
+
document.body.appendChild(this._element);
|
|
7
|
+
this._toElement = null;
|
|
8
|
+
this._fromDimensions = null;
|
|
9
|
+
this._totalAnimationDuration = 200;
|
|
10
|
+
this._animationStartTime = null;
|
|
11
|
+
}
|
|
12
|
+
destroy() {
|
|
13
|
+
this._element.remove();
|
|
14
|
+
}
|
|
15
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
16
|
+
transitionElements(fromElement, toElement) {
|
|
17
|
+
/**
|
|
18
|
+
* TODO - This is not quite as cool as expected. Review.
|
|
19
|
+
*/
|
|
20
|
+
return;
|
|
21
|
+
// this._toElement = toElement;
|
|
22
|
+
// this._animationStartTime = now();
|
|
23
|
+
// this._fromDimensions = this._measure(fromElement);
|
|
24
|
+
// this._fromDimensions.opacity = 0.8;
|
|
25
|
+
// this._element.show().css(this._fromDimensions);
|
|
26
|
+
// animFrame(fnBind(this._nextAnimationFrame, this));
|
|
27
|
+
}
|
|
28
|
+
nextAnimationFrame() {
|
|
29
|
+
// if (this._toElement === null || this._fromDimensions === null || this._animationStartTime === null) {
|
|
30
|
+
// throw new UnexpectedNullError('TINAFTD97115');
|
|
31
|
+
// } else {
|
|
32
|
+
// const toDimensions = this.measure(this._toElement);
|
|
33
|
+
// const animationProgress = (now() - this._animationStartTime) / this._totalAnimationDuration;
|
|
34
|
+
// const currentFrameStyles = {};
|
|
35
|
+
// const cssProperty;
|
|
36
|
+
// if (animationProgress >= 1) {
|
|
37
|
+
// this._element.style.display = 'none';
|
|
38
|
+
// return;
|
|
39
|
+
// }
|
|
40
|
+
// toDimensions.opacity = 0;
|
|
41
|
+
// for (const cssProperty in this._fromDimensions) {
|
|
42
|
+
// currentFrameStyles[cssProperty] = this._fromDimensions[cssProperty] +
|
|
43
|
+
// (toDimensions[cssProperty] - this._fromDimensions[cssProperty]) *
|
|
44
|
+
// animationProgress;
|
|
45
|
+
// }
|
|
46
|
+
// this._element.css(currentFrameStyles);
|
|
47
|
+
// animFrame(fnBind(this._nextAnimationFrame, this));
|
|
48
|
+
// }
|
|
49
|
+
}
|
|
50
|
+
measure(element) {
|
|
51
|
+
const rect = element.getBoundingClientRect();
|
|
52
|
+
return {
|
|
53
|
+
left: rect.left,
|
|
54
|
+
top: rect.top,
|
|
55
|
+
width: element.offsetWidth,
|
|
56
|
+
height: element.offsetHeight,
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=transition-indicator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transition-indicator.js","sourceRoot":"","sources":["../../../../src/ts/controls/transition-indicator.ts"],"names":[],"mappings":"AAGA,0CAA0C;AAC1C,MAAM,OAAO,mBAAmB;IAO5B;QACI,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC9C,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,4EAA4C,CAAC;QACxE,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEzC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC5B,IAAI,CAAC,uBAAuB,GAAG,GAAG,CAAC;QACnC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;IACpC,CAAC;IAED,OAAO;QACH,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;IAC3B,CAAC;IAED,6DAA6D;IAC7D,kBAAkB,CAAC,WAAwB,EAAE,SAAsB;QAC/D;;WAEG;QACH,OAAO;QACP,+BAA+B;QAC/B,oCAAoC;QACpC,qDAAqD;QACrD,sCAAsC;QACtC,kDAAkD;QAClD,qDAAqD;IACzD,CAAC;IAEO,kBAAkB;QACtB,wGAAwG;QACxG,qDAAqD;QACrD,WAAW;QACX,0DAA0D;QAC1D,mGAAmG;QACnG,qCAAqC;QACrC,yBAAyB;QAEzB,oCAAoC;QACpC,gDAAgD;QAChD,kBAAkB;QAClB,QAAQ;QAER,gCAAgC;QAEhC,wDAAwD;QACxD,gFAAgF;QAChF,gFAAgF;QAChF,iCAAiC;QACjC,QAAQ;QAER,6CAA6C;QAC7C,yDAAyD;QACzD,IAAI;IACR,CAAC;IAEO,OAAO,CAAC,OAAoB;QAChC,MAAM,IAAI,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;QAE7C,OAAO;YACH,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,KAAK,EAAE,OAAO,CAAC,WAAW;YAC1B,MAAM,EAAE,OAAO,CAAC,YAAY;SAC/B,CAAC;IACN,CAAC;CACJ"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/** @public */
|
|
2
|
+
export class ExternalError extends Error {
|
|
3
|
+
/** @internal */
|
|
4
|
+
constructor(type, message) {
|
|
5
|
+
super(message);
|
|
6
|
+
this.type = type;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
/** @public */
|
|
10
|
+
export class ConfigurationError extends ExternalError {
|
|
11
|
+
/** @internal */
|
|
12
|
+
constructor(message, node) {
|
|
13
|
+
super('Configuration', message);
|
|
14
|
+
this.node = node;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
/** @public */
|
|
18
|
+
export class PopoutBlockedError extends ExternalError {
|
|
19
|
+
/** @internal */
|
|
20
|
+
constructor(message) {
|
|
21
|
+
super('PopoutBlocked', message);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
/** @public */
|
|
25
|
+
export class ApiError extends ExternalError {
|
|
26
|
+
/** @internal */
|
|
27
|
+
constructor(message) {
|
|
28
|
+
super('API', message);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
/** @public */
|
|
32
|
+
export class BindError extends ExternalError {
|
|
33
|
+
/** @internal */
|
|
34
|
+
constructor(message) {
|
|
35
|
+
super('Bind', message);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=external-error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"external-error.js","sourceRoot":"","sources":["../../../../src/ts/errors/external-error.ts"],"names":[],"mappings":"AAAA,cAAc;AACd,MAAM,OAAgB,aAAc,SAAQ,KAAK;IAC7C,gBAAgB;IAChB,YAA4B,IAAY,EAAE,OAAe;QACrD,KAAK,CAAC,OAAO,CAAC,CAAC;QADS,SAAI,GAAJ,IAAI,CAAQ;IAExC,CAAC;CACJ;AAED,cAAc;AACd,MAAM,OAAO,kBAAmB,SAAQ,aAAa;IACjD,gBAAgB;IAChB,YAAY,OAAe,EAAkB,IAAa;QACtD,KAAK,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;QADS,SAAI,GAAJ,IAAI,CAAS;IAE1D,CAAC;CACJ;AAED,cAAc;AACd,MAAM,OAAO,kBAAmB,SAAQ,aAAa;IACjD,gBAAgB;IAChB,YAAY,OAAe;QACvB,KAAK,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;IACpC,CAAC;CACJ;AAED,cAAc;AACd,MAAM,OAAO,QAAS,SAAQ,aAAa;IACvC,gBAAgB;IAChB,YAAY,OAAe;QACvB,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC1B,CAAC;CACJ;AAED,cAAc;AACd,MAAM,OAAO,SAAU,SAAQ,aAAa;IACxC,gBAAgB;IAChB,YAAY,OAAe;QACvB,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3B,CAAC;CACJ"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/** @internal */
|
|
2
|
+
class InternalError extends Error {
|
|
3
|
+
constructor(type, code, message) {
|
|
4
|
+
super(`${type}: ${code}${message === undefined ? '' : ': ' + message}`);
|
|
5
|
+
}
|
|
6
|
+
}
|
|
7
|
+
/** @internal */
|
|
8
|
+
export class AssertError extends InternalError {
|
|
9
|
+
constructor(code, message) {
|
|
10
|
+
super('Assert', code, message);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
/** @internal */
|
|
14
|
+
export class UnreachableCaseError extends InternalError {
|
|
15
|
+
constructor(code, variableValue, message) {
|
|
16
|
+
super('UnreachableCase', code, `${variableValue}${message === undefined ? '' : ': ' + message}`);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
/** @internal */
|
|
20
|
+
export class UnexpectedNullError extends InternalError {
|
|
21
|
+
constructor(code, message) {
|
|
22
|
+
super('UnexpectedNull', code, message);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
/** @internal */
|
|
26
|
+
export class UnexpectedUndefinedError extends InternalError {
|
|
27
|
+
constructor(code, message) {
|
|
28
|
+
super('UnexpectedUndefined', code, message);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=internal-error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"internal-error.js","sourceRoot":"","sources":["../../../../src/ts/errors/internal-error.ts"],"names":[],"mappings":"AAAA,gBAAgB;AAChB,MAAe,aAAc,SAAQ,KAAK;IACtC,YAAY,IAAY,EAAE,IAAY,EAAE,OAAgB;QACpD,KAAK,CAAC,GAAG,IAAI,KAAK,IAAI,GAAG,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,OAAO,EAAE,CAAC,CAAA;IAC3E,CAAC;CACJ;AAED,gBAAgB;AAChB,MAAM,OAAO,WAAY,SAAQ,aAAa;IAC1C,YAAY,IAAY,EAAE,OAAgB;QACtC,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;IAClC,CAAC;CACJ;AAED,gBAAgB;AAChB,MAAM,OAAO,oBAAqB,SAAQ,aAAa;IACnD,YAAY,IAAY,EAAE,aAAoB,EAAE,OAAgB;QAC5D,KAAK,CAAC,iBAAiB,EAAE,IAAI,EAAE,GAAG,aAAa,GAAG,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,OAAO,EAAE,CAAC,CAAA;IACpG,CAAC;CACJ;AAED,gBAAgB;AAChB,MAAM,OAAO,mBAAoB,SAAQ,aAAa;IAClD,YAAY,IAAY,EAAE,OAAgB;QACtC,KAAK,CAAC,gBAAgB,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;IAC1C,CAAC;CACJ;AAED,gBAAgB;AAChB,MAAM,OAAO,wBAAyB,SAAQ,aAAa;IACvD,YAAY,IAAY,EAAE,OAAgB;QACtC,KAAK,CAAC,qBAAqB,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;IAC/C,CAAC;CACJ"}
|