@koine/dom 2.0.0-beta.1 → 2.0.0-beta.11

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 (109) hide show
  1. package/$$.d.ts +1 -1
  2. package/$$.mjs +1 -2
  3. package/$.d.ts +1 -1
  4. package/$.mjs +1 -2
  5. package/$each.mjs +3 -4
  6. package/_listen-delegation.d.ts +3 -2
  7. package/_listen-delegation.mjs +17 -23
  8. package/addClass.mjs +2 -5
  9. package/calculateFixedOffset.mjs +3 -4
  10. package/createElement.mjs +2 -3
  11. package/emitEvent.mjs +3 -7
  12. package/escapeSelector.mjs +1 -2
  13. package/exists.mjs +1 -2
  14. package/forEach.d.ts +3 -5
  15. package/forEach.mjs +29 -8
  16. package/getDataAttr.mjs +1 -2
  17. package/getDocumentHeight.mjs +2 -3
  18. package/getHeight.mjs +1 -2
  19. package/getListeners.d.ts +1 -1
  20. package/getListeners.mjs +4 -5
  21. package/getOffset.mjs +8 -6
  22. package/getOffsetTop.mjs +3 -4
  23. package/getOffsetTopSlim.mjs +1 -2
  24. package/getScrollbarWidth.mjs +1 -2
  25. package/getStyleValue.mjs +1 -2
  26. package/getVisualBackgroundColor.mjs +8 -10
  27. package/injectCss.mjs +2 -5
  28. package/isHidden.mjs +1 -2
  29. package/isInViewport.mjs +3 -9
  30. package/isNodeList.mjs +3 -8
  31. package/isTotallyScrolled.mjs +1 -2
  32. package/listen.d.ts +2 -1
  33. package/listen.mjs +11 -8
  34. package/listenLoaded.mjs +2 -3
  35. package/listenOnce.mjs +2 -3
  36. package/listenResize.mjs +1 -2
  37. package/listenResizeDebounced.mjs +28 -36
  38. package/listenResizeThrottled.mjs +1 -8
  39. package/listenScroll.mjs +2 -5
  40. package/listenScrollDebounced.mjs +1 -8
  41. package/listenScrollThrottled.mjs +1 -8
  42. package/off.d.ts +2 -2
  43. package/off.mjs +2 -5
  44. package/on.d.ts +2 -2
  45. package/on.mjs +5 -5
  46. package/onClickOutside.mjs +5 -7
  47. package/once.mjs +3 -5
  48. package/package.json +8 -5
  49. package/removeClass.mjs +3 -6
  50. package/scrollTo.mjs +13 -14
  51. package/setDataAttr.mjs +1 -2
  52. package/setVendorCSS.mjs +2 -3
  53. package/siblings.mjs +4 -5
  54. package/toArray.mjs +1 -2
  55. package/types.d.ts +5 -0
  56. package/types.mjs +1 -1
  57. package/unlisten.d.ts +2 -1
  58. package/unlisten.mjs +11 -9
  59. package/$$.js +0 -16
  60. package/$.js +0 -19
  61. package/$each.js +0 -22
  62. package/_listen-delegation.js +0 -90
  63. package/addClass.js +0 -19
  64. package/calculateFixedOffset.js +0 -14
  65. package/createElement.js +0 -21
  66. package/emitEvent.js +0 -18
  67. package/escapeSelector.js +0 -14
  68. package/exists.js +0 -16
  69. package/forEach.js +0 -17
  70. package/getDataAttr.js +0 -17
  71. package/getDocumentHeight.js +0 -14
  72. package/getHeight.js +0 -11
  73. package/getListeners.js +0 -22
  74. package/getOffset.js +0 -22
  75. package/getOffsetTop.js +0 -24
  76. package/getOffsetTopSlim.js +0 -17
  77. package/getScrollbarWidth.js +0 -11
  78. package/getStyleValue.js +0 -14
  79. package/getVisualBackground.d.ts +0 -6
  80. package/getVisualBackground.js +0 -25
  81. package/getVisualBackground.mjs +0 -21
  82. package/getVisualBackgroundColor.js +0 -25
  83. package/index.js +0 -93
  84. package/injectCss.js +0 -20
  85. package/isHidden.js +0 -11
  86. package/isInViewport.js +0 -22
  87. package/isNodeList.js +0 -18
  88. package/isTotallyScrolled.js +0 -14
  89. package/listen.js +0 -37
  90. package/listenLoaded.js +0 -15
  91. package/listenOnce.js +0 -24
  92. package/listenResize.js +0 -12
  93. package/listenResizeDebounced.js +0 -47
  94. package/listenResizeThrottled.js +0 -20
  95. package/listenScroll.js +0 -17
  96. package/listenScrollDebounced.js +0 -20
  97. package/listenScrollThrottled.js +0 -20
  98. package/off.js +0 -18
  99. package/on.js +0 -26
  100. package/onClickOutside.js +0 -21
  101. package/once.js +0 -20
  102. package/removeClass.js +0 -19
  103. package/scrollTo.js +0 -44
  104. package/setDataAttr.js +0 -22
  105. package/setVendorCSS.js +0 -25
  106. package/siblings.js +0 -23
  107. package/toArray.js +0 -13
  108. package/types.js +0 -2
  109. package/unlisten.js +0 -37
