@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.
Files changed (86) hide show
  1. package/README.md +8 -3
  2. package/dist/shorty.cjs +1 -1
  3. package/dist/shorty.cjs.map +1 -1
  4. package/dist/shorty.d.ts +59 -53
  5. package/dist/shorty.js +1 -1
  6. package/dist/shorty.js.map +1 -1
  7. package/dist/shorty.mjs +305 -306
  8. package/dist/shorty.mjs.map +1 -1
  9. package/package.json +12 -6
  10. package/src/attr/getAttribute.ts +3 -1
  11. package/src/attr/getAttributeNS.ts +3 -1
  12. package/src/attr/hasAttribute.ts +1 -0
  13. package/src/attr/hasAttributeNS.ts +3 -1
  14. package/src/attr/removeAttribute.ts +1 -0
  15. package/src/attr/removeAttributeNS.ts +3 -1
  16. package/src/attr/setAttribute.ts +3 -1
  17. package/src/attr/setAttributeNS.ts +1 -0
  18. package/src/boolean/isMobile.ts +1 -1
  19. package/src/boolean/support3DTransform.ts +1 -1
  20. package/src/boolean/supportAnimation.ts +1 -1
  21. package/src/boolean/supportPassive.ts +1 -1
  22. package/src/boolean/supportTouch.ts +2 -1
  23. package/src/boolean/supportTransform.ts +1 -1
  24. package/src/boolean/supportTransition.ts +1 -1
  25. package/src/event/off.ts +5 -3
  26. package/src/event/on.ts +5 -3
  27. package/src/event/one.ts +7 -2
  28. package/src/get/getBoundingClientRect.ts +5 -1
  29. package/src/get/getDocument.ts +4 -3
  30. package/src/get/getDocumentBody.ts +1 -1
  31. package/src/get/getElementAnimationDelay.ts +2 -1
  32. package/src/get/getElementAnimationDuration.ts +2 -1
  33. package/src/get/getElementTransitionDelay.ts +4 -1
  34. package/src/get/getElementTransitionDuration.ts +4 -1
  35. package/src/get/getParentNode.ts +2 -1
  36. package/src/get/getRectRelativeToOffsetParent.ts +1 -0
  37. package/src/get/getUID.ts +2 -2
  38. package/src/get/getWindow.ts +1 -0
  39. package/src/index.ts +12 -2
  40. package/src/interface/customElement.ts +1 -1
  41. package/src/interface/originalEvent.ts +2 -1
  42. package/src/is/isArray.ts +1 -1
  43. package/src/is/isCanvas.ts +4 -2
  44. package/src/is/isCustomElement.ts +3 -2
  45. package/src/is/isDocument.ts +4 -1
  46. package/src/is/isElement.ts +5 -2
  47. package/src/is/isElementsArray.ts +2 -1
  48. package/src/is/isFunction.ts +2 -1
  49. package/src/is/isHTMLCollection.ts +4 -2
  50. package/src/is/isHTMLElement.ts +5 -1
  51. package/src/is/isHTMLImageElement.ts +5 -2
  52. package/src/is/isJSON.ts +1 -1
  53. package/src/is/isMap.ts +4 -1
  54. package/src/is/isMedia.ts +8 -4
  55. package/src/is/isNode.ts +9 -3
  56. package/src/is/isNodeList.ts +4 -1
  57. package/src/is/isNumber.ts +1 -1
  58. package/src/is/isObject.ts +2 -1
  59. package/src/is/isRTL.ts +1 -0
  60. package/src/is/isSVGElement.ts +4 -2
  61. package/src/is/isScaledElement.ts +5 -2
  62. package/src/is/isShadowRoot.ts +4 -2
  63. package/src/is/isString.ts +1 -1
  64. package/src/is/isTableElement.ts +4 -2
  65. package/src/is/isWeakMap.ts +4 -1
  66. package/src/is/isWindow.ts +4 -1
  67. package/src/misc/Float32ArrayFrom.ts +1 -0
  68. package/src/misc/Float64ArrayFrom.ts +1 -0
  69. package/src/misc/ObjectAssign.ts +35 -3
  70. package/src/misc/ObjectEntries.ts +3 -1
  71. package/src/misc/ObjectKeys.ts +2 -1
  72. package/src/misc/ObjectValues.ts +3 -1
  73. package/src/misc/{OriginalEvent.ts → createCustomEvent.ts} +9 -5
  74. package/src/misc/createElement.ts +7 -6
  75. package/src/misc/createElementNS.ts +9 -5
  76. package/src/misc/data.ts +22 -15
  77. package/src/misc/distinct.ts +1 -0
  78. package/src/misc/hasOwn.ts +17 -0
  79. package/src/misc/normalizeValue.ts +9 -7
  80. package/src/misc/setElementStyle.ts +3 -2
  81. package/src/misc/timer.ts +16 -13
  82. package/src/selectors/getCustomElements.ts +1 -0
  83. package/src/selectors/getElementsByClassName.ts +7 -2
  84. package/src/selectors/getElementsByTagName.ts +4 -1
  85. package/src/selectors/querySelector.ts +5 -4
  86. 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 (isMap(keyTimers)) {
67
- clearTimeout(keyTimers.get(key));
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 = (selector: string, parent?: ParentNode): HTMLCollectionOf<HTMLElement> => {
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(selector) as HTMLCollectionOf<HTMLElement>;
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 = (selector: string, parent?: ParentNode): HTMLCollectionOf<HTMLElement> => {
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: Node | string, parent?: ParentNode): HTMLElement | null => {
13
- if (isNode(selector)) {
14
- return selector as HTMLElement;
13
+ const querySelector = (selector: HTMLElement | string, parent?: ParentNode): HTMLElement | null => {
14
+ if (isHTMLElement(selector)) {
15
+ return selector;
15
16
  }
16
- const lookUp = parent && isNode(parent) ? parent : getDocument();
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 ? ['mouseenter', 'mouseleave'] : /* istanbul ignore next */ ['mouseover', 'mouseout'];
5
+ 'onmouseleave' in document
6
+ ? ['mouseenter', 'mouseleave']
7
+ : /* istanbul ignore next */ ['mouseover', 'mouseout'];
6
8
  export default mouseHoverEvents;