revojs 0.0.19 → 0.0.21

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.
@@ -5,18 +5,19 @@ export type TypeOf<T> = {
5
5
  };
6
6
  export type Infer<T> = T extends TypeOf<infer U> ? U : unknown;
7
7
  export type Slot = unknown | Template | Array<Slot> | (() => Slot);
8
+ export type EventListener<T extends Event> = ((event: T) => void) | Array<(event: T) => void>;
8
9
  export type Template = {
9
10
  tag: string;
10
11
  attributes: Record<string, unknown>;
11
12
  children: Array<Slot>;
12
13
  };
13
14
  export type EventInput<T extends Events> = {
14
- [K in keyof T]?: (event: Infer<T[K]["type"]> extends Event ? Infer<T[K]["type"]> : CustomEvent<Infer<T[K]["type"]>>) => void;
15
+ [K in keyof T]?: EventListener<Infer<T[K]["type"]> extends Event ? Infer<T[K]["type"]> : CustomEvent<Infer<T[K]["type"]>>>;
15
16
  };
16
17
  export type AttributeInput<T extends Attributes> = {
17
18
  [K in keyof T]?: Value<Infer<T[K]["type"]> | undefined>;
18
19
  };
19
- export type Input<TEvents extends Events, TAttributes extends Attributes> = EventInput<TEvents> & AttributeInput<TAttributes> & HtmlAttributes;
20
+ export type Input<TEvents extends Events, TAttributes extends Attributes> = EventInput<TEvents> | AttributeInput<TAttributes> | HtmlAttributes;
20
21
  export type EventOutput<T extends Events> = {
21
22
  [K in keyof T]?: (event: Infer<T[K]["type"]>) => void;
22
23
  };
@@ -78,6 +79,7 @@ export declare const toCustomElement: <TEvents extends Events = {}, TAttributes
78
79
  export declare const registerComponent: <TEvents extends Events = {}, TAttributes extends Attributes = {}>(component: ComponentConstructor<TEvents, TAttributes>) => ComponentConstructor<TEvents, TAttributes>;
79
80
  export declare const getGlobalStyles: () => CSSStyleSheet[];
80
81
  export declare const getCustomElement: (node: Node | null) => CustomElement<Events, Attributes> | undefined;
82
+ export declare const eventListener: <T extends Event>(event: T, invoke?: EventListener<T>) => void;
81
83
  export declare const isClient: () => boolean;
82
84
  export declare const isServer: () => boolean;
83
85
  export declare const preventDefault: (event: Event) => void;
