Skip to content
This repository has been archived by the owner on May 15, 2024. It is now read-only.

Commit

Permalink
feat(types): export node event types
Browse files Browse the repository at this point in the history
  • Loading branch information
basvanmeurs committed May 7, 2020
1 parent 3e173ee commit c12d4da
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 12 deletions.
10 changes: 7 additions & 3 deletions src/runtime/nodes/Node.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,17 +18,21 @@ export {
VugelTextureErrorEventListener,
VugelTextureEventListener,
VugelResizeEventListener,
} from "../tree2dEvents";
VugelNodeEventObject,
VugelTextureErrorEventObject,
VugelTextureEventObject,
VugelResizeEventObject,
} from "./tree2dEvents";

import {
VugelNodeEventListener,
VugelTextureErrorEventListener,
VugelTextureEventListener,
VugelResizeEventListener,
augmentTree2dElementEvent,
} from "../tree2dEvents";
} from "./tree2dEvents";

export type NodeEvents = {
type NodeEvents = {
onAuxclick?: VugelEventListener<VugelMouseEvent>;
onClick?: VugelEventListener<VugelMouseEvent>;
onContextmenu?: VugelEventListener<VugelMouseEvent>;
Expand Down
2 changes: 1 addition & 1 deletion src/runtime/nodes/index.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
export { Node } from "./Node";
export * from "./Node";
export { Container } from "./Container";
export { Paragraph } from "./Paragraph";
export { DirectContainer } from "./DirectContainer";
Expand Down
23 changes: 15 additions & 8 deletions src/runtime/tree2dEvents.ts → src/runtime/nodes/tree2dEvents.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { VugelStage } from "../wrapper";
import { Node } from "./nodes";
import { VugelStage } from "../../wrapper";
import { Node } from "./Node";
import {
ElementEventCallback,
ElementTextureErrorEventCallback,
Expand All @@ -25,11 +25,18 @@ type Tree2dElementEventObjectBase = { element: Element };

type Tree2dElementEventCallback<EventObject extends Tree2dElementEventObjectBase> = (e: EventObject) => void;

export type GetVugelNodeEventListener<T = ElementEventCallback> = T extends Tree2dElementEventCallback<infer EventArg>
? (event: AugmentedElementEventObject<EventArg>) => void
export type GetVugelNodeEventObject<T = ElementEventCallback> = T extends Tree2dElementEventCallback<infer EventObject>
? AugmentedElementEventObject<EventObject>
: never;

export type VugelNodeEventListener = GetVugelNodeEventListener<ElementEventCallback>;
export type VugelTextureErrorEventListener = GetVugelNodeEventListener<ElementTextureErrorEventCallback>;
export type VugelTextureEventListener = GetVugelNodeEventListener<ElementTextureEventCallback>;
export type VugelResizeEventListener = GetVugelNodeEventListener<ElementResizeEventCallback>;
export type VugelNodeEventObject = GetVugelNodeEventObject<ElementEventCallback>;
export type VugelTextureErrorEventObject = GetVugelNodeEventObject<ElementTextureErrorEventCallback>;
export type VugelTextureEventObject = GetVugelNodeEventObject<ElementTextureEventCallback>;
export type VugelResizeEventObject = GetVugelNodeEventObject<ElementResizeEventCallback>;

type GetVugelNodeEventListener<EventObject> = (event: EventObject) => void
export type VugelNodeEventListener = GetVugelNodeEventListener<VugelNodeEventObject>;
export type VugelTextureErrorEventListener = GetVugelNodeEventListener<VugelTextureErrorEventObject>;
export type VugelTextureEventListener = GetVugelNodeEventListener<VugelTextureEventObject>;
export type VugelResizeEventListener = GetVugelNodeEventListener<VugelResizeEventObject>;

0 comments on commit c12d4da

Please sign in to comment.