@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.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,21 +1506,7 @@ define((function () { 'use strict';
|
|
|
1514
1506
|
});
|
|
1515
1507
|
if (findValue) {
|
|
1516
1508
|
// 这里尝试使用defineProperty修改event的target值
|
|
1517
|
-
|
|
1518
|
-
try {
|
|
1519
|
-
OriginPrototype.Object.defineProperty(event, "target", {
|
|
1520
|
-
get() {
|
|
1521
|
-
return $target;
|
|
1522
|
-
},
|
|
1523
|
-
});
|
|
1524
|
-
OriginPrototype.Object.defineProperty(event, "originTarget", {
|
|
1525
|
-
get() {
|
|
1526
|
-
return originTarget;
|
|
1527
|
-
},
|
|
1528
|
-
});
|
|
1529
|
-
// oxlint-disable-next-line no-empty
|
|
1530
|
-
}
|
|
1531
|
-
catch { }
|
|
1509
|
+
// 不建议使用覆盖target,因为可能会有兼容性问题
|
|
1532
1510
|
execCallback = true;
|
|
1533
1511
|
call_this = $target;
|
|
1534
1512
|
call_event = event;
|
|
@@ -1694,6 +1672,9 @@ define((function () { 'use strict';
|
|
|
1694
1672
|
if (handlers.length === 0) {
|
|
1695
1673
|
// 如果没有任意的handler,那么删除该属性
|
|
1696
1674
|
CommonUtils.delete(elementEvents, eventType);
|
|
1675
|
+
if (Object.keys(elementEvents).length === 0) {
|
|
1676
|
+
CommonUtils.delete($elItem, GlobalData.domEventSymbol);
|
|
1677
|
+
}
|
|
1697
1678
|
}
|
|
1698
1679
|
});
|
|
1699
1680
|
Reflect.set($elItem, GlobalData.domEventSymbol, elementEvents);
|
|
@@ -1728,11 +1709,11 @@ define((function () { 'use strict';
|
|
|
1728
1709
|
}
|
|
1729
1710
|
$elList.forEach(($elItem) => {
|
|
1730
1711
|
const symbolList = [...new Set([...Object.getOwnPropertySymbols($elItem), GlobalData.domEventSymbol])];
|
|
1731
|
-
symbolList.forEach((
|
|
1732
|
-
if (!
|
|
1712
|
+
symbolList.forEach((__symbol__) => {
|
|
1713
|
+
if (!__symbol__.toString().startsWith("Symbol(events_")) {
|
|
1733
1714
|
return;
|
|
1734
1715
|
}
|
|
1735
|
-
const elementEvents = Reflect.get($elItem,
|
|
1716
|
+
const elementEvents = Reflect.get($elItem, __symbol__) || {};
|
|
1736
1717
|
const iterEventNameList = eventTypeList.length ? eventTypeList : Object.keys(elementEvents);
|
|
1737
1718
|
iterEventNameList.forEach((eventName) => {
|
|
1738
1719
|
const handlers = elementEvents[eventName];
|
|
@@ -1744,8 +1725,11 @@ define((function () { 'use strict';
|
|
|
1744
1725
|
capture: handler.option.capture,
|
|
1745
1726
|
});
|
|
1746
1727
|
}
|
|
1747
|
-
const events = Reflect.get($elItem,
|
|
1728
|
+
const events = Reflect.get($elItem, __symbol__);
|
|
1748
1729
|
CommonUtils.delete(events, eventName);
|
|
1730
|
+
if (Object.keys(events).length === 0) {
|
|
1731
|
+
CommonUtils.delete($elItem, __symbol__);
|
|
1732
|
+
}
|
|
1749
1733
|
});
|
|
1750
1734
|
});
|
|
1751
1735
|
});
|
|
@@ -2372,7 +2356,7 @@ define((function () { 'use strict';
|
|
|
2372
2356
|
},
|
|
2373
2357
|
};
|
|
2374
2358
|
}
|
|
2375
|
-
|
|
2359
|
+
onOneOrDouble(...args) {
|
|
2376
2360
|
const $el = args[0];
|
|
2377
2361
|
let selector = void 0;
|
|
2378
2362
|
let handler;
|
|
@@ -2403,12 +2387,21 @@ define((function () { 'use strict';
|
|
|
2403
2387
|
else {
|
|
2404
2388
|
throw new Error("args length error");
|
|
2405
2389
|
}
|
|
2406
|
-
let
|
|
2407
|
-
let
|
|
2390
|
+
let eventNodeMap = new WeakMap();
|
|
2391
|
+
let isDouble = false;
|
|
2408
2392
|
let timer = void 0;
|
|
2393
|
+
let eventType = "pointerup";
|
|
2409
2394
|
/** 检测是否是单击的延迟时间 */
|
|
2410
|
-
|
|
2411
|
-
|
|
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) => {
|
|
2412
2405
|
if ($selector) {
|
|
2413
2406
|
return handler(evt, $selector, option);
|
|
2414
2407
|
}
|
|
@@ -2416,35 +2409,34 @@ define((function () { 'use strict';
|
|
|
2416
2409
|
return handler(evt, option);
|
|
2417
2410
|
}
|
|
2418
2411
|
};
|
|
2419
|
-
const pointerUpListener = this.on($el,
|
|
2420
|
-
// this.preventEvent(evt);
|
|
2412
|
+
const pointerUpListener = this.on($el, eventType, selector, (evt, $selector) => {
|
|
2421
2413
|
clearTimeout(timer);
|
|
2422
2414
|
timer = void 0;
|
|
2423
|
-
if (
|
|
2424
|
-
|
|
2425
|
-
|
|
2426
|
-
|
|
2427
|
-
|
|
2415
|
+
if (isDouble && eventNodeMap.has($selector)) {
|
|
2416
|
+
isDouble = false;
|
|
2417
|
+
eventNodeMap.delete($selector);
|
|
2418
|
+
// 判定为双次
|
|
2419
|
+
callback(evt, {
|
|
2428
2420
|
isDoubleClick: true,
|
|
2429
2421
|
}, $selector);
|
|
2430
2422
|
}
|
|
2431
2423
|
else {
|
|
2432
2424
|
timer = setTimeout(() => {
|
|
2433
|
-
|
|
2434
|
-
//
|
|
2435
|
-
|
|
2425
|
+
isDouble = false;
|
|
2426
|
+
// 判断为单次
|
|
2427
|
+
callback(evt, {
|
|
2436
2428
|
isDoubleClick: false,
|
|
2437
2429
|
}, $selector);
|
|
2438
2430
|
}, checkClickTime);
|
|
2439
|
-
|
|
2440
|
-
|
|
2431
|
+
isDouble = true;
|
|
2432
|
+
eventNodeMap.set($selector, evt);
|
|
2441
2433
|
}
|
|
2442
2434
|
}, options);
|
|
2443
2435
|
return {
|
|
2444
2436
|
off() {
|
|
2445
2437
|
pointerUpListener.off();
|
|
2446
2438
|
// @ts-expect-error
|
|
2447
|
-
|
|
2439
|
+
eventNodeMap = null;
|
|
2448
2440
|
},
|
|
2449
2441
|
};
|
|
2450
2442
|
}
|