horojs
Version:
A micro library for a reactive UI application.
22 lines (21 loc) • 1.14 kB
TypeScript
type Unsubscriber = () => void;
type Subscribable<T> = {
(listner: (value: T) => void): Unsubscriber | void;
};
type Subscription<T> = {
(value: T): void;
};
type Subscriptions<T> = T extends infer K ? Subscription<K> : never;
interface Component {
unsubscribe(): void;
fragment: DocumentFragment;
}
type StaticInsertion = string | Component;
type DynamicInsertion = Subscribable<string | Component>;
type ValueInsertion = DynamicInsertion | StaticInsertion;
type Instertion = Subscriptions<GlobalEventHandlersEventMap[keyof GlobalEventHandlersEventMap]> | ValueInsertion;
declare function isStaticInsertion(insertion: Instertion): insertion is StaticInsertion;
declare function isDynamicInsertion(insertion: Instertion): insertion is DynamicInsertion;
declare function ensureValueInsertion(instertion: Instertion): ValueInsertion;
declare function ensureSubscription(instertion: Instertion): Subscription<Event>;
export { Unsubscriber, Subscribable, Subscription, Component, StaticInsertion, DynamicInsertion, ValueInsertion, Instertion, isStaticInsertion, isDynamicInsertion, ensureValueInsertion, ensureSubscription };