@koine/dom 2.0.0-beta.37 → 2.0.0-beta.39

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 (104) hide show
  1. package/$.d.ts +1 -2
  2. package/$all.d.ts +1 -2
  3. package/$each.d.ts +1 -2
  4. package/README.md +1 -0
  5. package/_listen-delegation.d.ts +5 -5
  6. package/addClass.d.ts +1 -2
  7. package/calculateFixedOffset.d.ts +1 -2
  8. package/createElement.d.ts +2 -3
  9. package/emitEvent.d.ts +1 -2
  10. package/escapeSelector.d.ts +1 -2
  11. package/exists.d.ts +1 -2
  12. package/forEach.d.ts +1 -2
  13. package/getDataAttr.d.ts +1 -2
  14. package/getDocumentHeight.d.ts +1 -2
  15. package/getHeight.d.ts +1 -2
  16. package/getListeners.d.ts +1 -2
  17. package/getOffset.d.ts +1 -2
  18. package/getOffsetTop.d.ts +1 -2
  19. package/getOffsetTopSlim.d.ts +1 -2
  20. package/getScrollbarWidth.d.ts +1 -2
  21. package/getStyleValue.d.ts +1 -2
  22. package/getVisualBackgroundColor.d.ts +1 -2
  23. package/index.cjs.d.ts +1 -0
  24. package/index.cjs.default.js +1 -0
  25. package/index.cjs.js +143 -0
  26. package/index.cjs.mjs +2 -0
  27. package/index.d.ts +46 -46
  28. package/index.esm.js +95 -0
  29. package/injectCss.d.ts +1 -2
  30. package/isHidden.d.ts +1 -2
  31. package/isInViewport.d.ts +1 -2
  32. package/isNodeList.d.ts +1 -2
  33. package/isTotallyScrolled.d.ts +1 -2
  34. package/listen.d.ts +3 -4
  35. package/listenLoaded.d.ts +1 -2
  36. package/listenOnce.d.ts +2 -3
  37. package/listenResize.d.ts +2 -3
  38. package/listenResizeDebounced.d.ts +2 -3
  39. package/listenResizeThrottled.d.ts +2 -3
  40. package/listenScroll.d.ts +2 -3
  41. package/listenScrollDebounced.d.ts +2 -3
  42. package/listenScrollThrottled.d.ts +2 -3
  43. package/off.d.ts +2 -3
  44. package/on.d.ts +2 -3
  45. package/onClickOutside.d.ts +1 -1
  46. package/once.d.ts +2 -3
  47. package/package.json +8 -146
  48. package/removeClass.d.ts +1 -2
  49. package/scrollTo.d.ts +1 -2
  50. package/setDataAttr.d.ts +1 -2
  51. package/setVendorCSS.d.ts +1 -2
  52. package/siblings.d.ts +1 -2
  53. package/toArray.d.ts +1 -2
  54. package/types.d.ts +1 -2
  55. package/unlisten.d.ts +3 -4
  56. package/$.js +0 -4
  57. package/$all.js +0 -4
  58. package/$each.js +0 -8
  59. package/_listen-delegation.js +0 -46
  60. package/addClass.js +0 -12
  61. package/calculateFixedOffset.js +0 -10
  62. package/createElement.js +0 -9
  63. package/emitEvent.js +0 -11
  64. package/escapeSelector.js +0 -4
  65. package/exists.js +0 -7
  66. package/forEach.js +0 -6
  67. package/getDataAttr.js +0 -4
  68. package/getDocumentHeight.js +0 -5
  69. package/getHeight.js +0 -4
  70. package/getListeners.js +0 -9
  71. package/getOffset.js +0 -11
  72. package/getOffsetTop.js +0 -11
  73. package/getOffsetTopSlim.js +0 -4
  74. package/getScrollbarWidth.js +0 -4
  75. package/getStyleValue.js +0 -4
  76. package/getVisualBackgroundColor.js +0 -16
  77. package/index.js +0 -45
  78. package/injectCss.js +0 -13
  79. package/isHidden.js +0 -4
  80. package/isInViewport.js +0 -10
  81. package/isNodeList.js +0 -9
  82. package/isTotallyScrolled.js +0 -4
  83. package/listen.js +0 -19
  84. package/listenLoaded.js +0 -5
  85. package/listenOnce.js +0 -11
  86. package/listenResize.js +0 -3
  87. package/listenResizeDebounced.js +0 -11
  88. package/listenResizeThrottled.js +0 -11
  89. package/listenScroll.js +0 -8
  90. package/listenScrollDebounced.js +0 -11
  91. package/listenScrollThrottled.js +0 -11
  92. package/off.js +0 -11
  93. package/on.js +0 -15
  94. package/onClickOutside.js +0 -16
  95. package/once.js +0 -11
  96. package/removeClass.js +0 -12
  97. package/scrollTo.js +0 -30
  98. package/setDataAttr.js +0 -8
  99. package/setVendorCSS.js +0 -9
  100. package/siblings.js +0 -14
  101. package/toArray.js +0 -4
  102. package/types.js +0 -1
  103. package/typings.d.ts +0 -4
  104. package/unlisten.js +0 -19
