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