@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 +394 -55
- package/dist/index.amd.js.map +1 -1
- package/dist/index.cjs.js +394 -55
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.js +394 -55
- package/dist/index.esm.js.map +1 -1
- package/dist/index.iife.js +394 -55
- package/dist/index.iife.js.map +1 -1
- package/dist/index.system.js +394 -55
- package/dist/index.system.js.map +1 -1
- package/dist/index.umd.js +394 -55
- package/dist/index.umd.js.map +1 -1
- package/dist/types/src/Pops.d.ts +550 -199
- package/dist/types/src/components/rightClickMenu/index.d.ts +545 -199
- package/dist/types/src/components/tooltip/index.d.ts +10 -2
- package/dist/types/src/components/tooltip/indexType.d.ts +13 -4
- package/dist/types/src/utils/PopsUtils.d.ts +16 -0
- package/package.json +6 -5
- package/src/Pops.ts +2 -2
- package/src/components/drawer/index.ts +2 -2
- package/src/components/folder/index.ts +2 -2
- package/src/components/iframe/index.ts +1 -1
- package/src/components/panel/PanelHandleContentDetails.ts +9 -9
- package/src/components/rightClickMenu/index.ts +1 -1
- package/src/components/searchSuggestion/index.ts +2 -2
- package/src/components/tooltip/config.ts +1 -0
- package/src/components/tooltip/index.ts +69 -16
- package/src/components/tooltip/indexType.ts +18 -4
- package/src/utils/PopsDOMUtils.ts +1 -1
- package/src/utils/PopsInstanceUtils.ts +6 -6
- package/src/utils/PopsUtils.ts +53 -1
package/dist/index.esm.js
CHANGED
|
@@ -1,11 +1,5 @@
|
|
|
1
1
|
const SymbolEvents = Symbol("events_" + (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1));
|
|
2
2
|
|
|
3
|
-
const PopsCoreDefaultEnv = {
|
|
4
|
-
document: document,
|
|
5
|
-
window: window,
|
|
6
|
-
globalThis: globalThis,
|
|
7
|
-
self: self,
|
|
8
|
-
};
|
|
9
3
|
const PopsCoreEnv = {
|
|
10
4
|
document: document,
|
|
11
5
|
window: window,
|
|
@@ -13,12 +7,6 @@ const PopsCoreEnv = {
|
|
|
13
7
|
self: self,
|
|
14
8
|
};
|
|
15
9
|
const PopsCore = {
|
|
16
|
-
init(option) {
|
|
17
|
-
if (!option) {
|
|
18
|
-
option = Object.assign({}, PopsCoreDefaultEnv);
|
|
19
|
-
}
|
|
20
|
-
Object.assign(PopsCoreEnv, option);
|
|
21
|
-
},
|
|
22
10
|
get document() {
|
|
23
11
|
return PopsCoreEnv.document;
|
|
24
12
|
},
|
|
@@ -38,21 +26,266 @@ const OriginPrototype = {
|
|
|
38
26
|
},
|
|
39
27
|
};
|
|
40
28
|
|
|
41
|
-
|
|
29
|
+
const createCache = (lastNumberWeakMap) => {
|
|
30
|
+
return (collection, nextNumber) => {
|
|
31
|
+
lastNumberWeakMap.set(collection, nextNumber);
|
|
32
|
+
return nextNumber;
|
|
33
|
+
};
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
/*
|
|
37
|
+
* The value of the constant Number.MAX_SAFE_INTEGER equals (2 ** 53 - 1) but it
|
|
38
|
+
* is fairly new.
|
|
39
|
+
*/
|
|
40
|
+
const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER === undefined ? 9007199254740991 : Number.MAX_SAFE_INTEGER;
|
|
41
|
+
const TWO_TO_THE_POWER_OF_TWENTY_NINE = 536870912;
|
|
42
|
+
const TWO_TO_THE_POWER_OF_THIRTY = TWO_TO_THE_POWER_OF_TWENTY_NINE * 2;
|
|
43
|
+
const createGenerateUniqueNumber = (cache, lastNumberWeakMap) => {
|
|
44
|
+
return (collection) => {
|
|
45
|
+
const lastNumber = lastNumberWeakMap.get(collection);
|
|
46
|
+
/*
|
|
47
|
+
* Let's try the cheapest algorithm first. It might fail to produce a new
|
|
48
|
+
* number, but it is so cheap that it is okay to take the risk. Just
|
|
49
|
+
* increase the last number by one or reset it to 0 if we reached the upper
|
|
50
|
+
* bound of SMIs (which stands for small integers). When the last number is
|
|
51
|
+
* unknown it is assumed that the collection contains zero based consecutive
|
|
52
|
+
* numbers.
|
|
53
|
+
*/
|
|
54
|
+
let nextNumber = lastNumber === undefined ? collection.size : lastNumber < TWO_TO_THE_POWER_OF_THIRTY ? lastNumber + 1 : 0;
|
|
55
|
+
if (!collection.has(nextNumber)) {
|
|
56
|
+
return cache(collection, nextNumber);
|
|
57
|
+
}
|
|
58
|
+
/*
|
|
59
|
+
* If there are less than half of 2 ** 30 numbers stored in the collection,
|
|
60
|
+
* the chance to generate a new random number in the range from 0 to 2 ** 30
|
|
61
|
+
* is at least 50%. It's benifitial to use only SMIs because they perform
|
|
62
|
+
* much better in any environment based on V8.
|
|
63
|
+
*/
|
|
64
|
+
if (collection.size < TWO_TO_THE_POWER_OF_TWENTY_NINE) {
|
|
65
|
+
while (collection.has(nextNumber)) {
|
|
66
|
+
nextNumber = Math.floor(Math.random() * TWO_TO_THE_POWER_OF_THIRTY);
|
|
67
|
+
}
|
|
68
|
+
return cache(collection, nextNumber);
|
|
69
|
+
}
|
|
70
|
+
// Quickly check if there is a theoretical chance to generate a new number.
|
|
71
|
+
if (collection.size > MAX_SAFE_INTEGER) {
|
|
72
|
+
throw new Error('Congratulations, you created a collection of unique numbers which uses all available integers!');
|
|
73
|
+
}
|
|
74
|
+
// Otherwise use the full scale of safely usable integers.
|
|
75
|
+
while (collection.has(nextNumber)) {
|
|
76
|
+
nextNumber = Math.floor(Math.random() * MAX_SAFE_INTEGER);
|
|
77
|
+
}
|
|
78
|
+
return cache(collection, nextNumber);
|
|
79
|
+
};
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
const LAST_NUMBER_WEAK_MAP = new WeakMap();
|
|
83
|
+
const cache = createCache(LAST_NUMBER_WEAK_MAP);
|
|
84
|
+
const generateUniqueNumber = createGenerateUniqueNumber(cache, LAST_NUMBER_WEAK_MAP);
|
|
42
85
|
|
|
43
|
-
const
|
|
86
|
+
const isMessagePort = (sender) => {
|
|
87
|
+
return typeof sender.start === 'function';
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
const PORT_MAP = new WeakMap();
|
|
44
91
|
|
|
45
|
-
|
|
92
|
+
const extendBrokerImplementation = (partialBrokerImplementation) => ({
|
|
93
|
+
...partialBrokerImplementation,
|
|
94
|
+
connect: ({ call }) => {
|
|
95
|
+
return async () => {
|
|
96
|
+
const { port1, port2 } = new MessageChannel();
|
|
97
|
+
const portId = await call('connect', { port: port1 }, [port1]);
|
|
98
|
+
PORT_MAP.set(port2, portId);
|
|
99
|
+
return port2;
|
|
100
|
+
};
|
|
101
|
+
},
|
|
102
|
+
disconnect: ({ call }) => {
|
|
103
|
+
return async (port) => {
|
|
104
|
+
const portId = PORT_MAP.get(port);
|
|
105
|
+
if (portId === undefined) {
|
|
106
|
+
throw new Error('The given port is not connected.');
|
|
107
|
+
}
|
|
108
|
+
await call('disconnect', { portId });
|
|
109
|
+
};
|
|
110
|
+
},
|
|
111
|
+
isSupported: ({ call }) => {
|
|
112
|
+
return () => call('isSupported');
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
|
|
116
|
+
const ONGOING_REQUESTS = new WeakMap();
|
|
117
|
+
const createOrGetOngoingRequests = (sender) => {
|
|
118
|
+
if (ONGOING_REQUESTS.has(sender)) {
|
|
119
|
+
// @todo TypeScript needs to be convinced that has() works as expected.
|
|
120
|
+
return ONGOING_REQUESTS.get(sender);
|
|
121
|
+
}
|
|
122
|
+
const ongoingRequests = new Map();
|
|
123
|
+
ONGOING_REQUESTS.set(sender, ongoingRequests);
|
|
124
|
+
return ongoingRequests;
|
|
125
|
+
};
|
|
126
|
+
const createBroker = (brokerImplementation) => {
|
|
127
|
+
const fullBrokerImplementation = extendBrokerImplementation(brokerImplementation);
|
|
128
|
+
return (sender) => {
|
|
129
|
+
const ongoingRequests = createOrGetOngoingRequests(sender);
|
|
130
|
+
sender.addEventListener('message', (({ data: message }) => {
|
|
131
|
+
const { id } = message;
|
|
132
|
+
if (id !== null && ongoingRequests.has(id)) {
|
|
133
|
+
const { reject, resolve } = ongoingRequests.get(id);
|
|
134
|
+
ongoingRequests.delete(id);
|
|
135
|
+
if (message.error === undefined) {
|
|
136
|
+
resolve(message.result);
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
reject(new Error(message.error.message));
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}));
|
|
143
|
+
if (isMessagePort(sender)) {
|
|
144
|
+
sender.start();
|
|
145
|
+
}
|
|
146
|
+
const call = (method, params = null, transferables = []) => {
|
|
147
|
+
return new Promise((resolve, reject) => {
|
|
148
|
+
const id = generateUniqueNumber(ongoingRequests);
|
|
149
|
+
ongoingRequests.set(id, { reject, resolve });
|
|
150
|
+
if (params === null) {
|
|
151
|
+
sender.postMessage({ id, method }, transferables);
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
sender.postMessage({ id, method, params }, transferables);
|
|
155
|
+
}
|
|
156
|
+
});
|
|
157
|
+
};
|
|
158
|
+
const notify = (method, params, transferables = []) => {
|
|
159
|
+
sender.postMessage({ id: null, method, params }, transferables);
|
|
160
|
+
};
|
|
161
|
+
let functions = {};
|
|
162
|
+
for (const [key, handler] of Object.entries(fullBrokerImplementation)) {
|
|
163
|
+
functions = { ...functions, [key]: handler({ call, notify }) };
|
|
164
|
+
}
|
|
165
|
+
return { ...functions };
|
|
166
|
+
};
|
|
167
|
+
};
|
|
168
|
+
|
|
169
|
+
// Prefilling the Maps with a function indexed by zero is necessary to be compliant with the specification.
|
|
170
|
+
const scheduledIntervalsState = new Map([[0, null]]); // tslint:disable-line no-empty
|
|
171
|
+
const scheduledTimeoutsState = new Map([[0, null]]); // tslint:disable-line no-empty
|
|
172
|
+
const wrap = createBroker({
|
|
173
|
+
clearInterval: ({ call }) => {
|
|
174
|
+
return (timerId) => {
|
|
175
|
+
if (typeof scheduledIntervalsState.get(timerId) === 'symbol') {
|
|
176
|
+
scheduledIntervalsState.set(timerId, null);
|
|
177
|
+
call('clear', { timerId, timerType: 'interval' }).then(() => {
|
|
178
|
+
scheduledIntervalsState.delete(timerId);
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
};
|
|
182
|
+
},
|
|
183
|
+
clearTimeout: ({ call }) => {
|
|
184
|
+
return (timerId) => {
|
|
185
|
+
if (typeof scheduledTimeoutsState.get(timerId) === 'symbol') {
|
|
186
|
+
scheduledTimeoutsState.set(timerId, null);
|
|
187
|
+
call('clear', { timerId, timerType: 'timeout' }).then(() => {
|
|
188
|
+
scheduledTimeoutsState.delete(timerId);
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
};
|
|
192
|
+
},
|
|
193
|
+
setInterval: ({ call }) => {
|
|
194
|
+
return (func, delay = 0, ...args) => {
|
|
195
|
+
const symbol = Symbol();
|
|
196
|
+
const timerId = generateUniqueNumber(scheduledIntervalsState);
|
|
197
|
+
scheduledIntervalsState.set(timerId, symbol);
|
|
198
|
+
const schedule = () => call('set', {
|
|
199
|
+
delay,
|
|
200
|
+
now: performance.timeOrigin + performance.now(),
|
|
201
|
+
timerId,
|
|
202
|
+
timerType: 'interval'
|
|
203
|
+
}).then(() => {
|
|
204
|
+
const state = scheduledIntervalsState.get(timerId);
|
|
205
|
+
if (state === undefined) {
|
|
206
|
+
throw new Error('The timer is in an undefined state.');
|
|
207
|
+
}
|
|
208
|
+
if (state === symbol) {
|
|
209
|
+
func(...args);
|
|
210
|
+
// Doublecheck if the interval should still be rescheduled because it could have been cleared inside of func().
|
|
211
|
+
if (scheduledIntervalsState.get(timerId) === symbol) {
|
|
212
|
+
schedule();
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
});
|
|
216
|
+
schedule();
|
|
217
|
+
return timerId;
|
|
218
|
+
};
|
|
219
|
+
},
|
|
220
|
+
setTimeout: ({ call }) => {
|
|
221
|
+
return (func, delay = 0, ...args) => {
|
|
222
|
+
const symbol = Symbol();
|
|
223
|
+
const timerId = generateUniqueNumber(scheduledTimeoutsState);
|
|
224
|
+
scheduledTimeoutsState.set(timerId, symbol);
|
|
225
|
+
call('set', {
|
|
226
|
+
delay,
|
|
227
|
+
now: performance.timeOrigin + performance.now(),
|
|
228
|
+
timerId,
|
|
229
|
+
timerType: 'timeout'
|
|
230
|
+
}).then(() => {
|
|
231
|
+
const state = scheduledTimeoutsState.get(timerId);
|
|
232
|
+
if (state === undefined) {
|
|
233
|
+
throw new Error('The timer is in an undefined state.');
|
|
234
|
+
}
|
|
235
|
+
if (state === symbol) {
|
|
236
|
+
// A timeout can be savely deleted because it is only called once.
|
|
237
|
+
scheduledTimeoutsState.delete(timerId);
|
|
238
|
+
func(...args);
|
|
239
|
+
}
|
|
240
|
+
});
|
|
241
|
+
return timerId;
|
|
242
|
+
};
|
|
243
|
+
}
|
|
244
|
+
});
|
|
245
|
+
const load = (url) => {
|
|
246
|
+
const worker = new Worker(url);
|
|
247
|
+
return wrap(worker);
|
|
248
|
+
};
|
|
249
|
+
|
|
250
|
+
const createLoadOrReturnBroker = (loadBroker, worker) => {
|
|
251
|
+
let broker = null;
|
|
252
|
+
return () => {
|
|
253
|
+
if (broker !== null) {
|
|
254
|
+
return broker;
|
|
255
|
+
}
|
|
256
|
+
const blob = new Blob([worker], { type: 'application/javascript; charset=utf-8' });
|
|
257
|
+
const url = URL.createObjectURL(blob);
|
|
258
|
+
broker = loadBroker(url);
|
|
259
|
+
// Bug #1: Edge up until v18 didn't like the URL to be revoked directly.
|
|
260
|
+
setTimeout(() => URL.revokeObjectURL(url));
|
|
261
|
+
return broker;
|
|
262
|
+
};
|
|
263
|
+
};
|
|
264
|
+
|
|
265
|
+
// This is the minified and stringified code of the worker-timers-worker package.
|
|
266
|
+
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
|
|
267
|
+
|
|
268
|
+
const loadOrReturnBroker = createLoadOrReturnBroker(load, worker);
|
|
269
|
+
const clearInterval = (timerId) => loadOrReturnBroker().clearInterval(timerId);
|
|
270
|
+
const clearTimeout$1 = (timerId) => loadOrReturnBroker().clearTimeout(timerId);
|
|
271
|
+
const setInterval = (...args) => loadOrReturnBroker().setInterval(...args);
|
|
272
|
+
const setTimeout$1 = (...args) => loadOrReturnBroker().setTimeout(...args);
|
|
273
|
+
|
|
274
|
+
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={};}};
|
|
275
|
+
|
|
276
|
+
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}
|
|
277
|
+
|
|
278
|
+
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();}};
|
|
46
279
|
|
|
47
280
|
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};
|
|
48
281
|
|
|
49
282
|
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}}}
|
|
50
283
|
|
|
51
|
-
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
|
|
284
|
+
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}
|
|
52
285
|
|
|
53
286
|
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}
|
|
54
287
|
|
|
55
|
-
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
|
|
288
|
+
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}
|
|
56
289
|
|
|
57
290
|
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}
|
|
58
291
|
|
|
@@ -274,7 +507,7 @@ class PopsUtils {
|
|
|
274
507
|
formatByteToSize(byteSize, addType = true) {
|
|
275
508
|
byteSize = parseInt(byteSize.toString());
|
|
276
509
|
if (isNaN(byteSize)) {
|
|
277
|
-
throw new
|
|
510
|
+
throw new TypeError("Utils.formatByteToSize 参数 byteSize 格式不正确");
|
|
278
511
|
}
|
|
279
512
|
let result = 0;
|
|
280
513
|
let resultType = "KB";
|
|
@@ -307,6 +540,58 @@ class PopsUtils {
|
|
|
307
540
|
AnyTouch = () => {
|
|
308
541
|
return i;
|
|
309
542
|
};
|
|
543
|
+
/**
|
|
544
|
+
* 自动使用 Worker 执行 setTimeout
|
|
545
|
+
*/
|
|
546
|
+
setTimeout(callback, timeout = 0) {
|
|
547
|
+
try {
|
|
548
|
+
return setTimeout$1(callback, timeout);
|
|
549
|
+
}
|
|
550
|
+
catch (error) {
|
|
551
|
+
return globalThis.setTimeout(callback, timeout);
|
|
552
|
+
}
|
|
553
|
+
}
|
|
554
|
+
/**
|
|
555
|
+
* 配合 .setTimeout 使用
|
|
556
|
+
*/
|
|
557
|
+
clearTimeout(timeId) {
|
|
558
|
+
try {
|
|
559
|
+
if (timeId != null) {
|
|
560
|
+
clearTimeout$1(timeId);
|
|
561
|
+
}
|
|
562
|
+
}
|
|
563
|
+
catch (error) {
|
|
564
|
+
}
|
|
565
|
+
finally {
|
|
566
|
+
globalThis.clearTimeout(timeId);
|
|
567
|
+
}
|
|
568
|
+
}
|
|
569
|
+
/**
|
|
570
|
+
* 自动使用 Worker 执行 setInterval
|
|
571
|
+
*/
|
|
572
|
+
setInterval(callback, timeout = 0) {
|
|
573
|
+
try {
|
|
574
|
+
return setInterval(callback, timeout);
|
|
575
|
+
}
|
|
576
|
+
catch (error) {
|
|
577
|
+
return globalThis.setInterval(callback, timeout);
|
|
578
|
+
}
|
|
579
|
+
}
|
|
580
|
+
/**
|
|
581
|
+
* 配合 .setInterval 使用
|
|
582
|
+
*/
|
|
583
|
+
clearInterval(timeId) {
|
|
584
|
+
try {
|
|
585
|
+
if (timeId != null) {
|
|
586
|
+
clearInterval(timeId);
|
|
587
|
+
}
|
|
588
|
+
}
|
|
589
|
+
catch (error) {
|
|
590
|
+
}
|
|
591
|
+
finally {
|
|
592
|
+
globalThis.clearInterval(timeId);
|
|
593
|
+
}
|
|
594
|
+
}
|
|
310
595
|
}
|
|
311
596
|
const popsUtils = new PopsUtils();
|
|
312
597
|
|
|
@@ -680,7 +965,7 @@ class PopsDOMUtilsEvent {
|
|
|
680
965
|
}
|
|
681
966
|
if (checkDOMReadyState()) {
|
|
682
967
|
/* 检查document状态 */
|
|
683
|
-
setTimeout(callback);
|
|
968
|
+
popsUtils.setTimeout(callback, 0);
|
|
684
969
|
}
|
|
685
970
|
else {
|
|
686
971
|
/* 添加监听 */
|
|
@@ -1907,7 +2192,7 @@ const PopsInstanceUtils = {
|
|
|
1907
2192
|
let popsElement = animElement.querySelector(".pops[type-value]");
|
|
1908
2193
|
if (popsType === "drawer") {
|
|
1909
2194
|
let drawerConfig = config;
|
|
1910
|
-
setTimeout(() => {
|
|
2195
|
+
popsUtils.setTimeout(() => {
|
|
1911
2196
|
maskElement.style.setProperty("display", "none");
|
|
1912
2197
|
if (["top", "bottom"].includes(drawerConfig.direction)) {
|
|
1913
2198
|
popsElement.style.setProperty("height", "0");
|
|
@@ -1973,7 +2258,7 @@ const PopsInstanceUtils = {
|
|
|
1973
2258
|
let popsElement = animElement.querySelector(".pops[type-value]");
|
|
1974
2259
|
if (popsType === "drawer") {
|
|
1975
2260
|
let drawerConfig = config;
|
|
1976
|
-
setTimeout(() => {
|
|
2261
|
+
popsUtils.setTimeout(() => {
|
|
1977
2262
|
popsDOMUtils.css(maskElement, "display", "");
|
|
1978
2263
|
let direction = drawerConfig.direction;
|
|
1979
2264
|
let size = drawerConfig.size.toString();
|
|
@@ -1987,7 +2272,7 @@ const PopsInstanceUtils = {
|
|
|
1987
2272
|
console.error("未知direction:", direction);
|
|
1988
2273
|
}
|
|
1989
2274
|
resolve();
|
|
1990
|
-
}, drawerConfig.openDelay);
|
|
2275
|
+
}, drawerConfig.openDelay ?? 0);
|
|
1991
2276
|
}
|
|
1992
2277
|
else {
|
|
1993
2278
|
let findLayerIns = layerConfigList.find((layerConfigItem) => layerConfigItem.guid === guid);
|
|
@@ -2079,7 +2364,7 @@ const PopsInstanceUtils = {
|
|
|
2079
2364
|
}
|
|
2080
2365
|
}
|
|
2081
2366
|
if (popsType === "drawer") {
|
|
2082
|
-
setTimeout(() => {
|
|
2367
|
+
popsUtils.setTimeout(() => {
|
|
2083
2368
|
transitionendEvent();
|
|
2084
2369
|
}, drawerConfig.closeDelay);
|
|
2085
2370
|
}
|
|
@@ -2296,10 +2581,10 @@ const PopsInstanceUtils = {
|
|
|
2296
2581
|
*/
|
|
2297
2582
|
sortElementListByProperty(getBeforeValueFun, getAfterValueFun, sortByDesc = true) {
|
|
2298
2583
|
if (typeof sortByDesc !== "boolean") {
|
|
2299
|
-
throw "参数 sortByDesc 必须为boolean类型";
|
|
2584
|
+
throw new TypeError("参数 sortByDesc 必须为boolean类型");
|
|
2300
2585
|
}
|
|
2301
2586
|
if (getBeforeValueFun == null || getAfterValueFun == null) {
|
|
2302
|
-
throw "获取前面的值或后面的值的方法不能为空";
|
|
2587
|
+
throw new Error("获取前面的值或后面的值的方法不能为空");
|
|
2303
2588
|
}
|
|
2304
2589
|
return function (after_obj, before_obj) {
|
|
2305
2590
|
var beforeValue = getBeforeValueFun(before_obj); /* 前 */
|
|
@@ -3896,7 +4181,7 @@ const PopsIframe = {
|
|
|
3896
4181
|
config = popsUtils.assign(config, GlobalConfig.getGlobalConfig());
|
|
3897
4182
|
config = popsUtils.assign(config, details);
|
|
3898
4183
|
if (config.url == null) {
|
|
3899
|
-
throw "config.url不能为空";
|
|
4184
|
+
throw new Error("config.url不能为空");
|
|
3900
4185
|
}
|
|
3901
4186
|
config = PopsHandler.handleOnly(PopsType, config);
|
|
3902
4187
|
const { $shadowContainer, $shadowRoot } = PopsHandler.handlerShadow(config);
|
|
@@ -4354,8 +4639,8 @@ const PopsDrawer = {
|
|
|
4354
4639
|
config.beforeAppendToPageCallBack($shadowRoot, $shadowContainer);
|
|
4355
4640
|
}
|
|
4356
4641
|
popsDOMUtils.appendBody($shadowContainer);
|
|
4357
|
-
setTimeout(() => {
|
|
4358
|
-
setTimeout(() => {
|
|
4642
|
+
popsUtils.setTimeout(() => {
|
|
4643
|
+
popsUtils.setTimeout(() => {
|
|
4359
4644
|
$pops.style.setProperty("transform", "");
|
|
4360
4645
|
}, config.openDelay);
|
|
4361
4646
|
}, 50);
|
|
@@ -5076,12 +5361,12 @@ const PopsFolder = {
|
|
|
5076
5361
|
let downloadIframeLinkElement = document.createElement("iframe");
|
|
5077
5362
|
downloadIframeLinkElement.src = downloadInfo.url;
|
|
5078
5363
|
downloadIframeLinkElement.onload = function () {
|
|
5079
|
-
setTimeout(() => {
|
|
5364
|
+
popsUtils.setTimeout(() => {
|
|
5080
5365
|
downloadIframeLinkElement.remove();
|
|
5081
5366
|
}, 1000);
|
|
5082
5367
|
};
|
|
5083
5368
|
$shadowRoot.appendChild(downloadIframeLinkElement);
|
|
5084
|
-
setTimeout(() => {
|
|
5369
|
+
popsUtils.setTimeout(() => {
|
|
5085
5370
|
downloadIframeLinkElement.remove();
|
|
5086
5371
|
}, 3 * 60 * 1000);
|
|
5087
5372
|
}
|
|
@@ -6323,11 +6608,11 @@ const PanelHandleContentDetails = () => {
|
|
|
6323
6608
|
let isSuccess = false;
|
|
6324
6609
|
let oldTotalWidth = this.$data.totalWidth;
|
|
6325
6610
|
let timer = void 0;
|
|
6326
|
-
let interval = setInterval(() => {
|
|
6611
|
+
let interval = popsUtils.setInterval(() => {
|
|
6327
6612
|
if (isSuccess) {
|
|
6328
6613
|
this.$interval.isCheck = false;
|
|
6329
|
-
clearTimeout(timer);
|
|
6330
|
-
clearInterval(interval);
|
|
6614
|
+
popsUtils.clearTimeout(timer);
|
|
6615
|
+
popsUtils.clearInterval(interval);
|
|
6331
6616
|
}
|
|
6332
6617
|
else {
|
|
6333
6618
|
this.initTotalWidth();
|
|
@@ -6347,8 +6632,8 @@ const PanelHandleContentDetails = () => {
|
|
|
6347
6632
|
}
|
|
6348
6633
|
}, checkStepTime);
|
|
6349
6634
|
/* 最长检测时间是10s */
|
|
6350
|
-
timer = setTimeout(() => {
|
|
6351
|
-
clearInterval(interval);
|
|
6635
|
+
timer = popsUtils.setTimeout(() => {
|
|
6636
|
+
popsUtils.clearInterval(interval);
|
|
6352
6637
|
}, maxTime);
|
|
6353
6638
|
},
|
|
6354
6639
|
/**
|
|
@@ -6716,16 +7001,16 @@ const PanelHandleContentDetails = () => {
|
|
|
6716
7001
|
return;
|
|
6717
7002
|
}
|
|
6718
7003
|
this.$data.isCheckingStopDragMove = true;
|
|
6719
|
-
let interval = setInterval(() => {
|
|
7004
|
+
let interval = popsUtils.setInterval(() => {
|
|
6720
7005
|
if (!this.$data.isMove) {
|
|
6721
7006
|
this.$data.isCheckingStopDragMove = false;
|
|
6722
7007
|
this.closeToolTip();
|
|
6723
|
-
clearInterval(interval);
|
|
7008
|
+
popsUtils.clearInterval(interval);
|
|
6724
7009
|
}
|
|
6725
7010
|
}, 200);
|
|
6726
|
-
setTimeout(() => {
|
|
7011
|
+
popsUtils.setTimeout(() => {
|
|
6727
7012
|
this.$data.isCheckingStopDragMove = false;
|
|
6728
|
-
clearInterval(interval);
|
|
7013
|
+
popsUtils.clearInterval(interval);
|
|
6729
7014
|
}, 2000);
|
|
6730
7015
|
},
|
|
6731
7016
|
/**
|
|
@@ -8603,7 +8888,7 @@ const PopsRightClickMenu = {
|
|
|
8603
8888
|
config = popsUtils.assign(config, details);
|
|
8604
8889
|
config = PopsHandler.handleOnly(PopsType, config);
|
|
8605
8890
|
if (config.target == null) {
|
|
8606
|
-
throw "config.target 不能为空";
|
|
8891
|
+
throw new Error("config.target 不能为空");
|
|
8607
8892
|
}
|
|
8608
8893
|
if (details.data) {
|
|
8609
8894
|
// @ts-ignore
|
|
@@ -9089,7 +9374,7 @@ const PopsSearchSuggestion = {
|
|
|
9089
9374
|
config = popsUtils.assign(config, GlobalConfig.getGlobalConfig());
|
|
9090
9375
|
config = popsUtils.assign(config, details);
|
|
9091
9376
|
if (config.target == null) {
|
|
9092
|
-
throw new
|
|
9377
|
+
throw new Error("config.target 不能为空");
|
|
9093
9378
|
}
|
|
9094
9379
|
/* 做下兼容处理 */
|
|
9095
9380
|
if (config.inputTarget == null) {
|
|
@@ -9360,7 +9645,7 @@ const PopsSearchSuggestion = {
|
|
|
9360
9645
|
popsDOMUtils.on([config.inputTarget], ["focus", "click", "input"], void 0, SearchSuggestion.showEvent, option);
|
|
9361
9646
|
}
|
|
9362
9647
|
else {
|
|
9363
|
-
throw new
|
|
9648
|
+
throw new Error("未知followPosition:" + config.followPosition);
|
|
9364
9649
|
}
|
|
9365
9650
|
},
|
|
9366
9651
|
/**
|
|
@@ -9628,6 +9913,7 @@ const PopsTooltipConfig = () => {
|
|
|
9628
9913
|
useShadowRoot: true,
|
|
9629
9914
|
target: null,
|
|
9630
9915
|
content: "默认文字",
|
|
9916
|
+
isDiffContent: false,
|
|
9631
9917
|
position: "top",
|
|
9632
9918
|
className: "",
|
|
9633
9919
|
isFixed: false,
|
|
@@ -9753,6 +10039,19 @@ class ToolTip {
|
|
|
9753
10039
|
if (text == null) {
|
|
9754
10040
|
text = this.getContent();
|
|
9755
10041
|
}
|
|
10042
|
+
if (this.$data.config.isDiffContent) {
|
|
10043
|
+
let contentPropKey = "data-content";
|
|
10044
|
+
// @ts-ignore
|
|
10045
|
+
let originContentText = this.$el.$content[contentPropKey];
|
|
10046
|
+
if (typeof originContentText === "string") {
|
|
10047
|
+
if (originContentText === text) {
|
|
10048
|
+
// 内容未改变,不修改避免渲染
|
|
10049
|
+
return;
|
|
10050
|
+
}
|
|
10051
|
+
}
|
|
10052
|
+
// @ts-ignore
|
|
10053
|
+
this.$el.$content[contentPropKey] = text;
|
|
10054
|
+
}
|
|
9756
10055
|
PopsSafeUtils.setSafeHTML(this.$el.$content, text);
|
|
9757
10056
|
}
|
|
9758
10057
|
/**
|
|
@@ -9771,11 +10070,12 @@ class ToolTip {
|
|
|
9771
10070
|
}
|
|
9772
10071
|
/**
|
|
9773
10072
|
* 计算 提示框的位置
|
|
10073
|
+
* @param event 触发的事件
|
|
9774
10074
|
* @param targetElement 目标元素
|
|
9775
10075
|
* @param arrowDistance 箭头和目标元素的距离
|
|
9776
10076
|
* @param otherDistance 其它位置的偏移
|
|
9777
10077
|
*/
|
|
9778
|
-
calcToolTipPosition(targetElement, arrowDistance, otherDistance) {
|
|
10078
|
+
calcToolTipPosition(targetElement, arrowDistance, otherDistance, event) {
|
|
9779
10079
|
let offsetInfo = popsDOMUtils.offset(targetElement, !this.$data.config.isFixed);
|
|
9780
10080
|
// 目标 宽
|
|
9781
10081
|
let targetElement_width = offsetInfo.width;
|
|
@@ -9793,6 +10093,31 @@ class ToolTip {
|
|
|
9793
10093
|
let targetElement_X_center_pos = targetElement_left + targetElement_width / 2 - toolTipElement_width / 2;
|
|
9794
10094
|
/* 目标元素的Y轴的中间位置 */
|
|
9795
10095
|
let targetElement_Y_center_pos = targetElement_top + targetElement_height / 2 - toolTipElement_height / 2;
|
|
10096
|
+
let mouseX = 0;
|
|
10097
|
+
let mouseY = 0;
|
|
10098
|
+
if (event != null) {
|
|
10099
|
+
if (event instanceof MouseEvent || event instanceof PointerEvent) {
|
|
10100
|
+
mouseX = event.pageX;
|
|
10101
|
+
mouseY = event.y;
|
|
10102
|
+
}
|
|
10103
|
+
else if (event instanceof TouchEvent) {
|
|
10104
|
+
let touchEvent = event.touches[0];
|
|
10105
|
+
mouseX = touchEvent.pageX;
|
|
10106
|
+
mouseY = touchEvent.pageY;
|
|
10107
|
+
}
|
|
10108
|
+
else {
|
|
10109
|
+
// @ts-ignore
|
|
10110
|
+
if (typeof event.clientX === "number") {
|
|
10111
|
+
// @ts-ignore
|
|
10112
|
+
mouseX = event.clientX;
|
|
10113
|
+
}
|
|
10114
|
+
// @ts-ignore
|
|
10115
|
+
if (typeof event.clientY === "number") {
|
|
10116
|
+
// @ts-ignore
|
|
10117
|
+
mouseY = event.clientY;
|
|
10118
|
+
}
|
|
10119
|
+
}
|
|
10120
|
+
}
|
|
9796
10121
|
return {
|
|
9797
10122
|
TOP: {
|
|
9798
10123
|
left: targetElement_X_center_pos - otherDistance,
|
|
@@ -9818,13 +10143,19 @@ class ToolTip {
|
|
|
9818
10143
|
arrow: "right",
|
|
9819
10144
|
motion: "fadeInLeft",
|
|
9820
10145
|
},
|
|
10146
|
+
FOLLOW: {
|
|
10147
|
+
left: mouseX + otherDistance,
|
|
10148
|
+
top: mouseY + otherDistance,
|
|
10149
|
+
arrow: "follow",
|
|
10150
|
+
motion: "",
|
|
10151
|
+
},
|
|
9821
10152
|
};
|
|
9822
10153
|
}
|
|
9823
10154
|
/**
|
|
9824
10155
|
* 动态修改tooltip的位置
|
|
9825
10156
|
*/
|
|
9826
|
-
changePosition() {
|
|
9827
|
-
let positionInfo = this.calcToolTipPosition(this.$data.config.target, this.$data.config.arrowDistance, this.$data.config.otherDistance);
|
|
10157
|
+
changePosition(event) {
|
|
10158
|
+
let positionInfo = this.calcToolTipPosition(this.$data.config.target, this.$data.config.arrowDistance, this.$data.config.otherDistance, event);
|
|
9828
10159
|
let positionKey = this.$data.config.position.toUpperCase();
|
|
9829
10160
|
let positionDetail = positionInfo[positionKey];
|
|
9830
10161
|
if (positionDetail) {
|
|
@@ -9884,13 +10215,13 @@ class ToolTip {
|
|
|
9884
10215
|
if (typeof timeId === "number") {
|
|
9885
10216
|
// 只清除一个
|
|
9886
10217
|
if (timeId == currentTimeId) {
|
|
9887
|
-
clearTimeout(timeId);
|
|
10218
|
+
popsUtils.clearTimeout(timeId);
|
|
9888
10219
|
timeIdList.splice(index, 1);
|
|
9889
10220
|
break;
|
|
9890
10221
|
}
|
|
9891
10222
|
}
|
|
9892
10223
|
else {
|
|
9893
|
-
clearTimeout(currentTimeId);
|
|
10224
|
+
popsUtils.clearTimeout(currentTimeId);
|
|
9894
10225
|
timeIdList.splice(index, 1);
|
|
9895
10226
|
index--;
|
|
9896
10227
|
}
|
|
@@ -9924,7 +10255,7 @@ class ToolTip {
|
|
|
9924
10255
|
// 更新内容
|
|
9925
10256
|
this.changeContent();
|
|
9926
10257
|
// 更新tip的位置
|
|
9927
|
-
this.changePosition();
|
|
10258
|
+
this.changePosition(event);
|
|
9928
10259
|
if (typeof this.$data.config.showAfterCallBack === "function") {
|
|
9929
10260
|
this.$data.config.showAfterCallBack(this.$el.$toolTip);
|
|
9930
10261
|
}
|
|
@@ -9969,16 +10300,24 @@ class ToolTip {
|
|
|
9969
10300
|
this.$data.config.delayCloseTime <= 0)) {
|
|
9970
10301
|
this.$data.config.delayCloseTime = 100;
|
|
9971
10302
|
}
|
|
9972
|
-
let timeId = setTimeout(() => {
|
|
10303
|
+
let timeId = popsUtils.setTimeout(() => {
|
|
9973
10304
|
// 设置属性触发关闭动画
|
|
9974
10305
|
this.clearCloseTimeoutId(eventType, timeId);
|
|
9975
10306
|
if (this.$el.$toolTip == null) {
|
|
9976
10307
|
// 已清除了
|
|
9977
10308
|
return;
|
|
9978
10309
|
}
|
|
9979
|
-
this.$el.$toolTip.
|
|
9980
|
-
|
|
9981
|
-
|
|
10310
|
+
let motion = this.$el.$toolTip.getAttribute("data-motion");
|
|
10311
|
+
if (motion == null || motion.trim() === "") {
|
|
10312
|
+
// 没有动画
|
|
10313
|
+
this.toolTipAnimationFinishEvent();
|
|
10314
|
+
}
|
|
10315
|
+
else {
|
|
10316
|
+
// 修改data-motion触发动画关闭
|
|
10317
|
+
this.$el.$toolTip.setAttribute("data-motion", this.$el.$toolTip
|
|
10318
|
+
.getAttribute("data-motion")
|
|
10319
|
+
.replace("fadeIn", "fadeOut"));
|
|
10320
|
+
}
|
|
9982
10321
|
}, this.$data.config.delayCloseTime);
|
|
9983
10322
|
this.addCloseTimeoutId(eventType, timeId);
|
|
9984
10323
|
if (typeof this.$data.config.closeAfterCallBack === "function") {
|
|
@@ -10092,7 +10431,7 @@ const PopsTooltip = {
|
|
|
10092
10431
|
config = popsUtils.assign(config, GlobalConfig.getGlobalConfig());
|
|
10093
10432
|
config = popsUtils.assign(config, details);
|
|
10094
10433
|
if (!(config.target instanceof HTMLElement)) {
|
|
10095
|
-
throw "config.target 必须是HTMLElement类型";
|
|
10434
|
+
throw new TypeError("config.target 必须是HTMLElement类型");
|
|
10096
10435
|
}
|
|
10097
10436
|
config = PopsHandler.handleOnly(PopsType, config);
|
|
10098
10437
|
const { $shadowContainer, $shadowRoot } = PopsHandler.handlerShadow(config);
|
|
@@ -10125,7 +10464,7 @@ class Pops {
|
|
|
10125
10464
|
/** 配置 */
|
|
10126
10465
|
config = {
|
|
10127
10466
|
/** 版本号 */
|
|
10128
|
-
version: "2025.5.
|
|
10467
|
+
version: "2025.5.26",
|
|
10129
10468
|
cssText: {
|
|
10130
10469
|
/** 主CSS */
|
|
10131
10470
|
index: indexCSS,
|
|
@@ -10234,7 +10573,7 @@ class Pops {
|
|
|
10234
10573
|
popsDOMUtils.appendHead(animationStyle);
|
|
10235
10574
|
this.config.animation = null;
|
|
10236
10575
|
this.config.animation = PopsInstanceUtils.getKeyFrames(animationStyle.sheet);
|
|
10237
|
-
setTimeout(() => {
|
|
10576
|
+
popsUtils.setTimeout(() => {
|
|
10238
10577
|
animationStyle.remove();
|
|
10239
10578
|
}, 50);
|
|
10240
10579
|
}
|