@whitesev/domutils 1.9.11 → 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 -44
- 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 -44
- 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 -44
- 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 -44
- 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 -44
- 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 -44
- 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 +13 -13
- package/src/ElementEvent.ts +59 -58
- 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,15 +1504,7 @@ class ElementEvent extends ElementAnimate {
|
|
|
1512
1504
|
});
|
|
1513
1505
|
if (findValue) {
|
|
1514
1506
|
// 这里尝试使用defineProperty修改event的target值
|
|
1515
|
-
|
|
1516
|
-
OriginPrototype.Object.defineProperty(event, "target", {
|
|
1517
|
-
get() {
|
|
1518
|
-
return $target;
|
|
1519
|
-
},
|
|
1520
|
-
});
|
|
1521
|
-
// oxlint-disable-next-line no-empty
|
|
1522
|
-
}
|
|
1523
|
-
catch { }
|
|
1507
|
+
// 不建议使用覆盖target,因为可能会有兼容性问题
|
|
1524
1508
|
execCallback = true;
|
|
1525
1509
|
call_this = $target;
|
|
1526
1510
|
call_event = event;
|
|
@@ -1686,6 +1670,9 @@ class ElementEvent extends ElementAnimate {
|
|
|
1686
1670
|
if (handlers.length === 0) {
|
|
1687
1671
|
// 如果没有任意的handler,那么删除该属性
|
|
1688
1672
|
CommonUtils.delete(elementEvents, eventType);
|
|
1673
|
+
if (Object.keys(elementEvents).length === 0) {
|
|
1674
|
+
CommonUtils.delete($elItem, GlobalData.domEventSymbol);
|
|
1675
|
+
}
|
|
1689
1676
|
}
|
|
1690
1677
|
});
|
|
1691
1678
|
Reflect.set($elItem, GlobalData.domEventSymbol, elementEvents);
|
|
@@ -1720,11 +1707,11 @@ class ElementEvent extends ElementAnimate {
|
|
|
1720
1707
|
}
|
|
1721
1708
|
$elList.forEach(($elItem) => {
|
|
1722
1709
|
const symbolList = [...new Set([...Object.getOwnPropertySymbols($elItem), GlobalData.domEventSymbol])];
|
|
1723
|
-
symbolList.forEach((
|
|
1724
|
-
if (!
|
|
1710
|
+
symbolList.forEach((__symbol__) => {
|
|
1711
|
+
if (!__symbol__.toString().startsWith("Symbol(events_")) {
|
|
1725
1712
|
return;
|
|
1726
1713
|
}
|
|
1727
|
-
const elementEvents = Reflect.get($elItem,
|
|
1714
|
+
const elementEvents = Reflect.get($elItem, __symbol__) || {};
|
|
1728
1715
|
const iterEventNameList = eventTypeList.length ? eventTypeList : Object.keys(elementEvents);
|
|
1729
1716
|
iterEventNameList.forEach((eventName) => {
|
|
1730
1717
|
const handlers = elementEvents[eventName];
|
|
@@ -1736,8 +1723,11 @@ class ElementEvent extends ElementAnimate {
|
|
|
1736
1723
|
capture: handler.option.capture,
|
|
1737
1724
|
});
|
|
1738
1725
|
}
|
|
1739
|
-
const events = Reflect.get($elItem,
|
|
1726
|
+
const events = Reflect.get($elItem, __symbol__);
|
|
1740
1727
|
CommonUtils.delete(events, eventName);
|
|
1728
|
+
if (Object.keys(events).length === 0) {
|
|
1729
|
+
CommonUtils.delete($elItem, __symbol__);
|
|
1730
|
+
}
|
|
1741
1731
|
});
|
|
1742
1732
|
});
|
|
1743
1733
|
});
|
|
@@ -2364,7 +2354,7 @@ class ElementEvent extends ElementAnimate {
|
|
|
2364
2354
|
},
|
|
2365
2355
|
};
|
|
2366
2356
|
}
|
|
2367
|
-
|
|
2357
|
+
onOneOrDouble(...args) {
|
|
2368
2358
|
const $el = args[0];
|
|
2369
2359
|
let selector = void 0;
|
|
2370
2360
|
let handler;
|
|
@@ -2395,12 +2385,21 @@ class ElementEvent extends ElementAnimate {
|
|
|
2395
2385
|
else {
|
|
2396
2386
|
throw new Error("args length error");
|
|
2397
2387
|
}
|
|
2398
|
-
let
|
|
2399
|
-
let
|
|
2388
|
+
let eventNodeMap = new WeakMap();
|
|
2389
|
+
let isDouble = false;
|
|
2400
2390
|
let timer = void 0;
|
|
2391
|
+
let eventType = "pointerup";
|
|
2401
2392
|
/** 检测是否是单击的延迟时间 */
|
|
2402
|
-
|
|
2403
|
-
|
|
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) => {
|
|
2404
2403
|
if ($selector) {
|
|
2405
2404
|
return handler(evt, $selector, option);
|
|
2406
2405
|
}
|
|
@@ -2408,35 +2407,34 @@ class ElementEvent extends ElementAnimate {
|
|
|
2408
2407
|
return handler(evt, option);
|
|
2409
2408
|
}
|
|
2410
2409
|
};
|
|
2411
|
-
const pointerUpListener = this.on($el,
|
|
2412
|
-
// this.preventEvent(evt);
|
|
2410
|
+
const pointerUpListener = this.on($el, eventType, selector, (evt, $selector) => {
|
|
2413
2411
|
clearTimeout(timer);
|
|
2414
2412
|
timer = void 0;
|
|
2415
|
-
if (
|
|
2416
|
-
|
|
2417
|
-
|
|
2418
|
-
|
|
2419
|
-
|
|
2413
|
+
if (isDouble && eventNodeMap.has($selector)) {
|
|
2414
|
+
isDouble = false;
|
|
2415
|
+
eventNodeMap.delete($selector);
|
|
2416
|
+
// 判定为双次
|
|
2417
|
+
callback(evt, {
|
|
2420
2418
|
isDoubleClick: true,
|
|
2421
2419
|
}, $selector);
|
|
2422
2420
|
}
|
|
2423
2421
|
else {
|
|
2424
2422
|
timer = setTimeout(() => {
|
|
2425
|
-
|
|
2426
|
-
//
|
|
2427
|
-
|
|
2423
|
+
isDouble = false;
|
|
2424
|
+
// 判断为单次
|
|
2425
|
+
callback(evt, {
|
|
2428
2426
|
isDoubleClick: false,
|
|
2429
2427
|
}, $selector);
|
|
2430
2428
|
}, checkClickTime);
|
|
2431
|
-
|
|
2432
|
-
|
|
2429
|
+
isDouble = true;
|
|
2430
|
+
eventNodeMap.set($selector, evt);
|
|
2433
2431
|
}
|
|
2434
2432
|
}, options);
|
|
2435
2433
|
return {
|
|
2436
2434
|
off() {
|
|
2437
2435
|
pointerUpListener.off();
|
|
2438
2436
|
// @ts-expect-error
|
|
2439
|
-
|
|
2437
|
+
eventNodeMap = null;
|
|
2440
2438
|
},
|
|
2441
2439
|
};
|
|
2442
2440
|
}
|