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