@whitesev/domutils 1.9.12 → 2.0.0
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 +42 -50
- package/dist/index.amd.js.map +1 -1
- package/dist/index.amd.min.js +1 -1
- package/dist/index.amd.min.js.map +1 -1
- package/dist/index.cjs.js +42 -50
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.cjs.min.js +1 -1
- package/dist/index.cjs.min.js.map +1 -1
- package/dist/index.esm.js +42 -50
- package/dist/index.esm.js.map +1 -1
- package/dist/index.esm.min.js +1 -1
- package/dist/index.esm.min.js.map +1 -1
- package/dist/index.iife.js +42 -50
- package/dist/index.iife.js.map +1 -1
- package/dist/index.iife.min.js +1 -1
- package/dist/index.iife.min.js.map +1 -1
- package/dist/index.system.js +42 -50
- package/dist/index.system.js.map +1 -1
- package/dist/index.system.min.js +1 -1
- package/dist/index.system.min.js.map +1 -1
- package/dist/index.umd.js +42 -50
- package/dist/index.umd.js.map +1 -1
- package/dist/index.umd.min.js +1 -1
- package/dist/index.umd.min.js.map +1 -1
- package/dist/types/src/ElementEvent.d.ts +5 -5
- package/dist/types/src/types/DOMUtilsEvent.d.ts +23 -7
- package/package.json +4 -4
- package/src/ElementEvent.ts +59 -64
- package/src/types/DOMUtilsEvent.d.ts +23 -7
package/dist/index.esm.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const version = "
|
|
1
|
+
const version = "2.0.0";
|
|
2
2
|
|
|
3
3
|
class WindowApi {
|
|
4
4
|
/** 默认的配置 */
|
|
@@ -1351,12 +1351,6 @@ const GlobalData = {
|
|
|
1351
1351
|
domEventSymbol: Symbol("events_" + (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1)),
|
|
1352
1352
|
};
|
|
1353
1353
|
|
|
1354
|
-
const OriginPrototype = {
|
|
1355
|
-
Object: {
|
|
1356
|
-
defineProperty: Object.defineProperty,
|
|
1357
|
-
},
|
|
1358
|
-
};
|
|
1359
|
-
|
|
1360
1354
|
class ElementEvent extends ElementAnimate {
|
|
1361
1355
|
windowApi;
|
|
1362
1356
|
constructor(windowApiOption) {
|
|
@@ -1456,6 +1450,9 @@ class ElementEvent extends ElementAnimate {
|
|
|
1456
1450
|
listenerOption = getOption(args, 4, listenerOption);
|
|
1457
1451
|
}
|
|
1458
1452
|
$elList.forEach(($elItem) => {
|
|
1453
|
+
// window和document共用一个对象
|
|
1454
|
+
// 这样就能处理子元素选择器无法匹配的问题
|
|
1455
|
+
const targetIsWindow = CommonUtils.isWin($elItem);
|
|
1459
1456
|
// 遍历事件名设置元素事件
|
|
1460
1457
|
eventTypeList.forEach((eventName) => {
|
|
1461
1458
|
/**
|
|
@@ -1490,12 +1487,7 @@ class ElementEvent extends ElementAnimate {
|
|
|
1490
1487
|
else {
|
|
1491
1488
|
$target = event.target;
|
|
1492
1489
|
}
|
|
1493
|
-
|
|
1494
|
-
if (CommonUtils.isWin($parent)) {
|
|
1495
|
-
// window和document共用一个对象
|
|
1496
|
-
// 这样就能处理子元素选择器无法匹配的问题
|
|
1497
|
-
$parent = that.windowApi.document.documentElement;
|
|
1498
|
-
}
|
|
1490
|
+
const $parent = targetIsWindow ? that.windowApi.document.documentElement : $elItem;
|
|
1499
1491
|
const findValue = selectorList.find((selectors) => {
|
|
1500
1492
|
// 判断目标元素是否匹配选择器
|
|
1501
1493
|
if (that.matches($target, selectors)) {
|
|
@@ -1512,21 +1504,7 @@ class ElementEvent extends ElementAnimate {
|
|
|
1512
1504
|
});
|
|
1513
1505
|
if (findValue) {
|
|
1514
1506
|
// 这里尝试使用defineProperty修改event的target值
|
|
1515
|
-
|
|
1516
|
-
try {
|
|
1517
|
-
OriginPrototype.Object.defineProperty(event, "target", {
|
|
1518
|
-
get() {
|
|
1519
|
-
return $target;
|
|
1520
|
-
},
|
|
1521
|
-
});
|
|
1522
|
-
OriginPrototype.Object.defineProperty(event, "originTarget", {
|
|
1523
|
-
get() {
|
|
1524
|
-
return originTarget;
|
|
1525
|
-
},
|
|
1526
|
-
});
|
|
1527
|
-
// oxlint-disable-next-line no-empty
|
|
1528
|
-
}
|
|
1529
|
-
catch { }
|
|
1507
|
+
// 不建议使用覆盖target,因为可能会有兼容性问题
|
|
1530
1508
|
execCallback = true;
|
|
1531
1509
|
call_this = $target;
|
|
1532
1510
|
call_event = event;
|
|
@@ -1692,6 +1670,9 @@ class ElementEvent extends ElementAnimate {
|
|
|
1692
1670
|
if (handlers.length === 0) {
|
|
1693
1671
|
// 如果没有任意的handler,那么删除该属性
|
|
1694
1672
|
CommonUtils.delete(elementEvents, eventType);
|
|
1673
|
+
if (Object.keys(elementEvents).length === 0) {
|
|
1674
|
+
CommonUtils.delete($elItem, GlobalData.domEventSymbol);
|
|
1675
|
+
}
|
|
1695
1676
|
}
|
|
1696
1677
|
});
|
|
1697
1678
|
Reflect.set($elItem, GlobalData.domEventSymbol, elementEvents);
|
|
@@ -1726,11 +1707,11 @@ class ElementEvent extends ElementAnimate {
|
|
|
1726
1707
|
}
|
|
1727
1708
|
$elList.forEach(($elItem) => {
|
|
1728
1709
|
const symbolList = [...new Set([...Object.getOwnPropertySymbols($elItem), GlobalData.domEventSymbol])];
|
|
1729
|
-
symbolList.forEach((
|
|
1730
|
-
if (!
|
|
1710
|
+
symbolList.forEach((__symbol__) => {
|
|
1711
|
+
if (!__symbol__.toString().startsWith("Symbol(events_")) {
|
|
1731
1712
|
return;
|
|
1732
1713
|
}
|
|
1733
|
-
const elementEvents = Reflect.get($elItem,
|
|
1714
|
+
const elementEvents = Reflect.get($elItem, __symbol__) || {};
|
|
1734
1715
|
const iterEventNameList = eventTypeList.length ? eventTypeList : Object.keys(elementEvents);
|
|
1735
1716
|
iterEventNameList.forEach((eventName) => {
|
|
1736
1717
|
const handlers = elementEvents[eventName];
|
|
@@ -1742,8 +1723,11 @@ class ElementEvent extends ElementAnimate {
|
|
|
1742
1723
|
capture: handler.option.capture,
|
|
1743
1724
|
});
|
|
1744
1725
|
}
|
|
1745
|
-
const events = Reflect.get($elItem,
|
|
1726
|
+
const events = Reflect.get($elItem, __symbol__);
|
|
1746
1727
|
CommonUtils.delete(events, eventName);
|
|
1728
|
+
if (Object.keys(events).length === 0) {
|
|
1729
|
+
CommonUtils.delete($elItem, __symbol__);
|
|
1730
|
+
}
|
|
1747
1731
|
});
|
|
1748
1732
|
});
|
|
1749
1733
|
});
|
|
@@ -2370,7 +2354,7 @@ class ElementEvent extends ElementAnimate {
|
|
|
2370
2354
|
},
|
|
2371
2355
|
};
|
|
2372
2356
|
}
|
|
2373
|
-
|
|
2357
|
+
onOneOrDouble(...args) {
|
|
2374
2358
|
const $el = args[0];
|
|
2375
2359
|
let selector = void 0;
|
|
2376
2360
|
let handler;
|
|
@@ -2401,12 +2385,21 @@ class ElementEvent extends ElementAnimate {
|
|
|
2401
2385
|
else {
|
|
2402
2386
|
throw new Error("args length error");
|
|
2403
2387
|
}
|
|
2404
|
-
let
|
|
2405
|
-
let
|
|
2388
|
+
let eventNodeMap = new WeakMap();
|
|
2389
|
+
let isDouble = false;
|
|
2406
2390
|
let timer = void 0;
|
|
2391
|
+
let eventType = "pointerup";
|
|
2407
2392
|
/** 检测是否是单击的延迟时间 */
|
|
2408
|
-
|
|
2409
|
-
|
|
2393
|
+
let checkClickTime = 200;
|
|
2394
|
+
if (typeof options === "object" && options != null) {
|
|
2395
|
+
if (typeof options.eventType === "string" || Array.isArray(options.eventType)) {
|
|
2396
|
+
eventType = options.eventType;
|
|
2397
|
+
}
|
|
2398
|
+
if (typeof options.checkClickTime === "number") {
|
|
2399
|
+
checkClickTime = options.checkClickTime;
|
|
2400
|
+
}
|
|
2401
|
+
}
|
|
2402
|
+
const callback = (evt, option, $selector) => {
|
|
2410
2403
|
if ($selector) {
|
|
2411
2404
|
return handler(evt, $selector, option);
|
|
2412
2405
|
}
|
|
@@ -2414,35 +2407,34 @@ class ElementEvent extends ElementAnimate {
|
|
|
2414
2407
|
return handler(evt, option);
|
|
2415
2408
|
}
|
|
2416
2409
|
};
|
|
2417
|
-
const pointerUpListener = this.on($el,
|
|
2418
|
-
// this.preventEvent(evt);
|
|
2410
|
+
const pointerUpListener = this.on($el, eventType, selector, (evt, $selector) => {
|
|
2419
2411
|
clearTimeout(timer);
|
|
2420
2412
|
timer = void 0;
|
|
2421
|
-
if (
|
|
2422
|
-
|
|
2423
|
-
|
|
2424
|
-
|
|
2425
|
-
|
|
2413
|
+
if (isDouble && eventNodeMap.has($selector)) {
|
|
2414
|
+
isDouble = false;
|
|
2415
|
+
eventNodeMap.delete($selector);
|
|
2416
|
+
// 判定为双次
|
|
2417
|
+
callback(evt, {
|
|
2426
2418
|
isDoubleClick: true,
|
|
2427
2419
|
}, $selector);
|
|
2428
2420
|
}
|
|
2429
2421
|
else {
|
|
2430
2422
|
timer = setTimeout(() => {
|
|
2431
|
-
|
|
2432
|
-
//
|
|
2433
|
-
|
|
2423
|
+
isDouble = false;
|
|
2424
|
+
// 判断为单次
|
|
2425
|
+
callback(evt, {
|
|
2434
2426
|
isDoubleClick: false,
|
|
2435
2427
|
}, $selector);
|
|
2436
2428
|
}, checkClickTime);
|
|
2437
|
-
|
|
2438
|
-
|
|
2429
|
+
isDouble = true;
|
|
2430
|
+
eventNodeMap.set($selector, evt);
|
|
2439
2431
|
}
|
|
2440
2432
|
}, options);
|
|
2441
2433
|
return {
|
|
2442
2434
|
off() {
|
|
2443
2435
|
pointerUpListener.off();
|
|
2444
2436
|
// @ts-expect-error
|
|
2445
|
-
|
|
2437
|
+
eventNodeMap = null;
|
|
2446
2438
|
},
|
|
2447
2439
|
};
|
|
2448
2440
|
}
|