@netless/telebox-insider 0.2.26 → 0.2.28
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/dist/style.css +506 -1
- package/dist/telebox-insider.cjs.js +3121 -2
- package/dist/telebox-insider.cjs.js.map +1 -1
- package/dist/telebox-insider.es.js +3109 -2
- package/dist/telebox-insider.es.js.map +1 -1
- package/package.json +1 -1
- package/src/TeleBox/index.ts +6 -2
- package/src/TeleTitleBar/DefaultTitleBar/style.scss +3 -1
|
@@ -1,4 +1,210 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __defProps = Object.defineProperties;
|
|
4
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
5
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
8
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
9
|
+
var __spreadValues = (a, b) => {
|
|
10
|
+
for (var prop in b || (b = {}))
|
|
11
|
+
if (__hasOwnProp.call(b, prop))
|
|
12
|
+
__defNormalProp(a, prop, b[prop]);
|
|
13
|
+
if (__getOwnPropSymbols)
|
|
14
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
15
|
+
if (__propIsEnum.call(b, prop))
|
|
16
|
+
__defNormalProp(a, prop, b[prop]);
|
|
17
|
+
}
|
|
18
|
+
return a;
|
|
19
|
+
};
|
|
20
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
21
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
+
exports[Symbol.toStringTag] = "Module";
|
|
23
|
+
var React = require("react");
|
|
24
|
+
function _interopDefaultLegacy(e2) {
|
|
25
|
+
return e2 && typeof e2 === "object" && "default" in e2 ? e2 : { "default": e2 };
|
|
26
|
+
}
|
|
27
|
+
var React__default = /* @__PURE__ */ _interopDefaultLegacy(React);
|
|
28
|
+
var fancyScrollbar = ".tele-fancy-scrollbar {\n overscroll-behavior: contain;\n overflow: auto;\n overflow-y: scroll;\n overflow-y: overlay;\n -webkit-overflow-scrolling: touch;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n scrollbar-width: auto;\n}\n.tele-fancy-scrollbar::-webkit-scrollbar {\n height: 8px;\n width: 8px;\n}\n.tele-fancy-scrollbar::-webkit-scrollbar-track {\n background-color: transparent;\n}\n.tele-fancy-scrollbar::-webkit-scrollbar-thumb {\n background-color: rgba(68, 78, 96, 0.1);\n background-color: transparent;\n border-radius: 4px;\n transition: background-color 0.4s;\n}\n.tele-fancy-scrollbar:hover::-webkit-scrollbar-thumb {\n background-color: rgba(68, 78, 96, 0.1);\n}\n.tele-fancy-scrollbar::-webkit-scrollbar-thumb:hover {\n background-color: rgba(68, 78, 96, 0.2);\n}\n.tele-fancy-scrollbar::-webkit-scrollbar-thumb:active {\n background-color: rgba(68, 78, 96, 0.2);\n}\n.tele-fancy-scrollbar::-webkit-scrollbar-thumb:vertical {\n min-height: 50px;\n}\n.tele-fancy-scrollbar::-webkit-scrollbar-thumb:horizontal {\n min-width: 50px;\n}";
|
|
29
|
+
var style$3 = '.telebox-box {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 100;\n transition: width 0.4s cubic-bezier(0.4, 0.9, 0.71, 1.02), height 0.4s cubic-bezier(0.55, 0.82, 0.63, 0.95), opacity 0.6s cubic-bezier(0.7, 0, 0.84, 0), transform 0.4s ease;\n}\n\n.telebox-box-main {\n position: relative;\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n background: #f9f9fc;\n box-shadow: 0px 4px 10px 0px rgba(47, 65, 146, 0.15);\n border-radius: 6px;\n border: 1px solid #e3e3ec;\n}\n\n.telebox-titlebar-wrap {\n flex-shrink: 0;\n position: relative;\n z-index: 1;\n}\n\n.telebox-content-wrap {\n flex: 1;\n width: 100%;\n overflow: hidden;\n display: flex;\n justify-content: center;\n align-items: center;\n}\n\n.telebox-content {\n width: 100%;\n height: 100%;\n position: relative;\n}\n\n.telebox-footer-wrap {\n flex-shrink: 0;\n display: flex;\n flex-direction: column;\n}\n\n.telebox-footer-wrap::before {\n content: "";\n display: block;\n flex: 1;\n}\n\n.telebox-resize-handle {\n user-select: none;\n -webkit-touch-callout: none;\n -webkit-user-select: none;\n position: absolute;\n z-index: 2147483647;\n}\n\n.telebox-n {\n width: 100%;\n height: 5px;\n left: 0;\n top: -5px;\n cursor: n-resize;\n}\n\n.telebox-s {\n width: 100%;\n height: 5px;\n left: 0;\n bottom: -5px;\n cursor: s-resize;\n}\n\n.telebox-w {\n width: 5px;\n height: 100%;\n left: -5px;\n top: 0;\n cursor: w-resize;\n}\n\n.telebox-e {\n width: 5px;\n height: 100%;\n right: -5px;\n top: 0;\n cursor: e-resize;\n}\n\n.telebox-nw {\n width: 15px;\n height: 15px;\n top: -5px;\n left: -5px;\n cursor: nw-resize;\n}\n\n.telebox-ne {\n width: 15px;\n height: 15px;\n top: -5px;\n right: -5px;\n cursor: ne-resize;\n}\n\n.telebox-se {\n width: 15px;\n height: 15px;\n bottom: -5px;\n right: -5px;\n cursor: se-resize;\n}\n\n.telebox-sw {\n width: 15px;\n height: 15px;\n bottom: -5px;\n left: -5px;\n cursor: sw-resize;\n}\n\n.telebox-track-mask {\n user-select: none;\n -webkit-touch-callout: none;\n -webkit-user-select: none;\n position: fixed;\n top: 0;\n left: 0;\n z-index: 2147483647;\n width: 100%;\n height: 100%;\n background: rgba(0, 0, 0, 0.0001);\n cursor: move;\n}\n\n.telebox-cursor-n {\n cursor: n-resize;\n}\n\n.telebox-cursor-s {\n cursor: s-resize;\n}\n\n.telebox-cursor-w {\n cursor: w-resize;\n}\n\n.telebox-cursor-e {\n cursor: e-resize;\n}\n\n.telebox-cursor-nw {\n cursor: nw-resize;\n}\n\n.telebox-cursor-ne {\n cursor: ne-resize;\n}\n\n.telebox-cursor-se {\n cursor: se-resize;\n}\n\n.telebox-cursor-sw {\n cursor: sw-resize;\n}\n\n.telebox-maximized .telebox-resize-handles,\n.telebox-no-resize .telebox-resize-handles {\n display: none;\n}\n\n.telebox-maximized {\n box-shadow: none;\n transition: none;\n}\n\n.telebox-minimized {\n transition: width 0.05s cubic-bezier(0.4, 0.9, 0.71, 1.02), height 0.05s cubic-bezier(0.55, 0.82, 0.63, 0.95), opacity 0.6s cubic-bezier(0.7, 0, 0.84, 0), transform 0.6s ease;\n opacity: 0;\n pointer-events: none;\n user-select: none;\n}\n\n.telebox-transforming {\n will-change: transform;\n transition: opacity 0.6s cubic-bezier(0.7, 0, 0.84, 0);\n}\n\n.telebox-readonly .telebox-resize-handle {\n cursor: initial !important;\n pointer-events: none !important;\n}\n\n.telebox-color-scheme-dark {\n color-scheme: dark;\n}\n\n.telebox-color-scheme-dark .telebox-box-main {\n color: #e9e9e9;\n background: #212126;\n border-color: #43434d;\n}';
|
|
30
|
+
var eventemitter3 = { exports: {} };
|
|
31
|
+
(function(module) {
|
|
32
|
+
var has = Object.prototype.hasOwnProperty, prefix = "~";
|
|
33
|
+
function Events() {
|
|
34
|
+
}
|
|
35
|
+
if (Object.create) {
|
|
36
|
+
Events.prototype = Object.create(null);
|
|
37
|
+
if (!new Events().__proto__)
|
|
38
|
+
prefix = false;
|
|
39
|
+
}
|
|
40
|
+
function EE(fn, context, once) {
|
|
41
|
+
this.fn = fn;
|
|
42
|
+
this.context = context;
|
|
43
|
+
this.once = once || false;
|
|
44
|
+
}
|
|
45
|
+
function addListener(emitter, event, fn, context, once) {
|
|
46
|
+
if (typeof fn !== "function") {
|
|
47
|
+
throw new TypeError("The listener must be a function");
|
|
48
|
+
}
|
|
49
|
+
var listener = new EE(fn, context || emitter, once), evt = prefix ? prefix + event : event;
|
|
50
|
+
if (!emitter._events[evt])
|
|
51
|
+
emitter._events[evt] = listener, emitter._eventsCount++;
|
|
52
|
+
else if (!emitter._events[evt].fn)
|
|
53
|
+
emitter._events[evt].push(listener);
|
|
54
|
+
else
|
|
55
|
+
emitter._events[evt] = [emitter._events[evt], listener];
|
|
56
|
+
return emitter;
|
|
57
|
+
}
|
|
58
|
+
function clearEvent(emitter, evt) {
|
|
59
|
+
if (--emitter._eventsCount === 0)
|
|
60
|
+
emitter._events = new Events();
|
|
61
|
+
else
|
|
62
|
+
delete emitter._events[evt];
|
|
63
|
+
}
|
|
64
|
+
function EventEmitter2() {
|
|
65
|
+
this._events = new Events();
|
|
66
|
+
this._eventsCount = 0;
|
|
67
|
+
}
|
|
68
|
+
EventEmitter2.prototype.eventNames = function eventNames() {
|
|
69
|
+
var names = [], events, name;
|
|
70
|
+
if (this._eventsCount === 0)
|
|
71
|
+
return names;
|
|
72
|
+
for (name in events = this._events) {
|
|
73
|
+
if (has.call(events, name))
|
|
74
|
+
names.push(prefix ? name.slice(1) : name);
|
|
75
|
+
}
|
|
76
|
+
if (Object.getOwnPropertySymbols) {
|
|
77
|
+
return names.concat(Object.getOwnPropertySymbols(events));
|
|
78
|
+
}
|
|
79
|
+
return names;
|
|
80
|
+
};
|
|
81
|
+
EventEmitter2.prototype.listeners = function listeners(event) {
|
|
82
|
+
var evt = prefix ? prefix + event : event, handlers = this._events[evt];
|
|
83
|
+
if (!handlers)
|
|
84
|
+
return [];
|
|
85
|
+
if (handlers.fn)
|
|
86
|
+
return [handlers.fn];
|
|
87
|
+
for (var i2 = 0, l = handlers.length, ee = new Array(l); i2 < l; i2++) {
|
|
88
|
+
ee[i2] = handlers[i2].fn;
|
|
89
|
+
}
|
|
90
|
+
return ee;
|
|
91
|
+
};
|
|
92
|
+
EventEmitter2.prototype.listenerCount = function listenerCount(event) {
|
|
93
|
+
var evt = prefix ? prefix + event : event, listeners = this._events[evt];
|
|
94
|
+
if (!listeners)
|
|
95
|
+
return 0;
|
|
96
|
+
if (listeners.fn)
|
|
97
|
+
return 1;
|
|
98
|
+
return listeners.length;
|
|
99
|
+
};
|
|
100
|
+
EventEmitter2.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {
|
|
101
|
+
var evt = prefix ? prefix + event : event;
|
|
102
|
+
if (!this._events[evt])
|
|
103
|
+
return false;
|
|
104
|
+
var listeners = this._events[evt], len = arguments.length, args, i2;
|
|
105
|
+
if (listeners.fn) {
|
|
106
|
+
if (listeners.once)
|
|
107
|
+
this.removeListener(event, listeners.fn, void 0, true);
|
|
108
|
+
switch (len) {
|
|
109
|
+
case 1:
|
|
110
|
+
return listeners.fn.call(listeners.context), true;
|
|
111
|
+
case 2:
|
|
112
|
+
return listeners.fn.call(listeners.context, a1), true;
|
|
113
|
+
case 3:
|
|
114
|
+
return listeners.fn.call(listeners.context, a1, a2), true;
|
|
115
|
+
case 4:
|
|
116
|
+
return listeners.fn.call(listeners.context, a1, a2, a3), true;
|
|
117
|
+
case 5:
|
|
118
|
+
return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;
|
|
119
|
+
case 6:
|
|
120
|
+
return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;
|
|
121
|
+
}
|
|
122
|
+
for (i2 = 1, args = new Array(len - 1); i2 < len; i2++) {
|
|
123
|
+
args[i2 - 1] = arguments[i2];
|
|
124
|
+
}
|
|
125
|
+
listeners.fn.apply(listeners.context, args);
|
|
126
|
+
} else {
|
|
127
|
+
var length = listeners.length, j;
|
|
128
|
+
for (i2 = 0; i2 < length; i2++) {
|
|
129
|
+
if (listeners[i2].once)
|
|
130
|
+
this.removeListener(event, listeners[i2].fn, void 0, true);
|
|
131
|
+
switch (len) {
|
|
132
|
+
case 1:
|
|
133
|
+
listeners[i2].fn.call(listeners[i2].context);
|
|
134
|
+
break;
|
|
135
|
+
case 2:
|
|
136
|
+
listeners[i2].fn.call(listeners[i2].context, a1);
|
|
137
|
+
break;
|
|
138
|
+
case 3:
|
|
139
|
+
listeners[i2].fn.call(listeners[i2].context, a1, a2);
|
|
140
|
+
break;
|
|
141
|
+
case 4:
|
|
142
|
+
listeners[i2].fn.call(listeners[i2].context, a1, a2, a3);
|
|
143
|
+
break;
|
|
144
|
+
default:
|
|
145
|
+
if (!args)
|
|
146
|
+
for (j = 1, args = new Array(len - 1); j < len; j++) {
|
|
147
|
+
args[j - 1] = arguments[j];
|
|
148
|
+
}
|
|
149
|
+
listeners[i2].fn.apply(listeners[i2].context, args);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
return true;
|
|
154
|
+
};
|
|
155
|
+
EventEmitter2.prototype.on = function on(event, fn, context) {
|
|
156
|
+
return addListener(this, event, fn, context, false);
|
|
157
|
+
};
|
|
158
|
+
EventEmitter2.prototype.once = function once(event, fn, context) {
|
|
159
|
+
return addListener(this, event, fn, context, true);
|
|
160
|
+
};
|
|
161
|
+
EventEmitter2.prototype.removeListener = function removeListener(event, fn, context, once) {
|
|
162
|
+
var evt = prefix ? prefix + event : event;
|
|
163
|
+
if (!this._events[evt])
|
|
164
|
+
return this;
|
|
165
|
+
if (!fn) {
|
|
166
|
+
clearEvent(this, evt);
|
|
167
|
+
return this;
|
|
168
|
+
}
|
|
169
|
+
var listeners = this._events[evt];
|
|
170
|
+
if (listeners.fn) {
|
|
171
|
+
if (listeners.fn === fn && (!once || listeners.once) && (!context || listeners.context === context)) {
|
|
172
|
+
clearEvent(this, evt);
|
|
173
|
+
}
|
|
174
|
+
} else {
|
|
175
|
+
for (var i2 = 0, events = [], length = listeners.length; i2 < length; i2++) {
|
|
176
|
+
if (listeners[i2].fn !== fn || once && !listeners[i2].once || context && listeners[i2].context !== context) {
|
|
177
|
+
events.push(listeners[i2]);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
if (events.length)
|
|
181
|
+
this._events[evt] = events.length === 1 ? events[0] : events;
|
|
182
|
+
else
|
|
183
|
+
clearEvent(this, evt);
|
|
184
|
+
}
|
|
185
|
+
return this;
|
|
186
|
+
};
|
|
187
|
+
EventEmitter2.prototype.removeAllListeners = function removeAllListeners(event) {
|
|
188
|
+
var evt;
|
|
189
|
+
if (event) {
|
|
190
|
+
evt = prefix ? prefix + event : event;
|
|
191
|
+
if (this._events[evt])
|
|
192
|
+
clearEvent(this, evt);
|
|
193
|
+
} else {
|
|
194
|
+
this._events = new Events();
|
|
195
|
+
this._eventsCount = 0;
|
|
196
|
+
}
|
|
197
|
+
return this;
|
|
198
|
+
};
|
|
199
|
+
EventEmitter2.prototype.off = EventEmitter2.prototype.removeListener;
|
|
200
|
+
EventEmitter2.prototype.addListener = EventEmitter2.prototype.on;
|
|
201
|
+
EventEmitter2.prefixed = prefix;
|
|
202
|
+
EventEmitter2.EventEmitter = EventEmitter2;
|
|
203
|
+
{
|
|
204
|
+
module.exports = EventEmitter2;
|
|
205
|
+
}
|
|
206
|
+
})(eventemitter3);
|
|
207
|
+
var EventEmitter = eventemitter3.exports;
|
|
2
208
|
/*! *****************************************************************************
|
|
3
209
|
Copyright (c) Microsoft Corporation.
|
|
4
210
|
|
|
@@ -12,5 +218,2918 @@ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
|
12
218
|
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
13
219
|
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
14
220
|
PERFORMANCE OF THIS SOFTWARE.
|
|
15
|
-
***************************************************************************** */function m(e,t){var i={};for(var s in e)Object.prototype.hasOwnProperty.call(e,s)&&t.indexOf(s)<0&&(i[s]=e[s]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(s=Object.getOwnPropertySymbols(e);r<s.length;r++)t.indexOf(s[r])<0&&Object.prototype.propertyIsEnumerable.call(e,s[r])&&(i[s[r]]=e[s[r]])}return i}var p=0,v="undefined"!=typeof window&&void 0!==window.requestAnimationFrame?function(e){return window.requestAnimationFrame(e)}:function(e){var t=Date.now(),i=Math.max(0,16.7-(t-p));p=t+i,setTimeout((function(){return e(p)}),i)},x=1/60*1e3,_=!0,g=!1,b=!1,T={delta:0,timestamp:0},B=["read","update","preRender","render","postRender"],y=function(e){return g=e},w=B.reduce((function(e,t){var i,s,r,n,o,a,l,h,c;return e[t]=(i=y,s=[],r=[],n=0,o=!1,a=0,l=new WeakSet,h=new WeakSet,c={cancel:function(e){var t=r.indexOf(e);l.add(e),-1!==t&&r.splice(t,1)},process:function(e){var t,d;if(o=!0,s=(t=[r,s])[0],(r=t[1]).length=0,n=s.length)for(a=0;a<n;a++)(d=s[a])(e),!0!==h.has(d)||l.has(d)||(c.schedule(d),i(!0));o=!1},schedule:function(e,t,i){void 0===t&&(t=!1),void 0===i&&(i=!1);var a=i&&o,c=a?s:r;l.delete(e),t&&h.add(e),-1===c.indexOf(e)&&(c.push(e),a&&(n=s.length))}}),e}),{}),L=B.reduce((function(e,t){var i=w[t];return e[t]=function(e,t,s){return void 0===t&&(t=!1),void 0===s&&(s=!1),g||$(),i.schedule(e,t,s),e},e}),{}),C=function(e){return w[e].process(T)},N=function(e){g=!1,T.delta=_?x:Math.max(Math.min(e-T.timestamp,40),1),_||(x=T.delta),T.timestamp=e,b=!0,B.forEach(C),b=!1,g&&(_=!1,v(N))},$=function(){g=!0,_=!0,b||v(N)},O=function(){return(O=Object.assign||function(e){for(var t,i=1,s=arguments.length;i<s;i++)for(var r in t=arguments[i])Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e}).apply(this,arguments)},z=function(e,t){return function(i){return Math.max(Math.min(i,t),e)}},M=function(e){return e%1?Number(e.toFixed(5)):e},S=/^(#[0-9a-f]{3}|#(?:[0-9a-f]{2}){2,4}|(rgb|hsl)a?\((-?[\d\.]+%?[,\s]+){2,3}\s*\/*\s*[\d\.]+%?\))$/i,R={test:function(e){return"number"==typeof e},parse:parseFloat,transform:function(e){return e}},A=O(O({},R),{transform:z(0,1)}),X=O(O({},R),{default:1}),k=function(e){return{test:function(t){return"string"==typeof t&&t.endsWith(e)&&1===t.split(" ").length},parse:parseFloat,transform:function(t){return""+t+e}}},V=k("deg"),D=k("%"),I=k("px"),H=O(O({},D),{parse:function(e){return D.parse(e)/100},transform:function(e){return D.transform(100*e)}}),W=z(0,255),j=function(e){return void 0!==e.red},G=function(e){return void 0!==e.hue};var P=function(e){return function(t){if("string"!=typeof t)return t;for(var i={},s=function(e){return e.substring(e.indexOf("(")+1,e.lastIndexOf(")"))}(t).replace(/(,|\/)/g," ").split(/ \s*/),r=0;r<4;r++)i[e[r]]=void 0!==s[r]?parseFloat(s[r]):1;return i}},Y=O(O({},R),{transform:function(e){return Math.round(W(e))}});function Z(e,t){return e.startsWith(t)&&S.test(e)}var F,q={test:function(e){return"string"==typeof e?Z(e,"rgb"):j(e)},parse:P(["red","green","blue","alpha"]),transform:function(e){var t=e.red,i=e.green,s=e.blue,r=e.alpha,n=void 0===r?1:r;return function(e){var t=e.red,i=e.green,s=e.blue,r=e.alpha;return"rgba("+t+", "+i+", "+s+", "+(void 0===r?1:r)+")"}({red:Y.transform(t),green:Y.transform(i),blue:Y.transform(s),alpha:M(A.transform(n))})}},U={test:function(e){return"string"==typeof e?Z(e,"hsl"):G(e)},parse:P(["hue","saturation","lightness","alpha"]),transform:function(e){var t=e.hue,i=e.saturation,s=e.lightness,r=e.alpha,n=void 0===r?1:r;return function(e){var t=e.hue,i=e.saturation,s=e.lightness,r=e.alpha;return"hsla("+t+", "+i+", "+s+", "+(void 0===r?1:r)+")"}({hue:Math.round(t),saturation:D.transform(M(i)),lightness:D.transform(M(s)),alpha:M(A.transform(n))})}},J=O(O({},q),{test:function(e){return"string"==typeof e&&Z(e,"#")},parse:function(e){var t="",i="",s="";return e.length>4?(t=e.substr(1,2),i=e.substr(3,2),s=e.substr(5,2)):(t=e.substr(1,1),i=e.substr(2,1),s=e.substr(3,1),t+=t,i+=i,s+=s),{red:parseInt(t,16),green:parseInt(i,16),blue:parseInt(s,16),alpha:1}}}),Q={test:function(e){return"string"==typeof e&&S.test(e)||j(e)||G(e)},parse:function(e){return q.test(e)?q.parse(e):U.test(e)?U.parse(e):J.test(e)?J.parse(e):e},transform:function(e){return j(e)?q.transform(e):G(e)?U.transform(e):e}},K=function(e){var t=e.onRead,i=e.onRender,s=e.uncachedValues,r=void 0===s?new Set:s,n=e.useCache,o=void 0===n||n;return function(e){void 0===e&&(e={});var s=m(e,[]),n={},a=[],l=!1;function h(e,t){e.startsWith("--")&&(s.hasCSSVariable=!0);var i=n[e];n[e]=t,n[e]!==i&&(-1===a.indexOf(e)&&a.push(e),l||(l=!0,L.render(c.render)))}var c={get:function(e,i){return void 0===i&&(i=!1),!i&&o&&!r.has(e)&&void 0!==n[e]?n[e]:t(e,s)},set:function(e,t){if("string"==typeof e)h(e,t);else for(var i in e)h(i,e[i]);return this},render:function(e){return void 0===e&&(e=!1),(l||!0===e)&&(i(n,s,a),l=!1,a.length=0),this}};return c}},ee=/([a-z])([A-Z])/g,te=function(e){return e.replace(ee,"$1-$2").toLowerCase()},ie=new Map,se=new Map,re=["Webkit","Moz","O","ms",""],ne=re.length,oe="undefined"!=typeof document,ae=function(e,t){return se.set(e,te(t))},le=function(e,t){void 0===t&&(t=!1);var i=t?se:ie;return i.has(e)||(oe?function(e){F=F||document.createElement("div");for(var t=0;t<ne;t++){var i=re[t],s=""===i,r=s?e:i+e.charAt(0).toUpperCase()+e.slice(1);if(r in F.style||s){if(s&&"clipPath"===e&&se.has(e))return;ie.set(e,r),ae(e,(s?"":"-")+te(r))}}}(e):function(e){ae(e,e)}(e)),i.get(e)||e},he=["","X","Y","Z"],ce=["translate","scale","rotate","skew","transformPerspective"].reduce((function(e,t){return he.reduce((function(e,i){return e.push(t+i),e}),e)}),["x","y","z"]),de=ce.reduce((function(e,t){return e[t]=!0,e}),{});function ue(e){return!0===de[e]}function fe(e,t){return ce.indexOf(e)-ce.indexOf(t)}var Ee=new Set(["originX","originY","originZ"]);function me(e){return Ee.has(e)}var pe=E(E({},R),{transform:Math.round}),ve={color:Q,backgroundColor:Q,outlineColor:Q,fill:Q,stroke:Q,borderColor:Q,borderTopColor:Q,borderRightColor:Q,borderBottomColor:Q,borderLeftColor:Q,borderWidth:I,borderTopWidth:I,borderRightWidth:I,borderBottomWidth:I,borderLeftWidth:I,borderRadius:I,radius:I,borderTopLeftRadius:I,borderTopRightRadius:I,borderBottomRightRadius:I,borderBottomLeftRadius:I,width:I,maxWidth:I,height:I,maxHeight:I,size:I,top:I,right:I,bottom:I,left:I,padding:I,paddingTop:I,paddingRight:I,paddingBottom:I,paddingLeft:I,margin:I,marginTop:I,marginRight:I,marginBottom:I,marginLeft:I,rotate:V,rotateX:V,rotateY:V,rotateZ:V,scale:X,scaleX:X,scaleY:X,scaleZ:X,skew:V,skewX:V,skewY:V,distance:I,translateX:I,translateY:I,translateZ:I,x:I,y:I,z:I,perspective:I,opacity:A,originX:H,originY:H,originZ:I,zIndex:pe,fillOpacity:A,strokeOpacity:A,numOctaves:pe},xe=function(e){return ve[e]},_e=function(e,t){return t&&"number"==typeof e?t.transform(e):e},ge=new Set(["scrollLeft","scrollTop"]),be=new Set(["scrollLeft","scrollTop","transform"]),Te={x:"translateX",y:"translateY",z:"translateZ"};function Be(e){return"function"==typeof e}function ye(e,t,i,s,r,n,o,a){void 0===t&&(t=!0),void 0===i&&(i={}),void 0===s&&(s={}),void 0===r&&(r={}),void 0===n&&(n=[]),void 0===o&&(o=!1),void 0===a&&(a=!0);var l=!0,h=!1,c=!1;for(var d in e){var u=e[d],f=xe(d),E=_e(u,f);ue(d)?(h=!0,s[d]=E,n.push(d),l&&(f.default&&u!==f.default||!f.default&&0!==u)&&(l=!1)):me(d)?(r[d]=E,c=!0):be.has(d)&&Be(E)||(i[le(d,o)]=E)}return(h||"function"==typeof e.transform)&&(i.transform=function(e,t,i,s,r,n){void 0===n&&(n=!0);var o="",a=!1;i.sort(fe);for(var l=i.length,h=0;h<l;h++){var c=i[h];o+=(Te[c]||c)+"("+t[c]+") ",a="z"===c||a}return!a&&r?o+="translateZ(0)":o=o.trim(),Be(e.transform)?o=e.transform(t,s?"":o):n&&s&&(o="none"),o}(e,s,n,l,t,a)),c&&(i.transformOrigin=(r.originX||"50%")+" "+(r.originY||"50%")+" "+(r.originZ||0)),i}function we(e){var t=void 0===e?{}:e,i=t.enableHardwareAcceleration,s=void 0===i||i,r=t.isDashCase,n=void 0===r||r,o=t.allowTransformNone,a=void 0===o||o,l={},h={},c={},d=[];return function(e){return d.length=0,ye(e,s,l,h,c,d,n,a),l}}var Le=K({onRead:function(e,t){var i=t.element,s=t.preparseOutput,r=xe(e);if(ue(e))return r&&r.default||0;if(ge.has(e))return i[e];var n=window.getComputedStyle(i,null).getPropertyValue(le(e,!0))||0;return s&&r&&r.test(n)&&r.parse?r.parse(n):n},onRender:function(e,t,i){var s=t.element,r=t.buildStyles,n=t.hasCSSVariable;if(Object.assign(s.style,r(e)),n)for(var o=i.length,a=0;a<o;a++){var l=i[a];l.startsWith("--")&&s.style.setProperty(l,e[l])}-1!==i.indexOf("scrollLeft")&&(s.scrollLeft=e.scrollLeft),-1!==i.indexOf("scrollTop")&&(s.scrollTop=e.scrollTop)},uncachedValues:ge});var Ce=new Set(["baseFrequency","diffuseConstant","kernelMatrix","kernelUnitLength","keySplines","keyTimes","limitingConeAngle","markerHeight","markerWidth","numOctaves","targetX","targetY","surfaceScale","specularConstant","specularExponent","stdDeviation","tableValues"]),Ne=function(e,t){return I.transform(e*t)},$e={x:0,y:0,width:0,height:0};function Oe(e,t,i){return"string"==typeof e?e:I.transform(t+i*e)}var ze={enableHardwareAcceleration:!1,isDashCase:!1};function Me(e,t,i,s,r,n){void 0===t&&(t=$e),void 0===s&&(s=we(ze)),void 0===r&&(r={style:{}}),void 0===n&&(n=!0);var o=e.attrX,a=e.attrY,l=e.originX,h=e.originY,c=e.pathLength,d=e.pathSpacing,u=void 0===d?1:d,f=e.pathOffset,E=void 0===f?0:f,p=s(m(e,["attrX","attrY","originX","originY","pathLength","pathSpacing","pathOffset"]));for(var v in p){if("transform"===v)r.style.transform=p[v];else r[n&&!Ce.has(v)?te(v):v]=p[v]}return(void 0!==l||void 0!==h||p.transform)&&(r.style.transformOrigin=function(e,t,i){return Oe(t,e.x,e.width)+" "+Oe(i,e.y,e.height)}(t,void 0!==l?l:.5,void 0!==h?h:.5)),void 0!==o&&(r.x=o),void 0!==a&&(r.y=a),void 0!==i&&void 0!==c&&(r[n?"stroke-dashoffset":"strokeDashoffset"]=Ne(-E,i),r[n?"stroke-dasharray":"strokeDasharray"]=Ne(c,i)+" "+Ne(u,i)),r}function Se(e,t,i){void 0===i&&(i=!0);var s={style:{}},r=we(ze);return function(n){return Me(n,e,t,r,s,i)}}var Re=K({onRead:function(e,t){var i=t.element;if(ue(e=Ce.has(e)?e:te(e))){var s=xe(e);return s&&s.default||0}return i.getAttribute(e)},onRender:function(e,t){var i=t.element,s=(0,t.buildAttrs)(e);for(var r in s)"style"===r?Object.assign(i.style,s.style):i.setAttribute(r,s[r])}}),Ae=K({useCache:!1,onRead:function(e){return"scrollTop"===e?window.pageYOffset:window.pageXOffset},onRender:function(e){var t=e.scrollTop,i=void 0===t?0:t,s=e.scrollLeft,r=void 0===s?0:s;return window.scrollTo(r,i)}}),Xe=new WeakMap,ke=function(e,t){var i,s,r,n;return e===window?i=Ae(e):!function(e){return e instanceof HTMLElement||"function"==typeof e.click}(e)?function(e){return e instanceof SVGElement||"ownerSVGElement"in e}(e)&&(r=function(e){try{return function(e){return"function"==typeof e.getBBox?e.getBBox():e.getBoundingClientRect()}(e)}catch(t){return{x:0,y:0,width:0,height:0}}}(s=e),n=function(e){return"path"===e.tagName}(s)&&s.getTotalLength?s.getTotalLength():void 0,i=Re({element:s,buildAttrs:Se(r,n)})):i=function(e,t){void 0===t&&(t={});var i=t.enableHardwareAcceleration,s=t.allowTransformNone,r=m(t,["enableHardwareAcceleration","allowTransformNone"]);return Le(E({element:e,buildStyles:we({enableHardwareAcceleration:i,allowTransformNone:s}),preparseOutput:!0},r))}(e,t),Xe.set(e,i),i};function Ve(e,t){return function(e,t){return Xe.has(e)?Xe.get(e):ke(e,t)}("string"==typeof e?document.querySelector(e):e,t)}var De=function(e,t,i,s){var r=i?i.call(s,e,t):void 0;if(void 0!==r)return!!r;if(e===t)return!0;if("object"!=typeof e||!e||"object"!=typeof t||!t)return!1;var n=Object.keys(e),o=Object.keys(t);if(n.length!==o.length)return!1;for(var a=Object.prototype.hasOwnProperty.bind(t),l=0;l<n.length;l++){var h=n[l];if(!a(h))return!1;var c=e[h],d=t[h];if(!1===(r=i?i.call(s,c,d,h):void 0)||void 0===r&&c!==d)return!1}return!0};const Ie="!#%()*+,-./:;=?@[]^_`{|}~ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",He=Ie.length,We=Array(20),je=()=>{for(let e=0;e<20;e++)We[e]=Ie.charAt(Math.random()*He);return We.join("")};class Ge{constructor(){this.disposers=new Map}add(e,t=je()){return this.flush(t),this.disposers.set(t,e()),t}addDisposer(e,t=je()){return this.flush(t),this.disposers.set(t,e),t}addEventListener(e,t,i,s,r=je()){return this.add((()=>(e.addEventListener(t,i,s),()=>e.removeEventListener(t,i,s))),r),r}setTimeout(e,t,i=je()){return this.add((()=>{const s=window.setTimeout((()=>{this.remove(i),e()}),t);return()=>window.clearTimeout(s)}),i)}setInterval(e,t,i=je()){return this.add((()=>{const i=window.setInterval(e,t);return()=>window.clearInterval(i)}),i)}remove(e){const t=this.disposers.get(e);return this.disposers.delete(e),t}flush(e){const t=this.remove(e);if(t)try{t()}catch(i){console.error(i)}}flushAll(){this.disposers.forEach((e=>{try{e()}catch(t){console.error(t)}})),this.disposers.clear()}}var Pe=Object.defineProperty,Ye=("undefined"!=typeof require&&require,(e,t,i)=>{return n=i,(r="symbol"!=typeof t?t+"":t)in(s=e)?Pe(s,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):s[r]=n,i;var s,r,n});class Ze{constructor(e,t){Ye(this,"_value"),Ye(this,"_beforeDestroys"),Ye(this,"_subscribers"),this._value=e,t&&(this.compare=t)}get value(){return this._value}setValue(e,t){if(!this.compare(e,this._value)){const i=this._value;this._value=e,this._subscribers&&this._subscribers.forEach((s=>s(e,i,t)))}}reaction(e){return this._subscribers||(this._subscribers=new Set),this._subscribers.add(e),()=>{this._subscribers&&this._subscribers.delete(e)}}subscribe(e,t){const i=this.reaction(e);return e(this._value,void 0,t),i}derive(e,t,i){const s=new Ze(e(this.value,void 0,i),t),r=this.reaction(((t,i,r)=>{s.setValue(e(t,i,r))}));return s.addBeforeDestroy(r),s}destroy(){this._beforeDestroys&&(this._beforeDestroys.forEach((e=>e())),this._beforeDestroys.clear()),this._subscribers&&this._subscribers.clear()}addBeforeDestroy(e){return this._beforeDestroys||(this._beforeDestroys=new Set),this._beforeDestroys.add(e),()=>{this._beforeDestroys&&this._beforeDestroys.delete(e)}}compare(e,t){return e===t}}function Fe(e,t){Object.keys(t).forEach((i=>{!function(e,t,i){var s;Object.defineProperties(e,{[t]:{get:()=>i.value},[`_${t}$`]:{value:i},[`set${s=t,s[0].toUpperCase()+s.slice(1)}`]:{value:(e,t)=>i.setValue(e,t)}})}(e,i,t[i])}))}function qe(e){const t=t=>{const i=e.addDisposer((()=>{t.destroy()}));return t.addBeforeDestroy((()=>{e.remove(i)})),t};return{bindSideEffect:t,combine:(e,i,s,r)=>t(function(e,t,i,s){let r=e.map((e=>e.value));const n=new Ze(t(r,void 0,s),i);return e.forEach(((e,i)=>{const s=e.reaction(((e,s,o)=>{const a=r.slice();a[i]=e;const l=r;r=a,n.setValue(t(a,l,o),o)}));n.addBeforeDestroy(s)})),n}(e,i,s,r)),createVal:(e,i)=>t(new Ze(e,i))}}var Ue,Je,Qe,Ke,et;exports.TELE_BOX_COLOR_SCHEME=void 0,(Ue=exports.TELE_BOX_COLOR_SCHEME||(exports.TELE_BOX_COLOR_SCHEME={})).Light="light",Ue.Dark="dark",Ue.Auto="auto",exports.TELE_BOX_STATE=void 0,(Je=exports.TELE_BOX_STATE||(exports.TELE_BOX_STATE={})).Normal="normal",Je.Minimized="minimized",Je.Maximized="maximized",exports.TELE_BOX_EVENT=void 0,(Qe=exports.TELE_BOX_EVENT||(exports.TELE_BOX_EVENT={})).DarkMode="dark_mode",Qe.PrefersColorScheme="prefers_color_scheme",Qe.Close="close",Qe.Focus="focus",Qe.Blur="blur",Qe.Move="move",Qe.Resize="resize",Qe.IntrinsicMove="intrinsic_move",Qe.IntrinsicResize="intrinsic_resize",Qe.VisualResize="visual_resize",Qe.ZIndex="z_index",Qe.State="state",Qe.Minimized="minimized",Qe.Maximized="maximized",Qe.Readonly="readonly",Qe.Destroyed="destroyed",exports.TELE_BOX_DELEGATE_EVENT=void 0,(Ke=exports.TELE_BOX_DELEGATE_EVENT||(exports.TELE_BOX_DELEGATE_EVENT={})).Close="close",Ke.Maximize="maximize",Ke.Minimize="minimize",exports.TELE_BOX_RESIZE_HANDLE=void 0,(et=exports.TELE_BOX_RESIZE_HANDLE||(exports.TELE_BOX_RESIZE_HANDLE={})).North="n",et.South="s",et.West="w",et.East="e",et.NorthWest="nw",et.NorthEast="ne",et.SouthEast="se",et.SouthWest="sw";function tt(e,t,i){return Math.min(Math.max(e,t),i)}function it(e){e.stopPropagation(),e.cancelable&&e.preventDefault()}function st(e){return e.touches?e.touches[0]:e}function rt(){return Date.now().toString().slice(6)+Math.random().toString().slice(2,8)}let nt=1;function ot(){return"New Box "+nt++}function at(e){return Boolean(e)}function lt(e){return!e}class ht{constructor({readonly:e=!1,title:t,buttons:i,onEvent:s,onDragStart:r,namespace:n="telebox",state:o=exports.TELE_BOX_STATE.Normal}={}){this.$btns=[],this.sideEffect=new Ge,this.lastTitleBarClick={timestamp:0,clientX:-100,clientY:-100},this.handleTitleBarClick=e=>{var t;if(this.readonly)return;if(0!==e.button)return;if(null==(t=e.target.dataset)?void 0:t.teleTitleBarNoDblClick)return;it(e);const i=Date.now();i-this.lastTitleBarClick.timestamp<=500?Math.abs(e.clientX-this.lastTitleBarClick.clientX)<=5&&Math.abs(e.clientY-this.lastTitleBarClick.clientY)<=5&&this.onEvent&&this.onEvent({type:exports.TELE_BOX_DELEGATE_EVENT.Maximize}):this.onDragStart&&this.onDragStart(e),this.lastTitleBarClick.timestamp=i,this.lastTitleBarClick.clientX=e.clientX,this.lastTitleBarClick.clientY=e.clientY},this.lastTitleBarTouch={timestamp:0,clientX:-100,clientY:-100},this.handleTitleBarTouch=e=>{var t;if(this.readonly)return;if(null==(t=e.target.dataset)?void 0:t.teleTitleBarNoDblClick)return;it(e);const i=Date.now(),{clientX:s=this.lastTitleBarTouch.clientX+100,clientY:r=this.lastTitleBarTouch.clientY+100}=e.touches[0]||{};i-this.lastTitleBarTouch.timestamp<=500?Math.abs(s-this.lastTitleBarTouch.clientX)<=10&&Math.abs(r-this.lastTitleBarTouch.clientY)<=10&&this.onEvent&&this.onEvent({type:exports.TELE_BOX_DELEGATE_EVENT.Maximize}):this.onDragStart&&this.onDragStart(e),this.lastTitleBarTouch.timestamp=i,this.lastTitleBarTouch.clientX=s,this.lastTitleBarTouch.clientY=r},this.readonly=e,this.onEvent=s,this.onDragStart=r,this.namespace=n,this.title=t,this.state=o,this.buttons=i||[{type:exports.TELE_BOX_DELEGATE_EVENT.Minimize,iconClassName:this.wrapClassName("titlebar-icon-minimize")},{type:exports.TELE_BOX_DELEGATE_EVENT.Maximize,iconClassName:this.wrapClassName("titlebar-icon-maximize"),isActive:e=>e===exports.TELE_BOX_STATE.Maximized},{type:exports.TELE_BOX_DELEGATE_EVENT.Close,iconClassName:this.wrapClassName("titlebar-icon-close")}],this.$dragArea=this.renderDragArea()}setTitle(e){this.title=e,this.$title&&(this.$title.textContent=e,this.$title.title=e)}setState(e){this.state!==e&&(this.state=e,this.buttons.forEach(((t,i)=>{t.isActive&&this.$btns[i].classList.toggle("is-active",t.isActive(e))})))}setReadonly(e){this.readonly!==e&&(this.readonly=e)}render(){if(!this.$titleBar){this.$titleBar=document.createElement("div"),this.$titleBar.className=this.wrapClassName("titlebar");const e=document.createElement("div");e.className=this.wrapClassName("title-area"),e.dataset.teleBoxHandle="dh",this.$title=document.createElement("h1"),this.$title.className=this.wrapClassName("title"),this.$title.dataset.teleBoxHandle="dh",this.title&&(this.$title.textContent=this.title,this.$title.title=this.title),e.appendChild(this.$title),e.appendChild(this.$dragArea);const t=document.createElement("div");t.className=this.wrapClassName("titlebar-btns"),this.buttons.forEach((({iconClassName:e,isActive:i},s)=>{const r=String(s),n=document.createElement("button");n.className=`${this.wrapClassName("titlebar-btn")} ${e}`,n.dataset.teleTitleBarBtnIndex=r,n.dataset.teleTitleBarNoDblClick="true",i&&n.classList.toggle("is-active",i(this.state)),this.$btns.push(n),t.appendChild(n)})),this.sideEffect.addEventListener(t,"click",(e=>{var t;if(this.readonly)return;const i=e.target,s=Number(null==(t=i.dataset)?void 0:t.teleTitleBarBtnIndex);if(!Number.isNaN(s)&&s<this.buttons.length){it(e);const t=this.buttons[s];this.onEvent&&this.onEvent({type:t.type,value:t.value})}})),this.$titleBar.appendChild(e),this.$titleBar.appendChild(t)}return this.$titleBar}renderDragArea(){const e=document.createElement("div");return e.className=this.wrapClassName("drag-area"),e.dataset.teleBoxHandle="dh",this.sideEffect.addEventListener(e,"mousedown",this.handleTitleBarClick),this.sideEffect.addEventListener(e,"touchstart",this.handleTitleBarTouch,{passive:!0}),e}dragHandle(){return this.$titleBar}wrapClassName(e){return`${this.namespace}-${e}`}destroy(){this.sideEffect.flushAll(),this.$titleBar&&(this.$titleBar=void 0,this.$title=void 0,this.$btns.length=0,this.onDragStart=void 0,this.onEvent=void 0)}}class ct{constructor({id:e=rt(),title:t=ot(),prefersColorScheme:i=exports.TELE_BOX_COLOR_SCHEME.Light,darkMode:s,visible:r=!0,width:n=.5,height:o=.5,minWidth:a=0,minHeight:l=0,x:h=.1,y:c=.1,minimized:d=!1,maximized:u=!1,readonly:E=!1,resizable:m=!0,draggable:p=!0,fence:v=!0,fixRatio:x=!1,focus:_=!1,zIndex:g=100,namespace:b="telebox",titleBar:T,content:B,footer:y,styles:w,containerRect:L={x:0,y:0,width:window.innerWidth,height:window.innerHeight},collectorRect:C}={}){this._renderSideEffect=new Ge,this.handleTrackStart=e=>{var t;return null==(t=this._handleTrackStart)?void 0:t.call(this,e)},this._sideEffect=new Ge,this._valSideEffectBinder=qe(this._sideEffect);const{combine:N,createVal:$}=this._valSideEffectBinder;this.id=e,this.namespace=b,this.events=new f,this._delegateEvents=new f;const O=$(i);O.reaction(((e,t,i)=>{i||this.events.emit(exports.TELE_BOX_EVENT.PrefersColorScheme,e)}));const z=$(Boolean(s));null==s&&O.subscribe(((e,t,i)=>{this._sideEffect.add((()=>{if("auto"===e){const e=window.matchMedia("(prefers-color-scheme: dark)");if(e){z.setValue(e.matches,i);const t=e=>{z.setValue(e.matches,i)};return e.addListener(t),()=>e.removeListener(t)}return dt}return z.setValue("dark"===e,i),dt}),"prefers-color-scheme")})),z.reaction(((e,t,i)=>{i||this.events.emit(exports.TELE_BOX_EVENT.DarkMode,e)}));const M=$(L,De),S=$(C,De),R=$(t),A=$(r);A.reaction(((e,t,i)=>{i||e||this.events.emit(exports.TELE_BOX_EVENT.Close)}));const X=$(E);X.reaction(((e,t,i)=>{i||this.events.emit(exports.TELE_BOX_EVENT.Readonly,e)}));const k=$(m),V=$(p),D=$(v),I=$(x),H=$(g);H.reaction(((e,t,i)=>{i||this.events.emit(exports.TELE_BOX_EVENT.ZIndex,e)}));const W=$(_);W.reaction(((e,t,i)=>{i||this.events.emit(e?exports.TELE_BOX_EVENT.Focus:exports.TELE_BOX_EVENT.Blur)}));const j=$(d);j.reaction(((e,t,i)=>{i||this.events.emit(exports.TELE_BOX_EVENT.Minimized,e)}));const G=$(u);G.reaction(((e,t,i)=>{i||this.events.emit(exports.TELE_BOX_EVENT.Maximized,e)}));const P=N([j,G],(([e,t])=>e?exports.TELE_BOX_STATE.Minimized:t?exports.TELE_BOX_STATE.Maximized:exports.TELE_BOX_STATE.Normal));P.reaction(((e,t,i)=>{i||this.events.emit(exports.TELE_BOX_EVENT.State,e)}));const Y=$({width:tt(a,0,1),height:tt(l,0,1)},De),Z=$({width:tt(n,Y.value.width,1),height:tt(o,Y.value.height,1)},De);Y.reaction(((e,t,i)=>{Z.setValue({width:tt(n,e.width,1),height:tt(o,e.height,1)},i)})),Z.reaction(((e,t,i)=>{i||this.events.emit(exports.TELE_BOX_EVENT.IntrinsicResize,e)}));const F=N([Z,G],(([e,t])=>t?{width:1,height:1}:e),De);F.reaction(((e,t,i)=>{i||this.events.emit(exports.TELE_BOX_EVENT.Resize,e)}));const q=N([F,j,M,S],(([e,t,i,s])=>t&&s?{width:s.width/e.width/i.width,height:s.height/e.height/i.height}:e),De);q.reaction(((e,t,i)=>{i||this.events.emit(exports.TELE_BOX_EVENT.VisualResize,e)}));const U=$({x:tt(h,0,1),y:tt(c,0,1)},De);U.reaction(((e,t,i)=>{i||this.events.emit(exports.TELE_BOX_EVENT.IntrinsicMove,e)}));const J=N([U,Z,M,S,j,G],(([e,t,i,s,r,n])=>r&&s?n?{x:(s.x+s.width/2)/i.width-.5,y:(s.y+s.height/2)/i.height-.5}:{x:(s.x+s.width/2)/i.width-t.width/2,y:(s.y+s.height/2)/i.height-t.height/2}:n?{x:0,y:0}:e),De);J.reaction(((e,t,i)=>{i||this.events.emit(exports.TELE_BOX_EVENT.Move,e)})),this.titleBar=T||new ht({readonly:X.value,title:R.value,namespace:this.namespace,onDragStart:e=>{var t;return null==(t=this._handleTrackStart)?void 0:t.call(this,e)},onEvent:e=>{if(this._delegateEvents.listeners.length>0)this._delegateEvents.emit(e.type);else switch(e.type){case exports.TELE_BOX_DELEGATE_EVENT.Maximize:G.setValue(!G.value);break;case exports.TELE_BOX_DELEGATE_EVENT.Minimize:j.setValue(!0);break;case exports.TELE_BOX_DELEGATE_EVENT.Close:A.setValue(!1);break;default:console.error("Unsupported titleBar event:",e)}}}),X.reaction((e=>{this.titleBar.setReadonly(e)}));const Q=$(B),K=$(y),ee=$(w);Fe(this,{prefersColorScheme:O,darkMode:z,containerRect:M,collectorRect:S,title:R,visible:A,readonly:X,resizable:k,draggable:V,fence:D,fixRatio:I,focus:W,zIndex:H,minimized:j,maximized:G,$userContent:Q,$userFooter:K,$userStyles:ee}),this._state$=P,this._minSize$=Y,this._size$=F,this._intrinsicSize$=Z,this._visualSize$=q,this._coord$=J,this._intrinsicCoord$=U,this.fixRatio&&this.transform(J.value.x,J.value.y,F.value.width,F.value.height,!0),this.$box=this.render()}get darkMode(){return this._darkMode$.value}get state(){return this._state$.value}setState(e,t=!1){switch(e){case exports.TELE_BOX_STATE.Maximized:this.setMinimized(!1,t),this.setMaximized(!0,t);break;case exports.TELE_BOX_STATE.Minimized:this.setMinimized(!0,t),this.setMaximized(!1,t);break;default:this.setMinimized(!1,t),this.setMaximized(!1,t)}return this}get minWidth(){return this._minSize$.value.width}get minHeight(){return this._minSize$.value.height}setMinWidth(e,t=!1){return this._minSize$.setValue({width:e,height:this.minHeight},t),this}setMinHeight(e,t=!1){return this._minSize$.setValue({width:this.minWidth,height:e},t),this}get intrinsicWidth(){return this._intrinsicSize$.value.width}get intrinsicHeight(){return this._intrinsicSize$.value.height}resize(e,t,i=!1){return this._intrinsicSize$.setValue({width:e,height:t},i),this}get width(){return this._size$.value.width}get height(){return this._size$.value.height}get absoluteWidth(){return this.width*this.containerRect.width}get absoluteHeight(){return this.height*this.containerRect.height}get visualWidth(){return this._visualSize$.value.width}get visualHeight(){return this._visualSize$.value.height}get intrinsicX(){return this._intrinsicCoord$.value.x}get intrinsicY(){return this._intrinsicCoord$.value.y}move(e,t,i=!1){return this._intrinsicCoord$.setValue({x:e,y:t},i),this}get x(){return this._coord$.value.x}get y(){return this._coord$.value.y}transform(e,t,i,s,r=!1){if(this.fixRatio){const e=this.intrinsicHeight/this.intrinsicWidth*i;t!==this.intrinsicY&&(t-=e-s),s=e}return t<0&&(t=0,s>this.intrinsicHeight&&(s=this.intrinsicHeight)),this._intrinsicCoord$.setValue({x:i>=this.minWidth?e:this.intrinsicX,y:s>=this.minHeight?t:this.intrinsicY},r),this._intrinsicSize$.setValue({width:tt(i,this.minWidth,1),height:tt(s,this.minHeight,1)},r),this}mount(e){return e.appendChild(this.render()),this}unmount(){return this.$box&&this.$box.remove(),this}mountContent(e){return this.set$userContent(e),this}unmountContent(){return this.set$userContent(void 0),this}mountFooter(e){return this.set$userFooter(e),this}unmountFooter(){return this.set$userFooter(void 0),this}getUserStyles(){return this.$userStyles}mountStyles(e){let t;return"string"==typeof e?(t=document.createElement("style"),t.textContent=e):t=e,this.set$userStyles(t),this}unmountStyles(){return this.set$userStyles(void 0),this}render(e){if(e){if(e===this.$box)return this.$box;this.$box=e}else{if(this.$box)return this.$box;this.$box=document.createElement("div")}this._renderSideEffect.flushAll(),this.$box.classList.add(this.wrapClassName("box"));const t=(e,t,i,s=at)=>this._renderSideEffect.add((()=>{const r=this.wrapClassName(i);return t.subscribe((t=>{e.classList.toggle(r,s(t))}))}));t(this.$box,this._readonly$,"readonly"),t(this.$box,this._draggable$,"no-drag",lt),t(this.$box,this._resizable$,"no-resize",lt),t(this.$box,this._focus$,"blur",lt),t(this.$box,this._darkMode$,"color-scheme-dark"),t(this.$box,this._darkMode$,"color-scheme-light",lt),this._renderSideEffect.add((()=>{const e=this.wrapClassName("minimized"),t=this.wrapClassName("maximized"),i="box-maximized-timer";return this._state$.subscribe((s=>{this.$box.classList.toggle(e,s===exports.TELE_BOX_STATE.Minimized),s===exports.TELE_BOX_STATE.Maximized?(this._renderSideEffect.flush(i),this.$box.classList.toggle(t,!0)):this._renderSideEffect.setTimeout((()=>{this.$box.classList.toggle(t,!1)}),0,i)}))})),this._renderSideEffect.add((()=>this._visible$.subscribe((e=>{this.$box.style.display=e?"block":"none"})))),this._renderSideEffect.add((()=>this._zIndex$.subscribe((e=>{this.$box.style.zIndex=String(e)}))));const i=Ve(this.$box);this.$box.dataset.teleBoxID=this.id,this.$box.style.width=this.absoluteWidth+"px",this.$box.style.height=this.absoluteHeight+"px";const s=this.x*this.containerRect.width+this.containerRect.x,r=this.y*this.containerRect.height+this.containerRect.y;this.$box.style.transform=`translate(${s-10}px,${r-10}px)`,this._valSideEffectBinder.combine([this._coord$,this._size$,this._minimized$,this._containerRect$,this._collectorRect$],(([e,t,i,s,r])=>{const n=t.width*s.width,o=t.height*s.height;return{width:n,height:o,x:e.x*s.width,y:e.y*s.height,scaleX:i&&r?r.width/n:1,scaleY:i&&r?r.height/o:1}}),De).subscribe((e=>{i.set(e)})),i.set({x:s,y:r});const n=document.createElement("div");n.className=this.wrapClassName("box-main"),this.$box.appendChild(n);const o=document.createElement("div");o.className=this.wrapClassName("titlebar-wrap"),o.appendChild(this.titleBar.render()),this.$titleBar=o;const a=document.createElement("div");a.className=this.wrapClassName("content-wrap");const l=document.createElement("div");l.className=this.wrapClassName("content")+" tele-fancy-scrollbar",this.$content=l,this._renderSideEffect.add((()=>{let e;return this._$userStyles$.subscribe((t=>{e&&e.remove(),e=t,t&&a.appendChild(t)}))})),this._renderSideEffect.add((()=>{let e;return this._$userContent$.subscribe((t=>{e&&e.remove(),e=t,t&&l.appendChild(t)}))})),a.appendChild(l);const h=document.createElement("div");return h.className=this.wrapClassName("footer-wrap"),this.$footer=h,this._renderSideEffect.add((()=>{let e;return this._$userFooter$.subscribe((t=>{e&&e.remove(),e=t,t&&h.appendChild(t)}))})),n.appendChild(o),n.appendChild(a),n.appendChild(h),this._renderResizeHandlers(),this.$box}_renderResizeHandlers(){const e=document.createElement("div");e.className=this.wrapClassName("resize-handles"),Object.values(exports.TELE_BOX_RESIZE_HANDLE).forEach((t=>{const i=document.createElement("div");i.className=this.wrapClassName(t)+" "+this.wrapClassName("resize-handle"),i.dataset.teleBoxHandle=t,e.appendChild(i)})),this.$box.appendChild(e);const t="handle-tracking-listener",i=this.wrapClassName("transforming");let s,r,n=0,o=0,a=0,l=0,h=0,c=0;const d=e=>{if(this.state!==exports.TELE_BOX_STATE.Normal)return;it(e);let{pageX:t,pageY:i}=st(e);i<0&&(i=0);const s=(t-h)/this.containerRect.width,d=(i-c)/this.containerRect.height;switch(r){case exports.TELE_BOX_RESIZE_HANDLE.North:this.transform(this.x,o+d,this.width,l-d);break;case exports.TELE_BOX_RESIZE_HANDLE.South:this.transform(this.x,this.y,this.width,l+d);break;case exports.TELE_BOX_RESIZE_HANDLE.West:this.transform(n+s,this.y,a-s,this.height);break;case exports.TELE_BOX_RESIZE_HANDLE.East:this.transform(this.x,this.y,a+s,this.height);break;case exports.TELE_BOX_RESIZE_HANDLE.NorthWest:this.transform(n+s,o+d,a-s,l-d);break;case exports.TELE_BOX_RESIZE_HANDLE.NorthEast:this.transform(this.x,o+d,a+s,l-d);break;case exports.TELE_BOX_RESIZE_HANDLE.SouthEast:this.transform(this.x,this.y,a+s,l+d);break;case exports.TELE_BOX_RESIZE_HANDLE.SouthWest:this.transform(n+s,this.y,a-s,l+d);break;default:if(this.fence)this.move(tt(n+s,0,1-this.width),tt(o+d,0,1-this.height));else{const e=20/this.containerRect.width,t=20/this.containerRect.height;this.move(tt(n+s,e-this.width,1-e),tt(o+d,0,1-t))}}},u=e=>{r=void 0,s&&(it(e),this.$box.classList.toggle(i,!1),this._sideEffect.flush(t),s.remove())},f=e=>{var f;if(this.readonly)return;if(null!=e.button&&0!==e.button)return;if(!this.draggable||r||this.state!==exports.TELE_BOX_STATE.Normal)return;const E=e.target;if(null==(f=E.dataset)?void 0:f.teleBoxHandle){it(e),n=this.x,o=this.y,a=this.width,l=this.height,({pageX:h,pageY:c}=st(e)),r=E.dataset.teleBoxHandle,s||(s=document.createElement("div"));const f=r?this.wrapClassName(`cursor-${r}`):"";s.className=this.wrapClassName("track-mask"+(f?` ${f}`:"")),this.$box.appendChild(s),this.$box.classList.add(i),this._sideEffect.add((()=>(window.addEventListener("mousemove",d),window.addEventListener("touchmove",d,{passive:!1}),window.addEventListener("mouseup",u),window.addEventListener("touchend",u,{passive:!1}),window.addEventListener("touchcancel",u,{passive:!1}),()=>{window.removeEventListener("mousemove",d),window.removeEventListener("touchmove",d),window.removeEventListener("mouseup",u),window.removeEventListener("touchend",u),window.removeEventListener("touchcancel",u)})),t)}};this._handleTrackStart=f,this._sideEffect.addEventListener(e,"mousedown",f,{},"box-resizeHandles-mousedown"),this._sideEffect.addEventListener(e,"touchstart",f,{passive:!1},"box-resizeHandles-touchstart")}destroy(){this.$box.remove(),this.events.emit(exports.TELE_BOX_EVENT.Destroyed),this._sideEffect.flushAll(),this._renderSideEffect.flushAll(),this.events.removeAllListeners(),this._delegateEvents.removeAllListeners()}wrapClassName(e){return`${this.namespace}-${e}`}}function dt(){}const ut=(e,t)=>{const i=h.useRef(!0);h.useEffect((()=>{if(!i.current)return e();i.current=!1}),t)};var ft;class Et{constructor({visible:e=!0,readonly:t=!1,darkMode:i=!1,namespace:s="telebox",styles:r={},onClick:n}={}){this.handleCollectorClick=()=>{!this._readonly&&this.onClick&&this.onClick()},this._visible=e,this._readonly=t,this._darkMode=i,this.namespace=s,this.styles=r,this.onClick=n}get visible(){return this._visible}get readonly(){return this._readonly}get darkMode(){return this._darkMode}mount(e){return e.appendChild(this.render()),this}unmount(){return this.$collector&&this.$collector.remove(),this}setVisible(e){return this._visible!==e&&(this._visible=e,this.$collector&&this.$collector.classList.toggle(this.wrapClassName("collector-visible"),e)),this}setReadonly(e){return this._readonly!==e&&(this._readonly=e,this.$collector&&this.$collector.classList.toggle(this.wrapClassName("collector-readonly"),e)),this}setDarkMode(e){return this._darkMode!==e&&(this._darkMode=e,this.$collector&&(this.$collector.classList.toggle(this.wrapClassName("color-scheme-dark"),e),this.$collector.classList.toggle(this.wrapClassName("color-scheme-light"),!e))),this}setStyles(e){if(Object.assign(this.styles,e),this.$collector){const t=this.$collector;Object.keys(e).forEach((i=>{const s=e[i];null!=s&&(t.style[i]=s)}))}return this}render(){return this.$collector||(this.$collector=document.createElement("button"),this.$collector.className=this.wrapClassName("collector"),this.$collector.style.backgroundImage="url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxOCAxNiI+CiAgICA8ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxwYXRoIHN0cm9rZT0iIzdCODhBMCIgc3Ryb2tlLXdpZHRoPSIxLjQiIGQ9Ik0uNyAxLjJoMTYuNnYxMy42SC43eiIgLz4KICAgICAgICA8cGF0aCBmaWxsPSIjN0I4OEEwIiBkPSJNNCA1LjVoNnYxLjRINHpNNCA5LjVoMTB2MS40SDR6IiAvPgogICAgPC9nPgo8L3N2Zz4K')",this.$collector.addEventListener("click",this.handleCollectorClick),this._visible&&this.$collector.classList.add(this.wrapClassName("collector-visible")),this._readonly&&this.$collector.classList.add(this.wrapClassName("collector-readonly")),this.$collector.classList.add(this.wrapClassName(this._darkMode?"color-scheme-dark":"color-scheme-light")),this.setStyles(this.styles)),this.$collector}destroy(){this.$collector&&(this.$collector.removeEventListener("click",this.handleCollectorClick),this.$collector.remove(),this.$collector=void 0),this.onClick=void 0}wrapClassName(e){return`${this.namespace}-${e}`}}exports.TELE_BOX_MANAGER_EVENT=void 0,(ft=exports.TELE_BOX_MANAGER_EVENT||(exports.TELE_BOX_MANAGER_EVENT={})).Focused="focused",ft.Blurred="blurred",ft.Created="created",ft.Removed="removed",ft.State="state",ft.Maximized="maximized",ft.Minimized="minimized",ft.Move="move",ft.Resize="resize",ft.IntrinsicMove="intrinsic_move",ft.IntrinsicResize="intrinsic_resize",ft.VisualResize="visual_resize",ft.ZIndex="z_index",ft.PrefersColorScheme="prefers_color_scheme",ft.DarkMode="dark_mode";class mt extends ht{constructor(e){super(e),this.boxes=e.boxes,this.focusedBox=e.focusedBox,this.containerRect=e.containerRect,this.darkMode=e.darkMode}focusBox(e){var t;if(!this.focusedBox||this.focusedBox!==e){if(this.$titles&&this.state===exports.TELE_BOX_STATE.Maximized){const{children:i}=this.$titles.firstElementChild;for(let s=i.length-1;s>=0;s-=1){const r=i[s],n=null==(t=r.dataset)?void 0:t.teleBoxID;n&&(e&&n===e.id?r.classList.toggle(this.wrapClassName("titles-tab-focus"),!0):this.focusedBox&&n===this.focusedBox.id&&r.classList.toggle(this.wrapClassName("titles-tab-focus"),!1))}}this.focusedBox=e}}setContainerRect(e){if(this.containerRect=e,this.$titleBar){const{x:t,y:i,width:s}=e;this.$titleBar.style.transform=`translate(${t}px, ${i}px)`,this.$titleBar.style.width=s+"px"}}setBoxes(e){this.boxes=e,this.updateTitles()}setState(e){super.setState(e),this.$titleBar&&this.$titleBar.classList.toggle(this.wrapClassName("max-titlebar-maximized"),e===exports.TELE_BOX_STATE.Maximized),this.updateTitles()}setReadonly(e){super.setReadonly(e),this.$titleBar&&this.$titleBar.classList.toggle(this.wrapClassName("readonly"),this.readonly)}setDarkMode(e){e!==this.darkMode&&(this.darkMode=e,this.$titleBar&&(this.$titleBar.classList.toggle(this.wrapClassName("color-scheme-dark"),e),this.$titleBar.classList.toggle(this.wrapClassName("color-scheme-light"),!e)))}render(){const e=super.render(),{x:t,y:i,width:s}=this.containerRect;e.style.transform=`translate(${t}px, ${i}px)`,e.style.width=s+"px",e.classList.add(this.wrapClassName("max-titlebar")),e.classList.toggle(this.wrapClassName("max-titlebar-maximized"),this.state===exports.TELE_BOX_STATE.Maximized),e.classList.toggle(this.wrapClassName("readonly"),this.readonly),e.classList.add(this.wrapClassName(this.darkMode?"color-scheme-dark":"color-scheme-light"));const r=document.createElement("div");return r.classList.add(this.wrapClassName("titles-area")),e.insertBefore(r,e.firstElementChild),this.updateTitles(),e}destroy(){super.destroy(),this.$titles=void 0,this.boxes.length=0,this.focusedBox=void 0}updateTitles(){this.$titleBar&&this.state===exports.TELE_BOX_STATE.Maximized&&(this.$titleBar.classList.toggle(this.wrapClassName("max-titlebar-single-title"),1===this.boxes.length),1===this.boxes.length?this.setTitle(this.boxes[0].title):this.$titleBar.replaceChild(this.renderTitles(),this.$titleBar.firstElementChild))}renderTitles(){this.$titles=document.createElement("div"),this.$titles.className=this.wrapClassName("titles"),this.$titles.addEventListener("wheel",(e=>{e.currentTarget.scrollBy({left:e.deltaY>0?250:-250,behavior:"smooth"})}),{passive:!1});const e=document.createElement("div");return e.className=this.wrapClassName("titles-content"),this.$titles.appendChild(e),this.boxes.forEach((t=>{const i=document.createElement("button");i.className=this.wrapClassName("titles-tab"),i.textContent=t.title,i.dataset.teleBoxID=t.id,i.dataset.teleTitleBarNoDblClick="true",this.focusedBox&&t.id===this.focusedBox.id&&i.classList.add(this.wrapClassName("titles-tab-focus")),e.appendChild(i)})),this.$titles}}exports.DefaultTitleBar=ht,exports.TeleBox=ct,exports.TeleBoxCollector=Et,exports.TeleBoxDragHandleType="dh",exports.TeleBoxManager=class{constructor({root:e=document.body,prefersColorScheme:t=exports.TELE_BOX_COLOR_SCHEME.Light,minimized:i=!1,maximized:s=!1,fence:r=!0,containerRect:n={x:0,y:0,width:window.innerWidth,height:window.innerHeight},collector:o,namespace:a="telebox",readonly:l=!1}={}){this.events=new f,this._sideEffect=new Ge;const{combine:h,createVal:c}=qe(this._sideEffect);this.root=e,this.namespace=a,this.boxes$=c([]),this.topBox$=this.boxes$.derive((e=>{if(e.length>0){return e.reduce(((e,t)=>e.zIndex>t.zIndex?e:t))}}));const d=window.matchMedia("(prefers-color-scheme: dark)"),u=c(!1);d&&(u.setValue(d.matches),this._sideEffect.add((()=>{const e=e=>{u.setValue(e.matches)};return d.addListener(e),()=>d.removeListener(e)})));const E=c(t);E.reaction(((e,t,i)=>{this.boxes.forEach((t=>t.setPrefersColorScheme(e,i))),i||this.events.emit(exports.TELE_BOX_MANAGER_EVENT.PrefersColorScheme,e)})),this._darkMode$=h([u,E],(([e,t])=>"auto"===t?e:"dark"===t)),this._darkMode$.reaction(((e,t,i)=>{this.boxes.forEach((t=>t.setDarkMode(e,i))),i||this.events.emit(exports.TELE_BOX_MANAGER_EVENT.DarkMode,e)}));const m=c(l);m.reaction(((e,t,i)=>{this.boxes.forEach((t=>t.setReadonly(e,i)))}));const p=c(i),v=c(s);v.reaction(((e,t,i)=>{this.boxes.forEach((t=>t.setMaximized(e,i))),i||this.events.emit(exports.TELE_BOX_MANAGER_EVENT.Maximized,e)}));const x=h([p,v],(([e,t])=>e?exports.TELE_BOX_STATE.Minimized:t?exports.TELE_BOX_STATE.Maximized:exports.TELE_BOX_STATE.Normal));x.reaction(((e,t,i)=>{this.maxTitleBar.setState(e),i||this.events.emit(exports.TELE_BOX_MANAGER_EVENT.State,e)}));const _=c(r);_.subscribe(((e,t,i)=>{this.boxes.forEach((t=>t.setFence(e,i)))}));const g=c(n,De);g.reaction(((e,t,i)=>{this.boxes.forEach((t=>t.setContainerRect(e,i))),this.maxTitleBar.setContainerRect(e)}));const b=c(null===o?null:o||new Et({visible:i,readonly:l,namespace:a}).mount(e));b.subscribe((e=>{e&&(e.setVisible(p.value),e.setReadonly(m.value),e.setDarkMode(this._darkMode$.value),this._sideEffect.add((()=>(e.onClick=()=>{m.value||p.setValue(!1)},()=>e.destroy())),"collect-onClick"))})),m.subscribe((e=>{var t;return null==(t=b.value)?void 0:t.setReadonly(e)})),this._darkMode$.subscribe((e=>{var t;null==(t=b.value)||t.setDarkMode(e)}));const T=()=>{var e;if(null==(e=b.value)?void 0:e.$collector){const{x:e,y:t,width:i,height:s}=b.value.$collector.getBoundingClientRect(),r=this.root.getBoundingClientRect();return{x:e-r.x,y:t-r.y,width:i,height:s}}},B=c(p.value?T():void 0);B.subscribe(((e,t,i)=>{this.boxes.forEach((t=>{t.setCollectorRect(e,i)}))})),p.subscribe(((e,t,i)=>{var s,r;null==(s=b.value)||s.setVisible(e),e&&(null==(r=b.value)?void 0:r.$collector)&&B.setValue(T()),this.boxes.forEach((t=>t.setMinimized(e,i))),i||this.events.emit(exports.TELE_BOX_MANAGER_EVENT.Minimized,e)}));const y=this.wrapClassName("titlebar-icon-close"),w=e=>{var t;if(m.value)return;const i=e.target;if(i.tagName)for(let s=i;s;s=s.parentElement){if(s.classList&&s.classList.contains(y))return;const e=null==(t=s.dataset)?void 0:t.teleBoxID;if(e){const t=this.getBox(e);if(t)return this.focusBox(t),void this.makeBoxTop(t)}}};this._sideEffect.addEventListener(window,"mousedown",w,!0),this._sideEffect.addEventListener(window,"touchstart",w,!0),this.maxTitleBar=new mt({darkMode:this.darkMode,readonly:m.value,namespace:this.namespace,state:x.value,boxes:this.boxes$.value,containerRect:g.value,onEvent:e=>{switch(e.type){case exports.TELE_BOX_DELEGATE_EVENT.Maximize:v.setValue(!v.value);break;case exports.TELE_BOX_DELEGATE_EVENT.Minimize:p.setValue(!0);break;case exports.TELE_BOX_EVENT.Close:this.removeTopBox(),this.focusTopBox()}}}),m.subscribe((e=>this.maxTitleBar.setReadonly(e))),this._darkMode$.subscribe((e=>{this.maxTitleBar.setDarkMode(e)})),this.boxes$.reaction((e=>{this.maxTitleBar.setBoxes(e)}));Fe(this,{prefersColorScheme:E,containerRect:g,collector:b,collectorRect:B,readonly:m,fence:_,minimized:p,maximized:v}),this._state$=x,this.root.appendChild(this.maxTitleBar.render())}get boxes(){return this.boxes$.value}get topBox(){return this.topBox$.value}get darkMode(){return this._darkMode$.value}get state(){return this._state$.value}setState(e,t=!1){switch(e){case exports.TELE_BOX_STATE.Maximized:this.setMinimized(!1,t),this.setMaximized(!0,t);break;case exports.TELE_BOX_STATE.Minimized:this.setMinimized(!0,t),this.setMaximized(!1,t);break;default:this.setMinimized(!1,t),this.setMaximized(!1,t)}return this}create(e={},t=!0){const i=new ct(l(a({zIndex:this.topBox?this.topBox.zIndex+1:100},t?this.smartPosition(e):e),{darkMode:this.darkMode,prefersColorScheme:this.prefersColorScheme,maximized:this.maximized,minimized:this.minimized,fence:this.fence,namespace:this.namespace,containerRect:this.containerRect,readonly:this.readonly,collectorRect:this.collectorRect}));return i.mount(this.root),i.focus&&(this.focusBox(i),t&&this.makeBoxTop(i)),this.boxes$.setValue([...this.boxes,i]),i._delegateEvents.on(exports.TELE_BOX_DELEGATE_EVENT.Maximize,(()=>{this.setMaximized(!this.maximized)})),i._delegateEvents.on(exports.TELE_BOX_DELEGATE_EVENT.Minimize,(()=>{this.setMinimized(!0)})),i._delegateEvents.on(exports.TELE_BOX_DELEGATE_EVENT.Close,(()=>{this.remove(i),this.focusTopBox()})),i._coord$.reaction(((e,t,s)=>{s||this.events.emit(exports.TELE_BOX_MANAGER_EVENT.Move,i)})),i._size$.reaction(((e,t,s)=>{s||this.events.emit(exports.TELE_BOX_MANAGER_EVENT.Resize,i)})),i._intrinsicCoord$.reaction(((e,t,s)=>{s||this.events.emit(exports.TELE_BOX_MANAGER_EVENT.IntrinsicMove,i)})),i._intrinsicSize$.reaction(((e,t,s)=>{s||this.events.emit(exports.TELE_BOX_MANAGER_EVENT.IntrinsicResize,i)})),i._visualSize$.reaction(((e,t,s)=>{s||this.events.emit(exports.TELE_BOX_MANAGER_EVENT.VisualResize,i)})),i._zIndex$.reaction(((e,t,s)=>{if(this.boxes.length>0){const e=this.boxes.reduce(((e,t)=>e.zIndex>t.zIndex?e:t));this.topBox$.setValue(e)}s||this.events.emit(exports.TELE_BOX_MANAGER_EVENT.ZIndex,i)})),this.events.emit(exports.TELE_BOX_MANAGER_EVENT.Created,i),i}query(e){return e?this.boxes.filter(this.teleBoxMatcher(e)):[...this.boxes]}queryOne(e){return e?this.boxes.find(this.teleBoxMatcher(e)):this.boxes[0]}update(e,t,i=!1){const s=this.boxes.find((t=>t.id===e));if(s)return this.updateBox(s,t,i)}updateAll(e,t=!1){this.boxes.forEach((i=>{this.updateBox(i,e,t)}))}remove(e,t=!1){const i=this.getBoxIndex(e);if(i>=0){const e=this.boxes.slice(),s=e.splice(i,1);return this.boxes$.setValue(e),s.forEach((e=>e.destroy())),t||(this.boxes.length<=0&&(this.setMaximized(!1),this.setMinimized(!1)),this.events.emit(exports.TELE_BOX_MANAGER_EVENT.Removed,s)),s[0]}}removeTopBox(){if(this.topBox)return this.remove(this.topBox)}removeAll(e=!1){const t=this.boxes$.value;return this.boxes$.setValue([]),t.forEach((e=>e.destroy())),e||(this.boxes.length<=0&&(this.setMaximized(!1),this.setMinimized(!1)),this.events.emit(exports.TELE_BOX_MANAGER_EVENT.Removed,t)),t}destroy(e=!1){this.events.removeAllListeners(),this._sideEffect.flushAll(),this.removeAll(e),Object.keys(this).forEach((e=>{const t=this[e];t instanceof Ze&&t.destroy()}))}wrapClassName(e){return`${this.namespace}-${e}`}focusBox(e,t=!1){const i=this.getBox(e);i&&(this.boxes.forEach((e=>{if(i===e){let e=!1;i.focus||(e=!0,i.setFocus(!0,t)),e&&!t&&this.events.emit(exports.TELE_BOX_MANAGER_EVENT.Focused,i)}else e.focus&&this.blurBox(e,t)})),this.maxTitleBar.focusBox(i))}focusTopBox(){if(this.topBox&&!this.topBox.focus)return this.focusBox(this.topBox)}blurBox(e,t=!1){const i=this.getBox(e);i&&(i.focus&&(i.setFocus(!1,t),t||this.events.emit(exports.TELE_BOX_MANAGER_EVENT.Blurred,i)),this.maxTitleBar.focusedBox===i&&this.maxTitleBar.focusBox())}blurAll(e=!1){this.boxes.forEach((t=>{t.focus&&(t.setFocus(!1,e),e||this.events.emit(exports.TELE_BOX_MANAGER_EVENT.Blurred,t))})),this.maxTitleBar.focusedBox&&this.maxTitleBar.focusBox()}teleBoxMatcher(e){const t=Object.keys(e);return i=>t.every((t=>e[t]===i[t]))}updateBox(e,t,i=!1){null==t.x&&null==t.y||e.move(null==t.x?e.intrinsicX:t.x,null==t.y?e.intrinsicY:t.y,i),null==t.width&&null==t.height||e.resize(null==t.width?e.intrinsicWidth:t.width,null==t.height?e.intrinsicHeight:t.height,i),null!=t.title&&(e.setTitle(t.title),this.maxTitleBar.updateTitles()),null!=t.visible&&e.setVisible(t.visible,i),null!=t.minHeight&&e.setMinHeight(t.minHeight,i),null!=t.minWidth&&e.setMinWidth(t.minWidth,i),null!=t.resizable&&e.setResizable(t.resizable,i),null!=t.draggable&&e.setDraggable(t.draggable,i),null!=t.fixRatio&&e.setFixRatio(t.fixRatio,i),null!=t.zIndex&&e.setZIndex(t.zIndex,i),null!=t.content&&e.mountContent(t.content),null!=t.footer&&e.mountFooter(t.footer)}smartPosition(e={}){let{x:t,y:i}=e;const{width:s=.5,height:r=.5}=e;if(null==t){let e=20;this.topBox&&(e=this.topBox.intrinsicX*this.containerRect.width+20,e>this.containerRect.width-s*this.containerRect.width&&(e=20)),t=e/this.containerRect.width}if(null==i){let e=20;this.topBox&&(e=this.topBox.intrinsicY*this.containerRect.height+20,e>this.containerRect.height-r*this.containerRect.height&&(e=20)),i=e/this.containerRect.height}return l(a({},e),{x:t,y:i,width:s,height:r})}makeBoxTop(e,t=!1){this.topBox&&e!==this.topBox&&e.setZIndex(this.topBox.zIndex+1,t)}getBoxIndex(e){return"string"==typeof e?this.boxes.findIndex((t=>t.id===e)):this.boxes.findIndex((t=>t===e))}getBox(e){return"string"==typeof e?this.boxes.find((t=>t.id===e)):e}},exports.TeleBoxReact=e=>{const[t]=h.useState((()=>new ct(e)));return ut((()=>{null!=e.prefersColorScheme&&t.setPrefersColorScheme(e.prefersColorScheme)}),[t,e.prefersColorScheme]),ut((()=>{null!=e.minWidth&&t.setMinWidth(e.minWidth)}),[t,e.minWidth]),ut((()=>{null!=e.minHeight&&t.setMinHeight(e.minHeight)}),[t,e.minHeight]),ut((()=>{var i,s;t.resize(null!=(i=e.width)?i:t.width,null!=(s=e.height)?s:t.height,!0)}),[t,e.width,e.height]),ut((()=>{var i,s;t.move(null!=(i=e.x)?i:t.x,null!=(s=e.y)?s:t.y,!0)}),[t,e.x,e.y]),ut((()=>{null!=e.title&&t.setTitle(e.title)}),[t,e.title]),ut((()=>{null!=e.visible&&t.setVisible(e.visible)}),[t,e.visible]),ut((()=>{null!=e.minimized&&t.setMinimized(e.minimized,!0)}),[t,e.minimized]),ut((()=>{null!=e.maximized&&t.setMaximized(e.maximized,!0)}),[t,e.maximized]),ut((()=>{null!=e.state&&t.setState(e.state,!0)}),[t,e.state]),ut((()=>{null!=e.draggable&&t.setDraggable(e.draggable)}),[t,e.draggable]),ut((()=>{null!=e.resizable&&t.setResizable(e.resizable)}),[t,e.resizable]),ut((()=>{null!=e.fence&&t.setFence(e.fence)}),[t,e.fence]),ut((()=>{null!=e.containerRect&&t.setContainerRect(e.containerRect)}),[t,e.containerRect]),ut((()=>{null!=e.fixRatio&&t.setFixRatio(e.fixRatio)}),[t,e.fixRatio]),h.useEffect((()=>{if(e.onResize)return t.events.on(exports.TELE_BOX_EVENT.Resize,e.onResize),()=>{t.events.off(exports.TELE_BOX_EVENT.Resize,e.onResize)}}),[t,e.onResize]),h.useEffect((()=>{if(e.onMove)return t.events.on(exports.TELE_BOX_EVENT.Move,e.onMove),()=>{t.events.off(exports.TELE_BOX_EVENT.Move,e.onMove)}}),[t,e.onMove]),h.useEffect((()=>{if(e.onClose)return t.events.on(exports.TELE_BOX_EVENT.Close,e.onClose),()=>{t.events.off(exports.TELE_BOX_EVENT.Close,e.onClose)}}),[t,e.onClose]),h.useEffect((()=>{if(e.onFocus)return t.events.on(exports.TELE_BOX_EVENT.Focus,e.onFocus),()=>{t.events.off(exports.TELE_BOX_EVENT.Focus,e.onFocus)}}),[t,e.onFocus]),h.useEffect((()=>{if(e.onBlur)return t.events.on(exports.TELE_BOX_EVENT.Blur,e.onBlur),()=>{t.events.off(exports.TELE_BOX_EVENT.Blur,e.onBlur)}}),[t,e.onBlur]),h.useEffect((()=>{if(e.onStateChanged)return t.events.on(exports.TELE_BOX_EVENT.State,e.onStateChanged),()=>{t.events.off(exports.TELE_BOX_EVENT.State,e.onStateChanged)}}),[t,e.onStateChanged]),d.default.createElement("div",{ref:e=>e&&t.render(e),className:t.wrapClassName("box")})};
|
|
221
|
+
***************************************************************************** */
|
|
222
|
+
var __assign$1 = function() {
|
|
223
|
+
__assign$1 = Object.assign || function __assign2(t2) {
|
|
224
|
+
for (var s2, i2 = 1, n = arguments.length; i2 < n; i2++) {
|
|
225
|
+
s2 = arguments[i2];
|
|
226
|
+
for (var p in s2)
|
|
227
|
+
if (Object.prototype.hasOwnProperty.call(s2, p))
|
|
228
|
+
t2[p] = s2[p];
|
|
229
|
+
}
|
|
230
|
+
return t2;
|
|
231
|
+
};
|
|
232
|
+
return __assign$1.apply(this, arguments);
|
|
233
|
+
};
|
|
234
|
+
function __rest(s2, e2) {
|
|
235
|
+
var t2 = {};
|
|
236
|
+
for (var p in s2)
|
|
237
|
+
if (Object.prototype.hasOwnProperty.call(s2, p) && e2.indexOf(p) < 0)
|
|
238
|
+
t2[p] = s2[p];
|
|
239
|
+
if (s2 != null && typeof Object.getOwnPropertySymbols === "function")
|
|
240
|
+
for (var i2 = 0, p = Object.getOwnPropertySymbols(s2); i2 < p.length; i2++) {
|
|
241
|
+
if (e2.indexOf(p[i2]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p[i2]))
|
|
242
|
+
t2[p[i2]] = s2[p[i2]];
|
|
243
|
+
}
|
|
244
|
+
return t2;
|
|
245
|
+
}
|
|
246
|
+
var prevTime = 0;
|
|
247
|
+
var onNextFrame = typeof window !== "undefined" && window.requestAnimationFrame !== void 0 ? function(callback) {
|
|
248
|
+
return window.requestAnimationFrame(callback);
|
|
249
|
+
} : function(callback) {
|
|
250
|
+
var timestamp = Date.now();
|
|
251
|
+
var timeToCall = Math.max(0, 16.7 - (timestamp - prevTime));
|
|
252
|
+
prevTime = timestamp + timeToCall;
|
|
253
|
+
setTimeout(function() {
|
|
254
|
+
return callback(prevTime);
|
|
255
|
+
}, timeToCall);
|
|
256
|
+
};
|
|
257
|
+
var createStep = function(setRunNextFrame) {
|
|
258
|
+
var processToRun = [];
|
|
259
|
+
var processToRunNextFrame = [];
|
|
260
|
+
var numThisFrame = 0;
|
|
261
|
+
var isProcessing2 = false;
|
|
262
|
+
var i2 = 0;
|
|
263
|
+
var cancelled = new WeakSet();
|
|
264
|
+
var toKeepAlive = new WeakSet();
|
|
265
|
+
var renderStep = {
|
|
266
|
+
cancel: function(process) {
|
|
267
|
+
var indexOfCallback = processToRunNextFrame.indexOf(process);
|
|
268
|
+
cancelled.add(process);
|
|
269
|
+
if (indexOfCallback !== -1) {
|
|
270
|
+
processToRunNextFrame.splice(indexOfCallback, 1);
|
|
271
|
+
}
|
|
272
|
+
},
|
|
273
|
+
process: function(frame2) {
|
|
274
|
+
var _a;
|
|
275
|
+
isProcessing2 = true;
|
|
276
|
+
_a = [processToRunNextFrame, processToRun], processToRun = _a[0], processToRunNextFrame = _a[1];
|
|
277
|
+
processToRunNextFrame.length = 0;
|
|
278
|
+
numThisFrame = processToRun.length;
|
|
279
|
+
if (numThisFrame) {
|
|
280
|
+
var process_1;
|
|
281
|
+
for (i2 = 0; i2 < numThisFrame; i2++) {
|
|
282
|
+
process_1 = processToRun[i2];
|
|
283
|
+
process_1(frame2);
|
|
284
|
+
if (toKeepAlive.has(process_1) === true && !cancelled.has(process_1)) {
|
|
285
|
+
renderStep.schedule(process_1);
|
|
286
|
+
setRunNextFrame(true);
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
isProcessing2 = false;
|
|
291
|
+
},
|
|
292
|
+
schedule: function(process, keepAlive, immediate) {
|
|
293
|
+
if (keepAlive === void 0) {
|
|
294
|
+
keepAlive = false;
|
|
295
|
+
}
|
|
296
|
+
if (immediate === void 0) {
|
|
297
|
+
immediate = false;
|
|
298
|
+
}
|
|
299
|
+
var addToCurrentBuffer = immediate && isProcessing2;
|
|
300
|
+
var buffer = addToCurrentBuffer ? processToRun : processToRunNextFrame;
|
|
301
|
+
cancelled.delete(process);
|
|
302
|
+
if (keepAlive)
|
|
303
|
+
toKeepAlive.add(process);
|
|
304
|
+
if (buffer.indexOf(process) === -1) {
|
|
305
|
+
buffer.push(process);
|
|
306
|
+
if (addToCurrentBuffer)
|
|
307
|
+
numThisFrame = processToRun.length;
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
};
|
|
311
|
+
return renderStep;
|
|
312
|
+
};
|
|
313
|
+
var maxElapsed = 40;
|
|
314
|
+
var defaultElapsed = 1 / 60 * 1e3;
|
|
315
|
+
var useDefaultElapsed = true;
|
|
316
|
+
var willRunNextFrame = false;
|
|
317
|
+
var isProcessing = false;
|
|
318
|
+
var frame = {
|
|
319
|
+
delta: 0,
|
|
320
|
+
timestamp: 0
|
|
321
|
+
};
|
|
322
|
+
var stepsOrder = ["read", "update", "preRender", "render", "postRender"];
|
|
323
|
+
var setWillRunNextFrame = function(willRun) {
|
|
324
|
+
return willRunNextFrame = willRun;
|
|
325
|
+
};
|
|
326
|
+
var steps = /* @__PURE__ */ stepsOrder.reduce(function(acc, key) {
|
|
327
|
+
acc[key] = createStep(setWillRunNextFrame);
|
|
328
|
+
return acc;
|
|
329
|
+
}, {});
|
|
330
|
+
var sync = /* @__PURE__ */ stepsOrder.reduce(function(acc, key) {
|
|
331
|
+
var step = steps[key];
|
|
332
|
+
acc[key] = function(process, keepAlive, immediate) {
|
|
333
|
+
if (keepAlive === void 0) {
|
|
334
|
+
keepAlive = false;
|
|
335
|
+
}
|
|
336
|
+
if (immediate === void 0) {
|
|
337
|
+
immediate = false;
|
|
338
|
+
}
|
|
339
|
+
if (!willRunNextFrame)
|
|
340
|
+
startLoop();
|
|
341
|
+
step.schedule(process, keepAlive, immediate);
|
|
342
|
+
return process;
|
|
343
|
+
};
|
|
344
|
+
return acc;
|
|
345
|
+
}, {});
|
|
346
|
+
var processStep = function(stepId) {
|
|
347
|
+
return steps[stepId].process(frame);
|
|
348
|
+
};
|
|
349
|
+
var processFrame = function(timestamp) {
|
|
350
|
+
willRunNextFrame = false;
|
|
351
|
+
frame.delta = useDefaultElapsed ? defaultElapsed : Math.max(Math.min(timestamp - frame.timestamp, maxElapsed), 1);
|
|
352
|
+
if (!useDefaultElapsed)
|
|
353
|
+
defaultElapsed = frame.delta;
|
|
354
|
+
frame.timestamp = timestamp;
|
|
355
|
+
isProcessing = true;
|
|
356
|
+
stepsOrder.forEach(processStep);
|
|
357
|
+
isProcessing = false;
|
|
358
|
+
if (willRunNextFrame) {
|
|
359
|
+
useDefaultElapsed = false;
|
|
360
|
+
onNextFrame(processFrame);
|
|
361
|
+
}
|
|
362
|
+
};
|
|
363
|
+
var startLoop = function() {
|
|
364
|
+
willRunNextFrame = true;
|
|
365
|
+
useDefaultElapsed = true;
|
|
366
|
+
if (!isProcessing)
|
|
367
|
+
onNextFrame(processFrame);
|
|
368
|
+
};
|
|
369
|
+
/*! *****************************************************************************
|
|
370
|
+
Copyright (c) Microsoft Corporation.
|
|
371
|
+
|
|
372
|
+
Permission to use, copy, modify, and/or distribute this software for any
|
|
373
|
+
purpose with or without fee is hereby granted.
|
|
374
|
+
|
|
375
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
376
|
+
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
377
|
+
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
378
|
+
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
379
|
+
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
380
|
+
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
381
|
+
PERFORMANCE OF THIS SOFTWARE.
|
|
382
|
+
***************************************************************************** */
|
|
383
|
+
var __assign = function() {
|
|
384
|
+
__assign = Object.assign || function __assign2(t2) {
|
|
385
|
+
for (var s2, i2 = 1, n = arguments.length; i2 < n; i2++) {
|
|
386
|
+
s2 = arguments[i2];
|
|
387
|
+
for (var p in s2)
|
|
388
|
+
if (Object.prototype.hasOwnProperty.call(s2, p))
|
|
389
|
+
t2[p] = s2[p];
|
|
390
|
+
}
|
|
391
|
+
return t2;
|
|
392
|
+
};
|
|
393
|
+
return __assign.apply(this, arguments);
|
|
394
|
+
};
|
|
395
|
+
var clamp$1 = function(min, max) {
|
|
396
|
+
return function(v) {
|
|
397
|
+
return Math.max(Math.min(v, max), min);
|
|
398
|
+
};
|
|
399
|
+
};
|
|
400
|
+
var sanitize = function(v) {
|
|
401
|
+
return v % 1 ? Number(v.toFixed(5)) : v;
|
|
402
|
+
};
|
|
403
|
+
var singleColorRegex = /^(#[0-9a-f]{3}|#(?:[0-9a-f]{2}){2,4}|(rgb|hsl)a?\((-?[\d\.]+%?[,\s]+){2,3}\s*\/*\s*[\d\.]+%?\))$/i;
|
|
404
|
+
var number = {
|
|
405
|
+
test: function(v) {
|
|
406
|
+
return typeof v === "number";
|
|
407
|
+
},
|
|
408
|
+
parse: parseFloat,
|
|
409
|
+
transform: function(v) {
|
|
410
|
+
return v;
|
|
411
|
+
}
|
|
412
|
+
};
|
|
413
|
+
var alpha = __assign(__assign({}, number), { transform: clamp$1(0, 1) });
|
|
414
|
+
var scale = __assign(__assign({}, number), { default: 1 });
|
|
415
|
+
var createUnitType = function(unit) {
|
|
416
|
+
return {
|
|
417
|
+
test: function(v) {
|
|
418
|
+
return typeof v === "string" && v.endsWith(unit) && v.split(" ").length === 1;
|
|
419
|
+
},
|
|
420
|
+
parse: parseFloat,
|
|
421
|
+
transform: function(v) {
|
|
422
|
+
return "" + v + unit;
|
|
423
|
+
}
|
|
424
|
+
};
|
|
425
|
+
};
|
|
426
|
+
var degrees = createUnitType("deg");
|
|
427
|
+
var percent = createUnitType("%");
|
|
428
|
+
var px = createUnitType("px");
|
|
429
|
+
var progressPercentage = __assign(__assign({}, percent), { parse: function(v) {
|
|
430
|
+
return percent.parse(v) / 100;
|
|
431
|
+
}, transform: function(v) {
|
|
432
|
+
return percent.transform(v * 100);
|
|
433
|
+
} });
|
|
434
|
+
var getValueFromFunctionString = function(value) {
|
|
435
|
+
return value.substring(value.indexOf("(") + 1, value.lastIndexOf(")"));
|
|
436
|
+
};
|
|
437
|
+
var clampRgbUnit = clamp$1(0, 255);
|
|
438
|
+
var isRgba = function(v) {
|
|
439
|
+
return v.red !== void 0;
|
|
440
|
+
};
|
|
441
|
+
var isHsla = function(v) {
|
|
442
|
+
return v.hue !== void 0;
|
|
443
|
+
};
|
|
444
|
+
function getValuesAsArray(value) {
|
|
445
|
+
return getValueFromFunctionString(value).replace(/(,|\/)/g, " ").split(/ \s*/);
|
|
446
|
+
}
|
|
447
|
+
var splitColorValues = function(terms) {
|
|
448
|
+
return function(v) {
|
|
449
|
+
if (typeof v !== "string")
|
|
450
|
+
return v;
|
|
451
|
+
var values = {};
|
|
452
|
+
var valuesArray = getValuesAsArray(v);
|
|
453
|
+
for (var i2 = 0; i2 < 4; i2++) {
|
|
454
|
+
values[terms[i2]] = valuesArray[i2] !== void 0 ? parseFloat(valuesArray[i2]) : 1;
|
|
455
|
+
}
|
|
456
|
+
return values;
|
|
457
|
+
};
|
|
458
|
+
};
|
|
459
|
+
var rgbaTemplate = function(_a) {
|
|
460
|
+
var red = _a.red, green = _a.green, blue = _a.blue, _b = _a.alpha, alpha2 = _b === void 0 ? 1 : _b;
|
|
461
|
+
return "rgba(" + red + ", " + green + ", " + blue + ", " + alpha2 + ")";
|
|
462
|
+
};
|
|
463
|
+
var hslaTemplate = function(_a) {
|
|
464
|
+
var hue = _a.hue, saturation = _a.saturation, lightness = _a.lightness, _b = _a.alpha, alpha2 = _b === void 0 ? 1 : _b;
|
|
465
|
+
return "hsla(" + hue + ", " + saturation + ", " + lightness + ", " + alpha2 + ")";
|
|
466
|
+
};
|
|
467
|
+
var rgbUnit = __assign(__assign({}, number), { transform: function(v) {
|
|
468
|
+
return Math.round(clampRgbUnit(v));
|
|
469
|
+
} });
|
|
470
|
+
function isColorString(color2, colorType) {
|
|
471
|
+
return color2.startsWith(colorType) && singleColorRegex.test(color2);
|
|
472
|
+
}
|
|
473
|
+
var rgba = {
|
|
474
|
+
test: function(v) {
|
|
475
|
+
return typeof v === "string" ? isColorString(v, "rgb") : isRgba(v);
|
|
476
|
+
},
|
|
477
|
+
parse: splitColorValues(["red", "green", "blue", "alpha"]),
|
|
478
|
+
transform: function(_a) {
|
|
479
|
+
var red = _a.red, green = _a.green, blue = _a.blue, _b = _a.alpha, alpha$1 = _b === void 0 ? 1 : _b;
|
|
480
|
+
return rgbaTemplate({
|
|
481
|
+
red: rgbUnit.transform(red),
|
|
482
|
+
green: rgbUnit.transform(green),
|
|
483
|
+
blue: rgbUnit.transform(blue),
|
|
484
|
+
alpha: sanitize(alpha.transform(alpha$1))
|
|
485
|
+
});
|
|
486
|
+
}
|
|
487
|
+
};
|
|
488
|
+
var hsla = {
|
|
489
|
+
test: function(v) {
|
|
490
|
+
return typeof v === "string" ? isColorString(v, "hsl") : isHsla(v);
|
|
491
|
+
},
|
|
492
|
+
parse: splitColorValues(["hue", "saturation", "lightness", "alpha"]),
|
|
493
|
+
transform: function(_a) {
|
|
494
|
+
var hue = _a.hue, saturation = _a.saturation, lightness = _a.lightness, _b = _a.alpha, alpha$1 = _b === void 0 ? 1 : _b;
|
|
495
|
+
return hslaTemplate({
|
|
496
|
+
hue: Math.round(hue),
|
|
497
|
+
saturation: percent.transform(sanitize(saturation)),
|
|
498
|
+
lightness: percent.transform(sanitize(lightness)),
|
|
499
|
+
alpha: sanitize(alpha.transform(alpha$1))
|
|
500
|
+
});
|
|
501
|
+
}
|
|
502
|
+
};
|
|
503
|
+
var hex = __assign(__assign({}, rgba), { test: function(v) {
|
|
504
|
+
return typeof v === "string" && isColorString(v, "#");
|
|
505
|
+
}, parse: function(v) {
|
|
506
|
+
var r2 = "";
|
|
507
|
+
var g = "";
|
|
508
|
+
var b = "";
|
|
509
|
+
if (v.length > 4) {
|
|
510
|
+
r2 = v.substr(1, 2);
|
|
511
|
+
g = v.substr(3, 2);
|
|
512
|
+
b = v.substr(5, 2);
|
|
513
|
+
} else {
|
|
514
|
+
r2 = v.substr(1, 1);
|
|
515
|
+
g = v.substr(2, 1);
|
|
516
|
+
b = v.substr(3, 1);
|
|
517
|
+
r2 += r2;
|
|
518
|
+
g += g;
|
|
519
|
+
b += b;
|
|
520
|
+
}
|
|
521
|
+
return {
|
|
522
|
+
red: parseInt(r2, 16),
|
|
523
|
+
green: parseInt(g, 16),
|
|
524
|
+
blue: parseInt(b, 16),
|
|
525
|
+
alpha: 1
|
|
526
|
+
};
|
|
527
|
+
} });
|
|
528
|
+
var color = {
|
|
529
|
+
test: function(v) {
|
|
530
|
+
return typeof v === "string" && singleColorRegex.test(v) || isRgba(v) || isHsla(v);
|
|
531
|
+
},
|
|
532
|
+
parse: function(v) {
|
|
533
|
+
if (rgba.test(v)) {
|
|
534
|
+
return rgba.parse(v);
|
|
535
|
+
} else if (hsla.test(v)) {
|
|
536
|
+
return hsla.parse(v);
|
|
537
|
+
} else if (hex.test(v)) {
|
|
538
|
+
return hex.parse(v);
|
|
539
|
+
}
|
|
540
|
+
return v;
|
|
541
|
+
},
|
|
542
|
+
transform: function(v) {
|
|
543
|
+
if (isRgba(v)) {
|
|
544
|
+
return rgba.transform(v);
|
|
545
|
+
} else if (isHsla(v)) {
|
|
546
|
+
return hsla.transform(v);
|
|
547
|
+
}
|
|
548
|
+
return v;
|
|
549
|
+
}
|
|
550
|
+
};
|
|
551
|
+
var createStyler = function(_a) {
|
|
552
|
+
var onRead2 = _a.onRead, onRender2 = _a.onRender, _b = _a.uncachedValues, uncachedValues = _b === void 0 ? new Set() : _b, _c = _a.useCache, useCache = _c === void 0 ? true : _c;
|
|
553
|
+
return function(_a2) {
|
|
554
|
+
if (_a2 === void 0) {
|
|
555
|
+
_a2 = {};
|
|
556
|
+
}
|
|
557
|
+
var props = __rest(_a2, []);
|
|
558
|
+
var state = {};
|
|
559
|
+
var changedValues = [];
|
|
560
|
+
var hasChanged = false;
|
|
561
|
+
function setValue(key, value) {
|
|
562
|
+
if (key.startsWith("--")) {
|
|
563
|
+
props.hasCSSVariable = true;
|
|
564
|
+
}
|
|
565
|
+
var currentValue = state[key];
|
|
566
|
+
state[key] = value;
|
|
567
|
+
if (state[key] === currentValue)
|
|
568
|
+
return;
|
|
569
|
+
if (changedValues.indexOf(key) === -1) {
|
|
570
|
+
changedValues.push(key);
|
|
571
|
+
}
|
|
572
|
+
if (!hasChanged) {
|
|
573
|
+
hasChanged = true;
|
|
574
|
+
sync.render(styler.render);
|
|
575
|
+
}
|
|
576
|
+
}
|
|
577
|
+
var styler = {
|
|
578
|
+
get: function(key, forceRead) {
|
|
579
|
+
if (forceRead === void 0) {
|
|
580
|
+
forceRead = false;
|
|
581
|
+
}
|
|
582
|
+
var useCached = !forceRead && useCache && !uncachedValues.has(key) && state[key] !== void 0;
|
|
583
|
+
return useCached ? state[key] : onRead2(key, props);
|
|
584
|
+
},
|
|
585
|
+
set: function(values, value) {
|
|
586
|
+
if (typeof values === "string") {
|
|
587
|
+
setValue(values, value);
|
|
588
|
+
} else {
|
|
589
|
+
for (var key in values) {
|
|
590
|
+
setValue(key, values[key]);
|
|
591
|
+
}
|
|
592
|
+
}
|
|
593
|
+
return this;
|
|
594
|
+
},
|
|
595
|
+
render: function(forceRender) {
|
|
596
|
+
if (forceRender === void 0) {
|
|
597
|
+
forceRender = false;
|
|
598
|
+
}
|
|
599
|
+
if (hasChanged || forceRender === true) {
|
|
600
|
+
onRender2(state, props, changedValues);
|
|
601
|
+
hasChanged = false;
|
|
602
|
+
changedValues.length = 0;
|
|
603
|
+
}
|
|
604
|
+
return this;
|
|
605
|
+
}
|
|
606
|
+
};
|
|
607
|
+
return styler;
|
|
608
|
+
};
|
|
609
|
+
};
|
|
610
|
+
var CAMEL_CASE_PATTERN = /([a-z])([A-Z])/g;
|
|
611
|
+
var REPLACE_TEMPLATE = "$1-$2";
|
|
612
|
+
var camelToDash = function(str) {
|
|
613
|
+
return str.replace(CAMEL_CASE_PATTERN, REPLACE_TEMPLATE).toLowerCase();
|
|
614
|
+
};
|
|
615
|
+
var camelCache = /* @__PURE__ */ new Map();
|
|
616
|
+
var dashCache = /* @__PURE__ */ new Map();
|
|
617
|
+
var prefixes = ["Webkit", "Moz", "O", "ms", ""];
|
|
618
|
+
var numPrefixes = prefixes.length;
|
|
619
|
+
var isBrowser = typeof document !== "undefined";
|
|
620
|
+
var testElement;
|
|
621
|
+
var setDashPrefix = function(key, prefixed) {
|
|
622
|
+
return dashCache.set(key, camelToDash(prefixed));
|
|
623
|
+
};
|
|
624
|
+
var testPrefix = function(key) {
|
|
625
|
+
testElement = testElement || document.createElement("div");
|
|
626
|
+
for (var i2 = 0; i2 < numPrefixes; i2++) {
|
|
627
|
+
var prefix = prefixes[i2];
|
|
628
|
+
var noPrefix = prefix === "";
|
|
629
|
+
var prefixedPropertyName = noPrefix ? key : prefix + key.charAt(0).toUpperCase() + key.slice(1);
|
|
630
|
+
if (prefixedPropertyName in testElement.style || noPrefix) {
|
|
631
|
+
if (noPrefix && key === "clipPath" && dashCache.has(key)) {
|
|
632
|
+
return;
|
|
633
|
+
}
|
|
634
|
+
camelCache.set(key, prefixedPropertyName);
|
|
635
|
+
setDashPrefix(key, "" + (noPrefix ? "" : "-") + camelToDash(prefixedPropertyName));
|
|
636
|
+
}
|
|
637
|
+
}
|
|
638
|
+
};
|
|
639
|
+
var setServerProperty = function(key) {
|
|
640
|
+
return setDashPrefix(key, key);
|
|
641
|
+
};
|
|
642
|
+
var prefixer = function(key, asDashCase) {
|
|
643
|
+
if (asDashCase === void 0) {
|
|
644
|
+
asDashCase = false;
|
|
645
|
+
}
|
|
646
|
+
var cache2 = asDashCase ? dashCache : camelCache;
|
|
647
|
+
if (!cache2.has(key)) {
|
|
648
|
+
isBrowser ? testPrefix(key) : setServerProperty(key);
|
|
649
|
+
}
|
|
650
|
+
return cache2.get(key) || key;
|
|
651
|
+
};
|
|
652
|
+
var axes = ["", "X", "Y", "Z"];
|
|
653
|
+
var order = ["translate", "scale", "rotate", "skew", "transformPerspective"];
|
|
654
|
+
var transformProps = /* @__PURE__ */ order.reduce(function(acc, key) {
|
|
655
|
+
return axes.reduce(function(axesAcc, axesKey) {
|
|
656
|
+
axesAcc.push(key + axesKey);
|
|
657
|
+
return axesAcc;
|
|
658
|
+
}, acc);
|
|
659
|
+
}, ["x", "y", "z"]);
|
|
660
|
+
var transformPropDictionary = /* @__PURE__ */ transformProps.reduce(function(dict, key) {
|
|
661
|
+
dict[key] = true;
|
|
662
|
+
return dict;
|
|
663
|
+
}, {});
|
|
664
|
+
function isTransformProp(key) {
|
|
665
|
+
return transformPropDictionary[key] === true;
|
|
666
|
+
}
|
|
667
|
+
function sortTransformProps(a, b) {
|
|
668
|
+
return transformProps.indexOf(a) - transformProps.indexOf(b);
|
|
669
|
+
}
|
|
670
|
+
var transformOriginProps = /* @__PURE__ */ new Set(["originX", "originY", "originZ"]);
|
|
671
|
+
function isTransformOriginProp(key) {
|
|
672
|
+
return transformOriginProps.has(key);
|
|
673
|
+
}
|
|
674
|
+
var int = /* @__PURE__ */ __assign$1(/* @__PURE__ */ __assign$1({}, number), { transform: Math.round });
|
|
675
|
+
var valueTypes = {
|
|
676
|
+
color,
|
|
677
|
+
backgroundColor: color,
|
|
678
|
+
outlineColor: color,
|
|
679
|
+
fill: color,
|
|
680
|
+
stroke: color,
|
|
681
|
+
borderColor: color,
|
|
682
|
+
borderTopColor: color,
|
|
683
|
+
borderRightColor: color,
|
|
684
|
+
borderBottomColor: color,
|
|
685
|
+
borderLeftColor: color,
|
|
686
|
+
borderWidth: px,
|
|
687
|
+
borderTopWidth: px,
|
|
688
|
+
borderRightWidth: px,
|
|
689
|
+
borderBottomWidth: px,
|
|
690
|
+
borderLeftWidth: px,
|
|
691
|
+
borderRadius: px,
|
|
692
|
+
radius: px,
|
|
693
|
+
borderTopLeftRadius: px,
|
|
694
|
+
borderTopRightRadius: px,
|
|
695
|
+
borderBottomRightRadius: px,
|
|
696
|
+
borderBottomLeftRadius: px,
|
|
697
|
+
width: px,
|
|
698
|
+
maxWidth: px,
|
|
699
|
+
height: px,
|
|
700
|
+
maxHeight: px,
|
|
701
|
+
size: px,
|
|
702
|
+
top: px,
|
|
703
|
+
right: px,
|
|
704
|
+
bottom: px,
|
|
705
|
+
left: px,
|
|
706
|
+
padding: px,
|
|
707
|
+
paddingTop: px,
|
|
708
|
+
paddingRight: px,
|
|
709
|
+
paddingBottom: px,
|
|
710
|
+
paddingLeft: px,
|
|
711
|
+
margin: px,
|
|
712
|
+
marginTop: px,
|
|
713
|
+
marginRight: px,
|
|
714
|
+
marginBottom: px,
|
|
715
|
+
marginLeft: px,
|
|
716
|
+
rotate: degrees,
|
|
717
|
+
rotateX: degrees,
|
|
718
|
+
rotateY: degrees,
|
|
719
|
+
rotateZ: degrees,
|
|
720
|
+
scale,
|
|
721
|
+
scaleX: scale,
|
|
722
|
+
scaleY: scale,
|
|
723
|
+
scaleZ: scale,
|
|
724
|
+
skew: degrees,
|
|
725
|
+
skewX: degrees,
|
|
726
|
+
skewY: degrees,
|
|
727
|
+
distance: px,
|
|
728
|
+
translateX: px,
|
|
729
|
+
translateY: px,
|
|
730
|
+
translateZ: px,
|
|
731
|
+
x: px,
|
|
732
|
+
y: px,
|
|
733
|
+
z: px,
|
|
734
|
+
perspective: px,
|
|
735
|
+
opacity: alpha,
|
|
736
|
+
originX: progressPercentage,
|
|
737
|
+
originY: progressPercentage,
|
|
738
|
+
originZ: px,
|
|
739
|
+
zIndex: int,
|
|
740
|
+
fillOpacity: alpha,
|
|
741
|
+
strokeOpacity: alpha,
|
|
742
|
+
numOctaves: int
|
|
743
|
+
};
|
|
744
|
+
var getValueType = function(key) {
|
|
745
|
+
return valueTypes[key];
|
|
746
|
+
};
|
|
747
|
+
var getValueAsType = function(value, type) {
|
|
748
|
+
return type && typeof value === "number" ? type.transform(value) : value;
|
|
749
|
+
};
|
|
750
|
+
var SCROLL_LEFT = "scrollLeft";
|
|
751
|
+
var SCROLL_TOP = "scrollTop";
|
|
752
|
+
var scrollKeys = /* @__PURE__ */ new Set([SCROLL_LEFT, SCROLL_TOP]);
|
|
753
|
+
var blacklist = /* @__PURE__ */ new Set([SCROLL_LEFT, SCROLL_TOP, "transform"]);
|
|
754
|
+
var translateAlias = {
|
|
755
|
+
x: "translateX",
|
|
756
|
+
y: "translateY",
|
|
757
|
+
z: "translateZ"
|
|
758
|
+
};
|
|
759
|
+
function isCustomTemplate(v) {
|
|
760
|
+
return typeof v === "function";
|
|
761
|
+
}
|
|
762
|
+
function buildTransform(state, transform, transformKeys, transformIsDefault, enableHardwareAcceleration, allowTransformNone) {
|
|
763
|
+
if (allowTransformNone === void 0) {
|
|
764
|
+
allowTransformNone = true;
|
|
765
|
+
}
|
|
766
|
+
var transformString = "";
|
|
767
|
+
var transformHasZ = false;
|
|
768
|
+
transformKeys.sort(sortTransformProps);
|
|
769
|
+
var numTransformKeys = transformKeys.length;
|
|
770
|
+
for (var i2 = 0; i2 < numTransformKeys; i2++) {
|
|
771
|
+
var key = transformKeys[i2];
|
|
772
|
+
transformString += (translateAlias[key] || key) + "(" + transform[key] + ") ";
|
|
773
|
+
transformHasZ = key === "z" ? true : transformHasZ;
|
|
774
|
+
}
|
|
775
|
+
if (!transformHasZ && enableHardwareAcceleration) {
|
|
776
|
+
transformString += "translateZ(0)";
|
|
777
|
+
} else {
|
|
778
|
+
transformString = transformString.trim();
|
|
779
|
+
}
|
|
780
|
+
if (isCustomTemplate(state.transform)) {
|
|
781
|
+
transformString = state.transform(transform, transformIsDefault ? "" : transformString);
|
|
782
|
+
} else if (allowTransformNone && transformIsDefault) {
|
|
783
|
+
transformString = "none";
|
|
784
|
+
}
|
|
785
|
+
return transformString;
|
|
786
|
+
}
|
|
787
|
+
function buildStyleProperty(state, enableHardwareAcceleration, styles, transform, transformOrigin, transformKeys, isDashCase, allowTransformNone) {
|
|
788
|
+
if (enableHardwareAcceleration === void 0) {
|
|
789
|
+
enableHardwareAcceleration = true;
|
|
790
|
+
}
|
|
791
|
+
if (styles === void 0) {
|
|
792
|
+
styles = {};
|
|
793
|
+
}
|
|
794
|
+
if (transform === void 0) {
|
|
795
|
+
transform = {};
|
|
796
|
+
}
|
|
797
|
+
if (transformOrigin === void 0) {
|
|
798
|
+
transformOrigin = {};
|
|
799
|
+
}
|
|
800
|
+
if (transformKeys === void 0) {
|
|
801
|
+
transformKeys = [];
|
|
802
|
+
}
|
|
803
|
+
if (isDashCase === void 0) {
|
|
804
|
+
isDashCase = false;
|
|
805
|
+
}
|
|
806
|
+
if (allowTransformNone === void 0) {
|
|
807
|
+
allowTransformNone = true;
|
|
808
|
+
}
|
|
809
|
+
var transformIsDefault = true;
|
|
810
|
+
var hasTransform = false;
|
|
811
|
+
var hasTransformOrigin = false;
|
|
812
|
+
for (var key in state) {
|
|
813
|
+
var value = state[key];
|
|
814
|
+
var valueType = getValueType(key);
|
|
815
|
+
var valueAsType = getValueAsType(value, valueType);
|
|
816
|
+
if (isTransformProp(key)) {
|
|
817
|
+
hasTransform = true;
|
|
818
|
+
transform[key] = valueAsType;
|
|
819
|
+
transformKeys.push(key);
|
|
820
|
+
if (transformIsDefault) {
|
|
821
|
+
if (valueType.default && value !== valueType.default || !valueType.default && value !== 0) {
|
|
822
|
+
transformIsDefault = false;
|
|
823
|
+
}
|
|
824
|
+
}
|
|
825
|
+
} else if (isTransformOriginProp(key)) {
|
|
826
|
+
transformOrigin[key] = valueAsType;
|
|
827
|
+
hasTransformOrigin = true;
|
|
828
|
+
} else if (!blacklist.has(key) || !isCustomTemplate(valueAsType)) {
|
|
829
|
+
styles[prefixer(key, isDashCase)] = valueAsType;
|
|
830
|
+
}
|
|
831
|
+
}
|
|
832
|
+
if (hasTransform || typeof state.transform === "function") {
|
|
833
|
+
styles.transform = buildTransform(state, transform, transformKeys, transformIsDefault, enableHardwareAcceleration, allowTransformNone);
|
|
834
|
+
}
|
|
835
|
+
if (hasTransformOrigin) {
|
|
836
|
+
styles.transformOrigin = (transformOrigin.originX || "50%") + " " + (transformOrigin.originY || "50%") + " " + (transformOrigin.originZ || 0);
|
|
837
|
+
}
|
|
838
|
+
return styles;
|
|
839
|
+
}
|
|
840
|
+
function createStyleBuilder(_a) {
|
|
841
|
+
var _b = _a === void 0 ? {} : _a, _c = _b.enableHardwareAcceleration, enableHardwareAcceleration = _c === void 0 ? true : _c, _d = _b.isDashCase, isDashCase = _d === void 0 ? true : _d, _e = _b.allowTransformNone, allowTransformNone = _e === void 0 ? true : _e;
|
|
842
|
+
var styles = {};
|
|
843
|
+
var transform = {};
|
|
844
|
+
var transformOrigin = {};
|
|
845
|
+
var transformKeys = [];
|
|
846
|
+
return function(state) {
|
|
847
|
+
transformKeys.length = 0;
|
|
848
|
+
buildStyleProperty(state, enableHardwareAcceleration, styles, transform, transformOrigin, transformKeys, isDashCase, allowTransformNone);
|
|
849
|
+
return styles;
|
|
850
|
+
};
|
|
851
|
+
}
|
|
852
|
+
function onRead(key, options) {
|
|
853
|
+
var element = options.element, preparseOutput = options.preparseOutput;
|
|
854
|
+
var defaultValueType = getValueType(key);
|
|
855
|
+
if (isTransformProp(key)) {
|
|
856
|
+
return defaultValueType ? defaultValueType.default || 0 : 0;
|
|
857
|
+
} else if (scrollKeys.has(key)) {
|
|
858
|
+
return element[key];
|
|
859
|
+
} else {
|
|
860
|
+
var domValue = window.getComputedStyle(element, null).getPropertyValue(prefixer(key, true)) || 0;
|
|
861
|
+
return preparseOutput && defaultValueType && defaultValueType.test(domValue) && defaultValueType.parse ? defaultValueType.parse(domValue) : domValue;
|
|
862
|
+
}
|
|
863
|
+
}
|
|
864
|
+
function onRender(state, _a, changedValues) {
|
|
865
|
+
var element = _a.element, buildStyles = _a.buildStyles, hasCSSVariable = _a.hasCSSVariable;
|
|
866
|
+
Object.assign(element.style, buildStyles(state));
|
|
867
|
+
if (hasCSSVariable) {
|
|
868
|
+
var numChangedValues = changedValues.length;
|
|
869
|
+
for (var i2 = 0; i2 < numChangedValues; i2++) {
|
|
870
|
+
var key = changedValues[i2];
|
|
871
|
+
if (key.startsWith("--")) {
|
|
872
|
+
element.style.setProperty(key, state[key]);
|
|
873
|
+
}
|
|
874
|
+
}
|
|
875
|
+
}
|
|
876
|
+
if (changedValues.indexOf(SCROLL_LEFT) !== -1) {
|
|
877
|
+
element[SCROLL_LEFT] = state[SCROLL_LEFT];
|
|
878
|
+
}
|
|
879
|
+
if (changedValues.indexOf(SCROLL_TOP) !== -1) {
|
|
880
|
+
element[SCROLL_TOP] = state[SCROLL_TOP];
|
|
881
|
+
}
|
|
882
|
+
}
|
|
883
|
+
var cssStyler = /* @__PURE__ */ createStyler({
|
|
884
|
+
onRead,
|
|
885
|
+
onRender,
|
|
886
|
+
uncachedValues: scrollKeys
|
|
887
|
+
});
|
|
888
|
+
function createCssStyler(element, _a) {
|
|
889
|
+
if (_a === void 0) {
|
|
890
|
+
_a = {};
|
|
891
|
+
}
|
|
892
|
+
var enableHardwareAcceleration = _a.enableHardwareAcceleration, allowTransformNone = _a.allowTransformNone, props = __rest(_a, ["enableHardwareAcceleration", "allowTransformNone"]);
|
|
893
|
+
return cssStyler(__assign$1({ element, buildStyles: createStyleBuilder({
|
|
894
|
+
enableHardwareAcceleration,
|
|
895
|
+
allowTransformNone
|
|
896
|
+
}), preparseOutput: true }, props));
|
|
897
|
+
}
|
|
898
|
+
var camelCaseAttributes = /* @__PURE__ */ new Set(["baseFrequency", "diffuseConstant", "kernelMatrix", "kernelUnitLength", "keySplines", "keyTimes", "limitingConeAngle", "markerHeight", "markerWidth", "numOctaves", "targetX", "targetY", "surfaceScale", "specularConstant", "specularExponent", "stdDeviation", "tableValues"]);
|
|
899
|
+
var defaultOrigin = 0.5;
|
|
900
|
+
var svgAttrsTemplate = function() {
|
|
901
|
+
return {
|
|
902
|
+
style: {}
|
|
903
|
+
};
|
|
904
|
+
};
|
|
905
|
+
var progressToPixels = function(progress, length) {
|
|
906
|
+
return px.transform(progress * length);
|
|
907
|
+
};
|
|
908
|
+
var unmeasured = { x: 0, y: 0, width: 0, height: 0 };
|
|
909
|
+
function calcOrigin(origin, offset, size) {
|
|
910
|
+
return typeof origin === "string" ? origin : px.transform(offset + size * origin);
|
|
911
|
+
}
|
|
912
|
+
function calculateSVGTransformOrigin(dimensions, originX, originY) {
|
|
913
|
+
return calcOrigin(originX, dimensions.x, dimensions.width) + " " + calcOrigin(originY, dimensions.y, dimensions.height);
|
|
914
|
+
}
|
|
915
|
+
var svgStyleConfig = {
|
|
916
|
+
enableHardwareAcceleration: false,
|
|
917
|
+
isDashCase: false
|
|
918
|
+
};
|
|
919
|
+
function buildSVGAttrs(_a, dimensions, totalPathLength, cssBuilder, attrs, isDashCase) {
|
|
920
|
+
if (dimensions === void 0) {
|
|
921
|
+
dimensions = unmeasured;
|
|
922
|
+
}
|
|
923
|
+
if (cssBuilder === void 0) {
|
|
924
|
+
cssBuilder = createStyleBuilder(svgStyleConfig);
|
|
925
|
+
}
|
|
926
|
+
if (attrs === void 0) {
|
|
927
|
+
attrs = svgAttrsTemplate();
|
|
928
|
+
}
|
|
929
|
+
if (isDashCase === void 0) {
|
|
930
|
+
isDashCase = true;
|
|
931
|
+
}
|
|
932
|
+
var attrX = _a.attrX, attrY = _a.attrY, originX = _a.originX, originY = _a.originY, pathLength = _a.pathLength, _b = _a.pathSpacing, pathSpacing = _b === void 0 ? 1 : _b, _c = _a.pathOffset, pathOffset = _c === void 0 ? 0 : _c, state = __rest(_a, ["attrX", "attrY", "originX", "originY", "pathLength", "pathSpacing", "pathOffset"]);
|
|
933
|
+
var style2 = cssBuilder(state);
|
|
934
|
+
for (var key in style2) {
|
|
935
|
+
if (key === "transform") {
|
|
936
|
+
attrs.style.transform = style2[key];
|
|
937
|
+
} else {
|
|
938
|
+
var attrKey = isDashCase && !camelCaseAttributes.has(key) ? camelToDash(key) : key;
|
|
939
|
+
attrs[attrKey] = style2[key];
|
|
940
|
+
}
|
|
941
|
+
}
|
|
942
|
+
if (originX !== void 0 || originY !== void 0 || style2.transform) {
|
|
943
|
+
attrs.style.transformOrigin = calculateSVGTransformOrigin(dimensions, originX !== void 0 ? originX : defaultOrigin, originY !== void 0 ? originY : defaultOrigin);
|
|
944
|
+
}
|
|
945
|
+
if (attrX !== void 0)
|
|
946
|
+
attrs.x = attrX;
|
|
947
|
+
if (attrY !== void 0)
|
|
948
|
+
attrs.y = attrY;
|
|
949
|
+
if (totalPathLength !== void 0 && pathLength !== void 0) {
|
|
950
|
+
attrs[isDashCase ? "stroke-dashoffset" : "strokeDashoffset"] = progressToPixels(-pathOffset, totalPathLength);
|
|
951
|
+
attrs[isDashCase ? "stroke-dasharray" : "strokeDasharray"] = progressToPixels(pathLength, totalPathLength) + " " + progressToPixels(pathSpacing, totalPathLength);
|
|
952
|
+
}
|
|
953
|
+
return attrs;
|
|
954
|
+
}
|
|
955
|
+
function createAttrBuilder(dimensions, totalPathLength, isDashCase) {
|
|
956
|
+
if (isDashCase === void 0) {
|
|
957
|
+
isDashCase = true;
|
|
958
|
+
}
|
|
959
|
+
var attrs = svgAttrsTemplate();
|
|
960
|
+
var cssBuilder = createStyleBuilder(svgStyleConfig);
|
|
961
|
+
return function(state) {
|
|
962
|
+
return buildSVGAttrs(state, dimensions, totalPathLength, cssBuilder, attrs, isDashCase);
|
|
963
|
+
};
|
|
964
|
+
}
|
|
965
|
+
var getDimensions = function(element) {
|
|
966
|
+
return typeof element.getBBox === "function" ? element.getBBox() : element.getBoundingClientRect();
|
|
967
|
+
};
|
|
968
|
+
var getSVGElementDimensions = function(element) {
|
|
969
|
+
try {
|
|
970
|
+
return getDimensions(element);
|
|
971
|
+
} catch (e2) {
|
|
972
|
+
return { x: 0, y: 0, width: 0, height: 0 };
|
|
973
|
+
}
|
|
974
|
+
};
|
|
975
|
+
var isPath = function(element) {
|
|
976
|
+
return element.tagName === "path";
|
|
977
|
+
};
|
|
978
|
+
var svgStyler = /* @__PURE__ */ createStyler({
|
|
979
|
+
onRead: function(key, _a) {
|
|
980
|
+
var element = _a.element;
|
|
981
|
+
key = !camelCaseAttributes.has(key) ? camelToDash(key) : key;
|
|
982
|
+
if (!isTransformProp(key)) {
|
|
983
|
+
return element.getAttribute(key);
|
|
984
|
+
} else {
|
|
985
|
+
var valueType = getValueType(key);
|
|
986
|
+
return valueType ? valueType.default || 0 : 0;
|
|
987
|
+
}
|
|
988
|
+
},
|
|
989
|
+
onRender: function(state, _a) {
|
|
990
|
+
var element = _a.element, buildAttrs = _a.buildAttrs;
|
|
991
|
+
var attrs = buildAttrs(state);
|
|
992
|
+
for (var key in attrs) {
|
|
993
|
+
if (key === "style") {
|
|
994
|
+
Object.assign(element.style, attrs.style);
|
|
995
|
+
} else {
|
|
996
|
+
element.setAttribute(key, attrs[key]);
|
|
997
|
+
}
|
|
998
|
+
}
|
|
999
|
+
}
|
|
1000
|
+
});
|
|
1001
|
+
var svg = function(element) {
|
|
1002
|
+
var dimensions = getSVGElementDimensions(element);
|
|
1003
|
+
var pathLength = isPath(element) && element.getTotalLength ? element.getTotalLength() : void 0;
|
|
1004
|
+
return svgStyler({
|
|
1005
|
+
element,
|
|
1006
|
+
buildAttrs: createAttrBuilder(dimensions, pathLength)
|
|
1007
|
+
});
|
|
1008
|
+
};
|
|
1009
|
+
var viewport = /* @__PURE__ */ createStyler({
|
|
1010
|
+
useCache: false,
|
|
1011
|
+
onRead: function(key) {
|
|
1012
|
+
return key === "scrollTop" ? window.pageYOffset : window.pageXOffset;
|
|
1013
|
+
},
|
|
1014
|
+
onRender: function(_a) {
|
|
1015
|
+
var _b = _a.scrollTop, scrollTop = _b === void 0 ? 0 : _b, _c = _a.scrollLeft, scrollLeft = _c === void 0 ? 0 : _c;
|
|
1016
|
+
return window.scrollTo(scrollLeft, scrollTop);
|
|
1017
|
+
}
|
|
1018
|
+
});
|
|
1019
|
+
var cache = /* @__PURE__ */ new WeakMap();
|
|
1020
|
+
var isHTMLElement = function(node) {
|
|
1021
|
+
return node instanceof HTMLElement || typeof node.click === "function";
|
|
1022
|
+
};
|
|
1023
|
+
var isSVGElement = function(node) {
|
|
1024
|
+
return node instanceof SVGElement || "ownerSVGElement" in node;
|
|
1025
|
+
};
|
|
1026
|
+
var createDOMStyler = function(node, props) {
|
|
1027
|
+
var styler;
|
|
1028
|
+
if (node === window) {
|
|
1029
|
+
styler = viewport(node);
|
|
1030
|
+
} else if (isHTMLElement(node)) {
|
|
1031
|
+
styler = createCssStyler(node, props);
|
|
1032
|
+
} else if (isSVGElement(node)) {
|
|
1033
|
+
styler = svg(node);
|
|
1034
|
+
}
|
|
1035
|
+
cache.set(node, styler);
|
|
1036
|
+
return styler;
|
|
1037
|
+
};
|
|
1038
|
+
var getStyler = function(node, props) {
|
|
1039
|
+
return cache.has(node) ? cache.get(node) : createDOMStyler(node, props);
|
|
1040
|
+
};
|
|
1041
|
+
function index(nodeOrSelector, props) {
|
|
1042
|
+
var node = typeof nodeOrSelector === "string" ? document.querySelector(nodeOrSelector) : nodeOrSelector;
|
|
1043
|
+
return getStyler(node, props);
|
|
1044
|
+
}
|
|
1045
|
+
var shallowequal = function shallowEqual(objA, objB, compare, compareContext) {
|
|
1046
|
+
var ret = compare ? compare.call(compareContext, objA, objB) : void 0;
|
|
1047
|
+
if (ret !== void 0) {
|
|
1048
|
+
return !!ret;
|
|
1049
|
+
}
|
|
1050
|
+
if (objA === objB) {
|
|
1051
|
+
return true;
|
|
1052
|
+
}
|
|
1053
|
+
if (typeof objA !== "object" || !objA || typeof objB !== "object" || !objB) {
|
|
1054
|
+
return false;
|
|
1055
|
+
}
|
|
1056
|
+
var keysA = Object.keys(objA);
|
|
1057
|
+
var keysB = Object.keys(objB);
|
|
1058
|
+
if (keysA.length !== keysB.length) {
|
|
1059
|
+
return false;
|
|
1060
|
+
}
|
|
1061
|
+
var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB);
|
|
1062
|
+
for (var idx = 0; idx < keysA.length; idx++) {
|
|
1063
|
+
var key = keysA[idx];
|
|
1064
|
+
if (!bHasOwnProperty(key)) {
|
|
1065
|
+
return false;
|
|
1066
|
+
}
|
|
1067
|
+
var valueA = objA[key];
|
|
1068
|
+
var valueB = objB[key];
|
|
1069
|
+
ret = compare ? compare.call(compareContext, valueA, valueB, key) : void 0;
|
|
1070
|
+
if (ret === false || ret === void 0 && valueA !== valueB) {
|
|
1071
|
+
return false;
|
|
1072
|
+
}
|
|
1073
|
+
}
|
|
1074
|
+
return true;
|
|
1075
|
+
};
|
|
1076
|
+
const e$1 = "!#%()*+,-./:;=?@[]^_`{|}~ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", s$1 = e$1.length, t$1 = Array(20), r$1 = () => {
|
|
1077
|
+
for (let r2 = 0; r2 < 20; r2++)
|
|
1078
|
+
t$1[r2] = e$1.charAt(Math.random() * s$1);
|
|
1079
|
+
return t$1.join("");
|
|
1080
|
+
};
|
|
1081
|
+
class o {
|
|
1082
|
+
constructor() {
|
|
1083
|
+
this.disposers = new Map();
|
|
1084
|
+
}
|
|
1085
|
+
add(e2, s2 = r$1()) {
|
|
1086
|
+
return this.flush(s2), this.disposers.set(s2, e2()), s2;
|
|
1087
|
+
}
|
|
1088
|
+
addDisposer(e2, s2 = r$1()) {
|
|
1089
|
+
return this.flush(s2), this.disposers.set(s2, e2), s2;
|
|
1090
|
+
}
|
|
1091
|
+
addEventListener(e2, s2, t2, o2, i2 = r$1()) {
|
|
1092
|
+
return this.add(() => (e2.addEventListener(s2, t2, o2), () => e2.removeEventListener(s2, t2, o2)), i2), i2;
|
|
1093
|
+
}
|
|
1094
|
+
setTimeout(e2, s2, t2 = r$1()) {
|
|
1095
|
+
return this.add(() => {
|
|
1096
|
+
const r2 = window.setTimeout(() => {
|
|
1097
|
+
this.remove(t2), e2();
|
|
1098
|
+
}, s2);
|
|
1099
|
+
return () => window.clearTimeout(r2);
|
|
1100
|
+
}, t2);
|
|
1101
|
+
}
|
|
1102
|
+
setInterval(e2, s2, t2 = r$1()) {
|
|
1103
|
+
return this.add(() => {
|
|
1104
|
+
const t3 = window.setInterval(e2, s2);
|
|
1105
|
+
return () => window.clearInterval(t3);
|
|
1106
|
+
}, t2);
|
|
1107
|
+
}
|
|
1108
|
+
remove(e2) {
|
|
1109
|
+
const s2 = this.disposers.get(e2);
|
|
1110
|
+
return this.disposers.delete(e2), s2;
|
|
1111
|
+
}
|
|
1112
|
+
flush(e2) {
|
|
1113
|
+
const s2 = this.remove(e2);
|
|
1114
|
+
if (s2)
|
|
1115
|
+
try {
|
|
1116
|
+
s2();
|
|
1117
|
+
} catch (t2) {
|
|
1118
|
+
console.error(t2);
|
|
1119
|
+
}
|
|
1120
|
+
}
|
|
1121
|
+
flushAll() {
|
|
1122
|
+
this.disposers.forEach((e2) => {
|
|
1123
|
+
try {
|
|
1124
|
+
e2();
|
|
1125
|
+
} catch (s2) {
|
|
1126
|
+
console.error(s2);
|
|
1127
|
+
}
|
|
1128
|
+
}), this.disposers.clear();
|
|
1129
|
+
}
|
|
1130
|
+
}
|
|
1131
|
+
var e = Object.defineProperty, s = (typeof require != "undefined" && require, (s2, r2, t2) => (((s3, r3, t3) => {
|
|
1132
|
+
r3 in s3 ? e(s3, r3, { enumerable: true, configurable: true, writable: true, value: t3 }) : s3[r3] = t3;
|
|
1133
|
+
})(s2, typeof r2 != "symbol" ? r2 + "" : r2, t2), t2));
|
|
1134
|
+
class r {
|
|
1135
|
+
constructor(e2, r2) {
|
|
1136
|
+
s(this, "_value"), s(this, "_beforeDestroys"), s(this, "_subscribers"), this._value = e2, r2 && (this.compare = r2);
|
|
1137
|
+
}
|
|
1138
|
+
get value() {
|
|
1139
|
+
return this._value;
|
|
1140
|
+
}
|
|
1141
|
+
setValue(e2, s2) {
|
|
1142
|
+
if (!this.compare(e2, this._value)) {
|
|
1143
|
+
const r2 = this._value;
|
|
1144
|
+
this._value = e2, this._subscribers && this._subscribers.forEach((t2) => t2(e2, r2, s2));
|
|
1145
|
+
}
|
|
1146
|
+
}
|
|
1147
|
+
reaction(e2) {
|
|
1148
|
+
return this._subscribers || (this._subscribers = new Set()), this._subscribers.add(e2), () => {
|
|
1149
|
+
this._subscribers && this._subscribers.delete(e2);
|
|
1150
|
+
};
|
|
1151
|
+
}
|
|
1152
|
+
subscribe(e2, s2) {
|
|
1153
|
+
const r2 = this.reaction(e2);
|
|
1154
|
+
return e2(this._value, void 0, s2), r2;
|
|
1155
|
+
}
|
|
1156
|
+
derive(e2, s2, t2) {
|
|
1157
|
+
const i2 = new r(e2(this.value, void 0, t2), s2), o2 = this.reaction((s3, r2, t3) => {
|
|
1158
|
+
i2.setValue(e2(s3, r2, t3));
|
|
1159
|
+
});
|
|
1160
|
+
return i2.addBeforeDestroy(o2), i2;
|
|
1161
|
+
}
|
|
1162
|
+
destroy() {
|
|
1163
|
+
this._beforeDestroys && (this._beforeDestroys.forEach((e2) => e2()), this._beforeDestroys.clear()), this._subscribers && this._subscribers.clear();
|
|
1164
|
+
}
|
|
1165
|
+
addBeforeDestroy(e2) {
|
|
1166
|
+
return this._beforeDestroys || (this._beforeDestroys = new Set()), this._beforeDestroys.add(e2), () => {
|
|
1167
|
+
this._beforeDestroys && this._beforeDestroys.delete(e2);
|
|
1168
|
+
};
|
|
1169
|
+
}
|
|
1170
|
+
compare(e2, s2) {
|
|
1171
|
+
return e2 === s2;
|
|
1172
|
+
}
|
|
1173
|
+
}
|
|
1174
|
+
function t(e2, s2, t2, i2) {
|
|
1175
|
+
let o2 = e2.map((e3) => e3.value);
|
|
1176
|
+
const u2 = new r(s2(o2, void 0, i2), t2);
|
|
1177
|
+
return e2.forEach((e3, r2) => {
|
|
1178
|
+
const t3 = e3.reaction((e4, t4, i3) => {
|
|
1179
|
+
const c2 = o2.slice();
|
|
1180
|
+
c2[r2] = e4;
|
|
1181
|
+
const n = o2;
|
|
1182
|
+
o2 = c2, u2.setValue(s2(c2, n, i3), i3);
|
|
1183
|
+
});
|
|
1184
|
+
u2.addBeforeDestroy(t3);
|
|
1185
|
+
}), u2;
|
|
1186
|
+
}
|
|
1187
|
+
function i(e2, s2) {
|
|
1188
|
+
Object.keys(s2).forEach((r2) => {
|
|
1189
|
+
u(e2, r2, s2[r2]);
|
|
1190
|
+
});
|
|
1191
|
+
}
|
|
1192
|
+
function u(e2, s2, r2) {
|
|
1193
|
+
var t2;
|
|
1194
|
+
return Object.defineProperties(e2, { [s2]: { get: () => r2.value }, [`_${s2}$`]: { value: r2 }, [`set${t2 = s2, t2[0].toUpperCase() + t2.slice(1)}`]: { value: (e3, s3) => r2.setValue(e3, s3) } }), e2;
|
|
1195
|
+
}
|
|
1196
|
+
function c(e2) {
|
|
1197
|
+
const s2 = (s3) => {
|
|
1198
|
+
const r2 = e2.addDisposer(() => {
|
|
1199
|
+
s3.destroy();
|
|
1200
|
+
});
|
|
1201
|
+
return s3.addBeforeDestroy(() => {
|
|
1202
|
+
e2.remove(r2);
|
|
1203
|
+
}), s3;
|
|
1204
|
+
};
|
|
1205
|
+
return { bindSideEffect: s2, combine: (e3, r2, i2, o2) => s2(t(e3, r2, i2, o2)), createVal: (e3, t2) => s2(new r(e3, t2)) };
|
|
1206
|
+
}
|
|
1207
|
+
var style$2 = '.telebox-titlebar {\n user-select: none;\n -webkit-touch-callout: none;\n -webkit-user-select: none;\n box-sizing: border-box;\n height: 26px;\n display: flex;\n align-items: center;\n background: #fff;\n user-select: none;\n border-bottom: 1px solid #eeeef7;\n touch-action: manipulation;\n}\n\n.telebox-title-area {\n padding-left: 16px;\n overflow: hidden;\n position: relative;\n height: 100%;\n flex: 1;\n display: flex;\n align-items: center;\n}\n\n.telebox-title {\n user-select: none;\n -webkit-touch-callout: none;\n -webkit-user-select: none;\n overflow: hidden;\n margin: 0;\n padding: 0;\n font-size: 14px;\n font-weight: 400;\n font-family: PingFangSC-Regular, PingFang SC;\n white-space: nowrap;\n word-break: keep-all;\n text-overflow: ellipsis;\n color: #191919;\n}\n\n.telebox-drag-area {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n margin: auto;\n z-index: 10;\n}\n\n.telebox-titlebar-btns {\n position: absolute;\n right: 16px;\n white-space: nowrap;\n word-break: keep-all;\n margin-left: auto;\n font-size: 0;\n z-index: 10;\n}\n\n.telebox-titlebar-btn {\n user-select: none;\n -webkit-touch-callout: none;\n -webkit-user-select: none;\n width: 22px;\n height: 22px;\n padding: 0;\n outline: none;\n border: none;\n background: transparent;\n cursor: pointer;\n}\n\n.telebox-titlebar-btn ~ .telebox-titlebar-btn {\n margin-left: 10px;\n}\n\n.telebox-titlebar-btn-icon {\n width: 22px;\n height: 22px;\n}\n\n.telebox-readonly .telebox-titlebar-btn {\n cursor: not-allowed;\n}\n\n.telebox-titlebar-icon-minimize {\n background: center/cover no-repeat url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMjggMjgiPgogICAgPGRlZnM+CiAgICAgICAgPHBhdGggaWQ9ImEiIGQ9Ik0wIDBoMjh2MjhIMHoiIC8+CiAgICA8L2RlZnM+CiAgICA8ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxtYXNrIGlkPSJiIiBmaWxsPSIjZmZmIj4KICAgICAgICAgICAgPHVzZSB4bGluazpocmVmPSIjYSIgLz4KICAgICAgICA8L21hc2s+CiAgICAgICAgPHBhdGggZmlsbD0iI0E3QTdDQSIgZmlsbC1ydWxlPSJub256ZXJvIiBkPSJNOSAxM2gxMHYxLjZIOXoiIG1hc2s9InVybCgjYikiIC8+CiAgICA8L2c+Cjwvc3ZnPgo=");\n}\n\n.telebox-titlebar-icon-maximize {\n background: center/cover no-repeat url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMjggMjgiPgogICAgPGRlZnM+CiAgICAgICAgPHBhdGggaWQ9ImEiIGQ9Ik0wIDBoMjh2MjhIMHoiIC8+CiAgICA8L2RlZnM+CiAgICA8ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxtYXNrIGlkPSJiIiBmaWxsPSIjZmZmIj4KICAgICAgICAgICAgPHVzZSB4bGluazpocmVmPSIjYSIgLz4KICAgICAgICA8L21hc2s+CiAgICAgICAgPGcgZmlsbD0iI0E3QTdDQSIgZmlsbC1ydWxlPSJub256ZXJvIiBtYXNrPSJ1cmwoI2IpIj4KICAgICAgICAgICAgPHBhdGgKICAgICAgICAgICAgICAgIGQ9Ik0yMC40ODEgMTcuMWgxLjJ2NC41ODFIMTcuMXYtMS4yaDMuMzgxVjE3LjF6bS0xNC4xOTA1LS4wMDloMS4ydjMuMzgxaDMuMzgwOXYxLjJoLTQuNTgxdi00LjU4MXpNMTcuMSA2LjE5MDVoNC41ODF2NC41ODA5aC0xLjJ2LTMuMzgxSDE3LjF2LTEuMnptLTEwLjcwMDguMTA4N2g0Ljc5ODV2MS4ySDcuNTk5MnYzLjU5ODVoLTEuMlY2LjI5OTJ6IiAvPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+Cg==");\n}\n\n.telebox-titlebar-icon-maximize.is-active {\n background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMjggMjgiPgogICAgPGRlZnM+CiAgICAgICAgPHBhdGggaWQ9ImEiIGQ9Ik0wIDBoMjZ2MjZIMHoiIC8+CiAgICAgICAgPHBhdGggaWQ9ImMiIGQ9Ik0yNi44NjkgMEwyOCAxLjEzMVYyNi44N0wyNi44NjkgMjhIMS4xM0wwIDI2Ljg3VjEuMTMxTDEuMTMgMHoiIC8+CiAgICA8L2RlZnM+CiAgICA8ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEgMSkiPgogICAgICAgICAgICA8bWFzayBpZD0iYiIgZmlsbD0iI2ZmZiI+CiAgICAgICAgICAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNhIiAvPgogICAgICAgICAgICA8L21hc2s+CiAgICAgICAgICAgIDxwYXRoIGZpbGw9Im5vbmUiIGQ9Ik0tNC42NDI5LTQuNjQyOWgzNS4yODU4djM1LjI4NThILTQuNjQyOXoiIG1hc2s9InVybCgjYikiIC8+CiAgICAgICAgPC9nPgogICAgICAgIDxnPgogICAgICAgICAgICA8bWFzayBpZD0iZCIgZmlsbD0iI2ZmZiI+CiAgICAgICAgICAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNjIiAvPgogICAgICAgICAgICA8L21hc2s+CiAgICAgICAgICAgIDxwYXRoIGZpbGw9Im5vbmUiIGQ9Ik0tMTcuNTE2OCAxNEwxNC0xNy41MTY4IDQ1LjUxNjggMTQgMTQgNDUuNTE2OHoiIG1hc2s9InVybCgjZCkiIC8+CiAgICAgICAgPC9nPgogICAgICAgIDxwYXRoIHN0cm9rZT0iI0E3QTdDQSIgc3Ryb2tlLXdpZHRoPSIxLjIiCiAgICAgICAgICAgIGQ9Ik0xMC4wODg2IDIxLjQ4NjV2LTMuNjk2Nkg2LjM5Mk0yMS4zODU1IDEwLjE4OTVoLTMuNjk2NlY2LjQ5M00yMS40MDIgMTcuNzk4M2gtMy42OTY2djMuNjk2Nk0xMC4yNTAzIDYuMTQ5OHYzLjg5ODVINi4zNTE3IiAvPgogICAgPC9nPgo8L3N2Zz4K");\n}\n\n.telebox-titlebar-icon-close {\n background: center/cover no-repeat url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyOCAyOCI+CiAgICA8ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iI0E3QTdDQSIgc3Ryb2tlLXdpZHRoPSIxLjQiPgogICAgICAgIDxwYXRoIGQ9Ik04LjM1MyAyMC4zMzIxTDIwLjMzMiA4LjM1M00yMC4zMzIyIDIwLjMzMjFMOC4zNTMgOC4zNTMiIC8+CiAgICA8L2c+Cjwvc3ZnPgo=");\n}\n\n.telebox-color-scheme-dark {\n color-scheme: dark;\n}\n\n.telebox-color-scheme-dark .telebox-title {\n color: #e9e9e9;\n}\n\n.telebox-color-scheme-dark .telebox-titlebar {\n color: #e9e9e9;\n background: #43434d;\n border-bottom: none;\n}';
|
|
1208
|
+
exports.TELE_BOX_COLOR_SCHEME = void 0;
|
|
1209
|
+
(function(TELE_BOX_COLOR_SCHEME2) {
|
|
1210
|
+
TELE_BOX_COLOR_SCHEME2["Light"] = "light";
|
|
1211
|
+
TELE_BOX_COLOR_SCHEME2["Dark"] = "dark";
|
|
1212
|
+
TELE_BOX_COLOR_SCHEME2["Auto"] = "auto";
|
|
1213
|
+
})(exports.TELE_BOX_COLOR_SCHEME || (exports.TELE_BOX_COLOR_SCHEME = {}));
|
|
1214
|
+
exports.TELE_BOX_STATE = void 0;
|
|
1215
|
+
(function(TELE_BOX_STATE2) {
|
|
1216
|
+
TELE_BOX_STATE2["Normal"] = "normal";
|
|
1217
|
+
TELE_BOX_STATE2["Minimized"] = "minimized";
|
|
1218
|
+
TELE_BOX_STATE2["Maximized"] = "maximized";
|
|
1219
|
+
})(exports.TELE_BOX_STATE || (exports.TELE_BOX_STATE = {}));
|
|
1220
|
+
exports.TELE_BOX_EVENT = void 0;
|
|
1221
|
+
(function(TELE_BOX_EVENT2) {
|
|
1222
|
+
TELE_BOX_EVENT2["DarkMode"] = "dark_mode";
|
|
1223
|
+
TELE_BOX_EVENT2["PrefersColorScheme"] = "prefers_color_scheme";
|
|
1224
|
+
TELE_BOX_EVENT2["Close"] = "close";
|
|
1225
|
+
TELE_BOX_EVENT2["Focus"] = "focus";
|
|
1226
|
+
TELE_BOX_EVENT2["Blur"] = "blur";
|
|
1227
|
+
TELE_BOX_EVENT2["Move"] = "move";
|
|
1228
|
+
TELE_BOX_EVENT2["Resize"] = "resize";
|
|
1229
|
+
TELE_BOX_EVENT2["IntrinsicMove"] = "intrinsic_move";
|
|
1230
|
+
TELE_BOX_EVENT2["IntrinsicResize"] = "intrinsic_resize";
|
|
1231
|
+
TELE_BOX_EVENT2["VisualResize"] = "visual_resize";
|
|
1232
|
+
TELE_BOX_EVENT2["ZIndex"] = "z_index";
|
|
1233
|
+
TELE_BOX_EVENT2["State"] = "state";
|
|
1234
|
+
TELE_BOX_EVENT2["Minimized"] = "minimized";
|
|
1235
|
+
TELE_BOX_EVENT2["Maximized"] = "maximized";
|
|
1236
|
+
TELE_BOX_EVENT2["Readonly"] = "readonly";
|
|
1237
|
+
TELE_BOX_EVENT2["Destroyed"] = "destroyed";
|
|
1238
|
+
})(exports.TELE_BOX_EVENT || (exports.TELE_BOX_EVENT = {}));
|
|
1239
|
+
exports.TELE_BOX_DELEGATE_EVENT = void 0;
|
|
1240
|
+
(function(TELE_BOX_DELEGATE_EVENT2) {
|
|
1241
|
+
TELE_BOX_DELEGATE_EVENT2["Close"] = "close";
|
|
1242
|
+
TELE_BOX_DELEGATE_EVENT2["Maximize"] = "maximize";
|
|
1243
|
+
TELE_BOX_DELEGATE_EVENT2["Minimize"] = "minimize";
|
|
1244
|
+
})(exports.TELE_BOX_DELEGATE_EVENT || (exports.TELE_BOX_DELEGATE_EVENT = {}));
|
|
1245
|
+
exports.TELE_BOX_RESIZE_HANDLE = void 0;
|
|
1246
|
+
(function(TELE_BOX_RESIZE_HANDLE2) {
|
|
1247
|
+
TELE_BOX_RESIZE_HANDLE2["North"] = "n";
|
|
1248
|
+
TELE_BOX_RESIZE_HANDLE2["South"] = "s";
|
|
1249
|
+
TELE_BOX_RESIZE_HANDLE2["West"] = "w";
|
|
1250
|
+
TELE_BOX_RESIZE_HANDLE2["East"] = "e";
|
|
1251
|
+
TELE_BOX_RESIZE_HANDLE2["NorthWest"] = "nw";
|
|
1252
|
+
TELE_BOX_RESIZE_HANDLE2["NorthEast"] = "ne";
|
|
1253
|
+
TELE_BOX_RESIZE_HANDLE2["SouthEast"] = "se";
|
|
1254
|
+
TELE_BOX_RESIZE_HANDLE2["SouthWest"] = "sw";
|
|
1255
|
+
})(exports.TELE_BOX_RESIZE_HANDLE || (exports.TELE_BOX_RESIZE_HANDLE = {}));
|
|
1256
|
+
const TeleBoxDragHandleType = "dh";
|
|
1257
|
+
function clamp(value, min, max) {
|
|
1258
|
+
return Math.min(Math.max(value, min), max);
|
|
1259
|
+
}
|
|
1260
|
+
function preventEvent(ev) {
|
|
1261
|
+
ev.stopPropagation();
|
|
1262
|
+
if (ev.cancelable) {
|
|
1263
|
+
ev.preventDefault();
|
|
1264
|
+
}
|
|
1265
|
+
}
|
|
1266
|
+
function flattenEvent(ev) {
|
|
1267
|
+
return ev.touches ? ev.touches[0] : ev;
|
|
1268
|
+
}
|
|
1269
|
+
function genUniqueKey() {
|
|
1270
|
+
return Date.now().toString().slice(6) + Math.random().toString().slice(2, 8);
|
|
1271
|
+
}
|
|
1272
|
+
let defaultBoxCount = 1;
|
|
1273
|
+
function getBoxDefaultName() {
|
|
1274
|
+
return `New Box ${defaultBoxCount++}`;
|
|
1275
|
+
}
|
|
1276
|
+
function isTruthy(value) {
|
|
1277
|
+
return Boolean(value);
|
|
1278
|
+
}
|
|
1279
|
+
function isFalsy(value) {
|
|
1280
|
+
return !value;
|
|
1281
|
+
}
|
|
1282
|
+
class DefaultTitleBar {
|
|
1283
|
+
constructor({
|
|
1284
|
+
readonly = false,
|
|
1285
|
+
title,
|
|
1286
|
+
buttons,
|
|
1287
|
+
onEvent,
|
|
1288
|
+
onDragStart,
|
|
1289
|
+
namespace = "telebox",
|
|
1290
|
+
state = exports.TELE_BOX_STATE.Normal
|
|
1291
|
+
} = {}) {
|
|
1292
|
+
this.$btns = [];
|
|
1293
|
+
this.sideEffect = new o();
|
|
1294
|
+
this.lastTitleBarClick = {
|
|
1295
|
+
timestamp: 0,
|
|
1296
|
+
clientX: -100,
|
|
1297
|
+
clientY: -100
|
|
1298
|
+
};
|
|
1299
|
+
this.handleTitleBarClick = (ev) => {
|
|
1300
|
+
var _a;
|
|
1301
|
+
if (this.readonly) {
|
|
1302
|
+
return;
|
|
1303
|
+
}
|
|
1304
|
+
if (ev.button !== 0) {
|
|
1305
|
+
return;
|
|
1306
|
+
}
|
|
1307
|
+
if ((_a = ev.target.dataset) == null ? void 0 : _a.teleTitleBarNoDblClick) {
|
|
1308
|
+
return;
|
|
1309
|
+
}
|
|
1310
|
+
preventEvent(ev);
|
|
1311
|
+
const now = Date.now();
|
|
1312
|
+
if (now - this.lastTitleBarClick.timestamp <= 500) {
|
|
1313
|
+
if (Math.abs(ev.clientX - this.lastTitleBarClick.clientX) <= 5 && Math.abs(ev.clientY - this.lastTitleBarClick.clientY) <= 5) {
|
|
1314
|
+
if (this.onEvent) {
|
|
1315
|
+
this.onEvent({ type: exports.TELE_BOX_DELEGATE_EVENT.Maximize });
|
|
1316
|
+
}
|
|
1317
|
+
}
|
|
1318
|
+
} else if (this.onDragStart) {
|
|
1319
|
+
this.onDragStart(ev);
|
|
1320
|
+
}
|
|
1321
|
+
this.lastTitleBarClick.timestamp = now;
|
|
1322
|
+
this.lastTitleBarClick.clientX = ev.clientX;
|
|
1323
|
+
this.lastTitleBarClick.clientY = ev.clientY;
|
|
1324
|
+
};
|
|
1325
|
+
this.lastTitleBarTouch = {
|
|
1326
|
+
timestamp: 0,
|
|
1327
|
+
clientX: -100,
|
|
1328
|
+
clientY: -100
|
|
1329
|
+
};
|
|
1330
|
+
this.handleTitleBarTouch = (ev) => {
|
|
1331
|
+
var _a;
|
|
1332
|
+
if (this.readonly) {
|
|
1333
|
+
return;
|
|
1334
|
+
}
|
|
1335
|
+
if ((_a = ev.target.dataset) == null ? void 0 : _a.teleTitleBarNoDblClick) {
|
|
1336
|
+
return;
|
|
1337
|
+
}
|
|
1338
|
+
preventEvent(ev);
|
|
1339
|
+
const now = Date.now();
|
|
1340
|
+
const {
|
|
1341
|
+
clientX = this.lastTitleBarTouch.clientX + 100,
|
|
1342
|
+
clientY = this.lastTitleBarTouch.clientY + 100
|
|
1343
|
+
} = ev.touches[0] || {};
|
|
1344
|
+
if (now - this.lastTitleBarTouch.timestamp <= 500) {
|
|
1345
|
+
if (Math.abs(clientX - this.lastTitleBarTouch.clientX) <= 10 && Math.abs(clientY - this.lastTitleBarTouch.clientY) <= 10) {
|
|
1346
|
+
if (this.onEvent) {
|
|
1347
|
+
this.onEvent({ type: exports.TELE_BOX_DELEGATE_EVENT.Maximize });
|
|
1348
|
+
}
|
|
1349
|
+
}
|
|
1350
|
+
} else if (this.onDragStart) {
|
|
1351
|
+
this.onDragStart(ev);
|
|
1352
|
+
}
|
|
1353
|
+
this.lastTitleBarTouch.timestamp = now;
|
|
1354
|
+
this.lastTitleBarTouch.clientX = clientX;
|
|
1355
|
+
this.lastTitleBarTouch.clientY = clientY;
|
|
1356
|
+
};
|
|
1357
|
+
this.readonly = readonly;
|
|
1358
|
+
this.onEvent = onEvent;
|
|
1359
|
+
this.onDragStart = onDragStart;
|
|
1360
|
+
this.namespace = namespace;
|
|
1361
|
+
this.title = title;
|
|
1362
|
+
this.state = state;
|
|
1363
|
+
this.buttons = buttons || [
|
|
1364
|
+
{
|
|
1365
|
+
type: exports.TELE_BOX_DELEGATE_EVENT.Minimize,
|
|
1366
|
+
iconClassName: this.wrapClassName("titlebar-icon-minimize")
|
|
1367
|
+
},
|
|
1368
|
+
{
|
|
1369
|
+
type: exports.TELE_BOX_DELEGATE_EVENT.Maximize,
|
|
1370
|
+
iconClassName: this.wrapClassName("titlebar-icon-maximize"),
|
|
1371
|
+
isActive: (state2) => state2 === exports.TELE_BOX_STATE.Maximized
|
|
1372
|
+
},
|
|
1373
|
+
{
|
|
1374
|
+
type: exports.TELE_BOX_DELEGATE_EVENT.Close,
|
|
1375
|
+
iconClassName: this.wrapClassName("titlebar-icon-close")
|
|
1376
|
+
}
|
|
1377
|
+
];
|
|
1378
|
+
this.$dragArea = this.renderDragArea();
|
|
1379
|
+
}
|
|
1380
|
+
setTitle(title) {
|
|
1381
|
+
this.title = title;
|
|
1382
|
+
if (this.$title) {
|
|
1383
|
+
this.$title.textContent = title;
|
|
1384
|
+
this.$title.title = title;
|
|
1385
|
+
}
|
|
1386
|
+
}
|
|
1387
|
+
setState(state) {
|
|
1388
|
+
if (this.state !== state) {
|
|
1389
|
+
this.state = state;
|
|
1390
|
+
this.buttons.forEach((btn, i2) => {
|
|
1391
|
+
if (btn.isActive) {
|
|
1392
|
+
this.$btns[i2].classList.toggle("is-active", btn.isActive(state));
|
|
1393
|
+
}
|
|
1394
|
+
});
|
|
1395
|
+
}
|
|
1396
|
+
}
|
|
1397
|
+
setReadonly(readonly) {
|
|
1398
|
+
if (this.readonly !== readonly) {
|
|
1399
|
+
this.readonly = readonly;
|
|
1400
|
+
}
|
|
1401
|
+
}
|
|
1402
|
+
render() {
|
|
1403
|
+
if (!this.$titleBar) {
|
|
1404
|
+
this.$titleBar = document.createElement("div");
|
|
1405
|
+
this.$titleBar.className = this.wrapClassName("titlebar");
|
|
1406
|
+
const $titleArea = document.createElement("div");
|
|
1407
|
+
$titleArea.className = this.wrapClassName("title-area");
|
|
1408
|
+
$titleArea.dataset.teleBoxHandle = TeleBoxDragHandleType;
|
|
1409
|
+
this.$title = document.createElement("h1");
|
|
1410
|
+
this.$title.className = this.wrapClassName("title");
|
|
1411
|
+
this.$title.dataset.teleBoxHandle = TeleBoxDragHandleType;
|
|
1412
|
+
if (this.title) {
|
|
1413
|
+
this.$title.textContent = this.title;
|
|
1414
|
+
this.$title.title = this.title;
|
|
1415
|
+
}
|
|
1416
|
+
$titleArea.appendChild(this.$title);
|
|
1417
|
+
$titleArea.appendChild(this.$dragArea);
|
|
1418
|
+
const $buttonsContainer = document.createElement("div");
|
|
1419
|
+
$buttonsContainer.className = this.wrapClassName("titlebar-btns");
|
|
1420
|
+
this.buttons.forEach(({ iconClassName, isActive }, i2) => {
|
|
1421
|
+
const teleTitleBarBtnIndex = String(i2);
|
|
1422
|
+
const $btn = document.createElement("button");
|
|
1423
|
+
$btn.className = `${this.wrapClassName("titlebar-btn")} ${iconClassName}`;
|
|
1424
|
+
$btn.dataset.teleTitleBarBtnIndex = teleTitleBarBtnIndex;
|
|
1425
|
+
$btn.dataset.teleTitleBarNoDblClick = "true";
|
|
1426
|
+
if (isActive) {
|
|
1427
|
+
$btn.classList.toggle("is-active", isActive(this.state));
|
|
1428
|
+
}
|
|
1429
|
+
this.$btns.push($btn);
|
|
1430
|
+
$buttonsContainer.appendChild($btn);
|
|
1431
|
+
});
|
|
1432
|
+
this.sideEffect.addEventListener($buttonsContainer, "click", (ev) => {
|
|
1433
|
+
var _a;
|
|
1434
|
+
if (this.readonly) {
|
|
1435
|
+
return;
|
|
1436
|
+
}
|
|
1437
|
+
const target = ev.target;
|
|
1438
|
+
const teleTitleBarBtnIndex = Number((_a = target.dataset) == null ? void 0 : _a.teleTitleBarBtnIndex);
|
|
1439
|
+
if (!Number.isNaN(teleTitleBarBtnIndex) && teleTitleBarBtnIndex < this.buttons.length) {
|
|
1440
|
+
preventEvent(ev);
|
|
1441
|
+
const btn = this.buttons[teleTitleBarBtnIndex];
|
|
1442
|
+
if (this.onEvent) {
|
|
1443
|
+
this.onEvent({
|
|
1444
|
+
type: btn.type,
|
|
1445
|
+
value: btn.value
|
|
1446
|
+
});
|
|
1447
|
+
}
|
|
1448
|
+
}
|
|
1449
|
+
});
|
|
1450
|
+
this.$titleBar.appendChild($titleArea);
|
|
1451
|
+
this.$titleBar.appendChild($buttonsContainer);
|
|
1452
|
+
}
|
|
1453
|
+
return this.$titleBar;
|
|
1454
|
+
}
|
|
1455
|
+
renderDragArea() {
|
|
1456
|
+
const $dragArea = document.createElement("div");
|
|
1457
|
+
$dragArea.className = this.wrapClassName("drag-area");
|
|
1458
|
+
$dragArea.dataset.teleBoxHandle = TeleBoxDragHandleType;
|
|
1459
|
+
this.sideEffect.addEventListener($dragArea, "mousedown", this.handleTitleBarClick);
|
|
1460
|
+
this.sideEffect.addEventListener($dragArea, "touchstart", this.handleTitleBarTouch, { passive: true });
|
|
1461
|
+
return $dragArea;
|
|
1462
|
+
}
|
|
1463
|
+
dragHandle() {
|
|
1464
|
+
return this.$titleBar;
|
|
1465
|
+
}
|
|
1466
|
+
wrapClassName(className) {
|
|
1467
|
+
return `${this.namespace}-${className}`;
|
|
1468
|
+
}
|
|
1469
|
+
destroy() {
|
|
1470
|
+
this.sideEffect.flushAll();
|
|
1471
|
+
if (this.$titleBar) {
|
|
1472
|
+
this.$titleBar = void 0;
|
|
1473
|
+
this.$title = void 0;
|
|
1474
|
+
this.$btns.length = 0;
|
|
1475
|
+
this.onDragStart = void 0;
|
|
1476
|
+
this.onEvent = void 0;
|
|
1477
|
+
}
|
|
1478
|
+
}
|
|
1479
|
+
}
|
|
1480
|
+
class TeleBox {
|
|
1481
|
+
constructor({
|
|
1482
|
+
id = genUniqueKey(),
|
|
1483
|
+
title = getBoxDefaultName(),
|
|
1484
|
+
prefersColorScheme = exports.TELE_BOX_COLOR_SCHEME.Light,
|
|
1485
|
+
darkMode,
|
|
1486
|
+
visible = true,
|
|
1487
|
+
width = 0.5,
|
|
1488
|
+
height = 0.5,
|
|
1489
|
+
minWidth = 0,
|
|
1490
|
+
minHeight = 0,
|
|
1491
|
+
x = 0.1,
|
|
1492
|
+
y = 0.1,
|
|
1493
|
+
minimized = false,
|
|
1494
|
+
maximized = false,
|
|
1495
|
+
readonly = false,
|
|
1496
|
+
resizable = true,
|
|
1497
|
+
draggable = true,
|
|
1498
|
+
fence = true,
|
|
1499
|
+
fixRatio = false,
|
|
1500
|
+
focus = false,
|
|
1501
|
+
zIndex = 100,
|
|
1502
|
+
namespace = "telebox",
|
|
1503
|
+
titleBar,
|
|
1504
|
+
content,
|
|
1505
|
+
footer,
|
|
1506
|
+
styles,
|
|
1507
|
+
containerRect = {
|
|
1508
|
+
x: 0,
|
|
1509
|
+
y: 0,
|
|
1510
|
+
width: window.innerWidth,
|
|
1511
|
+
height: window.innerHeight
|
|
1512
|
+
},
|
|
1513
|
+
collectorRect
|
|
1514
|
+
} = {}) {
|
|
1515
|
+
this._renderSideEffect = new o();
|
|
1516
|
+
this.handleTrackStart = (ev) => {
|
|
1517
|
+
var _a;
|
|
1518
|
+
return (_a = this._handleTrackStart) == null ? void 0 : _a.call(this, ev);
|
|
1519
|
+
};
|
|
1520
|
+
this._sideEffect = new o();
|
|
1521
|
+
this._valSideEffectBinder = c(this._sideEffect);
|
|
1522
|
+
const { combine, createVal } = this._valSideEffectBinder;
|
|
1523
|
+
this.id = id;
|
|
1524
|
+
this.namespace = namespace;
|
|
1525
|
+
this.events = new EventEmitter();
|
|
1526
|
+
this._delegateEvents = new EventEmitter();
|
|
1527
|
+
const prefersColorScheme$ = createVal(prefersColorScheme);
|
|
1528
|
+
prefersColorScheme$.reaction((prefersColorScheme2, _, skipUpdate) => {
|
|
1529
|
+
if (!skipUpdate) {
|
|
1530
|
+
this.events.emit(exports.TELE_BOX_EVENT.PrefersColorScheme, prefersColorScheme2);
|
|
1531
|
+
}
|
|
1532
|
+
});
|
|
1533
|
+
const darkMode$ = createVal(Boolean(darkMode));
|
|
1534
|
+
if (darkMode == null) {
|
|
1535
|
+
prefersColorScheme$.subscribe((prefersColorScheme2, _, skipUpdate) => {
|
|
1536
|
+
this._sideEffect.add(() => {
|
|
1537
|
+
if (prefersColorScheme2 === "auto") {
|
|
1538
|
+
const prefersDark = window.matchMedia("(prefers-color-scheme: dark)");
|
|
1539
|
+
if (prefersDark) {
|
|
1540
|
+
darkMode$.setValue(prefersDark.matches, skipUpdate);
|
|
1541
|
+
const handler = (evt) => {
|
|
1542
|
+
darkMode$.setValue(evt.matches, skipUpdate);
|
|
1543
|
+
};
|
|
1544
|
+
prefersDark.addListener(handler);
|
|
1545
|
+
return () => prefersDark.removeListener(handler);
|
|
1546
|
+
} else {
|
|
1547
|
+
return noop;
|
|
1548
|
+
}
|
|
1549
|
+
} else {
|
|
1550
|
+
darkMode$.setValue(prefersColorScheme2 === "dark", skipUpdate);
|
|
1551
|
+
return noop;
|
|
1552
|
+
}
|
|
1553
|
+
}, "prefers-color-scheme");
|
|
1554
|
+
});
|
|
1555
|
+
}
|
|
1556
|
+
darkMode$.reaction((darkMode2, _, skipUpdate) => {
|
|
1557
|
+
if (!skipUpdate) {
|
|
1558
|
+
this.events.emit(exports.TELE_BOX_EVENT.DarkMode, darkMode2);
|
|
1559
|
+
}
|
|
1560
|
+
});
|
|
1561
|
+
const containerRect$ = createVal(containerRect, shallowequal);
|
|
1562
|
+
const collectorRect$ = createVal(collectorRect, shallowequal);
|
|
1563
|
+
const title$ = createVal(title);
|
|
1564
|
+
const visible$ = createVal(visible);
|
|
1565
|
+
visible$.reaction((visible2, _, skipUpdate) => {
|
|
1566
|
+
if (!skipUpdate && !visible2) {
|
|
1567
|
+
this.events.emit(exports.TELE_BOX_EVENT.Close);
|
|
1568
|
+
}
|
|
1569
|
+
});
|
|
1570
|
+
const readonly$ = createVal(readonly);
|
|
1571
|
+
readonly$.reaction((readonly2, _, skipUpdate) => {
|
|
1572
|
+
if (!skipUpdate) {
|
|
1573
|
+
this.events.emit(exports.TELE_BOX_EVENT.Readonly, readonly2);
|
|
1574
|
+
}
|
|
1575
|
+
});
|
|
1576
|
+
const resizable$ = createVal(resizable);
|
|
1577
|
+
const draggable$ = createVal(draggable);
|
|
1578
|
+
const fence$ = createVal(fence);
|
|
1579
|
+
const fixRatio$ = createVal(fixRatio);
|
|
1580
|
+
const zIndex$ = createVal(zIndex);
|
|
1581
|
+
zIndex$.reaction((zIndex2, _, skipUpdate) => {
|
|
1582
|
+
if (!skipUpdate) {
|
|
1583
|
+
this.events.emit(exports.TELE_BOX_EVENT.ZIndex, zIndex2);
|
|
1584
|
+
}
|
|
1585
|
+
});
|
|
1586
|
+
const focus$ = createVal(focus);
|
|
1587
|
+
focus$.reaction((focus2, _, skipUpdate) => {
|
|
1588
|
+
if (!skipUpdate) {
|
|
1589
|
+
this.events.emit(focus2 ? exports.TELE_BOX_EVENT.Focus : exports.TELE_BOX_EVENT.Blur);
|
|
1590
|
+
}
|
|
1591
|
+
});
|
|
1592
|
+
const minimized$ = createVal(minimized);
|
|
1593
|
+
minimized$.reaction((minimized2, _, skipUpdate) => {
|
|
1594
|
+
if (!skipUpdate) {
|
|
1595
|
+
this.events.emit(exports.TELE_BOX_EVENT.Minimized, minimized2);
|
|
1596
|
+
}
|
|
1597
|
+
});
|
|
1598
|
+
const maximized$ = createVal(maximized);
|
|
1599
|
+
maximized$.reaction((maximized2, _, skipUpdate) => {
|
|
1600
|
+
if (!skipUpdate) {
|
|
1601
|
+
this.events.emit(exports.TELE_BOX_EVENT.Maximized, maximized2);
|
|
1602
|
+
}
|
|
1603
|
+
});
|
|
1604
|
+
const state$ = combine([minimized$, maximized$], ([minimized2, maximized2]) => minimized2 ? exports.TELE_BOX_STATE.Minimized : maximized2 ? exports.TELE_BOX_STATE.Maximized : exports.TELE_BOX_STATE.Normal);
|
|
1605
|
+
state$.reaction((state, _, skipUpdate) => {
|
|
1606
|
+
if (!skipUpdate) {
|
|
1607
|
+
this.events.emit(exports.TELE_BOX_EVENT.State, state);
|
|
1608
|
+
}
|
|
1609
|
+
});
|
|
1610
|
+
const minSize$ = createVal({
|
|
1611
|
+
width: clamp(minWidth, 0, 1),
|
|
1612
|
+
height: clamp(minHeight, 0, 1)
|
|
1613
|
+
}, shallowequal);
|
|
1614
|
+
const intrinsicSize$ = createVal({
|
|
1615
|
+
width: clamp(width, minSize$.value.width, 1),
|
|
1616
|
+
height: clamp(height, minSize$.value.height, 1)
|
|
1617
|
+
}, shallowequal);
|
|
1618
|
+
minSize$.reaction((minSize, _, skipUpdate) => {
|
|
1619
|
+
intrinsicSize$.setValue({
|
|
1620
|
+
width: clamp(width, minSize.width, 1),
|
|
1621
|
+
height: clamp(height, minSize.height, 1)
|
|
1622
|
+
}, skipUpdate);
|
|
1623
|
+
});
|
|
1624
|
+
intrinsicSize$.reaction((size, _, skipUpdate) => {
|
|
1625
|
+
if (!skipUpdate) {
|
|
1626
|
+
this.events.emit(exports.TELE_BOX_EVENT.IntrinsicResize, size);
|
|
1627
|
+
}
|
|
1628
|
+
});
|
|
1629
|
+
const size$ = combine([intrinsicSize$, maximized$], ([intrinsicSize, maximized2]) => {
|
|
1630
|
+
if (maximized2) {
|
|
1631
|
+
return { width: 1, height: 1 };
|
|
1632
|
+
}
|
|
1633
|
+
return intrinsicSize;
|
|
1634
|
+
}, shallowequal);
|
|
1635
|
+
size$.reaction((size, _, skipUpdate) => {
|
|
1636
|
+
if (!skipUpdate) {
|
|
1637
|
+
this.events.emit(exports.TELE_BOX_EVENT.Resize, size);
|
|
1638
|
+
}
|
|
1639
|
+
});
|
|
1640
|
+
const visualSize$ = combine([size$, minimized$, containerRect$, collectorRect$], ([size, minimized2, containerRect2, collectorRect2]) => {
|
|
1641
|
+
if (minimized2 && collectorRect2) {
|
|
1642
|
+
return {
|
|
1643
|
+
width: collectorRect2.width / size.width / containerRect2.width,
|
|
1644
|
+
height: collectorRect2.height / size.height / containerRect2.height
|
|
1645
|
+
};
|
|
1646
|
+
}
|
|
1647
|
+
return size;
|
|
1648
|
+
}, shallowequal);
|
|
1649
|
+
visualSize$.reaction((size, _, skipUpdate) => {
|
|
1650
|
+
if (!skipUpdate) {
|
|
1651
|
+
this.events.emit(exports.TELE_BOX_EVENT.VisualResize, size);
|
|
1652
|
+
}
|
|
1653
|
+
});
|
|
1654
|
+
const intrinsicCoord$ = createVal({ x: clamp(x, 0, 1), y: clamp(y, 0, 1) }, shallowequal);
|
|
1655
|
+
intrinsicCoord$.reaction((coord, _, skipUpdate) => {
|
|
1656
|
+
if (!skipUpdate) {
|
|
1657
|
+
this.events.emit(exports.TELE_BOX_EVENT.IntrinsicMove, coord);
|
|
1658
|
+
}
|
|
1659
|
+
});
|
|
1660
|
+
const coord$ = combine([
|
|
1661
|
+
intrinsicCoord$,
|
|
1662
|
+
intrinsicSize$,
|
|
1663
|
+
containerRect$,
|
|
1664
|
+
collectorRect$,
|
|
1665
|
+
minimized$,
|
|
1666
|
+
maximized$
|
|
1667
|
+
], ([
|
|
1668
|
+
intrinsicCoord,
|
|
1669
|
+
intrinsicSize,
|
|
1670
|
+
containerRect2,
|
|
1671
|
+
collectorRect2,
|
|
1672
|
+
minimized2,
|
|
1673
|
+
maximized2
|
|
1674
|
+
]) => {
|
|
1675
|
+
if (minimized2 && collectorRect2) {
|
|
1676
|
+
if (maximized2) {
|
|
1677
|
+
return {
|
|
1678
|
+
x: (collectorRect2.x + collectorRect2.width / 2) / containerRect2.width - 1 / 2,
|
|
1679
|
+
y: (collectorRect2.y + collectorRect2.height / 2) / containerRect2.height - 1 / 2
|
|
1680
|
+
};
|
|
1681
|
+
}
|
|
1682
|
+
return {
|
|
1683
|
+
x: (collectorRect2.x + collectorRect2.width / 2) / containerRect2.width - intrinsicSize.width / 2,
|
|
1684
|
+
y: (collectorRect2.y + collectorRect2.height / 2) / containerRect2.height - intrinsicSize.height / 2
|
|
1685
|
+
};
|
|
1686
|
+
}
|
|
1687
|
+
if (maximized2) {
|
|
1688
|
+
return { x: 0, y: 0 };
|
|
1689
|
+
}
|
|
1690
|
+
return intrinsicCoord;
|
|
1691
|
+
}, shallowequal);
|
|
1692
|
+
coord$.reaction((coord, _, skipUpdate) => {
|
|
1693
|
+
if (!skipUpdate) {
|
|
1694
|
+
this.events.emit(exports.TELE_BOX_EVENT.Move, coord);
|
|
1695
|
+
}
|
|
1696
|
+
});
|
|
1697
|
+
this.titleBar = titleBar || new DefaultTitleBar({
|
|
1698
|
+
readonly: readonly$.value,
|
|
1699
|
+
title: title$.value,
|
|
1700
|
+
namespace: this.namespace,
|
|
1701
|
+
onDragStart: (event) => {
|
|
1702
|
+
var _a;
|
|
1703
|
+
return (_a = this._handleTrackStart) == null ? void 0 : _a.call(this, event);
|
|
1704
|
+
},
|
|
1705
|
+
onEvent: (event) => {
|
|
1706
|
+
if (this._delegateEvents.listeners.length > 0) {
|
|
1707
|
+
this._delegateEvents.emit(event.type);
|
|
1708
|
+
} else {
|
|
1709
|
+
switch (event.type) {
|
|
1710
|
+
case exports.TELE_BOX_DELEGATE_EVENT.Maximize: {
|
|
1711
|
+
maximized$.setValue(!maximized$.value);
|
|
1712
|
+
break;
|
|
1713
|
+
}
|
|
1714
|
+
case exports.TELE_BOX_DELEGATE_EVENT.Minimize: {
|
|
1715
|
+
minimized$.setValue(true);
|
|
1716
|
+
break;
|
|
1717
|
+
}
|
|
1718
|
+
case exports.TELE_BOX_DELEGATE_EVENT.Close: {
|
|
1719
|
+
visible$.setValue(false);
|
|
1720
|
+
break;
|
|
1721
|
+
}
|
|
1722
|
+
default: {
|
|
1723
|
+
console.error("Unsupported titleBar event:", event);
|
|
1724
|
+
break;
|
|
1725
|
+
}
|
|
1726
|
+
}
|
|
1727
|
+
}
|
|
1728
|
+
}
|
|
1729
|
+
});
|
|
1730
|
+
readonly$.reaction((readonly2) => {
|
|
1731
|
+
this.titleBar.setReadonly(readonly2);
|
|
1732
|
+
});
|
|
1733
|
+
const $userContent$ = createVal(content);
|
|
1734
|
+
const $userFooter$ = createVal(footer);
|
|
1735
|
+
const $userStyles$ = createVal(styles);
|
|
1736
|
+
const valConfig = {
|
|
1737
|
+
prefersColorScheme: prefersColorScheme$,
|
|
1738
|
+
darkMode: darkMode$,
|
|
1739
|
+
containerRect: containerRect$,
|
|
1740
|
+
collectorRect: collectorRect$,
|
|
1741
|
+
title: title$,
|
|
1742
|
+
visible: visible$,
|
|
1743
|
+
readonly: readonly$,
|
|
1744
|
+
resizable: resizable$,
|
|
1745
|
+
draggable: draggable$,
|
|
1746
|
+
fence: fence$,
|
|
1747
|
+
fixRatio: fixRatio$,
|
|
1748
|
+
focus: focus$,
|
|
1749
|
+
zIndex: zIndex$,
|
|
1750
|
+
minimized: minimized$,
|
|
1751
|
+
maximized: maximized$,
|
|
1752
|
+
$userContent: $userContent$,
|
|
1753
|
+
$userFooter: $userFooter$,
|
|
1754
|
+
$userStyles: $userStyles$
|
|
1755
|
+
};
|
|
1756
|
+
i(this, valConfig);
|
|
1757
|
+
this._state$ = state$;
|
|
1758
|
+
this._minSize$ = minSize$;
|
|
1759
|
+
this._size$ = size$;
|
|
1760
|
+
this._intrinsicSize$ = intrinsicSize$;
|
|
1761
|
+
this._visualSize$ = visualSize$;
|
|
1762
|
+
this._coord$ = coord$;
|
|
1763
|
+
this._intrinsicCoord$ = intrinsicCoord$;
|
|
1764
|
+
if (this.fixRatio) {
|
|
1765
|
+
this.transform(coord$.value.x, coord$.value.y, size$.value.width, size$.value.height, true);
|
|
1766
|
+
}
|
|
1767
|
+
this.$box = this.render();
|
|
1768
|
+
}
|
|
1769
|
+
get darkMode() {
|
|
1770
|
+
return this._darkMode$.value;
|
|
1771
|
+
}
|
|
1772
|
+
get state() {
|
|
1773
|
+
return this._state$.value;
|
|
1774
|
+
}
|
|
1775
|
+
setState(state, skipUpdate = false) {
|
|
1776
|
+
switch (state) {
|
|
1777
|
+
case exports.TELE_BOX_STATE.Maximized: {
|
|
1778
|
+
this.setMinimized(false, skipUpdate);
|
|
1779
|
+
this.setMaximized(true, skipUpdate);
|
|
1780
|
+
break;
|
|
1781
|
+
}
|
|
1782
|
+
case exports.TELE_BOX_STATE.Minimized: {
|
|
1783
|
+
this.setMinimized(true, skipUpdate);
|
|
1784
|
+
this.setMaximized(false, skipUpdate);
|
|
1785
|
+
break;
|
|
1786
|
+
}
|
|
1787
|
+
default: {
|
|
1788
|
+
this.setMinimized(false, skipUpdate);
|
|
1789
|
+
this.setMaximized(false, skipUpdate);
|
|
1790
|
+
break;
|
|
1791
|
+
}
|
|
1792
|
+
}
|
|
1793
|
+
return this;
|
|
1794
|
+
}
|
|
1795
|
+
get minWidth() {
|
|
1796
|
+
return this._minSize$.value.width;
|
|
1797
|
+
}
|
|
1798
|
+
get minHeight() {
|
|
1799
|
+
return this._minSize$.value.height;
|
|
1800
|
+
}
|
|
1801
|
+
setMinWidth(minWidth, skipUpdate = false) {
|
|
1802
|
+
this._minSize$.setValue({ width: minWidth, height: this.minHeight }, skipUpdate);
|
|
1803
|
+
return this;
|
|
1804
|
+
}
|
|
1805
|
+
setMinHeight(minHeight, skipUpdate = false) {
|
|
1806
|
+
this._minSize$.setValue({ width: this.minWidth, height: minHeight }, skipUpdate);
|
|
1807
|
+
return this;
|
|
1808
|
+
}
|
|
1809
|
+
get intrinsicWidth() {
|
|
1810
|
+
return this._intrinsicSize$.value.width;
|
|
1811
|
+
}
|
|
1812
|
+
get intrinsicHeight() {
|
|
1813
|
+
return this._intrinsicSize$.value.height;
|
|
1814
|
+
}
|
|
1815
|
+
resize(width, height, skipUpdate = false) {
|
|
1816
|
+
this._intrinsicSize$.setValue({ width, height }, skipUpdate);
|
|
1817
|
+
return this;
|
|
1818
|
+
}
|
|
1819
|
+
get width() {
|
|
1820
|
+
return this._size$.value.width;
|
|
1821
|
+
}
|
|
1822
|
+
get height() {
|
|
1823
|
+
return this._size$.value.height;
|
|
1824
|
+
}
|
|
1825
|
+
get absoluteWidth() {
|
|
1826
|
+
return this.width * this.containerRect.width;
|
|
1827
|
+
}
|
|
1828
|
+
get absoluteHeight() {
|
|
1829
|
+
return this.height * this.containerRect.height;
|
|
1830
|
+
}
|
|
1831
|
+
get visualWidth() {
|
|
1832
|
+
return this._visualSize$.value.width;
|
|
1833
|
+
}
|
|
1834
|
+
get visualHeight() {
|
|
1835
|
+
return this._visualSize$.value.height;
|
|
1836
|
+
}
|
|
1837
|
+
get intrinsicX() {
|
|
1838
|
+
return this._intrinsicCoord$.value.x;
|
|
1839
|
+
}
|
|
1840
|
+
get intrinsicY() {
|
|
1841
|
+
return this._intrinsicCoord$.value.y;
|
|
1842
|
+
}
|
|
1843
|
+
move(x, y, skipUpdate = false) {
|
|
1844
|
+
this._intrinsicCoord$.setValue({ x, y }, skipUpdate);
|
|
1845
|
+
return this;
|
|
1846
|
+
}
|
|
1847
|
+
get x() {
|
|
1848
|
+
return this._coord$.value.x;
|
|
1849
|
+
}
|
|
1850
|
+
get y() {
|
|
1851
|
+
return this._coord$.value.y;
|
|
1852
|
+
}
|
|
1853
|
+
transform(x, y, width, height, skipUpdate = false) {
|
|
1854
|
+
if (this.fixRatio) {
|
|
1855
|
+
const newHeight = this.intrinsicHeight / this.intrinsicWidth * width;
|
|
1856
|
+
if (y !== this.intrinsicY) {
|
|
1857
|
+
y -= newHeight - height;
|
|
1858
|
+
}
|
|
1859
|
+
height = newHeight;
|
|
1860
|
+
}
|
|
1861
|
+
if (y < 0) {
|
|
1862
|
+
y = 0;
|
|
1863
|
+
if (height > this.intrinsicHeight) {
|
|
1864
|
+
height = this.intrinsicHeight;
|
|
1865
|
+
}
|
|
1866
|
+
}
|
|
1867
|
+
this._intrinsicCoord$.setValue({
|
|
1868
|
+
x: width >= this.minWidth ? x : this.intrinsicX,
|
|
1869
|
+
y: height >= this.minHeight ? y : this.intrinsicY
|
|
1870
|
+
}, skipUpdate);
|
|
1871
|
+
this._intrinsicSize$.setValue({
|
|
1872
|
+
width: clamp(width, this.minWidth, 1),
|
|
1873
|
+
height: clamp(height, this.minHeight, 1)
|
|
1874
|
+
}, skipUpdate);
|
|
1875
|
+
return this;
|
|
1876
|
+
}
|
|
1877
|
+
mount(container) {
|
|
1878
|
+
container.appendChild(this.render());
|
|
1879
|
+
return this;
|
|
1880
|
+
}
|
|
1881
|
+
unmount() {
|
|
1882
|
+
if (this.$box) {
|
|
1883
|
+
this.$box.remove();
|
|
1884
|
+
}
|
|
1885
|
+
return this;
|
|
1886
|
+
}
|
|
1887
|
+
mountContent(content) {
|
|
1888
|
+
this.set$userContent(content);
|
|
1889
|
+
return this;
|
|
1890
|
+
}
|
|
1891
|
+
unmountContent() {
|
|
1892
|
+
this.set$userContent(void 0);
|
|
1893
|
+
return this;
|
|
1894
|
+
}
|
|
1895
|
+
mountFooter(footer) {
|
|
1896
|
+
this.set$userFooter(footer);
|
|
1897
|
+
return this;
|
|
1898
|
+
}
|
|
1899
|
+
unmountFooter() {
|
|
1900
|
+
this.set$userFooter(void 0);
|
|
1901
|
+
return this;
|
|
1902
|
+
}
|
|
1903
|
+
getUserStyles() {
|
|
1904
|
+
return this.$userStyles;
|
|
1905
|
+
}
|
|
1906
|
+
mountStyles(styles) {
|
|
1907
|
+
let $styles;
|
|
1908
|
+
if (typeof styles === "string") {
|
|
1909
|
+
$styles = document.createElement("style");
|
|
1910
|
+
$styles.textContent = styles;
|
|
1911
|
+
} else {
|
|
1912
|
+
$styles = styles;
|
|
1913
|
+
}
|
|
1914
|
+
this.set$userStyles($styles);
|
|
1915
|
+
return this;
|
|
1916
|
+
}
|
|
1917
|
+
unmountStyles() {
|
|
1918
|
+
this.set$userStyles(void 0);
|
|
1919
|
+
return this;
|
|
1920
|
+
}
|
|
1921
|
+
render(root) {
|
|
1922
|
+
if (root) {
|
|
1923
|
+
if (root === this.$box) {
|
|
1924
|
+
return this.$box;
|
|
1925
|
+
} else {
|
|
1926
|
+
this.$box = root;
|
|
1927
|
+
}
|
|
1928
|
+
} else {
|
|
1929
|
+
if (this.$box) {
|
|
1930
|
+
return this.$box;
|
|
1931
|
+
} else {
|
|
1932
|
+
this.$box = document.createElement("div");
|
|
1933
|
+
}
|
|
1934
|
+
}
|
|
1935
|
+
this._renderSideEffect.flushAll();
|
|
1936
|
+
this.$box.classList.add(this.wrapClassName("box"));
|
|
1937
|
+
const bindClassName = (el, val, className, predicate = isTruthy) => {
|
|
1938
|
+
return this._renderSideEffect.add(() => {
|
|
1939
|
+
const wrappedClassName = this.wrapClassName(className);
|
|
1940
|
+
return val.subscribe((value) => {
|
|
1941
|
+
el.classList.toggle(wrappedClassName, predicate(value));
|
|
1942
|
+
});
|
|
1943
|
+
});
|
|
1944
|
+
};
|
|
1945
|
+
bindClassName(this.$box, this._readonly$, "readonly");
|
|
1946
|
+
bindClassName(this.$box, this._draggable$, "no-drag", isFalsy);
|
|
1947
|
+
bindClassName(this.$box, this._resizable$, "no-resize", isFalsy);
|
|
1948
|
+
bindClassName(this.$box, this._focus$, "blur", isFalsy);
|
|
1949
|
+
bindClassName(this.$box, this._darkMode$, "color-scheme-dark");
|
|
1950
|
+
bindClassName(this.$box, this._darkMode$, "color-scheme-light", isFalsy);
|
|
1951
|
+
this._renderSideEffect.add(() => {
|
|
1952
|
+
const minimizedClassName = this.wrapClassName("minimized");
|
|
1953
|
+
const maximizedClassName = this.wrapClassName("maximized");
|
|
1954
|
+
const MAXIMIZED_TIMER_ID = "box-maximized-timer";
|
|
1955
|
+
return this._state$.subscribe((state) => {
|
|
1956
|
+
this.$box.classList.toggle(minimizedClassName, state === exports.TELE_BOX_STATE.Minimized);
|
|
1957
|
+
if (state === exports.TELE_BOX_STATE.Maximized) {
|
|
1958
|
+
this._renderSideEffect.flush(MAXIMIZED_TIMER_ID);
|
|
1959
|
+
this.$box.classList.toggle(maximizedClassName, true);
|
|
1960
|
+
} else {
|
|
1961
|
+
this._renderSideEffect.setTimeout(() => {
|
|
1962
|
+
this.$box.classList.toggle(maximizedClassName, false);
|
|
1963
|
+
}, 0, MAXIMIZED_TIMER_ID);
|
|
1964
|
+
}
|
|
1965
|
+
});
|
|
1966
|
+
});
|
|
1967
|
+
this._renderSideEffect.add(() => this._visible$.subscribe((visible) => {
|
|
1968
|
+
this.$box.style.display = visible ? "block" : "none";
|
|
1969
|
+
}));
|
|
1970
|
+
this._renderSideEffect.add(() => this._zIndex$.subscribe((zIndex) => {
|
|
1971
|
+
this.$box.style.zIndex = String(zIndex);
|
|
1972
|
+
}));
|
|
1973
|
+
const boxStyler = index(this.$box);
|
|
1974
|
+
this.$box.dataset.teleBoxID = this.id;
|
|
1975
|
+
this.$box.style.width = this.absoluteWidth + "px";
|
|
1976
|
+
this.$box.style.height = this.absoluteHeight + "px";
|
|
1977
|
+
const translateX = this.x * this.containerRect.width + this.containerRect.x;
|
|
1978
|
+
const translateY = this.y * this.containerRect.height + this.containerRect.y;
|
|
1979
|
+
this.$box.style.transform = `translate(${translateX - 10}px,${translateY - 10}px)`;
|
|
1980
|
+
this._valSideEffectBinder.combine([
|
|
1981
|
+
this._coord$,
|
|
1982
|
+
this._size$,
|
|
1983
|
+
this._minimized$,
|
|
1984
|
+
this._containerRect$,
|
|
1985
|
+
this._collectorRect$
|
|
1986
|
+
], ([coord, size, minimized, containerRect, collectorRect]) => {
|
|
1987
|
+
const absoluteWidth = size.width * containerRect.width;
|
|
1988
|
+
const absoluteHeight = size.height * containerRect.height;
|
|
1989
|
+
return {
|
|
1990
|
+
width: absoluteWidth + (minimized && collectorRect ? 1 : 0),
|
|
1991
|
+
height: absoluteHeight + (minimized && collectorRect ? 1 : 0),
|
|
1992
|
+
x: coord.x * containerRect.width,
|
|
1993
|
+
y: coord.y * containerRect.height,
|
|
1994
|
+
scaleX: minimized && collectorRect ? collectorRect.width / absoluteWidth : 1,
|
|
1995
|
+
scaleY: minimized && collectorRect ? collectorRect.height / absoluteHeight : 1
|
|
1996
|
+
};
|
|
1997
|
+
}, shallowequal).subscribe((styles) => {
|
|
1998
|
+
boxStyler.set(styles);
|
|
1999
|
+
});
|
|
2000
|
+
boxStyler.set({ x: translateX, y: translateY });
|
|
2001
|
+
const $boxMain = document.createElement("div");
|
|
2002
|
+
$boxMain.className = this.wrapClassName("box-main");
|
|
2003
|
+
this.$box.appendChild($boxMain);
|
|
2004
|
+
const $titleBar = document.createElement("div");
|
|
2005
|
+
$titleBar.className = this.wrapClassName("titlebar-wrap");
|
|
2006
|
+
$titleBar.appendChild(this.titleBar.render());
|
|
2007
|
+
this.$titleBar = $titleBar;
|
|
2008
|
+
const $contentWrap = document.createElement("div");
|
|
2009
|
+
$contentWrap.className = this.wrapClassName("content-wrap");
|
|
2010
|
+
const $content = document.createElement("div");
|
|
2011
|
+
$content.className = this.wrapClassName("content") + " tele-fancy-scrollbar";
|
|
2012
|
+
this.$content = $content;
|
|
2013
|
+
this._renderSideEffect.add(() => {
|
|
2014
|
+
let last$userStyles;
|
|
2015
|
+
return this._$userStyles$.subscribe(($userStyles) => {
|
|
2016
|
+
if (last$userStyles) {
|
|
2017
|
+
last$userStyles.remove();
|
|
2018
|
+
}
|
|
2019
|
+
last$userStyles = $userStyles;
|
|
2020
|
+
if ($userStyles) {
|
|
2021
|
+
$contentWrap.appendChild($userStyles);
|
|
2022
|
+
}
|
|
2023
|
+
});
|
|
2024
|
+
});
|
|
2025
|
+
this._renderSideEffect.add(() => {
|
|
2026
|
+
let last$userContent;
|
|
2027
|
+
return this._$userContent$.subscribe(($userContent) => {
|
|
2028
|
+
if (last$userContent) {
|
|
2029
|
+
last$userContent.remove();
|
|
2030
|
+
}
|
|
2031
|
+
last$userContent = $userContent;
|
|
2032
|
+
if ($userContent) {
|
|
2033
|
+
$content.appendChild($userContent);
|
|
2034
|
+
}
|
|
2035
|
+
});
|
|
2036
|
+
});
|
|
2037
|
+
$contentWrap.appendChild($content);
|
|
2038
|
+
const $footer = document.createElement("div");
|
|
2039
|
+
$footer.className = this.wrapClassName("footer-wrap");
|
|
2040
|
+
this.$footer = $footer;
|
|
2041
|
+
this._renderSideEffect.add(() => {
|
|
2042
|
+
let last$userFooter;
|
|
2043
|
+
return this._$userFooter$.subscribe(($userFooter) => {
|
|
2044
|
+
if (last$userFooter) {
|
|
2045
|
+
last$userFooter.remove();
|
|
2046
|
+
}
|
|
2047
|
+
last$userFooter = $userFooter;
|
|
2048
|
+
if ($userFooter) {
|
|
2049
|
+
$footer.appendChild($userFooter);
|
|
2050
|
+
}
|
|
2051
|
+
});
|
|
2052
|
+
});
|
|
2053
|
+
$boxMain.appendChild($titleBar);
|
|
2054
|
+
$boxMain.appendChild($contentWrap);
|
|
2055
|
+
$boxMain.appendChild($footer);
|
|
2056
|
+
this._renderResizeHandlers();
|
|
2057
|
+
return this.$box;
|
|
2058
|
+
}
|
|
2059
|
+
_renderResizeHandlers() {
|
|
2060
|
+
const $resizeHandles = document.createElement("div");
|
|
2061
|
+
$resizeHandles.className = this.wrapClassName("resize-handles");
|
|
2062
|
+
Object.values(exports.TELE_BOX_RESIZE_HANDLE).forEach((handleType) => {
|
|
2063
|
+
const $handle = document.createElement("div");
|
|
2064
|
+
$handle.className = this.wrapClassName(handleType) + " " + this.wrapClassName("resize-handle");
|
|
2065
|
+
$handle.dataset.teleBoxHandle = handleType;
|
|
2066
|
+
$resizeHandles.appendChild($handle);
|
|
2067
|
+
});
|
|
2068
|
+
this.$box.appendChild($resizeHandles);
|
|
2069
|
+
const TRACKING_DISPOSER_ID = "handle-tracking-listener";
|
|
2070
|
+
const transformingClassName = this.wrapClassName("transforming");
|
|
2071
|
+
let $trackMask;
|
|
2072
|
+
let trackStartX = 0;
|
|
2073
|
+
let trackStartY = 0;
|
|
2074
|
+
let trackStartWidth = 0;
|
|
2075
|
+
let trackStartHeight = 0;
|
|
2076
|
+
let trackStartPageX = 0;
|
|
2077
|
+
let trackStartPageY = 0;
|
|
2078
|
+
let trackingHandle;
|
|
2079
|
+
const handleTracking = (ev) => {
|
|
2080
|
+
if (this.state !== exports.TELE_BOX_STATE.Normal) {
|
|
2081
|
+
return;
|
|
2082
|
+
}
|
|
2083
|
+
preventEvent(ev);
|
|
2084
|
+
let { pageX, pageY } = flattenEvent(ev);
|
|
2085
|
+
if (pageY < 0) {
|
|
2086
|
+
pageY = 0;
|
|
2087
|
+
}
|
|
2088
|
+
const offsetX = (pageX - trackStartPageX) / this.containerRect.width;
|
|
2089
|
+
const offsetY = (pageY - trackStartPageY) / this.containerRect.height;
|
|
2090
|
+
switch (trackingHandle) {
|
|
2091
|
+
case exports.TELE_BOX_RESIZE_HANDLE.North: {
|
|
2092
|
+
this.transform(this.x, trackStartY + offsetY, this.width, trackStartHeight - offsetY);
|
|
2093
|
+
break;
|
|
2094
|
+
}
|
|
2095
|
+
case exports.TELE_BOX_RESIZE_HANDLE.South: {
|
|
2096
|
+
this.transform(this.x, this.y, this.width, trackStartHeight + offsetY);
|
|
2097
|
+
break;
|
|
2098
|
+
}
|
|
2099
|
+
case exports.TELE_BOX_RESIZE_HANDLE.West: {
|
|
2100
|
+
this.transform(trackStartX + offsetX, this.y, trackStartWidth - offsetX, this.height);
|
|
2101
|
+
break;
|
|
2102
|
+
}
|
|
2103
|
+
case exports.TELE_BOX_RESIZE_HANDLE.East: {
|
|
2104
|
+
this.transform(this.x, this.y, trackStartWidth + offsetX, this.height);
|
|
2105
|
+
break;
|
|
2106
|
+
}
|
|
2107
|
+
case exports.TELE_BOX_RESIZE_HANDLE.NorthWest: {
|
|
2108
|
+
this.transform(trackStartX + offsetX, trackStartY + offsetY, trackStartWidth - offsetX, trackStartHeight - offsetY);
|
|
2109
|
+
break;
|
|
2110
|
+
}
|
|
2111
|
+
case exports.TELE_BOX_RESIZE_HANDLE.NorthEast: {
|
|
2112
|
+
this.transform(this.x, trackStartY + offsetY, trackStartWidth + offsetX, trackStartHeight - offsetY);
|
|
2113
|
+
break;
|
|
2114
|
+
}
|
|
2115
|
+
case exports.TELE_BOX_RESIZE_HANDLE.SouthEast: {
|
|
2116
|
+
this.transform(this.x, this.y, trackStartWidth + offsetX, trackStartHeight + offsetY);
|
|
2117
|
+
break;
|
|
2118
|
+
}
|
|
2119
|
+
case exports.TELE_BOX_RESIZE_HANDLE.SouthWest: {
|
|
2120
|
+
this.transform(trackStartX + offsetX, this.y, trackStartWidth - offsetX, trackStartHeight + offsetY);
|
|
2121
|
+
break;
|
|
2122
|
+
}
|
|
2123
|
+
default: {
|
|
2124
|
+
if (this.fence) {
|
|
2125
|
+
this.move(clamp(trackStartX + offsetX, 0, 1 - this.width), clamp(trackStartY + offsetY, 0, 1 - this.height));
|
|
2126
|
+
} else {
|
|
2127
|
+
const xOverflowOffset = 20 / this.containerRect.width;
|
|
2128
|
+
const yOverflowOffset = 20 / this.containerRect.height;
|
|
2129
|
+
this.move(clamp(trackStartX + offsetX, xOverflowOffset - this.width, 1 - xOverflowOffset), clamp(trackStartY + offsetY, 0, 1 - yOverflowOffset));
|
|
2130
|
+
}
|
|
2131
|
+
break;
|
|
2132
|
+
}
|
|
2133
|
+
}
|
|
2134
|
+
};
|
|
2135
|
+
const handleTrackEnd = (ev) => {
|
|
2136
|
+
trackingHandle = void 0;
|
|
2137
|
+
if (!$trackMask) {
|
|
2138
|
+
return;
|
|
2139
|
+
}
|
|
2140
|
+
preventEvent(ev);
|
|
2141
|
+
this.$box.classList.toggle(transformingClassName, false);
|
|
2142
|
+
this._sideEffect.flush(TRACKING_DISPOSER_ID);
|
|
2143
|
+
$trackMask.remove();
|
|
2144
|
+
};
|
|
2145
|
+
const handleTrackStart = (ev) => {
|
|
2146
|
+
var _a;
|
|
2147
|
+
if (this.readonly) {
|
|
2148
|
+
return;
|
|
2149
|
+
}
|
|
2150
|
+
if (ev.button != null && ev.button !== 0) {
|
|
2151
|
+
return;
|
|
2152
|
+
}
|
|
2153
|
+
if (!this.draggable || trackingHandle || this.state !== exports.TELE_BOX_STATE.Normal) {
|
|
2154
|
+
return;
|
|
2155
|
+
}
|
|
2156
|
+
const target = ev.target;
|
|
2157
|
+
if ((_a = target.dataset) == null ? void 0 : _a.teleBoxHandle) {
|
|
2158
|
+
preventEvent(ev);
|
|
2159
|
+
trackStartX = this.x;
|
|
2160
|
+
trackStartY = this.y;
|
|
2161
|
+
trackStartWidth = this.width;
|
|
2162
|
+
trackStartHeight = this.height;
|
|
2163
|
+
({ pageX: trackStartPageX, pageY: trackStartPageY } = flattenEvent(ev));
|
|
2164
|
+
trackingHandle = target.dataset.teleBoxHandle;
|
|
2165
|
+
if (!$trackMask) {
|
|
2166
|
+
$trackMask = document.createElement("div");
|
|
2167
|
+
}
|
|
2168
|
+
const cursor = trackingHandle ? this.wrapClassName(`cursor-${trackingHandle}`) : "";
|
|
2169
|
+
$trackMask.className = this.wrapClassName(`track-mask${cursor ? ` ${cursor}` : ""}`);
|
|
2170
|
+
this.$box.appendChild($trackMask);
|
|
2171
|
+
this.$box.classList.add(transformingClassName);
|
|
2172
|
+
this._sideEffect.add(() => {
|
|
2173
|
+
window.addEventListener("mousemove", handleTracking);
|
|
2174
|
+
window.addEventListener("touchmove", handleTracking, {
|
|
2175
|
+
passive: false
|
|
2176
|
+
});
|
|
2177
|
+
window.addEventListener("mouseup", handleTrackEnd);
|
|
2178
|
+
window.addEventListener("touchend", handleTrackEnd, {
|
|
2179
|
+
passive: false
|
|
2180
|
+
});
|
|
2181
|
+
window.addEventListener("touchcancel", handleTrackEnd, {
|
|
2182
|
+
passive: false
|
|
2183
|
+
});
|
|
2184
|
+
return () => {
|
|
2185
|
+
window.removeEventListener("mousemove", handleTracking);
|
|
2186
|
+
window.removeEventListener("touchmove", handleTracking);
|
|
2187
|
+
window.removeEventListener("mouseup", handleTrackEnd);
|
|
2188
|
+
window.removeEventListener("touchend", handleTrackEnd);
|
|
2189
|
+
window.removeEventListener("touchcancel", handleTrackEnd);
|
|
2190
|
+
};
|
|
2191
|
+
}, TRACKING_DISPOSER_ID);
|
|
2192
|
+
}
|
|
2193
|
+
};
|
|
2194
|
+
this._handleTrackStart = handleTrackStart;
|
|
2195
|
+
this._sideEffect.addEventListener($resizeHandles, "mousedown", handleTrackStart, {}, "box-resizeHandles-mousedown");
|
|
2196
|
+
this._sideEffect.addEventListener($resizeHandles, "touchstart", handleTrackStart, { passive: false }, "box-resizeHandles-touchstart");
|
|
2197
|
+
}
|
|
2198
|
+
destroy() {
|
|
2199
|
+
this.$box.remove();
|
|
2200
|
+
this.events.emit(exports.TELE_BOX_EVENT.Destroyed);
|
|
2201
|
+
this._sideEffect.flushAll();
|
|
2202
|
+
this._renderSideEffect.flushAll();
|
|
2203
|
+
this.events.removeAllListeners();
|
|
2204
|
+
this._delegateEvents.removeAllListeners();
|
|
2205
|
+
}
|
|
2206
|
+
wrapClassName(className) {
|
|
2207
|
+
return `${this.namespace}-${className}`;
|
|
2208
|
+
}
|
|
2209
|
+
}
|
|
2210
|
+
function noop() {
|
|
2211
|
+
return;
|
|
2212
|
+
}
|
|
2213
|
+
const useUpdateEffect = (effect, deps) => {
|
|
2214
|
+
const isFirst = React.useRef(true);
|
|
2215
|
+
React.useEffect(() => {
|
|
2216
|
+
if (isFirst.current) {
|
|
2217
|
+
isFirst.current = false;
|
|
2218
|
+
return;
|
|
2219
|
+
}
|
|
2220
|
+
return effect();
|
|
2221
|
+
}, deps);
|
|
2222
|
+
};
|
|
2223
|
+
const TeleBoxReact = (props) => {
|
|
2224
|
+
const [teleBox] = React.useState(() => new TeleBox(props));
|
|
2225
|
+
useUpdateEffect(() => {
|
|
2226
|
+
if (props.prefersColorScheme != null) {
|
|
2227
|
+
teleBox.setPrefersColorScheme(props.prefersColorScheme);
|
|
2228
|
+
}
|
|
2229
|
+
}, [teleBox, props.prefersColorScheme]);
|
|
2230
|
+
useUpdateEffect(() => {
|
|
2231
|
+
if (props.minWidth != null) {
|
|
2232
|
+
teleBox.setMinWidth(props.minWidth);
|
|
2233
|
+
}
|
|
2234
|
+
}, [teleBox, props.minWidth]);
|
|
2235
|
+
useUpdateEffect(() => {
|
|
2236
|
+
if (props.minHeight != null) {
|
|
2237
|
+
teleBox.setMinHeight(props.minHeight);
|
|
2238
|
+
}
|
|
2239
|
+
}, [teleBox, props.minHeight]);
|
|
2240
|
+
useUpdateEffect(() => {
|
|
2241
|
+
var _a, _b;
|
|
2242
|
+
teleBox.resize((_a = props.width) != null ? _a : teleBox.width, (_b = props.height) != null ? _b : teleBox.height, true);
|
|
2243
|
+
}, [teleBox, props.width, props.height]);
|
|
2244
|
+
useUpdateEffect(() => {
|
|
2245
|
+
var _a, _b;
|
|
2246
|
+
teleBox.move((_a = props.x) != null ? _a : teleBox.x, (_b = props.y) != null ? _b : teleBox.y, true);
|
|
2247
|
+
}, [teleBox, props.x, props.y]);
|
|
2248
|
+
useUpdateEffect(() => {
|
|
2249
|
+
if (props.title != null) {
|
|
2250
|
+
teleBox.setTitle(props.title);
|
|
2251
|
+
}
|
|
2252
|
+
}, [teleBox, props.title]);
|
|
2253
|
+
useUpdateEffect(() => {
|
|
2254
|
+
if (props.visible != null) {
|
|
2255
|
+
teleBox.setVisible(props.visible);
|
|
2256
|
+
}
|
|
2257
|
+
}, [teleBox, props.visible]);
|
|
2258
|
+
useUpdateEffect(() => {
|
|
2259
|
+
if (props.minimized != null) {
|
|
2260
|
+
teleBox.setMinimized(props.minimized, true);
|
|
2261
|
+
}
|
|
2262
|
+
}, [teleBox, props.minimized]);
|
|
2263
|
+
useUpdateEffect(() => {
|
|
2264
|
+
if (props.maximized != null) {
|
|
2265
|
+
teleBox.setMaximized(props.maximized, true);
|
|
2266
|
+
}
|
|
2267
|
+
}, [teleBox, props.maximized]);
|
|
2268
|
+
useUpdateEffect(() => {
|
|
2269
|
+
if (props.state != null) {
|
|
2270
|
+
teleBox.setState(props.state, true);
|
|
2271
|
+
}
|
|
2272
|
+
}, [teleBox, props.state]);
|
|
2273
|
+
useUpdateEffect(() => {
|
|
2274
|
+
if (props.draggable != null) {
|
|
2275
|
+
teleBox.setDraggable(props.draggable);
|
|
2276
|
+
}
|
|
2277
|
+
}, [teleBox, props.draggable]);
|
|
2278
|
+
useUpdateEffect(() => {
|
|
2279
|
+
if (props.resizable != null) {
|
|
2280
|
+
teleBox.setResizable(props.resizable);
|
|
2281
|
+
}
|
|
2282
|
+
}, [teleBox, props.resizable]);
|
|
2283
|
+
useUpdateEffect(() => {
|
|
2284
|
+
if (props.fence != null) {
|
|
2285
|
+
teleBox.setFence(props.fence);
|
|
2286
|
+
}
|
|
2287
|
+
}, [teleBox, props.fence]);
|
|
2288
|
+
useUpdateEffect(() => {
|
|
2289
|
+
if (props.containerRect != null) {
|
|
2290
|
+
teleBox.setContainerRect(props.containerRect);
|
|
2291
|
+
}
|
|
2292
|
+
}, [teleBox, props.containerRect]);
|
|
2293
|
+
useUpdateEffect(() => {
|
|
2294
|
+
if (props.fixRatio != null) {
|
|
2295
|
+
teleBox.setFixRatio(props.fixRatio);
|
|
2296
|
+
}
|
|
2297
|
+
}, [teleBox, props.fixRatio]);
|
|
2298
|
+
React.useEffect(() => {
|
|
2299
|
+
if (props.onResize) {
|
|
2300
|
+
teleBox.events.on(exports.TELE_BOX_EVENT.Resize, props.onResize);
|
|
2301
|
+
return () => {
|
|
2302
|
+
teleBox.events.off(exports.TELE_BOX_EVENT.Resize, props.onResize);
|
|
2303
|
+
};
|
|
2304
|
+
}
|
|
2305
|
+
return;
|
|
2306
|
+
}, [teleBox, props.onResize]);
|
|
2307
|
+
React.useEffect(() => {
|
|
2308
|
+
if (props.onMove) {
|
|
2309
|
+
teleBox.events.on(exports.TELE_BOX_EVENT.Move, props.onMove);
|
|
2310
|
+
return () => {
|
|
2311
|
+
teleBox.events.off(exports.TELE_BOX_EVENT.Move, props.onMove);
|
|
2312
|
+
};
|
|
2313
|
+
}
|
|
2314
|
+
return;
|
|
2315
|
+
}, [teleBox, props.onMove]);
|
|
2316
|
+
React.useEffect(() => {
|
|
2317
|
+
if (props.onClose) {
|
|
2318
|
+
teleBox.events.on(exports.TELE_BOX_EVENT.Close, props.onClose);
|
|
2319
|
+
return () => {
|
|
2320
|
+
teleBox.events.off(exports.TELE_BOX_EVENT.Close, props.onClose);
|
|
2321
|
+
};
|
|
2322
|
+
}
|
|
2323
|
+
return;
|
|
2324
|
+
}, [teleBox, props.onClose]);
|
|
2325
|
+
React.useEffect(() => {
|
|
2326
|
+
if (props.onFocus) {
|
|
2327
|
+
teleBox.events.on(exports.TELE_BOX_EVENT.Focus, props.onFocus);
|
|
2328
|
+
return () => {
|
|
2329
|
+
teleBox.events.off(exports.TELE_BOX_EVENT.Focus, props.onFocus);
|
|
2330
|
+
};
|
|
2331
|
+
}
|
|
2332
|
+
return;
|
|
2333
|
+
}, [teleBox, props.onFocus]);
|
|
2334
|
+
React.useEffect(() => {
|
|
2335
|
+
if (props.onBlur) {
|
|
2336
|
+
teleBox.events.on(exports.TELE_BOX_EVENT.Blur, props.onBlur);
|
|
2337
|
+
return () => {
|
|
2338
|
+
teleBox.events.off(exports.TELE_BOX_EVENT.Blur, props.onBlur);
|
|
2339
|
+
};
|
|
2340
|
+
}
|
|
2341
|
+
return;
|
|
2342
|
+
}, [teleBox, props.onBlur]);
|
|
2343
|
+
React.useEffect(() => {
|
|
2344
|
+
if (props.onStateChanged) {
|
|
2345
|
+
teleBox.events.on(exports.TELE_BOX_EVENT.State, props.onStateChanged);
|
|
2346
|
+
return () => {
|
|
2347
|
+
teleBox.events.off(exports.TELE_BOX_EVENT.State, props.onStateChanged);
|
|
2348
|
+
};
|
|
2349
|
+
}
|
|
2350
|
+
return;
|
|
2351
|
+
}, [teleBox, props.onStateChanged]);
|
|
2352
|
+
return /* @__PURE__ */ React__default["default"].createElement("div", {
|
|
2353
|
+
ref: (node) => node && teleBox.render(node),
|
|
2354
|
+
className: teleBox.wrapClassName("box")
|
|
2355
|
+
});
|
|
2356
|
+
};
|
|
2357
|
+
var style$1 = ".telebox-collector {\n user-select: none;\n -webkit-touch-callout: none;\n -webkit-user-select: none;\n visibility: hidden;\n display: block;\n position: absolute;\n z-index: 200;\n width: 40px;\n height: 40px;\n margin: 0;\n padding: 0;\n border: none;\n outline: none;\n font-size: 0;\n border-radius: 50%;\n background: #fff;\n box-shadow: 0px 2px 6px 0px rgba(47, 65, 146, 0.15);\n cursor: pointer;\n user-select: none;\n pointer-events: none;\n background-repeat: no-repeat;\n background-size: 18px 16px;\n background-position: center;\n -webkit-tap-highlight-color: transparent;\n}\n\n.telebox-collector-visible {\n visibility: visible;\n pointer-events: initial;\n}\n\n.telebox-collector-readonly {\n cursor: not-allowed;\n}\n\n.telebox-color-scheme-dark {\n color-scheme: dark;\n}\n\n.telebox-color-scheme-dark.telebox-collector {\n background-color: #43434d;\n}";
|
|
2358
|
+
var collectorSVG = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxOCAxNiI+CiAgICA8ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxwYXRoIHN0cm9rZT0iIzdCODhBMCIgc3Ryb2tlLXdpZHRoPSIxLjQiIGQ9Ik0uNyAxLjJoMTYuNnYxMy42SC43eiIgLz4KICAgICAgICA8cGF0aCBmaWxsPSIjN0I4OEEwIiBkPSJNNCA1LjVoNnYxLjRINHpNNCA5LjVoMTB2MS40SDR6IiAvPgogICAgPC9nPgo8L3N2Zz4K";
|
|
2359
|
+
class TeleBoxCollector {
|
|
2360
|
+
constructor({
|
|
2361
|
+
visible = true,
|
|
2362
|
+
readonly = false,
|
|
2363
|
+
darkMode = false,
|
|
2364
|
+
namespace = "telebox",
|
|
2365
|
+
styles = {},
|
|
2366
|
+
onClick
|
|
2367
|
+
} = {}) {
|
|
2368
|
+
this.handleCollectorClick = () => {
|
|
2369
|
+
if (!this._readonly && this.onClick) {
|
|
2370
|
+
this.onClick();
|
|
2371
|
+
}
|
|
2372
|
+
};
|
|
2373
|
+
this._visible = visible;
|
|
2374
|
+
this._readonly = readonly;
|
|
2375
|
+
this._darkMode = darkMode;
|
|
2376
|
+
this.namespace = namespace;
|
|
2377
|
+
this.styles = styles;
|
|
2378
|
+
this.onClick = onClick;
|
|
2379
|
+
}
|
|
2380
|
+
get visible() {
|
|
2381
|
+
return this._visible;
|
|
2382
|
+
}
|
|
2383
|
+
get readonly() {
|
|
2384
|
+
return this._readonly;
|
|
2385
|
+
}
|
|
2386
|
+
get darkMode() {
|
|
2387
|
+
return this._darkMode;
|
|
2388
|
+
}
|
|
2389
|
+
mount(root) {
|
|
2390
|
+
root.appendChild(this.render());
|
|
2391
|
+
return this;
|
|
2392
|
+
}
|
|
2393
|
+
unmount() {
|
|
2394
|
+
if (this.$collector) {
|
|
2395
|
+
this.$collector.remove();
|
|
2396
|
+
}
|
|
2397
|
+
return this;
|
|
2398
|
+
}
|
|
2399
|
+
setVisible(visible) {
|
|
2400
|
+
if (this._visible !== visible) {
|
|
2401
|
+
this._visible = visible;
|
|
2402
|
+
if (this.$collector) {
|
|
2403
|
+
this.$collector.classList.toggle(this.wrapClassName("collector-visible"), visible);
|
|
2404
|
+
}
|
|
2405
|
+
}
|
|
2406
|
+
return this;
|
|
2407
|
+
}
|
|
2408
|
+
setReadonly(readonly) {
|
|
2409
|
+
if (this._readonly !== readonly) {
|
|
2410
|
+
this._readonly = readonly;
|
|
2411
|
+
if (this.$collector) {
|
|
2412
|
+
this.$collector.classList.toggle(this.wrapClassName("collector-readonly"), readonly);
|
|
2413
|
+
}
|
|
2414
|
+
}
|
|
2415
|
+
return this;
|
|
2416
|
+
}
|
|
2417
|
+
setDarkMode(darkMode) {
|
|
2418
|
+
if (this._darkMode !== darkMode) {
|
|
2419
|
+
this._darkMode = darkMode;
|
|
2420
|
+
if (this.$collector) {
|
|
2421
|
+
this.$collector.classList.toggle(this.wrapClassName("color-scheme-dark"), darkMode);
|
|
2422
|
+
this.$collector.classList.toggle(this.wrapClassName("color-scheme-light"), !darkMode);
|
|
2423
|
+
}
|
|
2424
|
+
}
|
|
2425
|
+
return this;
|
|
2426
|
+
}
|
|
2427
|
+
setStyles(styles) {
|
|
2428
|
+
Object.assign(this.styles, styles);
|
|
2429
|
+
if (this.$collector) {
|
|
2430
|
+
const $collector = this.$collector;
|
|
2431
|
+
Object.keys(styles).forEach((key) => {
|
|
2432
|
+
const value = styles[key];
|
|
2433
|
+
if (value != null) {
|
|
2434
|
+
$collector.style[key] = value;
|
|
2435
|
+
}
|
|
2436
|
+
});
|
|
2437
|
+
}
|
|
2438
|
+
return this;
|
|
2439
|
+
}
|
|
2440
|
+
render() {
|
|
2441
|
+
if (!this.$collector) {
|
|
2442
|
+
this.$collector = document.createElement("button");
|
|
2443
|
+
this.$collector.className = this.wrapClassName("collector");
|
|
2444
|
+
this.$collector.style.backgroundImage = `url('${collectorSVG}')`;
|
|
2445
|
+
this.$collector.addEventListener("click", this.handleCollectorClick);
|
|
2446
|
+
if (this._visible) {
|
|
2447
|
+
this.$collector.classList.add(this.wrapClassName("collector-visible"));
|
|
2448
|
+
}
|
|
2449
|
+
if (this._readonly) {
|
|
2450
|
+
this.$collector.classList.add(this.wrapClassName("collector-readonly"));
|
|
2451
|
+
}
|
|
2452
|
+
this.$collector.classList.add(this.wrapClassName(this._darkMode ? "color-scheme-dark" : "color-scheme-light"));
|
|
2453
|
+
this.setStyles(this.styles);
|
|
2454
|
+
}
|
|
2455
|
+
return this.$collector;
|
|
2456
|
+
}
|
|
2457
|
+
destroy() {
|
|
2458
|
+
if (this.$collector) {
|
|
2459
|
+
this.$collector.removeEventListener("click", this.handleCollectorClick);
|
|
2460
|
+
this.$collector.remove();
|
|
2461
|
+
this.$collector = void 0;
|
|
2462
|
+
}
|
|
2463
|
+
this.onClick = void 0;
|
|
2464
|
+
}
|
|
2465
|
+
wrapClassName(className) {
|
|
2466
|
+
return `${this.namespace}-${className}`;
|
|
2467
|
+
}
|
|
2468
|
+
}
|
|
2469
|
+
exports.TELE_BOX_MANAGER_EVENT = void 0;
|
|
2470
|
+
(function(TELE_BOX_MANAGER_EVENT2) {
|
|
2471
|
+
TELE_BOX_MANAGER_EVENT2["Focused"] = "focused";
|
|
2472
|
+
TELE_BOX_MANAGER_EVENT2["Blurred"] = "blurred";
|
|
2473
|
+
TELE_BOX_MANAGER_EVENT2["Created"] = "created";
|
|
2474
|
+
TELE_BOX_MANAGER_EVENT2["Removed"] = "removed";
|
|
2475
|
+
TELE_BOX_MANAGER_EVENT2["State"] = "state";
|
|
2476
|
+
TELE_BOX_MANAGER_EVENT2["Maximized"] = "maximized";
|
|
2477
|
+
TELE_BOX_MANAGER_EVENT2["Minimized"] = "minimized";
|
|
2478
|
+
TELE_BOX_MANAGER_EVENT2["Move"] = "move";
|
|
2479
|
+
TELE_BOX_MANAGER_EVENT2["Resize"] = "resize";
|
|
2480
|
+
TELE_BOX_MANAGER_EVENT2["IntrinsicMove"] = "intrinsic_move";
|
|
2481
|
+
TELE_BOX_MANAGER_EVENT2["IntrinsicResize"] = "intrinsic_resize";
|
|
2482
|
+
TELE_BOX_MANAGER_EVENT2["VisualResize"] = "visual_resize";
|
|
2483
|
+
TELE_BOX_MANAGER_EVENT2["ZIndex"] = "z_index";
|
|
2484
|
+
TELE_BOX_MANAGER_EVENT2["PrefersColorScheme"] = "prefers_color_scheme";
|
|
2485
|
+
TELE_BOX_MANAGER_EVENT2["DarkMode"] = "dark_mode";
|
|
2486
|
+
})(exports.TELE_BOX_MANAGER_EVENT || (exports.TELE_BOX_MANAGER_EVENT = {}));
|
|
2487
|
+
var style = ".telebox-max-titlebar {\n user-select: none;\n -webkit-touch-callout: none;\n -webkit-user-select: none;\n display: none;\n position: absolute;\n top: 0;\n left: 0;\n z-index: 50000;\n}\n.telebox-max-titlebar .telebox-title {\n display: none;\n}\n.telebox-max-titlebar.telebox-max-titlebar-single-title .telebox-titles {\n display: none;\n}\n.telebox-max-titlebar.telebox-max-titlebar-single-title .telebox-title {\n display: block;\n}\n.telebox-max-titlebar-maximized {\n display: flex;\n}\n.telebox-titles {\n height: 100%;\n margin: 0;\n overflow-y: hidden;\n overflow-x: scroll;\n overflow-x: overlay;\n -webkit-overflow-scrolling: touch;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n scrollbar-width: auto;\n}\n.telebox-titles::-webkit-scrollbar {\n height: 8px;\n width: 8px;\n}\n.telebox-titles::-webkit-scrollbar-track {\n background-color: transparent;\n}\n.telebox-titles::-webkit-scrollbar-thumb {\n background-color: rgba(238, 238, 247, 0.8);\n background-color: transparent;\n border-radius: 4px;\n transition: background-color 0.4s;\n}\n.telebox-titles:hover::-webkit-scrollbar-thumb {\n background-color: rgba(238, 238, 247, 0.8);\n}\n.telebox-titles::-webkit-scrollbar-thumb:hover {\n background-color: #eeeef7;\n}\n.telebox-titles::-webkit-scrollbar-thumb:active {\n background-color: #eeeef7;\n}\n.telebox-titles::-webkit-scrollbar-thumb:vertical {\n min-height: 50px;\n}\n.telebox-titles::-webkit-scrollbar-thumb:horizontal {\n min-width: 50px;\n}\n.telebox-titles-content {\n height: 100%;\n display: flex;\n flex-wrap: nowrap;\n align-items: center;\n padding: 0;\n}\n.telebox-titles-tab {\n height: 100%;\n overflow: hidden;\n max-width: 182px;\n min-width: 50px;\n padding: 0 26px 0 16px;\n outline: none;\n font-size: 13px;\n font-family: PingFangSC-Regular, PingFang SC;\n font-weight: 400;\n text-overflow: ellipsis;\n white-space: nowrap;\n word-break: keep-all;\n border: none;\n border-right: 1px solid #e5e5f0;\n color: #7b88a0;\n background: transparent;\n cursor: pointer;\n user-select: none;\n}\n.telebox-titles-tab-focus {\n color: #357bf6;\n}\n.telebox-readonly .telebox-titles-tab {\n cursor: not-allowed;\n}\n.telebox-color-scheme-dark {\n color-scheme: dark;\n}\n.telebox-color-scheme-dark.telebox-titlebar {\n color: #e9e9e9;\n background: #43434d;\n border-bottom: none;\n}\n.telebox-color-scheme-dark .telebox-titles-tab {\n border-right-color: #7b88a0;\n}\n.telebox-color-scheme-dark .telebox-title {\n color: #e9e9e9;\n}";
|
|
2488
|
+
class MaxTitleBar extends DefaultTitleBar {
|
|
2489
|
+
constructor(config) {
|
|
2490
|
+
super(config);
|
|
2491
|
+
this.boxes = config.boxes;
|
|
2492
|
+
this.focusedBox = config.focusedBox;
|
|
2493
|
+
this.containerRect = config.containerRect;
|
|
2494
|
+
this.darkMode = config.darkMode;
|
|
2495
|
+
}
|
|
2496
|
+
focusBox(box) {
|
|
2497
|
+
var _a;
|
|
2498
|
+
if (this.focusedBox && this.focusedBox === box) {
|
|
2499
|
+
return;
|
|
2500
|
+
}
|
|
2501
|
+
if (this.$titles && this.state === exports.TELE_BOX_STATE.Maximized) {
|
|
2502
|
+
const { children } = this.$titles.firstElementChild;
|
|
2503
|
+
for (let i2 = children.length - 1; i2 >= 0; i2 -= 1) {
|
|
2504
|
+
const $tab = children[i2];
|
|
2505
|
+
const id = (_a = $tab.dataset) == null ? void 0 : _a.teleBoxID;
|
|
2506
|
+
if (id) {
|
|
2507
|
+
if (box && id === box.id) {
|
|
2508
|
+
$tab.classList.toggle(this.wrapClassName("titles-tab-focus"), true);
|
|
2509
|
+
} else if (this.focusedBox && id === this.focusedBox.id) {
|
|
2510
|
+
$tab.classList.toggle(this.wrapClassName("titles-tab-focus"), false);
|
|
2511
|
+
}
|
|
2512
|
+
}
|
|
2513
|
+
}
|
|
2514
|
+
}
|
|
2515
|
+
this.focusedBox = box;
|
|
2516
|
+
}
|
|
2517
|
+
setContainerRect(rect) {
|
|
2518
|
+
this.containerRect = rect;
|
|
2519
|
+
if (this.$titleBar) {
|
|
2520
|
+
const { x, y, width } = rect;
|
|
2521
|
+
this.$titleBar.style.transform = `translate(${x}px, ${y}px)`;
|
|
2522
|
+
this.$titleBar.style.width = width + "px";
|
|
2523
|
+
}
|
|
2524
|
+
}
|
|
2525
|
+
setBoxes(boxes) {
|
|
2526
|
+
this.boxes = boxes;
|
|
2527
|
+
this.updateTitles();
|
|
2528
|
+
}
|
|
2529
|
+
setState(state) {
|
|
2530
|
+
super.setState(state);
|
|
2531
|
+
if (this.$titleBar) {
|
|
2532
|
+
this.$titleBar.classList.toggle(this.wrapClassName("max-titlebar-maximized"), state === exports.TELE_BOX_STATE.Maximized);
|
|
2533
|
+
}
|
|
2534
|
+
this.updateTitles();
|
|
2535
|
+
}
|
|
2536
|
+
setReadonly(readonly) {
|
|
2537
|
+
super.setReadonly(readonly);
|
|
2538
|
+
if (this.$titleBar) {
|
|
2539
|
+
this.$titleBar.classList.toggle(this.wrapClassName("readonly"), this.readonly);
|
|
2540
|
+
}
|
|
2541
|
+
}
|
|
2542
|
+
setDarkMode(darkMode) {
|
|
2543
|
+
if (darkMode !== this.darkMode) {
|
|
2544
|
+
this.darkMode = darkMode;
|
|
2545
|
+
if (this.$titleBar) {
|
|
2546
|
+
this.$titleBar.classList.toggle(this.wrapClassName("color-scheme-dark"), darkMode);
|
|
2547
|
+
this.$titleBar.classList.toggle(this.wrapClassName("color-scheme-light"), !darkMode);
|
|
2548
|
+
}
|
|
2549
|
+
}
|
|
2550
|
+
}
|
|
2551
|
+
render() {
|
|
2552
|
+
const $titleBar = super.render();
|
|
2553
|
+
const { x, y, width } = this.containerRect;
|
|
2554
|
+
$titleBar.style.transform = `translate(${x}px, ${y}px)`;
|
|
2555
|
+
$titleBar.style.width = width + "px";
|
|
2556
|
+
$titleBar.classList.add(this.wrapClassName("max-titlebar"));
|
|
2557
|
+
$titleBar.classList.toggle(this.wrapClassName("max-titlebar-maximized"), this.state === exports.TELE_BOX_STATE.Maximized);
|
|
2558
|
+
$titleBar.classList.toggle(this.wrapClassName("readonly"), this.readonly);
|
|
2559
|
+
$titleBar.classList.add(this.wrapClassName(this.darkMode ? "color-scheme-dark" : "color-scheme-light"));
|
|
2560
|
+
const $titlesArea = document.createElement("div");
|
|
2561
|
+
$titlesArea.classList.add(this.wrapClassName("titles-area"));
|
|
2562
|
+
$titleBar.insertBefore($titlesArea, $titleBar.firstElementChild);
|
|
2563
|
+
this.updateTitles();
|
|
2564
|
+
return $titleBar;
|
|
2565
|
+
}
|
|
2566
|
+
destroy() {
|
|
2567
|
+
super.destroy();
|
|
2568
|
+
this.$titles = void 0;
|
|
2569
|
+
this.boxes.length = 0;
|
|
2570
|
+
this.focusedBox = void 0;
|
|
2571
|
+
}
|
|
2572
|
+
updateTitles() {
|
|
2573
|
+
if (this.$titleBar && this.state === exports.TELE_BOX_STATE.Maximized) {
|
|
2574
|
+
this.$titleBar.classList.toggle(this.wrapClassName("max-titlebar-single-title"), this.boxes.length === 1);
|
|
2575
|
+
if (this.boxes.length === 1) {
|
|
2576
|
+
this.setTitle(this.boxes[0].title);
|
|
2577
|
+
} else {
|
|
2578
|
+
this.$titleBar.replaceChild(this.renderTitles(), this.$titleBar.firstElementChild);
|
|
2579
|
+
}
|
|
2580
|
+
}
|
|
2581
|
+
}
|
|
2582
|
+
renderTitles() {
|
|
2583
|
+
this.$titles = document.createElement("div");
|
|
2584
|
+
this.$titles.className = this.wrapClassName("titles");
|
|
2585
|
+
this.$titles.addEventListener("wheel", (ev) => {
|
|
2586
|
+
ev.currentTarget.scrollBy({
|
|
2587
|
+
left: ev.deltaY > 0 ? 250 : -250,
|
|
2588
|
+
behavior: "smooth"
|
|
2589
|
+
});
|
|
2590
|
+
}, { passive: false });
|
|
2591
|
+
const $content = document.createElement("div");
|
|
2592
|
+
$content.className = this.wrapClassName("titles-content");
|
|
2593
|
+
this.$titles.appendChild($content);
|
|
2594
|
+
this.boxes.forEach((box) => {
|
|
2595
|
+
const $tab = document.createElement("button");
|
|
2596
|
+
$tab.className = this.wrapClassName("titles-tab");
|
|
2597
|
+
$tab.textContent = box.title;
|
|
2598
|
+
$tab.dataset.teleBoxID = box.id;
|
|
2599
|
+
$tab.dataset.teleTitleBarNoDblClick = "true";
|
|
2600
|
+
if (this.focusedBox && box.id === this.focusedBox.id) {
|
|
2601
|
+
$tab.classList.add(this.wrapClassName("titles-tab-focus"));
|
|
2602
|
+
}
|
|
2603
|
+
$content.appendChild($tab);
|
|
2604
|
+
});
|
|
2605
|
+
return this.$titles;
|
|
2606
|
+
}
|
|
2607
|
+
}
|
|
2608
|
+
class TeleBoxManager {
|
|
2609
|
+
constructor({
|
|
2610
|
+
root = document.body,
|
|
2611
|
+
prefersColorScheme = exports.TELE_BOX_COLOR_SCHEME.Light,
|
|
2612
|
+
minimized = false,
|
|
2613
|
+
maximized = false,
|
|
2614
|
+
fence = true,
|
|
2615
|
+
containerRect = {
|
|
2616
|
+
x: 0,
|
|
2617
|
+
y: 0,
|
|
2618
|
+
width: window.innerWidth,
|
|
2619
|
+
height: window.innerHeight
|
|
2620
|
+
},
|
|
2621
|
+
collector,
|
|
2622
|
+
namespace = "telebox",
|
|
2623
|
+
readonly = false
|
|
2624
|
+
} = {}) {
|
|
2625
|
+
this.events = new EventEmitter();
|
|
2626
|
+
this._sideEffect = new o();
|
|
2627
|
+
const { combine, createVal } = c(this._sideEffect);
|
|
2628
|
+
this.root = root;
|
|
2629
|
+
this.namespace = namespace;
|
|
2630
|
+
this.boxes$ = createVal([]);
|
|
2631
|
+
this.topBox$ = this.boxes$.derive((boxes) => {
|
|
2632
|
+
if (boxes.length > 0) {
|
|
2633
|
+
const topBox = boxes.reduce((topBox2, box) => topBox2.zIndex > box.zIndex ? topBox2 : box);
|
|
2634
|
+
return topBox;
|
|
2635
|
+
}
|
|
2636
|
+
return;
|
|
2637
|
+
});
|
|
2638
|
+
const prefersDark = window.matchMedia("(prefers-color-scheme: dark)");
|
|
2639
|
+
const prefersDark$ = createVal(false);
|
|
2640
|
+
if (prefersDark) {
|
|
2641
|
+
prefersDark$.setValue(prefersDark.matches);
|
|
2642
|
+
this._sideEffect.add(() => {
|
|
2643
|
+
const handler = (evt) => {
|
|
2644
|
+
prefersDark$.setValue(evt.matches);
|
|
2645
|
+
};
|
|
2646
|
+
prefersDark.addListener(handler);
|
|
2647
|
+
return () => prefersDark.removeListener(handler);
|
|
2648
|
+
});
|
|
2649
|
+
}
|
|
2650
|
+
const prefersColorScheme$ = createVal(prefersColorScheme);
|
|
2651
|
+
prefersColorScheme$.reaction((prefersColorScheme2, _, skipUpdate) => {
|
|
2652
|
+
this.boxes.forEach((box) => box.setPrefersColorScheme(prefersColorScheme2, skipUpdate));
|
|
2653
|
+
if (!skipUpdate) {
|
|
2654
|
+
this.events.emit(exports.TELE_BOX_MANAGER_EVENT.PrefersColorScheme, prefersColorScheme2);
|
|
2655
|
+
}
|
|
2656
|
+
});
|
|
2657
|
+
this._darkMode$ = combine([prefersDark$, prefersColorScheme$], ([prefersDark2, prefersColorScheme2]) => prefersColorScheme2 === "auto" ? prefersDark2 : prefersColorScheme2 === "dark");
|
|
2658
|
+
this._darkMode$.reaction((darkMode, _, skipUpdate) => {
|
|
2659
|
+
this.boxes.forEach((box) => box.setDarkMode(darkMode, skipUpdate));
|
|
2660
|
+
if (!skipUpdate) {
|
|
2661
|
+
this.events.emit(exports.TELE_BOX_MANAGER_EVENT.DarkMode, darkMode);
|
|
2662
|
+
}
|
|
2663
|
+
});
|
|
2664
|
+
const readonly$ = createVal(readonly);
|
|
2665
|
+
readonly$.reaction((readonly2, _, skipUpdate) => {
|
|
2666
|
+
this.boxes.forEach((box) => box.setReadonly(readonly2, skipUpdate));
|
|
2667
|
+
});
|
|
2668
|
+
const minimized$ = createVal(minimized);
|
|
2669
|
+
const maximized$ = createVal(maximized);
|
|
2670
|
+
maximized$.reaction((maximized2, _, skipUpdate) => {
|
|
2671
|
+
this.boxes.forEach((box) => box.setMaximized(maximized2, skipUpdate));
|
|
2672
|
+
if (!skipUpdate) {
|
|
2673
|
+
this.events.emit(exports.TELE_BOX_MANAGER_EVENT.Maximized, maximized2);
|
|
2674
|
+
}
|
|
2675
|
+
});
|
|
2676
|
+
const state$ = combine([minimized$, maximized$], ([minimized2, maximized2]) => minimized2 ? exports.TELE_BOX_STATE.Minimized : maximized2 ? exports.TELE_BOX_STATE.Maximized : exports.TELE_BOX_STATE.Normal);
|
|
2677
|
+
state$.reaction((state, _, skipUpdate) => {
|
|
2678
|
+
this.maxTitleBar.setState(state);
|
|
2679
|
+
if (!skipUpdate) {
|
|
2680
|
+
this.events.emit(exports.TELE_BOX_MANAGER_EVENT.State, state);
|
|
2681
|
+
}
|
|
2682
|
+
});
|
|
2683
|
+
const fence$ = createVal(fence);
|
|
2684
|
+
fence$.subscribe((fence2, _, skipUpdate) => {
|
|
2685
|
+
this.boxes.forEach((box) => box.setFence(fence2, skipUpdate));
|
|
2686
|
+
});
|
|
2687
|
+
const containerRect$ = createVal(containerRect, shallowequal);
|
|
2688
|
+
containerRect$.reaction((containerRect2, _, skipUpdate) => {
|
|
2689
|
+
this.boxes.forEach((box) => box.setContainerRect(containerRect2, skipUpdate));
|
|
2690
|
+
this.maxTitleBar.setContainerRect(containerRect2);
|
|
2691
|
+
});
|
|
2692
|
+
const collector$ = createVal(collector === null ? null : collector || new TeleBoxCollector({
|
|
2693
|
+
visible: minimized,
|
|
2694
|
+
readonly,
|
|
2695
|
+
namespace
|
|
2696
|
+
}).mount(root));
|
|
2697
|
+
collector$.subscribe((collector2) => {
|
|
2698
|
+
if (collector2) {
|
|
2699
|
+
collector2.setVisible(minimized$.value);
|
|
2700
|
+
collector2.setReadonly(readonly$.value);
|
|
2701
|
+
collector2.setDarkMode(this._darkMode$.value);
|
|
2702
|
+
this._sideEffect.add(() => {
|
|
2703
|
+
collector2.onClick = () => {
|
|
2704
|
+
if (!readonly$.value) {
|
|
2705
|
+
minimized$.setValue(false);
|
|
2706
|
+
}
|
|
2707
|
+
};
|
|
2708
|
+
return () => collector2.destroy();
|
|
2709
|
+
}, "collect-onClick");
|
|
2710
|
+
}
|
|
2711
|
+
});
|
|
2712
|
+
readonly$.subscribe((readonly2) => {
|
|
2713
|
+
var _a;
|
|
2714
|
+
return (_a = collector$.value) == null ? void 0 : _a.setReadonly(readonly2);
|
|
2715
|
+
});
|
|
2716
|
+
this._darkMode$.subscribe((darkMode) => {
|
|
2717
|
+
var _a;
|
|
2718
|
+
(_a = collector$.value) == null ? void 0 : _a.setDarkMode(darkMode);
|
|
2719
|
+
});
|
|
2720
|
+
const calcCollectorRect = () => {
|
|
2721
|
+
var _a;
|
|
2722
|
+
if ((_a = collector$.value) == null ? void 0 : _a.$collector) {
|
|
2723
|
+
const { x, y, width, height } = collector$.value.$collector.getBoundingClientRect();
|
|
2724
|
+
const rootRect = this.root.getBoundingClientRect();
|
|
2725
|
+
return {
|
|
2726
|
+
x: x - rootRect.x,
|
|
2727
|
+
y: y - rootRect.y,
|
|
2728
|
+
width,
|
|
2729
|
+
height
|
|
2730
|
+
};
|
|
2731
|
+
}
|
|
2732
|
+
return;
|
|
2733
|
+
};
|
|
2734
|
+
const collectorRect$ = createVal(minimized$.value ? calcCollectorRect() : void 0);
|
|
2735
|
+
collectorRect$.subscribe((collectorRect, _, skipUpdate) => {
|
|
2736
|
+
this.boxes.forEach((box) => {
|
|
2737
|
+
box.setCollectorRect(collectorRect, skipUpdate);
|
|
2738
|
+
});
|
|
2739
|
+
});
|
|
2740
|
+
minimized$.subscribe((minimized2, _, skipUpdate) => {
|
|
2741
|
+
var _a, _b;
|
|
2742
|
+
(_a = collector$.value) == null ? void 0 : _a.setVisible(minimized2);
|
|
2743
|
+
if (minimized2) {
|
|
2744
|
+
if ((_b = collector$.value) == null ? void 0 : _b.$collector) {
|
|
2745
|
+
collectorRect$.setValue(calcCollectorRect());
|
|
2746
|
+
}
|
|
2747
|
+
}
|
|
2748
|
+
this.boxes.forEach((box) => box.setMinimized(minimized2, skipUpdate));
|
|
2749
|
+
if (!skipUpdate) {
|
|
2750
|
+
this.events.emit(exports.TELE_BOX_MANAGER_EVENT.Minimized, minimized2);
|
|
2751
|
+
}
|
|
2752
|
+
});
|
|
2753
|
+
const closeBtnClassName = this.wrapClassName("titlebar-icon-close");
|
|
2754
|
+
const checkFocusBox = (ev) => {
|
|
2755
|
+
var _a;
|
|
2756
|
+
if (readonly$.value) {
|
|
2757
|
+
return;
|
|
2758
|
+
}
|
|
2759
|
+
const target = ev.target;
|
|
2760
|
+
if (!target.tagName) {
|
|
2761
|
+
return;
|
|
2762
|
+
}
|
|
2763
|
+
for (let el = target; el; el = el.parentElement) {
|
|
2764
|
+
if (el.classList && el.classList.contains(closeBtnClassName)) {
|
|
2765
|
+
return;
|
|
2766
|
+
}
|
|
2767
|
+
const id = (_a = el.dataset) == null ? void 0 : _a.teleBoxID;
|
|
2768
|
+
if (id) {
|
|
2769
|
+
const box = this.getBox(id);
|
|
2770
|
+
if (box) {
|
|
2771
|
+
this.focusBox(box);
|
|
2772
|
+
this.makeBoxTop(box);
|
|
2773
|
+
return;
|
|
2774
|
+
}
|
|
2775
|
+
}
|
|
2776
|
+
}
|
|
2777
|
+
};
|
|
2778
|
+
this._sideEffect.addEventListener(window, "mousedown", checkFocusBox, true);
|
|
2779
|
+
this._sideEffect.addEventListener(window, "touchstart", checkFocusBox, true);
|
|
2780
|
+
this.maxTitleBar = new MaxTitleBar({
|
|
2781
|
+
darkMode: this.darkMode,
|
|
2782
|
+
readonly: readonly$.value,
|
|
2783
|
+
namespace: this.namespace,
|
|
2784
|
+
state: state$.value,
|
|
2785
|
+
boxes: this.boxes$.value,
|
|
2786
|
+
containerRect: containerRect$.value,
|
|
2787
|
+
onEvent: (event) => {
|
|
2788
|
+
switch (event.type) {
|
|
2789
|
+
case exports.TELE_BOX_DELEGATE_EVENT.Maximize: {
|
|
2790
|
+
maximized$.setValue(!maximized$.value);
|
|
2791
|
+
break;
|
|
2792
|
+
}
|
|
2793
|
+
case exports.TELE_BOX_DELEGATE_EVENT.Minimize: {
|
|
2794
|
+
minimized$.setValue(true);
|
|
2795
|
+
break;
|
|
2796
|
+
}
|
|
2797
|
+
case exports.TELE_BOX_EVENT.Close: {
|
|
2798
|
+
this.removeTopBox();
|
|
2799
|
+
this.focusTopBox();
|
|
2800
|
+
break;
|
|
2801
|
+
}
|
|
2802
|
+
}
|
|
2803
|
+
}
|
|
2804
|
+
});
|
|
2805
|
+
readonly$.subscribe((readonly2) => this.maxTitleBar.setReadonly(readonly2));
|
|
2806
|
+
this._darkMode$.subscribe((darkMode) => {
|
|
2807
|
+
this.maxTitleBar.setDarkMode(darkMode);
|
|
2808
|
+
});
|
|
2809
|
+
this.boxes$.reaction((boxes) => {
|
|
2810
|
+
this.maxTitleBar.setBoxes(boxes);
|
|
2811
|
+
});
|
|
2812
|
+
const valConfig = {
|
|
2813
|
+
prefersColorScheme: prefersColorScheme$,
|
|
2814
|
+
containerRect: containerRect$,
|
|
2815
|
+
collector: collector$,
|
|
2816
|
+
collectorRect: collectorRect$,
|
|
2817
|
+
readonly: readonly$,
|
|
2818
|
+
fence: fence$,
|
|
2819
|
+
minimized: minimized$,
|
|
2820
|
+
maximized: maximized$
|
|
2821
|
+
};
|
|
2822
|
+
i(this, valConfig);
|
|
2823
|
+
this._state$ = state$;
|
|
2824
|
+
this.root.appendChild(this.maxTitleBar.render());
|
|
2825
|
+
}
|
|
2826
|
+
get boxes() {
|
|
2827
|
+
return this.boxes$.value;
|
|
2828
|
+
}
|
|
2829
|
+
get topBox() {
|
|
2830
|
+
return this.topBox$.value;
|
|
2831
|
+
}
|
|
2832
|
+
get darkMode() {
|
|
2833
|
+
return this._darkMode$.value;
|
|
2834
|
+
}
|
|
2835
|
+
get state() {
|
|
2836
|
+
return this._state$.value;
|
|
2837
|
+
}
|
|
2838
|
+
setState(state, skipUpdate = false) {
|
|
2839
|
+
switch (state) {
|
|
2840
|
+
case exports.TELE_BOX_STATE.Maximized: {
|
|
2841
|
+
this.setMinimized(false, skipUpdate);
|
|
2842
|
+
this.setMaximized(true, skipUpdate);
|
|
2843
|
+
break;
|
|
2844
|
+
}
|
|
2845
|
+
case exports.TELE_BOX_STATE.Minimized: {
|
|
2846
|
+
this.setMinimized(true, skipUpdate);
|
|
2847
|
+
this.setMaximized(false, skipUpdate);
|
|
2848
|
+
break;
|
|
2849
|
+
}
|
|
2850
|
+
default: {
|
|
2851
|
+
this.setMinimized(false, skipUpdate);
|
|
2852
|
+
this.setMaximized(false, skipUpdate);
|
|
2853
|
+
break;
|
|
2854
|
+
}
|
|
2855
|
+
}
|
|
2856
|
+
return this;
|
|
2857
|
+
}
|
|
2858
|
+
create(config = {}, smartPosition = true) {
|
|
2859
|
+
const box = new TeleBox(__spreadProps(__spreadValues({
|
|
2860
|
+
zIndex: this.topBox ? this.topBox.zIndex + 1 : 100
|
|
2861
|
+
}, smartPosition ? this.smartPosition(config) : config), {
|
|
2862
|
+
darkMode: this.darkMode,
|
|
2863
|
+
prefersColorScheme: this.prefersColorScheme,
|
|
2864
|
+
maximized: this.maximized,
|
|
2865
|
+
minimized: this.minimized,
|
|
2866
|
+
fence: this.fence,
|
|
2867
|
+
namespace: this.namespace,
|
|
2868
|
+
containerRect: this.containerRect,
|
|
2869
|
+
readonly: this.readonly,
|
|
2870
|
+
collectorRect: this.collectorRect
|
|
2871
|
+
}));
|
|
2872
|
+
box.mount(this.root);
|
|
2873
|
+
if (box.focus) {
|
|
2874
|
+
this.focusBox(box);
|
|
2875
|
+
if (smartPosition) {
|
|
2876
|
+
this.makeBoxTop(box);
|
|
2877
|
+
}
|
|
2878
|
+
}
|
|
2879
|
+
this.boxes$.setValue([...this.boxes, box]);
|
|
2880
|
+
box._delegateEvents.on(exports.TELE_BOX_DELEGATE_EVENT.Maximize, () => {
|
|
2881
|
+
this.setMaximized(!this.maximized);
|
|
2882
|
+
});
|
|
2883
|
+
box._delegateEvents.on(exports.TELE_BOX_DELEGATE_EVENT.Minimize, () => {
|
|
2884
|
+
this.setMinimized(true);
|
|
2885
|
+
});
|
|
2886
|
+
box._delegateEvents.on(exports.TELE_BOX_DELEGATE_EVENT.Close, () => {
|
|
2887
|
+
this.remove(box);
|
|
2888
|
+
this.focusTopBox();
|
|
2889
|
+
});
|
|
2890
|
+
box._coord$.reaction((_, __, skipUpdate) => {
|
|
2891
|
+
if (!skipUpdate) {
|
|
2892
|
+
this.events.emit(exports.TELE_BOX_MANAGER_EVENT.Move, box);
|
|
2893
|
+
}
|
|
2894
|
+
});
|
|
2895
|
+
box._size$.reaction((_, __, skipUpdate) => {
|
|
2896
|
+
if (!skipUpdate) {
|
|
2897
|
+
this.events.emit(exports.TELE_BOX_MANAGER_EVENT.Resize, box);
|
|
2898
|
+
}
|
|
2899
|
+
});
|
|
2900
|
+
box._intrinsicCoord$.reaction((_, __, skipUpdate) => {
|
|
2901
|
+
if (!skipUpdate) {
|
|
2902
|
+
this.events.emit(exports.TELE_BOX_MANAGER_EVENT.IntrinsicMove, box);
|
|
2903
|
+
}
|
|
2904
|
+
});
|
|
2905
|
+
box._intrinsicSize$.reaction((_, __, skipUpdate) => {
|
|
2906
|
+
if (!skipUpdate) {
|
|
2907
|
+
this.events.emit(exports.TELE_BOX_MANAGER_EVENT.IntrinsicResize, box);
|
|
2908
|
+
}
|
|
2909
|
+
});
|
|
2910
|
+
box._visualSize$.reaction((_, __, skipUpdate) => {
|
|
2911
|
+
if (!skipUpdate) {
|
|
2912
|
+
this.events.emit(exports.TELE_BOX_MANAGER_EVENT.VisualResize, box);
|
|
2913
|
+
}
|
|
2914
|
+
});
|
|
2915
|
+
box._zIndex$.reaction((_, __, skipUpdate) => {
|
|
2916
|
+
if (this.boxes.length > 0) {
|
|
2917
|
+
const topBox = this.boxes.reduce((topBox2, box2) => topBox2.zIndex > box2.zIndex ? topBox2 : box2);
|
|
2918
|
+
this.topBox$.setValue(topBox);
|
|
2919
|
+
}
|
|
2920
|
+
if (!skipUpdate) {
|
|
2921
|
+
this.events.emit(exports.TELE_BOX_MANAGER_EVENT.ZIndex, box);
|
|
2922
|
+
}
|
|
2923
|
+
});
|
|
2924
|
+
this.events.emit(exports.TELE_BOX_MANAGER_EVENT.Created, box);
|
|
2925
|
+
return box;
|
|
2926
|
+
}
|
|
2927
|
+
query(config) {
|
|
2928
|
+
return config ? this.boxes.filter(this.teleBoxMatcher(config)) : [...this.boxes];
|
|
2929
|
+
}
|
|
2930
|
+
queryOne(config) {
|
|
2931
|
+
return config ? this.boxes.find(this.teleBoxMatcher(config)) : this.boxes[0];
|
|
2932
|
+
}
|
|
2933
|
+
update(boxID, config, skipUpdate = false) {
|
|
2934
|
+
const box = this.boxes.find((box2) => box2.id === boxID);
|
|
2935
|
+
if (box) {
|
|
2936
|
+
return this.updateBox(box, config, skipUpdate);
|
|
2937
|
+
}
|
|
2938
|
+
}
|
|
2939
|
+
updateAll(config, skipUpdate = false) {
|
|
2940
|
+
this.boxes.forEach((box) => {
|
|
2941
|
+
this.updateBox(box, config, skipUpdate);
|
|
2942
|
+
});
|
|
2943
|
+
}
|
|
2944
|
+
remove(boxOrID, skipUpdate = false) {
|
|
2945
|
+
const index2 = this.getBoxIndex(boxOrID);
|
|
2946
|
+
if (index2 >= 0) {
|
|
2947
|
+
const boxes = this.boxes.slice();
|
|
2948
|
+
const deletedBoxes = boxes.splice(index2, 1);
|
|
2949
|
+
this.boxes$.setValue(boxes);
|
|
2950
|
+
deletedBoxes.forEach((box) => box.destroy());
|
|
2951
|
+
if (!skipUpdate) {
|
|
2952
|
+
if (this.boxes.length <= 0) {
|
|
2953
|
+
this.setMaximized(false);
|
|
2954
|
+
this.setMinimized(false);
|
|
2955
|
+
}
|
|
2956
|
+
this.events.emit(exports.TELE_BOX_MANAGER_EVENT.Removed, deletedBoxes);
|
|
2957
|
+
}
|
|
2958
|
+
return deletedBoxes[0];
|
|
2959
|
+
}
|
|
2960
|
+
return;
|
|
2961
|
+
}
|
|
2962
|
+
removeTopBox() {
|
|
2963
|
+
if (this.topBox) {
|
|
2964
|
+
return this.remove(this.topBox);
|
|
2965
|
+
}
|
|
2966
|
+
return;
|
|
2967
|
+
}
|
|
2968
|
+
removeAll(skipUpdate = false) {
|
|
2969
|
+
const deletedBoxes = this.boxes$.value;
|
|
2970
|
+
this.boxes$.setValue([]);
|
|
2971
|
+
deletedBoxes.forEach((box) => box.destroy());
|
|
2972
|
+
if (!skipUpdate) {
|
|
2973
|
+
if (this.boxes.length <= 0) {
|
|
2974
|
+
this.setMaximized(false);
|
|
2975
|
+
this.setMinimized(false);
|
|
2976
|
+
}
|
|
2977
|
+
this.events.emit(exports.TELE_BOX_MANAGER_EVENT.Removed, deletedBoxes);
|
|
2978
|
+
}
|
|
2979
|
+
return deletedBoxes;
|
|
2980
|
+
}
|
|
2981
|
+
destroy(skipUpdate = false) {
|
|
2982
|
+
this.events.removeAllListeners();
|
|
2983
|
+
this._sideEffect.flushAll();
|
|
2984
|
+
this.removeAll(skipUpdate);
|
|
2985
|
+
Object.keys(this).forEach((key) => {
|
|
2986
|
+
const value = this[key];
|
|
2987
|
+
if (value instanceof r) {
|
|
2988
|
+
value.destroy();
|
|
2989
|
+
}
|
|
2990
|
+
});
|
|
2991
|
+
}
|
|
2992
|
+
wrapClassName(className) {
|
|
2993
|
+
return `${this.namespace}-${className}`;
|
|
2994
|
+
}
|
|
2995
|
+
focusBox(boxOrID, skipUpdate = false) {
|
|
2996
|
+
const targetBox = this.getBox(boxOrID);
|
|
2997
|
+
if (targetBox) {
|
|
2998
|
+
this.boxes.forEach((box) => {
|
|
2999
|
+
if (targetBox === box) {
|
|
3000
|
+
let focusChanged = false;
|
|
3001
|
+
if (!targetBox.focus) {
|
|
3002
|
+
focusChanged = true;
|
|
3003
|
+
targetBox.setFocus(true, skipUpdate);
|
|
3004
|
+
}
|
|
3005
|
+
if (focusChanged && !skipUpdate) {
|
|
3006
|
+
this.events.emit(exports.TELE_BOX_MANAGER_EVENT.Focused, targetBox);
|
|
3007
|
+
}
|
|
3008
|
+
} else if (box.focus) {
|
|
3009
|
+
this.blurBox(box, skipUpdate);
|
|
3010
|
+
}
|
|
3011
|
+
});
|
|
3012
|
+
this.maxTitleBar.focusBox(targetBox);
|
|
3013
|
+
}
|
|
3014
|
+
}
|
|
3015
|
+
focusTopBox() {
|
|
3016
|
+
if (this.topBox && !this.topBox.focus) {
|
|
3017
|
+
return this.focusBox(this.topBox);
|
|
3018
|
+
}
|
|
3019
|
+
}
|
|
3020
|
+
blurBox(boxOrID, skipUpdate = false) {
|
|
3021
|
+
const targetBox = this.getBox(boxOrID);
|
|
3022
|
+
if (targetBox) {
|
|
3023
|
+
if (targetBox.focus) {
|
|
3024
|
+
targetBox.setFocus(false, skipUpdate);
|
|
3025
|
+
if (!skipUpdate) {
|
|
3026
|
+
this.events.emit(exports.TELE_BOX_MANAGER_EVENT.Blurred, targetBox);
|
|
3027
|
+
}
|
|
3028
|
+
}
|
|
3029
|
+
if (this.maxTitleBar.focusedBox === targetBox) {
|
|
3030
|
+
this.maxTitleBar.focusBox();
|
|
3031
|
+
}
|
|
3032
|
+
}
|
|
3033
|
+
}
|
|
3034
|
+
blurAll(skipUpdate = false) {
|
|
3035
|
+
this.boxes.forEach((box) => {
|
|
3036
|
+
if (box.focus) {
|
|
3037
|
+
box.setFocus(false, skipUpdate);
|
|
3038
|
+
if (!skipUpdate) {
|
|
3039
|
+
this.events.emit(exports.TELE_BOX_MANAGER_EVENT.Blurred, box);
|
|
3040
|
+
}
|
|
3041
|
+
}
|
|
3042
|
+
});
|
|
3043
|
+
if (this.maxTitleBar.focusedBox) {
|
|
3044
|
+
this.maxTitleBar.focusBox();
|
|
3045
|
+
}
|
|
3046
|
+
}
|
|
3047
|
+
teleBoxMatcher(config) {
|
|
3048
|
+
const keys = Object.keys(config);
|
|
3049
|
+
return (box) => keys.every((key) => config[key] === box[key]);
|
|
3050
|
+
}
|
|
3051
|
+
updateBox(box, config, skipUpdate = false) {
|
|
3052
|
+
if (config.x != null || config.y != null) {
|
|
3053
|
+
box.move(config.x == null ? box.intrinsicX : config.x, config.y == null ? box.intrinsicY : config.y, skipUpdate);
|
|
3054
|
+
}
|
|
3055
|
+
if (config.width != null || config.height != null) {
|
|
3056
|
+
box.resize(config.width == null ? box.intrinsicWidth : config.width, config.height == null ? box.intrinsicHeight : config.height, skipUpdate);
|
|
3057
|
+
}
|
|
3058
|
+
if (config.title != null) {
|
|
3059
|
+
box.setTitle(config.title);
|
|
3060
|
+
this.maxTitleBar.updateTitles();
|
|
3061
|
+
}
|
|
3062
|
+
if (config.visible != null) {
|
|
3063
|
+
box.setVisible(config.visible, skipUpdate);
|
|
3064
|
+
}
|
|
3065
|
+
if (config.minHeight != null) {
|
|
3066
|
+
box.setMinHeight(config.minHeight, skipUpdate);
|
|
3067
|
+
}
|
|
3068
|
+
if (config.minWidth != null) {
|
|
3069
|
+
box.setMinWidth(config.minWidth, skipUpdate);
|
|
3070
|
+
}
|
|
3071
|
+
if (config.resizable != null) {
|
|
3072
|
+
box.setResizable(config.resizable, skipUpdate);
|
|
3073
|
+
}
|
|
3074
|
+
if (config.draggable != null) {
|
|
3075
|
+
box.setDraggable(config.draggable, skipUpdate);
|
|
3076
|
+
}
|
|
3077
|
+
if (config.fixRatio != null) {
|
|
3078
|
+
box.setFixRatio(config.fixRatio, skipUpdate);
|
|
3079
|
+
}
|
|
3080
|
+
if (config.zIndex != null) {
|
|
3081
|
+
box.setZIndex(config.zIndex, skipUpdate);
|
|
3082
|
+
}
|
|
3083
|
+
if (config.content != null) {
|
|
3084
|
+
box.mountContent(config.content);
|
|
3085
|
+
}
|
|
3086
|
+
if (config.footer != null) {
|
|
3087
|
+
box.mountFooter(config.footer);
|
|
3088
|
+
}
|
|
3089
|
+
}
|
|
3090
|
+
smartPosition(config = {}) {
|
|
3091
|
+
let { x, y } = config;
|
|
3092
|
+
const { width = 0.5, height = 0.5 } = config;
|
|
3093
|
+
if (x == null) {
|
|
3094
|
+
let vx = 20;
|
|
3095
|
+
if (this.topBox) {
|
|
3096
|
+
vx = this.topBox.intrinsicX * this.containerRect.width + 20;
|
|
3097
|
+
if (vx > this.containerRect.width - width * this.containerRect.width) {
|
|
3098
|
+
vx = 20;
|
|
3099
|
+
}
|
|
3100
|
+
}
|
|
3101
|
+
x = vx / this.containerRect.width;
|
|
3102
|
+
}
|
|
3103
|
+
if (y == null) {
|
|
3104
|
+
let vy = 20;
|
|
3105
|
+
if (this.topBox) {
|
|
3106
|
+
vy = this.topBox.intrinsicY * this.containerRect.height + 20;
|
|
3107
|
+
if (vy > this.containerRect.height - height * this.containerRect.height) {
|
|
3108
|
+
vy = 20;
|
|
3109
|
+
}
|
|
3110
|
+
}
|
|
3111
|
+
y = vy / this.containerRect.height;
|
|
3112
|
+
}
|
|
3113
|
+
return __spreadProps(__spreadValues({}, config), { x, y, width, height });
|
|
3114
|
+
}
|
|
3115
|
+
makeBoxTop(box, skipUpdate = false) {
|
|
3116
|
+
if (this.topBox) {
|
|
3117
|
+
if (box !== this.topBox) {
|
|
3118
|
+
box.setZIndex(this.topBox.zIndex + 1, skipUpdate);
|
|
3119
|
+
}
|
|
3120
|
+
}
|
|
3121
|
+
}
|
|
3122
|
+
getBoxIndex(boxOrID) {
|
|
3123
|
+
return typeof boxOrID === "string" ? this.boxes.findIndex((box) => box.id === boxOrID) : this.boxes.findIndex((box) => box === boxOrID);
|
|
3124
|
+
}
|
|
3125
|
+
getBox(boxOrID) {
|
|
3126
|
+
return typeof boxOrID === "string" ? this.boxes.find((box) => box.id === boxOrID) : boxOrID;
|
|
3127
|
+
}
|
|
3128
|
+
}
|
|
3129
|
+
exports.DefaultTitleBar = DefaultTitleBar;
|
|
3130
|
+
exports.TeleBox = TeleBox;
|
|
3131
|
+
exports.TeleBoxCollector = TeleBoxCollector;
|
|
3132
|
+
exports.TeleBoxDragHandleType = TeleBoxDragHandleType;
|
|
3133
|
+
exports.TeleBoxManager = TeleBoxManager;
|
|
3134
|
+
exports.TeleBoxReact = TeleBoxReact;
|
|
16
3135
|
//# sourceMappingURL=telebox-insider.cjs.js.map
|