revojs 0.0.60 → 0.0.62

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.
@@ -89,6 +89,8 @@ export declare const registerComponent: <TEvents extends Events, TAttributes ext
89
89
  export declare function useEvent<T extends keyof ElementEventMap>(scope: Scope, target: EventTarget | undefined | null, event: T, input: EventListener<ElementEventMap[T]>, options?: AddEventListenerOptions): void;
90
90
  export declare function useEvent<T extends keyof WindowEventMap>(scope: Scope, target: Window | undefined | null, event: T, input: EventListener<WindowEventMap[T]>, options?: AddEventListenerOptions): void;
91
91
  export declare function useEvent<T extends keyof HTMLElementEventMap>(scope: Scope, target: Document | HTMLElement | undefined | null, event: T, input: EventListener<HTMLElementEventMap[T]>, options?: AddEventListenerOptions): void;
92
+ export declare const onMounted: (scope: Scope, event: EventListener<MountedEvent>) => void;
93
+ export declare const startViewTransition: (invoke: ViewTransitionUpdateCallback) => Promise<void>;
92
94
  export declare const isClient: () => boolean;
93
95
  export declare const isServer: () => boolean;
94
96
  export declare const preventDefault: (event: Event) => void;
package/dist/index.js CHANGED
@@ -111,15 +111,9 @@ var Scope = class extends EventTarget {
111
111
  context;
112
112
  constructor(parentScope) {
113
113
  super();
114
- this.context = /* @__PURE__ */ new Map();
115
- this.setParentScope(parentScope);
116
- }
117
- getParentScope() {
118
- return this.parentScope;
119
- }
120
- setParentScope(parentScope) {
121
114
  this.parentScope = parentScope;
122
- return this.parentScope?.onStop(() => this.stop());
115
+ this.parentScope?.onStop(() => this.stop());
116
+ this.context = /* @__PURE__ */ new Map();
123
117
  }
124
118
  getContext(input) {
125
119
  let scope = this;
@@ -160,7 +154,13 @@ var Handler = class Handler {
160
154
  const set = computes.get(key) ?? /* @__PURE__ */ new Set();
161
155
  computes.set(key, set.add(compute));
162
156
  targets.set(target, computes);
163
- compute.getParentScope()?.onStop(() => set.delete(compute));
157
+ compute.parentScope?.onStop(() => {
158
+ set.delete(compute);
159
+ if (set.size === 0) {
160
+ computes.delete(key);
161
+ if (computes.size === 0) targets.delete(target);
162
+ }
163
+ });
164
164
  }
165
165
  const value = Reflect.get(target, key);
166
166
  if (value) {
@@ -416,7 +416,7 @@ const toCustomElement = (Component) => {
416
416
  return findParentScope(node.parentNode);
417
417
  }
418
418
  };
419
- this.component.scope.setParentScope(findParentScope(this.parentNode));
419
+ this.component.scope.parentScope = findParentScope(this.parentNode);
420
420
  if (this.component.shadowRoot) rootNode = this.shadowRoot ?? this.attachShadow(this.component.shadowRoot);
421
421
  for (const [name, event] of Object.entries(Component.$events)) Reflect.set(this.component.events, name, (value) => {
422
422
  if (value instanceof Event) return;
@@ -480,6 +480,16 @@ function useEvent(scope, target, event, input, options) {
480
480
  });
481
481
  scope.onStop(() => controller.abort());
482
482
  }
483
+ const onMounted = (scope, event) => {
484
+ if (isClient()) {
485
+ const { host } = useHost(scope);
486
+ useEvent(scope, host, "mounted", event);
487
+ }
488
+ };
489
+ const startViewTransition = (invoke) => {
490
+ if (isClient() && document.startViewTransition !== void 0) return document.startViewTransition(invoke).updateCallbackDone;
491
+ return invoke();
492
+ };
483
493
  const isClient = () => typeof window !== "undefined";
484
494
  const isServer = () => typeof window === "undefined";
485
495
  const preventDefault = (event) => event.preventDefault();
@@ -775,7 +785,7 @@ const createRouter = (options) => {
775
785
  url.value = new URL(request?.url ?? window?.location.href);
776
786
  const match = radix.match(url.value.pathname);
777
787
  inputs.value = match.inputs;
778
- route.value = await match.value?.();
788
+ await startViewTransition(async () => route.value = await match.value?.());
779
789
  };
780
790
  if (isClient()) useEvent(scope, window, "popstate", () => navigator.dispatchEvent(new NavigateEvent()));
781
791
  scope.setContext(ROUTE_CONTEXT, { inputs: createState() });
@@ -872,4 +882,4 @@ const useLocale = (scope, context) => {
872
882
  };
873
883
 
874
884
  //#endregion
875
- export { $fetch, 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, createLocale, createMemo, createRouter, createRuntime, createState, defineComponent, defineContext, defineMiddleware, defineRoute, fileName, fromValue, hydrate, isClient, isComponent, isCustomElement, isRoute, isServer, isTemplate, mimeType, preventDefault, registerComponent, renderToString, sendBadRequest, sendHtml, sendJson, sendRedirect, sendText, sendUnauthorized, setCookie, stopImmediatePropagation, stopPropagation, targets, toArray, toCustomElement, toFragment, toPath, toRange, toString, useCookies, useEvent, useHost, useLocale, useRequestUrl, useRoute, useRouter, useRuntime, useSetCookies };
885
+ export { $fetch, 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, createLocale, createMemo, createRouter, createRuntime, createState, defineComponent, defineContext, defineMiddleware, defineRoute, fileName, fromValue, hydrate, isClient, isComponent, isCustomElement, isRoute, isServer, isTemplate, mimeType, onMounted, preventDefault, registerComponent, renderToString, sendBadRequest, sendHtml, sendJson, sendRedirect, sendText, sendUnauthorized, setCookie, startViewTransition, stopImmediatePropagation, stopPropagation, targets, toArray, toCustomElement, toFragment, toPath, toRange, toString, useCookies, useEvent, useHost, useLocale, useRequestUrl, useRoute, useRouter, useRuntime, useSetCookies };
@@ -1,4 +1,4 @@
1
- import { RUNTIME_CONTEXT, Scope } from "./runtime-6tWe5NVu.js";
1
+ import { RUNTIME_CONTEXT, Scope } from "./runtime-plDYfDhw.js";
2
2
  import { serve } from "bun";
3
3
  import { runtime } from "#virtual/runtime";
4
4
 
@@ -1,4 +1,4 @@
1
- import { RUNTIME_CONTEXT, Scope } from "./runtime-6tWe5NVu.js";
1
+ import { RUNTIME_CONTEXT, Scope } from "./runtime-plDYfDhw.js";
2
2
  import { runtime } from "#virtual/runtime";
3
3
 
4
4
  //#region src/presets/cloudflare.ts
@@ -9,15 +9,9 @@ var Scope = class extends EventTarget {
9
9
  context;
10
10
  constructor(parentScope) {
11
11
  super();
12
- this.context = /* @__PURE__ */ new Map();
13
- this.setParentScope(parentScope);
14
- }
15
- getParentScope() {
16
- return this.parentScope;
17
- }
18
- setParentScope(parentScope) {
19
12
  this.parentScope = parentScope;
20
- return this.parentScope?.onStop(() => this.stop());
13
+ this.parentScope?.onStop(() => this.stop());
14
+ this.context = /* @__PURE__ */ new Map();
21
15
  }
22
16
  getContext(input) {
23
17
  let scope = this;
@@ -10,11 +10,9 @@ export declare class StopEvent extends Event {
10
10
  constructor();
11
11
  }
12
12
  export declare class Scope extends EventTarget {
13
- private parentScope?;
13
+ parentScope?: Scope;
14
14
  readonly context: Map<string, unknown>;
15
15
  constructor(parentScope?: Scope);
16
- getParentScope(): Scope | undefined;
17
- setParentScope(parentScope?: Scope): void | undefined;
18
16
  getContext<T>(input: Descriptor<T>): T;
19
17
  setContext<T>(input: Descriptor<T>, value: T): void;
20
18
  onStop(input: (event: StopEvent) => void): void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "revojs",
3
- "version": "0.0.60",
3
+ "version": "0.0.62",
4
4
  "type": "module",
5
5
  "repository": "coverbase/revojs",
6
6
  "license": "MIT",