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