package/$$.d.ts CHANGED
@@ -6,5 +6,5 @@
6
6
  * @param parent It falls back to `window.document`
7
7
  * @param avoidEscape Whether to avoid escaping `:` in the selector string
8
8
  */
9
- export declare function $$<T extends Element = HTMLElement>(selector: string, parent?: HTMLElement | Document, avoidEscape?: boolean): NodeListOf<T>;
9
+ export declare function $$<T extends Element = HTMLElement>(selector: string, parent?: Element | HTMLElement | Document | null, avoidEscape?: boolean): NodeListOf<T>;
10
10
  export default $$;
package/$$.mjs CHANGED
@@ -5,8 +5,7 @@
5
5
  * @param string selector DOM selector
6
6
  * @param parent It falls back to `window.document`
7
7
  * @param avoidEscape Whether to avoid escaping `:` in the selector string
8
- */
9
- export function $$(selector, parent, avoidEscape) {
8
+ */ export function $$(selector, parent, avoidEscape) {
10
9
  return (parent ? parent : document).querySelectorAll(avoidEscape ? selector : selector.replace(/:/g, "\\:"));
11
10
  }
12
11
  export default $$;
package/$.d.ts CHANGED
@@ -9,5 +9,5 @@
9
9
  * const $container = $(".my-section:");
10
10
  * const $el = $("[data-some-attr]", $container);
11
11
  */
12
- export declare function $<T extends Element = HTMLElement>(selector: string, parent?: HTMLElement | Document, avoidEscape?: boolean): T;
12
+ export declare function $<T extends Element = HTMLElement>(selector: string, parent?: HTMLElement | Document | null, avoidEscape?: boolean): T;
13
13
  export default $;
package/$.mjs CHANGED
@@ -8,8 +8,7 @@
8
8
  * @example <caption>Basic DOM selection</caption>
9
9
  * const $container = $(".my-section:");
10
10
  * const $el = $("[data-some-attr]", $container);
11
- */
12
- export function $(selector, parent, avoidEscape) {
11
+ */ export function $(selector, parent, avoidEscape) {
13
12
  return (parent ? parent : document).querySelector(avoidEscape ? selector : selector.replace(/:/g, "\\:"));
14
13
  }
15
14
  export default $;
package/$each.mjs CHANGED
@@ -7,10 +7,9 @@ import $$ from "./$$";
7
7
  * @param callback
8
8
  * @param parent It falls back to `window.document`
9
9
  * @param scope
10
- */
11
- export function $each(selector, callback, parent, scope) {
12
- var nodes = $$(selector, parent);
13
- for (var i = 0; i < nodes.length; i++) {
10
+ */ export function $each(selector, callback, parent, scope) {
11
+ const nodes = $$(selector, parent);
12
+ for(let i = 0; i < nodes.length; i++){
14
13
  callback.call(scope, nodes[i], i);
15
14
  }
16
15
  }
@@ -1,7 +1,8 @@
1
+ import type { AnyDOMEvent, AnyDOMEventTarget, AnyDOMEventType } from "./types";
1
2
  /**
2
3
  * @internal
3
4
  */
4
- export type EventCallback = (event: Event, desiredTarget: Window | Document | Element) => any;
5
+ export type EventCallback<TTarget extends AnyDOMEventTarget = AnyDOMEventTarget, TType extends AnyDOMEventType = AnyDOMEventType> = (event: AnyDOMEvent<TType>, desiredTarget: TTarget) => any;
5
6
  /**
6
7
  * @internal
7
8
  */
@@ -14,7 +15,7 @@ export type ListenEvent = {
14
15
  *
15
16
  * @internal
16
17
  */
17
- export declare const activeEvents: Record<Event["type"], ListenEvent[]>;
18
+ export declare const activeEvents: Partial<Record<AnyDOMEventType, ListenEvent[]>>;
18
19
  /**
19
20
  * Get the index for the listener
20
21
  *
@@ -6,25 +6,20 @@
6
6
  * https://github.com/cferdinandi/events/blob/master/src/js/events/events.js
7
7
  *
8
8
  * @fileoverview
9
- */
10
- import isString from "@koine/utils/isString";
9
+ */ import isString from "@koine/utils/isString";
11
10
  import escapeSelector from "./escapeSelector";
12
11
  /**
13
12
  * Active events
14
13
  *
15
14
  * @internal
16
- */
17
- export var activeEvents = {};
15
+ */ export const activeEvents = {};
18
16
  /**
19
17
  * Get the index for the listener
20
18
  *
21
19
  * @internal
22
- */
23
- export function getIndex(arr, selector, callback) {
24
- for (var i = 0; i < arr.length; i++) {
25
- if (arr[i].selector === selector &&
26
- arr[i].callback.toString() === callback.toString())
27
- return i;
20
+ */ export function getIndex(arr, selector, callback) {
21
+ for(let i = 0; i < arr.length; i++){
22
+ if (arr[i].selector === selector && arr[i].callback.toString() === callback.toString()) return i;
28
23
  }
29
24
  return -1;
30
25
  }
@@ -35,20 +30,21 @@ export function getIndex(arr, selector, callback) {
35
30
  * @param target The event.target
36
31
  * @param selector The selector/element to check the target against
37
32
  * @return If not false, run listener and pass the targeted element to use in the callback
38
- */
39
- export function getRunTarget(target, selector) {
33
+ */ export function getRunTarget(target, selector) {
40
34
  // @ts-expect-error FIXME: type
41
- if (["*", "window", window].includes(selector)) {
35
+ if ([
36
+ "*",
37
+ "window",
38
+ window
39
+ ].includes(selector)) {
42
40
  return window;
43
41
  }
44
42
  if ([
45
43
  "document",
46
44
  "document.documentElement",
47
45
  document,
48
- document.documentElement,
49
- // @ts-expect-error FIXME: type
50
- ].includes(selector))
51
- return document;
46
+ document.documentElement
47
+ ].includes(selector)) return document;
52
48
  if (isString(selector)) {
53
49
  return target.closest(escapeSelector(selector));
54
50
  }
@@ -69,12 +65,10 @@ export function getRunTarget(target, selector) {
69
65
  * Handle listeners after event fires
70
66
  *
71
67
  * @internal
72
- */
73
- export function eventHandler(event) {
74
- if (!activeEvents[event.type])
75
- return;
76
- activeEvents[event.type].forEach(function (listener) {
77
- var target = getRunTarget(event.target, listener.selector);
68
+ */ export function eventHandler(event) {
69
+ // if (!activeEvents[event.type]) return;
70
+ activeEvents[event.type]?.forEach(function(listener) {
71
+ const target = getRunTarget(event.target, listener.selector);
78
72
  if (!target) {
79
73
  return;
80
74
  }
package/addClass.mjs CHANGED
@@ -1,15 +1,12 @@
1
1
  /**
2
2
  * Add class shortcut
3
- */
4
- export function addClass(el, className) {
5
- if (className === void 0) { className = ""; }
3
+ */ export function addClass(el, className = "") {
6
4
  if (process.env["NODE_ENV"] !== "production") {
7
5
  if (!el) {
8
6
  console.warn("[@koine/dom:addClass] unexisting DOM element");
9
7
  return;
10
8
  }
11
9
  }
12
- if (el)
13
- el.classList.add(className);
10
+ if (el) el.classList.add(className);
14
11
  }
15
12
  export default addClass;
@@ -1,8 +1,7 @@
1
1
  import { $each } from "./$each";
2
- export function calculateFixedOffset(selector) {
3
- if (selector === void 0) { selector = "[data-fixed]"; }
4
- var fixedOffset = 0;
5
- $each(selector, function ($el) {
2
+ export function calculateFixedOffset(selector = "[data-fixed]") {
3
+ let fixedOffset = 0;
4
+ $each(selector, ($el)=>{
6
5
  fixedOffset += $el.offsetHeight;
7
6
  });
8
7
  return fixedOffset;
package/createElement.mjs CHANGED
@@ -5,9 +5,8 @@ import addClass from "./addClass";
5
5
  *
6
6
  * @param type
7
7
  * @param className
8
- */
9
- export function createElement(type, className) {
10
- var el = document.createElement(type);
8
+ */ export function createElement(type, className) {
9
+ const el = document.createElement(type);
11
10
  if (className) {
12
11
  addClass(el, className);
13
12
  }
package/emitEvent.mjs CHANGED
@@ -1,14 +1,10 @@
1
1
  /**
2
2
  * Emit event (use only if the targeted browser supports `CustomEvent`s)
3
- */
4
- export function emitEvent(type, detail) {
5
- if (type === void 0) { type = "customEvent"; }
6
- if (detail === void 0) { detail = {}; }
7
- if (typeof window.CustomEvent !== "function")
8
- return;
3
+ */ export function emitEvent(type = "customEvent", detail = {}) {
4
+ if (typeof window.CustomEvent !== "function") return;
9
5
  document.dispatchEvent(new CustomEvent(type, {
10
6
  bubbles: true,
11
- detail: detail,
7
+ detail
12
8
  }));
13
9
  }
14
10
  export default emitEvent;
@@ -3,8 +3,7 @@
3
3
  * @see https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelector#Escaping_special_characters
4
4
  *
5
5
  * @param selector
6
- */
7
- export function escapeSelector(selector) {
6
+ */ export function escapeSelector(selector) {
8
7
  return selector.replace(/:/g, "\\:");
9
8
  }
10
9
  export default escapeSelector;
package/exists.mjs CHANGED
@@ -2,8 +2,7 @@
2
2
  * Checks if passed node exist and is a valid element.
3
3
  *
4
4
  * @borrows @glidejs/glide/src/utils/dom (source)
5
- */
6
- export function exists(node) {
5
+ */ export function exists(node) {
7
6
  if (node && node instanceof window.HTMLElement) {
8
7
  return true;
9
8
  }
package/forEach.d.ts CHANGED
@@ -1,9 +1,7 @@
1
1
  /**
2
- * For each, iterate through a NodeList of HTMLElements
2
+ * For each, iterate through a `NodeList` or an `array` of `HTMLElement`s
3
3
  *
4
- * @param nodes DOM nodes collection
5
- * @param callback
6
- * @param scope
4
+ * @param scope The optional `this` of the callback function
7
5
  */
8
- export declare function forEach<T extends Element = HTMLElement, TScope = object>(nodes: NodeList, callback: (this: TScope, $element: T, index: number) => any, scope?: TScope): void;
6
+ export declare function forEach<T extends HTMLElement, TScope = object>(nodes: NodeListOf<T> | T[], callback: (this: TScope, $element: T, index: number) => any, scope?: TScope): void;
9
7
  export default forEach;
package/forEach.mjs CHANGED
@@ -1,13 +1,34 @@
1
1
  /**
2
- * For each, iterate through a NodeList of HTMLElements
2
+ * For each, iterate through a `NodeList` or an `array` of `HTMLElement`s
3
3
  *
4
- * @param nodes DOM nodes collection
5
- * @param callback
6
- * @param scope
7
- */
8
- export function forEach(nodes, callback, scope) {
9
- for (var i = 0; i < nodes.length; i++) {
4
+ * @param scope The optional `this` of the callback function
5
+ */ export function forEach(nodes, callback, scope) {
6
+ for(let i = 0; i < nodes.length; i++){
10
7
  callback.call(scope, nodes[i], i);
11
8
  }
12
9
  }
13
- export default forEach;
10
+ export default forEach; // /**
11
+ // * For each, iterate through a `NodeList` or an `array` of `HTMLElement`s
12
+ // *
13
+ // * @param scope The optional `this` of the callback function
14
+ // */
15
+ // export function forEach<TScope = object>(
16
+ // nodes: HTMLElement[],
17
+ // callback: (this: TScope, $element: HTMLElement, index: number) => any,
18
+ // scope?: TScope
19
+ // ): void;
20
+ // export function forEach<TScope = object>(
21
+ // nodes: NodeListOf<HTMLElement> | HTMLElement[],
22
+ // callback: (this: TScope, $element: HTMLElement, index: number) => any,
23
+ // scope?: TScope
24
+ // ): void;
25
+ // export function forEach<T extends Element, TScope = object>(
26
+ // nodes: NodeListOf<T> | HTMLElement[],
27
+ // callback: (this: TScope, $element: T, index: number) => any,
28
+ // scope?: TScope
29
+ // ) {
30
+ // for (let i = 0; i < nodes.length; i++) {
31
+ // callback.call(scope as TScope, nodes[i] as T, i);
32
+ // }
33
+ // }
34
+ // export default forEach;
package/getDataAttr.mjs CHANGED
@@ -5,8 +5,7 @@
5
5
  *
6
6
  * @param element
7
7
  * @param attribute The name of the `data-{attr}`
8
- */
9
- export function getDataAttr(element, attribute) {
8
+ */ export function getDataAttr(element, attribute) {
10
9
  // return element.dataset[attribute];
11
10
  return element.getAttribute("data-" + attribute);
12
11
  }
@@ -2,9 +2,8 @@
2
2
  * Determine the document's height
3
3
  *
4
4
  * @see https://github.com/cferdinandi/smooth-scroll (credits)
5
- */
6
- export function getDocumentHeight() {
7
- var body = document.body, documentElement = document.documentElement;
5
+ */ export function getDocumentHeight() {
6
+ const { body, documentElement } = document;
8
7
  return Math.max(body.scrollHeight, documentElement.scrollHeight, body.offsetHeight, documentElement.offsetHeight, body.clientHeight, documentElement.clientHeight);
9
8
  }
10
9
  export default getDocumentHeight;
package/getHeight.mjs CHANGED
@@ -1,7 +1,6 @@
1
1
  /**
2
2
  * Get element height
3
- */
4
- export function getHeight(element) {
3
+ */ export function getHeight(element) {
5
4
  return parseInt(window.getComputedStyle(element).height, 10);
6
5
  }
7
6
  export default getHeight;
package/getListeners.d.ts CHANGED
@@ -5,5 +5,5 @@
5
5
  *
6
6
  * @return Active event listeners
7
7
  */
8
- export declare function getListeners(): Record<string, import("./_listen-delegation").ListenEvent[]>;
8
+ export declare function getListeners(): Partial<Record<import("./types").AnyDOMEventType, import("./_listen-delegation").ListenEvent[]>>;
9
9
  export default getListeners;
package/getListeners.mjs CHANGED
@@ -5,13 +5,12 @@ import { activeEvents } from "./_listen-delegation";
5
5
  * @category listen-delegation
6
6
  *
7
7
  * @return Active event listeners
8
- */
9
- export function getListeners() {
10
- var obj = {};
11
- for (var type in activeEvents) {
8
+ */ export function getListeners() {
9
+ const obj = {};
10
+ for(const type in activeEvents){
12
11
  // if (activeEvents.hasOwnProperty(type)) {
13
12
  obj[type] = activeEvents[type];
14
- // }
13
+ // }
15
14
  }
16
15
  return obj;
17
16
  }
package/getOffset.mjs CHANGED
@@ -3,16 +3,18 @@
3
3
  *
4
4
  * @param elem The HTML node element
5
5
  * @return Distance from the top and left in pixels
6
- */
7
- export function getOffset(elem) {
8
- var left = 0;
9
- var top = 0;
10
- while (elem && !isNaN(elem.offsetLeft) && !isNaN(elem.offsetTop)) {
6
+ */ export function getOffset(elem) {
7
+ let left = 0;
8
+ let top = 0;
9
+ while(elem && !isNaN(elem.offsetLeft) && !isNaN(elem.offsetTop)){
11
10
  left += elem.offsetLeft - elem.scrollLeft;
12
11
  top += elem.offsetTop - elem.scrollTop;
13
12
  // @ts-expect-error nevermind?
14
13
  elem = elem.offsetParent;
15
14
  }
16
- return { top: top, left: left };
15
+ return {
16
+ top,
17
+ left
18
+ };
17
19
  }
18
20
  export default getOffset;
package/getOffsetTop.mjs CHANGED
@@ -5,11 +5,10 @@
5
5
  *
6
6
  * @param elem The HTML node element
7
7
  * @return Distance from the top in pixels
8
- */
9
- export function getOffsetTop(elem) {
10
- var location = 0;
8
+ */ export function getOffsetTop(elem) {
9
+ let location = 0;
11
10
  if (elem.offsetParent) {
12
- while (elem) {
11
+ while(elem){
13
12
  location += elem.offsetTop;
14
13
  // @ts-expect-error nevermind?
15
14
  elem = elem.offsetParent;
@@ -6,8 +6,7 @@
6
6
  *
7
7
  * @param elem The HTML node element
8
8
  * @return Distance from the top in pixels
9
- */
10
- export function getOffsetTopSlim(elem) {
9
+ */ export function getOffsetTopSlim(elem) {
11
10
  return elem.getBoundingClientRect().top + window.scrollY;
12
11
  }
13
12
  export default getOffsetTopSlim;
@@ -1,7 +1,6 @@
1
1
  /**
2
2
  * Get scrollbar's current width
3
- */
4
- export function getScrollbarWidth(element) {
3
+ */ export function getScrollbarWidth(element) {
5
4
  return window.innerWidth - (element || document.documentElement).clientWidth;
6
5
  }
7
6
  export default getScrollbarWidth;
package/getStyleValue.mjs CHANGED
@@ -3,8 +3,7 @@
3
3
  *
4
4
  * @param el The element to compute
5
5
  * @param prop The style property
6
- */
7
- export function getStyleValue(el, prop) {
6
+ */ export function getStyleValue(el, prop) {
8
7
  return getComputedStyle(el, null).getPropertyValue(prop);
9
8
  }
10
9
  export default getStyleValue;
@@ -1,18 +1,16 @@
1
1
  /**
2
2
  * Get the background color of an element eventually looking recursively into
3
3
  * its parents, if nothing is found it returns a `#fff` background
4
- */
5
- export function getVisualBackgroundColor(elem) {
6
- if (!elem)
7
- return "#fff";
8
- var transparent = "rgba(0, 0, 0, 0)";
9
- var transparentIE11 = "transparent";
4
+ */ export function getVisualBackgroundColor(elem) {
5
+ if (!elem) return "#fff";
6
+ const transparent = "rgba(0, 0, 0, 0)";
7
+ const transparentIE11 = "transparent";
10
8
  // if (!elem) return transparent;
11
- var bg = window.getComputedStyle(elem).backgroundColor;
9
+ const bg = window.getComputedStyle(elem).backgroundColor;
12
10
  if (bg === transparent || bg === transparentIE11) {
13
- var parent_1 = elem.parentElement;
14
- if (parent_1) {
15
- return getVisualBackgroundColor(parent_1);
11
+ const parent = elem.parentElement;
12
+ if (parent) {
13
+ return getVisualBackgroundColor(parent);
16
14
  }
17
15
  return "#fff";
18
16
  }
package/injectCss.mjs CHANGED
@@ -1,10 +1,7 @@
1
1
  /**
2
2
  * Inject css
3
- */
4
- export function injectCss(id, cssString, root) {
5
- if (cssString === void 0) { cssString = ""; }
6
- if (root === void 0) { root = document; }
7
- var styleblock;
3
+ */ export function injectCss(id, cssString = "", root = document) {
4
+ let styleblock;
8
5
  styleblock = root.getElementById(id);
9
6
  if (!styleblock) {
10
7
  styleblock = root.createElement("style");
package/isHidden.mjs CHANGED
@@ -1,7 +1,6 @@
1
1
  /**
2
2
  * Is element hidden?
3
- */
4
- export function isHidden(el) {
3
+ */ export function isHidden(el) {
5
4
  return !el || el.offsetParent === null;
6
5
  }
7
6
  export default isHidden;
package/isInViewport.mjs CHANGED
@@ -5,14 +5,8 @@
5
5
  *
6
6
  * @param elem The element
7
7
  * @return Returns true if element is in the viewport
8
- */
9
- export function isInViewport(elem) {
10
- var distance = elem.getBoundingClientRect();
11
- return (distance.top >= 0 &&
12
- distance.left >= 0 &&
13
- distance.bottom <=
14
- (window.innerHeight || document.documentElement.clientHeight) &&
15
- distance.right <=
16
- (window.innerWidth || document.documentElement.clientWidth));
8
+ */ export function isInViewport(elem) {
9
+ const distance = elem.getBoundingClientRect();
10
+ return distance.top >= 0 && distance.left >= 0 && distance.bottom <= (window.innerHeight || document.documentElement.clientHeight) && distance.right <= (window.innerWidth || document.documentElement.clientWidth);
17
11
  }
18
12
  export default isInViewport;
package/isNodeList.mjs CHANGED
@@ -2,13 +2,8 @@
2
2
  * Is node list
3
3
  *
4
4
  * @param nodes The object to check
5
- */
6
- export function isNodeList(nodes) {
7
- var stringRepr = Object.prototype.toString.call(nodes);
8
- return (typeof nodes === "object" &&
9
- /^\[object (HTMLCollection|NodeList|Object)\]$/.test(stringRepr) &&
10
- typeof nodes.length === "number" &&
11
- (nodes.length === 0 ||
12
- (typeof nodes[0] === "object" && nodes[0].nodeType > 0)));
5
+ */ export function isNodeList(nodes) {
6
+ const stringRepr = Object.prototype.toString.call(nodes);
7
+ return typeof nodes === "object" && /^\[object (HTMLCollection|NodeList|Object)\]$/.test(stringRepr) && typeof nodes.length === "number" && (nodes.length === 0 || typeof nodes[0] === "object" && nodes[0].nodeType > 0);
13
8
  }
14
9
  export default isNodeList;
@@ -3,8 +3,7 @@
3
3
  *
4
4
  * @see https://github.com/willmcpo/body-scroll-lock/blob/master/src/bodyScrollLock.js#L116
5
5
  * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollHeight#Problems_and_solutions
6
- */
7
- export function isTotallyScrolled(el) {
6
+ */ export function isTotallyScrolled(el) {
8
7
  return el ? el.scrollHeight - el.scrollTop <= el.clientHeight : false;
9
8
  }
10
9
  export default isTotallyScrolled;
package/listen.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import { type EventCallback } from "./_listen-delegation";
2
+ import type { AnyDOMEventTarget, AnyDOMEventType } from "./types";
2
3
  /**
3
4
  * Listen an event
4
5
  *
@@ -8,5 +9,5 @@ import { type EventCallback } from "./_listen-delegation";
8
9
  * @param selector The selector to run the event on
9
10
  * @param callback The function to run when the event fires
10
11
  */
11
- export declare function listen(types: string, selector: string, callback: EventCallback): void;
12
+ export declare function listen<TTypes extends AnyDOMEventType, TTarget extends AnyDOMEventTarget = AnyDOMEventTarget>(types: TTypes, selector: string, callback: EventCallback<TTarget, TTypes>): void;
12
13
  export default listen;
package/listen.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { activeEvents, eventHandler, } from "./_listen-delegation";
1
+ import { activeEvents, eventHandler } from "./_listen-delegation";
2
2
  import { on } from "./on";
3
3
  // import { off } from "./off";
4
4
  /**
@@ -9,13 +9,15 @@ import { on } from "./on";
9
9
  * @param types The event type or types (comma separated)
10
10
  * @param selector The selector to run the event on
11
11
  * @param callback The function to run when the event fires
12
- */
13
- export function listen(types, selector, callback) {
12
+ */ export function listen(types, // | `${TTypes},${TTypes}`
13
+ // | `${TTypes},${TTypes},${TTypes}`
14
+ // | `${TTypes},${TTypes},${TTypes},${TTypes}`
15
+ // | `${TTypes},${TTypes},${TTypes},${TTypes},${TTypes}`,
16
+ selector, callback) {
14
17
  // Make sure there's a selector and callback
15
- if (!selector || !callback)
16
- return;
18
+ if (!selector || !callback) return;
17
19
  // Loop through each event type
18
- types.split(",").forEach(function (type) {
20
+ types.split(",").forEach(function(type) {
19
21
  // Remove whitespace
20
22
  type = type.trim();
21
23
  // If no event of this type yet, setup
@@ -24,9 +26,10 @@ export function listen(types, selector, callback) {
24
26
  on(window, type, eventHandler, true);
25
27
  }
26
28
  // Push to active events
27
- activeEvents[type].push({
29
+ activeEvents[type]?.push({
28
30
  selector: selector,
29
- callback: callback,
31
+ // @ts-expect-error FIXME: type...
32
+ callback: callback
30
33
  });
31
34
  });
32
35
  }
package/listenLoaded.mjs CHANGED
@@ -3,9 +3,8 @@ import { on } from "./on";
3
3
  * Fires a callback when the DOM content is loaded
4
4
  *
5
5
  * @see https://mathiasbynens.be/notes/settimeout-onload
6
- */
7
- export function listenLoaded(handler) {
6
+ */ export function listenLoaded(handler) {
8
7
  on(document, "DOMContentLoaded", handler);
9
- // document.addEventListener("DOMContentLoaded", setTimeout(handler, 4));
8
+ // document.addEventListener("DOMContentLoaded", setTimeout(handler, 4));
10
9
  }
11
10
  export default listenLoaded;
package/listenOnce.mjs CHANGED
@@ -9,10 +9,9 @@ import { unlisten } from "./unlisten";
9
9
  * @param types The event type or types (comma separated)
10
10
  * @param selector The selector to run the event on
11
11
  * @param callback The function to run when the event fires
12
- */
13
- export function listenOnce(types, selector, callback) {
12
+ */ export function listenOnce(types, selector, callback) {
14
13
  listen(types, selector, function temp(event) {
15
- var target = getRunTarget(event.target, selector);
14
+ const target = getRunTarget(event.target, selector);
16
15
  callback(event, target || window);
17
16
  unlisten(types, selector, temp);
18
17
  });
package/listenResize.mjs CHANGED
@@ -3,6 +3,5 @@ import { on } from "./on";
3
3
  * Listen element's (`window` by default) _scroll_ event
4
4
  *
5
5
  * @returns An automatic unbinding function to run to deregister the listener upon call
6
- */
7
- export var listenResize = function (handler, el) { return on(el || window, "resize", handler); };
6
+ */ export const listenResize = (handler, el)=>on(el || window, "resize", handler);
8
7
  export default listenResize;