@zero-dependency/dom 0.12.0 → 1.0.0
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/dist/html.d.ts +4 -2
- package/dist/index.cjs.js +85 -59
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.d.ts +3 -4
- package/dist/index.es.js +83 -59
- package/dist/index.es.js.map +1 -1
- package/dist/index.umd.js +85 -59
- package/dist/index.umd.js.map +1 -1
- package/dist/location-observer.d.ts +13 -0
- package/dist/mutation-observers.d.ts +4 -0
- package/package.json +12 -12
- package/dist/locationObserver.d.ts +0 -11
- package/dist/observeElement.d.ts +0 -1
- package/dist/waitElement.d.ts +0 -1
package/dist/html.d.ts
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
|
|
1
|
+
type Attributes<T extends keyof HTMLElementTagNameMap> = Partial<{
|
|
2
2
|
style: Partial<CSSStyleDeclaration>;
|
|
3
3
|
} & Omit<HTMLElementTagNameMap[T], 'style'>>;
|
|
4
|
-
|
|
4
|
+
type Children = (string | Node | HTMLElement)[];
|
|
5
5
|
export declare function el<T extends keyof HTMLElementTagNameMap>(tag: T, attributes?: Children | Attributes<T>, ...children: Children): HTMLElementTagNameMap[T];
|
|
6
6
|
export declare function text(str: string): Text;
|
|
7
7
|
export declare function nbsp(): Text;
|
|
8
8
|
export declare function domReady(): Promise<void>;
|
|
9
|
+
export declare function isDisabled(element: HTMLElement): boolean;
|
|
10
|
+
export declare function addEventListener(target: EventTarget, eventName: string, handler: EventListener, options?: AddEventListenerOptions): () => void;
|
|
9
11
|
export {};
|
package/dist/index.cjs.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
Object.
|
|
3
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
4
4
|
|
|
5
5
|
function el(tag, attributes, ...children) {
|
|
6
6
|
const el2 = document.createElement(tag);
|
|
@@ -21,7 +21,7 @@ function text(str) {
|
|
|
21
21
|
return document.createTextNode(str);
|
|
22
22
|
}
|
|
23
23
|
function nbsp() {
|
|
24
|
-
return text("
|
|
24
|
+
return text(" ");
|
|
25
25
|
}
|
|
26
26
|
async function domReady() {
|
|
27
27
|
return new Promise((resolve) => {
|
|
@@ -34,78 +34,74 @@ async function domReady() {
|
|
|
34
34
|
}
|
|
35
35
|
});
|
|
36
36
|
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
const observe = new MutationObserver((mutations, observer) => {
|
|
40
|
-
for (const mutation of mutations) {
|
|
41
|
-
callback(mutation, observer);
|
|
42
|
-
}
|
|
43
|
-
});
|
|
44
|
-
observe.observe(el, {
|
|
45
|
-
childList: true,
|
|
46
|
-
subtree: true,
|
|
47
|
-
...options
|
|
48
|
-
});
|
|
49
|
-
return observe;
|
|
37
|
+
function isDisabled(element) {
|
|
38
|
+
return Boolean(element.getAttribute("disabled")) === true || Boolean(element.getAttribute("aria-disabled")) === true;
|
|
50
39
|
}
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
return
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
if (el) {
|
|
57
|
-
resolve(el);
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
observeElement(target, (_, observer) => {
|
|
61
|
-
resolveElement();
|
|
62
|
-
observer.disconnect();
|
|
63
|
-
});
|
|
64
|
-
});
|
|
40
|
+
function addEventListener(target, eventName, handler, options) {
|
|
41
|
+
target.addEventListener(eventName, handler, options);
|
|
42
|
+
return () => {
|
|
43
|
+
target.removeEventListener(eventName, handler, options);
|
|
44
|
+
};
|
|
65
45
|
}
|
|
66
46
|
|
|
67
|
-
class
|
|
68
|
-
#
|
|
69
|
-
on(
|
|
70
|
-
const
|
|
71
|
-
|
|
47
|
+
class Emitter {
|
|
48
|
+
#events = {};
|
|
49
|
+
on(event, listener) {
|
|
50
|
+
const listeners = this.#events[event];
|
|
51
|
+
if (listeners) {
|
|
52
|
+
listeners.push(listener);
|
|
53
|
+
} else {
|
|
54
|
+
this.#events[event] = [listener];
|
|
55
|
+
}
|
|
56
|
+
return this;
|
|
72
57
|
}
|
|
73
|
-
addListener(
|
|
74
|
-
return this.on(
|
|
58
|
+
addListener(event, listener) {
|
|
59
|
+
return this.on(event, listener);
|
|
75
60
|
}
|
|
76
|
-
once(
|
|
77
|
-
const
|
|
78
|
-
this.off(
|
|
61
|
+
once(event, listener) {
|
|
62
|
+
const onceListener = (...args) => {
|
|
63
|
+
this.off(event, onceListener);
|
|
64
|
+
listener(...args);
|
|
79
65
|
};
|
|
80
|
-
|
|
66
|
+
this.on(event, onceListener);
|
|
67
|
+
return this;
|
|
81
68
|
}
|
|
82
|
-
emit(
|
|
83
|
-
const
|
|
84
|
-
for (let i = 0; i <
|
|
85
|
-
|
|
86
|
-
|
|
69
|
+
emit(event, ...args) {
|
|
70
|
+
const listeners = this.#events[event] || [];
|
|
71
|
+
for (let i = 0; i < listeners.length; i++) {
|
|
72
|
+
listeners[i](...args);
|
|
73
|
+
}
|
|
74
|
+
return Boolean(listeners.length);
|
|
87
75
|
}
|
|
88
|
-
off(
|
|
89
|
-
|
|
76
|
+
off(event, listener) {
|
|
77
|
+
if (this.#events[event]) {
|
|
78
|
+
this.#events[event] = this.#events[event].filter((v) => v !== listener);
|
|
79
|
+
}
|
|
80
|
+
return this;
|
|
90
81
|
}
|
|
91
|
-
removeListener(
|
|
92
|
-
return this.off(
|
|
82
|
+
removeListener(event, listener) {
|
|
83
|
+
return this.off(event, listener);
|
|
93
84
|
}
|
|
94
|
-
removeAllListeners(
|
|
95
|
-
|
|
85
|
+
removeAllListeners(event) {
|
|
86
|
+
if (event) {
|
|
87
|
+
delete this.#events[event];
|
|
88
|
+
} else {
|
|
89
|
+
this.#events = {};
|
|
90
|
+
}
|
|
91
|
+
return this;
|
|
96
92
|
}
|
|
97
93
|
eventNames() {
|
|
98
|
-
return Reflect.ownKeys(this.#
|
|
94
|
+
return Reflect.ownKeys(this.#events);
|
|
99
95
|
}
|
|
100
|
-
listeners(
|
|
101
|
-
return this.#
|
|
96
|
+
listeners(event) {
|
|
97
|
+
return this.#events[event];
|
|
102
98
|
}
|
|
103
|
-
listenerCount(
|
|
104
|
-
return this.#
|
|
99
|
+
listenerCount(event) {
|
|
100
|
+
return this.#events[event]?.length ?? 0;
|
|
105
101
|
}
|
|
106
102
|
}
|
|
107
103
|
|
|
108
|
-
class LocationObserver extends
|
|
104
|
+
class LocationObserver extends Emitter {
|
|
109
105
|
constructor() {
|
|
110
106
|
super();
|
|
111
107
|
const { history, location } = window;
|
|
@@ -118,15 +114,45 @@ class LocationObserver extends n {
|
|
|
118
114
|
replaceState.apply(history, args);
|
|
119
115
|
this.emit("replaceState", location, args[0]);
|
|
120
116
|
};
|
|
121
|
-
window.addEventListener("popstate", (
|
|
122
|
-
this.emit("popState", location,
|
|
117
|
+
window.addEventListener("popstate", (event) => {
|
|
118
|
+
this.emit("popState", location, event);
|
|
123
119
|
});
|
|
124
120
|
}
|
|
125
121
|
}
|
|
126
122
|
|
|
123
|
+
function observeElement(el, callback, options) {
|
|
124
|
+
const observe = new MutationObserver((mutations, observer) => {
|
|
125
|
+
for (const mutation of mutations) {
|
|
126
|
+
callback(mutation, observer);
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
observe.observe(el, {
|
|
130
|
+
childList: true,
|
|
131
|
+
subtree: true,
|
|
132
|
+
...options
|
|
133
|
+
});
|
|
134
|
+
return () => observe.disconnect();
|
|
135
|
+
}
|
|
136
|
+
function waitElement(selector, target = document.documentElement) {
|
|
137
|
+
return new Promise((resolve) => {
|
|
138
|
+
function resolveElement() {
|
|
139
|
+
const el = target.querySelector(selector);
|
|
140
|
+
if (el) {
|
|
141
|
+
resolve(el);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
observeElement(target, (_, observer) => {
|
|
145
|
+
resolveElement();
|
|
146
|
+
observer.disconnect();
|
|
147
|
+
});
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
|
|
127
151
|
exports.LocationObserver = LocationObserver;
|
|
152
|
+
exports.addEventListener = addEventListener;
|
|
128
153
|
exports.domReady = domReady;
|
|
129
154
|
exports.el = el;
|
|
155
|
+
exports.isDisabled = isDisabled;
|
|
130
156
|
exports.nbsp = nbsp;
|
|
131
157
|
exports.observeElement = observeElement;
|
|
132
158
|
exports.text = text;
|
package/dist/index.cjs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs.js","sources":["../src/html.ts","../src/observeElement.ts","../src/waitElement.ts","../node_modules/.pnpm/@zero-dependency+emitter@1.1.1/node_modules/@zero-dependency/emitter/dist/index.es.js","../src/locationObserver.ts"],"sourcesContent":["// prettier-ignore\ntype Attributes<T extends keyof HTMLElementTagNameMap> = Partial<{\n style: Partial<CSSStyleDeclaration>\n} & Omit<HTMLElementTagNameMap[T], 'style'>>\n\ntype Children = (string | Node | HTMLElement)[]\n\nexport function el<T extends keyof HTMLElementTagNameMap>(\n tag: T,\n attributes?: Children | Attributes<T>,\n ...children: Children\n): HTMLElementTagNameMap[T] {\n const el = document.createElement(tag)\n\n if (typeof attributes === 'string') {\n el.append(text(attributes))\n } else if (Array.isArray(attributes)) {\n el.append(...attributes)\n } else {\n Object.assign(el, attributes)\n Object.assign(el.style, attributes?.style)\n }\n\n if (children.length) {\n el.append(...children)\n }\n\n return el\n}\n\nexport function text(str: string): Text {\n return document.createTextNode(str)\n}\n\nexport function nbsp(): Text {\n return text('\\u00a0')\n}\n\nexport async function domReady(): Promise<void> {\n return new Promise((resolve) => {\n if (document.readyState == 'loading') {\n document.addEventListener('DOMContentLoaded', () => resolve(), {\n once: true\n })\n } else {\n resolve()\n }\n })\n}\n","export function observeElement<T extends Element = Element>(\n el: T,\n callback: (mutation: MutationRecord, observer: MutationObserver) => void,\n options?: MutationObserverInit\n) {\n const observe = new MutationObserver((mutations, observer) => {\n for (const mutation of mutations) {\n callback(mutation, observer)\n }\n })\n\n observe.observe(el, {\n childList: true,\n subtree: true,\n ...options\n })\n\n return observe\n}\n","import { observeElement } from './observeElement.js'\n\nexport function waitElement<T extends Element = Element>(\n selector: string,\n target = document.documentElement\n): Promise<T> {\n return new Promise((resolve) => {\n function resolveElement() {\n const el = target.querySelector<T>(selector)\n if (el) {\n resolve(el)\n }\n }\n\n observeElement(target, (_, observer) => {\n resolveElement()\n observer.disconnect()\n })\n })\n}\n","class n {\n #t = {};\n on(t, e) {\n const s = this.#t[t];\n return s ? s.push(e) : this.#t[t] = [e], this;\n }\n addListener(t, e) {\n return this.on(t, e);\n }\n once(t, e) {\n const s = (...i) => {\n this.off(t, s), e(...i);\n };\n return this.on(t, s), this;\n }\n emit(t, ...e) {\n const s = this.#t[t] || [];\n for (let i = 0; i < s.length; i++)\n s[i](...e);\n return Boolean(s.length);\n }\n off(t, e) {\n return this.#t[t] && (this.#t[t] = this.#t[t].filter((s) => s !== e)), this;\n }\n removeListener(t, e) {\n return this.off(t, e);\n }\n removeAllListeners(t) {\n return t ? delete this.#t[t] : this.#t = {}, this;\n }\n eventNames() {\n return Reflect.ownKeys(this.#t);\n }\n listeners(t) {\n return this.#t[t];\n }\n listenerCount(t) {\n return this.#t[t]?.length ?? 0;\n }\n}\nexport {\n n as Emitter\n};\n//# sourceMappingURL=index.es.js.map\n","import { Emitter } from '@zero-dependency/emitter'\n\ntype LocationCallback = (location: Location, state: any) => void\n\ntype Events = {\n pushState: LocationCallback\n replaceState: LocationCallback\n popState: LocationCallback\n}\n\nexport class LocationObserver extends Emitter<Events> {\n constructor() {\n super()\n\n const { history, location } = window\n const { pushState, replaceState } = history\n\n history.pushState = (...args) => {\n pushState.apply(history, args)\n this.emit('pushState', location, args[0])\n }\n\n history.replaceState = (...args) => {\n replaceState.apply(history, args)\n this.emit('replaceState', location, args[0])\n }\n\n window.addEventListener('popstate', ({ state }) => {\n this.emit('popState', location, state)\n })\n }\n}\n"],"names":["el","Emitter"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs.js","sources":["../src/html.ts","../../emitter/dist/index.es.js","../src/location-observer.ts","../src/mutation-observers.ts"],"sourcesContent":["// prettier-ignore\ntype Attributes<T extends keyof HTMLElementTagNameMap> = Partial<{\n style: Partial<CSSStyleDeclaration>\n} & Omit<HTMLElementTagNameMap[T], 'style'>>\n\ntype Children = (string | Node | HTMLElement)[]\n\nexport function el<T extends keyof HTMLElementTagNameMap>(\n tag: T,\n attributes?: Children | Attributes<T>,\n ...children: Children\n): HTMLElementTagNameMap[T] {\n const el = document.createElement(tag)\n\n if (typeof attributes === 'string') {\n el.append(text(attributes))\n } else if (Array.isArray(attributes)) {\n el.append(...attributes)\n } else {\n Object.assign(el, attributes)\n Object.assign(el.style, attributes?.style)\n }\n\n if (children.length) {\n el.append(...children)\n }\n\n return el\n}\n\nexport function text(str: string): Text {\n return document.createTextNode(str)\n}\n\nexport function nbsp(): Text {\n return text('\\u00a0')\n}\n\nexport async function domReady(): Promise<void> {\n return new Promise((resolve) => {\n if (document.readyState == 'loading') {\n document.addEventListener('DOMContentLoaded', () => resolve(), {\n once: true\n })\n } else {\n resolve()\n }\n })\n}\n\nexport function isDisabled(element: HTMLElement): boolean {\n return (\n Boolean(element.getAttribute('disabled')) === true ||\n Boolean(element.getAttribute('aria-disabled')) === true\n )\n}\n\nexport function addEventListener(\n target: EventTarget,\n eventName: string,\n handler: EventListener,\n options?: AddEventListenerOptions\n) {\n target.addEventListener(eventName, handler, options)\n return () => {\n target.removeEventListener(eventName, handler, options)\n }\n}\n","class Emitter {\n #events = {};\n on(event, listener) {\n const listeners = this.#events[event];\n if (listeners) {\n listeners.push(listener);\n } else {\n this.#events[event] = [listener];\n }\n return this;\n }\n addListener(event, listener) {\n return this.on(event, listener);\n }\n once(event, listener) {\n const onceListener = (...args) => {\n this.off(event, onceListener);\n listener(...args);\n };\n this.on(event, onceListener);\n return this;\n }\n emit(event, ...args) {\n const listeners = this.#events[event] || [];\n for (let i = 0; i < listeners.length; i++) {\n listeners[i](...args);\n }\n return Boolean(listeners.length);\n }\n off(event, listener) {\n if (this.#events[event]) {\n this.#events[event] = this.#events[event].filter((v) => v !== listener);\n }\n return this;\n }\n removeListener(event, listener) {\n return this.off(event, listener);\n }\n removeAllListeners(event) {\n if (event) {\n delete this.#events[event];\n } else {\n this.#events = {};\n }\n return this;\n }\n eventNames() {\n return Reflect.ownKeys(this.#events);\n }\n listeners(event) {\n return this.#events[event];\n }\n listenerCount(event) {\n return this.#events[event]?.length ?? 0;\n }\n}\n\nexport { Emitter };\n//# sourceMappingURL=index.es.js.map\n","import { Emitter } from '@zero-dependency/emitter'\n\ntype LocationCallback<T = any> = (location: Location, args: T) => void\n\ntype Events<T> = {\n pushState: LocationCallback<T>\n replaceState: LocationCallback<T>\n popState: LocationCallback<\n Omit<PopStateEvent, 'state'> & { readonly state: T }\n >\n}\n\nexport class LocationObserver<T> extends Emitter<Events<T>> {\n constructor() {\n super()\n\n const { history, location } = window\n const { pushState, replaceState } = history\n\n history.pushState = (...args) => {\n pushState.apply(history, args)\n this.emit('pushState', location, args[0])\n }\n\n history.replaceState = (...args) => {\n replaceState.apply(history, args)\n this.emit('replaceState', location, args[0])\n }\n\n window.addEventListener('popstate', (event) => {\n this.emit('popState', location, event)\n })\n }\n}\n","type Disconnect = () => void\n\nexport function observeElement<T extends Element = Element>(\n el: T,\n callback: (mutation: MutationRecord, observer: MutationObserver) => void,\n options?: MutationObserverInit\n): Disconnect {\n const observe = new MutationObserver((mutations, observer) => {\n for (const mutation of mutations) {\n callback(mutation, observer)\n }\n })\n\n observe.observe(el, {\n childList: true,\n subtree: true,\n ...options\n })\n\n return () => observe.disconnect()\n}\n\nexport function waitElement<T extends Element = Element>(\n selector: string,\n target = document.documentElement\n): Promise<T> {\n return new Promise((resolve) => {\n function resolveElement() {\n const el = target.querySelector<T>(selector)\n if (el) {\n resolve(el)\n }\n }\n\n observeElement(target, (_, observer) => {\n resolveElement()\n observer.disconnect()\n })\n })\n}\n"],"names":["el"],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
export
|
|
2
|
-
export
|
|
3
|
-
export
|
|
4
|
-
export { observeElement } from './observeElement.js';
|
|
1
|
+
export * from './html.js';
|
|
2
|
+
export * from './location-observer.js';
|
|
3
|
+
export * from './mutation-observers.js';
|
package/dist/index.es.js
CHANGED
|
@@ -17,7 +17,7 @@ function text(str) {
|
|
|
17
17
|
return document.createTextNode(str);
|
|
18
18
|
}
|
|
19
19
|
function nbsp() {
|
|
20
|
-
return text("
|
|
20
|
+
return text(" ");
|
|
21
21
|
}
|
|
22
22
|
async function domReady() {
|
|
23
23
|
return new Promise((resolve) => {
|
|
@@ -30,78 +30,74 @@ async function domReady() {
|
|
|
30
30
|
}
|
|
31
31
|
});
|
|
32
32
|
}
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
const observe = new MutationObserver((mutations, observer) => {
|
|
36
|
-
for (const mutation of mutations) {
|
|
37
|
-
callback(mutation, observer);
|
|
38
|
-
}
|
|
39
|
-
});
|
|
40
|
-
observe.observe(el, {
|
|
41
|
-
childList: true,
|
|
42
|
-
subtree: true,
|
|
43
|
-
...options
|
|
44
|
-
});
|
|
45
|
-
return observe;
|
|
33
|
+
function isDisabled(element) {
|
|
34
|
+
return Boolean(element.getAttribute("disabled")) === true || Boolean(element.getAttribute("aria-disabled")) === true;
|
|
46
35
|
}
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
return
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
if (el) {
|
|
53
|
-
resolve(el);
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
observeElement(target, (_, observer) => {
|
|
57
|
-
resolveElement();
|
|
58
|
-
observer.disconnect();
|
|
59
|
-
});
|
|
60
|
-
});
|
|
36
|
+
function addEventListener(target, eventName, handler, options) {
|
|
37
|
+
target.addEventListener(eventName, handler, options);
|
|
38
|
+
return () => {
|
|
39
|
+
target.removeEventListener(eventName, handler, options);
|
|
40
|
+
};
|
|
61
41
|
}
|
|
62
42
|
|
|
63
|
-
class
|
|
64
|
-
#
|
|
65
|
-
on(
|
|
66
|
-
const
|
|
67
|
-
|
|
43
|
+
class Emitter {
|
|
44
|
+
#events = {};
|
|
45
|
+
on(event, listener) {
|
|
46
|
+
const listeners = this.#events[event];
|
|
47
|
+
if (listeners) {
|
|
48
|
+
listeners.push(listener);
|
|
49
|
+
} else {
|
|
50
|
+
this.#events[event] = [listener];
|
|
51
|
+
}
|
|
52
|
+
return this;
|
|
68
53
|
}
|
|
69
|
-
addListener(
|
|
70
|
-
return this.on(
|
|
54
|
+
addListener(event, listener) {
|
|
55
|
+
return this.on(event, listener);
|
|
71
56
|
}
|
|
72
|
-
once(
|
|
73
|
-
const
|
|
74
|
-
this.off(
|
|
57
|
+
once(event, listener) {
|
|
58
|
+
const onceListener = (...args) => {
|
|
59
|
+
this.off(event, onceListener);
|
|
60
|
+
listener(...args);
|
|
75
61
|
};
|
|
76
|
-
|
|
62
|
+
this.on(event, onceListener);
|
|
63
|
+
return this;
|
|
77
64
|
}
|
|
78
|
-
emit(
|
|
79
|
-
const
|
|
80
|
-
for (let i = 0; i <
|
|
81
|
-
|
|
82
|
-
|
|
65
|
+
emit(event, ...args) {
|
|
66
|
+
const listeners = this.#events[event] || [];
|
|
67
|
+
for (let i = 0; i < listeners.length; i++) {
|
|
68
|
+
listeners[i](...args);
|
|
69
|
+
}
|
|
70
|
+
return Boolean(listeners.length);
|
|
83
71
|
}
|
|
84
|
-
off(
|
|
85
|
-
|
|
72
|
+
off(event, listener) {
|
|
73
|
+
if (this.#events[event]) {
|
|
74
|
+
this.#events[event] = this.#events[event].filter((v) => v !== listener);
|
|
75
|
+
}
|
|
76
|
+
return this;
|
|
86
77
|
}
|
|
87
|
-
removeListener(
|
|
88
|
-
return this.off(
|
|
78
|
+
removeListener(event, listener) {
|
|
79
|
+
return this.off(event, listener);
|
|
89
80
|
}
|
|
90
|
-
removeAllListeners(
|
|
91
|
-
|
|
81
|
+
removeAllListeners(event) {
|
|
82
|
+
if (event) {
|
|
83
|
+
delete this.#events[event];
|
|
84
|
+
} else {
|
|
85
|
+
this.#events = {};
|
|
86
|
+
}
|
|
87
|
+
return this;
|
|
92
88
|
}
|
|
93
89
|
eventNames() {
|
|
94
|
-
return Reflect.ownKeys(this.#
|
|
90
|
+
return Reflect.ownKeys(this.#events);
|
|
95
91
|
}
|
|
96
|
-
listeners(
|
|
97
|
-
return this.#
|
|
92
|
+
listeners(event) {
|
|
93
|
+
return this.#events[event];
|
|
98
94
|
}
|
|
99
|
-
listenerCount(
|
|
100
|
-
return this.#
|
|
95
|
+
listenerCount(event) {
|
|
96
|
+
return this.#events[event]?.length ?? 0;
|
|
101
97
|
}
|
|
102
98
|
}
|
|
103
99
|
|
|
104
|
-
class LocationObserver extends
|
|
100
|
+
class LocationObserver extends Emitter {
|
|
105
101
|
constructor() {
|
|
106
102
|
super();
|
|
107
103
|
const { history, location } = window;
|
|
@@ -114,11 +110,39 @@ class LocationObserver extends n {
|
|
|
114
110
|
replaceState.apply(history, args);
|
|
115
111
|
this.emit("replaceState", location, args[0]);
|
|
116
112
|
};
|
|
117
|
-
window.addEventListener("popstate", (
|
|
118
|
-
this.emit("popState", location,
|
|
113
|
+
window.addEventListener("popstate", (event) => {
|
|
114
|
+
this.emit("popState", location, event);
|
|
119
115
|
});
|
|
120
116
|
}
|
|
121
117
|
}
|
|
122
118
|
|
|
123
|
-
|
|
119
|
+
function observeElement(el, callback, options) {
|
|
120
|
+
const observe = new MutationObserver((mutations, observer) => {
|
|
121
|
+
for (const mutation of mutations) {
|
|
122
|
+
callback(mutation, observer);
|
|
123
|
+
}
|
|
124
|
+
});
|
|
125
|
+
observe.observe(el, {
|
|
126
|
+
childList: true,
|
|
127
|
+
subtree: true,
|
|
128
|
+
...options
|
|
129
|
+
});
|
|
130
|
+
return () => observe.disconnect();
|
|
131
|
+
}
|
|
132
|
+
function waitElement(selector, target = document.documentElement) {
|
|
133
|
+
return new Promise((resolve) => {
|
|
134
|
+
function resolveElement() {
|
|
135
|
+
const el = target.querySelector(selector);
|
|
136
|
+
if (el) {
|
|
137
|
+
resolve(el);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
observeElement(target, (_, observer) => {
|
|
141
|
+
resolveElement();
|
|
142
|
+
observer.disconnect();
|
|
143
|
+
});
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
export { LocationObserver, addEventListener, domReady, el, isDisabled, nbsp, observeElement, text, waitElement };
|
|
124
148
|
//# sourceMappingURL=index.es.js.map
|
package/dist/index.es.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.es.js","sources":["../src/html.ts","../src/observeElement.ts","../src/waitElement.ts","../node_modules/.pnpm/@zero-dependency+emitter@1.1.1/node_modules/@zero-dependency/emitter/dist/index.es.js","../src/locationObserver.ts"],"sourcesContent":["// prettier-ignore\ntype Attributes<T extends keyof HTMLElementTagNameMap> = Partial<{\n style: Partial<CSSStyleDeclaration>\n} & Omit<HTMLElementTagNameMap[T], 'style'>>\n\ntype Children = (string | Node | HTMLElement)[]\n\nexport function el<T extends keyof HTMLElementTagNameMap>(\n tag: T,\n attributes?: Children | Attributes<T>,\n ...children: Children\n): HTMLElementTagNameMap[T] {\n const el = document.createElement(tag)\n\n if (typeof attributes === 'string') {\n el.append(text(attributes))\n } else if (Array.isArray(attributes)) {\n el.append(...attributes)\n } else {\n Object.assign(el, attributes)\n Object.assign(el.style, attributes?.style)\n }\n\n if (children.length) {\n el.append(...children)\n }\n\n return el\n}\n\nexport function text(str: string): Text {\n return document.createTextNode(str)\n}\n\nexport function nbsp(): Text {\n return text('\\u00a0')\n}\n\nexport async function domReady(): Promise<void> {\n return new Promise((resolve) => {\n if (document.readyState == 'loading') {\n document.addEventListener('DOMContentLoaded', () => resolve(), {\n once: true\n })\n } else {\n resolve()\n }\n })\n}\n","export function observeElement<T extends Element = Element>(\n el: T,\n callback: (mutation: MutationRecord, observer: MutationObserver) => void,\n options?: MutationObserverInit\n) {\n const observe = new MutationObserver((mutations, observer) => {\n for (const mutation of mutations) {\n callback(mutation, observer)\n }\n })\n\n observe.observe(el, {\n childList: true,\n subtree: true,\n ...options\n })\n\n return observe\n}\n","import { observeElement } from './observeElement.js'\n\nexport function waitElement<T extends Element = Element>(\n selector: string,\n target = document.documentElement\n): Promise<T> {\n return new Promise((resolve) => {\n function resolveElement() {\n const el = target.querySelector<T>(selector)\n if (el) {\n resolve(el)\n }\n }\n\n observeElement(target, (_, observer) => {\n resolveElement()\n observer.disconnect()\n })\n })\n}\n","class n {\n #t = {};\n on(t, e) {\n const s = this.#t[t];\n return s ? s.push(e) : this.#t[t] = [e], this;\n }\n addListener(t, e) {\n return this.on(t, e);\n }\n once(t, e) {\n const s = (...i) => {\n this.off(t, s), e(...i);\n };\n return this.on(t, s), this;\n }\n emit(t, ...e) {\n const s = this.#t[t] || [];\n for (let i = 0; i < s.length; i++)\n s[i](...e);\n return Boolean(s.length);\n }\n off(t, e) {\n return this.#t[t] && (this.#t[t] = this.#t[t].filter((s) => s !== e)), this;\n }\n removeListener(t, e) {\n return this.off(t, e);\n }\n removeAllListeners(t) {\n return t ? delete this.#t[t] : this.#t = {}, this;\n }\n eventNames() {\n return Reflect.ownKeys(this.#t);\n }\n listeners(t) {\n return this.#t[t];\n }\n listenerCount(t) {\n return this.#t[t]?.length ?? 0;\n }\n}\nexport {\n n as Emitter\n};\n//# sourceMappingURL=index.es.js.map\n","import { Emitter } from '@zero-dependency/emitter'\n\ntype LocationCallback = (location: Location, state: any) => void\n\ntype Events = {\n pushState: LocationCallback\n replaceState: LocationCallback\n popState: LocationCallback\n}\n\nexport class LocationObserver extends Emitter<Events> {\n constructor() {\n super()\n\n const { history, location } = window\n const { pushState, replaceState } = history\n\n history.pushState = (...args) => {\n pushState.apply(history, args)\n this.emit('pushState', location, args[0])\n }\n\n history.replaceState = (...args) => {\n replaceState.apply(history, args)\n this.emit('replaceState', location, args[0])\n }\n\n window.addEventListener('popstate', ({ state }) => {\n this.emit('popState', location, state)\n })\n }\n}\n"],"names":["el","Emitter"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.es.js","sources":["../src/html.ts","../../emitter/dist/index.es.js","../src/location-observer.ts","../src/mutation-observers.ts"],"sourcesContent":["// prettier-ignore\ntype Attributes<T extends keyof HTMLElementTagNameMap> = Partial<{\n style: Partial<CSSStyleDeclaration>\n} & Omit<HTMLElementTagNameMap[T], 'style'>>\n\ntype Children = (string | Node | HTMLElement)[]\n\nexport function el<T extends keyof HTMLElementTagNameMap>(\n tag: T,\n attributes?: Children | Attributes<T>,\n ...children: Children\n): HTMLElementTagNameMap[T] {\n const el = document.createElement(tag)\n\n if (typeof attributes === 'string') {\n el.append(text(attributes))\n } else if (Array.isArray(attributes)) {\n el.append(...attributes)\n } else {\n Object.assign(el, attributes)\n Object.assign(el.style, attributes?.style)\n }\n\n if (children.length) {\n el.append(...children)\n }\n\n return el\n}\n\nexport function text(str: string): Text {\n return document.createTextNode(str)\n}\n\nexport function nbsp(): Text {\n return text('\\u00a0')\n}\n\nexport async function domReady(): Promise<void> {\n return new Promise((resolve) => {\n if (document.readyState == 'loading') {\n document.addEventListener('DOMContentLoaded', () => resolve(), {\n once: true\n })\n } else {\n resolve()\n }\n })\n}\n\nexport function isDisabled(element: HTMLElement): boolean {\n return (\n Boolean(element.getAttribute('disabled')) === true ||\n Boolean(element.getAttribute('aria-disabled')) === true\n )\n}\n\nexport function addEventListener(\n target: EventTarget,\n eventName: string,\n handler: EventListener,\n options?: AddEventListenerOptions\n) {\n target.addEventListener(eventName, handler, options)\n return () => {\n target.removeEventListener(eventName, handler, options)\n }\n}\n","class Emitter {\n #events = {};\n on(event, listener) {\n const listeners = this.#events[event];\n if (listeners) {\n listeners.push(listener);\n } else {\n this.#events[event] = [listener];\n }\n return this;\n }\n addListener(event, listener) {\n return this.on(event, listener);\n }\n once(event, listener) {\n const onceListener = (...args) => {\n this.off(event, onceListener);\n listener(...args);\n };\n this.on(event, onceListener);\n return this;\n }\n emit(event, ...args) {\n const listeners = this.#events[event] || [];\n for (let i = 0; i < listeners.length; i++) {\n listeners[i](...args);\n }\n return Boolean(listeners.length);\n }\n off(event, listener) {\n if (this.#events[event]) {\n this.#events[event] = this.#events[event].filter((v) => v !== listener);\n }\n return this;\n }\n removeListener(event, listener) {\n return this.off(event, listener);\n }\n removeAllListeners(event) {\n if (event) {\n delete this.#events[event];\n } else {\n this.#events = {};\n }\n return this;\n }\n eventNames() {\n return Reflect.ownKeys(this.#events);\n }\n listeners(event) {\n return this.#events[event];\n }\n listenerCount(event) {\n return this.#events[event]?.length ?? 0;\n }\n}\n\nexport { Emitter };\n//# sourceMappingURL=index.es.js.map\n","import { Emitter } from '@zero-dependency/emitter'\n\ntype LocationCallback<T = any> = (location: Location, args: T) => void\n\ntype Events<T> = {\n pushState: LocationCallback<T>\n replaceState: LocationCallback<T>\n popState: LocationCallback<\n Omit<PopStateEvent, 'state'> & { readonly state: T }\n >\n}\n\nexport class LocationObserver<T> extends Emitter<Events<T>> {\n constructor() {\n super()\n\n const { history, location } = window\n const { pushState, replaceState } = history\n\n history.pushState = (...args) => {\n pushState.apply(history, args)\n this.emit('pushState', location, args[0])\n }\n\n history.replaceState = (...args) => {\n replaceState.apply(history, args)\n this.emit('replaceState', location, args[0])\n }\n\n window.addEventListener('popstate', (event) => {\n this.emit('popState', location, event)\n })\n }\n}\n","type Disconnect = () => void\n\nexport function observeElement<T extends Element = Element>(\n el: T,\n callback: (mutation: MutationRecord, observer: MutationObserver) => void,\n options?: MutationObserverInit\n): Disconnect {\n const observe = new MutationObserver((mutations, observer) => {\n for (const mutation of mutations) {\n callback(mutation, observer)\n }\n })\n\n observe.observe(el, {\n childList: true,\n subtree: true,\n ...options\n })\n\n return () => observe.disconnect()\n}\n\nexport function waitElement<T extends Element = Element>(\n selector: string,\n target = document.documentElement\n): Promise<T> {\n return new Promise((resolve) => {\n function resolveElement() {\n const el = target.querySelector<T>(selector)\n if (el) {\n resolve(el)\n }\n }\n\n observeElement(target, (_, observer) => {\n resolveElement()\n observer.disconnect()\n })\n })\n}\n"],"names":["el"],"mappings":"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"}
|
package/dist/index.umd.js
CHANGED
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
return document.createTextNode(str);
|
|
24
24
|
}
|
|
25
25
|
function nbsp() {
|
|
26
|
-
return text("
|
|
26
|
+
return text(" ");
|
|
27
27
|
}
|
|
28
28
|
async function domReady() {
|
|
29
29
|
return new Promise((resolve) => {
|
|
@@ -36,78 +36,74 @@
|
|
|
36
36
|
}
|
|
37
37
|
});
|
|
38
38
|
}
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
const observe = new MutationObserver((mutations, observer) => {
|
|
42
|
-
for (const mutation of mutations) {
|
|
43
|
-
callback(mutation, observer);
|
|
44
|
-
}
|
|
45
|
-
});
|
|
46
|
-
observe.observe(el, {
|
|
47
|
-
childList: true,
|
|
48
|
-
subtree: true,
|
|
49
|
-
...options
|
|
50
|
-
});
|
|
51
|
-
return observe;
|
|
39
|
+
function isDisabled(element) {
|
|
40
|
+
return Boolean(element.getAttribute("disabled")) === true || Boolean(element.getAttribute("aria-disabled")) === true;
|
|
52
41
|
}
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
return
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
if (el) {
|
|
59
|
-
resolve(el);
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
observeElement(target, (_, observer) => {
|
|
63
|
-
resolveElement();
|
|
64
|
-
observer.disconnect();
|
|
65
|
-
});
|
|
66
|
-
});
|
|
42
|
+
function addEventListener(target, eventName, handler, options) {
|
|
43
|
+
target.addEventListener(eventName, handler, options);
|
|
44
|
+
return () => {
|
|
45
|
+
target.removeEventListener(eventName, handler, options);
|
|
46
|
+
};
|
|
67
47
|
}
|
|
68
48
|
|
|
69
|
-
class
|
|
70
|
-
#
|
|
71
|
-
on(
|
|
72
|
-
const
|
|
73
|
-
|
|
49
|
+
class Emitter {
|
|
50
|
+
#events = {};
|
|
51
|
+
on(event, listener) {
|
|
52
|
+
const listeners = this.#events[event];
|
|
53
|
+
if (listeners) {
|
|
54
|
+
listeners.push(listener);
|
|
55
|
+
} else {
|
|
56
|
+
this.#events[event] = [listener];
|
|
57
|
+
}
|
|
58
|
+
return this;
|
|
74
59
|
}
|
|
75
|
-
addListener(
|
|
76
|
-
return this.on(
|
|
60
|
+
addListener(event, listener) {
|
|
61
|
+
return this.on(event, listener);
|
|
77
62
|
}
|
|
78
|
-
once(
|
|
79
|
-
const
|
|
80
|
-
this.off(
|
|
63
|
+
once(event, listener) {
|
|
64
|
+
const onceListener = (...args) => {
|
|
65
|
+
this.off(event, onceListener);
|
|
66
|
+
listener(...args);
|
|
81
67
|
};
|
|
82
|
-
|
|
68
|
+
this.on(event, onceListener);
|
|
69
|
+
return this;
|
|
83
70
|
}
|
|
84
|
-
emit(
|
|
85
|
-
const
|
|
86
|
-
for (let i = 0; i <
|
|
87
|
-
|
|
88
|
-
|
|
71
|
+
emit(event, ...args) {
|
|
72
|
+
const listeners = this.#events[event] || [];
|
|
73
|
+
for (let i = 0; i < listeners.length; i++) {
|
|
74
|
+
listeners[i](...args);
|
|
75
|
+
}
|
|
76
|
+
return Boolean(listeners.length);
|
|
89
77
|
}
|
|
90
|
-
off(
|
|
91
|
-
|
|
78
|
+
off(event, listener) {
|
|
79
|
+
if (this.#events[event]) {
|
|
80
|
+
this.#events[event] = this.#events[event].filter((v) => v !== listener);
|
|
81
|
+
}
|
|
82
|
+
return this;
|
|
92
83
|
}
|
|
93
|
-
removeListener(
|
|
94
|
-
return this.off(
|
|
84
|
+
removeListener(event, listener) {
|
|
85
|
+
return this.off(event, listener);
|
|
95
86
|
}
|
|
96
|
-
removeAllListeners(
|
|
97
|
-
|
|
87
|
+
removeAllListeners(event) {
|
|
88
|
+
if (event) {
|
|
89
|
+
delete this.#events[event];
|
|
90
|
+
} else {
|
|
91
|
+
this.#events = {};
|
|
92
|
+
}
|
|
93
|
+
return this;
|
|
98
94
|
}
|
|
99
95
|
eventNames() {
|
|
100
|
-
return Reflect.ownKeys(this.#
|
|
96
|
+
return Reflect.ownKeys(this.#events);
|
|
101
97
|
}
|
|
102
|
-
listeners(
|
|
103
|
-
return this.#
|
|
98
|
+
listeners(event) {
|
|
99
|
+
return this.#events[event];
|
|
104
100
|
}
|
|
105
|
-
listenerCount(
|
|
106
|
-
return this.#
|
|
101
|
+
listenerCount(event) {
|
|
102
|
+
return this.#events[event]?.length ?? 0;
|
|
107
103
|
}
|
|
108
104
|
}
|
|
109
105
|
|
|
110
|
-
class LocationObserver extends
|
|
106
|
+
class LocationObserver extends Emitter {
|
|
111
107
|
constructor() {
|
|
112
108
|
super();
|
|
113
109
|
const { history, location } = window;
|
|
@@ -120,21 +116,51 @@
|
|
|
120
116
|
replaceState.apply(history, args);
|
|
121
117
|
this.emit("replaceState", location, args[0]);
|
|
122
118
|
};
|
|
123
|
-
window.addEventListener("popstate", (
|
|
124
|
-
this.emit("popState", location,
|
|
119
|
+
window.addEventListener("popstate", (event) => {
|
|
120
|
+
this.emit("popState", location, event);
|
|
125
121
|
});
|
|
126
122
|
}
|
|
127
123
|
}
|
|
128
124
|
|
|
125
|
+
function observeElement(el, callback, options) {
|
|
126
|
+
const observe = new MutationObserver((mutations, observer) => {
|
|
127
|
+
for (const mutation of mutations) {
|
|
128
|
+
callback(mutation, observer);
|
|
129
|
+
}
|
|
130
|
+
});
|
|
131
|
+
observe.observe(el, {
|
|
132
|
+
childList: true,
|
|
133
|
+
subtree: true,
|
|
134
|
+
...options
|
|
135
|
+
});
|
|
136
|
+
return () => observe.disconnect();
|
|
137
|
+
}
|
|
138
|
+
function waitElement(selector, target = document.documentElement) {
|
|
139
|
+
return new Promise((resolve) => {
|
|
140
|
+
function resolveElement() {
|
|
141
|
+
const el = target.querySelector(selector);
|
|
142
|
+
if (el) {
|
|
143
|
+
resolve(el);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
observeElement(target, (_, observer) => {
|
|
147
|
+
resolveElement();
|
|
148
|
+
observer.disconnect();
|
|
149
|
+
});
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
|
|
129
153
|
exports.LocationObserver = LocationObserver;
|
|
154
|
+
exports.addEventListener = addEventListener;
|
|
130
155
|
exports.domReady = domReady;
|
|
131
156
|
exports.el = el;
|
|
157
|
+
exports.isDisabled = isDisabled;
|
|
132
158
|
exports.nbsp = nbsp;
|
|
133
159
|
exports.observeElement = observeElement;
|
|
134
160
|
exports.text = text;
|
|
135
161
|
exports.waitElement = waitElement;
|
|
136
162
|
|
|
137
|
-
Object.
|
|
163
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
138
164
|
|
|
139
165
|
}));
|
|
140
166
|
//# sourceMappingURL=index.umd.js.map
|
package/dist/index.umd.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.umd.js","sources":["../src/html.ts","../src/observeElement.ts","../src/waitElement.ts","../node_modules/.pnpm/@zero-dependency+emitter@1.1.1/node_modules/@zero-dependency/emitter/dist/index.es.js","../src/locationObserver.ts"],"sourcesContent":["// prettier-ignore\ntype Attributes<T extends keyof HTMLElementTagNameMap> = Partial<{\n style: Partial<CSSStyleDeclaration>\n} & Omit<HTMLElementTagNameMap[T], 'style'>>\n\ntype Children = (string | Node | HTMLElement)[]\n\nexport function el<T extends keyof HTMLElementTagNameMap>(\n tag: T,\n attributes?: Children | Attributes<T>,\n ...children: Children\n): HTMLElementTagNameMap[T] {\n const el = document.createElement(tag)\n\n if (typeof attributes === 'string') {\n el.append(text(attributes))\n } else if (Array.isArray(attributes)) {\n el.append(...attributes)\n } else {\n Object.assign(el, attributes)\n Object.assign(el.style, attributes?.style)\n }\n\n if (children.length) {\n el.append(...children)\n }\n\n return el\n}\n\nexport function text(str: string): Text {\n return document.createTextNode(str)\n}\n\nexport function nbsp(): Text {\n return text('\\u00a0')\n}\n\nexport async function domReady(): Promise<void> {\n return new Promise((resolve) => {\n if (document.readyState == 'loading') {\n document.addEventListener('DOMContentLoaded', () => resolve(), {\n once: true\n })\n } else {\n resolve()\n }\n })\n}\n","export function observeElement<T extends Element = Element>(\n el: T,\n callback: (mutation: MutationRecord, observer: MutationObserver) => void,\n options?: MutationObserverInit\n) {\n const observe = new MutationObserver((mutations, observer) => {\n for (const mutation of mutations) {\n callback(mutation, observer)\n }\n })\n\n observe.observe(el, {\n childList: true,\n subtree: true,\n ...options\n })\n\n return observe\n}\n","import { observeElement } from './observeElement.js'\n\nexport function waitElement<T extends Element = Element>(\n selector: string,\n target = document.documentElement\n): Promise<T> {\n return new Promise((resolve) => {\n function resolveElement() {\n const el = target.querySelector<T>(selector)\n if (el) {\n resolve(el)\n }\n }\n\n observeElement(target, (_, observer) => {\n resolveElement()\n observer.disconnect()\n })\n })\n}\n","class n {\n #t = {};\n on(t, e) {\n const s = this.#t[t];\n return s ? s.push(e) : this.#t[t] = [e], this;\n }\n addListener(t, e) {\n return this.on(t, e);\n }\n once(t, e) {\n const s = (...i) => {\n this.off(t, s), e(...i);\n };\n return this.on(t, s), this;\n }\n emit(t, ...e) {\n const s = this.#t[t] || [];\n for (let i = 0; i < s.length; i++)\n s[i](...e);\n return Boolean(s.length);\n }\n off(t, e) {\n return this.#t[t] && (this.#t[t] = this.#t[t].filter((s) => s !== e)), this;\n }\n removeListener(t, e) {\n return this.off(t, e);\n }\n removeAllListeners(t) {\n return t ? delete this.#t[t] : this.#t = {}, this;\n }\n eventNames() {\n return Reflect.ownKeys(this.#t);\n }\n listeners(t) {\n return this.#t[t];\n }\n listenerCount(t) {\n return this.#t[t]?.length ?? 0;\n }\n}\nexport {\n n as Emitter\n};\n//# sourceMappingURL=index.es.js.map\n","import { Emitter } from '@zero-dependency/emitter'\n\ntype LocationCallback = (location: Location, state: any) => void\n\ntype Events = {\n pushState: LocationCallback\n replaceState: LocationCallback\n popState: LocationCallback\n}\n\nexport class LocationObserver extends Emitter<Events> {\n constructor() {\n super()\n\n const { history, location } = window\n const { pushState, replaceState } = history\n\n history.pushState = (...args) => {\n pushState.apply(history, args)\n this.emit('pushState', location, args[0])\n }\n\n history.replaceState = (...args) => {\n replaceState.apply(history, args)\n this.emit('replaceState', location, args[0])\n }\n\n window.addEventListener('popstate', ({ state }) => {\n this.emit('popState', location, state)\n })\n }\n}\n"],"names":["el","Emitter"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.umd.js","sources":["../src/html.ts","../../emitter/dist/index.es.js","../src/location-observer.ts","../src/mutation-observers.ts"],"sourcesContent":["// prettier-ignore\ntype Attributes<T extends keyof HTMLElementTagNameMap> = Partial<{\n style: Partial<CSSStyleDeclaration>\n} & Omit<HTMLElementTagNameMap[T], 'style'>>\n\ntype Children = (string | Node | HTMLElement)[]\n\nexport function el<T extends keyof HTMLElementTagNameMap>(\n tag: T,\n attributes?: Children | Attributes<T>,\n ...children: Children\n): HTMLElementTagNameMap[T] {\n const el = document.createElement(tag)\n\n if (typeof attributes === 'string') {\n el.append(text(attributes))\n } else if (Array.isArray(attributes)) {\n el.append(...attributes)\n } else {\n Object.assign(el, attributes)\n Object.assign(el.style, attributes?.style)\n }\n\n if (children.length) {\n el.append(...children)\n }\n\n return el\n}\n\nexport function text(str: string): Text {\n return document.createTextNode(str)\n}\n\nexport function nbsp(): Text {\n return text('\\u00a0')\n}\n\nexport async function domReady(): Promise<void> {\n return new Promise((resolve) => {\n if (document.readyState == 'loading') {\n document.addEventListener('DOMContentLoaded', () => resolve(), {\n once: true\n })\n } else {\n resolve()\n }\n })\n}\n\nexport function isDisabled(element: HTMLElement): boolean {\n return (\n Boolean(element.getAttribute('disabled')) === true ||\n Boolean(element.getAttribute('aria-disabled')) === true\n )\n}\n\nexport function addEventListener(\n target: EventTarget,\n eventName: string,\n handler: EventListener,\n options?: AddEventListenerOptions\n) {\n target.addEventListener(eventName, handler, options)\n return () => {\n target.removeEventListener(eventName, handler, options)\n }\n}\n","class Emitter {\n #events = {};\n on(event, listener) {\n const listeners = this.#events[event];\n if (listeners) {\n listeners.push(listener);\n } else {\n this.#events[event] = [listener];\n }\n return this;\n }\n addListener(event, listener) {\n return this.on(event, listener);\n }\n once(event, listener) {\n const onceListener = (...args) => {\n this.off(event, onceListener);\n listener(...args);\n };\n this.on(event, onceListener);\n return this;\n }\n emit(event, ...args) {\n const listeners = this.#events[event] || [];\n for (let i = 0; i < listeners.length; i++) {\n listeners[i](...args);\n }\n return Boolean(listeners.length);\n }\n off(event, listener) {\n if (this.#events[event]) {\n this.#events[event] = this.#events[event].filter((v) => v !== listener);\n }\n return this;\n }\n removeListener(event, listener) {\n return this.off(event, listener);\n }\n removeAllListeners(event) {\n if (event) {\n delete this.#events[event];\n } else {\n this.#events = {};\n }\n return this;\n }\n eventNames() {\n return Reflect.ownKeys(this.#events);\n }\n listeners(event) {\n return this.#events[event];\n }\n listenerCount(event) {\n return this.#events[event]?.length ?? 0;\n }\n}\n\nexport { Emitter };\n//# sourceMappingURL=index.es.js.map\n","import { Emitter } from '@zero-dependency/emitter'\n\ntype LocationCallback<T = any> = (location: Location, args: T) => void\n\ntype Events<T> = {\n pushState: LocationCallback<T>\n replaceState: LocationCallback<T>\n popState: LocationCallback<\n Omit<PopStateEvent, 'state'> & { readonly state: T }\n >\n}\n\nexport class LocationObserver<T> extends Emitter<Events<T>> {\n constructor() {\n super()\n\n const { history, location } = window\n const { pushState, replaceState } = history\n\n history.pushState = (...args) => {\n pushState.apply(history, args)\n this.emit('pushState', location, args[0])\n }\n\n history.replaceState = (...args) => {\n replaceState.apply(history, args)\n this.emit('replaceState', location, args[0])\n }\n\n window.addEventListener('popstate', (event) => {\n this.emit('popState', location, event)\n })\n }\n}\n","type Disconnect = () => void\n\nexport function observeElement<T extends Element = Element>(\n el: T,\n callback: (mutation: MutationRecord, observer: MutationObserver) => void,\n options?: MutationObserverInit\n): Disconnect {\n const observe = new MutationObserver((mutations, observer) => {\n for (const mutation of mutations) {\n callback(mutation, observer)\n }\n })\n\n observe.observe(el, {\n childList: true,\n subtree: true,\n ...options\n })\n\n return () => observe.disconnect()\n}\n\nexport function waitElement<T extends Element = Element>(\n selector: string,\n target = document.documentElement\n): Promise<T> {\n return new Promise((resolve) => {\n function resolveElement() {\n const el = target.querySelector<T>(selector)\n if (el) {\n resolve(el)\n }\n }\n\n observeElement(target, (_, observer) => {\n resolveElement()\n observer.disconnect()\n })\n })\n}\n"],"names":["el"],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Emitter } from '@zero-dependency/emitter';
|
|
2
|
+
type LocationCallback<T = any> = (location: Location, args: T) => void;
|
|
3
|
+
type Events<T> = {
|
|
4
|
+
pushState: LocationCallback<T>;
|
|
5
|
+
replaceState: LocationCallback<T>;
|
|
6
|
+
popState: LocationCallback<Omit<PopStateEvent, 'state'> & {
|
|
7
|
+
readonly state: T;
|
|
8
|
+
}>;
|
|
9
|
+
};
|
|
10
|
+
export declare class LocationObserver<T> extends Emitter<Events<T>> {
|
|
11
|
+
constructor();
|
|
12
|
+
}
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
type Disconnect = () => void;
|
|
2
|
+
export declare function observeElement<T extends Element = Element>(el: T, callback: (mutation: MutationRecord, observer: MutationObserver) => void, options?: MutationObserverInit): Disconnect;
|
|
3
|
+
export declare function waitElement<T extends Element = Element>(selector: string, target?: HTMLElement): Promise<T>;
|
|
4
|
+
export {};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zero-dependency/dom",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "1.0.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"types": "./dist/index.d.ts",
|
|
6
6
|
"main": "./dist/index.umd.js",
|
|
@@ -22,19 +22,19 @@
|
|
|
22
22
|
"url": "https://crashmax.ru"
|
|
23
23
|
},
|
|
24
24
|
"devDependencies": {
|
|
25
|
-
"@crashmax/prettier-config": "^2.1
|
|
26
|
-
"@crashmax/tsconfig": "^
|
|
27
|
-
"@types/node": "^18.11
|
|
28
|
-
"@vitest/coverage-c8": "^0.
|
|
29
|
-
"@vitest/ui": "^0.
|
|
30
|
-
"jsdom": "^
|
|
31
|
-
"typescript": "^
|
|
32
|
-
"vite": "^
|
|
33
|
-
"vite-plugin-dts": "^1.
|
|
34
|
-
"vitest": "^0.
|
|
25
|
+
"@crashmax/prettier-config": "^3.2.1",
|
|
26
|
+
"@crashmax/tsconfig": "^2.0.1",
|
|
27
|
+
"@types/node": "^18.15.11",
|
|
28
|
+
"@vitest/coverage-c8": "^0.29.8",
|
|
29
|
+
"@vitest/ui": "^0.29.8",
|
|
30
|
+
"jsdom": "^21.1.1",
|
|
31
|
+
"typescript": "^5.0.2",
|
|
32
|
+
"vite": "^4.2.1",
|
|
33
|
+
"vite-plugin-dts": "^2.1.0",
|
|
34
|
+
"vitest": "^0.29.8"
|
|
35
35
|
},
|
|
36
36
|
"dependencies": {
|
|
37
|
-
"@zero-dependency/emitter": "1.1.
|
|
37
|
+
"@zero-dependency/emitter": "1.1.3"
|
|
38
38
|
},
|
|
39
39
|
"scripts": {
|
|
40
40
|
"dev": "vite build --watch",
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { Emitter } from '@zero-dependency/emitter';
|
|
2
|
-
declare type LocationCallback = (location: Location, state: any) => void;
|
|
3
|
-
declare type Events = {
|
|
4
|
-
pushState: LocationCallback;
|
|
5
|
-
replaceState: LocationCallback;
|
|
6
|
-
popState: LocationCallback;
|
|
7
|
-
};
|
|
8
|
-
export declare class LocationObserver extends Emitter<Events> {
|
|
9
|
-
constructor();
|
|
10
|
-
}
|
|
11
|
-
export {};
|
package/dist/observeElement.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function observeElement<T extends Element = Element>(el: T, callback: (mutation: MutationRecord, observer: MutationObserver) => void, options?: MutationObserverInit): MutationObserver;
|
package/dist/waitElement.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function waitElement<T extends Element = Element>(selector: string, target?: HTMLElement): Promise<T>;
|