@thednp/shorty 2.0.0-alpha4 → 2.0.0-alpha6
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/README.md +8 -3
- package/dist/shorty.cjs +1 -1
- package/dist/shorty.cjs.map +1 -1
- package/dist/shorty.d.ts +59 -53
- package/dist/shorty.js +1 -1
- package/dist/shorty.js.map +1 -1
- package/dist/shorty.mjs +305 -306
- package/dist/shorty.mjs.map +1 -1
- package/package.json +12 -6
- package/src/attr/getAttribute.ts +3 -1
- package/src/attr/getAttributeNS.ts +3 -1
- package/src/attr/hasAttribute.ts +1 -0
- package/src/attr/hasAttributeNS.ts +3 -1
- package/src/attr/removeAttribute.ts +1 -0
- package/src/attr/removeAttributeNS.ts +3 -1
- package/src/attr/setAttribute.ts +3 -1
- package/src/attr/setAttributeNS.ts +1 -0
- package/src/boolean/isMobile.ts +1 -1
- package/src/boolean/support3DTransform.ts +1 -1
- package/src/boolean/supportAnimation.ts +1 -1
- package/src/boolean/supportPassive.ts +1 -1
- package/src/boolean/supportTouch.ts +2 -1
- package/src/boolean/supportTransform.ts +1 -1
- package/src/boolean/supportTransition.ts +1 -1
- package/src/event/off.ts +5 -3
- package/src/event/on.ts +5 -3
- package/src/event/one.ts +7 -2
- package/src/get/getBoundingClientRect.ts +5 -1
- package/src/get/getDocument.ts +4 -3
- package/src/get/getDocumentBody.ts +1 -1
- package/src/get/getElementAnimationDelay.ts +2 -1
- package/src/get/getElementAnimationDuration.ts +2 -1
- package/src/get/getElementTransitionDelay.ts +4 -1
- package/src/get/getElementTransitionDuration.ts +4 -1
- package/src/get/getParentNode.ts +2 -1
- package/src/get/getRectRelativeToOffsetParent.ts +1 -0
- package/src/get/getUID.ts +2 -2
- package/src/get/getWindow.ts +1 -0
- package/src/index.ts +12 -2
- package/src/interface/customElement.ts +1 -1
- package/src/interface/originalEvent.ts +2 -1
- package/src/is/isArray.ts +1 -1
- package/src/is/isCanvas.ts +4 -2
- package/src/is/isCustomElement.ts +3 -2
- package/src/is/isDocument.ts +4 -1
- package/src/is/isElement.ts +5 -2
- package/src/is/isElementsArray.ts +2 -1
- package/src/is/isFunction.ts +2 -1
- package/src/is/isHTMLCollection.ts +4 -2
- package/src/is/isHTMLElement.ts +5 -1
- package/src/is/isHTMLImageElement.ts +5 -2
- package/src/is/isJSON.ts +1 -1
- package/src/is/isMap.ts +4 -1
- package/src/is/isMedia.ts +8 -4
- package/src/is/isNode.ts +9 -3
- package/src/is/isNodeList.ts +4 -1
- package/src/is/isNumber.ts +1 -1
- package/src/is/isObject.ts +2 -1
- package/src/is/isRTL.ts +1 -0
- package/src/is/isSVGElement.ts +4 -2
- package/src/is/isScaledElement.ts +5 -2
- package/src/is/isShadowRoot.ts +4 -2
- package/src/is/isString.ts +1 -1
- package/src/is/isTableElement.ts +4 -2
- package/src/is/isWeakMap.ts +4 -1
- package/src/is/isWindow.ts +4 -1
- package/src/misc/Float32ArrayFrom.ts +1 -0
- package/src/misc/Float64ArrayFrom.ts +1 -0
- package/src/misc/ObjectAssign.ts +35 -3
- package/src/misc/ObjectEntries.ts +3 -1
- package/src/misc/ObjectKeys.ts +2 -1
- package/src/misc/ObjectValues.ts +3 -1
- package/src/misc/{OriginalEvent.ts → createCustomEvent.ts} +9 -5
- package/src/misc/createElement.ts +7 -6
- package/src/misc/createElementNS.ts +9 -5
- package/src/misc/data.ts +22 -15
- package/src/misc/distinct.ts +1 -0
- package/src/misc/hasOwn.ts +17 -0
- package/src/misc/normalizeValue.ts +9 -7
- package/src/misc/setElementStyle.ts +3 -2
- package/src/misc/timer.ts +16 -13
- package/src/selectors/getCustomElements.ts +1 -0
- package/src/selectors/getElementsByClassName.ts +7 -2
- package/src/selectors/getElementsByTagName.ts +4 -1
- package/src/selectors/querySelector.ts +5 -4
- package/src/strings/mouseHoverEvents.ts +3 -1
package/src/misc/timer.ts
CHANGED
|
@@ -5,14 +5,16 @@ import isNumber from '../is/isNumber';
|
|
|
5
5
|
type KeyMap = Map<string, number>;
|
|
6
6
|
type TimeMap = Map<HTMLElement, number | KeyMap>;
|
|
7
7
|
|
|
8
|
-
const TimeCache: TimeMap = new Map();
|
|
8
|
+
const TimeCache: TimeMap = new Map() as TimeMap;
|
|
9
9
|
/**
|
|
10
10
|
* An interface for one or more `TimerHandler`s per `Element`.
|
|
11
|
+
*
|
|
11
12
|
* @see https://github.com/thednp/navbar/
|
|
12
13
|
*/
|
|
13
14
|
const Timer = {
|
|
14
15
|
/**
|
|
15
16
|
* Sets a new timeout timer for an element, or element -> key association.
|
|
17
|
+
*
|
|
16
18
|
* @param element target element
|
|
17
19
|
* @param callback the callback
|
|
18
20
|
* @param delay the execution delay
|
|
@@ -27,14 +29,17 @@ const Timer = {
|
|
|
27
29
|
if (!TimeCache.has(element)) {
|
|
28
30
|
TimeCache.set(element, new Map());
|
|
29
31
|
}
|
|
32
|
+
// eslint-disable-next-line @typescript-eslint/no-implied-eval
|
|
30
33
|
(TimeCache.get(element) as KeyMap).set(key, setTimeout(callback, delay));
|
|
31
34
|
} else {
|
|
35
|
+
// eslint-disable-next-line @typescript-eslint/no-implied-eval
|
|
32
36
|
TimeCache.set(element, setTimeout(callback, delay));
|
|
33
37
|
}
|
|
34
38
|
},
|
|
35
39
|
|
|
36
40
|
/**
|
|
37
41
|
* Returns the timer associated with the target.
|
|
42
|
+
*
|
|
38
43
|
* @param element target element
|
|
39
44
|
* @param key a unique
|
|
40
45
|
* @returns the timer
|
|
@@ -43,16 +48,17 @@ const Timer = {
|
|
|
43
48
|
if (!isHTMLElement(element)) return null;
|
|
44
49
|
const keyTimers = TimeCache.get(element);
|
|
45
50
|
|
|
46
|
-
if (key && isMap(keyTimers)) {
|
|
47
|
-
return keyTimers.get(key) || /* istanbul ignore next */ null;
|
|
48
|
-
} else if (isNumber(keyTimers)) {
|
|
49
|
-
return keyTimers;
|
|
51
|
+
if (key && keyTimers && isMap(keyTimers as KeyMap)) {
|
|
52
|
+
return (keyTimers as KeyMap).get(key) || /* istanbul ignore next */ null;
|
|
53
|
+
} else if (isNumber(keyTimers as number)) {
|
|
54
|
+
return keyTimers as number;
|
|
50
55
|
}
|
|
51
56
|
return null;
|
|
52
57
|
},
|
|
53
58
|
|
|
54
59
|
/**
|
|
55
60
|
* Clears the element's timer.
|
|
61
|
+
*
|
|
56
62
|
* @param element target element
|
|
57
63
|
* @param key a unique key
|
|
58
64
|
*/
|
|
@@ -61,15 +67,12 @@ const Timer = {
|
|
|
61
67
|
|
|
62
68
|
const keyTimers = TimeCache.get(element);
|
|
63
69
|
|
|
64
|
-
if (key && key.length && isMap(keyTimers)) {
|
|
70
|
+
if (key && key.length && isMap(keyTimers as KeyMap)) {
|
|
71
|
+
clearTimeout((keyTimers as KeyMap).get(key));
|
|
72
|
+
(keyTimers as KeyMap).delete(key);
|
|
65
73
|
/* istanbul ignore else */
|
|
66
|
-
if (
|
|
67
|
-
|
|
68
|
-
keyTimers.delete(key);
|
|
69
|
-
/* istanbul ignore else */
|
|
70
|
-
if (keyTimers.size === 0) {
|
|
71
|
-
TimeCache.delete(element);
|
|
72
|
-
}
|
|
74
|
+
if ((keyTimers as KeyMap).size === 0) {
|
|
75
|
+
TimeCache.delete(element);
|
|
73
76
|
}
|
|
74
77
|
} else {
|
|
75
78
|
clearTimeout(keyTimers as number);
|
|
@@ -5,6 +5,7 @@ import getElementsByTagName from './getElementsByTagName';
|
|
|
5
5
|
/**
|
|
6
6
|
* Returns an `Array` of `Node` elements that are registered as
|
|
7
7
|
* `CustomElement`.
|
|
8
|
+
*
|
|
8
9
|
* @see https://stackoverflow.com/questions/27334365/how-to-get-list-of-registered-custom-elements
|
|
9
10
|
*
|
|
10
11
|
* @param parent parent to look into
|
|
@@ -9,9 +9,14 @@ import isNode from '../is/isNode';
|
|
|
9
9
|
* @param parent optional Element to look into
|
|
10
10
|
* @return the 'HTMLCollection'
|
|
11
11
|
*/
|
|
12
|
-
const getElementsByClassName = (
|
|
12
|
+
const getElementsByClassName = (
|
|
13
|
+
selector: string,
|
|
14
|
+
parent?: ParentNode,
|
|
15
|
+
): HTMLCollectionOf<HTMLElement> => {
|
|
13
16
|
const lookUp = parent && isNode(parent) ? parent : getDocument();
|
|
14
|
-
return (lookUp as HTMLElement | Document).getElementsByClassName(
|
|
17
|
+
return (lookUp as HTMLElement | Document).getElementsByClassName(
|
|
18
|
+
selector,
|
|
19
|
+
) as HTMLCollectionOf<HTMLElement>;
|
|
15
20
|
};
|
|
16
21
|
|
|
17
22
|
export default getElementsByClassName;
|
|
@@ -9,7 +9,10 @@ import isNode from '../is/isNode';
|
|
|
9
9
|
* @param parent optional Element to look into
|
|
10
10
|
* @return the 'HTMLCollection'
|
|
11
11
|
*/
|
|
12
|
-
const getElementsByTagName = (
|
|
12
|
+
const getElementsByTagName = (
|
|
13
|
+
selector: string,
|
|
14
|
+
parent?: ParentNode,
|
|
15
|
+
): HTMLCollectionOf<HTMLElement> => {
|
|
13
16
|
const lookUp = isNode(parent) ? parent : getDocument();
|
|
14
17
|
return (lookUp as Document).getElementsByTagName(selector) as HTMLCollectionOf<HTMLElement>;
|
|
15
18
|
};
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import getDocument from '../get/getDocument';
|
|
2
2
|
import isNode from '../is/isNode';
|
|
3
|
+
import isHTMLElement from '../is/isHTMLElement';
|
|
3
4
|
|
|
4
5
|
/**
|
|
5
6
|
* Utility to check if target is typeof `HTMLElement`, `Element`, `Node`
|
|
@@ -9,11 +10,11 @@ import isNode from '../is/isNode';
|
|
|
9
10
|
* @param parent optional node to look into
|
|
10
11
|
* @return the `HTMLElement` or `querySelector` result
|
|
11
12
|
*/
|
|
12
|
-
const querySelector = (selector:
|
|
13
|
-
if (
|
|
14
|
-
return selector
|
|
13
|
+
const querySelector = (selector: HTMLElement | string, parent?: ParentNode): HTMLElement | null => {
|
|
14
|
+
if (isHTMLElement(selector)) {
|
|
15
|
+
return selector;
|
|
15
16
|
}
|
|
16
|
-
const lookUp =
|
|
17
|
+
const lookUp = isNode(parent) ? parent : getDocument();
|
|
17
18
|
|
|
18
19
|
return lookUp.querySelector(selector);
|
|
19
20
|
};
|
|
@@ -2,5 +2,7 @@
|
|
|
2
2
|
* A global namespace for mouse hover events.
|
|
3
3
|
*/
|
|
4
4
|
const mouseHoverEvents =
|
|
5
|
-
'onmouseleave' in document
|
|
5
|
+
'onmouseleave' in document
|
|
6
|
+
? ['mouseenter', 'mouseleave']
|
|
7
|
+
: /* istanbul ignore next */ ['mouseover', 'mouseout'];
|
|
6
8
|
export default mouseHoverEvents;
|