@wiggindev/utils 0.2.7 → 0.2.12
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/__tests__/events.test.ts +30 -0
- package/package.json +34 -32
- package/src/events/eventTypes.ts +1 -1
- package/dist/events/document.d.ts +0 -5
- package/dist/events/element.d.ts +0 -5
- package/dist/events/eventTypes.d.ts +0 -6
- package/dist/events/index.d.ts +0 -9
- package/dist/events/window.d.ts +0 -5
- package/dist/index.cjs +0 -2
- package/dist/index.cjs.map +0 -1
- package/dist/index.d.ts +0 -5
- package/dist/index.modern.js +0 -2
- package/dist/index.modern.js.map +0 -1
- package/dist/index.module.js +0 -2
- package/dist/index.module.js.map +0 -1
- package/dist/index.umd.js +0 -2
- package/dist/index.umd.js.map +0 -1
- package/dist/noop.d.ts +0 -1
- package/dist/throttle.d.ts +0 -4
- package/dist/types/Callback.d.ts +0 -1
- package/dist/types/LiteralUnion.d.ts +0 -4
- package/dist/types/index.d.ts +0 -2
@@ -0,0 +1,30 @@
|
|
1
|
+
import { EventName, events, EventListener, noop } from '../src';
|
2
|
+
|
3
|
+
type DocumentEventName = EventName<DocumentEventMap>;
|
4
|
+
type DocumentEventListener = EventListener<DocumentEventMap, DocumentEventName>;
|
5
|
+
|
6
|
+
describe('document events', () => {
|
7
|
+
let eventMap: Partial<Record<DocumentEventName, DocumentEventListener>> =
|
8
|
+
{};
|
9
|
+
|
10
|
+
beforeEach(() => {
|
11
|
+
eventMap = {};
|
12
|
+
|
13
|
+
document.addEventListener = jest.fn(
|
14
|
+
(event: DocumentEventName, callback: DocumentEventListener) =>
|
15
|
+
(eventMap[event] = callback)
|
16
|
+
);
|
17
|
+
document.removeEventListener = jest.fn(
|
18
|
+
(event: DocumentEventName, callback: DocumentEventListener) =>
|
19
|
+
delete eventMap[event]
|
20
|
+
);
|
21
|
+
});
|
22
|
+
|
23
|
+
it('should add an event listener to the document', () => {
|
24
|
+
jest.spyOn(document, 'addEventListener');
|
25
|
+
events.document.on('testEvent', noop);
|
26
|
+
expect(eventMap['testEvent']).toBeDefined();
|
27
|
+
// eslint-disable-next-line @typescript-eslint/unbound-method
|
28
|
+
expect(document.addEventListener).toHaveBeenCalled();
|
29
|
+
});
|
30
|
+
});
|
package/package.json
CHANGED
@@ -1,33 +1,35 @@
|
|
1
1
|
{
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
"
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
"
|
23
|
-
"
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
2
|
+
"name": "@wiggindev/utils",
|
3
|
+
"description": "Various utilities that I use in my projects",
|
4
|
+
"version": "0.2.12",
|
5
|
+
"author": {
|
6
|
+
"name": "Andrew Wiggin",
|
7
|
+
"email": "andrew@wiggin.dev",
|
8
|
+
"url": "https://wiggin.dev"
|
9
|
+
},
|
10
|
+
"repository": {
|
11
|
+
"type": "git",
|
12
|
+
"url": "https://github.com/wiggindev/-wiggindev.git",
|
13
|
+
"directory": "packages/utils"
|
14
|
+
},
|
15
|
+
"type": "module",
|
16
|
+
"source": "src/index.ts",
|
17
|
+
"exports": {
|
18
|
+
"require": "./dist/index.cjs",
|
19
|
+
"default": "./dist/index.modern.js"
|
20
|
+
},
|
21
|
+
"main": "dist/index.cjs",
|
22
|
+
"module": "dist/index.module.js",
|
23
|
+
"unpkg": "dist/index.umd.js",
|
24
|
+
"types": "dist/index.d.ts",
|
25
|
+
"scripts": {
|
26
|
+
"build": "rm -rf dist && microbundle",
|
27
|
+
"dev": "rm -rf dist && microbundle watch"
|
28
|
+
},
|
29
|
+
"devDependencies": {
|
30
|
+
"microbundle": "^0.15.0"
|
31
|
+
},
|
32
|
+
"publishConfig": {
|
33
|
+
"access": "public"
|
34
|
+
}
|
35
|
+
}
|
package/src/events/eventTypes.ts
CHANGED
@@ -1,5 +0,0 @@
|
|
1
|
-
import { EventListener, EventName } from './eventTypes';
|
2
|
-
export declare const on: <E extends EventName<DocumentEventMap>>(event: E, listener: EventListener<DocumentEventMap, E>) => void;
|
3
|
-
export declare const off: <E extends EventName<DocumentEventMap>>(event: E, listener: EventListener<DocumentEventMap, E>) => void;
|
4
|
-
export declare const once: <E extends EventName<DocumentEventMap>>(event: E, listener: EventListener<DocumentEventMap, E>) => void;
|
5
|
-
export declare const trigger: (event: string) => void;
|
package/dist/events/element.d.ts
DELETED
@@ -1,5 +0,0 @@
|
|
1
|
-
import { EventListener, EventName } from './eventTypes';
|
2
|
-
export declare const on: <E extends EventName<HTMLElementEventMap>>(element: HTMLElement, event: E, listener: EventListener<HTMLElementEventMap, E>) => void;
|
3
|
-
export declare const off: <E extends EventName<HTMLElementEventMap>>(element: HTMLElement, event: E, listener: EventListener<HTMLElementEventMap, E>) => void;
|
4
|
-
export declare const once: <E extends EventName<HTMLElementEventMap>>(element: HTMLElement, event: E, listener: EventListener<HTMLElementEventMap, E>) => void;
|
5
|
-
export declare const trigger: (element: HTMLElement, event: string) => void;
|
@@ -1,6 +0,0 @@
|
|
1
|
-
import { LiteralUnion } from '../types/LiteralUnion';
|
2
|
-
declare type EventMap = WindowEventMap | DocumentEventMap | HTMLElementEventMap;
|
3
|
-
export declare type EventName<M extends EventMap> = LiteralUnion<keyof M, string>;
|
4
|
-
export declare type EventListener<M extends EventMap, N extends EventName<M>> = (event: N extends keyof M ? M[N] : Event) => void;
|
5
|
-
export declare type DomEventListener = (event: Event) => void;
|
6
|
-
export {};
|
package/dist/events/index.d.ts
DELETED
@@ -1,9 +0,0 @@
|
|
1
|
-
import * as documentEvents from './document';
|
2
|
-
import * as windowEvents from './window';
|
3
|
-
import * as elementEvents from './element';
|
4
|
-
export declare const events: {
|
5
|
-
document: typeof documentEvents;
|
6
|
-
window: typeof windowEvents;
|
7
|
-
element: typeof elementEvents;
|
8
|
-
};
|
9
|
-
export type { EventListener, EventName } from './eventTypes';
|
package/dist/events/window.d.ts
DELETED
@@ -1,5 +0,0 @@
|
|
1
|
-
import { EventListener, EventName } from './eventTypes';
|
2
|
-
export declare const on: <E extends EventName<WindowEventMap>>(event: E, listener: EventListener<WindowEventMap, E>) => void;
|
3
|
-
export declare const off: <E extends EventName<WindowEventMap>>(event: E, listener: EventListener<WindowEventMap, E>) => void;
|
4
|
-
export declare const once: <E extends EventName<WindowEventMap>>(event: E, listener: EventListener<WindowEventMap, E>) => void;
|
5
|
-
export declare const trigger: (event: string) => void;
|
package/dist/index.cjs
DELETED
@@ -1,2 +0,0 @@
|
|
1
|
-
var n=function(n,t){document.addEventListener(n,t)},t=function(n,t){document.removeEventListener(n,t)},e=function(n,t){window.addEventListener(n,t)},o=function(n,t){window.removeEventListener(n,t)},i=function(n,t,e){n.addEventListener(t,e)},r=function(n,t,e){n.removeEventListener(t,e)};exports.events={document:{__proto__:null,on:n,off:t,once:function(e,o){n(e,function n(i){o(i),t(e,n)})},trigger:function(n){var t=new CustomEvent(n);document.dispatchEvent(t)}},window:{__proto__:null,on:e,off:o,once:function(n,t){e(n,function e(i){t(i),o(n,e)})},trigger:function(n){var t=new CustomEvent(n);window.dispatchEvent(t)}},element:{__proto__:null,on:i,off:r,once:function(n,t,e){i(n,t,function o(i){e(i),r(n,t,o)})},trigger:function(n,t){var e=new CustomEvent(t);n.dispatchEvent(e)}}},exports.noop=function(){},exports.throttle=function(n,t){var e,o;return function(){return e||(e=!0,setTimeout(function(){return e=!1},t),o=n.apply(void 0,[].slice.call(arguments))),o}};
|
2
|
-
//# sourceMappingURL=index.cjs.map
|
package/dist/index.cjs.map
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../src/events/document.ts","../src/events/window.ts","../src/events/element.ts","../src/events/index.ts","../src/noop.ts","../src/throttle.ts"],"sourcesContent":["import { EventListener, EventName, DomEventListener } from './eventTypes';\n\nexport const on = <E extends EventName<DocumentEventMap>>(\n event: E,\n listener: EventListener<DocumentEventMap, E>\n) => {\n document.addEventListener(event, listener as DomEventListener);\n};\n\nexport const off = <E extends EventName<DocumentEventMap>>(\n event: E,\n listener: EventListener<DocumentEventMap, E>\n) => {\n document.removeEventListener(event, listener as DomEventListener);\n};\n\nexport const once = <E extends EventName<DocumentEventMap>>(\n event: E,\n listener: EventListener<DocumentEventMap, E>\n) => {\n const wrappedListener: EventListener<DocumentEventMap, E> = e => {\n listener(e);\n off(event, wrappedListener);\n };\n on(event, wrappedListener);\n};\n\nexport const trigger = (event: string) => {\n const customEvent = new CustomEvent(event);\n document.dispatchEvent(customEvent);\n};\n","import { EventListener, EventName, DomEventListener } from './eventTypes';\n\nexport const on = <E extends EventName<WindowEventMap>>(\n event: E,\n listener: EventListener<WindowEventMap, E>\n) => {\n window.addEventListener(event, listener as DomEventListener);\n};\n\nexport const off = <E extends EventName<WindowEventMap>>(\n event: E,\n listener: EventListener<WindowEventMap, E>\n) => {\n window.removeEventListener(event, listener as DomEventListener);\n};\n\nexport const once = <E extends EventName<WindowEventMap>>(\n event: E,\n listener: EventListener<WindowEventMap, E>\n) => {\n const wrappedListener: EventListener<WindowEventMap, E> = e => {\n listener(e);\n off(event, wrappedListener);\n };\n on(event, wrappedListener);\n};\n\nexport const trigger = (event: string) => {\n const customEvent = new CustomEvent(event);\n window.dispatchEvent(customEvent);\n};\n","import { EventListener, EventName, DomEventListener } from './eventTypes';\n\nexport const on = <E extends EventName<HTMLElementEventMap>>(\n element: HTMLElement,\n event: E,\n listener: EventListener<HTMLElementEventMap, E>\n) => {\n element.addEventListener(event, listener as DomEventListener);\n};\n\nexport const off = <E extends EventName<HTMLElementEventMap>>(\n element: HTMLElement,\n event: E,\n listener: EventListener<HTMLElementEventMap, E>\n) => {\n element.removeEventListener(event, listener as DomEventListener);\n};\n\nexport const once = <E extends EventName<HTMLElementEventMap>>(\n element: HTMLElement,\n event: E,\n listener: EventListener<HTMLElementEventMap, E>\n) => {\n const wrappedListener: EventListener<HTMLElementEventMap, E> = e => {\n listener(e);\n off(element, event, wrappedListener);\n };\n on(element, event, wrappedListener);\n};\n\nexport const trigger = (element: HTMLElement, event: string) => {\n const customEvent = new CustomEvent(event);\n element.dispatchEvent(customEvent);\n};\n","import * as documentEvents from './document';\nimport * as windowEvents from './window';\nimport * as elementEvents from './element';\n\nexport const events = {\n document: documentEvents,\n window: windowEvents,\n element: elementEvents,\n};\n\nexport type { EventListener, EventName } from './eventTypes';\n","export const noop = () => undefined;\n","import { Callback } from './types';\n\ntype ThrottledFunction<C extends Callback> = (\n ...args: Parameters<C>\n) => ReturnType<C>;\n\nexport const throttle = <C extends Callback>(\n callback: C,\n limit: number\n): ThrottledFunction<C> => {\n let waiting: boolean;\n let prev: ReturnType<C>;\n return (...args: Parameters<C>) => {\n if (!waiting) {\n waiting = true;\n setTimeout(() => (waiting = false), limit);\n prev = callback.apply(this, args) as ReturnType<C>;\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return prev;\n };\n};\n"],"names":["on","event","listener","document","addEventListener","off","removeEventListener","window","element","wrappedListener","e","customEvent","CustomEvent","dispatchEvent","callback","limit","waiting","prev","setTimeout","apply","slice","call","arguments"],"mappings":"AAEO,IAAMA,EAAK,SACdC,EACAC,GAEAC,SAASC,iBAAiBH,EAAOC,IAGxBG,EAAM,SACfJ,EACAC,GAEAC,SAASG,oBAAoBL,EAAOC,ICX3BF,EAAK,SACdC,EACAC,GAEAK,OAAOH,iBAAiBH,EAAOC,IAGtBG,EAAM,SACfJ,EACAC,GAEAK,OAAOD,oBAAoBL,EAAOC,ICXzBF,EAAK,SACdQ,EACAP,EACAC,GAEAM,EAAQJ,iBAAiBH,EAAOC,IAGvBG,EAAM,SACfG,EACAP,EACAC,GAEAM,EAAQF,oBAAoBL,EAAOC,mBCXjB,CAClBC,yCHWgB,SAChBF,EACAC,GAMAF,EAAGC,EAJyD,SAAtDQ,EAAsDC,GACxDR,EAASQ,GACTL,EAAIJ,EAAOQ,cAKI,SAACR,GACpB,IAAMU,EAAc,IAAIC,YAAYX,GACpCE,SAASU,cAAcF,KGvBvBJ,uCFUgB,SAChBN,EACAC,GAMAF,EAAGC,EAJuD,SAApDQ,EAAoDC,GACtDR,EAASQ,GACTL,EAAIJ,EAAOQ,cAKI,SAACR,GACpB,IAAMU,EAAc,IAAIC,YAAYX,GACpCM,OAAOM,cAAcF,KEtBrBH,wCDWgB,SAChBA,EACAP,EACAC,GAMAF,EAAGQ,EAASP,EAJmD,SAAzDQ,EAAyDC,GAC3DR,EAASQ,GACTL,EAAIG,EAASP,EAAOQ,cAKL,SAACD,EAAsBP,GAC1C,IAAMU,EAAc,IAAIC,YAAYX,GACpCO,EAAQK,cAAcF,mBEhCN,8BCMI,SACpBG,EACAC,GAEA,IAAIC,EACAC,EACJ,OAAO,WAOH,OANKD,IACDA,GAAU,EACVE,WAAW,WAAA,OAAOF,GAAU,GAAQD,GACpCE,EAAOH,EAASK,aACnB,GAAAC,MAAAC,KAAAC,aAEML"}
|
package/dist/index.d.ts
DELETED
package/dist/index.modern.js
DELETED
@@ -1,2 +0,0 @@
|
|
1
|
-
const e=(e,n)=>{document.addEventListener(e,n)},n=(e,n)=>{document.removeEventListener(e,n)},t=(e,n)=>{window.addEventListener(e,n)},o=(e,n)=>{window.removeEventListener(e,n)},r=(e,n,t)=>{e.addEventListener(n,t)},s=(e,n,t)=>{e.removeEventListener(n,t)},d={document:{__proto__:null,on:e,off:n,once:(t,o)=>{const r=e=>{o(e),n(t,r)};e(t,r)},trigger:e=>{const n=new CustomEvent(e);document.dispatchEvent(n)}},window:{__proto__:null,on:t,off:o,once:(e,n)=>{const r=t=>{n(t),o(e,r)};t(e,r)},trigger:e=>{const n=new CustomEvent(e);window.dispatchEvent(n)}},element:{__proto__:null,on:r,off:s,once:(e,n,t)=>{const o=r=>{t(r),s(e,n,o)};r(e,n,o)},trigger:(e,n)=>{const t=new CustomEvent(n);e.dispatchEvent(t)}}},i=(e,n)=>{let t,o;return(...r)=>(t||(t=!0,setTimeout(()=>t=!1,n),o=e.apply(void 0,r)),o)},c=()=>{};export{d as events,c as noop,i as throttle};
|
2
|
-
//# sourceMappingURL=index.modern.js.map
|
package/dist/index.modern.js.map
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"index.modern.js","sources":["../src/events/document.ts","../src/events/window.ts","../src/events/element.ts","../src/events/index.ts","../src/throttle.ts","../src/noop.ts"],"sourcesContent":["import { EventListener, EventName, DomEventListener } from './eventTypes';\n\nexport const on = <E extends EventName<DocumentEventMap>>(\n event: E,\n listener: EventListener<DocumentEventMap, E>\n) => {\n document.addEventListener(event, listener as DomEventListener);\n};\n\nexport const off = <E extends EventName<DocumentEventMap>>(\n event: E,\n listener: EventListener<DocumentEventMap, E>\n) => {\n document.removeEventListener(event, listener as DomEventListener);\n};\n\nexport const once = <E extends EventName<DocumentEventMap>>(\n event: E,\n listener: EventListener<DocumentEventMap, E>\n) => {\n const wrappedListener: EventListener<DocumentEventMap, E> = e => {\n listener(e);\n off(event, wrappedListener);\n };\n on(event, wrappedListener);\n};\n\nexport const trigger = (event: string) => {\n const customEvent = new CustomEvent(event);\n document.dispatchEvent(customEvent);\n};\n","import { EventListener, EventName, DomEventListener } from './eventTypes';\n\nexport const on = <E extends EventName<WindowEventMap>>(\n event: E,\n listener: EventListener<WindowEventMap, E>\n) => {\n window.addEventListener(event, listener as DomEventListener);\n};\n\nexport const off = <E extends EventName<WindowEventMap>>(\n event: E,\n listener: EventListener<WindowEventMap, E>\n) => {\n window.removeEventListener(event, listener as DomEventListener);\n};\n\nexport const once = <E extends EventName<WindowEventMap>>(\n event: E,\n listener: EventListener<WindowEventMap, E>\n) => {\n const wrappedListener: EventListener<WindowEventMap, E> = e => {\n listener(e);\n off(event, wrappedListener);\n };\n on(event, wrappedListener);\n};\n\nexport const trigger = (event: string) => {\n const customEvent = new CustomEvent(event);\n window.dispatchEvent(customEvent);\n};\n","import { EventListener, EventName, DomEventListener } from './eventTypes';\n\nexport const on = <E extends EventName<HTMLElementEventMap>>(\n element: HTMLElement,\n event: E,\n listener: EventListener<HTMLElementEventMap, E>\n) => {\n element.addEventListener(event, listener as DomEventListener);\n};\n\nexport const off = <E extends EventName<HTMLElementEventMap>>(\n element: HTMLElement,\n event: E,\n listener: EventListener<HTMLElementEventMap, E>\n) => {\n element.removeEventListener(event, listener as DomEventListener);\n};\n\nexport const once = <E extends EventName<HTMLElementEventMap>>(\n element: HTMLElement,\n event: E,\n listener: EventListener<HTMLElementEventMap, E>\n) => {\n const wrappedListener: EventListener<HTMLElementEventMap, E> = e => {\n listener(e);\n off(element, event, wrappedListener);\n };\n on(element, event, wrappedListener);\n};\n\nexport const trigger = (element: HTMLElement, event: string) => {\n const customEvent = new CustomEvent(event);\n element.dispatchEvent(customEvent);\n};\n","import * as documentEvents from './document';\nimport * as windowEvents from './window';\nimport * as elementEvents from './element';\n\nexport const events = {\n document: documentEvents,\n window: windowEvents,\n element: elementEvents,\n};\n\nexport type { EventListener, EventName } from './eventTypes';\n","import { Callback } from './types';\n\ntype ThrottledFunction<C extends Callback> = (\n ...args: Parameters<C>\n) => ReturnType<C>;\n\nexport const throttle = <C extends Callback>(\n callback: C,\n limit: number\n): ThrottledFunction<C> => {\n let waiting: boolean;\n let prev: ReturnType<C>;\n return (...args: Parameters<C>) => {\n if (!waiting) {\n waiting = true;\n setTimeout(() => (waiting = false), limit);\n prev = callback.apply(this, args) as ReturnType<C>;\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return prev;\n };\n};\n","export const noop = () => undefined;\n"],"names":["on","event","listener","document","addEventListener","off","removeEventListener","window","element","events","wrappedListener","e","customEvent","CustomEvent","dispatchEvent","throttle","callback","limit","waiting","prev","args","setTimeout","apply","this","noop"],"mappings":"AAEO,MAAMA,EAAK,CACdC,EACAC,KAEAC,SAASC,iBAAiBH,EAAOC,IAGxBG,EAAM,CACfJ,EACAC,KAEAC,SAASG,oBAAoBL,EAAOC,ICX3BF,EAAK,CACdC,EACAC,KAEAK,OAAOH,iBAAiBH,EAAOC,IAGtBG,EAAM,CACfJ,EACAC,KAEAK,OAAOD,oBAAoBL,EAAOC,ICXzBF,EAAK,CACdQ,EACAP,EACAC,KAEAM,EAAQJ,iBAAiBH,EAAOC,IAGvBG,EAAM,CACfG,EACAP,EACAC,KAEAM,EAAQF,oBAAoBL,EAAOC,ICX1BO,EAAS,CAClBN,yCHWgB,CAChBF,EACAC,KAEA,MAAMQ,EAAsDC,IACxDT,EAASS,GACTN,EAAIJ,EAAOS,IAEfV,EAAGC,EAAOS,YAGUT,IACpB,MAAMW,EAAc,IAAIC,YAAYZ,GACpCE,SAASW,cAAcF,KGvBvBL,uCFUgB,CAChBN,EACAC,KAEA,MAAMQ,EAAoDC,IACtDT,EAASS,GACTN,EAAIJ,EAAOS,IAEfV,EAAGC,EAAOS,YAGUT,IACpB,MAAMW,EAAc,IAAIC,YAAYZ,GACpCM,OAAOO,cAAcF,KEtBrBJ,wCDWgB,CAChBA,EACAP,EACAC,KAEA,MAAMQ,EAAyDC,IAC3DT,EAASS,GACTN,EAAIG,EAASP,EAAOS,IAExBV,EAAGQ,EAASP,EAAOS,YAGA,CAACF,EAAsBP,KAC1C,MAAMW,EAAc,IAAIC,YAAYZ,GACpCO,EAAQM,cAAcF,ME1BbG,EAAW,CACpBC,EACAC,KAEA,IAAIC,EACAC,EACJ,MAAO,IAAIC,KACFF,IACDA,GAAU,EACVG,WAAW,IAAOH,GAAU,EAAQD,GACpCE,EAAOH,EAASM,WAAMC,EAAMH,IAGzBD,ICnBFK,EAAO"}
|
package/dist/index.module.js
DELETED
@@ -1,2 +0,0 @@
|
|
1
|
-
var n=function(n,t){document.addEventListener(n,t)},t=function(n,t){document.removeEventListener(n,t)},e=function(n,t){window.addEventListener(n,t)},o=function(n,t){window.removeEventListener(n,t)},i=function(n,t,e){n.addEventListener(t,e)},u=function(n,t,e){n.removeEventListener(t,e)},c={document:{__proto__:null,on:n,off:t,once:function(e,o){n(e,function n(i){o(i),t(e,n)})},trigger:function(n){var t=new CustomEvent(n);document.dispatchEvent(t)}},window:{__proto__:null,on:e,off:o,once:function(n,t){e(n,function e(i){t(i),o(n,e)})},trigger:function(n){var t=new CustomEvent(n);window.dispatchEvent(t)}},element:{__proto__:null,on:i,off:u,once:function(n,t,e){i(n,t,function o(i){e(i),u(n,t,o)})},trigger:function(n,t){var e=new CustomEvent(t);n.dispatchEvent(e)}}},r=function(n,t){var e,o;return function(){return e||(e=!0,setTimeout(function(){return e=!1},t),o=n.apply(void 0,[].slice.call(arguments))),o}},f=function(){};export{c as events,f as noop,r as throttle};
|
2
|
-
//# sourceMappingURL=index.module.js.map
|
package/dist/index.module.js.map
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"index.module.js","sources":["../src/events/document.ts","../src/events/window.ts","../src/events/element.ts","../src/events/index.ts","../src/throttle.ts","../src/noop.ts"],"sourcesContent":["import { EventListener, EventName, DomEventListener } from './eventTypes';\n\nexport const on = <E extends EventName<DocumentEventMap>>(\n event: E,\n listener: EventListener<DocumentEventMap, E>\n) => {\n document.addEventListener(event, listener as DomEventListener);\n};\n\nexport const off = <E extends EventName<DocumentEventMap>>(\n event: E,\n listener: EventListener<DocumentEventMap, E>\n) => {\n document.removeEventListener(event, listener as DomEventListener);\n};\n\nexport const once = <E extends EventName<DocumentEventMap>>(\n event: E,\n listener: EventListener<DocumentEventMap, E>\n) => {\n const wrappedListener: EventListener<DocumentEventMap, E> = e => {\n listener(e);\n off(event, wrappedListener);\n };\n on(event, wrappedListener);\n};\n\nexport const trigger = (event: string) => {\n const customEvent = new CustomEvent(event);\n document.dispatchEvent(customEvent);\n};\n","import { EventListener, EventName, DomEventListener } from './eventTypes';\n\nexport const on = <E extends EventName<WindowEventMap>>(\n event: E,\n listener: EventListener<WindowEventMap, E>\n) => {\n window.addEventListener(event, listener as DomEventListener);\n};\n\nexport const off = <E extends EventName<WindowEventMap>>(\n event: E,\n listener: EventListener<WindowEventMap, E>\n) => {\n window.removeEventListener(event, listener as DomEventListener);\n};\n\nexport const once = <E extends EventName<WindowEventMap>>(\n event: E,\n listener: EventListener<WindowEventMap, E>\n) => {\n const wrappedListener: EventListener<WindowEventMap, E> = e => {\n listener(e);\n off(event, wrappedListener);\n };\n on(event, wrappedListener);\n};\n\nexport const trigger = (event: string) => {\n const customEvent = new CustomEvent(event);\n window.dispatchEvent(customEvent);\n};\n","import { EventListener, EventName, DomEventListener } from './eventTypes';\n\nexport const on = <E extends EventName<HTMLElementEventMap>>(\n element: HTMLElement,\n event: E,\n listener: EventListener<HTMLElementEventMap, E>\n) => {\n element.addEventListener(event, listener as DomEventListener);\n};\n\nexport const off = <E extends EventName<HTMLElementEventMap>>(\n element: HTMLElement,\n event: E,\n listener: EventListener<HTMLElementEventMap, E>\n) => {\n element.removeEventListener(event, listener as DomEventListener);\n};\n\nexport const once = <E extends EventName<HTMLElementEventMap>>(\n element: HTMLElement,\n event: E,\n listener: EventListener<HTMLElementEventMap, E>\n) => {\n const wrappedListener: EventListener<HTMLElementEventMap, E> = e => {\n listener(e);\n off(element, event, wrappedListener);\n };\n on(element, event, wrappedListener);\n};\n\nexport const trigger = (element: HTMLElement, event: string) => {\n const customEvent = new CustomEvent(event);\n element.dispatchEvent(customEvent);\n};\n","import * as documentEvents from './document';\nimport * as windowEvents from './window';\nimport * as elementEvents from './element';\n\nexport const events = {\n document: documentEvents,\n window: windowEvents,\n element: elementEvents,\n};\n\nexport type { EventListener, EventName } from './eventTypes';\n","import { Callback } from './types';\n\ntype ThrottledFunction<C extends Callback> = (\n ...args: Parameters<C>\n) => ReturnType<C>;\n\nexport const throttle = <C extends Callback>(\n callback: C,\n limit: number\n): ThrottledFunction<C> => {\n let waiting: boolean;\n let prev: ReturnType<C>;\n return (...args: Parameters<C>) => {\n if (!waiting) {\n waiting = true;\n setTimeout(() => (waiting = false), limit);\n prev = callback.apply(this, args) as ReturnType<C>;\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return prev;\n };\n};\n","export const noop = () => undefined;\n"],"names":["on","event","listener","document","addEventListener","off","removeEventListener","window","element","events","wrappedListener","e","customEvent","CustomEvent","dispatchEvent","throttle","callback","limit","waiting","prev","setTimeout","apply","slice","call","arguments","noop"],"mappings":"AAEO,IAAMA,EAAK,SACdC,EACAC,GAEAC,SAASC,iBAAiBH,EAAOC,IAGxBG,EAAM,SACfJ,EACAC,GAEAC,SAASG,oBAAoBL,EAAOC,ICX3BF,EAAK,SACdC,EACAC,GAEAK,OAAOH,iBAAiBH,EAAOC,IAGtBG,EAAM,SACfJ,EACAC,GAEAK,OAAOD,oBAAoBL,EAAOC,ICXzBF,EAAK,SACdQ,EACAP,EACAC,GAEAM,EAAQJ,iBAAiBH,EAAOC,IAGvBG,EAAM,SACfG,EACAP,EACAC,GAEAM,EAAQF,oBAAoBL,EAAOC,ICX1BO,EAAS,CAClBN,yCHWgB,SAChBF,EACAC,GAMAF,EAAGC,EAJyD,SAAtDS,EAAsDC,GACxDT,EAASS,GACTN,EAAIJ,EAAOS,cAKI,SAACT,GACpB,IAAMW,EAAc,IAAIC,YAAYZ,GACpCE,SAASW,cAAcF,KGvBvBL,uCFUgB,SAChBN,EACAC,GAMAF,EAAGC,EAJuD,SAApDS,EAAoDC,GACtDT,EAASS,GACTN,EAAIJ,EAAOS,cAKI,SAACT,GACpB,IAAMW,EAAc,IAAIC,YAAYZ,GACpCM,OAAOO,cAAcF,KEtBrBJ,wCDWgB,SAChBA,EACAP,EACAC,GAMAF,EAAGQ,EAASP,EAJmD,SAAzDS,EAAyDC,GAC3DT,EAASS,GACTN,EAAIG,EAASP,EAAOS,cAKL,SAACF,EAAsBP,GAC1C,IAAMW,EAAc,IAAIC,YAAYZ,GACpCO,EAAQM,cAAcF,ME1BbG,EAAW,SACpBC,EACAC,GAEA,IAAIC,EACAC,EACJ,OAAO,WAOH,OANKD,IACDA,GAAU,EACVE,WAAW,WAAA,OAAOF,GAAU,GAAQD,GACpCE,EAAOH,EAASK,aACnB,GAAAC,MAAAC,KAAAC,aAEML,ICnBFM,EAAO"}
|
package/dist/index.umd.js
DELETED
@@ -1,2 +0,0 @@
|
|
1
|
-
!function(n,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((n||self).utils={})}(this,function(n){var t=function(n,t){document.addEventListener(n,t)},e=function(n,t){document.removeEventListener(n,t)},o=function(n,t){window.addEventListener(n,t)},i=function(n,t){window.removeEventListener(n,t)},u=function(n,t,e){n.addEventListener(t,e)},f=function(n,t,e){n.removeEventListener(t,e)},c=void 0;n.events={document:{__proto__:null,on:t,off:e,once:function(n,o){t(n,function t(i){o(i),e(n,t)})},trigger:function(n){var t=new CustomEvent(n);document.dispatchEvent(t)}},window:{__proto__:null,on:o,off:i,once:function(n,t){o(n,function e(o){t(o),i(n,e)})},trigger:function(n){var t=new CustomEvent(n);window.dispatchEvent(t)}},element:{__proto__:null,on:u,off:f,once:function(n,t,e){u(n,t,function o(i){e(i),f(n,t,o)})},trigger:function(n,t){var e=new CustomEvent(t);n.dispatchEvent(e)}}},n.noop=function(){},n.throttle=function(n,t){var e,o;return function(){return e||(e=!0,setTimeout(function(){return e=!1},t),o=n.apply(c,[].slice.call(arguments))),o}}});
|
2
|
-
//# sourceMappingURL=index.umd.js.map
|
package/dist/index.umd.js.map
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"index.umd.js","sources":["../src/events/document.ts","../src/events/window.ts","../src/events/element.ts","../src/events/index.ts","../src/noop.ts","../src/throttle.ts"],"sourcesContent":["import { EventListener, EventName, DomEventListener } from './eventTypes';\n\nexport const on = <E extends EventName<DocumentEventMap>>(\n event: E,\n listener: EventListener<DocumentEventMap, E>\n) => {\n document.addEventListener(event, listener as DomEventListener);\n};\n\nexport const off = <E extends EventName<DocumentEventMap>>(\n event: E,\n listener: EventListener<DocumentEventMap, E>\n) => {\n document.removeEventListener(event, listener as DomEventListener);\n};\n\nexport const once = <E extends EventName<DocumentEventMap>>(\n event: E,\n listener: EventListener<DocumentEventMap, E>\n) => {\n const wrappedListener: EventListener<DocumentEventMap, E> = e => {\n listener(e);\n off(event, wrappedListener);\n };\n on(event, wrappedListener);\n};\n\nexport const trigger = (event: string) => {\n const customEvent = new CustomEvent(event);\n document.dispatchEvent(customEvent);\n};\n","import { EventListener, EventName, DomEventListener } from './eventTypes';\n\nexport const on = <E extends EventName<WindowEventMap>>(\n event: E,\n listener: EventListener<WindowEventMap, E>\n) => {\n window.addEventListener(event, listener as DomEventListener);\n};\n\nexport const off = <E extends EventName<WindowEventMap>>(\n event: E,\n listener: EventListener<WindowEventMap, E>\n) => {\n window.removeEventListener(event, listener as DomEventListener);\n};\n\nexport const once = <E extends EventName<WindowEventMap>>(\n event: E,\n listener: EventListener<WindowEventMap, E>\n) => {\n const wrappedListener: EventListener<WindowEventMap, E> = e => {\n listener(e);\n off(event, wrappedListener);\n };\n on(event, wrappedListener);\n};\n\nexport const trigger = (event: string) => {\n const customEvent = new CustomEvent(event);\n window.dispatchEvent(customEvent);\n};\n","import { EventListener, EventName, DomEventListener } from './eventTypes';\n\nexport const on = <E extends EventName<HTMLElementEventMap>>(\n element: HTMLElement,\n event: E,\n listener: EventListener<HTMLElementEventMap, E>\n) => {\n element.addEventListener(event, listener as DomEventListener);\n};\n\nexport const off = <E extends EventName<HTMLElementEventMap>>(\n element: HTMLElement,\n event: E,\n listener: EventListener<HTMLElementEventMap, E>\n) => {\n element.removeEventListener(event, listener as DomEventListener);\n};\n\nexport const once = <E extends EventName<HTMLElementEventMap>>(\n element: HTMLElement,\n event: E,\n listener: EventListener<HTMLElementEventMap, E>\n) => {\n const wrappedListener: EventListener<HTMLElementEventMap, E> = e => {\n listener(e);\n off(element, event, wrappedListener);\n };\n on(element, event, wrappedListener);\n};\n\nexport const trigger = (element: HTMLElement, event: string) => {\n const customEvent = new CustomEvent(event);\n element.dispatchEvent(customEvent);\n};\n","import * as documentEvents from './document';\nimport * as windowEvents from './window';\nimport * as elementEvents from './element';\n\nexport const events = {\n document: documentEvents,\n window: windowEvents,\n element: elementEvents,\n};\n\nexport type { EventListener, EventName } from './eventTypes';\n","export const noop = () => undefined;\n","import { Callback } from './types';\n\ntype ThrottledFunction<C extends Callback> = (\n ...args: Parameters<C>\n) => ReturnType<C>;\n\nexport const throttle = <C extends Callback>(\n callback: C,\n limit: number\n): ThrottledFunction<C> => {\n let waiting: boolean;\n let prev: ReturnType<C>;\n return (...args: Parameters<C>) => {\n if (!waiting) {\n waiting = true;\n setTimeout(() => (waiting = false), limit);\n prev = callback.apply(this, args) as ReturnType<C>;\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return prev;\n };\n};\n"],"names":["on","event","listener","document","addEventListener","off","removeEventListener","window","element","wrappedListener","e","customEvent","CustomEvent","dispatchEvent","callback","limit","waiting","prev","setTimeout","apply","_this","slice","call","arguments"],"mappings":"+NAEO,IAAMA,EAAK,SACdC,EACAC,GAEAC,SAASC,iBAAiBH,EAAOC,IAGxBG,EAAM,SACfJ,EACAC,GAEAC,SAASG,oBAAoBL,EAAOC,ICX3BF,EAAK,SACdC,EACAC,GAEAK,OAAOH,iBAAiBH,EAAOC,IAGtBG,EAAM,SACfJ,EACAC,GAEAK,OAAOD,oBAAoBL,EAAOC,ICXzBF,EAAK,SACdQ,EACAP,EACAC,GAEAM,EAAQJ,iBAAiBH,EAAOC,IAGvBG,EAAM,SACfG,EACAP,EACAC,GAEAM,EAAQF,oBAAoBL,EAAOC,sBCXjB,CAClBC,yCHWgB,SAChBF,EACAC,GAMAF,EAAGC,EAJyD,SAAtDQ,EAAsDC,GACxDR,EAASQ,GACTL,EAAIJ,EAAOQ,cAKI,SAACR,GACpB,IAAMU,EAAc,IAAIC,YAAYX,GACpCE,SAASU,cAAcF,KGvBvBJ,uCFUgB,SAChBN,EACAC,GAMAF,EAAGC,EAJuD,SAApDQ,EAAoDC,GACtDR,EAASQ,GACTL,EAAIJ,EAAOQ,cAKI,SAACR,GACpB,IAAMU,EAAc,IAAIC,YAAYX,GACpCM,OAAOM,cAAcF,KEtBrBH,wCDWgB,SAChBA,EACAP,EACAC,GAMAF,EAAGQ,EAASP,EAJmD,SAAzDQ,EAAyDC,GAC3DR,EAASQ,GACTL,EAAIG,EAASP,EAAOQ,cAKL,SAACD,EAAsBP,GAC1C,IAAMU,EAAc,IAAIC,YAAYX,GACpCO,EAAQK,cAAcF,aEhCN,wBCMI,SACpBG,EACAC,GAEA,IAAIC,EACAC,EACJ,OAAO,WAOH,OANKD,IACDA,GAAU,EACVE,WAAW,WAAA,OAAOF,GAAU,GAAQD,GACpCE,EAAOH,EAASK,MAAMC,EACzB,GAAAC,MAAAC,KAAAC,aAEMN"}
|
package/dist/noop.d.ts
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
export declare const noop: () => undefined;
|
package/dist/throttle.d.ts
DELETED
package/dist/types/Callback.d.ts
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
export declare type Callback = (...args: any) => any;
|
@@ -1,4 +0,0 @@
|
|
1
|
-
/** from type-fest: https://github.com/sindresorhus/type-fest/blob/main/source/literal-union.d.ts */
|
2
|
-
declare type Primitive = null | undefined | string | number | boolean | symbol | bigint;
|
3
|
-
export declare type LiteralUnion<LiteralType, BaseType extends Primitive> = LiteralType | (BaseType & Record<never, never>);
|
4
|
-
export {};
|
package/dist/types/index.d.ts
DELETED