@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.
@@ -5,12 +5,6 @@ System.register('pops', [], (function (exports) {
5
5
 
6
6
  const SymbolEvents = Symbol("events_" + (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1));
7
7
 
8
- const PopsCoreDefaultEnv = {
9
- document: document,
10
- window: window,
11
- globalThis: globalThis,
12
- self: self,
13
- };
14
8
  const PopsCoreEnv = {
15
9
  document: document,
16
10
  window: window,
@@ -18,12 +12,6 @@ System.register('pops', [], (function (exports) {
18
12
  self: self,
19
13
  };
20
14
  const PopsCore = {
21
- init(option) {
22
- if (!option) {
23
- option = Object.assign({}, PopsCoreDefaultEnv);
24
- }
25
- Object.assign(PopsCoreEnv, option);
26
- },
27
15
  get document() {
28
16
  return PopsCoreEnv.document;
29
17
  },
@@ -43,21 +31,266 @@ System.register('pops', [], (function (exports) {
43
31
  },
44
32
  };
45
33
 
46
- 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={};}};
34
+ const createCache = (lastNumberWeakMap) => {
35
+ return (collection, nextNumber) => {
36
+ lastNumberWeakMap.set(collection, nextNumber);
37
+ return nextNumber;
38
+ };
39
+ };
40
+
41
+ /*
42
+ * The value of the constant Number.MAX_SAFE_INTEGER equals (2 ** 53 - 1) but it
43
+ * is fairly new.
44
+ */
45
+ const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER === undefined ? 9007199254740991 : Number.MAX_SAFE_INTEGER;
46
+ const TWO_TO_THE_POWER_OF_TWENTY_NINE = 536870912;
47
+ const TWO_TO_THE_POWER_OF_THIRTY = TWO_TO_THE_POWER_OF_TWENTY_NINE * 2;
48
+ const createGenerateUniqueNumber = (cache, lastNumberWeakMap) => {
49
+ return (collection) => {
50
+ const lastNumber = lastNumberWeakMap.get(collection);
51
+ /*
52
+ * Let's try the cheapest algorithm first. It might fail to produce a new
53
+ * number, but it is so cheap that it is okay to take the risk. Just
54
+ * increase the last number by one or reset it to 0 if we reached the upper
55
+ * bound of SMIs (which stands for small integers). When the last number is
56
+ * unknown it is assumed that the collection contains zero based consecutive
57
+ * numbers.
58
+ */
59
+ let nextNumber = lastNumber === undefined ? collection.size : lastNumber < TWO_TO_THE_POWER_OF_THIRTY ? lastNumber + 1 : 0;
60
+ if (!collection.has(nextNumber)) {
61
+ return cache(collection, nextNumber);
62
+ }
63
+ /*
64
+ * If there are less than half of 2 ** 30 numbers stored in the collection,
65
+ * the chance to generate a new random number in the range from 0 to 2 ** 30
66
+ * is at least 50%. It's benifitial to use only SMIs because they perform
67
+ * much better in any environment based on V8.
68
+ */
69
+ if (collection.size < TWO_TO_THE_POWER_OF_TWENTY_NINE) {
70
+ while (collection.has(nextNumber)) {
71
+ nextNumber = Math.floor(Math.random() * TWO_TO_THE_POWER_OF_THIRTY);
72
+ }
73
+ return cache(collection, nextNumber);
74
+ }
75
+ // Quickly check if there is a theoretical chance to generate a new number.
76
+ if (collection.size > MAX_SAFE_INTEGER) {
77
+ throw new Error('Congratulations, you created a collection of unique numbers which uses all available integers!');
78
+ }
79
+ // Otherwise use the full scale of safely usable integers.
80
+ while (collection.has(nextNumber)) {
81
+ nextNumber = Math.floor(Math.random() * MAX_SAFE_INTEGER);
82
+ }
83
+ return cache(collection, nextNumber);
84
+ };
85
+ };
86
+
87
+ const LAST_NUMBER_WEAK_MAP = new WeakMap();
88
+ const cache = createCache(LAST_NUMBER_WEAK_MAP);
89
+ const generateUniqueNumber = createGenerateUniqueNumber(cache, LAST_NUMBER_WEAK_MAP);
47
90
 
48
- 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}
91
+ const isMessagePort = (sender) => {
92
+ return typeof sender.start === 'function';
93
+ };
94
+
95
+ const PORT_MAP = new WeakMap();
49
96
 
50
- 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();}};
97
+ const extendBrokerImplementation = (partialBrokerImplementation) => ({
98
+ ...partialBrokerImplementation,
99
+ connect: ({ call }) => {
100
+ return async () => {
101
+ const { port1, port2 } = new MessageChannel();
102
+ const portId = await call('connect', { port: port1 }, [port1]);
103
+ PORT_MAP.set(port2, portId);
104
+ return port2;
105
+ };
106
+ },
107
+ disconnect: ({ call }) => {
108
+ return async (port) => {
109
+ const portId = PORT_MAP.get(port);
110
+ if (portId === undefined) {
111
+ throw new Error('The given port is not connected.');
112
+ }
113
+ await call('disconnect', { portId });
114
+ };
115
+ },
116
+ isSupported: ({ call }) => {
117
+ return () => call('isSupported');
118
+ }
119
+ });
120
+
121
+ const ONGOING_REQUESTS = new WeakMap();
122
+ const createOrGetOngoingRequests = (sender) => {
123
+ if (ONGOING_REQUESTS.has(sender)) {
124
+ // @todo TypeScript needs to be convinced that has() works as expected.
125
+ return ONGOING_REQUESTS.get(sender);
126
+ }
127
+ const ongoingRequests = new Map();
128
+ ONGOING_REQUESTS.set(sender, ongoingRequests);
129
+ return ongoingRequests;
130
+ };
131
+ const createBroker = (brokerImplementation) => {
132
+ const fullBrokerImplementation = extendBrokerImplementation(brokerImplementation);
133
+ return (sender) => {
134
+ const ongoingRequests = createOrGetOngoingRequests(sender);
135
+ sender.addEventListener('message', (({ data: message }) => {
136
+ const { id } = message;
137
+ if (id !== null && ongoingRequests.has(id)) {
138
+ const { reject, resolve } = ongoingRequests.get(id);
139
+ ongoingRequests.delete(id);
140
+ if (message.error === undefined) {
141
+ resolve(message.result);
142
+ }
143
+ else {
144
+ reject(new Error(message.error.message));
145
+ }
146
+ }
147
+ }));
148
+ if (isMessagePort(sender)) {
149
+ sender.start();
150
+ }
151
+ const call = (method, params = null, transferables = []) => {
152
+ return new Promise((resolve, reject) => {
153
+ const id = generateUniqueNumber(ongoingRequests);
154
+ ongoingRequests.set(id, { reject, resolve });
155
+ if (params === null) {
156
+ sender.postMessage({ id, method }, transferables);
157
+ }
158
+ else {
159
+ sender.postMessage({ id, method, params }, transferables);
160
+ }
161
+ });
162
+ };
163
+ const notify = (method, params, transferables = []) => {
164
+ sender.postMessage({ id: null, method, params }, transferables);
165
+ };
166
+ let functions = {};
167
+ for (const [key, handler] of Object.entries(fullBrokerImplementation)) {
168
+ functions = { ...functions, [key]: handler({ call, notify }) };
169
+ }
170
+ return { ...functions };
171
+ };
172
+ };
173
+
174
+ // Prefilling the Maps with a function indexed by zero is necessary to be compliant with the specification.
175
+ const scheduledIntervalsState = new Map([[0, null]]); // tslint:disable-line no-empty
176
+ const scheduledTimeoutsState = new Map([[0, null]]); // tslint:disable-line no-empty
177
+ const wrap = createBroker({
178
+ clearInterval: ({ call }) => {
179
+ return (timerId) => {
180
+ if (typeof scheduledIntervalsState.get(timerId) === 'symbol') {
181
+ scheduledIntervalsState.set(timerId, null);
182
+ call('clear', { timerId, timerType: 'interval' }).then(() => {
183
+ scheduledIntervalsState.delete(timerId);
184
+ });
185
+ }
186
+ };
187
+ },
188
+ clearTimeout: ({ call }) => {
189
+ return (timerId) => {
190
+ if (typeof scheduledTimeoutsState.get(timerId) === 'symbol') {
191
+ scheduledTimeoutsState.set(timerId, null);
192
+ call('clear', { timerId, timerType: 'timeout' }).then(() => {
193
+ scheduledTimeoutsState.delete(timerId);
194
+ });
195
+ }
196
+ };
197
+ },
198
+ setInterval: ({ call }) => {
199
+ return (func, delay = 0, ...args) => {
200
+ const symbol = Symbol();
201
+ const timerId = generateUniqueNumber(scheduledIntervalsState);
202
+ scheduledIntervalsState.set(timerId, symbol);
203
+ const schedule = () => call('set', {
204
+ delay,
205
+ now: performance.timeOrigin + performance.now(),
206
+ timerId,
207
+ timerType: 'interval'
208
+ }).then(() => {
209
+ const state = scheduledIntervalsState.get(timerId);
210
+ if (state === undefined) {
211
+ throw new Error('The timer is in an undefined state.');
212
+ }
213
+ if (state === symbol) {
214
+ func(...args);
215
+ // Doublecheck if the interval should still be rescheduled because it could have been cleared inside of func().
216
+ if (scheduledIntervalsState.get(timerId) === symbol) {
217
+ schedule();
218
+ }
219
+ }
220
+ });
221
+ schedule();
222
+ return timerId;
223
+ };
224
+ },
225
+ setTimeout: ({ call }) => {
226
+ return (func, delay = 0, ...args) => {
227
+ const symbol = Symbol();
228
+ const timerId = generateUniqueNumber(scheduledTimeoutsState);
229
+ scheduledTimeoutsState.set(timerId, symbol);
230
+ call('set', {
231
+ delay,
232
+ now: performance.timeOrigin + performance.now(),
233
+ timerId,
234
+ timerType: 'timeout'
235
+ }).then(() => {
236
+ const state = scheduledTimeoutsState.get(timerId);
237
+ if (state === undefined) {
238
+ throw new Error('The timer is in an undefined state.');
239
+ }
240
+ if (state === symbol) {
241
+ // A timeout can be savely deleted because it is only called once.
242
+ scheduledTimeoutsState.delete(timerId);
243
+ func(...args);
244
+ }
245
+ });
246
+ return timerId;
247
+ };
248
+ }
249
+ });
250
+ const load = (url) => {
251
+ const worker = new Worker(url);
252
+ return wrap(worker);
253
+ };
254
+
255
+ const createLoadOrReturnBroker = (loadBroker, worker) => {
256
+ let broker = null;
257
+ return () => {
258
+ if (broker !== null) {
259
+ return broker;
260
+ }
261
+ const blob = new Blob([worker], { type: 'application/javascript; charset=utf-8' });
262
+ const url = URL.createObjectURL(blob);
263
+ broker = loadBroker(url);
264
+ // Bug #1: Edge up until v18 didn't like the URL to be revoked directly.
265
+ setTimeout(() => URL.revokeObjectURL(url));
266
+ return broker;
267
+ };
268
+ };
269
+
270
+ // This is the minified and stringified code of the worker-timers-worker package.
271
+ 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
272
+
273
+ const loadOrReturnBroker = createLoadOrReturnBroker(load, worker);
274
+ const clearInterval = (timerId) => loadOrReturnBroker().clearInterval(timerId);
275
+ const clearTimeout$1 = (timerId) => loadOrReturnBroker().clearTimeout(timerId);
276
+ const setInterval = (...args) => loadOrReturnBroker().setInterval(...args);
277
+ const setTimeout$1 = (...args) => loadOrReturnBroker().setTimeout(...args);
278
+
279
+ 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={};}};
280
+
281
+ 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}
282
+
283
+ 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();}};
51
284
 
