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