@netless/telebox-insider 0.2.24 → 0.2.27

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.
@@ -1,4 +1,210 @@
1
- "use strict";var e=Object.defineProperty,t=Object.defineProperties,i=Object.getOwnPropertyDescriptors,s=Object.getOwnPropertySymbols,r=Object.prototype.hasOwnProperty,n=Object.prototype.propertyIsEnumerable,o=(t,i,s)=>i in t?e(t,i,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[i]=s,a=(e,t)=>{for(var i in t||(t={}))r.call(t,i)&&o(e,i,t[i]);if(s)for(var i of s(t))n.call(t,i)&&o(e,i,t[i]);return e},l=(e,s)=>t(e,i(s));Object.defineProperty(exports,"__esModule",{value:!0}),exports[Symbol.toStringTag]="Module";var h=require("react");function c(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var d=c(h),u={exports:{}};!function(e){var t=Object.prototype.hasOwnProperty,i="~";function s(){}function r(e,t,i){this.fn=e,this.context=t,this.once=i||!1}function n(e,t,s,n,o){if("function"!=typeof s)throw new TypeError("The listener must be a function");var a=new r(s,n||e,o),l=i?i+t:t;return e._events[l]?e._events[l].fn?e._events[l]=[e._events[l],a]:e._events[l].push(a):(e._events[l]=a,e._eventsCount++),e}function o(e,t){0==--e._eventsCount?e._events=new s:delete e._events[t]}function a(){this._events=new s,this._eventsCount=0}Object.create&&(s.prototype=Object.create(null),(new s).__proto__||(i=!1)),a.prototype.eventNames=function(){var e,s,r=[];if(0===this._eventsCount)return r;for(s in e=this._events)t.call(e,s)&&r.push(i?s.slice(1):s);return Object.getOwnPropertySymbols?r.concat(Object.getOwnPropertySymbols(e)):r},a.prototype.listeners=function(e){var t=i?i+e:e,s=this._events[t];if(!s)return[];if(s.fn)return[s.fn];for(var r=0,n=s.length,o=new Array(n);r<n;r++)o[r]=s[r].fn;return o},a.prototype.listenerCount=function(e){var t=i?i+e:e,s=this._events[t];return s?s.fn?1:s.length:0},a.prototype.emit=function(e,t,s,r,n,o){var a=i?i+e:e;if(!this._events[a])return!1;var l,h,c=this._events[a],d=arguments.length;if(c.fn){switch(c.once&&this.removeListener(e,c.fn,void 0,!0),d){case 1:return c.fn.call(c.context),!0;case 2:return c.fn.call(c.context,t),!0;case 3:return c.fn.call(c.context,t,s),!0;case 4:return c.fn.call(c.context,t,s,r),!0;case 5:return c.fn.call(c.context,t,s,r,n),!0;case 6:return c.fn.call(c.context,t,s,r,n,o),!0}for(h=1,l=new Array(d-1);h<d;h++)l[h-1]=arguments[h];c.fn.apply(c.context,l)}else{var u,f=c.length;for(h=0;h<f;h++)switch(c[h].once&&this.removeListener(e,c[h].fn,void 0,!0),d){case 1:c[h].fn.call(c[h].context);break;case 2:c[h].fn.call(c[h].context,t);break;case 3:c[h].fn.call(c[h].context,t,s);break;case 4:c[h].fn.call(c[h].context,t,s,r);break;default:if(!l)for(u=1,l=new Array(d-1);u<d;u++)l[u-1]=arguments[u];c[h].fn.apply(c[h].context,l)}}return!0},a.prototype.on=function(e,t,i){return n(this,e,t,i,!1)},a.prototype.once=function(e,t,i){return n(this,e,t,i,!0)},a.prototype.removeListener=function(e,t,s,r){var n=i?i+e:e;if(!this._events[n])return this;if(!t)return o(this,n),this;var a=this._events[n];if(a.fn)a.fn!==t||r&&!a.once||s&&a.context!==s||o(this,n);else{for(var l=0,h=[],c=a.length;l<c;l++)(a[l].fn!==t||r&&!a[l].once||s&&a[l].context!==s)&&h.push(a[l]);h.length?this._events[n]=1===h.length?h[0]:h:o(this,n)}return this},a.prototype.removeAllListeners=function(e){var t;return e?(t=i?i+e:e,this._events[t]&&o(this,t)):(this._events=new s,this._eventsCount=0),this},a.prototype.off=a.prototype.removeListener,a.prototype.addListener=a.prototype.on,a.prefixed=i,a.EventEmitter=a,e.exports=a}(u);var f=u.exports,E=function(){return(E=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)};
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||N(),i.schedule(e,t,s),e},e}),{}),C=function(e){return w[e].process(T)},$=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($)},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"]),$e=function(e,t){return I.transform(e*t)},Ne={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=Ne),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"]=$e(-E,i),r[n?"stroke-dasharray":"strokeDasharray"]=$e(c,i)+" "+$e(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)<=3&&Math.abs(e.clientY-this.lastTitleBarClick.clientY)<=3&&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)<=3&&Math.abs(r-this.lastTitleBarTouch.clientY)<=3&&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:$,createVal:N}=this._valSideEffectBinder;this.id=e,this.namespace=b,this.events=new f,this._delegateEvents=new f;const O=N(i);O.reaction(((e,t,i)=>{i||this.events.emit(exports.TELE_BOX_EVENT.PrefersColorScheme,e)}));const z=N(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=N(L,De),S=N(C,De),R=N(t),A=N(r);A.reaction(((e,t,i)=>{i||e||this.events.emit(exports.TELE_BOX_EVENT.Close)}));const X=N(E);X.reaction(((e,t,i)=>{i||this.events.emit(exports.TELE_BOX_EVENT.Readonly,e)}));const k=N(m),V=N(p),D=N(v),I=N(x),H=N(g);H.reaction(((e,t,i)=>{i||this.events.emit(exports.TELE_BOX_EVENT.ZIndex,e)}));const W=N(_);W.reaction(((e,t,i)=>{i||this.events.emit(e?exports.TELE_BOX_EVENT.Focus:exports.TELE_BOX_EVENT.Blur)}));const j=N(d);j.reaction(((e,t,i)=>{i||this.events.emit(exports.TELE_BOX_EVENT.Minimized,e)}));const G=N(u);G.reaction(((e,t,i)=>{i||this.events.emit(exports.TELE_BOX_EVENT.Maximized,e)}));const P=$([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=N({width:tt(a,0,1),height:tt(l,0,1)},De),Z=N({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=$([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=$([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=N({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=$([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=N(B),K=N(y),ee=N(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(){var e;const t=super.render();(null==(e=t.firstElementChild)?void 0:e.nextElementSibling)&&t.insertBefore(this.$dragArea,t.firstElementChild.nextElementSibling);const{x:i,y:s,width:r}=this.containerRect;return t.style.transform=`translate(${i}px, ${s}px)`,t.style.width=r+"px",t.classList.add(this.wrapClassName("max-titlebar")),t.classList.toggle(this.wrapClassName("max-titlebar-maximized"),this.state===exports.TELE_BOX_STATE.Maximized),t.classList.toggle(this.wrapClassName("readonly"),this.readonly),t.classList.add(this.wrapClassName(this.darkMode?"color-scheme-dark":"color-scheme-light")),this.updateTitles(),t}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&&(1===this.boxes.length?this.$title&&(this.$title.textContent=this.boxes[0].title,this.$titleBar.replaceChild(this.$title,this.$titleBar.firstElementChild)):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 padding-right: 16px;\n white-space: nowrap;\n word-break: keep-all;\n margin-left: auto;\n font-size: 0;\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