@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.
- package/$$.d.ts +1 -1
- package/$$.mjs +1 -2
- package/$.d.ts +1 -1
- package/$.mjs +1 -2
- package/$each.mjs +3 -4
- package/_listen-delegation.d.ts +3 -2
- package/_listen-delegation.mjs +17 -23
- package/addClass.mjs +2 -5
- package/calculateFixedOffset.mjs +3 -4
- package/createElement.mjs +2 -3
- package/emitEvent.mjs +3 -7
- package/escapeSelector.mjs +1 -2
- package/exists.mjs +1 -2
- package/forEach.d.ts +3 -5
- package/forEach.mjs +29 -8
- package/getDataAttr.mjs +1 -2
- package/getDocumentHeight.mjs +2 -3
- package/getHeight.mjs +1 -2
- package/getListeners.d.ts +1 -1
- package/getListeners.mjs +4 -5
- package/getOffset.mjs +8 -6
- package/getOffsetTop.mjs +3 -4
- package/getOffsetTopSlim.mjs +1 -2
- package/getScrollbarWidth.mjs +1 -2
- package/getStyleValue.mjs +1 -2
- package/getVisualBackgroundColor.mjs +8 -10
- package/injectCss.mjs +2 -5
- package/isHidden.mjs +1 -2
- package/isInViewport.mjs +3 -9
- package/isNodeList.mjs +3 -8
- package/isTotallyScrolled.mjs +1 -2
- package/listen.d.ts +2 -1
- package/listen.mjs +11 -8
- package/listenLoaded.mjs +2 -3
- package/listenOnce.mjs +2 -3
- package/listenResize.mjs +1 -2
- package/listenResizeDebounced.mjs +28 -36
- package/listenResizeThrottled.mjs +1 -8
- package/listenScroll.mjs +2 -5
- package/listenScrollDebounced.mjs +1 -8
- package/listenScrollThrottled.mjs +1 -8
- package/off.d.ts +2 -2
- package/off.mjs +2 -5
- package/on.d.ts +2 -2
- package/on.mjs +5 -5
- package/onClickOutside.mjs +5 -7
- package/once.mjs +3 -5
- package/package.json +8 -5
- package/removeClass.mjs +3 -6
- package/scrollTo.mjs +13 -14
- package/setDataAttr.mjs +1 -2
- package/setVendorCSS.mjs +2 -3
- package/siblings.mjs +4 -5
- package/toArray.mjs +1 -2
- package/types.d.ts +5 -0
- package/types.mjs +1 -1
- package/unlisten.d.ts +2 -1
- package/unlisten.mjs +11 -9
- package/$$.js +0 -16
- package/$.js +0 -19
- package/$each.js +0 -22
- package/_listen-delegation.js +0 -90
- package/addClass.js +0 -19
- package/calculateFixedOffset.js +0 -14
- package/createElement.js +0 -21
- package/emitEvent.js +0 -18
- package/escapeSelector.js +0 -14
- package/exists.js +0 -16
- package/forEach.js +0 -17
- package/getDataAttr.js +0 -17
- package/getDocumentHeight.js +0 -14
- package/getHeight.js +0 -11
- package/getListeners.js +0 -22
- package/getOffset.js +0 -22
- package/getOffsetTop.js +0 -24
- package/getOffsetTopSlim.js +0 -17
- package/getScrollbarWidth.js +0 -11
- package/getStyleValue.js +0 -14
- package/getVisualBackground.d.ts +0 -6
- package/getVisualBackground.js +0 -25
- package/getVisualBackground.mjs +0 -21
- package/getVisualBackgroundColor.js +0 -25
- package/index.js +0 -93
- package/injectCss.js +0 -20
- package/isHidden.js +0 -11
- package/isInViewport.js +0 -22
- package/isNodeList.js +0 -18
- package/isTotallyScrolled.js +0 -14
- package/listen.js +0 -37
- package/listenLoaded.js +0 -15
- package/listenOnce.js +0 -24
- package/listenResize.js +0 -12
- package/listenResizeDebounced.js +0 -47
- package/listenResizeThrottled.js +0 -20
- package/listenScroll.js +0 -17
- package/listenScrollDebounced.js +0 -20
- package/listenScrollThrottled.js +0 -20
- package/off.js +0 -18
- package/on.js +0 -26
- package/onClickOutside.js +0 -21
- package/once.js +0 -20
- package/removeClass.js +0 -19
- package/scrollTo.js +0 -44
- package/setDataAttr.js +0 -22
- package/setVendorCSS.js +0 -25
- package/siblings.js +0 -23
- package/toArray.js +0 -13
- package/types.js +0 -2
- 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
|
-
|
|
12
|
-
|
|
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
|
}
|
package/_listen-delegation.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
import type { AnyDOMEvent, AnyDOMEventTarget, AnyDOMEventType } from "./types";
|
|
1
2
|
/**
|
|
2
3
|
* @internal
|
|
3
4
|
*/
|
|
4
|
-
export type EventCallback = (event:
|
|
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<
|
|
18
|
+
export declare const activeEvents: Partial<Record<AnyDOMEventType, ListenEvent[]>>;
|
|
18
19
|
/**
|
|
19
20
|
* Get the index for the listener
|
|
20
21
|
*
|
package/_listen-delegation.mjs
CHANGED
|
@@ -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
|
-
|
|
24
|
-
|
|
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 ([
|
|
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
|
-
|
|
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
|
-
|
|
74
|
-
|
|
75
|
-
|
|
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;
|
package/calculateFixedOffset.mjs
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { $each } from "./$each";
|
|
2
|
-
export function calculateFixedOffset(selector) {
|
|
3
|
-
|
|
4
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
7
|
+
detail
|
|
12
8
|
}));
|
|
13
9
|
}
|
|
14
10
|
export default emitEvent;
|
package/escapeSelector.mjs
CHANGED
|
@@ -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
package/forEach.d.ts
CHANGED
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* For each, iterate through a NodeList of
|
|
2
|
+
* For each, iterate through a `NodeList` or an `array` of `HTMLElement`s
|
|
3
3
|
*
|
|
4
|
-
* @param
|
|
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
|
|
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
|
|
2
|
+
* For each, iterate through a `NodeList` or an `array` of `HTMLElement`s
|
|
3
3
|
*
|
|
4
|
-
* @param
|
|
5
|
-
|
|
6
|
-
|
|
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
|
}
|
package/getDocumentHeight.mjs
CHANGED
|
@@ -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
|
-
|
|
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
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<
|
|
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
|
-
|
|
10
|
-
|
|
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
|
-
|
|
8
|
-
|
|
9
|
-
|
|
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 {
|
|
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
|
-
|
|
10
|
-
var location = 0;
|
|
8
|
+
*/ export function getOffsetTop(elem) {
|
|
9
|
+
let location = 0;
|
|
11
10
|
if (elem.offsetParent) {
|
|
12
|
-
while
|
|
11
|
+
while(elem){
|
|
13
12
|
location += elem.offsetTop;
|
|
14
13
|
// @ts-expect-error nevermind?
|
|
15
14
|
elem = elem.offsetParent;
|
package/getOffsetTopSlim.mjs
CHANGED
|
@@ -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;
|
package/getScrollbarWidth.mjs
CHANGED
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
|
-
|
|
6
|
-
|
|
7
|
-
|
|
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
|
-
|
|
9
|
+
const bg = window.getComputedStyle(elem).backgroundColor;
|
|
12
10
|
if (bg === transparent || bg === transparentIE11) {
|
|
13
|
-
|
|
14
|
-
if (
|
|
15
|
-
return getVisualBackgroundColor(
|
|
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
|
-
|
|
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
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
|
-
|
|
10
|
-
|
|
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
|
-
|
|
7
|
-
|
|
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;
|
package/isTotallyScrolled.mjs
CHANGED
|
@@ -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:
|
|
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
|
|
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
|
-
|
|
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
|
|
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]
|
|
29
|
+
activeEvents[type]?.push({
|
|
28
30
|
selector: selector,
|
|
29
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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;
|