@vizejs/composable 0.424.11 → 0.425.1

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.
@@ -118,7 +118,7 @@ declare const COMPOSABLE_CATALOG: {
118
118
  readonly subpath: ".";
119
119
  readonly source: "src/index.ts";
120
120
  readonly gzipBudget: "sum-of-reexported-entry-budgets";
121
- readonly reexportedEntries: readonly ["./abort-signal", "./async-resource", "./capability", "./catalog", "./disposal-scope", "./event-listener", "./locale", "./media-query", "./retry-async", "./retry-delay", "./scope", "./timeout-scheduler", "./use-counter", "./use-debounced", "./use-history", "./use-previous", "./use-throttled", "./use-toggle"];
121
+ readonly reexportedEntries: readonly ["./abort-signal", "./async-resource", "./capability", "./catalog", "./disposal-scope", "./document-visibility", "./event-listener", "./locale", "./media-query", "./retry-async", "./retry-delay", "./scope", "./timeout-scheduler", "./use-counter", "./use-debounced", "./use-history", "./use-previous", "./use-throttled", "./use-toggle"];
122
122
  readonly isolatedEntries: readonly ["./temporal"];
123
123
  };
124
124
  readonly entries: readonly [{
@@ -151,6 +151,12 @@ declare const COMPOSABLE_CATALOG: {
151
151
  readonly gzipBudgetBytes: number;
152
152
  readonly runtimeExports: readonly ["DISPOSAL_ERROR_CODE", "DisposalError", "createDisposalScope"];
153
153
  readonly utilities: readonly ["createDisposalScope"];
154
+ }, {
155
+ readonly subpath: "./document-visibility";
156
+ readonly source: "src/document-visibility.ts";
157
+ readonly gzipBudgetBytes: number;
158
+ readonly runtimeExports: readonly ["useDocumentVisibility"];
159
+ readonly utilities: readonly ["useDocumentVisibility"];
154
160
  }, {
155
161
  readonly subpath: "./event-listener";
156
162
  readonly source: "src/event-listener.ts";
@@ -335,6 +341,17 @@ declare const COMPOSABLE_CATALOG: {
335
341
  readonly cleanupOwners: readonly ["caller", "reactive-scope"];
336
342
  readonly runtimeGlobals: readonly [];
337
343
  readonly dependencies: readonly ["tryOnScopeDispose"];
344
+ }, {
345
+ readonly name: "useDocumentVisibility";
346
+ readonly entry: "./document-visibility";
347
+ readonly category: "events";
348
+ readonly stability: "experimental";
349
+ readonly targets: readonly ["web", "desktop"];
350
+ readonly ssr: "deterministic-fallback";
351
+ readonly hydration: "caller-managed";
352
+ readonly cleanupOwners: readonly ["reactive-scope"];
353
+ readonly runtimeGlobals: readonly ["document"];
354
+ readonly dependencies: readonly [];
338
355
  }, {
339
356
  readonly name: "useEventListener";
340
357
  readonly entry: "./event-listener";
@@ -19,6 +19,7 @@ const rootEntry = {
19
19
  "./capability",
20
20
  "./catalog",
21
21
  "./disposal-scope",
22
+ "./document-visibility",
22
23
  "./event-listener",
23
24
  "./locale",
24
25
  "./media-query",
@@ -94,6 +95,13 @@ const entries = [
94
95
  ],
95
96
  utilities: ["createDisposalScope"]
96
97
  },
98
+ {
99
+ subpath: "./document-visibility",
100
+ source: "src/document-visibility.ts",
101
+ gzipBudgetBytes: 1.5 * 1024,
102
+ runtimeExports: ["useDocumentVisibility"],
103
+ utilities: ["useDocumentVisibility"]
104
+ },
97
105
  {
98
106
  subpath: "./event-listener",
99
107
  source: "src/event-listener.ts",
@@ -343,6 +351,18 @@ const COMPOSABLE_CATALOG = {
343
351
  runtimeGlobals: [],
344
352
  dependencies: ["tryOnScopeDispose"]
345
353
  },
354
+ {
355
+ name: "useDocumentVisibility",
356
+ entry: "./document-visibility",
357
+ category: "events",
358
+ stability: "experimental",
359
+ targets: browserTargets,
360
+ ssr: "deterministic-fallback",
361
+ hydration: "caller-managed",
362
+ cleanupOwners: ["reactive-scope"],
363
+ runtimeGlobals: ["document"],
364
+ dependencies: []
365
+ },
346
366
  {
347
367
  name: "useEventListener",
348
368
  entry: "./event-listener",
@@ -1,2 +1,2 @@
1
- import { a as ComposableEntryMetadata, c as ComposableRootEntryMetadata, d as ComposableUtilityMetadata, i as ComposableCleanupOwner, l as ComposableSsrBehavior, n as ComposableCatalog, o as ComposableHydrationBehavior, r as ComposableCategory, s as ComposableInstallationAvailability, t as COMPOSABLE_CATALOG, u as ComposableStability } from "./catalog-BQMC1CcY.mjs";
1
+ import { a as ComposableEntryMetadata, c as ComposableRootEntryMetadata, d as ComposableUtilityMetadata, i as ComposableCleanupOwner, l as ComposableSsrBehavior, n as ComposableCatalog, o as ComposableHydrationBehavior, r as ComposableCategory, s as ComposableInstallationAvailability, t as COMPOSABLE_CATALOG, u as ComposableStability } from "./catalog-D2AL3xYl.mjs";
2
2
  export { COMPOSABLE_CATALOG, type ComposableCatalog, type ComposableCategory, type ComposableCleanupOwner, type ComposableEntryMetadata, type ComposableHydrationBehavior, type ComposableInstallationAvailability, type ComposableRootEntryMetadata, type ComposableSsrBehavior, type ComposableStability, type ComposableUtilityMetadata };
package/dist/catalog.mjs CHANGED
@@ -1,2 +1,2 @@
1
- import { t as COMPOSABLE_CATALOG } from "./catalog-CYHr82Jz.mjs";
1
+ import { t as COMPOSABLE_CATALOG } from "./catalog-D5SYCsgW.mjs";
2
2
  export { COMPOSABLE_CATALOG };
@@ -0,0 +1,65 @@
1
+ import { ComputedRef, MaybeRefOrGetter, Ref } from "vue";
2
+
3
+ //#region src/document-visibility.d.ts
4
+ /** Page visibility state exposed by {@link useDocumentVisibility}. */
5
+ type PageVisibilityState = "hidden" | "visible";
6
+ /** Capability required to observe document visibility. */
7
+ interface DocumentVisibilityHost {
8
+ /** Current browser visibility state. Unknown states are treated as hidden. */
9
+ readonly visibilityState?: string;
10
+ /** Legacy visibility flag used when `visibilityState` is absent. */
11
+ readonly hidden?: boolean;
12
+ /** Subscribe to `visibilitychange`. */
13
+ readonly addEventListener: (event: "visibilitychange", listener: EventListener, options?: boolean | AddEventListenerOptions) => void;
14
+ /** Remove a previous `visibilitychange` listener. */
15
+ readonly removeEventListener: (event: "visibilitychange", listener: EventListener, options?: boolean | EventListenerOptions) => void;
16
+ }
17
+ /** Options for {@link useDocumentVisibility}. */
18
+ interface UseDocumentVisibilityOptions {
19
+ /**
20
+ * State exposed while no document capability is available.
21
+ *
22
+ * @default "visible"
23
+ */
24
+ readonly ssrState?: PageVisibilityState;
25
+ /**
26
+ * Reactive document capability for alternate runtimes and tests.
27
+ *
28
+ * @default globalThis.document when available
29
+ */
30
+ readonly host?: MaybeRefOrGetter<DocumentVisibilityHost | null | undefined>;
31
+ /**
32
+ * Reactive subscription update timing.
33
+ *
34
+ * @default "pre"
35
+ */
36
+ readonly flush?: "pre" | "post" | "sync";
37
+ }
38
+ /** Reactive state returned by {@link useDocumentVisibility}. */
39
+ interface DocumentVisibilityControls {
40
+ /** Current visibility state, using the configured SSR fallback while unsupported. */
41
+ readonly state: Readonly<Ref<PageVisibilityState>>;
42
+ /** Whether a concrete document capability is currently attached. */
43
+ readonly supported: Readonly<Ref<boolean>>;
44
+ /** Whether `state` is `"visible"`. */
45
+ readonly visible: ComputedRef<boolean>;
46
+ /** Whether `state` is `"hidden"`. */
47
+ readonly hidden: ComputedRef<boolean>;
48
+ }
49
+ /**
50
+ * Observe document visibility without touching browser globals during module evaluation.
51
+ *
52
+ * The composable is safe during server rendering: when no host resolves, it exposes
53
+ * `ssrState` and marks `supported` false. During hydration or tests, passing a
54
+ * host attaches exactly one `visibilitychange` listener and removes it when the
55
+ * reactive host changes or the owning scope stops. Unsupported or future
56
+ * visibility states normalize to `"hidden"` so consumers fail closed instead of
57
+ * accidentally treating a prerendered or unloaded page as visible.
58
+ *
59
+ * @param options Runtime capability, server fallback, and watcher timing.
60
+ * @default options {}
61
+ * @returns Reactive visibility state plus derived booleans.
62
+ */
63
+ declare function useDocumentVisibility(options?: UseDocumentVisibilityOptions): DocumentVisibilityControls;
64
+ //#endregion
65
+ export { DocumentVisibilityControls, DocumentVisibilityHost, PageVisibilityState, UseDocumentVisibilityOptions, useDocumentVisibility };
@@ -0,0 +1,56 @@
1
+ import { computed, readonly, ref, toValue, watchEffect } from "vue";
2
+ //#region src/document-visibility.ts
3
+ /**
4
+ * Observe document visibility without touching browser globals during module evaluation.
5
+ *
6
+ * The composable is safe during server rendering: when no host resolves, it exposes
7
+ * `ssrState` and marks `supported` false. During hydration or tests, passing a
8
+ * host attaches exactly one `visibilitychange` listener and removes it when the
9
+ * reactive host changes or the owning scope stops. Unsupported or future
10
+ * visibility states normalize to `"hidden"` so consumers fail closed instead of
11
+ * accidentally treating a prerendered or unloaded page as visible.
12
+ *
13
+ * @param options Runtime capability, server fallback, and watcher timing.
14
+ * @default options {}
15
+ * @returns Reactive visibility state plus derived booleans.
16
+ */
17
+ function useDocumentVisibility(options = {}) {
18
+ const fallback = options.ssrState ?? "visible";
19
+ const state = ref(fallback);
20
+ const supported = ref(false);
21
+ watchEffect((onCleanup) => {
22
+ const host = options.host === void 0 ? browserDocumentVisibilityHost() : toValue(options.host);
23
+ if (!host) {
24
+ supported.value = false;
25
+ state.value = fallback;
26
+ return;
27
+ }
28
+ const update = () => {
29
+ state.value = readVisibilityState(host);
30
+ };
31
+ supported.value = true;
32
+ update();
33
+ host.addEventListener("visibilitychange", update);
34
+ onCleanup(() => {
35
+ host.removeEventListener("visibilitychange", update);
36
+ supported.value = false;
37
+ });
38
+ }, { flush: options.flush ?? "pre" });
39
+ return {
40
+ state: readonly(state),
41
+ supported: readonly(supported),
42
+ visible: computed(() => state.value === "visible"),
43
+ hidden: computed(() => state.value === "hidden")
44
+ };
45
+ }
46
+ function readVisibilityState(host) {
47
+ if (host.visibilityState === "visible") return "visible";
48
+ if (host.visibilityState === "hidden") return "hidden";
49
+ if (host.visibilityState !== void 0) return "hidden";
50
+ return host.hidden === false ? "visible" : "hidden";
51
+ }
52
+ function browserDocumentVisibilityHost() {
53
+ return typeof document !== "undefined" ? document : void 0;
54
+ }
55
+ //#endregion
56
+ export { useDocumentVisibility };
package/dist/index.d.mts CHANGED
@@ -2,8 +2,9 @@ import { TimeoutScheduler } from "./timeout-scheduler.mjs";
2
2
  import { DeadlineAbortSignalOptions, TimeoutAbortSignalOptions, anyAbortSignal, deadlineAbortSignal, timeoutAbortSignal } from "./abort-signal.mjs";
3
3
  import { AsyncResource, AsyncResourceContext, AsyncResourceExecution, AsyncResourceStatus, UseAsyncResourceOptions, useAsyncResource } from "./async-resource.mjs";
4
4
  import { a as CapabilityUnavailableReason, c as isCapabilityAvailable, i as CapabilityTarget, l as isCapabilityUnavailable, n as CapabilityResult, o as UnavailableCapability, r as CapabilitySource, s as availableCapability, t as AvailableCapability, u as unavailableCapability } from "./capability-Ptkjr_sD.mjs";
5
- import { a as ComposableEntryMetadata, c as ComposableRootEntryMetadata, d as ComposableUtilityMetadata, i as ComposableCleanupOwner, l as ComposableSsrBehavior, n as ComposableCatalog, o as ComposableHydrationBehavior, r as ComposableCategory, s as ComposableInstallationAvailability, t as COMPOSABLE_CATALOG, u as ComposableStability } from "./catalog-BQMC1CcY.mjs";
5
+ import { a as ComposableEntryMetadata, c as ComposableRootEntryMetadata, d as ComposableUtilityMetadata, i as ComposableCleanupOwner, l as ComposableSsrBehavior, n as ComposableCatalog, o as ComposableHydrationBehavior, r as ComposableCategory, s as ComposableInstallationAvailability, t as COMPOSABLE_CATALOG, u as ComposableStability } from "./catalog-D2AL3xYl.mjs";
6
6
  import { CleanupRegistration, CreateDisposalScopeOptions, DISPOSAL_ERROR_CODE, DisposalError, DisposalScope, createDisposalScope } from "./disposal-scope.mjs";
7
+ import { DocumentVisibilityControls, DocumentVisibilityHost, PageVisibilityState, UseDocumentVisibilityOptions, useDocumentVisibility } from "./document-visibility.mjs";
7
8
  import { EventListenerControls, UseEventListenerOptions, useEventListener } from "./event-listener.mjs";
8
9
  import { LocaleControls, TextDirection, UseLocaleOptions, useLocale } from "./locale.mjs";
9
10
  import { MediaQueryHost, MotionPreference, UseMediaQueryOptions, useMediaQuery, useReducedMotion } from "./media-query.mjs";
@@ -16,4 +17,4 @@ import { HistoryControls, UseHistoryOptions, useHistory } from "./use-history.mj
16
17
  import { usePrevious } from "./use-previous.mjs";
17
18
  import { ThrottledControls, UseThrottledOptions, useThrottled } from "./use-throttled.mjs";
18
19
  import { ToggleControls, useToggle } from "./use-toggle.mjs";
19
- export { AsyncResource, AsyncResourceContext, AsyncResourceExecution, AsyncResourceStatus, AvailableCapability, COMPOSABLE_CATALOG, CapabilityResult, CapabilitySource, CapabilityTarget, CapabilityUnavailableReason, CleanupRegistration, type ComposableCatalog, type ComposableCategory, type ComposableCleanupOwner, type ComposableEntryMetadata, type ComposableHydrationBehavior, type ComposableInstallationAvailability, type ComposableRootEntryMetadata, type ComposableSsrBehavior, type ComposableStability, type ComposableUtilityMetadata, CounterControls, CreateDisposalScopeOptions, DISPOSAL_ERROR_CODE, DeadlineAbortSignalOptions, DebouncedControls, DisposalError, DisposalScope, EventListenerControls, HistoryControls, LocaleControls, MediaQueryHost, MotionPreference, RetryAsyncOptions, RetryAttemptContext, RetryDelayOptions, RetryFailureContext, RetryScheduledContext, TextDirection, ThrottledControls, TimeoutAbortSignalOptions, TimeoutScheduler, ToggleControls, UnavailableCapability, UseAsyncResourceOptions, UseCounterOptions, UseDebouncedOptions, UseEventListenerOptions, UseHistoryOptions, UseLocaleOptions, UseMediaQueryOptions, UseThrottledOptions, anyAbortSignal, availableCapability, calculateRetryDelay, createDisposalScope, deadlineAbortSignal, isCapabilityAvailable, isCapabilityUnavailable, retryAsync, timeoutAbortSignal, tryOnScopeDispose, unavailableCapability, useAsyncResource, useCounter, useDebounced, useEventListener, useHistory, useLocale, useMediaQuery, usePrevious, useReducedMotion, useThrottled, useToggle };
20
+ export { AsyncResource, AsyncResourceContext, AsyncResourceExecution, AsyncResourceStatus, AvailableCapability, COMPOSABLE_CATALOG, CapabilityResult, CapabilitySource, CapabilityTarget, CapabilityUnavailableReason, CleanupRegistration, type ComposableCatalog, type ComposableCategory, type ComposableCleanupOwner, type ComposableEntryMetadata, type ComposableHydrationBehavior, type ComposableInstallationAvailability, type ComposableRootEntryMetadata, type ComposableSsrBehavior, type ComposableStability, type ComposableUtilityMetadata, CounterControls, CreateDisposalScopeOptions, DISPOSAL_ERROR_CODE, DeadlineAbortSignalOptions, DebouncedControls, DisposalError, DisposalScope, DocumentVisibilityControls, DocumentVisibilityHost, EventListenerControls, HistoryControls, LocaleControls, MediaQueryHost, MotionPreference, PageVisibilityState, RetryAsyncOptions, RetryAttemptContext, RetryDelayOptions, RetryFailureContext, RetryScheduledContext, TextDirection, ThrottledControls, TimeoutAbortSignalOptions, TimeoutScheduler, ToggleControls, UnavailableCapability, UseAsyncResourceOptions, UseCounterOptions, UseDebouncedOptions, UseDocumentVisibilityOptions, UseEventListenerOptions, UseHistoryOptions, UseLocaleOptions, UseMediaQueryOptions, UseThrottledOptions, anyAbortSignal, availableCapability, calculateRetryDelay, createDisposalScope, deadlineAbortSignal, isCapabilityAvailable, isCapabilityUnavailable, retryAsync, timeoutAbortSignal, tryOnScopeDispose, unavailableCapability, useAsyncResource, useCounter, useDebounced, useDocumentVisibility, useEventListener, useHistory, useLocale, useMediaQuery, usePrevious, useReducedMotion, useThrottled, useToggle };
package/dist/index.mjs CHANGED
@@ -2,7 +2,8 @@ import { anyAbortSignal, deadlineAbortSignal, timeoutAbortSignal } from "./abort
2
2
  import { tryOnScopeDispose } from "./scope.mjs";
3
3
  import { useAsyncResource } from "./async-resource.mjs";
4
4
  import { availableCapability, isCapabilityAvailable, isCapabilityUnavailable, unavailableCapability } from "./capability.mjs";
5
- import { t as COMPOSABLE_CATALOG } from "./catalog-CYHr82Jz.mjs";
5
+ import { t as COMPOSABLE_CATALOG } from "./catalog-D5SYCsgW.mjs";
6
+ import { useDocumentVisibility } from "./document-visibility.mjs";
6
7
  import { DISPOSAL_ERROR_CODE, DisposalError, createDisposalScope } from "./disposal-scope.mjs";
7
8
  import { useEventListener } from "./event-listener.mjs";
8
9
  import { useLocale } from "./locale.mjs";
@@ -16,4 +17,4 @@ import { useHistory } from "./use-history.mjs";
16
17
  import { usePrevious } from "./use-previous.mjs";
17
18
  import { useThrottled } from "./use-throttled.mjs";
18
19
  import { useToggle } from "./use-toggle.mjs";
19
- export { COMPOSABLE_CATALOG, DISPOSAL_ERROR_CODE, DisposalError, anyAbortSignal, availableCapability, calculateRetryDelay, createDisposalScope, deadlineAbortSignal, isCapabilityAvailable, isCapabilityUnavailable, retryAsync, timeoutAbortSignal, tryOnScopeDispose, unavailableCapability, useAsyncResource, useCounter, useDebounced, useEventListener, useHistory, useLocale, useMediaQuery, usePrevious, useReducedMotion, useThrottled, useToggle };
20
+ export { COMPOSABLE_CATALOG, DISPOSAL_ERROR_CODE, DisposalError, anyAbortSignal, availableCapability, calculateRetryDelay, createDisposalScope, deadlineAbortSignal, isCapabilityAvailable, isCapabilityUnavailable, retryAsync, timeoutAbortSignal, tryOnScopeDispose, unavailableCapability, useAsyncResource, useCounter, useDebounced, useDocumentVisibility, useEventListener, useHistory, useLocale, useMediaQuery, usePrevious, useReducedMotion, useThrottled, useToggle };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vizejs/composable",
3
- "version": "0.424.11",
3
+ "version": "0.425.1",
4
4
  "description": "Lifecycle-safe composable foundations for Vize applications",
5
5
  "keywords": [
6
6
  "composables",
@@ -57,6 +57,11 @@
57
57
  "import": "./dist/disposal-scope.mjs",
58
58
  "default": "./dist/disposal-scope.mjs"
59
59
  },
60
+ "./document-visibility": {
61
+ "types": "./dist/document-visibility.d.mts",
62
+ "import": "./dist/document-visibility.mjs",
63
+ "default": "./dist/document-visibility.mjs"
64
+ },
60
65
  "./event-listener": {
61
66
  "types": "./dist/event-listener.d.mts",
62
67
  "import": "./dist/event-listener.mjs",
@@ -146,6 +151,12 @@
146
151
  "engines": {
147
152
  "node": ">=24"
148
153
  },
154
+ "metadata": {
155
+ "vize": {
156
+ "stability": "experimental",
157
+ "stabilityDocs": "https://github.com/ubugeeei-prod/vize/blob/main/docs/content/stability.md#package-support-tiers"
158
+ }
159
+ },
149
160
  "scripts": {
150
161
  "build": "vp pack",
151
162
  "dev": "vp pack --watch",