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