package/$.d.ts CHANGED
@@ -1,2 +1 @@
1
- export declare function $<T extends Element = HTMLElement>(selector: string, parent?: HTMLElement | Document | null, avoidEscape?: boolean): T;
2
- export default $;
1
+ export declare let $: <T extends Element = HTMLElement>(selector: string, parent?: HTMLElement | Document | null, avoidEscape?: boolean) => T;
package/$all.d.ts CHANGED
@@ -1,2 +1 @@
1
- export declare function $all<T extends Element = HTMLElement>(selector: string, parent?: Element | HTMLElement | Document | null, avoidEscape?: boolean): NodeListOf<T>;
2
- export default $all;
1
+ export declare let $all: <T extends Element = HTMLElement>(selector: string, parent?: Element | HTMLElement | Document | null, avoidEscape?: boolean) => NodeListOf<T>;
package/$each.d.ts CHANGED
@@ -1,2 +1 @@
1
- export declare function $each<T extends Element = HTMLElement>(selector: string, callback: ($element: T, index: number) => any, parent?: HTMLElement, scope?: object): void;
2
- export default $each;
1
+ export declare let $each: <T extends Element = HTMLElement>(selector: string, callback: ($element: T, index: number) => any, parent?: HTMLElement, scope?: object) => void;
package/README.md ADDED
@@ -0,0 +1 @@
1
+ # @koine/dom
@@ -1,10 +1,10 @@
1
- import type { AnyDOMEvent, AnyDOMEventTarget, AnyDOMEventType } from "./types.js";
1
+ import type { AnyDOMEvent, AnyDOMEventTarget, AnyDOMEventType } from "./types";
2
2
  export type EventCallback<TTarget extends AnyDOMEventTarget = AnyDOMEventTarget, TType extends AnyDOMEventType = AnyDOMEventType> = (event: AnyDOMEvent<TType>, desiredTarget: TTarget) => any;
3
3
  export type ListenEvent = {
4
4
  selector: string;
5
5
  callback: EventCallback;
6
6
  };
