@xtia/jel 0.10.0 → 0.11.1
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/index.d.ts +2 -2
- package/index.js +1 -1
- package/internal/emitter.d.ts +4 -3
- package/internal/emitter.js +5 -3
- package/internal/types.d.ts +5 -3
- package/package.json +1 -1
package/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { $ } from "./internal/element";
|
|
2
2
|
import { DomEntity } from "./internal/types";
|
|
3
|
-
export { DomEntity, ElementClassDescriptor, ElementDescriptor, DOMContent, DomHelper, StyleAccessor, JelEntity, EventEmitterMap } from "./internal/types";
|
|
3
|
+
export { DomEntity, ElementClassDescriptor, ElementDescriptor, DOMContent, DomHelper, StyleAccessor, JelEntity, EventEmitterMap, EmitterLike, CSSValue } from "./internal/types";
|
|
4
4
|
export { createEntity } from "./internal/util";
|
|
5
|
-
export { createEventSource, createEventsSource, interval, timeout, SubjectEmitter, toEventEmitter, type EventEmitter, type EventRecording, type EventRecorder, combineEmitters } from "./internal/emitter";
|
|
5
|
+
export { createEventSource, createEventsSource, interval, timeout, animationFrames, SubjectEmitter, toEventEmitter, type EventEmitter, type EventRecording, type EventRecorder, combineEmitters } from "./internal/emitter";
|
|
6
6
|
export { createEventsProxy } from "./internal/proxy";
|
|
7
7
|
export { $ };
|
|
8
8
|
export declare const $body: DomEntity<HTMLElement>;
|
package/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { $ } from "./internal/element";
|
|
2
2
|
import { createEventsProxy } from "./internal/proxy";
|
|
3
3
|
export { createEntity } from "./internal/util";
|
|
4
|
-
export { createEventSource, createEventsSource, interval, timeout, SubjectEmitter, toEventEmitter, combineEmitters } from "./internal/emitter";
|
|
4
|
+
export { createEventSource, createEventsSource, interval, timeout, animationFrames, SubjectEmitter, toEventEmitter, combineEmitters } from "./internal/emitter";
|
|
5
5
|
export { createEventsProxy } from "./internal/proxy";
|
|
6
6
|
export { $ };
|
|
7
7
|
export const $body = "document" in globalThis ? $(document.body) : undefined;
|
package/internal/emitter.d.ts
CHANGED
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
import { Dictionary, EmissionSource, EmitterLike, EventHandlerMap, EventSource, Handler, Period } from "./types";
|
|
2
|
-
export type ListenFunc<T> = (handler: Handler<T>) => UnsubscribeFunc;
|
|
3
|
-
export type UnsubscribeFunc = () => void;
|
|
1
|
+
import { Dictionary, EmissionSource, EmitterLike, EventHandlerMap, EventSource, Handler, ListenFunc, Period, UnsubscribeFunc } from "./types";
|
|
4
2
|
export declare class EventEmitter<T> {
|
|
5
3
|
protected onListen: ListenFunc<T>;
|
|
6
4
|
constructor(onListen: ListenFunc<T>);
|
|
@@ -208,6 +206,9 @@ export declare function createEventsSource<Map extends Dictionary<any>>(initialL
|
|
|
208
206
|
};
|
|
209
207
|
export declare function interval(ms: number): EventEmitter<number>;
|
|
210
208
|
export declare function interval(period: Period): EventEmitter<number>;
|
|
209
|
+
/**
|
|
210
|
+
* Emits time deltas from a shared RAF loop
|
|
211
|
+
*/
|
|
211
212
|
export declare const animationFrames: EventEmitter<number>;
|
|
212
213
|
export declare function timeout(ms: number): EventEmitter<void>;
|
|
213
214
|
export declare function timeout(period: Period): EventEmitter<void>;
|
package/internal/emitter.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { createEventsProxy } from "./proxy.js";
|
|
2
2
|
import { isReactiveSource } from "./util";
|
|
3
|
-
const NOOP = () => { };
|
|
4
3
|
function periodAsMilliseconds(t) {
|
|
5
4
|
if (typeof t == "number")
|
|
6
5
|
return t;
|
|
@@ -449,16 +448,19 @@ export function interval(t) {
|
|
|
449
448
|
});
|
|
450
449
|
return new EventEmitter(listen);
|
|
451
450
|
}
|
|
451
|
+
/**
|
|
452
|
+
* Emits time deltas from a shared RAF loop
|
|
453
|
+
*/
|
|
452
454
|
export const animationFrames = (() => {
|
|
453
455
|
const { emit, listen } = createListenable(() => {
|
|
454
456
|
let rafId = null;
|
|
455
457
|
let lastTime = null;
|
|
456
458
|
const frame = (time) => {
|
|
457
459
|
rafId = requestAnimationFrame(frame);
|
|
458
|
-
const elapsed = time - lastTime;
|
|
460
|
+
const elapsed = time - (lastTime !== null && lastTime !== void 0 ? lastTime : time);
|
|
461
|
+
lastTime = time;
|
|
459
462
|
emit(elapsed);
|
|
460
463
|
};
|
|
461
|
-
lastTime = performance.now();
|
|
462
464
|
rafId = requestAnimationFrame(frame);
|
|
463
465
|
return () => cancelAnimationFrame(rafId);
|
|
464
466
|
});
|
package/internal/types.d.ts
CHANGED
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
import { ClassAccessor } from "./element";
|
|
2
|
-
import { EventEmitter
|
|
2
|
+
import { EventEmitter } from "./emitter";
|
|
3
3
|
import { entityDataSymbol } from "./util";
|
|
4
4
|
export type ElementClassDescriptor = string | Record<string, boolean | EmitterLike<boolean> | undefined> | undefined | ElementClassDescriptor[];
|
|
5
5
|
export type DOMContent = number | null | string | Element | JelEntity<object> | Text | DOMContent[];
|
|
6
6
|
export type DomEntity<T extends HTMLElement> = JelEntity<ElementAPI<T>>;
|
|
7
7
|
export type HTMLTag = keyof HTMLElementTagNameMap;
|
|
8
|
+
export type ListenFunc<T> = (handler: Handler<T>) => UnsubscribeFunc;
|
|
9
|
+
export type UnsubscribeFunc = () => void;
|
|
8
10
|
export type EmitterLike<T> = {
|
|
9
|
-
subscribe:
|
|
11
|
+
subscribe: ListenFunc<T>;
|
|
10
12
|
} | {
|
|
11
|
-
listen:
|
|
13
|
+
listen: ListenFunc<T>;
|
|
12
14
|
};
|
|
13
15
|
export type EmissionSource<T> = EmitterLike<T> | ListenFunc<T>;
|
|
14
16
|
export type CSSValue = string | number | null | HexCodeContainer;
|