revojs 0.0.78 → 0.0.79

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.
@@ -88,7 +88,7 @@ export declare function useEvent<T extends keyof ElementEventMap>(scope: Scope,
88
88
  export declare function useEvent<T extends keyof WindowEventMap>(scope: Scope, target: Window | undefined | null, event: T, input: EventListener<WindowEventMap[T]>, options?: AddEventListenerOptions): void;
89
89
  export declare function useEvent<T extends keyof HTMLElementEventMap>(scope: Scope, target: Document | HTMLElement | undefined | null, event: T, input: EventListener<HTMLElementEventMap[T]>, options?: AddEventListenerOptions): void;
90
90
  export declare function onMounted(scope: Scope, event: EventListener<MountedEvent>): void;
91
- export declare function startViewTransition(invoke: ViewTransitionUpdateCallback): void | Promise<void>;
91
+ export declare function startViewTransition(invoke: ViewTransitionUpdateCallback): Promise<void>;
92
92
  export declare function isClient(): boolean;
93
93
  export declare function isServer(): boolean;
94
94
  export declare function preventDefault(event: Event): void;
@@ -29,6 +29,9 @@ export declare function sendRedirect(scope: Scope, path: string): Response;
29
29
  export declare function sendBadRequest(scope: Scope, text: string): Response;
30
30
  export declare function sendUnauthorized(scope: Scope): Response;
31
31
  export declare function useUrl(scope: Scope, base?: string): URL;
32
+ export declare function useQuery(scope: Scope): {
33
+ [k: string]: string;
34
+ };
32
35
  export declare function useCookies(scope: Scope): Record<string, string>;
33
36
  export declare function useSetCookies(scope: Scope): Record<string, string>;
34
37
  export declare function setCookie(scope: Scope, name: string, value: string, options?: CookieOptions): void;
package/dist/index.js CHANGED
@@ -146,6 +146,10 @@ function useUrl(scope, base) {
146
146
  const { request } = useRuntime(scope);
147
147
  return new URL(request?.url ?? window?.location.href, base);
148
148
  }
149
+ function useQuery(scope) {
150
+ const { searchParams } = useUrl(scope);
151
+ return Object.fromEntries(searchParams);
152
+ }
149
153
  function useCookies(scope) {
150
154
  const { request } = useRuntime(scope);
151
155
  return (isClient() ? document.cookie : request.headers.get("Cookie") ?? "").split("; ").reduce((result, cookie) => {
@@ -437,7 +441,9 @@ function useAsync(scope, invoke, options) {
437
441
  const isLoading = createState(true);
438
442
  const execute = async () => {
439
443
  try {
440
- state.value = await invoke().finally(() => isLoading.value = false);
444
+ const result = await invoke().finally(() => isLoading.value = false);
445
+ if (options?.viewTransition) await startViewTransition(() => state.value = result);
446
+ else state.value = result;
441
447
  } catch (error) {
442
448
  options?.catch?.(error);
443
449
  }
@@ -791,7 +797,7 @@ function onMounted(scope, event) {
791
797
  useEvent(scope, host, "mounted", event);
792
798
  }
793
799
  }
794
- function startViewTransition(invoke) {
800
+ async function startViewTransition(invoke) {
795
801
  if (isClient() && document.startViewTransition !== void 0) return document.startViewTransition(invoke).updateCallbackDone;
796
802
  return invoke();
797
803
  }
@@ -825,6 +831,11 @@ var AfterNavigateEvent = class extends Event {
825
831
  super("afterNavigate");
826
832
  }
827
833
  };
834
+ var AfterNavigateTransitionEvent = class extends Event {
835
+ constructor() {
836
+ super("afterNavigateTransition");
837
+ }
838
+ };
828
839
  function provideRouterContext(scope, options) {
829
840
  const url = createState();
830
841
  const route = createState();
@@ -859,7 +870,8 @@ function provideRouterContext(scope, options) {
859
870
  route
860
871
  });
861
872
  fetch$1();
862
- useEvent(scope, navigator, "navigate", () => startViewTransition(fetch$1));
873
+ useEvent(scope, navigator, "navigate", () => startViewTransition(fetch$1).finally(() => navigator.dispatchEvent(new AfterNavigateTransitionEvent())));
874
+ if (isClient()) requestAnimationFrame(() => navigator.dispatchEvent(new AfterNavigateTransitionEvent()));
863
875
  return useRouter(scope);
864
876
  }
865
877
  function useRouter(scope, context) {
@@ -936,4 +948,4 @@ function useLocale(scope, context) {
936
948
  const LOCALE_CONTEXT = defineContext("LOCALE_CONTEXT");
937
949
 
938
950
  //#endregion
939
- export { $fetch, AfterNavigateEvent, CLIENT, Compute, HOST_CONTEXT, Handler, LOCALE_CONTEXT, MountedEvent, NavigateEvent, Page, ROUTER_CONTEXT, ROUTE_CONTEXT, RUNTIME_CONTEXT, Radix, SERVER, Scope, StopEvent, activeCompute, components, createApp, createCompute, createElement, createMemo, createRuntime, createState, defineComponent, defineContext, defineMiddleware, defineRoute, fileName, fromValue, hydrate, isClient, isComponent, isCustomElement, isRoute, isServer, isTemplate, mergeObjects, mimeType, onMounted, preventDefault, provideLocaleContext, provideRouterContext, registerComponent, renderToString, sendBadRequest, sendHtml, sendJson, sendRedirect, sendText, sendUnauthorized, setCookie, startViewTransition, stopImmediatePropagation, stopPropagation, targets, toArray, toCustomElement, toFragment, toPath, toRange, toString, untrack, useAsync, useCookies, useEvent, useFetch, useHost, useLocale, useRoute, useRouter, useRuntime, useSetCookies, useUrl };
951
+ export { $fetch, AfterNavigateEvent, AfterNavigateTransitionEvent, CLIENT, Compute, HOST_CONTEXT, Handler, LOCALE_CONTEXT, MountedEvent, NavigateEvent, Page, ROUTER_CONTEXT, ROUTE_CONTEXT, RUNTIME_CONTEXT, Radix, SERVER, Scope, StopEvent, activeCompute, components, createApp, createCompute, createElement, createMemo, createRuntime, createState, defineComponent, defineContext, defineMiddleware, defineRoute, fileName, fromValue, hydrate, isClient, isComponent, isCustomElement, isRoute, isServer, isTemplate, mergeObjects, mimeType, onMounted, preventDefault, provideLocaleContext, provideRouterContext, registerComponent, renderToString, sendBadRequest, sendHtml, sendJson, sendRedirect, sendText, sendUnauthorized, setCookie, startViewTransition, stopImmediatePropagation, stopPropagation, targets, toArray, toCustomElement, toFragment, toPath, toRange, toString, untrack, useAsync, useCookies, useEvent, useFetch, useHost, useLocale, useQuery, useRoute, useRouter, useRuntime, useSetCookies, useUrl };
@@ -17,6 +17,9 @@ export declare class NavigateEvent extends Event {
17
17
  export declare class AfterNavigateEvent extends Event {
18
18
  constructor();
19
19
  }
20
+ export declare class AfterNavigateTransitionEvent extends Event {
21
+ constructor();
22
+ }
20
23
  export declare function provideRouterContext(scope: Scope, options: RouterOptions): {
21
24
  url: State<URL | undefined>;
22
25
  route: State<unknown>;
@@ -41,5 +44,6 @@ declare global {
41
44
  interface ElementEventMap {
42
45
  navigate: NavigateEvent;
43
46
  afterNavigate: AfterNavigateEvent;
47
+ afterNavigateTransition: AfterNavigateTransitionEvent;
44
48
  }
45
49
  }
@@ -22,6 +22,7 @@ export type RouteContext = {
22
22
  inputs: State<Record<string, string>>;
23
23
  };
24
24
  export type AsyncOptions = {
25
+ viewTransition?: boolean;
25
26
  catch?: (error: unknown) => void | Promise<void>;
26
27
  };
27
28
  export declare function isRoute<T>(value?: T): value is Route & T;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "revojs",
3
- "version": "0.0.78",
3
+ "version": "0.0.79",
4
4
  "type": "module",
5
5
  "repository": "coverbase/revojs",
6
6
  "license": "MIT",