7
- export declare const activeEvents: Partial<Record<AnyDOMEventType, ListenEvent[]>>;
8
- export declare function getIndex(arr: ListenEvent[], selector: string, callback: EventCallback): number;
9
- export declare function getRunTarget(target: Element, selector: string | Window | Document | Element): false | Element | Document | Window | null;
10
- export declare function eventHandler(event: Event): void;
7
+ export declare let activeEvents: Partial<Record<AnyDOMEventType, ListenEvent[]>>;
8
+ export declare let getIndex: (arr: ListenEvent[], selector: string, callback: EventCallback) => number;
9
+ export declare let getRunTarget: (target: Element, selector: string | Window | Document | Element) => false | Window | Document | Element | null;
10
+ export declare let eventHandler: (event: Event) => void;
package/addClass.d.ts CHANGED
@@ -1,2 +1 @@
1
- export declare function addClass<T extends Element = HTMLElement>(el?: T, className?: string): void;
2
- export default addClass;
1
+ export declare let addClass: <T extends Element = HTMLElement>(el?: T | undefined, className?: string) => void;
@@ -1,2 +1 @@
1
- export declare function calculateFixedOffset(selector?: string): number;
2
- export default calculateFixedOffset;
1
+ export declare let calculateFixedOffset: (selector?: string) => number;
@@ -1,3 +1,2 @@
1
- import type { LiteralUnion } from "type-fest";
2
- export declare function createElement<TType extends LiteralUnion<keyof HTMLElementTagNameMap, string>, TElement extends HTMLElement = TType extends keyof HTMLElementTagNameMap ? HTMLElementTagNameMap[TType] : HTMLElement>(type: TType, className?: string): TElement;
3
- export default createElement;
1
+ import type { LiteralUnion } from "@koine/utils";
2
+ export declare let createElement: <TType extends LiteralUnion<keyof HTMLElementTagNameMap, string>, TElement extends HTMLElement = TType extends keyof HTMLElementTagNameMap ? HTMLElementTagNameMap[TType] : HTMLElement>(type: TType, className?: string) => TElement;
package/emitEvent.d.ts CHANGED
@@ -1,2 +1 @@
1
- export declare function emitEvent(type?: string, detail?: {}): void;
2
- export default emitEvent;
1
+ export declare let emitEvent: (type?: string, detail?: {}) => void;
@@ -1,2 +1 @@
1
- export declare function escapeSelector(selector: string): string;
2
- export default escapeSelector;
1
+ export declare let escapeSelector: (selector: string) => string;
package/exists.d.ts CHANGED
@@ -1,2 +1 @@
1
- export declare function exists(node?: Element): boolean;
2
- export default exists;
1
+ export declare let exists: (node?: Element) => boolean | undefined;
package/forEach.d.ts CHANGED
@@ -1,2 +1 @@
1
- export declare function forEach<T extends HTMLElement, TScope = object>(nodes: NodeListOf<T> | T[], callback: (this: TScope, $element: T, index: number) => any, scope?: TScope): void;
2
- export default forEach;
1
+ export declare let forEach: <T extends HTMLElement, TScope = object>(nodes: NodeListOf<T> | T[], callback: (this: TScope, $element: T, index: number) => any, scope?: TScope | undefined) => void;
package/getDataAttr.d.ts CHANGED
@@ -1,2 +1 @@
1
- export declare function getDataAttr(element: HTMLElement, attribute: string): string | null;
2
- export default getDataAttr;
1
+ export declare let getDataAttr: (element: HTMLElement, attribute: string) => string | null;
@@ -1,2 +1 @@
1
- export declare function getDocumentHeight(): number;
2
- export default getDocumentHeight;
1
+ export declare let getDocumentHeight: () => number;
package/getHeight.d.ts CHANGED
@@ -1,2 +1 @@
1
- export declare function getHeight(element: HTMLElement): number;
2
- export default getHeight;
1
+ export declare let getHeight: <T extends Element>(element: T) => number;
package/getListeners.d.ts CHANGED
@@ -1,2 +1 @@
1
- export declare function getListeners(): Partial<Record<import("./types").AnyDOMEventType, import("./_listen-delegation").ListenEvent[]>>;
2
- export default getListeners;
1
+ export declare let getListeners: () => Partial<Record<import("./types").AnyDOMEventType, import("./_listen-delegation").ListenEvent[]>>;
package/getOffset.d.ts CHANGED
@@ -1,5 +1,4 @@
1
- export declare function getOffset(elem: HTMLElement): {
1
+ export declare let getOffset: <T extends HTMLElement>(elem: T) => {
2
2
  top: number;
3
3
  left: number;
4
4
  };
5
- export default getOffset;
package/getOffsetTop.d.ts CHANGED
@@ -1,2 +1 @@
1
- export declare function getOffsetTop(elem: HTMLElement): number;
2
- export default getOffsetTop;
1
+ export declare let getOffsetTop: <T extends HTMLElement>(elem: T) => number;
@@ -1,2 +1 @@
1
- export declare function getOffsetTopSlim(elem: HTMLElement): number;
2
- export default getOffsetTopSlim;
1
+ export declare let getOffsetTopSlim: <T extends HTMLElement>(elem: T) => number;
@@ -1,2 +1 @@
1
- export declare function getScrollbarWidth(element?: HTMLElement): number;
2
- export default getScrollbarWidth;
1
+ export declare let getScrollbarWidth: <T extends HTMLElement>(element?: T | undefined) => number;
@@ -1,2 +1 @@
1
- export declare function getStyleValue(el: HTMLElement, prop: string): string;
2
- export default getStyleValue;
1
+ export declare let getStyleValue: <T extends HTMLElement>(el: T, prop: string) => string;
@@ -1,2 +1 @@
1
- export declare function getVisualBackgroundColor(elem?: null | HTMLElement): string;
2
- export default getVisualBackgroundColor;
1
+ export declare let getVisualBackgroundColor: (elem?: null | HTMLElement) => string;
package/index.cjs.d.ts ADDED
@@ -0,0 +1 @@
1
+ export * from "./index";
@@ -0,0 +1 @@
1
+ exports._default = require('./index.cjs.js').default;
package/index.cjs.js ADDED
@@ -0,0 +1,143 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var utils = require('@koine/utils');
6
+
7
+ let $=(e,r,t)=>(r||document).querySelector(t?e:e.replace(/:/g,"\\:"));
8
+
9
+ let $all=(e,l,r)=>(l||document).querySelectorAll(r?e:e.replace(/:/g,"\\:"));
10
+
11
+ let $each=(e,t,o,r)=>{let a=$all(e,o);for(let l=0;l<a.length;l++)t.call(r,a[l],l);};
12
+
13
+ let addClass=(e,s="")=>{if("development"===process.env.NODE_ENV&&!e){console.warn("[@koine/dom:addClass] unexisting DOM element");return}e&&e.classList.add(s);};
14
+
15
+ let calculateFixedOffset=(t="[data-fixed]")=>{let f=0;return $each(t,e=>{f+=e.offsetHeight;}),f};
16
+
17
+ let createElement=(t,r)=>{let l=document.createElement(t);return r&&addClass(l,r),l};
18
+
19
+ let emitEvent=(t="customEvent",e={})=>{"function"==typeof window.CustomEvent&&document.dispatchEvent(new CustomEvent(t,{bubbles:!0,detail:e}));};
20
+
21
+ let escapeSelector=e=>e.replace(/:/g,"\\:");
22
+
23
+ let exists=e=>e&&e instanceof window.HTMLElement;
24
+
25
+ let forEach=(l,e,t)=>{for(let o=0;o<l.length;o++)e.call(t,l[o],o);};
26
+
27
+ let getDataAttr=(t,e)=>t.getAttribute("data-"+e);
28
+
29
+ let getDocumentHeight=()=>{let{body:t,documentElement:e}=document;return Math.max(t.scrollHeight,e.scrollHeight,t.offsetHeight,e.offsetHeight,t.clientHeight,e.clientHeight)};
30
+
31
+ let getHeight=e=>parseInt(window.getComputedStyle(e).height,10);
32
+
33
+ let activeEvents={};let getIndex=(e,t,n)=>{for(let r=0;r<e.length;r++)if(e[r].selector===t&&e[r].callback.toString()===n.toString())return r;return -1};let getRunTarget=(n,r)=>{if(["*","window",window].includes(r))return window;if(["document","document.documentElement",document,document.documentElement].includes(r))return document;if(utils.isString(r))return n.closest(escapeSelector(r));if("string"!=typeof r&&r.contains){if(r===n)return n;if(r.contains(n))return r}return !1};let eventHandler=e=>{activeEvents[e.type]?.forEach(function(t){let n=getRunTarget(e.target,t.selector);n&&t.callback(e,n);});};
34
+
35
+ let getListeners=()=>{let t={};for(let r in activeEvents)t[r]=activeEvents[r];return t};
36
+
37
+ let getOffset=f=>{let e=0,t=0;for(;f&&!isNaN(f.offsetLeft)&&!isNaN(f.offsetTop);)e+=f.offsetLeft-f.scrollLeft,t+=f.offsetTop-f.scrollTop,f=f.offsetParent;return {top:t,left:e}};
38
+
39
+ let getOffsetTop=e=>{let t=0;if(e.offsetParent)for(;e;)t+=e.offsetTop,e=e.offsetParent;return t>=0?t:0};
40
+
41
+ let getOffsetTopSlim=t=>t.getBoundingClientRect().top+window.scrollY;
42
+
43
+ let getScrollbarWidth=t=>window.innerWidth-(t||document.documentElement).clientWidth;
44
+
45
+ let getStyleValue=(e,t)=>getComputedStyle(e,null).getPropertyValue(t);
46
+
47
+ let getVisualBackgroundColor=r=>{if(!r)return "#fff";let e=window.getComputedStyle(r).backgroundColor;if("rgba(0, 0, 0, 0)"===e||"transparent"===e){let e=r.parentElement;return e?getVisualBackgroundColor(e):"#fff"}return e};
48
+
49
+ let injectCss=(t,n="",d=document)=>{let i=$("#"+t);i||((i=d.createElement("style")).id=t,d.body.appendChild(i)),i.innerHTML=n;};
50
+
51
+ let isHidden=e=>!e||null===e.offsetParent;
52
+
53
+ let isInViewport=t=>{let e=t.getBoundingClientRect();return e.top>=0&&e.left>=0&&e.bottom<=(window.innerHeight||document.documentElement.clientHeight)&&e.right<=(window.innerWidth||document.documentElement.clientWidth)};
54
+
55
+ let isNodeList=t=>{let e=Object.prototype.toString.call(t);return "object"==typeof t&&/^\[object (HTMLCollection|NodeList|Object)\]$/.test(e)&&"number"==typeof t.length&&(0===t.length||"object"==typeof t[0]&&t[0].nodeType>0)};
56
+
57
+ let isTotallyScrolled=l=>!!l&&l.scrollHeight-l.scrollTop<=l.clientHeight;
58
+
59
+ let off=(e,n,o,t=!1)=>{"development"!==process.env.NODE_ENV||e||console.warn("[@koine/dom:off] unexisting DOM element"),e&&e.removeEventListener(n,o,t);};
60
+
61
+ let on=(n,t,i,r=!1)=>("development"!==process.env.NODE_ENV||n||console.warn("[@koine/dom:on] unexisting DOM element"),n)?(n.addEventListener(t,i,r),()=>off(n,t,i)):utils.noop;
62
+
63
+ let listenLoaded=e=>on(document,"DOMContentLoaded",e);
64
+
65
+ let listen=(e,l,r)=>{l&&r&&e.split(",").forEach(function(e){activeEvents[e=e.trim()]||(activeEvents[e]=[],on(window,e,eventHandler,!0)),activeEvents[e]?.push({selector:l,callback:r});});};
66
+
67
+ let unlisten=(l,o,n)=>{l.split(",").forEach(l=>{let f=activeEvents[l=l.trim()];if(!f)return;if(f.length<2||!o){delete activeEvents[l],off(window,l,eventHandler,!0);return}let m=getIndex(f,o,n);m<0||activeEvents[l].splice(m,1);});};
68
+
69
+ let listenOnce=(n,o,r)=>listen(n,o,function e(l){let m=getRunTarget(l.target,o);r(l,m||window),unlisten(n,o,e);});
70
+
71
+ let listenResize=(i,o)=>on(o||window,"resize",i);
72
+
73
+ let listenResizeDebounced=(o,...t)=>listenResize(utils.debounce(...t),o);
74
+
75
+ let listenResizeThrottled=(i,...o)=>listenResize(utils.throttle(...o),i);
76
+
77
+ let listenScroll=(l,r)=>on(r||window,"scroll",l,{capture:!0,passive:!0});
78
+
79
+ let listenScrollDebounced=(e,...r)=>listenScroll(utils.debounce(...r),e);
80
+
81
+ let listenScrollThrottled=(t,...r)=>listenScroll(utils.throttle(...r),t);
82
+
83
+ let once=(t,e,f,m=!1)=>{let n=r=>{f(r),off(t,e,n);};return on(t,e,n,m)};
84
+
85
+ let onClickOutside=(c,e,r=!1)=>{let i=t=>{!c.contains(t.target)&&(e(t),r&&n());},n=()=>{off(document,"click",i);};return on(document,"click",i),n};
86
+
87
+ let removeClass=(e,s="")=>{("development"!==process.env.NODE_ENV||e)&&e&&e.classList.remove(s);};
88
+
89
+ let scrollTo=(i,l,e,r)=>{let w=i.toFixed();if(l){let i=!1,r=function(){window.pageYOffset.toFixed()===w&&(off(window,"scroll",r),i=!0,l());};on(window,"scroll",r),r(),e&&setTimeout(()=>{i||(off(window,"scroll",r),l());},e);}window.scrollTo({top:i,behavior:r||"smooth"});};
90
+
91
+ let setDataAttr=(t,e,r)=>{if(null==r){t.removeAttribute("data-"+e);return}t.setAttribute("data-"+e,r.toString());};
92
+
93
+ let setVendorCSS=(e,t,s)=>{let l=t.charAt(0).toUpperCase()+t.slice(1);e.style["webkit"+l]=s,e.style["moz"+l]=s,e.style["ms"+l]=s,e.style["o"+l]=s,e.style[t]=s;};
94
+
95
+ let siblings=e=>{if(e&&e.parentNode){let r=e.parentNode.firstChild,t=[];for(;r;r=r.nextSibling)1===r.nodeType&&r!==e&&t.push(r);return t}return []};
96
+
97
+ let toArray=r=>Array.prototype.slice.call(r);
98
+
99
+ exports.$ = $;
100
+ exports.$all = $all;
101
+ exports.$each = $each;
102
+ exports.addClass = addClass;
103
+ exports.calculateFixedOffset = calculateFixedOffset;
104
+ exports.createElement = createElement;
105
+ exports.emitEvent = emitEvent;
106
+ exports.escapeSelector = escapeSelector;
107
+ exports.exists = exists;
108
+ exports.forEach = forEach;
109
+ exports.getDataAttr = getDataAttr;
110
+ exports.getDocumentHeight = getDocumentHeight;
111
+ exports.getHeight = getHeight;
112
+ exports.getListeners = getListeners;
113
+ exports.getOffset = getOffset;
114
+ exports.getOffsetTop = getOffsetTop;
115
+ exports.getOffsetTopSlim = getOffsetTopSlim;
116
+ exports.getScrollbarWidth = getScrollbarWidth;
117
+ exports.getStyleValue = getStyleValue;
118
+ exports.getVisualBackgroundColor = getVisualBackgroundColor;
119
+ exports.injectCss = injectCss;
120
+ exports.isHidden = isHidden;
121
+ exports.isInViewport = isInViewport;
122
+ exports.isNodeList = isNodeList;
123
+ exports.isTotallyScrolled = isTotallyScrolled;
124
+ exports.listen = listen;
125
+ exports.listenLoaded = listenLoaded;
126
+ exports.listenOnce = listenOnce;
127
+ exports.listenResize = listenResize;
128
+ exports.listenResizeDebounced = listenResizeDebounced;
129
+ exports.listenResizeThrottled = listenResizeThrottled;
130
+ exports.listenScroll = listenScroll;
131
+ exports.listenScrollDebounced = listenScrollDebounced;
132
+ exports.listenScrollThrottled = listenScrollThrottled;
133
+ exports.off = off;
134
+ exports.on = on;
135
+ exports.onClickOutside = onClickOutside;
136
+ exports.once = once;
137
+ exports.removeClass = removeClass;
138
+ exports.scrollTo = scrollTo;
139
+ exports.setDataAttr = setDataAttr;
140
+ exports.setVendorCSS = setVendorCSS;
141
+ exports.siblings = siblings;
142
+ exports.toArray = toArray;
143
+ exports.unlisten = unlisten;
package/index.cjs.mjs ADDED
@@ -0,0 +1,2 @@
1
+ export * from './index.cjs.js';
2
+ export { _default as default } from './index.cjs.default.js';
package/index.d.ts CHANGED
@@ -1,46 +1,46 @@
1
- export { $ } from "./$.js";
2
- export { $all } from "./$all.js";
3
- export { $each } from "./$each.js";
4
- export { addClass } from "./addClass.js";
5
- export { calculateFixedOffset } from "./calculateFixedOffset.js";
6
- export { createElement } from "./createElement.js";
7
- export { emitEvent } from "./emitEvent.js";
8
- export { escapeSelector } from "./escapeSelector.js";
9
- export { exists } from "./exists.js";
10
- export { forEach } from "./forEach.js";
11
- export { getDataAttr } from "./getDataAttr.js";
12
- export { getDocumentHeight } from "./getDocumentHeight.js";
13
- export { getHeight } from "./getHeight.js";
14
- export { getListeners } from "./getListeners.js";
15
- export { getOffset } from "./getOffset.js";
16
- export { getOffsetTop } from "./getOffsetTop.js";
17
- export { getOffsetTopSlim } from "./getOffsetTopSlim.js";
18
- export { getScrollbarWidth } from "./getScrollbarWidth.js";
19
- export { getStyleValue } from "./getStyleValue.js";
20
- export { getVisualBackgroundColor } from "./getVisualBackgroundColor.js";
21
- export { injectCss } from "./injectCss.js";
22
- export { isHidden } from "./isHidden.js";
23
- export { isInViewport } from "./isInViewport.js";
24
- export { isNodeList } from "./isNodeList.js";
25
- export { isTotallyScrolled } from "./isTotallyScrolled.js";
26
- export { listenLoaded } from "./listenLoaded.js";
27
- export { listenOnce } from "./listenOnce.js";
28
- export { listenResize } from "./listenResize.js";
29
- export { listenResizeDebounced } from "./listenResizeDebounced.js";
30
- export { listenResizeThrottled } from "./listenResizeThrottled.js";
31
- export { listenScroll } from "./listenScroll.js";
32
- export { listenScrollDebounced } from "./listenScrollDebounced.js";
33
- export { listenScrollThrottled } from "./listenScrollThrottled.js";
34
- export { listen } from "./listen.js";
35
- export { off } from "./off.js";
36
- export { once } from "./once.js";
37
- export { onClickOutside } from "./onClickOutside.js";
38
- export { on } from "./on.js";
39
- export { removeClass } from "./removeClass.js";
40
- export { scrollTo } from "./scrollTo.js";
41
- export { setDataAttr } from "./setDataAttr.js";
42
- export { setVendorCSS } from "./setVendorCSS.js";
43
- export { siblings } from "./siblings.js";
44
- export { toArray } from "./toArray.js";
45
- export { unlisten } from "./unlisten.js";
46
- export type { AnyDOMEventTarget, AnyDOMEventTargetLoose, AnyDOMEventType, AnyDOMEvent, } from "./types.js";
1
+ export { $ } from "./$";
2
+ export { $all } from "./$all";
3
+ export { $each } from "./$each";
4
+ export { addClass } from "./addClass";
5
+ export { calculateFixedOffset } from "./calculateFixedOffset";
6
+ export { createElement } from "./createElement";
7
+ export { emitEvent } from "./emitEvent";
8
+ export { escapeSelector } from "./escapeSelector";
9
+ export { exists } from "./exists";
10
+ export { forEach } from "./forEach";
11
+ export { getDataAttr } from "./getDataAttr";
12
+ export { getDocumentHeight } from "./getDocumentHeight";
13
+ export { getHeight } from "./getHeight";
14
+ export { getListeners } from "./getListeners";
15
+ export { getOffset } from "./getOffset";
16
+ export { getOffsetTop } from "./getOffsetTop";
17
+ export { getOffsetTopSlim } from "./getOffsetTopSlim";
18
+ export { getScrollbarWidth } from "./getScrollbarWidth";
19
+ export { getStyleValue } from "./getStyleValue";
20
+ export { getVisualBackgroundColor } from "./getVisualBackgroundColor";
21
+ export { injectCss } from "./injectCss";
22
+ export { isHidden } from "./isHidden";
23
+ export { isInViewport } from "./isInViewport";
24
+ export { isNodeList } from "./isNodeList";
25
+ export { isTotallyScrolled } from "./isTotallyScrolled";
26
+ export { listenLoaded } from "./listenLoaded";
27
+ export { listenOnce } from "./listenOnce";
28
+ export { listenResize } from "./listenResize";
29
+ export { listenResizeDebounced } from "./listenResizeDebounced";
30
+ export { listenResizeThrottled } from "./listenResizeThrottled";
31
+ export { listenScroll } from "./listenScroll";
32
+ export { listenScrollDebounced } from "./listenScrollDebounced";
33
+ export { listenScrollThrottled } from "./listenScrollThrottled";
34
+ export { listen } from "./listen";
35
+ export { off } from "./off";
36
+ export { once } from "./once";
37
+ export { onClickOutside } from "./onClickOutside";
38
+ export { on } from "./on";
39
+ export { removeClass } from "./removeClass";
40
+ export { scrollTo } from "./scrollTo";
41
+ export { setDataAttr } from "./setDataAttr";
42
+ export { setVendorCSS } from "./setVendorCSS";
43
+ export { siblings } from "./siblings";
44
+ export { toArray } from "./toArray";
45
+ export { unlisten } from "./unlisten";
46
+ export type { AnyDOMEventTarget, AnyDOMEventTargetLoose, AnyDOMEventType, AnyDOMEvent, } from "./types";
package/index.esm.js ADDED
@@ -0,0 +1,95 @@
1
+ import { isString, noop, debounce, throttle } from '@koine/utils';
2
+
3
+ let $=(e,r,t)=>(r||document).querySelector(t?e:e.replace(/:/g,"\\:"));
4
+
5
+ let $all=(e,l,r)=>(l||document).querySelectorAll(r?e:e.replace(/:/g,"\\:"));
6
+
7
+ let $each=(e,t,o,r)=>{let a=$all(e,o);for(let l=0;l<a.length;l++)t.call(r,a[l],l);};
8
+
9
+ let addClass=(e,s="")=>{if("development"===process.env.NODE_ENV&&!e){console.warn("[@koine/dom:addClass] unexisting DOM element");return}e&&e.classList.add(s);};
10
+
11
+ let calculateFixedOffset=(t="[data-fixed]")=>{let f=0;return $each(t,e=>{f+=e.offsetHeight;}),f};
12
+
13
+ let createElement=(t,r)=>{let l=document.createElement(t);return r&&addClass(l,r),l};
14
+
15
+ let emitEvent=(t="customEvent",e={})=>{"function"==typeof window.CustomEvent&&document.dispatchEvent(new CustomEvent(t,{bubbles:!0,detail:e}));};
16
+
17
+ let escapeSelector=e=>e.replace(/:/g,"\\:");
18
+
19
+ let exists=e=>e&&e instanceof window.HTMLElement;
20
+
21
+ let forEach=(l,e,t)=>{for(let o=0;o<l.length;o++)e.call(t,l[o],o);};
22
+
23
+ let getDataAttr=(t,e)=>t.getAttribute("data-"+e);
24
+
25
+ let getDocumentHeight=()=>{let{body:t,documentElement:e}=document;return Math.max(t.scrollHeight,e.scrollHeight,t.offsetHeight,e.offsetHeight,t.clientHeight,e.clientHeight)};
26
+
27
+ let getHeight=e=>parseInt(window.getComputedStyle(e).height,10);
28
+
29
+ let activeEvents={};let getIndex=(e,t,n)=>{for(let r=0;r<e.length;r++)if(e[r].selector===t&&e[r].callback.toString()===n.toString())return r;return -1};let getRunTarget=(n,r)=>{if(["*","window",window].includes(r))return window;if(["document","document.documentElement",document,document.documentElement].includes(r))return document;if(isString(r))return n.closest(escapeSelector(r));if("string"!=typeof r&&r.contains){if(r===n)return n;if(r.contains(n))return r}return !1};let eventHandler=e=>{activeEvents[e.type]?.forEach(function(t){let n=getRunTarget(e.target,t.selector);n&&t.callback(e,n);});};
30
+
31
+ let getListeners=()=>{let t={};for(let r in activeEvents)t[r]=activeEvents[r];return t};
32
+
33
+ let getOffset=f=>{let e=0,t=0;for(;f&&!isNaN(f.offsetLeft)&&!isNaN(f.offsetTop);)e+=f.offsetLeft-f.scrollLeft,t+=f.offsetTop-f.scrollTop,f=f.offsetParent;return {top:t,left:e}};
34
+
35
+ let getOffsetTop=e=>{let t=0;if(e.offsetParent)for(;e;)t+=e.offsetTop,e=e.offsetParent;return t>=0?t:0};
36
+
37
+ let getOffsetTopSlim=t=>t.getBoundingClientRect().top+window.scrollY;
38
+
39
+ let getScrollbarWidth=t=>window.innerWidth-(t||document.documentElement).clientWidth;
40
+
41
+ let getStyleValue=(e,t)=>getComputedStyle(e,null).getPropertyValue(t);
42
+
43
+ let getVisualBackgroundColor=r=>{if(!r)return "#fff";let e=window.getComputedStyle(r).backgroundColor;if("rgba(0, 0, 0, 0)"===e||"transparent"===e){let e=r.parentElement;return e?getVisualBackgroundColor(e):"#fff"}return e};
44
+
45
+ let injectCss=(t,n="",d=document)=>{let i=$("#"+t);i||((i=d.createElement("style")).id=t,d.body.appendChild(i)),i.innerHTML=n;};
46
+
47
+ let isHidden=e=>!e||null===e.offsetParent;
48
+
49
+ let isInViewport=t=>{let e=t.getBoundingClientRect();return e.top>=0&&e.left>=0&&e.bottom<=(window.innerHeight||document.documentElement.clientHeight)&&e.right<=(window.innerWidth||document.documentElement.clientWidth)};
50
+
51
+ let isNodeList=t=>{let e=Object.prototype.toString.call(t);return "object"==typeof t&&/^\[object (HTMLCollection|NodeList|Object)\]$/.test(e)&&"number"==typeof t.length&&(0===t.length||"object"==typeof t[0]&&t[0].nodeType>0)};
52
+
53
+ let isTotallyScrolled=l=>!!l&&l.scrollHeight-l.scrollTop<=l.clientHeight;
54
+
55
+ let off=(e,n,o,t=!1)=>{"development"!==process.env.NODE_ENV||e||console.warn("[@koine/dom:off] unexisting DOM element"),e&&e.removeEventListener(n,o,t);};
56
+
57
+ let on=(n,t,i,r=!1)=>("development"!==process.env.NODE_ENV||n||console.warn("[@koine/dom:on] unexisting DOM element"),n)?(n.addEventListener(t,i,r),()=>off(n,t,i)):noop;
58
+
59
+ let listenLoaded=e=>on(document,"DOMContentLoaded",e);
60
+
61
+ let listen=(e,l,r)=>{l&&r&&e.split(",").forEach(function(e){activeEvents[e=e.trim()]||(activeEvents[e]=[],on(window,e,eventHandler,!0)),activeEvents[e]?.push({selector:l,callback:r});});};
62
+
63
+ let unlisten=(l,o,n)=>{l.split(",").forEach(l=>{let f=activeEvents[l=l.trim()];if(!f)return;if(f.length<2||!o){delete activeEvents[l],off(window,l,eventHandler,!0);return}let m=getIndex(f,o,n);m<0||activeEvents[l].splice(m,1);});};
64
+
65
+ let listenOnce=(n,o,r)=>listen(n,o,function e(l){let m=getRunTarget(l.target,o);r(l,m||window),unlisten(n,o,e);});
66
+
67
+ let listenResize=(i,o)=>on(o||window,"resize",i);
68
+
69
+ let listenResizeDebounced=(o,...t)=>listenResize(debounce(...t),o);
70
+
71
+ let listenResizeThrottled=(i,...o)=>listenResize(throttle(...o),i);
72
+
73
+ let listenScroll=(l,r)=>on(r||window,"scroll",l,{capture:!0,passive:!0});
74
+
75
+ let listenScrollDebounced=(e,...r)=>listenScroll(debounce(...r),e);
76
+
77
+ let listenScrollThrottled=(t,...r)=>listenScroll(throttle(...r),t);
78
+
79
+ let once=(t,e,f,m=!1)=>{let n=r=>{f(r),off(t,e,n);};return on(t,e,n,m)};
80
+
81
+ let onClickOutside=(c,e,r=!1)=>{let i=t=>{!c.contains(t.target)&&(e(t),r&&n());},n=()=>{off(document,"click",i);};return on(document,"click",i),n};
82
+
83
+ let removeClass=(e,s="")=>{("development"!==process.env.NODE_ENV||e)&&e&&e.classList.remove(s);};
84
+
85
+ let scrollTo=(i,l,e,r)=>{let w=i.toFixed();if(l){let i=!1,r=function(){window.pageYOffset.toFixed()===w&&(off(window,"scroll",r),i=!0,l());};on(window,"scroll",r),r(),e&&setTimeout(()=>{i||(off(window,"scroll",r),l());},e);}window.scrollTo({top:i,behavior:r||"smooth"});};
86
+
87
+ let setDataAttr=(t,e,r)=>{if(null==r){t.removeAttribute("data-"+e);return}t.setAttribute("data-"+e,r.toString());};
88
+
89
+ let setVendorCSS=(e,t,s)=>{let l=t.charAt(0).toUpperCase()+t.slice(1);e.style["webkit"+l]=s,e.style["moz"+l]=s,e.style["ms"+l]=s,e.style["o"+l]=s,e.style[t]=s;};
90
+
91
+ let siblings=e=>{if(e&&e.parentNode){let r=e.parentNode.firstChild,t=[];for(;r;r=r.nextSibling)1===r.nodeType&&r!==e&&t.push(r);return t}return []};
92
+
93
+ let toArray=r=>Array.prototype.slice.call(r);
94
+
95
+ export { $, $all, $each, addClass, calculateFixedOffset, createElement, emitEvent, escapeSelector, exists, forEach, getDataAttr, getDocumentHeight, getHeight, getListeners, getOffset, getOffsetTop, getOffsetTopSlim, getScrollbarWidth, getStyleValue, getVisualBackgroundColor, injectCss, isHidden, isInViewport, isNodeList, isTotallyScrolled, listen, listenLoaded, listenOnce, listenResize, listenResizeDebounced, listenResizeThrottled, listenScroll, listenScrollDebounced, listenScrollThrottled, off, on, onClickOutside, once, removeClass, scrollTo, setDataAttr, setVendorCSS, siblings, toArray, unlisten };
package/injectCss.d.ts CHANGED
@@ -1,2 +1 @@
1
- export declare function injectCss(id: string, cssString?: string, root?: Document): void;
2
- export default injectCss;
1
+ export declare let injectCss: (id: string, cssString?: string, root?: Document) => void;
package/isHidden.d.ts CHANGED
@@ -1,2 +1 @@
1
- export declare function isHidden(el?: HTMLElement): boolean;
2
- export default isHidden;
1
+ export declare let isHidden: <T extends HTMLElement>(el?: T | undefined) => boolean;
package/isInViewport.d.ts CHANGED
@@ -1,2 +1 @@
1
- export declare function isInViewport(elem: Element): boolean;
2
- export default isInViewport;
1
+ export declare let isInViewport: <T extends Element>(elem: T) => boolean;
package/isNodeList.d.ts CHANGED
@@ -1,2 +1 @@
1
- export declare function isNodeList(nodes: any): nodes is NodeList;
2
- export default isNodeList;
1
+ export declare let isNodeList: (nodes: any) => nodes is NodeList;
@@ -1,2 +1 @@
1
- export declare function isTotallyScrolled(el?: HTMLElement): boolean;
2
- export default isTotallyScrolled;
1
+ export declare let isTotallyScrolled: <T extends HTMLElement>(el?: T | null | undefined) => boolean;
package/listen.d.ts CHANGED
@@ -1,4 +1,3 @@
1
- import { type EventCallback } from "./_listen-delegation.js";
2
- import type { AnyDOMEventTarget, AnyDOMEventType } from "./types.js";
3
- export declare function listen<TTypes extends AnyDOMEventType, TTarget extends AnyDOMEventTarget = AnyDOMEventTarget>(types: TTypes, selector: string, callback: EventCallback<TTarget, TTypes>): void;
4
- export default listen;
1
+ import { type EventCallback } from "./_listen-delegation";
2
+ import type { AnyDOMEventTarget, AnyDOMEventType } from "./types";
3
+ export declare let listen: <TTypes extends AnyDOMEventType, TTarget extends AnyDOMEventTarget = AnyDOMEventTarget>(types: TTypes, selector: string, callback: EventCallback<TTarget, TTypes>) => void;
package/listenLoaded.d.ts CHANGED
@@ -1,2 +1 @@
1
- export declare function listenLoaded(handler: (event: Event) => any): void;
2
- export default listenLoaded;
1
+ export declare let listenLoaded: (handler: (event: Event) => any) => () => void;
package/listenOnce.d.ts CHANGED
@@ -1,3 +1,2 @@
1
- import { type EventCallback } from "./_listen-delegation.js";
2
- export declare function listenOnce(types: string, selector: string, callback: EventCallback): void;
3
- export default listenOnce;
1
+ import { type EventCallback } from "./_listen-delegation";
2
+ export declare let listenOnce: (types: string, selector: string, callback: EventCallback) => void;
package/listenResize.d.ts CHANGED
@@ -1,3 +1,2 @@
1
- import type { AnyDOMEventTargetLoose } from "./types.js";
2
- export declare const listenResize: (handler: () => void, el?: AnyDOMEventTargetLoose) => () => void;
3
- export default listenResize;
1
+ import type { AnyDOMEventTargetLoose } from "./types";
2
+ export declare let listenResize: (handler: () => void, el?: AnyDOMEventTargetLoose) => () => void;
@@ -1,3 +1,2 @@
1
- import listenResize from "./listenResize.js";
2
- export declare const listenResizeDebounced: (el?: Parameters<typeof listenResize>[1], fn: (...args: any[]) => any, wait?: number | undefined, immediate?: boolean | undefined) => () => void;
3
- export default listenResizeDebounced;
1
+ import { listenResize } from "./listenResize";
2
+ export declare let listenResizeDebounced: (el?: Parameters<typeof listenResize>[1], fn: (...args: any[]) => any, wait?: number | undefined, immediate?: boolean | undefined) => () => void;
@@ -1,3 +1,2 @@
1
- import { listenResize } from "./listenResize.js";
2
- export declare const listenResizeThrottled: (el?: Parameters<typeof listenResize>[1], fn: Function, limit: number, context?: unknown) => () => void;
3
- export default listenResizeThrottled;
1
+ import { listenResize } from "./listenResize";
2
+ export declare let listenResizeThrottled: (el?: Parameters<typeof listenResize>[1], fn: Function, limit: number, context?: unknown) => () => void;
package/listenScroll.d.ts CHANGED
@@ -1,3 +1,2 @@
1
- import type { AnyDOMEventTargetLoose } from "./types.js";
2
- export declare const listenScroll: (handler: () => void, el?: AnyDOMEventTargetLoose) => () => void;
3
- export default listenScroll;
1
+ import type { AnyDOMEventTargetLoose } from "./types";
2
+ export declare let listenScroll: (handler: () => void, el?: AnyDOMEventTargetLoose) => () => void;
@@ -1,3 +1,2 @@
1
- import { listenScroll } from "./listenScroll.js";
2
- export declare const listenScrollDebounced: (el?: Parameters<typeof listenScroll>[1], fn: (...args: any[]) => any, wait?: number | undefined, immediate?: boolean | undefined) => () => void;
3
- export default listenScrollDebounced;
1
+ import { listenScroll } from "./listenScroll";
2
+ export declare let listenScrollDebounced: (el?: Parameters<typeof listenScroll>[1], fn: (...args: any[]) => any, wait?: number | undefined, immediate?: boolean | undefined) => () => void;
@@ -1,3 +1,2 @@
1
- import { listenScroll } from "./listenScroll.js";
2
- export declare const listenScrollThrottled: (el?: Parameters<typeof listenScroll>[1], fn: Function, limit: number, context?: unknown) => () => void;
3
- export default listenScrollThrottled;
1
+ import { listenScroll } from "./listenScroll";
2
+ export declare let listenScrollThrottled: (el?: Parameters<typeof listenScroll>[1], fn: Function, limit: number, context?: unknown) => () => void;
package/off.d.ts CHANGED
@@ -1,3 +1,2 @@
1
- import type { AnyDOMEvent, AnyDOMEventTargetLoose, AnyDOMEventType } from "./types.js";
2
- export declare function off<TType extends AnyDOMEventType>(el: AnyDOMEventTargetLoose, type: TType, handler: (event: AnyDOMEvent<TType>) => void, options?: EventListenerOptions | boolean): void;
3
- export default off;
1
+ import type { AnyDOMEvent, AnyDOMEventTargetLoose, AnyDOMEventType } from "./types";
2
+ export declare let off: <TType extends AnyDOMEventType>(el: AnyDOMEventTargetLoose, type: TType, handler: (event: AnyDOMEvent<TType>) => void, options?: EventListenerOptions | boolean) => void;
package/on.d.ts CHANGED
@@ -1,3 +1,2 @@
1
- import type { AnyDOMEvent, AnyDOMEventTargetLoose, AnyDOMEventType } from "./types.js";
2
- export declare function on<TType extends AnyDOMEventType>(el: AnyDOMEventTargetLoose, type: TType, handler: (event: AnyDOMEvent<TType>) => void, options?: AddEventListenerOptions | boolean): () => void;
3
- export default on;
1
+ import type { AnyDOMEvent, AnyDOMEventTargetLoose, AnyDOMEventType } from "./types";
2
+ export declare let on: <TType extends AnyDOMEventType>(el: AnyDOMEventTargetLoose, type: TType, handler: (event: AnyDOMEvent<TType>) => void, options?: AddEventListenerOptions | boolean) => () => void;
@@ -1 +1 @@
1
- export declare function onClickOutside(element: HTMLElement, callback: (event: Event) => any, autoUnbind?: boolean): () => void;
1
+ export declare let onClickOutside: <T extends HTMLElement>(element: T, callback: (event: Event) => any, autoUnbind?: boolean) => () => void;
package/once.d.ts CHANGED
@@ -1,3 +1,2 @@
1
- import { AnyDOMEventTargetLoose } from "./types.js";
2
- export declare function once(el: AnyDOMEventTargetLoose, type: string, handler: EventListener, options?: EventListenerOptions | boolean): () => void;
3
- export default once;
1
+ import type { AnyDOMEventTargetLoose } from "./types";
2
+ export declare let once: (el: AnyDOMEventTargetLoose, type: string, handler: EventListener, options?: EventListenerOptions | boolean) => () => void;