52
285
  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};
53
286
 
54
287
  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}}}
55
288
 
56
- 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}
289
+ 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}
57
290
 
58
291
  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}
59
292
 
60
- 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}
293
+ 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}
61
294
 
62
295
  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}
63
296
 
@@ -279,7 +512,7 @@ System.register('pops', [], (function (exports) {
279
512
  formatByteToSize(byteSize, addType = true) {
280
513
  byteSize = parseInt(byteSize.toString());
281
514
  if (isNaN(byteSize)) {
282
- throw new Error("Utils.formatByteToSize 参数 byteSize 格式不正确");
515
+ throw new TypeError("Utils.formatByteToSize 参数 byteSize 格式不正确");
283
516
  }
284
517
  let result = 0;
285
518
  let resultType = "KB";
@@ -312,6 +545,58 @@ System.register('pops', [], (function (exports) {
312
545
  AnyTouch = () => {
313
546
  return i;
314
547
  };
548
+ /**
549
+ * 自动使用 Worker 执行 setTimeout
550
+ */
551
+ setTimeout(callback, timeout = 0) {
552
+ try {
553
+ return setTimeout$1(callback, timeout);
554
+ }
555
+ catch (error) {
556
+ return globalThis.setTimeout(callback, timeout);
557
+ }
558
+ }
559
+ /**
560
+ * 配合 .setTimeout 使用
561
+ */
562
+ clearTimeout(timeId) {
563
+ try {
564
+ if (timeId != null) {
565
+ clearTimeout$1(timeId);
566
+ }
567
+ }
568
+ catch (error) {
569
+ }
570
+ finally {
571
+ globalThis.clearTimeout(timeId);
572
+ }
573
+ }
574
+ /**
575
+ * 自动使用 Worker 执行 setInterval
576
+ */
577
+ setInterval(callback, timeout = 0) {
578
+ try {
579
+ return setInterval(callback, timeout);
580
+ }
581
+ catch (error) {
582
+ return globalThis.setInterval(callback, timeout);
583
+ }
584
+ }
585
+ /**
586
+ * 配合 .setInterval 使用
587
+ */
588
+ clearInterval(timeId) {
589
+ try {
590
+ if (timeId != null) {
591
+ clearInterval(timeId);
592
+ }
593
+ }
594
+ catch (error) {
595
+ }
596
+ finally {
597
+ globalThis.clearInterval(timeId);
598
+ }
599
+ }
315
600
  }
316
601
  const popsUtils = new PopsUtils();
317
602
 
@@ -685,7 +970,7 @@ System.register('pops', [], (function (exports) {
685
970
  }
686
971
  if (checkDOMReadyState()) {
687
972
  /* 检查document状态 */
688
- setTimeout(callback);
973
+ popsUtils.setTimeout(callback, 0);
689
974
  }
690
975
  else {
691
976
  /* 添加监听 */
@@ -1912,7 +2197,7 @@ System.register('pops', [], (function (exports) {
1912
2197
  let popsElement = animElement.querySelector(".pops[type-value]");
1913
2198
  if (popsType === "drawer") {
1914
2199
  let drawerConfig = config;
1915
- setTimeout(() => {
2200
+ popsUtils.setTimeout(() => {
1916
2201
  maskElement.style.setProperty("display", "none");
1917
2202
  if (["top", "bottom"].includes(drawerConfig.direction)) {
1918
2203
  popsElement.style.setProperty("height", "0");
@@ -1978,7 +2263,7 @@ System.register('pops', [], (function (exports) {
1978
2263
  let popsElement = animElement.querySelector(".pops[type-value]");
1979
2264
  if (popsType === "drawer") {
1980
2265
  let drawerConfig = config;
1981
- setTimeout(() => {
2266
+ popsUtils.setTimeout(() => {
1982
2267
  popsDOMUtils.css(maskElement, "display", "");
1983
2268
  let direction = drawerConfig.direction;
1984
2269
  let size = drawerConfig.size.toString();
@@ -1992,7 +2277,7 @@ System.register('pops', [], (function (exports) {
1992
2277
  console.error("未知direction:", direction);
1993
2278
  }
1994
2279
  resolve();
1995
- }, drawerConfig.openDelay);
2280
+ }, drawerConfig.openDelay ?? 0);
1996
2281
  }
1997
2282
  else {
1998
2283
  let findLayerIns = layerConfigList.find((layerConfigItem) => layerConfigItem.guid === guid);
@@ -2084,7 +2369,7 @@ System.register('pops', [], (function (exports) {
2084
2369
  }
2085
2370
  }
2086
2371
  if (popsType === "drawer") {
2087
- setTimeout(() => {
2372
+ popsUtils.setTimeout(() => {
2088
2373
  transitionendEvent();
2089
2374
  }, drawerConfig.closeDelay);
2090
2375
  }
@@ -2301,10 +2586,10 @@ System.register('pops', [], (function (exports) {
2301
2586
  */
2302
2587
  sortElementListByProperty(getBeforeValueFun, getAfterValueFun, sortByDesc = true) {
2303
2588
  if (typeof sortByDesc !== "boolean") {
2304
- throw "参数 sortByDesc 必须为boolean类型";
2589
+ throw new TypeError("参数 sortByDesc 必须为boolean类型");
2305
2590
  }
2306
2591
  if (getBeforeValueFun == null || getAfterValueFun == null) {
2307
- throw "获取前面的值或后面的值的方法不能为空";
2592
+ throw new Error("获取前面的值或后面的值的方法不能为空");
2308
2593
  }
2309
2594
  return function (after_obj, before_obj) {
2310
2595
  var beforeValue = getBeforeValueFun(before_obj); /* 前 */
@@ -3901,7 +4186,7 @@ System.register('pops', [], (function (exports) {
3901
4186
  config = popsUtils.assign(config, GlobalConfig.getGlobalConfig());
3902
4187
  config = popsUtils.assign(config, details);
3903
4188
  if (config.url == null) {
3904
- throw "config.url不能为空";
4189
+ throw new Error("config.url不能为空");
3905
4190
  }
3906
4191
  config = PopsHandler.handleOnly(PopsType, config);
3907
4192
  const { $shadowContainer, $shadowRoot } = PopsHandler.handlerShadow(config);
@@ -4359,8 +4644,8 @@ System.register('pops', [], (function (exports) {
4359
4644
  config.beforeAppendToPageCallBack($shadowRoot, $shadowContainer);
4360
4645
  }
4361
4646
  popsDOMUtils.appendBody($shadowContainer);
4362
- setTimeout(() => {
4363
- setTimeout(() => {
4647
+ popsUtils.setTimeout(() => {
4648
+ popsUtils.setTimeout(() => {
4364
4649
  $pops.style.setProperty("transform", "");
4365
4650
  }, config.openDelay);
4366
4651
  }, 50);
@@ -5081,12 +5366,12 @@ System.register('pops', [], (function (exports) {
5081
5366
  let downloadIframeLinkElement = document.createElement("iframe");
5082
5367
  downloadIframeLinkElement.src = downloadInfo.url;
5083
5368
  downloadIframeLinkElement.onload = function () {
5084
- setTimeout(() => {
5369
+ popsUtils.setTimeout(() => {
5085
5370
  downloadIframeLinkElement.remove();
5086
5371
  }, 1000);
5087
5372
  };
5088
5373
  $shadowRoot.appendChild(downloadIframeLinkElement);
5089
- setTimeout(() => {
5374
+ popsUtils.setTimeout(() => {
5090
5375
  downloadIframeLinkElement.remove();
5091
5376
  }, 3 * 60 * 1000);
5092
5377
  }
@@ -6328,11 +6613,11 @@ System.register('pops', [], (function (exports) {
6328
6613
  let isSuccess = false;
6329
6614
  let oldTotalWidth = this.$data.totalWidth;
6330
6615
  let timer = void 0;
6331
- let interval = setInterval(() => {
6616
+ let interval = popsUtils.setInterval(() => {
6332
6617
  if (isSuccess) {
6333
6618
  this.$interval.isCheck = false;
6334
- clearTimeout(timer);
6335
- clearInterval(interval);
6619
+ popsUtils.clearTimeout(timer);
6620
+ popsUtils.clearInterval(interval);
6336
6621
  }
6337
6622
  else {
6338
6623
  this.initTotalWidth();
@@ -6352,8 +6637,8 @@ System.register('pops', [], (function (exports) {
6352
6637
  }
6353
6638
  }, checkStepTime);
6354
6639
  /* 最长检测时间是10s */
6355
- timer = setTimeout(() => {
6356
- clearInterval(interval);
6640
+ timer = popsUtils.setTimeout(() => {
6641
+ popsUtils.clearInterval(interval);
6357
6642
  }, maxTime);
6358
6643
  },
6359
6644
  /**
@@ -6721,16 +7006,16 @@ System.register('pops', [], (function (exports) {
6721
7006
  return;
6722
7007
  }
6723
7008
  this.$data.isCheckingStopDragMove = true;
6724
- let interval = setInterval(() => {
7009
+ let interval = popsUtils.setInterval(() => {
6725
7010
  if (!this.$data.isMove) {
6726
7011
  this.$data.isCheckingStopDragMove = false;
6727
7012
  this.closeToolTip();
6728
- clearInterval(interval);
7013
+ popsUtils.clearInterval(interval);
6729
7014
  }
6730
7015
  }, 200);
6731
- setTimeout(() => {
7016
+ popsUtils.setTimeout(() => {
6732
7017
  this.$data.isCheckingStopDragMove = false;
6733
- clearInterval(interval);
7018
+ popsUtils.clearInterval(interval);
6734
7019
  }, 2000);
6735
7020
  },
6736
7021
  /**
@@ -8608,7 +8893,7 @@ System.register('pops', [], (function (exports) {
8608
8893
  config = popsUtils.assign(config, details);
8609
8894
  config = PopsHandler.handleOnly(PopsType, config);
8610
8895
  if (config.target == null) {
8611
- throw "config.target 不能为空";
8896
+ throw new Error("config.target 不能为空");
8612
8897
  }
8613
8898
  if (details.data) {
8614
8899
  // @ts-ignore
@@ -9094,7 +9379,7 @@ System.register('pops', [], (function (exports) {
9094
9379
  config = popsUtils.assign(config, GlobalConfig.getGlobalConfig());
9095
9380
  config = popsUtils.assign(config, details);
9096
9381
  if (config.target == null) {
9097
- throw new TypeError("config.target 不能为空");
9382
+ throw new Error("config.target 不能为空");
9098
9383
  }
9099
9384
  /* 做下兼容处理 */
9100
9385
  if (config.inputTarget == null) {
@@ -9365,7 +9650,7 @@ System.register('pops', [], (function (exports) {
9365
9650
  popsDOMUtils.on([config.inputTarget], ["focus", "click", "input"], void 0, SearchSuggestion.showEvent, option);
9366
9651
  }
9367
9652
  else {
9368
- throw new TypeError("未知followPosition:" + config.followPosition);
9653
+ throw new Error("未知followPosition:" + config.followPosition);
9369
9654
  }
9370
9655
  },
9371
9656
  /**
@@ -9633,6 +9918,7 @@ System.register('pops', [], (function (exports) {
9633
9918
  useShadowRoot: true,
9634
9919
  target: null,
9635
9920
  content: "默认文字",
9921
+ isDiffContent: false,
9636
9922
  position: "top",
9637
9923
  className: "",
9638
9924
  isFixed: false,
@@ -9758,6 +10044,19 @@ System.register('pops', [], (function (exports) {
9758
10044
  if (text == null) {
9759
10045
  text = this.getContent();
9760
10046
  }
10047
+ if (this.$data.config.isDiffContent) {
10048
+ let contentPropKey = "data-content";
10049
+ // @ts-ignore
10050
+ let originContentText = this.$el.$content[contentPropKey];
10051
+ if (typeof originContentText === "string") {
10052
+ if (originContentText === text) {
10053
+ // 内容未改变,不修改避免渲染
10054
+ return;
10055
+ }
10056
+ }
10057
+ // @ts-ignore
10058
+ this.$el.$content[contentPropKey] = text;
10059
+ }
9761
10060
  PopsSafeUtils.setSafeHTML(this.$el.$content, text);
9762
10061
  }
9763
10062
  /**
@@ -9776,11 +10075,12 @@ System.register('pops', [], (function (exports) {
9776
10075
  }
9777
10076
  /**
9778
10077
  * 计算 提示框的位置
10078
+ * @param event 触发的事件
9779
10079
  * @param targetElement 目标元素
9780
10080
  * @param arrowDistance 箭头和目标元素的距离
9781
10081
  * @param otherDistance 其它位置的偏移
9782
10082
  */
9783
- calcToolTipPosition(targetElement, arrowDistance, otherDistance) {
10083
+ calcToolTipPosition(targetElement, arrowDistance, otherDistance, event) {
9784
10084
  let offsetInfo = popsDOMUtils.offset(targetElement, !this.$data.config.isFixed);
9785
10085
  // 目标 宽
9786
10086
  let targetElement_width = offsetInfo.width;
@@ -9798,6 +10098,31 @@ System.register('pops', [], (function (exports) {
9798
10098
  let targetElement_X_center_pos = targetElement_left + targetElement_width / 2 - toolTipElement_width / 2;
9799
10099
  /* 目标元素的Y轴的中间位置 */
9800
10100
  let targetElement_Y_center_pos = targetElement_top + targetElement_height / 2 - toolTipElement_height / 2;
10101
+ let mouseX = 0;
10102
+ let mouseY = 0;
10103
+ if (event != null) {
10104
+ if (event instanceof MouseEvent || event instanceof PointerEvent) {
10105
+ mouseX = event.pageX;
10106
+ mouseY = event.y;
10107
+ }
10108
+ else if (event instanceof TouchEvent) {
10109
+ let touchEvent = event.touches[0];
10110
+ mouseX = touchEvent.pageX;
10111
+ mouseY = touchEvent.pageY;
10112
+ }
10113
+ else {
10114
+ // @ts-ignore
10115
+ if (typeof event.clientX === "number") {
10116
+ // @ts-ignore
10117
+ mouseX = event.clientX;
10118
+ }
10119
+ // @ts-ignore
10120
+ if (typeof event.clientY === "number") {
10121
+ // @ts-ignore
10122
+ mouseY = event.clientY;
10123
+ }
10124
+ }
10125
+ }
9801
10126
  return {
9802
10127
  TOP: {
9803
10128
  left: targetElement_X_center_pos - otherDistance,
@@ -9823,13 +10148,19 @@ System.register('pops', [], (function (exports) {
9823
10148
  arrow: "right",
9824
10149
  motion: "fadeInLeft",
9825
10150
  },
10151
+ FOLLOW: {
10152
+ left: mouseX + otherDistance,
10153
+ top: mouseY + otherDistance,
10154
+ arrow: "follow",
10155
+ motion: "",
10156
+ },
9826
10157
  };
9827
10158
  }
9828
10159
  /**
9829
10160
  * 动态修改tooltip的位置
9830
10161
  */
9831
- changePosition() {
9832
- let positionInfo = this.calcToolTipPosition(this.$data.config.target, this.$data.config.arrowDistance, this.$data.config.otherDistance);
10162
+ changePosition(event) {
10163
+ let positionInfo = this.calcToolTipPosition(this.$data.config.target, this.$data.config.arrowDistance, this.$data.config.otherDistance, event);
9833
10164
  let positionKey = this.$data.config.position.toUpperCase();
9834
10165
  let positionDetail = positionInfo[positionKey];
9835
10166
  if (positionDetail) {
@@ -9889,13 +10220,13 @@ System.register('pops', [], (function (exports) {
9889
10220
  if (typeof timeId === "number") {
9890
10221
  // 只清除一个
9891
10222
  if (timeId == currentTimeId) {
9892
- clearTimeout(timeId);
10223
+ popsUtils.clearTimeout(timeId);
9893
10224
  timeIdList.splice(index, 1);
9894
10225
  break;
9895
10226
  }
9896
10227
  }
9897
10228
  else {
9898
- clearTimeout(currentTimeId);
10229
+ popsUtils.clearTimeout(currentTimeId);
9899
10230
  timeIdList.splice(index, 1);
9900
10231
  index--;
9901
10232
  }
@@ -9929,7 +10260,7 @@ System.register('pops', [], (function (exports) {
9929
10260
  // 更新内容
9930
10261
  this.changeContent();
9931
10262
  // 更新tip的位置
9932
- this.changePosition();
10263
+ this.changePosition(event);
9933
10264
  if (typeof this.$data.config.showAfterCallBack === "function") {
9934
10265
  this.$data.config.showAfterCallBack(this.$el.$toolTip);
9935
10266
  }
@@ -9974,16 +10305,24 @@ System.register('pops', [], (function (exports) {
9974
10305
  this.$data.config.delayCloseTime <= 0)) {
9975
10306
  this.$data.config.delayCloseTime = 100;
9976
10307
  }
9977
- let timeId = setTimeout(() => {
10308
+ let timeId = popsUtils.setTimeout(() => {
9978
10309
  // 设置属性触发关闭动画
9979
10310
  this.clearCloseTimeoutId(eventType, timeId);
9980
10311
  if (this.$el.$toolTip == null) {
9981
10312
  // 已清除了
9982
10313
  return;
9983
10314
  }
9984
- this.$el.$toolTip.setAttribute("data-motion", this.$el.$toolTip
9985
- .getAttribute("data-motion")
9986
- .replace("fadeIn", "fadeOut"));
10315
+ let motion = this.$el.$toolTip.getAttribute("data-motion");
10316
+ if (motion == null || motion.trim() === "") {
10317
+ // 没有动画
10318
+ this.toolTipAnimationFinishEvent();
10319
+ }
10320
+ else {
10321
+ // 修改data-motion触发动画关闭
10322
+ this.$el.$toolTip.setAttribute("data-motion", this.$el.$toolTip
10323
+ .getAttribute("data-motion")
10324
+ .replace("fadeIn", "fadeOut"));
10325
+ }
9987
10326
  }, this.$data.config.delayCloseTime);
9988
10327
  this.addCloseTimeoutId(eventType, timeId);
9989
10328
  if (typeof this.$data.config.closeAfterCallBack === "function") {
@@ -10097,7 +10436,7 @@ System.register('pops', [], (function (exports) {
10097
10436
  config = popsUtils.assign(config, GlobalConfig.getGlobalConfig());
10098
10437
  config = popsUtils.assign(config, details);
10099
10438
  if (!(config.target instanceof HTMLElement)) {
10100
- throw "config.target 必须是HTMLElement类型";
10439
+ throw new TypeError("config.target 必须是HTMLElement类型");
10101
10440
  }
10102
10441
  config = PopsHandler.handleOnly(PopsType, config);
10103
10442
  const { $shadowContainer, $shadowRoot } = PopsHandler.handlerShadow(config);
@@ -10130,7 +10469,7 @@ System.register('pops', [], (function (exports) {
10130
10469
  /** 配置 */
10131
10470
  config = {
10132
10471
  /** 版本号 */
10133
- version: "2025.5.25",
10472
+ version: "2025.5.26",
10134
10473
  cssText: {
10135
10474
  /** 主CSS */
10136
10475
  index: indexCSS,
@@ -10239,7 +10578,7 @@ System.register('pops', [], (function (exports) {
10239
10578
  popsDOMUtils.appendHead(animationStyle);
10240
10579
  this.config.animation = null;
10241
10580
  this.config.animation = PopsInstanceUtils.getKeyFrames(animationStyle.sheet);
10242
- setTimeout(() => {
10581
+ popsUtils.setTimeout(() => {
10243
10582
  animationStyle.remove();
10244
10583
  }, 50);
10245
10584
  }