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