package/dist/index.js CHANGED
@@ -324,8 +324,8 @@ const renderToNode = async (scope, slot) => {
324
324
  if (name.startsWith("on")) {
325
325
  const event = name.substring(2).toLowerCase();
326
326
  const controller = new AbortController();
327
- element.addEventListener(event, (event$1) => typeof value === "function" ? value(event$1) : void 0, { signal: controller.signal });
328
- scope.dispose.push(() => controller.abort());
327
+ element.addEventListener(event, (event$1) => eventListener(event$1, value), { signal: controller.signal });
328
+ scope.dispose.push(controller.abort);
329
329
  } else createCompute(scope, () => {
330
330
  const set = toString(value);
331
331
  if (set === "" || set === "false") return element.removeAttribute(name);
@@ -453,6 +453,10 @@ const getCustomElement = (node) => {
453
453
  return getCustomElement(node.parentNode);
454
454
  }
455
455
  };
456
+ const eventListener = (event, invoke) => {
457
+ if (Array.isArray(invoke)) for (const target of invoke) target?.(event);
458
+ else invoke?.(event);
459
+ };
456
460
  const isClient = () => typeof window !== "undefined";
457
461
  const isServer = () => typeof window === "undefined";
458
462
  const preventDefault = (event) => event.preventDefault();
@@ -785,4 +789,4 @@ const anchorNavigate = (event) => {
785
789
  };
786
790
 
787
791
  //#endregion
788
- export { $fetch, Compute, Handler, Hooks, MOUNTED_HOOK, Outlet, RUNTIME_CONTEXT, Radix, Scope, activeCompute, anchorNavigate, components, createApp, createCompute, createElement, createEvent, createMemo, createRuntime, createState, defineComponent, defineContext, defineHook, defineRoute, fileName, fromValue, getAssets, getCookies, getCustomElement, getGlobalStyles, getMimeType, getRequestUrl, getRoutes, getSetCookies, getVariables, isClient, isServer, isTemplate, markdownToSlot, navigate, preventDefault, registerComponent, renderToNode, renderToString, sendBadRequest, sendHtml, sendJson, sendRedirect, sendText, sendUnauthorized, setCookie, stopImmediatePropagation, stopPropagation, targets, toCustomElement, toFragment, toPath, toString };
792
+ export { $fetch, Compute, Handler, Hooks, MOUNTED_HOOK, Outlet, RUNTIME_CONTEXT, Radix, Scope, activeCompute, anchorNavigate, components, createApp, createCompute, createElement, createEvent, createMemo, createRuntime, createState, defineComponent, defineContext, defineHook, defineRoute, eventListener, fileName, fromValue, getAssets, getCookies, getCustomElement, getGlobalStyles, getMimeType, getRequestUrl, getRoutes, getSetCookies, getVariables, isClient, isServer, isTemplate, markdownToSlot, navigate, preventDefault, registerComponent, renderToNode, renderToString, sendBadRequest, sendHtml, sendJson, sendRedirect, sendText, sendUnauthorized, setCookie, stopImmediatePropagation, stopPropagation, targets, toCustomElement, toFragment, toPath, toString };
@@ -1,127 +1,127 @@
1
- import { type Slot } from "../html";
1
+ import { type EventListener, type Slot } from "../html";
2
2
  export type EventAttributes = {
3
- onScroll?: (event: Event) => void;
4
- onScrollCapture?: (event: Event) => void;
5
- onScrollEnd?: (event: Event) => void;
6
- onScrollEndCapture?: (event: Event) => void;
7
- onWheel?: (event: WheelEvent) => void;
8
- onWheelCapture?: (event: WheelEvent) => void;
9
- onAnimationCancel?: (event: AnimationEvent) => void;
10
- onAnimationCancelCapture?: (event: AnimationEvent) => void;
11
- onAnimationEnd?: (event: AnimationEvent) => void;
12
- onAnimationEndCapture?: (event: AnimationEvent) => void;
13
- onAnimationIteration?: (event: AnimationEvent) => void;
14
- onAnimationIterationCapture?: (event: AnimationEvent) => void;
15
- onAnimationStart?: (event: AnimationEvent) => void;
16
- onAnimationStartCapture?: (event: AnimationEvent) => void;
17
- onCopy?: (event: ClipboardEvent) => void;
18
- onCopyCapture?: (event: ClipboardEvent) => void;
19
- onCut?: (event: ClipboardEvent) => void;
20
- onCutCapture?: (event: ClipboardEvent) => void;
21
- onPaste?: (event: ClipboardEvent) => void;
22
- onPasteCapture?: (event: ClipboardEvent) => void;
23
- onCompositionEnd?: (event: CompositionEvent) => void;
24
- onCompositionEndCapture?: (event: CompositionEvent) => void;
25
- onCompositionStart?: (event: CompositionEvent) => void;
26
- onCompositionStartCapture?: (event: CompositionEvent) => void;
27
- onCompositionUpdate?: (event: CompositionEvent) => void;
28
- onCompositionUpdateCapture?: (event: CompositionEvent) => void;
29
- onBlur?: (event: FocusEvent) => void;
30
- onBlurCapture?: (event: FocusEvent) => void;
31
- onFocus?: (event: FocusEvent) => void;
32
- onFocusCapture?: (event: FocusEvent) => void;
33
- onFocusIn?: (event: FocusEvent) => void;
34
- onFocusInCapture?: (event: FocusEvent) => void;
35
- onFocusOut?: (event: FocusEvent) => void;
36
- onFocusOutCapture?: (event: FocusEvent) => void;
37
- onFullscreenChange?: (event: Event) => void;
38
- onFullscreenChangeCapture?: (event: Event) => void;
39
- onFullscreenError?: (event: Event) => void;
40
- onFullscreenErrorCapture?: (event: Event) => void;
41
- onKeyDown?: (event: KeyboardEvent) => void;
42
- onKeyDownCapture?: (event: KeyboardEvent) => void;
43
- onKeyPress?: (event: KeyboardEvent) => void;
44
- onKeyPressCapture?: (event: KeyboardEvent) => void;
45
- onKeyUp?: (event: KeyboardEvent) => void;
46
- onKeyUpCapture?: (event: KeyboardEvent) => void;
47
- onAuxClick?: (event: MouseEvent) => void;
48
- onAuxClickCapture?: (event: MouseEvent) => void;
49
- onClick?: (event: MouseEvent) => void;
50
- onClickCapture?: (event: MouseEvent) => void;
51
- onContextMenu?: (event: MouseEvent) => void;
52
- onContextMenuCapture?: (event: MouseEvent) => void;
53
- onDoubleClick?: (event: MouseEvent) => void;
54
- onDoubleClickCapture?: (event: MouseEvent) => void;
55
- onMouseDown?: (event: MouseEvent) => void;
56
- onMouseDownCapture?: (event: MouseEvent) => void;
57
- onMouseEnter?: (event: MouseEvent) => void;
58
- onMouseEnterCapture?: (event: MouseEvent) => void;
59
- onMouseLeave?: (event: MouseEvent) => void;
60
- onMouseLeaveCapture?: (event: MouseEvent) => void;
61
- onMouseMove?: (event: MouseEvent) => void;
62
- onMouseMoveCapture?: (event: MouseEvent) => void;
63
- onMouseOut?: (event: MouseEvent) => void;
64
- onMouseOutCapture?: (event: MouseEvent) => void;
65
- onMouseOver?: (event: MouseEvent) => void;
66
- onMouseOverCapture?: (event: MouseEvent) => void;
67
- onMouseUp?: (event: MouseEvent) => void;
68
- onMouseUpCapture?: (event: MouseEvent) => void;
69
- onMouseWheel?: (event: WheelEvent) => void;
70
- onMouseWheelCapture?: (event: WheelEvent) => void;
71
- onGotPointerCapture?: (event: PointerEvent) => void;
72
- onGotPointerCaptureCapture?: (event: PointerEvent) => void;
73
- onLostPointerCapture?: (event: PointerEvent) => void;
74
- onLostPointerCaptureCapture?: (event: PointerEvent) => void;
75
- onPointerCancel?: (event: PointerEvent) => void;
76
- onPointerCancelCapture?: (event: PointerEvent) => void;
77
- onPointerDown?: (event: PointerEvent) => void;
78
- onPointerDownCapture?: (event: PointerEvent) => void;
79
- onPointerEnter?: (event: PointerEvent) => void;
80
- onPointerEnterCapture?: (event: PointerEvent) => void;
81
- onPointerLeave?: (event: PointerEvent) => void;
82
- onPointerLeaveCapture?: (event: PointerEvent) => void;
83
- onPointerMove?: (event: PointerEvent) => void;
84
- onPointerMoveCapture?: (event: PointerEvent) => void;
85
- onPointerOut?: (event: PointerEvent) => void;
86
- onPointerOutCapture?: (event: PointerEvent) => void;
87
- onPointerOver?: (event: PointerEvent) => void;
88
- onPointerOverCapture?: (event: PointerEvent) => void;
89
- onPointerUp?: (event: PointerEvent) => void;
90
- onPointerUpCapture?: (event: PointerEvent) => void;
91
- onTouchCancel?: (event: TouchEvent) => void;
92
- onTouchCancelCapture?: (event: TouchEvent) => void;
93
- onTouchEnd?: (event: TouchEvent) => void;
94
- onTouchEndCapture?: (event: TouchEvent) => void;
95
- onTouchMove?: (event: TouchEvent) => void;
96
- onTouchMoveCapture?: (event: TouchEvent) => void;
97
- onTouchStart?: (event: TouchEvent) => void;
98
- onTouchStartCapture?: (event: TouchEvent) => void;
99
- onTransitionCancel?: (event: TransitionEvent) => void;
100
- onTransitionCancelCapture?: (event: TransitionEvent) => void;
101
- onTransitionEnd?: (event: TransitionEvent) => void;
102
- onTransitionEndCapture?: (event: TransitionEvent) => void;
103
- onTransitionRun?: (event: TransitionEvent) => void;
104
- onTransitionRunCapture?: (event: TransitionEvent) => void;
105
- onTransitionStart?: (event: TransitionEvent) => void;
106
- onTransitionStartCapture?: (event: TransitionEvent) => void;
107
- onFormData?: (event: FormDataEvent) => void;
108
- onFormDataCapture?: (event: FormDataEvent) => void;
109
- onReset?: (event: Event) => void;
110
- onResetCapture?: (event: Event) => void;
111
- onSubmit?: (event: Event) => void;
112
- onSubmitCapture?: (event: Event) => void;
113
- onInvalid?: (event: Event) => void;
114
- onInvalidCapture?: (event: Event) => void;
115
- onSelect?: (event: Event) => void;
116
- onSelectCapture?: (event: Event) => void;
117
- onSelectChange?: (event: Event) => void;
118
- onSelectChangeCapture?: (event: Event) => void;
119
- onInput?: (event: InputEvent) => void;
120
- onInputCapture?: (event: InputEvent) => void;
121
- onBeforeInput?: (event: InputEvent) => void;
122
- onBeforeInputCapture?: (event: InputEvent) => void;
123
- onChange?: (event: Event) => void;
124
- onChangeCapture?: (event: Event) => void;
3
+ onScroll?: EventListener<Event>;
4
+ onScrollCapture?: EventListener<Event>;
5
+ onScrollEnd?: EventListener<Event>;
6
+ onScrollEndCapture?: EventListener<Event>;
7
+ onWheel?: EventListener<WheelEvent>;
8
+ onWheelCapture?: EventListener<WheelEvent>;
9
+ onAnimationCancel?: EventListener<AnimationEvent>;
10
+ onAnimationCancelCapture?: EventListener<AnimationEvent>;
11
+ onAnimationEnd?: EventListener<AnimationEvent>;
12
+ onAnimationEndCapture?: EventListener<AnimationEvent>;
13
+ onAnimationIteration?: EventListener<AnimationEvent>;
14
+ onAnimationIterationCapture?: EventListener<AnimationEvent>;
15
+ onAnimationStart?: EventListener<AnimationEvent>;
16
+ onAnimationStartCapture?: EventListener<AnimationEvent>;
17
+ onCopy?: EventListener<ClipboardEvent>;
18
+ onCopyCapture?: EventListener<ClipboardEvent>;
19
+ onCut?: EventListener<ClipboardEvent>;
20
+ onCutCapture?: EventListener<ClipboardEvent>;
21
+ onPaste?: EventListener<ClipboardEvent>;
22
+ onPasteCapture?: EventListener<ClipboardEvent>;
23
+ onCompositionEnd?: EventListener<CompositionEvent>;
24
+ onCompositionEndCapture?: EventListener<CompositionEvent>;
25
+ onCompositionStart?: EventListener<CompositionEvent>;
26
+ onCompositionStartCapture?: EventListener<CompositionEvent>;
27
+ onCompositionUpdate?: EventListener<CompositionEvent>;
28
+ onCompositionUpdateCapture?: EventListener<CompositionEvent>;
29
+ onBlur?: EventListener<FocusEvent>;
30
+ onBlurCapture?: EventListener<FocusEvent>;
31
+ onFocus?: EventListener<FocusEvent>;
32
+ onFocusCapture?: EventListener<FocusEvent>;
33
+ onFocusIn?: EventListener<FocusEvent>;
34
+ onFocusInCapture?: EventListener<FocusEvent>;
35
+ onFocusOut?: EventListener<FocusEvent>;
36
+ onFocusOutCapture?: EventListener<FocusEvent>;
37
+ onFullscreenChange?: EventListener<Event>;
38
+ onFullscreenChangeCapture?: EventListener<Event>;
39
+ onFullscreenError?: EventListener<Event>;
40
+ onFullscreenErrorCapture?: EventListener<Event>;
41
+ onKeyDown?: EventListener<KeyboardEvent>;
42
+ onKeyDownCapture?: EventListener<KeyboardEvent>;
43
+ onKeyPress?: EventListener<KeyboardEvent>;
44
+ onKeyPressCapture?: EventListener<KeyboardEvent>;
45
+ onKeyUp?: EventListener<KeyboardEvent>;
46
+ onKeyUpCapture?: EventListener<KeyboardEvent>;
47
+ onAuxClick?: EventListener<MouseEvent>;
48
+ onAuxClickCapture?: EventListener<MouseEvent>;
49
+ onClick?: EventListener<MouseEvent>;
50
+ onClickCapture?: EventListener<MouseEvent>;
51
+ onContextMenu?: EventListener<MouseEvent>;
52
+ onContextMenuCapture?: EventListener<MouseEvent>;
53
+ onDoubleClick?: EventListener<MouseEvent>;
54
+ onDoubleClickCapture?: EventListener<MouseEvent>;
55
+ onMouseDown?: EventListener<MouseEvent>;
56
+ onMouseDownCapture?: EventListener<MouseEvent>;
57
+ onMouseEnter?: EventListener<MouseEvent>;
58
+ onMouseEnterCapture?: EventListener<MouseEvent>;
59
+ onMouseLeave?: EventListener<MouseEvent>;
60
+ onMouseLeaveCapture?: EventListener<MouseEvent>;
61
+ onMouseMove?: EventListener<MouseEvent>;
62
+ onMouseMoveCapture?: EventListener<MouseEvent>;
63
+ onMouseOut?: EventListener<MouseEvent>;
64
+ onMouseOutCapture?: EventListener<MouseEvent>;
65
+ onMouseOver?: EventListener<MouseEvent>;
66
+ onMouseOverCapture?: EventListener<MouseEvent>;
67
+ onMouseUp?: EventListener<MouseEvent>;
68
+ onMouseUpCapture?: EventListener<MouseEvent>;
69
+ onMouseWheel?: EventListener<WheelEvent>;
70
+ onMouseWheelCapture?: EventListener<WheelEvent>;
71
+ onGotPointerCapture?: EventListener<PointerEvent>;
72
+ onGotPointerCaptureCapture?: EventListener<PointerEvent>;
73
+ onLostPointerCapture?: EventListener<PointerEvent>;
74
+ onLostPointerCaptureCapture?: EventListener<PointerEvent>;
75
+ onPointerCancel?: EventListener<PointerEvent>;
76
+ onPointerCancelCapture?: EventListener<PointerEvent>;
77
+ onPointerDown?: EventListener<PointerEvent>;
78
+ onPointerDownCapture?: EventListener<PointerEvent>;
79
+ onPointerEnter?: EventListener<PointerEvent>;
80
+ onPointerEnterCapture?: EventListener<PointerEvent>;
81
+ onPointerLeave?: EventListener<PointerEvent>;
82
+ onPointerLeaveCapture?: EventListener<PointerEvent>;
83
+ onPointerMove?: EventListener<PointerEvent>;
84
+ onPointerMoveCapture?: EventListener<PointerEvent>;
85
+ onPointerOut?: EventListener<PointerEvent>;
86
+ onPointerOutCapture?: EventListener<PointerEvent>;
87
+ onPointerOver?: EventListener<PointerEvent>;
88
+ onPointerOverCapture?: EventListener<PointerEvent>;
89
+ onPointerUp?: EventListener<PointerEvent>;
90
+ onPointerUpCapture?: EventListener<PointerEvent>;
91
+ onTouchCancel?: EventListener<TouchEvent>;
92
+ onTouchCancelCapture?: EventListener<TouchEvent>;
93
+ onTouchEnd?: EventListener<TouchEvent>;
94
+ onTouchEndCapture?: EventListener<TouchEvent>;
95
+ onTouchMove?: EventListener<TouchEvent>;
96
+ onTouchMoveCapture?: EventListener<TouchEvent>;
97
+ onTouchStart?: EventListener<TouchEvent>;
98
+ onTouchStartCapture?: EventListener<TouchEvent>;
99
+ onTransitionCancel?: EventListener<TransitionEvent>;
100
+ onTransitionCancelCapture?: EventListener<TransitionEvent>;
101
+ onTransitionEnd?: EventListener<TransitionEvent>;
102
+ onTransitionEndCapture?: EventListener<TransitionEvent>;
103
+ onTransitionRun?: EventListener<TransitionEvent>;
104
+ onTransitionRunCapture?: EventListener<TransitionEvent>;
105
+ onTransitionStart?: EventListener<TransitionEvent>;
106
+ onTransitionStartCapture?: EventListener<TransitionEvent>;
107
+ onFormData?: EventListener<FormDataEvent>;
108
+ onFormDataCapture?: EventListener<FormDataEvent>;
109
+ onReset?: EventListener<Event>;
110
+ onResetCapture?: EventListener<Event>;
111
+ onSubmit?: EventListener<Event>;
112
+ onSubmitCapture?: EventListener<Event>;
113
+ onInvalid?: EventListener<Event>;
114
+ onInvalidCapture?: EventListener<Event>;
115
+ onSelect?: EventListener<Event>;
116
+ onSelectCapture?: EventListener<Event>;
117
+ onSelectChange?: EventListener<Event>;
118
+ onSelectChangeCapture?: EventListener<Event>;
119
+ onInput?: EventListener<InputEvent>;
120
+ onInputCapture?: EventListener<InputEvent>;
121
+ onBeforeInput?: EventListener<InputEvent>;
122
+ onBeforeInputCapture?: EventListener<InputEvent>;
123
+ onChange?: EventListener<Event>;
124
+ onChangeCapture?: EventListener<Event>;
125
125
  };
126
126
  export type HtmlTags = Record<string, HtmlAttributes & EventAttributes>;
127
127
  export type HtmlAttributes = Record<string, unknown>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "revojs",
3
- "version": "0.0.19",
3
+ "version": "0.0.21",
4
4
  "type": "module",
5
5
  "repository": "coverbase/revojs",
6
6
  "license": "MIT",