@zero-dependency/dom 0.2.0 → 0.3.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/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2022 Vitalij Ryndin
3
+ Copyright (c) 2022 Zero Dependency
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
package/README.md CHANGED
@@ -1 +1,20 @@
1
- # `@zero-dependency/dom`
1
+ # @zero-dependency/dom
2
+
3
+ [![](https://img.shields.io/npm/v/@zero-dependency/dom)](https://npm.im/@zero-dependency/dom)
4
+ ![](https://img.shields.io/npm/l/@zero-dependency/dom)
5
+
6
+ ## Installation
7
+
8
+ ```sh
9
+ npm install @zero-dependency/dom
10
+ ```
11
+
12
+ ```sh
13
+ yarn add @zero-dependency/dom
14
+ ```
15
+
16
+ ```sh
17
+ pnpm add @zero-dependency/dom
18
+ ```
19
+
20
+ ## Usage
package/dist/index.es.js CHANGED
@@ -1,10 +1,9 @@
1
- function s(e, o, n = document.body) {
1
+ function i(e, o, n = document.body) {
2
2
  const t = new MutationObserver((r) => {
3
- for (const u of r)
4
- for (const d of u.addedNodes) {
5
- const c = d;
6
- c.matches && c.matches(e) && o(c);
7
- }
3
+ for (const u of r) {
4
+ const c = u.target.querySelector(e);
5
+ c && o(c);
6
+ }
8
7
  });
9
8
  return t.observe(n, {
10
9
  attributes: !0,
@@ -12,9 +11,9 @@ function s(e, o, n = document.body) {
12
11
  subtree: !0
13
12
  }), t;
14
13
  }
15
- function a(e, o = !0, n = document.body) {
14
+ function d(e, o = !0, n = document.body) {
16
15
  return new Promise((t) => {
17
- const r = s(
16
+ const r = i(
18
17
  e,
19
18
  (u) => {
20
19
  o && r.disconnect(), t(u);
@@ -23,7 +22,7 @@ function a(e, o = !0, n = document.body) {
23
22
  );
24
23
  });
25
24
  }
26
- async function m() {
25
+ async function a() {
27
26
  if (document.readyState == "loading")
28
27
  return new Promise((e) => {
29
28
  document.addEventListener("DOMContentLoaded", () => e(), {
@@ -31,7 +30,7 @@ async function m() {
31
30
  });
32
31
  });
33
32
  }
34
- function f(e, o = 500) {
33
+ function m(e, o = 500) {
35
34
  let n;
36
35
  return (...t) => {
37
36
  n && clearTimeout(n), n = setTimeout(() => {
@@ -43,18 +42,19 @@ function b(e, o, ...n) {
43
42
  const t = document.createElement(e);
44
43
  return Object.assign(t, o), t.append(...n), t;
45
44
  }
46
- function i(e) {
45
+ function s(e) {
47
46
  return document.createTextNode(e);
48
47
  }
49
- function l() {
50
- return i("\xA0");
48
+ function f() {
49
+ return s("\xA0");
51
50
  }
52
51
  export {
53
- f as debounce,
54
- m as domReady,
52
+ m as debounce,
53
+ a as domReady,
55
54
  b as el,
56
- l as nbsp,
57
- s as observeElement,
58
- i as text,
59
- a as waitObserveElement
55
+ f as nbsp,
56
+ i as observeElement,
57
+ s as text,
58
+ d as waitObserveElement
60
59
  };
60
+ //# sourceMappingURL=index.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.es.js","sources":["../src/observeElement.ts","../src/waitObserveElement.ts","../src/domReady.ts","../src/debounce.ts","../src/html.ts"],"sourcesContent":["export function observeElement<T extends Element = Element>(\n selector: string,\n callback: (el: T) => void,\n target = document.body\n): MutationObserver {\n const observer = new MutationObserver((mutations) => {\n for (const mutation of mutations) {\n const el = (mutation.target as Element).querySelector(selector)\n if (el) {\n callback(el as T)\n }\n }\n })\n\n observer.observe(target, {\n attributes: true,\n childList: true,\n subtree: true\n })\n\n return observer\n}\n","import { observeElement } from './observeElement.js'\n\nexport function waitObserveElement<T extends Element = Element>(\n selector: string,\n disconnect = true,\n target = document.body\n): Promise<T> {\n return new Promise((resolve) => {\n const observer = observeElement<T>(\n selector,\n (el) => {\n if (disconnect) {\n observer.disconnect()\n }\n\n resolve(el)\n },\n target\n )\n })\n}\n","export async function domReady(): Promise<void> {\n if (document.readyState == 'loading') {\n return new Promise((resolve) => {\n document.addEventListener('DOMContentLoaded', () => resolve(), {\n once: true\n })\n })\n }\n}\n","export function debounce<T extends (...args: any[]) => void>(\n fn: T,\n delay = 500\n): (this: ThisParameterType<T>, ...args: Parameters<T>) => void {\n let timeoutId: ReturnType<typeof setTimeout>\n\n return (...args) => {\n if (timeoutId) {\n clearTimeout(timeoutId)\n }\n\n timeoutId = setTimeout(() => {\n fn(...args)\n }, delay)\n }\n}\n","// 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?: Attributes<T>,\n ...children: Children\n): HTMLElementTagNameMap[T] {\n const el = document.createElement(tag)\n Object.assign(el, attributes)\n el.append(...children)\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"],"names":["observeElement","selector","callback","target","observer","mutations","mutation","el","waitObserveElement","disconnect","resolve","domReady","debounce","fn","delay","timeoutId","args","tag","attributes","children","text","str","nbsp"],"mappings":"AAAO,SAASA,EACdC,GACAC,GACAC,IAAS,SAAS,MACA;AAClB,QAAMC,IAAW,IAAI,iBAAiB,CAACC,MAAc;AACnD,eAAWC,KAAYD,GAAW;AAChC,YAAME,IAAMD,EAAS,OAAmB,cAAcL,CAAQ;AAC9D,MAAIM,KACFL,EAASK,CAAO;AAAA,IAEpB;AAAA,EAAA,CACD;AAED,SAAAH,EAAS,QAAQD,GAAQ;AAAA,IACvB,YAAY;AAAA,IACZ,WAAW;AAAA,IACX,SAAS;AAAA,EAAA,CACV,GAEMC;AACT;ACnBO,SAASI,EACdP,GACAQ,IAAa,IACbN,IAAS,SAAS,MACN;AACL,SAAA,IAAI,QAAQ,CAACO,MAAY;AAC9B,UAAMN,IAAWJ;AAAA,MACfC;AAAA,MACA,CAACM,MAAO;AACN,QAAIE,KACFL,EAAS,WAAW,GAGtBM,EAAQH,CAAE;AAAA,MACZ;AAAA,MACAJ;AAAA,IAAA;AAAA,EACF,CACD;AACH;ACpBA,eAAsBQ,IAA0B;AAC1C,MAAA,SAAS,cAAc;AAClB,WAAA,IAAI,QAAQ,CAACD,MAAY;AAC9B,eAAS,iBAAiB,oBAAoB,MAAMA,EAAA,GAAW;AAAA,QAC7D,MAAM;AAAA,MAAA,CACP;AAAA,IAAA,CACF;AAEL;ACRgB,SAAAE,EACdC,GACAC,IAAQ,KACsD;AAC1D,MAAAC;AAEJ,SAAO,IAAIC,MAAS;AAClB,IAAID,KACF,aAAaA,CAAS,GAGxBA,IAAY,WAAW,MAAM;AAC3B,MAAAF,EAAG,GAAGG,CAAI;AAAA,OACTF,CAAK;AAAA,EAAA;AAEZ;ACRgB,SAAAP,EACdU,GACAC,MACGC,GACuB;AACpBZ,QAAAA,IAAK,SAAS,cAAcU,CAAG;AAC9B,gBAAA,OAAOV,GAAIW,CAAU,GAC5BX,EAAG,OAAO,GAAGY,CAAQ,GACdZ;AACT;AAEO,SAASa,EAAKC,GAAmB;AAC/B,SAAA,SAAS,eAAeA,CAAG;AACpC;AAEO,SAASC,IAAa;AAC3B,SAAOF,EAAK,MAAQ;AACtB;"}
package/dist/index.umd.js CHANGED
@@ -1 +1,2 @@
1
- (function(e,d){typeof exports=="object"&&typeof module<"u"?d(exports):typeof define=="function"&&define.amd?define(["exports"],d):(e=typeof globalThis<"u"?globalThis:e||self,d(e["@zero-dependency/dom"]={}))})(this,function(e){"use strict";function d(t,u,o=document.body){const n=new MutationObserver(i=>{for(const r of i)for(const v of r.addedNodes){const c=v;c.matches&&c.matches(t)&&u(c)}});return n.observe(o,{attributes:!0,childList:!0,subtree:!0}),n}function f(t,u=!0,o=document.body){return new Promise(n=>{const i=d(t,r=>{u&&i.disconnect(),n(r)},o)})}async function m(){if(document.readyState=="loading")return new Promise(t=>{document.addEventListener("DOMContentLoaded",()=>t(),{once:!0})})}function a(t,u=500){let o;return(...n)=>{o&&clearTimeout(o),o=setTimeout(()=>{t(...n)},u)}}function b(t,u,...o){const n=document.createElement(t);return Object.assign(n,u),n.append(...o),n}function s(t){return document.createTextNode(t)}function l(){return s("\xA0")}e.debounce=a,e.domReady=m,e.el=b,e.nbsp=l,e.observeElement=d,e.text=s,e.waitObserveElement=f,Object.defineProperties(e,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
1
+ (function(e,r){typeof exports=="object"&&typeof module<"u"?r(exports):typeof define=="function"&&define.amd?define(["exports"],r):(e=typeof globalThis<"u"?globalThis:e||self,r(e["@zero-dependency/dom"]={}))})(this,function(e){"use strict";function r(t,u,o=document.body){const n=new MutationObserver(i=>{for(const d of i){const s=d.target.querySelector(t);s&&u(s)}});return n.observe(o,{attributes:!0,childList:!0,subtree:!0}),n}function f(t,u=!0,o=document.body){return new Promise(n=>{const i=r(t,d=>{u&&i.disconnect(),n(d)},o)})}async function m(){if(document.readyState=="loading")return new Promise(t=>{document.addEventListener("DOMContentLoaded",()=>t(),{once:!0})})}function a(t,u=500){let o;return(...n)=>{o&&clearTimeout(o),o=setTimeout(()=>{t(...n)},u)}}function l(t,u,...o){const n=document.createElement(t);return Object.assign(n,u),n.append(...o),n}function c(t){return document.createTextNode(t)}function b(){return c("\xA0")}e.debounce=a,e.domReady=m,e.el=l,e.nbsp=b,e.observeElement=r,e.text=c,e.waitObserveElement=f,Object.defineProperties(e,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
2
+ //# sourceMappingURL=index.umd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.umd.js","sources":["../src/observeElement.ts","../src/waitObserveElement.ts","../src/domReady.ts","../src/debounce.ts","../src/html.ts"],"sourcesContent":["export function observeElement<T extends Element = Element>(\n selector: string,\n callback: (el: T) => void,\n target = document.body\n): MutationObserver {\n const observer = new MutationObserver((mutations) => {\n for (const mutation of mutations) {\n const el = (mutation.target as Element).querySelector(selector)\n if (el) {\n callback(el as T)\n }\n }\n })\n\n observer.observe(target, {\n attributes: true,\n childList: true,\n subtree: true\n })\n\n return observer\n}\n","import { observeElement } from './observeElement.js'\n\nexport function waitObserveElement<T extends Element = Element>(\n selector: string,\n disconnect = true,\n target = document.body\n): Promise<T> {\n return new Promise((resolve) => {\n const observer = observeElement<T>(\n selector,\n (el) => {\n if (disconnect) {\n observer.disconnect()\n }\n\n resolve(el)\n },\n target\n )\n })\n}\n","export async function domReady(): Promise<void> {\n if (document.readyState == 'loading') {\n return new Promise((resolve) => {\n document.addEventListener('DOMContentLoaded', () => resolve(), {\n once: true\n })\n })\n }\n}\n","export function debounce<T extends (...args: any[]) => void>(\n fn: T,\n delay = 500\n): (this: ThisParameterType<T>, ...args: Parameters<T>) => void {\n let timeoutId: ReturnType<typeof setTimeout>\n\n return (...args) => {\n if (timeoutId) {\n clearTimeout(timeoutId)\n }\n\n timeoutId = setTimeout(() => {\n fn(...args)\n }, delay)\n }\n}\n","// 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?: Attributes<T>,\n ...children: Children\n): HTMLElementTagNameMap[T] {\n const el = document.createElement(tag)\n Object.assign(el, attributes)\n el.append(...children)\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"],"names":["observeElement","selector","callback","target","observer","mutations","mutation","el","waitObserveElement","disconnect","resolve","domReady","debounce","fn","delay","timeoutId","args","tag","attributes","children","text","str","nbsp"],"mappings":"+OAAO,SAASA,EACdC,EACAC,EACAC,EAAS,SAAS,KACA,CAClB,MAAMC,EAAW,IAAI,iBAAkBC,GAAc,CACnD,UAAWC,KAAYD,EAAW,CAChC,MAAME,EAAMD,EAAS,OAAmB,cAAcL,CAAQ,EAC1DM,GACFL,EAASK,CAAO,CAEpB,CAAA,CACD,EAED,OAAAH,EAAS,QAAQD,EAAQ,CACvB,WAAY,GACZ,UAAW,GACX,QAAS,EAAA,CACV,EAEMC,CACT,CCnBO,SAASI,EACdP,EACAQ,EAAa,GACbN,EAAS,SAAS,KACN,CACL,OAAA,IAAI,QAASO,GAAY,CAC9B,MAAMN,EAAWJ,EACfC,EACCM,GAAO,CACFE,GACFL,EAAS,WAAW,EAGtBM,EAAQH,CAAE,CACZ,EACAJ,CAAA,CACF,CACD,CACH,CCpBA,eAAsBQ,GAA0B,CAC1C,GAAA,SAAS,YAAc,UAClB,OAAA,IAAI,QAASD,GAAY,CAC9B,SAAS,iBAAiB,mBAAoB,IAAMA,EAAA,EAAW,CAC7D,KAAM,EAAA,CACP,CAAA,CACF,CAEL,CCRgB,SAAAE,EACdC,EACAC,EAAQ,IACsD,CAC1D,IAAAC,EAEJ,MAAO,IAAIC,IAAS,CACdD,GACF,aAAaA,CAAS,EAGxBA,EAAY,WAAW,IAAM,CAC3BF,EAAG,GAAGG,CAAI,GACTF,CAAK,CAAA,CAEZ,CCRgB,SAAAP,EACdU,EACAC,KACGC,EACuB,CACpBZ,MAAAA,EAAK,SAAS,cAAcU,CAAG,EAC9B,cAAA,OAAOV,EAAIW,CAAU,EAC5BX,EAAG,OAAO,GAAGY,CAAQ,EACdZ,CACT,CAEO,SAASa,EAAKC,EAAmB,CAC/B,OAAA,SAAS,eAAeA,CAAG,CACpC,CAEO,SAASC,GAAa,CAC3B,OAAOF,EAAK,MAAQ,CACtB"}
@@ -1 +1 @@
1
- export declare function observeElement(selector: string, callback: (el: Element) => void, target?: HTMLElement): MutationObserver;
1
+ export declare function observeElement<T extends Element = Element>(selector: string, callback: (el: T) => void, target?: HTMLElement): MutationObserver;
@@ -1 +1 @@
1
- export declare function waitObserveElement(selector: string, disconnect?: boolean, target?: HTMLElement): Promise<Element>;
1
+ export declare function waitObserveElement<T extends Element = Element>(selector: string, disconnect?: boolean, target?: HTMLElement): Promise<T>;
package/package.json CHANGED
@@ -1,15 +1,36 @@
1
1
  {
2
2
  "name": "@zero-dependency/dom",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "type": "module",
5
5
  "types": "./dist/index.d.ts",
6
6
  "main": "./dist/index.umd.js",
7
7
  "module": "./dist/index.es.js",
8
+ "exports": {
9
+ ".": {
10
+ "import": "./dist/index.es.js",
11
+ "require": "./dist/index.umd.js"
12
+ }
13
+ },
8
14
  "files": [
9
15
  "dist"
10
16
  ],
17
+ "devDependencies": {
18
+ "@crashmax/prettier-config": "^2.0.4",
19
+ "@crashmax/tsconfig": "^1.0.2",
20
+ "@types/node": "^18.8.3",
21
+ "@vitest/coverage-c8": "^0.24.0",
22
+ "@vitest/ui": "^0.23.4",
23
+ "jsdom": "^20.0.1",
24
+ "typescript": "^4.8.4",
25
+ "vite": "^3.1.6",
26
+ "vite-plugin-dts": "^1.6.5",
27
+ "vitest": "^0.23.4"
28
+ },
11
29
  "scripts": {
12
30
  "dev": "vite build --watch",
13
- "build": "vite build"
31
+ "build": "vite build",
32
+ "test": "vitest",
33
+ "test:watch": "vitest --ui --watch --coverage",
34
+ "format": "prettier --write --ignore-unknown **"
14
35
  }
15
36
  }