@whitesev/pops 2.0.7 → 2.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.amd.js CHANGED
@@ -2,12 +2,6 @@ define((function () { 'use strict';
2
2
 
3
3
  const SymbolEvents = Symbol("events_" + (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1));
4
4
 
5
- const PopsCoreDefaultEnv = {
6
- document: document,
7
- window: window,
8
- globalThis: globalThis,
9
- self: self,
10
- };
11
5
  const PopsCoreEnv = {
12
6
  document: document,
13
7
  window: window,
@@ -15,12 +9,6 @@ define((function () { 'use strict';
15
9
  self: self,
16
10
  };
17
11
  const PopsCore = {
18
- init(option) {
19
- if (!option) {
20
- option = Object.assign({}, PopsCoreDefaultEnv);
21
- }
22
- Object.assign(PopsCoreEnv, option);
23
- },
24
12
  get document() {
25
13
  return PopsCoreEnv.document;
26
14
  },
@@ -40,21 +28,266 @@ define((function () { 'use strict';
40
28
  },
41
29
  };
42
30
 
43
- let t$1 = class t{constructor(){this.__map={};}beforeEach(t){this.__interceptor=t;}on(t,i){const s=Array.isArray(t)?t:[t];for(const t of s){this.__map[t]=this.__map[t]||[];const s=this.__map[t];s&&s.push(i);}return this}emit(t,i,s){void 0!==this.__interceptor?this.__interceptor(t,(()=>{this.__emit(t,i),s&&s();})):(this.__emit(t,i),s&&s());}__emit(t,i){const s=this.__map[t];if(Array.isArray(s)&&(null==s?void 0:s.length))for(const _ of s)_(i,t);this.event=i;}off(t,i){const s=this.__map[t];if(void 0!==s)if(void 0===i)delete this.__map[t];else {const t=s.findIndex((t=>t===i));s.splice(t,1);}}destroy(){this.__map={};}};
31
+ const createCache = (lastNumberWeakMap) => {
32
+ return (collection, nextNumber) => {
33
+ lastNumberWeakMap.set(collection, nextNumber);
34
+ return nextNumber;
35
+ };
36
+ };
37
+
38
+ /*
39
+ * The value of the constant Number.MAX_SAFE_INTEGER equals (2 ** 53 - 1) but it
40
+ * is fairly new.
41
+ */
42
+ const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER === undefined ? 9007199254740991 : Number.MAX_SAFE_INTEGER;
43
+ const TWO_TO_THE_POWER_OF_TWENTY_NINE = 536870912;
44
+ const TWO_TO_THE_POWER_OF_THIRTY = TWO_TO_THE_POWER_OF_TWENTY_NINE * 2;
45
+ const createGenerateUniqueNumber = (cache, lastNumberWeakMap) => {
46
+ return (collection) => {
47
+ const lastNumber = lastNumberWeakMap.get(collection);
48
+ /*
49
+ * Let's try the cheapest algorithm first. It might fail to produce a new
50
+ * number, but it is so cheap that it is okay to take the risk. Just
51
+ * increase the last number by one or reset it to 0 if we reached the upper
52
+ * bound of SMIs (which stands for small integers). When the last number is
53
+ * unknown it is assumed that the collection contains zero based consecutive
54
+ * numbers.
55
+ */
56
+ let nextNumber = lastNumber === undefined ? collection.size : lastNumber < TWO_TO_THE_POWER_OF_THIRTY ? lastNumber + 1 : 0;
57
+ if (!collection.has(nextNumber)) {
58
+ return cache(collection, nextNumber);
59
+ }
60
+ /*
61
+ * If there are less than half of 2 ** 30 numbers stored in the collection,
62
+ * the chance to generate a new random number in the range from 0 to 2 ** 30
63
+ * is at least 50%. It's benifitial to use only SMIs because they perform
64
+ * much better in any environment based on V8.
65
+ */
66
+ if (collection.size < TWO_TO_THE_POWER_OF_TWENTY_NINE) {
67
+ while (collection.has(nextNumber)) {
68
+ nextNumber = Math.floor(Math.random() * TWO_TO_THE_POWER_OF_THIRTY);
69
+ }
70
+ return cache(collection, nextNumber);
71
+ }
72
+ // Quickly check if there is a theoretical chance to generate a new number.
73
+ if (collection.size > MAX_SAFE_INTEGER) {
74
+ throw new Error('Congratulations, you created a collection of unique numbers which uses all available integers!');
75
+ }
76
+ // Otherwise use the full scale of safely usable integers.
77
+ while (collection.has(nextNumber)) {
78
+ nextNumber = Math.floor(Math.random() * MAX_SAFE_INTEGER);
79
+ }
80
+ return cache(collection, nextNumber);
81
+ };
82
+ };
83
+
84
+ const LAST_NUMBER_WEAK_MAP = new WeakMap();
85
+ const cache = createCache(LAST_NUMBER_WEAK_MAP);
86
+ const generateUniqueNumber = createGenerateUniqueNumber(cache, LAST_NUMBER_WEAK_MAP);
44
87
 
45
- const n$1="clientX",e$2="clientY",t=16,c$3="start",o$1="move",s$1="cancel",u$3="end",a$2="left",i$3="right",r$4="up",d$1="down",m$2={4:"start",5:"move",1:"end",3:"cancel"};function v$1(n){return m$2[n]}function b(n,e,t){const c={1:{0:{move:4},4:{move:5,end:1,cancel:3},5:{move:5,end:1,cancel:3}},0:{4:{move:2,end:1,cancel:3},5:{start:2,move:2,end:1,cancel:3}}}[Number(n)][e];return void 0!==c&&c[t]||0}function g$1(n){[1,3,2].includes(n.state)&&(n.state=0);}function h$3(n){return [5,1,3].includes(n)}function j(n){if(n.disabled)return n.state=0,!0}function O(n,e){return Object.assign(Object.assign(Object.assign({},n),e),{state:0,disabled:!1})}function p$3(n){return Math.round(100*n)/100}
88
+ const isMessagePort = (sender) => {
89
+ return typeof sender.start === 'function';
90
+ };
91
+
92
+ const PORT_MAP = new WeakMap();
46
93
 
47
- function r$3(){let t,o,i,r,a=0;return function(u){if(t=o,void 0!==u){a=Number.MAX_SAFE_INTEGER>a?++a:1;const h=function(t,o){const{phase:i,points:r,changedPoints:a,nativeEvent:u}=t,h=r.length,p=c$3===i,g=u$3===i&&0===h||s$1===i,l=Date.now(),{x:d,y:m}=c$2(r)||c$2(a),{currentTarget:v}=u;return Object.assign(t,{id:o,x:d,y:m,timestamp:l,isStart:p,isEnd:g,pointLength:h,currentTarget:v,getOffset(t=v){const e=t.getBoundingClientRect();return {x:d-Math.round(e.left),y:m-Math.round(e.top)}}})}(u,a);o=h;const{isStart:p,pointLength:g}=h;return p&&(i=h,t=void 0,r=1<g?h:void 0),Object.assign(Object.assign({},h),{prevInput:t,startMultiInput:r,startInput:i})}}}function c$2(t){const{length:e}=t;if(0<e){if(1===e){const{clientX:e,clientY:n}=t[0];return {x:Math.round(e),y:Math.round(n)}}const n=t.reduce(((t,e)=>(t.x+=e[n$1],t.y+=e[e$2],t)),{x:0,y:0});return {x:Math.round(n.x/e),y:Math.round(n.y/e)}}}function a$1(t,e,n,s){const o={};for(const t in n)["target","currentTarget","type"].includes(t)||(o[t]=n[t]);let i;return document.createEvent?(i=document.createEvent("HTMLEvents"),i.initEvent(t,null==s?void 0:s.bubbles,null==s?void 0:s.cancelable)):i=new Event(t,s),Object.assign(i,o,{match:()=>n.targets&&0<n.targets.length&&n.targets.every((t=>i.currentTarget.contains(t)))}),e.dispatchEvent(i)}function u$2(t,e){const{preventDefault:n}=e;return s=n,"[object Function]"===Object.prototype.toString.call(s)?n(t):!!n;var s;}const h$2=["touchstart","touchmove","touchend","touchcancel","mousedown"],p$2=["mousemove","mouseup"];const g={domEvents:{bubbles:!0,cancelable:!0},preventDefault:t=>{if(t.target&&"tagName"in t.target){const{tagName:e}=t.target;return !/^(?:INPUT|TEXTAREA|BUTTON|SELECT)$/.test(e)}return !1}};let l$1 = class l extends t$1{constructor(t,e){super(),this.v="2.1.3",this.__computeFunctionList=[],this.__computeFunctionCreatorList=[],this.__pluginContexts=[],this.__isIgnoreMouse=!1,this.el=t,this.c={},this.__options=Object.assign(Object.assign({},g),e);const n=function(t){const e=r$3();return function(n){const s=[],o=[];Array.from(n.touches).forEach((({clientX:e,clientY:n,target:i})=>{(null==t?void 0:t.contains(i))&&(s.push(i),o.push({clientX:e,clientY:n,target:i}));}));const i=Array.from(n.changedTouches).map((({clientX:t,clientY:e,target:n})=>({clientX:t,clientY:e,target:n})));return e({phase:n.type.replace("touch",""),changedPoints:i,points:o,nativeEvent:n,target:n.target,targets:s})}}(this.el),s=function(){let t,e=!1,n=null;const s=r$3();return function(o){const{clientX:i,clientY:r,type:c,button:a,target:u}=o;let h,p=[{clientX:i,clientY:r,target:u}];if("mousedown"===c&&0===a)n=u,e=!0,h="start";else {if(!e)return;"mousemove"===c?h="move":"mouseup"===c&&(p=[],h="end",e=!1);}const g=t||[{clientX:i,clientY:r,target:u}];if(t=[{clientX:i,clientY:r,target:u}],void 0!==h)return s({phase:h,changedPoints:g,points:p,target:n,targets:[n],nativeEvent:o})}}();if(this.__inputCreatorMap={touchstart:n,touchmove:n,touchend:n,touchcancel:n,mousedown:s,mousemove:s,mouseup:s},this.on("at:after",(t=>{const{target:e,__type:n}=t,{domEvents:s}=this.__options;s&&void 0!==this.el&&e&&(a$1(n,e,t,s),a$1("at:after",e,t,s));})),void 0!==t){t.style.webkitTapHighlightColor="rgba(0,0,0,0)";let e=!1;try{const t={};Object.defineProperty(t,"passive",{get(){e=!0;}}),window.addEventListener("_",(()=>{}),t);}catch(t){}this.on("u",function(t,e,n){return h$2.forEach((s=>{t.addEventListener(s,e,n);})),p$2.forEach((t=>{window.addEventListener(t,e,n);})),()=>{h$2.forEach((n=>{t.removeEventListener(n,e);})),p$2.forEach((t=>{window.removeEventListener(t,e);}));}}(t,this.catchEvent.bind(this),!1===this.__options.preventDefault&&e?{passive:!0}:{passive:!1}));}}use(t,e){this.__pluginContexts.push(t(this,e));}catchEvent(t){const e=this.__inputCreatorMap[t.type](t);if(void 0!==e){const n=()=>t.stopPropagation(),s=()=>t.stopImmediatePropagation(),o=()=>t.preventDefault();if(u$2(t,this.__options))o();else if("touchstart"===t.type?this.__isIgnoreMouse=!0:"touchmove"===t.type&&(this.__isIgnoreMouse=!1),this.__isIgnoreMouse&&t.type.startsWith("mouse"))return void("mouseup"===t.type&&(this.__isIgnoreMouse=!1));this.emit("input",e),this.emit2(`at:${e.phase}`,e,{});const i={};this.__computeFunctionList.forEach((t=>{const n=t(e,i);if(void 0!==n)for(const t in n)i[t]=n[t];})),this.emit("computed",Object.assign(Object.assign(Object.assign({},e),i),{stopPropagation:n,stopImmediatePropagation:s,preventDefault:o}));}}compute(t,e){for(const e of t)this.__computeFunctionCreatorList.includes(e)||(this.__computeFunctionCreatorList.push(e),this.__computeFunctionList.push(e()));this.on("computed",e);}beforeEach(t){super.beforeEach(((e,n)=>{var s;(null===(s=this.c)||void 0===s?void 0:s.name)?t(e,n):n();}));}get(t){return this.__pluginContexts.find((e=>t===e.name))}set(t){this.__options=Object.assign(Object.assign({},this.__options),t);}emit2(t,e,n){this.c=n,this.emit(t,Object.assign(Object.assign({},e),{type:t}),(()=>{this.emit("at:after",Object.assign(Object.assign({},e),{name:t,__type:t}));}));}destroy(){this.emit("u"),super.destroy();}};
94
+ const extendBrokerImplementation = (partialBrokerImplementation) => ({
95
+ ...partialBrokerImplementation,
96
+ connect: ({ call }) => {
97
+ return async () => {
98
+ const { port1, port2 } = new MessageChannel();
99
+ const portId = await call('connect', { port: port1 }, [port1]);
100
+ PORT_MAP.set(port2, portId);
101
+ return port2;
102
+ };
103
+ },
104
+ disconnect: ({ call }) => {
105
+ return async (port) => {
106
+ const portId = PORT_MAP.get(port);
107
+ if (portId === undefined) {
108
+ throw new Error('The given port is not connected.');
109
+ }
110
+ await call('disconnect', { portId });
111
+ };
112
+ },
113
+ isSupported: ({ call }) => {
114
+ return () => call('isSupported');
115
+ }
116
+ });
117
+
118
+ const ONGOING_REQUESTS = new WeakMap();
119
+ const createOrGetOngoingRequests = (sender) => {
120
+ if (ONGOING_REQUESTS.has(sender)) {
121
+ // @todo TypeScript needs to be convinced that has() works as expected.
122
+ return ONGOING_REQUESTS.get(sender);
123
+ }
124
+ const ongoingRequests = new Map();
125
+ ONGOING_REQUESTS.set(sender, ongoingRequests);
126
+ return ongoingRequests;
127
+ };
128
+ const createBroker = (brokerImplementation) => {
129
+ const fullBrokerImplementation = extendBrokerImplementation(brokerImplementation);
130
+ return (sender) => {
131
+ const ongoingRequests = createOrGetOngoingRequests(sender);
132
+ sender.addEventListener('message', (({ data: message }) => {
133
+ const { id } = message;
134
+ if (id !== null && ongoingRequests.has(id)) {
135
+ const { reject, resolve } = ongoingRequests.get(id);
136
+ ongoingRequests.delete(id);
137
+ if (message.error === undefined) {
138
+ resolve(message.result);
139
+ }
140
+ else {
141
+ reject(new Error(message.error.message));
142
+ }
143
+ }
144
+ }));
145
+ if (isMessagePort(sender)) {
146
+ sender.start();
147
+ }
148
+ const call = (method, params = null, transferables = []) => {
149
+ return new Promise((resolve, reject) => {
150
+ const id = generateUniqueNumber(ongoingRequests);
151
+ ongoingRequests.set(id, { reject, resolve });
152
+ if (params === null) {
153
+ sender.postMessage({ id, method }, transferables);
154
+ }
155
+ else {
156
+ sender.postMessage({ id, method, params }, transferables);
157
+ }
158
+ });
159
+ };
160
+ const notify = (method, params, transferables = []) => {
161
+ sender.postMessage({ id: null, method, params }, transferables);
162
+ };
163
+ let functions = {};
164
+ for (const [key, handler] of Object.entries(fullBrokerImplementation)) {
165
+ functions = { ...functions, [key]: handler({ call, notify }) };
166
+ }
167
+ return { ...functions };
168
+ };
169
+ };
170
+
171
+ // Prefilling the Maps with a function indexed by zero is necessary to be compliant with the specification.
172
+ const scheduledIntervalsState = new Map([[0, null]]); // tslint:disable-line no-empty
173
+ const scheduledTimeoutsState = new Map([[0, null]]); // tslint:disable-line no-empty
174
+ const wrap = createBroker({
175
+ clearInterval: ({ call }) => {
176
+ return (timerId) => {
177
+ if (typeof scheduledIntervalsState.get(timerId) === 'symbol') {
178
+ scheduledIntervalsState.set(timerId, null);
179
+ call('clear', { timerId, timerType: 'interval' }).then(() => {
180
+ scheduledIntervalsState.delete(timerId);
181
+ });
182
+ }
183
+ };
184
+ },
185
+ clearTimeout: ({ call }) => {
186
+ return (timerId) => {
187
+ if (typeof scheduledTimeoutsState.get(timerId) === 'symbol') {
188
+ scheduledTimeoutsState.set(timerId, null);
189
+ call('clear', { timerId, timerType: 'timeout' }).then(() => {
190
+ scheduledTimeoutsState.delete(timerId);
191
+ });
192
+ }
193
+ };
194
+ },
195
+ setInterval: ({ call }) => {
196
+ return (func, delay = 0, ...args) => {
197
+ const symbol = Symbol();
198
+ const timerId = generateUniqueNumber(scheduledIntervalsState);
199
+ scheduledIntervalsState.set(timerId, symbol);
200
+ const schedule = () => call('set', {
201
+ delay,
202
+ now: performance.timeOrigin + performance.now(),
203
+ timerId,
204
+ timerType: 'interval'
205
+ }).then(() => {
206
+ const state = scheduledIntervalsState.get(timerId);
207
+ if (state === undefined) {
208
+ throw new Error('The timer is in an undefined state.');
209
+ }
210
+ if (state === symbol) {
211
+ func(...args);
212
+ // Doublecheck if the interval should still be rescheduled because it could have been cleared inside of func().
213
+ if (scheduledIntervalsState.get(timerId) === symbol) {
214
+ schedule();
215
+ }
216
+ }
217
+ });
218
+ schedule();
219
+ return timerId;
220
+ };
221
+ },
222
+ setTimeout: ({ call }) => {
223
+ return (func, delay = 0, ...args) => {
224
+ const symbol = Symbol();
225
+ const timerId = generateUniqueNumber(scheduledTimeoutsState);
226
+ scheduledTimeoutsState.set(timerId, symbol);
227
+ call('set', {
228
+ delay,
229
+ now: performance.timeOrigin + performance.now(),
230
+ timerId,
231
+ timerType: 'timeout'
232
+ }).then(() => {
233
+ const state = scheduledTimeoutsState.get(timerId);
234
+ if (state === undefined) {
235
+ throw new Error('The timer is in an undefined state.');
236
+ }
237
+ if (state === symbol) {
238
+ // A timeout can be savely deleted because it is only called once.
239
+ scheduledTimeoutsState.delete(timerId);
240
+ func(...args);
241
+ }
242
+ });
243
+ return timerId;
244
+ };
245
+ }
246
+ });
247
+ const load = (url) => {
248
+ const worker = new Worker(url);
249
+ return wrap(worker);
250
+ };
251
+
252
+ const createLoadOrReturnBroker = (loadBroker, worker) => {
253
+ let broker = null;
254
+ return () => {
255
+ if (broker !== null) {
256
+ return broker;
257
+ }
258
+ const blob = new Blob([worker], { type: 'application/javascript; charset=utf-8' });
259
+ const url = URL.createObjectURL(blob);
260
+ broker = loadBroker(url);
261
+ // Bug #1: Edge up until v18 didn't like the URL to be revoked directly.
262
+ setTimeout(() => URL.revokeObjectURL(url));
263
+ return broker;
264
+ };
265
+ };
266
+
267
+ // This is the minified and stringified code of the worker-timers-worker package.
268
+ const worker = `(()=>{var e={455:function(e,t){!function(e){"use strict";var t=function(e){return function(t){var r=e(t);return t.add(r),r}},r=function(e){return function(t,r){return e.set(t,r),r}},n=void 0===Number.MAX_SAFE_INTEGER?9007199254740991:Number.MAX_SAFE_INTEGER,o=536870912,s=2*o,a=function(e,t){return function(r){var a=t.get(r),i=void 0===a?r.size:a<s?a+1:0;if(!r.has(i))return e(r,i);if(r.size<o){for(;r.has(i);)i=Math.floor(Math.random()*s);return e(r,i)}if(r.size>n)throw new Error("Congratulations, you created a collection of unique numbers which uses all available integers!");for(;r.has(i);)i=Math.floor(Math.random()*n);return e(r,i)}},i=new WeakMap,u=r(i),c=a(u,i),d=t(c);e.addUniqueNumber=d,e.generateUniqueNumber=c}(t)}},t={};function r(n){var o=t[n];if(void 0!==o)return o.exports;var s=t[n]={exports:{}};return e[n].call(s.exports,s,s.exports,r),s.exports}(()=>{"use strict";const e=-32603,t=-32602,n=-32601,o=(e,t)=>Object.assign(new Error(e),{status:t}),s=t=>o('The handler of the method called "'.concat(t,'" returned an unexpected result.'),e),a=(t,r)=>async({data:{id:a,method:i,params:u}})=>{const c=r[i];try{if(void 0===c)throw(e=>o('The requested method called "'.concat(e,'" is not supported.'),n))(i);const r=void 0===u?c():c(u);if(void 0===r)throw(t=>o('The handler of the method called "'.concat(t,'" returned no required result.'),e))(i);const d=r instanceof Promise?await r:r;if(null===a){if(void 0!==d.result)throw s(i)}else{if(void 0===d.result)throw s(i);const{result:e,transferables:r=[]}=d;t.postMessage({id:a,result:e},r)}}catch(e){const{message:r,status:n=-32603}=e;t.postMessage({error:{code:n,message:r},id:a})}};var i=r(455);const u=new Map,c=(e,r,n)=>({...r,connect:({port:t})=>{t.start();const n=e(t,r),o=(0,i.generateUniqueNumber)(u);return u.set(o,(()=>{n(),t.close(),u.delete(o)})),{result:o}},disconnect:({portId:e})=>{const r=u.get(e);if(void 0===r)throw(e=>o('The specified parameter called "portId" with the given value "'.concat(e,'" does not identify a port connected to this worker.'),t))(e);return r(),{result:null}},isSupported:async()=>{if(await new Promise((e=>{const t=new ArrayBuffer(0),{port1:r,port2:n}=new MessageChannel;r.onmessage=({data:t})=>e(null!==t),n.postMessage(t,[t])}))){const e=n();return{result:e instanceof Promise?await e:e}}return{result:!1}}}),d=(e,t,r=()=>!0)=>{const n=c(d,t,r),o=a(e,n);return e.addEventListener("message",o),()=>e.removeEventListener("message",o)},l=e=>t=>{const r=e.get(t);if(void 0===r)return Promise.resolve(!1);const[n,o]=r;return clearTimeout(n),e.delete(t),o(!1),Promise.resolve(!0)},f=(e,t,r)=>(n,o,s)=>{const{expected:a,remainingDelay:i}=e(n,o);return new Promise((e=>{t.set(s,[setTimeout(r,i,a,t,e,s),e])}))},m=(e,t)=>{const r=performance.now(),n=e+t-r-performance.timeOrigin;return{expected:r+n,remainingDelay:n}},p=(e,t,r,n)=>{const o=e-performance.now();o>0?t.set(n,[setTimeout(p,o,e,t,r,n),r]):(t.delete(n),r(!0))},h=new Map,v=l(h),w=new Map,g=l(w),M=f(m,h,p),y=f(m,w,p);d(self,{clear:async({timerId:e,timerType:t})=>({result:await("interval"===t?v(e):g(e))}),set:async({delay:e,now:t,timerId:r,timerType:n})=>({result:await("interval"===n?M:y)(e,t,r)})})})()})();`; // tslint:disable-line:max-line-length
269
+
270
+ const loadOrReturnBroker = createLoadOrReturnBroker(load, worker);
271
+ const clearInterval = (timerId) => loadOrReturnBroker().clearInterval(timerId);
272
+ const clearTimeout$1 = (timerId) => loadOrReturnBroker().clearTimeout(timerId);
273
+ const setInterval = (...args) => loadOrReturnBroker().setInterval(...args);
274
+ const setTimeout$1 = (...args) => loadOrReturnBroker().setTimeout(...args);
275
+
276
+ let t$1 = class t{constructor(){this.__map={};}beforeEach(t){this.__interceptor=t;}on(t,i){const s=Array.isArray(t)?t:[t];for(const t of s){this.__map[t]=this.__map[t]||[];const s=this.__map[t];s&&s.push(i);}return this}emit(t,i,s){ void 0!==this.__interceptor?this.__interceptor(t,(()=>{this.__emit(t,i),s&&s();})):(this.__emit(t,i),s&&s());}__emit(t,i){const s=this.__map[t];if(Array.isArray(s)&&(null==s?void 0:s.length))for(const _ of s)_(i,t);this.event=i;}off(t,i){const s=this.__map[t];if(void 0!==s)if(void 0===i)delete this.__map[t];else {const t=s.findIndex((t=>t===i));s.splice(t,1);}}destroy(){this.__map={};}};
277
+
278
+ const n$1="clientX",e$2="clientY",t=16,c$3="start",o$1="move",s$1="cancel",u$3="end",a$2="left",i$3="right",r$4="up",d$1="down",m$2={4:"start",5:"move",1:"end",3:"cancel"};function v$1(n){return m$2[n]}function b(n,e,t){const c={1:{0:{move:4},4:{move:5,end:1,cancel:3},5:{move:5,end:1,cancel:3}},0:{4:{move:2,end:1,cancel:3},5:{start:2,move:2,end:1,cancel:3}}}[Number(n)][e];return void 0!==c&&c[t]||0}function g$1(n){[1,3,2].includes(n.state)&&(n.state=0);}function h$3(n){return [5,1,3].includes(n)}function j(n){if(n.disabled)return n.state=0,true}function O(n,e){return Object.assign(Object.assign(Object.assign({},n),e),{state:0,disabled:false})}function p$3(n){return Math.round(100*n)/100}
279
+
280
+ function r$3(){let t,o,i,r,a=0;return function(u){if(t=o,void 0!==u){a=Number.MAX_SAFE_INTEGER>a?++a:1;const h=function(t,o){const{phase:i,points:r,changedPoints:a,nativeEvent:u}=t,h=r.length,p=c$3===i,g=u$3===i&&0===h||s$1===i,l=Date.now(),{x:d,y:m}=c$2(r)||c$2(a),{currentTarget:v}=u;return Object.assign(t,{id:o,x:d,y:m,timestamp:l,isStart:p,isEnd:g,pointLength:h,currentTarget:v,getOffset(t=v){const e=t.getBoundingClientRect();return {x:d-Math.round(e.left),y:m-Math.round(e.top)}}})}(u,a);o=h;const{isStart:p,pointLength:g}=h;return p&&(i=h,t=void 0,r=1<g?h:void 0),Object.assign(Object.assign({},h),{prevInput:t,startMultiInput:r,startInput:i})}}}function c$2(t){const{length:e}=t;if(0<e){if(1===e){const{clientX:e,clientY:n}=t[0];return {x:Math.round(e),y:Math.round(n)}}const n=t.reduce(((t,e)=>(t.x+=e[n$1],t.y+=e[e$2],t)),{x:0,y:0});return {x:Math.round(n.x/e),y:Math.round(n.y/e)}}}function a$1(t,e,n,s){const o={};for(const t in n)["target","currentTarget","type"].includes(t)||(o[t]=n[t]);let i;return document.createEvent?(i=document.createEvent("HTMLEvents"),i.initEvent(t,null==s?void 0:s.bubbles,null==s?void 0:s.cancelable)):i=new Event(t,s),Object.assign(i,o,{match:()=>n.targets&&0<n.targets.length&&n.targets.every((t=>i.currentTarget.contains(t)))}),e.dispatchEvent(i)}function u$2(t,e){const{preventDefault:n}=e;return s=n,"[object Function]"===Object.prototype.toString.call(s)?n(t):!!n;var s;}const h$2=["touchstart","touchmove","touchend","touchcancel","mousedown"],p$2=["mousemove","mouseup"];const g={domEvents:{bubbles:true,cancelable:true},preventDefault:t=>{if(t.target&&"tagName"in t.target){const{tagName:e}=t.target;return !/^(?:INPUT|TEXTAREA|BUTTON|SELECT)$/.test(e)}return false}};let l$1 = class l extends t$1{constructor(t,e){super(),this.v="2.1.3",this.__computeFunctionList=[],this.__computeFunctionCreatorList=[],this.__pluginContexts=[],this.__isIgnoreMouse=false,this.el=t,this.c={},this.__options=Object.assign(Object.assign({},g),e);const n=function(t){const e=r$3();return function(n){const s=[],o=[];Array.from(n.touches).forEach((({clientX:e,clientY:n,target:i})=>{(null==t?void 0:t.contains(i))&&(s.push(i),o.push({clientX:e,clientY:n,target:i}));}));const i=Array.from(n.changedTouches).map((({clientX:t,clientY:e,target:n})=>({clientX:t,clientY:e,target:n})));return e({phase:n.type.replace("touch",""),changedPoints:i,points:o,nativeEvent:n,target:n.target,targets:s})}}(this.el),s=function(){let t,e=false,n=null;const s=r$3();return function(o){const{clientX:i,clientY:r,type:c,button:a,target:u}=o;let h,p=[{clientX:i,clientY:r,target:u}];if("mousedown"===c&&0===a)n=u,e=true,h="start";else {if(!e)return;"mousemove"===c?h="move":"mouseup"===c&&(p=[],h="end",e=false);}const g=t||[{clientX:i,clientY:r,target:u}];if(t=[{clientX:i,clientY:r,target:u}],void 0!==h)return s({phase:h,changedPoints:g,points:p,target:n,targets:[n],nativeEvent:o})}}();if(this.__inputCreatorMap={touchstart:n,touchmove:n,touchend:n,touchcancel:n,mousedown:s,mousemove:s,mouseup:s},this.on("at:after",(t=>{const{target:e,__type:n}=t,{domEvents:s}=this.__options;s&&void 0!==this.el&&e&&(a$1(n,e,t,s),a$1("at:after",e,t,s));})),void 0!==t){t.style.webkitTapHighlightColor="rgba(0,0,0,0)";let e=false;try{const t={};Object.defineProperty(t,"passive",{get(){e=!0;}}),window.addEventListener("_",(()=>{}),t);}catch(t){}this.on("u",function(t,e,n){return h$2.forEach((s=>{t.addEventListener(s,e,n);})),p$2.forEach((t=>{window.addEventListener(t,e,n);})),()=>{h$2.forEach((n=>{t.removeEventListener(n,e);})),p$2.forEach((t=>{window.removeEventListener(t,e);}));}}(t,this.catchEvent.bind(this),false===this.__options.preventDefault&&e?{passive:true}:{passive:false}));}}use(t,e){this.__pluginContexts.push(t(this,e));}catchEvent(t){const e=this.__inputCreatorMap[t.type](t);if(void 0!==e){const n=()=>t.stopPropagation(),s=()=>t.stopImmediatePropagation(),o=()=>t.preventDefault();if(u$2(t,this.__options))o();else if("touchstart"===t.type?this.__isIgnoreMouse=true:"touchmove"===t.type&&(this.__isIgnoreMouse=false),this.__isIgnoreMouse&&t.type.startsWith("mouse"))return void("mouseup"===t.type&&(this.__isIgnoreMouse=false));this.emit("input",e),this.emit2(`at:${e.phase}`,e,{});const i={};this.__computeFunctionList.forEach((t=>{const n=t(e,i);if(void 0!==n)for(const t in n)i[t]=n[t];})),this.emit("computed",Object.assign(Object.assign(Object.assign({},e),i),{stopPropagation:n,stopImmediatePropagation:s,preventDefault:o}));}}compute(t,e){for(const e of t)this.__computeFunctionCreatorList.includes(e)||(this.__computeFunctionCreatorList.push(e),this.__computeFunctionList.push(e()));this.on("computed",e);}beforeEach(t){super.beforeEach(((e,n)=>{var s;(null===(s=this.c)||void 0===s?void 0:s.name)?t(e,n):n();}));}get(t){return this.__pluginContexts.find((e=>t===e.name))}set(t){this.__options=Object.assign(Object.assign({},this.__options),t);}emit2(t,e,n){this.c=n,this.emit(t,Object.assign(Object.assign({},e),{type:t}),(()=>{this.emit("at:after",Object.assign(Object.assign({},e),{name:t,__type:t}));}));}destroy(){this.emit("u"),super.destroy();}};
48
281
 
49
282
  var x=r=>Math.sqrt(r.x*r.x+r.y*r.y),y=(r,a)=>r.x*a.x+r.y*a.y,e$1=(r,a)=>{var t=x(r)*x(a);if(0===t)return 0;var h=y(r,a)/t;return h>1&&(h=1),Math.acos(h)},n=(r,a)=>r.x*a.y-a.x*r.y,o=r=>r/Math.PI*180,s=(r,a)=>{var t=e$1(r,a);return n(r,a)>0&&(t*=-1),o(t)},u$1=(x,y)=>{if(0!==x||0!==y)return Math.abs(x)>=Math.abs(y)?0<x?i$3:a$2:0<y?d$1:r$4};
50
283
 
51
284
  function p$1(){let n=0,e=0;return function(o,r){const{prevVecotr:i,startVecotr:a,activeVecotr:c}=r;return c&&(e=Math.round(s(c,i)),n=Math.round(s(c,a))),{angle:n,deltaAngle:e}}}function d(){return function(t){const{prevInput:e}=t;let o$1=0,r=0,i=0;if(void 0!==e&&(o$1=t.x-e.x,r=t.y-e.y,0!==o$1||0!==r)){const t=Math.sqrt(Math.pow(o$1,2)+Math.pow(r,2));i=Math.round(o(Math.acos(Math.abs(o$1)/t)));}return {deltaX:o$1,deltaY:r,deltaXYAngle:i}}}function h$1(){let t,n=0,u=0,s=0,p=0,d=0;return function(h){const{phase:l,startInput:f}=h;return c$3===l?(n=0,u=0,s=0,p=0,d=0):o$1===l&&(n=Math.round(h.points[0][n$1]-f.points[0][n$1]),u=Math.round(h.points[0][e$2]-f.points[0][e$2]),s=Math.abs(n),p=Math.abs(u),d=Math.round(x({x:s,y:p})),t=u$1(n,u)),{displacementX:n,displacementY:u,distanceX:s,distanceY:p,distance:d,overallDirection:t}}}function l(){let t=1;return function(n,o){let r=1;const{prevVecotr:i,startVecotr:a,activeVecotr:c}=o;return c&&(r=p$3(x(c)/x(i)),t=p$3(x(c)/x(a))),{scale:t,deltaScale:r}}}function f(){let t$1,n,e=0,r=0,i=0,a=0;return function(c){if(void 0!==c){n=n||c.startInput;const u=c.timestamp-n.timestamp;if(t<u){const s=c.x-n.x,p=c.y-n.y;i=Math.round(s/u*100)/100,a=Math.round(p/u*100)/100,e=Math.abs(i),r=Math.abs(a),t$1=u$1(s,p),n=c;}}return {velocityX:e,velocityY:r,speedX:i,speedY:a,direction:t$1}}}function M(){let t=0;return function(n){const{phase:e}=n;return c$3===e&&(t=n.pointLength),{maxPointLength:t}}}function v(t){return {x:t.points[1][n$1]-t.points[0][n$1],y:t.points[1][e$2]-t.points[0][e$2]}}function m$1(){let t,n,e;return function(o){const{prevInput:r,startMultiInput:i}=o;return void 0!==i&&void 0!==r&&o.id!==i.id&&1<r.pointLength&&1<o.pointLength?(t=v(i),n=v(r),e=v(o)):e=void 0,{startVecotr:t,prevVecotr:n,activeVecotr:e}}}
52
285
 
53
- const m={name:"tap",pointLength:1,tapTimes:1,waitNextTapTime:300,maxDistance:2,maxDistanceFromPrevTap:9,maxPressTime:250};function r$2(r,s){const c=O(m,s);let p,u,x$1,T=0;function f(){T=0,p=void 0,u=void 0;}return r.compute([h$1,M],(t=>{if(j(c))return;const{phase:i,x:o,y:m}=t;u$3===i&&(c.state=0,!function(){const{startInput:e,pointLength:n,timestamp:a}=t,i=a-e.timestamp,{distance:o,maxPointLength:m}=t;return m===c.pointLength&&0===n&&c.maxDistance>=o&&c.maxPressTime>i}()?(f(),c.state=2):(clearTimeout(x$1),function(t,e){if(void 0!==p){const n=x({x:t.x-p.x,y:t.y-p.y});return p=t,e.maxDistanceFromPrevTap>=n}return p=t,!0}({x:o,y:m},c)&&function(t){const e=performance.now();if(void 0===u)return u=e,!0;{const n=e-u;return u=e,n<t}}(c.waitNextTapTime)?T++:T=1,0==T%c.tapTimes?(c.state=1,r.emit2(c.name,t,c),f()):x$1=setTimeout((()=>{c.state=2,f();}),c.waitNextTapTime)));})),c}
286
+ const m={name:"tap",pointLength:1,tapTimes:1,waitNextTapTime:300,maxDistance:2,maxDistanceFromPrevTap:9,maxPressTime:250};function r$2(r,s){const c=O(m,s);let p,u,x$1,T=0;function f(){T=0,p=void 0,u=void 0;}return r.compute([h$1,M],(t=>{if(j(c))return;const{phase:i,x:o,y:m}=t;u$3===i&&(c.state=0,!function(){const{startInput:e,pointLength:n,timestamp:a}=t,i=a-e.timestamp,{distance:o,maxPointLength:m}=t;return m===c.pointLength&&0===n&&c.maxDistance>=o&&c.maxPressTime>i}()?(f(),c.state=2):(clearTimeout(x$1),function(t,e){if(void 0!==p){const n=x({x:t.x-p.x,y:t.y-p.y});return p=t,e.maxDistanceFromPrevTap>=n}return p=t,true}({x:o,y:m},c)&&function(t){const e=performance.now();if(void 0===u)return u=e,true;{const n=e-u;return u=e,n<t}}(c.waitNextTapTime)?T++:T=1,0==T%c.tapTimes?(c.state=1,r.emit2(c.name,t,c),f()):x$1=setTimeout((()=>{c.state=2,f();}),c.waitNextTapTime)));})),c}
54
287
 
55
288
  const p={name:"pan",threshold:10,pointLength:1};function u(u,d$1){const f$1=O(p,d$1);return u.compute([f,h$1,d],(t=>{if(g$1(f$1),j(f$1))return;const c=function(){const{pointLength:e,distance:n}=t;return f$1.pointLength===e&&f$1.threshold<=n}();if(f$1.state=b(c,f$1.state,t.phase),c||h$3(f$1.state)){const{name:e}=f$1;u.emit2(e,t,f$1),u.emit2(e+v$1(f$1.state),t,f$1),![u$3,s$1].includes(t.phase)&&t.direction&&u.emit2(e+t.direction,t,f$1);}})),f$1}
56
289
 
57
- const c$1={name:"swipe",threshold:10,velocity:.3,pointLength:1};function a(a,r){const s=O(c$1,r);return a.compute([h$1,f,M],(t=>{if(s.state=0,!s.disabled&&function(){if(u$3!==t.phase)return !1;const{velocityX:o,velocityY:n,distance:i,maxPointLength:c}=t;return c===s.pointLength&&0===t.points.length&&s.threshold<i&&s.velocity<Math.max(o,n)}()){const{name:e}=s;s.state=1,a.emit2(e,t,s),a.emit2(e+t.direction,t,s);}})),s}
290
+ const c$1={name:"swipe",threshold:10,velocity:.3,pointLength:1};function a(a,r){const s=O(c$1,r);return a.compute([h$1,f,M],(t=>{if(s.state=0,!s.disabled&&function(){if(u$3!==t.phase)return false;const{velocityX:o,velocityY:n,distance:i,maxPointLength:c}=t;return c===s.pointLength&&0===t.points.length&&s.threshold<i&&s.velocity<Math.max(o,n)}()){const{name:e}=s;s.state=1,a.emit2(e,t,s),a.emit2(e+t.direction,t,s);}})),s}
58
291
 
59
292
  const r$1={name:"press",pointLength:1,maxDistance:9,minPressTime:251};function c(c,u){const p=O(r$1,u);let f=0;return c.compute([h$1],(t=>{if(j(p))return;const{phase:o,startInput:r,pointLength:u}=t;if(c$3===o&&p.pointLength===u)g$1(p),clearTimeout(f),f=setTimeout((()=>{p.state=1,c.emit2(p.name,t,p);}),p.minPressTime);else if(u$3===o&&1===p.state)c.emit2(`${p.name}${r$4}`,t,p);else if(1!==p.state){const e=t.timestamp-r.timestamp;(!function(){const{distance:e}=t;return e&&p.maxDistance>e}()||p.minPressTime>e&&[u$3,s$1].includes(o))&&(clearTimeout(f),p.state=2);}})),p}
60
293
 
@@ -276,7 +509,7 @@ define((function () { 'use strict';
276
509
  formatByteToSize(byteSize, addType = true) {
277
510
  byteSize = parseInt(byteSize.toString());
278
511
  if (isNaN(byteSize)) {
279
- throw new Error("Utils.formatByteToSize 参数 byteSize 格式不正确");
512
+ throw new TypeError("Utils.formatByteToSize 参数 byteSize 格式不正确");
280
513
  }
281
514
  let result = 0;
282
515
  let resultType = "KB";
@@ -309,6 +542,58 @@ define((function () { 'use strict';
309
542
  AnyTouch = () => {
310
543
  return i;
311
544
  };
545
+ /**
546
+ * 自动使用 Worker 执行 setTimeout
547
+ */
548
+ setTimeout(callback, timeout = 0) {
549
+ try {
550
+ return setTimeout$1(callback, timeout);
551
+ }
552
+ catch (error) {
553
+ return globalThis.setTimeout(callback, timeout);
554
+ }
555
+ }
556
+ /**
557
+ * 配合 .setTimeout 使用
558
+ */
559
+ clearTimeout(timeId) {
560
+ try {
561
+ if (timeId != null) {
562
+ clearTimeout$1(timeId);
563
+ }
564
+ }
565
+ catch (error) {
566
+ }
567
+ finally {
568
+ globalThis.clearTimeout(timeId);
569
+ }
570
+ }
571
+ /**
572
+ * 自动使用 Worker 执行 setInterval
573
+ */
574
+ setInterval(callback, timeout = 0) {
575
+ try {
576
+ return setInterval(callback, timeout);
577
+ }
578
+ catch (error) {
579
+ return globalThis.setInterval(callback, timeout);
580
+ }
581
+ }
582
+ /**
583
+ * 配合 .setInterval 使用
584
+ */
585
+ clearInterval(timeId) {
586
+ try {
587
+ if (timeId != null) {
588
+ clearInterval(timeId);
589
+ }
590
+ }
591
+ catch (error) {
592
+ }
593
+ finally {
594
+ globalThis.clearInterval(timeId);
595
+ }
596
+ }
312
597
  }
313
598
  const popsUtils = new PopsUtils();
314
599
 
@@ -682,7 +967,7 @@ define((function () { 'use strict';
682
967
  }
683
968
  if (checkDOMReadyState()) {
684
969
  /* 检查document状态 */
685
- setTimeout(callback);
970
+ popsUtils.setTimeout(callback, 0);
686
971
  }
687
972
  else {
688
973
  /* 添加监听 */
@@ -1909,7 +2194,7 @@ define((function () { 'use strict';
1909
2194
  let popsElement = animElement.querySelector(".pops[type-value]");
1910
2195
  if (popsType === "drawer") {
1911
2196
  let drawerConfig = config;
1912
- setTimeout(() => {
2197
+ popsUtils.setTimeout(() => {
1913
2198
  maskElement.style.setProperty("display", "none");
1914
2199
  if (["top", "bottom"].includes(drawerConfig.direction)) {
1915
2200
  popsElement.style.setProperty("height", "0");
@@ -1975,7 +2260,7 @@ define((function () { 'use strict';
1975
2260
  let popsElement = animElement.querySelector(".pops[type-value]");
1976
2261
  if (popsType === "drawer") {
1977
2262
  let drawerConfig = config;
1978
- setTimeout(() => {
2263
+ popsUtils.setTimeout(() => {
1979
2264
  popsDOMUtils.css(maskElement, "display", "");
1980
2265
  let direction = drawerConfig.direction;
1981
2266
  let size = drawerConfig.size.toString();
@@ -1989,7 +2274,7 @@ define((function () { 'use strict';
1989
2274
  console.error("未知direction:", direction);
1990
2275
  }
1991
2276
  resolve();
1992
- }, drawerConfig.openDelay);
2277
+ }, drawerConfig.openDelay ?? 0);
1993
2278
  }
1994
2279
  else {
1995
2280
  let findLayerIns = layerConfigList.find((layerConfigItem) => layerConfigItem.guid === guid);
@@ -2081,7 +2366,7 @@ define((function () { 'use strict';
2081
2366
  }
2082
2367
  }
2083
2368
  if (popsType === "drawer") {
2084
- setTimeout(() => {
2369
+ popsUtils.setTimeout(() => {
2085
2370
  transitionendEvent();
2086
2371
  }, drawerConfig.closeDelay);
2087
2372
  }
@@ -2298,10 +2583,10 @@ define((function () { 'use strict';
2298
2583
  */
2299
2584
  sortElementListByProperty(getBeforeValueFun, getAfterValueFun, sortByDesc = true) {
2300
2585
  if (typeof sortByDesc !== "boolean") {
2301
- throw "参数 sortByDesc 必须为boolean类型";
2586
+ throw new TypeError("参数 sortByDesc 必须为boolean类型");
2302
2587
  }
2303
2588
  if (getBeforeValueFun == null || getAfterValueFun == null) {
2304
- throw "获取前面的值或后面的值的方法不能为空";
2589
+ throw new Error("获取前面的值或后面的值的方法不能为空");
2305
2590
  }
2306
2591
  return function (after_obj, before_obj) {
2307
2592
  var beforeValue = getBeforeValueFun(before_obj); /* 前 */
@@ -3898,7 +4183,7 @@ define((function () { 'use strict';
3898
4183
  config = popsUtils.assign(config, GlobalConfig.getGlobalConfig());
3899
4184
  config = popsUtils.assign(config, details);
3900
4185
  if (config.url == null) {
3901
- throw "config.url不能为空";
4186
+ throw new Error("config.url不能为空");
3902
4187
  }
3903
4188
  config = PopsHandler.handleOnly(PopsType, config);
3904
4189
  const { $shadowContainer, $shadowRoot } = PopsHandler.handlerShadow(config);
@@ -4356,8 +4641,8 @@ define((function () { 'use strict';
4356
4641
  config.beforeAppendToPageCallBack($shadowRoot, $shadowContainer);
4357
4642
  }
4358
4643
  popsDOMUtils.appendBody($shadowContainer);
4359
- setTimeout(() => {
4360
- setTimeout(() => {
4644
+ popsUtils.setTimeout(() => {
4645
+ popsUtils.setTimeout(() => {
4361
4646
  $pops.style.setProperty("transform", "");
4362
4647
  }, config.openDelay);
4363
4648
  }, 50);
@@ -5078,12 +5363,12 @@ define((function () { 'use strict';
5078
5363
  let downloadIframeLinkElement = document.createElement("iframe");
5079
5364
  downloadIframeLinkElement.src = downloadInfo.url;
5080
5365
  downloadIframeLinkElement.onload = function () {
5081
- setTimeout(() => {
5366
+ popsUtils.setTimeout(() => {
5082
5367
  downloadIframeLinkElement.remove();
5083
5368
  }, 1000);
5084
5369
  };
5085
5370
  $shadowRoot.appendChild(downloadIframeLinkElement);
5086
- setTimeout(() => {
5371
+ popsUtils.setTimeout(() => {
5087
5372
  downloadIframeLinkElement.remove();
5088
5373
  }, 3 * 60 * 1000);
5089
5374
  }
@@ -6325,11 +6610,11 @@ define((function () { 'use strict';
6325
6610
  let isSuccess = false;
6326
6611
  let oldTotalWidth = this.$data.totalWidth;
6327
6612
  let timer = void 0;
6328
- let interval = setInterval(() => {
6613
+ let interval = popsUtils.setInterval(() => {
6329
6614
  if (isSuccess) {
6330
6615
  this.$interval.isCheck = false;
6331
- clearTimeout(timer);
6332
- clearInterval(interval);
6616
+ popsUtils.clearTimeout(timer);
6617
+ popsUtils.clearInterval(interval);
6333
6618
  }
6334
6619
  else {
6335
6620
  this.initTotalWidth();
@@ -6349,8 +6634,8 @@ define((function () { 'use strict';
6349
6634
  }
6350
6635
  }, checkStepTime);
6351
6636
  /* 最长检测时间是10s */
6352
- timer = setTimeout(() => {
6353
- clearInterval(interval);
6637
+ timer = popsUtils.setTimeout(() => {
6638
+ popsUtils.clearInterval(interval);
6354
6639
  }, maxTime);
6355
6640
  },
6356
6641
  /**
@@ -6718,16 +7003,16 @@ define((function () { 'use strict';
6718
7003
  return;
6719
7004
  }
6720
7005
  this.$data.isCheckingStopDragMove = true;
6721
- let interval = setInterval(() => {
7006
+ let interval = popsUtils.setInterval(() => {
6722
7007
  if (!this.$data.isMove) {
6723
7008
  this.$data.isCheckingStopDragMove = false;
6724
7009
  this.closeToolTip();
6725
- clearInterval(interval);
7010
+ popsUtils.clearInterval(interval);
6726
7011
  }
6727
7012
  }, 200);
6728
- setTimeout(() => {
7013
+ popsUtils.setTimeout(() => {
6729
7014
  this.$data.isCheckingStopDragMove = false;
6730
- clearInterval(interval);
7015
+ popsUtils.clearInterval(interval);
6731
7016
  }, 2000);
6732
7017
  },
6733
7018
  /**
@@ -8605,7 +8890,7 @@ define((function () { 'use strict';
8605
8890
  config = popsUtils.assign(config, details);
8606
8891
  config = PopsHandler.handleOnly(PopsType, config);
8607
8892
  if (config.target == null) {
8608
- throw "config.target 不能为空";
8893
+ throw new Error("config.target 不能为空");
8609
8894
  }
8610
8895
  if (details.data) {
8611
8896
  // @ts-ignore
@@ -9091,7 +9376,7 @@ define((function () { 'use strict';
9091
9376
  config = popsUtils.assign(config, GlobalConfig.getGlobalConfig());
9092
9377
  config = popsUtils.assign(config, details);
9093
9378
  if (config.target == null) {
9094
- throw new TypeError("config.target 不能为空");
9379
+ throw new Error("config.target 不能为空");
9095
9380
  }
9096
9381
  /* 做下兼容处理 */
9097
9382
  if (config.inputTarget == null) {
@@ -9362,7 +9647,7 @@ define((function () { 'use strict';
9362
9647
  popsDOMUtils.on([config.inputTarget], ["focus", "click", "input"], void 0, SearchSuggestion.showEvent, option);
9363
9648
  }
9364
9649
  else {
9365
- throw new TypeError("未知followPosition:" + config.followPosition);
9650
+ throw new Error("未知followPosition:" + config.followPosition);
9366
9651
  }
9367
9652
  },
9368
9653
  /**
@@ -9630,6 +9915,7 @@ define((function () { 'use strict';
9630
9915
  useShadowRoot: true,
9631
9916
  target: null,
9632
9917
  content: "默认文字",
9918
+ isDiffContent: false,
9633
9919
  position: "top",
9634
9920
  className: "",
9635
9921
  isFixed: false,
@@ -9755,6 +10041,19 @@ define((function () { 'use strict';
9755
10041
  if (text == null) {
9756
10042
  text = this.getContent();
9757
10043
  }
10044
+ if (this.$data.config.isDiffContent) {
10045
+ let contentPropKey = "data-content";
10046
+ // @ts-ignore
10047
+ let originContentText = this.$el.$content[contentPropKey];
10048
+ if (typeof originContentText === "string") {
10049
+ if (originContentText === text) {
10050
+ // 内容未改变,不修改避免渲染
10051
+ return;
10052
+ }
10053
+ }
10054
+ // @ts-ignore
10055
+ this.$el.$content[contentPropKey] = text;
10056
+ }
9758
10057
  PopsSafeUtils.setSafeHTML(this.$el.$content, text);
9759
10058
  }
9760
10059
  /**
@@ -9773,11 +10072,12 @@ define((function () { 'use strict';
9773
10072
  }
9774
10073
  /**
9775
10074
  * 计算 提示框的位置
10075
+ * @param event 触发的事件
9776
10076
  * @param targetElement 目标元素
9777
10077
  * @param arrowDistance 箭头和目标元素的距离
9778
10078
  * @param otherDistance 其它位置的偏移
9779
10079
  */
9780
- calcToolTipPosition(targetElement, arrowDistance, otherDistance) {
10080
+ calcToolTipPosition(targetElement, arrowDistance, otherDistance, event) {
9781
10081
  let offsetInfo = popsDOMUtils.offset(targetElement, !this.$data.config.isFixed);
9782
10082
  // 目标 宽
9783
10083
  let targetElement_width = offsetInfo.width;
@@ -9795,6 +10095,31 @@ define((function () { 'use strict';
9795
10095
  let targetElement_X_center_pos = targetElement_left + targetElement_width / 2 - toolTipElement_width / 2;
9796
10096
  /* 目标元素的Y轴的中间位置 */
9797
10097
  let targetElement_Y_center_pos = targetElement_top + targetElement_height / 2 - toolTipElement_height / 2;
10098
+ let mouseX = 0;
10099
+ let mouseY = 0;
10100
+ if (event != null) {
10101
+ if (event instanceof MouseEvent || event instanceof PointerEvent) {
10102
+ mouseX = event.pageX;
10103
+ mouseY = event.y;
10104
+ }
10105
+ else if (event instanceof TouchEvent) {
10106
+ let touchEvent = event.touches[0];
10107
+ mouseX = touchEvent.pageX;
10108
+ mouseY = touchEvent.pageY;
10109
+ }
10110
+ else {
10111
+ // @ts-ignore
10112
+ if (typeof event.clientX === "number") {
10113
+ // @ts-ignore
10114
+ mouseX = event.clientX;
10115
+ }
10116
+ // @ts-ignore
10117
+ if (typeof event.clientY === "number") {
10118
+ // @ts-ignore
10119
+ mouseY = event.clientY;
10120
+ }
10121
+ }
10122
+ }
9798
10123
  return {
9799
10124
  TOP: {
9800
10125
  left: targetElement_X_center_pos - otherDistance,
@@ -9820,13 +10145,19 @@ define((function () { 'use strict';
9820
10145
  arrow: "right",
9821
10146
  motion: "fadeInLeft",
9822
10147
  },
10148
+ FOLLOW: {
10149
+ left: mouseX + otherDistance,
10150
+ top: mouseY + otherDistance,
10151
+ arrow: "follow",
10152
+ motion: "",
10153
+ },
9823
10154
  };
9824
10155
  }
9825
10156
  /**
9826
10157
  * 动态修改tooltip的位置
9827
10158
  */
9828
- changePosition() {
9829
- let positionInfo = this.calcToolTipPosition(this.$data.config.target, this.$data.config.arrowDistance, this.$data.config.otherDistance);
10159
+ changePosition(event) {
10160
+ let positionInfo = this.calcToolTipPosition(this.$data.config.target, this.$data.config.arrowDistance, this.$data.config.otherDistance, event);
9830
10161
  let positionKey = this.$data.config.position.toUpperCase();
9831
10162
  let positionDetail = positionInfo[positionKey];
9832
10163
  if (positionDetail) {
@@ -9886,13 +10217,13 @@ define((function () { 'use strict';
9886
10217
  if (typeof timeId === "number") {
9887
10218
  // 只清除一个
9888
10219
  if (timeId == currentTimeId) {
9889
- clearTimeout(timeId);
10220
+ popsUtils.clearTimeout(timeId);
9890
10221
  timeIdList.splice(index, 1);
9891
10222
  break;
9892
10223
  }
9893
10224
  }
9894
10225
  else {
9895
- clearTimeout(currentTimeId);
10226
+ popsUtils.clearTimeout(currentTimeId);
9896
10227
  timeIdList.splice(index, 1);
9897
10228
  index--;
9898
10229
  }
@@ -9926,7 +10257,7 @@ define((function () { 'use strict';
9926
10257
  // 更新内容
9927
10258
  this.changeContent();
9928
10259
  // 更新tip的位置
9929
- this.changePosition();
10260
+ this.changePosition(event);
9930
10261
  if (typeof this.$data.config.showAfterCallBack === "function") {
9931
10262
  this.$data.config.showAfterCallBack(this.$el.$toolTip);
9932
10263
  }
@@ -9971,16 +10302,24 @@ define((function () { 'use strict';
9971
10302
  this.$data.config.delayCloseTime <= 0)) {
9972
10303
  this.$data.config.delayCloseTime = 100;
9973
10304
  }
9974
- let timeId = setTimeout(() => {
10305
+ let timeId = popsUtils.setTimeout(() => {
9975
10306
  // 设置属性触发关闭动画
9976
10307
  this.clearCloseTimeoutId(eventType, timeId);
9977
10308
  if (this.$el.$toolTip == null) {
9978
10309
  // 已清除了
9979
10310
  return;
9980
10311
  }
9981
- this.$el.$toolTip.setAttribute("data-motion", this.$el.$toolTip
9982
- .getAttribute("data-motion")
9983
- .replace("fadeIn", "fadeOut"));
10312
+ let motion = this.$el.$toolTip.getAttribute("data-motion");
10313
+ if (motion == null || motion.trim() === "") {
10314
+ // 没有动画
10315
+ this.toolTipAnimationFinishEvent();
10316
+ }
10317
+ else {
10318
+ // 修改data-motion触发动画关闭
10319
+ this.$el.$toolTip.setAttribute("data-motion", this.$el.$toolTip
10320
+ .getAttribute("data-motion")
10321
+ .replace("fadeIn", "fadeOut"));
10322
+ }
9984
10323
  }, this.$data.config.delayCloseTime);
9985
10324
  this.addCloseTimeoutId(eventType, timeId);
9986
10325
  if (typeof this.$data.config.closeAfterCallBack === "function") {
@@ -10094,7 +10433,7 @@ define((function () { 'use strict';
10094
10433
  config = popsUtils.assign(config, GlobalConfig.getGlobalConfig());
10095
10434
  config = popsUtils.assign(config, details);
10096
10435
  if (!(config.target instanceof HTMLElement)) {
10097
- throw "config.target 必须是HTMLElement类型";
10436
+ throw new TypeError("config.target 必须是HTMLElement类型");
10098
10437
  }
10099
10438
  config = PopsHandler.handleOnly(PopsType, config);
10100
10439
  const { $shadowContainer, $shadowRoot } = PopsHandler.handlerShadow(config);
@@ -10127,7 +10466,7 @@ define((function () { 'use strict';
10127
10466
  /** 配置 */
10128
10467
  config = {
10129
10468
  /** 版本号 */
10130
- version: "2025.5.25",
10469
+ version: "2025.5.26",
10131
10470
  cssText: {
10132
10471
  /** 主CSS */
10133
10472
  index: indexCSS,
@@ -10236,7 +10575,7 @@ define((function () { 'use strict';
10236
10575
  popsDOMUtils.appendHead(animationStyle);
10237
10576
  this.config.animation = null;
10238
10577
  this.config.animation = PopsInstanceUtils.getKeyFrames(animationStyle.sheet);
10239
- setTimeout(() => {
10578
+ popsUtils.setTimeout(() => {
10240
10579
  animationStyle.remove();
10241
10580
  }, 50);
10242
10581
  }